@apia/table2-component 4.0.20

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.
@@ -0,0 +1,41 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as react from 'react';
3
+ import { ReactNode, HTMLAttributes } from 'react';
4
+ import { TableController, TablePlugin, Row, RowsGroup, Element } from '@apia/table2-controller';
5
+ export * from '@apia/table2-controller';
6
+
7
+ declare const TableContext: react.Context<TableController | null>;
8
+ type TAvailableTables = 'primary' | 'secondary' | 'clean';
9
+ declare function useTable(): TableController;
10
+ declare const Table: (({ controller, variant, }: {
11
+ controller: TableController;
12
+ variant?: TAvailableTables;
13
+ }) => react_jsx_runtime.JSX.Element) & {
14
+ displayName: string;
15
+ };
16
+
17
+ type AdditionalCellDataRetriever = (row: Row) => Promise<ReactNode>;
18
+ declare class AdditionalInformationPlugin implements TablePlugin {
19
+ private onExpand;
20
+ constructor(onExpand: AdditionalCellDataRetriever);
21
+ onAddRow(_controller: TableController, target: RowsGroup<any>, newRow: Row): void;
22
+ useElementDomProps(_controller: TableController, element: TableController | Element<any>, _context: any): HTMLAttributes<HTMLElement>;
23
+ }
24
+
25
+ declare class SessionStorageResizePlugin implements TablePlugin {
26
+ private prefix;
27
+ constructor(prefix: string);
28
+ private buildId;
29
+ onResize(_controller: TableController, colName: string, newSize: number): void;
30
+ useElementDomProps(_controller: TableController, element: TableController | Element<any>): {
31
+ style: {
32
+ maxWidth: string;
33
+ width: string;
34
+ };
35
+ } | {
36
+ style?: undefined;
37
+ };
38
+ }
39
+
40
+ export { AdditionalInformationPlugin, SessionStorageResizePlugin, type TAvailableTables, Table, TableContext, useTable };
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,396 @@
1
+ import { TableHead, Cell, Row as Row$1, TableBody } from '@apia/table2-controller';
2
+ export * from '@apia/table2-controller';
3
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
4
+ import { Table as Table$1, getVariant, Box, Spinner } from '@apia/theme';
5
+ import { getLabel } from '@apia/util';
6
+ import { makeObservable, action, observable } from 'mobx';
7
+ import { observer } from 'mobx-react-lite';
8
+ import { createElement, createContext, useContext, useMemo, lazy, Suspense } from 'react';
9
+ import { IconButton } from '@apia/components';
10
+
11
+ const Resizer = () => {
12
+ const controller = useTable();
13
+ const plugins = controller.getApplicablePlugins("onResize");
14
+ return /* @__PURE__ */ jsx(
15
+ "div",
16
+ {
17
+ style: {
18
+ cursor: "ew-resize",
19
+ position: "absolute",
20
+ right: 0,
21
+ width: "30px",
22
+ opacity: 0,
23
+ height: "100%",
24
+ top: 0,
25
+ transform: "translateX(15px)",
26
+ zIndex: 2
27
+ },
28
+ className: "resizer",
29
+ onMouseDown: (ev) => {
30
+ const el = ev.target?.closest?.(".resizer");
31
+ const th = ev.target?.closest?.("th");
32
+ const colName = th?.dataset.colname;
33
+ if (el instanceof HTMLElement && th instanceof HTMLElement && colName) {
34
+ const initialX = ev.clientX;
35
+ const initialWidth = th.getBoundingClientRect().width;
36
+ const handleResize = (ev2) => {
37
+ const dif = ev2.clientX - initialX;
38
+ th.style.width = `${initialWidth + dif}px`;
39
+ th.style.maxWidth = `${initialWidth + dif}px`;
40
+ plugins.forEach((c) => c(colName, initialWidth + dif));
41
+ };
42
+ const breakSubscription = () => {
43
+ document.removeEventListener("mousemove", handleResize);
44
+ document.removeEventListener("mouseup", breakSubscription);
45
+ };
46
+ document.addEventListener("mousemove", handleResize);
47
+ document.addEventListener("mouseup", breakSubscription);
48
+ }
49
+ },
50
+ children: " "
51
+ }
52
+ );
53
+ };
54
+
55
+ const Head = observer(() => {
56
+ const controller = useTable();
57
+ const plugins = controller.getApplicablePlugins("useElementDomProps");
58
+ const CellsRendererPlugin = controller.getApplicablePlugins("getRenderers")[0]?.().cell;
59
+ return /* @__PURE__ */ jsx("thead", { ...controller.head.getState("domProperties"), children: [...controller.head.rows.values()].map((row, i) => /* @__PURE__ */ createElement(
60
+ "tr",
61
+ {
62
+ ...row.getState("domProperties"),
63
+ ...plugins.reduce((acc, plugin) => {
64
+ const props = plugin(row, i);
65
+ return { ...acc, ...props };
66
+ }, {}),
67
+ key: row.getState("id"),
68
+ "data-rowid": row.getState("id")
69
+ },
70
+ row.cells.map((cell, j) => {
71
+ const Renderer = cell.getState("Renderer") || CellsRendererPlugin;
72
+ const content = cell.getState("content");
73
+ if (!controller.isColumnVisible(cell.getState("colName"))) {
74
+ return null;
75
+ }
76
+ if (cell.getState("isHidden") || cell.getTable().getState("hiddenColumns").has(cell.getState("colName"))) {
77
+ return null;
78
+ }
79
+ const pluginProps = plugins.reduce((acc, plugin) => {
80
+ const props = plugin(cell, j);
81
+ return { ...acc, ...props };
82
+ }, {});
83
+ return /* @__PURE__ */ createElement(
84
+ "th",
85
+ {
86
+ ...cell.getState("domProperties"),
87
+ ...pluginProps,
88
+ "data-colname": cell.getState("colName"),
89
+ key: cell.getState("colName"),
90
+ style: {
91
+ ...cell.getState("domProperties")?.style,
92
+ position: "relative",
93
+ ...pluginProps.style
94
+ }
95
+ },
96
+ Renderer ? /* @__PURE__ */ jsx(Renderer, { cell }) : content,
97
+ controller.getState("allowResize") && /* @__PURE__ */ jsx(Resizer, {})
98
+ );
99
+ })
100
+ )) });
101
+ });
102
+
103
+ const RowContent = observer(({ row }) => {
104
+ const controller = useTable();
105
+ const plugins = controller.getApplicablePlugins("useElementDomProps");
106
+ const CellsRendererPlugin = controller.getApplicablePlugins("getRenderers")[0]?.().cell;
107
+ return /* @__PURE__ */ jsx(Fragment, { children: row.cells.map((cell, i) => {
108
+ const Renderer = cell.getState("Renderer") || CellsRendererPlugin;
109
+ const content = cell.getState("content");
110
+ const isHidden = !controller.isColumnVisible(cell.getState("colName")) || cell.getState("isHidden") || cell.getTable().getState("hiddenColumns").has(cell.getState("colName"));
111
+ return /* @__PURE__ */ createElement(
112
+ "td",
113
+ {
114
+ ...cell.getState("domProperties"),
115
+ ...plugins.reduce((acc, plugin) => {
116
+ const props = plugin(cell, i);
117
+ return { ...acc, ...props };
118
+ }, {}),
119
+ style: {
120
+ display: isHidden ? "none" : "table-cell",
121
+ ...cell.getState("domProperties")?.style,
122
+ maxWidth: 0
123
+ },
124
+ "data-colname": cell.getState("colName"),
125
+ key: cell.getState("colName")
126
+ },
127
+ Renderer ? /* @__PURE__ */ jsx(Renderer, { cell }) : content
128
+ );
129
+ }) });
130
+ });
131
+ const Row = observer(
132
+ ({ index, row }) => {
133
+ const controller = useTable();
134
+ const plugins = controller.getApplicablePlugins("useElementDomProps");
135
+ return /* @__PURE__ */ createElement(
136
+ "tr",
137
+ {
138
+ ...row.getState("domProperties"),
139
+ ...plugins.reduce((acc, plugin) => {
140
+ const props = plugin(row, index);
141
+ return { ...acc, ...props };
142
+ }, {}),
143
+ key: row.getState("id"),
144
+ "data-rowid": row.getState("id")
145
+ },
146
+ /* @__PURE__ */ jsx(RowContent, { row })
147
+ );
148
+ }
149
+ );
150
+
151
+ const Body = observer(() => {
152
+ const controller = useTable();
153
+ return /* @__PURE__ */ jsx("tbody", { ...controller.body.getState("domProperties"), children: controller.body.getState("rows").map((row, i) => /* @__PURE__ */ jsx(Row, { index: i, row }, row.getState("id"))) });
154
+ });
155
+
156
+ const TableContext = createContext(null);
157
+ function useTable() {
158
+ return useContext(TableContext);
159
+ }
160
+ const Table = observer(
161
+ ({
162
+ controller,
163
+ variant = "primary"
164
+ }) => {
165
+ const plugins = controller.getApplicablePlugins("useElementDomProps");
166
+ const props = plugins.reduce((acc, plugin) => {
167
+ const props2 = plugin(controller, null);
168
+ return { ...acc, ...props2 };
169
+ }, {});
170
+ return /* @__PURE__ */ jsx(TableContext.Provider, { value: controller, children: /* @__PURE__ */ jsxs(
171
+ Table$1,
172
+ {
173
+ ...props,
174
+ className: `${controller.isEditionMode ? "editionMode" : ""} ${props.className || ""}`,
175
+ ...getVariant(`layout.common.tables.${variant}`),
176
+ children: [
177
+ /* @__PURE__ */ jsx(Head, {}),
178
+ /* @__PURE__ */ jsx(Body, {})
179
+ ]
180
+ }
181
+ ) });
182
+ }
183
+ );
184
+
185
+ var __defProp = Object.defineProperty;
186
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
187
+ var __publicField = (obj, key, value) => {
188
+ __defNormalProp(obj, key + "" , value);
189
+ return value;
190
+ };
191
+ class AdditionalRow extends Row$1 {
192
+ }
193
+ const ExpandButtonRenderer = observer(({ cell }) => {
194
+ return /* @__PURE__ */ jsx(
195
+ Box,
196
+ {
197
+ sx: {
198
+ transform: `rotate(${cell.expanded ? "90deg" : "0"})`,
199
+ transition: "transform 0.1s"
200
+ },
201
+ children: /* @__PURE__ */ jsx(
202
+ IconButton,
203
+ {
204
+ icon: "ArrowRight",
205
+ title: cell.expanded ? getLabel("lblCollapse").text : getLabel("lblExpand").text,
206
+ onClick: () => {
207
+ cell.toggle();
208
+ }
209
+ }
210
+ )
211
+ }
212
+ );
213
+ });
214
+ const AdditionalInfoRenderer = ({ cell }) => {
215
+ const C = useMemo(
216
+ () => lazy(async () => {
217
+ const result = await cell.retriever(cell.getRow().getPreviousRow());
218
+ return { default: () => result };
219
+ }),
220
+ [cell]
221
+ );
222
+ return /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(Spinner, {}), children: /* @__PURE__ */ jsx(C, {}) });
223
+ };
224
+ class AdditionalInfoCell extends Cell {
225
+ constructor(props, retriever) {
226
+ super(props);
227
+ this.retriever = retriever;
228
+ }
229
+ }
230
+ class AdditionalCell extends Cell {
231
+ constructor(props, retriever) {
232
+ super(props);
233
+ this.retriever = retriever;
234
+ __publicField(this, "expanded", false);
235
+ makeObservable(this, {
236
+ expanded: observable,
237
+ expand: action,
238
+ toggle: action,
239
+ collapse: action
240
+ });
241
+ }
242
+ collapseAction() {
243
+ const row = this.getRow();
244
+ const container = row.getContainer();
245
+ const index = container.getRowIndex(row);
246
+ const nextRow = container.getRowByIndex(index + 1);
247
+ if (nextRow instanceof AdditionalRow) {
248
+ nextRow.remove();
249
+ this.expanded = false;
250
+ }
251
+ }
252
+ expandAction() {
253
+ const row = this.getRow();
254
+ const container = row.getContainer();
255
+ const index = container.getRowIndex(row);
256
+ const nextRow = container.getRowByIndex(index + 1);
257
+ if (!(nextRow instanceof AdditionalRow)) {
258
+ const newRow = new AdditionalRow(`${row.getState("id")}-additional`);
259
+ newRow.addCell(
260
+ new AdditionalInfoCell(
261
+ {
262
+ colName: "additional",
263
+ Renderer: AdditionalInfoRenderer,
264
+ domProperties: { colSpan: row.cells.length }
265
+ },
266
+ this.retriever
267
+ )
268
+ );
269
+ container.insertAfter(row, newRow);
270
+ this.expanded = true;
271
+ }
272
+ }
273
+ collapse() {
274
+ const row = this.getRow();
275
+ const container = row.getContainer();
276
+ const index = container.getRowIndex(row);
277
+ if (index !== -1) {
278
+ this.collapseAction();
279
+ }
280
+ }
281
+ expand() {
282
+ const row = this.getRow();
283
+ const container = row.getContainer();
284
+ const index = container.getRowIndex(row);
285
+ if (index !== -1) {
286
+ this.expandAction();
287
+ }
288
+ }
289
+ toggle() {
290
+ if (this.expanded) {
291
+ this.collapseAction();
292
+ } else {
293
+ this.expandAction();
294
+ }
295
+ }
296
+ }
297
+ class AdditionalInformationPlugin {
298
+ constructor(onExpand) {
299
+ this.onExpand = onExpand;
300
+ }
301
+ onAddRow(_controller, target, newRow) {
302
+ if (!(newRow instanceof AdditionalRow)) {
303
+ let newCell;
304
+ if (target instanceof TableHead) {
305
+ newCell = new Cell({
306
+ colName: "additional",
307
+ Renderer: () => null,
308
+ domProperties: {
309
+ className: "additional-column"
310
+ }
311
+ });
312
+ } else {
313
+ newCell = new AdditionalCell(
314
+ {
315
+ colName: "additional",
316
+ Renderer: ExpandButtonRenderer,
317
+ domProperties: {
318
+ className: "additional-column"
319
+ }
320
+ },
321
+ this.onExpand
322
+ );
323
+ }
324
+ if (newRow.cells.length) {
325
+ newRow.addCellBefore(newRow.cells[0], newCell);
326
+ } else {
327
+ newRow.addCell(newCell);
328
+ }
329
+ }
330
+ }
331
+ useElementDomProps(_controller, element, _context) {
332
+ if (element instanceof Row$1 && element.getContainer() instanceof TableBody) {
333
+ return {
334
+ "aria-expanded": element instanceof AdditionalRow ? void 0 : element.cells.find(
335
+ (c) => c instanceof AdditionalCell
336
+ )?.expanded,
337
+ onKeyDown: (ev) => {
338
+ let row = element;
339
+ if (element instanceof AdditionalRow) {
340
+ row = row.getContainer()?.getRowByIndex(row.getContainer().getRowIndex(row) - 1);
341
+ }
342
+ if (ev.code === "ArrowRight" && ev.ctrlKey) {
343
+ ev.stopPropagation();
344
+ ev.preventDefault();
345
+ row.cells.find(
346
+ (c) => c instanceof AdditionalCell
347
+ )?.expand();
348
+ } else if (ev.code === "ArrowLeft" && ev.ctrlKey) {
349
+ ev.stopPropagation();
350
+ ev.preventDefault();
351
+ row.cells.find(
352
+ (c) => c instanceof AdditionalCell
353
+ )?.collapse();
354
+ if (element instanceof AdditionalRow) {
355
+ row.cells[0].focus();
356
+ }
357
+ }
358
+ }
359
+ };
360
+ }
361
+ return {};
362
+ }
363
+ }
364
+
365
+ class SessionStorageResizePlugin {
366
+ constructor(prefix) {
367
+ this.prefix = prefix;
368
+ }
369
+ buildId(colName) {
370
+ return `${window.TAB_ID_REQUEST}_${this.prefix}_${colName}`;
371
+ }
372
+ onResize(_controller, colName, newSize) {
373
+ sessionStorage.setItem(this.buildId(colName), String(newSize));
374
+ }
375
+ useElementDomProps(_controller, element) {
376
+ if (element instanceof Cell) {
377
+ if (element.getRow().getContainer() instanceof TableHead) {
378
+ const storedSize = sessionStorage.getItem(
379
+ this.buildId(element.getState("colName"))
380
+ );
381
+ if (storedSize) {
382
+ return {
383
+ style: {
384
+ maxWidth: `${Number.parseInt(storedSize)}px`,
385
+ width: `${Number.parseInt(storedSize)}px`
386
+ }
387
+ };
388
+ }
389
+ }
390
+ }
391
+ return {};
392
+ }
393
+ }
394
+
395
+ export { AdditionalInformationPlugin, SessionStorageResizePlugin, Table, TableContext, useTable };
396
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/component/Resizer.tsx","../src/component/Head.tsx","../src/component/Body/Row.tsx","../src/component/Body/Body.tsx","../src/component/Table.tsx","../src/plugins/AdditionalInformationPlugin.tsx","../src/plugins/SessionStorageResizePlugin.ts"],"sourcesContent":["import { useTable } from './Table';\r\n\r\nexport const Resizer = () => {\r\n const controller = useTable();\r\n const plugins = controller.getApplicablePlugins('onResize');\r\n\r\n return (\r\n <div\r\n style={{\r\n cursor: 'ew-resize',\r\n position: 'absolute',\r\n right: 0,\r\n width: '30px',\r\n opacity: 0,\r\n height: '100%',\r\n top: 0,\r\n transform: 'translateX(15px)',\r\n zIndex: 2,\r\n }}\r\n className=\"resizer\"\r\n onMouseDown={(ev) => {\r\n const el = (ev.target as HTMLElement)?.closest?.('.resizer');\r\n const th = (ev.target as HTMLElement)?.closest?.('th');\r\n\r\n const colName = th?.dataset.colname;\r\n\r\n if (el instanceof HTMLElement && th instanceof HTMLElement && colName) {\r\n const initialX = ev.clientX;\r\n const initialWidth = th.getBoundingClientRect().width;\r\n\r\n const handleResize = (ev: MouseEvent) => {\r\n const dif = ev.clientX - initialX;\r\n th.style.width = `${initialWidth + dif}px`;\r\n th.style.maxWidth = `${initialWidth + dif}px`;\r\n\r\n plugins.forEach((c) => c(colName, initialWidth + dif));\r\n };\r\n\r\n const breakSubscription = () => {\r\n document.removeEventListener('mousemove', handleResize);\r\n document.removeEventListener('mouseup', breakSubscription);\r\n };\r\n\r\n document.addEventListener('mousemove', handleResize);\r\n document.addEventListener('mouseup', breakSubscription);\r\n }\r\n }}\r\n >\r\n {' '}\r\n </div>\r\n );\r\n};\r\n","import { observer } from 'mobx-react-lite';\r\nimport { useTable } from './Table';\r\nimport { Resizer } from './Resizer';\r\n\r\nexport const Head = observer(() => {\r\n const controller = useTable();\r\n const plugins = controller.getApplicablePlugins('useElementDomProps');\r\n const CellsRendererPlugin =\r\n controller.getApplicablePlugins('getRenderers')[0]?.().cell;\r\n\r\n return (\r\n <thead {...controller.head.getState('domProperties')}>\r\n {[...controller.head.rows.values()].map((row, i) => (\r\n <tr\r\n {...row.getState('domProperties')}\r\n {...plugins.reduce((acc, plugin) => {\r\n const props = plugin(row, i);\r\n return { ...acc, ...props };\r\n }, {})}\r\n key={row.getState('id')}\r\n data-rowid={row.getState('id')}\r\n >\r\n {row.cells.map((cell, j) => {\r\n const Renderer = cell.getState('Renderer') || CellsRendererPlugin;\r\n const content = cell.getState('content');\r\n\r\n if (!controller.isColumnVisible(cell.getState('colName'))) {\r\n return null;\r\n }\r\n\r\n if (\r\n cell.getState('isHidden') ||\r\n cell\r\n .getTable()\r\n .getState('hiddenColumns')\r\n .has(cell.getState('colName'))\r\n ) {\r\n return null;\r\n }\r\n\r\n const pluginProps = plugins.reduce<any>((acc, plugin) => {\r\n const props = plugin(cell, j);\r\n return { ...acc, ...props };\r\n }, {});\r\n\r\n return (\r\n <th\r\n {...cell.getState('domProperties')}\r\n {...pluginProps}\r\n data-colname={cell.getState('colName')}\r\n key={cell.getState('colName')}\r\n style={{\r\n ...cell.getState('domProperties')?.style,\r\n position: 'relative',\r\n ...pluginProps.style,\r\n }}\r\n >\r\n {Renderer ? <Renderer cell={cell} /> : content}\r\n {controller.getState('allowResize') && <Resizer />}\r\n </th>\r\n );\r\n })}\r\n </tr>\r\n ))}\r\n </thead>\r\n );\r\n});\r\n","import { observer } from 'mobx-react-lite';\r\nimport { Row as RowInstance } from '@apia/table2-controller';\r\nimport { useTable } from '../Table';\r\n\r\nconst RowContent = observer(({ row }: { row: RowInstance }) => {\r\n const controller = useTable();\r\n const plugins = controller.getApplicablePlugins('useElementDomProps');\r\n const CellsRendererPlugin =\r\n controller.getApplicablePlugins('getRenderers')[0]?.().cell;\r\n\r\n return (\r\n <>\r\n {row.cells.map((cell, i) => {\r\n const Renderer = cell.getState('Renderer') || CellsRendererPlugin;\r\n const content = cell.getState('content');\r\n\r\n const isHidden =\r\n !controller.isColumnVisible(cell.getState('colName')) ||\r\n cell.getState('isHidden') ||\r\n cell\r\n .getTable()\r\n .getState('hiddenColumns')\r\n .has(cell.getState('colName'));\r\n\r\n return (\r\n <td\r\n {...cell.getState('domProperties')}\r\n {...plugins.reduce((acc, plugin) => {\r\n const props = plugin(cell, i);\r\n return { ...acc, ...props };\r\n }, {})}\r\n style={{\r\n display: isHidden ? 'none' : 'table-cell',\r\n ...cell.getState('domProperties')?.style,\r\n maxWidth: 0,\r\n }}\r\n data-colname={cell.getState('colName')}\r\n key={cell.getState('colName')}\r\n >\r\n {Renderer ? <Renderer cell={cell} /> : content}\r\n </td>\r\n );\r\n })}\r\n </>\r\n );\r\n});\r\n\r\nexport const Row = observer(\r\n ({ index, row }: { index: number; row: RowInstance }) => {\r\n const controller = useTable();\r\n const plugins = controller.getApplicablePlugins('useElementDomProps');\r\n\r\n return (\r\n <tr\r\n {...row.getState('domProperties')}\r\n {...plugins.reduce((acc, plugin) => {\r\n const props = plugin(row, index);\r\n return { ...acc, ...props };\r\n }, {})}\r\n key={row.getState('id')}\r\n data-rowid={row.getState('id')}\r\n >\r\n <RowContent row={row} />\r\n </tr>\r\n );\r\n },\r\n);\r\n","import { observer } from 'mobx-react-lite';\r\nimport { useTable } from '../Table';\r\nimport { Row } from './Row';\r\n\r\nexport const Body = observer(() => {\r\n const controller = useTable();\r\n\r\n return (\r\n <tbody {...controller.body.getState('domProperties')}>\r\n {controller.body.getState('rows').map((row, i) => (\r\n <Row key={row.getState('id')} index={i} row={row} />\r\n ))}\r\n </tbody>\r\n );\r\n});\r\n","import { observer } from 'mobx-react-lite';\r\nimport { TableController } from '@apia/table2-controller';\r\nimport { createContext, HTMLAttributes, useContext } from 'react';\r\nimport { getVariant, Table as PrimitiveTable } from '@apia/theme';\r\nimport { Head } from './Head';\r\nimport { Body } from './Body/Body';\r\n\r\nexport const TableContext = createContext<TableController | null>(null);\r\nexport type TAvailableTables = 'primary' | 'secondary' | 'clean';\r\n\r\nexport function useTable() {\r\n return useContext(TableContext)!;\r\n}\r\n\r\nexport const Table = observer(\r\n ({\r\n controller,\r\n variant = 'primary',\r\n }: {\r\n controller: TableController;\r\n variant?: TAvailableTables;\r\n }) => {\r\n const plugins = controller.getApplicablePlugins('useElementDomProps');\r\n const props: HTMLAttributes<HTMLElement> = plugins.reduce((acc, plugin) => {\r\n const props = plugin(controller, null);\r\n return { ...acc, ...props };\r\n }, {});\r\n\r\n return (\r\n <TableContext.Provider value={controller}>\r\n <PrimitiveTable\r\n {...props}\r\n className={`${controller.isEditionMode ? 'editionMode' : ''} ${props.className || ''}`}\r\n {...getVariant(`layout.common.tables.${variant}`)}\r\n >\r\n <Head />\r\n <Body />\r\n </PrimitiveTable>\r\n </TableContext.Provider>\r\n );\r\n },\r\n);\r\n","import {\r\n Row,\r\n Cell,\r\n CellState,\r\n TablePlugin,\r\n TableController,\r\n TableHead,\r\n TableBody,\r\n RowsGroup,\r\n Element,\r\n} from '@apia/table2-controller';\r\nimport { Box, Spinner } from '@apia/theme';\r\nimport { getLabel } from '@apia/util';\r\nimport { makeObservable, observable, action } from 'mobx';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { ReactNode, useMemo, lazy, Suspense, HTMLAttributes } from 'react';\r\nimport { IconButton } from '@apia/components';\r\n\r\ntype AdditionalCellDataRetriever = (row: Row) => Promise<ReactNode>;\r\n\r\nclass AdditionalRow extends Row {}\r\n\r\nconst ExpandButtonRenderer = observer(({ cell }: { cell: AdditionalCell }) => {\r\n return (\r\n <Box\r\n sx={{\r\n transform: `rotate(${cell.expanded ? '90deg' : '0'})`,\r\n transition: 'transform 0.1s',\r\n }}\r\n >\r\n <IconButton\r\n icon=\"ArrowRight\"\r\n title={\r\n cell.expanded\r\n ? getLabel('lblCollapse').text\r\n : getLabel('lblExpand').text\r\n }\r\n onClick={() => {\r\n cell.toggle();\r\n }}\r\n />\r\n </Box>\r\n );\r\n});\r\n\r\nconst AdditionalInfoRenderer = ({ cell }: { cell: AdditionalInfoCell }) => {\r\n const C = useMemo(\r\n () =>\r\n lazy(async () => {\r\n const result = await cell.retriever(cell.getRow().getPreviousRow());\r\n return { default: () => result as ReactNode };\r\n }),\r\n [cell],\r\n );\r\n return (\r\n <Suspense fallback={<Spinner />}>\r\n <C />\r\n </Suspense>\r\n );\r\n};\r\n\r\nclass AdditionalInfoCell extends Cell {\r\n constructor(\r\n props: CellState,\r\n public retriever: AdditionalCellDataRetriever,\r\n ) {\r\n super(props);\r\n }\r\n}\r\n\r\nclass AdditionalCell extends Cell {\r\n expanded = false;\r\n\r\n constructor(\r\n props: CellState,\r\n public retriever: AdditionalCellDataRetriever,\r\n ) {\r\n super(props);\r\n\r\n makeObservable(this, {\r\n expanded: observable,\r\n expand: action,\r\n toggle: action,\r\n collapse: action,\r\n });\r\n }\r\n\r\n private collapseAction() {\r\n const row = this.getRow();\r\n const container = row.getContainer()!;\r\n const index = container.getRowIndex(row);\r\n\r\n const nextRow = container.getRowByIndex(index + 1);\r\n if (nextRow instanceof AdditionalRow) {\r\n nextRow.remove();\r\n this.expanded = false;\r\n }\r\n }\r\n\r\n private expandAction() {\r\n const row = this.getRow();\r\n const container = row.getContainer()!;\r\n const index = container.getRowIndex(row);\r\n\r\n const nextRow = container.getRowByIndex(index + 1);\r\n\r\n if (!(nextRow instanceof AdditionalRow)) {\r\n const newRow = new AdditionalRow(`${row.getState('id')}-additional`);\r\n newRow.addCell(\r\n new AdditionalInfoCell(\r\n {\r\n colName: 'additional',\r\n Renderer: AdditionalInfoRenderer as any,\r\n domProperties: { colSpan: row.cells.length },\r\n },\r\n this.retriever,\r\n ),\r\n );\r\n container.insertAfter(row, newRow);\r\n this.expanded = true;\r\n }\r\n }\r\n\r\n collapse() {\r\n const row = this.getRow();\r\n const container = row.getContainer()!;\r\n const index = container.getRowIndex(row);\r\n\r\n if (index !== -1) {\r\n this.collapseAction();\r\n }\r\n }\r\n\r\n expand() {\r\n const row = this.getRow();\r\n const container = row.getContainer()!;\r\n const index = container.getRowIndex(row);\r\n\r\n if (index !== -1) {\r\n this.expandAction();\r\n }\r\n }\r\n\r\n toggle() {\r\n if (this.expanded) {\r\n this.collapseAction();\r\n } else {\r\n this.expandAction();\r\n }\r\n }\r\n}\r\n\r\nexport class AdditionalInformationPlugin implements TablePlugin {\r\n constructor(private onExpand: AdditionalCellDataRetriever) {}\r\n\r\n onAddRow(_controller: TableController, target: RowsGroup<any>, newRow: Row) {\r\n if (!(newRow instanceof AdditionalRow)) {\r\n let newCell: Cell | undefined;\r\n\r\n if (target instanceof TableHead) {\r\n newCell = new Cell({\r\n colName: 'additional',\r\n Renderer: () => null,\r\n domProperties: {\r\n className: 'additional-column',\r\n },\r\n });\r\n } else {\r\n newCell = new AdditionalCell(\r\n {\r\n colName: 'additional',\r\n Renderer: ExpandButtonRenderer as any,\r\n domProperties: {\r\n className: 'additional-column',\r\n },\r\n },\r\n this.onExpand,\r\n );\r\n }\r\n\r\n if (newRow.cells.length) {\r\n newRow.addCellBefore(newRow.cells[0], newCell);\r\n } else {\r\n newRow.addCell(newCell);\r\n }\r\n }\r\n }\r\n\r\n useElementDomProps(\r\n _controller: TableController,\r\n element: TableController | Element<any>,\r\n _context: any,\r\n ): HTMLAttributes<HTMLElement> {\r\n if (element instanceof Row && element.getContainer() instanceof TableBody) {\r\n return {\r\n 'aria-expanded':\r\n element instanceof AdditionalRow\r\n ? undefined\r\n : (\r\n element.cells.find(\r\n (c) => c instanceof AdditionalCell,\r\n ) as AdditionalCell\r\n )?.expanded,\r\n onKeyDown: (ev) => {\r\n let row = element as Row;\r\n if (element instanceof AdditionalRow) {\r\n row = row\r\n .getContainer()\r\n ?.getRowByIndex(row.getContainer()!.getRowIndex(row) - 1) as Row;\r\n }\r\n\r\n if (ev.code === 'ArrowRight' && ev.ctrlKey) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n (\r\n row.cells.find(\r\n (c) => c instanceof AdditionalCell,\r\n ) as AdditionalCell\r\n )?.expand();\r\n } else if (ev.code === 'ArrowLeft' && ev.ctrlKey) {\r\n ev.stopPropagation();\r\n ev.preventDefault();\r\n (\r\n row.cells.find(\r\n (c) => c instanceof AdditionalCell,\r\n ) as AdditionalCell\r\n )?.collapse();\r\n if (element instanceof AdditionalRow) {\r\n row.cells[0].focus();\r\n }\r\n }\r\n },\r\n };\r\n }\r\n\r\n return {};\r\n }\r\n}\r\n","import {\r\n TablePlugin,\r\n TableController,\r\n Cell,\r\n TableHead,\r\n Element,\r\n} from '@apia/table2-controller';\r\n\r\nexport class SessionStorageResizePlugin implements TablePlugin {\r\n constructor(private prefix: string) {}\r\n\r\n private buildId(colName: string) {\r\n return `${window.TAB_ID_REQUEST}_${this.prefix}_${colName}`;\r\n }\r\n\r\n onResize(_controller: TableController, colName: string, newSize: number) {\r\n sessionStorage.setItem(this.buildId(colName), String(newSize));\r\n }\r\n useElementDomProps(\r\n _controller: TableController,\r\n element: TableController | Element<any>,\r\n ) {\r\n if (element instanceof Cell) {\r\n if (element.getRow().getContainer() instanceof TableHead) {\r\n const storedSize = sessionStorage.getItem(\r\n this.buildId(element.getState('colName')),\r\n );\r\n\r\n if (storedSize) {\r\n return {\r\n style: {\r\n maxWidth: `${Number.parseInt(storedSize)}px`,\r\n width: `${Number.parseInt(storedSize)}px`,\r\n },\r\n };\r\n }\r\n }\r\n }\r\n return {};\r\n }\r\n}\r\n"],"names":["ev","props","PrimitiveTable","Row"],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,42 @@
1
+ {
2
+ "name": "@apia/table2-component",
3
+ "version": "4.0.20",
4
+ "sideEffects": false,
5
+ "author": "Alexis Leite <alexisleite@live.com>",
6
+ "main": "dist/index.js",
7
+ "module": "dist/index.js",
8
+ "type": "module",
9
+ "typings": "dist/index.d.ts",
10
+ "scripts": {
11
+ "libDev": "rollup --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts",
12
+ "libBuild": "rollup --config ../../config/rollup.common.mjs --environment MODE:production,ENTRY:index.ts",
13
+ "libWatch": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts,WATCH:true",
14
+ "libWatchDevExecution": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts,WATCH:true,DEV_SERVER_MODULE:execution",
15
+ "libWatchDevDashboards": "rollup --watch --config ../../config/rollup.common.mjs --environment MODE:development,ENTRY:index.ts,WATCH:true,DEV_SERVER_MODULE:dashboards"
16
+ },
17
+ "devDependencies": {
18
+ "@types/react": "^18.2.43",
19
+ "@types/react-dom": "^18.2.17",
20
+ "@typescript-eslint/eslint-plugin": "^6.14.0",
21
+ "axios": "^1.3.5",
22
+ "typescript": "5.4.2"
23
+ },
24
+ "peerDependencies": {
25
+ "react": "^18.2.0",
26
+ "react-dom": "^18.2.0"
27
+ },
28
+ "publishConfig": {
29
+ "access": "public",
30
+ "registry": "https://registry.npmjs.org/"
31
+ },
32
+ "dependencies": {
33
+ "@apia/components": "^4.0.20",
34
+ "@apia/icons": "^4.0.20",
35
+ "@apia/table2-controller": "^4.0.20",
36
+ "@apia/theme": "^4.0.20",
37
+ "@apia/util": "^4.0.20",
38
+ "mobx": "^6.13.7",
39
+ "mobx-react-lite": "^4.1.0"
40
+ },
41
+ "gitHead": "dabff9ca7bf9d14298fe7a661d73607a35a4df2a"
42
+ }
package/readme.md ADDED
@@ -0,0 +1,3 @@
1
+ # Table Controller
2
+
3
+ This table is designed for being highly custimizable. Mainly by adding plugins to it.