From 8b9523edd2bf6dbfca070b09b35b2c89dbc59e21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=94=BF=E6=9D=83?= <1978141412@qq.com> Date: Thu, 26 Sep 2024 19:40:22 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E5=B7=A5=E5=85=B7=E6=A0=8F?= =?UTF-8?q?=E6=96=B0=E5=A2=9Epopper=E6=A8=A1=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../popper-toolbar/popper-toolbar.scss | 33 +++++ .../toolbar/popper-toolbar/popper-toolbar.tsx | 126 ++++++++++++++++++ src/control/toolbar/toolbar.tsx | 28 ++++ 3 files changed, 187 insertions(+) create mode 100644 src/control/toolbar/popper-toolbar/popper-toolbar.scss create mode 100644 src/control/toolbar/popper-toolbar/popper-toolbar.tsx diff --git a/src/control/toolbar/popper-toolbar/popper-toolbar.scss b/src/control/toolbar/popper-toolbar/popper-toolbar.scss new file mode 100644 index 00000000..8211409c --- /dev/null +++ b/src/control/toolbar/popper-toolbar/popper-toolbar.scss @@ -0,0 +1,33 @@ +@include b(popper-toolbar) { + flex-direction: column; + @include e(item) { + margin: 0.25rem 0; + } + &.#{bem('control-toolbar')} { + position: fixed; + right: var(--van-back-top-right); + bottom: 130px; + height: auto; + } + .van-popover { + --van-popup-background: transparent; + --van-popover-light-background: transparent; + --van-popover-action-width: 80px; + max-height: unset; + .van-popover__content { + box-shadow: none; + overflow: visible; + } + + .van-popover__content--horizontal .van-popover__action { + padding: 0 0.25rem; + } + + .van-popover__content--vertical { + .van-popover__action { + margin: 0.25rem 0; + padding: 0; + } + } + } +} \ No newline at end of file diff --git a/src/control/toolbar/popper-toolbar/popper-toolbar.tsx b/src/control/toolbar/popper-toolbar/popper-toolbar.tsx new file mode 100644 index 00000000..cb17f025 --- /dev/null +++ b/src/control/toolbar/popper-toolbar/popper-toolbar.tsx @@ -0,0 +1,126 @@ +import { useNamespace } from '@ibiz-template/vue3-util'; +import { defineComponent, PropType, Ref, ref, VNode } from 'vue'; +import { IDETBGroupItem, IDEToolbar, IDEToolbarItem } from '@ibiz/model-core'; +import { IExtraButton, ToolbarController } from '@ibiz-template/runtime'; +import './popper-toolbar.scss'; + +export const IBizPopperToolbar = defineComponent({ + name: 'IBizPopperToolbar', + props: { + modelData: { type: Object as PropType, required: true }, + context: { type: Object as PropType, required: true }, + params: { type: Object as PropType, default: () => ({}) }, + controller: { type: Object as PropType, required: true }, + }, + setup(props, { slots }) { + const c = props.controller; + const ns = useNamespace(`popper-toolbar`); + + const contentRef: Ref = ref(); + + // 列表绘制方向 + let direction: 'vertical' | 'horizontal' = 'horizontal'; + + // 弹出方向 + let placement: string = 'left'; + + if (c.controlParams) { + direction = c.controlParams.direction || 'horizontal'; + placement = c.controlParams.placement || 'left'; + } + + // 点击事件 + const handleClick = async ( + item: IDEToolbarItem | IExtraButton, + event: MouseEvent, + ) => { + await c.onItemClick(item, event); + }; + + const renderToolbarItem = (item: IDEToolbarItem) => { + const itemId = item.id!; + if (['SEPERATOR', 'RAWITEM'].includes(item.itemType!)) { + ibiz.log.error( + ibiz.i18n.t('control.toolbar.noSupportType', { + itemType: item.itemType, + }), + ); + return null; + } + if (item.itemType === 'ITEMS') { + return ( +
+ { + handleClick(data, e); + }} + > + {{ + action: ({ action }: { action: IData }): VNode => { + return {action.tooltip}; + }, + reference: (): VNode => { + return {item.tooltip}; + }, + }} + +
+ ); + } + if ( + item.itemType === 'DEUIACTION' && + c.state.buttonsState[itemId]?.visible + ) { + return ( +
+ handleClick(item, e)} + > + {slots.btnContent!(item, c.state.viewMode)} + +
+ ); + } + + return null; + }; + + return { + c, + ns, + direction, + contentRef, + renderToolbarItem, + }; + }, + render() { + return ( + + {this.modelData.detoolbarItems?.map(item => { + const toolbarItemNode = this.renderToolbarItem(item); + return toolbarItemNode; + })} + + ); + }, +}); diff --git a/src/control/toolbar/toolbar.tsx b/src/control/toolbar/toolbar.tsx index e214c7fa..a997d68c 100644 --- a/src/control/toolbar/toolbar.tsx +++ b/src/control/toolbar/toolbar.tsx @@ -7,6 +7,7 @@ import { IDEToolbarItem, } from '@ibiz/model-core'; import { IExtraButton, ToolbarController } from '@ibiz-template/runtime'; +import { IBizPopperToolbar } from './popper-toolbar/popper-toolbar'; import './toolbar.scss'; const btnContent = (item: IDEToolbarItem | IExtraButton, viewMode: string) => { @@ -61,6 +62,9 @@ export const ToolbarControl = defineComponent({ case 'MOBBOTTOMMENU': position = 'bottom'; break; + case 'USER': + position = 'popper'; + break; default: break; } @@ -171,6 +175,30 @@ export const ToolbarControl = defineComponent({ render() { const { state } = this.c; + if (this.position === 'popper') { + return ( + + {{ + btnContent: ( + item: IDEToolbarItem | IExtraButton, + viewMode: string, + ) => { + return btnContent(item, viewMode); + }, + }} + + ); + } + return ( Date: Thu, 26 Sep 2024 19:40:39 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E8=A7=86?= =?UTF-8?q?=E5=9B=BE=E6=95=B0=E6=8D=AE=E7=9C=8B=E6=9D=BF=E8=A7=86=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/view-engine/index.ts | 8 ++++++++ src/view/portal-view/index.ts | 7 +++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/view-engine/index.ts b/src/view-engine/index.ts index 2156d483..0732b215 100644 --- a/src/view-engine/index.ts +++ b/src/view-engine/index.ts @@ -96,6 +96,14 @@ export const IBizViewEngine = { `VIEW_APPPORTALVIEW`, (c: IMobViewController) => new PortalViewEngine(c), ); + ibiz.engine.register( + `VIEW_DEMOBPORTALVIEW`, + (c: IMobViewController) => new PortalViewEngine(c), + ); + ibiz.engine.register( + `VIEW_DEMOBPORTALVIEW9`, + (c: IMobViewController) => new PortalViewEngine(c), + ); ibiz.engine.register( `VIEW_DEMOBCUSTOMVIEW`, (c: IMobViewController) => new MobCustomViewEngine(c), diff --git a/src/view/portal-view/index.ts b/src/view/portal-view/index.ts index 71237ffb..794771cf 100644 --- a/src/view/portal-view/index.ts +++ b/src/view/portal-view/index.ts @@ -10,9 +10,12 @@ export const IBizPortalView = withInstall(PortalView, function (v: App) { ViewType.APP_PORTAL_VIEW, () => new PortalViewProvider(), ); - registerViewProvider(ViewType.DE_PORTAL_VIEW, () => new PortalViewProvider()); registerViewProvider( - ViewType.DE_PORTAL_VIEW9, + ViewType.DE_MOB_PORTAL_VIEW, + () => new PortalViewProvider(), + ); + registerViewProvider( + ViewType.DE_MOB_PORTAL_VIEW9, () => new PortalViewProvider(), ); }); -- Gitee From 4182ce7173adae61b8f117313db150903082b356 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9C=B1=E6=94=BF=E6=9D=83?= <1978141412@qq.com> Date: Thu, 26 Sep 2024 19:40:48 +0800 Subject: [PATCH 3/3] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 391c77d2..8839be45 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ ## [Unreleased] +### Change + +- 工具栏新增popper模式 +- 支持视图数据看板视图 + ## [0.0.21] - 2024-09-25 ### Change -- Gitee