diff --git a/src/_common b/src/_common index 46125ae7b..8a306a10f 160000 --- a/src/_common +++ b/src/_common @@ -1 +1 @@ -Subproject commit 46125ae7b1fe2b18e3bf1cc1d15a04e802a4b06e +Subproject commit 8a306a10fca05f9f66e28c5932fef4049d68cb48 diff --git a/src/calendar/calendar.en-US.md b/src/calendar/calendar.en-US.md new file mode 100644 index 000000000..b9b8e0e70 --- /dev/null +++ b/src/calendar/calendar.en-US.md @@ -0,0 +1,25 @@ +:: BASE_DOC :: + +## API +### Calendar Props + +name | type | default | description | required +-- | -- | -- | -- | -- +confirmBtn | String / Object / Slot / Function | '' | Typescript:`string | TNode | ButtonProps | null`,[Button API Documents](./button?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-mobile-vue/blob/develop/src/common.ts)。[see more ts definition](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/calendar/type.ts) | N +firstDayOfWeek | Number | 0 | \- | N +format | Function | - | Typescript:`(day: TDate) => TDate` `type TDateType = 'selected' | 'disabled' | 'start' | 'centre' | 'end' | ''; ` `interface TDate { date: Date; day: number; type: TDateType; className?: string; prefix?: string; suffix?: string; }`。[see more ts definition](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/calendar/type.ts) | N +maxDate | Number / Date | - | Typescript:`number | Date` | N +minDate | Number / Date | - | Typescript:`number | Date` | N +title | String / Slot / Function | - | Typescript:`string | TNode`。[see more ts definition](https://github.com/Tencent/tdesign-mobile-vue/blob/develop/src/common.ts) | N +type | String | 'single' | options:single/multiple/range | N +value | Number / Array / Date | - | Typescript:`number | Date | TCalendarValue[] ` `type TCalendarValue = number | Date`。[see more ts definition](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/calendar/type.ts) | N +visible | Boolean | false | \- | N +onConfirm | Function | | Typescript:`(value: Date) => void`
| N +onSelect | Function | | Typescript:`(value: Date) => void`
| N + +### Calendar Events + +name | params | description +-- | -- | -- +confirm | `(value: Date)` | \- +select | `(value: Date)` | \- diff --git a/src/calendar/calendar.md b/src/calendar/calendar.md index c26b7d49b..2b44bc46e 100644 --- a/src/calendar/calendar.md +++ b/src/calendar/calendar.md @@ -1,21 +1,25 @@ :: BASE_DOC :: ## API +### Calendar Props -### Calendar Events - -名称 | 参数 | 描述 --- | -- | -- -modelValue | Boolean | false | 控制日历显示与隐藏 | Y -bgColor | String | #0053DB | 按钮和单元格背景颜色 | N -confirmBtn | String | 确认 | 确认按钮文案 | N -head | Slot / Function | - | 头部插槽(左上角处,默认不显示任何内容),TS 类型:`string | TNode` [通用类型定义](https://github.com/Tencent/tdesign-mobile-vue/blob/develop/src/common.ts) | N -cell | Slot / Function | 今天日期 | 自定义单元格 类型:`string | TNode` [通用类型定义](https://github.com/Tencent/tdesign-mobile-vue/blob/develop/src/common.ts) | N -value | String / Date | new Date | 当前高亮的日期,默认今天 | N +名称 | 类型 | 默认值 | 说明 | 必传 +-- | -- | -- | -- | -- +confirmBtn | String / Object / Slot / Function | '' | 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。。TS 类型:`string | TNode | ButtonProps | null`,[Button API Documents](./button?tab=api)。[通用类型定义](https://github.com/Tencent/tdesign-mobile-vue/blob/develop/src/common.ts)。[详细类型定义](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/calendar/type.ts) | N +firstDayOfWeek | Number | 0 | 第一天从星期几开始,默认 0 = 周日 | N +format | Function | - | 用于格式化日期的函数。TS 类型:`(day: TDate) => TDate` `type TDateType = 'selected' | 'disabled' | 'start' | 'centre' | 'end' | ''; ` `interface TDate { date: Date; day: number; type: TDateType; className?: string; prefix?: string; suffix?: string; }`。[详细类型定义](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/calendar/type.ts) | N +maxDate | Number / Date | - | 最大可选的日期,不传则默认半年后。TS 类型:`number | Date` | N +minDate | Number / Date | - | 最小可选的日期,不传则默认今天。TS 类型:`number | Date` | N +title | String / Slot / Function | - | 标题,不传默认为“请选择日期”。TS 类型:`string | TNode`。[通用类型定义](https://github.com/Tencent/tdesign-mobile-vue/blob/develop/src/common.ts) | N +type | String | 'single' | 日历的选择类型,single = 单选;multiple = 多选; range = 区间选择。可选项:single/multiple/range | N +value | Number / Array / Date | - | 当前选择的日期,不传则默认今天,当 type = multiple 或 range 时传入数组。TS 类型:`number | Date | TCalendarValue[] ` `type TCalendarValue = number | Date`。[详细类型定义](https://github.com/Tencent/tdesign-mobile-vue/tree/develop/src/calendar/type.ts) | N +visible | Boolean | false | 是否显示日历 | N +onConfirm | Function | | TS 类型:`(value: Date) => void`
点击确认按钮时触发 | N +onSelect | Function | | TS 类型:`(value: Date) => void`
选择日期时触发 | N ### Calendar Events 名称 | 参数 | 描述 -- | -- | -- -cell-click | cell: `type CalendarCell = {year: number;month: number;day: number;}`| 点击单元格触发 | -confirm | dateValue: `type CalendarValue = {year: number;month: number;day: number;week: number;date: string;isToday: boolean;}` | 点击确认按钮触发 | +confirm | `(value: Date)` | 点击确认按钮时触发 +select | `(value: Date)` | 选择日期时触发 diff --git a/src/calendar/calendar.vue b/src/calendar/calendar.vue index c8e139c1e..d48502cfb 100644 --- a/src/calendar/calendar.vue +++ b/src/calendar/calendar.vue @@ -1,56 +1,54 @@ + + diff --git a/src/calendar/demos/base.vue b/src/calendar/demos/base.vue index d5da19b6f..765836139 100644 --- a/src/calendar/demos/base.vue +++ b/src/calendar/demos/base.vue @@ -1,18 +1,18 @@ diff --git a/src/calendar/demos/cell.vue b/src/calendar/demos/cell.vue deleted file mode 100644 index f7c48a941..000000000 --- a/src/calendar/demos/cell.vue +++ /dev/null @@ -1,19 +0,0 @@ - - - diff --git a/src/calendar/demos/color.vue b/src/calendar/demos/color.vue deleted file mode 100644 index 142fd6772..000000000 --- a/src/calendar/demos/color.vue +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/src/calendar/demos/custom-button.vue b/src/calendar/demos/custom-button.vue new file mode 100644 index 000000000..0a38047c8 --- /dev/null +++ b/src/calendar/demos/custom-button.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/calendar/demos/custom-range.vue b/src/calendar/demos/custom-range.vue new file mode 100644 index 000000000..5a7645af5 --- /dev/null +++ b/src/calendar/demos/custom-range.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/calendar/demos/custom-text.vue b/src/calendar/demos/custom-text.vue new file mode 100644 index 000000000..c302540bb --- /dev/null +++ b/src/calendar/demos/custom-text.vue @@ -0,0 +1,47 @@ + + + + + diff --git a/src/calendar/demos/head.vue b/src/calendar/demos/head.vue deleted file mode 100644 index 0ee0a6aa4..000000000 --- a/src/calendar/demos/head.vue +++ /dev/null @@ -1,14 +0,0 @@ - - - diff --git a/src/calendar/demos/mobile.vue b/src/calendar/demos/mobile.vue index 78fefaeae..d714263d1 100644 --- a/src/calendar/demos/mobile.vue +++ b/src/calendar/demos/mobile.vue @@ -6,16 +6,18 @@
+ +
- -
- -
+ + + + - + diff --git a/src/calendar/demos/multiple.vue b/src/calendar/demos/multiple.vue new file mode 100644 index 000000000..381c09111 --- /dev/null +++ b/src/calendar/demos/multiple.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/calendar/demos/range.vue b/src/calendar/demos/range.vue new file mode 100644 index 000000000..4b6ee0e8f --- /dev/null +++ b/src/calendar/demos/range.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/calendar/demos/value.vue b/src/calendar/demos/value.vue deleted file mode 100644 index 82db1a794..000000000 --- a/src/calendar/demos/value.vue +++ /dev/null @@ -1,13 +0,0 @@ - - - diff --git a/src/calendar/props.ts b/src/calendar/props.ts index 760cf3aa7..6fe48b28a 100644 --- a/src/calendar/props.ts +++ b/src/calendar/props.ts @@ -8,41 +8,49 @@ import { TdCalendarProps } from './type'; import { PropType } from 'vue'; export default { - /** - * 控制日历显示隐藏 - */ - modelValue: { - type: Boolean, - }, - // 按钮颜色 - bgColor: { - type: String, - default: '#0053DB', - }, - /** - * 确认按钮 - */ + /** 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。 */ confirmBtn: { - type: String, - default: '确认', + type: [String, Object, Function] as PropType, + default: '', }, - /** - * 第一天从星期几开始,仅在日历展示维度为月份时(mode = month)有效。默认为 1 - */ + /** 第一天从星期几开始,默认 0 = 周日 */ firstDayOfWeek: { type: Number, + default: 0, }, - /** - * 头部插槽(左上角处,默认不显示任何内容) - */ - head: { - type: String, + /** 用于格式化日期的函数 */ + format: { + type: Function as PropType, }, - /** - * 当前高亮的日期 - */ + /** 最大可选的日期,不传则默认半年后 */ + maxDate: { + type: [Number, Date] as PropType, + }, + /** 最小可选的日期,不传则默认今天 */ + minDate: { + type: [Number, Date] as PropType, + }, + /** 标题,不传默认为“请选择日期” */ + title: { + type: [String, Function] as PropType, + }, + /** 日历的选择类型,single = 单选;multiple = 多选; range = 区间选择 */ + type: { + type: String as PropType, + default: 'single' as TdCalendarProps['type'], + validator(val: TdCalendarProps['type']): boolean { + if (!val) return true; + return ['single', 'multiple', 'range'].includes(val); + }, + }, + /** 当前选择的日期,不传则默认今天,当 type = multiple 或 range 时传入数组 */ value: { - type: Date as unknown as PropType, - default: new Date(), + type: [Number, Array, Date] as PropType, }, + /** 是否显示日历 */ + visible: Boolean, + /** 点击确认按钮时触发 */ + onConfirm: Function as PropType, + /** 选择日期时触发 */ + onSelect: Function as PropType, }; diff --git a/src/calendar/type.ts b/src/calendar/type.ts index ccc9b0c05..54a9f03de 100644 --- a/src/calendar/type.ts +++ b/src/calendar/type.ts @@ -3,50 +3,70 @@ /** * 该文件为脚本自动生成文件,请勿随意修改。如需修改请联系 PMC * */ + +import { ButtonProps } from '../button'; +import { TNode } from '../common'; + export interface TdCalendarProps { /** - * 控制日历显示隐藏 + * 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。 + * @default '' */ - modelValue: boolean; + confirmBtn?: string | TNode | ButtonProps | null; /** - * 背景颜色 + * 第一天从星期几开始,默认 0 = 周日 + * @default 0 */ - bgColor?: string; - + firstDayOfWeek?: number; /** - * 确认按钮 + * 用于格式化日期的函数 */ - confirmBtn?: string; + format?: (day: TDate) => TDate; /** - * 第一天从星期几开始,仅在日历展示维度为月份时(mode = month)有效。默认为 1 + * 最大可选的日期,不传则默认半年后 */ - firstDayOfWeek?: number; + maxDate?: number | Date; /** - * 头部插槽(左上角处,默认不显示任何内容) + * 最小可选的日期,不传则默认今天 */ - head?: string; + minDate?: number | Date; /** - * 当前高亮的日期 + * 标题,不传默认为“请选择日期” */ - value?: Date; + title?: string | TNode; + /** + * 日历的选择类型,single = 单选;multiple = 多选; range = 区间选择 + * @default 'single' + */ + type?: 'single' | 'multiple' | 'range'; + /** + * 当前选择的日期,不传则默认今天,当 type = multiple 或 range 时传入数组 + */ + value?: number | Date | TCalendarValue[]; + /** + * 是否显示日历 + * @default false + */ + visible?: boolean; + /** + * 点击确认按钮时触发 + */ + onConfirm?: (value: Date) => void; + /** + * 选择日期时触发 + */ + onSelect?: (value: Date) => void; } -export interface DateCellDescription { - date: Date; - label: string; -} +export type TDateType = 'selected' | 'disabled' | 'start' | 'centre' | 'end' | ''; -export type CalendarCell = { - year: number; - month: number; +export interface TDate { + date: Date; day: number; + type: TDateType; + className?: string; + prefix?: string; + suffix?: string; } -export type CalendarValue = { - year: number; - month: number; - day: number; - week: number; - date: string; - isToday: boolean; -}; \ No newline at end of file +export type TCalendarValue = number | Date;