feat: swap date input to use date picker (#6146)

* feat: swap date input to use date picker

* feat: update date picker to analytics branch changes

* feat: polish date picker usage
This commit is contained in:
Truman Gao
2026-05-20 11:50:46 -06:00
committed by GitHub
parent 3eeb549d20
commit d8b1415f9c
6 changed files with 836 additions and 67 deletions
@@ -131,10 +131,9 @@
class="h-10"
/>
<StyledInput
<DatePicker
v-else-if="field.type === 'date'"
v-model="formData[field.name]"
type="date"
wrapper-class="w-full"
/>
@@ -230,6 +229,7 @@ import {
Admonition,
Checkbox,
Combobox,
DatePicker,
defineMessages,
financialMessages,
formFieldLabels,
@@ -95,11 +95,11 @@
<span class="text-red">*</span>
</span>
</label>
<StyledInput
<DatePicker
v-model="formData.dateOfBirth"
type="date"
:max="maxDate"
:max-date="maxDate"
autocomplete="bday"
placeholder="Select date of birth"
wrapper-class="w-full"
/>
</div>
@@ -213,6 +213,7 @@
import {
Chips,
Combobox,
DatePicker,
defineMessages,
formFieldLabels,
formFieldPlaceholders,
+7 -2
View File
@@ -102,7 +102,12 @@
<tr>
<td>Revenue earned on</td>
<td>
<StyledInput id="revenue-date-picker" v-model="rawSelectedDate" type="date" />
<DatePicker
id="revenue-date-picker"
v-model="rawSelectedDate"
show-today
position="above"
/>
<noscript
>(JavaScript must be enabled for the date picker to function, example date:
2024-07-15)
@@ -162,7 +167,7 @@
</template>
<script lang="ts" setup>
import { injectModrinthClient, StyledInput, useFormatDateTime, useFormatMoney } from '@modrinth/ui'
import { DatePicker, injectModrinthClient, useFormatDateTime, useFormatMoney } from '@modrinth/ui'
import { useQuery } from '@tanstack/vue-query'
import dayjs from 'dayjs'
import { computed, ref } from 'vue'
+13 -13
View File
@@ -16,10 +16,10 @@
"
:width="'550px'"
>
<div class="flex flex-col gap-4">
<div class="flex w-full flex-col">
<div class="flex flex-col gap-6">
<div class="flex w-full flex-col gap-2.5">
<label for="pat-name">
<span class="label__title">{{ formatMessage(createModalMessages.nameLabel) }}</span>
<span class="font-semibold">{{ formatMessage(createModalMessages.nameLabel) }}</span>
</label>
<StyledInput
id="pat-name"
@@ -29,20 +29,20 @@
/>
</div>
<div class="flex w-full flex-col">
<div class="flex w-full flex-col gap-2.5">
<label for="pat-scopes">
<span class="label__title">{{ formatMessage(commonMessages.scopesLabel) }}</span>
<span class="font-semibold">{{ formatMessage(commonMessages.scopesLabel) }}</span>
</label>
<div
id="pat-scopes"
class="scope-items mt-2 grid grid-cols-1 gap-x-6 gap-y-4 min-[600px]:grid-cols-2"
class="scope-items grid grid-cols-1 gap-x-6 gap-y-4 min-[600px]:grid-cols-2"
>
<div
v-for="category in scopeCategories"
:key="category.name"
class="flex flex-col gap-2"
class="flex flex-col gap-1.5"
>
<h4 class="m-0 border-b border-divider pb-1 text-base font-bold text-contrast">
<h4 class="m-0 border-b border-divider text-base font-medium text-primary">
{{ category.name }}
</h4>
<div class="flex flex-col gap-2">
@@ -58,15 +58,14 @@
</div>
</div>
<div class="flex w-full flex-col">
<div class="flex w-full flex-col gap-2.5">
<label for="pat-expires">
<span class="label__title">{{ formatMessage(createModalMessages.expiresLabel) }}</span>
<span class="font-semibold">{{ formatMessage(createModalMessages.expiresLabel) }}</span>
</label>
<StyledInput id="pat-expires" v-model="expires" type="date" />
<p></p>
<DatePicker id="pat-expires" show-today v-model="expires" wrapper-class="w-full" />
</div>
<div class="ml-auto flex gap-2">
<div class="ml-auto mt-4 flex gap-2">
<ButtonStyled type="outlined">
<button @click="$refs.patModal.hide()">
<XIcon />
@@ -207,6 +206,7 @@ import {
commonSettingsMessages,
ConfirmModal,
CopyCode,
DatePicker,
defineMessages,
injectModrinthClient,
injectNotificationManager,