@kp-ui/lowcode-pc-v2 0.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.
Files changed (171) hide show
  1. package/_virtual/_plugin-vue_export-helper.js +8 -0
  2. package/assets/styles/style.css +471 -0
  3. package/core/src/components/common/render/Debugger.js +7 -0
  4. package/core/src/components/common/render/Debugger.vue_vue_type_script_setup_true_lang.js +43 -0
  5. package/core/src/components/common/render/LowcodeRenderProvider.js +5 -0
  6. package/core/src/components/common/render/LowcodeRenderProvider.vue_vue_type_script_setup_true_lang.js +49 -0
  7. package/core/src/components/common/render/RenderWidgetList.js +5 -0
  8. package/core/src/components/common/render/RenderWidgetList.vue_vue_type_script_setup_true_lang.js +52 -0
  9. package/core/src/components/common/render/usePageContext.js +238 -0
  10. package/core/src/components/property-editor/propertyRegister.js +29 -0
  11. package/core/src/constants/EditorTypeEnum.js +9 -0
  12. package/core/src/constants/WidgetTypeEnum.js +15 -0
  13. package/core/src/constants/index.js +10 -0
  14. package/core/src/hooks/useAppRef.js +46 -0
  15. package/core/src/hooks/useFactoryRender.js +60 -0
  16. package/core/src/hooks/useField.js +430 -0
  17. package/core/src/hooks/useFieldRules.js +66 -0
  18. package/core/src/hooks/useLowcode.js +144 -0
  19. package/core/src/hooks/usePagination.js +23 -0
  20. package/core/src/hooks/useRemoteData.js +113 -0
  21. package/core/src/hooks/useSelect.js +137 -0
  22. package/core/src/hooks/useWebMCP.js +50 -0
  23. package/core/src/lang/en-US.js +658 -0
  24. package/core/src/lang/en-US_extension.js +23 -0
  25. package/core/src/lang/en-US_render.js +36 -0
  26. package/core/src/lang/zh-CN.js +717 -0
  27. package/core/src/lang/zh-CN_extension.js +18 -0
  28. package/core/src/lang/zh-CN_render.js +36 -0
  29. package/core/src/store/useTableColumnStore.js +37 -0
  30. package/core/src/utils/format.js +40 -0
  31. package/core/src/utils/getWidgetCompontent.js +27 -0
  32. package/core/src/utils/i18n.js +38 -0
  33. package/core/src/utils/smart-vue-i18n/index.js +79 -0
  34. package/core/src/utils/transformPx.js +9 -0
  35. package/core/src/utils/useEmitter.js +24 -0
  36. package/core/src/utils/util.js +61 -0
  37. package/install.js +16 -0
  38. package/package.json +39 -0
  39. package/src/components/public/ActionButtonListRender.js +51 -0
  40. package/src/components/public/ActionButtonListRender.vue_vue_type_script_lang.js +126 -0
  41. package/src/components/public/ConfigView/CustomPageRender.js +5 -0
  42. package/src/components/public/ConfigView/CustomPageRender.vue_vue_type_script_setup_true_lang.js +38 -0
  43. package/src/components/public/CustomerModal/CustomerModal.js +5 -0
  44. package/src/components/public/CustomerModal/CustomerModal.vue_vue_type_script_setup_true_lang.js +138 -0
  45. package/src/components/public/CustomerModal/useCustomerModal.js +23 -0
  46. package/src/components/public/DataTableColumnDialog.js +7 -0
  47. package/src/components/public/DataTableColumnDialog.vue_vue_type_script_setup_true_name_DataTableColumnDialog_lang.js +330 -0
  48. package/src/hooks/useTableWidget.js +317 -0
  49. package/src/render/index.js +7 -0
  50. package/src/render/index.vue_vue_type_script_setup_true_lang.js +69 -0
  51. package/src/schemas/defaults/field.js +72 -0
  52. package/src/widgets/advanced/code-editor/index.js +7 -0
  53. package/src/widgets/advanced/code-editor/index.vue_vue_type_script_setup_true_lang.js +45 -0
  54. package/src/widgets/advanced/code-editor/schema.js +26 -0
  55. package/src/widgets/advanced/custom-render/index.js +5 -0
  56. package/src/widgets/advanced/custom-render/index.vue_vue_type_script_setup_true_lang.js +54 -0
  57. package/src/widgets/advanced/custom-render/schema.js +19 -0
  58. package/src/widgets/advanced/data-table/index.js +7 -0
  59. package/src/widgets/advanced/data-table/index.vue_vue_type_script_setup_true_lang.js +132 -0
  60. package/src/widgets/advanced/data-table/schema.js +108 -0
  61. package/src/widgets/advanced/file-upload/index.js +7 -0
  62. package/src/widgets/advanced/file-upload/index.vue_vue_type_script_setup_true_lang.js +166 -0
  63. package/src/widgets/advanced/file-upload/schema.js +35 -0
  64. package/src/widgets/advanced/rich-editor/index.js +7 -0
  65. package/src/widgets/advanced/rich-editor/index.vue_vue_type_script_setup_true_lang.js +56 -0
  66. package/src/widgets/advanced/rich-editor/schema.js +28 -0
  67. package/src/widgets/advanced/tree/index.js +7 -0
  68. package/src/widgets/advanced/tree/index.vue_vue_type_script_setup_true_lang.js +74 -0
  69. package/src/widgets/advanced/tree/schema.js +28 -0
  70. package/src/widgets/advanced/tree-select/index.js +5 -0
  71. package/src/widgets/advanced/tree-select/index.vue_vue_type_script_setup_true_lang.js +100 -0
  72. package/src/widgets/advanced/tree-select/schema.js +34 -0
  73. package/src/widgets/base/button/index.js +5 -0
  74. package/src/widgets/base/button/index.vue_vue_type_script_setup_true_lang.js +42 -0
  75. package/src/widgets/base/button/schema.js +33 -0
  76. package/src/widgets/base/button-list/index.js +7 -0
  77. package/src/widgets/base/button-list/index.vue_vue_type_script_setup_true_lang.js +41 -0
  78. package/src/widgets/base/button-list/schema.js +29 -0
  79. package/src/widgets/base/cascader/index.js +5 -0
  80. package/src/widgets/base/cascader/index.vue_vue_type_script_setup_true_lang.js +65 -0
  81. package/src/widgets/base/cascader/schema.js +31 -0
  82. package/src/widgets/base/checkbox/index.js +5 -0
  83. package/src/widgets/base/checkbox/index.vue_vue_type_script_setup_true_lang.js +61 -0
  84. package/src/widgets/base/checkbox/schema.js +25 -0
  85. package/src/widgets/base/color/index.js +7 -0
  86. package/src/widgets/base/color/index.vue_vue_type_script_setup_true_lang.js +50 -0
  87. package/src/widgets/base/color/schema.js +22 -0
  88. package/src/widgets/base/date/index.js +5 -0
  89. package/src/widgets/base/date/index.vue_vue_type_script_setup_true_lang.js +43 -0
  90. package/src/widgets/base/date/schema.js +32 -0
  91. package/src/widgets/base/date-range/index.js +5 -0
  92. package/src/widgets/base/date-range/index.vue_vue_type_script_setup_true_lang.js +44 -0
  93. package/src/widgets/base/date-range/schema.js +32 -0
  94. package/src/widgets/base/divider/index.js +5 -0
  95. package/src/widgets/base/divider/index.vue_vue_type_script_setup_true_lang.js +40 -0
  96. package/src/widgets/base/divider/schema.js +26 -0
  97. package/src/widgets/base/html/index.js +7 -0
  98. package/src/widgets/base/html/index.vue_vue_type_script_setup_true_lang.js +33 -0
  99. package/src/widgets/base/html/schema.js +25 -0
  100. package/src/widgets/base/input/index.js +5 -0
  101. package/src/widgets/base/input/index.vue_vue_type_script_setup_true_lang.js +78 -0
  102. package/src/widgets/base/input/schema.js +37 -0
  103. package/src/widgets/base/number/index.js +5 -0
  104. package/src/widgets/base/number/index.vue_vue_type_script_setup_true_lang.js +52 -0
  105. package/src/widgets/base/number/schema.js +31 -0
  106. package/src/widgets/base/radio/index.js +5 -0
  107. package/src/widgets/base/radio/index.vue_vue_type_script_setup_true_lang.js +61 -0
  108. package/src/widgets/base/radio/schema.js +26 -0
  109. package/src/widgets/base/rate/index.js +5 -0
  110. package/src/widgets/base/rate/index.vue_vue_type_script_setup_true_lang.js +52 -0
  111. package/src/widgets/base/rate/schema.js +24 -0
  112. package/src/widgets/base/select/index.js +7 -0
  113. package/src/widgets/base/select/index.vue_vue_type_script_setup_true_lang.js +94 -0
  114. package/src/widgets/base/select/schema.js +34 -0
  115. package/src/widgets/base/slider/index.js +5 -0
  116. package/src/widgets/base/slider/index.vue_vue_type_script_setup_true_lang.js +37 -0
  117. package/src/widgets/base/slider/schema.js +26 -0
  118. package/src/widgets/base/static-text/index.js +7 -0
  119. package/src/widgets/base/static-text/index.vue_vue_type_script_setup_true_lang.js +24 -0
  120. package/src/widgets/base/static-text/schema.js +28 -0
  121. package/src/widgets/base/switch/index.js +5 -0
  122. package/src/widgets/base/switch/index.vue_vue_type_script_setup_true_lang.js +40 -0
  123. package/src/widgets/base/switch/schema.js +25 -0
  124. package/src/widgets/base/textarea/index.js +7 -0
  125. package/src/widgets/base/textarea/index.vue_vue_type_script_setup_true_lang.js +50 -0
  126. package/src/widgets/base/textarea/schema.js +30 -0
  127. package/src/widgets/base/time/index.js +7 -0
  128. package/src/widgets/base/time/index.vue_vue_type_script_setup_true_lang.js +47 -0
  129. package/src/widgets/base/time/schema.js +33 -0
  130. package/src/widgets/base/time-range/index.js +7 -0
  131. package/src/widgets/base/time-range/index.vue_vue_type_script_setup_true_lang.js +48 -0
  132. package/src/widgets/base/time-range/schema.js +31 -0
  133. package/src/widgets/containers/box/index-render.js +7 -0
  134. package/src/widgets/containers/box/index-render.vue_vue_type_script_setup_true_lang.js +39 -0
  135. package/src/widgets/containers/box/schema.js +29 -0
  136. package/src/widgets/containers/collapse/index-render.js +8 -0
  137. package/src/widgets/containers/collapse/index-render.vue_vue_type_script_setup_true_lang.js +49 -0
  138. package/src/widgets/containers/collapse/schema.js +25 -0
  139. package/src/widgets/containers/dialog/index-render.js +5 -0
  140. package/src/widgets/containers/dialog/index-render.vue_vue_type_script_setup_true_lang.js +107 -0
  141. package/src/widgets/containers/dialog/schema.js +38 -0
  142. package/src/widgets/containers/form/index-render.js +7 -0
  143. package/src/widgets/containers/form/index-render.vue_vue_type_script_setup_true_lang.js +46 -0
  144. package/src/widgets/containers/form/schema.js +33 -0
  145. package/src/widgets/containers/grid/index-render.js +7 -0
  146. package/src/widgets/containers/grid/index-render.vue_vue_type_script_setup_true_lang.js +56 -0
  147. package/src/widgets/containers/grid/schema.js +22 -0
  148. package/src/widgets/containers/grid-col/index-render.js +7 -0
  149. package/src/widgets/containers/grid-col/index-render.vue_vue_type_script_setup_true_lang.js +46 -0
  150. package/src/widgets/containers/grid-col/schema.js +27 -0
  151. package/src/widgets/containers/list/index-render.js +7 -0
  152. package/src/widgets/containers/list/index-render.vue_vue_type_script_setup_true_lang.js +189 -0
  153. package/src/widgets/containers/list/schema.js +46 -0
  154. package/src/widgets/containers/space/index-render.js +7 -0
  155. package/src/widgets/containers/space/index-render.vue_vue_type_script_setup_true_lang.js +57 -0
  156. package/src/widgets/containers/space/schema.js +25 -0
  157. package/src/widgets/containers/tab/index-render.js +5 -0
  158. package/src/widgets/containers/tab/index-render.vue_vue_type_script_setup_true_lang.js +81 -0
  159. package/src/widgets/containers/tab/schema.js +32 -0
  160. package/src/widgets/containers/tab-pane/index-render.js +5 -0
  161. package/src/widgets/containers/tab-pane/index-render.vue_vue_type_script_setup_true_lang.js +37 -0
  162. package/src/widgets/containers/tab-pane/schema.js +31 -0
  163. package/src/widgets/render.js +165 -0
  164. package/src/widgets/template/SecondaryPage/index-render.js +7 -0
  165. package/src/widgets/template/SecondaryPage/index-render.vue_vue_type_script_setup_true_lang.js +63 -0
  166. package/src/widgets/template/SecondaryPage/schema.js +68 -0
  167. package/src/widgets/widgetTypes.js +52 -0
  168. package/src/widgets/wrapper/form-item-wrapper.js +7 -0
  169. package/src/widgets/wrapper/form-item-wrapper.vue_vue_type_script_setup_true_lang.js +90 -0
  170. package/stats.html +4949 -0
  171. package/types/pc/install.d.ts +11 -0
@@ -0,0 +1,18 @@
1
+ //#region ../core/src/lang/zh-CN_extension.ts
2
+ var zh_CN_extension_default = { extension: {
3
+ widgetLabel: {
4
+ card: "卡片",
5
+ alert: "提示"
6
+ },
7
+ setting: {
8
+ alertType: "类型",
9
+ description: "辅助性文字",
10
+ closable: "是否可关闭",
11
+ closeText: "关闭按钮文字",
12
+ center: "文字居中",
13
+ showIcon: "显示图标",
14
+ effect: "显示效果"
15
+ }
16
+ } };
17
+ //#endregion
18
+ export { zh_CN_extension_default as default };
@@ -0,0 +1,36 @@
1
+ //#region ../core/src/lang/zh-CN_render.ts
2
+ var zh_CN_render_default = { render: { hint: {
3
+ prompt: "提示",
4
+ confirm: "确定",
5
+ cancel: "取消",
6
+ defaultActiveText: "是",
7
+ defaultInactiveText: "否",
8
+ selectPlaceholder: "请选择",
9
+ timePlaceholder: "选择时间",
10
+ startTimePlaceholder: "起始时间",
11
+ endTimePlaceholder: "截止时间",
12
+ datePlaceholder: "选择日期",
13
+ startDatePlaceholder: "起始日期",
14
+ endDatePlaceholder: "截止日期",
15
+ blankCellContent: "--",
16
+ uploadError: "上传错误: ",
17
+ uploadExceed: "最大上传数量(${uploadLimit})已超出.",
18
+ unsupportedFileType: "不支持格式: ",
19
+ fileSizeExceed: "文件大小已超出: ",
20
+ refNotFound: "组件未找到: ",
21
+ fieldRequired: "字段值不可为空",
22
+ invalidNumber: "数据格式错误",
23
+ selectFile: " 选择文件",
24
+ downloadFile: "下载",
25
+ removeFile: "移除",
26
+ validationFailed: "表单数据校验失败",
27
+ subFormAction: "操作",
28
+ subFormAddAction: "新增",
29
+ subFormRowNo: "行号",
30
+ subFormAddActionHint: "新增行",
31
+ insertSubFormRow: "插入行",
32
+ deleteSubFormRow: "删除行",
33
+ nonSubFormType: "组件类型不是子表单"
34
+ } } };
35
+ //#endregion
36
+ export { zh_CN_render_default as default };
@@ -0,0 +1,37 @@
1
+ import { ref } from "vue";
2
+ import { defineStore } from "pinia";
3
+ //#region ../core/src/store/useTableColumnStore.ts
4
+ var useTableColumnStore = defineStore("TableColumnStore", () => {
5
+ const tableConfigs = ref({});
6
+ const getTableConfig = (tableId) => {
7
+ return tableConfigs.value[tableId];
8
+ };
9
+ const getColumnList = (tableId) => {
10
+ var _tableConfigs$value$t;
11
+ return ((_tableConfigs$value$t = tableConfigs.value[tableId]) === null || _tableConfigs$value$t === void 0 ? void 0 : _tableConfigs$value$t.columnList) || [];
12
+ };
13
+ const saveTableConfig = (tableId, config) => {
14
+ tableConfigs.value[tableId] = config;
15
+ };
16
+ const saveColumnList = (tableId, columnList) => {
17
+ if (!tableConfigs.value[tableId]) tableConfigs.value[tableId] = { columnList: [] };
18
+ tableConfigs.value[tableId].columnList = columnList;
19
+ };
20
+ const clearTableConfig = (tableId) => {
21
+ delete tableConfigs.value[tableId];
22
+ };
23
+ const hasTableConfig = (tableId) => {
24
+ return !!tableConfigs.value[tableId];
25
+ };
26
+ return {
27
+ tableConfigs,
28
+ getTableConfig,
29
+ getColumnList,
30
+ saveTableConfig,
31
+ saveColumnList,
32
+ clearTableConfig,
33
+ hasTableConfig
34
+ };
35
+ }, { persist: true });
36
+ //#endregion
37
+ export { useTableColumnStore };
@@ -0,0 +1,40 @@
1
+ import { isArray } from "lodash-es";
2
+ //#region ../core/src/utils/format.ts
3
+ /**
4
+ * 将Cascader转义为汉字
5
+ * @param arr 数据数组
6
+ * @param codeList 代码列表
7
+ * @param fieldNames 字段名称映射
8
+ * @param emblem 拼接符号
9
+ * @returns
10
+ */
11
+ var formateCascaderCode = (arr = [], codeList, fieldNames = {
12
+ label: "label",
13
+ value: "value",
14
+ children: "children"
15
+ }, emblem = "/") => {
16
+ if (!codeList || codeList.length === 0) return;
17
+ if (isArray(codeList[0])) return codeList.map((item) => getTreeName(arr, item, fieldNames).join(emblem)).join(",");
18
+ else return getTreeName(arr, codeList, fieldNames).join(emblem);
19
+ };
20
+ var getTreeName = (list = [], val = [], fieldNames = {
21
+ label: "label",
22
+ value: "value",
23
+ children: "children"
24
+ }) => {
25
+ const nameList = [];
26
+ list.forEach((item) => {
27
+ if (val.length === 0) return;
28
+ if (item[fieldNames.value] === val[0]) {
29
+ nameList.push(item[fieldNames.label]);
30
+ const children = item[fieldNames.children];
31
+ if (isArray(children)) {
32
+ const res = getTreeName(children, val.slice(1), fieldNames);
33
+ nameList.push(...res);
34
+ }
35
+ }
36
+ });
37
+ return nameList;
38
+ };
39
+ //#endregion
40
+ export { formateCascaderCode };
@@ -0,0 +1,27 @@
1
+ import { h } from "vue";
2
+ import { isArray } from "lodash-es";
3
+ //#region ../core/src/utils/getWidgetCompontent.ts
4
+ /**
5
+ * 获取并解析对应的 Vue 组件实例
6
+ * 根据当前组件类型和应用所处的状态(设计模式/运行模式),返回正确的 Vue 组件以供渲染。
7
+ *
8
+ * 组件降级渲染策略:
9
+ * 1. 默认组合基础、高级、容器组件映射表进行查找。
10
+ * 2. 如果当前处于「运行模式(非设计模式)」,且存在独立定义的渲染层组件(即组件名以 '-render' 结尾),则优先返回该渲染层组件。
11
+ * 3. 否则默认返回基础组件定义。
12
+ *
13
+ * @param widget Widget 组件的配置数据层对象,包含其标识 type
14
+ * @param designState 当前所处状态标记:true 为处于设计模式(在设计器内),false 为处于运行/预览模式
15
+ * @returns 对应的 Vue 组件定义 (Component)
16
+ */
17
+ function getWidgetCompontent(widget, widgetList, designState) {
18
+ const widgetType = widget.type;
19
+ const currentWidget = widgetList.get(widgetType + "-widget");
20
+ if (currentWidget) {
21
+ if (isArray(currentWidget)) return designState ? currentWidget[0] : currentWidget[1];
22
+ return currentWidget;
23
+ }
24
+ return h("div", null, "暂无组件");
25
+ }
26
+ //#endregion
27
+ export { getWidgetCompontent };
@@ -0,0 +1,38 @@
1
+ import { createI18n } from "./smart-vue-i18n/index.js";
2
+ import _objectSpread from "@oxc-project/runtime/helpers/objectSpread2";
3
+ import { mapActions, mapState } from "pinia";
4
+ import _asyncToGenerator from "@oxc-project/runtime/helpers/asyncToGenerator";
5
+ import { useLocaleStore } from "@kp-ui/i18n";
6
+ //#region ../core/src/utils/i18n.ts
7
+ var i18n = createI18n({ locale: "zh-CN" });
8
+ _objectSpread({}, mapState(useLocaleStore, ["getLocale"])), _objectSpread(_objectSpread({}, mapActions(useLocaleStore, ["setLocale"])), {}, {
9
+ changeLocale(langName) {
10
+ return _asyncToGenerator(function* () {
11
+ yield i18n.setLang(langName);
12
+ })();
13
+ },
14
+ i18nt(key) {
15
+ return i18n.$st(key);
16
+ },
17
+ i18n2t(key1, key2) {
18
+ return i18n.$st2(key1, key2);
19
+ }
20
+ });
21
+ function useI18n$1() {
22
+ const i18nt = (key, obj) => {
23
+ return i18n.$st(key, obj);
24
+ };
25
+ const i18n2t = (key1, key2) => {
26
+ return i18n.$st2(key1, key2);
27
+ };
28
+ const initLocale = (locale) => {
29
+ i18n.setLang(locale);
30
+ };
31
+ return {
32
+ i18nt,
33
+ i18n2t,
34
+ initLocale
35
+ };
36
+ }
37
+ //#endregion
38
+ export { useI18n$1 as useI18n };
@@ -0,0 +1,79 @@
1
+ import { reactive } from "vue";
2
+ import _objectSpread from "@oxc-project/runtime/helpers/objectSpread2";
3
+ import { get, isObject } from "lodash-es";
4
+ import _asyncToGenerator from "@oxc-project/runtime/helpers/asyncToGenerator";
5
+ //#region ../core/src/utils/smart-vue-i18n/index.ts
6
+ var locale = reactive({
7
+ lang: "zh-CN",
8
+ messages: {}
9
+ });
10
+ var langLoaders = {
11
+ "zh-CN": function() {
12
+ var _ref = _asyncToGenerator(function* () {
13
+ const [zhCN, zhLocale, zhLocale_render, zhLocale_extension] = yield Promise.all([
14
+ import("ant-design-vue/es/locale/zh_CN"),
15
+ import("../../lang/zh-CN.js"),
16
+ import("../../lang/zh-CN_render.js"),
17
+ import("../../lang/zh-CN_extension.js")
18
+ ]);
19
+ return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, zhCN.default), zhLocale.default), zhLocale_render.default), zhLocale_extension.default);
20
+ });
21
+ return function zhCN() {
22
+ return _ref.apply(this, arguments);
23
+ };
24
+ }(),
25
+ "en-US": function() {
26
+ var _ref2 = _asyncToGenerator(function* () {
27
+ const [enUS, enLocale, enLocale_render, enLocale_extension] = yield Promise.all([
28
+ import("ant-design-vue/es/locale/en_US"),
29
+ import("../../lang/en-US.js"),
30
+ import("../../lang/en-US_render.js"),
31
+ import("../../lang/en-US_extension.js")
32
+ ]);
33
+ return _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, enUS.default), enLocale.default), enLocale_render.default), enLocale_extension.default);
34
+ });
35
+ return function enUS() {
36
+ return _ref2.apply(this, arguments);
37
+ };
38
+ }()
39
+ };
40
+ function createI18n(options) {
41
+ return {
42
+ get messages() {
43
+ return locale.messages;
44
+ },
45
+ $st(path, args) {
46
+ const message = get(this.messages[locale.lang], path);
47
+ if (isObject(args)) {
48
+ let result = "";
49
+ Object.entries(args).forEach(([key, value]) => {
50
+ result = message.replace(`{${key}}`, value);
51
+ });
52
+ return result;
53
+ }
54
+ if (typeof message === "undefined") return path;
55
+ return typeof message === "function" ? message(...args) : message !== null ? message : path;
56
+ },
57
+ $st2(path, path2) {
58
+ const messages = this.messages[locale.lang];
59
+ const message = get(messages, path);
60
+ return message !== null ? message : get(messages, path2);
61
+ },
62
+ setLang(lang) {
63
+ return _asyncToGenerator(function* () {
64
+ locale.lang = lang;
65
+ if (!(lang in locale.messages)) locale.messages[lang] = {};
66
+ if (lang in langLoaders) {
67
+ const messages = yield langLoaders[lang]();
68
+ locale.messages[lang] = messages;
69
+ }
70
+ locale.lang = lang;
71
+ })();
72
+ },
73
+ setLangMessages(lang, messages) {
74
+ locale.messages[lang] = _objectSpread(_objectSpread({}, locale.messages[lang]), messages);
75
+ }
76
+ };
77
+ }
78
+ //#endregion
79
+ export { createI18n };
@@ -0,0 +1,9 @@
1
+ //#region ../core/src/utils/transformPx.ts
2
+ var transformPx = (px) => {
3
+ if (px === void 0 || px === null || px === "") return "unset";
4
+ if (typeof px === "number") return `${px}px`;
5
+ if (/^\d+$/.test(px)) return `${px}px`;
6
+ return px;
7
+ };
8
+ //#endregion
9
+ export { transformPx };
@@ -0,0 +1,24 @@
1
+ import mitt from "mitt";
2
+ //#region ../core/src/utils/useEmitter.ts
3
+ var emitter = mitt();
4
+ var EVENT_TYPE = /* @__PURE__ */ function(EVENT_TYPE) {
5
+ EVENT_TYPE["ON_FIELD_DATA_CHANGE"] = "onFieldDataChange";
6
+ EVENT_TYPE["ON_CHANGE_EVENT_HANDLER"] = "onChangeEventHandler";
7
+ EVENT_TYPE["ON_FIELD_VALIDATION"] = "fieldValidation";
8
+ return EVENT_TYPE;
9
+ }({});
10
+ /**
11
+ * 组合式API版本的事件总线
12
+ * 用于组件间通信,使用 mitt 实现事件管理
13
+ */
14
+ function useEmitter() {
15
+ const onChangeEditEventHandler = (params) => {
16
+ emitter.emit(EVENT_TYPE.ON_CHANGE_EVENT_HANDLER, params);
17
+ };
18
+ return {
19
+ emitter,
20
+ onChangeEditEventHandler
21
+ };
22
+ }
23
+ //#endregion
24
+ export { EVENT_TYPE, useEmitter };
@@ -0,0 +1,61 @@
1
+ import { isQiankunEnv } from "tmgc2-share";
2
+ import { cloneDeep } from "lodash-es";
3
+ import "clipboard";
4
+ import "@kp-ui/tool";
5
+ //#region ../core/src/utils/util.ts
6
+ var generateId = function() {
7
+ return Math.floor(Math.random() * 1e5 + Math.random() * 2e4 + Math.random() * 5e3);
8
+ };
9
+ var deepClone = function(origin) {
10
+ return cloneDeep(origin);
11
+ };
12
+ var insertCustomCssToHead = function(cssCode, formId = "") {
13
+ const styleId = formId ? "vform-custom-css-" + formId : "vform-custom-css";
14
+ const existingStyle = document.getElementById(styleId);
15
+ if (existingStyle) {
16
+ try {
17
+ existingStyle.textContent = cssCode;
18
+ } catch (_unused) {
19
+ existingStyle.styleSheet.cssText = cssCode;
20
+ }
21
+ return;
22
+ }
23
+ const head = document.getElementsByTagName("head")[0];
24
+ const newStyle = document.createElement("style");
25
+ newStyle.type = "text/css";
26
+ newStyle.id = styleId;
27
+ try {
28
+ newStyle.appendChild(document.createTextNode(cssCode));
29
+ } catch (_unused2) {
30
+ newStyle.styleSheet.cssText = cssCode;
31
+ }
32
+ head.appendChild(newStyle);
33
+ };
34
+ var removeCustomCssToHead = function(formId = "") {
35
+ const styleId = formId ? "vform-custom-css-" + formId : "vform-custom-css";
36
+ const existingStyle = document.getElementById(styleId);
37
+ if (existingStyle) existingStyle.remove();
38
+ };
39
+ var removeScriptToHead = function(formId = "") {
40
+ const scriptId = formId ? "v_form_global_functions-" + formId : "v_form_global_functions";
41
+ const existingScript = document.getElementById(scriptId);
42
+ if (existingScript) existingScript.remove();
43
+ };
44
+ var insertGlobalFunctionsToHtml = function(functionsCode, formId = "") {
45
+ if (isQiankunEnv()) {
46
+ try {
47
+ new Function(functionsCode).call(window);
48
+ } catch (e) {
49
+ console.error("Failed to execute global functions:", e);
50
+ }
51
+ return;
52
+ }
53
+ const bodyEle = document.getElementsByTagName("body")[0];
54
+ const newScriptEle = document.createElement("script");
55
+ newScriptEle.id = formId ? "v_form_global_functions-" + formId : "v_form_global_functions";
56
+ newScriptEle.type = "text/javascript";
57
+ newScriptEle.innerHTML = functionsCode;
58
+ bodyEle.appendChild(newScriptEle);
59
+ };
60
+ //#endregion
61
+ export { deepClone, generateId, insertCustomCssToHead, insertGlobalFunctionsToHtml, removeCustomCssToHead, removeScriptToHead };
package/install.js ADDED
@@ -0,0 +1,16 @@
1
+ import render_default from "./src/render/index.js";
2
+ import CustomPageRender_default from "./src/components/public/ConfigView/CustomPageRender.js";
3
+ import "virtual:svg-icons-register";
4
+ import { VxeTooltip } from "vxe-pc-ui";
5
+ //#region install.ts
6
+ var createLowcode = ({ app, publicComponents }) => {
7
+ app.config.globalProperties.$publicComponents = publicComponents;
8
+ app.component("VxeTooltip", VxeTooltip);
9
+ app.config.globalProperties.$openLowcodeModal = (ops) => {
10
+ import("./src/components/public/CustomerModal/useCustomerModal.js").then(({ openCustomerModal }) => {
11
+ openCustomerModal(ops, app);
12
+ });
13
+ };
14
+ };
15
+ //#endregion
16
+ export { CustomPageRender_default as CustomPageRender, render_default as VFormRender, createLowcode };
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@kp-ui/lowcode-pc-v2",
3
+ "version": "0.0.1",
4
+ "publishConfig": {
5
+ "access": "public",
6
+ "registry": "https://registry.npmjs.org/"
7
+ },
8
+ "module": "index.js",
9
+ "dependencies": {
10
+ "vxe-pc-ui": "4.10.29",
11
+ "vxe-table": "4.17.18",
12
+ "vuedraggable": "^4.0.0",
13
+ "bpmn-js": "13.2.0",
14
+ "vue-json-viewer": "^3.0.1",
15
+ "ant-design-vue": "4.2.6",
16
+ "query-string": "^6.14.1",
17
+ "dayjs": "^1.11.7",
18
+ "@kp-ui/tool": "2.14.1",
19
+ "tailwindcss": "3.4.9",
20
+ "vue": "3.5.17",
21
+ "vue-echarts": "^8.0.1",
22
+ "file-saver": "^2.0.5",
23
+ "echarts": "^5.6.0"
24
+ },
25
+ "main": "index.js",
26
+ "types": "types/pc/install.d.ts",
27
+ "sideEffects": [
28
+ "./assets/styles/*",
29
+ "./_virtual/*"
30
+ ],
31
+ "exports": {
32
+ ".": {
33
+ "import": "./install.js",
34
+ "types": "./types/pc/install.d.ts"
35
+ },
36
+ "./style": "./assets/styles/style.css",
37
+ "./styles/*": "./assets/styles/*"
38
+ }
39
+ }
@@ -0,0 +1,51 @@
1
+ import _plugin_vue_export_helper_default from "../../../_virtual/_plugin-vue_export-helper.js";
2
+ import ActionButtonListRender_vue_vue_type_script_lang_default from "./ActionButtonListRender.vue_vue_type_script_lang.js";
3
+ /* empty css */
4
+ import { Fragment, Teleport, createBlock, createCommentVNode, createElementBlock, createTextVNode, createVNode, normalizeClass, normalizeStyle, openBlock, renderList, resolveComponent, toDisplayString, withCtx } from "vue";
5
+ //#region src/components/public/ActionButtonListRender.vue
6
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
7
+ const _component_SvgIcon = resolveComponent("SvgIcon");
8
+ const _component_a_button = resolveComponent("a-button");
9
+ const _component_a_space = resolveComponent("a-space");
10
+ return openBlock(), createElementBlock("div", {
11
+ ref: "fieldEditor",
12
+ class: normalizeClass(["button-list-container", ..._ctx.customClass]),
13
+ style: normalizeStyle(_ctx.containerStyle)
14
+ }, [(openBlock(), createBlock(Teleport, {
15
+ disabled: _ctx.isDisabled,
16
+ to: _ctx.getContainer
17
+ }, [createVNode(_component_a_space, { size: 8 }, {
18
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.visibleButtons, (item) => {
19
+ return openBlock(), createBlock(_component_a_button, {
20
+ key: item.key,
21
+ type: item.type,
22
+ size: item.size,
23
+ danger: !!item.danger,
24
+ ghost: !!item.ghost,
25
+ class: "tpf-button",
26
+ loading: item.loading,
27
+ disabled: _ctx.handleDisabled(item) || _ctx.disabled || !!item.disabled,
28
+ onClick: ($event) => _ctx.handleClick(item)
29
+ }, {
30
+ default: withCtx(() => [item.icon ? (openBlock(), createBlock(_component_SvgIcon, {
31
+ key: 0,
32
+ "icon-class": item.icon,
33
+ class: "button-icon"
34
+ }, null, 8, ["icon-class"])) : createCommentVNode("", true), createTextVNode(" " + toDisplayString(item.label), 1)]),
35
+ _: 2
36
+ }, 1032, [
37
+ "type",
38
+ "size",
39
+ "danger",
40
+ "ghost",
41
+ "loading",
42
+ "disabled",
43
+ "onClick"
44
+ ]);
45
+ }), 128))]),
46
+ _: 1
47
+ })], 8, ["disabled", "to"]))], 6);
48
+ }
49
+ var ActionButtonListRender_default = /* @__PURE__ */ _plugin_vue_export_helper_default(ActionButtonListRender_vue_vue_type_script_lang_default, [["render", _sfc_render], ["__scopeId", "data-v-37429548"]]);
50
+ //#endregion
51
+ export { ActionButtonListRender_default as default };
@@ -0,0 +1,126 @@
1
+ import { ButtonPositionEnum } from "../../../core/src/constants/index.js";
2
+ import { computed, defineComponent } from "vue";
3
+ import { SvgIcon, useExecFunction } from "tmgc2-share";
4
+ import _asyncToGenerator from "@oxc-project/runtime/helpers/asyncToGenerator";
5
+ //#region src/components/public/ActionButtonListRender.vue?vue&type=script&lang.ts
6
+ var ActionButtonListRender_vue_vue_type_script_lang_default = defineComponent({
7
+ name: "ActionButtonListRender",
8
+ components: { SvgIcon },
9
+ props: {
10
+ options: {
11
+ type: Object,
12
+ default: () => {}
13
+ },
14
+ disabled: {
15
+ type: Boolean,
16
+ default: false
17
+ },
18
+ scope: {
19
+ type: Object,
20
+ default: () => {}
21
+ },
22
+ ctx: {
23
+ type: Object,
24
+ default: () => {}
25
+ },
26
+ buttonList: {
27
+ type: Array,
28
+ default: () => []
29
+ },
30
+ customClass: {
31
+ type: Array,
32
+ default: () => []
33
+ },
34
+ flex: {
35
+ type: String,
36
+ default: "center"
37
+ },
38
+ designState: {
39
+ type: Boolean,
40
+ default: false
41
+ }
42
+ },
43
+ emits: ["on-click"],
44
+ setup(props, { emit }) {
45
+ const containerStyle = computed(() => ({ "--flex": props.flex }));
46
+ const { executeFunction, asyncExecuteFunction } = useExecFunction();
47
+ const isDisabled = computed(() => {
48
+ var _props$options;
49
+ return ((_props$options = props.options) === null || _props$options === void 0 ? void 0 : _props$options.buttonPosition) !== ButtonPositionEnum.DIY || props.designState;
50
+ });
51
+ const getContainer = computed(() => {
52
+ var _props$options2;
53
+ return isDisabled.value ? "body" : ((_props$options2 = props.options) === null || _props$options2 === void 0 ? void 0 : _props$options2.getContainer) || "body";
54
+ });
55
+ const visibleButtons = computed(() => props.buttonList.filter((item) => item.hidden !== 1).filter((item) => !handleHidden(item)));
56
+ const handleClick = function() {
57
+ var _ref = _asyncToGenerator(function* (item) {
58
+ if (props.designState) return;
59
+ if (!item.onClick) {
60
+ emit("on-click", {
61
+ item,
62
+ result: true
63
+ });
64
+ return;
65
+ }
66
+ if (item.loading) return;
67
+ item.loading = true;
68
+ try {
69
+ emit("on-click", {
70
+ item,
71
+ result: yield asyncExecuteFunction({
72
+ functionBody: item.onClick,
73
+ context: props.ctx,
74
+ params: props.scope
75
+ })
76
+ });
77
+ } catch (error) {
78
+ console.error("Button click handler error:", error);
79
+ } finally {
80
+ item.loading = false;
81
+ }
82
+ });
83
+ return function handleClick(_x) {
84
+ return _ref.apply(this, arguments);
85
+ };
86
+ }();
87
+ const handleDisabled = (item) => {
88
+ if (!item.onDisabled) return false;
89
+ try {
90
+ const result = executeFunction({
91
+ functionBody: item.onDisabled,
92
+ context: props.ctx,
93
+ params: props.scope
94
+ });
95
+ if (typeof result === "boolean") return result;
96
+ else return false;
97
+ } catch (error) {
98
+ console.error("Button disabled handler error:", error);
99
+ return false;
100
+ }
101
+ };
102
+ const handleHidden = (item) => {
103
+ if (!item.onHidden) return false;
104
+ try {
105
+ return executeFunction({
106
+ functionBody: item.onHidden,
107
+ context: props.ctx,
108
+ params: props.scope
109
+ });
110
+ } catch (error) {
111
+ console.error("Button hidden handler error:", error);
112
+ return false;
113
+ }
114
+ };
115
+ return {
116
+ getContainer,
117
+ isDisabled,
118
+ containerStyle,
119
+ visibleButtons,
120
+ handleClick,
121
+ handleDisabled
122
+ };
123
+ }
124
+ });
125
+ //#endregion
126
+ export { ActionButtonListRender_vue_vue_type_script_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import CustomPageRender_vue_vue_type_script_setup_true_lang_default from "./CustomPageRender.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/public/ConfigView/CustomPageRender.vue
3
+ var CustomPageRender_default = CustomPageRender_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { CustomPageRender_default as default };
@@ -0,0 +1,38 @@
1
+ import { useLowcode } from "../../../../core/src/hooks/useLowcode.js";
2
+ import render_default from "../../../render/index.js";
3
+ import { createElementBlock, createVNode, defineComponent, onMounted, openBlock, ref, unref } from "vue";
4
+ import _objectSpread from "@oxc-project/runtime/helpers/objectSpread2";
5
+ import _asyncToGenerator from "@oxc-project/runtime/helpers/asyncToGenerator";
6
+ import { getLocat } from "@kp-ui/tool";
7
+ //#region src/components/public/ConfigView/CustomPageRender.vue?vue&type=script&setup=true&lang.tsx
8
+ var _hoisted_1 = { class: "t-bg-[#fff] t-h-full" };
9
+ var CustomPageRender_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
10
+ __name: "CustomPageRender",
11
+ props: { title: {
12
+ type: String,
13
+ default: ""
14
+ } },
15
+ setup(__props) {
16
+ const { formCode = "", id = "", type = "edit" } = getLocat();
17
+ const anchorList = ref([]);
18
+ const setAnchorList = (list) => {
19
+ anchorList.value = list;
20
+ };
21
+ const { vfdRef, formConfig, getPageJson, goBack } = useLowcode();
22
+ onMounted(_asyncToGenerator(function* () {
23
+ yield getPageJson();
24
+ }));
25
+ return (_ctx, _cache) => {
26
+ return openBlock(), createElementBlock("div", _hoisted_1, [createVNode(render_default, {
27
+ ref_key: "vfdRef",
28
+ ref: vfdRef,
29
+ vfCtx: _objectSpread(_objectSpread({ _id: unref(id) }, unref(getLocat)()), {}, {
30
+ goBack: unref(goBack),
31
+ setAnchorList
32
+ })
33
+ }, null, 8, ["vfCtx"])]);
34
+ };
35
+ }
36
+ });
37
+ //#endregion
38
+ export { CustomPageRender_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import CustomerModal_vue_vue_type_script_setup_true_lang_default from "./CustomerModal.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/public/CustomerModal/CustomerModal.vue
3
+ var CustomerModal_default = CustomerModal_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { CustomerModal_default as default };