From be27e654aaf7b67bf342ebdf0d1c7470a11ad4b4 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, 16 Jan 2025 19:53:51 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E8=87=AA=E5=8A=A8=E5=A1=AB?= =?UTF-8?q?=E5=85=85=E7=BC=96=E8=BE=91=E5=99=A8=E6=94=AF=E6=8C=81=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E8=A1=8C=E4=B8=BA=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autocomplete-editor.controller.ts | 81 ++++++++++++++++++- .../ibiz-autocomplete/ibiz-autocomplete.scss | 6 ++ .../ibiz-autocomplete/ibiz-autocomplete.tsx | 28 ++++++- 3 files changed, 113 insertions(+), 2 deletions(-) diff --git a/src/editor/autocomplete/autocomplete-editor.controller.ts b/src/editor/autocomplete/autocomplete-editor.controller.ts index c832a660f..a89f31ce0 100644 --- a/src/editor/autocomplete/autocomplete-editor.controller.ts +++ b/src/editor/autocomplete/autocomplete-editor.controller.ts @@ -1,14 +1,20 @@ import { IHttpResponse, RuntimeModelError } from '@ibiz-template/core'; import { + ButtonContainerState, EditorController, IAcItemProvider, + IButtonContainerState, + UIActionButtonState, + UIActionUtil, getAcItemProvider, getDeACMode, } from '@ibiz-template/runtime'; import { IAppDEACMode, + IAppDEUIActionGroupDetail, IAutoComplete, IDEACModeDataItem, + IUIActionGroupDetail, } from '@ibiz/model-core'; import { mergeDeepLeft } from 'ramda'; @@ -58,6 +64,18 @@ export class AutoCompleteEditorController extends EditorController { super.onInit(); if (this.model.appDataEntityId) { @@ -98,6 +116,41 @@ export class AutoCompleteEditorController extends EditorController 0) { + this.actionDetails.forEach(detail => { + const actionid = detail.uiactionId; + if (actionid) { + const buttonState = new UIActionButtonState( + detail.id!, + this.context.srfappid!, + actionid, + ); + this.groupActionState.addState(detail.id!, buttonState); + } + }); + await this.groupActionState.init(); + // 转换多语言 + this.actionDetails.forEach(detail => { + if (detail.capLanguageRes && detail.capLanguageRes.lanResTag) { + detail.caption = ibiz.i18n.t( + detail.capLanguageRes.lanResTag, + detail.caption, + ); + } + if ( + detail.tooltipLanguageRes && + detail.tooltipLanguageRes.lanResTag + ) { + detail.tooltip = ibiz.i18n.t( + detail.tooltipLanguageRes.lanResTag, + detail.tooltip, + ); + } + }); + } + } } /** @@ -106,7 +159,7 @@ export class AutoCompleteEditorController extends EditorController>} - * @memberof PickerEditorController + * @memberof AutoCompleteEditorController */ public async getServiceData( query: string, @@ -178,4 +231,30 @@ export class AutoCompleteEditorController extends EditorController} + * @memberof AutoCompleteEditorController + */ + async onActionClick( + detail: IUIActionGroupDetail, + event: MouseEvent, + ): Promise { + event.stopPropagation(); + const actionId = detail.uiactionId; + await UIActionUtil.execAndResolved( + actionId!, + { + context: this.context, + params: this.params, + data: [], + view: this.view, + event, + }, + detail.appId, + ); + } } diff --git a/src/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.scss b/src/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.scss index 9460a73ec..63193c295 100644 --- a/src/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.scss +++ b/src/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.scss @@ -9,6 +9,12 @@ } } + // 界面行为项 + @include e(action-item) { + color: getCssVar(color, link); + text-align: center; + } + @include b(autocomplete-input) { width: 100%; } diff --git a/src/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.tsx b/src/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.tsx index 18eef68dd..9f141bb0b 100644 --- a/src/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.tsx +++ b/src/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.tsx @@ -15,6 +15,7 @@ import { import './ibiz-autocomplete.scss'; import { debounce } from 'lodash-es'; import { showTitle } from '@ibiz-template/core'; +import { IAppDEUIActionGroupDetail } from '@ibiz/model-core'; import { AutoCompleteEditorController } from '../autocomplete-editor.controller'; export const IBizAutoComplete = defineComponent({ @@ -89,7 +90,7 @@ export const IBizAutoComplete = defineComponent({ items.value = res.data as IData[]; isSearched.value = true; if (cb && cb instanceof Function) { - cb(items.value); + cb([...items.value, ...c.actionDetails]); } } } @@ -217,6 +218,27 @@ export const IBizAutoComplete = defineComponent({ } }; + const renderActionItem = (detail: IAppDEUIActionGroupDetail) => { + if (!c.groupActionState[detail.id!].visible) { + return; + } + return ( +
c.onActionClick(detail, event)} + title={showTitle(detail.tooltip)} + > + {detail.showIcon && detail.sysImage && ( + + )} + {detail.showCaption ? detail.caption : ''} +
+ ); + }; + return { ns, c, @@ -236,6 +258,7 @@ export const IBizAutoComplete = defineComponent({ isEditable, setEditable, showFormDefaultContent, + renderActionItem, }; }, render() { @@ -270,6 +293,9 @@ export const IBizAutoComplete = defineComponent({ > {{ default: ({ item }: { item: IData }) => { + if (item.detailType === 'DEUIACTION') { + return this.renderActionItem(item); + } if (this.c.acItemProvider) { const component = resolveComponent( this.c.acItemProvider.component, -- Gitee From f5cd0528e2a6c27c25f75ce963ce419ac3f870b6 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, 16 Jan 2025 19:54:39 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=E6=95=B0=E6=8D=AE=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E7=BC=96=E8=BE=91=E5=99=A8=E6=94=AF=E6=8C=81=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E8=A1=8C=E4=B8=BA=E7=BB=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 5 ++++ .../data-picker/ibiz-picker/ibiz-picker.scss | 6 ++++ .../data-picker/ibiz-picker/ibiz-picker.tsx | 28 ++++++++++++++++++- 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d77f4279..c2661befd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,11 @@ ## [Unreleased] +### Added + +- 自动填充编辑器支持界面行为组 +- 数据选择编辑器支持界面行为组 + ## [0.7.38-alpha.50] - 2025-01-15 ### Added diff --git a/src/editor/data-picker/ibiz-picker/ibiz-picker.scss b/src/editor/data-picker/ibiz-picker/ibiz-picker.scss index efee72515..eb676ce9b 100644 --- a/src/editor/data-picker/ibiz-picker/ibiz-picker.scss +++ b/src/editor/data-picker/ibiz-picker/ibiz-picker.scss @@ -94,6 +94,12 @@ $picker: ( white-space: nowrap; } } + + // 界面行为项 + @include e(action-item) { + color: getCssVar(color, link); + text-align: center; + } } // 表单下的编辑器默认显示,悬浮上去显示编辑器 diff --git a/src/editor/data-picker/ibiz-picker/ibiz-picker.tsx b/src/editor/data-picker/ibiz-picker/ibiz-picker.tsx index 53f5ae0e2..705b413c3 100644 --- a/src/editor/data-picker/ibiz-picker/ibiz-picker.tsx +++ b/src/editor/data-picker/ibiz-picker/ibiz-picker.tsx @@ -17,6 +17,7 @@ import { import { isEmpty, isNil } from 'ramda'; import './ibiz-picker.scss'; import { showTitle } from '@ibiz-template/core'; +import { IAppDEUIActionGroupDetail } from '@ibiz/model-core'; import { PickerEditorController } from '../picker-editor.controller'; export const IBizPicker = defineComponent({ @@ -161,7 +162,7 @@ export const IBizPicker = defineComponent({ items.value = res.data as IData[]; isLoaded.value = true; if (cb && cb instanceof Function) { - cb(items.value); + cb([...items.value, ...c.actionDetails]); } } } @@ -253,6 +254,27 @@ export const IBizPicker = defineComponent({ ); }); + const renderActionItem = (detail: IAppDEUIActionGroupDetail) => { + if (!c.groupActionState[detail.id!].visible) { + return; + } + return ( +
c.onActionClick(detail, event)} + title={showTitle(detail.tooltip)} + > + {detail.showIcon && detail.sysImage && ( + + )} + {detail.showCaption ? detail.caption : ''} +
+ ); + }; + return { ns, c, @@ -272,6 +294,7 @@ export const IBizPicker = defineComponent({ isEditable, setEditable, showFormDefaultContent, + renderActionItem, }; }, render() { @@ -397,6 +420,9 @@ export const IBizPicker = defineComponent({ if (this.$slots.append) { return this.$slots.append({}); } + if (item.detailType === 'DEUIACTION') { + return this.renderActionItem(item); + } return itemContent(item); }, suffix: () => { -- Gitee From 213da1bac0f73fc248b2c2cce54e3fbcb84eb7f0 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, 16 Jan 2025 20:46:11 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=E8=87=AA=E5=8A=A8=E5=A1=AB?= =?UTF-8?q?=E5=85=85=E3=80=81=E6=95=B0=E6=8D=AE=E9=80=89=E6=8B=A9=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E7=95=8C=E9=9D=A2=E8=A1=8C=E4=B8=BA=E7=BB=84=20--f1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/editor/autocomplete/autocomplete-editor.controller.ts | 3 ++- .../autocomplete/ibiz-autocomplete/ibiz-autocomplete.tsx | 2 +- .../data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.tsx | 2 +- src/editor/data-picker/ibiz-picker/ibiz-picker.tsx | 2 +- src/editor/data-picker/picker-editor.controller.ts | 3 ++- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/editor/autocomplete/autocomplete-editor.controller.ts b/src/editor/autocomplete/autocomplete-editor.controller.ts index a89f31ce0..8f1abf8d0 100644 --- a/src/editor/autocomplete/autocomplete-editor.controller.ts +++ b/src/editor/autocomplete/autocomplete-editor.controller.ts @@ -242,6 +242,7 @@ export class AutoCompleteEditorController extends EditorController { event.stopPropagation(); const actionId = detail.uiactionId; @@ -250,7 +251,7 @@ export class AutoCompleteEditorController extends EditorController c.onActionClick(detail, event)} + onClick={event => c.onActionClick(detail, event, props.data)} title={showTitle(detail.tooltip)} > {detail.showIcon && detail.sysImage && ( diff --git a/src/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.tsx b/src/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.tsx index ede3d5731..28906b20d 100644 --- a/src/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.tsx +++ b/src/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.tsx @@ -320,7 +320,7 @@ export const IBizPickerDropDown = defineComponent({ >
c.onActionClick(detail, event)} + onClick={event => c.onActionClick(detail, event, props.data)} > {detail.showIcon && detail.sysImage && ( diff --git a/src/editor/data-picker/ibiz-picker/ibiz-picker.tsx b/src/editor/data-picker/ibiz-picker/ibiz-picker.tsx index 705b413c3..b110fc157 100644 --- a/src/editor/data-picker/ibiz-picker/ibiz-picker.tsx +++ b/src/editor/data-picker/ibiz-picker/ibiz-picker.tsx @@ -264,7 +264,7 @@ export const IBizPicker = defineComponent({ ns.e('action-item'), ns.is('disabled', c.groupActionState[detail.id!].disabled), ]} - onClick={event => c.onActionClick(detail, event)} + onClick={event => c.onActionClick(detail, event, props.data)} title={showTitle(detail.tooltip)} > {detail.showIcon && detail.sysImage && ( diff --git a/src/editor/data-picker/picker-editor.controller.ts b/src/editor/data-picker/picker-editor.controller.ts index 6dbd3054e..8d833ab9f 100644 --- a/src/editor/data-picker/picker-editor.controller.ts +++ b/src/editor/data-picker/picker-editor.controller.ts @@ -442,6 +442,7 @@ export class PickerEditorController extends EditorController { async onActionClick( detail: IUIActionGroupDetail, event: MouseEvent, + data: IData, ): Promise { event.stopPropagation(); const actionId = detail.uiactionId; @@ -450,7 +451,7 @@ export class PickerEditorController extends EditorController { { context: this.context, params: this.params, - data: [], + data: [data], view: this.view, event, }, -- Gitee