1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.default = void 0;
|
7 |
|
8 | var _vue = require("vue");
|
9 |
|
10 | var _moment = _interopRequireDefault(require("moment"));
|
11 |
|
12 | var _vcCalendar = _interopRequireDefault(require("../vc-calendar"));
|
13 |
|
14 | var _Picker = _interopRequireDefault(require("../vc-calendar/src/Picker"));
|
15 |
|
16 | var _CloseCircleFilled = _interopRequireDefault(require("@ant-design/icons-vue/CloseCircleFilled"));
|
17 |
|
18 | var _configProvider = require("../config-provider");
|
19 |
|
20 | var _propsUtil = require("../_util/props-util");
|
21 |
|
22 | var _classNames = _interopRequireDefault(require("../_util/classNames"));
|
23 |
|
24 | var _BaseMixin = _interopRequireDefault(require("../_util/BaseMixin"));
|
25 |
|
26 | var _props = require("./props");
|
27 |
|
28 | var _interopDefault = _interopRequireDefault(require("../_util/interopDefault"));
|
29 |
|
30 | var _InputIcon = _interopRequireDefault(require("./InputIcon"));
|
31 |
|
32 | var _util = require("../_util/util");
|
33 |
|
34 | var _initDefaultProps = _interopRequireDefault(require("../_util/props-util/initDefaultProps"));
|
35 |
|
36 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
37 |
|
38 | function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
|
39 |
|
40 | function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
41 |
|
42 | function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
43 |
|
44 | function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
45 |
|
46 | function _isSlot(s) {
|
47 | return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !(0, _vue.isVNode)(s);
|
48 | }
|
49 |
|
50 | function formatValue(value, format) {
|
51 | return value && value.format(format) || '';
|
52 | }
|
53 |
|
54 | function noop() {}
|
55 |
|
56 | var _default2 = (0, _vue.defineComponent)({
|
57 | name: 'AWeekPicker',
|
58 | mixins: [_BaseMixin.default],
|
59 | inheritAttrs: false,
|
60 | props: (0, _initDefaultProps.default)(_props.WeekPickerProps, {
|
61 | allowClear: true
|
62 | }),
|
63 | setup: function setup() {
|
64 | return {
|
65 | configProvider: (0, _vue.inject)('configProvider', _configProvider.defaultConfigProvider),
|
66 | prevState: {},
|
67 | input: undefined,
|
68 | sPrefixCls: undefined
|
69 | };
|
70 | },
|
71 | data: function data() {
|
72 | var value = this.value || this.defaultValue;
|
73 |
|
74 | if (value && !(0, _interopDefault.default)(_moment.default).isMoment(value)) {
|
75 | throw new Error('The value/defaultValue of WeekPicker or MonthPicker must be ' + 'a moment object');
|
76 | }
|
77 |
|
78 | return {
|
79 | _value: value,
|
80 | _open: this.open
|
81 | };
|
82 | },
|
83 | watch: {
|
84 | value: function value(val) {
|
85 | var state = {
|
86 | _value: val
|
87 | };
|
88 | this.setState(state);
|
89 | this.prevState = _extends(_extends({}, this.$data), state);
|
90 | },
|
91 | open: function open(val) {
|
92 | var state = {
|
93 | _open: val
|
94 | };
|
95 | this.setState(state);
|
96 | this.prevState = _extends(_extends({}, this.$data), state);
|
97 | },
|
98 | _open: function _open(val, oldVal) {
|
99 | var _this = this;
|
100 |
|
101 | (0, _vue.nextTick)(function () {
|
102 | if (!(0, _propsUtil.hasProp)(_this, 'open') && oldVal && !val) {
|
103 | _this.focus();
|
104 | }
|
105 | });
|
106 | }
|
107 | },
|
108 | mounted: function mounted() {
|
109 | this.prevState = _extends({}, this.$data);
|
110 | },
|
111 | updated: function updated() {
|
112 | var _this2 = this;
|
113 |
|
114 | (0, _vue.nextTick)(function () {
|
115 | if (!(0, _propsUtil.hasProp)(_this2, 'open') && _this2.prevState._open && !_this2._open) {
|
116 | _this2.focus();
|
117 | }
|
118 | });
|
119 | },
|
120 | methods: {
|
121 | saveInput: function saveInput(node) {
|
122 | this.input = node;
|
123 | },
|
124 | weekDateRender: function weekDateRender(_ref) {
|
125 | var current = _ref.current;
|
126 | var selectedValue = this.$data._value;
|
127 | var prefixCls = this.sPrefixCls,
|
128 | $slots = this.$slots;
|
129 | var dateRender = this.dateRender || $slots.dateRender;
|
130 | var dateNode = dateRender ? dateRender({
|
131 | current: current
|
132 | }) : current.date();
|
133 |
|
134 | if (selectedValue && current.year() === selectedValue.year() && current.week() === selectedValue.week()) {
|
135 | return (0, _vue.createVNode)("div", {
|
136 | "class": "".concat(prefixCls, "-selected-day")
|
137 | }, [(0, _vue.createVNode)("div", {
|
138 | "class": "".concat(prefixCls, "-date")
|
139 | }, _isSlot(dateNode) ? dateNode : {
|
140 | default: function _default() {
|
141 | return [dateNode];
|
142 | }
|
143 | })]);
|
144 | }
|
145 |
|
146 | return (0, _vue.createVNode)("div", {
|
147 | "class": "".concat(prefixCls, "-date")
|
148 | }, _isSlot(dateNode) ? dateNode : {
|
149 | default: function _default() {
|
150 | return [dateNode];
|
151 | }
|
152 | });
|
153 | },
|
154 | handleChange: function handleChange(value) {
|
155 | if (!(0, _propsUtil.hasProp)(this, 'value')) {
|
156 | this.setState({
|
157 | _value: value
|
158 | });
|
159 | }
|
160 |
|
161 | this.$emit('change', value, formatValue(value, this.format));
|
162 | },
|
163 | handleOpenChange: function handleOpenChange(open) {
|
164 | if (!(0, _propsUtil.hasProp)(this, 'open')) {
|
165 | this.setState({
|
166 | _open: open
|
167 | });
|
168 | }
|
169 |
|
170 | this.$emit('openChange', open);
|
171 | },
|
172 | clearSelection: function clearSelection(e) {
|
173 | e.preventDefault();
|
174 | e.stopPropagation();
|
175 | this.handleChange(null);
|
176 | },
|
177 | focus: function focus() {
|
178 | this.input.focus();
|
179 | },
|
180 | blur: function blur() {
|
181 | this.input.blur();
|
182 | },
|
183 | renderFooter: function renderFooter() {
|
184 | var prefixCls = this.sPrefixCls,
|
185 | $slots = this.$slots;
|
186 | var renderExtraFooter = this.renderExtraFooter || $slots.renderExtraFooter;
|
187 | return renderExtraFooter ? (0, _vue.createVNode)("div", {
|
188 | "class": "".concat(prefixCls, "-footer-extra")
|
189 | }, [renderExtraFooter.apply(void 0, arguments)]) : null;
|
190 | }
|
191 | },
|
192 | render: function render() {
|
193 | var _this3 = this;
|
194 |
|
195 | var props = _extends(_extends({}, (0, _propsUtil.getOptionProps)(this)), this.$attrs);
|
196 |
|
197 | var suffixIcon = (0, _propsUtil.getComponent)(this, 'suffixIcon');
|
198 | suffixIcon = Array.isArray(suffixIcon) ? suffixIcon[0] : suffixIcon;
|
199 | var customizePrefixCls = this.prefixCls,
|
200 | disabled = this.disabled,
|
201 | pickerClass = this.pickerClass,
|
202 | popupStyle = this.popupStyle,
|
203 | pickerInputClass = this.pickerInputClass,
|
204 | format = this.format,
|
205 | allowClear = this.allowClear,
|
206 | locale = this.locale,
|
207 | localeCode = this.localeCode,
|
208 | disabledDate = this.disabledDate,
|
209 | defaultPickerValue = this.defaultPickerValue,
|
210 | $data = this.$data,
|
211 | $slots = this.$slots;
|
212 | var getPrefixCls = this.configProvider.getPrefixCls;
|
213 | var prefixCls = getPrefixCls('calendar', customizePrefixCls);
|
214 | this.sPrefixCls = prefixCls;
|
215 | var pickerValue = $data._value,
|
216 | open = $data._open;
|
217 | var className = props.class,
|
218 | style = props.style,
|
219 | id = props.id,
|
220 | _props$onFocus = props.onFocus,
|
221 | onFocus = _props$onFocus === void 0 ? noop : _props$onFocus,
|
222 | _props$onBlur = props.onBlur,
|
223 | onBlur = _props$onBlur === void 0 ? noop : _props$onBlur;
|
224 |
|
225 | if (pickerValue && localeCode) {
|
226 | pickerValue.locale(localeCode);
|
227 | }
|
228 |
|
229 | var placeholder = (0, _propsUtil.hasProp)(this, 'placeholder') ? this.placeholder : locale.lang.placeholder;
|
230 | var weekDateRender = this.dateRender || $slots.dateRender || this.weekDateRender;
|
231 | var calendar = (0, _vue.createVNode)(_vcCalendar.default, {
|
232 | "showWeekNumber": true,
|
233 | "dateRender": weekDateRender,
|
234 | "prefixCls": prefixCls,
|
235 | "format": format,
|
236 | "locale": locale.lang,
|
237 | "showDateInput": false,
|
238 | "showToday": false,
|
239 | "disabledDate": disabledDate,
|
240 | "renderFooter": this.renderFooter,
|
241 | "defaultValue": defaultPickerValue
|
242 | }, null);
|
243 | var clearIcon = !disabled && allowClear && $data._value ? (0, _vue.createVNode)(_CloseCircleFilled.default, {
|
244 | "class": "".concat(prefixCls, "-picker-clear"),
|
245 | "onClick": this.clearSelection
|
246 | }, null) : null;
|
247 | var inputIcon = (0, _vue.createVNode)(_InputIcon.default, {
|
248 | "suffixIcon": suffixIcon,
|
249 | "prefixCls": prefixCls
|
250 | }, null);
|
251 |
|
252 | var input = function input(_ref2) {
|
253 | var value = _ref2.value;
|
254 | return (0, _vue.createVNode)("span", {
|
255 | "style": {
|
256 | display: 'inline-block',
|
257 | width: '100%'
|
258 | }
|
259 | }, [(0, _vue.createVNode)("input", {
|
260 | "ref": _this3.saveInput,
|
261 | "disabled": disabled,
|
262 | "readonly": true,
|
263 | "value": value && value.format(format) || '',
|
264 | "placeholder": placeholder,
|
265 | "class": pickerInputClass,
|
266 | "onFocus": onFocus,
|
267 | "onBlur": onBlur
|
268 | }, null), clearIcon, inputIcon]);
|
269 | };
|
270 |
|
271 | var vcDatePickerProps = _extends(_extends({}, props), {
|
272 | calendar: calendar,
|
273 | prefixCls: "".concat(prefixCls, "-picker-container"),
|
274 | value: pickerValue,
|
275 | open: open,
|
276 | onChange: this.handleChange,
|
277 | onOpenChange: this.handleOpenChange,
|
278 | style: popupStyle
|
279 | });
|
280 |
|
281 | return (0, _vue.createVNode)("span", _objectSpread({
|
282 | "class": (0, _classNames.default)(className, pickerClass),
|
283 | "style": style,
|
284 | "id": id
|
285 | }, (0, _util.getDataAndAriaProps)(props)), [(0, _vue.createVNode)(_Picker.default, vcDatePickerProps, _objectSpread({}, _extends({
|
286 | default: input
|
287 | }, $slots)))]);
|
288 | }
|
289 | });
|
290 |
|
291 | exports.default = _default2; |
\ | No newline at end of file |