From 0714b565da4f7f3649706ca768ba1d1ad47eb697 Mon Sep 17 00:00:00 2001 From: seaHi Date: Fri, 14 Aug 2026 18:03:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E6=97=A5=E6=9C=9F=E9=80=89=E6=8B=A9=E5=99=A8=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E5=B9=B6=E5=BA=94=E7=94=A8=E4=BA=8E=E7=AB=99=E7=82=B9=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/components/admin/DatePicker.svelte | 272 +++++++++++++++++++++ src/routes/admin/settings/+page.svelte | 22 +- 2 files changed, 275 insertions(+), 19 deletions(-) create mode 100644 src/lib/components/admin/DatePicker.svelte diff --git a/src/lib/components/admin/DatePicker.svelte b/src/lib/components/admin/DatePicker.svelte new file mode 100644 index 0000000..615bc00 --- /dev/null +++ b/src/lib/components/admin/DatePicker.svelte @@ -0,0 +1,272 @@ + + +
+ + + {#if isOpen} +
+
+ + {currentYear}年 {currentMonth + 1}月 + +
+ +
+ {#each weekDays as wd} +
{wd}
+ {/each} + + {#each Array(firstDayOfWeek) as _} +
+ {/each} + + {#each Array(daysInMonth) as _, i} + {@const day = i + 1} + {@const isSelected = + value === + `${currentYear}-${String(currentMonth + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`} + {@const isToday = + new Date().getDate() === day && + new Date().getMonth() === currentMonth && + new Date().getFullYear() === currentYear} + + + {/each} +
+
+ {/if} +
+ + diff --git a/src/routes/admin/settings/+page.svelte b/src/routes/admin/settings/+page.svelte index e3e5247..0f674ab 100644 --- a/src/routes/admin/settings/+page.svelte +++ b/src/routes/admin/settings/+page.svelte @@ -4,6 +4,7 @@ import { addToast } from '$lib/stores/toast.svelte'; import Tabs from '$lib/components/admin/Tabs.svelte'; import ImagePicker from '$lib/components/admin/FeaturedImagePicker.svelte'; + import DatePicker from '$lib/components/admin/DatePicker.svelte'; import { untrack } from 'svelte'; let { data, form }: { data: PageData; form: ActionData } = $props(); @@ -87,11 +88,10 @@
- 用于在底栏显示"感谢陪伴 X 天 X 小时"
@@ -389,22 +389,6 @@ box-shadow: 0 0 0 2px rgba(65, 155, 56, 0.1); } - /* 抹除浏览器原生日期选择器的特殊样式,保持与项目其他输入框一致 */ - .form-group input[type='date'] { - appearance: none; - -webkit-appearance: none; - width: 100%; - box-sizing: border-box; - color-scheme: light; - } - - .form-group input[type='date']::-webkit-calendar-picker-indicator { - filter: invert(0.4); - cursor: pointer; - padding: 0; - margin-left: 4px; - } - .form-actions { margin-top: 10px; display: flex;