xkit-editor 2.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.d.ts +2 -0
- package/lib/packages/editor/env.d.ts +7 -0
- package/lib/packages/editor/src/component-configs/__tests__/config.test.d.ts +2 -0
- package/lib/packages/editor/src/component-configs/__tests__/config.test.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/__tests__/group.test.d.ts +2 -0
- package/lib/packages/editor/src/component-configs/__tests__/group.test.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/cascader.d.ts +3 -0
- package/lib/packages/editor/src/component-configs/cascader.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/checkbox.d.ts +4 -0
- package/lib/packages/editor/src/component-configs/checkbox.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/common-props.d.ts +16 -0
- package/lib/packages/editor/src/component-configs/common-props.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/date-picker.d.ts +3 -0
- package/lib/packages/editor/src/component-configs/date-picker.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/date-range-picker.d.ts +4 -0
- package/lib/packages/editor/src/component-configs/date-range-picker.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/group.d.ts +3 -0
- package/lib/packages/editor/src/component-configs/group.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/icon-select.d.ts +3 -0
- package/lib/packages/editor/src/component-configs/icon-select.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/input-array.d.ts +4 -0
- package/lib/packages/editor/src/component-configs/input-array.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/input-number-range.d.ts +3 -0
- package/lib/packages/editor/src/component-configs/input-number-range.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/input-number.d.ts +3 -0
- package/lib/packages/editor/src/component-configs/input-number.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/input-table.d.ts +3 -0
- package/lib/packages/editor/src/component-configs/input-table.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/input-upload.d.ts +3 -0
- package/lib/packages/editor/src/component-configs/input-upload.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/input.d.ts +3 -0
- package/lib/packages/editor/src/component-configs/input.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/layout-sections.d.ts +11 -0
- package/lib/packages/editor/src/component-configs/layout-sections.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/options-config.d.ts +3 -0
- package/lib/packages/editor/src/component-configs/options-config.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/radio.d.ts +3 -0
- package/lib/packages/editor/src/component-configs/radio.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/select.d.ts +3 -0
- package/lib/packages/editor/src/component-configs/select.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/switch.d.ts +3 -0
- package/lib/packages/editor/src/component-configs/switch.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/textarea.d.ts +3 -0
- package/lib/packages/editor/src/component-configs/textarea.d.ts.map +1 -0
- package/lib/packages/editor/src/component-configs/types.d.ts +33 -0
- package/lib/packages/editor/src/component-configs/types.d.ts.map +1 -0
- package/lib/packages/editor/src/components/condition-editor.vue.d.ts +19 -0
- package/lib/packages/editor/src/components/condition-editor.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/components/design-renderers/input-array-design.vue.d.ts +17 -0
- package/lib/packages/editor/src/components/design-renderers/input-array-design.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/components/design-renderers/input-table-design.vue.d.ts +15 -0
- package/lib/packages/editor/src/components/design-renderers/input-table-design.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/components/form-item-layout-editor.vue.d.ts +14 -0
- package/lib/packages/editor/src/components/form-item-layout-editor.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/components/form-item-span-editor.vue.d.ts +18 -0
- package/lib/packages/editor/src/components/form-item-span-editor.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/components/form-layout-editor.vue.d.ts +21 -0
- package/lib/packages/editor/src/components/form-layout-editor.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/components/group-title-color-select.vue.d.ts +10 -0
- package/lib/packages/editor/src/components/group-title-color-select.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/components/group-title-style-picker.vue.d.ts +10 -0
- package/lib/packages/editor/src/components/group-title-style-picker.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/components/input-number-range-binding-editor.vue.d.ts +25 -0
- package/lib/packages/editor/src/components/input-number-range-binding-editor.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/components/input-table-default-rows-editor.vue.d.ts +11 -0
- package/lib/packages/editor/src/components/input-table-default-rows-editor.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/components/input-table-operation-editor.vue.d.ts +11 -0
- package/lib/packages/editor/src/components/input-table-operation-editor.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/components/json-code-editor.vue.d.ts +18 -0
- package/lib/packages/editor/src/components/json-code-editor.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/components/object-section-editor.vue.d.ts +23 -0
- package/lib/packages/editor/src/components/object-section-editor.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/components/options/default-dict-options-panel.vue.d.ts +10 -0
- package/lib/packages/editor/src/components/options/default-dict-options-panel.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/components/options/options-editor.vue.d.ts +12 -0
- package/lib/packages/editor/src/components/options/options-editor.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/components/validation-rules-editor.vue.d.ts +12 -0
- package/lib/packages/editor/src/components/validation-rules-editor.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/config.d.ts +8 -0
- package/lib/packages/editor/src/config.d.ts.map +1 -0
- package/lib/packages/editor/src/editor-item-wrapper.vue.d.ts +39 -0
- package/lib/packages/editor/src/editor-item-wrapper.vue.d.ts.map +1 -0
- package/lib/packages/editor/src/group-title-styles.d.ts +9 -0
- package/lib/packages/editor/src/group-title-styles.d.ts.map +1 -0
- package/lib/packages/editor/src/index.d.ts +7 -0
- package/lib/packages/editor/src/index.d.ts.map +1 -0
- package/lib/packages/editor/src/option-sources.d.ts +10 -0
- package/lib/packages/editor/src/option-sources.d.ts.map +1 -0
- package/lib/packages/editor/src/root-configs.d.ts +12 -0
- package/lib/packages/editor/src/root-configs.d.ts.map +1 -0
- package/lib/packages/editor/src/shims-vue.d.ts +5 -0
- package/lib/packages/editor/src/utils/__tests__/component-replace.test.d.ts +2 -0
- package/lib/packages/editor/src/utils/__tests__/component-replace.test.d.ts.map +1 -0
- package/lib/packages/editor/src/utils/__tests__/editor-schema.test.d.ts +2 -0
- package/lib/packages/editor/src/utils/__tests__/editor-schema.test.d.ts.map +1 -0
- package/lib/packages/editor/src/utils/__tests__/form-item-width.test.d.ts +2 -0
- package/lib/packages/editor/src/utils/__tests__/form-item-width.test.d.ts.map +1 -0
- package/lib/packages/editor/src/utils/__tests__/group-drag-path.test.d.ts +2 -0
- package/lib/packages/editor/src/utils/__tests__/group-drag-path.test.d.ts.map +1 -0
- package/lib/packages/editor/src/utils/__tests__/record-field.test.d.ts +2 -0
- package/lib/packages/editor/src/utils/__tests__/record-field.test.d.ts.map +1 -0
- package/lib/packages/editor/src/utils/component-replace.d.ts +8 -0
- package/lib/packages/editor/src/utils/component-replace.d.ts.map +1 -0
- package/lib/packages/editor/src/utils/editor-schema.d.ts +28 -0
- package/lib/packages/editor/src/utils/editor-schema.d.ts.map +1 -0
- package/lib/packages/editor/src/utils/form-item-width.d.ts +6 -0
- package/lib/packages/editor/src/utils/form-item-width.d.ts.map +1 -0
- package/lib/packages/editor/src/utils/local-dict-center.d.ts +11 -0
- package/lib/packages/editor/src/utils/local-dict-center.d.ts.map +1 -0
- package/lib/packages/editor/src/utils/record-field.d.ts +7 -0
- package/lib/packages/editor/src/utils/record-field.d.ts.map +1 -0
- package/lib/packages/editor/src/validation-rules.d.ts +10 -0
- package/lib/packages/editor/src/validation-rules.d.ts.map +1 -0
- package/lib/packages/editor/src/x-editor.vue.d.ts +107 -0
- package/lib/packages/editor/src/x-editor.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/assets/icon-add-circle-fill.vue.d.ts +3 -0
- package/lib/packages/ui/src/assets/icon-add-circle-fill.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/assets/icon-close-line.vue.d.ts +3 -0
- package/lib/packages/ui/src/assets/icon-close-line.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/assets/icon-drag.vue.d.ts +3 -0
- package/lib/packages/ui/src/assets/icon-drag.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/assets/icon-minus-circle.vue.d.ts +3 -0
- package/lib/packages/ui/src/assets/icon-minus-circle.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/_public/form-item-cols.vue.d.ts +17 -0
- package/lib/packages/ui/src/components/_public/form-item-cols.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/button/type.d.ts +85 -0
- package/lib/packages/ui/src/components/button/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/cascader/index.vue.d.ts +66 -0
- package/lib/packages/ui/src/components/cascader/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/cascader/type.d.ts +125 -0
- package/lib/packages/ui/src/components/cascader/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/checkbox/index.vue.d.ts +30 -0
- package/lib/packages/ui/src/components/checkbox/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/checkbox/type.d.ts +36 -0
- package/lib/packages/ui/src/components/checkbox/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/checkboxes/index.vue.d.ts +42 -0
- package/lib/packages/ui/src/components/checkboxes/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/checkboxes/type.d.ts +56 -0
- package/lib/packages/ui/src/components/checkboxes/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/component/index.d.ts +7 -0
- package/lib/packages/ui/src/components/component/index.d.ts.map +1 -0
- package/lib/packages/ui/src/components/condition-builder/condition-node.vue.d.ts +32 -0
- package/lib/packages/ui/src/components/condition-builder/condition-node.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/condition-builder/group-bracket.vue.d.ts +19 -0
- package/lib/packages/ui/src/components/condition-builder/group-bracket.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/condition-builder/group-indent.vue.d.ts +19 -0
- package/lib/packages/ui/src/components/condition-builder/group-indent.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/condition-builder/index.vue.d.ts +160 -0
- package/lib/packages/ui/src/components/condition-builder/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/condition-builder/type.d.ts +88 -0
- package/lib/packages/ui/src/components/condition-builder/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/crud/action-type.d.ts +80 -0
- package/lib/packages/ui/src/components/crud/action-type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/crud/index.vue.d.ts +78 -0
- package/lib/packages/ui/src/components/crud/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/crud/multi-action.vue.d.ts +8 -0
- package/lib/packages/ui/src/components/crud/multi-action.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/crud/single-action.vue.d.ts +7 -0
- package/lib/packages/ui/src/components/crud/single-action.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/crud/type.d.ts +171 -0
- package/lib/packages/ui/src/components/crud/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/crud-form/index.vue.d.ts +22 -0
- package/lib/packages/ui/src/components/crud-form/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/crud-form/type.d.ts +65 -0
- package/lib/packages/ui/src/components/crud-form/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/date-picker/index.vue.d.ts +35 -0
- package/lib/packages/ui/src/components/date-picker/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/date-picker/type.d.ts +139 -0
- package/lib/packages/ui/src/components/date-picker/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/date-range-picker/index.vue.d.ts +15 -0
- package/lib/packages/ui/src/components/date-range-picker/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/date-range-picker/type.d.ts +137 -0
- package/lib/packages/ui/src/components/date-range-picker/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/date-range-picker-v2/index.vue.d.ts +22 -0
- package/lib/packages/ui/src/components/date-range-picker-v2/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/date-range-picker-v2/type.d.ts +37 -0
- package/lib/packages/ui/src/components/date-range-picker-v2/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/description/index.vue.d.ts +28 -0
- package/lib/packages/ui/src/components/description/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/description/type.d.ts +120 -0
- package/lib/packages/ui/src/components/description/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/dialog/type.d.ts +100 -0
- package/lib/packages/ui/src/components/dialog/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/dropdown/type.d.ts +62 -0
- package/lib/packages/ui/src/components/dropdown/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/ellipsis/index.vue.d.ts +34 -0
- package/lib/packages/ui/src/components/ellipsis/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/ellipsis/type.d.ts +26 -0
- package/lib/packages/ui/src/components/ellipsis/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/event-menu/index.vue.d.ts +25 -0
- package/lib/packages/ui/src/components/event-menu/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/form/form-item.type.d.ts +304 -0
- package/lib/packages/ui/src/components/form/form-item.type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/form/form-item.vue.d.ts +50 -0
- package/lib/packages/ui/src/components/form/form-item.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/form/form-layout-renderer.vue.d.ts +71 -0
- package/lib/packages/ui/src/components/form/form-layout-renderer.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/form/index.vue.d.ts +220 -0
- package/lib/packages/ui/src/components/form/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/form/query-form.d.ts +4 -0
- package/lib/packages/ui/src/components/form/query-form.d.ts.map +1 -0
- package/lib/packages/ui/src/components/form/type.d.ts +312 -0
- package/lib/packages/ui/src/components/form/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/group/group-item.vue.d.ts +9 -0
- package/lib/packages/ui/src/components/group/group-item.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/group/index.vue.d.ts +24 -0
- package/lib/packages/ui/src/components/group/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/group/type.d.ts +119 -0
- package/lib/packages/ui/src/components/group/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/icon-select/__tests__/icon-sources.test.d.ts +2 -0
- package/lib/packages/ui/src/components/icon-select/__tests__/icon-sources.test.d.ts.map +1 -0
- package/lib/packages/ui/src/components/icon-select/icon-parser.vue.d.ts +41 -0
- package/lib/packages/ui/src/components/icon-select/icon-parser.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/icon-select/icon-sources.d.ts +22 -0
- package/lib/packages/ui/src/components/icon-select/icon-sources.d.ts.map +1 -0
- package/lib/packages/ui/src/components/icon-select/index.vue.d.ts +15 -0
- package/lib/packages/ui/src/components/icon-select/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/icon-select/type.d.ts +24 -0
- package/lib/packages/ui/src/components/icon-select/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/index.d.ts +107 -0
- package/lib/packages/ui/src/components/index.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input/index.vue.d.ts +20 -0
- package/lib/packages/ui/src/components/input/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input/type.d.ts +121 -0
- package/lib/packages/ui/src/components/input/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input-array/__tests__/layout.test.d.ts +2 -0
- package/lib/packages/ui/src/components/input-array/__tests__/layout.test.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input-array/index.vue.d.ts +28 -0
- package/lib/packages/ui/src/components/input-array/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input-array/layout.d.ts +11 -0
- package/lib/packages/ui/src/components/input-array/layout.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input-array/type.d.ts +89 -0
- package/lib/packages/ui/src/components/input-array/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input-collapse/index.vue.d.ts +7 -0
- package/lib/packages/ui/src/components/input-collapse/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input-collapse/type.d.ts +50 -0
- package/lib/packages/ui/src/components/input-collapse/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input-linked/index.vue.d.ts +13 -0
- package/lib/packages/ui/src/components/input-linked/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input-linked/type.d.ts +32 -0
- package/lib/packages/ui/src/components/input-linked/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input-number/index.vue.d.ts +29 -0
- package/lib/packages/ui/src/components/input-number/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input-number/type.d.ts +57 -0
- package/lib/packages/ui/src/components/input-number/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input-number-range/index.vue.d.ts +28 -0
- package/lib/packages/ui/src/components/input-number-range/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input-number-range/type.d.ts +49 -0
- package/lib/packages/ui/src/components/input-number-range/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input-table/index.vue.d.ts +25 -0
- package/lib/packages/ui/src/components/input-table/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input-table/type.d.ts +37 -0
- package/lib/packages/ui/src/components/input-table/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input-upload/index.vue.d.ts +11 -0
- package/lib/packages/ui/src/components/input-upload/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/input-upload/type.d.ts +59 -0
- package/lib/packages/ui/src/components/input-upload/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/json/index.vue.d.ts +10 -0
- package/lib/packages/ui/src/components/json/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/link/index.vue.d.ts +21 -0
- package/lib/packages/ui/src/components/link/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/link/type.d.ts +28 -0
- package/lib/packages/ui/src/components/link/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/radios/index.vue.d.ts +42 -0
- package/lib/packages/ui/src/components/radios/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/radios/type.d.ts +36 -0
- package/lib/packages/ui/src/components/radios/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/search-bar/index.vue.d.ts +37 -0
- package/lib/packages/ui/src/components/search-bar/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/select/index.vue.d.ts +48 -0
- package/lib/packages/ui/src/components/select/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/select/type.d.ts +222 -0
- package/lib/packages/ui/src/components/select/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/static/options-viewer.vue.d.ts +16 -0
- package/lib/packages/ui/src/components/static/options-viewer.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/static/rich-text-viewer.vue.d.ts +8 -0
- package/lib/packages/ui/src/components/static/rich-text-viewer.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/static/textarea-viewer.vue.d.ts +6 -0
- package/lib/packages/ui/src/components/static/textarea-viewer.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/switch/index.vue.d.ts +38 -0
- package/lib/packages/ui/src/components/switch/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/switch/type.d.ts +72 -0
- package/lib/packages/ui/src/components/switch/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/table/index.vue.d.ts +1317 -0
- package/lib/packages/ui/src/components/table/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/table/table-column.vue.d.ts +44 -0
- package/lib/packages/ui/src/components/table/table-column.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/table/type.d.ts +306 -0
- package/lib/packages/ui/src/components/table/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/table-select/const.d.ts +14 -0
- package/lib/packages/ui/src/components/table-select/const.d.ts.map +1 -0
- package/lib/packages/ui/src/components/table-select/index.vue.d.ts +21871 -0
- package/lib/packages/ui/src/components/table-select/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/table-select/table-selector-main.vue.d.ts +4795 -0
- package/lib/packages/ui/src/components/table-select/table-selector-main.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/table-select/type.d.ts +71 -0
- package/lib/packages/ui/src/components/table-select/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/tabs/index.vue.d.ts +6 -0
- package/lib/packages/ui/src/components/tabs/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/tabs/type.d.ts +23 -0
- package/lib/packages/ui/src/components/tabs/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/text/index.vue.d.ts +7 -0
- package/lib/packages/ui/src/components/text/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/text/type.d.ts +7 -0
- package/lib/packages/ui/src/components/text/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/textarea/type.d.ts +79 -0
- package/lib/packages/ui/src/components/textarea/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/toolbar/index.vue.d.ts +15 -0
- package/lib/packages/ui/src/components/toolbar/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/transitions/TransitionHeight.vue.d.ts +30 -0
- package/lib/packages/ui/src/components/transitions/TransitionHeight.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/tree/index.vue.d.ts +17 -0
- package/lib/packages/ui/src/components/tree/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/tree/tree-node.vue.d.ts +8 -0
- package/lib/packages/ui/src/components/tree/tree-node.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/tree/tree-state.d.ts +35 -0
- package/lib/packages/ui/src/components/tree/tree-state.d.ts.map +1 -0
- package/lib/packages/ui/src/components/tree/type.d.ts +50 -0
- package/lib/packages/ui/src/components/tree/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/tree-select/index.vue.d.ts +94 -0
- package/lib/packages/ui/src/components/tree-select/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/tree-select/type.d.ts +156 -0
- package/lib/packages/ui/src/components/tree-select/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/tree-select-crud/index.vue.d.ts +3102 -0
- package/lib/packages/ui/src/components/tree-select-crud/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/components/tree-select-crud/type.d.ts +88 -0
- package/lib/packages/ui/src/components/tree-select-crud/type.d.ts.map +1 -0
- package/lib/packages/ui/src/components/upload/index.vue.d.ts +54 -0
- package/lib/packages/ui/src/components/upload/index.vue.d.ts.map +1 -0
- package/lib/packages/ui/src/composables/__tests__/use-option-static.test.d.ts +2 -0
- package/lib/packages/ui/src/composables/__tests__/use-option-static.test.d.ts.map +1 -0
- package/lib/packages/ui/src/composables/index.d.ts +3 -0
- package/lib/packages/ui/src/composables/index.d.ts.map +1 -0
- package/lib/packages/ui/src/composables/use-action.d.ts +21 -0
- package/lib/packages/ui/src/composables/use-action.d.ts.map +1 -0
- package/lib/packages/ui/src/composables/use-component.d.ts +74 -0
- package/lib/packages/ui/src/composables/use-component.d.ts.map +1 -0
- package/lib/packages/ui/src/composables/use-config.d.ts +76 -0
- package/lib/packages/ui/src/composables/use-config.d.ts.map +1 -0
- package/lib/packages/ui/src/composables/use-draggable.d.ts +22 -0
- package/lib/packages/ui/src/composables/use-draggable.d.ts.map +1 -0
- package/lib/packages/ui/src/composables/use-input-array.d.ts +45 -0
- package/lib/packages/ui/src/composables/use-input-array.d.ts.map +1 -0
- package/lib/packages/ui/src/composables/use-label.d.ts +2 -0
- package/lib/packages/ui/src/composables/use-label.d.ts.map +1 -0
- package/lib/packages/ui/src/composables/use-loading.d.ts +6 -0
- package/lib/packages/ui/src/composables/use-loading.d.ts.map +1 -0
- package/lib/packages/ui/src/composables/use-option-static.d.ts +51 -0
- package/lib/packages/ui/src/composables/use-option-static.d.ts.map +1 -0
- package/lib/packages/ui/src/composables/use-options.d.ts +66 -0
- package/lib/packages/ui/src/composables/use-options.d.ts.map +1 -0
- package/lib/packages/ui/src/composables/use-paging.d.ts +134 -0
- package/lib/packages/ui/src/composables/use-paging.d.ts.map +1 -0
- package/lib/packages/ui/src/composables/use-scaffold.d.ts +54 -0
- package/lib/packages/ui/src/composables/use-scaffold.d.ts.map +1 -0
- package/lib/packages/ui/src/composables/use-toggle.d.ts +11 -0
- package/lib/packages/ui/src/composables/use-toggle.d.ts.map +1 -0
- package/lib/packages/ui/src/composables/use-tree-static-path.d.ts +45 -0
- package/lib/packages/ui/src/composables/use-tree-static-path.d.ts.map +1 -0
- package/lib/packages/ui/src/composables/use-visible.d.ts +11 -0
- package/lib/packages/ui/src/composables/use-visible.d.ts.map +1 -0
- package/lib/packages/ui/src/config/layout.d.ts +9 -0
- package/lib/packages/ui/src/config/layout.d.ts.map +1 -0
- package/lib/packages/ui/src/constants/injection.d.ts +11 -0
- package/lib/packages/ui/src/constants/injection.d.ts.map +1 -0
- package/lib/packages/ui/src/directives/highlight.d.ts +7 -0
- package/lib/packages/ui/src/directives/highlight.d.ts.map +1 -0
- package/lib/packages/ui/src/directives/index.d.ts +2 -0
- package/lib/packages/ui/src/directives/index.d.ts.map +1 -0
- package/lib/packages/ui/src/index.d.ts +59 -0
- package/lib/packages/ui/src/index.d.ts.map +1 -0
- package/lib/packages/ui/src/types/api.d.ts +8 -0
- package/lib/packages/ui/src/types/api.d.ts.map +1 -0
- package/lib/packages/ui/src/types/base.d.ts +306 -0
- package/lib/packages/ui/src/types/base.d.ts.map +1 -0
- package/lib/packages/ui/src/types/form.d.ts +82 -0
- package/lib/packages/ui/src/types/form.d.ts.map +1 -0
- package/lib/packages/ui/src/types/index.d.ts +6 -0
- package/lib/packages/ui/src/types/index.d.ts.map +1 -0
- package/lib/packages/ui/src/types/option.d.ts +115 -0
- package/lib/packages/ui/src/types/option.d.ts.map +1 -0
- package/lib/packages/ui/src/types/pagination.d.ts +35 -0
- package/lib/packages/ui/src/types/pagination.d.ts.map +1 -0
- package/lib/packages/ui/src/types/table.d.ts +34 -0
- package/lib/packages/ui/src/types/table.d.ts.map +1 -0
- package/lib/packages/ui/src/types/util.d.ts +6 -0
- package/lib/packages/ui/src/types/util.d.ts.map +1 -0
- package/lib/packages/ui/src/utils/__tests__/condition.test.d.ts +2 -0
- package/lib/packages/ui/src/utils/__tests__/condition.test.d.ts.map +1 -0
- package/lib/packages/ui/src/utils/__tests__/editor-container.test.d.ts +2 -0
- package/lib/packages/ui/src/utils/__tests__/editor-container.test.d.ts.map +1 -0
- package/lib/packages/ui/src/utils/__tests__/form.test.d.ts +2 -0
- package/lib/packages/ui/src/utils/__tests__/form.test.d.ts.map +1 -0
- package/lib/packages/ui/src/utils/__tests__/tree.test.d.ts +2 -0
- package/lib/packages/ui/src/utils/__tests__/tree.test.d.ts.map +1 -0
- package/lib/packages/ui/src/utils/common.d.ts +13 -0
- package/lib/packages/ui/src/utils/common.d.ts.map +1 -0
- package/lib/packages/ui/src/utils/computed-state-manager.d.ts +3 -0
- package/lib/packages/ui/src/utils/computed-state-manager.d.ts.map +1 -0
- package/lib/packages/ui/src/utils/condition.d.ts +4 -0
- package/lib/packages/ui/src/utils/condition.d.ts.map +1 -0
- package/lib/packages/ui/src/utils/editor-container.d.ts +25 -0
- package/lib/packages/ui/src/utils/editor-container.d.ts.map +1 -0
- package/lib/packages/ui/src/utils/form-item.d.ts +23 -0
- package/lib/packages/ui/src/utils/form-item.d.ts.map +1 -0
- package/lib/packages/ui/src/utils/form.d.ts +75 -0
- package/lib/packages/ui/src/utils/form.d.ts.map +1 -0
- package/lib/packages/ui/src/utils/id.d.ts +24 -0
- package/lib/packages/ui/src/utils/id.d.ts.map +1 -0
- package/lib/packages/ui/src/utils/options.d.ts +14 -0
- package/lib/packages/ui/src/utils/options.d.ts.map +1 -0
- package/lib/packages/ui/src/utils/reactive.d.ts +13 -0
- package/lib/packages/ui/src/utils/reactive.d.ts.map +1 -0
- package/lib/packages/ui/src/utils/style.d.ts +5 -0
- package/lib/packages/ui/src/utils/style.d.ts.map +1 -0
- package/lib/packages/ui/src/utils/tree.d.ts +51 -0
- package/lib/packages/ui/src/utils/tree.d.ts.map +1 -0
- package/lib/xkit-editor.css +2 -0
- package/lib/xkit-editor.js +78741 -0
- package/lib/xkit-editor.umd.cjs +99 -0
- package/package.json +50 -0
- package/src/component-configs/__tests__/config.test.ts +288 -0
- package/src/component-configs/__tests__/group.test.ts +104 -0
- package/src/component-configs/cascader.ts +20 -0
- package/src/component-configs/checkbox.ts +43 -0
- package/src/component-configs/common-props.ts +130 -0
- package/src/component-configs/date-picker.ts +153 -0
- package/src/component-configs/date-range-picker.ts +185 -0
- package/src/component-configs/group.ts +196 -0
- package/src/component-configs/icon-select.ts +56 -0
- package/src/component-configs/input-array.ts +184 -0
- package/src/component-configs/input-number-range.ts +143 -0
- package/src/component-configs/input-number.ts +111 -0
- package/src/component-configs/input-table.ts +191 -0
- package/src/component-configs/input-upload.ts +123 -0
- package/src/component-configs/input.ts +48 -0
- package/src/component-configs/layout-sections.ts +546 -0
- package/src/component-configs/options-config.ts +12 -0
- package/src/component-configs/radio.ts +26 -0
- package/src/component-configs/select.ts +42 -0
- package/src/component-configs/switch.ts +19 -0
- package/src/component-configs/textarea.ts +84 -0
- package/src/component-configs/types.ts +37 -0
- package/src/components/condition-editor.vue +641 -0
- package/src/components/design-renderers/input-array-design.vue +283 -0
- package/src/components/design-renderers/input-table-design.vue +311 -0
- package/src/components/form-item-layout-editor.vue +291 -0
- package/src/components/form-item-span-editor.vue +328 -0
- package/src/components/form-layout-editor.vue +263 -0
- package/src/components/group-title-color-select.vue +75 -0
- package/src/components/group-title-style-picker.vue +125 -0
- package/src/components/input-number-range-binding-editor.vue +226 -0
- package/src/components/input-table-default-rows-editor.vue +147 -0
- package/src/components/input-table-operation-editor.vue +168 -0
- package/src/components/json-code-editor.vue +219 -0
- package/src/components/object-section-editor.vue +342 -0
- package/src/components/options/default-dict-options-panel.vue +197 -0
- package/src/components/options/options-editor.vue +161 -0
- package/src/components/table-columns-editor.vue +353 -0
- package/src/components/validation-rules-editor.vue +321 -0
- package/src/config.ts +51 -0
- package/src/editor-item-wrapper.vue +254 -0
- package/src/group-title-styles.ts +82 -0
- package/src/index.ts +6 -0
- package/src/option-sources.ts +45 -0
- package/src/root-configs.ts +278 -0
- package/src/shims-vue.d.ts +5 -0
- package/src/utils/__tests__/component-replace.test.ts +129 -0
- package/src/utils/__tests__/editor-schema.test.ts +429 -0
- package/src/utils/__tests__/form-item-width.test.ts +53 -0
- package/src/utils/__tests__/group-drag-path.test.ts +84 -0
- package/src/utils/__tests__/record-field.test.ts +34 -0
- package/src/utils/component-replace.ts +67 -0
- package/src/utils/editor-schema.ts +374 -0
- package/src/utils/form-item-width.ts +40 -0
- package/src/utils/local-dict-center.ts +81 -0
- package/src/utils/record-field.ts +30 -0
- package/src/validation-rules.ts +104 -0
- package/src/x-editor.vue +1300 -0
package/package.json
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "xkit-editor",
|
|
3
|
+
"version": "2.0.0-alpha.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "lib/xkit-editor.umd.cjs",
|
|
7
|
+
"module": "lib/xkit-editor.js",
|
|
8
|
+
"types": "lib/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./lib/index.d.ts",
|
|
12
|
+
"import": "./lib/xkit-editor.js",
|
|
13
|
+
"require": "./lib/xkit-editor.umd.cjs"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"lib",
|
|
18
|
+
"types",
|
|
19
|
+
"src"
|
|
20
|
+
],
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"element-plus": "^2.9.3",
|
|
23
|
+
"sortablejs": "^1.15.6",
|
|
24
|
+
"vue": "^3.5.12",
|
|
25
|
+
"xkit-ui": "2.0.0-alpha.0"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@tsconfig/node22": "^22.0.0",
|
|
29
|
+
"@types/node": "^22.9.0",
|
|
30
|
+
"@types/sortablejs": "^1.15.8",
|
|
31
|
+
"@vitejs/plugin-vue": "^5.2.3",
|
|
32
|
+
"@vitejs/plugin-vue-jsx": "^4.1.2",
|
|
33
|
+
"@vue/tsconfig": "^0.5.1",
|
|
34
|
+
"npm-run-all2": "^7.0.1",
|
|
35
|
+
"typescript": "~5.6.3",
|
|
36
|
+
"vite": "^6.3.5",
|
|
37
|
+
"vite-plugin-dts": "^4.5.3",
|
|
38
|
+
"vitest": "^3.2.4",
|
|
39
|
+
"vue-tsc": "^2.2.8"
|
|
40
|
+
},
|
|
41
|
+
"scripts": {
|
|
42
|
+
"dev": "vite",
|
|
43
|
+
"build": "run-p type-check \"build-only {@}\" --",
|
|
44
|
+
"preview": "vite preview",
|
|
45
|
+
"build-only": "vite build",
|
|
46
|
+
"type-check": "vue-tsc --build --force",
|
|
47
|
+
"test": "vitest",
|
|
48
|
+
"test:coverage": "vitest run --coverage"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
import { componentList, componentPaletteGroups } from '../../config'
|
|
3
|
+
|
|
4
|
+
describe('componentList', () => {
|
|
5
|
+
const expectNoSchemaId = (value: unknown) => {
|
|
6
|
+
if (!value || typeof value !== 'object') return
|
|
7
|
+
if (Array.isArray(value)) {
|
|
8
|
+
value.forEach(expectNoSchemaId)
|
|
9
|
+
return
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
expect(value).not.toHaveProperty('id')
|
|
13
|
+
Object.values(value).forEach(expectNoSchemaId)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
it('groups palette materials into layout containers and form controls', () => {
|
|
17
|
+
expect(componentPaletteGroups.map((group) => group.label)).toEqual(['组合容器', '基础控件'])
|
|
18
|
+
expect(componentPaletteGroups[0].items.map((item) => item.value)).toEqual(['group', 'x-input-table', 'x-input-array'])
|
|
19
|
+
expect(componentPaletteGroups[0].items.every((item) => item.editorKind === 'container')).toBe(true)
|
|
20
|
+
expect(componentPaletteGroups[1].items.every((item) => item.editorKind !== 'container')).toBe(true)
|
|
21
|
+
expect(componentList).toEqual(componentPaletteGroups.flatMap((group) => group.items))
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
it('registers input upload material without schema id', () => {
|
|
25
|
+
const upload = componentList.find((item) => item.value === 'x-input-upload')
|
|
26
|
+
|
|
27
|
+
expect(upload?.scaffold).toMatchObject({
|
|
28
|
+
type: 'x-input-upload',
|
|
29
|
+
label: '文件上传',
|
|
30
|
+
multiple: true
|
|
31
|
+
})
|
|
32
|
+
expect(upload?.scaffold).not.toHaveProperty('id')
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
it('registers icon select material with serializable icon source selection', () => {
|
|
36
|
+
const iconSelect = componentList.find((item) => item.value === 'x-icon-select')
|
|
37
|
+
|
|
38
|
+
expect(iconSelect?.scaffold).toMatchObject({
|
|
39
|
+
type: 'x-icon-select',
|
|
40
|
+
label: '图标选择器',
|
|
41
|
+
clearable: true,
|
|
42
|
+
iconSources: []
|
|
43
|
+
})
|
|
44
|
+
expect(iconSelect?.scaffold).not.toHaveProperty('iconLibs')
|
|
45
|
+
expect(iconSelect?.scaffold).not.toHaveProperty('id')
|
|
46
|
+
})
|
|
47
|
+
|
|
48
|
+
it('registers input table material with idField and schema items without id', () => {
|
|
49
|
+
const inputTable = componentList.find((item) => item.value === 'x-input-table')
|
|
50
|
+
|
|
51
|
+
expect(inputTable?.scaffold).toMatchObject({
|
|
52
|
+
type: 'x-input-table',
|
|
53
|
+
label: '表格输入器',
|
|
54
|
+
name: 'tableData',
|
|
55
|
+
border: true,
|
|
56
|
+
idField: 'id',
|
|
57
|
+
items: [
|
|
58
|
+
{
|
|
59
|
+
label: '字段名称',
|
|
60
|
+
name: 'name',
|
|
61
|
+
type: 'input',
|
|
62
|
+
width: 160
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
label: '操作',
|
|
66
|
+
type: 'operation',
|
|
67
|
+
width: 100
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
})
|
|
71
|
+
expectNoSchemaId(inputTable?.scaffold)
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
it('registers input array material with idField and schema items without id', () => {
|
|
75
|
+
const inputArray = componentList.find((item) => item.value === 'x-input-array')
|
|
76
|
+
const dataTab = inputArray?.configTabs?.find((item) => item.key === 'data')
|
|
77
|
+
const layoutTab = inputArray?.configTabs?.find((item) => item.key === 'layout')
|
|
78
|
+
const fieldNames = dataTab?.body.map((item: any) => item.name).filter(Boolean)
|
|
79
|
+
const layoutTitles = layoutTab?.body.map((item: any) => item.title).filter(Boolean)
|
|
80
|
+
const layoutField = layoutTab?.body.find((item: any) => item.name === 'layout') as any
|
|
81
|
+
const spanField = layoutField?.sections?.find((section: any) => section.key === 'col')?.body?.find((item: any) => item.name === 'span')
|
|
82
|
+
const gutterField = layoutField?.sections?.find((section: any) => section.key === 'row')?.body?.find((item: any) => item.name === 'gutter')
|
|
83
|
+
|
|
84
|
+
expect(inputArray?.scaffold).toMatchObject({
|
|
85
|
+
type: 'x-input-array',
|
|
86
|
+
label: '数组输入器',
|
|
87
|
+
name: 'arrayData',
|
|
88
|
+
idField: 'id',
|
|
89
|
+
addable: true,
|
|
90
|
+
deletable: true,
|
|
91
|
+
useScaffoldValue: true,
|
|
92
|
+
showInlineAddButton: true,
|
|
93
|
+
items: [
|
|
94
|
+
{
|
|
95
|
+
label: '字段名称',
|
|
96
|
+
name: 'name',
|
|
97
|
+
type: 'input'
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
})
|
|
101
|
+
expect(inputArray?.replace?.groups).toEqual(['collection'])
|
|
102
|
+
expect(fieldNames).toContain('defaultValue')
|
|
103
|
+
expect(layoutTitles).toEqual(['作为表单项的配置', '作为容器的配置'])
|
|
104
|
+
expect(layoutField.visible({ useLayout: false })).toBe(false)
|
|
105
|
+
expect(layoutField.visible({ useLayout: true })).toBe(true)
|
|
106
|
+
expect(spanField).toMatchObject({
|
|
107
|
+
label: '默认每列占位',
|
|
108
|
+
type: 'select',
|
|
109
|
+
options: [
|
|
110
|
+
{ label: '整行', value: 24 },
|
|
111
|
+
{ label: '1/2行', value: 12 },
|
|
112
|
+
{ label: '1/3行', value: 8 },
|
|
113
|
+
{ label: '1/4行', value: 6 }
|
|
114
|
+
]
|
|
115
|
+
})
|
|
116
|
+
expect(gutterField).toMatchObject({
|
|
117
|
+
label: '栅格间隔',
|
|
118
|
+
type: 'select',
|
|
119
|
+
options: [
|
|
120
|
+
{ label: '小 8px', value: 8 },
|
|
121
|
+
{ label: '中 12px', value: 12 },
|
|
122
|
+
{ label: '大 16px', value: 16 },
|
|
123
|
+
{ label: '特大 20px', value: 20 }
|
|
124
|
+
]
|
|
125
|
+
})
|
|
126
|
+
expectNoSchemaId(inputArray?.scaffold)
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
it('registers input number range material with numeric configuration', () => {
|
|
130
|
+
const inputNumberRange = componentList.find((item) => item.value === 'x-input-number-range')
|
|
131
|
+
const dataTab = inputNumberRange?.configTabs?.find((item) => item.key === 'data')
|
|
132
|
+
const basicTab = inputNumberRange?.configTabs?.find((item) => item.key === 'basic')
|
|
133
|
+
const dataFieldNames = dataTab?.body.map((item: any) => item.name).filter(Boolean)
|
|
134
|
+
const basicFieldNames = basicTab?.body.map((item: any) => item.name).filter(Boolean)
|
|
135
|
+
|
|
136
|
+
expect(inputNumberRange?.scaffold).toMatchObject({
|
|
137
|
+
type: 'x-input-number-range',
|
|
138
|
+
label: '数值范围',
|
|
139
|
+
name: 'numberRange',
|
|
140
|
+
startPlaceholder: '最小值',
|
|
141
|
+
endPlaceholder: '最大值',
|
|
142
|
+
rangeSeperator: '至',
|
|
143
|
+
controls: true
|
|
144
|
+
})
|
|
145
|
+
expect(inputNumberRange?.replace?.groups).toEqual(['placeholder', 'numeric'])
|
|
146
|
+
expect(dataFieldNames).toEqual(['min', 'max', 'step', 'precision', 'stepStrictly', 'joinValues'])
|
|
147
|
+
expect(basicFieldNames).toEqual(['label', 'sync', 'labelPosition', 'startPlaceholder', 'endPlaceholder', 'rangeSeperator', 'controls', 'controlsPosition'])
|
|
148
|
+
expectNoSchemaId(inputNumberRange?.scaffold)
|
|
149
|
+
})
|
|
150
|
+
|
|
151
|
+
it('configures input number range field mapping through sync', () => {
|
|
152
|
+
const inputNumberRange = componentList.find((item) => item.value === 'x-input-number-range')
|
|
153
|
+
const basicTab = inputNumberRange?.configTabs?.find((item) => item.key === 'basic')
|
|
154
|
+
const syncField = basicTab?.body.find((item: any) => item.name === 'sync') as any
|
|
155
|
+
|
|
156
|
+
expect(syncField?.type).toBe('custom')
|
|
157
|
+
expect(syncField?.label).toBe(false)
|
|
158
|
+
expect(syncField?.sync).toEqual([{ name: 'name', syncName: 'name' }])
|
|
159
|
+
expect(syncField?.component).toBeTruthy()
|
|
160
|
+
})
|
|
161
|
+
|
|
162
|
+
it('registers date range materials with separate start and end field mapping', () => {
|
|
163
|
+
const legacyDateRange = componentList.find((item) => item.value === 'x-date-range-picker')
|
|
164
|
+
const dateRangeV2 = componentList.find((item) => item.value === 'x-date-range-picker-v2')
|
|
165
|
+
const legacyBasicTab = legacyDateRange?.configTabs?.find((item) => item.key === 'basic')
|
|
166
|
+
const v2BasicTab = dateRangeV2?.configTabs?.find((item) => item.key === 'basic')
|
|
167
|
+
const legacySyncField = legacyBasicTab?.body.find((item: any) => item.name === 'sync') as any
|
|
168
|
+
const v2SyncField = v2BasicTab?.body.find((item: any) => item.name === 'sync') as any
|
|
169
|
+
|
|
170
|
+
expect(legacyDateRange?.scaffold).toMatchObject({
|
|
171
|
+
type: 'x-date-range-picker',
|
|
172
|
+
label: '日期范围',
|
|
173
|
+
rangeSeperator: '至',
|
|
174
|
+
_type: 'daterange',
|
|
175
|
+
valueFormat: 'YYYY-MM-DD',
|
|
176
|
+
sync: [
|
|
177
|
+
{ name: 'startDate', syncName: 'startDate' },
|
|
178
|
+
{ name: 'endDate', syncName: 'endDate' }
|
|
179
|
+
]
|
|
180
|
+
})
|
|
181
|
+
expect(dateRangeV2?.scaffold).toMatchObject({
|
|
182
|
+
type: 'x-date-range-picker-v2',
|
|
183
|
+
label: '日期范围',
|
|
184
|
+
rangeSeperator: '至',
|
|
185
|
+
valueFormat: 'YYYY-MM-DD',
|
|
186
|
+
format: 'YYYY-MM-DD',
|
|
187
|
+
sync: [
|
|
188
|
+
{ name: 'startDate', syncName: 'startDate' },
|
|
189
|
+
{ name: 'endDate', syncName: 'endDate' }
|
|
190
|
+
]
|
|
191
|
+
})
|
|
192
|
+
expect(legacySyncField).toMatchObject({
|
|
193
|
+
type: 'custom',
|
|
194
|
+
label: false,
|
|
195
|
+
allowTuple: false,
|
|
196
|
+
startSyncName: 'startDate',
|
|
197
|
+
endSyncName: 'endDate'
|
|
198
|
+
})
|
|
199
|
+
expect(v2SyncField).toMatchObject({
|
|
200
|
+
type: 'custom',
|
|
201
|
+
label: false,
|
|
202
|
+
allowTuple: false,
|
|
203
|
+
startSyncName: 'startDate',
|
|
204
|
+
endSyncName: 'endDate'
|
|
205
|
+
})
|
|
206
|
+
expectNoSchemaId(legacyDateRange?.scaffold)
|
|
207
|
+
expectNoSchemaId(dateRangeV2?.scaffold)
|
|
208
|
+
})
|
|
209
|
+
|
|
210
|
+
it('configures input table data tab for preset rows instead of columns', () => {
|
|
211
|
+
const inputTable = componentList.find((item) => item.value === 'x-input-table')
|
|
212
|
+
const dataTab = inputTable?.configTabs?.find((item) => item.key === 'data')
|
|
213
|
+
const operationTab = inputTable?.configTabs?.find((item) => item.key === 'operation')
|
|
214
|
+
const fieldNames = dataTab?.body.map((item: any) => item.name).filter(Boolean)
|
|
215
|
+
const operationFieldNames = operationTab?.body.map((item: any) => item.name).filter(Boolean)
|
|
216
|
+
|
|
217
|
+
expect(fieldNames).toContain('defaultValue')
|
|
218
|
+
expect(fieldNames).not.toContain('items')
|
|
219
|
+
expect(fieldNames).not.toContain('footerToolbar')
|
|
220
|
+
expect(operationFieldNames).toContain('items')
|
|
221
|
+
expect(operationFieldNames).toContain('footerToolbar')
|
|
222
|
+
})
|
|
223
|
+
|
|
224
|
+
it('registers radios material with runtime schema type', () => {
|
|
225
|
+
const radios = componentList.find((item) => item.value === 'x-radios')
|
|
226
|
+
|
|
227
|
+
expect(radios?.scaffold).toMatchObject({
|
|
228
|
+
type: 'x-radios',
|
|
229
|
+
label: '单选框',
|
|
230
|
+
options: [
|
|
231
|
+
{ label: '选项一', value: '1' },
|
|
232
|
+
{ label: '选项二', value: '2' }
|
|
233
|
+
]
|
|
234
|
+
})
|
|
235
|
+
expectNoSchemaId(radios?.scaffold)
|
|
236
|
+
})
|
|
237
|
+
|
|
238
|
+
it('registers checkboxes material with runtime schema type and options', () => {
|
|
239
|
+
const checkboxes = componentList.find((item) => item.value === 'x-checkboxes')
|
|
240
|
+
const dataTab = checkboxes?.configTabs?.find((item) => item.key === 'data')
|
|
241
|
+
const fieldNames = dataTab?.body.map((item: any) => item.name).filter(Boolean)
|
|
242
|
+
|
|
243
|
+
expect(checkboxes?.scaffold).toMatchObject({
|
|
244
|
+
type: 'x-checkboxes',
|
|
245
|
+
label: '多选框',
|
|
246
|
+
options: [
|
|
247
|
+
{ label: '选项一', value: '1' },
|
|
248
|
+
{ label: '选项二', value: '2' }
|
|
249
|
+
]
|
|
250
|
+
})
|
|
251
|
+
expect(fieldNames).toContain('options')
|
|
252
|
+
expectNoSchemaId(checkboxes?.scaffold)
|
|
253
|
+
})
|
|
254
|
+
|
|
255
|
+
it('registers checkbox material as a single boolean-style control', () => {
|
|
256
|
+
const checkbox = componentList.find((item) => item.value === 'checkbox')
|
|
257
|
+
const dataTab = checkbox?.configTabs?.find((item) => item.key === 'data')
|
|
258
|
+
|
|
259
|
+
expect(checkbox?.scaffold).toMatchObject({
|
|
260
|
+
type: 'checkbox',
|
|
261
|
+
label: '勾选框'
|
|
262
|
+
})
|
|
263
|
+
expect(checkbox?.scaffold).not.toHaveProperty('options')
|
|
264
|
+
expect(dataTab?.body.map((item: any) => item.name).filter(Boolean)).toEqual([])
|
|
265
|
+
expectNoSchemaId(checkbox?.scaffold)
|
|
266
|
+
})
|
|
267
|
+
|
|
268
|
+
it('configures common validation tab with rules editor', () => {
|
|
269
|
+
const input = componentList.find((item) => item.value === 'input')
|
|
270
|
+
const validationTab = input?.configTabs?.find((item) => item.key === 'validation')
|
|
271
|
+
const fieldNames = validationTab?.body.map((item: any) => item.name).filter(Boolean)
|
|
272
|
+
|
|
273
|
+
expect(fieldNames).toContain('rules')
|
|
274
|
+
})
|
|
275
|
+
|
|
276
|
+
it('shows missing dynamic state fields as their runtime defaults', () => {
|
|
277
|
+
const input = componentList.find((item) => item.value === 'input')
|
|
278
|
+
const advancedTab = input?.configTabs?.find((item) => item.key === 'advanced')
|
|
279
|
+
const visible = advancedTab?.body.find((item: any) => item.name === 'visible') as any
|
|
280
|
+
const disabled = advancedTab?.body.find((item: any) => item.name === 'disabled') as any
|
|
281
|
+
const staticItem = advancedTab?.body.find((item: any) => item.name === 'static') as any
|
|
282
|
+
|
|
283
|
+
expect(visible.pipeIn(undefined)).toBe(true)
|
|
284
|
+
expect(visible.pipeIn(false)).toBe(false)
|
|
285
|
+
expect(disabled.pipeIn(undefined)).toBe(false)
|
|
286
|
+
expect(staticItem.pipeIn(undefined)).toBe(false)
|
|
287
|
+
})
|
|
288
|
+
})
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest'
|
|
2
|
+
import { groupComponentConfig } from '../group'
|
|
3
|
+
import { getEditorGroupTitleStyles, registerEditorGroupTitleStyle } from '../../group-title-styles'
|
|
4
|
+
|
|
5
|
+
describe('groupComponentConfig', () => {
|
|
6
|
+
it('adds a schema-safe group scaffold for the editor palette', () => {
|
|
7
|
+
expect(groupComponentConfig.scaffold).toMatchObject({
|
|
8
|
+
type: 'group',
|
|
9
|
+
title: '分组',
|
|
10
|
+
label: false,
|
|
11
|
+
span: 24,
|
|
12
|
+
body: []
|
|
13
|
+
})
|
|
14
|
+
expect(groupComponentConfig.scaffold).not.toHaveProperty('id')
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
it('edits group label with a switch instead of a text input', () => {
|
|
18
|
+
const basicTab = groupComponentConfig.configTabs?.find((tab) => tab.key === 'basic')
|
|
19
|
+
const labelField = basicTab?.body.find((item) => item.name === 'label') as any
|
|
20
|
+
|
|
21
|
+
expect(labelField?.type).toBe('switch')
|
|
22
|
+
expect(labelField.pipeIn(false)).toBe(false)
|
|
23
|
+
expect(labelField.pipeIn('基础信息')).toBe(true)
|
|
24
|
+
expect(labelField.pipeOut(false, { title: '基础信息' })).toBe(false)
|
|
25
|
+
expect(labelField.pipeOut(true, { title: '基础信息' })).toBe('基础信息')
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
it('separates parent item layout from child container layout', () => {
|
|
29
|
+
const layoutTab = groupComponentConfig.configTabs?.find((tab) => tab.key === 'layout')
|
|
30
|
+
const titles = layoutTab?.body.map((item: any) => item.title).filter(Boolean)
|
|
31
|
+
const fieldNames = layoutTab?.body.map((item: any) => item.name).filter(Boolean)
|
|
32
|
+
|
|
33
|
+
expect(titles).toEqual(['作为表单项的布局', '容器本身布局配置'])
|
|
34
|
+
expect(fieldNames).toEqual(['span', 'layout'])
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
it('edits group title class through the registered style picker', () => {
|
|
38
|
+
const advancedTab = groupComponentConfig.configTabs?.find((tab) => tab.key === 'advanced')
|
|
39
|
+
const titleClassField = advancedTab?.body.find((item) => item.name === 'titleClass') as any
|
|
40
|
+
|
|
41
|
+
expect(titleClassField?.type).toBe('custom')
|
|
42
|
+
expect(getEditorGroupTitleStyles().map((style) => style.className)).toContain('x-group-title--bar')
|
|
43
|
+
expect(getEditorGroupTitleStyles().map((style) => style.className)).toContain('x-group-title--gradient-bar')
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
it('edits group title alignment independently from title style', () => {
|
|
47
|
+
const advancedTab = groupComponentConfig.configTabs?.find((tab) => tab.key === 'advanced')
|
|
48
|
+
const titleAlignField = advancedTab?.body.find((item) => item.name === 'titleAlign') as any
|
|
49
|
+
|
|
50
|
+
expect(titleAlignField?.type).toBe('x-radios')
|
|
51
|
+
expect(titleAlignField.pipeIn(undefined)).toBe('left')
|
|
52
|
+
expect(titleAlignField.pipeOut('left')).toBeUndefined()
|
|
53
|
+
expect(titleAlignField.pipeOut('center')).toBe('center')
|
|
54
|
+
expect(titleAlignField.pipeOut('right')).toBe('right')
|
|
55
|
+
})
|
|
56
|
+
|
|
57
|
+
it('exposes constrained title size and color instead of developer class fields', () => {
|
|
58
|
+
const advancedTab = groupComponentConfig.configTabs?.find((tab) => tab.key === 'advanced')
|
|
59
|
+
const fieldNames = advancedTab?.body.map((item: any) => item.name).filter(Boolean)
|
|
60
|
+
const titleSizeField = advancedTab?.body.find((item) => item.name === 'titleSize') as any
|
|
61
|
+
const titleColorField = advancedTab?.body.find((item) => item.name === 'titleColor') as any
|
|
62
|
+
|
|
63
|
+
expect(fieldNames).toContain('titleSize')
|
|
64
|
+
expect(fieldNames).toContain('titleColor')
|
|
65
|
+
expect(fieldNames).not.toContain('bodyClass')
|
|
66
|
+
expect(fieldNames).not.toContain('class')
|
|
67
|
+
expect(titleSizeField.pipeIn(undefined)).toBe('medium')
|
|
68
|
+
expect(titleSizeField.pipeOut('medium')).toBeUndefined()
|
|
69
|
+
expect(titleSizeField.pipeOut('large')).toBe('large')
|
|
70
|
+
expect(titleColorField.type).toBe('custom')
|
|
71
|
+
expect(titleColorField.component).toBeTruthy()
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
it('configures group title icon with the icon selector', () => {
|
|
75
|
+
const advancedTab = groupComponentConfig.configTabs?.find((tab) => tab.key === 'advanced')
|
|
76
|
+
const titleIconField = advancedTab?.body.find((item) => item.name === 'titleIcon') as any
|
|
77
|
+
|
|
78
|
+
expect(titleIconField?.type).toBe('x-icon-select')
|
|
79
|
+
expect(titleIconField.clearable).toBe(true)
|
|
80
|
+
expect(titleIconField).not.toHaveProperty('iconSources')
|
|
81
|
+
})
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
describe('group title style registry', () => {
|
|
85
|
+
it('registers and unregisters developer provided title styles', () => {
|
|
86
|
+
const unregister = registerEditorGroupTitleStyle({
|
|
87
|
+
key: 'test-style',
|
|
88
|
+
label: '测试样式',
|
|
89
|
+
className: 'test-group-title',
|
|
90
|
+
description: '仅用于测试'
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
expect(getEditorGroupTitleStyles()).toContainEqual({
|
|
94
|
+
key: 'test-style',
|
|
95
|
+
label: '测试样式',
|
|
96
|
+
className: 'test-group-title',
|
|
97
|
+
description: '仅用于测试'
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
unregister()
|
|
101
|
+
|
|
102
|
+
expect(getEditorGroupTitleStyles().some((style) => style.key === 'test-style')).toBe(false)
|
|
103
|
+
})
|
|
104
|
+
})
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ComponentConfig } from './types'
|
|
2
|
+
import { commonProps, createComponentConfigTabs } from './common-props'
|
|
3
|
+
|
|
4
|
+
export const cascaderComponentConfig: ComponentConfig = {
|
|
5
|
+
label: '级联选择器',
|
|
6
|
+
value: 'cascader',
|
|
7
|
+
icon: 'ri-node-tree',
|
|
8
|
+
scaffold: {
|
|
9
|
+
type: 'cascader',
|
|
10
|
+
label: '级联选择器',
|
|
11
|
+
options: []
|
|
12
|
+
},
|
|
13
|
+
replace: {
|
|
14
|
+
groups: ['options']
|
|
15
|
+
},
|
|
16
|
+
configTabs: createComponentConfigTabs({}),
|
|
17
|
+
configSchema: {
|
|
18
|
+
body: [...commonProps]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { ComponentConfig } from './types'
|
|
2
|
+
import { commonProps, createComponentConfigTabs } from './common-props'
|
|
3
|
+
import { optionsConfigItem } from './options-config'
|
|
4
|
+
|
|
5
|
+
export const checkboxComponentConfig: ComponentConfig = {
|
|
6
|
+
label: '单勾选框',
|
|
7
|
+
value: 'checkbox',
|
|
8
|
+
icon: 'ri-checkbox-line',
|
|
9
|
+
scaffold: {
|
|
10
|
+
type: 'checkbox',
|
|
11
|
+
label: '勾选框'
|
|
12
|
+
},
|
|
13
|
+
replace: {
|
|
14
|
+
groups: []
|
|
15
|
+
},
|
|
16
|
+
configTabs: createComponentConfigTabs({}),
|
|
17
|
+
configSchema: {
|
|
18
|
+
body: [...commonProps]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const checkboxesComponentConfig: ComponentConfig = {
|
|
23
|
+
label: '多选框',
|
|
24
|
+
value: 'x-checkboxes',
|
|
25
|
+
icon: 'ri-checkbox-multiple-line',
|
|
26
|
+
scaffold: {
|
|
27
|
+
type: 'x-checkboxes',
|
|
28
|
+
label: '多选框',
|
|
29
|
+
options: [
|
|
30
|
+
{ label: '选项一', value: '1' },
|
|
31
|
+
{ label: '选项二', value: '2' }
|
|
32
|
+
]
|
|
33
|
+
},
|
|
34
|
+
replace: {
|
|
35
|
+
groups: ['options']
|
|
36
|
+
},
|
|
37
|
+
configTabs: createComponentConfigTabs({
|
|
38
|
+
data: [optionsConfigItem]
|
|
39
|
+
}),
|
|
40
|
+
configSchema: {
|
|
41
|
+
body: [...commonProps, optionsConfigItem]
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { markRaw } from 'vue'
|
|
2
|
+
import ConditionEditor from '../components/condition-editor.vue'
|
|
3
|
+
import FormItemLayoutEditor from '../components/form-item-layout-editor.vue'
|
|
4
|
+
import ValidationRulesEditor from '../components/validation-rules-editor.vue'
|
|
5
|
+
import type { XFormItem } from 'xkit-ui'
|
|
6
|
+
import type { EditorConfigTab } from './types'
|
|
7
|
+
|
|
8
|
+
export const commonBasicProps: XFormItem[] = [
|
|
9
|
+
{
|
|
10
|
+
title: '基本信息',
|
|
11
|
+
label: false,
|
|
12
|
+
type: 'group',
|
|
13
|
+
titleClass: 'config-group-title',
|
|
14
|
+
body: []
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
label: '字段中文名',
|
|
18
|
+
name: 'label',
|
|
19
|
+
type: 'input',
|
|
20
|
+
placeholder: '请输入字段中文名'
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
label: '字段名',
|
|
24
|
+
name: 'name',
|
|
25
|
+
type: 'input',
|
|
26
|
+
placeholder: '请输入字段名'
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
label: '标签位置',
|
|
30
|
+
name: 'labelPosition',
|
|
31
|
+
type: 'select',
|
|
32
|
+
// mode: 'button',
|
|
33
|
+
// size: 'small',
|
|
34
|
+
options: [
|
|
35
|
+
{ label: '继承', value: '' },
|
|
36
|
+
{ label: '左', value: 'left' },
|
|
37
|
+
{ label: '上', value: 'top' },
|
|
38
|
+
{ label: '右', value: 'right' }
|
|
39
|
+
],
|
|
40
|
+
pipeIn(value: string | undefined) {
|
|
41
|
+
return value ?? ''
|
|
42
|
+
},
|
|
43
|
+
pipeOut(value: string) {
|
|
44
|
+
return value || undefined
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
|
|
49
|
+
export const commonLayoutProps: XFormItem[] = [
|
|
50
|
+
{
|
|
51
|
+
title: '布局配置',
|
|
52
|
+
name: 'span',
|
|
53
|
+
type: 'custom',
|
|
54
|
+
component: markRaw(FormItemLayoutEditor),
|
|
55
|
+
titleClass: 'config-group-title',
|
|
56
|
+
label: false,
|
|
57
|
+
sync: [{ name: 'offsetRight', syncName: 'offsetRight' }]
|
|
58
|
+
}
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
export const commonAdvancedProps: XFormItem[] = [
|
|
62
|
+
{
|
|
63
|
+
title: '状态控制',
|
|
64
|
+
type: 'group',
|
|
65
|
+
titleClass: 'config-group-title',
|
|
66
|
+
label: false
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
label: '是否可见',
|
|
70
|
+
name: 'visible',
|
|
71
|
+
type: 'custom',
|
|
72
|
+
component: markRaw(ConditionEditor),
|
|
73
|
+
stateKind: 'visible',
|
|
74
|
+
_defaultValue: true,
|
|
75
|
+
pipeIn(value: any) {
|
|
76
|
+
return value === undefined ? true : value
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
label: '是否禁用',
|
|
81
|
+
name: 'disabled',
|
|
82
|
+
type: 'custom',
|
|
83
|
+
component: markRaw(ConditionEditor),
|
|
84
|
+
stateKind: 'disabled',
|
|
85
|
+
_defaultValue: false,
|
|
86
|
+
pipeIn(value: any) {
|
|
87
|
+
return value === undefined ? false : value
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
label: '是否静态',
|
|
92
|
+
name: 'static',
|
|
93
|
+
type: 'custom',
|
|
94
|
+
component: markRaw(ConditionEditor),
|
|
95
|
+
stateKind: 'static',
|
|
96
|
+
_defaultValue: false,
|
|
97
|
+
pipeIn(value: any) {
|
|
98
|
+
return value === undefined ? false : value
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
|
|
103
|
+
export const commonValidationProps: XFormItem[] = [
|
|
104
|
+
{
|
|
105
|
+
title: '校验规则',
|
|
106
|
+
name: 'rules',
|
|
107
|
+
type: 'custom',
|
|
108
|
+
component: markRaw(ValidationRulesEditor),
|
|
109
|
+
titleClass: 'config-group-title',
|
|
110
|
+
label: false
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
|
|
114
|
+
export const commonProps: XFormItem[] = [...commonBasicProps, ...commonLayoutProps, ...commonValidationProps, ...commonAdvancedProps]
|
|
115
|
+
|
|
116
|
+
export const createComponentConfigTabs = (tabs: {
|
|
117
|
+
basic?: XFormItem[]
|
|
118
|
+
layout?: XFormItem[]
|
|
119
|
+
data?: XFormItem[]
|
|
120
|
+
operation?: XFormItem[]
|
|
121
|
+
validation?: XFormItem[]
|
|
122
|
+
advanced?: XFormItem[]
|
|
123
|
+
}): EditorConfigTab[] => [
|
|
124
|
+
{ key: 'basic', body: [...commonBasicProps, ...(tabs.basic || [])] },
|
|
125
|
+
{ key: 'layout', body: [...commonLayoutProps, ...(tabs.layout || [])] },
|
|
126
|
+
{ key: 'data', body: tabs.data || [] },
|
|
127
|
+
{ key: 'operation', body: tabs.operation || [] },
|
|
128
|
+
{ key: 'validation', body: [...commonValidationProps, ...(tabs.validation || [])] },
|
|
129
|
+
{ key: 'advanced', body: [...commonAdvancedProps, ...(tabs.advanced || [])] }
|
|
130
|
+
]
|