k-form-design
Version:
基于vue、ant-design-vue的表单设计器,可视化开发表单
1,706 lines (1,417 loc) • 69.7 kB
JavaScript
((typeof self !== 'undefined' ? self : this)["webpackJsonpk_form_design"] = (typeof self !== 'undefined' ? self : this)["webpackJsonpk_form_design"] || []).push([[2],{
/***/ "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;
}
/***/ }),
/***/ "2768":
/***/ (function(module, exports) {
/**
* Checks if `value` is `null` or `undefined`.
*
* @static
* @memberOf _
* @since 4.0.0
* @category Lang
* @param {*} value The value to check.
* @returns {boolean} Returns `true` if `value` is nullish, else `false`.
* @example
*
* _.isNil(null);
* // => true
*
* _.isNil(void 0);
* // => true
*
* _.isNil(NaN);
* // => false
*/
function isNil(value) {
return value == null;
}
module.exports = isNil;
/***/ }),
/***/ "3962":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _moment = __webpack_require__("c1df");
var _moment2 = _interopRequireDefault(_moment);
var _vueTypes = __webpack_require__("7b44");
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _BaseMixin = __webpack_require__("48bb");
var _BaseMixin2 = _interopRequireDefault(_BaseMixin);
var _Header = __webpack_require__("dfc9");
var _Header2 = _interopRequireDefault(_Header);
var _Combobox = __webpack_require__("b6d6");
var _Combobox2 = _interopRequireDefault(_Combobox);
var _propsUtil = __webpack_require__("73c8");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function noop() {}
function generateOptions(length, disabledOptions, hideDisabledOptions) {
var step = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
var arr = [];
for (var value = 0; value < length; value += step) {
if (!disabledOptions || disabledOptions.indexOf(value) < 0 || !hideDisabledOptions) {
arr.push(value);
}
}
return arr;
}
function toNearestValidTime(time, hourOptions, minuteOptions, secondOptions) {
var hour = hourOptions.slice().sort(function (a, b) {
return Math.abs(time.hour() - a) - Math.abs(time.hour() - b);
})[0];
var minute = minuteOptions.slice().sort(function (a, b) {
return Math.abs(time.minute() - a) - Math.abs(time.minute() - b);
})[0];
var second = secondOptions.slice().sort(function (a, b) {
return Math.abs(time.second() - a) - Math.abs(time.second() - b);
})[0];
return (0, _moment2['default'])(hour + ':' + minute + ':' + second, 'HH:mm:ss');
}
var Panel = {
mixins: [_BaseMixin2['default']],
props: {
clearText: _vueTypes2['default'].string,
prefixCls: _vueTypes2['default'].string.def('rc-time-picker-panel'),
defaultOpenValue: {
type: Object,
'default': function _default() {
return (0, _moment2['default'])();
}
},
value: _vueTypes2['default'].any,
defaultValue: _vueTypes2['default'].any,
placeholder: _vueTypes2['default'].string,
format: _vueTypes2['default'].string,
inputReadOnly: _vueTypes2['default'].bool.def(false),
disabledHours: _vueTypes2['default'].func.def(noop),
disabledMinutes: _vueTypes2['default'].func.def(noop),
disabledSeconds: _vueTypes2['default'].func.def(noop),
hideDisabledOptions: _vueTypes2['default'].bool,
// onChange: PropTypes.func,
// onEsc: PropTypes.func,
allowEmpty: _vueTypes2['default'].bool,
showHour: _vueTypes2['default'].bool,
showMinute: _vueTypes2['default'].bool,
showSecond: _vueTypes2['default'].bool,
// onClear: PropTypes.func,
use12Hours: _vueTypes2['default'].bool.def(false),
hourStep: _vueTypes2['default'].number,
minuteStep: _vueTypes2['default'].number,
secondStep: _vueTypes2['default'].number,
addon: _vueTypes2['default'].func.def(noop),
focusOnOpen: _vueTypes2['default'].bool,
// onKeydown: PropTypes.func,
clearIcon: _vueTypes2['default'].any
},
data: function data() {
return {
sValue: this.value,
selectionRange: [],
currentSelectPanel: ''
};
},
watch: {
value: function value(val) {
this.setState({
sValue: val
});
}
},
methods: {
onChange: function onChange(newValue) {
this.setState({ sValue: newValue });
this.__emit('change', newValue);
},
onAmPmChange: function onAmPmChange(ampm) {
this.__emit('amPmChange', ampm);
},
onCurrentSelectPanelChange: function onCurrentSelectPanelChange(currentSelectPanel) {
this.setState({ currentSelectPanel: currentSelectPanel });
},
// https://github.com/ant-design/ant-design/issues/5829
close: function close() {
this.__emit('esc');
},
onEsc: function onEsc(e) {
this.__emit('esc', e);
},
disabledHours2: function disabledHours2() {
var use12Hours = this.use12Hours,
disabledHours = this.disabledHours;
var disabledOptions = disabledHours();
if (use12Hours && Array.isArray(disabledOptions)) {
if (this.isAM()) {
disabledOptions = disabledOptions.filter(function (h) {
return h < 12;
}).map(function (h) {
return h === 0 ? 12 : h;
});
} else {
disabledOptions = disabledOptions.map(function (h) {
return h === 12 ? 12 : h - 12;
});
}
}
return disabledOptions;
},
isAM: function isAM() {
var value = this.sValue || this.defaultOpenValue;
return value.hour() >= 0 && value.hour() < 12;
}
},
render: function render() {
var h = arguments[0];
var prefixCls = this.prefixCls,
placeholder = this.placeholder,
disabledMinutes = this.disabledMinutes,
addon = this.addon,
disabledSeconds = this.disabledSeconds,
hideDisabledOptions = this.hideDisabledOptions,
showHour = this.showHour,
showMinute = this.showMinute,
showSecond = this.showSecond,
format = this.format,
defaultOpenValue = this.defaultOpenValue,
clearText = this.clearText,
use12Hours = this.use12Hours,
focusOnOpen = this.focusOnOpen,
hourStep = this.hourStep,
minuteStep = this.minuteStep,
secondStep = this.secondStep,
inputReadOnly = this.inputReadOnly,
sValue = this.sValue,
currentSelectPanel = this.currentSelectPanel;
var clearIcon = (0, _propsUtil.getComponentFromProp)(this, 'clearIcon');
var _getListeners = (0, _propsUtil.getListeners)(this),
_getListeners$esc = _getListeners.esc,
esc = _getListeners$esc === undefined ? noop : _getListeners$esc,
_getListeners$keydown = _getListeners.keydown,
keydown = _getListeners$keydown === undefined ? noop : _getListeners$keydown;
var disabledHourOptions = this.disabledHours2();
var disabledMinuteOptions = disabledMinutes(sValue ? sValue.hour() : null);
var disabledSecondOptions = disabledSeconds(sValue ? sValue.hour() : null, sValue ? sValue.minute() : null);
var hourOptions = generateOptions(24, disabledHourOptions, hideDisabledOptions, hourStep);
var minuteOptions = generateOptions(60, disabledMinuteOptions, hideDisabledOptions, minuteStep);
var secondOptions = generateOptions(60, disabledSecondOptions, hideDisabledOptions, secondStep);
var validDefaultOpenValue = toNearestValidTime(defaultOpenValue, hourOptions, minuteOptions, secondOptions);
return h(
'div',
{ 'class': prefixCls + '-inner' },
[h(_Header2['default'], {
attrs: {
clearText: clearText,
prefixCls: prefixCls,
defaultOpenValue: validDefaultOpenValue,
value: sValue,
currentSelectPanel: currentSelectPanel,
format: format,
placeholder: placeholder,
hourOptions: hourOptions,
minuteOptions: minuteOptions,
secondOptions: secondOptions,
disabledHours: this.disabledHours2,
disabledMinutes: disabledMinutes,
disabledSeconds: disabledSeconds,
focusOnOpen: focusOnOpen,
inputReadOnly: inputReadOnly,
clearIcon: clearIcon
},
on: {
'esc': esc,
'change': this.onChange,
'keydown': keydown
}
}), h(_Combobox2['default'], {
attrs: {
prefixCls: prefixCls,
value: sValue,
defaultOpenValue: validDefaultOpenValue,
format: format,
showHour: showHour,
showMinute: showMinute,
showSecond: showSecond,
hourOptions: hourOptions,
minuteOptions: minuteOptions,
secondOptions: secondOptions,
disabledHours: this.disabledHours2,
disabledMinutes: disabledMinutes,
disabledSeconds: disabledSeconds,
use12Hours: use12Hours,
isAM: this.isAM()
},
on: {
'change': this.onChange,
'amPmChange': this.onAmPmChange,
'currentSelectPanelChange': this.onCurrentSelectPanelChange,
'esc': this.onEsc
}
}), addon(this)]
);
}
};
exports['default'] = Panel;
/***/ }),
/***/ "4b93":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.momentToString = exports.stringToMoment = exports.TimeOrTimesType = exports.TimesType = exports.TimeType = undefined;
exports.checkValidate = checkValidate;
var _interopDefault = __webpack_require__("8716");
var _interopDefault2 = _interopRequireDefault(_interopDefault);
var _moment = __webpack_require__("c1df");
var moment = _interopRequireWildcard(_moment);
var _warning = __webpack_require__("a7e2");
var _warning2 = _interopRequireDefault(_warning);
var _isNil = __webpack_require__("2768");
var _isNil2 = _interopRequireDefault(_isNil);
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 }; }
var TimeType = exports.TimeType = {
validator: function validator(value) {
return typeof value === 'string' || (0, _isNil2['default'])(value) || moment.isMoment(value);
}
};
var TimesType = exports.TimesType = {
validator: function validator(value) {
if (Array.isArray(value)) {
return value.length === 0 || value.findIndex(function (val) {
return typeof val !== 'string';
}) === -1 || value.findIndex(function (val) {
return !(0, _isNil2['default'])(val) && !moment.isMoment(val);
}) === -1;
}
return false;
}
};
var TimeOrTimesType = exports.TimeOrTimesType = {
validator: function validator(value) {
if (Array.isArray(value)) {
return value.length === 0 || value.findIndex(function (val) {
return typeof val !== 'string';
}) === -1 || value.findIndex(function (val) {
return !(0, _isNil2['default'])(val) && !moment.isMoment(val);
}) === -1;
} else {
return typeof value === 'string' || (0, _isNil2['default'])(value) || moment.isMoment(value);
}
}
};
function checkValidate(componentName, value, propName, valueFormat) {
var values = Array.isArray(value) ? value : [value];
values.forEach(function (val) {
if (!val) return;
valueFormat && (0, _warning2['default'])((0, _interopDefault2['default'])(moment)(val, valueFormat).isValid(), componentName, 'When set `valueFormat`, `' + propName + '` should provides invalidate string time. ');
!valueFormat && (0, _warning2['default'])((0, _interopDefault2['default'])(moment).isMoment(val) && val.isValid(), componentName, '`' + propName + '` provides invalidate moment time. If you want to set empty value, use `null` instead.');
});
}
var stringToMoment = exports.stringToMoment = function stringToMoment(value, valueFormat) {
if (Array.isArray(value)) {
return value.map(function (val) {
return typeof val === 'string' && val ? (0, _interopDefault2['default'])(moment)(val, valueFormat) : val || null;
});
} else {
return typeof value === 'string' && value ? (0, _interopDefault2['default'])(moment)(value, valueFormat) : value || null;
}
};
var momentToString = exports.momentToString = function momentToString(value, valueFormat) {
if (Array.isArray(value)) {
return value.map(function (val) {
return (0, _interopDefault2['default'])(moment).isMoment(val) ? val.format(valueFormat) : val;
});
} else {
return (0, _interopDefault2['default'])(moment).isMoment(value) ? value.format(valueFormat) : value;
}
};
/***/ }),
/***/ "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;
/***/ }),
/***/ "628f":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _TimePicker = __webpack_require__("ab96");
Object.defineProperty(exports, 'default', {
enumerable: true,
get: function get() {
return _interopRequireDefault(_TimePicker)['default'];
}
});
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
/***/ }),
/***/ "86d2":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var autoAdjustOverflow = {
adjustX: 1,
adjustY: 1
};
var targetOffset = [0, 0];
var placements = {
bottomLeft: {
points: ['tl', 'tl'],
overflow: autoAdjustOverflow,
offset: [0, -3],
targetOffset: targetOffset
},
bottomRight: {
points: ['tr', 'tr'],
overflow: autoAdjustOverflow,
offset: [0, -3],
targetOffset: targetOffset
},
topRight: {
points: ['br', 'br'],
overflow: autoAdjustOverflow,
offset: [0, 3],
targetOffset: targetOffset
},
topLeft: {
points: ['bl', 'bl'],
overflow: autoAdjustOverflow,
offset: [0, 3],
targetOffset: targetOffset
}
};
exports['default'] = placements;
/***/ }),
/***/ "8716":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = interopDefault;
// https://github.com/moment/moment/issues/3650
function interopDefault(m) {
return m["default"] || m;
}
/***/ }),
/***/ "9076":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _defineProperty2 = __webpack_require__("6042");
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _vueTypes = __webpack_require__("7b44");
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _BaseMixin = __webpack_require__("48bb");
var _BaseMixin2 = _interopRequireDefault(_BaseMixin);
var _classnames2 = __webpack_require__("4d26");
var _classnames3 = _interopRequireDefault(_classnames2);
var _raf = __webpack_require__("c449");
var _raf2 = _interopRequireDefault(_raf);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function noop() {}
var scrollTo = function scrollTo(element, to, duration) {
// jump to target if duration zero
if (duration <= 0) {
(0, _raf2['default'])(function () {
element.scrollTop = to;
});
return;
}
var difference = to - element.scrollTop;
var perTick = difference / duration * 10;
(0, _raf2['default'])(function () {
element.scrollTop += perTick;
if (element.scrollTop === to) return;
scrollTo(element, to, duration - 10);
});
};
var Select = {
mixins: [_BaseMixin2['default']],
props: {
prefixCls: _vueTypes2['default'].string,
options: _vueTypes2['default'].array,
selectedIndex: _vueTypes2['default'].number,
type: _vueTypes2['default'].string
// onSelect: PropTypes.func,
// onMouseEnter: PropTypes.func,
},
data: function data() {
return {
active: false
};
},
mounted: function mounted() {
var _this = this;
this.$nextTick(function () {
// jump to selected option
_this.scrollToSelected(0);
});
},
watch: {
selectedIndex: function selectedIndex() {
var _this2 = this;
this.$nextTick(function () {
// smooth scroll to selected option
_this2.scrollToSelected(120);
});
}
},
methods: {
onSelect: function onSelect(value) {
var type = this.type;
this.__emit('select', type, value);
},
onEsc: function onEsc(e) {
this.__emit('esc', e);
},
getOptions: function getOptions() {
var _this3 = this;
var h = this.$createElement;
var options = this.options,
selectedIndex = this.selectedIndex,
prefixCls = this.prefixCls;
return options.map(function (item, index) {
var _classnames;
var cls = (0, _classnames3['default'])((_classnames = {}, (0, _defineProperty3['default'])(_classnames, prefixCls + '-select-option-selected', selectedIndex === index), (0, _defineProperty3['default'])(_classnames, prefixCls + '-select-option-disabled', item.disabled), _classnames));
var onClick = item.disabled ? noop : function () {
_this3.onSelect(item.value);
};
var onKeyDown = function onKeyDown(e) {
if (e.keyCode === 13) onClick();else if (e.keyCode === 27) _this3.onEsc();
};
return h(
'li',
{
attrs: {
role: 'button',
disabled: item.disabled,
tabIndex: '0'
},
on: {
'click': onClick,
'keydown': onKeyDown
},
'class': cls,
key: index },
[item.value]
);
});
},
handleMouseEnter: function handleMouseEnter(e) {
this.setState({ active: true });
this.__emit('mouseenter', e);
},
handleMouseLeave: function handleMouseLeave() {
this.setState({ active: false });
},
scrollToSelected: function scrollToSelected(duration) {
// move to selected item
var select = this.$el;
var list = this.$refs.list;
if (!list) {
return;
}
var index = this.selectedIndex;
if (index < 0) {
index = 0;
}
var topOption = list.children[index];
var to = topOption.offsetTop;
scrollTo(select, to, duration);
}
},
render: function render() {
var _cls;
var h = arguments[0];
var prefixCls = this.prefixCls,
options = this.options,
active = this.active;
if (options.length === 0) {
return null;
}
var cls = (_cls = {}, (0, _defineProperty3['default'])(_cls, prefixCls + '-select', 1), (0, _defineProperty3['default'])(_cls, prefixCls + '-select-active', active), _cls);
return h(
'div',
{ 'class': cls, on: {
'mouseenter': this.handleMouseEnter,
'mouseleave': this.handleMouseLeave
}
},
[h(
'ul',
{ ref: 'list' },
[this.getOptions()]
)]
);
}
};
exports['default'] = Select;
/***/ }),
/***/ "ab96":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _defineProperty2 = __webpack_require__("6042");
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _moment = __webpack_require__("c1df");
var _moment2 = _interopRequireDefault(_moment);
var _classnames = __webpack_require__("4d26");
var _classnames2 = _interopRequireDefault(_classnames);
var _vueTypes = __webpack_require__("7b44");
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _BaseMixin = __webpack_require__("48bb");
var _BaseMixin2 = _interopRequireDefault(_BaseMixin);
var _propsUtil = __webpack_require__("73c8");
var _vnode = __webpack_require__("d2f9");
var _vcTrigger = __webpack_require__("2f52");
var _vcTrigger2 = _interopRequireDefault(_vcTrigger);
var _Panel = __webpack_require__("3962");
var _Panel2 = _interopRequireDefault(_Panel);
var _placements = __webpack_require__("86d2");
var _placements2 = _interopRequireDefault(_placements);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function noop() {}
exports['default'] = {
name: 'VcTimePicker',
mixins: [_BaseMixin2['default']],
props: (0, _propsUtil.initDefaultProps)({
prefixCls: _vueTypes2['default'].string,
clearText: _vueTypes2['default'].string,
value: _vueTypes2['default'].any,
defaultOpenValue: {
type: Object,
'default': function _default() {
return (0, _moment2['default'])();
}
},
inputReadOnly: _vueTypes2['default'].bool,
disabled: _vueTypes2['default'].bool,
allowEmpty: _vueTypes2['default'].bool,
defaultValue: _vueTypes2['default'].any,
open: _vueTypes2['default'].bool,
defaultOpen: _vueTypes2['default'].bool,
align: _vueTypes2['default'].object,
placement: _vueTypes2['default'].any,
transitionName: _vueTypes2['default'].string,
getPopupContainer: _vueTypes2['default'].func,
placeholder: _vueTypes2['default'].string,
format: _vueTypes2['default'].string,
showHour: _vueTypes2['default'].bool,
showMinute: _vueTypes2['default'].bool,
showSecond: _vueTypes2['default'].bool,
popupClassName: _vueTypes2['default'].string,
popupStyle: _vueTypes2['default'].object,
disabledHours: _vueTypes2['default'].func,
disabledMinutes: _vueTypes2['default'].func,
disabledSeconds: _vueTypes2['default'].func,
hideDisabledOptions: _vueTypes2['default'].bool,
// onChange: PropTypes.func,
// onAmPmChange: PropTypes.func,
// onOpen: PropTypes.func,
// onClose: PropTypes.func,
// onFocus: PropTypes.func,
// onBlur: PropTypes.func,
name: _vueTypes2['default'].string,
autoComplete: _vueTypes2['default'].string,
use12Hours: _vueTypes2['default'].bool,
hourStep: _vueTypes2['default'].number,
minuteStep: _vueTypes2['default'].number,
secondStep: _vueTypes2['default'].number,
focusOnOpen: _vueTypes2['default'].bool,
// onKeyDown: PropTypes.func,
autoFocus: _vueTypes2['default'].bool,
id: _vueTypes2['default'].string,
inputIcon: _vueTypes2['default'].any,
clearIcon: _vueTypes2['default'].any,
addon: _vueTypes2['default'].func
}, {
clearText: 'clear',
prefixCls: 'rc-time-picker',
defaultOpen: false,
inputReadOnly: false,
popupClassName: '',
popupStyle: {},
align: {},
allowEmpty: true,
showHour: true,
showMinute: true,
showSecond: true,
disabledHours: noop,
disabledMinutes: noop,
disabledSeconds: noop,
hideDisabledOptions: false,
placement: 'bottomLeft',
use12Hours: false,
focusOnOpen: false
}),
data: function data() {
var defaultOpen = this.defaultOpen,
defaultValue = this.defaultValue,
_open = this.open,
open = _open === undefined ? defaultOpen : _open,
_value = this.value,
value = _value === undefined ? defaultValue : _value;
return {
sOpen: open,
sValue: value
};
},
watch: {
value: function value(val) {
this.setState({
sValue: val
});
},
open: function open(val) {
if (val !== undefined) {
this.setState({
sOpen: val
});
}
}
},
mounted: function mounted() {
var _this = this;
this.$nextTick(function () {
if (_this.autoFocus) {
_this.focus();
}
});
},
methods: {
onPanelChange: function onPanelChange(value) {
this.setValue(value);
},
onAmPmChange: function onAmPmChange(ampm) {
this.__emit('amPmChange', ampm);
},
onClear: function onClear(event) {
event.stopPropagation();
this.setValue(null);
this.setOpen(false);
},
onVisibleChange: function onVisibleChange(open) {
this.setOpen(open);
},
onEsc: function onEsc() {
this.setOpen(false);
this.focus();
},
onKeyDown: function onKeyDown(e) {
if (e.keyCode === 40) {
this.setOpen(true);
}
},
onKeyDown2: function onKeyDown2(e) {
this.__emit('keydown', e);
},
setValue: function setValue(value) {
if (!(0, _propsUtil.hasProp)(this, 'value')) {
this.setState({
sValue: value
});
}
this.__emit('change', value);
},
getFormat: function getFormat() {
var format = this.format,
showHour = this.showHour,
showMinute = this.showMinute,
showSecond = this.showSecond,
use12Hours = this.use12Hours;
if (format) {
return format;
}
if (use12Hours) {
var fmtString = [showHour ? 'h' : '', showMinute ? 'mm' : '', showSecond ? 'ss' : ''].filter(function (item) {
return !!item;
}).join(':');
return fmtString.concat(' a');
}
return [showHour ? 'HH' : '', showMinute ? 'mm' : '', showSecond ? 'ss' : ''].filter(function (item) {
return !!item;
}).join(':');
},
getPanelElement: function getPanelElement() {
var h = this.$createElement;
var prefixCls = this.prefixCls,
placeholder = this.placeholder,
disabledHours = this.disabledHours,
addon = this.addon,
disabledMinutes = this.disabledMinutes,
disabledSeconds = this.disabledSeconds,
hideDisabledOptions = this.hideDisabledOptions,
inputReadOnly = this.inputReadOnly,
showHour = this.showHour,
showMinute = this.showMinute,
showSecond = this.showSecond,
defaultOpenValue = this.defaultOpenValue,
clearText = this.clearText,
use12Hours = this.use12Hours,
focusOnOpen = this.focusOnOpen,
onKeyDown2 = this.onKeyDown2,
hourStep = this.hourStep,
minuteStep = this.minuteStep,
secondStep = this.secondStep,
sValue = this.sValue;
var clearIcon = (0, _propsUtil.getComponentFromProp)(this, 'clearIcon');
return h(_Panel2['default'], {
attrs: {
clearText: clearText,
prefixCls: prefixCls + '-panel',
value: sValue,
inputReadOnly: inputReadOnly,
defaultOpenValue: defaultOpenValue,
showHour: showHour,
showMinute: showMinute,
showSecond: showSecond,
format: this.getFormat(),
placeholder: placeholder,
disabledHours: disabledHours,
disabledMinutes: disabledMinutes,
disabledSeconds: disabledSeconds,
hideDisabledOptions: hideDisabledOptions,
use12Hours: use12Hours,
hourStep: hourStep,
minuteStep: minuteStep,
secondStep: secondStep,
focusOnOpen: focusOnOpen,
clearIcon: clearIcon,
addon: addon
},
ref: 'panel', on: {
'change': this.onPanelChange,
'amPmChange': this.onAmPmChange,
'esc': this.onEsc,
'keydown': onKeyDown2
}
});
},
getPopupClassName: function getPopupClassName() {
var showHour = this.showHour,
showMinute = this.showMinute,
showSecond = this.showSecond,
use12Hours = this.use12Hours,
prefixCls = this.prefixCls,
popupClassName = this.popupClassName;
var selectColumnCount = 0;
if (showHour) {
selectColumnCount += 1;
}
if (showMinute) {
selectColumnCount += 1;
}
if (showSecond) {
selectColumnCount += 1;
}
if (use12Hours) {
selectColumnCount += 1;
}
// Keep it for old compatibility
return (0, _classnames2['default'])(popupClassName, (0, _defineProperty3['default'])({}, prefixCls + '-panel-narrow', (!showHour || !showMinute || !showSecond) && !use12Hours), prefixCls + '-panel-column-' + selectColumnCount);
},
setOpen: function setOpen(open) {
if (this.sOpen !== open) {
if (!(0, _propsUtil.hasProp)(this, 'open')) {
this.setState({ sOpen: open });
}
if (open) {
this.__emit('open', { open: open });
} else {
this.__emit('close', { open: open });
}
}
},
focus: function focus() {
this.$refs.picker.focus();
},
blur: function blur() {
this.$refs.picker.blur();
},
onFocus: function onFocus(e) {
this.__emit('focus', e);
},
onBlur: function onBlur(e) {
this.__emit('blur', e);
},
renderClearButton: function renderClearButton() {
var _this2 = this;
var h = this.$createElement;
var sValue = this.sValue;
var _$props = this.$props,
prefixCls = _$props.prefixCls,
allowEmpty = _$props.allowEmpty,
clearText = _$props.clearText,
disabled = _$props.disabled;
if (!allowEmpty || !sValue || disabled) {
return null;
}
var clearIcon = (0, _propsUtil.getComponentFromProp)(this, 'clearIcon');
if ((0, _propsUtil.isValidElement)(clearIcon)) {
var _ref = (0, _propsUtil.getEvents)(clearIcon) || {},
_click = _ref.click;
return (0, _vnode.cloneElement)(clearIcon, {
on: {
click: function click() {
if (_click) _click.apply(undefined, arguments);
_this2.onClear.apply(_this2, arguments);
}
}
});
}
return h(
'a',
{
attrs: {
role: 'button',
title: clearText,
tabIndex: 0
},
'class': prefixCls + '-clear', on: {
'click': this.onClear
}
},
[clearIcon || h('i', { 'class': prefixCls + '-clear-icon' })]
);
}
},
render: function render() {
var h = arguments[0];
var prefixCls = this.prefixCls,
placeholder = this.placeholder,
placement = this.placement,
align = this.align,
id = this.id,
disabled = this.disabled,
transitionName = this.transitionName,
getPopupContainer = this.getPopupContainer,
name = this.name,
autoComplete = this.autoComplete,
autoFocus = this.autoFocus,
sOpen = this.sOpen,
sValue = this.sValue,
onFocus = this.onFocus,
onBlur = this.onBlur,
popupStyle = this.popupStyle;
var popupClassName = this.getPopupClassName();
var inputIcon = (0, _propsUtil.getComponentFromProp)(this, 'inputIcon');
return h(
_vcTrigger2['default'],
{
attrs: {
prefixCls: prefixCls + '-panel',
popupClassName: popupClassName,
popupStyle: popupStyle,
popupAlign: align,
builtinPlacements: _placements2['default'],
popupPlacement: placement,
action: disabled ? [] : ['click'],
destroyPopupOnHide: true,
getPopupContainer: getPopupContainer,
popupTransitionName: transitionName,
popupVisible: sOpen
},
on: {
'popupVisibleChange': this.onVisibleChange
}
},
[h(
'template',
{ slot: 'popup' },
[this.getPanelElement()]
), h(
'span',
{ 'class': '' + prefixCls },
[h('input', {
'class': prefixCls + '-input',
ref: 'picker',
attrs: { type: 'text',
placeholder: placeholder,
name: name,
disabled: disabled,
autoComplete: autoComplete,
autoFocus: autoFocus,
readOnly: true,
id: id
},
on: {
'keydown': this.onKeyDown,
'focus': onFocus,
'blur': onBlur
},
domProps: {
'value': sValue && sValue.format(this.getFormat()) || ''
}
}), inputIcon || h('span', { 'class': prefixCls + '-icon' }), this.renderClearButton()]
)]
);
}
};
/***/ }),
/***/ "afdf":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.TimePickerProps = undefined;
var _defineProperty2 = __webpack_require__("6042");
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _extends2 = __webpack_require__("41b2");
var _extends3 = _interopRequireDefault(_extends2);
exports.generateShowHourMinuteSecond = generateShowHourMinuteSecond;
var _omit = __webpack_require__("0464");
var _omit2 = _interopRequireDefault(_omit);
var _vcTimePicker = __webpack_require__("628f");
var _vcTimePicker2 = _interopRequireDefault(_vcTimePicker);
var _LocaleReceiver = __webpack_require__("3f5f");
var _LocaleReceiver2 = _interopRequireDefault(_LocaleReceiver);
var _BaseMixin = __webpack_require__("48bb");
var _BaseMixin2 = _interopRequireDefault(_BaseMixin);
var _vueTypes = __webpack_require__("7b44");
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _warning = __webpack_require__("a7e2");
var _warning2 = _interopRequireDefault(_warning);
var _icon = __webpack_require__("50f6");
var _icon2 = _interopRequireDefault(_icon);
var _en_US = __webpack_require__("ba1d");
var _en_US2 = _interopRequireDefault(_en_US);
var _propsUtil = __webpack_require__("73c8");
var _vnode = __webpack_require__("d2f9");
var _configConsumerProps = __webpack_require__("bad7");
var _base = __webpack_require__("baff");
var _base2 = _interopRequireDefault(_base);
var _momentUtil = __webpack_require__("4b93");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function generateShowHourMinuteSecond(format) {
// Ref: http://momentjs.com/docs/#/parsing/string-format/
return {
showHour: format.indexOf('H') > -1 || format.indexOf('h') > -1 || format.indexOf('k') > -1,
showMinute: format.indexOf('m') > -1,
showSecond: format.indexOf('s') > -1
};
}
var TimePickerProps = exports.TimePickerProps = function TimePickerProps() {
return {
size: _vueTypes2['default'].oneOf(['large', 'default', 'small']),
value: _momentUtil.TimeOrTimesType,
defaultValue: _momentUtil.TimeOrTimesType,
open: _vueTypes2['default'].bool,
format: _vueTypes2['default'].string,
disabled: _vueTypes2['default'].bool,
placeholder: _vueTypes2['default'].string,
prefixCls: _vueTypes2['default'].string,
hideDisabledOptions: _vueTypes2['default'].bool,
disabledHours: _vueTypes2['default'].func,
disabledMinutes: _vueTypes2['default'].func,
disabledSeconds: _vueTypes2['default'].func,
getPopupContainer: _vueTypes2['default'].func,
use12Hours: _vueTypes2['default'].bool,
focusOnOpen: _vueTypes2['default'].bool,
hourStep: _vueTypes2['default'].number,
minuteStep: _vueTypes2['default'].number,
secondStep: _vueTypes2['default'].number,
allowEmpty: _vueTypes2['default'].bool,
allowClear: _vueTypes2['default'].bool,
inputReadOnly: _vueTypes2['default'].bool,
clearText: _vueTypes2['default'].string,
defaultOpenValue: _vueTypes2['default'].object,
popupClassName: _vueTypes2['default'].string,
popupStyle: _vueTypes2['default'].object,
suffixIcon: _vueTypes2['default'].any,
align: _vueTypes2['default'].object,
placement: _vueTypes2['default'].any,
transitionName: _vueTypes2['default'].string,
autoFocus: _vueTypes2['default'].bool,
addon: _vueTypes2['default'].any,
clearIcon: _vueTypes2['default'].any,
locale: _vueTypes2['default'].object,
valueFormat: _vueTypes2['default'].string
};
};
var TimePicker = {
name: 'ATimePicker',
mixins: [_BaseMixin2['default']],
props: (0, _propsUtil.initDefaultProps)(TimePickerProps(), {
align: {
offset: [0, -2]
},
disabled: false,
disabledHours: undefined,
disabledMinutes: undefined,
disabledSeconds: undefined,
hideDisabledOptions: false,
placement: 'bottomLeft',
transitionName: 'slide-up',
focusOnOpen: true,
allowClear: true
}),
model: {
prop: 'value',
event: 'change'
},
provide: function provide() {
return {
savePopupRef: this.savePopupRef
};
},
inject: {
configProvider: { 'default': function _default() {
return _configConsumerProps.ConfigConsumerProps;
} }
},
data: function data() {
var value = this.value,
defaultValue = this.defaultValue,
valueFormat = this.valueFormat;
(0, _momentUtil.checkValidate)('TimePicker', defaultValue, 'defaultValue', valueFormat);
(0, _momentUtil.checkValidate)('TimePicker', value, 'value', valueFormat);
(0, _warning2['default'])(!(0, _propsUtil.hasProp)(this, 'allowEmpty'), 'TimePicker', '`allowEmpty` is deprecated. Please use `allowClear` instead.');
return {
sValue: (0, _momentUtil.stringToMoment)(value || defaultValue, valueFormat)
};
},
watch: {
value: function value(val) {
(0, _momentUtil.checkValidate)('TimePicker', val, 'value', this.valueFormat);
this.setState({ sValue: (0, _momentUtil.stringToMoment)(val, this.valueFormat) });
}
},
methods: {
getDefaultFormat: function getDefaultFormat() {
var format = this.format,
use12Hours = this.use12Hours;
if (format) {
return format;
} else if (use12Hours) {
return 'h:mm:ss a';
}
return 'HH:mm:ss';
},
getAllowClear: function getAllowClear() {
var _$props = this.$props,
allowClear = _$props.allowClear,
allowEmpty = _$props.allowEmpty;
if ((0, _propsUtil.hasProp)(this, 'allowClear')) {
return allowClear;
}
return allowEmpty;
},
getDefaultLocale: function getDefaultLocale() {
var defaultLocale = (0, _extends3['default'])({}, _en_US2['default'], this.$props.locale);
return defaultLocale;
},
savePopupRef: function savePopupRef(ref) {
this.popupRef = ref;
},
handleChange: function handleChange(value) {
if (!(0, _propsUtil.hasProp)(this, 'value')) {
this.setState({ sValue: value });
}
var _format = this.format,
format = _format === undefined ? 'HH:mm:ss' : _format;
this.$emit('change', this.valueFormat ? (0, _momentUtil.momentToString)(value, this.valueFormat) : value, value && value.format(format) || '');
},
handleOpenClose: function handleOpenClose(_ref) {
var open = _ref.open;
this.$emit('openChange', open);
this.$emit('update:open', open);
},
focus: function focus() {
this.$refs.timePicker.focus();
},
blur: function blur() {
this.$refs.timePicker.blur();
},
renderInputIcon: function renderInputIcon(prefixCls) {
var h = this.$createElement;
var suffixIcon = (0, _propsUtil.getComponentFromProp)(this, 'suffixIcon');
suffixIcon = Array.isArray(suffixIcon) ? suffixIcon[0] : suffixIcon;
var clockIcon = suffixIcon && (0, _propsUtil.isValidElement)(suffixIcon) && (0, _vnode.cloneElement)(suffixIcon, {
'class': prefixCls + '-clock-icon'
}) || h(_icon2['default'], {
attrs: { type: 'clock-circle' },
'class': prefixCls + '-clock-icon' });
return h(
'span',
{ 'class': prefixCls + '-icon' },
[clockIcon]
);
},
renderClearIcon: function renderClearIcon(prefixCls) {
var h = this.$createElement;
var clearIcon = (0, _propsUtil.getComponentFromProp)(this, 'clearIcon');
var clearIconPrefixCls = prefixCls + '-clear';
if (clearIcon && (0, _propsUtil.isValidElement)(clearIcon)) {
return (0, _vnode.cloneElement)(clearIcon, {
'class': clearIconPrefixCls
});
}
return h(_icon2['default'], {
attrs: { type: 'close-circle', theme: 'filled' },
'class': clearIconPrefixCls });
},
renderTimePicker: function renderTimePicker(locale) {
var h = this.$createElement;
var props = (0, _propsUtil.getOptionProps)(this);
props = (0, _omit2['default'])(props, ['defaultValue', 'suffixIcon', 'allowEmpty', 'allowClear']);
var _props = props,
customizePrefixCls = _props.prefixCls,
getPopupContainer = _props.getPopupContainer,
placeholder = _props.placeholder,
size = _props.size;
var getPrefixCls = this.configProvider.getPrefi