diff --git a/CHANGELOG.md b/CHANGELOG.md index 97521a1645880bb0afd4f8ce3f8b58af7dbb19ec..3a5a6dca7d716a262c4e6b8d5a4dbe67a7fcf4d3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,13 @@ - 更新多数据选择视图选择列表的选择样式 - 工具栏新增popper模式 - 支持视图数据看板视图 +- 气泡工具栏支持按钮样式 +- 表单项、表单分组支持点击事件 + +### Fixed + +- 阻止面板按钮点击冒泡 +- 修复分割线中间空白异常 ## [0.0.21] - 2024-09-25 diff --git a/src/common/rawitem/rawitem.tsx b/src/common/rawitem/rawitem.tsx index fea5e0e862f5c1ba30ce3c31ef6717dda327c70f..d7dca4a3c00399bff6b4c19341421b42281ae351 100644 --- a/src/common/rawitem/rawitem.tsx +++ b/src/common/rawitem/rawitem.tsx @@ -259,10 +259,17 @@ export const IBizRawItem = defineComponent({ ); } if (this.rawItemType === 'DIVIDER') { + if (this.dividerParams.html) { + return ( + + + + ); + } return ( - - - + ); } if ( diff --git a/src/control/form/form-detail/form-druipart/form-druipart.tsx b/src/control/form/form-detail/form-druipart/form-druipart.tsx index 1cb25152075c89a9803972958721e5b1acecb2fd..d4d52917eec9392dec79a264ce4e0b619e5398ca 100644 --- a/src/control/form/form-detail/form-druipart/form-druipart.tsx +++ b/src/control/form/form-detail/form-druipart/form-druipart.tsx @@ -57,7 +57,10 @@ export const FormDRUIPart = defineComponent({ } const viewShell = resolveComponent('IBizViewShell'); return ( -
+
this.controller.onClick(event)} + > {header}
{h(viewShell, { diff --git a/src/control/form/form-detail/form-group-panel/form-group-panel.tsx b/src/control/form/form-detail/form-group-panel/form-group-panel.tsx index 85ffff350c267f01795c0220671ef1a18ef80f1e..25c3feefeeaf99091218df995cc29b265daebbf3 100644 --- a/src/control/form/form-detail/form-group-panel/form-group-panel.tsx +++ b/src/control/form/form-detail/form-group-panel/form-group-panel.tsx @@ -132,7 +132,10 @@ export const FormGroupPanel = defineComponent({ } return ( -
+
this.controller.onClick(event)} + > {header}
{content}
{footer} diff --git a/src/control/form/form-detail/form-item/form-item.tsx b/src/control/form/form-detail/form-item/form-item.tsx index 953d38be914e4992dad01b26c7376ec029bbd1aa..3934331467c2f876113c76184dbe51ab8cb484ab 100644 --- a/src/control/form/form-detail/form-item/form-item.tsx +++ b/src/control/form/form-detail/form-item/form-item.tsx @@ -15,6 +15,10 @@ export const FormItem = defineComponent({ type: FormItemController, required: true, }, + attrs: { + type: Object as PropType, + required: false, + }, }, setup(props) { const ns = useNamespace('form-item'); @@ -39,6 +43,7 @@ export const FormItem = defineComponent({ // 编辑器内容 let editor = null; + const editMode = this.controller.editor?.model?.editorParams?.editMode; const editorProps = { value: this.controller.value, data: this.controller.data, @@ -46,6 +51,15 @@ export const FormItem = defineComponent({ disabled: this.controller.state.disabled, readonly: this.controller.model.editor!.readOnly, onChange: this.onValueChange, + controlParams: editMode + ? { ...this.controller.form.controlParams, editmode: editMode } + : this.controller.form.controlParams, + onFocus: (event: MouseEvent) => this.c.onFocus(event), + onBlur: (event: MouseEvent) => this.c.onBlur(event), + onEnter: (event: MouseEvent) => this.controller.onEnter(event), + onClick: (event: MouseEvent, params: IParams) => + this.controller.onClick(event, params), + ...this.attrs, }; if (this.c.form.state.isLoaded) { if (this.$slots.default) { @@ -75,6 +89,7 @@ export const FormItem = defineComponent({ label={this.captionText} label-pos={this.c.model.labelPos} label-width={this.c.model.labelWidth} + onClick={(event: MouseEvent) => this.c.onClick(event)} > {editor} diff --git a/src/control/form/form-detail/form-rawitem/form-rawitem.tsx b/src/control/form/form-detail/form-rawitem/form-rawitem.tsx index 955e4666f67d2d4e7858a19d1e6dcb4e3ee6397d..3145221dcf856f42467a8951896cdfd22055c2f0 100644 --- a/src/control/form/form-detail/form-rawitem/form-rawitem.tsx +++ b/src/control/form/form-detail/form-rawitem/form-rawitem.tsx @@ -57,6 +57,7 @@ export const FormRawItem = defineComponent({ class={this.ns.b()} content={content} type={type} + onClick={(event: MouseEvent) => this.controller.onClick(event)} > ); }, diff --git a/src/control/form/form-detail/form-tab-page/form-tab-page.tsx b/src/control/form/form-detail/form-tab-page/form-tab-page.tsx index 8298040e394697d4ff8137c6c5310fc2b6a6ee97..64bbc636ad2da77bf16c6e60c14c1077860a8f48 100644 --- a/src/control/form/form-detail/form-tab-page/form-tab-page.tsx +++ b/src/control/form/form-detail/form-tab-page/form-tab-page.tsx @@ -34,6 +34,7 @@ export const FormTabPage = defineComponent({ ...this.controller.containerClass, ]} layout={this.modelData.layout} + onClick={(event: MouseEvent) => this.controller.onClick(event)} > {defaultSlots.map(slot => { const props = slot.props as IData; diff --git a/src/control/toolbar/popper-toolbar/popper-toolbar.scss b/src/control/toolbar/popper-toolbar/popper-toolbar.scss index 8211409c9567c5a5e15dcb07f742af6c6fc4d3c6..dfb632920b5a8cdd0ba78c0951ec4960989923c5 100644 --- a/src/control/toolbar/popper-toolbar/popper-toolbar.scss +++ b/src/control/toolbar/popper-toolbar/popper-toolbar.scss @@ -8,6 +8,7 @@ right: var(--van-back-top-right); bottom: 130px; height: auto; + z-index: 999; } .van-popover { --van-popup-background: transparent; diff --git a/src/control/toolbar/popper-toolbar/popper-toolbar.tsx b/src/control/toolbar/popper-toolbar/popper-toolbar.tsx index cb17f0250ce5e58ad01f2185639cdaa05cbfd411..ea02d975a06eac4dd18668ad4e3f21fcea56b653 100644 --- a/src/control/toolbar/popper-toolbar/popper-toolbar.tsx +++ b/src/control/toolbar/popper-toolbar/popper-toolbar.tsx @@ -1,6 +1,11 @@ import { useNamespace } from '@ibiz-template/vue3-util'; import { defineComponent, PropType, Ref, ref, VNode } from 'vue'; -import { IDETBGroupItem, IDEToolbar, IDEToolbarItem } from '@ibiz/model-core'; +import { + IDETBGroupItem, + IDETBUIActionItem, + IDEToolbar, + IDEToolbarItem, +} from '@ibiz/model-core'; import { IExtraButton, ToolbarController } from '@ibiz-template/runtime'; import './popper-toolbar.scss'; @@ -29,6 +34,11 @@ export const IBizPopperToolbar = defineComponent({ placement = c.controlParams.placement || 'left'; } + const btnType = (item: IDEToolbarItem) => { + const result = (item as IDETBUIActionItem).buttonStyle || 'default'; + return result.toLowerCase(); + }; + // 点击事件 const handleClick = async ( item: IDEToolbarItem | IExtraButton, @@ -60,11 +70,19 @@ export const IBizPopperToolbar = defineComponent({ }} > {{ - action: ({ action }: { action: IData }): VNode => { - return {action.tooltip}; + action: ({ action }: { action: IDEToolbarItem }): VNode => { + return ( + + {action.tooltip} + + ); }, reference: (): VNode => { - return {item.tooltip}; + return ( + + {item.tooltip} + + ); }, }} @@ -86,7 +104,7 @@ export const IBizPopperToolbar = defineComponent({ > { * @memberof PanelButtonController */ async onActionClick(event: MouseEvent): Promise { + event.stopPropagation(); + event.preventDefault(); const { uiactionId } = this.model; await UIActionUtil.execAndResolved( uiactionId!,