diff --git a/src/date-picker/DatePicker.tsx b/src/date-picker/DatePicker.tsx index be5beb62f1..d030aa06f0 100644 --- a/src/date-picker/DatePicker.tsx +++ b/src/date-picker/DatePicker.tsx @@ -13,7 +13,7 @@ import TSelectInput from '../select-input'; import TSinglePanel from './panel/SinglePanel'; import { useReadonly } from '../hooks/useReadonly'; -import type { TdDatePickerProps, PresetDate, DateMultipleValue, DateValue } from './type'; +import type { TdDatePickerProps, DateMultipleValue, DateValue } from './type'; import type { TagInputRemoveContext } from '../tag-input'; import isDate from 'lodash/isDate'; @@ -148,7 +148,7 @@ export default defineComponent({ if (props.multiple) { const newDate = processDate(date); onChange(newDate, { - dayjsValue: parseToDayjs(date, format), + dayjsValue: parseToDayjs(date, props.format), trigger: 'pick', }); return; @@ -175,12 +175,14 @@ export default defineComponent({ let currentDate: DateMultipleValue; if (!isSameDate) { - currentDate = (value.value as DateMultipleValue).concat(formatDate(date, { format, targetFormat: valueType })); + currentDate = (value.value as DateMultipleValue).concat( + formatDate(date, { format: props.format, targetFormat: formatRef.value.valueType }), + ); } else { currentDate = (value.value as DateMultipleValue).filter( (val) => - formatDate(val, { format, targetFormat: valueType }) !== - formatDate(date, { format, targetFormat: valueType }), + formatDate(val, { format: props.format, targetFormat: formatRef.value.valueType }) !== + formatDate(date, { format: props.format, targetFormat: formatRef.value.valueType }), ); } @@ -191,14 +193,14 @@ export default defineComponent({ const removeDate = dayjs(ctx.item).toDate(); const newDate = processDate(removeDate); onChange?.(newDate, { - dayjsValue: parseToDayjs(removeDate, format), + dayjsValue: parseToDayjs(removeDate, props.format), trigger: 'pick', }); }; - const onTagClearClick = ({ e }) => { + const onTagClearClick = ({ e }: any) => { e.stopPropagation(); - setPopupVisible(false); + popupVisible.value = false; onChange([], { dayjsValue: dayjs(), trigger: 'clear' }); }; diff --git a/src/date-picker/_example-ts/multiple.vue b/src/date-picker/_example-ts/multiple.vue index 8cb3c073fe..0bc71c08fa 100644 --- a/src/date-picker/_example-ts/multiple.vue +++ b/src/date-picker/_example-ts/multiple.vue @@ -1,31 +1,9 @@ - + diff --git a/src/date-picker/_example/multiple.vue b/src/date-picker/_example/multiple.vue index 129274f31b..0bc71c08fa 100644 --- a/src/date-picker/_example/multiple.vue +++ b/src/date-picker/_example/multiple.vue @@ -1,25 +1,9 @@ - + diff --git a/src/date-picker/base/Footer.tsx b/src/date-picker/base/Footer.tsx index 14bbc01dbe..b4b8aa02f7 100644 --- a/src/date-picker/base/Footer.tsx +++ b/src/date-picker/base/Footer.tsx @@ -1,7 +1,9 @@ -import { defineComponent, computed } from 'vue'; +import { defineComponent, computed, PropType } from 'vue'; import { useConfig, usePrefixClass } from '../../hooks/useConfig'; import TButton from '../../button'; +import type { TdDatePickerProps } from '../type'; + export default defineComponent({ name: 'TDatePickerTable', props: { @@ -12,7 +14,7 @@ export default defineComponent({ type: Boolean, default: true, }, - selectedValue: [Date, String, Number], + selectedValue: [String, Number, Array, Date] as PropType, onPresetClick: Function, onConfirmClick: Function, }, diff --git a/src/date-picker/base/Header.tsx b/src/date-picker/base/Header.tsx index a2b7b59392..f80d5dc683 100644 --- a/src/date-picker/base/Header.tsx +++ b/src/date-picker/base/Header.tsx @@ -2,6 +2,7 @@ import { defineComponent, PropType, ref, computed, watch } from 'vue'; import { PaginationMini, JumperTrigger } from '../../pagination'; import TSelect from '../../select'; import { useConfig, usePrefixClass } from '../../hooks/useConfig'; + import type { TdDatePickerProps } from '../type'; export default defineComponent({ diff --git a/src/date-picker/panel/ExtraContent.tsx b/src/date-picker/panel/ExtraContent.tsx index 040c5c02c8..27ded6ce88 100644 --- a/src/date-picker/panel/ExtraContent.tsx +++ b/src/date-picker/panel/ExtraContent.tsx @@ -1,5 +1,6 @@ import { defineComponent, PropType, computed } from 'vue'; import TDateFooter from '../base/Footer'; + import type { TdDatePickerProps, TdDateRangePickerProps } from '../type'; export default defineComponent({ diff --git a/src/select-input/useMultiple.tsx b/src/select-input/useMultiple.tsx index f747adf4fa..730939c6d2 100644 --- a/src/select-input/useMultiple.tsx +++ b/src/select-input/useMultiple.tsx @@ -44,6 +44,7 @@ export default function useMultiple( const iKeys = computed(() => ({ ...DEFAULT_KEYS, ...props.keys })); const tags = computed(() => { if (!(props.value instanceof Array)) { + if (['', null, undefined].includes(props.value as any)) return []; return isObject(props.value) ? [props.value[iKeys.value.label]] : [props.value]; } return props.value.map((item) => (isObject(item) ? item[iKeys.value.label] : item)); diff --git a/src/tag-input/tag-input.tsx b/src/tag-input/tag-input.tsx index e4b780a3d8..88b7d88dba 100644 --- a/src/tag-input/tag-input.tsx +++ b/src/tag-input/tag-input.tsx @@ -134,7 +134,7 @@ export default defineComponent({ }; const focus = () => { - tagInputRef.value.focus(); + tagInputRef.value?.focus(); }; const blur = () => {