From 24a992a4491beaaa67b5ef05a539176a21f8e9bf Mon Sep 17 00:00:00 2001 From: Uyarn Date: Tue, 6 Jun 2023 17:11:23 +0800 Subject: [PATCH] chore: sync develop --- src/_common | 2 +- src/date-picker/DatePicker.tsx | 4 ++- src/date-picker/DatePickerPanel.tsx | 10 ++++--- src/date-picker/DateRangePicker.tsx | 14 ++++++--- src/date-picker/DateRangePickerPanel.tsx | 8 +++-- src/date-picker/base/Footer.tsx | 3 +- src/date-picker/panel/ExtraContent.tsx | 3 +- src/hooks/useResizeObserver.ts | 2 +- src/image/index.ts | 1 + src/menu/index.ts | 4 +-- src/select-input/useSingle.tsx | 2 +- src/select/option.tsx | 12 ++++++-- src/select/select-panel.tsx | 2 +- src/slider/slider-button.tsx | 2 +- src/table/_example/select-single.vue | 9 +++++- src/table/hooks/useFixed.ts | 2 +- src/table/thead.tsx | 9 ++++-- src/tabs/tab-nav.tsx | 6 ---- src/tag-input/hooks/useHover.ts | 10 +++---- src/tag-input/tag-input.tsx | 11 ++++--- src/tag-input/useTagList.tsx | 6 ++-- src/textarea/textarea.tsx | 7 +++-- src/time-picker/time-picker.tsx | 6 +++- src/time-picker/time-range-picker.tsx | 7 ++++- src/tree-select/tree-select.tsx | 2 +- src/tree-select/useTreeSelect.ts | 2 +- src/tree/index.ts | 37 ++++++++++++++---------- 27 files changed, 114 insertions(+), 69 deletions(-) diff --git a/src/_common b/src/_common index ed87e5eb1..073a392b3 160000 --- a/src/_common +++ b/src/_common @@ -1 +1 @@ -Subproject commit ed87e5eb1dac093d2c9440aec2763db847204873 +Subproject commit 073a392b3ea154cde592d4e10ee939aeb2c7d2a5 diff --git a/src/date-picker/DatePicker.tsx b/src/date-picker/DatePicker.tsx index b91f45004..d4bf6513b 100644 --- a/src/date-picker/DatePicker.tsx +++ b/src/date-picker/DatePicker.tsx @@ -193,7 +193,7 @@ export default defineComponent({ } // 预设 - function onPresetClick(presetValue: DateValue | (() => DateValue)) { + function onPresetClick(presetValue: any, context: any) { const presetVal = typeof presetValue === 'function' ? presetValue() : presetValue; onChange?.( formatDate(presetVal, { @@ -205,6 +205,8 @@ export default defineComponent({ trigger: 'preset', }, ); + props.onPresetClick?.(context); + emit('preset-click', context); popupVisible.value = false; } diff --git a/src/date-picker/DatePickerPanel.tsx b/src/date-picker/DatePickerPanel.tsx index 40d5dd709..77b2ce82f 100644 --- a/src/date-picker/DatePickerPanel.tsx +++ b/src/date-picker/DatePickerPanel.tsx @@ -32,7 +32,7 @@ export default defineComponent({ timePickerProps: datePickerProps.timePickerProps, ...datePickerPanelProps, }, - setup(props: TdDatePickerPanelProps, { emit }) { + setup(props: TdDatePickerPanelProps, { emit, attrs }) { const { cacheValue, value, year, month, time, onChange, } = useSingleValue(props); @@ -168,14 +168,14 @@ export default defineComponent({ } // 预设 - function onPresetClick(presetValue: DateValue | (() => DateValue), { e, preset }: any) { + function onPresetClick(presetValue: any, context: any) { const presetVal = typeof presetValue === 'function' ? presetValue() : presetValue; onChange?.(formatDate(presetVal, { format: formatRef.value.format }) as DateValue, { dayjsValue: parseToDayjs(presetVal, formatRef.value.format), trigger: 'preset', }); - props.onPresetClick?.({ e, preset }); - emit('preset-click', { e, preset }); + props.onPresetClick?.(context); + emit('preset-click', context); } function onYearChange(nextYear: number) { @@ -226,6 +226,8 @@ export default defineComponent({ timePickerProps: props.timePickerProps, enableTimePicker: props.enableTimePicker, presetsPlacement: props.presetsPlacement, + // 该属性在单独使用此panel时无特别意义, 不应该暴露为props + popupVisible: (attrs?.popupVisible as Boolean) ?? true, onPanelClick, onCellClick, onJumperClick, diff --git a/src/date-picker/DateRangePicker.tsx b/src/date-picker/DateRangePicker.tsx index 95447f74d..bf6cde92b 100644 --- a/src/date-picker/DateRangePicker.tsx +++ b/src/date-picker/DateRangePicker.tsx @@ -21,6 +21,7 @@ import { initYearMonthTime, } from '../_common/js/date-picker/format'; import { subtractMonth, addMonth, extractTimeObj } from '../_common/js/date-picker/utils'; +import useFormDisabled from '../hooks/useFormDisabled'; export default defineComponent({ name: 'TDateRangePicker', @@ -28,6 +29,7 @@ export default defineComponent({ setup(props, { emit }) { const COMPONENT_NAME = usePrefixClass('date-range-picker'); const { CalendarIcon } = useGlobalIcon({ CalendarIcon: TdCalendarIcon }); + const { formDisabled } = useFormDisabled(); const { inputValue, @@ -51,6 +53,7 @@ export default defineComponent({ format: props.format, valueType: props.valueType, })); + const isDisabled = computed(() => formDisabled.value || props.disabled); // 记录面板是否选中过 const isSelected = ref(false); @@ -315,18 +318,18 @@ export default defineComponent({ } // 首次点击不关闭、确保两端都有有效值并且无时间选择器时点击后自动关闭 - if (!isFirstValueSelected.value) { + if (nextValue.length === 1 || !isFirstValueSelected.value) { let nextIndex = notValidIndex; if (nextIndex === -1) nextIndex = activeIndex.value ? 0 : 1; activeIndex.value = nextIndex; isFirstValueSelected.value = true; - } else { + } else if (nextValue.length === 2) { popupVisible.value = false; } } // 预设 - function onPresetClick(preset: any) { + function onPresetClick(preset: any, context: any) { let presetValue = preset; if (typeof preset === 'function') { presetValue = preset(); @@ -346,6 +349,8 @@ export default defineComponent({ }, ); popupVisible.value = false; + props.onPresetClick?.(context); + emit('preset-click', context); } } @@ -414,6 +419,7 @@ export default defineComponent({ popupVisible, panelProps, CalendarIcon, + isDisabled, }; }, render() { @@ -438,7 +444,7 @@ export default defineComponent({ return (
this.onPresetClick?.(this.presets[key], { e })} + onClick={(e: MouseEvent) => this.onPresetClick?.(this.presets[key], { e, preset: { [key]: this.presets[key] } }) + } > {key} diff --git a/src/date-picker/panel/ExtraContent.tsx b/src/date-picker/panel/ExtraContent.tsx index adc825786..b6da86164 100644 --- a/src/date-picker/panel/ExtraContent.tsx +++ b/src/date-picker/panel/ExtraContent.tsx @@ -10,7 +10,8 @@ export default defineComponent({ presetsPlacement: String as PropType, onPresetClick: Function, onConfirmClick: Function, - selectedValue: String as PropType, + // 支持时间戳模式:时间戳为Number类型 + selectedValue: [String, Number] as PropType, }, setup(props) { const showPanelFooter = computed(() => props.enableTimePicker || props.presets); diff --git a/src/hooks/useResizeObserver.ts b/src/hooks/useResizeObserver.ts index e7a37c825..a2bfd5f43 100644 --- a/src/hooks/useResizeObserver.ts +++ b/src/hooks/useResizeObserver.ts @@ -4,7 +4,7 @@ export default function useResizeObserver( container: Ref, callback: (data: ResizeObserverEntry[]) => void, ) { - const isSupport = window && window.ResizeObserver; + const isSupport = typeof window !== 'undefined' && window.ResizeObserver; // unit tests do not need any warn console; too many warns influence focusing on more important log info if (!isSupport) return; diff --git a/src/image/index.ts b/src/image/index.ts index 65cb17dfd..99d1303c8 100644 --- a/src/image/index.ts +++ b/src/image/index.ts @@ -8,5 +8,6 @@ import './style'; export type ImageProps = TdImageProps; export * from './type'; +// @ts-ignore export const Image = withInstall(mapProps(['value'])(_Image)); export default Image; diff --git a/src/menu/index.ts b/src/menu/index.ts index d38d28fcb..1ba7c0cf0 100644 --- a/src/menu/index.ts +++ b/src/menu/index.ts @@ -31,7 +31,7 @@ export const Menu = withInstall( ], { model: { prop: 'value', event: 'change' }, - }, + }, // @ts-ignore )(_Menu), ); @@ -49,7 +49,7 @@ export const HeadMenu = withInstall( ], { model: { prop: 'value', event: 'change' }, - }, + }, // @ts-ignore )(_HeadMenu), ); diff --git a/src/select-input/useSingle.tsx b/src/select-input/useSingle.tsx index dd12a1cd5..8f106e220 100644 --- a/src/select-input/useSingle.tsx +++ b/src/select-input/useSingle.tsx @@ -77,7 +77,7 @@ export default function useSingle(props: TdSelectInputProps, context: SetupConte const prefixContent = [renderTNode('label'), singleValueDisplay]; const inputProps = { ...commonInputProps.value, - value: singleValueDisplay ? undefined : displayedValue, + value: singleValueDisplay && props.value ? undefined : displayedValue, label: prefixContent.length ? () => prefixContent : undefined, autoWidth: props.autoWidth, autofocus: props.autofocus, diff --git a/src/select/option.tsx b/src/select/option.tsx index 269f9ffee..f57acb863 100644 --- a/src/select/option.tsx +++ b/src/select/option.tsx @@ -54,7 +54,6 @@ export default defineComponent({ isVirtual: Boolean, bufferSize: Number, index: Number, - panelElement: HTMLElement, }, components: { TCheckbox: Checkbox, @@ -68,7 +67,16 @@ export default defineComponent({ const { classPrefix } = useConfig('classPrefix'); const { - value, label, multiple, disabled, panelElement, scrollType, bufferSize, index, isCreatedOption, + value, + label, + multiple, + disabled, + // @ts-ignore + panelElement, + scrollType, + bufferSize, + index, + isCreatedOption, } = toRefs(props); const { hasLazyLoadHolder = null, tRowHeight = null } = useLazyLoad( diff --git a/src/select/select-panel.tsx b/src/select/select-panel.tsx index 7b201b974..cb5c7203a 100644 --- a/src/select/select-panel.tsx +++ b/src/select/select-panel.tsx @@ -358,6 +358,6 @@ export default defineComponent({ ); } - return
{this.renderPanelContent()}
; + return (this.renderPanelContent as Function)(); }, }); diff --git a/src/slider/slider-button.tsx b/src/slider/slider-button.tsx index 4438b3b8c..434f702de 100644 --- a/src/slider/slider-button.tsx +++ b/src/slider/slider-button.tsx @@ -183,7 +183,7 @@ export default mixins(classPrefixMixins, Vue as VueConstructor健康

异常

- +