diff --git a/CHANGELOG.md b/CHANGELOG.md index 4fed79fb0b444dc2fc9be8e8c1e65c51e6a0ece9..9d60716e4e496c3b34688b37290c139e76a161ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ - 多数据部件排序配置适配图标按钮移入显示title - 分页搜索视图中快捷搜索提示根据当前激活的关系视图显示 - 按钮组支持项显示隐藏 +- 编辑表单及编辑器支持注入属性 ### Fixed diff --git a/src/control/form/form/form.tsx b/src/control/form/form/form.tsx index 39f0cfeb86fca6346ab8bcab47bdd4cbb47cfccd..17618f3087a0959531b3e9573f28d3f7230a580d 100644 --- a/src/control/form/form/form.tsx +++ b/src/control/form/form/form.tsx @@ -1,4 +1,8 @@ -import { findChildFormDetails, FormController } from '@ibiz-template/runtime'; +import { + findChildFormDetails, + FormController, + ScriptFactory, +} from '@ibiz-template/runtime'; import { useNamespace } from '@ibiz-template/vue3-util'; import { IDEFormDetail, IDEFormItem } from '@ibiz/model-core'; import { @@ -27,6 +31,29 @@ export const FormControl = defineComponent({ /** 作用域插槽提供的参数 */ const slotProps: IData = { form: c }; + /** + * 绘制成员的attrs + * @author ljx + * @date 2024-11-13 15:48:00 + * @param {IDEFormDetail} model + * @return {*} {IParams} + */ + const renderAttrs = (model: IDEFormDetail): IParams => { + const attrs: IParams = {}; + model.controlAttributes?.forEach(item => { + if (item.attrName && item.attrValue) { + attrs[item.attrName!] = ScriptFactory.execSingleLine( + item.attrValue!, + { + ...props.controller.getEventArgs(), + data: props.controller.data, + }, + ); + } + }); + return attrs; + }; + /** * 按照类型绘制表单成员 * @author lxm @@ -90,6 +117,7 @@ export const FormControl = defineComponent({ component, { ...detailProps, + attrs: renderAttrs(detail), }, childSlots, ); diff --git a/src/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.tsx b/src/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.tsx index 375c8fbd8c53a6b383a18abfb2a8f84da39e3317..76d3316517924d0e22102fd49dddf8040bba8f26 100644 --- a/src/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.tsx +++ b/src/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.tsx @@ -166,6 +166,7 @@ export const IBizCheckboxList = defineComponent({ direction='horizontal' v-model={this.selectArray} onChange={this.onSelectArrayChange} + {...this.$attrs} > {this.items.map((item, index: number) => ( ); diff --git a/src/editor/radio-button-list/ibiz-radio/ibiz-radio.tsx b/src/editor/radio-button-list/ibiz-radio/ibiz-radio.tsx index a0f92e4ad47db8a3266e1a376640f62f0bb73d25..33cc1ce4e712292c3de6591229db6b6e9e7ecfb7 100644 --- a/src/editor/radio-button-list/ibiz-radio/ibiz-radio.tsx +++ b/src/editor/radio-button-list/ibiz-radio/ibiz-radio.tsx @@ -84,6 +84,7 @@ export const IBizRadio = defineComponent({ class={this.ns.e('group')} v-model={this.currentVal} direction='horizontal' + {...this.$attrs} > {this.items.map((_item, index: number) => ( ); diff --git a/src/editor/slider/ibiz-slider/ibiz-slider.tsx b/src/editor/slider/ibiz-slider/ibiz-slider.tsx index 492da53619e6462a6c0289ff66757cc9ecbf7540..97a17d6e9f5db04d6b35b2e3ec6e624f244971e9 100644 --- a/src/editor/slider/ibiz-slider/ibiz-slider.tsx +++ b/src/editor/slider/ibiz-slider/ibiz-slider.tsx @@ -169,6 +169,7 @@ export const IBizSlider = defineComponent({ min={this.min} range={this.range} onChange={this.handleChange} + {...this.$attrs} > {{ button: () => { diff --git a/src/editor/stepper/ibiz-stepper/ibiz-stepper.tsx b/src/editor/stepper/ibiz-stepper/ibiz-stepper.tsx index f8d4057883458eac52809ef749ab851eed9c072a..105bafa3749c763e8d127c2c7edd93bfbf7bfe15 100644 --- a/src/editor/stepper/ibiz-stepper/ibiz-stepper.tsx +++ b/src/editor/stepper/ibiz-stepper/ibiz-stepper.tsx @@ -112,6 +112,7 @@ export const IBizStepper = defineComponent({ onChange={this.handleChange} onFocus={this.onFocus} onBlur={this.onBlur} + {...this.$attrs} >, ]; } diff --git a/src/editor/switch/ibiz-switch/ibiz-switch.tsx b/src/editor/switch/ibiz-switch/ibiz-switch.tsx index 295c4f59a080ad9db13dfdff380121b156403486..1d3239e8b7d566dab316f1cb4e64d2e574a94cb4 100644 --- a/src/editor/switch/ibiz-switch/ibiz-switch.tsx +++ b/src/editor/switch/ibiz-switch/ibiz-switch.tsx @@ -57,6 +57,7 @@ export const IBizSwitch = defineComponent({ v-model={this.currentVal} disabled={this.disabled || this.readonly} onChange={this.handleChange} + {...this.$attrs} > ); diff --git a/src/editor/text-box/ibiz-input-number/ibiz-input-number.tsx b/src/editor/text-box/ibiz-input-number/ibiz-input-number.tsx index a17e1a83e1d8aa141277028284fe847c8c07e8cb..af46fe4c67fe7b8229bc34dc7f9c9dc2782d8fcd 100644 --- a/src/editor/text-box/ibiz-input-number/ibiz-input-number.tsx +++ b/src/editor/text-box/ibiz-input-number/ibiz-input-number.tsx @@ -110,6 +110,7 @@ export const IBizInputNumber = defineComponent({ onFocus={this.onFocus} onBlur={this.onBlur} onInput={this.handleChange} + {...this.$attrs} >, unitName && {unitName}, ]; diff --git a/src/editor/text-box/input/input.tsx b/src/editor/text-box/input/input.tsx index 2b3a3ccae64096f7810af419a65ebbb6c7d7f446..5901225784f858e89898455ddbe8a4fe69b234c3 100644 --- a/src/editor/text-box/input/input.tsx +++ b/src/editor/text-box/input/input.tsx @@ -175,6 +175,7 @@ export const IBizInput = defineComponent({ autocomplete='new-password' clearable onClear={this.onClear} + {...this.$attrs} > {slots} diff --git a/src/editor/upload/ibiz-file-upload/ibiz-file-upload.tsx b/src/editor/upload/ibiz-file-upload/ibiz-file-upload.tsx index aae4f513726a3fb834bb0695660d3f0f4de22e00..76564070b3519a204597fd4529e781d3892467ee 100644 --- a/src/editor/upload/ibiz-file-upload/ibiz-file-upload.tsx +++ b/src/editor/upload/ibiz-file-upload/ibiz-file-upload.tsx @@ -100,6 +100,7 @@ export const IBizFileUpload = defineComponent({ before-read={this.beforeUpload} after-read={this.afterRead} before-delete={this.onRemove} + {...this.$attrs} > {{ default: () => { diff --git a/src/editor/upload/ibiz-image-select/ibiz-image-select.tsx b/src/editor/upload/ibiz-image-select/ibiz-image-select.tsx index abf54dbeecadd69237d1bd9e728261656d68c3e6..c0c23cf3a70236121b8b3b4a517e2ad1342bc776 100644 --- a/src/editor/upload/ibiz-image-select/ibiz-image-select.tsx +++ b/src/editor/upload/ibiz-image-select/ibiz-image-select.tsx @@ -55,6 +55,7 @@ export const IBizImageSelect = defineComponent({ max-count={1} deletable={false} readonly + {...this.$attrs} > {{ 'preview-cover': (file: IData) => { diff --git a/src/editor/upload/ibiz-image-upload/ibiz-image-upload.tsx b/src/editor/upload/ibiz-image-upload/ibiz-image-upload.tsx index 056122d02c0ac6db83e60d7babb78c791ea0c281..7b11150352886b9815e163817507d3b506de02d3 100644 --- a/src/editor/upload/ibiz-image-upload/ibiz-image-upload.tsx +++ b/src/editor/upload/ibiz-image-upload/ibiz-image-upload.tsx @@ -80,6 +80,7 @@ export const IBizImageUpload = defineComponent({ before-read={this.beforeUpload} after-read={this.afterRead} before-delete={this.onRemove} + {...this.$attrs} > {{ 'preview-cover': (file: IData) => {