Skip to content

Commit 32cfa03

Browse files
jaygeorgejasonvargaclaude
authored
[6.x] Fix date picker inconsistencies (#14732)
Co-authored-by: Jason Varga <jason@pixelfear.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 8432caa commit 32cfa03

2 files changed

Lines changed: 18 additions & 11 deletions

File tree

resources/js/components/ui/DatePicker/DatePicker.vue

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ const getInputLabel = (part) => {
163163
:class="[
164164
'flex w-full items-center overflow-x-auto overflow-y-hidden bg-white uppercase dark:bg-gray-900',
165165
'border border-gray-300 dark:border-gray-700',
166-
'text-gray-600 dark:text-gray-300',
166+
'leading-[1.375rem] text-gray-600 dark:text-gray-300',
167167
'shadow-ui-sm not-prose h-10 rounded-lg px-2 disabled:shadow-none',
168168
'data-invalid:border-red-500',
169169
'disabled:shadow-none disabled:opacity-50',
@@ -185,7 +185,8 @@ const getInputLabel = (part) => {
185185
<div v-if="item.part === 'literal'">
186186
<DatePickerInput
187187
:part="item.part"
188-
:class="{ 'text-sm text-gray-600 dark:text-gray-400 antialiased': !item.contenteditable }"
188+
class="whitespace-pre"
189+
:class="{ 'text-gray-600 dark:text-gray-400': !item.contenteditable }"
189190
v-on="inputEvents"
190191
>
191192
{{ item.value }}
@@ -194,9 +195,9 @@ const getInputLabel = (part) => {
194195
<div v-else>
195196
<DatePickerInput
196197
:part="item.part"
197-
class="rounded-sm px-0.25 py-0.5 focus:bg-blue-100 focus:outline-hidden data-placeholder:text-gray-600 dark:focus:bg-blue-900 dark:data-placeholder:text-gray-400"
198+
class="rounded-sm py-0.5 focus:bg-blue-100 focus:outline-hidden data-placeholder:text-gray-600 dark:focus:bg-blue-900 dark:data-placeholder:text-gray-400"
198199
:class="{
199-
'px-0.5!': item.part === 'month' || item.part === 'year' || item.part === 'day',
200+
'px-0.25!': item.part === 'month' || item.part === 'year' || item.part === 'day',
200201
}"
201202
:aria-label="getInputLabel(item.part)"
202203
v-on="inputEvents"

resources/js/components/ui/DateRangePicker/DateRangePicker.vue

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
DateRangePickerHeading,
1616
DateRangePickerNext,
1717
DateRangePickerPrev,
18+
DateRangePickerAnchor,
1819
DateRangePickerContent,
1920
DateRangePickerField,
2021
DateRangePickerInput,
@@ -136,22 +137,27 @@ const hoverCardDate = computed(() => {
136137
close-on-select
137138
>
138139
<DateRangePickerField v-slot="{ segments }" class="w-full">
140+
<DateRangePickerAnchor as-child>
139141
<div
140142
:class="[
141143
'flex items-center w-full overflow-x-auto overflow-y-hidden bg-white dark:bg-gray-900',
142144
'border border-gray-300 dark:border-gray-700',
143145
'leading-[1.375rem] text-gray-600 dark:text-gray-300 @max-xs:text-xs',
144-
'shadow-ui-sm not-prose h-10 rounded-lg py-2 px-2.5 disabled:shadow-none',
146+
'shadow-ui-sm not-prose h-10 rounded-lg px-2 disabled:shadow-none',
145147
'data-invalid:border-red-500',
146148
'disabled:shadow-none disabled:opacity-50',
147149
readOnly ? 'border-dashed' : '',
148150
]"
149151
>
150-
<DateRangePickerTrigger v-if="!inline">
151-
<Button as="div" variant="ghost" size="sm" icon="calendar" class="-ms-2" />
152+
<DateRangePickerTrigger
153+
v-if="!inline"
154+
class="flex shrink-0 items-center justify-center rounded-lg p-2 -ms-1 text-gray-500 dark:text-gray-400 outline-hidden hover:bg-gray-100 focus:bg-gray-100 dark:hover:bg-gray-900 dark:focus:bg-gray-900"
155+
:aria-label="__('Open calendar')"
156+
>
157+
<Icon name="calendar" class="size-4" />
152158
</DateRangePickerTrigger>
153159
<template v-for="item in segments.start" :key="item.part">
154-
<DateRangePickerInput v-if="item.part === 'literal'" :part="item.part" type="start">
160+
<DateRangePickerInput v-if="item.part === 'literal'" :part="item.part" type="start" class="whitespace-pre">
155161
{{ item.value }}
156162
</DateRangePickerInput>
157163
<DateRangePickerInput
@@ -168,7 +174,7 @@ const hoverCardDate = computed(() => {
168174
</template>
169175
<span class="mx-0.75 text-gray-400 dark:text-gray-600">&ndash;</span>
170176
<template v-for="item in segments.end" :key="item.part">
171-
<DateRangePickerInput v-if="item.part === 'literal'" :part="item.part" type="end">
177+
<DateRangePickerInput v-if="item.part === 'literal'" :part="item.part" type="end" class="whitespace-pre">
172178
{{ item.value }}
173179
</DateRangePickerInput>
174180
<DateRangePickerInput
@@ -194,13 +200,13 @@ const hoverCardDate = computed(() => {
194200
</TimezoneHoverCard>
195201
<Button v-if="!readOnly" @click="emit('update:modelValue', null)" variant="subtle" size="sm" icon="x" class="-me-2" :disabled="disabled" />
196202
</div>
203+
</DateRangePickerAnchor>
197204
</DateRangePickerField>
198205
199206
<DateRangePickerContent
200207
v-if="!inline"
201208
align="start"
202-
:align-offset="-12"
203-
:side-offset="14"
209+
:side-offset="4"
204210
class="data-[state=open]:data-[side=top]:animate-slideDownAndFade data-[state=open]:data-[side=right]:animate-slideLeftAndFade data-[state=open]:data-[side=bottom]:animate-slideUpAndFade data-[state=open]:data-[side=left]:animate-slideRightAndFade will-change-[transform,opacity]"
205211
>
206212
<Card class="w-[20rem]">

0 commit comments

Comments
 (0)