k-form-design
Version:
基于vue、ant-design-vue的表单设计器,可视化开发表单
1,679 lines (1,419 loc) • 216 kB
JavaScript
((typeof self !== 'undefined' ? self : this)["webpackJsonpk_form_design"] = (typeof self !== 'undefined' ? self : this)["webpackJsonpk_form_design"] || []).push([[3],{
/***/ "0025":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.formatDate = formatDate;
function formatDate(value, format) {
if (!value) {
return '';
}
if (Array.isArray(format)) {
format = format[0];
}
if (typeof format === 'function') {
var result = format(value);
if (typeof result === 'string') {
return result;
} else {
throw new Error('The function of format does not return a string');
}
}
return value.format(format);
}
/***/ }),
/***/ "08e5":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _defineProperty2 = __webpack_require__("6042");
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
exports.getNowByCurrentStateValue = getNowByCurrentStateValue;
var _vueTypes = __webpack_require__("7b44");
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _BaseMixin = __webpack_require__("48bb");
var _BaseMixin2 = _interopRequireDefault(_BaseMixin);
var _propsUtil = __webpack_require__("73c8");
var _moment = __webpack_require__("c1df");
var _moment2 = _interopRequireDefault(_moment);
var _index = __webpack_require__("c021");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
function noop() {}
function getNowByCurrentStateValue(value) {
var ret = void 0;
if (value) {
ret = (0, _index.getTodayTime)(value);
} else {
ret = (0, _moment2['default'])();
}
return ret;
}
function isMoment(value) {
if (Array.isArray(value)) {
return value.length === 0 || value.findIndex(function (val) {
return val === undefined || _moment2['default'].isMoment(val);
}) !== -1;
} else {
return value === undefined || _moment2['default'].isMoment(value);
}
}
var MomentType = _vueTypes2['default'].custom(isMoment);
var CalendarMixin = {
mixins: [_BaseMixin2['default']],
name: 'CalendarMixinWrapper',
props: {
value: MomentType,
defaultValue: MomentType
},
data: function data() {
var props = this.$props;
var sValue = props.value || props.defaultValue || getNowByCurrentStateValue();
return {
sValue: sValue,
sSelectedValue: props.selectedValue || props.defaultSelectedValue
};
},
watch: {
value: function value(val) {
var sValue = val || this.defaultValue || getNowByCurrentStateValue(this.sValue);
this.setState({
sValue: sValue
});
},
selectedValue: function selectedValue(val) {
this.setState({
sSelectedValue: val
});
}
},
methods: {
onSelect: function onSelect(value, cause) {
if (value) {
this.setValue(value);
}
this.setSelectedValue(value, cause);
},
renderRoot: function renderRoot(newProps) {
var _className;
var h = this.$createElement;
var props = this.$props;
var prefixCls = props.prefixCls;
var className = (_className = {}, (0, _defineProperty3['default'])(_className, prefixCls, 1), (0, _defineProperty3['default'])(_className, prefixCls + '-hidden', !props.visible), (0, _defineProperty3['default'])(_className, newProps['class'], !!newProps['class']), _className);
return h(
'div',
{
ref: 'rootInstance',
'class': className,
attrs: { tabIndex: '0'
},
on: {
'keydown': this.onKeyDown || noop,
'blur': this.onBlur || noop
}
},
[newProps.children]
);
},
setSelectedValue: function setSelectedValue(selectedValue, cause) {
// if (this.isAllowedDate(selectedValue)) {
if (!(0, _propsUtil.hasProp)(this, 'selectedValue')) {
this.setState({
sSelectedValue: selectedValue
});
}
this.__emit('select', selectedValue, cause);
// }
},
setValue: function setValue(value) {
var originalValue = this.sValue;
if (!(0, _propsUtil.hasProp)(this, 'value')) {
this.setState({
sValue: value
});
}
if (originalValue && value && !originalValue.isSame(value) || !originalValue && value || originalValue && !value) {
this.__emit('change', value);
}
},
isAllowedDate: function isAllowedDate(value) {
var disabledDate = this.disabledDate;
var disabledTime = this.disabledTime;
return (0, _index.isAllowedDate)(value, disabledDate, disabledTime);
}
}
};
exports['default'] = CalendarMixin;
/***/ }),
/***/ "0e42":
/***/ (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 _propsUtil = __webpack_require__("73c8");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var ROW = 4;
var COL = 3;
function noop() {}
function goYear(direction) {
var value = this.sValue.clone();
value.add(direction, 'year');
this.setState({
sValue: value
});
}
function chooseYear(year) {
var value = this.sValue.clone();
value.year(year);
value.month(this.sValue.month());
this.sValue = value;
this.__emit('select', value);
}
exports['default'] = {
mixins: [_BaseMixin2['default']],
props: {
rootPrefixCls: _vueTypes2['default'].string,
value: _vueTypes2['default'].object,
defaultValue: _vueTypes2['default'].object,
locale: _vueTypes2['default'].object,
renderFooter: _vueTypes2['default'].func,
disabledDate: _vueTypes2['default'].func
},
data: function data() {
this.nextDecade = goYear.bind(this, 10);
this.previousDecade = goYear.bind(this, -10);
return {
sValue: this.value || this.defaultValue
};
},
watch: {
value: function value(val) {
this.sValue = val;
}
},
methods: {
years: function years() {
var value = this.sValue;
var currentYear = value.year();
var startYear = parseInt(currentYear / 10, 10) * 10;
var previousYear = startYear - 1;
var years = [];
var index = 0;
for (var rowIndex = 0; rowIndex < ROW; rowIndex++) {
years[rowIndex] = [];
for (var colIndex = 0; colIndex < COL; colIndex++) {
var year = previousYear + index;
var content = String(year);
years[rowIndex][colIndex] = {
content: content,
year: year,
title: content
};
index++;
}
}
return years;
}
},
render: function render() {
var _this = this;
var h = arguments[0];
var value = this.sValue,
locale = this.locale,
renderFooter = this.renderFooter,
$props = this.$props;
var decadePanelShow = (0, _propsUtil.getListeners)(this).decadePanelShow || noop;
var years = this.years();
var currentYear = value.year();
var startYear = parseInt(currentYear / 10, 10) * 10;
var endYear = startYear + 9;
var prefixCls = this.rootPrefixCls + '-year-panel';
var disabledDate = $props.disabledDate;
var yeasEls = years.map(function (row, index) {
var tds = row.map(function (yearData) {
var _classNameMap;
var disabled = false;
if (disabledDate) {
var testValue = value.clone();
testValue.year(yearData.year);
disabled = disabledDate(testValue);
}
var classNameMap = (_classNameMap = {}, (0, _defineProperty3['default'])(_classNameMap, prefixCls + '-cell', 1), (0, _defineProperty3['default'])(_classNameMap, prefixCls + '-cell-disabled', disabled), (0, _defineProperty3['default'])(_classNameMap, prefixCls + '-selected-cell', yearData.year === currentYear), (0, _defineProperty3['default'])(_classNameMap, prefixCls + '-last-decade-cell', yearData.year < startYear), (0, _defineProperty3['default'])(_classNameMap, prefixCls + '-next-decade-cell', yearData.year > endYear), _classNameMap);
var clickHandler = noop;
if (yearData.year < startYear) {
clickHandler = _this.previousDecade;
} else if (yearData.year > endYear) {
clickHandler = _this.nextDecade;
} else {
clickHandler = chooseYear.bind(_this, yearData.year);
}
return h(
'td',
{
attrs: {
role: 'gridcell',
title: yearData.title
},
key: yearData.content,
on: {
'click': disabled ? noop : clickHandler
},
'class': classNameMap
},
[h(
'a',
{ 'class': prefixCls + '-year' },
[yearData.content]
)]
);
});
return h(
'tr',
{ key: index, attrs: { role: 'row' }
},
[tds]
);
});
var footer = renderFooter && renderFooter('year');
return h(
'div',
{ 'class': prefixCls },
[h('div', [h(
'div',
{ 'class': prefixCls + '-header' },
[h('a', {
'class': prefixCls + '-prev-decade-btn',
attrs: { role: 'button',
title: locale.previousDecade
},
on: {
'click': this.previousDecade
}
}), h(
'a',
{
'class': prefixCls + '-decade-select',
attrs: { role: 'button',
title: locale.decadeSelect
},
on: {
'click': decadePanelShow
}
},
[h(
'span',
{ 'class': prefixCls + '-decade-select-content' },
[startYear, '-', endYear]
), h(
'span',
{ 'class': prefixCls + '-decade-select-arrow' },
['x']
)]
), h('a', {
'class': prefixCls + '-next-decade-btn',
attrs: { role: 'button',
title: locale.nextDecade
},
on: {
'click': this.nextDecade
}
})]
), h(
'div',
{ 'class': prefixCls + '-body' },
[h(
'table',
{ 'class': prefixCls + '-table', attrs: { cellSpacing: '0', role: 'grid' }
},
[h(
'tbody',
{ 'class': prefixCls + '-tbody' },
[yeasEls]
)]
)]
), footer && h(
'div',
{ 'class': prefixCls + '-footer' },
[footer]
)])]
);
}
};
/***/ }),
/***/ "1178":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _Event = __webpack_require__("e098");
var _Event2 = _interopRequireDefault(_Event);
var _raf = __webpack_require__("ab92");
var _raf2 = _interopRequireDefault(_raf);
var _configConsumerProps = __webpack_require__("bad7");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var styleForPesudo = void 0;
// Where el is the DOM element you'd like to test for visibility
function isHidden(element) {
if (false) {}
return !element || element.offsetParent === null;
}
function isNotGrey(color) {
// eslint-disable-next-line no-useless-escape
var match = (color || '').match(/rgba?\((\d*), (\d*), (\d*)(, [\.\d]*)?\)/);
if (match && match[1] && match[2] && match[3]) {
return !(match[1] === match[2] && match[2] === match[3]);
}
return true;
}
exports['default'] = {
name: 'Wave',
props: ['insertExtraNode'],
mounted: function mounted() {
var _this = this;
this.$nextTick(function () {
var node = _this.$el;
if (node.nodeType !== 1) {
return;
}
_this.instance = _this.bindAnimationEvent(node);
});
},
inject: {
configProvider: { 'default': function _default() {
return _configConsumerProps.ConfigConsumerProps;
} }
},
beforeDestroy: function beforeDestroy() {
if (this.instance) {
this.instance.cancel();
}
if (this.clickWaveTimeoutId) {
clearTimeout(this.clickWaveTimeoutId);
}
this.destroy = true;
},
methods: {
onClick: function onClick(node, waveColor) {
if (!node || isHidden(node) || node.className.indexOf('-leave') >= 0) {
return;
}
var insertExtraNode = this.$props.insertExtraNode;
this.extraNode = document.createElement('div');
var extraNode = this.extraNode;
extraNode.className = 'ant-click-animating-node';
var attributeName = this.getAttributeName();
node.removeAttribute(attributeName);
node.setAttribute(attributeName, 'true');
// Not white or transparent or grey
styleForPesudo = styleForPesudo || document.createElement('style');
if (waveColor && waveColor !== '#ffffff' && waveColor !== 'rgb(255, 255, 255)' && isNotGrey(waveColor) && !/rgba\(\d*, \d*, \d*, 0\)/.test(waveColor) && // any transparent rgba color
waveColor !== 'transparent') {
// Add nonce if CSP exist
if (this.csp && this.csp.nonce) {
styleForPesudo.nonce = this.csp.nonce;
}
extraNode.style.borderColor = waveColor;
styleForPesudo.innerHTML = '\n [ant-click-animating-without-extra-node=\'true\']::after, .ant-click-animating-node {\n --antd-wave-shadow-color: ' + waveColor + ';\n }';
if (!document.body.contains(styleForPesudo)) {
document.body.appendChild(styleForPesudo);
}
}
if (insertExtraNode) {
node.appendChild(extraNode);
}
_Event2['default'].addStartEventListener(node, this.onTransitionStart);
_Event2['default'].addEndEventListener(node, this.onTransitionEnd);
},
onTransitionStart: function onTransitionStart(e) {
if (this.destroy) return;
var node = this.$el;
if (!e || e.target !== node) {
return;
}
if (!this.animationStart) {
this.resetEffect(node);
}
},
onTransitionEnd: function onTransitionEnd(e) {
if (!e || e.animationName !== 'fadeEffect') {
return;
}
this.resetEffect(e.target);
},
getAttributeName: function getAttributeName() {
var insertExtraNode = this.$props.insertExtraNode;
return insertExtraNode ? 'ant-click-animating' : 'ant-click-animating-without-extra-node';
},
bindAnimationEvent: function bindAnimationEvent(node) {
var _this2 = this;
if (!node || !node.getAttribute || node.getAttribute('disabled') || node.className.indexOf('disabled') >= 0) {
return;
}
var onClick = function onClick(e) {
// Fix radio button click twice
if (e.target.tagName === 'INPUT' || isHidden(e.target)) {
return;
}
_this2.resetEffect(node);
// Get wave color from target
var waveColor = getComputedStyle(node).getPropertyValue('border-top-color') || // Firefox Compatible
getComputedStyle(node).getPropertyValue('border-color') || getComputedStyle(node).getPropertyValue('background-color');
_this2.clickWaveTimeoutId = window.setTimeout(function () {
return _this2.onClick(node, waveColor);
}, 0);
_raf2['default'].cancel(_this2.animationStartId);
_this2.animationStart = true;
// Render to trigger transition event cost 3 frames. Let's delay 10 frames to reset this.
_this2.animationStartId = (0, _raf2['default'])(function () {
_this2.animationStart = false;
}, 10);
};
node.addEventListener('click', onClick, true);
return {
cancel: function cancel() {
node.removeEventListener('click', onClick, true);
}
};
},
resetEffect: function resetEffect(node) {
if (!node || node === this.extraNode || !(node instanceof Element)) {
return;
}
var insertExtraNode = this.$props.insertExtraNode;
var attributeName = this.getAttributeName();
node.setAttribute(attributeName, 'false'); // edge has bug on `removeAttribute` #14466
if (styleForPesudo) {
styleForPesudo.innerHTML = '';
}
if (insertExtraNode && this.extraNode && node.contains(this.extraNode)) {
node.removeChild(this.extraNode);
}
_Event2['default'].removeStartEventListener(node, this.onTransitionStart);
_Event2['default'].removeEndEventListener(node, this.onTransitionEnd);
}
},
render: function render() {
if (this.configProvider.csp) {
this.csp = this.configProvider.csp;
}
return this.$slots['default'] && this.$slots['default'][0];
}
};
/***/ }),
/***/ "11a8":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _defineProperty2 = __webpack_require__("6042");
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function noop() {}
exports["default"] = {
functional: true,
render: function render(h, context) {
var _className;
var props = context.props,
_context$listeners = context.listeners,
listeners = _context$listeners === undefined ? {} : _context$listeners;
var prefixCls = props.prefixCls,
locale = props.locale,
showTimePicker = props.showTimePicker,
timePickerDisabled = props.timePickerDisabled;
var _listeners$closeTimeP = listeners.closeTimePicker,
closeTimePicker = _listeners$closeTimeP === undefined ? noop : _listeners$closeTimeP,
_listeners$openTimePi = listeners.openTimePicker,
openTimePicker = _listeners$openTimePi === undefined ? noop : _listeners$openTimePi;
var className = (_className = {}, (0, _defineProperty3["default"])(_className, prefixCls + "-time-picker-btn", true), (0, _defineProperty3["default"])(_className, prefixCls + "-time-picker-btn-disabled", timePickerDisabled), _className);
var onClick = noop;
if (!timePickerDisabled) {
onClick = showTimePicker ? closeTimePicker : openTimePicker;
}
return h(
"a",
{ "class": className, attrs: { role: "button" },
on: {
"click": onClick
}
},
[showTimePicker ? locale.dateSelect : locale.timeSelect]
);
}
};
/***/ }),
/***/ "1e31":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = __webpack_require__("41b2");
var _extends3 = _interopRequireDefault(_extends2);
var _moment = __webpack_require__("c1df");
var moment = _interopRequireWildcard(_moment);
var _vcCalendar = __webpack_require__("5ea9");
var _vcCalendar2 = _interopRequireDefault(_vcCalendar);
var _Picker = __webpack_require__("5b4e4");
var _Picker2 = _interopRequireDefault(_Picker);
var _icon = __webpack_require__("50f6");
var _icon2 = _interopRequireDefault(_icon);
var _configConsumerProps = __webpack_require__("bad7");
var _propsUtil = __webpack_require__("73c8");
var _BaseMixin = __webpack_require__("48bb");
var _BaseMixin2 = _interopRequireDefault(_BaseMixin);
var _interface = __webpack_require__("68aa");
var _interopDefault = __webpack_require__("8716");
var _interopDefault2 = _interopRequireDefault(_interopDefault);
var _InputIcon = __webpack_require__("5741");
var _InputIcon2 = _interopRequireDefault(_InputIcon);
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 }; }
function formatValue(value, format) {
return value && value.format(format) || '';
}
function noop() {}
exports['default'] = {
// static defaultProps = {
// format: 'YYYY-wo',
// allowClear: true,
// };
// private input: any;
name: 'AWeekPicker',
mixins: [_BaseMixin2['default']],
model: {
prop: 'value',
event: 'change'
},
props: (0, _propsUtil.initDefaultProps)((0, _interface.WeekPickerProps)(), {
format: 'gggg-wo',
allowClear: true
}),
inject: {
configProvider: { 'default': function _default() {
return _configConsumerProps.ConfigConsumerProps;
} }
},
data: function data() {
var value = this.value || this.defaultValue;
if (value && !(0, _interopDefault2['default'])(moment).isMoment(value)) {
throw new Error('The value/defaultValue of WeekPicker or MonthPicker must be ' + 'a moment object');
}
return {
_value: value,
_open: this.open
};
},
watch: {
value: function value(val) {
var state = { _value: val };
this.setState(state);
this.prevState = (0, _extends3['default'])({}, this.$data, state);
},
open: function open(val) {
var state = { _open: val };
this.setState(state);
this.prevState = (0, _extends3['default'])({}, this.$data, state);
},
_open: function _open(val, oldVal) {
var _this = this;
this.$nextTick(function () {
if (!(0, _propsUtil.hasProp)(_this, 'open') && oldVal && !val) {
_this.focus();
}
});
}
},
mounted: function mounted() {
this.prevState = (0, _extends3['default'])({}, this.$data);
},
updated: function updated() {
var _this2 = this;
this.$nextTick(function () {
if (!(0, _propsUtil.hasProp)(_this2, 'open') && _this2.prevState._open && !_this2._open) {
_this2.focus();
}
});
},
methods: {
weekDateRender: function weekDateRender(current) {
var h = this.$createElement;
var selectedValue = this.$data._value;
var prefixCls = this._prefixCls,
$scopedSlots = this.$scopedSlots;
var dateRender = this.dateRender || $scopedSlots.dateRender;
var dateNode = dateRender ? dateRender(current) : current.date();
if (selectedValue && current.year() === selectedValue.year() && current.week() === selectedValue.week()) {
return h(
'div',
{ 'class': prefixCls + '-selected-day' },
[h(
'div',
{ 'class': prefixCls + '-date' },
[dateNode]
)]
);
}
return h(
'div',
{ 'class': prefixCls + '-date' },
[dateNode]
);
},
handleChange: function handleChange(value) {
if (!(0, _propsUtil.hasProp)(this, 'value')) {
this.setState({ _value: value });
}
this.$emit('change', value, formatValue(value, this.format));
},
handleOpenChange: function handleOpenChange(open) {
if (!(0, _propsUtil.hasProp)(this, 'open')) {
this.setState({ _open: open });
}
this.$emit('openChange', open);
},
clearSelection: function clearSelection(e) {
e.preventDefault();
e.stopPropagation();
this.handleChange(null);
},
focus: function focus() {
this.$refs.input.focus();
},
blur: function blur() {
this.$refs.input.blur();
},
renderFooter: function renderFooter() {
var h = this.$createElement;
var prefixCls = this._prefixCls,
$scopedSlots = this.$scopedSlots;
var renderExtraFooter = this.renderExtraFooter || $scopedSlots.renderExtraFooter;
return renderExtraFooter ? h(
'div',
{ 'class': prefixCls + '-footer-extra' },
[renderExtraFooter.apply(undefined, arguments)]
) : null;
}
},
render: function render() {
var h = arguments[0];
var props = (0, _propsUtil.getOptionProps)(this);
var suffixIcon = (0, _propsUtil.getComponentFromProp)(this, 'suffixIcon');
suffixIcon = Array.isArray(suffixIcon) ? suffixIcon[0] : suffixIcon;
var customizePrefixCls = this.prefixCls,
disabled = this.disabled,
pickerClass = this.pickerClass,
popupStyle = this.popupStyle,
pickerInputClass = this.pickerInputClass,
format = this.format,
allowClear = this.allowClear,
locale = this.locale,
localeCode = this.localeCode,
disabledDate = this.disabledDate,
defaultPickerValue = this.defaultPickerValue,
$data = this.$data,
$scopedSlots = this.$scopedSlots;
var listeners = (0, _propsUtil.getListeners)(this);
var getPrefixCls = this.configProvider.getPrefixCls;
var prefixCls = getPrefixCls('calendar', customizePrefixCls);
this._prefixCls = prefixCls;
var pickerValue = $data._value,
open = $data._open;
var _listeners$focus = listeners.focus,
focus = _listeners$focus === undefined ? noop : _listeners$focus,
_listeners$blur = listeners.blur,
blur = _listeners$blur === undefined ? noop : _listeners$blur;
if (pickerValue && localeCode) {
pickerValue.locale(localeCode);
}
var placeholder = (0, _propsUtil.hasProp)(this, 'placeholder') ? this.placeholder : locale.lang.placeholder;
var weekDateRender = this.dateRender || $scopedSlots.dateRender || this.weekDateRender;
var calendar = h(_vcCalendar2['default'], {
attrs: {
showWeekNumber: true,
dateRender: weekDateRender,
prefixCls: prefixCls,
format: format,
locale: locale.lang,
showDateInput: false,
showToday: false,
disabledDate: disabledDate,
renderFooter: this.renderFooter,
defaultValue: defaultPickerValue
}
});
var clearIcon = !disabled && allowClear && $data._value ? h(_icon2['default'], {
attrs: {
type: 'close-circle',
theme: 'filled'
},
'class': prefixCls + '-picker-clear',
on: {
'click': this.clearSelection
}
}) : null;
var inputIcon = h(_InputIcon2['default'], {
attrs: { suffixIcon: suffixIcon, prefixCls: prefixCls }
});
var input = function input(_ref) {
var value = _ref.value;
return h(
'span',
{ style: { display: 'inline-block', width: '100%' } },
[h('input', {
ref: 'input',
attrs: { disabled: disabled,
readOnly: true,
placeholder: placeholder
},
domProps: {
'value': value && value.format(format) || ''
},
'class': pickerInputClass,
on: {
'focus': focus,
'blur': blur
}
}), clearIcon, inputIcon]
);
};
var vcDatePickerProps = {
props: (0, _extends3['default'])({}, props, {
calendar: calendar,
prefixCls: prefixCls + '-picker-container',
value: pickerValue,
open: open
}),
on: (0, _extends3['default'])({}, listeners, {
change: this.handleChange,
openChange: this.handleOpenChange
}),
style: popupStyle,
scopedSlots: (0, _extends3['default'])({ 'default': input }, $scopedSlots)
};
return h(
'span',
{ 'class': pickerClass },
[h(_Picker2['default'], vcDatePickerProps)]
);
}
};
/***/ }),
/***/ "1edc":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = __webpack_require__("41b2");
var _extends3 = _interopRequireDefault(_extends2);
var _defineProperty2 = __webpack_require__("6042");
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
exports['default'] = createPicker;
var _moment = __webpack_require__("c1df");
var moment = _interopRequireWildcard(_moment);
var _omit = __webpack_require__("3eea");
var _omit2 = _interopRequireDefault(_omit);
var _MonthCalendar = __webpack_require__("b782");
var _MonthCalendar2 = _interopRequireDefault(_MonthCalendar);
var _Picker = __webpack_require__("5b4e4");
var _Picker2 = _interopRequireDefault(_Picker);
var _classnames = __webpack_require__("4d26");
var _classnames2 = _interopRequireDefault(_classnames);
var _icon = __webpack_require__("50f6");
var _icon2 = _interopRequireDefault(_icon);
var _configConsumerProps = __webpack_require__("bad7");
var _interopDefault = __webpack_require__("8716");
var _interopDefault2 = _interopRequireDefault(_interopDefault);
var _BaseMixin = __webpack_require__("48bb");
var _BaseMixin2 = _interopRequireDefault(_BaseMixin);
var _propsUtil = __webpack_require__("73c8");
var _vnode = __webpack_require__("d2f9");
var _utils = __webpack_require__("0025");
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 }; }
// export const PickerProps = {
// value?: moment.Moment;
// prefixCls: string;
// }
function noop() {}
function createPicker(TheCalendar, props) {
return {
props: (0, _propsUtil.initDefaultProps)(props, {
allowClear: true,
showToday: true
}),
mixins: [_BaseMixin2['default']],
model: {
prop: 'value',
event: 'change'
},
inject: {
configProvider: { 'default': function _default() {
return _configConsumerProps.ConfigConsumerProps;
} }
},
data: function data() {
var value = this.value || this.defaultValue;
if (value && !(0, _interopDefault2['default'])(moment).isMoment(value)) {
throw new Error('The value/defaultValue of DatePicker or MonthPicker must be ' + 'a moment object');
}
return {
sValue: value,
showDate: value,
_open: !!this.open
};
},
watch: {
open: function open(val) {
var props = (0, _propsUtil.getOptionProps)(this);
var state = {};
state._open = val;
if ('value' in props && !val && props.value !== this.showDate) {
state.showDate = props.value;
}
this.setState(state);
},
value: function value(val) {
var state = {};
state.sValue = val;
if (val !== this.sValue) {
state.showDate = val;
}
this.setState(state);
},
_open: function _open(val, oldVal) {
var _this = this;
this.$nextTick(function () {
if (!(0, _propsUtil.hasProp)(_this, 'open') && oldVal && !val) {
_this.focus();
}
});
}
},
methods: {
clearSelection: function clearSelection(e) {
e.preventDefault();
e.stopPropagation();
this.handleChange(null);
},
handleChange: function handleChange(value) {
if (!(0, _propsUtil.hasProp)(this, 'value')) {
this.setState({
sValue: value,
showDate: value
});
}
this.$emit('change', value, (0, _utils.formatDate)(value, this.format));
},
handleCalendarChange: function handleCalendarChange(value) {
this.setState({ showDate: value });
},
handleOpenChange: function handleOpenChange(open) {
var props = (0, _propsUtil.getOptionProps)(this);
if (!('open' in props)) {
this.setState({ _open: open });
}
this.$emit('openChange', open);
},
focus: function focus() {
this.$refs.input.focus();
},
blur: function blur() {
this.$refs.input.blur();
},
renderFooter: function renderFooter() {
var h = this.$createElement;
var $scopedSlots = this.$scopedSlots,
$slots = this.$slots,
prefixCls = this._prefixCls;
var renderExtraFooter = this.renderExtraFooter || $scopedSlots.renderExtraFooter || $slots.renderExtraFooter;
return renderExtraFooter ? h(
'div',
{ 'class': prefixCls + '-footer-extra' },
[typeof renderExtraFooter === 'function' ? renderExtraFooter.apply(undefined, arguments) : renderExtraFooter]
) : null;
},
onMouseEnter: function onMouseEnter(e) {
this.$emit('mouseenter', e);
},
onMouseLeave: function onMouseLeave(e) {
this.$emit('mouseleave', e);
}
},
render: function render() {
var _classNames,
_this2 = this;
var h = arguments[0];
var $scopedSlots = this.$scopedSlots;
var _$data = this.$data,
value = _$data.sValue,
showDate = _$data.showDate,
open = _$data._open;
var suffixIcon = (0, _propsUtil.getComponentFromProp)(this, 'suffixIcon');
suffixIcon = Array.isArray(suffixIcon) ? suffixIcon[0] : suffixIcon;
var listeners = (0, _propsUtil.getListeners)(this);
var _listeners$panelChang = listeners.panelChange,
panelChange = _listeners$panelChang === undefined ? noop : _listeners$panelChang,
_listeners$focus = listeners.focus,
focus = _listeners$focus === undefined ? noop : _listeners$focus,
_listeners$blur = listeners.blur,
blur = _listeners$blur === undefined ? noop : _listeners$blur,
_listeners$ok = listeners.ok,
ok = _listeners$ok === undefined ? noop : _listeners$ok;
var props = (0, _propsUtil.getOptionProps)(this);
var customizePrefixCls = props.prefixCls,
locale = props.locale,
localeCode = props.localeCode,
inputReadOnly = props.inputReadOnly;
var getPrefixCls = this.configProvider.getPrefixCls;
var prefixCls = getPrefixCls('calendar', customizePrefixCls);
this._prefixCls = prefixCls;
var dateRender = props.dateRender || $scopedSlots.dateRender;
var monthCellContentRender = props.monthCellContentRender || $scopedSlots.monthCellContentRender;
var placeholder = 'placeholder' in props ? props.placeholder : locale.lang.placeholder;
var disabledTime = props.showTime ? props.disabledTime : null;
var calendarClassName = (0, _classnames2['default'])((_classNames = {}, (0, _defineProperty3['default'])(_classNames, prefixCls + '-time', props.showTime), (0, _defineProperty3['default'])(_classNames, prefixCls + '-month', _MonthCalendar2['default'] === TheCalendar), _classNames));
if (value && localeCode) {
value.locale(localeCode);
}
var pickerProps = { props: {}, on: {} };
var calendarProps = { props: {}, on: {} };
var pickerStyle = {};
if (props.showTime) {
// fix https://github.com/ant-design/ant-design/issues/1902
calendarProps.on.select = this.handleChange;
pickerStyle.minWidth = '195px';
} else {
pickerProps.on.change = this.handleChange;
}
if ('mode' in props) {
calendarProps.props.mode = props.mode;
}
var theCalendarProps = (0, _propsUtil.mergeProps)(calendarProps, {
props: {
disabledDate: props.disabledDate,
disabledTime: disabledTime,
locale: locale.lang,
timePicker: props.timePicker,
defaultValue: props.defaultPickerValue || (0, _interopDefault2['default'])(moment)(),
dateInputPlaceholder: placeholder,
prefixCls: prefixCls,
dateRender: dateRender,
format: props.format,
showToday: props.showToday,
monthCellContentRender: monthCellContentRender,
renderFooter: this.renderFooter,
value: showDate,
inputReadOnly: inputReadOnly
},
on: {
ok: ok,
panelChange: panelChange,
change: this.handleCalendarChange
},
'class': calendarClassName,
scopedSlots: $scopedSlots
});
var calendar = h(TheCalendar, theCalendarProps);
var clearIcon = !props.disabled && props.allowClear && value ? h(_icon2['default'], {
attrs: {
type: 'close-circle',
theme: 'filled'
},
'class': prefixCls + '-picker-clear',
on: {
'click': this.clearSelection
}
}) : null;
var inputIcon = suffixIcon && ((0, _propsUtil.isValidElement)(suffixIcon) ? (0, _vnode.cloneElement)(suffixIcon, {
'class': prefixCls + '-picker-icon'
}) : h(
'span',
{ 'class': prefixCls + '-picker-icon' },
[suffixIcon]
)) || h(_icon2['default'], {
attrs: { type: 'calendar' },
'class': prefixCls + '-picker-icon' });
var input = function input(_ref) {
var inputValue = _ref.value;
return h('div', [h('input', {
ref: 'input',
attrs: { disabled: props.disabled,
readOnly: true,
placeholder: placeholder,
tabIndex: props.tabIndex,
name: _this2.name
},
on: {
'focus': focus,
'blur': blur
},
domProps: {
'value': (0, _utils.formatDate)(inputValue, _this2.format)
},
'class': props.pickerInputClass }), clearIcon, inputIcon]);
};
var vcDatePickerProps = {
props: (0, _extends3['default'])({}, props, pickerProps.props, {
calendar: calendar,
value: value,
prefixCls: prefixCls + '-picker-container'
}),
on: (0, _extends3['default'])({}, (0, _omit2['default'])(listeners, 'change'), pickerProps.on, {
open: open,
onOpenChange: this.handleOpenChange
}),
style: props.popupStyle,
scopedSlots: (0, _extends3['default'])({ 'default': input }, $scopedSlots)
};
return h(
'span',
{
'class': props.pickerClass,
style: pickerStyle
// tabIndex={props.disabled ? -1 : 0}
// onFocus={focus}
// onBlur={blur}
, on: {
'mouseenter': this.onMouseEnter,
'mouseleave': this.onMouseLeave
}
},
[h(_Picker2['default'], vcDatePickerProps)]
);
}
};
}
/***/ }),
/***/ "2e76":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _defineProperty2 = __webpack_require__("6042");
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _babelHelperVueJsxMergeProps = __webpack_require__("92fa");
var _babelHelperVueJsxMergeProps2 = _interopRequireDefault(_babelHelperVueJsxMergeProps);
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 _TodayButton = __webpack_require__("f90e");
var _TodayButton2 = _interopRequireDefault(_TodayButton);
var _OkButton = __webpack_require__("a41b");
var _OkButton2 = _interopRequireDefault(_OkButton);
var _TimePickerButton = __webpack_require__("11a8");
var _TimePickerButton2 = _interopRequireDefault(_TimePickerButton);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var CalendarFooter = {
mixins: [_BaseMixin2['default']],
props: {
prefixCls: _vueTypes2['default'].string,
showDateInput: _vueTypes2['default'].bool,
disabledTime: _vueTypes2['default'].any,
timePicker: _vueTypes2['default'].any,
selectedValue: _vueTypes2['default'].any,
showOk: _vueTypes2['default'].bool,
// onSelect: PropTypes.func,
value: _vueTypes2['default'].object,
renderFooter: _vueTypes2['default'].func,
defaultValue: _vueTypes2['default'].object,
locale: _vueTypes2['default'].object,
showToday: _vueTypes2['default'].bool,
disabledDate: _vueTypes2['default'].func,
showTimePicker: _vueTypes2['default'].bool,
okDisabled: _vueTypes2['default'].bool,
mode: _vueTypes2['default'].string
},
methods: {
onSelect: function onSelect(value) {
this.__emit('select', value);
},
getRootDOMNode: function getRootDOMNode() {
return this.$el;
}
},
render: function render() {
var h = arguments[0];
var props = (0, _propsUtil.getOptionProps)(this);
var value = props.value,
prefixCls = props.prefixCls,
showOk = props.showOk,
timePicker = props.timePicker,
renderFooter = props.renderFooter,
showToday = props.showToday,
mode = props.mode;
var footerEl = null;
var extraFooter = renderFooter && renderFooter(mode);
if (showToday || timePicker || extraFooter) {
var _cls;
var btnProps = {
props: (0, _extends3['default'])({}, props, {
value: value
}),
on: (0, _propsUtil.getListeners)(this)
};
var nowEl = null;
if (showToday) {
nowEl = h(_TodayButton2['default'], (0, _babelHelperVueJsxMergeProps2['default'])([{ key: 'todayButton' }, btnProps]));
}
delete btnProps.props.value;
var okBtn = null;
if (showOk === true || showOk !== false && !!timePicker) {
okBtn = h(_OkButton2['default'], (0, _babelHelperVueJsxMergeProps2['default'])([{ key: 'okButton' }, btnProps]));
}
var timePickerBtn = null;
if (timePicker) {
timePickerBtn = h(_TimePickerButton2['default'], (0, _babelHelperVueJsxMergeProps2['default'])([{ key: 'timePickerButton' }, btnProps]));
}
var footerBtn = void 0;
if (nowEl || timePickerBtn || okBtn || extraFooter) {
footerBtn = h(
'span',
{ 'class': prefixCls + '-footer-btn' },
[extraFooter, nowEl, timePickerBtn, okBtn]
);
}
var cls = (_cls = {}, (0, _defineProperty3['default'])(_cls, prefixCls + '-footer', true), (0, _defineProperty3['default'])(_cls, prefixCls + '-footer-show-ok', !!okBtn), _cls);
footerEl = h(
'div',
{ 'class': cls },
[footerBtn]
);
}
return footerEl;
}
};
exports['default'] = CalendarFooter;
/***/ }),
/***/ "3ea4":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var _babelHelperVueJsxMergeProps = __webpack_require__("92fa");
var _babelHelperVueJsxMergeProps2 = _interopRequireDefault(_babelHelperVueJsxMergeProps);
var _vueTypes = __webpack_require__("7b44");
var _vueTypes2 = _interopRequireDefault(_vueTypes);
var _BaseMixin = __webpack_require__("48bb");
var _BaseMixin2 = _interopRequireDefault(_BaseMixin);
var _propsUtil = __webpack_require__("73c8");
var _moment = __webpack_require__("c1df");
var _moment2 = _interopRequireDefault(_moment);
var _util = __webpack_require__("c021");
var _KeyCode = __webpack_require__("af09");
var _KeyCode2 = _interopRequireDefault(_KeyCode);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var cachedSelectionStart = void 0;
var cachedSelectionEnd = void 0;
var dateInputInstance = void 0;
var DateInput = {
mixins: [_BaseMixin2['default']],
props: {
prefixCls: _vueTypes2['default'].string,
timePicker: _vueTypes2['default'].object,
value: _vueTypes2['default'].object,
disabledTime: _vueTypes2['default'].any,
format: _vueTypes2['default'].oneOfType([_vueTypes2['default'].string, _vueTypes2['default'].arrayOf(_vueTypes2['default'].string), _vueTypes2['default'].func]),
locale: _vueTypes2['default'].object,
disabledDate: _vueTypes2['default'].func,
// onChange: PropTypes.func,
// onClear: PropTypes.func,
placeholder: _vueTypes2['default'].string,
// onSelect: PropTypes.func,
selectedValue: _vueTypes2['default'].object,
clearIcon: _vueTypes2['default'].any,
inputMode: _vueTypes2['default'].string,
inputReadOnly: _vueTypes2['default'].bool
},
data: function data() {
var selectedValue = this.selectedValue;
return {
str: (0, _util.formatDate)(selectedValue, this.format),
invalid: false,
hasFocus: false
};
},
watch: {
selectedValue: function selectedValue() {
this.setState();
},
format: function format() {
this.setState();
}
},
updated: function updated() {
var _this = this;
this.$nextTick(function () {
if (dateInputInstance && _this.$data.hasFocus && !_this.invalid && !(cachedSelectionStart === 0 && cachedSelectionEnd === 0)) {
dateInputInstance.setSelectionRange(cachedSelectionStart, cachedSelectionEnd);
}
});
},
getInstance: function getInstance() {
return dateInputInstance;
},
methods: {
getDerivedStateFromProps: function getDerivedStateFromProps(nextProps, state) {
var newState = {};
if (dateInputInstance) {
cachedSelectionStart = dateInputInstance.selectionStart;
cachedSelectionEnd = dateInputInstance.selectionEnd;
}
// when popup show, click body will call this, bug!
var selectedValue = nextProps.selectedValue;
if (!state.hasFocus) {
newState = {
str: (0, _util.formatDate)(selectedValue, this.format),
invalid: false
};
}
return newState;
},
onClear: function onClear() {
this.setState({
str: ''
});
this.__emit('clear', null);
},
onInputChange: function onInputChange(e) {
var _e$target = e.target,
str = _e$target.value,
composing = _e$target.composing;
var _str = this.str,
oldStr = _str === undefined ? '' : _str;
if (e.isComposing || composing || oldStr === str) return;
var _$props = this.$props,
disabledDate = _$props.disabledDate,
format = _$props.format,
selectedValue = _$props.selectedValue;
// 没有内容,合法并直接退出
if (!str) {
this.__emit('change', null);
this.setState({
invalid: false,
str: str
});
return;
}
// 不合法直接退出
var parsed = (0, _moment2['default'])(str, format, true);
if (!parsed.isValid()) {
this.setState({
invalid: true,
str: str
});
return;
}
var value = this.value.clone();
value.year(parsed.year()).month(parsed.month()).date(parsed.date()).hour(parsed.hour()).minute(parsed.minute()).second(parsed.second());
if (!value || disabledDate && disabledDate(value)) {
this.setState({
invalid: true,
str: str
});
return;
}
if (selectedValue !== value || selectedValue && value && !selectedValue.isSame(value)) {
this.setState({
invalid: false,
str: str
});
this.__emit('change', value);
}
},
onFocus: function onFocus() {
this.setState({ hasFocus: true });
},
onBlur: function onBlur() {
this.setState(function (prevState, prevProps) {
return {
hasFocus: false,
str: (0, _util.formatDate)(prevProps.value, prevProps.format)
};
});
},
onKeyDown: function onKeyDown(event) {
var keyCode = event.keyCode;
var _$props2 = this.$props,
value = _$props2.value,
disabledDate = _$props2.disabledDate;
if (keyCode === _KeyCode2['default'].ENTER) {
var validateDate = !disabledDate || !disabledDate(value);
if (validateDate) {
this.__emit('select', value.clone());
}
event.preventDefault();
}
},
getRootDOMNode: function getRootDOMNode() {
return this.$el;
},
focus: function focus() {
if (dateInputInstance) {
dateInputInstance.focus();
}
},
saveDateInput: function saveDateInput(dateInput) {
dateInputInstance = dateInput;
}
},
render: function render() {
var h = arguments[0];
var invalid = this.invalid,
str = this.str,
locale = this.locale,
prefixCls = this.prefixCls,
placeholder = this.placeholder,
disabled = this.disabled,
showClear = this.showClear,
inputMode = this.inputMode,
inputReadOnly = this.inputReadOnly;
var clearIcon = (0, _propsUtil.getComponentFromProp)(this, 'clearIcon');
var invalidClass = invalid ? prefixCls + '-input-invalid' : '';
return h(
'div',
{ 'class': prefixCls + '-input-wrap' },
[h(
'div',
{ 'class': prefixCls + '-date-input-wrap' },
[h('input', (0, _babelHelperVueJsxMergeProps2['default'])([{
directives: [{
name: 'ant-ref',
value: this.saveDateInput
}, {
name: 'ant-input'
}]
}, {
'class': prefixCls + '-input ' + invalidClass,
domProps: {
'value': str
},
attrs: {
disabled: disabled,
placeholder: placeholder,
inputMode: inputMode,
readOnly: inputReadOnly
},
on: {
'input': this.onInputChange,
'keydown': this.onKeyDown,
'focus': this.onFocus,
'blur': this.onBlur