From fd6d3ae23edc4cf13f5cf15f49163abb8c9f2f1c Mon Sep 17 00:00:00 2001 From: Wesley <985189328@qq.com> Date: Fri, 14 Feb 2025 22:41:24 +0800 Subject: [PATCH 1/5] feat: VUE DialogCard --- db/TDesign.db | Bin 1007616 -> 1011712 bytes .../tdesign-react/src/dialog/dialog.en-US.md | 2 +- .../tdesign-react/src/dialog/dialog.md | 2 +- .../products/tdesign-react/src/dialog/type.ts | 1 + .../dialog-card/dialog-card.en-US.md | 29 ++ .../components/dialog-card/dialog-card.md | 29 ++ .../components/dialog/dialog-card-props.ts | 48 ++ .../components/dialog/dialog.en-US.md | 2 +- .../packages/components/dialog/dialog.md | 2 +- .../packages/components/dialog/type.ts | 199 +------- .../src/dialog-card/dialog-card.en-US.md | 29 ++ .../src/dialog-card/dialog-card.md | 29 ++ .../src/dialog/dialog-card-props.ts | 48 ++ .../products/tdesign-vue/src/dialog/dialog.md | 2 +- .../products/tdesign-vue/src/dialog/type.ts | 199 +------- packages/scripts/api.json | 429 +++++++++++++++++- 16 files changed, 684 insertions(+), 366 deletions(-) create mode 100644 packages/products/tdesign-vue-next/packages/components/dialog-card/dialog-card.en-US.md create mode 100644 packages/products/tdesign-vue-next/packages/components/dialog-card/dialog-card.md create mode 100644 packages/products/tdesign-vue/src/dialog-card/dialog-card.en-US.md create mode 100644 packages/products/tdesign-vue/src/dialog-card/dialog-card.md diff --git a/db/TDesign.db b/db/TDesign.db index 40eeeecbc5a19a330ba84f41fa8bc84a3f66b9ad..66512915846aa71967c4942fd8a044f21876e887 100644 GIT binary patch delta 1712 zcmZvcZA@EL7{~8RX>aej=UkX&8}G#-Y#qDzR2@e?10qM6&W5#za+YTr!yB+q?v z&;R%QpXc;OKkJD8(lJv}bb+F%2WQRC&=)Sd&+p+@`B_@6B!!lnG{es(qoYwKIcSsh zdQ!fx98Av1f19?fpM~}0`MQzSG5)1JNpLN`=sdmXq)9L&SQ0uCMI`hj3?w)bMiP8# z(FywJtN1<&8kQ+>M%;;RpfG#{XJDo9k>E5eg9EARbztRngz*=?^&bBRh!vgV%Ne?s zj=hKnAAygzm|rtDcq3!Of$`Cvh{qQg8^PjZ(3)~?fGeyn#uhX9*%G?y%2UD}2DY-h z**dnIE%q<%yN=xv__W@C{?i0lI^D?%sZJJtK8T#mDkJuYonouFTdc$HdQg3;(+!U^ zCUHuf5QCyy9AJxCJ+s05$*kgqA=r%GqH`Ccw^ldsjgT6^;esm+9IndYXtO0#xOs5?B68l0((kzlj8qsoU zK7`!&sv&^`-6$o_!3`k@D8AcR&y^eA)<=pKbfc--WzMOy#q7%S}IMrfTz!Q#)I6UJ%CcSI?^C`Lse>g>VCEiaC?65btNX-_T*ec5f`BOJOWjsJxP;{7!)G!=qDzfLlUz zF@D|77!r3@wkCQdYYxjI+wFOiQcJOF<;Z`m__jjU)eI|fH}u0x+5KB&Nh;8kq-mSd zqYY*k4PgfvIT?(L+@|!7U1u_qxgQQ4e)&gXJC=VE%sE?Vk*#fc9JQ3N1b6I<4J(H= z1GQvW@nf3?vT6PT8o5%3CdNb7rlkIzRXYGRjFIz|c=-twL%o ySg%^b^hsSQcE8HW29MIM?gY;ah+9i8xwwqjP{cQhOCEzKa(ZnoxSK>!vi$?YE5Ol8Ru?HSfbDIoNEpvNMtjQ!8yjwb-7JUn`2C@*w_q= ztqcsUHqWv8CnEGVomUd5<{&3C3sdTn-IKX@Hm~t-U*pdR#7scU48$xz%nHP8K+F!r z96-zo#9Z6g_;ZIYkmYt~;AOwSz(0XsgYPt74(~7C3A{2q8+iQLFK`8Jm;1nN%r*V& zLauKt3=E7M+mA2e;$hq#{)c-lGfOSA6Vr4DK}OlFsyz3Yc%_&HSbu?CveWwDbg?{M z^LBS;p6%|;ynAE#yqKk!`0Myf__O#E_`|kyB=B}Iad8`P%W$i43vqKyUzWt{F}*04 z*J!&!GOra6Tk1~z&D{H@3o!HOZ12hEE&U+PEyC!{w1a`0i<^P#5!Vf_b6iKbc5!Xs zTE;a8XdGV?lR(<7MZtV!AQz;G%Dv?Mx_w;|-#c~|kihf>S$sB5Y25Eqc;&$gxZg+e z%7Iwv3j56YTEJpEZ+zejg~+}=%qtCLzPh$v3;|2xxbg5)sujv`te0p5KaOX;2 QdgdtK!R-sO`4YYW01~W<5C8xG diff --git a/packages/products/tdesign-react/src/dialog/dialog.en-US.md b/packages/products/tdesign-react/src/dialog/dialog.en-US.md index 497d5de8d..80edafae7 100644 --- a/packages/products/tdesign-react/src/dialog/dialog.en-US.md +++ b/packages/products/tdesign-react/src/dialog/dialog.en-US.md @@ -8,7 +8,7 @@ name | type | default | description | required -- | -- | -- | -- | -- className | String | - | className of component | N style | Object | - | CSS(Cascading Style Sheets),Typescript:`React.CSSProperties` | N -`Pick` | TNode | - | extends `Pick`。Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/src/common.ts) | N +`Pick` | TNode | - | extends `Pick`。Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/src/common.ts) | N ### Dialog Props diff --git a/packages/products/tdesign-react/src/dialog/dialog.md b/packages/products/tdesign-react/src/dialog/dialog.md index b64c2ac52..f55225571 100644 --- a/packages/products/tdesign-react/src/dialog/dialog.md +++ b/packages/products/tdesign-react/src/dialog/dialog.md @@ -8,7 +8,7 @@ -- | -- | -- | -- | -- className | String | - | 类名 | N style | Object | - | 样式,TS 类型:`React.CSSProperties` | N -`Pick` | TNode | - | 继承 `Pick` 中的全部属性。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-react/blob/develop/src/common.ts) | N +`Pick` | TNode | - | 继承 `Pick` 中的全部属性。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-react/blob/develop/src/common.ts) | N ### Dialog Props diff --git a/packages/products/tdesign-react/src/dialog/type.ts b/packages/products/tdesign-react/src/dialog/type.ts index f33873e0b..1e2cee184 100644 --- a/packages/products/tdesign-react/src/dialog/type.ts +++ b/packages/products/tdesign-react/src/dialog/type.ts @@ -185,6 +185,7 @@ export interface TdDialogCardProps | 'onCancel' | 'onCloseBtnClick' | 'onConfirm' + | 'confirmLoading' > {} export interface DialogOptions extends Omit { diff --git a/packages/products/tdesign-vue-next/packages/components/dialog-card/dialog-card.en-US.md b/packages/products/tdesign-vue-next/packages/components/dialog-card/dialog-card.en-US.md new file mode 100644 index 000000000..469860515 --- /dev/null +++ b/packages/products/tdesign-vue-next/packages/components/dialog-card/dialog-card.en-US.md @@ -0,0 +1,29 @@ +:: BASE_DOC :: + +## API + + +### DialogCard Props + +name | type | default | description | required +-- | -- | -- | -- | -- +body | String / Slot / Function | - | Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +cancelBtn | String / Object / Slot / Function | - | Typescript:`string \| ButtonProps \| TNode \| null`,[Button API Documents](./button?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts)。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/dialog/type.ts) | N +closeBtn | String / Boolean / Slot / Function | true | Typescript:`string \| ButtonProps \| TNode \| null`,[Button API Documents](./button?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts)。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/dialog/type.ts) | N +confirmBtn | String / Object / Slot / Function | true | Typescript:`string \| ButtonProps \| TNode \| null`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +confirmLoading | Boolean | - | confirm button loading status。Typescript:`string \| ButtonProps \| TNode \| null`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +footer | Boolean / Slot / Function | true | Typescript:`boolean \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +header | String / Boolean / Slot / Function | true | Typescript:`string \| boolean \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +theme | String | default | options: default/info/warning/danger/success | N +`Pick` | String / Slot / Function | - | extends `Pick`。Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +onCancel | Function | | Typescript:`(context: { e: MouseEvent }) => void`
options: default/info/warning/danger/success | N +onCloseBtnClick | Function | | Typescript:`(context: { e: MouseEvent }) => void`
options: default/info/warning/danger/success | N +onConfirm | Function | | Typescript:`(context: { e: MouseEvent \| KeyboardEvent }) => void`
options: default/info/warning/danger/success | N + +### DialogCard Events + +name | params | description +-- | -- | -- +cancel | `(context: { e: MouseEvent })` | options: default/info/warning/danger/success +close-btn-click | `(context: { e: MouseEvent })` | options: default/info/warning/danger/success +confirm | `(context: { e: MouseEvent \| KeyboardEvent })` | options: default/info/warning/danger/success diff --git a/packages/products/tdesign-vue-next/packages/components/dialog-card/dialog-card.md b/packages/products/tdesign-vue-next/packages/components/dialog-card/dialog-card.md new file mode 100644 index 000000000..6638baae3 --- /dev/null +++ b/packages/products/tdesign-vue-next/packages/components/dialog-card/dialog-card.md @@ -0,0 +1,29 @@ +:: BASE_DOC :: + +## API + + +### DialogCard Props + +名称 | 类型 | 默认值 | 描述 | 必传 +-- | -- | -- | -- | -- +body | String / Slot / Function | - | 对话框内容。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +cancelBtn | String / Object / Slot / Function | - | 取消按钮,可自定义。值为 null 则不显示取消按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制取消事件。TS 类型:`string \| ButtonProps \| TNode \| null`,[Button API Documents](./button?tab=api)。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts)。[详细类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/dialog/type.ts) | N +closeBtn | String / Boolean / Slot / Function | true | 关闭按钮,可以自定义。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string 则直接显示值,如:“关闭”。值类型为 TNode,则表示呈现自定义按钮示例。TS 类型:`string \| ButtonProps \| TNode \| null`,[Button API Documents](./button?tab=api)。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts)。[详细类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/dialog/type.ts) | N +confirmBtn | String / Object / Slot / Function | true | 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制确认事件。TS 类型:`string \| ButtonProps \| TNode \| null`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +confirmLoading | Boolean | - | 确认按钮加载状态。TS 类型:`string \| ButtonProps \| TNode \| null`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +footer | Boolean / Slot / Function | true | 底部操作栏,默认会有“确认”和“取消”两个按钮。值为 true 显示默认操作按钮,值为 false 不显示任何内容,值类型为 Function 表示自定义底部内容。TS 类型:`boolean \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +header | String / Boolean / Slot / Function | true | 头部内容。值为 true 显示空白头部,值为 false 不显示任何内容,值类型为 string 则直接显示值,值类型为 Function 表示自定义头部内容。TS 类型:`string \| boolean \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +theme | String | default | 对话框风格。可选项:default/info/warning/danger/success | N +`Pick` | String / Slot / Function | - | 继承 `Pick` 中的全部属性。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +onCancel | Function | | TS 类型:`(context: { e: MouseEvent }) => void`
如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件。可选项:default/info/warning/danger/success | N +onCloseBtnClick | Function | | TS 类型:`(context: { e: MouseEvent }) => void`
点击右上角关闭按钮时触发。可选项:default/info/warning/danger/success | N +onConfirm | Function | | TS 类型:`(context: { e: MouseEvent \| KeyboardEvent }) => void`
如果“确认”按钮存在,则点击“确认”按钮时触发,或者键盘按下回车键时触发。可选项:default/info/warning/danger/success | N + +### DialogCard Events + +名称 | 参数 | 描述 +-- | -- | -- +cancel | `(context: { e: MouseEvent })` | 如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件。可选项:default/info/warning/danger/success +close-btn-click | `(context: { e: MouseEvent })` | 点击右上角关闭按钮时触发。可选项:default/info/warning/danger/success +confirm | `(context: { e: MouseEvent \| KeyboardEvent })` | 如果“确认”按钮存在,则点击“确认”按钮时触发,或者键盘按下回车键时触发。可选项:default/info/warning/danger/success diff --git a/packages/products/tdesign-vue-next/packages/components/dialog/dialog-card-props.ts b/packages/products/tdesign-vue-next/packages/components/dialog/dialog-card-props.ts index 06951ece0..5c1dabaf4 100644 --- a/packages/products/tdesign-vue-next/packages/components/dialog/dialog-card-props.ts +++ b/packages/products/tdesign-vue-next/packages/components/dialog/dialog-card-props.ts @@ -4,5 +4,53 @@ * 该文件为脚本自动生成文件,请勿随意修改。如需修改请联系 PMC * */ +import { TdDialogCardProps } from '../dialog/type'; +import { PropType } from 'vue'; + export default { + /** 对话框内容 */ + body: { + type: [String, Function] as PropType, + }, + /** 取消按钮,可自定义。值为 null 则不显示取消按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制取消事件 */ + cancelBtn: { + type: [String, Object, Function] as PropType, + }, + /** 关闭按钮,可以自定义。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string 则直接显示值,如:“关闭”。值类型为 TNode,则表示呈现自定义按钮示例 */ + closeBtn: { + type: [String, Boolean, Function] as PropType, + default: true as TdDialogCardProps['closeBtn'], + }, + /** 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制确认事件 */ + confirmBtn: { + type: [String, Object, Function] as PropType, + default: true as TdDialogCardProps['confirmBtn'], + }, + /** 确认按钮加载状态 */ + confirmLoading: Boolean, + /** 底部操作栏,默认会有“确认”和“取消”两个按钮。值为 true 显示默认操作按钮,值为 false 不显示任何内容,值类型为 Function 表示自定义底部内容 */ + footer: { + type: [Boolean, Function] as PropType, + default: true as TdDialogCardProps['footer'], + }, + /** 头部内容。值为 true 显示空白头部,值为 false 不显示任何内容,值类型为 string 则直接显示值,值类型为 Function 表示自定义头部内容 */ + header: { + type: [String, Boolean, Function] as PropType, + default: true as TdDialogCardProps['header'], + }, + /** 对话框风格 */ + theme: { + type: String as PropType, + default: 'default' as TdDialogCardProps['theme'], + validator(val: TdDialogCardProps['theme']): boolean { + if (!val) return true; + return ['default', 'info', 'warning', 'danger', 'success'].includes(val); + }, + }, + /** 如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件 */ + onCancel: Function as PropType, + /** 点击右上角关闭按钮时触发 */ + onCloseBtnClick: Function as PropType, + /** 如果“确认”按钮存在,则点击“确认”按钮时触发,或者键盘按下回车键时触发 */ + onConfirm: Function as PropType, }; diff --git a/packages/products/tdesign-vue-next/packages/components/dialog/dialog.en-US.md b/packages/products/tdesign-vue-next/packages/components/dialog/dialog.en-US.md index 5e599c8c3..051735911 100644 --- a/packages/products/tdesign-vue-next/packages/components/dialog/dialog.en-US.md +++ b/packages/products/tdesign-vue-next/packages/components/dialog/dialog.en-US.md @@ -6,7 +6,7 @@ name | type | default | description | required -- | -- | -- | -- | -- -`Pick` | String / Slot / Function | - | extends `Pick`。Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +`Pick` | String / Slot / Function | - | extends `Pick`。Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N ### Dialog Props diff --git a/packages/products/tdesign-vue-next/packages/components/dialog/dialog.md b/packages/products/tdesign-vue-next/packages/components/dialog/dialog.md index f12005b13..0cf099356 100644 --- a/packages/products/tdesign-vue-next/packages/components/dialog/dialog.md +++ b/packages/products/tdesign-vue-next/packages/components/dialog/dialog.md @@ -6,7 +6,7 @@ 名称 | 类型 | 默认值 | 描述 | 必传 -- | -- | -- | -- | -- -`Pick` | String / Slot / Function | - | 继承 `Pick` 中的全部属性。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +`Pick` | String / Slot / Function | - | 继承 `Pick` 中的全部属性。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N ### Dialog Props diff --git a/packages/products/tdesign-vue-next/packages/components/dialog/type.ts b/packages/products/tdesign-vue-next/packages/components/dialog/type.ts index b18dc6e09..e88b5f3bd 100644 --- a/packages/products/tdesign-vue-next/packages/components/dialog/type.ts +++ b/packages/products/tdesign-vue-next/packages/components/dialog/type.ts @@ -5,13 +5,23 @@ * */ import { ButtonProps } from '../button'; -import { TNode, Styles, AttachNode } from '../common'; +import { TNode } from '../common'; -export interface TdDialogProps { - /** - * 对话框挂载的节点。数据类型为 String 时,会被当作选择器处理,进行节点查询。示例:'body' 或 () => document.body - */ - attach?: AttachNode; +export interface TdDialogCardProps + extends Pick< + TdDialogProps, + | 'body' + | 'cancelBtn' + | 'closeBtn' + | 'confirmBtn' + | 'footer' + | 'header' + | 'theme' + | 'onCancel' + | 'onCloseBtnClick' + | 'onConfirm' + | 'confirmLoading' + > { /** * 对话框内容 */ @@ -24,50 +34,16 @@ export interface TdDialogProps { * 关闭按钮,可以自定义。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string 则直接显示值,如:“关闭”。值类型为 TNode,则表示呈现自定义按钮示例 * @default true */ - closeBtn?: string | boolean | TNode; - /** - * 按下 ESC 时是否触发对话框关闭事件 - */ - closeOnEscKeydown?: boolean; - /** - * 点击蒙层时是否触发关闭事件 - */ - closeOnOverlayClick?: boolean; + closeBtn?: string | ButtonProps | TNode | null; /** * 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制确认事件 + * @default true */ confirmBtn?: string | ButtonProps | TNode | null; /** * 确认按钮加载状态 */ - confirmLoading?: boolean; - /** - * 是否在按下回车键时,触发确认事件 - */ - confirmOnEnter?: boolean; - /** - * 对话框内容,同 body - */ - default?: string | TNode; - /** - * 是否在关闭弹框的时候销毁子元素 - * @default false - */ - destroyOnClose?: boolean; - /** - * 弹框元素类名,示例:'t-class-dialog-first t-class-dialog-second' - * @default '' - */ - dialogClassName?: string; - /** - * 作用于对话框本身的样式 - */ - dialogStyle?: Styles; - /** - * 对话框是否可以拖拽(仅在非模态对话框时有效) - * @default false - */ - draggable?: boolean; + confirmLoading?: string | ButtonProps | TNode | null; /** * 底部操作栏,默认会有“确认”和“取消”两个按钮。值为 true 显示默认操作按钮,值为 false 不显示任何内容,值类型为 Function 表示自定义底部内容 * @default true @@ -78,158 +54,21 @@ export interface TdDialogProps { * @default true */ header?: string | boolean | TNode; - /** - * 对话框类型,有 4 种:模态对话框、非模态对话框、普通对话框、全屏对话框。弹出「模态对话框」时,只能操作对话框里面的内容,不能操作其他内容。弹出「非模态对话框」时,则可以操作页面内所有内容。「普通对话框」是指没有脱离文档流的对话框,可以在这个基础上开发更多的插件 - * @default modal - */ - mode?: 'modal' | 'modeless' | 'normal' | 'full-screen'; - /** - * 对话框位置,内置两种:垂直水平居中显示 和 靠近顶部(top:20%)显示。默认情况,为避免贴顶或贴底,顶部和底部距离最小为 `48px`,可通过调整 `top` 覆盖默认大小 - * @default top - */ - placement?: 'top' | 'center'; - /** - * 防止滚动穿透 - * @default true - */ - preventScrollThrough?: boolean; - /** - * 仅在挂载元素中显示抽屉,默认在浏览器可视区域显示。父元素需要有定位属性,如:position: relative - * @default false - */ - showInAttachedElement?: boolean; - /** - * 是否显示遮罩层 - * @default true - */ - showOverlay?: boolean; /** * 对话框风格 * @default default */ theme?: 'default' | 'info' | 'warning' | 'danger' | 'success'; - /** - * 用于弹框具体窗口顶部的距离,优先级大于 placement - */ - top?: string | number; - /** - * 控制对话框是否显示 - */ - visible?: boolean; - /** - * 对话框宽度,示例:320, '500px', '80%' - */ - width?: string | number; - /** - * 对话框层级,Web 侧样式默认为 2500,移动端和小程序样式默认为 1500 - */ - zIndex?: number; - /** - * 对话框执行消失动画效果前触发 - */ - onBeforeClose?: () => void; - /** - * 对话框执行弹出动画效果前触发 - */ - onBeforeOpen?: () => void; /** * 如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件 */ onCancel?: (context: { e: MouseEvent }) => void; - /** - * 关闭事件,点击取消按钮、点击关闭按钮、点击蒙层、按下 ESC 等场景下触发 - */ - onClose?: (context: DialogCloseContext) => void; /** * 点击右上角关闭按钮时触发 */ onCloseBtnClick?: (context: { e: MouseEvent }) => void; - /** - * 对话框消失动画效果结束后触发 - */ - onClosed?: () => void; /** * 如果“确认”按钮存在,则点击“确认”按钮时触发,或者键盘按下回车键时触发 */ onConfirm?: (context: { e: MouseEvent | KeyboardEvent }) => void; - /** - * 按下 ESC 时触发事件 - */ - onEscKeydown?: (context: { e: KeyboardEvent }) => void; - /** - * 对话框弹出动画效果结束后触发 - */ - onOpened?: () => void; - /** - * 如果蒙层存在,点击蒙层时触发 - */ - onOverlayClick?: (context: { e: MouseEvent }) => void; } - -export interface TdDialogCardProps - extends Pick< - TdDialogProps, - | 'body' - | 'cancelBtn' - | 'closeBtn' - | 'confirmBtn' - | 'footer' - | 'header' - | 'theme' - | 'onCancel' - | 'onCloseBtnClick' - | 'onConfirm' - > {} - -export interface DialogOptions extends Omit { - /** - * 对话框挂载的节点。数据类型为 String 时,会被当作选择器处理,进行节点查询。示例:'body' 或 () => document.body - * @default 'body' - */ - attach?: AttachNode; - /** - * 弹框类名,示例:'t-class-dialog-first t-class-dialog-second' - * @default '' - */ - className?: string; - /** - * 弹框 style 属性,输入 [CSSStyleDeclaration.cssText](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/cssText) - */ - style?: string | Styles; -} - -export interface DialogInstance { - /** - * 销毁弹框 - */ - destroy: () => void; - /** - * 隐藏弹框 - */ - hide: () => void; - /** - * 设置确认按钮加载状态 - */ - setConfirmLoading: (loading: boolean) => void; - /** - * 显示弹框 - */ - show: () => void; - /** - * 更新弹框内容 - */ - update: (props: DialogOptions) => void; -} - -export type DialogEventSource = 'esc' | 'close-btn' | 'cancel' | 'overlay'; - -export interface DialogCloseContext { - trigger: DialogEventSource; - e: MouseEvent | KeyboardEvent; -} - -export type DialogMethod = (options?: DialogOptions) => DialogInstance; - -export type DialogConfirmMethod = (options?: DialogOptions) => DialogInstance; - -export type DialogAlertMethod = (options?: Omit) => DialogInstance; diff --git a/packages/products/tdesign-vue/src/dialog-card/dialog-card.en-US.md b/packages/products/tdesign-vue/src/dialog-card/dialog-card.en-US.md new file mode 100644 index 000000000..758f746ed --- /dev/null +++ b/packages/products/tdesign-vue/src/dialog-card/dialog-card.en-US.md @@ -0,0 +1,29 @@ +:: BASE_DOC :: + +## API + + +### DialogCard Props + +name | type | default | description | required +-- | -- | -- | -- | -- +body | String / Slot / Function | - | Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +cancelBtn | String / Object / Slot / Function | - | Typescript:`string \| ButtonProps \| TNode \| null`,[Button API Documents](./button?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts)。[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/dialog/type.ts) | N +closeBtn | String / Boolean / Slot / Function | true | Typescript:`string \| ButtonProps \| TNode \| null`,[Button API Documents](./button?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts)。[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/dialog/type.ts) | N +confirmBtn | String / Object / Slot / Function | true | Typescript:`string \| ButtonProps \| TNode \| null`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +confirmLoading | Boolean | - | confirm button loading status。Typescript:`string \| ButtonProps \| TNode \| null`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +footer | Boolean / Slot / Function | true | Typescript:`boolean \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +header | String / Boolean / Slot / Function | true | Typescript:`string \| boolean \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +theme | String | default | options: default/info/warning/danger/success | N +`Pick` | String / Slot / Function | - | extends `Pick`。Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +onCancel | Function | | Typescript:`(context: { e: MouseEvent }) => void`
options: default/info/warning/danger/success | N +onCloseBtnClick | Function | | Typescript:`(context: { e: MouseEvent }) => void`
options: default/info/warning/danger/success | N +onConfirm | Function | | Typescript:`(context: { e: MouseEvent \| KeyboardEvent }) => void`
options: default/info/warning/danger/success | N + +### DialogCard Events + +name | params | description +-- | -- | -- +cancel | `(context: { e: MouseEvent })` | options: default/info/warning/danger/success +close-btn-click | `(context: { e: MouseEvent })` | options: default/info/warning/danger/success +confirm | `(context: { e: MouseEvent \| KeyboardEvent })` | options: default/info/warning/danger/success diff --git a/packages/products/tdesign-vue/src/dialog-card/dialog-card.md b/packages/products/tdesign-vue/src/dialog-card/dialog-card.md new file mode 100644 index 000000000..6645302d5 --- /dev/null +++ b/packages/products/tdesign-vue/src/dialog-card/dialog-card.md @@ -0,0 +1,29 @@ +:: BASE_DOC :: + +## API + + +### DialogCard Props + +名称 | 类型 | 默认值 | 描述 | 必传 +-- | -- | -- | -- | -- +body | String / Slot / Function | - | 对话框内容。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +cancelBtn | String / Object / Slot / Function | - | 取消按钮,可自定义。值为 null 则不显示取消按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制取消事件。TS 类型:`string \| ButtonProps \| TNode \| null`,[Button API Documents](./button?tab=api)。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts)。[详细类型定义](https://github.com/Tencent/tdesign-vue/tree/develop/src/dialog/type.ts) | N +closeBtn | String / Boolean / Slot / Function | true | 关闭按钮,可以自定义。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string 则直接显示值,如:“关闭”。值类型为 TNode,则表示呈现自定义按钮示例。TS 类型:`string \| ButtonProps \| TNode \| null`,[Button API Documents](./button?tab=api)。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts)。[详细类型定义](https://github.com/Tencent/tdesign-vue/tree/develop/src/dialog/type.ts) | N +confirmBtn | String / Object / Slot / Function | true | 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制确认事件。TS 类型:`string \| ButtonProps \| TNode \| null`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +confirmLoading | Boolean | - | 确认按钮加载状态。TS 类型:`string \| ButtonProps \| TNode \| null`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +footer | Boolean / Slot / Function | true | 底部操作栏,默认会有“确认”和“取消”两个按钮。值为 true 显示默认操作按钮,值为 false 不显示任何内容,值类型为 Function 表示自定义底部内容。TS 类型:`boolean \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +header | String / Boolean / Slot / Function | true | 头部内容。值为 true 显示空白头部,值为 false 不显示任何内容,值类型为 string 则直接显示值,值类型为 Function 表示自定义头部内容。TS 类型:`string \| boolean \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +theme | String | default | 对话框风格。可选项:default/info/warning/danger/success | N +`Pick` | String / Slot / Function | - | 继承 `Pick` 中的全部属性。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +onCancel | Function | | TS 类型:`(context: { e: MouseEvent }) => void`
如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件。可选项:default/info/warning/danger/success | N +onCloseBtnClick | Function | | TS 类型:`(context: { e: MouseEvent }) => void`
点击右上角关闭按钮时触发。可选项:default/info/warning/danger/success | N +onConfirm | Function | | TS 类型:`(context: { e: MouseEvent \| KeyboardEvent }) => void`
如果“确认”按钮存在,则点击“确认”按钮时触发,或者键盘按下回车键时触发。可选项:default/info/warning/danger/success | N + +### DialogCard Events + +名称 | 参数 | 描述 +-- | -- | -- +cancel | `(context: { e: MouseEvent })` | 如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件。可选项:default/info/warning/danger/success +close-btn-click | `(context: { e: MouseEvent })` | 点击右上角关闭按钮时触发。可选项:default/info/warning/danger/success +confirm | `(context: { e: MouseEvent \| KeyboardEvent })` | 如果“确认”按钮存在,则点击“确认”按钮时触发,或者键盘按下回车键时触发。可选项:default/info/warning/danger/success diff --git a/packages/products/tdesign-vue/src/dialog/dialog-card-props.ts b/packages/products/tdesign-vue/src/dialog/dialog-card-props.ts index 06951ece0..dd7902d99 100644 --- a/packages/products/tdesign-vue/src/dialog/dialog-card-props.ts +++ b/packages/products/tdesign-vue/src/dialog/dialog-card-props.ts @@ -4,5 +4,53 @@ * 该文件为脚本自动生成文件,请勿随意修改。如需修改请联系 PMC * */ +import { TdDialogCardProps } from '../dialog/type'; +import { PropType } from 'vue'; + export default { + /** 对话框内容 */ + body: { + type: [String, Function] as PropType, + }, + /** 取消按钮,可自定义。值为 null 则不显示取消按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制取消事件 */ + cancelBtn: { + type: [String, Object, Function] as PropType, + }, + /** 关闭按钮,可以自定义。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string 则直接显示值,如:“关闭”。值类型为 TNode,则表示呈现自定义按钮示例 */ + closeBtn: { + type: [String, Boolean, Function] as PropType, + default: true, + }, + /** 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制确认事件 */ + confirmBtn: { + type: [String, Object, Function] as PropType, + default: true, + }, + /** 确认按钮加载状态 */ + confirmLoading: Boolean, + /** 底部操作栏,默认会有“确认”和“取消”两个按钮。值为 true 显示默认操作按钮,值为 false 不显示任何内容,值类型为 Function 表示自定义底部内容 */ + footer: { + type: [Boolean, Function] as PropType, + default: true, + }, + /** 头部内容。值为 true 显示空白头部,值为 false 不显示任何内容,值类型为 string 则直接显示值,值类型为 Function 表示自定义头部内容 */ + header: { + type: [String, Boolean, Function] as PropType, + default: true, + }, + /** 对话框风格 */ + theme: { + type: String as PropType, + default: 'default' as TdDialogCardProps['theme'], + validator(val: TdDialogCardProps['theme']): boolean { + if (!val) return true; + return ['default', 'info', 'warning', 'danger', 'success'].includes(val); + }, + }, + /** 如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件 */ + onCancel: Function as PropType, + /** 点击右上角关闭按钮时触发 */ + onCloseBtnClick: Function as PropType, + /** 如果“确认”按钮存在,则点击“确认”按钮时触发,或者键盘按下回车键时触发 */ + onConfirm: Function as PropType, }; diff --git a/packages/products/tdesign-vue/src/dialog/dialog.md b/packages/products/tdesign-vue/src/dialog/dialog.md index ea96d19ab..7b2f793f1 100644 --- a/packages/products/tdesign-vue/src/dialog/dialog.md +++ b/packages/products/tdesign-vue/src/dialog/dialog.md @@ -6,7 +6,7 @@ 名称 | 类型 | 默认值 | 描述 | 必传 -- | -- | -- | -- | -- -`Pick` | String / Slot / Function | - | 继承 `Pick` 中的全部属性。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +`Pick` | String / Slot / Function | - | 继承 `Pick` 中的全部属性。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N ### Dialog Props diff --git a/packages/products/tdesign-vue/src/dialog/type.ts b/packages/products/tdesign-vue/src/dialog/type.ts index b18dc6e09..e88b5f3bd 100644 --- a/packages/products/tdesign-vue/src/dialog/type.ts +++ b/packages/products/tdesign-vue/src/dialog/type.ts @@ -5,13 +5,23 @@ * */ import { ButtonProps } from '../button'; -import { TNode, Styles, AttachNode } from '../common'; +import { TNode } from '../common'; -export interface TdDialogProps { - /** - * 对话框挂载的节点。数据类型为 String 时,会被当作选择器处理,进行节点查询。示例:'body' 或 () => document.body - */ - attach?: AttachNode; +export interface TdDialogCardProps + extends Pick< + TdDialogProps, + | 'body' + | 'cancelBtn' + | 'closeBtn' + | 'confirmBtn' + | 'footer' + | 'header' + | 'theme' + | 'onCancel' + | 'onCloseBtnClick' + | 'onConfirm' + | 'confirmLoading' + > { /** * 对话框内容 */ @@ -24,50 +34,16 @@ export interface TdDialogProps { * 关闭按钮,可以自定义。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string 则直接显示值,如:“关闭”。值类型为 TNode,则表示呈现自定义按钮示例 * @default true */ - closeBtn?: string | boolean | TNode; - /** - * 按下 ESC 时是否触发对话框关闭事件 - */ - closeOnEscKeydown?: boolean; - /** - * 点击蒙层时是否触发关闭事件 - */ - closeOnOverlayClick?: boolean; + closeBtn?: string | ButtonProps | TNode | null; /** * 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制确认事件 + * @default true */ confirmBtn?: string | ButtonProps | TNode | null; /** * 确认按钮加载状态 */ - confirmLoading?: boolean; - /** - * 是否在按下回车键时,触发确认事件 - */ - confirmOnEnter?: boolean; - /** - * 对话框内容,同 body - */ - default?: string | TNode; - /** - * 是否在关闭弹框的时候销毁子元素 - * @default false - */ - destroyOnClose?: boolean; - /** - * 弹框元素类名,示例:'t-class-dialog-first t-class-dialog-second' - * @default '' - */ - dialogClassName?: string; - /** - * 作用于对话框本身的样式 - */ - dialogStyle?: Styles; - /** - * 对话框是否可以拖拽(仅在非模态对话框时有效) - * @default false - */ - draggable?: boolean; + confirmLoading?: string | ButtonProps | TNode | null; /** * 底部操作栏,默认会有“确认”和“取消”两个按钮。值为 true 显示默认操作按钮,值为 false 不显示任何内容,值类型为 Function 表示自定义底部内容 * @default true @@ -78,158 +54,21 @@ export interface TdDialogProps { * @default true */ header?: string | boolean | TNode; - /** - * 对话框类型,有 4 种:模态对话框、非模态对话框、普通对话框、全屏对话框。弹出「模态对话框」时,只能操作对话框里面的内容,不能操作其他内容。弹出「非模态对话框」时,则可以操作页面内所有内容。「普通对话框」是指没有脱离文档流的对话框,可以在这个基础上开发更多的插件 - * @default modal - */ - mode?: 'modal' | 'modeless' | 'normal' | 'full-screen'; - /** - * 对话框位置,内置两种:垂直水平居中显示 和 靠近顶部(top:20%)显示。默认情况,为避免贴顶或贴底,顶部和底部距离最小为 `48px`,可通过调整 `top` 覆盖默认大小 - * @default top - */ - placement?: 'top' | 'center'; - /** - * 防止滚动穿透 - * @default true - */ - preventScrollThrough?: boolean; - /** - * 仅在挂载元素中显示抽屉,默认在浏览器可视区域显示。父元素需要有定位属性,如:position: relative - * @default false - */ - showInAttachedElement?: boolean; - /** - * 是否显示遮罩层 - * @default true - */ - showOverlay?: boolean; /** * 对话框风格 * @default default */ theme?: 'default' | 'info' | 'warning' | 'danger' | 'success'; - /** - * 用于弹框具体窗口顶部的距离,优先级大于 placement - */ - top?: string | number; - /** - * 控制对话框是否显示 - */ - visible?: boolean; - /** - * 对话框宽度,示例:320, '500px', '80%' - */ - width?: string | number; - /** - * 对话框层级,Web 侧样式默认为 2500,移动端和小程序样式默认为 1500 - */ - zIndex?: number; - /** - * 对话框执行消失动画效果前触发 - */ - onBeforeClose?: () => void; - /** - * 对话框执行弹出动画效果前触发 - */ - onBeforeOpen?: () => void; /** * 如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件 */ onCancel?: (context: { e: MouseEvent }) => void; - /** - * 关闭事件,点击取消按钮、点击关闭按钮、点击蒙层、按下 ESC 等场景下触发 - */ - onClose?: (context: DialogCloseContext) => void; /** * 点击右上角关闭按钮时触发 */ onCloseBtnClick?: (context: { e: MouseEvent }) => void; - /** - * 对话框消失动画效果结束后触发 - */ - onClosed?: () => void; /** * 如果“确认”按钮存在,则点击“确认”按钮时触发,或者键盘按下回车键时触发 */ onConfirm?: (context: { e: MouseEvent | KeyboardEvent }) => void; - /** - * 按下 ESC 时触发事件 - */ - onEscKeydown?: (context: { e: KeyboardEvent }) => void; - /** - * 对话框弹出动画效果结束后触发 - */ - onOpened?: () => void; - /** - * 如果蒙层存在,点击蒙层时触发 - */ - onOverlayClick?: (context: { e: MouseEvent }) => void; } - -export interface TdDialogCardProps - extends Pick< - TdDialogProps, - | 'body' - | 'cancelBtn' - | 'closeBtn' - | 'confirmBtn' - | 'footer' - | 'header' - | 'theme' - | 'onCancel' - | 'onCloseBtnClick' - | 'onConfirm' - > {} - -export interface DialogOptions extends Omit { - /** - * 对话框挂载的节点。数据类型为 String 时,会被当作选择器处理,进行节点查询。示例:'body' 或 () => document.body - * @default 'body' - */ - attach?: AttachNode; - /** - * 弹框类名,示例:'t-class-dialog-first t-class-dialog-second' - * @default '' - */ - className?: string; - /** - * 弹框 style 属性,输入 [CSSStyleDeclaration.cssText](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/cssText) - */ - style?: string | Styles; -} - -export interface DialogInstance { - /** - * 销毁弹框 - */ - destroy: () => void; - /** - * 隐藏弹框 - */ - hide: () => void; - /** - * 设置确认按钮加载状态 - */ - setConfirmLoading: (loading: boolean) => void; - /** - * 显示弹框 - */ - show: () => void; - /** - * 更新弹框内容 - */ - update: (props: DialogOptions) => void; -} - -export type DialogEventSource = 'esc' | 'close-btn' | 'cancel' | 'overlay'; - -export interface DialogCloseContext { - trigger: DialogEventSource; - e: MouseEvent | KeyboardEvent; -} - -export type DialogMethod = (options?: DialogOptions) => DialogInstance; - -export type DialogConfirmMethod = (options?: DialogOptions) => DialogInstance; - -export type DialogAlertMethod = (options?: Omit) => DialogInstance; diff --git a/packages/scripts/api.json b/packages/scripts/api.json index cdac1107d..b4276c114 100644 --- a/packages/scripts/api.json +++ b/packages/scripts/api.json @@ -40791,6 +40791,433 @@ ], "field_type_text": [] }, + { + "id": 1739543304, + "platform_framework": [ + "1" + ], + "component": "DialogCard", + "field_category": 1, + "field_name": "body", + "field_type": [ + "1", + "64" + ], + "field_default_value": "", + "field_enum": "", + "field_desc_zh": "对话框内容", + "field_desc_en": null, + "field_required": 0, + "event_input": "", + "create_time": "2025-02-14 14:28:24", + "update_time": "2025-02-14 14:28:24", + "event_output": null, + "custom_field_type": null, + "syntactic_sugar": null, + "readonly": 1, + "html_attribute": 0, + "trigger_elements": "", + "deprecated": 0, + "version": "", + "test_description": null, + "support_default_value": 0, + "field_category_text": "Props", + "platform_framework_text": [ + "Vue(PC)" + ], + "field_type_text": [ + "String", + "TNode" + ] + }, + { + "id": 1739543335, + "platform_framework": [ + "1" + ], + "component": "DialogCard", + "field_category": 1, + "field_name": "cancelBtn", + "field_type": [ + "1", + "8", + "64" + ], + "field_default_value": "", + "field_enum": "", + "field_desc_zh": "取消按钮,可自定义。值为 null 则不显示取消按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制取消事件", + "field_desc_en": null, + "field_required": 0, + "event_input": "", + "create_time": "2025-02-14 14:28:55", + "update_time": "2025-02-14 14:28:55", + "event_output": null, + "custom_field_type": "string | ButtonProps | TNode | null【import { ButtonProps } from '@Button'】", + "syntactic_sugar": null, + "readonly": 1, + "html_attribute": 0, + "trigger_elements": "", + "deprecated": 0, + "version": "", + "test_description": null, + "support_default_value": 0, + "field_category_text": "Props", + "platform_framework_text": [ + "Vue(PC)" + ], + "field_type_text": [ + "String", + "Object", + "TNode" + ] + }, + { + "id": 1739543363, + "platform_framework": [ + "1" + ], + "component": "DialogCard", + "field_category": 1, + "field_name": "closeBtn", + "field_type": [ + "1", + "4", + "64" + ], + "field_default_value": "true", + "field_enum": "", + "field_desc_zh": "关闭按钮,可以自定义。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string 则直接显示值,如:“关闭”。值类型为 TNode,则表示呈现自定义按钮示例", + "field_desc_en": null, + "field_required": 0, + "event_input": "", + "create_time": "2025-02-14 14:29:23", + "update_time": "2025-02-14 14:29:23", + "event_output": null, + "custom_field_type": "string | ButtonProps | TNode | null【import { ButtonProps } from '@Button'】", + "syntactic_sugar": null, + "readonly": 1, + "html_attribute": 0, + "trigger_elements": "", + "deprecated": 0, + "version": "", + "test_description": null, + "support_default_value": 0, + "field_category_text": "Props", + "platform_framework_text": [ + "Vue(PC)" + ], + "field_type_text": [ + "String", + "Boolean", + "TNode" + ] + }, + { + "id": 1739543397, + "platform_framework": [ + "1" + ], + "component": "DialogCard", + "field_category": 1, + "field_name": "confirmBtn", + "field_type": [ + "1", + "8", + "64" + ], + "field_default_value": "true", + "field_enum": "", + "field_desc_zh": "确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制确认事件", + "field_desc_en": null, + "field_required": 0, + "event_input": "", + "create_time": "2025-02-14 14:29:57", + "update_time": "2025-02-14 14:29:57", + "event_output": null, + "custom_field_type": "string | ButtonProps | TNode | null", + "syntactic_sugar": null, + "readonly": 1, + "html_attribute": 0, + "trigger_elements": "", + "deprecated": 0, + "version": "", + "test_description": null, + "support_default_value": 0, + "field_category_text": "Props", + "platform_framework_text": [ + "Vue(PC)" + ], + "field_type_text": [ + "String", + "Object", + "TNode" + ] + }, + { + "id": 1739543439, + "platform_framework": [ + "1" + ], + "component": "DialogCard", + "field_category": 1, + "field_name": "confirmLoading", + "field_type": [ + "4" + ], + "field_default_value": "", + "field_enum": "", + "field_desc_zh": "确认按钮加载状态", + "field_desc_en": "confirm button loading status", + "field_required": 0, + "event_input": "", + "create_time": "2025-02-14 14:30:39", + "update_time": "2025-02-14 14:30:39", + "event_output": null, + "custom_field_type": "string | ButtonProps | TNode | null", + "syntactic_sugar": null, + "readonly": 1, + "html_attribute": 0, + "trigger_elements": "", + "deprecated": 0, + "version": "", + "test_description": null, + "support_default_value": 0, + "field_category_text": "Props", + "platform_framework_text": [ + "Vue(PC)" + ], + "field_type_text": [ + "Boolean" + ] + }, + { + "id": 1739543482, + "platform_framework": [ + "1" + ], + "component": "DialogCard", + "field_category": 1, + "field_name": "footer", + "field_type": [ + "4", + "64" + ], + "field_default_value": "true", + "field_enum": "", + "field_desc_zh": "底部操作栏,默认会有“确认”和“取消”两个按钮。值为 true 显示默认操作按钮,值为 false 不显示任何内容,值类型为 Function 表示自定义底部内容", + "field_desc_en": null, + "field_required": 0, + "event_input": "", + "create_time": "2025-02-14 14:31:22", + "update_time": "2025-02-14 14:31:22", + "event_output": null, + "custom_field_type": null, + "syntactic_sugar": null, + "readonly": 1, + "html_attribute": 0, + "trigger_elements": "", + "deprecated": 0, + "version": "", + "test_description": null, + "support_default_value": 0, + "field_category_text": "Props", + "platform_framework_text": [ + "Vue(PC)" + ], + "field_type_text": [ + "Boolean", + "TNode" + ] + }, + { + "id": 1739543515, + "platform_framework": [ + "1" + ], + "component": "DialogCard", + "field_category": 1, + "field_name": "header", + "field_type": [ + "1", + "4", + "64" + ], + "field_default_value": "true", + "field_enum": "", + "field_desc_zh": "头部内容。值为 true 显示空白头部,值为 false 不显示任何内容,值类型为 string 则直接显示值,值类型为 Function 表示自定义头部内容", + "field_desc_en": null, + "field_required": 0, + "event_input": "", + "create_time": "2025-02-14 14:31:55", + "update_time": "2025-02-14 14:31:55", + "event_output": null, + "custom_field_type": null, + "syntactic_sugar": null, + "readonly": 1, + "html_attribute": 0, + "trigger_elements": "", + "deprecated": 0, + "version": "", + "test_description": null, + "support_default_value": 0, + "field_category_text": "Props", + "platform_framework_text": [ + "Vue(PC)" + ], + "field_type_text": [ + "String", + "Boolean", + "TNode" + ] + }, + { + "id": 1739543544, + "platform_framework": [ + "1" + ], + "component": "DialogCard", + "field_category": 1, + "field_name": "theme", + "field_type": [ + "1" + ], + "field_default_value": "default", + "field_enum": "default/info/warning/danger/success", + "field_desc_zh": "对话框风格", + "field_desc_en": null, + "field_required": 0, + "event_input": "", + "create_time": "2025-02-14 14:32:24", + "update_time": "2025-02-14 14:32:24", + "event_output": null, + "custom_field_type": null, + "syntactic_sugar": null, + "readonly": 1, + "html_attribute": 0, + "trigger_elements": "", + "deprecated": 0, + "version": "", + "test_description": null, + "support_default_value": 0, + "field_category_text": "Props", + "platform_framework_text": [ + "Vue(PC)" + ], + "field_type_text": [ + "String" + ] + }, + { + "id": 1739543594, + "platform_framework": [ + "1" + ], + "component": "DialogCard", + "field_category": 2, + "field_name": "cancel", + "field_type": [ + "1" + ], + "field_default_value": "default", + "field_enum": "default/info/warning/danger/success", + "field_desc_zh": "如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件", + "field_desc_en": null, + "field_required": 0, + "event_input": "(context: { e: MouseEvent })", + "create_time": "2025-02-14 14:33:14", + "update_time": "2025-02-14 14:33:14", + "event_output": null, + "custom_field_type": null, + "syntactic_sugar": null, + "readonly": 1, + "html_attribute": 0, + "trigger_elements": "MouseEvent", + "deprecated": 0, + "version": "", + "test_description": null, + "support_default_value": 0, + "field_category_text": "Events", + "platform_framework_text": [ + "Vue(PC)" + ], + "field_type_text": [ + "String" + ] + }, + { + "id": 1739543624, + "platform_framework": [ + "1" + ], + "component": "DialogCard", + "field_category": 2, + "field_name": "closeBtnClick", + "field_type": [ + "1" + ], + "field_default_value": "default", + "field_enum": "default/info/warning/danger/success", + "field_desc_zh": "点击右上角关闭按钮时触发", + "field_desc_en": null, + "field_required": 0, + "event_input": "(context: { e: MouseEvent })", + "create_time": "2025-02-14 14:33:44", + "update_time": "2025-02-14 14:33:44", + "event_output": null, + "custom_field_type": null, + "syntactic_sugar": null, + "readonly": 1, + "html_attribute": 0, + "trigger_elements": "", + "deprecated": 0, + "version": "", + "test_description": null, + "support_default_value": 0, + "field_category_text": "Events", + "platform_framework_text": [ + "Vue(PC)" + ], + "field_type_text": [ + "String" + ] + }, + { + "id": 1739543673, + "platform_framework": [ + "1" + ], + "component": "DialogCard", + "field_category": 2, + "field_name": "confirm", + "field_type": [ + "1" + ], + "field_default_value": "default", + "field_enum": "default/info/warning/danger/success", + "field_desc_zh": "如果“确认”按钮存在,则点击“确认”按钮时触发,或者键盘按下回车键时触发", + "field_desc_en": null, + "field_required": 0, + "event_input": "(context: { e: MouseEvent | KeyboardEvent })", + "create_time": "2025-02-14 14:34:33", + "update_time": "2025-02-14 14:34:33", + "event_output": null, + "custom_field_type": null, + "syntactic_sugar": null, + "readonly": 1, + "html_attribute": 0, + "trigger_elements": "MouseEvent", + "deprecated": 0, + "version": "", + "test_description": null, + "support_default_value": 0, + "field_category_text": "Events", + "platform_framework_text": [ + "Vue(PC)" + ], + "field_type_text": [ + "String" + ] + }, { "id": 3325, "platform_framework": [ @@ -40800,7 +41227,7 @@ ], "component": "DialogCard", "field_category": 16, - "field_name": "Pick", + "field_name": "Pick", "field_type": [ "1", "64" From 355004850256ca0408da313599a2148442b89384 Mon Sep 17 00:00:00 2001 From: Wesley <985189328@qq.com> Date: Fri, 14 Feb 2025 22:47:14 +0800 Subject: [PATCH 2/5] chore: resolve Conflicts --- .../products/tdesign-vue/src/dialog/type.ts | 200 ++++++++++++++++-- 1 file changed, 181 insertions(+), 19 deletions(-) diff --git a/packages/products/tdesign-vue/src/dialog/type.ts b/packages/products/tdesign-vue/src/dialog/type.ts index e88b5f3bd..4e9ffa469 100644 --- a/packages/products/tdesign-vue/src/dialog/type.ts +++ b/packages/products/tdesign-vue/src/dialog/type.ts @@ -5,23 +5,13 @@ * */ import { ButtonProps } from '../button'; -import { TNode } from '../common'; +import { TNode, Styles, AttachNode } from '../common'; -export interface TdDialogCardProps - extends Pick< - TdDialogProps, - | 'body' - | 'cancelBtn' - | 'closeBtn' - | 'confirmBtn' - | 'footer' - | 'header' - | 'theme' - | 'onCancel' - | 'onCloseBtnClick' - | 'onConfirm' - | 'confirmLoading' - > { +export interface TdDialogProps { + /** + * 对话框挂载的节点。数据类型为 String 时,会被当作选择器处理,进行节点查询。示例:'body' 或 () => document.body + */ + attach?: AttachNode; /** * 对话框内容 */ @@ -34,16 +24,50 @@ export interface TdDialogCardProps * 关闭按钮,可以自定义。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string 则直接显示值,如:“关闭”。值类型为 TNode,则表示呈现自定义按钮示例 * @default true */ - closeBtn?: string | ButtonProps | TNode | null; + closeBtn?: string | boolean | TNode; + /** + * 按下 ESC 时是否触发对话框关闭事件 + */ + closeOnEscKeydown?: boolean; + /** + * 点击蒙层时是否触发关闭事件 + */ + closeOnOverlayClick?: boolean; /** * 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制确认事件 - * @default true */ confirmBtn?: string | ButtonProps | TNode | null; /** * 确认按钮加载状态 */ - confirmLoading?: string | ButtonProps | TNode | null; + confirmLoading?: boolean; + /** + * 是否在按下回车键时,触发确认事件 + */ + confirmOnEnter?: boolean; + /** + * 对话框内容,同 body + */ + default?: string | TNode; + /** + * 是否在关闭弹框的时候销毁子元素 + * @default false + */ + destroyOnClose?: boolean; + /** + * 弹框元素类名,示例:'t-class-dialog-first t-class-dialog-second' + * @default '' + */ + dialogClassName?: string; + /** + * 作用于对话框本身的样式 + */ + dialogStyle?: Styles; + /** + * 对话框是否可以拖拽(仅在非模态对话框时有效) + * @default false + */ + draggable?: boolean; /** * 底部操作栏,默认会有“确认”和“取消”两个按钮。值为 true 显示默认操作按钮,值为 false 不显示任何内容,值类型为 Function 表示自定义底部内容 * @default true @@ -54,21 +78,159 @@ export interface TdDialogCardProps * @default true */ header?: string | boolean | TNode; + /** + * 对话框类型,有 4 种:模态对话框、非模态对话框、普通对话框、全屏对话框。弹出「模态对话框」时,只能操作对话框里面的内容,不能操作其他内容。弹出「非模态对话框」时,则可以操作页面内所有内容。「普通对话框」是指没有脱离文档流的对话框,可以在这个基础上开发更多的插件 + * @default modal + */ + mode?: 'modal' | 'modeless' | 'normal' | 'full-screen'; + /** + * 对话框位置,内置两种:垂直水平居中显示 和 靠近顶部(top:20%)显示。默认情况,为避免贴顶或贴底,顶部和底部距离最小为 `48px`,可通过调整 `top` 覆盖默认大小 + * @default top + */ + placement?: 'top' | 'center'; + /** + * 防止滚动穿透 + * @default true + */ + preventScrollThrough?: boolean; + /** + * 仅在挂载元素中显示抽屉,默认在浏览器可视区域显示。父元素需要有定位属性,如:position: relative + * @default false + */ + showInAttachedElement?: boolean; + /** + * 是否显示遮罩层 + * @default true + */ + showOverlay?: boolean; /** * 对话框风格 * @default default */ theme?: 'default' | 'info' | 'warning' | 'danger' | 'success'; + /** + * 用于弹框具体窗口顶部的距离,优先级大于 placement + */ + top?: string | number; + /** + * 控制对话框是否显示 + */ + visible?: boolean; + /** + * 对话框宽度,示例:320, '500px', '80%' + */ + width?: string | number; + /** + * 对话框层级,Web 侧样式默认为 2500,移动端和小程序样式默认为 1500 + */ + zIndex?: number; + /** + * 对话框执行消失动画效果前触发 + */ + onBeforeClose?: () => void; + /** + * 对话框执行弹出动画效果前触发 + */ + onBeforeOpen?: () => void; /** * 如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件 */ onCancel?: (context: { e: MouseEvent }) => void; + /** + * 关闭事件,点击取消按钮、点击关闭按钮、点击蒙层、按下 ESC 等场景下触发 + */ + onClose?: (context: DialogCloseContext) => void; /** * 点击右上角关闭按钮时触发 */ onCloseBtnClick?: (context: { e: MouseEvent }) => void; + /** + * 对话框消失动画效果结束后触发 + */ + onClosed?: () => void; /** * 如果“确认”按钮存在,则点击“确认”按钮时触发,或者键盘按下回车键时触发 */ onConfirm?: (context: { e: MouseEvent | KeyboardEvent }) => void; + /** + * 按下 ESC 时触发事件 + */ + onEscKeydown?: (context: { e: KeyboardEvent }) => void; + /** + * 对话框弹出动画效果结束后触发 + */ + onOpened?: () => void; + /** + * 如果蒙层存在,点击蒙层时触发 + */ + onOverlayClick?: (context: { e: MouseEvent }) => void; +} + +export interface TdDialogCardProps + extends Pick< + TdDialogProps, + | 'body' + | 'cancelBtn' + | 'closeBtn' + | 'confirmBtn' + | 'footer' + | 'header' + | 'theme' + | 'onCancel' + | 'onCloseBtnClick' + | 'onConfirm' + | 'confirmLoading' + > {} + +export interface DialogOptions extends Omit { + /** + * 对话框挂载的节点。数据类型为 String 时,会被当作选择器处理,进行节点查询。示例:'body' 或 () => document.body + * @default 'body' + */ + attach?: AttachNode; + /** + * 弹框类名,示例:'t-class-dialog-first t-class-dialog-second' + * @default '' + */ + className?: string; + /** + * 弹框 style 属性,输入 [CSSStyleDeclaration.cssText](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/cssText) + */ + style?: string | Styles; } + +export interface DialogInstance { + /** + * 销毁弹框 + */ + destroy: () => void; + /** + * 隐藏弹框 + */ + hide: () => void; + /** + * 设置确认按钮加载状态 + */ + setConfirmLoading: (loading: boolean) => void; + /** + * 显示弹框 + */ + show: () => void; + /** + * 更新弹框内容 + */ + update: (props: DialogOptions) => void; +} + +export type DialogEventSource = 'esc' | 'close-btn' | 'cancel' | 'overlay'; + +export interface DialogCloseContext { + trigger: DialogEventSource; + e: MouseEvent | KeyboardEvent; +} + +export type DialogMethod = (options?: DialogOptions) => DialogInstance; + +export type DialogConfirmMethod = (options?: DialogOptions) => DialogInstance; + +export type DialogAlertMethod = (options?: Omit) => DialogInstance; \ No newline at end of file From aa2ddba7b5cd98409f947efcd85dbc6e2c9e85b9 Mon Sep 17 00:00:00 2001 From: Wesley <985189328@qq.com> Date: Fri, 14 Feb 2025 22:49:48 +0800 Subject: [PATCH 3/5] chore: resolve Conflicts --- .../dialog-card/dialog-card.en-US.md | 29 ------------------- .../components/dialog-card/dialog-card.md | 29 ------------------- 2 files changed, 58 deletions(-) delete mode 100644 packages/products/tdesign-vue-next/packages/components/dialog-card/dialog-card.en-US.md delete mode 100644 packages/products/tdesign-vue-next/packages/components/dialog-card/dialog-card.md diff --git a/packages/products/tdesign-vue-next/packages/components/dialog-card/dialog-card.en-US.md b/packages/products/tdesign-vue-next/packages/components/dialog-card/dialog-card.en-US.md deleted file mode 100644 index 469860515..000000000 --- a/packages/products/tdesign-vue-next/packages/components/dialog-card/dialog-card.en-US.md +++ /dev/null @@ -1,29 +0,0 @@ -:: BASE_DOC :: - -## API - - -### DialogCard Props - -name | type | default | description | required --- | -- | -- | -- | -- -body | String / Slot / Function | - | Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -cancelBtn | String / Object / Slot / Function | - | Typescript:`string \| ButtonProps \| TNode \| null`,[Button API Documents](./button?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts)。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/dialog/type.ts) | N -closeBtn | String / Boolean / Slot / Function | true | Typescript:`string \| ButtonProps \| TNode \| null`,[Button API Documents](./button?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts)。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/dialog/type.ts) | N -confirmBtn | String / Object / Slot / Function | true | Typescript:`string \| ButtonProps \| TNode \| null`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -confirmLoading | Boolean | - | confirm button loading status。Typescript:`string \| ButtonProps \| TNode \| null`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -footer | Boolean / Slot / Function | true | Typescript:`boolean \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -header | String / Boolean / Slot / Function | true | Typescript:`string \| boolean \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -theme | String | default | options: default/info/warning/danger/success | N -`Pick` | String / Slot / Function | - | extends `Pick`。Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -onCancel | Function | | Typescript:`(context: { e: MouseEvent }) => void`
options: default/info/warning/danger/success | N -onCloseBtnClick | Function | | Typescript:`(context: { e: MouseEvent }) => void`
options: default/info/warning/danger/success | N -onConfirm | Function | | Typescript:`(context: { e: MouseEvent \| KeyboardEvent }) => void`
options: default/info/warning/danger/success | N - -### DialogCard Events - -name | params | description --- | -- | -- -cancel | `(context: { e: MouseEvent })` | options: default/info/warning/danger/success -close-btn-click | `(context: { e: MouseEvent })` | options: default/info/warning/danger/success -confirm | `(context: { e: MouseEvent \| KeyboardEvent })` | options: default/info/warning/danger/success diff --git a/packages/products/tdesign-vue-next/packages/components/dialog-card/dialog-card.md b/packages/products/tdesign-vue-next/packages/components/dialog-card/dialog-card.md deleted file mode 100644 index 6638baae3..000000000 --- a/packages/products/tdesign-vue-next/packages/components/dialog-card/dialog-card.md +++ /dev/null @@ -1,29 +0,0 @@ -:: BASE_DOC :: - -## API - - -### DialogCard Props - -名称 | 类型 | 默认值 | 描述 | 必传 --- | -- | -- | -- | -- -body | String / Slot / Function | - | 对话框内容。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -cancelBtn | String / Object / Slot / Function | - | 取消按钮,可自定义。值为 null 则不显示取消按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制取消事件。TS 类型:`string \| ButtonProps \| TNode \| null`,[Button API Documents](./button?tab=api)。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts)。[详细类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/dialog/type.ts) | N -closeBtn | String / Boolean / Slot / Function | true | 关闭按钮,可以自定义。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string 则直接显示值,如:“关闭”。值类型为 TNode,则表示呈现自定义按钮示例。TS 类型:`string \| ButtonProps \| TNode \| null`,[Button API Documents](./button?tab=api)。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts)。[详细类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/dialog/type.ts) | N -confirmBtn | String / Object / Slot / Function | true | 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制确认事件。TS 类型:`string \| ButtonProps \| TNode \| null`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -confirmLoading | Boolean | - | 确认按钮加载状态。TS 类型:`string \| ButtonProps \| TNode \| null`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -footer | Boolean / Slot / Function | true | 底部操作栏,默认会有“确认”和“取消”两个按钮。值为 true 显示默认操作按钮,值为 false 不显示任何内容,值类型为 Function 表示自定义底部内容。TS 类型:`boolean \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -header | String / Boolean / Slot / Function | true | 头部内容。值为 true 显示空白头部,值为 false 不显示任何内容,值类型为 string 则直接显示值,值类型为 Function 表示自定义头部内容。TS 类型:`string \| boolean \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -theme | String | default | 对话框风格。可选项:default/info/warning/danger/success | N -`Pick` | String / Slot / Function | - | 继承 `Pick` 中的全部属性。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -onCancel | Function | | TS 类型:`(context: { e: MouseEvent }) => void`
如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件。可选项:default/info/warning/danger/success | N -onCloseBtnClick | Function | | TS 类型:`(context: { e: MouseEvent }) => void`
点击右上角关闭按钮时触发。可选项:default/info/warning/danger/success | N -onConfirm | Function | | TS 类型:`(context: { e: MouseEvent \| KeyboardEvent }) => void`
如果“确认”按钮存在,则点击“确认”按钮时触发,或者键盘按下回车键时触发。可选项:default/info/warning/danger/success | N - -### DialogCard Events - -名称 | 参数 | 描述 --- | -- | -- -cancel | `(context: { e: MouseEvent })` | 如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件。可选项:default/info/warning/danger/success -close-btn-click | `(context: { e: MouseEvent })` | 点击右上角关闭按钮时触发。可选项:default/info/warning/danger/success -confirm | `(context: { e: MouseEvent \| KeyboardEvent })` | 如果“确认”按钮存在,则点击“确认”按钮时触发,或者键盘按下回车键时触发。可选项:default/info/warning/danger/success From 824ace38dac673fe6544e7454e4d6e01e0f583b1 Mon Sep 17 00:00:00 2001 From: Wesley <985189328@qq.com> Date: Fri, 14 Feb 2025 22:52:12 +0800 Subject: [PATCH 4/5] chore: resolve Conflicts --- .../packages/components/dialog/type.ts | 200 ++++++++++++++++-- 1 file changed, 181 insertions(+), 19 deletions(-) diff --git a/packages/products/tdesign-vue-next/packages/components/dialog/type.ts b/packages/products/tdesign-vue-next/packages/components/dialog/type.ts index e88b5f3bd..f981e3ae2 100644 --- a/packages/products/tdesign-vue-next/packages/components/dialog/type.ts +++ b/packages/products/tdesign-vue-next/packages/components/dialog/type.ts @@ -5,23 +5,13 @@ * */ import { ButtonProps } from '../button'; -import { TNode } from '../common'; +import { TNode, Styles, AttachNode } from '../common'; -export interface TdDialogCardProps - extends Pick< - TdDialogProps, - | 'body' - | 'cancelBtn' - | 'closeBtn' - | 'confirmBtn' - | 'footer' - | 'header' - | 'theme' - | 'onCancel' - | 'onCloseBtnClick' - | 'onConfirm' - | 'confirmLoading' - > { +export interface TdDialogProps { + /** + * 对话框挂载的节点。数据类型为 String 时,会被当作选择器处理,进行节点查询。示例:'body' 或 () => document.body + */ + attach?: AttachNode; /** * 对话框内容 */ @@ -34,16 +24,50 @@ export interface TdDialogCardProps * 关闭按钮,可以自定义。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string 则直接显示值,如:“关闭”。值类型为 TNode,则表示呈现自定义按钮示例 * @default true */ - closeBtn?: string | ButtonProps | TNode | null; + closeBtn?: string | boolean | TNode; + /** + * 按下 ESC 时是否触发对话框关闭事件 + */ + closeOnEscKeydown?: boolean; + /** + * 点击蒙层时是否触发关闭事件 + */ + closeOnOverlayClick?: boolean; /** * 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制确认事件 - * @default true */ confirmBtn?: string | ButtonProps | TNode | null; /** * 确认按钮加载状态 */ - confirmLoading?: string | ButtonProps | TNode | null; + confirmLoading?: boolean; + /** + * 是否在按下回车键时,触发确认事件 + */ + confirmOnEnter?: boolean; + /** + * 对话框内容,同 body + */ + default?: string | TNode; + /** + * 是否在关闭弹框的时候销毁子元素 + * @default false + */ + destroyOnClose?: boolean; + /** + * 弹框元素类名,示例:'t-class-dialog-first t-class-dialog-second' + * @default '' + */ + dialogClassName?: string; + /** + * 作用于对话框本身的样式 + */ + dialogStyle?: Styles; + /** + * 对话框是否可以拖拽(仅在非模态对话框时有效) + * @default false + */ + draggable?: boolean; /** * 底部操作栏,默认会有“确认”和“取消”两个按钮。值为 true 显示默认操作按钮,值为 false 不显示任何内容,值类型为 Function 表示自定义底部内容 * @default true @@ -54,21 +78,159 @@ export interface TdDialogCardProps * @default true */ header?: string | boolean | TNode; + /** + * 对话框类型,有 4 种:模态对话框、非模态对话框、普通对话框、全屏对话框。弹出「模态对话框」时,只能操作对话框里面的内容,不能操作其他内容。弹出「非模态对话框」时,则可以操作页面内所有内容。「普通对话框」是指没有脱离文档流的对话框,可以在这个基础上开发更多的插件 + * @default modal + */ + mode?: 'modal' | 'modeless' | 'normal' | 'full-screen'; + /** + * 对话框位置,内置两种:垂直水平居中显示 和 靠近顶部(top:20%)显示。默认情况,为避免贴顶或贴底,顶部和底部距离最小为 `48px`,可通过调整 `top` 覆盖默认大小 + * @default top + */ + placement?: 'top' | 'center'; + /** + * 防止滚动穿透 + * @default true + */ + preventScrollThrough?: boolean; + /** + * 仅在挂载元素中显示抽屉,默认在浏览器可视区域显示。父元素需要有定位属性,如:position: relative + * @default false + */ + showInAttachedElement?: boolean; + /** + * 是否显示遮罩层 + * @default true + */ + showOverlay?: boolean; /** * 对话框风格 * @default default */ theme?: 'default' | 'info' | 'warning' | 'danger' | 'success'; + /** + * 用于弹框具体窗口顶部的距离,优先级大于 placement + */ + top?: string | number; + /** + * 控制对话框是否显示 + */ + visible?: boolean; + /** + * 对话框宽度,示例:320, '500px', '80%' + */ + width?: string | number; + /** + * 对话框层级,Web 侧样式默认为 2500,移动端和小程序样式默认为 1500 + */ + zIndex?: number; + /** + * 对话框执行消失动画效果前触发 + */ + onBeforeClose?: () => void; + /** + * 对话框执行弹出动画效果前触发 + */ + onBeforeOpen?: () => void; /** * 如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件 */ onCancel?: (context: { e: MouseEvent }) => void; + /** + * 关闭事件,点击取消按钮、点击关闭按钮、点击蒙层、按下 ESC 等场景下触发 + */ + onClose?: (context: DialogCloseContext) => void; /** * 点击右上角关闭按钮时触发 */ onCloseBtnClick?: (context: { e: MouseEvent }) => void; + /** + * 对话框消失动画效果结束后触发 + */ + onClosed?: () => void; /** * 如果“确认”按钮存在,则点击“确认”按钮时触发,或者键盘按下回车键时触发 */ onConfirm?: (context: { e: MouseEvent | KeyboardEvent }) => void; + /** + * 按下 ESC 时触发事件 + */ + onEscKeydown?: (context: { e: KeyboardEvent }) => void; + /** + * 对话框弹出动画效果结束后触发 + */ + onOpened?: () => void; + /** + * 如果蒙层存在,点击蒙层时触发 + */ + onOverlayClick?: (context: { e: MouseEvent }) => void; +} + +export interface TdDialogCardProps + extends Pick< + TdDialogProps, + | 'body' + | 'cancelBtn' + | 'closeBtn' + | 'confirmBtn' + | 'footer' + | 'header' + | 'theme' + | 'onCancel' + | 'onCloseBtnClick' + | 'onConfirm' + | 'confirmLoading' + > {} + +export interface DialogOptions extends Omit { + /** + * 对话框挂载的节点。数据类型为 String 时,会被当作选择器处理,进行节点查询。示例:'body' 或 () => document.body + * @default 'body' + */ + attach?: AttachNode; + /** + * 弹框类名,示例:'t-class-dialog-first t-class-dialog-second' + * @default '' + */ + className?: string; + /** + * 弹框 style 属性,输入 [CSSStyleDeclaration.cssText](https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/cssText) + */ + style?: string | Styles; } + +export interface DialogInstance { + /** + * 销毁弹框 + */ + destroy: () => void; + /** + * 隐藏弹框 + */ + hide: () => void; + /** + * 设置确认按钮加载状态 + */ + setConfirmLoading: (loading: boolean) => void; + /** + * 显示弹框 + */ + show: () => void; + /** + * 更新弹框内容 + */ + update: (props: DialogOptions) => void; +} + +export type DialogEventSource = 'esc' | 'close-btn' | 'cancel' | 'overlay'; + +export interface DialogCloseContext { + trigger: DialogEventSource; + e: MouseEvent | KeyboardEvent; +} + +export type DialogMethod = (options?: DialogOptions) => DialogInstance; + +export type DialogConfirmMethod = (options?: DialogOptions) => DialogInstance; + +export type DialogAlertMethod = (options?: Omit) => DialogInstance; From 03bc3c9b805bb26cdede3dbd0faa56eddabf710f Mon Sep 17 00:00:00 2001 From: Wesley <985189328@qq.com> Date: Fri, 14 Feb 2025 22:55:57 +0800 Subject: [PATCH 5/5] chore: resolve Conflicts --- .../src/dialog-card/dialog-card.en-US.md | 29 ------------------- .../src/dialog-card/dialog-card.md | 29 ------------------- 2 files changed, 58 deletions(-) delete mode 100644 packages/products/tdesign-vue/src/dialog-card/dialog-card.en-US.md delete mode 100644 packages/products/tdesign-vue/src/dialog-card/dialog-card.md diff --git a/packages/products/tdesign-vue/src/dialog-card/dialog-card.en-US.md b/packages/products/tdesign-vue/src/dialog-card/dialog-card.en-US.md deleted file mode 100644 index 758f746ed..000000000 --- a/packages/products/tdesign-vue/src/dialog-card/dialog-card.en-US.md +++ /dev/null @@ -1,29 +0,0 @@ -:: BASE_DOC :: - -## API - - -### DialogCard Props - -name | type | default | description | required --- | -- | -- | -- | -- -body | String / Slot / Function | - | Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -cancelBtn | String / Object / Slot / Function | - | Typescript:`string \| ButtonProps \| TNode \| null`,[Button API Documents](./button?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts)。[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/dialog/type.ts) | N -closeBtn | String / Boolean / Slot / Function | true | Typescript:`string \| ButtonProps \| TNode \| null`,[Button API Documents](./button?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts)。[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/dialog/type.ts) | N -confirmBtn | String / Object / Slot / Function | true | Typescript:`string \| ButtonProps \| TNode \| null`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -confirmLoading | Boolean | - | confirm button loading status。Typescript:`string \| ButtonProps \| TNode \| null`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -footer | Boolean / Slot / Function | true | Typescript:`boolean \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -header | String / Boolean / Slot / Function | true | Typescript:`string \| boolean \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -theme | String | default | options: default/info/warning/danger/success | N -`Pick` | String / Slot / Function | - | extends `Pick`。Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -onCancel | Function | | Typescript:`(context: { e: MouseEvent }) => void`
options: default/info/warning/danger/success | N -onCloseBtnClick | Function | | Typescript:`(context: { e: MouseEvent }) => void`
options: default/info/warning/danger/success | N -onConfirm | Function | | Typescript:`(context: { e: MouseEvent \| KeyboardEvent }) => void`
options: default/info/warning/danger/success | N - -### DialogCard Events - -name | params | description --- | -- | -- -cancel | `(context: { e: MouseEvent })` | options: default/info/warning/danger/success -close-btn-click | `(context: { e: MouseEvent })` | options: default/info/warning/danger/success -confirm | `(context: { e: MouseEvent \| KeyboardEvent })` | options: default/info/warning/danger/success diff --git a/packages/products/tdesign-vue/src/dialog-card/dialog-card.md b/packages/products/tdesign-vue/src/dialog-card/dialog-card.md deleted file mode 100644 index 6645302d5..000000000 --- a/packages/products/tdesign-vue/src/dialog-card/dialog-card.md +++ /dev/null @@ -1,29 +0,0 @@ -:: BASE_DOC :: - -## API - - -### DialogCard Props - -名称 | 类型 | 默认值 | 描述 | 必传 --- | -- | -- | -- | -- -body | String / Slot / Function | - | 对话框内容。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -cancelBtn | String / Object / Slot / Function | - | 取消按钮,可自定义。值为 null 则不显示取消按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制取消事件。TS 类型:`string \| ButtonProps \| TNode \| null`,[Button API Documents](./button?tab=api)。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts)。[详细类型定义](https://github.com/Tencent/tdesign-vue/tree/develop/src/dialog/type.ts) | N -closeBtn | String / Boolean / Slot / Function | true | 关闭按钮,可以自定义。值为 true 显示默认关闭按钮,值为 false 不显示关闭按钮。值类型为 string 则直接显示值,如:“关闭”。值类型为 TNode,则表示呈现自定义按钮示例。TS 类型:`string \| ButtonProps \| TNode \| null`,[Button API Documents](./button?tab=api)。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts)。[详细类型定义](https://github.com/Tencent/tdesign-vue/tree/develop/src/dialog/type.ts) | N -confirmBtn | String / Object / Slot / Function | true | 确认按钮。值为 null 则不显示确认按钮。值类型为字符串,则表示自定义按钮文本,值类型为 Object 则表示透传 Button 组件属性。使用 TNode 自定义按钮时,需自行控制确认事件。TS 类型:`string \| ButtonProps \| TNode \| null`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -confirmLoading | Boolean | - | 确认按钮加载状态。TS 类型:`string \| ButtonProps \| TNode \| null`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -footer | Boolean / Slot / Function | true | 底部操作栏,默认会有“确认”和“取消”两个按钮。值为 true 显示默认操作按钮,值为 false 不显示任何内容,值类型为 Function 表示自定义底部内容。TS 类型:`boolean \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -header | String / Boolean / Slot / Function | true | 头部内容。值为 true 显示空白头部,值为 false 不显示任何内容,值类型为 string 则直接显示值,值类型为 Function 表示自定义头部内容。TS 类型:`string \| boolean \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -theme | String | default | 对话框风格。可选项:default/info/warning/danger/success | N -`Pick` | String / Slot / Function | - | 继承 `Pick` 中的全部属性。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -onCancel | Function | | TS 类型:`(context: { e: MouseEvent }) => void`
如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件。可选项:default/info/warning/danger/success | N -onCloseBtnClick | Function | | TS 类型:`(context: { e: MouseEvent }) => void`
点击右上角关闭按钮时触发。可选项:default/info/warning/danger/success | N -onConfirm | Function | | TS 类型:`(context: { e: MouseEvent \| KeyboardEvent }) => void`
如果“确认”按钮存在,则点击“确认”按钮时触发,或者键盘按下回车键时触发。可选项:default/info/warning/danger/success | N - -### DialogCard Events - -名称 | 参数 | 描述 --- | -- | -- -cancel | `(context: { e: MouseEvent })` | 如果“取消”按钮存在,则点击“取消”按钮时触发,同时触发关闭事件。可选项:default/info/warning/danger/success -close-btn-click | `(context: { e: MouseEvent })` | 点击右上角关闭按钮时触发。可选项:default/info/warning/danger/success -confirm | `(context: { e: MouseEvent \| KeyboardEvent })` | 如果“确认”按钮存在,则点击“确认”按钮时触发,或者键盘按下回车键时触发。可选项:default/info/warning/danger/success