From af65b1018f65aca5254451656aea08de9c9911e2 Mon Sep 17 00:00:00 2001 From: lifeiFront Date: Tue, 11 Feb 2025 16:59:38 +0800 Subject: [PATCH] =?UTF-8?q?fix(date-picker):=20=E6=97=A5=E6=9C=9F=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E6=AD=A3=E6=95=B0=E6=97=B6=E5=8C=BA=E5=BC=80=E5=A7=8B?= =?UTF-8?q?=E7=A6=81=E7=94=A8=E6=97=A5=E6=9C=9F=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/_common | 2 +- src/date-picker/date-picker.md | 4 ++-- src/date-picker/hooks/useDisableDate.ts | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/_common b/src/_common index b7935cb3e8..08c3d82071 160000 --- a/src/_common +++ b/src/_common @@ -1 +1 @@ -Subproject commit b7935cb3e86877dd68091d1d24fd93f55be3f1e7 +Subproject commit 08c3d82071d642ad1cee1d2ed6a1f4c8b3d163eb diff --git a/src/date-picker/date-picker.md b/src/date-picker/date-picker.md index 3ed50bf1e3..44662430c6 100644 --- a/src/date-picker/date-picker.md +++ b/src/date-picker/date-picker.md @@ -12,7 +12,7 @@ allowInput | Boolean | false | 是否允许输入日期 | N borderless | Boolean | false | 无边框模式 | N clearable | Boolean | false | 是否显示清除按钮 | N defaultTime | String | '00:00:00' | 时间选择器默认值,当 value/defaultValue 未设置值时有效 | N -disableDate | Object / Array / Function | - | 禁用日期,示例:['A', 'B'] 表示日期 A 和日期 B 会被禁用。`{ from: 'A', to: 'B' }` 表示在 A 到 B 之间的日期会被禁用。`{ before: 'A', after: 'B' }` 表示在 A 之前和在 B 之后的日期都会被禁用。其中 A = '2021-01-01',B = '2021-02-01'。值类型为 Function 则表示返回值为 true 的日期会被禁用。TS 类型:`DisableDate` `type DisableDate = Array \| DisableDateObj \| ((date: DateValue) => boolean)` `interface DisableDateObj { from?: string; to?: string; before?: string; after?: string }`。[详细类型定义](https://github.com/Tencent/tdesign-react/blob/develop/src/date-picker/type.ts) | N +disableDate | Object / Array / Function | - | 禁用日期,示例:['A', 'B'] 表示日期 A 和日期 B 会被禁用。`{ from: 'A', to: 'B' }` 表示在 A 到 B 之间的日期会被禁用(包含A和B)。`{ before: 'A', after: 'B' }` 表示在 A 之前和在 B 之后的日期都会被禁用。其中 A = '2021-01-01',B = '2021-02-01'。值类型为 Function 则表示返回值为 true 的日期会被禁用。TS 类型:`DisableDate` `type DisableDate = Array \| DisableDateObj \| ((date: DateValue) => boolean)` `interface DisableDateObj { from?: string; to?: string; before?: string; after?: string }`。[详细类型定义](https://github.com/Tencent/tdesign-react/blob/develop/src/date-picker/type.ts) | N disableTime | Function | - | 禁用时间项的配置函数,仅在日期时间选择器中可用。TS 类型:`(time: Date) => Partial<{ hour: Array, minute: Array, second: Array, millisecond: Array }>` | N disabled | Boolean | - | 是否禁用组件 | N enableTimePicker | Boolean | false | 是否显示时间选择 | N @@ -56,7 +56,7 @@ borderless | Boolean | false | 无边框模式 | N cancelRangeSelectLimit | Boolean | false | 默认的日期选择交互是根据点击前后日期的顺序来决定并且会加以限制。比如:用户先点击开始时间输入框,选择了一个日期例如2020-05-15,紧接着交互会自动将焦点跳到结束日期输入框,等待用户选择结束时间。此时用户只能选择大于2020-05-15的日期(之前的日期会被灰态禁止点击,限制用户的点击)。当该值传递`true`时,则取消该限制 | N clearable | Boolean | false | 是否显示清除按钮 | N defaultTime | Array | ["00:00:00", "23:59:59"] | 时间选择器默认值,当 value/defaultValue 未设置值时有效。TS 类型:`string[]` | N -disableDate | Object / Array / Function | - | 禁用日期,示例:['A', 'B'] 表示日期 A 和日期 B 会被禁用。{ from: 'A', to: 'B' } 表示在 A 到 B 之间的日期会被禁用。{ before: 'A', after: 'B' } 表示在 A 之前和在 B 之后的日期都会被禁用。其中 A = '2021-01-01',B = '2021-02-01'。值类型为 Function 则表示返回值为 true 的日期会被禁用。TS 类型:`DisableRangeDate` `type DisableRangeDate = Array \| DisableDateObj \| ((context: { date: DateRangeValue; partial: DateRangePickerPartial }) => boolean)` `interface DisableDateObj { from?: string; to?: string; before?: string; after?: string }` `type DateRangePickerPartial = 'start' \| 'end'`。[详细类型定义](https://github.com/Tencent/tdesign-react/blob/develop/src/date-picker/type.ts) | N +disableDate | Object / Array / Function | - | 禁用日期,示例:['A', 'B'] 表示日期 A 和日期 B 会被禁用。{ from: 'A', to: 'B' } 表示在 A 到 B 之间的日期会被禁用(包含A和B)。{ before: 'A', after: 'B' } 表示在 A 之前和在 B 之后的日期都会被禁用。其中 A = '2021-01-01',B = '2021-02-01'。值类型为 Function 则表示返回值为 true 的日期会被禁用。TS 类型:`DisableRangeDate` `type DisableRangeDate = Array \| DisableDateObj \| ((context: { date: DateRangeValue; partial: DateRangePickerPartial }) => boolean)` `interface DisableDateObj { from?: string; to?: string; before?: string; after?: string }` `type DateRangePickerPartial = 'start' \| 'end'`。[详细类型定义](https://github.com/Tencent/tdesign-react/blob/develop/src/date-picker/type.ts) | N disableTime | Function | - | 禁用时间项的配置函数,仅在日期区间选择器中开启时间展示时可用。TS 类型:`(times: Array, context: { partial: DateRangePickerPartial }) => Partial<{ hour: Array, minute: Array, second: Array }>` | N disabled | Boolean | - | 是否禁用组件 | N enableTimePicker | Boolean | false | 是否显示时间选择 | N diff --git a/src/date-picker/hooks/useDisableDate.ts b/src/date-picker/hooks/useDisableDate.ts index 2e09ec0a3e..70f4ef8f7c 100644 --- a/src/date-picker/hooks/useDisableDate.ts +++ b/src/date-picker/hooks/useDisableDate.ts @@ -1,4 +1,5 @@ import { isObject } from 'lodash-es'; +import dayjs from 'dayjs'; import type { TdDatePickerProps, TdDateRangePickerProps } from '../type'; import { isEnabledDate } from '../../_common/js/date-picker/utils'; @@ -15,7 +16,7 @@ export default function useDisableDate(props: disableDateProps) { return { disableDate: (value: Date) => !isEnabledDate({ disableDate, format, mode, value }), - minDate: isObject(disableDate) && 'before' in disableDate ? new Date(disableDate.before) : start, - maxDate: isObject(disableDate) && 'after' in disableDate ? new Date(disableDate.after) : end, + minDate: isObject(disableDate) && 'before' in disableDate ? new Date(dayjs(disableDate.before).startOf('day').format()) : start, + maxDate: isObject(disableDate) && 'after' in disableDate ? new Date(dayjs(disableDate.after).endOf('day').format()) : end, }; }