json-renderers-build 1.9.2 → 1.10.2
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.
- package/package.json +2 -2
- package/src/index.js +2 -2
- package/src/v10/index.js +42 -0
- package/src/{v2 → v10}/meta.js +1 -1
- package/src/v10/select/index.js +21 -0
- package/src/{v6/selectOptionsOnly → v10/select/options}/index.js +2 -4
- package/src/{v4/selectOptionsOnly → v10/select/options}/skeleton.json +1 -1
- package/src/v10/table/footer/empty/cell/index.js +5 -0
- package/src/v10/table/footer/empty/cell/tag.json +6 -0
- package/src/v10/table/footer/empty/index.js +6 -0
- package/src/v10/table/footer/empty/row/index.js +10 -0
- package/src/v10/table/footer/empty/row/tag.json +7 -0
- package/src/v10/table/footer/index.js +28 -0
- package/src/v10/table/footer/inputs/cell/index.js +15 -0
- package/src/v10/table/footer/inputs/cell/tag.json +7 -0
- package/src/v10/table/footer/inputs/index.js +6 -0
- package/src/v10/table/footer/inputs/input/tag.json +9 -0
- package/src/v10/table/footer/inputs/row/index.js +10 -0
- package/src/v10/table/footer/inputs/row/tag.json +7 -0
- package/src/v10/table/footer/inputsWithSave/button/tag.json +8 -0
- package/src/v10/table/footer/inputsWithSave/cell/index.js +20 -0
- package/src/v10/table/footer/inputsWithSave/cell/tag.json +7 -0
- package/src/v10/table/footer/inputsWithSave/index.js +6 -0
- package/src/v10/table/footer/inputsWithSave/input/tag.json +9 -0
- package/src/v10/table/footer/inputsWithSave/row/index.js +13 -0
- package/src/v10/table/footer/inputsWithSave/row/tag.json +7 -0
- package/src/v10/table/footer/tag.json +7 -0
- package/src/v10/table/footer/totals/cell/index.js +21 -0
- package/src/v10/table/footer/totals/cell/tag.json +7 -0
- package/src/v10/table/footer/totals/index.js +6 -0
- package/src/v10/table/footer/totals/row/index.js +12 -0
- package/src/v10/table/footer/totals/row/tag.json +7 -0
- package/src/v10/table/index.js +33 -0
- package/src/v10/table/options/index.js +16 -0
- package/src/v10/table/options/showOptions/index.js +39 -0
- package/src/v10/table/options/showSerial/index.js +19 -0
- package/src/v10/table/render-requests.json +107 -0
- package/src/v10/table/table/body/cell/index.js +12 -0
- package/src/v10/table/table/body/cell/tag.json +7 -0
- package/src/v10/table/table/body/index.js +17 -0
- package/src/v10/table/table/body/row/index.js +18 -0
- package/src/v10/table/table/body/row/tag.json +4 -0
- package/src/v10/table/table/body/tag.json +4 -0
- package/src/v10/table/table/head/cell/index.js +12 -0
- package/src/v10/table/table/head/cell/tag.json +7 -0
- package/src/v10/table/table/head/index.js +16 -0
- package/src/v10/table/table/head/row/index.js +14 -0
- package/src/v10/table/table/head/row/tag.json +4 -0
- package/src/v10/table/table/head/tag.json +4 -0
- package/src/v10/table/table/index.js +36 -0
- package/src/v10/table/table/tag.json +7 -0
- package/src/v10/tableFromSpec/footer/empty/cell/index.js +5 -0
- package/src/v10/tableFromSpec/footer/empty/cell/tag.json +6 -0
- package/src/v10/tableFromSpec/footer/empty/index.js +6 -0
- package/src/v10/tableFromSpec/footer/empty/row/index.js +10 -0
- package/src/v10/tableFromSpec/footer/empty/row/tag.json +7 -0
- package/src/v10/tableFromSpec/footer/index.js +28 -0
- package/src/v10/tableFromSpec/footer/inputs/cell/index.js +15 -0
- package/src/v10/tableFromSpec/footer/inputs/cell/tag.json +7 -0
- package/src/v10/tableFromSpec/footer/inputs/index.js +6 -0
- package/src/v10/tableFromSpec/footer/inputs/input/tag.json +9 -0
- package/src/v10/tableFromSpec/footer/inputs/row/index.js +10 -0
- package/src/v10/tableFromSpec/footer/inputs/row/tag.json +7 -0
- package/src/v10/tableFromSpec/footer/inputsWithSave/button/tag.json +8 -0
- package/src/v10/tableFromSpec/footer/inputsWithSave/cell/index.js +20 -0
- package/src/v10/tableFromSpec/footer/inputsWithSave/cell/tag.json +7 -0
- package/src/v10/tableFromSpec/footer/inputsWithSave/index.js +6 -0
- package/src/v10/tableFromSpec/footer/inputsWithSave/input/tag.json +9 -0
- package/src/v10/tableFromSpec/footer/inputsWithSave/row/index.js +13 -0
- package/src/v10/tableFromSpec/footer/inputsWithSave/row/tag.json +7 -0
- package/src/v10/tableFromSpec/footer/tag.json +7 -0
- package/src/v10/tableFromSpec/footer/totals/cell/index.js +21 -0
- package/src/v10/tableFromSpec/footer/totals/cell/tag.json +7 -0
- package/src/v10/tableFromSpec/footer/totals/index.js +6 -0
- package/src/v10/tableFromSpec/footer/totals/row/index.js +12 -0
- package/src/v10/tableFromSpec/footer/totals/row/tag.json +7 -0
- package/src/v10/tableFromSpec/index.js +32 -0
- package/src/v10/tableFromSpec/options/index.js +18 -0
- package/src/v10/tableFromSpec/options/showOptions/index.js +39 -0
- package/src/v10/tableFromSpec/options/showSerial/index.js +20 -0
- package/src/v10/tableFromSpec/render-requests.json +107 -0
- package/src/v10/tableFromSpec/table/body/index.js +16 -0
- package/src/v10/tableFromSpec/table/body/spec.json +16 -0
- package/src/v10/tableFromSpec/table/body/tag.json +4 -0
- package/src/v10/tableFromSpec/table/findKey.js +17 -0
- package/src/v10/tableFromSpec/table/head/index.js +19 -0
- package/src/v10/tableFromSpec/table/head/spec.json +13 -0
- package/src/v10/tableFromSpec/table/index.js +22 -0
- package/src/v10/tableFromSpec/table/tag.json +24 -0
- package/src/v1/index.js +0 -62
- package/src/v1/meta.js +0 -6
- package/src/v1/registerGlobal.js +0 -14
- package/src/v1/select/index.js +0 -32
- package/src/v1/select/skeleton.json +0 -18
- package/src/v1/table/index.js +0 -36
- package/src/v1/table/skeleton.json +0 -47
- package/src/v2/common/deriveColumnsFromData.js +0 -20
- package/src/v2/index.js +0 -62
- package/src/v2/select/index.js +0 -32
- package/src/v2/select/skeleton.json +0 -18
- package/src/v2/table/index.js +0 -23
- package/src/v2/table/skeleton.json +0 -47
- package/src/v3/common/deriveColumnsFromData.js +0 -20
- package/src/v3/index.js +0 -40
- package/src/v3/meta.js +0 -6
- package/src/v3/registerGlobal.js +0 -14
- package/src/v3/select/index.js +0 -18
- package/src/v3/select/skeleton.json +0 -18
- package/src/v3/selectOptionsOnly/index.js +0 -18
- package/src/v3/selectOptionsOnly/skeleton.json +0 -14
- package/src/v3/table/index.js +0 -20
- package/src/v3/table/skeleton.json +0 -47
- package/src/v4/common/deriveColumnsFromData.js +0 -20
- package/src/v4/index.js +0 -40
- package/src/v4/meta.js +0 -6
- package/src/v4/registerGlobal.js +0 -14
- package/src/v4/select/index.js +0 -20
- package/src/v4/selectOptionsOnly/index.js +0 -19
- package/src/v4/table/index.js +0 -20
- package/src/v4/table/skeleton.json +0 -47
- package/src/v5/common/deriveColumnsFromData.js +0 -20
- package/src/v5/index.js +0 -40
- package/src/v5/meta.js +0 -6
- package/src/v5/registerGlobal.js +0 -14
- package/src/v5/select/index.js +0 -20
- package/src/v5/select/skeleton.json +0 -7
- package/src/v5/selectOptionsOnly/index.js +0 -19
- package/src/v5/selectOptionsOnly/skeleton.json +0 -17
- package/src/v5/table/index.js +0 -20
- package/src/v5/table/skeleton.json +0 -47
- package/src/v5/tableHeadCells/index.js +0 -19
- package/src/v5/tableHeadCells/skeleton.json +0 -17
- package/src/v6/common/deriveColumnsFromData.js +0 -20
- package/src/v6/index.js +0 -40
- package/src/v6/meta.js +0 -6
- package/src/v6/registerGlobal.js +0 -14
- package/src/v6/select/index.js +0 -20
- package/src/v6/select/skeleton.json +0 -7
- package/src/v6/selectOptionsOnly/skeleton.json +0 -17
- package/src/v6/table/index.js +0 -20
- package/src/v6/table/skeleton.json +0 -47
- package/src/v6/tableHeadCells/index.js +0 -19
- package/src/v6/tableHeadCells/skeleton.json +0 -17
- /package/src/{v1 → v10}/common/deriveColumnsFromData.js +0 -0
- /package/src/{v2 → v10}/registerGlobal.js +0 -0
- /package/src/{v4 → v10}/select/skeleton.json +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "json-renderers-build",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.2",
|
|
4
4
|
"description": "Headless component specification builder for json-renderers, compiling UI skeletons and data into JSON-to-DOM specs using json-to-spec",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.js",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"vite": "^5.4.2"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@keshavsoft/json-transformer": "^1.
|
|
44
|
+
"@keshavsoft/json-transformer": "^1.15.2",
|
|
45
45
|
"json-to-spec": "^32.1.3"
|
|
46
46
|
}
|
|
47
47
|
}
|
package/src/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from "./
|
|
2
|
-
export { default } from "./
|
|
1
|
+
export * from "./v10/index.js";
|
|
2
|
+
export { default } from "./v10/index.js";
|
package/src/v10/index.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import registerGlobal from "./registerGlobal.js";
|
|
2
|
+
|
|
3
|
+
import renderTable from "./table/index.js";
|
|
4
|
+
import renderSelect, { renderSelectOptions } from "./select/index.js";
|
|
5
|
+
import tableFromSpec from "./tableFromSpec/index.js";
|
|
6
|
+
|
|
7
|
+
const RENDERER_MAP = {
|
|
8
|
+
table: renderTable,
|
|
9
|
+
select: renderSelect,
|
|
10
|
+
selectOptionsOnly: renderSelectOptions,
|
|
11
|
+
tableFromSpec
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const render = ({
|
|
15
|
+
type = "table",
|
|
16
|
+
data,
|
|
17
|
+
columns,
|
|
18
|
+
options
|
|
19
|
+
}) => {
|
|
20
|
+
const rawType = type;
|
|
21
|
+
const renderer = RENDERER_MAP[rawType];
|
|
22
|
+
// console.log("rawType : ", rawType, renderer);
|
|
23
|
+
const localData = data;
|
|
24
|
+
const localColumns = columns;
|
|
25
|
+
|
|
26
|
+
const createdRenderer = renderer({
|
|
27
|
+
inColumns: localColumns,
|
|
28
|
+
inData: localData,
|
|
29
|
+
options
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
return createdRenderer;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
registerGlobal(render);
|
|
36
|
+
|
|
37
|
+
export {
|
|
38
|
+
renderTable,
|
|
39
|
+
renderSelect,
|
|
40
|
+
renderSelectOptions
|
|
41
|
+
};
|
|
42
|
+
export default render;
|
package/src/{v2 → v10}/meta.js
RENAMED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import renderSelectOptions from "./options/index.js";
|
|
2
|
+
|
|
3
|
+
import skeletonJson from './skeleton.json' with { type: 'json' };
|
|
4
|
+
|
|
5
|
+
const startFunc = ({
|
|
6
|
+
inData,
|
|
7
|
+
}) => {
|
|
8
|
+
const localData = inData;
|
|
9
|
+
|
|
10
|
+
let localChildren = renderSelectOptions({
|
|
11
|
+
inData: localData
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
const select = structuredClone(skeletonJson);
|
|
15
|
+
select.children = localChildren;
|
|
16
|
+
|
|
17
|
+
return select;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export { renderSelectOptions };
|
|
21
|
+
export default startFunc;
|
|
@@ -2,16 +2,14 @@ import jsonTransform from "@keshavsoft/json-transformer";
|
|
|
2
2
|
|
|
3
3
|
import skeletonJson from './skeleton.json' with { type: 'json' };
|
|
4
4
|
|
|
5
|
-
// --- Story of Table Render ---
|
|
6
5
|
const startFunc = ({
|
|
7
6
|
inData,
|
|
8
|
-
}
|
|
9
|
-
const localData = inData
|
|
7
|
+
}) => {
|
|
8
|
+
const localData = inData;
|
|
10
9
|
|
|
11
10
|
let specAsJsonToDom = jsonTransform({
|
|
12
11
|
children: localData
|
|
13
12
|
}, skeletonJson);
|
|
14
|
-
// console.log("specAsJsonToDom: ", specAsJsonToDom);
|
|
15
13
|
|
|
16
14
|
return specAsJsonToDom?.children;
|
|
17
15
|
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import tagJson from "./tag.json" with { type: "json" };
|
|
2
|
+
import renderCell from "../cell/index.js";
|
|
3
|
+
|
|
4
|
+
const renderRow = ({ inColumns = [] } = {}) => {
|
|
5
|
+
const row = structuredClone(tagJson);
|
|
6
|
+
row.children = inColumns.map(() => renderCell());
|
|
7
|
+
return row;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export default renderRow;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import tagJson from "./tag.json" with { type: "json" };
|
|
2
|
+
import renderInputs from "./inputs/index.js";
|
|
3
|
+
import renderInputsWithSave from "./inputsWithSave/index.js";
|
|
4
|
+
import renderTotals from "./totals/index.js";
|
|
5
|
+
import renderEmpty from "./empty/index.js";
|
|
6
|
+
|
|
7
|
+
const footerBuilders = {
|
|
8
|
+
inputs: renderInputs,
|
|
9
|
+
inputsWithSave: renderInputsWithSave,
|
|
10
|
+
totals: renderTotals,
|
|
11
|
+
empty: renderEmpty
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const renderTableFooter = ({ inFooter = [], inColumns = [], inData = [] } = {}) => {
|
|
15
|
+
const tfoot = structuredClone(tagJson);
|
|
16
|
+
|
|
17
|
+
tfoot.children = inFooter.map(footerName => {
|
|
18
|
+
if (!Object.hasOwn(footerBuilders, footerName)) {
|
|
19
|
+
throw new Error(`Unknown footer "${footerName}".`);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return footerBuilders[footerName]({ inColumns, inData });
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
return tfoot;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export default renderTableFooter;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import cellJson from "./tag.json" with { type: "json" };
|
|
2
|
+
import inputJson from "../input/tag.json" with { type: "json" };
|
|
3
|
+
|
|
4
|
+
const renderCell = ({ inColumn } = {}) => {
|
|
5
|
+
const cell = structuredClone(cellJson);
|
|
6
|
+
const input = structuredClone(inputJson);
|
|
7
|
+
|
|
8
|
+
input.attributes.name = inColumn;
|
|
9
|
+
input.attributes.placeholder = inColumn;
|
|
10
|
+
cell.children.push(input);
|
|
11
|
+
|
|
12
|
+
return cell;
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export default renderCell;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import tagJson from "./tag.json" with { type: "json" };
|
|
2
|
+
import renderCell from "../cell/index.js";
|
|
3
|
+
|
|
4
|
+
const renderRow = ({ inColumns = [] } = {}) => {
|
|
5
|
+
const row = structuredClone(tagJson);
|
|
6
|
+
row.children = inColumns.map(inColumn => renderCell({ inColumn }));
|
|
7
|
+
return row;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export default renderRow;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import cellJson from "./tag.json" with { type: "json" };
|
|
2
|
+
import inputJson from "../input/tag.json" with { type: "json" };
|
|
3
|
+
import buttonJson from "../button/tag.json" with { type: "json" };
|
|
4
|
+
|
|
5
|
+
const renderCell = ({ inColumn, inSave = false } = {}) => {
|
|
6
|
+
const cell = structuredClone(cellJson);
|
|
7
|
+
const input = structuredClone(inputJson);
|
|
8
|
+
|
|
9
|
+
input.attributes.name = inColumn;
|
|
10
|
+
input.attributes.placeholder = inColumn;
|
|
11
|
+
cell.children.push(input);
|
|
12
|
+
|
|
13
|
+
if (inSave) {
|
|
14
|
+
cell.children.push(structuredClone(buttonJson));
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return cell;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export default renderCell;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import tagJson from "./tag.json" with { type: "json" };
|
|
2
|
+
import renderCell from "../cell/index.js";
|
|
3
|
+
|
|
4
|
+
const renderRow = ({ inColumns = [] } = {}) => {
|
|
5
|
+
const row = structuredClone(tagJson);
|
|
6
|
+
row.children = inColumns.map((inColumn, index) => renderCell({
|
|
7
|
+
inColumn,
|
|
8
|
+
inSave: index === inColumns.length - 1
|
|
9
|
+
}));
|
|
10
|
+
return row;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export default renderRow;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import tagJson from "./tag.json" with { type: "json" };
|
|
2
|
+
|
|
3
|
+
const getValue = (row, column) =>
|
|
4
|
+
Array.isArray(row) ? row[column] : row?.[column];
|
|
5
|
+
|
|
6
|
+
const renderCell = ({ inColumn, inIndex, inData = [] } = {}) => {
|
|
7
|
+
const cell = structuredClone(tagJson);
|
|
8
|
+
const values = inData
|
|
9
|
+
.map(row => getValue(row, inColumn))
|
|
10
|
+
.filter(value => value !== null && value !== undefined && String(value).trim() !== "")
|
|
11
|
+
.map(Number)
|
|
12
|
+
.filter(Number.isFinite);
|
|
13
|
+
|
|
14
|
+
cell.textContent = values.length
|
|
15
|
+
? String(values.reduce((sum, value) => sum + value, 0))
|
|
16
|
+
: inIndex === 0 ? "Total" : "";
|
|
17
|
+
|
|
18
|
+
return cell;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export default renderCell;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import tagJson from "./tag.json" with { type: "json" };
|
|
2
|
+
import renderCell from "../cell/index.js";
|
|
3
|
+
|
|
4
|
+
const renderRow = ({ inColumns = [], inData = [] } = {}) => {
|
|
5
|
+
const row = structuredClone(tagJson);
|
|
6
|
+
row.children = inColumns.map((inColumn, inIndex) =>
|
|
7
|
+
renderCell({ inColumn, inIndex, inData })
|
|
8
|
+
);
|
|
9
|
+
return row;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export default renderRow;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import renderTable from "./table/index.js";
|
|
2
|
+
|
|
3
|
+
import applyOptions from "./options/index.js";
|
|
4
|
+
import renderRequests from "./render-requests.json" with { type: "json" };
|
|
5
|
+
|
|
6
|
+
const render = ({
|
|
7
|
+
type = "table",
|
|
8
|
+
inData,
|
|
9
|
+
inColumns,
|
|
10
|
+
footer = [],
|
|
11
|
+
options = {}
|
|
12
|
+
} = {}) => {
|
|
13
|
+
if (type === "table") {
|
|
14
|
+
const spec = renderTable({
|
|
15
|
+
inColumns,
|
|
16
|
+
inData,
|
|
17
|
+
inFooter: footer
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
return applyOptions(spec, options);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
throw new Error(`Unknown table renderer type "${type}".`);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
render.requests = renderRequests;
|
|
27
|
+
|
|
28
|
+
export {
|
|
29
|
+
render,
|
|
30
|
+
renderRequests
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export default render;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import applyShowSerial from "./showSerial/index.js";
|
|
2
|
+
import applyShowOptions from "./showOptions/index.js";
|
|
3
|
+
|
|
4
|
+
const applyOptions = (inSpec, inOptions = {}) => {
|
|
5
|
+
if (inOptions.showSerial) {
|
|
6
|
+
applyShowSerial(inSpec);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
if (inOptions.showOptions) {
|
|
10
|
+
applyShowOptions(inSpec, inOptions.showOptions);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return inSpec;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export default applyOptions;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
const resolveButtons = (inShowOptions) => {
|
|
2
|
+
if (inShowOptions === true) {
|
|
3
|
+
return [{ label: "Apply", type: "button" }];
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
if (Array.isArray(inShowOptions)) {
|
|
7
|
+
return inShowOptions;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
return [];
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const applyShowOptions = (inSpec, inShowOptions) => {
|
|
14
|
+
const buttons = resolveButtons(inShowOptions);
|
|
15
|
+
|
|
16
|
+
if (buttons.length === 0) return;
|
|
17
|
+
|
|
18
|
+
const [thead, tbody] = inSpec.children;
|
|
19
|
+
|
|
20
|
+
// append <th>Actions</th> to head row
|
|
21
|
+
thead.children[0].children.push({
|
|
22
|
+
tagName: "th",
|
|
23
|
+
textContent: "Actions"
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
// append <td> with buttons to each body row
|
|
27
|
+
tbody.children.forEach(tr => {
|
|
28
|
+
tr.children.push({
|
|
29
|
+
tagName: "td",
|
|
30
|
+
children: buttons.map(btn => ({
|
|
31
|
+
tagName: "button",
|
|
32
|
+
attributes: { type: btn.type || "button" },
|
|
33
|
+
textContent: btn.label
|
|
34
|
+
}))
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export default applyShowOptions;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const applyShowSerial = (inSpec) => {
|
|
2
|
+
const [thead, tbody] = inSpec.children;
|
|
3
|
+
|
|
4
|
+
// prepend <th>#</th> to head row
|
|
5
|
+
thead.children[0].children.unshift({
|
|
6
|
+
tagName: "th",
|
|
7
|
+
textContent: "#"
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
// prepend <td>{rowIndex}</td> to each body row
|
|
11
|
+
tbody.children.forEach((tr, index) => {
|
|
12
|
+
tr.children.unshift({
|
|
13
|
+
tagName: "td",
|
|
14
|
+
textContent: String(index + 1)
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export default applyShowSerial;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
{
|
|
2
|
+
"table": {
|
|
3
|
+
"type": "table",
|
|
4
|
+
"data": [
|
|
5
|
+
{ "itemName": "0.09/30mm", "baseUnit": "kgs" }
|
|
6
|
+
],
|
|
7
|
+
"columns": ["itemName", "baseUnit"],
|
|
8
|
+
"options": {}
|
|
9
|
+
},
|
|
10
|
+
"tableWithSerial": {
|
|
11
|
+
"type": "table",
|
|
12
|
+
"data": [
|
|
13
|
+
{ "itemName": "0.09/30mm", "baseUnit": "kgs" }
|
|
14
|
+
],
|
|
15
|
+
"columns": ["itemName", "baseUnit"],
|
|
16
|
+
"options": {
|
|
17
|
+
"showSerial": true
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"tableWithDefaultAction": {
|
|
21
|
+
"type": "table",
|
|
22
|
+
"data": [
|
|
23
|
+
{ "itemName": "0.09/30mm", "baseUnit": "kgs" }
|
|
24
|
+
],
|
|
25
|
+
"columns": ["itemName", "baseUnit"],
|
|
26
|
+
"options": {
|
|
27
|
+
"showOptions": true
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"tableWithCustomActions": {
|
|
31
|
+
"type": "table",
|
|
32
|
+
"data": [
|
|
33
|
+
{ "itemName": "0.09/30mm", "baseUnit": "kgs" }
|
|
34
|
+
],
|
|
35
|
+
"columns": ["itemName", "baseUnit"],
|
|
36
|
+
"options": {
|
|
37
|
+
"showOptions": [
|
|
38
|
+
{ "label": "Show", "type": "button" },
|
|
39
|
+
{ "label": "Edit", "type": "button" }
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"tableWithSerialAndActions": {
|
|
44
|
+
"type": "table",
|
|
45
|
+
"data": [
|
|
46
|
+
{ "itemName": "0.09/30mm", "baseUnit": "kgs" }
|
|
47
|
+
],
|
|
48
|
+
"columns": ["itemName", "baseUnit"],
|
|
49
|
+
"options": {
|
|
50
|
+
"showSerial": true,
|
|
51
|
+
"showOptions": [
|
|
52
|
+
{ "label": "Show", "type": "button" }
|
|
53
|
+
]
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"tableWithFooter": {
|
|
57
|
+
"type": "table",
|
|
58
|
+
"data": [
|
|
59
|
+
{ "itemName": "0.09/30mm", "baseUnit": "kgs" }
|
|
60
|
+
],
|
|
61
|
+
"columns": ["itemName", "baseUnit"],
|
|
62
|
+
"footer": ["inputs"],
|
|
63
|
+
"options": {}
|
|
64
|
+
},
|
|
65
|
+
"tableWithFooterSave": {
|
|
66
|
+
"type": "table",
|
|
67
|
+
"data": [
|
|
68
|
+
{ "itemName": "0.09/30mm", "baseUnit": "kgs" }
|
|
69
|
+
],
|
|
70
|
+
"columns": ["itemName", "baseUnit"],
|
|
71
|
+
"footer": ["inputsWithSave"],
|
|
72
|
+
"options": {}
|
|
73
|
+
},
|
|
74
|
+
"tableWithTotals": {
|
|
75
|
+
"type": "table",
|
|
76
|
+
"data": [
|
|
77
|
+
{ "itemName": "0.09/30mm", "baseUnit": "2" },
|
|
78
|
+
{ "itemName": "0.11-25", "baseUnit": "3" }
|
|
79
|
+
],
|
|
80
|
+
"columns": ["itemName", "baseUnit"],
|
|
81
|
+
"footer": ["totals"],
|
|
82
|
+
"options": {}
|
|
83
|
+
},
|
|
84
|
+
"tableWithMultipleFooters": {
|
|
85
|
+
"type": "table",
|
|
86
|
+
"data": [
|
|
87
|
+
{ "itemName": "0.09/30mm", "baseUnit": "2" }
|
|
88
|
+
],
|
|
89
|
+
"columns": ["itemName", "baseUnit"],
|
|
90
|
+
"footer": ["inputs", "totals", "inputsWithSave", "empty"],
|
|
91
|
+
"options": {}
|
|
92
|
+
},
|
|
93
|
+
"tableHead": {
|
|
94
|
+
"type": "tableHead",
|
|
95
|
+
"data": [],
|
|
96
|
+
"columns": ["itemName", "baseUnit"],
|
|
97
|
+
"options": {}
|
|
98
|
+
},
|
|
99
|
+
"tableBody": {
|
|
100
|
+
"type": "tableBody",
|
|
101
|
+
"data": [
|
|
102
|
+
{ "itemName": "0.09/30mm", "baseUnit": "kgs" }
|
|
103
|
+
],
|
|
104
|
+
"columns": ["itemName", "baseUnit"],
|
|
105
|
+
"options": {}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import tagJson from "./tag.json" with { type: "json" };
|
|
2
|
+
|
|
3
|
+
const buildBodyCell = ({ inValue } = {}) => {
|
|
4
|
+
const td = structuredClone(tagJson);
|
|
5
|
+
|
|
6
|
+
td.attributes.value = inValue;
|
|
7
|
+
td.textContent = inValue;
|
|
8
|
+
|
|
9
|
+
return td;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export default buildBodyCell;
|