diff --git a/CHANGELOG.md b/CHANGELOG.md index f6de20655..77c3c059a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ ### Features * include documents in npm package for ai agents ([#960](https://github.com/WeBankFinTech/fes-design/issues/960)) ([3cc476c](https://github.com/WeBankFinTech/fes-design/commit/3cc476c81fb652c7fc3887884d99b46a02de0b74)) +* feat(date-picker): 支持精确到小时和分钟 ([#913](https://github.com/WeBankFinTech/fes-design/issues/913)) diff --git a/components/date-picker/__tests__/datehour-913.spec.ts b/components/date-picker/__tests__/datehour-913.spec.ts new file mode 100644 index 000000000..79ea5f546 --- /dev/null +++ b/components/date-picker/__tests__/datehour-913.spec.ts @@ -0,0 +1,21 @@ +import { describe, expect, it } from 'vitest'; +import { PickerType, pickerFactory, DateHourMinutePicker } from '../pickerHandler'; + +describe('datehour picker', () => { + it('should have datehour in PickerType', () => { + expect(PickerType.datehour).toBe('datehour'); + }); + + it('DateHourMinutePicker should have correct format', () => { + const picker = new DateHourMinutePicker(); + expect(picker.format).toBe('yyyy-MM-dd HH:mm'); + expect(picker.name).toBe(PickerType.datehour); + expect(picker.hasTime).toBe(true); + }); + + it('pickerFactory should create DateHourMinutePicker for datehour type', () => { + const picker = pickerFactory(PickerType.datehour); + expect(picker).toBeInstanceOf(DateHourMinutePicker); + expect(picker.format).toBe('yyyy-MM-dd HH:mm'); + }); +}); \ No newline at end of file diff --git a/components/date-picker/pickerHandler.ts b/components/date-picker/pickerHandler.ts index c66dd6628..f105ece4d 100644 --- a/components/date-picker/pickerHandler.ts +++ b/components/date-picker/pickerHandler.ts @@ -4,6 +4,7 @@ import type { DateObj } from './interface'; export const PickerType = { date: 'date', datetime: 'datetime', + datehour: 'datehour', datemultiple: 'datemultiple', daterange: 'daterange', datetimerange: 'datetimerange', @@ -62,6 +63,18 @@ export class DateTimePicker implements Picker { } } +export class DateHourMinutePicker implements Picker { + name = PickerType.datehour; + confirmLang = 'datePicker.today'; + placeholderLang = 'datePicker.selectDateTime'; + format = 'yyyy-MM-dd HH:mm'; + isRange = false; + hasTime = true; + getDateFromStr(val: string): Date { + return new Date(val); + } +} + class DateRange { getLeftActiveDate(rightActiveDate: number) { const endDate = new Date(rightActiveDate); @@ -198,6 +211,8 @@ export function pickerFactory(type: string): Picker { return new DatePicker(); case PickerType.datetime: return new DateTimePicker(); + case PickerType.datehour: + return new DateHourMinutePicker(); case PickerType.datemultiple: return new DateMultiplePicker(); case PickerType.daterange: diff --git a/docs/.vitepress/components/datePicker/datehour.vue b/docs/.vitepress/components/datePicker/datehour.vue new file mode 100644 index 000000000..8db56755e --- /dev/null +++ b/docs/.vitepress/components/datePicker/datehour.vue @@ -0,0 +1,16 @@ + + + \ No newline at end of file diff --git a/docs/.vitepress/components/datePicker/index.md b/docs/.vitepress/components/datePicker/index.md index 91339299c..76bb2015d 100644 --- a/docs/.vitepress/components/datePicker/index.md +++ b/docs/.vitepress/components/datePicker/index.md @@ -44,6 +44,10 @@ app.use(DatePicker); --DEFAULTTIME +### 精确到小时和分钟 + +--datehour + --CODE ## Props