@gct-paas/design 0.1.5-dev.6 → 0.1.5-dev.8

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 (192) hide show
  1. package/dist/index.min.css +1 -1
  2. package/dist/loader.esm.min.js +1 -1
  3. package/es/components/design/design-content/design-content.css +76 -0
  4. package/es/components/design/design-content/design-content.d.ts +190 -0
  5. package/es/components/design/design-content/design-content.mjs +274 -0
  6. package/es/components/design/design-drag-item/design-drag-item.css +179 -0
  7. package/es/components/design/design-drag-item/design-drag-item.d.ts +56 -0
  8. package/es/components/design/design-drag-item/design-drag-item.mjs +237 -0
  9. package/es/components/design/design-drop-container/design-drop-container.css +103 -0
  10. package/es/components/design/design-drop-container/design-drop-container.d.ts +92 -0
  11. package/es/components/design/design-drop-container/design-drop-container.mjs +182 -0
  12. package/es/components/design/design-drop-line/design-drop-line.css +165 -0
  13. package/es/components/design/design-drop-line/design-drop-line.d.ts +73 -0
  14. package/es/components/design/design-drop-line/design-drop-line.mjs +136 -0
  15. package/es/components/design/design-item-actions/design-item-actions.css +97 -0
  16. package/es/components/design/design-item-actions/design-item-actions.d.ts +42 -0
  17. package/es/components/design/design-item-actions/design-item-actions.mjs +147 -0
  18. package/es/components/design/design-item-highlighter/design-item-highlighter.css +70 -0
  19. package/es/components/design/design-item-highlighter/design-item-highlighter.d.ts +168 -0
  20. package/es/components/design/design-item-highlighter/design-item-highlighter.mjs +155 -0
  21. package/es/components/design/design-item-highlighter-container/design-item-highlighter-container.css +85 -0
  22. package/es/components/design/design-item-highlighter-container/design-item-highlighter-container.d.ts +53 -0
  23. package/es/components/design/design-item-highlighter-container/design-item-highlighter-container.mjs +169 -0
  24. package/es/components/design/design-item-hover-title/design-item-hover-title.css +12 -0
  25. package/es/components/design/design-item-hover-title/design-item-hover-title.d.ts +60 -0
  26. package/es/components/design/design-item-hover-title/design-item-hover-title.mjs +60 -0
  27. package/es/components/design/design-item-preview/design-item-preview.css +91 -0
  28. package/es/components/design/design-item-preview/design-item-preview.d.ts +1 -0
  29. package/es/components/design/design-item-preview/design-item-preview.mjs +32 -0
  30. package/es/components/design/design-not-drag-item/design-not-drag-item.css +67 -0
  31. package/es/components/design/design-not-drag-item/design-not-drag-item.d.ts +50 -0
  32. package/es/components/design/design-not-drag-item/design-not-drag-item.mjs +68 -0
  33. package/es/components/design/design-not-found/design-not-found.css +68 -0
  34. package/es/components/design/design-not-found/design-not-found.d.ts +14 -0
  35. package/es/components/design/design-not-found/design-not-found.mjs +19 -0
  36. package/es/components/design/index.d.ts +2 -0
  37. package/es/components/design/index.mjs +2 -0
  38. package/es/components/design-save-tip/design-save-tip.mjs +1 -1
  39. package/es/components/editor/index.mjs +2 -0
  40. package/es/components/editor/length-unit-editor/length-unit-editor.vue.d.ts +13 -0
  41. package/es/components/editor/length-unit-editor/length-unit-editor.vue.mjs +5 -0
  42. package/es/components/editor/length-unit-editor/length-unit-editor.vue_vue_type_script_setup_true_name_length-unit-editor_lang.mjs +47 -0
  43. package/es/components/field-transfer/components/field-transfer-modal.vue.d.ts +5 -1
  44. package/es/components/field-transfer/components/field-transfer-modal.vue.mjs +2 -2
  45. package/es/components/field-transfer/components/field-transfer-modal.vue_vue_type_script_setup_true_name_field-transfer-modal_lang.mjs +2 -1
  46. package/es/components/field-transfer/components/field-transfer-modal.vue_vue_type_style_index_0_scoped_711e6992_lang.css +8 -0
  47. package/es/components/field-transfer/index.d.ts +2 -0
  48. package/es/components/field-transfer/index.mjs +1 -0
  49. package/es/components/index.d.ts +5 -2
  50. package/es/components/index.mjs +10 -2
  51. package/es/components/material/index.d.ts +1 -0
  52. package/es/components/material/index.mjs +1 -0
  53. package/es/components/material/material-content/material-content.css +86 -0
  54. package/es/components/material/material-content/material-content.d.ts +1 -0
  55. package/es/components/material/material-content/material-content.mjs +49 -0
  56. package/es/components/material/material-module/material-module.css +104 -0
  57. package/es/components/material/material-module/material-module.d.ts +60 -0
  58. package/es/components/material/material-module/material-module.mjs +67 -0
  59. package/es/components/material/material-module-drag-container/material-module-drag-container.css +69 -0
  60. package/es/components/material/material-module-drag-container/material-module-drag-container.d.ts +56 -0
  61. package/es/components/material/material-module-drag-container/material-module-drag-container.mjs +21 -0
  62. package/es/components/material/material-module-drag-item/material-module-drag-item.css +83 -0
  63. package/es/components/material/material-module-drag-item/material-module-drag-item.d.ts +13 -0
  64. package/es/components/material/material-module-drag-item/material-module-drag-item.mjs +66 -0
  65. package/es/components/material/material-outline-tree/material-outline-tree.css +81 -0
  66. package/es/components/material/material-outline-tree/material-outline-tree.d.ts +13 -0
  67. package/es/components/material/material-outline-tree/material-outline-tree.mjs +67 -0
  68. package/es/components/material/material-tab-pane/material-tab-pane.css +68 -0
  69. package/es/components/material/material-tab-pane/material-tab-pane.d.ts +13 -0
  70. package/es/components/material/material-tab-pane/material-tab-pane.mjs +19 -0
  71. package/es/components/material/material-tabs/material-tabs.css +105 -0
  72. package/es/components/material/material-tabs/material-tabs.d.ts +103 -0
  73. package/es/components/material/material-tabs/material-tabs.mjs +44 -0
  74. package/es/components/modal-name-editor/modal-name-editor.d.ts +1 -11
  75. package/es/components/modal-name-editor/modal-name-editor.mjs +27 -38
  76. package/es/components/multi-field/index.d.ts +2 -0
  77. package/es/components/multi-field/index.mjs +1 -0
  78. package/es/components/multi-field/multi-field-display.vue.d.ts +8 -0
  79. package/es/components/multi-field/multi-field-display.vue.mjs +7 -0
  80. package/es/components/multi-field/multi-field-display.vue_vue_type_script_setup_true_lang.mjs +32 -0
  81. package/es/components/multi-field/multi-field-display.vue_vue_type_style_index_0_scoped_802ade7b_lang.css +4 -0
  82. package/es/components/multi-field/multi-field-item.vue.d.ts +6 -0
  83. package/es/components/multi-field/multi-field-item.vue.mjs +7 -0
  84. package/es/components/multi-field/multi-field-item.vue_vue_type_script_setup_true_lang.mjs +47 -0
  85. package/es/components/multi-field/multi-field-item.vue_vue_type_style_index_0_scoped_881cb08e_lang.css +31 -0
  86. package/es/components/panel/index.d.ts +1 -0
  87. package/es/components/panel/index.mjs +1 -0
  88. package/es/components/panel/panel-content/panel-content.css +189 -0
  89. package/es/components/panel/panel-content/panel-content.d.ts +19 -0
  90. package/es/components/panel/panel-content/panel-content.mjs +48 -0
  91. package/es/components/panel/panel-form/panel-form.css +67 -0
  92. package/es/components/panel/panel-form/panel-form.d.ts +62 -0
  93. package/es/components/panel/panel-form/panel-form.mjs +59 -0
  94. package/es/components/panel/panel-path/panel-path.css +89 -0
  95. package/es/components/panel/panel-path/panel-path.d.ts +35 -0
  96. package/es/components/panel/panel-path/panel-path.mjs +52 -0
  97. package/es/components/user-occupy/user-occupy.vue.mjs +2 -2
  98. package/es/components/user-occupy/user-occupy.vue_vue_type_script_setup_true_lang.mjs +2 -2
  99. package/es/components/user-occupy/{user-occupy.vue_vue_type_style_index_0_scoped_24cb9749_lang.css → user-occupy.vue_vue_type_style_index_0_scoped_9b136922_lang.css} +6 -6
  100. package/es/controller/index.d.ts +1 -0
  101. package/es/controller/index.mjs +1 -0
  102. package/es/controller/view/design-view.controller.d.ts +48 -0
  103. package/es/controller/view/design-view.controller.mjs +150 -0
  104. package/es/create-app-vue.mjs +2 -0
  105. package/es/editor/content-tag-style/content-tag-style.css +164 -0
  106. package/es/editor/content-tag-style/content-tag-style.d.ts +112 -0
  107. package/es/editor/content-tag-style/content-tag-style.mjs +80 -0
  108. package/es/editor/content-tag-style/index.d.ts +8 -0
  109. package/es/editor/content-tag-style/index.mjs +11 -0
  110. package/es/editor/field-info-editor/field-info-editor.css +125 -0
  111. package/es/editor/field-info-editor/field-info-editor.d.ts +111 -0
  112. package/es/editor/field-info-editor/field-info-editor.mjs +38 -0
  113. package/es/editor/field-info-editor/index.d.ts +8 -0
  114. package/es/editor/field-info-editor/index.mjs +9 -0
  115. package/es/editor/index.d.ts +5 -0
  116. package/es/editor/index.mjs +19 -0
  117. package/es/editor/model-field-select/index.d.ts +8 -0
  118. package/es/editor/model-field-select/index.mjs +9 -0
  119. package/es/editor/model-field-select/model-field-select.css +148 -0
  120. package/es/editor/model-field-select/model-field-select.d.ts +42 -0
  121. package/es/editor/model-field-select/model-field-select.mjs +217 -0
  122. package/es/editor/style-border/index.d.ts +4 -0
  123. package/es/editor/style-border/index.mjs +11 -0
  124. package/es/editor/style-border/style-border.d.ts +35 -0
  125. package/es/editor/style-border/style-border.mjs +38 -0
  126. package/es/editor/style-font/index.d.ts +4 -0
  127. package/es/editor/style-font/index.mjs +11 -0
  128. package/es/editor/style-font/style-font.css +86 -0
  129. package/es/editor/style-font/style-font.d.ts +35 -0
  130. package/es/editor/style-font/style-font.mjs +36 -0
  131. package/es/editor/style-position/index.d.ts +4 -0
  132. package/es/editor/style-position/index.mjs +11 -0
  133. package/es/editor/style-position/style-position.d.ts +35 -0
  134. package/es/editor/style-position/style-position.mjs +35 -0
  135. package/es/editor/style-spacing/index.d.ts +4 -0
  136. package/es/editor/style-spacing/index.mjs +11 -0
  137. package/es/editor/style-spacing/style-spacing.d.ts +34 -0
  138. package/es/editor/style-spacing/style-spacing.mjs +60 -0
  139. package/es/hooks/design-view/designer/useDesignSave.mjs +3 -1
  140. package/es/hooks/index.d.ts +2 -1
  141. package/es/hooks/index.mjs +3 -2
  142. package/es/hooks/use-design-view-controller/use-design-view-controller.d.ts +11 -0
  143. package/es/hooks/use-design-view-controller/use-design-view-controller.mjs +31 -0
  144. package/es/index.d.ts +5 -2
  145. package/es/index.mjs +23 -8
  146. package/es/interface/controller/i-design-view.controller.d.ts +3 -5
  147. package/es/interface/form-editor/child-list-editor/child-list-editor.d.ts +114 -0
  148. package/es/interface/form-editor/index.d.ts +9 -0
  149. package/es/interface/form-editor/style-border/i-style-border.controller.d.ts +11 -0
  150. package/es/interface/form-editor/style-border/i-style-border.d.ts +22 -0
  151. package/es/interface/form-editor/style-font/i-style-font.controller.d.ts +11 -0
  152. package/es/interface/form-editor/style-font/i-style-font.d.ts +13 -0
  153. package/es/interface/form-editor/style-position/i-style-position.controller.d.ts +11 -0
  154. package/es/interface/form-editor/style-position/i-style-position.d.ts +13 -0
  155. package/es/interface/form-editor/style-spacing/i-style-spacing.controller.d.ts +11 -0
  156. package/es/interface/form-editor/style-spacing/i-style-spacing.d.ts +22 -0
  157. package/es/interface/index.d.ts +2 -0
  158. package/es/interface/provider/i-node-provider.d.ts +140 -0
  159. package/es/provider/design-editor-node/design-editor-node.provider.d.ts +41 -0
  160. package/es/provider/design-editor-node/design-editor-node.provider.mjs +57 -0
  161. package/es/provider/index.d.ts +2 -0
  162. package/es/provider/index.mjs +2 -0
  163. package/es/provider/node-base/node-base.provider.d.ts +25 -0
  164. package/es/provider/node-base/node-base.provider.mjs +34 -0
  165. package/es/register/index.d.ts +1 -0
  166. package/es/register/index.mjs +1 -0
  167. package/es/register/node/node.register.d.ts +113 -0
  168. package/es/register/node/node.register.mjs +141 -0
  169. package/es/store/index.d.ts +1 -0
  170. package/es/store/index.mjs +1 -0
  171. package/es/store/view/design-view.store.d.ts +12 -0
  172. package/es/store/view/design-view.store.mjs +327 -0
  173. package/es/utils/can-drop/can-drop.d.ts +12 -0
  174. package/es/utils/can-drop/can-drop.mjs +48 -0
  175. package/es/utils/design-plugin-pkg-util/design-plugin-pkg-util.d.ts +1 -1
  176. package/es/utils/design-plugin-pkg-util/design-plugin-pkg-util.mjs +29 -1
  177. package/es/utils/index.d.ts +1 -0
  178. package/es/utils/index.mjs +1 -0
  179. package/package.json +12 -11
  180. package/es/components/field-cascader/index.d.ts +0 -2
  181. package/es/components/field-cascader/index.mjs +0 -1
  182. package/es/components/field-cascader/src/FieldCascader.vue.d.ts +0 -87
  183. package/es/components/field-cascader/src/FieldCascader.vue.mjs +0 -6
  184. package/es/components/field-cascader/src/FieldCascader.vue_vue_type_script_setup_true_lang.mjs +0 -115
  185. package/es/components/field-cascader/src/FieldCascader.vue_vue_type_style_index_0_lang.css +0 -69
  186. package/es/components/field-cascader/src/SearchInput.vue.d.ts +0 -11
  187. package/es/components/field-cascader/src/SearchInput.vue.mjs +0 -7
  188. package/es/components/field-cascader/src/SearchInput.vue_vue_type_script_setup_true_lang.mjs +0 -38
  189. package/es/components/field-cascader/src/SearchInput.vue_vue_type_style_index_0_scoped_512c4b38_lang.css +0 -9
  190. package/es/components/field-cascader/src/hooks.d.ts +0 -129
  191. package/es/components/field-cascader/src/hooks.mjs +0 -163
  192. package/es/components/field-transfer/components/field-transfer-modal.vue_vue_type_style_index_0_scoped_0c9dd8a1_lang.css +0 -5
@@ -0,0 +1,8 @@
1
+ import { IEditorProvider } from '@gct-paas/core-web';
2
+ export declare class Provider implements IEditorProvider {
3
+ component: string;
4
+ }
5
+ declare const _default: {
6
+ install(app: import('vue').App): void;
7
+ };
8
+ export default _default;
@@ -0,0 +1,9 @@
1
+ import ModelFieldSelect from "./model-field-select.mjs";
2
+ import { EditorType, widthEditorInstall } from "@gct-paas/core-web";
3
+ //#region src/editor/model-field-select/index.ts
4
+ var Provider = class {
5
+ component = "ModelFieldSelect";
6
+ };
7
+ var model_field_select_default = widthEditorInstall(EditorType.FORM_MODEL_FIELD_SELECT, () => new Provider(), ModelFieldSelect);
8
+ //#endregion
9
+ export { model_field_select_default as default };
@@ -0,0 +1,148 @@
1
+ @charset "UTF-8";
2
+ /* stylelint-disable scss/no-global-function-names */
3
+ /* bem('block', 'element', 'modifier') => 'ibiz-block__element--modifier' */
4
+ /**
5
+ * 定义 Block 块
6
+ * @param {String} $block - Block 块名称
7
+ * @example
8
+ * @include b('button') {
9
+ * padding: 10px;
10
+ * }
11
+ */
12
+ /**
13
+ * 定义 Element 元素
14
+ * @param {String|List} $element - Element 元素名称,支持单个或多个
15
+ * @example
16
+ * @include b('button') {
17
+ * @include e('text') {
18
+ * color: #000;
19
+ * }
20
+ * }
21
+ * // 或传入多个元素
22
+ * @include b('button') {
23
+ * @include e(('text', 'icon')) {
24
+ * margin: 5px;
25
+ * }
26
+ * }
27
+ */
28
+ /**
29
+ * 定义 Modifier 修饰符
30
+ * @param {String|List} $modifier - Modifier 修饰符名称,支持单个或多个
31
+ * @example
32
+ * @include b('button') {
33
+ * @include m('primary') {
34
+ * background: blue;
35
+ * }
36
+ * }
37
+ * // 或传入多个修饰符
38
+ * @include b('button') {
39
+ * @include m(('primary', 'large')) {
40
+ * background: blue;
41
+ * font-size: 16px;
42
+ * }
43
+ * }
44
+ */
45
+ /**
46
+ * 定义状态选择器
47
+ * @param {String} $state - 状态名称
48
+ * @example
49
+ * @include b('button') {
50
+ * @include when('disabled') {
51
+ * opacity: 0.5;
52
+ * }
53
+ * }
54
+ */
55
+ /**
56
+ * 深色主题样式
57
+ * @param {String} $block - Block 块名称
58
+ * @example
59
+ * @include dark('button') {
60
+ * background: #333;
61
+ * color: #fff;
62
+ * }
63
+ */
64
+ /* stylelint-disable scss/no-global-function-names */
65
+ .gct-model-field-select {
66
+ width: 100%;
67
+ }
68
+ .gct-model-field-select__field-content {
69
+ margin-top: var(--gct-padding-7);
70
+ }
71
+
72
+ .gct-model-field-select__field-title {
73
+ margin-top: var(--gct-padding-7);
74
+ margin-bottom: var(--gct-padding-4);
75
+ color: var(--gct-color-text-5);
76
+ }
77
+
78
+ .gct-model-field-select__scrollbar {
79
+ max-height: 338px;
80
+ }
81
+
82
+ .gct-model-field-select__field-list {
83
+ max-height: 338px;
84
+ overflow: hidden;
85
+ }
86
+ .gct-model-field-select__field-list .gct-dnd-item {
87
+ background-color: transparent;
88
+ }
89
+
90
+ .gct-model-field-select__field-item {
91
+ position: relative;
92
+ display: flex;
93
+ align-items: center;
94
+ height: 28px;
95
+ padding: 0 var(--gct-padding-4);
96
+ border-radius: var(--gct-border-radius-s);
97
+ }
98
+ .gct-model-field-select__field-item--bg {
99
+ position: absolute;
100
+ inset: 0;
101
+ z-index: 0;
102
+ background-color: var(--gct-color-primary);
103
+ border-radius: var(--gct-border-radius-s);
104
+ opacity: 0.08;
105
+ }
106
+
107
+ .gct-model-field-select__field-item--drag {
108
+ z-index: 1;
109
+ flex-shrink: 0;
110
+ width: 16px;
111
+ color: #d9d9d9;
112
+ }
113
+
114
+ .gct-model-field-select__field-item--label {
115
+ z-index: 1;
116
+ display: flex;
117
+ flex-grow: 1;
118
+ align-items: center;
119
+ }
120
+
121
+ .gct-model-field-select__field-item--label-icon {
122
+ display: inline-block;
123
+ width: 16px;
124
+ margin: 0 var(--gct-padding-2);
125
+ color: var(--gct-color-primary);
126
+ }
127
+ .gct-model-field-select__field-item--label-icon .iconfont {
128
+ font-size: 12px;
129
+ }
130
+
131
+ .gct-model-field-select__field-item--label-text {
132
+ display: inline-block;
133
+ width: 130px;
134
+ color: var(--gct-color-text-1);
135
+ overflow: hidden;
136
+ text-overflow: ellipsis;
137
+ white-space: nowrap;
138
+ }
139
+
140
+ .gct-model-field-select__field-item--actions {
141
+ z-index: 1;
142
+ width: 16px;
143
+ font-size: 10px;
144
+ cursor: pointer;
145
+ display: flex;
146
+ align-items: center;
147
+ justify-content: center;
148
+ }
@@ -0,0 +1,42 @@
1
+ import { PropType } from 'vue';
2
+ import { IModelFieldSelectEditor } from '@gct-paas/core-web';
3
+ export declare const ModelFieldSelect: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
4
+ value: {
5
+ type: PropType<IObject[]>;
6
+ default: () => never[];
7
+ };
8
+ model: {
9
+ type: PropType<IModelFieldSelectEditor>;
10
+ required: true;
11
+ };
12
+ c: {
13
+ type: ObjectConstructor;
14
+ };
15
+ itemModel: {
16
+ type: ObjectConstructor;
17
+ };
18
+ data: {
19
+ type: ObjectConstructor;
20
+ };
21
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
22
+ value: {
23
+ type: PropType<IObject[]>;
24
+ default: () => never[];
25
+ };
26
+ model: {
27
+ type: PropType<IModelFieldSelectEditor>;
28
+ required: true;
29
+ };
30
+ c: {
31
+ type: ObjectConstructor;
32
+ };
33
+ itemModel: {
34
+ type: ObjectConstructor;
35
+ };
36
+ data: {
37
+ type: ObjectConstructor;
38
+ };
39
+ }>> & Readonly<{}>, {
40
+ value: IObject[];
41
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
42
+ export default ModelFieldSelect;
@@ -0,0 +1,217 @@
1
+ import { DesignNodeType } from "../../constant/index.mjs";
2
+ import { NodeRegister } from "../../register/node/node.register.mjs";
3
+ import "../../register/index.mjs";
4
+ import { platform } from "../../utils/design-view/index.mjs";
5
+ import "../../utils/index.mjs";
6
+ import { useDesignViewController } from "../../hooks/use-design-view-controller/use-design-view-controller.mjs";
7
+ import "../../hooks/index.mjs";
8
+ import { useFieldTransfer } from "../../components/field-transfer/useFieldTransfer.mjs";
9
+ import "../../components/index.mjs";
10
+ import './model-field-select.css';/* empty css */
11
+ import { FIELD_TYPE, FieldIconMap, Platform, modelLoader, t, useNamespace } from "@gct-paas/core";
12
+ import { computed, createVNode, defineComponent, isVNode, ref, resolveComponent, watch } from "vue";
13
+ import { CloseOutlined } from "@ant-design/icons-vue";
14
+ import { GctDndContainer } from "@gct-paas/core-web";
15
+ //#region src/editor/model-field-select/model-field-select.tsx
16
+ function _isSlot(s) {
17
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
18
+ }
19
+ var ModelFieldSelect = /* @__PURE__ */ defineComponent({
20
+ name: "ModelFieldSelect",
21
+ props: {
22
+ value: {
23
+ type: Array,
24
+ default: () => []
25
+ },
26
+ model: {
27
+ type: Object,
28
+ required: true
29
+ },
30
+ c: { type: Object },
31
+ itemModel: { type: Object },
32
+ data: { type: Object }
33
+ },
34
+ setup(props) {
35
+ const ns = useNamespace("model-field-select");
36
+ const isLoaded = ref(false);
37
+ const c = useDesignViewController();
38
+ const selectNode = c.store.selected;
39
+ const parentKey = computed(() => {
40
+ if (!selectNode || selectNode.type === DesignNodeType.PAGE || selectNode.type === DesignNodeType.PAGE_LOWER) return;
41
+ return selectNode.id;
42
+ });
43
+ const nodes = ref([]);
44
+ const fieldMap = ref({});
45
+ function getFieldCacheKey(modelKey, fieldKey) {
46
+ return `${modelKey}___${fieldKey}`;
47
+ }
48
+ function updateNodes() {
49
+ if (!isLoaded.value) {
50
+ nodes.value = [];
51
+ return;
52
+ }
53
+ nodes.value = c.store.getChildren(parentKey.value) || [];
54
+ }
55
+ watch(() => c.store.count, () => {
56
+ updateNodes();
57
+ });
58
+ /**
59
+ * 根据现有的列表排序,修改 c.store.tree 的顺序
60
+ *
61
+ * @author chitanda
62
+ * @date 2025-06-19 11:06:03
63
+ * @param {FieldMetaDTO[]} fields
64
+ */
65
+ function sortFields(fields) {
66
+ const newItems = c.store.getChildren(parentKey.value) || [];
67
+ newItems.sort((a, b) => {
68
+ return fields.findIndex((field) => field.key === a.data.key) - fields.findIndex((field) => field.key === b.data.key);
69
+ });
70
+ if (parentKey.value) c.store.getTreeItem(parentKey.value)?.children?.sort((a, b) => {
71
+ return newItems.findIndex((item) => item.id === a.id) - newItems.findIndex((item) => item.id === b.id);
72
+ });
73
+ else c.store.tree.sort((a, b) => {
74
+ return newItems.findIndex((item) => item.id === a.id) - newItems.findIndex((item) => item.id === b.id);
75
+ });
76
+ }
77
+ const fieldInstance = useFieldTransfer();
78
+ async function addField() {
79
+ const excludeList = [
80
+ FIELD_TYPE.EXPRESSION_CONDITION,
81
+ FIELD_TYPE.MASTERSLAVE,
82
+ FIELD_TYPE.LABEL_TEMPLATE,
83
+ FIELD_TYPE.SERIALRULE,
84
+ FIELD_TYPE.PRIMARY_KEY,
85
+ FIELD_TYPE.ESOP
86
+ ];
87
+ if (platform.value === Platform.MOBILE) excludeList.push(...[
88
+ FIELD_TYPE.RANGE_USER,
89
+ FIELD_TYPE.MESSAGE_TMPL,
90
+ FIELD_TYPE.EXPRESSION_CONDITION
91
+ ]);
92
+ const modelKey = c.store.pageNode?.data.modelKey;
93
+ fieldInstance.open({
94
+ modelKey,
95
+ modalTitle: t("sys.pageDesigner.modelField"),
96
+ isShowCascader: true,
97
+ draggable: false,
98
+ data: nodes.value.map((item) => fieldMap.value[getFieldCacheKey(item.data.modelKey, item.data.key)]),
99
+ excludeFieldType: excludeList.concat(props.model.excludeFieldType ?? []),
100
+ excludeFieldKey: [
101
+ "tenant_id_",
102
+ "ref_field_key_",
103
+ "ref_model_key_"
104
+ ].concat(props.model.excludeFieldKey ?? []),
105
+ saveCallback: async ({ objFieldList }) => {
106
+ console.log("objFieldList", objFieldList);
107
+ const items = c.store.getChildren(parentKey.value);
108
+ if (objFieldList.length === 0) {
109
+ items.forEach((item) => {
110
+ c.store.deleteNode(item.id);
111
+ });
112
+ return;
113
+ }
114
+ items.filter((item) => !objFieldList.some((field) => field.key === item.data.key)).forEach((item) => {
115
+ c.store.deleteNode(item.id);
116
+ });
117
+ const provider = NodeRegister.get(DesignNodeType.FIELD, c.store.prefix);
118
+ if (!provider) {
119
+ console.error("Field provider not found");
120
+ return;
121
+ }
122
+ for await (const item of objFieldList) if (!items.find((treeItem) => treeItem.data.key === item.key)) {
123
+ const field = await modelLoader.loadField(item.modelKey, item.key);
124
+ if (field) fieldMap.value[getFieldCacheKey(item.modelKey, field.key)] = field;
125
+ let fieldCodeChain = void 0;
126
+ if (item.fieldCodeChain) try {
127
+ fieldCodeChain = JSON.parse(item.fieldCodeChain);
128
+ } catch (error) {
129
+ console.error("Invalid fieldCodeChain JSON:", item.fieldCodeChain, error);
130
+ }
131
+ const data = provider.create({ data: {
132
+ modelKey: item.modelKey,
133
+ modelCategory: item.modelCategory,
134
+ key: item.key,
135
+ type: item.type,
136
+ name: item.name,
137
+ mapping_type: item.mappingType,
138
+ fieldCodeChain
139
+ } });
140
+ c.store.setNode(parentKey.value || null, data, -1);
141
+ }
142
+ sortFields(objFieldList);
143
+ }
144
+ });
145
+ }
146
+ const dndCfg = {
147
+ group: "gct-form-model-field-select",
148
+ end() {
149
+ sortFields(nodes.value.map((item) => fieldMap.value[getFieldCacheKey(item.data.modelKey, item.data.key)]));
150
+ }
151
+ };
152
+ function onDeleteItem(e, item) {
153
+ e.stopPropagation();
154
+ const node = nodes.value.find((n) => n.data.key === item.key);
155
+ if (!node) {
156
+ console.warn("Node not found for item:", item);
157
+ return;
158
+ }
159
+ c.store.deleteNode(node.id);
160
+ }
161
+ async function onInit() {
162
+ const all = [];
163
+ c.store.map.forEach((node) => {
164
+ all.push((async () => {
165
+ const key = node.data.modelKey;
166
+ const field = await modelLoader.loadField(key, node.data.key);
167
+ if (field) fieldMap.value[getFieldCacheKey(key, field.key)] = field;
168
+ })());
169
+ });
170
+ await Promise.all(all);
171
+ isLoaded.value = true;
172
+ updateNodes();
173
+ }
174
+ onInit();
175
+ return () => {
176
+ let _slot;
177
+ return createVNode("div", { "class": ns.b() }, [createVNode("div", { "class": ns.e("select-modal") }, [createVNode(resolveComponent("a-button"), {
178
+ "onClick": addField,
179
+ "type": "dashed",
180
+ "block": true
181
+ }, _isSlot(_slot = t("sys.pageDesigner.selectModelFields")) ? _slot : { default: () => [_slot] })]), createVNode("div", { "class": ns.e("field-content") }, [createVNode("div", { "class": ns.e("field-list") }, [createVNode(resolveComponent("overlayScrollbarsComponent"), {
182
+ "class": ns.e("scrollbar"),
183
+ "options": { overflow: { x: "hidden" } }
184
+ }, { default: () => [createVNode(GctDndContainer, {
185
+ "config": dndCfg,
186
+ "items": nodes.value,
187
+ "onUpdate:items": ($event) => nodes.value = $event
188
+ }, { default: (args) => {
189
+ const data = fieldMap.value[getFieldCacheKey(args.data.data.modelKey, args.data.data.key)];
190
+ if (!data) return createVNode("div", null, null);
191
+ return createVNode("div", { "class": ns.e("field-item") }, [
192
+ createVNode("div", { "class": ns.em("field-item", "bg") }, null),
193
+ createVNode("div", { "class": ns.em("field-item", "drag") }, [createVNode("i", { "class": "iconfont icon-drag" }, null)]),
194
+ createVNode("div", { "class": ns.em("field-item", "label") }, [createVNode("span", { "class": ns.em("field-item", "label-icon") }, [createVNode("i", { "class": ["iconfont", FieldIconMap[data.type]] }, null)]), createVNode("span", {
195
+ "class": ns.em("field-item", "label-text"),
196
+ "title": data.name
197
+ }, [data.name])]),
198
+ createVNode("div", { "class": ns.em("field-item", "actions") }, [createVNode(resolveComponent("a-popconfirm"), {
199
+ "placement": "topRight",
200
+ "ok-text": t("sys.okText"),
201
+ "cancel-text": t("sys.closeText"),
202
+ "onConfirm": (e) => onDeleteItem(e, data)
203
+ }, {
204
+ title: () => {
205
+ return createVNode("div", null, [t("sys.sureToDo")]);
206
+ },
207
+ default: () => {
208
+ return createVNode(CloseOutlined, null, null);
209
+ }
210
+ })])
211
+ ]);
212
+ } })] })])])]);
213
+ };
214
+ }
215
+ });
216
+ //#endregion
217
+ export { ModelFieldSelect as default };
@@ -0,0 +1,4 @@
1
+ declare const _default: {
2
+ install(app: import('vue').App): void;
3
+ };
4
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { DesignEditorType } from "../../constant/design-editor-type.mjs";
2
+ import "../../constant/index.mjs";
3
+ import StyleBorder from "./style-border.mjs";
4
+ import { widthEditorInstall } from "@gct-paas/core-web";
5
+ //#region src/editor/style-border/index.ts
6
+ var Provider = class {
7
+ component = "style-border";
8
+ };
9
+ var style_border_default = widthEditorInstall(DesignEditorType.STYLE_BORDER, () => new Provider(), StyleBorder);
10
+ //#endregion
11
+ export { style_border_default as default };
@@ -0,0 +1,35 @@
1
+ import { PropType } from 'vue';
2
+ import { IStyleBorder } from '../../interface';
3
+ import { IFormItem } from '@gct-paas/core-web';
4
+ import { IBorder } from '@gct-paas/core';
5
+ /**
6
+ * 边框编辑器
7
+ */
8
+ export declare const StyleBorder: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
9
+ itemModel: {
10
+ type: PropType<IFormItem>;
11
+ required: true;
12
+ };
13
+ model: {
14
+ type: PropType<IStyleBorder>;
15
+ required: true;
16
+ };
17
+ value: {
18
+ type: PropType<IBorder>;
19
+ };
20
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "update:value"[], "update:value", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
21
+ itemModel: {
22
+ type: PropType<IFormItem>;
23
+ required: true;
24
+ };
25
+ model: {
26
+ type: PropType<IStyleBorder>;
27
+ required: true;
28
+ };
29
+ value: {
30
+ type: PropType<IBorder>;
31
+ };
32
+ }>> & Readonly<{
33
+ "onUpdate:value"?: ((...args: any[]) => any) | undefined;
34
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
35
+ export default StyleBorder;
@@ -0,0 +1,38 @@
1
+ import { useNamespace } from "@gct-paas/core";
2
+ import { createVNode, defineComponent, mergeProps, resolveComponent } from "vue";
3
+ import { useGctFormValue } from "@gct-paas/core-web";
4
+ //#region src/editor/style-border/style-border.tsx
5
+ /**
6
+ * 边框编辑器
7
+ */
8
+ var StyleBorder = /* @__PURE__ */ defineComponent({
9
+ name: "StyleBorder",
10
+ inheritAttrs: false,
11
+ props: {
12
+ itemModel: {
13
+ type: Object,
14
+ required: true
15
+ },
16
+ model: {
17
+ type: Object,
18
+ required: true
19
+ },
20
+ value: { type: Object }
21
+ },
22
+ emits: ["update:value"],
23
+ setup(props) {
24
+ const ns = useNamespace("style-border");
25
+ const val = useGctFormValue();
26
+ return () => {
27
+ return createVNode(resolveComponent("border-editor"), mergeProps({
28
+ "value": val.value,
29
+ "onUpdate:value": ($event) => val.value = $event
30
+ }, props.model.props || {}, {
31
+ "showArea": props.model.showArea,
32
+ "class": [ns.b(), ns.is("readonly", props.model.readonly)]
33
+ }), null);
34
+ };
35
+ }
36
+ });
37
+ //#endregion
38
+ export { StyleBorder as default };
@@ -0,0 +1,4 @@
1
+ declare const _default: {
2
+ install(app: import('vue').App): void;
3
+ };
4
+ export default _default;
@@ -0,0 +1,11 @@
1
+ import { DesignEditorType } from "../../constant/design-editor-type.mjs";
2
+ import "../../constant/index.mjs";
3
+ import StyleFont from "./style-font.mjs";
4
+ import { widthEditorInstall } from "@gct-paas/core-web";
5
+ //#region src/editor/style-font/index.ts
6
+ var StyleFontProvider = class {
7
+ component = "style-font";
8
+ };
9
+ var style_font_default = widthEditorInstall(DesignEditorType.STYLE_FONT, () => new StyleFontProvider(), StyleFont);
10
+ //#endregion
11
+ export { style_font_default as default };
@@ -0,0 +1,86 @@
1
+ @charset "UTF-8";
2
+ /* stylelint-disable scss/no-global-function-names */
3
+ /* bem('block', 'element', 'modifier') => 'ibiz-block__element--modifier' */
4
+ /**
5
+ * 定义 Block 块
6
+ * @param {String} $block - Block 块名称
7
+ * @example
8
+ * @include b('button') {
9
+ * padding: 10px;
10
+ * }
11
+ */
12
+ /**
13
+ * 定义 Element 元素
14
+ * @param {String|List} $element - Element 元素名称,支持单个或多个
15
+ * @example
16
+ * @include b('button') {
17
+ * @include e('text') {
18
+ * color: #000;
19
+ * }
20
+ * }
21
+ * // 或传入多个元素
22
+ * @include b('button') {
23
+ * @include e(('text', 'icon')) {
24
+ * margin: 5px;
25
+ * }
26
+ * }
27
+ */
28
+ /**
29
+ * 定义 Modifier 修饰符
30
+ * @param {String|List} $modifier - Modifier 修饰符名称,支持单个或多个
31
+ * @example
32
+ * @include b('button') {
33
+ * @include m('primary') {
34
+ * background: blue;
35
+ * }
36
+ * }
37
+ * // 或传入多个修饰符
38
+ * @include b('button') {
39
+ * @include m(('primary', 'large')) {
40
+ * background: blue;
41
+ * font-size: 16px;
42
+ * }
43
+ * }
44
+ */
45
+ /**
46
+ * 定义状态选择器
47
+ * @param {String} $state - 状态名称
48
+ * @example
49
+ * @include b('button') {
50
+ * @include when('disabled') {
51
+ * opacity: 0.5;
52
+ * }
53
+ * }
54
+ */
55
+ /**
56
+ * 深色主题样式
57
+ * @param {String} $block - Block 块名称
58
+ * @example
59
+ * @include dark('button') {
60
+ * background: #333;
61
+ * color: #fff;
62
+ * }
63
+ */
64
+ /* stylelint-disable scss/no-global-function-names */
65
+ .gct-style-font .component {
66
+ padding: 2px;
67
+ border: 1px solid var(--gct-color-border);
68
+ border-radius: 4px;
69
+ }
70
+ .gct-style-font .box .color-picker-icon {
71
+ width: 20px;
72
+ height: 20px;
73
+ }
74
+ .gct-style-font .align-group-box,
75
+ .gct-style-font .font-style-box {
76
+ height: 28px;
77
+ }
78
+ .gct-style-font .align-group-box .iconfont:hover, .gct-style-font .align-group-box .anticon:hover,
79
+ .gct-style-font .font-style-box .iconfont:hover,
80
+ .gct-style-font .font-style-box .anticon:hover {
81
+ background-color: transparent;
82
+ }
83
+ .gct-style-font .align-group-box .icon-box:hover,
84
+ .gct-style-font .font-style-box .icon-box:hover {
85
+ background-color: #e6e9ef;
86
+ }
@@ -0,0 +1,35 @@
1
+ import { PropType } from 'vue';
2
+ import { IFormItem } from '@gct-paas/core-web';
3
+ import { IFont } from '@gct-paas/core';
4
+ import { IStyleFont } from '../../interface';
5
+ /**
6
+ * 文本样式编辑器
7
+ */
8
+ export declare const StyleFont: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
9
+ itemModel: {
10
+ type: PropType<IFormItem>;
11
+ required: true;
12
+ };
13
+ model: {
14
+ type: PropType<IStyleFont>;
15
+ required: true;
16
+ };
17
+ value: {
18
+ type: PropType<IFont>;
19
+ };
20
+ }>, () => import("vue/jsx-runtime").JSX.Element, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "update:value"[], "update:value", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
21
+ itemModel: {
22
+ type: PropType<IFormItem>;
23
+ required: true;
24
+ };
25
+ model: {
26
+ type: PropType<IStyleFont>;
27
+ required: true;
28
+ };
29
+ value: {
30
+ type: PropType<IFont>;
31
+ };
32
+ }>> & Readonly<{
33
+ "onUpdate:value"?: ((...args: any[]) => any) | undefined;
34
+ }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
35
+ export default StyleFont;