json-renderers 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/README.md +128 -0
  2. package/docs/dist/v4/min.js +791 -0
  3. package/docs/dist/v5/min.js +800 -0
  4. package/docs/dist/v6/min.js +854 -0
  5. package/docs/dist/v8/min.js +1787 -0
  6. package/docs/dist/v9/min.js +1032 -0
  7. package/package.json +36 -0
  8. package/src/index.js +2 -0
  9. package/src/v5/dataLists/fragments.json +1 -0
  10. package/src/v5/dataLists/index.js +26 -0
  11. package/src/v5/dataLists/skeleton.json +20 -0
  12. package/src/v5/form/attachFormClickEventListener.js +27 -0
  13. package/src/v5/form/clickFunc/extractFormData.js +27 -0
  14. package/src/v5/form/clickFunc/handleNew.js +24 -0
  15. package/src/v5/form/clickFunc/handleSave.js +33 -0
  16. package/src/v5/form/clickFunc/index.js +32 -0
  17. package/src/v5/form/index.js +87 -0
  18. package/src/v5/form/structure.json +410 -0
  19. package/src/v5/index.js +150 -0
  20. package/src/v5/meta.js +6 -0
  21. package/src/v5/navTabs/fragments.json +59 -0
  22. package/src/v5/navTabs/index.js +82 -0
  23. package/src/v5/navTabs/skeleton.json +18 -0
  24. package/src/v5/registerGlobal.js +14 -0
  25. package/src/v5/select/fragments.json +1 -0
  26. package/src/v5/select/index.js +31 -0
  27. package/src/v5/select/skeleton.json +21 -0
  28. package/src/v5/table/attachTableClickEventListener.js +22 -0
  29. package/src/v5/table/buildTableDataAsJson.js +19 -0
  30. package/src/v5/table/buildTableDomElement.js +21 -0
  31. package/src/v5/table/buildTableStructureSpec.js +28 -0
  32. package/src/v5/table/clickFunc/v3/createTable.js +16 -0
  33. package/src/v5/table/clickFunc/v3/getContainer/extractClickedRowDetails.js +23 -0
  34. package/src/v5/table/clickFunc/v3/getContainer/getOrCreateChildTableContainer.js +21 -0
  35. package/src/v5/table/clickFunc/v3/getContainer/index.js +39 -0
  36. package/src/v5/table/clickFunc/v3/getContainer/isSameRowClickedToToggleOff.js +14 -0
  37. package/src/v5/table/clickFunc/v3/getContainer/resetAndShowChildTableContainer.js +12 -0
  38. package/src/v5/table/clickFunc/v3/index.js +21 -0
  39. package/src/v5/table/fragments.json +112 -0
  40. package/src/v5/table/index.js +72 -0
  41. package/src/v5/table/resolveTargetContainer.js +9 -0
  42. package/src/v5/table/skeleton.json +371 -0
  43. package/src/v6/dataLists/fragments.json +1 -0
  44. package/src/v6/dataLists/index.js +32 -0
  45. package/src/v6/dataLists/skeleton.json +38 -0
  46. package/src/v6/form/attachFormClickEventListener.js +27 -0
  47. package/src/v6/form/clickFunc/extractFormData.js +27 -0
  48. package/src/v6/form/clickFunc/handleNew.js +24 -0
  49. package/src/v6/form/clickFunc/handleSave.js +33 -0
  50. package/src/v6/form/clickFunc/index.js +32 -0
  51. package/src/v6/form/index.js +87 -0
  52. package/src/v6/form/structure.json +410 -0
  53. package/src/v6/index.js +150 -0
  54. package/src/v6/meta.js +6 -0
  55. package/src/v6/navTabs/fragments.json +59 -0
  56. package/src/v6/navTabs/index.js +82 -0
  57. package/src/v6/navTabs/skeleton.json +18 -0
  58. package/src/v6/registerGlobal.js +14 -0
  59. package/src/v6/select/fragments.json +1 -0
  60. package/src/v6/select/index.js +34 -0
  61. package/src/v6/select/skeleton.json +23 -0
  62. package/src/v6/table/attachTableClickEventListener.js +22 -0
  63. package/src/v6/table/buildTableDataAsJson.js +19 -0
  64. package/src/v6/table/buildTableDomElement.js +21 -0
  65. package/src/v6/table/buildTableStructureSpec.js +28 -0
  66. package/src/v6/table/clickFunc/v3/createTable.js +16 -0
  67. package/src/v6/table/clickFunc/v3/getContainer/extractClickedRowDetails.js +23 -0
  68. package/src/v6/table/clickFunc/v3/getContainer/getOrCreateChildTableContainer.js +21 -0
  69. package/src/v6/table/clickFunc/v3/getContainer/index.js +39 -0
  70. package/src/v6/table/clickFunc/v3/getContainer/isSameRowClickedToToggleOff.js +14 -0
  71. package/src/v6/table/clickFunc/v3/getContainer/resetAndShowChildTableContainer.js +12 -0
  72. package/src/v6/table/clickFunc/v3/index.js +21 -0
  73. package/src/v6/table/fragments.json +112 -0
  74. package/src/v6/table/index.js +72 -0
  75. package/src/v6/table/resolveTargetContainer.js +9 -0
  76. package/src/v6/table/skeleton.json +371 -0
  77. package/src/v7/common/deriveColumnsFromData.js +20 -0
  78. package/src/v7/dataLists/fragments.json +1 -0
  79. package/src/v7/dataLists/index.js +32 -0
  80. package/src/v7/dataLists/skeleton.json +38 -0
  81. package/src/v7/form/attachFormClickEventListener.js +27 -0
  82. package/src/v7/form/clickFunc/extractFormData.js +27 -0
  83. package/src/v7/form/clickFunc/handleNew.js +24 -0
  84. package/src/v7/form/clickFunc/handleSave.js +33 -0
  85. package/src/v7/form/clickFunc/index.js +32 -0
  86. package/src/v7/form/index.js +87 -0
  87. package/src/v7/form/structure.json +410 -0
  88. package/src/v7/index.js +141 -0
  89. package/src/v7/meta.js +6 -0
  90. package/src/v7/navTabs/fragments.json +59 -0
  91. package/src/v7/navTabs/index.js +82 -0
  92. package/src/v7/navTabs/skeleton.json +18 -0
  93. package/src/v7/registerGlobal.js +14 -0
  94. package/src/v7/select/fragments.json +1 -0
  95. package/src/v7/select/index.js +34 -0
  96. package/src/v7/select/skeleton.json +23 -0
  97. package/src/v7/table/attachTableClickEventListener.js +28 -0
  98. package/src/v7/table/buildTableDataAsJson.js +25 -0
  99. package/src/v7/table/buildTableDomElement.js +25 -0
  100. package/src/v7/table/buildTableStructureSpec.js +33 -0
  101. package/src/v7/table/clickFunc/v3/createTable.js +20 -0
  102. package/src/v7/table/clickFunc/v3/getContainer/extractClickedRowDetails.js +27 -0
  103. package/src/v7/table/clickFunc/v3/getContainer/getOrCreateChildTableContainer.js +24 -0
  104. package/src/v7/table/clickFunc/v3/getContainer/index.js +44 -0
  105. package/src/v7/table/clickFunc/v3/getContainer/isSameRowClickedToToggleOff.js +17 -0
  106. package/src/v7/table/clickFunc/v3/getContainer/resetAndShowChildTableContainer.js +15 -0
  107. package/src/v7/table/clickFunc/v3/index.js +35 -0
  108. package/src/v7/table/fragments.json +112 -0
  109. package/src/v7/table/index.js +82 -0
  110. package/src/v7/table/resolveTargetContainer.js +11 -0
  111. package/src/v7/table/skeleton.json +371 -0
  112. package/src/v8/common/deriveColumnsFromData.js +20 -0
  113. package/src/v8/dataLists/fragments.json +1 -0
  114. package/src/v8/dataLists/index.js +32 -0
  115. package/src/v8/dataLists/skeleton.json +38 -0
  116. package/src/v8/form/attachFormClickEventListener.js +27 -0
  117. package/src/v8/form/clickFunc/extractFormData.js +27 -0
  118. package/src/v8/form/clickFunc/handleNew.js +24 -0
  119. package/src/v8/form/clickFunc/handleSave.js +33 -0
  120. package/src/v8/form/clickFunc/index.js +32 -0
  121. package/src/v8/form/index.js +87 -0
  122. package/src/v8/form/structure.json +410 -0
  123. package/src/v8/index.js +141 -0
  124. package/src/v8/meta.js +6 -0
  125. package/src/v8/navTabs/fragments.json +59 -0
  126. package/src/v8/navTabs/index.js +82 -0
  127. package/src/v8/navTabs/skeleton.json +18 -0
  128. package/src/v8/registerGlobal.js +14 -0
  129. package/src/v8/select/fragments.json +1 -0
  130. package/src/v8/select/index.js +34 -0
  131. package/src/v8/select/skeleton.json +23 -0
  132. package/src/v8/table/attachTableClickEventListener.js +28 -0
  133. package/src/v8/table/buildTableDataAsJson.js +25 -0
  134. package/src/v8/table/buildTableDomElement.js +25 -0
  135. package/src/v8/table/buildTableStructureSpec.js +33 -0
  136. package/src/v8/table/clickFunc/v3/createTable.js +20 -0
  137. package/src/v8/table/clickFunc/v3/getContainer/extractClickedRowDetails.js +27 -0
  138. package/src/v8/table/clickFunc/v3/getContainer/getOrCreateChildTableContainer.js +24 -0
  139. package/src/v8/table/clickFunc/v3/getContainer/index.js +44 -0
  140. package/src/v8/table/clickFunc/v3/getContainer/isSameRowClickedToToggleOff.js +17 -0
  141. package/src/v8/table/clickFunc/v3/getContainer/resetAndShowChildTableContainer.js +15 -0
  142. package/src/v8/table/clickFunc/v3/index.js +35 -0
  143. package/src/v8/table/fragments.json +112 -0
  144. package/src/v8/table/index.js +82 -0
  145. package/src/v8/table/resolveTargetContainer.js +11 -0
  146. package/src/v8/table/skeleton.json +371 -0
  147. package/src/v9/common/deriveColumnsFromData.js +20 -0
  148. package/src/v9/dataLists/fragments.json +1 -0
  149. package/src/v9/dataLists/index.js +32 -0
  150. package/src/v9/dataLists/skeleton.json +38 -0
  151. package/src/v9/form/attachFormClickEventListener.js +27 -0
  152. package/src/v9/form/clickFunc/extractFormData.js +27 -0
  153. package/src/v9/form/clickFunc/handleNew.js +24 -0
  154. package/src/v9/form/clickFunc/handleSave.js +33 -0
  155. package/src/v9/form/clickFunc/index.js +32 -0
  156. package/src/v9/form/index.js +87 -0
  157. package/src/v9/form/structure.json +410 -0
  158. package/src/v9/index.js +141 -0
  159. package/src/v9/meta.js +6 -0
  160. package/src/v9/navTabs/fragments.json +59 -0
  161. package/src/v9/navTabs/index.js +82 -0
  162. package/src/v9/navTabs/skeleton.json +18 -0
  163. package/src/v9/registerGlobal.js +14 -0
  164. package/src/v9/select/fragments.json +1 -0
  165. package/src/v9/select/index.js +34 -0
  166. package/src/v9/select/skeleton.json +23 -0
  167. package/src/v9/table/index.js +35 -0
  168. package/src/v9/table/skeleton.json +47 -0
@@ -0,0 +1,87 @@
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;
@@ -0,0 +1,410 @@
1
+ {
2
+ "stacked": {
3
+ "tagName": "div",
4
+ "attributes": {
5
+ "class": "card shadow-sm"
6
+ },
7
+ "children": [
8
+ {
9
+ "tagName": "div",
10
+ "attributes": {
11
+ "class": "card-header fw-semibold"
12
+ },
13
+ "children": [
14
+ {
15
+ "tagName": "span",
16
+ "textContent": "Ledger Details"
17
+ }
18
+ ]
19
+ },
20
+ {
21
+ "tagName": "div",
22
+ "attributes": {
23
+ "class": "card-body"
24
+ },
25
+ "jsonToSpec": {
26
+ "operation": "loopArray",
27
+ "source": "fields",
28
+ "template": {
29
+ "tagName": "div",
30
+ "attributes": {
31
+ "class": "mb-3"
32
+ },
33
+ "children": [
34
+ {
35
+ "tagName": "label",
36
+ "attributes": {
37
+ "class": "form-label"
38
+ },
39
+ "textContent": "${label}"
40
+ },
41
+ {
42
+ "tagName": "input",
43
+ "attributes": {
44
+ "type": "${type}",
45
+ "class": "form-control",
46
+ "value": "${value}",
47
+ "name": "${key}",
48
+ "readonly": "${readonly}",
49
+ "disabled": "${disabled}"
50
+ }
51
+ }
52
+ ]
53
+ }
54
+ },
55
+ "jsonToSpec1": {
56
+ "operation": "iterate",
57
+ "source": "fields",
58
+ "template": {
59
+ "tagName": "div",
60
+ "attributes": {
61
+ "class": "mb-3"
62
+ },
63
+ "children": [
64
+ {
65
+ "tagName": "label",
66
+ "attributes": {
67
+ "class": "form-label"
68
+ },
69
+ "textContent": "${label}"
70
+ },
71
+ {
72
+ "tagName": "input",
73
+ "attributes": {
74
+ "type": "text",
75
+ "class": "form-control",
76
+ "value": "${value}",
77
+ "readonly": "true"
78
+ }
79
+ }
80
+ ]
81
+ }
82
+ },
83
+ "children": []
84
+ }
85
+ ]
86
+ },
87
+ "stackedWithButtons": {
88
+ "tagName": "div",
89
+ "attributes": {
90
+ "class": "card shadow-sm"
91
+ },
92
+ "children": [
93
+ {
94
+ "tagName": "div",
95
+ "attributes": {
96
+ "class": "card-header fw-semibold"
97
+ },
98
+ "children": [
99
+ {
100
+ "tagName": "span",
101
+ "textContent": "Ledger Details"
102
+ }
103
+ ]
104
+ },
105
+ {
106
+ "tagName": "div",
107
+ "attributes": {
108
+ "class": "card-body"
109
+ },
110
+ "jsonToSpec": {
111
+ "operation": "loopArray",
112
+ "source": "fields",
113
+ "template": {
114
+ "tagName": "div",
115
+ "attributes": {
116
+ "class": "mb-3"
117
+ },
118
+ "children": [
119
+ {
120
+ "tagName": "label",
121
+ "attributes": {
122
+ "class": "form-label"
123
+ },
124
+ "textContent": "${label}"
125
+ },
126
+ {
127
+ "tagName": "input",
128
+ "attributes": {
129
+ "type": "${type}",
130
+ "class": "form-control",
131
+ "value": "${value}",
132
+ "name": "${key}",
133
+ "readonly": "${readonly}",
134
+ "disabled": "${disabled}"
135
+ }
136
+ }
137
+ ]
138
+ }
139
+ },
140
+ "children": []
141
+ },
142
+ {
143
+ "tagName": "div",
144
+ "attributes": {
145
+ "class": "card-footer bg-white border-top-0 d-flex justify-content-end gap-2 pt-0 pb-3"
146
+ },
147
+ "children": [
148
+ {
149
+ "tagName": "button",
150
+ "attributes": {
151
+ "type": "button",
152
+ "class": "btn btn-outline-secondary btn-sm",
153
+ "id": "btn-form-new"
154
+ },
155
+ "textContent": "New"
156
+ },
157
+ {
158
+ "tagName": "button",
159
+ "attributes": {
160
+ "type": "button",
161
+ "class": "btn btn-primary btn-sm",
162
+ "id": "btn-form-save"
163
+ },
164
+ "textContent": "Save"
165
+ }
166
+ ]
167
+ }
168
+ ]
169
+ },
170
+ "inline": {
171
+ "tagName": "div",
172
+ "attributes": {
173
+ "class": "card shadow-sm"
174
+ },
175
+ "children": [
176
+ {
177
+ "tagName": "div",
178
+ "attributes": {
179
+ "class": "card-header fw-semibold"
180
+ },
181
+ "children": [
182
+ {
183
+ "tagName": "span",
184
+ "textContent": "Ledger Details"
185
+ }
186
+ ]
187
+ },
188
+ {
189
+ "tagName": "div",
190
+ "attributes": {
191
+ "class": "card-body"
192
+ },
193
+ "jsonToSpec": {
194
+ "operation": "loopArray",
195
+ "source": "fields",
196
+ "template": {
197
+ "tagName": "div",
198
+ "attributes": {
199
+ "class": "row mb-2 align-items-center"
200
+ },
201
+ "children": [
202
+ {
203
+ "tagName": "label",
204
+ "attributes": {
205
+ "class": "col-sm-4 col-form-label text-sm-end mb-0 fw-semibold text-secondary small"
206
+ },
207
+ "textContent": "${label}"
208
+ },
209
+ {
210
+ "tagName": "div",
211
+ "attributes": {
212
+ "class": "col-sm-8"
213
+ },
214
+ "children": [
215
+ {
216
+ "tagName": "input",
217
+ "attributes": {
218
+ "class": "form-control",
219
+ "name": "${key}",
220
+ "value": "${value}",
221
+ "list": "${list}",
222
+ "type": "${type}"
223
+ }
224
+ }
225
+ ]
226
+ }
227
+ ]
228
+ }
229
+ },
230
+ "jsonToSpec1": {
231
+ "operation": "iterate",
232
+ "source": "fields",
233
+ "template": {
234
+ "tagName": "div",
235
+ "attributes": {
236
+ "class": "row mb-2 align-items-center"
237
+ },
238
+ "children": [
239
+ {
240
+ "tagName": "label",
241
+ "attributes": {
242
+ "class": "col-4 col-form-label fw-medium text-end"
243
+ },
244
+ "textContent": "${label}"
245
+ },
246
+ {
247
+ "tagName": "div",
248
+ "attributes": {
249
+ "class": "col-8"
250
+ },
251
+ "children": [
252
+ {
253
+ "tagName": "input",
254
+ "attributes": {
255
+ "type": "text",
256
+ "class": "form-control form-control-sm",
257
+ "value": "${value}",
258
+ "list": "${list}"
259
+ }
260
+ }
261
+ ]
262
+ }
263
+ ]
264
+ }
265
+ },
266
+ "children": []
267
+ }
268
+ ]
269
+ },
270
+ "inlineWithButtons": {
271
+ "tagName": "div",
272
+ "attributes": {
273
+ "class": "card shadow-sm"
274
+ },
275
+ "children": [
276
+ {
277
+ "tagName": "div",
278
+ "attributes": {
279
+ "class": "card-header fw-semibold"
280
+ },
281
+ "children": [
282
+ {
283
+ "tagName": "span",
284
+ "textContent": "Ledger Details"
285
+ }
286
+ ]
287
+ },
288
+ {
289
+ "tagName": "div",
290
+ "attributes": {
291
+ "class": "card-body"
292
+ },
293
+ "jsonToSpec": {
294
+ "operation": "iterate",
295
+ "source": "fields",
296
+ "template": {
297
+ "tagName": "div",
298
+ "attributes": {
299
+ "class": "row mb-2 align-items-center"
300
+ },
301
+ "children": [
302
+ {
303
+ "tagName": "label",
304
+ "attributes": {
305
+ "class": "col-4 col-form-label fw-medium text-end"
306
+ },
307
+ "textContent": "${label}"
308
+ },
309
+ {
310
+ "tagName": "div",
311
+ "attributes": {
312
+ "class": "col-6"
313
+ },
314
+ "children": [
315
+ {
316
+ "tagName": "input",
317
+ "attributes": {
318
+ "type": "text",
319
+ "class": "form-control form-control-sm",
320
+ "value": "${value}",
321
+ "readonly": "true"
322
+ }
323
+ }
324
+ ]
325
+ },
326
+ {
327
+ "tagName": "div",
328
+ "attributes": {
329
+ "class": "col-2 d-flex gap-1"
330
+ },
331
+ "children": [
332
+ {
333
+ "tagName": "button",
334
+ "attributes": {
335
+ "type": "button",
336
+ "class": "btn btn-sm btn-outline-primary"
337
+ },
338
+ "textContent": "Edit"
339
+ },
340
+ {
341
+ "tagName": "button",
342
+ "attributes": {
343
+ "type": "button",
344
+ "class": "btn btn-sm btn-outline-secondary"
345
+ },
346
+ "textContent": "Copy"
347
+ }
348
+ ]
349
+ }
350
+ ]
351
+ }
352
+ },
353
+ "children": []
354
+ }
355
+ ]
356
+ },
357
+ "list": {
358
+ "tagName": "div",
359
+ "attributes": {
360
+ "class": "card shadow-sm"
361
+ },
362
+ "children": [
363
+ {
364
+ "tagName": "div",
365
+ "attributes": {
366
+ "class": "card-header fw-semibold"
367
+ },
368
+ "children": [
369
+ {
370
+ "tagName": "span",
371
+ "textContent": "Ledger Details"
372
+ }
373
+ ]
374
+ },
375
+ {
376
+ "tagName": "ul",
377
+ "attributes": {
378
+ "class": "list-group list-group-flush"
379
+ },
380
+ "jsonToSpec": {
381
+ "operation": "iterate",
382
+ "source": "fields",
383
+ "template": {
384
+ "tagName": "li",
385
+ "attributes": {
386
+ "class": "list-group-item d-flex justify-content-between align-items-center"
387
+ },
388
+ "children": [
389
+ {
390
+ "tagName": "span",
391
+ "attributes": {
392
+ "class": "text-muted"
393
+ },
394
+ "textContent": "${label}"
395
+ },
396
+ {
397
+ "tagName": "span",
398
+ "attributes": {
399
+ "class": "fw-medium"
400
+ },
401
+ "textContent": "${value}"
402
+ }
403
+ ]
404
+ }
405
+ },
406
+ "children": []
407
+ }
408
+ ]
409
+ }
410
+ }
@@ -0,0 +1,141 @@
1
+ import registerGlobal from "./registerGlobal.js";
2
+
3
+ import renderTable from "./table/index.js";
4
+ // import renderNavTabs from "./navTabs/index.js";
5
+ // import renderForm from "./form/index.js";
6
+
7
+ import renderDataList from "./dataLists/index.js";
8
+ import renderSelect from "./select/index.js";
9
+
10
+ const RENDERER_MAP = {
11
+ table: renderTable,
12
+ datalist: renderDataList,
13
+ select: renderSelect
14
+ };
15
+
16
+
17
+ /**
18
+ * Unified Renderer
19
+ * Dispatches to the corresponding renderer strategy (table, navTabs, form)
20
+ * based on the provided type.
21
+ */
22
+
23
+ // render({ type: "select", data, targetHtmlId: "dom-render-container" });
24
+
25
+ const render = ({
26
+ type = "table",
27
+ targetHtmlId,
28
+ data,
29
+ classToApply,
30
+ inTargetHtmlId,
31
+ inData,
32
+ columns,
33
+ inColumns,
34
+ fields,
35
+ inFields,
36
+ tabs,
37
+ inTabs,
38
+ options,
39
+ inOptions,
40
+ datalistId,
41
+ inDatalistId,
42
+ listId,
43
+ inListId,
44
+ id,
45
+ valueField,
46
+ inValueField,
47
+ labelField,
48
+ inLabelField,
49
+ colGroup,
50
+ inColGroup,
51
+ footerData,
52
+ inFooterData,
53
+ config,
54
+ inConfig,
55
+ variant,
56
+ skeletonType,
57
+ inSkeletonType,
58
+ showLog = false,
59
+ inShowLog,
60
+ ...restProps
61
+ } = {}) => {
62
+ const rawType = type;
63
+ const resolvedType = typeof rawType === "string" ? rawType.toLowerCase() : "table";
64
+ const renderer = RENDERER_MAP[resolvedType];
65
+
66
+ if (!renderer) {
67
+ console.error(
68
+ `[Renderer] Unknown renderer type "${rawType}". Available types: ${Object.keys(RENDERER_MAP).join(", ")}`
69
+ );
70
+ return null;
71
+ }
72
+
73
+ const localTargetHtmlId = inTargetHtmlId ?? targetHtmlId;
74
+ const localData = inData ?? data;
75
+ const localColumns = inColumns ?? columns;
76
+ const localFields = inFields ?? fields;
77
+ const localTabs = inTabs ?? tabs;
78
+ const localOptions = inOptions ?? options ?? localData;
79
+ const localSkeletonType = inSkeletonType ?? skeletonType ?? variant ?? "default";
80
+ const localShowLog = inShowLog ?? showLog ?? false;
81
+
82
+ if (resolvedType === "form") {
83
+ return renderer({
84
+ targetHtmlId: localTargetHtmlId,
85
+ inFields: localFields,
86
+ inData: localData,
87
+ inColumns: localColumns,
88
+ inVariant: localSkeletonType,
89
+ inSkeletonType: localSkeletonType,
90
+ inShowLog: localShowLog,
91
+ onSave: restProps?.onSave,
92
+ afterSave: restProps?.afterSave,
93
+ onNew: restProps?.onNew
94
+ });
95
+ }
96
+
97
+ if (resolvedType === "navtabs" || resolvedType === "nav" || resolvedType === "tabs") {
98
+ return renderer({
99
+ targetHtmlId: localTargetHtmlId,
100
+ inTabs: localTabs,
101
+ inData: localData,
102
+ inSkeletonType: localSkeletonType,
103
+ inShowLog: localShowLog
104
+ });
105
+ }
106
+
107
+ if (resolvedType === "datalist" || resolvedType === "data-list") {
108
+ return renderer({
109
+ targetHtmlId: localTargetHtmlId,
110
+ inData: localData,
111
+ inSkeletonType: localSkeletonType,
112
+ inShowLog: localShowLog
113
+ });
114
+ }
115
+
116
+ if (resolvedType === "select") {
117
+ return renderer({
118
+ targetHtmlId: localTargetHtmlId,
119
+ inData: localData,
120
+ inSkeletonType: localSkeletonType,
121
+ inShowLog: localShowLog,
122
+ inClassToApply: classToApply
123
+ });
124
+ };
125
+
126
+ // Default to table renderer
127
+ return renderer({
128
+ targetHtmlId: localTargetHtmlId,
129
+ inColumns: localColumns,
130
+ inData: localData,
131
+ inColGroup: inColGroup ?? colGroup,
132
+ inFooterData: inFooterData ?? footerData ?? [],
133
+ inConfig: inConfig ?? config ?? {},
134
+ inSkeletonType: localSkeletonType,
135
+ inShowLog: localShowLog
136
+ });
137
+ };
138
+
139
+ registerGlobal(render);
140
+
141
+ export default render;
package/src/v7/meta.js ADDED
@@ -0,0 +1,6 @@
1
+ export const meta = {
2
+ version: "v4.0.0",
3
+ description: "build table from store data and render to DOM uses json-to-spec, json-to-dom under the hood"
4
+ };
5
+
6
+ export default meta;