@fe6/water-pro
Version:
An enterprise-class UI design language and Vue-based implementation
176 lines (149 loc) • 5.32 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _vue = require("vue");
var _moment = _interopRequireDefault(require("moment"));
var _vueTypes = _interopRequireDefault(require("../../_util/vue-types"));
var _BaseMixin = _interopRequireDefault(require("../../_util/BaseMixin"));
var _KeyCode = _interopRequireDefault(require("../../_util/KeyCode"));
var _CalendarHeader = _interopRequireDefault(require("./calendar/CalendarHeader"));
var _CalendarFooter = _interopRequireDefault(require("./calendar/CalendarFooter"));
var _CalendarMixin = _interopRequireDefault(require("./mixin/CalendarMixin"));
var _CommonMixin = _interopRequireDefault(require("./mixin/CommonMixin"));
var _zh_CN = _interopRequireDefault(require("./locale/zh_CN"));
var _util = require("./util");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var YearCalendar = (0, _vue.defineComponent)({
name: 'YearCalendar',
mixins: [_BaseMixin.default, _CommonMixin.default, _CalendarMixin.default],
inheritAttrs: false,
props: {
locale: _vueTypes.default.object.def(_zh_CN.default),
format: _vueTypes.default.string,
visible: _vueTypes.default.looseBool.def(true),
prefixCls: _vueTypes.default.string.def('rc-calendar'),
yearCellRender: _vueTypes.default.func,
value: _vueTypes.default.object,
defaultValue: _vueTypes.default.object,
selectedValue: _vueTypes.default.object,
defaultSelectedValue: _vueTypes.default.object,
disabledDate: _vueTypes.default.func,
yearCellContentRender: _vueTypes.default.func,
renderFooter: _vueTypes.default.func.def(function () {
return null;
}),
renderSidebar: _vueTypes.default.func.def(function () {
return null;
}),
type: {
type: String,
default: ''
} // 'multiple'
},
data: function data() {
var props = this.$props;
var theNow = (0, _moment.default)();
var theValue = (0, _util.getMomentObjectIfValid)(props.value) || (0, _util.getMomentObjectIfValid)(props.defaultValue) || (this.type === 'multiple' ? [theNow] : theNow);
return {
mode: 'year',
sValue: theValue,
sSelectedValue: props.selectedValue || props.defaultSelectedValue
};
},
methods: {
onKeyDown: function onKeyDown(event) {
var keyCode = event.keyCode;
var ctrlKey = event.ctrlKey || event.metaKey;
var stateValue = this.sValue;
var disabledDate = this.disabledDate;
var value = stateValue;
switch (keyCode) {
case _KeyCode.default.DOWN:
value = stateValue.clone();
value.add(3, 'years');
break;
case _KeyCode.default.UP:
value = stateValue.clone();
value.add(-3, 'years');
break;
case _KeyCode.default.LEFT:
value = stateValue.clone();
if (ctrlKey) {
value.add(-1, 'decade');
} else {
value.add(-1, 'years');
}
break;
case _KeyCode.default.RIGHT:
value = stateValue.clone();
if (ctrlKey) {
value.add(1, 'decade');
} else {
value.add(1, 'years');
}
break;
case _KeyCode.default.ENTER:
if (!disabledDate || !disabledDate(stateValue)) {
this.onSelect(stateValue);
}
event.preventDefault();
return 1;
default:
return undefined;
}
if (value !== stateValue) {
this.setValue(value);
event.preventDefault();
return 1;
}
},
handlePanelChange: function handlePanelChange(_, mode) {
if (mode !== 'date') {
this.setState({
mode: mode || 'year'
});
}
}
},
render: function render() {
var mode = this.mode,
value = this.sValue,
props = this.$props,
$slots = this.$slots;
var prefixCls = props.prefixCls,
locale = props.locale,
disabledDate = props.disabledDate;
var yearCellRender = this.yearCellRender || $slots.yearCellRender;
var yearCellContentRender = this.yearCellContentRender || $slots.yearCellContentRender;
var renderFooter = this.renderFooter || $slots.renderFooter;
var children = (0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-year-calendar-content")
}, [(0, _vue.createVNode)("div", {
"class": "".concat(prefixCls, "-year-header-wrap")
}, [(0, _vue.createVNode)(_CalendarHeader.default, {
"prefixCls": prefixCls,
"mode": mode,
"value": value,
"locale": locale,
"type": this.type,
"selectType": "year",
"disabledYear": disabledDate,
"yearCellRender": yearCellRender,
"yearCellContentRender": yearCellContentRender,
"onYearSelect": this.onSelect,
"onValueChange": this.setValue,
"onPanelChange": this.handlePanelChange
}, null)]), (0, _vue.createVNode)(_CalendarFooter.default, {
"prefixCls": prefixCls,
"renderFooter": renderFooter
}, null)]);
return this.renderRoot({
class: "".concat(props.prefixCls, "-year-calendar"),
children: children
});
}
});
var _default = YearCalendar;
exports.default = _default;