From 5e61f23106b671c862548d4c4d3ca5f14ee724e9 Mon Sep 17 00:00:00 2001 From: roymondchen Date: Thu, 15 Aug 2024 11:44:09 +0800 Subject: [PATCH] =?UTF-8?q?feat(design,element-plus-adapter,tdesign-vue-ne?= =?UTF-8?q?xt-adapter):=20=E9=87=8D=E6=96=B0=E5=AE=9E=E7=8E=B0Popover?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=EF=BC=8C=E4=B8=8D=E5=86=8D=E4=BD=BF=E7=94=A8?= =?UTF-8?q?element-plus=E6=88=96tdesign=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/design/package.json | 3 + packages/design/src/Popover.vue | 253 +++++++++++++++++- packages/design/src/types.ts | 15 +- packages/editor/src/theme/page-bar.scss | 4 +- packages/element-plus-adapter/package.json | 2 +- packages/element-plus-adapter/src/index.ts | 7 - packages/table/src/schema.ts | 21 +- .../tdesign-vue-next-adapter/src/Popover.vue | 27 -- .../tdesign-vue-next-adapter/src/index.ts | 7 - 9 files changed, 267 insertions(+), 72 deletions(-) delete mode 100644 packages/tdesign-vue-next-adapter/src/Popover.vue diff --git a/packages/design/package.json b/packages/design/package.json index fa18abf3..7c901e25 100644 --- a/packages/design/package.json +++ b/packages/design/package.json @@ -36,6 +36,9 @@ "vue3", "typescript" ], + "dependencies": { + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7" + }, "devDependencies": { "@types/node": "^18.19.0", "@vitejs/plugin-vue": "^5.1.1", diff --git a/packages/design/src/Popover.vue b/packages/design/src/Popover.vue index 3fdec213..7c6d66a5 100644 --- a/packages/design/src/Popover.vue +++ b/packages/design/src/Popover.vue @@ -1,28 +1,253 @@ + + diff --git a/packages/design/src/types.ts b/packages/design/src/types.ts index 8e358193..e447bb5f 100644 --- a/packages/design/src/types.ts +++ b/packages/design/src/types.ts @@ -1,4 +1,5 @@ import { ComputedRef, DefineComponent, Directive, Ref } from 'vue'; +import type { Placement } from '@popperjs/core'; export type FieldSize = 'large' | 'default' | 'small'; @@ -223,15 +224,12 @@ export interface PaginationProps { } export interface PopoverProps { - placement?: string; + placement?: Placement; width?: string | number; - title?: string; - trigger?: string; - effect?: string; - content?: string; + trigger?: 'hover' | 'click'; disabled?: boolean; - popperClass?: string; visible?: boolean; + popperClass?: string; } export interface RadioProps { @@ -570,11 +568,6 @@ export interface Components { props: (props: PaginationProps) => PaginationProps; }; - popover: { - component: DefineComponent | string; - props: (props: PopoverProps) => PopoverProps; - }; - radio: { component: DefineComponent | string; props: (props: RadioProps) => RadioProps; diff --git a/packages/editor/src/theme/page-bar.scss b/packages/editor/src/theme/page-bar.scss index 590eeba1..fa018056 100644 --- a/packages/editor/src/theme/page-bar.scss +++ b/packages/editor/src/theme/page-bar.scss @@ -81,8 +81,8 @@ } .page-bar-popover { - &.el-popper.el-popover { - padding: 10px 0; + &.tmagic-design-popper { + padding: 4px 0; } .menu-item { diff --git a/packages/element-plus-adapter/package.json b/packages/element-plus-adapter/package.json index da5f5776..45044bee 100644 --- a/packages/element-plus-adapter/package.json +++ b/packages/element-plus-adapter/package.json @@ -43,7 +43,7 @@ }, "peerDependencies": { "@tmagic/design": "workspace:*", - "element-plus": ">=2.7.8", + "element-plus": ">=2.8.0", "typescript": "*" }, "peerDependenciesMeta": { diff --git a/packages/element-plus-adapter/src/index.ts b/packages/element-plus-adapter/src/index.ts index 29c05606..25e4b353 100644 --- a/packages/element-plus-adapter/src/index.ts +++ b/packages/element-plus-adapter/src/index.ts @@ -27,7 +27,6 @@ import { ElOption, ElOptionGroup, ElPagination, - ElPopover, ElRadio, ElRadioButton, ElRadioGroup, @@ -76,7 +75,6 @@ import type { OptionProps, PaginationProps, PluginOptions, - PopoverProps, RadioButtonProps, RadioGroupProps, RadioProps, @@ -230,11 +228,6 @@ const adapter: PluginOptions = { props: (props: PaginationProps) => props, }, - popover: { - component: ElPopover as any, - props: (props: PopoverProps) => props, - }, - radio: { component: ElRadio as any, props: (props: RadioProps) => props, diff --git a/packages/table/src/schema.ts b/packages/table/src/schema.ts index cfc6a257..8857f1bf 100644 --- a/packages/table/src/schema.ts +++ b/packages/table/src/schema.ts @@ -50,9 +50,24 @@ export interface ColumnConfig { table?: ColumnConfig[]; formatter?: 'datetime' | ((item: any, row: T) => any); popover?: { - placement: string; - width: string; - trigger: string; + placement: + | 'auto' + | 'auto-start' + | 'auto-end' + | 'left' + | 'right' + | 'top' + | 'bottom' + | 'top-start' + | 'top-end' + | 'bottom-start' + | 'bottom-end' + | 'right-start' + | 'right-end' + | 'left-start' + | 'left-end'; + width: string | number; + trigger: 'hover' | 'click'; tableEmbed: boolean; }; sortable?: boolean | 'custom'; diff --git a/packages/tdesign-vue-next-adapter/src/Popover.vue b/packages/tdesign-vue-next-adapter/src/Popover.vue deleted file mode 100644 index 744337f6..00000000 --- a/packages/tdesign-vue-next-adapter/src/Popover.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/packages/tdesign-vue-next-adapter/src/index.ts b/packages/tdesign-vue-next-adapter/src/index.ts index db9585d3..e3df5e99 100644 --- a/packages/tdesign-vue-next-adapter/src/index.ts +++ b/packages/tdesign-vue-next-adapter/src/index.ts @@ -64,7 +64,6 @@ import type { OptionGroupProps, OptionProps, PaginationProps, - PopoverProps, RadioButtonProps, RadioGroupProps, RadioProps, @@ -85,7 +84,6 @@ import type { import DatePicker from './DatePicker.vue'; import Icon from './Icon.vue'; import Input from './Input.vue'; -import Popover from './Popover.vue'; import Scrollbar from './Scrollbar.vue'; import TableColumn from './TableColumn.vue'; @@ -348,11 +346,6 @@ const adapter: any = { }), }, - popover: { - component: Popover, - props: (props: PopoverProps) => props, - }, - radio: { component: TRadio, props: (props: RadioProps) => ({