From 158d2221e56496ba572db33b0b517cac5df80775 Mon Sep 17 00:00:00 2001 From: anlyyao Date: Mon, 7 Nov 2022 22:32:47 +0800 Subject: [PATCH] feat(miniprogram/DropdownMenu): add external-classes attr --- src/dropdown-menu/README.en-US.md | 4 ++- src/dropdown-menu/README.md | 2 ++ src/dropdown-menu/dropdown-item-props.ts | 4 +++ src/dropdown-menu/dropdown-item.ts | 14 +++++++++ src/dropdown-menu/dropdown-item.wxml | 39 +++++++++++++++--------- src/dropdown-menu/dropdown-menu.ts | 8 +++++ src/dropdown-menu/dropdown-menu.wxml | 10 +++--- src/dropdown-menu/props.ts | 4 +++ src/dropdown-menu/type.ts | 26 ++++++++++++++++ src/dropdown-menu/util.wxs | 2 +- 10 files changed, 91 insertions(+), 22 deletions(-) diff --git a/src/dropdown-menu/README.en-US.md b/src/dropdown-menu/README.en-US.md index e05f8cb8d..310d46eaf 100644 --- a/src/dropdown-menu/README.en-US.md +++ b/src/dropdown-menu/README.en-US.md @@ -9,6 +9,7 @@ active-color | String | - | \- | N close-on-click-overlay | Boolean | true | \- | N custom-style `v0.25.0` | String | - | \- | N duration | String / Number | 200 | \- | N +external-classes | Array | - | `['t-class', 't-class-menu', 't-class-menu-item', 't-class-menu-label', 't-class-menu-icon']` | N show-overlay | Boolean | true | \- | N z-index | Number | 11600 | \- | N @@ -16,8 +17,9 @@ z-index | Number | 11600 | \- | N name | type | default | description | required -- | -- | -- | -- | -- -custom-style | String | - | \- | N +custom-style `v0.25.0` | String | - | \- | N disabled | Boolean | false | \- | N +external-classes | Array | - | `['t-class','t-class-content', 't-class-column', 't-class-column-item', 't-class-column-item-label', 't-class-tree', 't-class-tree-item', 't-class-tree-columns', 't-class-tree-columns-item', 't-class-tree-columns-item-label', 't-class-footer']` | N keys | Object | - | Typescript:`KeysType` | N label | String | - | \- | N multiple | Boolean | false | \- | N diff --git a/src/dropdown-menu/README.md b/src/dropdown-menu/README.md index 87511c598..d5879a3ce 100644 --- a/src/dropdown-menu/README.md +++ b/src/dropdown-menu/README.md @@ -42,6 +42,7 @@ active-color | String | - | 【讨论中】菜单标题和选项的选中态颜 close-on-click-overlay | Boolean | true | 是否在点击遮罩层后关闭菜单 | N custom-style `v0.25.0` | String | - | 自定义组件样式 | N duration | String / Number | 200 | 动画时长 | N +external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、菜单标签、菜单图标类名 等。`['t-class', 't-class-menu', 't-class-menu-item', 't-class-menu-label', 't-class-menu-icon']` | N show-overlay | Boolean | true | 是否显示遮罩层 | N z-index | Number | 11600 | 菜单栏 z-index 层级 | N @@ -58,6 +59,7 @@ toggle | 切换下拉菜单的展示状态,传入索引值则切换对应菜 -- | -- | -- | -- | -- custom-style `v0.25.0` | String | - | 自定义组件样式 | N disabled | Boolean | false | 是否禁用 | N +external-classes | Array | - | 组件类名,分别用于设置 组件外层类名、菜单列、菜单列选项、菜单列选项标签、树形菜单、树形菜单列等类名。`['t-class','t-class-content', 't-class-column', 't-class-column-item', 't-class-column-item-label', 't-class-tree', 't-class-tree-item', 't-class-tree-columns', 't-class-tree-columns-item', 't-class-tree-columns-item-label', 't-class-footer']` | N keys | Object | - | 用来定义 value / label 在 `options` 中对应的字段别名。TS 类型:`KeysType` | N label | String | - | 标题 | N multiple | Boolean | false | 是否多选 | N diff --git a/src/dropdown-menu/dropdown-item-props.ts b/src/dropdown-menu/dropdown-item-props.ts index e5b5894b0..bb999ac69 100644 --- a/src/dropdown-menu/dropdown-item-props.ts +++ b/src/dropdown-menu/dropdown-item-props.ts @@ -16,6 +16,10 @@ const props: TdDropdownItemProps = { type: Boolean, value: false, }, + /** 组件类名,分别用于设置 组件外层类名、菜单列、菜单列选项、菜单列选项标签、树形菜单、树形菜单列等类名 */ + externalClasses: { + type: Array, + }, /** 用来定义 value / label 在 `options` 中对应的字段别名 */ keys: { type: Object, diff --git a/src/dropdown-menu/dropdown-item.ts b/src/dropdown-menu/dropdown-item.ts index 459164970..f6f9dbeba 100644 --- a/src/dropdown-menu/dropdown-item.ts +++ b/src/dropdown-menu/dropdown-item.ts @@ -11,6 +11,20 @@ const name = `${prefix}-dropdown-item`; export interface DropdownItemProps extends TdDropdownItemProps {} @wxComponent() export default class DropdownMenuItem extends SuperComponent { + externalClasses = [ + `${prefix}-class`, + `${prefix}-class-content`, + `${prefix}-class-column`, + `${prefix}-class-column-item`, + `${prefix}-class-column-item-label`, + `${prefix}-class-tree`, + `${prefix}-class-tree-item`, + `${prefix}-class-tree-columns`, + `${prefix}-class-tree-columns-item`, + `${prefix}-class-tree-columns-item-label`, + `${prefix}-class-footer`, + ]; + properties = { ...props, }; diff --git a/src/dropdown-menu/dropdown-item.wxml b/src/dropdown-menu/dropdown-item.wxml index ecb668033..32f8d3117 100644 --- a/src/dropdown-menu/dropdown-item.wxml +++ b/src/dropdown-menu/dropdown-item.wxml @@ -1,6 +1,10 @@ - + - + {{item[labelAlias]}} @@ -77,7 +85,7 @@ {{item[labelAlias]}} - + - + + - {{item.label}} + {{item.label}} diff --git a/src/dropdown-menu/props.ts b/src/dropdown-menu/props.ts index 2f8668aea..825f350cf 100644 --- a/src/dropdown-menu/props.ts +++ b/src/dropdown-menu/props.ts @@ -26,6 +26,10 @@ const props: TdDropdownMenuProps = { type: null, value: 200, }, + /** 组件类名,分别用于设置 组件外层类名、菜单标签、菜单图标类名 等 */ + externalClasses: { + type: Array, + }, /** 是否显示遮罩层 */ showOverlay: { type: Boolean, diff --git a/src/dropdown-menu/type.ts b/src/dropdown-menu/type.ts index 7a91ac3f0..1a21c98a2 100644 --- a/src/dropdown-menu/type.ts +++ b/src/dropdown-menu/type.ts @@ -39,6 +39,13 @@ export interface TdDropdownMenuProps { type: null; value?: string | number; }; + /** + * 组件类名,分别用于设置 组件外层类名、菜单标签、菜单图标类名 等 + */ + externalClasses?: { + type: ArrayConstructor; + value?: ['t-class', 't-class-menu', 't-class-menu-item', 't-class-menu-label', 't-class-menu-icon']; + }; /** * 是否显示遮罩层 * @default true @@ -74,6 +81,25 @@ export interface TdDropdownItemProps { type: BooleanConstructor; value?: boolean; }; + /** + * 组件类名,分别用于设置 组件外层类名、菜单列、菜单列选项、菜单列选项标签、树形菜单、树形菜单列等类名 + */ + externalClasses?: { + type: ArrayConstructor; + value?: [ + 't-class', + 't-class-content', + 't-class-column', + 't-class-column-item', + 't-class-column-item-label', + 't-class-tree', + 't-class-tree-item', + 't-class-tree-columns', + 't-class-tree-columns-item', + 't-class-tree-columns-item-label', + 't-class-footer', + ]; + }; /** * 用来定义 value / label 在 `options` 中对应的字段别名 */ diff --git a/src/dropdown-menu/util.wxs b/src/dropdown-menu/util.wxs index 7fad0e353..aaefda190 100644 --- a/src/dropdown-menu/util.wxs +++ b/src/dropdown-menu/util.wxs @@ -5,7 +5,7 @@ var getTreeClass = function (level) { }; var getDropdownItemStyles = function (top, zIndex, customStyle) { - var topStyle = 'top:' + top + 'px;'; + var topStyle = top ? 'top:' + top + 'px;' : ''; var zIndexStyle = zIndex ? 'z-index:' + zIndex + ';' : ''; return topStyle + zIndexStyle + customStyle; };