json-renderers 1.12.3 → 1.13.3

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 (178) hide show
  1. package/docs/dist/v13/min.js +678 -0
  2. package/docs/index.html +14 -0
  3. package/package.json +3 -3
  4. package/src/index.js +2 -2
  5. package/src/v13/buildSpec/index.js +28 -0
  6. package/src/v13/index.js +41 -0
  7. package/src/{v10 → v13}/meta.js +1 -1
  8. package/src/v10/dataLists/fragments.json +0 -1
  9. package/src/v10/dataLists/index.js +0 -32
  10. package/src/v10/dataLists/skeleton.json +0 -38
  11. package/src/v10/index.js +0 -142
  12. package/src/v10/select/fragments.json +0 -1
  13. package/src/v10/select/index.js +0 -34
  14. package/src/v10/select/skeleton.json +0 -23
  15. package/src/v10/table/index.js +0 -35
  16. package/src/v10/table/skeleton.json +0 -47
  17. package/src/v5/dataLists/fragments.json +0 -1
  18. package/src/v5/dataLists/index.js +0 -26
  19. package/src/v5/dataLists/skeleton.json +0 -20
  20. package/src/v5/form/attachFormClickEventListener.js +0 -27
  21. package/src/v5/form/clickFunc/extractFormData.js +0 -27
  22. package/src/v5/form/clickFunc/handleNew.js +0 -24
  23. package/src/v5/form/clickFunc/handleSave.js +0 -33
  24. package/src/v5/form/clickFunc/index.js +0 -32
  25. package/src/v5/form/index.js +0 -87
  26. package/src/v5/form/structure.json +0 -410
  27. package/src/v5/index.js +0 -150
  28. package/src/v5/meta.js +0 -6
  29. package/src/v5/navTabs/fragments.json +0 -59
  30. package/src/v5/navTabs/index.js +0 -82
  31. package/src/v5/navTabs/skeleton.json +0 -18
  32. package/src/v5/registerGlobal.js +0 -14
  33. package/src/v5/select/fragments.json +0 -1
  34. package/src/v5/select/index.js +0 -31
  35. package/src/v5/select/skeleton.json +0 -21
  36. package/src/v5/table/attachTableClickEventListener.js +0 -22
  37. package/src/v5/table/buildTableDataAsJson.js +0 -19
  38. package/src/v5/table/buildTableDomElement.js +0 -21
  39. package/src/v5/table/buildTableStructureSpec.js +0 -28
  40. package/src/v5/table/clickFunc/v3/createTable.js +0 -16
  41. package/src/v5/table/clickFunc/v3/getContainer/extractClickedRowDetails.js +0 -23
  42. package/src/v5/table/clickFunc/v3/getContainer/getOrCreateChildTableContainer.js +0 -21
  43. package/src/v5/table/clickFunc/v3/getContainer/index.js +0 -39
  44. package/src/v5/table/clickFunc/v3/getContainer/isSameRowClickedToToggleOff.js +0 -14
  45. package/src/v5/table/clickFunc/v3/getContainer/resetAndShowChildTableContainer.js +0 -12
  46. package/src/v5/table/clickFunc/v3/index.js +0 -21
  47. package/src/v5/table/fragments.json +0 -112
  48. package/src/v5/table/index.js +0 -72
  49. package/src/v5/table/resolveTargetContainer.js +0 -9
  50. package/src/v5/table/skeleton.json +0 -371
  51. package/src/v6/dataLists/fragments.json +0 -1
  52. package/src/v6/dataLists/index.js +0 -32
  53. package/src/v6/dataLists/skeleton.json +0 -38
  54. package/src/v6/form/attachFormClickEventListener.js +0 -27
  55. package/src/v6/form/clickFunc/extractFormData.js +0 -27
  56. package/src/v6/form/clickFunc/handleNew.js +0 -24
  57. package/src/v6/form/clickFunc/handleSave.js +0 -33
  58. package/src/v6/form/clickFunc/index.js +0 -32
  59. package/src/v6/form/index.js +0 -87
  60. package/src/v6/form/structure.json +0 -410
  61. package/src/v6/index.js +0 -150
  62. package/src/v6/meta.js +0 -6
  63. package/src/v6/navTabs/fragments.json +0 -59
  64. package/src/v6/navTabs/index.js +0 -82
  65. package/src/v6/navTabs/skeleton.json +0 -18
  66. package/src/v6/registerGlobal.js +0 -14
  67. package/src/v6/select/fragments.json +0 -1
  68. package/src/v6/select/index.js +0 -34
  69. package/src/v6/select/skeleton.json +0 -23
  70. package/src/v6/table/attachTableClickEventListener.js +0 -22
  71. package/src/v6/table/buildTableDataAsJson.js +0 -19
  72. package/src/v6/table/buildTableDomElement.js +0 -21
  73. package/src/v6/table/buildTableStructureSpec.js +0 -28
  74. package/src/v6/table/clickFunc/v3/createTable.js +0 -16
  75. package/src/v6/table/clickFunc/v3/getContainer/extractClickedRowDetails.js +0 -23
  76. package/src/v6/table/clickFunc/v3/getContainer/getOrCreateChildTableContainer.js +0 -21
  77. package/src/v6/table/clickFunc/v3/getContainer/index.js +0 -39
  78. package/src/v6/table/clickFunc/v3/getContainer/isSameRowClickedToToggleOff.js +0 -14
  79. package/src/v6/table/clickFunc/v3/getContainer/resetAndShowChildTableContainer.js +0 -12
  80. package/src/v6/table/clickFunc/v3/index.js +0 -21
  81. package/src/v6/table/fragments.json +0 -112
  82. package/src/v6/table/index.js +0 -72
  83. package/src/v6/table/resolveTargetContainer.js +0 -9
  84. package/src/v6/table/skeleton.json +0 -371
  85. package/src/v7/common/deriveColumnsFromData.js +0 -20
  86. package/src/v7/dataLists/fragments.json +0 -1
  87. package/src/v7/dataLists/index.js +0 -32
  88. package/src/v7/dataLists/skeleton.json +0 -38
  89. package/src/v7/form/attachFormClickEventListener.js +0 -27
  90. package/src/v7/form/clickFunc/extractFormData.js +0 -27
  91. package/src/v7/form/clickFunc/handleNew.js +0 -24
  92. package/src/v7/form/clickFunc/handleSave.js +0 -33
  93. package/src/v7/form/clickFunc/index.js +0 -32
  94. package/src/v7/form/index.js +0 -87
  95. package/src/v7/form/structure.json +0 -410
  96. package/src/v7/index.js +0 -141
  97. package/src/v7/meta.js +0 -6
  98. package/src/v7/navTabs/fragments.json +0 -59
  99. package/src/v7/navTabs/index.js +0 -82
  100. package/src/v7/navTabs/skeleton.json +0 -18
  101. package/src/v7/registerGlobal.js +0 -14
  102. package/src/v7/select/fragments.json +0 -1
  103. package/src/v7/select/index.js +0 -34
  104. package/src/v7/select/skeleton.json +0 -23
  105. package/src/v7/table/attachTableClickEventListener.js +0 -28
  106. package/src/v7/table/buildTableDataAsJson.js +0 -25
  107. package/src/v7/table/buildTableDomElement.js +0 -25
  108. package/src/v7/table/buildTableStructureSpec.js +0 -33
  109. package/src/v7/table/clickFunc/v3/createTable.js +0 -20
  110. package/src/v7/table/clickFunc/v3/getContainer/extractClickedRowDetails.js +0 -27
  111. package/src/v7/table/clickFunc/v3/getContainer/getOrCreateChildTableContainer.js +0 -24
  112. package/src/v7/table/clickFunc/v3/getContainer/index.js +0 -44
  113. package/src/v7/table/clickFunc/v3/getContainer/isSameRowClickedToToggleOff.js +0 -17
  114. package/src/v7/table/clickFunc/v3/getContainer/resetAndShowChildTableContainer.js +0 -15
  115. package/src/v7/table/clickFunc/v3/index.js +0 -35
  116. package/src/v7/table/fragments.json +0 -112
  117. package/src/v7/table/index.js +0 -82
  118. package/src/v7/table/resolveTargetContainer.js +0 -11
  119. package/src/v7/table/skeleton.json +0 -371
  120. package/src/v8/common/deriveColumnsFromData.js +0 -20
  121. package/src/v8/dataLists/fragments.json +0 -1
  122. package/src/v8/dataLists/index.js +0 -32
  123. package/src/v8/dataLists/skeleton.json +0 -38
  124. package/src/v8/form/attachFormClickEventListener.js +0 -27
  125. package/src/v8/form/clickFunc/extractFormData.js +0 -27
  126. package/src/v8/form/clickFunc/handleNew.js +0 -24
  127. package/src/v8/form/clickFunc/handleSave.js +0 -33
  128. package/src/v8/form/clickFunc/index.js +0 -32
  129. package/src/v8/form/index.js +0 -87
  130. package/src/v8/form/structure.json +0 -410
  131. package/src/v8/index.js +0 -141
  132. package/src/v8/meta.js +0 -6
  133. package/src/v8/navTabs/fragments.json +0 -59
  134. package/src/v8/navTabs/index.js +0 -82
  135. package/src/v8/navTabs/skeleton.json +0 -18
  136. package/src/v8/registerGlobal.js +0 -14
  137. package/src/v8/select/fragments.json +0 -1
  138. package/src/v8/select/index.js +0 -34
  139. package/src/v8/select/skeleton.json +0 -23
  140. package/src/v8/table/attachTableClickEventListener.js +0 -28
  141. package/src/v8/table/buildTableDataAsJson.js +0 -25
  142. package/src/v8/table/buildTableDomElement.js +0 -25
  143. package/src/v8/table/buildTableStructureSpec.js +0 -33
  144. package/src/v8/table/clickFunc/v3/createTable.js +0 -20
  145. package/src/v8/table/clickFunc/v3/getContainer/extractClickedRowDetails.js +0 -27
  146. package/src/v8/table/clickFunc/v3/getContainer/getOrCreateChildTableContainer.js +0 -24
  147. package/src/v8/table/clickFunc/v3/getContainer/index.js +0 -44
  148. package/src/v8/table/clickFunc/v3/getContainer/isSameRowClickedToToggleOff.js +0 -17
  149. package/src/v8/table/clickFunc/v3/getContainer/resetAndShowChildTableContainer.js +0 -15
  150. package/src/v8/table/clickFunc/v3/index.js +0 -35
  151. package/src/v8/table/fragments.json +0 -112
  152. package/src/v8/table/index.js +0 -82
  153. package/src/v8/table/resolveTargetContainer.js +0 -11
  154. package/src/v8/table/skeleton.json +0 -371
  155. package/src/v9/common/deriveColumnsFromData.js +0 -20
  156. package/src/v9/dataLists/fragments.json +0 -1
  157. package/src/v9/dataLists/index.js +0 -32
  158. package/src/v9/dataLists/skeleton.json +0 -38
  159. package/src/v9/form/attachFormClickEventListener.js +0 -27
  160. package/src/v9/form/clickFunc/extractFormData.js +0 -27
  161. package/src/v9/form/clickFunc/handleNew.js +0 -24
  162. package/src/v9/form/clickFunc/handleSave.js +0 -33
  163. package/src/v9/form/clickFunc/index.js +0 -32
  164. package/src/v9/form/index.js +0 -87
  165. package/src/v9/form/structure.json +0 -410
  166. package/src/v9/index.js +0 -141
  167. package/src/v9/meta.js +0 -6
  168. package/src/v9/navTabs/fragments.json +0 -59
  169. package/src/v9/navTabs/index.js +0 -82
  170. package/src/v9/navTabs/skeleton.json +0 -18
  171. package/src/v9/registerGlobal.js +0 -14
  172. package/src/v9/select/fragments.json +0 -1
  173. package/src/v9/select/index.js +0 -34
  174. package/src/v9/select/skeleton.json +0 -23
  175. package/src/v9/table/index.js +0 -35
  176. package/src/v9/table/skeleton.json +0 -47
  177. /package/src/{v10 → v13}/common/deriveColumnsFromData.js +0 -0
  178. /package/src/{v10 → v13}/registerGlobal.js +0 -0
@@ -1,9 +0,0 @@
1
- // Story 4: Resolve target HTML container element
2
- const startFunc = ({ inTargetHtmlId } = {}) => {
3
- if (typeof inTargetHtmlId === "string") {
4
- return document.getElementById(inTargetHtmlId);
5
- }
6
- return inTargetHtmlId ?? null;
7
- };
8
-
9
- export default startFunc;
@@ -1,371 +0,0 @@
1
- {
2
- "tableSimple": {
3
- "tagName": "table",
4
- "attributes": {
5
- "class": "table table-hover table-striped mb-0"
6
- },
7
- "slots": [
8
- "colGroup",
9
- "thead",
10
- "tbody",
11
- "tfoot"
12
- ]
13
- },
14
- "bodyOnly": {
15
- "tagName": "table",
16
- "attributes": {
17
- "class": "table table-hover table-striped mb-0"
18
- },
19
- "slots": [
20
- "tbody"
21
- ]
22
- },
23
- "default": {
24
- "tagName": "div",
25
- "attributes": {
26
- "class": "card shadow-sm"
27
- },
28
- "children": [
29
- {
30
- "tagName": "div",
31
- "attributes": {
32
- "class": "table-responsive"
33
- },
34
- "children": [
35
- {
36
- "tagName": "table",
37
- "attributes": {
38
- "class": "table table-hover table-striped mb-0"
39
- },
40
- "slots": [
41
- "colGroup",
42
- "thead",
43
- "tbody",
44
- "tfoot"
45
- ]
46
- }
47
- ]
48
- }
49
- ]
50
- },
51
- "tableOnly": {
52
- "tagName": "table",
53
- "attributes": {
54
- "class": "table table-hover table-striped mb-0"
55
- },
56
- "slots": [
57
- "colGroup",
58
- "thead",
59
- "tbody",
60
- "tfoot"
61
- ]
62
- },
63
- "tableResponsive": {
64
- "tagName": "div",
65
- "attributes": {
66
- "class": "table-responsive"
67
- },
68
- "children": [
69
- {
70
- "tagName": "table",
71
- "attributes": {
72
- "class": "table table-hover table-striped mb-0"
73
- },
74
- "slots": [
75
- "colGroup",
76
- "thead",
77
- "tbody",
78
- "tfoot"
79
- ]
80
- }
81
- ]
82
- },
83
- "cardWithHeader": {
84
- "tagName": "div",
85
- "attributes": {
86
- "class": "card shadow-sm"
87
- },
88
- "children": [
89
- {
90
- "tagName": "div",
91
- "attributes": {
92
- "class": "card-header bg-white py-3"
93
- },
94
- "slots": [
95
- "cardHeader"
96
- ]
97
- },
98
- {
99
- "tagName": "div",
100
- "attributes": {
101
- "class": "table-responsive"
102
- },
103
- "children": [
104
- {
105
- "tagName": "table",
106
- "attributes": {
107
- "class": "table table-hover table-striped mb-0"
108
- },
109
- "slots": [
110
- "colGroup",
111
- "thead",
112
- "tbody",
113
- "tfoot"
114
- ]
115
- }
116
- ]
117
- }
118
- ]
119
- },
120
- "cardWithFooter": {
121
- "tagName": "div",
122
- "attributes": {
123
- "class": "card shadow-sm"
124
- },
125
- "children": [
126
- {
127
- "tagName": "div",
128
- "attributes": {
129
- "class": "table-responsive"
130
- },
131
- "children": [
132
- {
133
- "tagName": "table",
134
- "attributes": {
135
- "class": "table table-hover table-striped mb-0"
136
- },
137
- "slots": [
138
- "colGroup",
139
- "thead",
140
- "tbody",
141
- "tfoot"
142
- ]
143
- }
144
- ]
145
- },
146
- {
147
- "tagName": "div",
148
- "attributes": {
149
- "class": "card-footer bg-white py-2"
150
- },
151
- "slots": [
152
- "cardFooter"
153
- ]
154
- }
155
- ]
156
- },
157
- "cardWithHeaderAndFooter": {
158
- "tagName": "div",
159
- "attributes": {
160
- "class": "card shadow-sm"
161
- },
162
- "children": [
163
- {
164
- "tagName": "div",
165
- "attributes": {
166
- "class": "card-header bg-white py-3"
167
- },
168
- "slots": [
169
- "cardHeader"
170
- ]
171
- },
172
- {
173
- "tagName": "div",
174
- "attributes": {
175
- "class": "table-responsive"
176
- },
177
- "children": [
178
- {
179
- "tagName": "table",
180
- "attributes": {
181
- "class": "table table-hover table-striped mb-0"
182
- },
183
- "slots": [
184
- "colGroup",
185
- "thead",
186
- "tbody",
187
- "tfoot"
188
- ]
189
- }
190
- ]
191
- },
192
- {
193
- "tagName": "div",
194
- "attributes": {
195
- "class": "card-footer bg-white py-2"
196
- },
197
- "slots": [
198
- "cardFooter"
199
- ]
200
- }
201
- ]
202
- },
203
- "bordered": {
204
- "tagName": "div",
205
- "attributes": {
206
- "class": "card shadow-sm"
207
- },
208
- "children": [
209
- {
210
- "tagName": "div",
211
- "attributes": {
212
- "class": "table-responsive"
213
- },
214
- "children": [
215
- {
216
- "tagName": "table",
217
- "attributes": {
218
- "class": "table table-bordered table-hover mb-0"
219
- },
220
- "slots": [
221
- "colGroup",
222
- "thead",
223
- "tbody",
224
- "tfoot"
225
- ]
226
- }
227
- ]
228
- }
229
- ]
230
- },
231
- "borderless": {
232
- "tagName": "div",
233
- "attributes": {
234
- "class": "card shadow-sm"
235
- },
236
- "children": [
237
- {
238
- "tagName": "div",
239
- "attributes": {
240
- "class": "table-responsive"
241
- },
242
- "children": [
243
- {
244
- "tagName": "table",
245
- "attributes": {
246
- "class": "table table-borderless table-hover mb-0"
247
- },
248
- "slots": [
249
- "colGroup",
250
- "thead",
251
- "tbody",
252
- "tfoot"
253
- ]
254
- }
255
- ]
256
- }
257
- ]
258
- },
259
- "compact": {
260
- "tagName": "div",
261
- "attributes": {
262
- "class": "card shadow-sm"
263
- },
264
- "children": [
265
- {
266
- "tagName": "div",
267
- "attributes": {
268
- "class": "table-responsive"
269
- },
270
- "children": [
271
- {
272
- "tagName": "table",
273
- "attributes": {
274
- "class": "table table-sm table-hover table-striped mb-0"
275
- },
276
- "slots": [
277
- "colGroup",
278
- "thead",
279
- "tbody",
280
- "tfoot"
281
- ]
282
- }
283
- ]
284
- }
285
- ]
286
- },
287
- "dark": {
288
- "tagName": "div",
289
- "attributes": {
290
- "class": "card shadow-sm bg-dark text-white border-secondary"
291
- },
292
- "children": [
293
- {
294
- "tagName": "div",
295
- "attributes": {
296
- "class": "table-responsive"
297
- },
298
- "children": [
299
- {
300
- "tagName": "table",
301
- "attributes": {
302
- "class": "table table-dark table-hover mb-0"
303
- },
304
- "slots": [
305
- "colGroup",
306
- "thead",
307
- "tbody",
308
- "tfoot"
309
- ]
310
- }
311
- ]
312
- }
313
- ]
314
- },
315
- "striped": {
316
- "tagName": "div",
317
- "attributes": {
318
- "class": "card shadow-sm"
319
- },
320
- "children": [
321
- {
322
- "tagName": "div",
323
- "attributes": {
324
- "class": "table-responsive"
325
- },
326
- "children": [
327
- {
328
- "tagName": "table",
329
- "attributes": {
330
- "class": "table table-striped mb-0"
331
- },
332
- "slots": [
333
- "colGroup",
334
- "thead",
335
- "tbody",
336
- "tfoot"
337
- ]
338
- }
339
- ]
340
- }
341
- ]
342
- },
343
- "flush": {
344
- "tagName": "div",
345
- "attributes": {
346
- "class": "card border-0 shadow-none"
347
- },
348
- "children": [
349
- {
350
- "tagName": "div",
351
- "attributes": {
352
- "class": "table-responsive"
353
- },
354
- "children": [
355
- {
356
- "tagName": "table",
357
- "attributes": {
358
- "class": "table table-hover table-striped mb-0"
359
- },
360
- "slots": [
361
- "colGroup",
362
- "thead",
363
- "tbody",
364
- "tfoot"
365
- ]
366
- }
367
- ]
368
- }
369
- ]
370
- }
371
- }
@@ -1 +0,0 @@
1
- {}
@@ -1,32 +0,0 @@
1
- // import jsonToSpec from "../../../node_modules/json-to-spec/index.js";
2
- import jsonToTag from "../../../node_modules/@keshavsoft/json-to-tag/index.js";
3
- import jsonTraversal from "../../../node_modules/json-traversal/index.js";
4
-
5
- import skeletonJson from "./skeleton.json" with { type: "json" };
6
-
7
- const startFunc = ({ targetHtmlId, inData, inSkeletonType = "default" } = {}) => {
8
-
9
- // const specAsJsonToDom = jsonToSpec({
10
- // specJson: skeletonJson[inSkeletonType],
11
- // dataJson: inData
12
- // });
13
- const skeletonNeeded = skeletonJson[inSkeletonType];
14
-
15
- const specAsJsonToDom = jsonTraversal.transform(inData, skeletonNeeded);
16
-
17
-
18
- const container = document.getElementById(targetHtmlId);
19
-
20
- if (container) container.innerHTML = "";
21
-
22
- const createdElement = jsonToTag(specAsJsonToDom);
23
-
24
- if (Array.isArray(createdElement)) {
25
- // container.appendChild(createdElement)
26
- createdElement.forEach(element => container.append(element));
27
- } else {
28
- container.append(createdElement);
29
- };
30
- };
31
-
32
- export default startFunc;
@@ -1,38 +0,0 @@
1
- {
2
- "old": {
3
- "tagName": "datalist",
4
- "attributes": {
5
- "id": "LedgerName"
6
- },
7
- "jsonToSpec": {
8
- "operation": "loopArray",
9
- "source": "LedgerName",
10
- "template": {
11
- "tagName": "option",
12
- "attributes": {
13
- "value": "${}"
14
- },
15
- "textContent": "${}"
16
- }
17
- },
18
- "children": []
19
- },
20
- "default": {
21
- "mapping": {
22
- "tagName": "$datalist",
23
- "attributes": {
24
- "id": "$LedgerName"
25
- },
26
- "children": {
27
- "list": "LedgerName",
28
- "item": {
29
- "tagName": "$option",
30
- "attributes": {
31
- "value": ""
32
- },
33
- "textContent": ""
34
- }
35
- }
36
- }
37
- }
38
- }
@@ -1,27 +0,0 @@
1
- import clickFunc from "./clickFunc/index.js";
2
-
3
- /**
4
- * Story: Attach click event listener for Form action buttons
5
- */
6
- const startFunc = ({
7
- inTargetContainer,
8
- onSave,
9
- afterSave,
10
- onNew,
11
- onClear
12
- } = {}) => {
13
- if (!inTargetContainer) return;
14
-
15
- inTargetContainer.addEventListener("click", (event) => {
16
- clickFunc({
17
- inEvent: event,
18
- inFormContainer: inTargetContainer,
19
- onSave,
20
- afterSave,
21
- onNew,
22
- onClear
23
- });
24
- });
25
- };
26
-
27
- export default startFunc;
@@ -1,27 +0,0 @@
1
- /**
2
- * Step 1: Convert Form DOM inputs to clean JavaScript Object
3
- */
4
- const extractFormData = ({ inFormContainer } = {}) => {
5
- if (!inFormContainer) return {};
6
-
7
- const inputs = inFormContainer.querySelectorAll("input[name], select[name], textarea[name]");
8
- const data = {};
9
-
10
- inputs.forEach(input => {
11
- const key = input.name || input.getAttribute("name");
12
- if (!key) return;
13
-
14
- if (input.type === "checkbox") {
15
- data[key] = input.checked;
16
- } else if (input.type === "radio") {
17
- if (input.checked) data[key] = input.value;
18
- } else {
19
- data[key] = input.value;
20
- }
21
- });
22
-
23
- return data;
24
- };
25
-
26
- export { extractFormData };
27
- export default extractFormData;
@@ -1,24 +0,0 @@
1
- /**
2
- * Step 3: Handle New / Clear button action - reset inputs and trigger callbacks
3
- */
4
- const handleNew = ({ inEvent, inFormContainer, onNew, onClear } = {}) => {
5
- if (inFormContainer) {
6
- const inputs = inFormContainer.querySelectorAll("input[name], textarea[name]");
7
- inputs.forEach(input => {
8
- if (input.type === "checkbox" || input.type === "radio") {
9
- input.checked = false;
10
- } else {
11
- input.value = "";
12
- }
13
- });
14
- }
15
-
16
- if (typeof onNew === "function") {
17
- onNew({ inEvent });
18
- } else if (typeof onClear === "function") {
19
- onClear({ inEvent });
20
- }
21
- };
22
-
23
- export { handleNew };
24
- export default handleNew;
@@ -1,33 +0,0 @@
1
- import extractFormData from "./extractFormData.js";
2
-
3
- /**
4
- * Step 2: Handle Save button action - serialize form DOM and dispatch callbacks
5
- */
6
- const handleSave = ({ inEvent, inFormContainer, onSave, afterSave } = {}) => {
7
- const clickedButton = inEvent?.target?.closest("button");
8
- const formData = extractFormData({ inFormContainer });
9
-
10
- // Visual button feedback
11
- if (clickedButton) {
12
- const originalText = clickedButton.textContent;
13
- clickedButton.textContent = "Saved!";
14
- clickedButton.classList.replace("btn-primary", "btn-success");
15
- setTimeout(() => {
16
- clickedButton.textContent = originalText;
17
- clickedButton.classList.replace("btn-success", "btn-primary");
18
- }, 1000);
19
- }
20
-
21
- if (typeof onSave === "function") {
22
- onSave({ inData: formData, inEvent });
23
- }
24
-
25
- if (typeof afterSave === "function") {
26
- afterSave({ inData: formData, inEvent });
27
- }
28
-
29
- return formData;
30
- };
31
-
32
- export { handleSave };
33
- export default handleSave;
@@ -1,32 +0,0 @@
1
- import handleSave from "./handleSave.js";
2
- import handleNew from "./handleNew.js";
3
-
4
- /**
5
- * Main form click router: identifies button action and routes to dedicated handlers
6
- */
7
- const clickFunc = ({
8
- inEvent,
9
- inFormContainer,
10
- onSave,
11
- afterSave,
12
- onNew,
13
- onClear
14
- } = {}) => {
15
- const clickedButton = inEvent?.target?.closest("button");
16
- if (!clickedButton) return;
17
-
18
- const buttonId = clickedButton.id || "";
19
- const buttonAction = clickedButton.dataset.action || "";
20
- const buttonText = clickedButton.textContent.trim().toLowerCase();
21
-
22
- if (buttonId === "btn-form-save" || buttonAction === "save" || buttonText === "save") {
23
- return handleSave({ inEvent, inFormContainer, onSave, afterSave });
24
- }
25
-
26
- if (buttonId === "btn-form-new" || buttonAction === "new" || buttonText === "new" || buttonText === "clear") {
27
- return handleNew({ inEvent, inFormContainer, onNew, onClear });
28
- }
29
- };
30
-
31
- export { clickFunc };
32
- export default clickFunc;
@@ -1,87 +0,0 @@
1
- import jsonToSpec from "../../../jsonToSpec/v2/index.js";
2
- import jsonToTag from "../../../jsonToTag/v2/index.js";
3
- import attachFormClickEventListener from "./attachFormClickEventListener.js";
4
-
5
- import structureJson from './structure.json' with {type: 'json'};
6
-
7
- const startFunc = ({
8
- targetHtmlId,
9
- inTargetHtmlId,
10
- inFields = [],
11
- inData = {},
12
- inColumns = [],
13
- inVariant = "stacked",
14
- inSkeletonType,
15
- inShowLog = false,
16
- onSave,
17
- afterSave,
18
- onNew,
19
- onClear
20
- } = {}) => {
21
- const localTargetHtmlId = inTargetHtmlId ?? targetHtmlId;
22
- const localVariant = inSkeletonType ?? inVariant;
23
- const localShowLog = inShowLog;
24
-
25
- try {
26
- let fieldsArray = [];
27
-
28
- if (Array.isArray(inFields) && inFields.length > 0) {
29
- fieldsArray = inFields;
30
- } else if (Array.isArray(inColumns) && inColumns.length > 0) {
31
- fieldsArray = inColumns.map((col) => ({
32
- key: col.field ?? col.name ?? col.key,
33
- label: col.title ?? col.label ?? col.field ?? col.name,
34
- type: col.type ?? "text",
35
- value: inData?.[col.field ?? col.name ?? col.key] ?? col.value ?? "",
36
- readonly: col.readonly ? "true" : "",
37
- disabled: col.disabled ? "true" : ""
38
- }));
39
- } else if (typeof inData === "object" && inData !== null && !Array.isArray(inData)) {
40
- fieldsArray = Object.entries(inData).map(([key, value]) => ({
41
- key,
42
- label: key,
43
- type: "text",
44
- value: value ?? "",
45
- readonly: "",
46
- disabled: ""
47
- }));
48
- }
49
-
50
- const dataAsJson = { fields: fieldsArray };
51
-
52
- const rawStructure = structureJson[localVariant] ?? structureJson.stacked ?? structureJson;
53
- const targetStructure = structuredClone(rawStructure);
54
-
55
- if (localShowLog) console.log("form targetStructure : ", targetStructure);
56
-
57
- const specAsJsonToDom = jsonToSpec({ specJson: targetStructure, dataJson: dataAsJson, showLog: false });
58
- if (localShowLog) console.log("form specAsJsonToDom : ", specAsJsonToDom);
59
-
60
- const fromRenderer = jsonToTag(specAsJsonToDom);
61
-
62
- const html = (typeof localTargetHtmlId === "string")
63
- ? document.getElementById(localTargetHtmlId)
64
- : localTargetHtmlId;
65
-
66
- const containerToAttach = html || fromRenderer;
67
-
68
- // Attach modular click event listener for Save and New actions
69
- attachFormClickEventListener({
70
- inTargetContainer: containerToAttach,
71
- onSave,
72
- afterSave,
73
- onNew,
74
- onClear
75
- });
76
-
77
- if (!html) return fromRenderer;
78
-
79
- html.append(fromRenderer);
80
- return fromRenderer;
81
- } catch (error) {
82
- console.log("error : ", error);
83
- }
84
- };
85
-
86
- export { startFunc };
87
- export default startFunc;