@kp-ui/lowcode-pc 1.0.0-alpha.9 → 1.0.1
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/assets/styles/style.css +189 -51
- package/core/src/components/common/render/Debugger.vue.js +1 -1
- package/core/src/components/common/render/Debugger.vue2.js +1 -1
- package/core/src/components/common/render/Debugger.vue2.js.map +1 -1
- package/core/src/components/common/render/LowcodeRenderProvider.vue.js +10 -1
- package/core/src/components/common/render/LowcodeRenderProvider.vue.js.map +1 -1
- package/core/src/components/common/render/useFormContext.js +3 -2
- package/core/src/components/common/render/useFormContext.js.map +1 -1
- package/core/src/constants/WidgetTypeEnum.js +1 -0
- package/core/src/constants/WidgetTypeEnum.js.map +1 -1
- package/core/src/hooks/useAppRef.js +1 -0
- package/core/src/hooks/useAppRef.js.map +1 -1
- package/core/src/hooks/useDataHttp.js +3 -3
- package/core/src/hooks/useDataHttp.js.map +1 -1
- package/core/src/hooks/useDesigner.js +3 -1
- package/core/src/hooks/useDesigner.js.map +1 -1
- package/core/src/hooks/useField.js +97 -64
- package/core/src/hooks/useField.js.map +1 -1
- package/core/src/hooks/useWebMCP.js +82 -0
- package/core/src/hooks/useWebMCP.js.map +1 -0
- package/core/src/lang/en-US.js +33 -0
- package/core/src/lang/en-US.js.map +1 -1
- package/core/src/lang/zh-CN.js +64 -11
- package/core/src/lang/zh-CN.js.map +1 -1
- package/install.js +1 -1
- package/install.js.map +1 -1
- package/package.json +1 -1
- package/src/components/desginer/form-widget/container-widget/data-table-widget.vue.js +1 -1
- package/src/components/desginer/form-widget/container-widget/data-table-widget.vue2.js +17 -3
- package/src/components/desginer/form-widget/container-widget/data-table-widget.vue2.js.map +1 -1
- package/src/components/desginer/form-widget/container-widget/useTableWidget.js +23 -5
- package/src/components/desginer/form-widget/container-widget/useTableWidget.js.map +1 -1
- package/src/components/desginer/form-widget/container-widget/vf-box-widget.vue.js +1 -1
- package/src/components/desginer/form-widget/container-widget/vf-box-widget.vue2.js.map +1 -1
- package/src/components/desginer/form-widget/container-widget/vf-dialog-widget.vue2.js +0 -1
- package/src/components/desginer/form-widget/container-widget/vf-dialog-widget.vue2.js.map +1 -1
- package/src/components/desginer/widget-panel/advanced/data-table.js +2 -0
- package/src/components/desginer/widget-panel/advanced/data-table.js.map +1 -1
- package/src/components/desginer/widget-panel/containers/grid-sub-form.js +5 -0
- package/src/components/desginer/widget-panel/containers/grid-sub-form.js.map +1 -1
- package/src/components/desginer/widget-panel/containers/grid.js +1 -3
- package/src/components/desginer/widget-panel/containers/grid.js.map +1 -1
- package/src/components/field-widget/bpmn-editor-widget.vue.js +1 -1
- package/src/components/field-widget/bpmn-editor-widget.vue2.js +1 -1
- package/src/components/field-widget/bpmn-editor-widget.vue2.js.map +1 -1
- package/src/components/field-widget/button-list-widget.vue.js +1 -1
- package/src/components/field-widget/button-list-widget.vue2.js +1 -2
- package/src/components/field-widget/button-list-widget.vue2.js.map +1 -1
- package/src/components/field-widget/code-editor-widget.vue.js +1 -1
- package/src/components/field-widget/code-editor-widget.vue2.js +1 -1
- package/src/components/field-widget/code-editor-widget.vue2.js.map +1 -1
- package/src/components/field-widget/divider-widget.vue2.js +1 -1
- package/src/components/field-widget/divider-widget.vue2.js.map +1 -1
- package/src/components/field-widget/diy-compontent-widget.vue2.js +1 -1
- package/src/components/field-widget/diy-compontent-widget.vue2.js.map +1 -1
- package/src/components/field-widget/dropdown-widget.vue.js +1 -1
- package/src/components/field-widget/dropdown-widget.vue2.js +12 -20
- package/src/components/field-widget/dropdown-widget.vue2.js.map +1 -1
- package/src/components/field-widget/file-upload-widget.vue.js +1 -1
- package/src/components/field-widget/file-upload-widget.vue2.js +12 -16
- package/src/components/field-widget/file-upload-widget.vue2.js.map +1 -1
- package/src/components/field-widget/form-item-wrapper.vue.js +1 -1
- package/src/components/field-widget/form-item-wrapper.vue2.js.map +1 -1
- package/src/components/field-widget/number-widget.vue2.js +1 -1
- package/src/components/field-widget/number-widget.vue2.js.map +1 -1
- package/src/components/field-widget/radio-widget.vue.js +1 -1
- package/src/components/field-widget/radio-widget.vue2.js +5 -6
- package/src/components/field-widget/radio-widget.vue2.js.map +1 -1
- package/src/components/field-widget/rich-editor-widget.vue.js +1 -1
- package/src/components/field-widget/rich-editor-widget.vue2.js +1 -1
- package/src/components/field-widget/rich-editor-widget.vue2.js.map +1 -1
- package/src/components/field-widget/textarea-widget.vue.js +1 -1
- package/src/components/field-widget/textarea-widget.vue2.js +1 -1
- package/src/components/field-widget/textarea-widget.vue2.js.map +1 -1
- package/src/components/field-widget/treeSelect-widget.vue2.js +8 -9
- package/src/components/field-widget/treeSelect-widget.vue2.js.map +1 -1
- package/src/components/field-widget/vue-render-widget.vue2.js +1 -1
- package/src/components/field-widget/vue-render-widget.vue2.js.map +1 -1
- package/src/components/form-render/container-items/data-table-widget.vue.js +1 -1
- package/src/components/form-render/container-items/data-table-widget.vue2.js +83 -4
- package/src/components/form-render/container-items/data-table-widget.vue2.js.map +1 -1
- package/src/components/form-render/container-items/grid-sub-form-widget.vue.js +1 -1
- package/src/components/form-render/container-items/grid-sub-form-widget.vue2.js +24 -5
- package/src/components/form-render/container-items/grid-sub-form-widget.vue2.js.map +1 -1
- package/src/components/public/DataTableColumnDialog.vue.js +8 -0
- package/src/components/public/DataTableColumnDialog.vue.js.map +1 -0
- package/src/components/public/DataTableColumnDialog.vue2.js +333 -0
- package/src/components/public/DataTableColumnDialog.vue2.js.map +1 -0
- package/src/components/public/DynamicDialog.vue.js +0 -1
- package/src/components/public/DynamicDialog.vue.js.map +1 -1
- package/src/components/render/index.vue2.js +0 -1
- package/src/components/render/index.vue2.js.map +1 -1
- package/stats.html +1 -1
- package/core/src/utils/event-bus.js +0 -8
- package/core/src/utils/event-bus.js.map +0 -1
- package/src/components/field-widget/useField.js +0 -578
- package/src/components/field-widget/useField.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-upload-widget.vue2.js","sources":["../../../../src/components/field-widget/file-upload-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" v-if=\"!handleHidden\" :rules=\"rules\">\n <template v-if=\"!handleDisabled && !isReadMode\">\n <a-upload\n ref=\"fieldEditor\"\n :disabled=\"handleDisabled || isReadMode\"\n class=\"dynamicPseudoAfter\"\n :class=\"['tpf-upload', { isReadonly: isReadMode }]\"\n :multiple=\"field.options.multiple\"\n :accept=\"acceptType\"\n v-model:file-list=\"fieldModel\"\n :listType=\"field.options.uploadListType\"\n :customRequest=\"customRequest\"\n :iconRender=\"iconRender\"\n @preview=\"handlePreview\"\n @remove=\"removeFile\"\n >\n <a-space :size=\"10\" align=\"start\" v-if=\"isShowUploader\">\n <a-button\n :loading=\"loading\"\n class=\"tpf-button\"\n type=\"primary\"\n :disabled=\"handleDisabled\"\n >\n <SvgIcon icon-class=\"daochu\" /> 上传文件\n </a-button>\n </a-space>\n </a-upload>\n <div :gutter=\"20\" class=\"fileUploadTip\">\n <div v-for=\"(item, inx) in descCol\" :key=\"inx\">\n <span v-if=\"descCol.length > 1\">{{ inx + 1 }}、{{ item }}</span>\n <span v-else>{{ item }}</span>\n </div>\n </div>\n </template>\n <template v-else>\n <AttachmentRender :data=\"fieldModel\" />\n </template>\n <TpfModal v-model:visible=\"previewVisible\" :title=\"previewTitle\" :footer=\"null\">\n <img style=\"width: 100%\" :src=\"previewImage\" />\n </TpfModal>\n </form-item-wrapper>\n</template>\n\n<script lang=\"tsx\" setup>\n import FormItemWrapper from './form-item-wrapper.vue';\n import { useField, type FieldProps } from '@kp-ui/lowcode-core';\n import { WidgetTypeEnum, ComponentNameEnum } from '@kp-ui/lowcode-core';\n import { computed, onMounted } from 'vue';\n import {\n AttachmentRender,\n useFilePreview,\n TpfModal,\n SvgIcon,\n useFilesystemApi,\n FileIcon\n } from 'tmgc2-share';\n import { message } from 'ant-design-vue';\n\n const filesystemApi = useFilesystemApi();\n defineOptions({\n name: WidgetTypeEnum.fileUpload,\n componentName: ComponentNameEnum.FieldWidget\n });\n const props = withDefaults(defineProps<FieldProps>(), {});\n\n const {\n loading,\n rules,\n i18nt,\n fieldEditor,\n field,\n fieldModel,\n isReadMode,\n size,\n designState,\n handleHidden,\n handleDisabled,\n defineExposed,\n executeFunction\n } = useField(props);\n\n const handleOnBeforeUpload = file => {\n if (field.options.onBeforeUpload) {\n const result = executeFunction({\n functionBody: field.options.onBeforeUpload,\n params: {\n file\n },\n keys: ['file']\n });\n if (typeof result === 'boolean') {\n return result;\n } else {\n return true;\n }\n }\n return true;\n };\n\n const isShowUploader = computed(\n () => (fieldModel.value?.length || 0) < (field.options.limit || 1)\n );\n\n const customRequest = async upload => {\n const { accept, maxSize, limit, businessType, multiple } = field.options;\n const fileName = upload.file.name;\n const fieldTypesArr = accept.map(item => item.toLowerCase());\n const fieldTypes = fileName.slice(fileName.lastIndexOf('.'));\n\n if (!fieldTypesArr.includes(fieldTypes.toLowerCase())) {\n return message.error(`目前仅支持${accept}格式的文件`);\n }\n\n if (maxSize && upload.file.size > maxSize * 1024 * 1024) {\n message.error(`文件大小不能超过${maxSize}M`);\n return;\n }\n\n const flag = handleOnBeforeUpload(upload);\n\n if (!flag) return;\n loading.value = true;\n try {\n const res = await filesystemApi.uploadFileObject({\n businessType: businessType,\n file: upload.file\n });\n\n const { fileName: name } = res.data.object;\n\n if (limit > 1) {\n const findIndex = fieldModel.value.findIndex(item => item.name === name);\n if (findIndex > -1) {\n fieldModel.value.splice(findIndex, 1);\n }\n if (fieldModel.value.length < limit) {\n fieldModel.value.push({ ...res.data.object, name });\n }\n } else {\n fieldModel.value = [{ ...res.data.object, name }];\n }\n } finally {\n loading.value = false;\n }\n };\n\n /**\n * 初始化文件列表\n */\n const initFileListFieldModel = () => {\n // 初始化上传组件的已上传文件列表\n if (designState) {\n return;\n }\n\n if (fieldModel.value) {\n if (typeof fieldModel.value === 'string') {\n fieldModel.value = JSON.parse(fieldModel.value);\n }\n }\n };\n\n const acceptType = computed(() => {\n const { accept } = field.options;\n if (accept?.length) {\n return accept.join(',');\n } else {\n return '*';\n }\n });\n\n const { handlePreview, previewVisible, previewImage, previewTitle } = useFilePreview();\n\n const iconRender = ({ file }: { file: File }) => {\n const fileObj = {\n fileName: file.name,\n fileType: file.name.slice(file.name.lastIndexOf('.'))\n };\n return <FileIcon file={fileObj} />;\n };\n\n const removeFile = file => {\n const findInx = fieldModel.value.findIndex(item => item.uid === file.uid);\n fieldModel.value.splice(findInx, 1);\n };\n\n const descCol = computed(() => {\n const { accept, maxSize } = field.options;\n const acceptList = (accept || []).join(',');\n return [\n acceptList.length ? i18nt('支持扩展名') + `${acceptList}` : '',\n maxSize ? i18nt('支持文件大小') + `${maxSize}M` : ''\n ].filter(Boolean);\n });\n\n onMounted(() => {\n initFileListFieldModel();\n });\n\n defineExpose({\n ...defineExposed\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .fileUploadTip {\n font-size: 12px;\n margin-top: 10px;\n }\n</style>\n"],"names":["filesystemApi","useFilesystemApi","props","__props","loading","rules","i18nt","fieldEditor","field","fieldModel","isReadMode","designState","handleHidden","handleDisabled","defineExposed","executeFunction","useField","handleOnBeforeUpload","file","options","onBeforeUpload","result","functionBody","params","keys","isShowUploader","computed","value","length","limit","customRequest","upload","accept","maxSize","businessType","multiple","fileName","name","fieldTypesArr","map","item","toLowerCase","fieldTypes","slice","lastIndexOf","includes","message","error","size","flag","res","uploadFileObject","data","object","findIndex","splice","push","initFileListFieldModel","JSON","parse","acceptType","join","handlePreview","previewVisible","previewImage","previewTitle","useFilePreview","iconRender","fileObj","fileType","_createVNode2","FileIcon","removeFile","findInx","uid","descCol","acceptList","filter","Boolean","onMounted","__expose","_unref","_openBlock","_createBlock","FormItemWrapper","_mergeProps","key","_createElementBlock","_Fragment","_createVNode","_component_a_upload","ref","disabled","class","_normalizeClass","isReadonly","$event","listType","uploadListType","onPreview","onRemove","_component_a_space","align","_component_a_button","type","SvgIcon","_createElementVNode","_hoisted_1","_renderList","inx","_hoisted_2","_toDisplayString","AttachmentRender","TpfModal","visible","title","footer","style","src"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"file-upload-widget.vue2.js","sources":["../../../../src/components/field-widget/file-upload-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" v-if=\"!handleHidden\" :rules=\"rules\">\n <template v-if=\"!handleDisabled && !isReadMode\">\n <a-upload\n ref=\"fieldEditor\"\n :disabled=\"handleDisabled || isReadMode\"\n class=\"dynamicPseudoAfter\"\n :class=\"['tpf-upload', { isReadonly: isReadMode }]\"\n :multiple=\"field.options.multiple\"\n :accept=\"acceptType\"\n v-model:file-list=\"fieldModel\"\n :listType=\"field.options.uploadListType\"\n :customRequest=\"customRequest\"\n :iconRender=\"iconRender\"\n @preview=\"handlePreview\"\n @remove=\"removeFile\"\n >\n <a-space :size=\"10\" align=\"start\" v-if=\"isShowUploader\">\n <span\n :loading=\"loading\"\n class=\"tpf-button\"\n type=\"primary\"\n :disabled=\"handleDisabled\"\n >\n <SvgIcon icon-class=\"daochu\" /> 上传文件\n </span>\n </a-space>\n </a-upload>\n <div :gutter=\"20\" class=\"fileUploadTip\">\n <div v-for=\"(item, inx) in descCol\" :key=\"inx\">\n <span v-if=\"descCol.length > 1\">{{ inx + 1 }}、{{ item }}</span>\n <span v-else>{{ item }}</span>\n </div>\n </div>\n </template>\n <template v-else>\n <AttachmentRender :data=\"fieldModel\" />\n </template>\n <TpfModal v-model:visible=\"previewVisible\" :title=\"previewTitle\" :footer=\"null\">\n <img style=\"width: 100%\" :src=\"previewImage\" />\n </TpfModal>\n </form-item-wrapper>\n</template>\n\n<script lang=\"tsx\" setup>\n import FormItemWrapper from './form-item-wrapper.vue';\n import { useField, type FieldProps } from '@kp-ui/lowcode-core';\n import { WidgetTypeEnum, ComponentNameEnum } from '@kp-ui/lowcode-core';\n import { computed, onMounted } from 'vue';\n import {\n AttachmentRender,\n useFilePreview,\n TpfModal,\n SvgIcon,\n useFilesystemApi,\n FileIcon\n } from 'tmgc2-share';\n import { message } from 'ant-design-vue';\n\n const filesystemApi = useFilesystemApi();\n defineOptions({\n name: WidgetTypeEnum.fileUpload,\n componentName: ComponentNameEnum.FieldWidget\n });\n const props = withDefaults(defineProps<FieldProps>(), {});\n\n const {\n loading,\n rules,\n i18nt,\n fieldEditor,\n field,\n fieldModel,\n isReadMode,\n size,\n designState,\n handleHidden,\n handleDisabled,\n defineExposed,\n executeFunction\n } = useField(props);\n\n const handleOnBeforeUpload = file => {\n if (field.options.onBeforeUpload) {\n const result = executeFunction({\n functionBody: field.options.onBeforeUpload,\n params: {\n file\n },\n keys: ['file']\n });\n if (typeof result === 'boolean') {\n return result;\n } else {\n return true;\n }\n }\n return true;\n };\n\n const isShowUploader = computed(\n () => (fieldModel.value?.length || 0) < (field.options.limit || 1)\n );\n\n const customRequest = async upload => {\n const { accept, maxSize, limit, businessType, multiple } = field.options;\n const fileName = upload.file.name;\n const fieldTypesArr = accept.map(item => item.toLowerCase());\n const fieldTypes = fileName.slice(fileName.lastIndexOf('.'));\n\n if (!fieldTypesArr.includes(fieldTypes.toLowerCase())) {\n return message.error(`目前仅支持${accept}格式的文件`);\n }\n\n if (maxSize && upload.file.size > maxSize * 1024 * 1024) {\n message.error(`文件大小不能超过${maxSize}M`);\n return;\n }\n\n const flag = handleOnBeforeUpload(upload);\n\n if (!flag) return;\n loading.value = true;\n try {\n const res = await filesystemApi.uploadFileObject({\n businessType: businessType,\n file: upload.file\n });\n\n const { fileName: name } = res.data.object;\n\n if (limit > 1) {\n const findIndex = fieldModel.value.findIndex(item => item.name === name);\n if (findIndex > -1) {\n fieldModel.value.splice(findIndex, 1);\n }\n if (fieldModel.value.length < limit) {\n fieldModel.value.push({ ...res.data.object, name });\n }\n } else {\n fieldModel.value = [{ ...res.data.object, name }];\n }\n } finally {\n loading.value = false;\n }\n };\n\n /**\n * 初始化文件列表\n */\n const initFileListFieldModel = () => {\n // 初始化上传组件的已上传文件列表\n if (designState) {\n return;\n }\n\n if (fieldModel.value) {\n if (typeof fieldModel.value === 'string') {\n fieldModel.value = JSON.parse(fieldModel.value);\n }\n }\n };\n\n const acceptType = computed(() => {\n const { accept } = field.options;\n if (accept?.length) {\n return accept.join(',');\n } else {\n return '*';\n }\n });\n\n const { handlePreview, previewVisible, previewImage, previewTitle } = useFilePreview();\n\n const iconRender = ({ file }: { file: File }) => {\n const fileObj = {\n fileName: file.name,\n fileType: file.name.slice(file.name.lastIndexOf('.'))\n };\n return <FileIcon file={fileObj} />;\n };\n\n const removeFile = file => {\n const findInx = fieldModel.value.findIndex(item => item.uid === file.uid);\n fieldModel.value.splice(findInx, 1);\n };\n\n const descCol = computed(() => {\n const { accept, maxSize } = field.options;\n const acceptList = (accept || []).join(',');\n return [\n acceptList.length ? i18nt('支持扩展名') + `${acceptList}` : '',\n maxSize ? i18nt('支持文件大小') + `${maxSize}M` : ''\n ].filter(Boolean);\n });\n\n onMounted(() => {\n initFileListFieldModel();\n });\n\n defineExpose({\n ...defineExposed\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .fileUploadTip {\n font-size: 12px;\n margin-top: 10px;\n }\n</style>\n"],"names":["filesystemApi","useFilesystemApi","props","__props","loading","rules","i18nt","fieldEditor","field","fieldModel","isReadMode","designState","handleHidden","handleDisabled","defineExposed","executeFunction","useField","handleOnBeforeUpload","file","options","onBeforeUpload","result","functionBody","params","keys","isShowUploader","computed","value","length","limit","customRequest","upload","accept","maxSize","businessType","multiple","fileName","name","fieldTypesArr","map","item","toLowerCase","fieldTypes","slice","lastIndexOf","includes","message","error","size","flag","res","uploadFileObject","data","object","findIndex","splice","push","initFileListFieldModel","JSON","parse","acceptType","join","handlePreview","previewVisible","previewImage","previewTitle","useFilePreview","iconRender","fileObj","fileType","_createVNode2","FileIcon","removeFile","findInx","uid","descCol","acceptList","filter","Boolean","onMounted","__expose","_unref","_openBlock","_createBlock","FormItemWrapper","_mergeProps","key","_createElementBlock","_Fragment","_createVNode","_component_a_upload","ref","disabled","class","_normalizeClass","isReadonly","$event","listType","uploadListType","onPreview","onRemove","_component_a_space","align","_createElementVNode","type","SvgIcon","_hoisted_2","_renderList","inx","_hoisted_3","_toDisplayString","AttachmentRender","TpfModal","visible","title","footer","style","src"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./form-item-wrapper.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const FormItemWrapper = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const FormItemWrapper = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-fe290edb"]]);
|
|
5
5
|
export {
|
|
6
6
|
FormItemWrapper as default
|
|
7
7
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-item-wrapper.vue2.js","sources":["../../../../src/components/field-widget/form-item-wrapper.vue"],"sourcesContent":["<template>\n <div class=\"field-wrapper\">\n <FormItem\n :labelCol=\"{ style: { width: labelWidth + 'px' } }\"\n :rules=\"rules\"\n :name=\"getPropName\"\n :labelAlign=\"labelAlign\"\n :class=\"[customClass]\"\n >\n <template #label>\n <div class=\"label-box\">\n <span v-if=\"!!field.options.labelIconClass\" class=\"custom-label\">\n <template v-if=\"field.options.labelIconPosition === 'front'\">\n <a-tooltip :title=\"field.options.labelIconTooltip\">\n <svg-icon :icon-class=\"field.options.labelIconClass\" />\n </a-tooltip>\n <div class=\"label-text\">\n {{ label }}\n </div>\n </template>\n <template v-else-if=\"field.options.labelIconPosition === 'rear'\">\n <div class=\"label-text\">\n {{ label }}\n </div>\n <a-tooltip :title=\"field.options.labelIconTooltip\">\n <svg-icon :icon-class=\"field.options.labelIconClass\" />\n </a-tooltip>\n </template>\n </span>\n <template v-else>\n <div class=\"label-text\">\n {{ label }}\n </div>\n </template>\n </div>\n </template>\n <slot></slot>\n </FormItem>\n </div>\n</template>\n\n<script lang=\"tsx\" setup>\n import { SvgIcon } from 'tmgc2-share';\n import { FieldProps } from '
|
|
1
|
+
{"version":3,"file":"form-item-wrapper.vue2.js","sources":["../../../../src/components/field-widget/form-item-wrapper.vue"],"sourcesContent":["<template>\n <div class=\"field-wrapper\">\n <FormItem\n :labelCol=\"{ style: { width: labelWidth + 'px' } }\"\n :rules=\"rules\"\n :name=\"getPropName\"\n :labelAlign=\"labelAlign\"\n :class=\"[customClass]\"\n >\n <template #label>\n <div class=\"label-box\">\n <span v-if=\"!!field.options.labelIconClass\" class=\"custom-label\">\n <template v-if=\"field.options.labelIconPosition === 'front'\">\n <a-tooltip :title=\"field.options.labelIconTooltip\">\n <svg-icon :icon-class=\"field.options.labelIconClass\" />\n </a-tooltip>\n <div class=\"label-text\">\n {{ label }}\n </div>\n </template>\n <template v-else-if=\"field.options.labelIconPosition === 'rear'\">\n <div class=\"label-text\">\n {{ label }}\n </div>\n <a-tooltip :title=\"field.options.labelIconTooltip\">\n <svg-icon :icon-class=\"field.options.labelIconClass\" />\n </a-tooltip>\n </template>\n </span>\n <template v-else>\n <div class=\"label-text\">\n {{ label }}\n </div>\n </template>\n </div>\n </template>\n <slot></slot>\n </FormItem>\n </div>\n</template>\n\n<script lang=\"tsx\" setup>\n import { SvgIcon } from 'tmgc2-share';\n import { FieldProps } from '@kp-ui/lowcode-core';\n import { computed, inject } from 'vue';\n import { FormItem } from 'ant-design-vue';\n import { useDesigner } from '@kp-ui/lowcode-core';\n import { reactive } from 'vue';\n defineOptions({\n name: 'form-item-wrapper'\n });\n\n interface FormItemWrapperProps extends FieldProps {\n rules?: Array<any>;\n }\n const props = withDefaults(defineProps<FormItemWrapperProps>(), {\n parentWidget: null,\n indexOfParentList: 0\n });\n const getSubFormName = inject('getSubFormName', () => '');\n const getSubFormFieldFlag = inject('getSubFormFieldFlag', () => false);\n\n const { formConfig, designer, designState } = useDesigner();\n\n const labelWidth = computed(() => {\n if (props.field?.options?.labelHidden) {\n return 0;\n }\n\n if (props.field?.options?.labelWidth) {\n return props.field.options.labelWidth;\n }\n\n return formConfig.value?.labelWidth;\n });\n\n const label = computed(() => {\n if (props.field?.options?.labelHidden) {\n return '';\n }\n return props.field?.options?.label;\n });\n\n const labelAlign = computed(() => {\n if (props.field?.options?.labelAlign) {\n return props.field.options.labelAlign;\n }\n return formConfig.value?.labelAlign || 'right';\n });\n\n const subFormName = computed(() => () => {\n return getSubFormName ? getSubFormName() : '';\n });\n\n const size = computed(() => {\n if (props.field?.options?.size) {\n return props.field.options.size;\n }\n return formConfig.value?.size || 'middle';\n });\n\n const subFormItemFlag = computed(() => {\n return getSubFormFieldFlag ? getSubFormFieldFlag() : false;\n });\n\n const getPropName = computed(() => {\n if (subFormItemFlag.value && !designState) {\n return (\n subFormName.value +\n '.' +\n props.subFormRowIndex +\n '.' +\n props.field.options.name +\n ''\n );\n } else return props.field.options.name;\n });\n\n const customClass = computed(() =>\n props.field.options.customClass ? props.field.options.customClass.join(' ') : ''\n );\n</script>\n\n<style lang=\"scss\" scoped>\n .field-wrapper {\n position: relative;\n }\n\n .ant-form-item {\n position: relative;\n\n :deep(.ant-form-item-label) {\n white-space: nowrap;\n text-overflow: ellipsis;\n }\n\n span.custom-label {\n display: flex;\n i {\n margin: 0 3px;\n }\n }\n\n /* 隐藏Chrome浏览器中el-input数字输入框右侧的上下调整小箭头 */\n :deep(.hide-spin-button) input::-webkit-outer-spin-button,\n :deep(.hide-spin-button) input::-webkit-inner-spin-button {\n -webkit-appearance: none !important;\n }\n }\n</style>\n"],"names":["props","__props","getSubFormName","inject","getSubFormFieldFlag","formConfig","designState","useDesigner","labelWidth","computed","field","options","labelHidden","value","label","labelAlign","subFormName","size","subFormItemFlag","getPropName","subFormRowIndex","name","customClass","join","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","FormItem","labelCol","rules","class","_createElementVNode","_hoisted_2","labelIconClass","_hoisted_3","labelIconPosition","_Fragment","key","_component_a_tooltip","title","labelIconTooltip","SvgIcon","_hoisted_4","_toDisplayString","_hoisted_5","_hoisted_6","_renderSlot","_ctx","$slots","undefined"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDI,UAAMA,QAAQC;AAId,UAAMC,iBAAiBC,OAAO,kBAAkB,MAAM,EAAE;AACxD,UAAMC,sBAAsBD,OAAO,uBAAuB,MAAM,KAAK;AAErE,UAAM;AAAA,MAAEE;AAAAA,MAAsBC;AAAAA,QAAgBC,YAAW;AAEzD,UAAMC,aAAaC,SAAS,MAAM;;AAC9B,WAAIT,iBAAMU,UAANV,mBAAaW,YAAbX,mBAAsBY,aAAa;AACnC,eAAO;AAAA,MACX;AAEA,WAAIZ,iBAAMU,UAANV,mBAAaW,YAAbX,mBAAsBQ,YAAY;AAClC,eAAOR,MAAMU,MAAMC,QAAQH;AAAAA,MAC/B;AAEA,cAAOH,gBAAWQ,UAAXR,mBAAkBG;AAAAA,IAC7B,CAAC;AAED,UAAMM,QAAQL,SAAS,MAAM;;AACzB,WAAIT,iBAAMU,UAANV,mBAAaW,YAAbX,mBAAsBY,aAAa;AACnC,eAAO;AAAA,MACX;AACA,cAAOZ,iBAAMU,UAANV,mBAAaW,YAAbX,mBAAsBc;AAAAA,IACjC,CAAC;AAED,UAAMC,aAAaN,SAAS,MAAM;;AAC9B,WAAIT,iBAAMU,UAANV,mBAAaW,YAAbX,mBAAsBe,YAAY;AAClC,eAAOf,MAAMU,MAAMC,QAAQI;AAAAA,MAC/B;AACA,eAAOV,gBAAWQ,UAAXR,mBAAkBU,eAAc;AAAA,IAC3C,CAAC;AAED,UAAMC,cAAcP,SAAS,MAAM,MAAM;AACrC,aAAOP,iBAAiBA,eAAc,IAAK;AAAA,IAC/C,CAAC;AAEYO,aAAS,MAAM;;AACxB,WAAIT,iBAAMU,UAANV,mBAAaW,YAAbX,mBAAsBiB,MAAM;AAC5B,eAAOjB,MAAMU,MAAMC,QAAQM;AAAAA,MAC/B;AACA,eAAOZ,gBAAWQ,UAAXR,mBAAkBY,SAAQ;AAAA,IACrC,CAAC;AAED,UAAMC,kBAAkBT,SAAS,MAAM;AACnC,aAAOL,sBAAsBA,oBAAmB,IAAK;AAAA,IACzD,CAAC;AAED,UAAMe,cAAcV,SAAS,MAAM;AAC/B,UAAIS,gBAAgBL,SAAS,CAACP,aAAa;AACvC,eACIU,YAAYH,QACZ,MACAb,MAAMoB,kBACN,MACApB,MAAMU,MAAMC,QAAQU;AAAAA,MAG5B,MAAO,QAAOrB,MAAMU,MAAMC,QAAQU;AAAAA,IACtC,CAAC;AAED,UAAMC,cAAcb,SAAS,MACzBT,MAAMU,MAAMC,QAAQW,cAActB,MAAMU,MAAMC,QAAQW,YAAYC,KAAK,GAAG,IAAI,EAClF;;;AAvHA,aAAAC,UAAA,GAAAC,mBAqCM,OArCNC,YAqCM,CApCFC,YAmCWC,MAAAC,QAAA,GAAA;AAAA,QAlCNC;;mBAA4BtB,WAAAK,QAAU;AAAA,UAAA;AAAA;QACtCkB,OAAOA,KAAAA;AAAAA,QACPV,MAAMF,YAAAN;AAAAA,QACNE,YAAYA,WAAAF;AAAAA,QACZmB,uBAAQV,YAAAT,KAAW,CAAA;AAAA;QAETC,eACP,MAwBM,CAxBNmB,mBAwBM,OAxBNC,YAwBM,GAvBYxB,KAAAA,MAAMC,QAAQwB,kBAA5BX,aAAAC,mBAiBO,QAjBPW,YAiBO,CAhBa1B,KAAAA,MAAMC,QAAQ0B,sBAAiB,wBAA/CZ,mBAOWa,UAAA;AAAA,UAAAC,KAAA;AAAA,QAAA,GAAA,CANPZ,YAEYa,sBAAA;AAAA,UAFAC,OAAO/B,KAAAA,MAAMC,QAAQ+B;AAAAA;2BAC7B,MAAuD,CAAvDf,YAAuDC,MAAAe,OAAA,GAAA;AAAA,YAA5C,cAAYjC,KAAAA,MAAMC,QAAQwB;AAAAA;;0BAEzCF,mBAEM,OAFNW,YAEMC,gBADC/B,MAAAD,KAAK,GAAA,CAAA,CAAA,UAGKH,KAAAA,MAAMC,QAAQ0B,sBAAiB,uBAApDZ,mBAOWa,UAAA;AAAA,UAAAC,KAAA;AAAA,WAAA,CANPN,mBAEM,OAFNa,YAEMD,gBADC/B,MAAAD,KAAK,GAAA,CAAA,GAEZc,YAEYa,sBAAA;AAAA,UAFAC,OAAO/B,KAAAA,MAAMC,QAAQ+B;AAAAA;2BAC7B,MAAuD,CAAvDf,YAAuDC,MAAAe,OAAA,GAAA;AAAA,YAA5C,cAAYjC,KAAAA,MAAMC,QAAQwB;AAAAA;;kFAK7CV,mBAEM,OAFNsB,YAEMF,gBADC/B,MAAAD,KAAK,GAAA,CAAA,EAAA;yBAKxB,MAAa,CAAbmC,WAAaC,KAAAC,QAAA,WAAA,CAAA,GAAAC,QAAA,IAAA,CAAA;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent, resolveComponent, createBlock, createCommentVNode, unref, openBlock, mergeProps, withCtx, withDirectives, createElementBlock, createVNode, isRef, vShow, toDisplayString } from "vue";
|
|
2
2
|
import FormItemWrapper from "./form-item-wrapper.vue.js";
|
|
3
|
-
import { useField } from "./useField.js";
|
|
4
3
|
import { ComponentNameEnum, WidgetTypeEnum } from "../../../core/src/constants/WidgetTypeEnum.js";
|
|
4
|
+
import { useField } from "../../../core/src/hooks/useField.js";
|
|
5
5
|
const _hoisted_1 = {
|
|
6
6
|
key: 0,
|
|
7
7
|
class: "readonly-mode-field"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number-widget.vue2.js","sources":["../../../../src/components/field-widget/number-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" v-if=\"!handleHidden\" :rules=\"rules\">\n <a-input-number\n ref=\"fieldEditor\"\n :size=\"size\"\n v-model:value=\"fieldModel\"\n v-show=\"!isReadMode\"\n class=\"full-width-input\"\n :disabled=\"handleDisabled\"\n :controls-position=\"field.options.controlsPosition\"\n :placeholder=\"field.options.placeholder\"\n :min=\"field.options.min\"\n :max=\"field.options.max\"\n :precision=\"field.options.precision\"\n :step=\"field.options.step\"\n @focus=\"handleFocusCustomEvent\"\n @blur=\"handleBlurCustomEvent\"\n />\n <template v-if=\"isReadMode\">\n <span class=\"readonly-mode-field\">{{ fieldModel }}</span>\n </template>\n </form-item-wrapper>\n</template>\n\n<script lang=\"ts\" setup>\n import FormItemWrapper from './form-item-wrapper.vue';\n import {
|
|
1
|
+
{"version":3,"file":"number-widget.vue2.js","sources":["../../../../src/components/field-widget/number-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" v-if=\"!handleHidden\" :rules=\"rules\">\n <a-input-number\n ref=\"fieldEditor\"\n :size=\"size\"\n v-model:value=\"fieldModel\"\n v-show=\"!isReadMode\"\n class=\"full-width-input\"\n :disabled=\"handleDisabled\"\n :controls-position=\"field.options.controlsPosition\"\n :placeholder=\"field.options.placeholder\"\n :min=\"field.options.min\"\n :max=\"field.options.max\"\n :precision=\"field.options.precision\"\n :step=\"field.options.step\"\n @focus=\"handleFocusCustomEvent\"\n @blur=\"handleBlurCustomEvent\"\n />\n <template v-if=\"isReadMode\">\n <span class=\"readonly-mode-field\">{{ fieldModel }}</span>\n </template>\n </form-item-wrapper>\n</template>\n\n<script lang=\"ts\" setup>\n import FormItemWrapper from './form-item-wrapper.vue';\n import {\n type FieldProps,\n useField,\n WidgetTypeEnum,\n ComponentNameEnum\n } from '@kp-ui/lowcode-core';\n defineOptions({\n name: WidgetTypeEnum.number,\n componentName: ComponentNameEnum.FieldWidget\n });\n\n const props = withDefaults(defineProps<FieldProps>(), {});\n\n const {\n rules,\n i18nt,\n field,\n fieldModel,\n isReadMode,\n size,\n\n handleHidden,\n handleDisabled,\n handleFocusCustomEvent,\n handleBlurCustomEvent,\n defineExposed\n } = useField(props);\n\n defineExpose({\n ...defineExposed\n });\n</script>\n\n<style lang=\"scss\" scoped></style>\n"],"names":["_unref","_openBlock","_createBlock","_mergeProps","_createVNode","_createElementBlock","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAqCI,UAAM,QAAQ;AAEd,UAAM;AAAA,MACF;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACA,SAAS,KAAK;AAElB,aAAa;AAAA,MACT,GAAG;AAAA,IAAA,CACN;;;cAvDwCA,MAAA,YAAA,KAAzCC,aAAAC,YAoBoB,iBApBpBC,WAoBoB,EAAA,KAAA,EAAA,GApBO,OAAK,EAAwB,OAAOH,MAAA,KAAA,EAAA,CAAK,GAAA;AAAA,yBAChE,MAeE;AAAA,yBAfFI,YAeE,2BAAA;AAAA,YAdE,KAAI;AAAA,YACH,MAAMJ,MAAA,IAAA;AAAA,YACC,OAAOA,MAAA,UAAA;AAAA,wFAAA,WAAU,QAAA,SAAA;AAAA,YAEzB,OAAM;AAAA,YACL,UAAUA,MAAA,cAAA;AAAA,YACV,qBAAmBA,MAAA,KAAA,EAAM,QAAQ;AAAA,YACjC,aAAaA,MAAA,KAAA,EAAM,QAAQ;AAAA,YAC3B,KAAKA,MAAA,KAAA,EAAM,QAAQ;AAAA,YACnB,KAAKA,MAAA,KAAA,EAAM,QAAQ;AAAA,YACnB,WAAWA,MAAA,KAAA,EAAM,QAAQ;AAAA,YACzB,MAAMA,MAAA,KAAA,EAAM,QAAQ;AAAA,YACpB,SAAOA,MAAA,sBAAA;AAAA,YACP,QAAMA,MAAA,qBAAA;AAAA,UAAA;qBAVEA,MAAA,UAAA,CAAU;AAAA,UAAA;UAYPA,MAAA,UAAA,kBACZK,mBAAyD,QAAzD,YAAyDC,gBAApBN,MAAA,UAAA,CAAU,GAAA,CAAA;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./radio-widget.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const radioWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const radioWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-770c0330"]]);
|
|
5
5
|
export {
|
|
6
6
|
radioWidget as default
|
|
7
7
|
};
|
|
@@ -28,7 +28,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
28
28
|
const props = __props;
|
|
29
29
|
const {
|
|
30
30
|
rules,
|
|
31
|
-
field,
|
|
32
31
|
fieldModel,
|
|
33
32
|
isReadMode,
|
|
34
33
|
designState,
|
|
@@ -64,16 +63,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
64
63
|
disabled: unref(handleDisabled)
|
|
65
64
|
}, {
|
|
66
65
|
default: withCtx(() => [
|
|
67
|
-
(openBlock(true), createElementBlock(Fragment, null, renderList(
|
|
66
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.field.options.optionItems, (item, index) => {
|
|
68
67
|
return openBlock(), createBlock(_component_a_radio, {
|
|
69
68
|
key: index,
|
|
70
|
-
value: item[
|
|
69
|
+
value: item[_ctx.field.options.valueKey],
|
|
71
70
|
disabled: item.disabled,
|
|
72
|
-
border:
|
|
73
|
-
style: normalizeStyle({ display:
|
|
71
|
+
border: _ctx.field.options.border,
|
|
72
|
+
style: normalizeStyle({ display: _ctx.field.options.displayStyle })
|
|
74
73
|
}, {
|
|
75
74
|
default: withCtx(() => [
|
|
76
|
-
createTextVNode(toDisplayString(item[
|
|
75
|
+
createTextVNode(toDisplayString(item[_ctx.field.options.labelKey]), 1)
|
|
77
76
|
]),
|
|
78
77
|
_: 2
|
|
79
78
|
}, 1032, ["value", "disabled", "border", "style"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-widget.vue2.js","sources":["../../../../src/components/field-widget/radio-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" :rules=\"rules\" v-if=\"!handleHidden\">\n <a-radio-group\n ref=\"fieldEditor\"\n v-model:value=\"fieldModel\"\n :size=\"size\"\n v-if=\"!isReadMode\"\n :disabled=\"handleDisabled\"\n >\n <a-radio\n v-for=\"(item, index) in field.options.optionItems\"\n :key=\"index\"\n :value=\"item[field.options.valueKey]\"\n :disabled=\"item.disabled\"\n :border=\"field.options.border\"\n :style=\"{ display: field.options.displayStyle }\"\n >\n {{ item[field.options.labelKey] }}\n </a-radio>\n </a-radio-group>\n <template v-else=\"isReadMode\">\n <span class=\"readonly-mode-field\">{{ optionLabel }}</span>\n </template>\n </form-item-wrapper>\n</template>\n\n<script lang=\"ts\" setup>\n import FormItemWrapper from './form-item-wrapper.vue';\n import { useField, type FieldProps } from '@kp-ui/lowcode-core';\n import { WidgetTypeEnum, ComponentNameEnum } from '@kp-ui/lowcode-core';\n import { useSelect } from './hooks/useSelect';\n import { onMounted } from 'vue';\n defineOptions({\n name: WidgetTypeEnum.radio,\n componentName: ComponentNameEnum.FieldWidget\n });\n\n const props = withDefaults(defineProps<FieldProps>(), {});\n const {\n rules,\n
|
|
1
|
+
{"version":3,"file":"radio-widget.vue2.js","sources":["../../../../src/components/field-widget/radio-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" :rules=\"rules\" v-if=\"!handleHidden\">\n <a-radio-group\n ref=\"fieldEditor\"\n v-model:value=\"fieldModel\"\n :size=\"size\"\n v-if=\"!isReadMode\"\n :disabled=\"handleDisabled\"\n >\n <a-radio\n v-for=\"(item, index) in field.options.optionItems\"\n :key=\"index\"\n :value=\"item[field.options.valueKey]\"\n :disabled=\"item.disabled\"\n :border=\"field.options.border\"\n :style=\"{ display: field.options.displayStyle }\"\n >\n {{ item[field.options.labelKey] }}\n </a-radio>\n </a-radio-group>\n <template v-else=\"isReadMode\">\n <span class=\"readonly-mode-field\">{{ optionLabel }}</span>\n </template>\n </form-item-wrapper>\n</template>\n\n<script lang=\"ts\" setup>\n import FormItemWrapper from './form-item-wrapper.vue';\n import { useField, type FieldProps } from '@kp-ui/lowcode-core';\n import { WidgetTypeEnum, ComponentNameEnum } from '@kp-ui/lowcode-core';\n import { useSelect } from './hooks/useSelect';\n import { onMounted } from 'vue';\n defineOptions({\n name: WidgetTypeEnum.radio,\n componentName: ComponentNameEnum.FieldWidget\n });\n\n const props = withDefaults(defineProps<FieldProps>(), {});\n const {\n rules,\n fieldModel,\n isReadMode,\n designState,\n size,\n handleHidden,\n handleDisabled,\n fieldEditor,\n defineExposed\n } = useField(props);\n\n const { optionLabel, initOptionItems } = useSelect({\n designState,\n fieldModel,\n field: props.field\n });\n onMounted(() => {\n initOptionItems();\n });\n defineExpose({\n ...defineExposed\n });\n</script>\n\n<style lang=\"scss\" scoped>\n /* form-item-wrapper已引入,还需要重复引入吗? */\n</style>\n"],"names":["_unref","_openBlock","_createBlock","_mergeProps","_createElementBlock","_Fragment","_renderList","field","_normalizeStyle","_createTextVNode","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCI,UAAM,QAAQ;AACd,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACA,SAAS,KAAK;AAElB,UAAM,EAAE,aAAa,gBAAA,IAAoB,UAAU;AAAA,MAC/C;AAAA,MACA;AAAA,MACA,OAAO,MAAM;AAAA,IAAA,CAChB;AACD,cAAU,MAAM;AACZ,sBAAA;AAAA,IACJ,CAAC;AACD,aAAa;AAAA,MACT,GAAG;AAAA,IAAA,CACN;;;;cA3DuDA,MAAA,YAAA,KAAxDC,aAAAC,YAsBoB,iBAtBpBC,WAsBoB,EAAA,KAAA,EAAA,GAtBO,OAAK,EAAG,OAAOH,MAAA,KAAA,EAAA,CAAK,GAAA;AAAA,yBAC3C,MAiBgB;AAAA,WAbLA,MAAA,UAAA,kBAJXE,YAiBgB,0BAAA;AAAA;qBAhBR;AAAA,YAAJ,KAAI;AAAA,YACI,OAAOF,MAAA,UAAA;AAAA,wFAAA,WAAU,QAAA,SAAA;AAAA,YACxB,MAAMA,MAAA,IAAA;AAAA,YAEN,UAAUA,MAAA,cAAA;AAAA,UAAA;6BAGP,MAAkD;AAAA,gCADtDI,mBASUC,UAAA,MAAAC,WARkBC,WAAM,QAAQ,aAAW,CAAzC,MAAM,UAAK;oCADvBL,YASU,oBAAA;AAAA,kBAPL,KAAK;AAAA,kBACL,OAAO,KAAKK,WAAM,QAAQ,QAAQ;AAAA,kBAClC,UAAU,KAAK;AAAA,kBACf,QAAQA,KAAAA,MAAM,QAAQ;AAAA,kBACtB,OAAKC,eAAA,EAAA,SAAaD,KAAAA,MAAM,QAAQ,cAAY;AAAA,gBAAA;mCAE7C,MAAkC;AAAA,oBAA/BE,gBAAAC,gBAAA,KAAKH,KAAAA,MAAM,QAAQ,QAAQ,CAAA,GAAA,CAAA;AAAA,kBAAA;;;;;;gEAIlCH,mBAA0D,QAA1D,YAA0DM,gBAArBV,MAAA,WAAA,CAAW,GAAA,CAAA;AAAA,QAAA;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./rich-editor-widget.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const richEditorWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const richEditorWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-4fccf1cc"]]);
|
|
5
5
|
export {
|
|
6
6
|
richEditorWidget as default
|
|
7
7
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { defineComponent, computed, createBlock, createCommentVNode, unref, openBlock, mergeProps, withCtx, createElementBlock, createVNode, normalizeStyle, isRef } from "vue";
|
|
2
2
|
import FormItemWrapper from "./form-item-wrapper.vue.js";
|
|
3
|
-
import { useField } from "./useField.js";
|
|
4
3
|
import { QuillEditor } from "tmgc2-share";
|
|
5
4
|
import { ComponentNameEnum, WidgetTypeEnum } from "../../../core/src/constants/WidgetTypeEnum.js";
|
|
5
|
+
import { useField } from "../../../core/src/hooks/useField.js";
|
|
6
6
|
const _hoisted_1 = {
|
|
7
7
|
key: 0,
|
|
8
8
|
class: "rich-editor-widget"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rich-editor-widget.vue2.js","sources":["../../../../src/components/field-widget/rich-editor-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" v-if=\"!handleHidden\" :rules=\"rules\">\n <div class=\"rich-editor-widget\" v-if=\"!isReadMode\">\n <QuillEditor\n ref=\"fieldEditor\"\n v-model:value=\"fieldModel\"\n :options=\"editorOption\"\n :disabled=\"handleDisabled || isReadMode\"\n :style=\"\n !!field.options.contentHeight ? `height: ${field.options.contentHeight};` : ''\n \"\n />\n </div>\n <div class=\"readonly-mode-rich-editor\" v-else v-html=\"fieldModel\"> </div>\n </form-item-wrapper>\n</template>\n\n<script lang=\"ts\" setup>\n import FormItemWrapper from './form-item-wrapper.vue';\n import { ComponentNameEnum, WidgetTypeEnum } from '@kp-ui/lowcode-core';\n import { FieldProps, useField } from '
|
|
1
|
+
{"version":3,"file":"rich-editor-widget.vue2.js","sources":["../../../../src/components/field-widget/rich-editor-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" v-if=\"!handleHidden\" :rules=\"rules\">\n <div class=\"rich-editor-widget\" v-if=\"!isReadMode\">\n <QuillEditor\n ref=\"fieldEditor\"\n v-model:value=\"fieldModel\"\n :options=\"editorOption\"\n :disabled=\"handleDisabled || isReadMode\"\n :style=\"\n !!field.options.contentHeight ? `height: ${field.options.contentHeight};` : ''\n \"\n />\n </div>\n <div class=\"readonly-mode-rich-editor\" v-else v-html=\"fieldModel\"> </div>\n </form-item-wrapper>\n</template>\n\n<script lang=\"ts\" setup>\n import FormItemWrapper from './form-item-wrapper.vue';\n import { ComponentNameEnum, WidgetTypeEnum } from '@kp-ui/lowcode-core';\n import { type FieldProps, useField } from '@kp-ui/lowcode-core';\n import { computed, watchEffect } from 'vue';\n import { QuillEditor } from 'tmgc2-share';\n\n defineOptions({\n name: WidgetTypeEnum.richEditor,\n componentName: ComponentNameEnum.FieldWidget\n });\n const props = withDefaults(defineProps<FieldProps>(), {});\n\n const {\n rules,\n fieldEditor,\n field,\n fieldModel,\n isReadMode,\n handleHidden,\n handleDisabled,\n defineExposed\n } = useField(props);\n\n const editorOption = computed(() => {\n return {\n placeholder: field.options.placeholder,\n modules: {}\n };\n });\n\n defineExpose({\n ...defineExposed\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .rich-editor-widget {\n :deep(.ql-toolbar.ql-snow) {\n border-color: #d9d9d9;\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n }\n :deep(.ql-container.ql-snow) {\n border-bottom-left-radius: 8px;\n border-bottom-right-radius: 8px;\n border-color: #d9d9d9;\n }\n }\n</style>\n"],"names":["_unref","_openBlock","_createBlock","_mergeProps","_createElementBlock","_createVNode","_normalizeStyle"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BI,UAAM,QAAQ;AAEd,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACA,SAAS,KAAK;AAElB,UAAM,eAAe,SAAS,MAAM;AAChC,aAAO;AAAA,QACH,aAAa,MAAM,QAAQ;AAAA,QAC3B,SAAS,CAAA;AAAA,MAAC;AAAA,IAElB,CAAC;AAED,aAAa;AAAA,MACT,GAAG;AAAA,IAAA,CACN;;cAjDwCA,MAAA,YAAA,KAAzCC,aAAAC,YAaoB,iBAbpBC,WAaoB,EAAA,KAAA,EAAA,GAbO,OAAK,EAAwB,OAAOH,MAAA,KAAA,EAAA,CAAK,GAAA;AAAA,yBAChE,MAUM;AAAA,WAViCA,MAAA,UAAA,KAAvCC,aAAAG,mBAUM,OAVN,YAUM;AAAA,YATFC,YAQEL,MAAA,WAAA,GAAA;AAAA,uBAPM;AAAA,cAAJ,KAAI;AAAA,cACI,OAAOA,MAAA,UAAA;AAAA,0FAAA,WAAU,QAAA,SAAA;AAAA,cACxB,SAAS,aAAA;AAAA,cACT,UAAUA,MAAA,cAAA,KAAkBA,MAAA,UAAA;AAAA,cAC5B,OAAKM;AAAAA,kBAAyBN,MAAA,KAAA,EAAM,QAAQ,2BAA2BA,MAAA,KAAA,EAAM,QAAQ,aAAa,MAAA;AAAA,cAAA;AAAA;8BAK3GI,mBAAyE,OAAA;AAAA;YAApE,OAAM;AAAA,YAAmC,WAAQJ,MAAA,UAAA;AAAA,UAAA;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./textarea-widget.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const textareaWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const textareaWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-ee000014"]]);
|
|
5
5
|
export {
|
|
6
6
|
textareaWidget as default
|
|
7
7
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent, resolveComponent, createBlock, createCommentVNode, unref, openBlock, mergeProps, withCtx, createElementBlock, isRef } from "vue";
|
|
2
2
|
import FormItemWrapper from "./form-item-wrapper.vue.js";
|
|
3
|
-
import { useField } from "./useField.js";
|
|
4
3
|
import { ComponentNameEnum, WidgetTypeEnum } from "../../../core/src/constants/WidgetTypeEnum.js";
|
|
4
|
+
import { useField } from "../../../core/src/hooks/useField.js";
|
|
5
5
|
const _hoisted_1 = ["innerHTML"];
|
|
6
6
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
7
7
|
...{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textarea-widget.vue2.js","sources":["../../../../src/components/field-widget/textarea-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" :rules=\"rules\" v-if=\"!handleHidden\">\n <a-textarea\n type=\"textarea\"\n ref=\"fieldEditor\"\n v-model:value=\"fieldModel\"\n v-if=\"!isReadMode\"\n :size=\"size\"\n :disabled=\"handleDisabled\"\n :allowClear=\"field.options.allowClear\"\n :readonly=\"field.options.readonly\"\n :placeholder=\"field.options.placeholder\"\n :rows=\"field.options.rows\"\n :minlength=\"field.options.minLength\"\n :maxlength=\"field.options.maxLength\"\n :showCount=\"field.options.showCount\"\n @focus=\"handleFocusCustomEvent\"\n @blur=\"handleBlurCustomEvent\"\n />\n <template v-else=\"isReadMode\">\n <div v-html=\"fieldModel\" class=\"readonly-mode-field\"></div>\n </template>\n </form-item-wrapper>\n</template>\n\n<script lang=\"ts\" setup>\n import FormItemWrapper from './form-item-wrapper.vue';\n import {
|
|
1
|
+
{"version":3,"file":"textarea-widget.vue2.js","sources":["../../../../src/components/field-widget/textarea-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" :rules=\"rules\" v-if=\"!handleHidden\">\n <a-textarea\n type=\"textarea\"\n ref=\"fieldEditor\"\n v-model:value=\"fieldModel\"\n v-if=\"!isReadMode\"\n :size=\"size\"\n :disabled=\"handleDisabled\"\n :allowClear=\"field.options.allowClear\"\n :readonly=\"field.options.readonly\"\n :placeholder=\"field.options.placeholder\"\n :rows=\"field.options.rows\"\n :minlength=\"field.options.minLength\"\n :maxlength=\"field.options.maxLength\"\n :showCount=\"field.options.showCount\"\n @focus=\"handleFocusCustomEvent\"\n @blur=\"handleBlurCustomEvent\"\n />\n <template v-else=\"isReadMode\">\n <div v-html=\"fieldModel\" class=\"readonly-mode-field\"></div>\n </template>\n </form-item-wrapper>\n</template>\n\n<script lang=\"ts\" setup>\n import FormItemWrapper from './form-item-wrapper.vue';\n import {\n type FieldProps,\n useField,\n WidgetTypeEnum,\n ComponentNameEnum\n } from '@kp-ui/lowcode-core';\n defineOptions({\n name: WidgetTypeEnum.textarea,\n componentName: ComponentNameEnum.FieldWidget\n });\n\n const props = withDefaults(defineProps<FieldProps>(), {});\n\n const {\n rules,\n field,\n fieldModel,\n isReadMode,\n size,\n\n handleHidden,\n handleDisabled,\n handleFocusCustomEvent,\n handleBlurCustomEvent,\n defineExposed\n } = useField(props);\n\n defineExpose({\n ...defineExposed\n });\n</script>\n\n<style lang=\"scss\" scoped>\n .readonly-mode-field {\n display: inline-block;\n white-space: pre-wrap;\n line-height: 1.5;\n max-height: 100px;\n overflow-y: auto;\n }\n</style>\n"],"names":["_unref","_openBlock","_createBlock","_mergeProps","_createElementBlock"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAsCI,UAAM,QAAQ;AAEd,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACA,SAAS,KAAK;AAElB,aAAa;AAAA,MACT,GAAG;AAAA,IAAA,CACN;;;cAvDuDA,MAAA,YAAA,KAAxDC,aAAAC,YAqBoB,iBArBpBC,WAqBoB,EAAA,KAAA,EAAA,GArBO,OAAK,EAAG,OAAOH,MAAA,KAAA,EAAA,CAAK,GAAA;AAAA,yBAC3C,MAgBE;AAAA,WAZSA,MAAA,UAAA,kBAJXE,YAgBE,uBAAA;AAAA;YAfE,MAAK;AAAA,YACL,KAAI;AAAA,YACI,OAAOF,MAAA,UAAA;AAAA,wFAAA,WAAU,QAAA,SAAA;AAAA,YAExB,MAAMA,MAAA,IAAA;AAAA,YACN,UAAUA,MAAA,cAAA;AAAA,YACV,YAAYA,MAAA,KAAA,EAAM,QAAQ;AAAA,YAC1B,UAAUA,MAAA,KAAA,EAAM,QAAQ;AAAA,YACxB,aAAaA,MAAA,KAAA,EAAM,QAAQ;AAAA,YAC3B,MAAMA,MAAA,KAAA,EAAM,QAAQ;AAAA,YACpB,WAAWA,MAAA,KAAA,EAAM,QAAQ;AAAA,YACzB,WAAWA,MAAA,KAAA,EAAM,QAAQ;AAAA,YACzB,WAAWA,MAAA,KAAA,EAAM,QAAQ;AAAA,YACzB,SAAOA,MAAA,sBAAA;AAAA,YACP,QAAMA,MAAA,qBAAA;AAAA,UAAA,yKAGPI,mBAA2D,OAAA;AAAA;YAAtD,WAAQJ,MAAA,UAAA;AAAA,YAAY,OAAM;AAAA,UAAA;;;;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { defineComponent, onMounted, computed, resolveComponent, createBlock, createCommentVNode, unref, openBlock, mergeProps, withCtx, createElementVNode, normalizeClass, withDirectives, createElementBlock, createVNode, isRef, vShow, toDisplayString } from "vue";
|
|
2
2
|
import FormItemWrapper from "./form-item-wrapper.vue.js";
|
|
3
|
-
import { useField } from "./useField.js";
|
|
4
3
|
import { useSelect } from "./hooks/useSelect.js";
|
|
5
4
|
import { ComponentNameEnum, WidgetTypeEnum } from "../../../core/src/constants/WidgetTypeEnum.js";
|
|
5
|
+
import { useField } from "../../../core/src/hooks/useField.js";
|
|
6
6
|
import { formateCascaderCode } from "../../../core/src/utils/format.js";
|
|
7
7
|
const _hoisted_1 = {
|
|
8
8
|
key: 0,
|
|
@@ -31,7 +31,6 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
31
31
|
rules,
|
|
32
32
|
i18nt,
|
|
33
33
|
fieldEditor,
|
|
34
|
-
field,
|
|
35
34
|
fieldModel,
|
|
36
35
|
isReadMode,
|
|
37
36
|
size,
|
|
@@ -43,7 +42,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
43
42
|
defineExposed
|
|
44
43
|
} = useField(props);
|
|
45
44
|
const { labelKey, valueKey, childrenKey, initOptionItems } = useSelect({
|
|
46
|
-
field,
|
|
45
|
+
field: props.field,
|
|
47
46
|
fieldModel,
|
|
48
47
|
designState
|
|
49
48
|
});
|
|
@@ -52,7 +51,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
52
51
|
});
|
|
53
52
|
const contentForReadMode = computed(() => {
|
|
54
53
|
if (!fieldModel.value) return "";
|
|
55
|
-
return formateCascaderCode(field.options.optionItems, fieldModel.value, {
|
|
54
|
+
return formateCascaderCode(props.field.options.optionItems, fieldModel.value, {
|
|
56
55
|
label: labelKey.value,
|
|
57
56
|
value: valueKey.value,
|
|
58
57
|
children: childrenKey.value
|
|
@@ -69,18 +68,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
69
68
|
class: normalizeClass(["full-width-input", { "readonly-mode-cascader": unref(isReadMode) }])
|
|
70
69
|
}, [
|
|
71
70
|
withDirectives(createVNode(_component_a_tree_select, {
|
|
72
|
-
"tree-default-expand-all":
|
|
71
|
+
"tree-default-expand-all": _ctx.field.options.treeDefaultExpandAll,
|
|
73
72
|
ref_key: "fieldEditor",
|
|
74
73
|
ref: fieldEditor,
|
|
75
74
|
size: unref(size),
|
|
76
|
-
treeData:
|
|
75
|
+
treeData: _ctx.field.options.optionItems,
|
|
77
76
|
value: unref(fieldModel),
|
|
78
77
|
"onUpdate:value": _cache[0] || (_cache[0] = ($event) => isRef(fieldModel) ? fieldModel.value = $event : null),
|
|
79
78
|
disabled: unref(handleDisabled),
|
|
80
|
-
allowClear:
|
|
81
|
-
placeholder:
|
|
79
|
+
allowClear: _ctx.field.options.allowClear,
|
|
80
|
+
placeholder: _ctx.field.options.placeholder || unref(i18nt)("render.hint.selectPlaceholder"),
|
|
82
81
|
fieldNames: { value: unref(valueKey), label: unref(labelKey), children: unref(childrenKey) },
|
|
83
|
-
multiple:
|
|
82
|
+
multiple: _ctx.field.options.multiple,
|
|
84
83
|
onFocus: unref(handleFocusCustomEvent),
|
|
85
84
|
onBlur: unref(handleBlurCustomEvent)
|
|
86
85
|
}, null, 8, ["tree-default-expand-all", "size", "treeData", "value", "disabled", "allowClear", "placeholder", "fieldNames", "multiple", "onFocus", "onBlur"]), [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"treeSelect-widget.vue2.js","sources":["../../../../src/components/field-widget/treeSelect-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" v-if=\"!handleHidden\" :rules=\"rules\">\n <div class=\"full-width-input\" :class=\"{ 'readonly-mode-cascader': isReadMode }\">\n <a-tree-select\n v-show=\"!isReadMode\"\n :tree-default-expand-all=\"field.options.treeDefaultExpandAll\"\n ref=\"fieldEditor\"\n :size=\"size\"\n :treeData=\"field.options.optionItems\"\n v-model:value=\"fieldModel\"\n :disabled=\"handleDisabled\"\n :allowClear=\"field.options.allowClear\"\n :placeholder=\"field.options.placeholder || i18nt('render.hint.selectPlaceholder')\"\n :fieldNames=\"{ value: valueKey, label: labelKey, children: childrenKey }\"\n :multiple=\"field.options.multiple\"\n @focus=\"handleFocusCustomEvent\"\n @blur=\"handleBlurCustomEvent\"\n />\n <template v-if=\"isReadMode\">\n <span class=\"readonly-mode-field\">{{ contentForReadMode }}</span>\n </template>\n </div>\n </form-item-wrapper>\n</template>\n\n<script lang=\"ts\" setup>\n import FormItemWrapper from './form-item-wrapper.vue';\n import { ComponentNameEnum, WidgetTypeEnum } from '@kp-ui/lowcode-core';\n import { FieldProps, useField } from '
|
|
1
|
+
{"version":3,"file":"treeSelect-widget.vue2.js","sources":["../../../../src/components/field-widget/treeSelect-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" v-if=\"!handleHidden\" :rules=\"rules\">\n <div class=\"full-width-input\" :class=\"{ 'readonly-mode-cascader': isReadMode }\">\n <a-tree-select\n v-show=\"!isReadMode\"\n :tree-default-expand-all=\"field.options.treeDefaultExpandAll\"\n ref=\"fieldEditor\"\n :size=\"size\"\n :treeData=\"field.options.optionItems\"\n v-model:value=\"fieldModel\"\n :disabled=\"handleDisabled\"\n :allowClear=\"field.options.allowClear\"\n :placeholder=\"field.options.placeholder || i18nt('render.hint.selectPlaceholder')\"\n :fieldNames=\"{ value: valueKey, label: labelKey, children: childrenKey }\"\n :multiple=\"field.options.multiple\"\n @focus=\"handleFocusCustomEvent\"\n @blur=\"handleBlurCustomEvent\"\n />\n <template v-if=\"isReadMode\">\n <span class=\"readonly-mode-field\">{{ contentForReadMode }}</span>\n </template>\n </div>\n </form-item-wrapper>\n</template>\n\n<script lang=\"ts\" setup>\n import FormItemWrapper from './form-item-wrapper.vue';\n import { ComponentNameEnum, WidgetTypeEnum } from '@kp-ui/lowcode-core';\n import { type FieldProps, useField } from '@kp-ui/lowcode-core';\n import { useSelect } from './hooks/useSelect';\n import { computed, onMounted } from 'vue';\n import { formateCascaderCode } from '@kp-ui/lowcode-core';\n\n defineOptions({\n name: WidgetTypeEnum.treeSelect,\n componentName: ComponentNameEnum.FieldWidget\n });\n const props = withDefaults(defineProps<FieldProps>(), {});\n\n const {\n rules,\n i18nt,\n fieldEditor,\n fieldModel,\n isReadMode,\n size,\n designState,\n handleHidden,\n handleDisabled,\n handleFocusCustomEvent,\n handleBlurCustomEvent,\n defineExposed\n } = useField(props);\n\n const { labelKey, valueKey, childrenKey, initOptionItems } = useSelect({\n field: props.field,\n fieldModel,\n designState\n });\n\n onMounted(() => {\n initOptionItems();\n });\n\n const contentForReadMode = computed(() => {\n if (!fieldModel.value) return '';\n return formateCascaderCode(props.field.options.optionItems, fieldModel.value, {\n label: labelKey.value,\n value: valueKey.value,\n children: childrenKey.value\n });\n });\n\n defineExpose({\n ...defineExposed\n });\n</script>\n\n<style lang=\"scss\" scoped></style>\n"],"names":["_unref","_openBlock","_createBlock","_mergeProps","_createElementVNode","_normalizeClass","_createVNode","field","_createElementBlock","_toDisplayString"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCI,UAAM,QAAQ;AAEd,UAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA,IACA,SAAS,KAAK;AAElB,UAAM,EAAE,UAAU,UAAU,aAAa,gBAAA,IAAoB,UAAU;AAAA,MACnE,OAAO,MAAM;AAAA,MACb;AAAA,MACA;AAAA,IAAA,CACH;AAED,cAAU,MAAM;AACZ,sBAAA;AAAA,IACJ,CAAC;AAED,UAAM,qBAAqB,SAAS,MAAM;AACtC,UAAI,CAAC,WAAW,MAAO,QAAO;AAC9B,aAAO,oBAAoB,MAAM,MAAM,QAAQ,aAAa,WAAW,OAAO;AAAA,QAC1E,OAAO,SAAS;AAAA,QAChB,OAAO,SAAS;AAAA,QAChB,UAAU,YAAY;AAAA,MAAA,CACzB;AAAA,IACL,CAAC;AAED,aAAa;AAAA,MACT,GAAG;AAAA,IAAA,CACN;;;cA1EwCA,MAAA,YAAA,KAAzCC,aAAAC,YAqBoB,iBArBpBC,WAqBoB,EAAA,KAAA,EAAA,GArBO,OAAK,EAAwB,OAAOH,MAAA,KAAA,EAAA,CAAK,GAAA;AAAA,yBAChE,MAmBM;AAAA,UAnBNI,mBAmBM,OAAA;AAAA,YAnBD,OAAKC,eAAA,CAAC,oBAAkB,EAAA,0BAAqCL,MAAA,UAAA,GAAU,CAAA;AAAA,UAAA;2BACxEM,YAcE,0BAAA;AAAA,cAZG,2BAAyBC,KAAAA,MAAM,QAAQ;AAAA,uBACpC;AAAA,cAAJ,KAAI;AAAA,cACH,MAAMP,MAAA,IAAA;AAAA,cACN,UAAUO,KAAAA,MAAM,QAAQ;AAAA,cACjB,OAAOP,MAAA,UAAA;AAAA,0FAAA,WAAU,QAAA,SAAA;AAAA,cACxB,UAAUA,MAAA,cAAA;AAAA,cACV,YAAYO,KAAAA,MAAM,QAAQ;AAAA,cAC1B,aAAaA,KAAAA,MAAM,QAAQ,eAAeP,MAAA,KAAA,EAAK,+BAAA;AAAA,cAC/C,YAAU,EAAA,OAAWA,MAAA,QAAA,GAAQ,OAASA,MAAA,QAAA,aAAoBA,MAAA,WAAA,EAAA;AAAA,cAC1D,UAAUO,KAAAA,MAAM,QAAQ;AAAA,cACxB,SAAOP,MAAA,sBAAA;AAAA,cACP,QAAMA,MAAA,qBAAA;AAAA,YAAA;uBAZEA,MAAA,UAAA,CAAU;AAAA,YAAA;YAcPA,MAAA,UAAA,kBACZQ,mBAAiE,QAAjE,YAAiEC,gBAA5B,mBAAA,KAAkB,GAAA,CAAA;;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { defineComponent, createBlock, createCommentVNode, unref, openBlock, mergeProps, withCtx, createElementVNode, resolveDynamicComponent, toRefs } from "vue";
|
|
2
2
|
import FormItemWrapper from "./form-item-wrapper.vue.js";
|
|
3
|
-
import { useField } from "./useField.js";
|
|
4
3
|
import { ComponentNameEnum, WidgetTypeEnum } from "../../../core/src/constants/WidgetTypeEnum.js";
|
|
4
|
+
import { useField } from "../../../core/src/hooks/useField.js";
|
|
5
5
|
const _hoisted_1 = { class: "slot-wrapper-render" };
|
|
6
6
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
7
7
|
...{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vue-render-widget.vue2.js","sources":["../../../../src/components/field-widget/vue-render-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" v-if=\"!handleHidden\" :rules=\"rules\">\n <div class=\"slot-wrapper-render\">\n <component ref=\"fieldEditor\" :is=\"renderCompont()\" />\n </div>\n </form-item-wrapper>\n</template>\n\n<script lang=\"ts\" setup>\n import { ComponentNameEnum, WidgetTypeEnum } from '@kp-ui/lowcode-core';\n import FormItemWrapper from './form-item-wrapper.vue';\n import { FieldProps, useField } from '
|
|
1
|
+
{"version":3,"file":"vue-render-widget.vue2.js","sources":["../../../../src/components/field-widget/vue-render-widget.vue"],"sourcesContent":["<template>\n <form-item-wrapper v-bind=\"props\" v-if=\"!handleHidden\" :rules=\"rules\">\n <div class=\"slot-wrapper-render\">\n <component ref=\"fieldEditor\" :is=\"renderCompont()\" />\n </div>\n </form-item-wrapper>\n</template>\n\n<script lang=\"ts\" setup>\n import { ComponentNameEnum, WidgetTypeEnum } from '@kp-ui/lowcode-core';\n import FormItemWrapper from './form-item-wrapper.vue';\n import { type FieldProps, useField } from '@kp-ui/lowcode-core';\n import { toRefs } from 'vue';\n\n defineOptions({\n name: WidgetTypeEnum.vueRender,\n componentName: ComponentNameEnum.FieldWidget\n });\n const props = withDefaults(defineProps<FieldProps>(), {});\n\n const { rules, field, fieldModel, handleHidden, defineExposed, executeFunction } =\n useField(props);\n\n const renderCompont = () => {\n if (field.options.template) {\n const sfcString = field.options.template;\n const templateMatch = sfcString.match(/<template>([\\s\\S]*)<\\/template>/);\n const scriptMatch = sfcString.match(/<script.*?>([\\s\\S]*)<\\/script>/);\n const styleMatch = sfcString.match(/<style.*?>([\\s\\S]*)<\\/style>/);\n\n const template = templateMatch ? templateMatch[1] : '';\n let scriptContent = scriptMatch ? scriptMatch[1] : 'export default {}';\n const style = styleMatch ? styleMatch[1] : '';\n\n // Handle style\n if (style) {\n const styleId = `vue-render-style-${field.options.name}`;\n if (!document.getElementById(styleId)) {\n const styleTag = document.createElement('style');\n styleTag.id = styleId;\n styleTag.textContent = style;\n document.head.appendChild(styleTag);\n }\n }\n\n // Handle script\n // Replace export default with return to make it evaluatable\n scriptContent = scriptContent.replace('export default', 'return');\n\n try {\n const getOptions = new Function(scriptContent);\n const componentOptions = getOptions() || {};\n\n return {\n template,\n ...componentOptions,\n props: ['data'], // Ensure data prop is available if not defined\n setup(props, ctx) {\n // Call original setup if it exists\n const originalSetup = componentOptions.setup\n ? componentOptions.setup(props, ctx)\n : {};\n return {\n ...toRefs(props),\n ...originalSetup\n };\n }\n };\n } catch (e) {\n console.error('Failed to parse component script', e);\n return { template: '<div>Error parsing component</div>' };\n }\n }\n // Assuming executeFunction and fieldModel are defined elsewhere or will be added.\n // This part of the code was provided in the instruction, but its dependencies are not in the original snippet.\n const component = executeFunction({\n functionBody: field.options.customRender,\n params: { data: fieldModel.value },\n keys: ['data']\n });\n\n return component ?? null;\n };\n\n defineExpose({\n ...defineExposed\n });\n</script>\n\n<style lang=\"scss\" scoped></style>\n"],"names":["props","_unref","_openBlock","_createBlock","_mergeProps","_createElementVNode","_resolveDynamicComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAkBI,UAAM,QAAQ;AAEd,UAAM,EAAE,OAAO,OAAO,YAAY,cAAc,eAAe,gBAAA,IAC3D,SAAS,KAAK;AAElB,UAAM,gBAAgB,MAAM;AACxB,UAAI,MAAM,QAAQ,UAAU;AACxB,cAAM,YAAY,MAAM,QAAQ;AAChC,cAAM,gBAAgB,UAAU,MAAM,iCAAiC;AACvE,cAAM,cAAc,UAAU,MAAM,gCAAgC;AACpE,cAAM,aAAa,UAAU,MAAM,8BAA8B;AAEjE,cAAM,WAAW,gBAAgB,cAAc,CAAC,IAAI;AACpD,YAAI,gBAAgB,cAAc,YAAY,CAAC,IAAI;AACnD,cAAM,QAAQ,aAAa,WAAW,CAAC,IAAI;AAG3C,YAAI,OAAO;AACP,gBAAM,UAAU,oBAAoB,MAAM,QAAQ,IAAI;AACtD,cAAI,CAAC,SAAS,eAAe,OAAO,GAAG;AACnC,kBAAM,WAAW,SAAS,cAAc,OAAO;AAC/C,qBAAS,KAAK;AACd,qBAAS,cAAc;AACvB,qBAAS,KAAK,YAAY,QAAQ;AAAA,UACtC;AAAA,QACJ;AAIA,wBAAgB,cAAc,QAAQ,kBAAkB,QAAQ;AAEhE,YAAI;AACA,gBAAM,aAAa,IAAI,SAAS,aAAa;AAC7C,gBAAM,mBAAmB,WAAA,KAAgB,CAAA;AAEzC,iBAAO;AAAA,YACH;AAAA,YACA,GAAG;AAAA,YACH,OAAO,CAAC,MAAM;AAAA;AAAA,YACd,MAAMA,QAAO,KAAK;AAEd,oBAAM,gBAAgB,iBAAiB,QACjC,iBAAiB,MAAMA,QAAO,GAAG,IACjC,CAAA;AACN,qBAAO;AAAA,gBACH,GAAG,OAAOA,MAAK;AAAA,gBACf,GAAG;AAAA,cAAA;AAAA,YAEX;AAAA,UAAA;AAAA,QAER,SAAS,GAAG;AACR,kBAAQ,MAAM,oCAAoC,CAAC;AACnD,iBAAO,EAAE,UAAU,qCAAA;AAAA,QACvB;AAAA,MACJ;AAGA,YAAM,YAAY,gBAAgB;AAAA,QAC9B,cAAc,MAAM,QAAQ;AAAA,QAC5B,QAAQ,EAAE,MAAM,WAAW,MAAA;AAAA,QAC3B,MAAM,CAAC,MAAM;AAAA,MAAA,CAChB;AAED,aAAO,aAAa;AAAA,IACxB;AAEA,aAAa;AAAA,MACT,GAAG;AAAA,IAAA,CACN;;cArFwCC,MAAA,YAAA,KAAzCC,aAAAC,YAIoB,iBAJpBC,WAIoB,EAAA,KAAA,EAAA,GAJO,OAAK,EAAwB,OAAOH,MAAA,KAAA,EAAA,CAAK,GAAA;AAAA,yBAChE,MAEM;AAAA,UAFNI,mBAEM,OAFN,YAEM;AAAA,aADFH,aAAAC,YAAqDG,wBAAnB,cAAA,CAAa,GAAA,EAApC,KAAI,cAAA,GAAa,MAAA,GAAA;AAAA,UAAA;;;;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _sfc_main from "./data-table-widget.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import _export_sfc from "../../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const DataTableWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4
|
+
const DataTableWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-02a5f9df"]]);
|
|
5
5
|
export {
|
|
6
6
|
DataTableWidget as default
|
|
7
7
|
};
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
import { defineComponent, watchEffect, onMounted, createElementBlock, createCommentVNode, unref, openBlock, normalizeStyle, createVNode } from "vue";
|
|
1
|
+
import { defineComponent, ref, watchEffect, onMounted, resolveComponent, createElementBlock, createCommentVNode, unref, openBlock, normalizeStyle, createVNode, withCtx, createTextVNode, toDisplayString } from "vue";
|
|
2
|
+
import { SettingOutlined } from "@ant-design/icons-vue";
|
|
2
3
|
import { useVxeTable, Table } from "tmgc2-share";
|
|
4
|
+
import { useI18n } from "@kp-ui/i18n";
|
|
3
5
|
import { useTableWidget } from "../../desginer/form-widget/container-widget/useTableWidget.js";
|
|
6
|
+
import DataTableColumnDialog from "../../public/DataTableColumnDialog.vue.js";
|
|
4
7
|
import { ComponentNameEnum, ContainerTypeEnum } from "../../../../core/src/constants/WidgetTypeEnum.js";
|
|
5
8
|
import { useField } from "../../../../core/src/hooks/useField.js";
|
|
9
|
+
const _hoisted_1 = {
|
|
10
|
+
key: 0,
|
|
11
|
+
class: "table-toolbar"
|
|
12
|
+
};
|
|
6
13
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
7
14
|
...{
|
|
8
15
|
name: ContainerTypeEnum.DataTable,
|
|
@@ -20,12 +27,16 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
20
27
|
setup(__props, { expose: __expose }) {
|
|
21
28
|
var _a;
|
|
22
29
|
const props = __props;
|
|
30
|
+
const { t } = useI18n();
|
|
23
31
|
const { fieldModel, handleHidden, defineExposed } = useField(props);
|
|
32
|
+
const columnDialogVisible = ref(false);
|
|
33
|
+
const columnList = ref([]);
|
|
24
34
|
const {
|
|
25
35
|
isLoading,
|
|
26
36
|
tableProps,
|
|
27
37
|
tableWidth,
|
|
28
38
|
pagintion,
|
|
39
|
+
showColumnManager,
|
|
29
40
|
setPagination,
|
|
30
41
|
setTableRef,
|
|
31
42
|
initTableSoureData,
|
|
@@ -48,6 +59,44 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
48
59
|
pagintion.value.onChange = (current, pageSize) => {
|
|
49
60
|
initTableSoureData();
|
|
50
61
|
};
|
|
62
|
+
const openColumnDialog = () => {
|
|
63
|
+
columnDialogVisible.value = true;
|
|
64
|
+
};
|
|
65
|
+
const handleUpdateColumns = (newColumns) => {
|
|
66
|
+
if (props.field.options.tableColumns) {
|
|
67
|
+
props.field.options.tableColumns = props.field.options.tableColumns.map((col) => {
|
|
68
|
+
const found = newColumns.find((item) => item.dataIndex === col.dataIndex);
|
|
69
|
+
if (found) {
|
|
70
|
+
return { ...col, show: found.visible !== false };
|
|
71
|
+
}
|
|
72
|
+
return col;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
clearTableStorage();
|
|
76
|
+
initColumnList();
|
|
77
|
+
updateTableColumns();
|
|
78
|
+
};
|
|
79
|
+
const initColumnList = () => {
|
|
80
|
+
const tableColumns = props.field.options.tableColumns || [];
|
|
81
|
+
if (tableColumns.length > 0) {
|
|
82
|
+
columnList.value = tableColumns.map((col) => ({
|
|
83
|
+
...col,
|
|
84
|
+
visible: col.show !== false,
|
|
85
|
+
title: col.title || col.dataIndex
|
|
86
|
+
}));
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
const clearTableStorage = () => {
|
|
90
|
+
const tableId = props.field.id || props.field.options.name;
|
|
91
|
+
const keysToRemove = [];
|
|
92
|
+
for (let i = 0; i < localStorage.length; i++) {
|
|
93
|
+
const key = localStorage.key(i);
|
|
94
|
+
if (key && key.includes(tableId)) {
|
|
95
|
+
keysToRemove.push(key);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
keysToRemove.forEach((key) => localStorage.removeItem(key));
|
|
99
|
+
};
|
|
51
100
|
const { tableRef, register, selectedRowInfo, sorts, selectRow, delSelectRow } = useVxeTable({
|
|
52
101
|
props: {
|
|
53
102
|
rowKey: props.field.options.rowKey,
|
|
@@ -66,11 +115,18 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
66
115
|
cellClick: (params) => onRunEvent(params, "onClick")
|
|
67
116
|
}
|
|
68
117
|
});
|
|
118
|
+
const updateTableColumns = () => {
|
|
119
|
+
if (!tableRef.value) return;
|
|
120
|
+
tableRef.value.refreshColumn();
|
|
121
|
+
};
|
|
69
122
|
const getSelectedRowKeys = () => {
|
|
70
|
-
|
|
123
|
+
var _a2;
|
|
124
|
+
const selectRows = ((_a2 = tableRef.value) == null ? void 0 : _a2.getCheckboxRecords()) || [];
|
|
125
|
+
return selectRows.map((item) => item[props.field.options.rowKey]);
|
|
71
126
|
};
|
|
72
127
|
const getSelectedRows = () => {
|
|
73
|
-
|
|
128
|
+
var _a2;
|
|
129
|
+
return (_a2 = tableRef.value) == null ? void 0 : _a2.getCheckboxRecords(true);
|
|
74
130
|
};
|
|
75
131
|
const getFieldEditor = () => {
|
|
76
132
|
return tableRef.value;
|
|
@@ -82,6 +138,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
82
138
|
});
|
|
83
139
|
onMounted(() => {
|
|
84
140
|
initTableSoureData();
|
|
141
|
+
initColumnList();
|
|
85
142
|
});
|
|
86
143
|
__expose({
|
|
87
144
|
...defineExposed,
|
|
@@ -98,17 +155,39 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
98
155
|
fieldEditor: tableRef
|
|
99
156
|
});
|
|
100
157
|
return (_ctx, _cache) => {
|
|
158
|
+
const _component_a_button = resolveComponent("a-button");
|
|
101
159
|
return !unref(handleHidden) ? (openBlock(), createElementBlock("div", {
|
|
102
160
|
key: 0,
|
|
103
161
|
class: "talbe-wrapper",
|
|
104
162
|
style: normalizeStyle({ width: unref(tableWidth) })
|
|
105
163
|
}, [
|
|
164
|
+
unref(showColumnManager) ? (openBlock(), createElementBlock("div", _hoisted_1, [
|
|
165
|
+
createVNode(_component_a_button, {
|
|
166
|
+
size: "small",
|
|
167
|
+
onClick: openColumnDialog
|
|
168
|
+
}, {
|
|
169
|
+
icon: withCtx(() => [
|
|
170
|
+
createVNode(unref(SettingOutlined))
|
|
171
|
+
]),
|
|
172
|
+
default: withCtx(() => [
|
|
173
|
+
createTextVNode(" " + toDisplayString(unref(t)("lang.列设置")), 1)
|
|
174
|
+
]),
|
|
175
|
+
_: 1
|
|
176
|
+
})
|
|
177
|
+
])) : createCommentVNode("", true),
|
|
106
178
|
createVNode(unref(Table), {
|
|
107
179
|
onRegister: unref(register),
|
|
108
180
|
tableProps: unref(tableProps),
|
|
109
181
|
loading: unref(isLoading),
|
|
110
182
|
pagination: unref(pagintion)
|
|
111
|
-
}, null, 8, ["onRegister", "tableProps", "loading", "pagination"])
|
|
183
|
+
}, null, 8, ["onRegister", "tableProps", "loading", "pagination"]),
|
|
184
|
+
createVNode(DataTableColumnDialog, {
|
|
185
|
+
visible: columnDialogVisible.value,
|
|
186
|
+
"onUpdate:visible": _cache[0] || (_cache[0] = ($event) => columnDialogVisible.value = $event),
|
|
187
|
+
columns: columnList.value,
|
|
188
|
+
onUpdate: handleUpdateColumns,
|
|
189
|
+
ref: "columnDialogRef"
|
|
190
|
+
}, null, 8, ["visible", "columns"])
|
|
112
191
|
], 4)) : createCommentVNode("", true);
|
|
113
192
|
};
|
|
114
193
|
}
|