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) => ({