@bdsoft/element 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/README.md +90 -0
  2. package/global/index.ts +6 -0
  3. package/global/register-properties.ts +10 -0
  4. package/index.html +13 -0
  5. package/index.js +84 -0
  6. package/package-form/core/components/formCreate.js +274 -0
  7. package/package-form/core/components/fragment.js +12 -0
  8. package/package-form/core/factory/context.js +257 -0
  9. package/package-form/core/factory/creator.js +63 -0
  10. package/package-form/core/factory/maker.js +17 -0
  11. package/package-form/core/factory/manager.js +79 -0
  12. package/package-form/core/factory/node.js +85 -0
  13. package/package-form/core/factory/parser.js +28 -0
  14. package/package-form/core/frame/api.js +599 -0
  15. package/package-form/core/frame/attrs.js +12 -0
  16. package/package-form/core/frame/dataDriver.js +76 -0
  17. package/package-form/core/frame/fetch.js +119 -0
  18. package/package-form/core/frame/formCreate.js +274 -0
  19. package/package-form/core/frame/index.js +760 -0
  20. package/package-form/core/frame/provider.js +288 -0
  21. package/package-form/core/frame/util.js +274 -0
  22. package/package-form/core/handler/context.js +380 -0
  23. package/package-form/core/handler/effect.js +122 -0
  24. package/package-form/core/handler/index.js +111 -0
  25. package/package-form/core/handler/inject.js +145 -0
  26. package/package-form/core/handler/input.js +197 -0
  27. package/package-form/core/handler/lifecycle.js +43 -0
  28. package/package-form/core/handler/loader.js +373 -0
  29. package/package-form/core/handler/page.js +46 -0
  30. package/package-form/core/handler/render.js +29 -0
  31. package/package-form/core/index.js +12 -0
  32. package/package-form/core/package.json +15 -0
  33. package/package-form/core/parser/html.js +17 -0
  34. package/package-form/core/render/cache.js +47 -0
  35. package/package-form/core/render/index.js +31 -0
  36. package/package-form/core/render/render.js +393 -0
  37. package/package-form/element-form/components/checkbox/package.json +17 -0
  38. package/package-form/element-form/components/checkbox/src/component.jsx +110 -0
  39. package/package-form/element-form/components/checkbox/src/index.js +3 -0
  40. package/package-form/element-form/components/frame/package.json +17 -0
  41. package/package-form/element-form/components/frame/src/IconCircleClose.vue +14 -0
  42. package/package-form/element-form/components/frame/src/IconDelete.vue +12 -0
  43. package/package-form/element-form/components/frame/src/IconDocument.vue +12 -0
  44. package/package-form/element-form/components/frame/src/IconFolderOpened.vue +12 -0
  45. package/package-form/element-form/components/frame/src/IconView.vue +12 -0
  46. package/package-form/element-form/components/frame/src/component.jsx +349 -0
  47. package/package-form/element-form/components/frame/src/index.js +3 -0
  48. package/package-form/element-form/components/frame/src/style.css +66 -0
  49. package/package-form/element-form/components/group/package.json +17 -0
  50. package/package-form/element-form/components/group/src/component.jsx +314 -0
  51. package/package-form/element-form/components/group/src/index.js +3 -0
  52. package/package-form/element-form/components/group/src/style.css +125 -0
  53. package/package-form/element-form/components/index.js +22 -0
  54. package/package-form/element-form/components/radio/package.json +17 -0
  55. package/package-form/element-form/components/radio/src/component.jsx +101 -0
  56. package/package-form/element-form/components/radio/src/index.js +3 -0
  57. package/package-form/element-form/components/select/package.json +17 -0
  58. package/package-form/element-form/components/select/src/component.jsx +52 -0
  59. package/package-form/element-form/components/select/src/index.js +3 -0
  60. package/package-form/element-form/components/subform/package.json +14 -0
  61. package/package-form/element-form/components/subform/src/component.jsx +76 -0
  62. package/package-form/element-form/components/subform/src/index.js +3 -0
  63. package/package-form/element-form/components/tree/package.json +17 -0
  64. package/package-form/element-form/components/tree/src/component.jsx +62 -0
  65. package/package-form/element-form/components/tree/src/index.js +3 -0
  66. package/package-form/element-form/components/upload/package.json +17 -0
  67. package/package-form/element-form/components/upload/src/IconUpload.vue +12 -0
  68. package/package-form/element-form/components/upload/src/component.jsx +129 -0
  69. package/package-form/element-form/components/upload/src/index.js +3 -0
  70. package/package-form/element-form/components/upload/src/style.css +11 -0
  71. package/package-form/element-form/index.js +8 -0
  72. package/package-form/element-form/package.json +16 -0
  73. package/package-form/element-form/src/components/icon/IconWarning.vue +12 -0
  74. package/package-form/element-form/src/components/index.js +22 -0
  75. package/package-form/element-form/src/core/alias.js +34 -0
  76. package/package-form/element-form/src/core/api.js +208 -0
  77. package/package-form/element-form/src/core/config.js +62 -0
  78. package/package-form/element-form/src/core/index.js +60 -0
  79. package/package-form/element-form/src/core/maker.js +76 -0
  80. package/package-form/element-form/src/core/manager.js +315 -0
  81. package/package-form/element-form/src/core/provider.js +79 -0
  82. package/package-form/element-form/src/parsers/datePicker.js +31 -0
  83. package/package-form/element-form/src/parsers/hidden.js +12 -0
  84. package/package-form/element-form/src/parsers/index.js +17 -0
  85. package/package-form/element-form/src/parsers/input.js +21 -0
  86. package/package-form/element-form/src/parsers/row.js +10 -0
  87. package/package-form/element-form/src/parsers/select.js +15 -0
  88. package/package-form/element-form/src/parsers/slider.js +21 -0
  89. package/package-form/element-form/src/parsers/timePicker.js +17 -0
  90. package/package-form/element-form/src/style/index.css +52 -0
  91. package/package.json +17 -0
  92. package/src/App.vue +28 -0
  93. package/src/assets/css/element.scss +179 -0
  94. package/src/assets/css/layout.scss +215 -0
  95. package/src/assets/css/tailwind.scss +67 -0
  96. package/src/assets/images/banner.gif +0 -0
  97. package/src/assets/images/banner.png +0 -0
  98. package/src/assets/images/bg1.svg +22 -0
  99. package/src/assets/images/bg2.png +0 -0
  100. package/src/assets/images/ff.png +0 -0
  101. package/src/assets/images/home-file1.png +0 -0
  102. package/src/assets/images/ky.png +0 -0
  103. package/src/assets/images/menu/add.png +0 -0
  104. package/src/assets/images/menu/del.png +0 -0
  105. package/src/assets/images/menu/down.png +0 -0
  106. package/src/assets/images/menu/dr.png +0 -0
  107. package/src/assets/images/menu/edit.png +0 -0
  108. package/src/assets/images/menu/kx.png +0 -0
  109. package/src/assets/images/menu/mb.png +0 -0
  110. package/src/assets/images/menu/pz.png +0 -0
  111. package/src/assets/images/menu/save.png +0 -0
  112. package/src/assets/images/menu/sj.png +0 -0
  113. package/src/assets/images/menu/sjk.png +0 -0
  114. package/src/assets/images/menu/up.png +0 -0
  115. package/src/assets/images/po-i.png +0 -0
  116. package/src/assets/images/po1-i1.png +0 -0
  117. package/src/assets/images/po1-i2.png +0 -0
  118. package/src/assets/images/po1-i3.png +0 -0
  119. package/src/assets/images/po1-i4.png +0 -0
  120. package/src/assets/images/po1-i5.png +0 -0
  121. package/src/assets/images/po1-i6.png +0 -0
  122. package/src/assets/images/po1-i7.png +0 -0
  123. package/src/assets/images/po1-i8.png +0 -0
  124. package/src/assets/images/po2-i1.png +0 -0
  125. package/src/assets/images/po2-i2.png +0 -0
  126. package/src/assets/images/po3-i1.png +0 -0
  127. package/src/assets/images/po4-i1.png +0 -0
  128. package/src/assets/images/po5-i1.png +0 -0
  129. package/src/assets/images/po6-i1.png +0 -0
  130. package/src/assets/images/po6-i2.png +0 -0
  131. package/src/assets/images/po7-i1.png +0 -0
  132. package/src/assets/images/tj1.png +0 -0
  133. package/src/assets/images/tj2.png +0 -0
  134. package/src/assets/images/tj3.png +0 -0
  135. package/src/components/3dcloudwords/index.js +346 -0
  136. package/src/components/3dcloudwords/index.vue +99 -0
  137. package/src/components/3dcloudwords/readme.md +66 -0
  138. package/src/components/badge/index.js +167 -0
  139. package/src/components/badge/index.scss +166 -0
  140. package/src/components/badge/index.vue +98 -0
  141. package/src/components/badge/readme.md +18 -0
  142. package/src/components/basic/Finish.vue +107 -0
  143. package/src/components/basic/button.vue +19 -0
  144. package/src/components/basic/readme.md +7 -0
  145. package/src/components/button/index.vue +48 -0
  146. package/src/components/button/readme.md +62 -0
  147. package/src/components/carousel/index.vue +104 -0
  148. package/src/components/carousel/readme.md +12 -0
  149. package/src/components/chartconfig/index.vue +141 -0
  150. package/src/components/chartconfig/readme.md +25 -0
  151. package/src/components/contextMenu/hookContxtMenu.js +41 -0
  152. package/src/components/contextMenu/index.vue +245 -0
  153. package/src/components/contextMenu/readme.md +55 -0
  154. package/src/components/contextMenu/useElementBounding.js +40 -0
  155. package/src/components/countup/countUp.js +196 -0
  156. package/src/components/countup/index.vue +112 -0
  157. package/src/components/countup/readme.md +9 -0
  158. package/src/components/empty/assets/build.png +0 -0
  159. package/src/components/empty/assets/emptybg.gif +0 -0
  160. package/src/components/empty/assets/emptybg.png +0 -0
  161. package/src/components/empty/assets/emptybg2.jpg +0 -0
  162. package/src/components/empty/assets/emptybg3.jpg +0 -0
  163. package/src/components/empty/assets/wuxiao.png +0 -0
  164. package/src/components/empty/assets/wuxiao.webp +0 -0
  165. package/src/components/empty/building.vue +117 -0
  166. package/src/components/empty/empty.vue +120 -0
  167. package/src/components/empty/index.js +12 -0
  168. package/src/components/empty/invalid.vue +56 -0
  169. package/src/components/error/Error.vue +79 -0
  170. package/src/components/error/readme.md +20 -0
  171. package/src/components/form/Form.vue +84 -0
  172. package/src/components/form/FormItem.vue +143 -0
  173. package/src/components/form/data.js +52 -0
  174. package/src/components/form/readme.md +69 -0
  175. package/src/components/layout/banner.vue +412 -0
  176. package/src/components/layout/bar.vue +43 -0
  177. package/src/components/layout/layout1.vue +60 -0
  178. package/src/components/layout/layout2.vue +134 -0
  179. package/src/components/layout/layout3.vue +107 -0
  180. package/src/components/layout/layout4.vue +66 -0
  181. package/src/components/layout/nav.vue +333 -0
  182. package/src/components/layout/readme.md +61 -0
  183. package/src/components/loading/index.vue +122 -0
  184. package/src/components/loading/readme.md +6 -0
  185. package/src/components/notice/NoticeList.vue +198 -0
  186. package/src/components/notice/NoticeListPaging.vue +281 -0
  187. package/src/components/notice/NoticeView.vue +92 -0
  188. package/src/components/notice/readme.md +1 -0
  189. package/src/components/pagination/index.vue +100 -0
  190. package/src/components/pagination/readme.md +19 -0
  191. package/src/components/pagination/scroll-to.js +51 -0
  192. package/src/components/progress/bar.vue +72 -0
  193. package/src/components/progress/progress.vue +58 -0
  194. package/src/components/screenfull/index.js +3 -0
  195. package/src/components/screenfull/index.vue +65 -0
  196. package/src/components/screenfull/package.json +15 -0
  197. package/src/components/screenfull/readme.md +6 -0
  198. package/src/components/statisticalCount/index.vue +80 -0
  199. package/src/components/statisticalCount/readme.md +21 -0
  200. package/src/components/username/index.vue +79 -0
  201. package/src/components/username/readme.md +22 -0
  202. package/src/components/username//346/225/210/346/236/234/345/233/276.png +0 -0
  203. package/src/index.js +82 -0
  204. package/src/utils/index.js +32 -0
  205. package/src/xm_components/HeadSearch/hook/hookSearch.js +96 -0
  206. package/src/xm_components/HeadSearch/index.vue +206 -0
  207. package/src/xm_components/HeadSearch/readme.md +12 -0
  208. package/src/xm_components/HeadSearch//346/220/234/347/264/242/345/210/227/350/241/250.png +0 -0
  209. package/src/xm_components/Milestone/index.vue +212 -0
  210. package/src/xm_components/Milestone/readme.md +15 -0
  211. package/src/xm_components/readme.md +1 -0
  212. package/utils/coms/load.jsx +10 -0
  213. package/utils/func.js +32 -0
  214. package/utils/hookDialog.js +38 -0
  215. package/utils/hookPage.js +49 -0
  216. package/utils/index.js +5 -0
  217. package/utils/lib/console.js +39 -0
  218. package/utils/lib/debounce.js +19 -0
  219. package/utils/lib/deepextend.js +51 -0
  220. package/utils/lib/deepset.js +14 -0
  221. package/utils/lib/extend.js +28 -0
  222. package/utils/lib/index.js +13 -0
  223. package/utils/lib/json.js +90 -0
  224. package/utils/lib/mergeprops.js +62 -0
  225. package/utils/lib/mitt.js +43 -0
  226. package/utils/lib/modify.js +8 -0
  227. package/utils/lib/slot.js +19 -0
  228. package/utils/lib/toarray.js +5 -0
  229. package/utils/lib/tocase.js +11 -0
  230. package/utils/lib/todate.js +10 -0
  231. package/utils/lib/toline.js +10 -0
  232. package/utils/lib/tostring.js +7 -0
  233. package/utils/lib/type.js +45 -0
  234. package/utils/lib/unique.js +6 -0
  235. package/utils/message.js +166 -0
  236. package/utils/package.json +16 -0
  237. package/utils/type.js +45 -0
  238. package/vite.config.js +51 -0
@@ -0,0 +1,257 @@
1
+ import unique from '@bdsoft-element/utils/lib/unique';
2
+ import toCase from '@bdsoft-element/utils/lib/tocase';
3
+ import extend from '@bdsoft-element/utils/lib/extend';
4
+ import {enumerable, invoke, mergeRule} from '../frame/util';
5
+ import {deepCopy} from '@bdsoft-element/utils/lib/deepextend';
6
+ import {markRaw, reactive} from 'vue';
7
+ import is from '@bdsoft-element/utils/lib/type';
8
+ // import toArray from '@bdsoft-element/utils/lib/toarray';
9
+
10
+ function bind(ctx) {
11
+ Object.defineProperties(ctx.origin, {
12
+ __fc__: enumerable(markRaw(ctx), true)
13
+ });
14
+ if(ctx.rule !== ctx.origin) {
15
+ Object.defineProperties(ctx.rule, {
16
+ __fc__: enumerable(markRaw(ctx), true)
17
+ });
18
+ }
19
+ }
20
+
21
+ export default function RuleContext(handle, rule, defaultValue) {
22
+ const id = unique();
23
+ const isInput = !!rule.field;
24
+ extend(this, {
25
+ id,
26
+ ref: id,
27
+ wrapRef: id + 'fi',
28
+ rule,
29
+ origin: rule.__origin__ || rule,
30
+ name: rule.name,
31
+ pending: {},
32
+ none: false,
33
+ watch: [],
34
+ linkOn: [],
35
+ root: [],
36
+ ctrlRule: [],
37
+ children: [],
38
+ parent: null,
39
+ group: rule.subRule ? this : null,
40
+ cacheConfig: null,
41
+ prop: {...rule},
42
+ computed: {},
43
+ payload: {},
44
+ refRule: {},
45
+ input: isInput,
46
+ el: undefined,
47
+ exportEl: undefined,
48
+ defaultValue: isInput ? deepCopy(defaultValue) : undefined,
49
+ field: rule.field || undefined
50
+ })
51
+
52
+ this.updateKey();
53
+ bind(this);
54
+ this.update(handle, true);
55
+ }
56
+
57
+ extend(RuleContext.prototype, {
58
+ getParentGroup() {
59
+ let ctx = this.parent;
60
+ while (ctx) {
61
+ if (ctx.group) {
62
+ return ctx;
63
+ }
64
+ ctx = ctx.parent;
65
+ }
66
+ },
67
+ loadChildrenPending() {
68
+ const children = this.rule.children || [];
69
+ if (Array.isArray(children))
70
+ return children;
71
+ return this.loadPending({
72
+ key: 'children', origin: children, def: [],
73
+ onLoad: (data) => {
74
+ this.$handle && this.$handle.loadChildren(data, this);
75
+ }, onUpdate: (value, oldValue) => {
76
+ if (this.$handle) {
77
+ value === oldValue ? this.$handle.loadChildren(value, this) : this.$handle.updateChildren(this, value, oldValue);
78
+ }
79
+ }, onReload: (value) => {
80
+ if (this.$handle) {
81
+ this.$handle.updateChildren(this, [], value);
82
+ } else {
83
+ delete this.pending.children;
84
+ }
85
+ }
86
+ });
87
+ },
88
+ loadPending(config) {
89
+ const {key, origin, def, onLoad, onReload, onUpdate} = config;
90
+
91
+ if (this.pending[key] && this.pending[key].origin === origin) {
92
+ return this.getPending(key, def);
93
+ }
94
+
95
+ delete this.pending[key];
96
+
97
+ let value = origin;
98
+ if (is.Function(origin)) {
99
+ let source = invoke(() => origin({
100
+ rule: this.rule, api: this.$api, update: (data) => {
101
+ const value = data || def;
102
+ const oldValue = this.getPending(key, def);
103
+ this.setPending(key, origin, value);
104
+ onUpdate && onUpdate(value, oldValue);
105
+ }, reload: () => {
106
+ const oldValue = this.getPending(key, def);
107
+ delete this.pending[key];
108
+ onReload && onReload(oldValue);
109
+ this.$api && this.$api.sync(this.rule);
110
+ }
111
+ }));
112
+ if (source && is.Function(source.then)) {
113
+ source.then((data) => {
114
+ const value = data || def;
115
+ this.setPending(key, origin, value);
116
+ onLoad && onLoad(value);
117
+ this.$api && this.$api.sync(this.rule);
118
+ }).catch(e => {
119
+ console.error(e);
120
+ })
121
+ value = def;
122
+ this.setPending(key, origin, value);
123
+ } else {
124
+ value = source || def;
125
+ this.setPending(key, origin, value);
126
+ onLoad && onLoad(value);
127
+ }
128
+ }
129
+ return value;
130
+ },
131
+ getPending(key, def) {
132
+ return (this.pending[key] && this.pending[key].value) || def;
133
+ },
134
+ setPending(key, origin, value) {
135
+ this.pending[key] = {
136
+ origin,
137
+ value: reactive(value)
138
+ };
139
+ },
140
+ effectData(name) {
141
+ if (!this.payload[name]) {
142
+ this.payload[name] = {};
143
+ }
144
+ return this.payload[name];
145
+ },
146
+ clearEffectData(name) {
147
+ if (name === undefined) {
148
+ this.payload = {};
149
+ } else {
150
+ delete this.payload[name];
151
+ }
152
+ },
153
+ updateKey(flag) {
154
+ this.key = unique();
155
+ flag && this.parent && this.parent.updateKey(flag);
156
+ },
157
+ updateType() {
158
+ this.originType = this.rule.type;
159
+ this.type = toCase(this.rule.type);
160
+ this.trueType = this.$handle.getType(this.originType);
161
+ },
162
+ setParser(parser) {
163
+ this.parser = parser;
164
+ parser.init(this);
165
+ },
166
+ initProp() {
167
+ const rule = {...this.rule};
168
+ delete rule.children;
169
+ delete rule.validate;
170
+ this.prop = mergeRule({}, [rule, ...Object.keys(this.payload).map(k => this.payload[k]), this.computed]);
171
+ this.prop.validate = [...this.refRule?.__$validate?.value || [], ...this.prop.validate || []]
172
+ },
173
+ initNone() {
174
+ this.none = !(is.Undef(this.prop.display) || !!this.prop.display)
175
+ },
176
+ injectValidate() {
177
+ return this.prop.validate;
178
+ },
179
+ check(handle) {
180
+ return this.vm === handle.vm
181
+ },
182
+ unwatch() {
183
+ this.watch.forEach(un => un());
184
+ this.watch = [];
185
+ this.refRule = {};
186
+ },
187
+ unlink() {
188
+ this.linkOn.forEach(un => un());
189
+ this.linkOn = [];
190
+ },
191
+ link() {
192
+ this.unlink();
193
+ this.$handle.appendLink(this);
194
+ },
195
+ watchTo() {
196
+ this.$handle.watchCtx(this);
197
+ },
198
+ delete() {
199
+ this.unwatch();
200
+ this.unlink();
201
+ this.rmCtrl();
202
+ if (this.parent) {
203
+ this.parent.children.splice(this.parent.children.indexOf(this) >>> 0, 1);
204
+ }
205
+ extend(this, {
206
+ deleted: true,
207
+ computed: {},
208
+ parent: null,
209
+ children: [],
210
+ cacheConfig: null,
211
+ none: false,
212
+ })
213
+ },
214
+ rmCtrl() {
215
+ this.ctrlRule.forEach(ctrl => ctrl.__fc__ && ctrl.__fc__.rm());
216
+ this.ctrlRule = [];
217
+ },
218
+ rm() {
219
+ const _rm = () => {
220
+ let index = this.root.indexOf(this.origin);
221
+ if (index > -1) {
222
+ this.root.splice(index, 1);
223
+ this.$handle && this.$handle.refresh();
224
+ }
225
+ }
226
+ if (this.deleted) {
227
+ _rm();
228
+ return;
229
+ }
230
+ this.$handle.noWatch(() => {
231
+ this.$handle.deferSyncValue(() => {
232
+ this.rmCtrl();
233
+ _rm();
234
+ this.$handle.rmCtx(this);
235
+ extend(this, {
236
+ root: []
237
+ });
238
+ }, this.input);
239
+ });
240
+ },
241
+ update(handle, init) {
242
+ extend(this, {
243
+ deleted: false,
244
+ $handle: handle,
245
+ $render: handle.$render,
246
+ $api: handle.api,
247
+ vm: handle.vm,
248
+ vNode: handle.$render.vNode,
249
+ updated: false,
250
+ cacheValue: this.rule.value
251
+ });
252
+ !init && this.unwatch();
253
+ this.watchTo();
254
+ this.link();
255
+ this.updateType();
256
+ }
257
+ })
@@ -0,0 +1,63 @@
1
+ import extend from '@bdsoft-element/utils/lib/extend';
2
+ import is from '@bdsoft-element/utils/lib/type';
3
+ import {attrs} from '../frame/attrs';
4
+ import {copyRule, mergeRule} from '../frame/util';
5
+ import {$set} from '@bdsoft-element/utils/lib/modify';
6
+
7
+ export function baseRule() {
8
+ return {
9
+ props: {},
10
+ on: {},
11
+ options: [],
12
+ children: [],
13
+ hidden: false,
14
+ display: true,
15
+ value: undefined,
16
+ };
17
+ }
18
+
19
+ export function creatorFactory(name, init) {
20
+ return (title, field, value, props = {}) => {
21
+ const maker = new Creator(name, title, field, value, props);
22
+ if (init) {
23
+ if (is.Function(init)) init(maker);
24
+ else maker.props(init);
25
+ }
26
+ return maker;
27
+ };
28
+ }
29
+
30
+ export default function Creator(type, title, field, value, props) {
31
+ this._data = extend(baseRule(), {type, title, field, value, props: props || {}});
32
+ this.event = this.on;
33
+ }
34
+
35
+ extend(Creator.prototype, {
36
+ getRule() {
37
+ return this._data;
38
+ },
39
+ setProp(key, value) {
40
+ $set(this._data, key, value);
41
+ return this;
42
+ },
43
+ modelField(field) {
44
+ this._data.modelField = field;
45
+ return this;
46
+ },
47
+ _clone() {
48
+ const clone = new this.constructor();
49
+ clone._data = copyRule(this._data);
50
+ return clone;
51
+ },
52
+ })
53
+
54
+ export function appendProto(attrs) {
55
+ attrs.forEach(name => {
56
+ Creator.prototype[name] = function (key) {
57
+ mergeRule(this._data, {[name]: arguments.length < 2 ? key : {[key]: arguments[1]}})
58
+ return this;
59
+ };
60
+ });
61
+ }
62
+
63
+ appendProto(attrs());
@@ -0,0 +1,17 @@
1
+ import {creatorFactory} from './creator';
2
+
3
+ const commonMaker = creatorFactory('');
4
+
5
+ export function create(type, field, title) {
6
+ let make = commonMaker('', field);
7
+ make._data.type = type;
8
+ make._data.title = title;
9
+ return make;
10
+ }
11
+
12
+ export default function makerFactory() {
13
+ return {
14
+ create,
15
+ factory: creatorFactory
16
+ };
17
+ }
@@ -0,0 +1,79 @@
1
+ import mergeProps from '@bdsoft-element/utils/lib/mergeprops';
2
+ import unique from '@bdsoft-element/utils/lib/unique';
3
+ import extend from '@bdsoft-element/utils/lib/extend';
4
+ // import {invoke} from '../frame/util';
5
+
6
+ export function createManager(proto) {
7
+ class CustomManager extends Manager {
8
+ }
9
+
10
+ Object.assign(CustomManager.prototype, proto);
11
+ return CustomManager;
12
+ }
13
+
14
+ export default function Manager(handler) {
15
+ extend(this, {
16
+ $handle: handler,
17
+ vm: handler.vm,
18
+ options: {},
19
+ ref: 'fcForm',
20
+ mergeOptionsRule: {
21
+ normal: ['form', 'row', 'info', 'submitBtn', 'resetBtn']
22
+ }
23
+ });
24
+ this.updateKey();
25
+ this.init();
26
+ }
27
+
28
+ extend(Manager.prototype, {
29
+ __init() {
30
+ this.$render = this.$handle.$render;
31
+ this.$r = (...args) => this.$render.renderRule(...args);
32
+ },
33
+ updateKey() {
34
+ this.key = unique();
35
+ },
36
+ //TODO interface
37
+ init() {
38
+ },
39
+ update() {
40
+ },
41
+ beforeRender() {
42
+ },
43
+ form() {
44
+ return this.vm.refs[this.ref];
45
+ },
46
+ getSlot(name){
47
+ const _fn = (vm) => {
48
+ if (vm) {
49
+ let slot = vm.slots[name];
50
+ if (slot) {
51
+ return slot;
52
+ }
53
+ return _fn(vm.setupState.parent);
54
+ }
55
+ return undefined;
56
+ }
57
+ return _fn(this.vm);
58
+ },
59
+ mergeOptions(args, opt) {
60
+ return mergeProps(args.map(v => this.tidyOptions(v)), opt, this.mergeOptionsRule);
61
+ },
62
+ updateOptions(options) {
63
+ this.$handle.fc.targetFormDriver('updateOptions', options, {handle: this.$handle, api: this.$handle.api})
64
+ this.options = this.mergeOptions([options], this.getDefaultOptions());
65
+ this.update();
66
+ },
67
+ tidyOptions(options) {
68
+ return options;
69
+ },
70
+ tidyRule(ctx) {
71
+ },
72
+ mergeProp(ctx) {
73
+ },
74
+ getDefaultOptions() {
75
+ return {};
76
+ },
77
+ render(children) {
78
+ }
79
+ })
@@ -0,0 +1,85 @@
1
+ import toLine from '@bdsoft-element/utils/lib/toline';
2
+ import toString from '@bdsoft-element/utils/lib/tostring';
3
+ import extend from '@bdsoft-element/utils/lib/extend';
4
+ import {toProps} from '../frame/util';
5
+ import {createVNode, getCurrentInstance, resolveComponent, resolveDirective, withDirectives} from 'vue';
6
+
7
+
8
+ function tidyDirectives(directives) {
9
+ return Object.keys(directives).map(n => {
10
+ const data = directives[n];
11
+ const directive = resolveDirective(n);
12
+ if (!directive) return;
13
+ return [
14
+ directive, data.value, data.arg, data.modifiers
15
+ ]
16
+ }).filter(v => !!v);
17
+ }
18
+
19
+ function makeDirective(data, vn) {
20
+ let directives = data.directives;
21
+ if (!directives) return vn;
22
+ if (!Array.isArray(directives)) {
23
+ directives = [directives];
24
+ }
25
+ return withDirectives(vn, directives.reduce((lst, v) => {
26
+ return lst.concat(tidyDirectives(v));
27
+ }, []))
28
+ }
29
+
30
+ export function CreateNodeFactory() {
31
+
32
+ const aliasMap = {};
33
+
34
+ function CreateNode() {
35
+ }
36
+
37
+ extend(CreateNode.prototype, {
38
+ make(tag, data, children) {
39
+ return makeDirective(data, this.h(tag, toProps(data), children));
40
+ },
41
+ makeComponent(type, data, children) {
42
+ try {
43
+ return makeDirective(data, createVNode(type, toProps(data), children));
44
+ } catch (e) {
45
+ console.error(e);
46
+ return createVNode('');
47
+ }
48
+ },
49
+ h(tag, data, children) {
50
+ const isNativeTag = getCurrentInstance().appContext.config.isNativeTag(tag);
51
+ if (isNativeTag) {
52
+ delete data.formCreateInject;
53
+ }
54
+ try{
55
+ return createVNode(isNativeTag ? tag : resolveComponent(tag), data, children);
56
+ }catch (e){
57
+ console.error(e);
58
+ return createVNode('');
59
+ }
60
+ },
61
+ aliasMap
62
+ });
63
+
64
+ extend(CreateNode, {
65
+ aliasMap,
66
+ alias(alias, name) {
67
+ aliasMap[alias] = name;
68
+ },
69
+ use(nodes) {
70
+ Object.keys(nodes).forEach((k) => {
71
+ const line = toLine(k);
72
+ const lower = toString(k).toLocaleLowerCase();
73
+ const v = nodes[k];
74
+ [k, line, lower].forEach(n => {
75
+ CreateNode.alias(k, v);
76
+ CreateNode.prototype[n] = function (data, children) {
77
+ return this.make(v, data, children);
78
+ };
79
+ });
80
+ });
81
+ }
82
+ })
83
+
84
+ return CreateNode;
85
+ }
@@ -0,0 +1,28 @@
1
+ const BaseParser = {
2
+ init(ctx) {
3
+ },
4
+ toFormValue(value, ctx) {
5
+ return value
6
+ },
7
+ toValue(formValue, ctx) {
8
+ return formValue;
9
+ },
10
+ mounted(ctx) {
11
+ },
12
+ render(children, ctx) {
13
+ if(ctx.$handle.fc.renderDriver && ctx.$handle.fc.renderDriver.defaultRender){
14
+ return ctx.$handle.fc.renderDriver.defaultRender(ctx, children);
15
+ }
16
+ return ctx.$render.defaultRender(ctx, children);
17
+ },
18
+ preview(children, ctx) {
19
+ if(ctx.$handle.fc.renderDriver && ctx.$handle.fc.renderDriver.defaultPreview){
20
+ return ctx.$handle.fc.renderDriver.defaultPreview(ctx, children);
21
+ }
22
+ return this.render(children, ctx);
23
+ },
24
+ mergeProp(ctx) {
25
+ }
26
+ }
27
+
28
+ export default BaseParser;