You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

114 lines
2.6 KiB

// Utils
import { createNamespace } from '../../utils';
import { stringToDate, dateToString } from '../utils/time-helper'; // Components
import Popup from '../../popup';
import DateTimePicker from '../../datetime-picker';
import Field from '../../field';
var namespace = createNamespace('sku-datetime-field');
var createComponent = namespace[0];
var t = namespace[2];
export default createComponent({
props: {
value: String,
label: String,
required: Boolean,
placeholder: String,
type: {
type: String,
default: 'date'
}
},
data: function data() {
return {
showDatePicker: false,
currentDate: this.type === 'time' ? '' : new Date(),
minDate: new Date(new Date().getFullYear() - 60, 0, 1)
};
},
watch: {
value: function value(val) {
switch (this.type) {
case 'time':
this.currentDate = val;
break;
case 'date':
case 'datetime':
this.currentDate = stringToDate(val) || new Date();
break;
}
}
},
computed: {
title: function title() {
return t("title." + this.type);
}
},
methods: {
onClick: function onClick() {
this.showDatePicker = true;
},
onConfirm: function onConfirm(val) {
var data = val;
if (this.type !== 'time') {
data = dateToString(val, this.type);
}
this.$emit('input', data);
this.showDatePicker = false;
},
onCancel: function onCancel() {
this.showDatePicker = false;
},
formatter: function formatter(type, val) {
var word = t("format." + type);
return "" + val + word;
}
},
render: function render() {
var _this = this;
var h = arguments[0];
return h(Field, {
"attrs": {
"readonly": true,
"is-link": true,
"center": true,
"value": this.value,
"label": this.label,
"required": this.required,
"placeholder": this.placeholder
},
"on": {
"click": this.onClick
}
}, [h(Popup, {
"attrs": {
"round": true,
"position": "bottom",
"getContainer": "body"
},
"slot": "extra",
"model": {
value: _this.showDatePicker,
callback: function callback($$v) {
_this.showDatePicker = $$v;
}
}
}, [h(DateTimePicker, {
"attrs": {
"type": this.type,
"title": this.title,
"value": this.currentDate,
"minDate": this.minDate,
"formatter": this.formatter
},
"on": {
"cancel": this.onCancel,
"confirm": this.onConfirm
}
})])]);
}
});