diff --git a/CHANGELOG.md b/CHANGELOG.md index 4a5f1d9eefe3ae923fa904827e314385a3600dfc..8c702b7441934234e3f71ae41e5212ead3c85bd7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,12 @@ - 新增列表部件样式-扩展视图3:仅非分组列表和分组样式2列表支持,实现列表的从下往上的绘制,同时滚动加载也支持上滚加载 - 新增数据多项选择视图,数据多项选择视图(左右关系)视图参数checkstrictly(是否严格的遵循穿梭空左右互相关联) +### Changed + +- 适配全局参数disableHomeTabs(是否禁用分页导航栏)逻辑,该参数为true时首页不显示分页导航栏 +- 适配表单多数据部件对全局参数mdCtrlConfirmBeforeRemove(多数据部件删除前是否需要确认)的支持,并统一多数据部件删除确认弹框的显示样式 +- 调整表单项组件中处理编辑器额外参数逻辑,将其迁移到控制器中处理 + ### Fixed - 修复树选中异常 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 e18365b819fefa927531c3e1a0853d60337a7053..ef6922db4ec2d6e5e6e797beeba5516e4f991d4f 100644 --- a/src/control/form/form-detail/form-item/form-item.tsx +++ b/src/control/form/form-detail/form-item/form-item.tsx @@ -1,4 +1,4 @@ -import { defineComponent, h, PropType, ref, resolveComponent } from 'vue'; +import { defineComponent, h, PropType, resolveComponent } from 'vue'; import { useNamespace } from '@ibiz-template/vue3-util'; import { IDEFormItem } from '@ibiz/model-core'; import { FormItemController } from '@ibiz-template/runtime'; @@ -32,31 +32,7 @@ export const FormItem = defineComponent({ props.controller.setDataValue(val, name, ignore); }; - // 额外参数 - const extraParams = ref({}); - - // 是否隐藏无值的单位 - let emptyHiddenUnit = ibiz.config.form.emptyHiddenUnit; - const emptyhiddenunit = - props.controller.form?.controlParams?.emptyhiddenunit; - - if (emptyhiddenunit) { - emptyHiddenUnit = Object.is(emptyhiddenunit, 'true'); - } - - // 编辑器参数优先级最高 - const editorParams = props.controller.editor?.model?.editorParams || {}; - const { EMPTYHIDDENUNIT } = editorParams; - - if (EMPTYHIDDENUNIT) { - emptyHiddenUnit = Object.is(EMPTYHIDDENUNIT, 'true'); - } - - Object.assign(extraParams.value, { - emptyHiddenUnit, - }); - - return { ns, c, extraParams, onValueChange }; + return { ns, c, onValueChange }; }, render() { if (!this.c.state.visible || this.c.model.editor?.editorType === 'HIDDEN') { @@ -93,7 +69,7 @@ export const FormItem = defineComponent({ disabled: this.c.state.disabled, readonly: this.c.state.readonly, onChange: this.onValueChange, - extraParams: this.extraParams, + extraParams: (this.c.editor as IData)?.extraParams || {}, controlParams: editMode ? { ...this.c.form.controlParams, editmode: editMode } : this.c.form.controlParams, diff --git a/src/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.tsx b/src/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.tsx index 65af121e8747e5065ad8f38f7bf7374676bc82db..9fb9f30c400d82bc2c0eddc5efa5e2cbcccc5c85 100644 --- a/src/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.tsx +++ b/src/control/form/form-detail/form-mdctrl/form-mdctrl-md/form-mdctrl-md.tsx @@ -13,6 +13,7 @@ import { } from '@ibiz-template/runtime'; import { useNamespace } from '@ibiz-template/vue3-util'; import './form-mdctrl-md.scss'; +import { showTitle } from '@ibiz-template/core'; export const FormMDCtrlMD = defineComponent({ name: 'IBizFormMDCtrlMD', @@ -40,7 +41,57 @@ export const FormMDCtrlMD = defineComponent({ isSelected.value = event.data.length > 0; }; - return { ns, showActions, isSelected, onCreated, onSelectionChange }; + /** 处理删除 */ + const handleRemove = (): void => { + isSelected.value = false; + props.controller.remove(); + }; + + /** 绘制删除按钮 */ + const renderRemoveBtn = () => { + if (!props.controller.enableDelete) return null; + if (ibiz.config.form.mdCtrlConfirmBeforeRemove) { + return ( + handleRemove()} + > + {{ + reference: () => { + return ( + + {ibiz.i18n.t('app.delete')} + + ); + }, + }} + + ); + } + return ( + handleRemove()} + > + {ibiz.i18n.t('app.delete')} + + ); + }; + + return { ns, showActions, onCreated, onSelectionChange, renderRemoveBtn }; }, render() { const { mdProvider, model } = this.controller; @@ -81,19 +132,7 @@ export const FormMDCtrlMD = defineComponent({ {ibiz.i18n.t('app.add')} )} - {this.controller.enableDelete && ( - this.controller.remove()} - > - {ibiz.i18n.t('app.delete')} - - )} + {this.renderRemoveBtn()} )} diff --git a/src/editor/span/span/span.tsx b/src/editor/span/span/span.tsx index 02140c6f4393aa21a33f155c08ab83b4d0386ba9..8f53e6063b988f7e85f4684fced0760a423ea0f1 100644 --- a/src/editor/span/span/span.tsx +++ b/src/editor/span/span/span.tsx @@ -36,6 +36,7 @@ function isValidDateFormat(dateStr: string, format: string): boolean { * @editorparams {name:overflowmode,parameterType:'auto' | 'ellipsis',description:文本换行模式。当参数为 'auto' 时,若内容超出宽度则会换行显示;当参数为 'ellipsis' 时,若内容超出宽度则会显示省略号} * @editorparams {"name":"valuetype","parameterType":"string","description":"编辑器的值类型"} * @editorparams {"name":"objectnamefield","parameterType":"string","defaultvalue":"'srfmajortext'","description":"值类型为OBJECT、OBJECTS时显示的对象属性"} + * @editorparams {name:emptyhiddenunit,parameterType:boolean,defaultvalue:true,description:编辑器无值时,其对应的值单位(如'天'、'%'等)是否隐藏} * @ignoreprops autoFocus | overflowMode * @ignoreemits change | blur | focus | enter | infoTextChange */ diff --git a/src/editor/text-box/input/input.tsx b/src/editor/text-box/input/input.tsx index a04661008711903971d834f6ee84d93b559fea95..390a3dc522e3e6fcf40dbbc6ef22debfa9e53378 100644 --- a/src/editor/text-box/input/input.tsx +++ b/src/editor/text-box/input/input.tsx @@ -45,6 +45,7 @@ import './input.scss'; * @editorparams {name:minlength,parameterType:number,description:指定编辑器输入内容的最小字数} * @editorparams {name:maxlength,parameterType:number,description:指定编辑器输入内容的最大字数} * @editorparams {name:readonly,parameterType:boolean,defaultvalue:false,description:设置编辑器是否为只读态} + * @editorparams {name:emptyhiddenunit,parameterType:boolean,defaultvalue:true,description:编辑器无值时,其对应的值单位(如'天'、'%'等)是否隐藏} * @ignoreprops overflowMode * @ignoreemits infoTextChange */ diff --git a/src/panel-component/nav-pos-index/nav-pos-index.tsx b/src/panel-component/nav-pos-index/nav-pos-index.tsx index 05d9173f53fc8b7c0cbfabea2120903ccc756276..4bb296cab0ee1d7561830a463182af9d6602c9f4 100644 --- a/src/panel-component/nav-pos-index/nav-pos-index.tsx +++ b/src/panel-component/nav-pos-index/nav-pos-index.tsx @@ -83,7 +83,7 @@ export const NavPosIndex = defineComponent({ onCreated={this.onViewCreated} > {({ Component }: { Component: string }): VNode | null => { - if (this.c.noCache) { + if (this.c.noCache || ibiz.config.view.disableHomeTabs) { return Component ? : null; } return ( diff --git a/src/panel-component/nav-tabs/nav-tabs.tsx b/src/panel-component/nav-tabs/nav-tabs.tsx index 5387a17cb9db7c37ad237c484f55b4fc7f65c004..cd0cc92eff399f44952605bea72e8fee93792957 100644 --- a/src/panel-component/nav-tabs/nav-tabs.tsx +++ b/src/panel-component/nav-tabs/nav-tabs.tsx @@ -89,6 +89,7 @@ export const NavTabs = defineComponent({ }, render() { const { state } = this.controller; + if (ibiz.config.view.disableHomeTabs) return; return (