UNPKG

k-form-design

Version:

基于vue、ant-design-vue的表单设计器,可视化开发表单

1,823 lines (1,578 loc) 68.3 kB
((typeof self !== 'undefined' ? self : this)["webpackJsonpk_form_design"] = (typeof self !== 'undefined' ? self : this)["webpackJsonpk_form_design"] || []).push([[12,25],{ /***/ "133a": /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.svgBaseProps = undefined; exports.getThemeFromTypeName = getThemeFromTypeName; exports.removeTypeTheme = removeTypeTheme; exports.withThemeSuffix = withThemeSuffix; exports.alias = alias; var _warning = __webpack_require__("a7e2"); var _warning2 = _interopRequireDefault(_warning); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } // These props make sure that the SVG behaviours like general text. // Reference: https://blog.prototypr.io/align-svg-icons-to-text-and-say-goodbye-to-font-icons-d44b3d7b26b4 var svgBaseProps = exports.svgBaseProps = { width: '1em', height: '1em', fill: 'currentColor', 'aria-hidden': 'true', focusable: 'false' }; var fillTester = /-fill$/; var outlineTester = /-o$/; var twoToneTester = /-twotone$/; function getThemeFromTypeName(type) { var result = null; if (fillTester.test(type)) { result = 'filled'; } else if (outlineTester.test(type)) { result = 'outlined'; } else if (twoToneTester.test(type)) { result = 'twoTone'; } return result; } function removeTypeTheme(type) { return type.replace(fillTester, '').replace(outlineTester, '').replace(twoToneTester, ''); } function withThemeSuffix(type, theme) { var result = type; if (theme === 'filled') { result += '-fill'; } else if (theme === 'outlined') { result += '-o'; } else if (theme === 'twoTone') { result += '-twotone'; } else { (0, _warning2['default'])(false, 'Icon', 'This icon \'' + type + '\' has unknown theme \'' + theme + '\''); } return result; } // For alias or compatibility function alias(type) { var newType = type; switch (type) { case 'cross': newType = 'close'; break; // https://github.com/ant-design/ant-design/issues/13007 case 'interation': newType = 'interaction'; break; // https://github.com/ant-design/ant-design/issues/16810 case 'canlendar': newType = 'calendar'; break; // https://github.com/ant-design/ant-design/issues/17448 case 'colum-height': newType = 'column-height'; break; default: } (0, _warning2['default'])(newType === type, 'Icon', 'Icon \'' + type + '\' was a typo and is now deprecated, please use \'' + newType + '\' instead.'); return newType; } /***/ }), /***/ "1db9": /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.warning = warning; exports.note = note; exports.resetWarned = resetWarned; exports.call = call; exports.warningOnce = warningOnce; exports.noteOnce = noteOnce; /* eslint-disable no-console */ var warned = {}; function warning(valid, message) { // Support uglify if (false) {} } function note(valid, message) { // Support uglify if (false) {} } function resetWarned() { warned = {}; } function call(method, valid, message) { if (!valid && !warned[message]) { method(false, message); warned[message] = true; } } function warningOnce(valid, message) { call(warning, valid, message); } function noteOnce(valid, message) { call(note, valid, message); } exports['default'] = warningOnce; /* eslint-enable */ /***/ }), /***/ "48bb": /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _toConsumableArray2 = __webpack_require__("9b57"); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _extends2 = __webpack_require__("41b2"); var _extends3 = _interopRequireDefault(_extends2); var _propsUtil = __webpack_require__("73c8"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } exports['default'] = { methods: { setState: function setState() { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var callback = arguments[1]; var newState = typeof state === 'function' ? state(this.$data, this.$props) : state; if (this.getDerivedStateFromProps) { var s = this.getDerivedStateFromProps((0, _propsUtil.getOptionProps)(this), (0, _extends3['default'])({}, this.$data, newState)); if (s === null) { return; } else { newState = (0, _extends3['default'])({}, newState, s || {}); } } (0, _extends3['default'])(this.$data, newState); this.$forceUpdate(); this.$nextTick(function () { callback && callback(); }); }, __emit: function __emit() { // 直接调用listeners,底层组件不需要vueTool记录events var args = [].slice.call(arguments, 0); var eventName = args[0]; var event = this.$listeners[eventName]; if (args.length && event) { if (Array.isArray(event)) { for (var i = 0, l = event.length; i < l; i++) { event[i].apply(event, (0, _toConsumableArray3['default'])(args.slice(1))); } } else { event.apply(undefined, (0, _toConsumableArray3['default'])(args.slice(1))); } } } } }; /***/ }), /***/ "50f6": /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _babelHelperVueJsxMergeProps = __webpack_require__("92fa"); var _babelHelperVueJsxMergeProps2 = _interopRequireDefault(_babelHelperVueJsxMergeProps); var _extends2 = __webpack_require__("41b2"); var _extends3 = _interopRequireDefault(_extends2); var _defineProperty2 = __webpack_require__("6042"); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _toConsumableArray2 = __webpack_require__("9b57"); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _classnames = __webpack_require__("4d26"); var _classnames2 = _interopRequireDefault(_classnames); var _dist = __webpack_require__("3a9b"); var allIcons = _interopRequireWildcard(_dist); var _iconsVue = __webpack_require__("8520"); var _iconsVue2 = _interopRequireDefault(_iconsVue); var _vueTypes = __webpack_require__("7b44"); var _vueTypes2 = _interopRequireDefault(_vueTypes); var _IconFont = __webpack_require__("bbf5"); var _IconFont2 = _interopRequireDefault(_IconFont); var _utils = __webpack_require__("133a"); var _warning = __webpack_require__("a7e2"); var _warning2 = _interopRequireDefault(_warning); var _LocaleReceiver = __webpack_require__("3f5f"); var _LocaleReceiver2 = _interopRequireDefault(_LocaleReceiver); var _twoTonePrimaryColor = __webpack_require__("f3dc"); var _propsUtil = __webpack_require__("73c8"); var _base = __webpack_require__("baff"); var _base2 = _interopRequireDefault(_base); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } // Initial setting // https://github.com/vueComponent/ant-design-vue/issues/2745 _iconsVue2['default'].add.apply(_iconsVue2['default'], (0, _toConsumableArray3['default'])(Object.keys(allIcons).filter(function (key) { return key !== 'default'; }).map(function (key) { return allIcons[key]; }))); (0, _twoTonePrimaryColor.setTwoToneColor)('#1890ff'); var defaultTheme = 'outlined'; var dangerousTheme = void 0; function renderIcon(h, locale, context) { var _classNames; var props = context.$props, $slots = context.$slots; var listeners = (0, _propsUtil.getListeners)(context); var type = props.type, Component = props.component, viewBox = props.viewBox, spin = props.spin, theme = props.theme, twoToneColor = props.twoToneColor, rotate = props.rotate, tabIndex = props.tabIndex; var children = (0, _propsUtil.filterEmpty)($slots['default']); children = children.length === 0 ? undefined : children; (0, _warning2['default'])(Boolean(type || Component || children), 'Icon', 'Icon should have `type` prop or `component` prop or `children`.'); var classString = (0, _classnames2['default'])((_classNames = {}, (0, _defineProperty3['default'])(_classNames, 'anticon', true), (0, _defineProperty3['default'])(_classNames, 'anticon-' + type, !!type), _classNames)); var svgClassString = (0, _classnames2['default'])((0, _defineProperty3['default'])({}, 'anticon-spin', !!spin || type === 'loading')); var svgStyle = rotate ? { msTransform: 'rotate(' + rotate + 'deg)', transform: 'rotate(' + rotate + 'deg)' } : undefined; var innerSvgProps = { attrs: (0, _extends3['default'])({}, _utils.svgBaseProps, { viewBox: viewBox }), 'class': svgClassString, style: svgStyle }; if (!viewBox) { delete innerSvgProps.attrs.viewBox; } var renderInnerNode = function renderInnerNode() { // component > children > type if (Component) { return h( Component, innerSvgProps, [children] ); } if (children) { (0, _warning2['default'])(Boolean(viewBox) || children.length === 1 && children[0].tag === 'use', 'Icon', 'Make sure that you provide correct `viewBox`' + ' prop (default `0 0 1024 1024`) to the icon.'); var _innerSvgProps = { attrs: (0, _extends3['default'])({}, _utils.svgBaseProps), 'class': svgClassString, style: svgStyle }; return h( 'svg', (0, _babelHelperVueJsxMergeProps2['default'])([_innerSvgProps, { attrs: { viewBox: viewBox } }]), [children] ); } if (typeof type === 'string') { var computedType = type; if (theme) { var themeInName = (0, _utils.getThemeFromTypeName)(type); (0, _warning2['default'])(!themeInName || theme === themeInName, 'Icon', 'The icon name \'' + type + '\' already specify a theme \'' + themeInName + '\',' + (' the \'theme\' prop \'' + theme + '\' will be ignored.')); } computedType = (0, _utils.withThemeSuffix)((0, _utils.removeTypeTheme)((0, _utils.alias)(computedType)), dangerousTheme || theme || defaultTheme); return h(_iconsVue2['default'], { attrs: { focusable: 'false', type: computedType, primaryColor: twoToneColor }, 'class': svgClassString, style: svgStyle }); } }; var iconTabIndex = tabIndex; if (iconTabIndex === undefined && 'click' in listeners) { iconTabIndex = -1; } // functional component not support nativeOn,https://github.com/vuejs/vue/issues/7526 var iProps = { attrs: { 'aria-label': type && locale.icon + ': ' + type, tabIndex: iconTabIndex }, on: listeners, 'class': classString, staticClass: '' }; return h( 'i', iProps, [renderInnerNode()] ); } var Icon = { name: 'AIcon', props: { tabIndex: _vueTypes2['default'].number, type: _vueTypes2['default'].string, component: _vueTypes2['default'].any, viewBox: _vueTypes2['default'].any, spin: _vueTypes2['default'].bool.def(false), rotate: _vueTypes2['default'].number, theme: _vueTypes2['default'].oneOf(['filled', 'outlined', 'twoTone']), twoToneColor: _vueTypes2['default'].string, role: _vueTypes2['default'].string }, render: function render(h) { var _this = this; return h(_LocaleReceiver2['default'], { attrs: { componentName: 'Icon' }, scopedSlots: { 'default': function _default(locale) { return renderIcon(h, locale, _this); } } }); } }; Icon.createFromIconfontCN = _IconFont2['default']; Icon.getTwoToneColor = _twoTonePrimaryColor.getTwoToneColor; Icon.setTwoToneColor = _twoTonePrimaryColor.setTwoToneColor; /* istanbul ignore next */ Icon.install = function (Vue) { Vue.use(_base2['default']); Vue.component(Icon.name, Icon); }; exports['default'] = Icon; /***/ }), /***/ "8050": /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _TouchFeedback = __webpack_require__("caff"); var _TouchFeedback2 = _interopRequireDefault(_TouchFeedback); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } exports['default'] = _TouchFeedback2['default']; // based on 2.0.0 /***/ }), /***/ "937b": /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _defineProperty2 = __webpack_require__("6042"); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _toConsumableArray2 = __webpack_require__("9b57"); var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2); var _extends2 = __webpack_require__("41b2"); var _extends3 = _interopRequireDefault(_extends2); var _vueTypes = __webpack_require__("7b44"); var _vueTypes2 = _interopRequireDefault(_vueTypes); var _BaseMixin = __webpack_require__("48bb"); var _BaseMixin2 = _interopRequireDefault(_BaseMixin); var _propsUtil = __webpack_require__("73c8"); var _classnames = __webpack_require__("4d26"); var _classnames2 = _interopRequireDefault(_classnames); var _KeyCode = __webpack_require__("af09"); var _KeyCode2 = _interopRequireDefault(_KeyCode); var _InputHandler = __webpack_require__("fadf"); var _InputHandler2 = _interopRequireDefault(_InputHandler); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } // based on rc-input-number 4.5.5 function noop() {} function preventDefault(e) { e.preventDefault(); } function defaultParser(input) { return input.replace(/[^\w\.-]+/g, ''); } /** * When click and hold on a button - the speed of auto changin the value. */ var SPEED = 200; /** * When click and hold on a button - the delay before auto changin the value. */ var DELAY = 600; /** * Max Safe Integer -- on IE this is not available, so manually set the number in that case. * The reason this is used, instead of Infinity is because numbers above the MSI are unstable */ var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1; var isValidProps = function isValidProps(value) { return value !== undefined && value !== null; }; var isEqual = function isEqual(oldValue, newValue) { return newValue === oldValue || typeof newValue === 'number' && typeof oldValue === 'number' && isNaN(newValue) && isNaN(oldValue); }; var inputNumberProps = { value: _vueTypes2['default'].oneOfType([_vueTypes2['default'].number, _vueTypes2['default'].string]), defaultValue: _vueTypes2['default'].oneOfType([_vueTypes2['default'].number, _vueTypes2['default'].string]), focusOnUpDown: _vueTypes2['default'].bool, autoFocus: _vueTypes2['default'].bool, // onChange: PropTypes.func, // onKeyDown: PropTypes.func, // onKeyUp: PropTypes.func, prefixCls: _vueTypes2['default'].string, tabIndex: _vueTypes2['default'].oneOfType([_vueTypes2['default'].string, _vueTypes2['default'].number]), placeholder: _vueTypes2['default'].string, disabled: _vueTypes2['default'].bool, // onFocus: PropTypes.func, // onBlur: PropTypes.func, readonly: _vueTypes2['default'].bool, max: _vueTypes2['default'].number, min: _vueTypes2['default'].number, step: _vueTypes2['default'].oneOfType([_vueTypes2['default'].number, _vueTypes2['default'].string]), upHandler: _vueTypes2['default'].any, downHandler: _vueTypes2['default'].any, useTouch: _vueTypes2['default'].bool, formatter: _vueTypes2['default'].func, parser: _vueTypes2['default'].func, // onMouseEnter: PropTypes.func, // onMouseLeave: PropTypes.func, // onMouseOver: PropTypes.func, // onMouseOut: PropTypes.func, precision: _vueTypes2['default'].number, required: _vueTypes2['default'].bool, pattern: _vueTypes2['default'].string, decimalSeparator: _vueTypes2['default'].string, autoComplete: _vueTypes2['default'].string, title: _vueTypes2['default'].string, name: _vueTypes2['default'].string, type: _vueTypes2['default'].string, id: _vueTypes2['default'].string }; exports['default'] = { name: 'VCInputNumber', mixins: [_BaseMixin2['default']], model: { prop: 'value', event: 'change' }, props: (0, _propsUtil.initDefaultProps)(inputNumberProps, { focusOnUpDown: true, useTouch: false, prefixCls: 'rc-input-number', min: -MAX_SAFE_INTEGER, step: 1, parser: defaultParser, required: false, autoComplete: 'off' }), data: function data() { var props = (0, _propsUtil.getOptionProps)(this); this.prevProps = (0, _extends3['default'])({}, props); var value = void 0; if ('value' in props) { value = this.value; } else { value = this.defaultValue; } var validValue = this.getValidValue(this.toNumber(value)); return { inputValue: this.toPrecisionAsStep(validValue), sValue: validValue, focused: this.autoFocus }; }, mounted: function mounted() { var _this = this; this.$nextTick(function () { if (_this.autoFocus && !_this.disabled) { _this.focus(); } _this.updatedFunc(); }); }, updated: function updated() { var _this2 = this; var _$props = this.$props, value = _$props.value, max = _$props.max, min = _$props.min; var focused = this.$data.focused; var prevProps = this.prevProps; var props = (0, _propsUtil.getOptionProps)(this); // Don't trigger in componentDidMount if (prevProps) { if (!isEqual(prevProps.value, value) || !isEqual(prevProps.max, max) || !isEqual(prevProps.min, min)) { var validValue = focused ? value : this.getValidValue(value); var nextInputValue = void 0; if (this.pressingUpOrDown) { nextInputValue = validValue; } else if (this.inputting) { nextInputValue = this.rawInput; } else { nextInputValue = this.toPrecisionAsStep(validValue); } this.setState({ // eslint-disable-line sValue: validValue, inputValue: nextInputValue }); } // Trigger onChange when max or min change // https://github.com/ant-design/ant-design/issues/11574 var nextValue = 'value' in props ? value : this.sValue; // ref: null < 20 === true // https://github.com/ant-design/ant-design/issues/14277 if ('max' in props && prevProps.max !== max && typeof nextValue === 'number' && nextValue > max) { this.$emit('change', max); } if ('min' in props && prevProps.min !== min && typeof nextValue === 'number' && nextValue < min) { this.$emit('change', min); } } this.prevProps = (0, _extends3['default'])({}, props); this.$nextTick(function () { _this2.updatedFunc(); }); }, beforeDestroy: function beforeDestroy() { this.stop(); }, methods: { updatedFunc: function updatedFunc() { var inputElem = this.$refs.inputRef; // Restore cursor try { // Firefox set the input cursor after it get focused. // This caused that if an input didn't init with the selection, // set will cause cursor not correct when first focus. // Safari will focus input if set selection. We need skip this. if (this.cursorStart !== undefined && this.focused) { // In most cases, the string after cursor is stable. // We can move the cursor before it if ( // If not match full str, try to match part of str !this.partRestoreByAfter(this.cursorAfter) && this.sValue !== this.value) { // If not match any of then, let's just keep the position // TODO: Logic should not reach here, need check if happens var pos = this.cursorStart + 1; // If not have last string, just position to the end if (!this.cursorAfter) { pos = inputElem.value.length; } else if (this.lastKeyCode === _KeyCode2['default'].BACKSPACE) { pos = this.cursorStart - 1; } else if (this.lastKeyCode === _KeyCode2['default'].DELETE) { pos = this.cursorStart; } this.fixCaret(pos, pos); } else if (this.currentValue === inputElem.value) { // Handle some special key code switch (this.lastKeyCode) { case _KeyCode2['default'].BACKSPACE: this.fixCaret(this.cursorStart - 1, this.cursorStart - 1); break; case _KeyCode2['default'].DELETE: this.fixCaret(this.cursorStart + 1, this.cursorStart + 1); break; default: // Do nothing } } } } catch (e) {} // Do nothing // Reset last key this.lastKeyCode = null; // pressingUpOrDown is true means that someone just click up or down button if (!this.pressingUpOrDown) { return; } if (this.focusOnUpDown && this.focused) { if (document.activeElement !== inputElem) { this.focus(); } } this.pressingUpOrDown = false; }, onKeyDown: function onKeyDown(e) { if (e.keyCode === _KeyCode2['default'].UP) { var ratio = this.getRatio(e); this.up(e, ratio); this.stop(); } else if (e.keyCode === _KeyCode2['default'].DOWN) { var _ratio = this.getRatio(e); this.down(e, _ratio); this.stop(); } else if (e.keyCode === _KeyCode2['default'].ENTER) { this.$emit('pressEnter', e); } // Trigger user key down this.recordCursorPosition(); this.lastKeyCode = e.keyCode; for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } this.$emit.apply(this, ['keydown', e].concat((0, _toConsumableArray3['default'])(args))); }, onKeyUp: function onKeyUp(e) { this.stop(); this.recordCursorPosition(); for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { args[_key2 - 1] = arguments[_key2]; } this.$emit.apply(this, ['keyup', e].concat((0, _toConsumableArray3['default'])(args))); }, onTrigger: function onTrigger(e) { if (e.target.composing) return false; this.onChange(e); }, onChange: function onChange(e) { if (this.focused) { this.inputting = true; } this.rawInput = this.parser(this.getValueFromEvent(e)); this.setState({ inputValue: this.rawInput }); this.$emit('change', this.toNumber(this.rawInput)); // valid number or invalid string }, onFocus: function onFocus() { this.setState({ focused: true }); for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) { args[_key3] = arguments[_key3]; } this.$emit.apply(this, ['focus'].concat((0, _toConsumableArray3['default'])(args))); }, onBlur: function onBlur() { this.inputting = false; this.setState({ focused: false }); var value = this.getCurrentValidValue(this.inputValue); var newValue = this.setValue(value); if (this.$listeners.blur) { var originValue = this.$refs.inputRef.value; var inputValue = this.getInputDisplayValue({ focused: false, sValue: newValue }); this.$refs.inputRef.value = inputValue; for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) { args[_key4] = arguments[_key4]; } this.$emit.apply(this, ['blur'].concat((0, _toConsumableArray3['default'])(args))); this.$refs.inputRef.value = originValue; } }, getCurrentValidValue: function getCurrentValidValue(value) { var val = value; if (val === '') { val = ''; } else if (!this.isNotCompleteNumber(parseFloat(val, 10))) { val = this.getValidValue(val); } else { val = this.sValue; } return this.toNumber(val); }, getRatio: function getRatio(e) { var ratio = 1; if (e.metaKey || e.ctrlKey) { ratio = 0.1; } else if (e.shiftKey) { ratio = 10; } return ratio; }, getValueFromEvent: function getValueFromEvent(e) { // optimize for chinese input expierence // https://github.com/ant-design/ant-design/issues/8196 var value = e.target.value.trim().replace(/。/g, '.'); if (isValidProps(this.decimalSeparator)) { value = value.replace(this.decimalSeparator, '.'); } return value; }, getValidValue: function getValidValue(value) { var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.min; var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.max; var val = parseFloat(value, 10); // https://github.com/ant-design/ant-design/issues/7358 if (isNaN(val)) { return value; } if (val < min) { val = min; } if (val > max) { val = max; } return val; }, setValue: function setValue(v, callback) { // trigger onChange var precision = this.$props.precision; var newValue = this.isNotCompleteNumber(parseFloat(v, 10)) ? null : parseFloat(v, 10); var _$data = this.$data, _$data$sValue = _$data.sValue, value = _$data$sValue === undefined ? null : _$data$sValue, _$data$inputValue = _$data.inputValue, inputValue = _$data$inputValue === undefined ? null : _$data$inputValue; // https://github.com/ant-design/ant-design/issues/7363 // https://github.com/ant-design/ant-design/issues/16622 var newValueInString = typeof newValue === 'number' ? newValue.toFixed(precision) : '' + newValue; var changed = newValue !== value || newValueInString !== '' + inputValue; if (!(0, _propsUtil.hasProp)(this, 'value')) { this.setState({ sValue: newValue, inputValue: this.toPrecisionAsStep(v) }, callback); } else { // always set input value same as value this.setState({ inputValue: this.toPrecisionAsStep(this.sValue) }, callback); } if (changed) { this.$emit('change', newValue); } return newValue; }, getPrecision: function getPrecision(value) { if (isValidProps(this.precision)) { return this.precision; } var valueString = value.toString(); if (valueString.indexOf('e-') >= 0) { return parseInt(valueString.slice(valueString.indexOf('e-') + 2), 10); } var precision = 0; if (valueString.indexOf('.') >= 0) { precision = valueString.length - valueString.indexOf('.') - 1; } return precision; }, // step={1.0} value={1.51} // press + // then value should be 2.51, rather than 2.5 // if this.$props.precision is undefined // https://github.com/react-component/input-number/issues/39 getMaxPrecision: function getMaxPrecision(currentValue) { var ratio = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; if (isValidProps(this.precision)) { return this.precision; } var step = this.step; var ratioPrecision = this.getPrecision(ratio); var stepPrecision = this.getPrecision(step); var currentValuePrecision = this.getPrecision(currentValue); if (!currentValue) { return ratioPrecision + stepPrecision; } return Math.max(currentValuePrecision, ratioPrecision + stepPrecision); }, getPrecisionFactor: function getPrecisionFactor(currentValue) { var ratio = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; var precision = this.getMaxPrecision(currentValue, ratio); return Math.pow(10, precision); }, getInputDisplayValue: function getInputDisplayValue(state) { var _ref = state || this.$data, focused = _ref.focused, inputValue = _ref.inputValue, sValue = _ref.sValue; var inputDisplayValue = void 0; if (focused) { inputDisplayValue = inputValue; } else { inputDisplayValue = this.toPrecisionAsStep(sValue); } if (inputDisplayValue === undefined || inputDisplayValue === null) { inputDisplayValue = ''; } var inputDisplayValueFormat = this.formatWrapper(inputDisplayValue); if (isValidProps(this.$props.decimalSeparator)) { inputDisplayValueFormat = inputDisplayValueFormat.toString().replace('.', this.$props.decimalSeparator); } return inputDisplayValueFormat; }, recordCursorPosition: function recordCursorPosition() { // Record position try { var inputElem = this.$refs.inputRef; this.cursorStart = inputElem.selectionStart; this.cursorEnd = inputElem.selectionEnd; this.currentValue = inputElem.value; this.cursorBefore = inputElem.value.substring(0, this.cursorStart); this.cursorAfter = inputElem.value.substring(this.cursorEnd); } catch (e) { // Fix error in Chrome: // Failed to read the 'selectionStart' property from 'HTMLInputElement' // http://stackoverflow.com/q/21177489/3040605 } }, fixCaret: function fixCaret(start, end) { if (start === undefined || end === undefined || !this.$refs.inputRef || !this.$refs.inputRef.value) { return; } try { var inputElem = this.$refs.inputRef; var currentStart = inputElem.selectionStart; var currentEnd = inputElem.selectionEnd; if (start !== currentStart || end !== currentEnd) { inputElem.setSelectionRange(start, end); } } catch (e) { // Fix error in Chrome: // Failed to read the 'selectionStart' property from 'HTMLInputElement' // http://stackoverflow.com/q/21177489/3040605 } }, restoreByAfter: function restoreByAfter(str) { if (str === undefined) return false; var fullStr = this.$refs.inputRef.value; var index = fullStr.lastIndexOf(str); if (index === -1) return false; var prevCursorPos = this.cursorBefore.length; if (this.lastKeyCode === _KeyCode2['default'].DELETE && this.cursorBefore.charAt(prevCursorPos - 1) === str[0]) { this.fixCaret(prevCursorPos, prevCursorPos); return true; } if (index + str.length === fullStr.length) { this.fixCaret(index, index); return true; } return false; }, partRestoreByAfter: function partRestoreByAfter(str) { var _this3 = this; if (str === undefined) return false; // For loop from full str to the str with last char to map. e.g. 123 // -> 123 // -> 23 // -> 3 return Array.prototype.some.call(str, function (_, start) { var partStr = str.substring(start); return _this3.restoreByAfter(partStr); }); }, focus: function focus() { this.$refs.inputRef.focus(); this.recordCursorPosition(); }, blur: function blur() { this.$refs.inputRef.blur(); }, formatWrapper: function formatWrapper(num) { // http://2ality.com/2012/03/signedzero.html // https://github.com/ant-design/ant-design/issues/9439 if (this.formatter) { return this.formatter(num); } return num; }, toPrecisionAsStep: function toPrecisionAsStep(num) { if (this.isNotCompleteNumber(num) || num === '') { return num; } var precision = Math.abs(this.getMaxPrecision(num)); if (!isNaN(precision)) { return Number(num).toFixed(precision); } return num.toString(); }, // '1.' '1x' 'xx' '' => are not complete numbers isNotCompleteNumber: function isNotCompleteNumber(num) { return isNaN(num) || num === '' || num === null || num && num.toString().indexOf('.') === num.toString().length - 1; }, toNumber: function toNumber(num) { var _$props2 = this.$props, precision = _$props2.precision, autoFocus = _$props2.autoFocus; var _focused = this.focused, focused = _focused === undefined ? autoFocus : _focused; // num.length > 16 => This is to prevent input of large numbers var numberIsTooLarge = num && num.length > 16 && focused; if (this.isNotCompleteNumber(num) || numberIsTooLarge) { return num; } if (isValidProps(precision)) { return Math.round(num * Math.pow(10, precision)) / Math.pow(10, precision); } return Number(num); }, upStep: function upStep(val, rat) { var step = this.step; var precisionFactor = this.getPrecisionFactor(val, rat); var precision = Math.abs(this.getMaxPrecision(val, rat)); var result = ((precisionFactor * val + precisionFactor * step * rat) / precisionFactor).toFixed(precision); return this.toNumber(result); }, downStep: function downStep(val, rat) { var step = this.step; var precisionFactor = this.getPrecisionFactor(val, rat); var precision = Math.abs(this.getMaxPrecision(val, rat)); var result = ((precisionFactor * val - precisionFactor * step * rat) / precisionFactor).toFixed(precision); return this.toNumber(result); }, stepFn: function stepFn(type, e) { var _this4 = this; var ratio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1; var recursive = arguments[3]; this.stop(); if (e) { // e.persist() e.preventDefault(); } if (this.disabled) { return; } var max = this.max, min = this.min; var value = this.getCurrentValidValue(this.inputValue) || 0; if (this.isNotCompleteNumber(value)) { return; } var val = this[type + 'Step'](value, ratio); var outOfRange = val > max || val < min; if (val > max) { val = max; } else if (val < min) { val = min; } this.setValue(val); this.setState({ focused: true }); if (outOfRange) { return; } this.autoStepTimer = setTimeout(function () { _this4[type](e, ratio, true); }, recursive ? SPEED : DELAY); }, stop: function stop() { if (this.autoStepTimer) { clearTimeout(this.autoStepTimer); } }, down: function down(e, ratio, recursive) { this.pressingUpOrDown = true; this.stepFn('down', e, ratio, recursive); }, up: function up(e, ratio, recursive) { this.pressingUpOrDown = true; this.stepFn('up', e, ratio, recursive); }, handleInputClick: function handleInputClick() { this.$emit('click'); }, onCompositionstart: function onCompositionstart(e) { e.target.composing = true; }, onCompositionend: function onCompositionend(e) { this.onChange(e); e.target.composing = false; } }, render: function render() { var _classNames; var h = arguments[0]; var _$props3 = this.$props, prefixCls = _$props3.prefixCls, disabled = _$props3.disabled, readonly = _$props3.readonly, useTouch = _$props3.useTouch, autoComplete = _$props3.autoComplete, upHandler = _$props3.upHandler, downHandler = _$props3.downHandler; var classes = (0, _classnames2['default'])((_classNames = {}, (0, _defineProperty3['default'])(_classNames, prefixCls, true), (0, _defineProperty3['default'])(_classNames, prefixCls + '-disabled', disabled), (0, _defineProperty3['default'])(_classNames, prefixCls + '-focused', this.focused), _classNames)); var upDisabledClass = ''; var downDisabledClass = ''; var sValue = this.sValue; if (sValue || sValue === 0) { if (!isNaN(sValue)) { var val = Number(sValue); if (val >= this.max) { upDisabledClass = prefixCls + '-handler-up-disabled'; } if (val <= this.min) { downDisabledClass = prefixCls + '-handler-down-disabled'; } } else { upDisabledClass = prefixCls + '-handler-up-disabled'; downDisabledClass = prefixCls + '-handler-down-disabled'; } } var editable = !this.readonly && !this.disabled; // focus state, show input value // unfocus state, show valid value var inputDisplayValue = this.getInputDisplayValue(); var upEvents = void 0; var downEvents = void 0; if (useTouch) { upEvents = { touchstart: editable && !upDisabledClass ? this.up : noop, touchend: this.stop }; downEvents = { touchstart: editable && !downDisabledClass ? this.down : noop, touchend: this.stop }; } else { upEvents = { mousedown: editable && !upDisabledClass ? this.up : noop, mouseup: this.stop, mouseleave: this.stop }; downEvents = { mousedown: editable && !downDisabledClass ? this.down : noop, mouseup: this.stop, mouseleave: this.stop }; } var isUpDisabled = !!upDisabledClass || disabled || readonly; var isDownDisabled = !!downDisabledClass || disabled || readonly; var _getListeners = (0, _propsUtil.getListeners)(this), _getListeners$mouseen = _getListeners.mouseenter, mouseenter = _getListeners$mouseen === undefined ? noop : _getListeners$mouseen, _getListeners$mousele = _getListeners.mouseleave, mouseleave = _getListeners$mousele === undefined ? noop : _getListeners$mousele, _getListeners$mouseov = _getListeners.mouseover, mouseover = _getListeners$mouseov === undefined ? noop : _getListeners$mouseov, _getListeners$mouseou = _getListeners.mouseout, mouseout = _getListeners$mouseou === undefined ? noop : _getListeners$mouseou; var contentProps = { on: { mouseenter: mouseenter, mouseleave: mouseleave, mouseover: mouseover, mouseout: mouseout }, 'class': classes, attrs: { title: this.$props.title } }; var upHandlerProps = { props: { disabled: isUpDisabled, prefixCls: prefixCls }, attrs: { unselectable: 'unselectable', role: 'button', 'aria-label': 'Increase Value', 'aria-disabled': !!isUpDisabled }, 'class': prefixCls + '-handler ' + prefixCls + '-handler-up ' + upDisabledClass, on: upEvents, ref: 'up' }; var downHandlerProps = { props: { disabled: isDownDisabled, prefixCls: prefixCls }, attrs: { unselectable: 'unselectable', role: 'button', 'aria-label': 'Decrease Value', 'aria-disabled': !!isDownDisabled }, 'class': prefixCls + '-handler ' + prefixCls + '-handler-down ' + downDisabledClass, on: downEvents, ref: 'down' }; // ref for test return h( 'div', contentProps, [h( 'div', { 'class': prefixCls + '-handler-wrap' }, [h( _InputHandler2['default'], upHandlerProps, [upHandler || h('span', { attrs: { unselectable: 'unselectable' }, 'class': prefixCls + '-handler-up-inner', on: { 'click': preventDefault } })] ), h( _InputHandler2['default'], downHandlerProps, [downHandler || h('span', { attrs: { unselectable: 'unselectable' }, 'class': prefixCls + '-handler-down-inner', on: { 'click': preventDefault } })] )] ), h( 'div', { 'class': prefixCls + '-input-wrap' }, [h('input', { attrs: { role: 'spinbutton', 'aria-valuemin': this.min, 'aria-valuemax': this.max, 'aria-valuenow': sValue, required: this.required, type: this.type, placeholder: this.placeholder, tabIndex: this.tabIndex, autoComplete: autoComplete, readonly: this.readonly, disabled: this.disabled, max: this.max, min: this.min, step: this.step, name: this.name, title: this.title, id: this.id, pattern: this.pattern }, on: { 'click': this.handleInputClick, 'focus': this.onFocus, 'blur': this.onBlur, 'keydown': editable ? this.onKeyDown : noop, 'keyup': editable ? this.onKeyUp : noop, 'input': this.onTrigger, 'compositionstart': this.onCompositionstart, 'compositionend': this.onCompositionend }, 'class': prefixCls + '-input', ref: 'inputRef', domProps: { 'value': inputDisplayValue } })] )] ); } }; /***/ }), /***/ "949f": /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.InputNumberProps = undefined; var _defineProperty2 = __webpack_require__("6042"); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _extends2 = __webpack_require__("41b2"); var _extends3 = _interopRequireDefault(_extends2); var _objectWithoutProperties2 = __webpack_require__("8e8e"); var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2); var _vueTypes = __webpack_require__("7b44"); var _vueTypes2 = _interopRequireDefault(_vueTypes); var _propsUtil = __webpack_require__("73c8"); var _classnames = __webpack_require__("4d26"); var _classnames2 = _interopRequireDefault(_classnames); var _icon = __webpack_require__("50f6"); var _icon2 = _interopRequireDefault(_icon); var _src = __webpack_require__("937b"); var _src2 = _interopRequireDefault(_src); var _configConsumerProps = __webpack_require__("bad7"); var _base = __webpack_require__("baff"); var _base2 = _interopRequireDefault(_base); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var InputNumberProps = exports.InputNumberProps = { prefixCls: _vueTypes2['default'].string, min: _vueTypes2['default'].number, max: _vueTypes2['default'].number, value: _vueTypes2['default'].oneOfType([_vueTypes2['default'].number, _vueTypes2['default'].string]), step: _vueTypes2['default'].oneOfType([_vueTypes2['default'].number, _vueTypes2['default'].string]), defaultValue: _vueTypes2['default'].oneOfType([_vueTypes2['default'].number, _vueTypes2['default'].string]), tabIndex: _vueTypes2['default'].number, disabled: _vueTypes2['default'].bool, size: _vueTypes2['default'].oneOf(['large', 'small', 'default']), formatter: _vueTypes2['default'].func, parser: _vueTypes2['default'].func, decimalSeparator: _vueTypes2['default'].string, placeholder: _vueTypes2['default'].string, name: _vueTypes2['default'].string, id: _vueTypes2['default'].string, precision: _vueTypes2['default'].number, autoFocus: _vueTypes2['default'].bool }; var InputNumber = { name: 'AInputNumber', model: { prop: 'value', event: 'change' }, props: (0, _propsUtil.initDefaultProps)(InputNumberProps, { step: 1 }), inject: { configProvider: { 'default': function _default() { return _configConsumerProps.ConfigConsumerProps; } } }, methods: { focus: function focus() { this.$refs.inputNumberRef.focus(); }, blur: function blur() { this.$refs.inputNumberRef.blur(); } }, render: function render() { var _classNames; var h = arguments[0]; var _getOptionProps$$attr = (0, _extends3['default'])({}, (0, _propsUtil.getOptionProps)(this), this.$attrs), customizePrefixCls = _getOptionProps$$attr.prefixCls, size = _getOptionProps$$attr.size, others = (0, _objectWithoutProperties3['default'])(_getOptionProps$$attr, ['prefixCls', 'size']); var getPrefixCls = this.configProvider.getPrefixCls; var prefixCls = getPrefixCls('input-number', customizePrefixCls); var inputNumberClass = (0, _classnames2['default'])((_classNames = {}, (0, _defineProperty3['default'])(_classNames, prefixCls + '-lg', size === 'large'), (0, _defineProperty3['default'])(_classNames, prefixCls + '-sm', size === 'small'), _classNames)); var upIcon = h(_icon2['default'], { attrs: { type: 'up' }, 'class': prefixCls + '-handler-up-inner' }); var downIcon = h(_icon2['default'], { attrs: { type: 'down' }, 'class': prefixCls + '-handler-down-inner' }); var vcInputNumberprops = { props: (0, _extends3['default'])({ prefixCls: prefixCls, upHandler: upIcon, downHandler: downIcon }, others), 'class': inputNumberClass, ref: 'inputNumberRef', on: (0, _propsUtil.getListeners)(this) }; return h(_src2['default'], vcInputNumberprops); } }; /* istanbul ignore next */ InputNumber.install = function (Vue) { Vue.use(_base2['default']); Vue.component(InputNumber.name, InputNumber); }; exports['default'] = InputNumber; /***/ }), /***/ "a7e2": /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.resetWarned = undefined; var _warning = __webpack_require__("1db9"); var _warning2 = _interopRequireDefault(_warning); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } exports.resetWarned = _warning.resetWarned; exports['default'] = function (valid, component) { var message = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : ''; (0, _warning2['default'])(valid, '[antdv: ' + component + '] ' + message); }; /***/ }), /***/ "af09": /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * @ignore * some key-codes definition and utils from closure-library * @author yiminghe@gmail.com */ var KeyCode = { /** * MAC_ENTER */ MAC_ENTER: 3, /** * BACKSPACE */ BACKSPACE: 8, /** * TAB */ TAB: 9, /** * NUMLOCK on FF/Safari Mac */ NUM_CENTER: 12, // NUMLOCK on FF/Safari Mac /** * ENTER */ ENTER: 13, /** * SHIFT */ SHIFT: 16, /** * CTRL */ CTRL: 17, /** * ALT */ ALT: 18, /** * PAUSE */ PAUSE: 19, /** * CAPS_LOCK */ CAPS_LOCK: 20, /** * ESC */ ESC: 27, /** * SPACE */ SPACE: 32, /** * PAGE_UP */ PAGE_UP: 33, // also NUM_NORTH_EAST /** * PAGE_DOWN */ PAGE_DOWN: 34, // also NUM_SOUTH_EAST /** * END */ END: 35, // also NUM_SOUTH_WEST /** * HOME */ HOME: 36, // also NUM_NORTH_WEST /** * LEFT */ LEFT: 37, // also NUM_WEST /** * UP */ UP: 38, // also NUM_NORTH /** * RIGHT */ RIGHT: 39, // also NUM_EAST /** * DOWN */ DOWN: 40, // also NUM_SOUTH /** * PRINT_SCREEN */ PRINT_SCREEN: 44, /** * INSERT */ INSERT: 45, // also NUM_INSERT /** * DELETE */ DELETE: 46, // also NUM_DELETE /** * ZERO */ ZERO: 48, /** * ONE */ ONE: 49, /** * TWO */ TWO: 50, /** * THREE */ THREE: 51, /** * FOUR */ FOUR: 52, /** * FIVE */ FIVE: 53, /** * SIX */ SIX: 54, /** * SEVEN */ SEVEN: 55, /** * EIGHT */ EIGHT: 56, /** * NINE */ NINE: 57, /** * QUESTION_MARK */ QUESTION_MARK: 63, // needs localization /** * A */ A: 65, /** * B */ B: 66, /** * C */ C: 67, /** * D */ D: 68, /** * E */ E: 69, /** * F */ F: 70, /** * G */ G: 71, /** * H */ H: 72, /** * I */ I: 73, /** * J */ J: 74, /** * K */ K: 75, /** * L */ L: 76, /** * M */ M: 77, /** * N */ N: 78, /** * O */ O: 79, /** * P */ P: 80, /** * Q */ Q: 81, /** * R */ R: 82, /** * S */ S: 83, /** * T */ T: 84, /** * U */ U: 85, /** * V */ V: 86, /** * W */ W: 87, /** * X */ X: 88, /** * Y */ Y: 89, /** * Z */ Z: 90, /** * META */ META: 91, // WIN_KEY_LEFT /** * WIN_KEY_RIGHT */ WIN_KEY_RIGHT: 92, /** * CONTEXT_MENU */ CONTEXT_MENU: 93, /** * NUM_ZERO */ NUM_ZERO: 96, /** * NUM_ONE */ NUM_ONE: 97, /** * NUM_TWO */ NUM_TWO: 98, /** * NUM_THREE */ NUM_THREE: 99, /** * NUM_FOUR */ NUM_FOUR: 100, /** * NUM_FIVE */ NUM_FIVE: 101, /** * NUM_SIX */ NUM_SIX: 102, /** * NUM_SEVEN */ NUM_SEVEN: 103, /** * NUM_EIGHT */ NUM_EIGHT: 104, /** * NUM_NINE */ NUM_NINE: 105, /** * NUM_MULTIPLY */ NUM_MULTIPLY: 106, /** * NUM_PLUS */ NUM_PLUS: 107, /** * NUM_MINUS */ NUM_MINUS: 109,