Skip to content

Commit

Permalink
feat(Calendar): added switchMode props to the mobile calendar compone…
Browse files Browse the repository at this point in the history
…nt (#468)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
  • Loading branch information
anlyyao and github-actions[bot] authored Nov 19, 2024
1 parent b741a4f commit e1e69d4
Show file tree
Hide file tree
Showing 14 changed files with 250 additions and 44 deletions.
Binary file modified db/TDesign.db
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ format | Function | - | Typescript:`CalendarFormatType ` `type CalendarFormatT
locale-text | Object | - | Typescript:`CalendarLocaleText` `interface CalendarLocaleText {title?: string; weekdays?: string[]; monthTitle?: string; months?: string[]; confirm?: string;}`[see more ts definition](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/calendar/type.ts) | N
max-date | Number | - | \- | N
min-date | Number | - | \- | N
switch-mode | String | none | options: none/month/year-month | N
title | String / Slot | - | [see more ts definition](https://github.com/Tencent/tdesign-miniprogram/blob/develop/src/common/common.ts) | N
type | String | 'single' | options: single/multiple/range | N
use-popup | Boolean | true | `0.32.0` | N
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ format | Function | - | 用于格式化日期的函数。TS 类型:`CalendarFo
locale-text | Object | - | 国际化文案。TS 类型:`CalendarLocaleText` `interface CalendarLocaleText {title?: string; weekdays?: string[]; monthTitle?: string; months?: string[]; confirm?: string;}`[详细类型定义](https://github.com/Tencent/tdesign-miniprogram/tree/develop/src/calendar/type.ts) | N
max-date | Number | - | 最大可选的日期,不传则默认半年后 | N
min-date | Number | - | 最小可选的日期,不传则默认今天 | N
switch-mode | String | none | 【开发中】切换模式。 `none` 表示水平方向平铺展示所有月份; `month` 表示支持按月切换, `year-month` 表示既按年切换,也支持按月切换。可选项:none/month/year-month | N
title | String / Slot | - | 标题,不传默认为“请选择日期”。[通用类型定义](https://github.com/Tencent/tdesign-miniprogram/blob/develop/src/common/common.ts) | N
type | String | 'single' | 日历的选择类型,single = 单选;multiple = 多选; range = 区间选择。可选项:single/multiple/range | N
use-popup | Boolean | true | `0.32.0`。是否使用弹出层包裹日历 | N
Expand Down
5 changes: 5 additions & 0 deletions packages/products/tdesign-miniprogram/src/calendar/props.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ const props: TdCalendarProps = {
minDate: {
type: Number,
},
/** 【开发中】切换模式。 `none` 表示水平方向平铺展示所有月份; `month` 表示支持按月切换, `year-month` 表示既按年切换,也支持按月切换 */
switchMode: {
type: String,
value: 'none',
},
/** 标题,不传默认为“请选择日期” */
title: {
type: String,
Expand Down
8 changes: 8 additions & 0 deletions packages/products/tdesign-miniprogram/src/calendar/type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,14 @@ export interface TdCalendarProps {
type: NumberConstructor;
value?: number;
};
/**
* 【开发中】切换模式。 `none` 表示水平方向平铺展示所有月份; `month` 表示支持按月切换, `year-month` 表示既按年切换,也支持按月切换
* @default none
*/
switchMode?: {
type: StringConstructor;
value?: 'none' | 'month' | 'year-month';
};
/**
* 标题,不传默认为“请选择日期”
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,27 @@
:: BASE_DOC ::

## API

### Calendar Props

name | type | default | description | required
-- | -- | -- | -- | --
className | String | - | 类名 | N
style | Object | - | 样式,Typescript:`React.CSSProperties` | N
confirmBtn | TNode | '' | Typescript:`string \| ButtonProps \| TNode \| null`[Button API Documents](./button?tab=api)[see more ts definition](https://github.com/TDesignOteam/tdesign-mobile-react/blob/develop/src/common.ts)[see more ts definition](https://github.com/TDesignOteam/tdesign-mobile-react/tree/develop/src/calendar/type.ts) | N
className | String | - | className of component | N
style | Object | - | CSS(Cascading Style Sheets),Typescript:`React.CSSProperties` | N
autoClose | Boolean | true | \- | N
confirmBtn | TNode | '' | Typescript:`string \| ButtonProps \| TNode \| null`[Button API Documents](./button?tab=api)[see more ts definition](https://github.com/Tencent/tdesign-mobile-react/blob/develop/src/common.ts)[see more ts definition](https://github.com/Tencent/tdesign-mobile-react/tree/develop/src/calendar/type.ts) | N
firstDayOfWeek | Number | 0 | \- | N
maxDate | Number / Date | - | \- | N
minDate | Number / Date | - | \- | N
title | String | - | \- | N
type | String | single | options:single/multiple/range | N
value | Number / Array / Date | - | Typescript:`CalendarValue \| CalendarValue[]` `type CalendarValue = number \| Date`[see more ts definition](https://github.com/TDesignOteam/tdesign-mobile-react/tree/develop/src/calendar/type.ts) | N
defaultValue | Number / Array / Date | - | uncontrolled property。Typescript:`CalendarValue \| CalendarValue[]` `type CalendarValue = number \| Date`[see more ts definition](https://github.com/TDesignOteam/tdesign-mobile-react/tree/develop/src/calendar/type.ts) | N
format | Function | - | Typescript:`CalendarFormatType ` `type CalendarFormatType = (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-react/tree/develop/src/calendar/type.ts) | N
maxDate | Number / Date | - | Typescript:` number \| Date` | N
minDate | Number / Date | - | Typescript:` number \| Date` | N
switchMode | String | none | options: none/month/year-month | N
title | TNode | - | Typescript:`string \| TNode`[see more ts definition](https://github.com/Tencent/tdesign-mobile-react/blob/develop/src/common.ts) | N
type | String | 'single' | options: single/multiple/range | N
usePopup | Boolean | true | \- | N
value | Number / Array / Date | - | Typescript:`number \| Date \| TCalendarValue[]` `type TCalendarValue = number \| Date`[see more ts definition](https://github.com/Tencent/tdesign-mobile-react/tree/develop/src/calendar/type.ts) | N
defaultValue | Number / Array / Date | - | uncontrolled property。Typescript:`number \| Date \| TCalendarValue[]` `type TCalendarValue = number \| Date`[see more ts definition](https://github.com/Tencent/tdesign-mobile-react/tree/develop/src/calendar/type.ts) | N
visible | Boolean | false | \- | N
onChange | Function | | Typescript:`(value: Date) => void`<br/> | N
onClose | Function | | Typescript:`(trigger: CalendarTrigger) => void`<br/>[see more ts definition](https://github.com/Tencent/tdesign-mobile-react/tree/develop/src/calendar/type.ts)。<br/>`type CalendarTrigger = 'close-btn' \| 'confirm-btn' \| 'overlay'`<br/> | N
onConfirm | Function | | Typescript:`(value: Date) => void`<br/> | N
onSelect | Function | | Typescript:`(value: Date) => void`<br/> | N
27 changes: 18 additions & 9 deletions packages/products/tdesign-mobile-react/src/calendar/calendar.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,27 @@
:: BASE_DOC ::

## API

### Calendar Props

名称 | 类型 | 默认值 | 说明 | 必传
名称 | 类型 | 默认值 | 描述 | 必传
-- | -- | -- | -- | --
className | String | - | 类名 | N
style | Object | - | 样式,TS 类型:`React.CSSProperties` | N
confirmBtn | TNode | '' | 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。。TS 类型:`string \| ButtonProps \| TNode \| null`[Button API Documents](./button?tab=api)[通用类型定义](https://github.com/TDesignOteam/tdesign-mobile-react/blob/develop/src/common.ts)[详细类型定义](https://github.com/TDesignOteam/tdesign-mobile-react/tree/develop/src/calendar/type.ts) | N
autoClose | Boolean | true | 自动关闭;在点击关闭按钮、确认按钮、遮罩层时自动关闭,不需要手动设置 visible | N
confirmBtn | TNode | '' | 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。TS 类型:`string \| ButtonProps \| TNode \| null`[Button API Documents](./button?tab=api)[通用类型定义](https://github.com/Tencent/tdesign-mobile-react/blob/develop/src/common.ts)[详细类型定义](https://github.com/Tencent/tdesign-mobile-react/tree/develop/src/calendar/type.ts) | N
firstDayOfWeek | Number | 0 | 第一天从星期几开始,默认 0 = 周日 | N
maxDate | Number / Date | - | 最大可选的日期,不传则默认半年后 | N
minDate | Number / Date | - | 最小可选的日期,不传则默认今天 | N
title | String | - | 标题,不传默认为“请选择日期” | N
type | String | single | 日历的选择类型,single = 单选;multiple = 多选; range = 区间选择。可选项:single/multiple/range | N
value | Number / Array / Date | - | 当前选择的日期,不传则默认今天,当 type = multiple 或 range 时传入数组。TS 类型:`CalendarValue \| CalendarValue[]` `type CalendarValue = number \| Date`[详细类型定义](https://github.com/TDesignOteam/tdesign-mobile-react/tree/develop/src/calendar/type.ts) | N
defaultValue | Number / Array / Date | - | 当前选择的日期,不传则默认今天,当 type = multiple 或 range 时传入数组。非受控属性。TS 类型:`CalendarValue \| CalendarValue[]` `type CalendarValue = number \| Date`[详细类型定义](https://github.com/TDesignOteam/tdesign-mobile-react/tree/develop/src/calendar/type.ts) | N
visible | Boolean | false | 是否显示日历 | N
format | Function | - | 用于格式化日期的函数。TS 类型:`CalendarFormatType ` `type CalendarFormatType = (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-react/tree/develop/src/calendar/type.ts) | N
maxDate | Number / Date | - | 最大可选的日期,不传则默认半年后。TS 类型:` number \| Date` | N
minDate | Number / Date | - | 最小可选的日期,不传则默认今天。TS 类型:` number \| Date` | N
switchMode | String | none | 【开发中】切换模式。 `none` 表示水平方向平铺展示所有月份; `month` 表示支持按月切换, `year-month` 表示既按年切换,也支持按月切换。可选项:none/month/year-month | N
title | TNode | - | 标题,不传默认为“请选择日期”。TS 类型:`string \| TNode`[通用类型定义](https://github.com/Tencent/tdesign-mobile-react/blob/develop/src/common.ts) | N
type | String | 'single' | 日历的选择类型,single = 单选;multiple = 多选; range = 区间选择。可选项:single/multiple/range | N
usePopup | Boolean | true | 是否使用弹出层包裹日历 | N
value | Number / Array / Date | - | 当前选择的日期,不传则默认今天,当 type = multiple 或 range 时传入数组。TS 类型:`number \| Date \| TCalendarValue[]` `type TCalendarValue = number \| Date`[详细类型定义](https://github.com/Tencent/tdesign-mobile-react/tree/develop/src/calendar/type.ts) | N
defaultValue | Number / Array / Date | - | 当前选择的日期,不传则默认今天,当 type = multiple 或 range 时传入数组。非受控属性。TS 类型:`number \| Date \| TCalendarValue[]` `type TCalendarValue = number \| Date`[详细类型定义](https://github.com/Tencent/tdesign-mobile-react/tree/develop/src/calendar/type.ts) | N
visible | Boolean | false | 是否显示日历;`usePopup` 为 true 时有效 | N
onChange | Function | | TS 类型:`(value: Date) => void`<br/>不显示 confirm-btn 时,完成选择时触发(暂不支持 type = multiple) | N
onClose | Function | | TS 类型:`(trigger: CalendarTrigger) => void`<br/>关闭按钮时触发。[详细类型定义](https://github.com/Tencent/tdesign-mobile-react/tree/develop/src/calendar/type.ts)。<br/>`type CalendarTrigger = 'close-btn' \| 'confirm-btn' \| 'overlay'`<br/> | N
onConfirm | Function | | TS 类型:`(value: Date) => void`<br/>点击确认按钮时触发 | N
onSelect | Function | | TS 类型:`(value: Date) => void`<br/>点击日期时触发 | N
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@
import { TdCalendarProps } from './type';

export const calendarDefaultProps: TdCalendarProps = {
autoClose: true,
confirmBtn: '',
firstDayOfWeek: 0,
switchMode: 'none',
type: 'single',
usePopup: true,
visible: false,
};
69 changes: 59 additions & 10 deletions packages/products/tdesign-mobile-react/src/calendar/type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,12 @@ import { TNode } from '../common';

export interface TdCalendarProps {
/**
* 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。
* 自动关闭;在点击关闭按钮、确认按钮、遮罩层时自动关闭,不需要手动设置 visible
* @default true
*/
autoClose?: boolean;
/**
* 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性
* @default ''
*/
confirmBtn?: ButtonProps | TNode | null;
Expand All @@ -18,37 +23,81 @@ export interface TdCalendarProps {
* @default 0
*/
firstDayOfWeek?: number;
/**
* 用于格式化日期的函数
*/
format?: CalendarFormatType;
/**
* 最大可选的日期,不传则默认半年后
*/
maxDate?: number | date;
maxDate?: number | Date;
/**
* 最小可选的日期,不传则默认今天
*/
minDate?: number | date;
minDate?: number | Date;
/**
* 【开发中】切换模式。 `none` 表示水平方向平铺展示所有月份; `month` 表示支持按月切换, `year-month` 表示既按年切换,也支持按月切换
* @default none
*/
switchMode?: 'none' | 'month' | 'year-month';
/**
* 标题,不传默认为“请选择日期”
* @default ''
*/
title?: string;
title?: TNode;
/**
* 日历的选择类型,single = 单选;multiple = 多选; range = 区间选择
* @default single
* @default 'single'
*/
type?: 'single' | 'multiple' | 'range';
/**
* 是否使用弹出层包裹日历
* @default true
*/
usePopup?: boolean;
/**
* 当前选择的日期,不传则默认今天,当 type = multiple 或 range 时传入数组
*/
value?: CalendarValue | CalendarValue[];
value?: number | Date | TCalendarValue[];
/**
* 当前选择的日期,不传则默认今天,当 type = multiple 或 range 时传入数组,非受控属性
*/
defaultValue?: CalendarValue | CalendarValue[];
defaultValue?: number | Date | TCalendarValue[];
/**
* 是否显示日历
* 是否显示日历;`usePopup` 为 true 时有效
* @default false
*/
visible?: boolean;
/**
* 不显示 confirm-btn 时,完成选择时触发(暂不支持 type = multiple)
*/
onChange?: (value: Date) => void;
/**
* 关闭按钮时触发
*/
onClose?: (trigger: CalendarTrigger) => void;
/**
* 点击确认按钮时触发
*/
onConfirm?: (value: Date) => void;
/**
* 点击日期时触发
*/
onSelect?: (value: Date) => void;
}

export type CalendarValue = number | Date;
export type CalendarFormatType = (day: TDate) => TDate;

export type TDateType = 'selected' | 'disabled' | 'start' | 'centre' | 'end' | '';

export interface TDate {
date: Date;
day: number;
type: TDateType;
className?: string;
prefix?: string;
suffix?: string;
}

export type TCalendarValue = number | Date;

export type CalendarTrigger = 'close-btn' | 'confirm-btn' | 'overlay';
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ firstDayOfWeek | Number | 0 | \- | N
format | Function | - | Typescript:`CalendarFormatType ` `type CalendarFormatType = (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
switchMode | String | none | options: none/month/year-month | 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
usePopup | Boolean | true | \- | N
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,13 @@

名称 | 类型 | 默认值 | 描述 | 必传
-- | -- | -- | -- | --
confirmBtn | String / Object / Slot / Function | '' | 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。TS 类型:`string \| ButtonProps \| TNode \| 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
confirmBtn | String / Object / Slot / Function | '' | 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。TS 类型:`string \| ButtonProps \| TNode \| 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
defaultVisible | Boolean | false | 是否显示日历;`usePopup` 为 true 时有效。非受控属性 | N
firstDayOfWeek | Number | 0 | 第一天从星期几开始,默认 0 = 周日 | N
format | Function | - | 用于格式化日期的函数。TS 类型:`CalendarFormatType ` `type CalendarFormatType = (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
switchMode | String | none | 【开发中】切换模式。 `none` 表示水平方向平铺展示所有月份; `month` 表示支持按月切换, `year-month` 表示既按年切换,也支持按月切换。可选项:none/month/year-month | 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
usePopup | Boolean | true | 是否使用弹出层包裹日历 | N
Expand Down
Loading

0 comments on commit e1e69d4

Please sign in to comment.