@fe6/water-pro
Version:
An enterprise-class UI design language and Vue-based implementation
71 lines (68 loc) • 2.09 kB
JavaScript
import { createVNode as _createVNode } from "vue";
import PropTypes from '../../../_util/vue-types';
import BaseMixin from '../../../_util/BaseMixin';
import { getComponent } from '../../../_util/props-util';
import { formatDate } from '../util';
var DateInput = {
name: 'DateInput',
inheritAttrs: false,
mixins: [BaseMixin],
props: {
prefixCls: PropTypes.string,
format: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string), PropTypes.func]),
locale: PropTypes.object,
selectedValue: PropTypes.object,
clearIcon: PropTypes.any,
showClear: PropTypes.looseBool,
multiplePanelHeaderRender: PropTypes.func
},
data: function data() {
var _this = this;
var selectedValue = this.selectedValue;
return {
str: selectedValue.map(function (sItem) {
return formatDate(sItem, _this.format);
})
};
},
watch: {
selectedValue: function selectedValue() {
var _this2 = this;
this.setState({
str: this.selectedValue.map(function (sItem) {
return formatDate(sItem, _this2.format);
})
});
},
format: function format() {
this.setState();
}
},
methods: {
onClear: function onClear() {
this.setState({
str: ''
});
this.__emit('clear', null);
}
},
render: function render() {
var locale = this.locale,
prefixCls = this.prefixCls,
showClear = this.showClear,
multiplePanelHeaderRender = this.multiplePanelHeaderRender;
var clearIcon = getComponent(this, 'clearIcon');
return _createVNode("div", {
"class": "".concat(prefixCls, "-input-wrap")
}, [_createVNode("div", {
"class": "".concat(prefixCls, "-date-input-wrap")
}, [multiplePanelHeaderRender(this.str, this.selectedValue)]), showClear ? _createVNode("a", {
"role": "button",
"title": locale.clear,
"onClick": this.onClear
}, [clearIcon || _createVNode("span", {
"class": "".concat(prefixCls, "-clear-btn")
}, null)]) : null]);
}
};
export default DateInput;