eoss 0.1.0-alpha.39 → 0.1.0-alpha.40

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 (233) hide show
  1. package/lib/0.js +1 -1
  2. package/lib/1.js +1 -1
  3. package/lib/10.js +1 -1
  4. package/lib/11.js +1 -1
  5. package/lib/12.js +1 -1
  6. package/lib/13.js +1 -1
  7. package/lib/14.js +1 -1
  8. package/lib/15.js +1 -1
  9. package/lib/16.js +1 -1
  10. package/lib/17.js +1 -1
  11. package/lib/18.js +1 -1
  12. package/lib/19.js +1 -1
  13. package/lib/20.js +1 -1
  14. package/lib/21.js +1 -1
  15. package/lib/22.js +1 -1
  16. package/lib/23.js +1 -1
  17. package/lib/24.js +1 -1
  18. package/lib/25.js +1 -1
  19. package/lib/26.js +1 -1
  20. package/lib/27.js +1 -1
  21. package/lib/28.js +1 -1
  22. package/lib/29.js +1 -1
  23. package/lib/3.js +1 -1
  24. package/lib/30.js +1 -1
  25. package/lib/31.js +1 -1
  26. package/lib/32.js +1 -1
  27. package/lib/33.js +1 -1
  28. package/lib/34.js +1 -1
  29. package/lib/35.js +1 -1
  30. package/lib/36.js +1 -1
  31. package/lib/37.js +1 -1
  32. package/lib/38.js +1 -1
  33. package/lib/39.js +1 -1
  34. package/lib/4.js +1 -1
  35. package/lib/40.js +1 -1
  36. package/lib/41.js +1 -1
  37. package/lib/42.js +1 -1
  38. package/lib/43.js +1 -1
  39. package/lib/44.js +1 -1
  40. package/lib/45.js +1 -1
  41. package/lib/46.js +1 -1
  42. package/lib/47.js +1 -1
  43. package/lib/48.js +1 -1
  44. package/lib/49.js +1 -1
  45. package/lib/5.js +1 -1
  46. package/lib/50.js +1 -1
  47. package/lib/51.js +1 -1
  48. package/lib/52.js +1 -1
  49. package/lib/53.js +1 -1
  50. package/lib/54.js +1 -1
  51. package/lib/55.js +1 -1
  52. package/lib/56.js +1 -1
  53. package/lib/57.js +1 -1
  54. package/lib/58.js +1 -1
  55. package/lib/59.js +1 -1
  56. package/lib/6.js +1 -1
  57. package/lib/60.js +1 -1
  58. package/lib/61.js +1 -1
  59. package/lib/62.js +1 -1
  60. package/lib/63.js +1 -1
  61. package/lib/64.js +1 -1
  62. package/lib/65.js +1 -1
  63. package/lib/66.js +1 -1
  64. package/lib/67.js +1 -1
  65. package/lib/68.js +1 -1
  66. package/lib/69.js +1 -1
  67. package/lib/7.js +1 -1
  68. package/lib/70.js +1 -1
  69. package/lib/71.js +1 -1
  70. package/lib/72.js +1 -1
  71. package/lib/73.js +1 -1
  72. package/lib/74.js +1 -1
  73. package/lib/75.js +1 -1
  74. package/lib/76.js +1 -1
  75. package/lib/77.js +1 -1
  76. package/lib/78.js +1 -1
  77. package/lib/79.js +1 -1
  78. package/lib/8.js +1 -1
  79. package/lib/80.js +1 -1
  80. package/lib/81.js +1 -1
  81. package/lib/9.js +1 -1
  82. package/lib/account-login.js +837 -862
  83. package/lib/alert.js +2 -2
  84. package/lib/aside.js +2 -2
  85. package/lib/audit-trajectory.js +4 -4
  86. package/lib/autocomplete.js +1813 -1988
  87. package/lib/avatar.js +2 -2
  88. package/lib/backtop.js +2 -2
  89. package/lib/badge.js +2 -2
  90. package/lib/breadcrumb-item.js +4 -4
  91. package/lib/breadcrumb.js +4 -4
  92. package/lib/button-group.js +4 -4
  93. package/lib/button.js +2 -2
  94. package/lib/ca-login.js +837 -862
  95. package/lib/calendar.js +839 -864
  96. package/lib/card.js +2 -2
  97. package/lib/carousel-item.js +846 -871
  98. package/lib/carousel.js +839 -864
  99. package/lib/cascader-panel.js +852 -877
  100. package/lib/cascader.js +2048 -2223
  101. package/lib/checkbox-button.js +4 -4
  102. package/lib/checkbox-group.js +859 -884
  103. package/lib/checkbox.js +4 -4
  104. package/lib/col.js +2 -2
  105. package/lib/collapse-item.js +1040 -1065
  106. package/lib/collapse.js +1040 -1065
  107. package/lib/color-picker.js +972 -1122
  108. package/lib/container.js +2 -2
  109. package/lib/cron.js +12 -12
  110. package/lib/data-table.js +843 -868
  111. package/lib/date-picker.js +10520 -10695
  112. package/lib/descriptions-item.js +4 -4
  113. package/lib/descriptions.js +4 -4
  114. package/lib/dialog.js +837 -862
  115. package/lib/divider.js +2 -2
  116. package/lib/drawer.js +2 -2
  117. package/lib/dropdown-item.js +4 -4
  118. package/lib/dropdown-menu.js +974 -1124
  119. package/lib/dropdown.js +841 -866
  120. package/lib/email-login.js +837 -862
  121. package/lib/empty.js +2 -2
  122. package/lib/eoss.common.js +4023 -2668
  123. package/lib/flip.js +2 -2
  124. package/lib/flow-group.js +853 -878
  125. package/lib/flow.js +868 -893
  126. package/lib/flows.js +854 -879
  127. package/lib/footer.js +2 -2
  128. package/lib/form-item.js +860 -885
  129. package/lib/form.js +933 -950
  130. package/lib/guide.js +2 -2
  131. package/lib/header.js +2 -2
  132. package/lib/icon.js +837 -862
  133. package/lib/icons.js +2 -2
  134. package/lib/image-viewer.js +837 -862
  135. package/lib/image.js +4 -4
  136. package/lib/index.js +1 -1
  137. package/lib/infinite-scroll.js +2 -2
  138. package/lib/input-number.js +6 -6
  139. package/lib/input.js +839 -864
  140. package/lib/link.js +2 -2
  141. package/lib/loading.js +2 -2
  142. package/lib/login.js +867 -891
  143. package/lib/lowcode-view.js +1843 -1185
  144. package/lib/lowcode.js +3050 -1569
  145. package/lib/main.js +970 -988
  146. package/lib/marquee.js +837 -862
  147. package/lib/menu-item-group.js +15 -15
  148. package/lib/menu-item.js +6 -6
  149. package/lib/menu.js +2227 -2368
  150. package/lib/message-box.js +843 -868
  151. package/lib/message.js +839 -864
  152. package/lib/notification.js +861 -886
  153. package/lib/option-group.js +4 -4
  154. package/lib/option.js +839 -864
  155. package/lib/page-header.js +2 -2
  156. package/lib/pagination.js +839 -864
  157. package/lib/phone-login.js +847 -866
  158. package/lib/popconfirm.js +4 -4
  159. package/lib/popover.js +1831 -2006
  160. package/lib/process-config.js +839 -864
  161. package/lib/process-module.js +846 -871
  162. package/lib/process-rule.js +905 -930
  163. package/lib/progress.js +2 -2
  164. package/lib/qr-code.js +4 -4
  165. package/lib/qrcode-login.js +839 -864
  166. package/lib/radio-button.js +4 -4
  167. package/lib/radio-group.js +850 -875
  168. package/lib/radio.js +4 -4
  169. package/lib/rate.js +837 -862
  170. package/lib/retrial-auth.js +837 -862
  171. package/lib/row.js +2 -2
  172. package/lib/scrollbar.js +839 -864
  173. package/lib/select.js +2139 -2314
  174. package/lib/selector-panel.js +940 -965
  175. package/lib/selector.js +852 -877
  176. package/lib/slider.js +4 -4
  177. package/lib/step.js +32 -32
  178. package/lib/steps.js +874 -899
  179. package/lib/submenu.js +1269 -1385
  180. package/lib/switch.js +839 -864
  181. package/lib/tab-pane.js +4 -4
  182. package/lib/table-column.js +840 -865
  183. package/lib/table.js +1825 -2000
  184. package/lib/tabs.js +846 -871
  185. package/lib/tag.js +2 -2
  186. package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
  187. package/lib/theme-chalk/fonts/iconfont.woff +0 -0
  188. package/lib/theme-chalk/index.css +1 -1
  189. package/lib/theme-chalk/lowcode.css +1 -1
  190. package/lib/time-picker.js +6471 -6646
  191. package/lib/time-select.js +5039 -5214
  192. package/lib/timeline-item.js +2 -2
  193. package/lib/timeline.js +2 -2
  194. package/lib/tips.js +837 -862
  195. package/lib/toolbar.js +4 -4
  196. package/lib/tooltip.js +1813 -1988
  197. package/lib/transfer.js +837 -862
  198. package/lib/tree-group.js +853 -878
  199. package/lib/tree.js +1026 -1051
  200. package/lib/update-history.js +4 -4
  201. package/lib/upload.js +859 -884
  202. package/lib/wujie.js +841 -866
  203. package/package.json +1 -1
  204. package/packages/flow-group/src/main.vue +2 -2
  205. package/packages/form/src/form-item-render.vue +1 -0
  206. package/packages/form/src/form-item.vue +12 -6
  207. package/packages/form/src/form.vue +5 -5
  208. package/packages/login/src/login.vue +1 -0
  209. package/packages/lowcode/src/attribute/function.vue +28 -9
  210. package/packages/lowcode/src/attribute/props.vue +202 -0
  211. package/packages/lowcode/src/attribute/styles.vue +79 -5
  212. package/packages/lowcode/src/attribute.vue +61 -4
  213. package/packages/lowcode/src/canvas.vue +159 -2
  214. package/packages/lowcode/src/form-render.vue +305 -0
  215. package/packages/lowcode/src/lowcode.vue +33 -13
  216. package/packages/lowcode/src/modules.vue +53 -37
  217. package/packages/lowcode/src/render.vue +80 -25
  218. package/packages/lowcode/src/util/components.js +100 -0
  219. package/packages/lowcode/src/util/props-util.js +67 -0
  220. package/packages/lowcode/src/util/source-generator.js +69 -9
  221. package/packages/lowcode/src/util/source-parser.js +64 -10
  222. package/packages/lowcode-view/src/render.vue +48 -18
  223. package/packages/main/src/components/userinfo.vue +0 -1
  224. package/packages/menu/src/menu-item-group.vue +1 -1
  225. package/packages/menu/src/mixins.js +8 -4
  226. package/packages/menu/src/submenu.vue +35 -5
  227. package/packages/phone-login/src/phone-login.vue +5 -2
  228. package/packages/theme-chalk/dist/fonts/iconfont.ttf +0 -0
  229. package/packages/theme-chalk/dist/fonts/iconfont.woff +0 -0
  230. package/packages/theme-chalk/src/fonts/iconfont.ttf +0 -0
  231. package/packages/theme-chalk/src/fonts/iconfont.woff +0 -0
  232. package/packages/theme-chalk/src/lowcode.scss +21 -2
  233. package/src/index.js +336 -336
@@ -6,22 +6,39 @@
6
6
  lazy
7
7
  v-for="(items, index) in contents"
8
8
  :key="items.name"
9
+ v-show="items.children && items.children.length"
9
10
  >
10
- <es-collapse
11
- v-model="actives"
12
- v-show="items.children.length"
13
- v-if="items.collapse"
14
- >
15
- <es-collapse-item
16
- :title="item.label"
17
- class="es-lowcode__modules--content"
18
- v-for="item in items.children"
19
- :name="item.name"
20
- :key="item.name"
11
+ <es-scrollbar>
12
+ <es-collapse
13
+ v-model="actives"
14
+ v-show="items.children.length"
15
+ v-if="items.collapse"
21
16
  >
17
+ <es-collapse-item
18
+ :title="item.label"
19
+ class="es-lowcode__modules--content"
20
+ v-for="item in items.children"
21
+ :name="item.label"
22
+ :key="item.label"
23
+ >
24
+ <div
25
+ class="es-lowcode__modules--item"
26
+ v-for="ele in item.children"
27
+ :key="ele.name"
28
+ draggable="true"
29
+ @dragstart="handleDragStart($event, ele)"
30
+ >
31
+ <span class="es-lowcode__modules--item-dom">{{ ele.name }}</span>
32
+ <span class="es-lowcode__modules--item-desc">{{
33
+ ele.description
34
+ }}</span>
35
+ </div>
36
+ </es-collapse-item>
37
+ </es-collapse>
38
+ <div v-else class="es-lowcode__modules--contents">
22
39
  <div
23
40
  class="es-lowcode__modules--item"
24
- v-for="ele in item.children"
41
+ v-for="ele in items.children"
25
42
  :key="ele.name"
26
43
  draggable="true"
27
44
  @dragstart="handleDragStart($event, ele)"
@@ -31,22 +48,8 @@
31
48
  ele.description
32
49
  }}</span>
33
50
  </div>
34
- </es-collapse-item>
35
- </es-collapse>
36
- <div v-else class="es-lowcode__modules--contents">
37
- <div
38
- class="es-lowcode__modules--item"
39
- v-for="ele in items.children"
40
- :key="ele.name"
41
- draggable="true"
42
- @dragstart="handleDragStart($event, ele)"
43
- >
44
- <span class="es-lowcode__modules--item-dom">{{ ele.name }}</span>
45
- <span class="es-lowcode__modules--item-desc">{{
46
- ele.description
47
- }}</span>
48
51
  </div>
49
- </div>
52
+ </es-scrollbar>
50
53
  </es-tab-pane>
51
54
  </es-tabs>
52
55
  </template>
@@ -68,21 +71,34 @@ export default {
68
71
  },
69
72
  data() {
70
73
  return {
71
- active: '0'
74
+ active: '0',
75
+ // 折叠面板展开项(v-model 可写)
76
+ actives: []
72
77
  };
73
78
  },
74
- computed: {
75
- actives() {
76
- const content = this.contents[Number(this.active)];
77
- return (
78
- (content &&
79
- content.children &&
80
- content.children.map((item) => item.name)) ||
81
- []
82
- );
79
+ watch: {
80
+ active: {
81
+ immediate: true,
82
+ handler() {
83
+ this.resetActives();
84
+ }
85
+ },
86
+ contents() {
87
+ this.resetActives();
83
88
  }
84
89
  },
85
90
  methods: {
91
+ /**
92
+ * 重置折叠面板展开项为当前标签下全部分组
93
+ */
94
+ resetActives() {
95
+ const content = this.contents[Number(this.active)];
96
+ this.actives =
97
+ (content &&
98
+ content.children &&
99
+ content.children.map((item) => item.label)) ||
100
+ [];
101
+ },
86
102
  /**
87
103
  * 处理拖动开始事件
88
104
  * @param event 拖动事件对象
@@ -30,23 +30,28 @@
30
30
  : true
31
31
  "
32
32
  >
33
- <template v-if="newNode.children && newNode.children.length > 0">
34
- <Render
35
- class="is-child"
36
- v-for="(child, index) in newNode.children"
37
- :class="{ 'is-active': active === child.id }"
38
- :key="child.id"
39
- :node="child"
40
- :page="page"
41
- :active="active"
42
- :drag="false"
43
- @click="(node, event) => $emit('click', node, event)"
44
- @drop="(e) => $emit('drop', e)"
45
- @remove="(node) => $emit('remove', node)"
46
- @selectAncestor="(id) => $emit('selectAncestor', id)"
47
- />
48
- </template>
49
- <template v-else>{{ resolvedText || newNode.description }}</template>
33
+ <!-- 不用 v-if 包裹:children 为空时 v-if 会产出空注释节点,
34
+ 导致 EsForm 等组件误判默认插槽有内容而不渲染 slot fallback -->
35
+ <!-- 子节点统一递归渲染;表单控件子节点(带 formItem 标记)由
36
+ form-render 渲染,es-form-item 包裹层渲染时生成、JSON 不存 -->
37
+ <component
38
+ :is="childRender(child)"
39
+ class="is-child"
40
+ v-for="child in newNode.children"
41
+ :class="{ 'is-active': active === child.id }"
42
+ :key="child.id"
43
+ :node="child"
44
+ :page="page"
45
+ :active="active"
46
+ :drag="false"
47
+ @click="(node, event) => $emit('click', node, event)"
48
+ @drop="(e) => $emit('drop', e)"
49
+ @remove="(node) => $emit('remove', node)"
50
+ @selectAncestor="(id) => $emit('selectAncestor', id)"
51
+ />
52
+ <!-- 插槽文本同样不能用 v-if/v-else:假分支的空注释节点会被误判为插槽内容,
53
+ 改用 v-for 空数组,无文本时不产出任何插槽节点 -->
54
+ <template v-for="t in slotTexts">{{ t }}</template>
50
55
  </component>
51
56
  <template v-if="newNode.id === active">
52
57
  <div class="es-lowcode__handles">
@@ -67,6 +72,7 @@
67
72
  </es-dropdown-menu>
68
73
  </es-dropdown>
69
74
  <es-button
75
+ v-if="isRemove()"
70
76
  type="text"
71
77
  size="mini"
72
78
  icon="es-icon-shanchu"
@@ -121,11 +127,14 @@
121
127
 
122
128
  <script>
123
129
  import Frame from './iframe.vue';
130
+ import { propsToObject } from './util/props-util.js';
131
+ import FormRender from './form-render.vue';
124
132
 
125
133
  import EsButton from 'eoss/packages/button';
126
134
  import EsDropdown from 'eoss/packages/dropdown';
127
135
  import EsDropdownItem from 'eoss/packages/dropdown-item';
128
136
  import EsDropdownMenu from 'eoss/packages/dropdown-menu';
137
+
129
138
  // 容器布局样式(需应用到内层 component,而非外层包裹 div)
130
139
  const LAYOUT_PROPS = [
131
140
  'display',
@@ -139,7 +148,20 @@ const LAYOUT_PROPS = [
139
148
  ];
140
149
  export default {
141
150
  name: 'Render',
142
- components: { Frame, EsButton, EsDropdown, EsDropdownItem, EsDropdownMenu },
151
+ // lowcode.vue provide 了自身实例,notRemoves(禁止删除名单)等编辑器级配置从其读取
152
+ inject: {
153
+ lowcode: {
154
+ default: null
155
+ }
156
+ },
157
+ components: {
158
+ Frame,
159
+ FormRender,
160
+ EsButton,
161
+ EsDropdown,
162
+ EsDropdownItem,
163
+ EsDropdownMenu
164
+ },
143
165
  props: {
144
166
  node: {
145
167
  type: Object,
@@ -254,6 +276,28 @@ export default {
254
276
  }
255
277
  return textExpr;
256
278
  },
279
+ /**
280
+ * 插槽文本:仅当无 children 时产出,
281
+ * 保证 EsForm 等组件在无字段时默认插槽为空、fallback 生效
282
+ */
283
+ slotTexts() {
284
+ const node = this.newNode;
285
+ if (!node) {
286
+ return [];
287
+ }
288
+ const hasChildren =
289
+ Array.isArray(node.children) && node.children.length > 0;
290
+ if (hasChildren) {
291
+ return [];
292
+ }
293
+ return [this.resolvedText || node.description || ''];
294
+ },
295
+ /**
296
+ * 页面 data 变量:供 props 中 {{var}} 引用解析
297
+ */
298
+ pageData() {
299
+ return (this.page && this.page.data) || {};
300
+ },
257
301
  /**
258
302
  * 过滤掉 Vue 指令(v-xxx)的 props,避免它们作为普通属性传递给组件
259
303
  * 指令统一存在 directives 字段,这里仅兼容历史数据中混入 props 的 v- 键
@@ -265,13 +309,8 @@ export default {
265
309
  if (this.newNode.attrs) {
266
310
  Object.assign(result, this.newNode.attrs);
267
311
  }
268
- // 合并组件 props(跳过 Vue 指令)
269
- if (this.newNode.props) {
270
- Object.keys(this.newNode.props).forEach((key) => {
271
- if (key.startsWith('v-')) return;
272
- result[key] = this.newNode.props[key];
273
- });
274
- }
312
+ // 合并组件 props:定义数组经 propsToObject 转取值对象(含 {{var}} 解析)
313
+ Object.assign(result, propsToObject(this.newNode.props, this.pageData));
275
314
  return result;
276
315
  },
277
316
  /**
@@ -410,6 +449,22 @@ export default {
410
449
  mounted() {},
411
450
  beforeDestroy() {},
412
451
  methods: {
452
+ /**
453
+ * 子节点渲染器:表单控件子节点(canvas 拖入/源码解析时写入 formItem 标记)
454
+ * 由 form-render 渲染(es-form-item 包裹层渲染时生成),其余走通用 Render
455
+ */
456
+ childRender(child) {
457
+ return child && child.formItem ? 'FormRender' : 'Render';
458
+ },
459
+ /**
460
+ * 是否展示删除按钮:节点 canRemove 未显式禁止,
461
+ * 且 id 不在 lowcode 的 notRemoves(禁止删除名单)中
462
+ */
463
+ isRemove() {
464
+ if (this.newNode.canRemove === false) return false;
465
+ const notRemoves = (this.lowcode && this.lowcode.notRemoves) || [];
466
+ return !notRemoves.includes(this.newNode.id);
467
+ },
413
468
  /**
414
469
  * 处理组件大小调整开始事件
415
470
  * @param event 指针事件对象