From fc44c7ac4d2da109810c0d3d396ba0f74d19d451 Mon Sep 17 00:00:00 2001 From: Johnny Grid Date: Mon, 13 Jul 2026 23:23:40 +0800 Subject: [PATCH 01/73] fix: UDatePickerRange: add missing dynamic data-test attributes to the interactive elements --- src/types.ts | 4 +- .../UDatePickerRange.vue | 4 +- .../UDatePickerRangeInputs.vue | 8 +-- .../UDatePickerRangePeriodMenu.vue | 20 +++++-- .../tests/UDatePickerRange.test.ts | 59 +++++++++++++++++++ src/ui.form-date-picker-range/types.ts | 6 +- 6 files changed, 85 insertions(+), 16 deletions(-) diff --git a/src/types.ts b/src/types.ts index a6bb10514..37a16c3f9 100644 --- a/src/types.ts +++ b/src/types.ts @@ -390,9 +390,11 @@ export interface CVACompoundVariants { export type MutatedProps = ComputedRef; +export type GetDataTest = (suffix?: string) => string | null; + export type UseUI = { config: Ref>; - getDataTest: (suffix?: string) => string | null; + getDataTest: GetDataTest; } & KeysAttrs; export interface ConfigDerivedData { diff --git a/src/ui.form-date-picker-range/UDatePickerRange.vue b/src/ui.form-date-picker-range/UDatePickerRange.vue index 9613d00fb..28961927e 100644 --- a/src/ui.form-date-picker-range/UDatePickerRange.vue +++ b/src/ui.form-date-picker-range/UDatePickerRange.vue @@ -736,7 +736,7 @@ watchEffect(() => { :min-date="minDate" :max-date="maxDate" :attrs="rangePeriodMenuAttrs as unknown as UDatePickerRangePeriodMenuAttrs" - :data-test="getDataTest('period-menu')" + :get-data-test="(suffix?: string) => getDataTest(suffix ? `period-menu-${suffix}` : 'period-menu')" @toggle-menu="isShownMenu = !isShownMenu" @close-menu="isShownMenu = false" @click-prev="onClickShiftDatesList(ShiftAction.Prev)" @@ -759,7 +759,7 @@ watchEffect(() => { :date-format="dateFormat" :config="config" :attrs="rangeInputsAttrs as unknown as UDatePickerRangeInputsAttrs" - :data-test="getDataTest('range-inputs')" + :get-data-test="(suffix?: string) => getDataTest(suffix ? `range-inputs-${suffix}` : 'range-inputs')" />
; defineOptions({ internal: true }); -const props = withDefaults(defineProps(), { - dataTest: null, -}); +const props = defineProps(); const rangeInputStartRef = useTemplateRef("range-input-start"); const rangeInputEndRef = useTemplateRef("range-input-end"); @@ -142,7 +140,7 @@ defineExpose({ v-bind="attrs.rangeInputFirstAttrs.value" :name="rangeInputName" no-autocomplete - :data-test="`${dataTest}-from`" + :data-test="getDataTest('from')" @blur="updateDateValue(rangeStart, InputRangeType.Start)" @keydown.enter="updateDateValue(rangeStart, InputRangeType.Start)" @input="validateInput($event, InputRangeType.Start)" @@ -156,7 +154,7 @@ defineExpose({ v-bind="attrs.rangeInputLastAttrs.value" :name="rangeInputName" no-autocomplete - :data-test="`${dataTest}-to`" + :data-test="getDataTest('to')" @blur="updateDateValue(rangeEnd, InputRangeType.End)" @keydown.enter="updateDateValue(rangeEnd, InputRangeType.End)" @input="validateInput($event, InputRangeType.End)" diff --git a/src/ui.form-date-picker-range/UDatePickerRangePeriodMenu.vue b/src/ui.form-date-picker-range/UDatePickerRangePeriodMenu.vue index a1544c8c1..9d4b4a91d 100644 --- a/src/ui.form-date-picker-range/UDatePickerRangePeriodMenu.vue +++ b/src/ui.form-date-picker-range/UDatePickerRangePeriodMenu.vue @@ -22,9 +22,7 @@ import type { DatePeriodRange } from "./utilDateRange"; defineOptions({ internal: true }); -const props = withDefaults(defineProps(), { - dataTest: null, -}); +const props = defineProps(); const emit = defineEmits(["toggleMenu", "closeMenu", "clickPrev", "clickNext"]); @@ -150,7 +148,7 @@ function getDatePeriodState(date: DatePeriodRange) {