| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- var vue = require('vue');
- var lodashUnified = require('lodash-unified');
- var index = require('../../../../hooks/use-locale/index.js');
- var utils = require('../utils.js');
- var shared = require('@vue/shared');
- var event = require('../../../../constants/event.js');
- const useCommonPicker = (props, emit) => {
- const { lang } = index.useLocale();
- const pickerVisible = vue.ref(false);
- const pickerActualVisible = vue.ref(false);
- const userInput = vue.ref(null);
- const valueIsEmpty = vue.computed(() => {
- const { modelValue } = props;
- return !modelValue || shared.isArray(modelValue) && !modelValue.filter(Boolean).length;
- });
- const emitInput = (input) => {
- if (!utils.valueEquals(props.modelValue, input)) {
- let formatted;
- if (shared.isArray(input)) {
- formatted = input.map((item) => utils.formatter(item, props.valueFormat, lang.value));
- } else if (input) {
- formatted = utils.formatter(input, props.valueFormat, lang.value);
- }
- const emitVal = input ? formatted : input;
- emit(event.UPDATE_MODEL_EVENT, emitVal, lang.value);
- }
- };
- const parsedValue = vue.computed(() => {
- var _a;
- let dayOrDays;
- if (valueIsEmpty.value) {
- if (pickerOptions.value.getDefaultValue) {
- dayOrDays = pickerOptions.value.getDefaultValue();
- }
- } else {
- if (shared.isArray(props.modelValue)) {
- dayOrDays = props.modelValue.map((d) => utils.parseDate(d, props.valueFormat, lang.value));
- } else {
- dayOrDays = utils.parseDate((_a = props.modelValue) != null ? _a : "", props.valueFormat, lang.value);
- }
- }
- if (pickerOptions.value.getRangeAvailableTime) {
- const availableResult = pickerOptions.value.getRangeAvailableTime(dayOrDays);
- if (!lodashUnified.isEqual(availableResult, dayOrDays)) {
- dayOrDays = availableResult;
- if (!valueIsEmpty.value) {
- emitInput(utils.dayOrDaysToDate(dayOrDays));
- }
- }
- }
- if (shared.isArray(dayOrDays) && dayOrDays.some((day) => !day)) {
- dayOrDays = [];
- }
- return dayOrDays;
- });
- const pickerOptions = vue.ref({});
- const onSetPickerOption = (e) => {
- pickerOptions.value[e[0]] = e[1];
- pickerOptions.value.panelReady = true;
- };
- const onCalendarChange = (e) => {
- emit("calendar-change", e);
- };
- const onPanelChange = (value, mode, view) => {
- emit("panel-change", value, mode, view);
- };
- const onPick = (date = "", visible = false) => {
- pickerVisible.value = visible;
- let result;
- if (shared.isArray(date)) {
- result = date.map((_) => _.toDate());
- } else {
- result = date ? date.toDate() : date;
- }
- userInput.value = null;
- emitInput(result);
- };
- return {
- parsedValue,
- pickerActualVisible,
- pickerOptions,
- pickerVisible,
- userInput,
- valueIsEmpty,
- emitInput,
- onCalendarChange,
- onPanelChange,
- onPick,
- onSetPickerOption
- };
- };
- exports.useCommonPicker = useCommonPicker;
- //# sourceMappingURL=use-common-picker.js.map
|