diff --git a/frontend/src/CountdownPanel.test.ts b/frontend/src/CountdownPanel.test.ts index 20cb09f..40d1a5f 100644 --- a/frontend/src/CountdownPanel.test.ts +++ b/frontend/src/CountdownPanel.test.ts @@ -23,6 +23,15 @@ describe('countdown modal accessibility', () => { expect(source).not.toContain('class="countdown-actions"') }) + it('does not show or edit countdown icons', () => { + expect(source).not.toContain('countdown-icon') + expect(source).not.toContain('form.icon') + expect(source).not.toContain('item.icon') + expect(source).not.toContain('focusItem.icon') + expect(source).not.toContain('detailItem.icon') + expect(source).not.toContain('图标与名称') + }) + it('keeps advanced creation fields collapsed behind more settings', () => { expect(source).toContain('class="countdown-advanced"') expect(source).toContain('更多设置') diff --git a/frontend/src/CountdownPanel.vue b/frontend/src/CountdownPanel.vue index da123a1..d03cb86 100644 --- a/frontend/src/CountdownPanel.vue +++ b/frontend/src/CountdownPanel.vue @@ -10,7 +10,7 @@ type Countdown = { calendar_mode: 'solar'|'lunar'; lunar_year: number|null; lunar_month: number|null; lunar_day: number|null ignore_year: boolean; lunar_text: string|null } -type Form = { title:string; event_date:string; kind:Countdown['kind']; repeat_rule:Countdown['repeat_rule']; icon:string; calendar_mode:Countdown['calendar_mode']; lunar_year:number; lunar_month:number; lunar_day:number; leap_month:boolean; ignore_year:boolean } +type Form = { title:string; event_date:string; kind:Countdown['kind']; repeat_rule:Countdown['repeat_rule']; calendar_mode:Countdown['calendar_mode']; lunar_year:number; lunar_month:number; lunar_day:number; leap_month:boolean; ignore_year:boolean } type CountdownGroup = { key: string; title: string; items: Countdown[] } const emit = defineEmits<{ notice: [message: string] }>() const items = ref([]), archived = ref([]) @@ -18,7 +18,7 @@ const showArchived = ref(false), open = ref(false), busy = ref(false) const editingId = ref(null), error = ref('') const detailItem = ref(null), showAdvanced = ref(false) const currentYear = new Date().getFullYear() -const freshForm = (): Form => ({ title:'', event_date:dateKey(new Date()), kind:'countdown', repeat_rule:'none', icon:'📅', calendar_mode:'solar', lunar_year:currentYear, lunar_month:1, lunar_day:1, leap_month:false, ignore_year:false }) +const freshForm = (): Form => ({ title:'', event_date:dateKey(new Date()), kind:'countdown', repeat_rule:'none', calendar_mode:'solar', lunar_year:currentYear, lunar_month:1, lunar_day:1, leap_month:false, ignore_year:false }) const form = ref
(freshForm()) const composerOrigin = ref({ x: window.innerWidth - 43, y: window.innerHeight - 104 }) const composerStyle = computed(() => ({ '--fab-origin-x': `${composerOrigin.value.x}px`, '--fab-origin-y': `${composerOrigin.value.y}px` })) @@ -122,7 +122,7 @@ function edit(item:Countdown) { detailItem.value=null editingId.value=item.id showAdvanced.value=false - form.value={ title:item.title, event_date:item.event_date, kind:item.kind, repeat_rule:item.repeat_rule, icon:item.icon, calendar_mode:item.calendar_mode, lunar_year:item.lunar_year || Number(item.event_date.slice(0,4)), lunar_month:Math.abs(item.lunar_month || 1), lunar_day:item.lunar_day || 1, leap_month:(item.lunar_month || 0)<0, ignore_year:item.ignore_year } + form.value={ title:item.title, event_date:item.event_date, kind:item.kind, repeat_rule:item.repeat_rule, calendar_mode:item.calendar_mode, lunar_year:item.lunar_year || Number(item.event_date.slice(0,4)), lunar_month:Math.abs(item.lunar_month || 1), lunar_day:item.lunar_day || 1, leap_month:(item.lunar_month || 0)<0, ignore_year:item.ignore_year } open.value=true focusDialog() } @@ -133,7 +133,7 @@ function applyKindDefaults() { async function save() { if (!form.value.title.trim()) return await safe(async()=>{ - const payload:any={ title:form.value.title.trim(), event_date:form.value.calendar_mode==='lunar' ? `${form.value.lunar_year}-01-01` : form.value.event_date, kind:form.value.kind, repeat_rule:form.value.ignore_year ? 'yearly' : form.value.repeat_rule, icon:form.value.icon, calendar_mode:form.value.calendar_mode, ignore_year:form.value.ignore_year } + const payload:any={ title:form.value.title.trim(), event_date:form.value.calendar_mode==='lunar' ? `${form.value.lunar_year}-01-01` : form.value.event_date, kind:form.value.kind, repeat_rule:form.value.ignore_year ? 'yearly' : form.value.repeat_rule, calendar_mode:form.value.calendar_mode, ignore_year:form.value.ignore_year } if (form.value.calendar_mode==='lunar') { payload.lunar_month=form.value.leap_month ? -form.value.lunar_month : form.value.lunar_month; payload.lunar_day=form.value.lunar_day } const path=editingId.value ? `/countdowns/${editingId.value}` : '/countdowns' await request(path,{ method:editingId.value?'PATCH':'POST', body:JSON.stringify(payload) }) @@ -166,7 +166,6 @@ onBeforeUnmount(() => { previousFocus = null })

{{group.title}}

还没有重要日子生日、纪念日,或一场期待已久的旅行
-
{{item.icon}}{{item.title}}{{formatDateShort(item.display_date)}}
+
{{item.title}}{{formatDateShort(item.display_date)}}