k-form-design
Version:
基于vue、ant-design-vue的表单设计器,可视化开发表单
1,823 lines (1,578 loc) • 68.3 kB
JavaScript
((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,