app-base-react
Version:
react development common base package.
104 lines (82 loc) • 2.84 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _slider = require('antd/lib/slider');
var _slider2 = _interopRequireDefault(_slider);
var _inputNumber = require('antd/lib/input-number');
var _inputNumber2 = _interopRequireDefault(_inputNumber);
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
require('antd/lib/slider/style/css');
require('antd/lib/input-number/style/css');
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var PercentSlider = function PercentSlider(p) {
var style = p.invalid ? { borderColor: '#f5222d' } : {};
var _p$schema = p.schema,
max = _p$schema.max,
min = _p$schema.min,
step = _p$schema.step;
var setting = {};
if (max || max === 0) {
setting = { max: max };
}
if (min || min === 0) {
setting = _extends({}, setting, { min: min });
}
if (step) {
setting = _extends({}, setting, { step: step });
}
var hideNumber = false;
if (p.options && p.options.hideNumber) {
hideNumber = true;
}
var isPercent = function isPercent(string) {
return typeof string === 'string' && string.endsWith('%');
};
var numberValue = 100;
if (isPercent(p.value)) {
try {
numberValue = Number(p.value.split('%')[0]);
if (Number.isNaN(numberValue)) numberValue = 100;
} catch (error) {}
}
var handleChange = function handleChange(newNumber) {
var a = newNumber + '%';
p.onChange(a);
};
var renderNumber = p.readonly ? _react2.default.createElement(
'span',
{ style: { width: '80px' } },
p.value === (undefined || '') ? '-' : p.value + '%'
) : _react2.default.createElement(_inputNumber2.default, _extends({}, p.options, setting, {
style: _extends({ width: '80px' }, style),
value: numberValue,
disabled: p.disabled,
onChange: handleChange,
formatter: function formatter(value) {
return value + '%';
},
parser: function parser(value) {
return value.replace('%', '');
}
}));
return _react2.default.createElement(
'div',
{ className: 'fr-slider' },
_react2.default.createElement(_slider2.default, _extends({
style: { flexGrow: 1, marginRight: hideNumber ? 0 : 12 }
}, setting, {
onChange: handleChange,
max: 100,
tipFormatter: function tipFormatter(v) {
return v + '%';
},
value: numberValue || 100,
disabled: p.disabled || p.readonly
})),
hideNumber ? null : renderNumber
);
};
exports.default = PercentSlider;