@apia/table2-controller 5.0.0 → 5.0.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 (90) hide show
  1. package/dist/data/TableController.d.ts +174 -0
  2. package/dist/data/TableController.d.ts.map +1 -0
  3. package/dist/data/TableController.js +348 -0
  4. package/dist/data/TableController.js.map +1 -0
  5. package/dist/data/body/TableBody.d.ts +16 -0
  6. package/dist/data/body/TableBody.d.ts.map +1 -0
  7. package/dist/data/body/TableBody.js +35 -0
  8. package/dist/data/body/TableBody.js.map +1 -0
  9. package/dist/data/filter/ComboFilter.d.ts +18 -0
  10. package/dist/data/filter/ComboFilter.d.ts.map +1 -0
  11. package/dist/data/filter/ComboFilter.js +32 -0
  12. package/dist/data/filter/ComboFilter.js.map +1 -0
  13. package/dist/data/filter/DateFilter.d.ts +7 -0
  14. package/dist/data/filter/DateFilter.d.ts.map +1 -0
  15. package/dist/data/filter/DateFilter.js +7 -0
  16. package/dist/data/filter/DateFilter.js.map +1 -0
  17. package/dist/data/filter/DateRangeFilter.d.ts +52 -0
  18. package/dist/data/filter/DateRangeFilter.d.ts.map +1 -0
  19. package/dist/data/filter/DateRangeFilter.js +208 -0
  20. package/dist/data/filter/DateRangeFilter.js.map +1 -0
  21. package/dist/data/filter/DateTimeRangeFilter.d.ts +23 -0
  22. package/dist/data/filter/DateTimeRangeFilter.d.ts.map +1 -0
  23. package/dist/data/filter/DateTimeRangeFilter.js +87 -0
  24. package/dist/data/filter/DateTimeRangeFilter.js.map +1 -0
  25. package/dist/data/filter/Filter.d.ts +49 -0
  26. package/dist/data/filter/Filter.d.ts.map +1 -0
  27. package/dist/data/filter/Filter.js +63 -0
  28. package/dist/data/filter/Filter.js.map +1 -0
  29. package/dist/data/head/Column.d.ts +23 -0
  30. package/dist/data/head/Column.d.ts.map +1 -0
  31. package/dist/data/head/Column.js +26 -0
  32. package/dist/data/head/Column.js.map +1 -0
  33. package/dist/data/head/Columns.d.ts +16 -0
  34. package/dist/data/head/Columns.d.ts.map +1 -0
  35. package/dist/data/head/Columns.js +57 -0
  36. package/dist/data/head/Columns.js.map +1 -0
  37. package/dist/data/head/Filters.d.ts +20 -0
  38. package/dist/data/head/Filters.d.ts.map +1 -0
  39. package/dist/data/head/Filters.js +132 -0
  40. package/dist/data/head/Filters.js.map +1 -0
  41. package/dist/data/head/NullFilter.js +25 -0
  42. package/dist/data/head/NullFilter.js.map +1 -0
  43. package/dist/data/head/TableHead.d.ts +26 -0
  44. package/dist/data/head/TableHead.d.ts.map +1 -0
  45. package/dist/data/head/TableHead.js +59 -0
  46. package/dist/data/head/TableHead.js.map +1 -0
  47. package/dist/data/plugins/FocusControllerPlugin/index.d.ts +26 -0
  48. package/dist/data/plugins/FocusControllerPlugin/index.d.ts.map +1 -0
  49. package/dist/data/plugins/FocusControllerPlugin/index.js +130 -0
  50. package/dist/data/plugins/FocusControllerPlugin/index.js.map +1 -0
  51. package/dist/data/plugins/FocusControllerPlugin/useFocusByClick.js +80 -0
  52. package/dist/data/plugins/FocusControllerPlugin/useFocusByClick.js.map +1 -0
  53. package/dist/data/plugins/FocusControllerPlugin/useFocusByKey.js +156 -0
  54. package/dist/data/plugins/FocusControllerPlugin/useFocusByKey.js.map +1 -0
  55. package/dist/data/plugins/TablePlugin.d.ts +30 -0
  56. package/dist/data/plugins/TablePlugin.d.ts.map +1 -0
  57. package/dist/data/plugins/TablePlugin.js +10 -0
  58. package/dist/data/plugins/TablePlugin.js.map +1 -0
  59. package/dist/data/plugins/WaiAriaPlugin.d.ts +42 -0
  60. package/dist/data/plugins/WaiAriaPlugin.d.ts.map +1 -0
  61. package/dist/data/plugins/WaiAriaPlugin.js +29 -0
  62. package/dist/data/plugins/WaiAriaPlugin.js.map +1 -0
  63. package/dist/data/primitive/AdditionalCell.d.ts +11 -0
  64. package/dist/data/primitive/AdditionalCell.d.ts.map +1 -0
  65. package/dist/data/primitive/AdditionalCell.js +38 -0
  66. package/dist/data/primitive/AdditionalCell.js.map +1 -0
  67. package/dist/data/primitive/AdditionalRow.d.ts +12 -0
  68. package/dist/data/primitive/AdditionalRow.d.ts.map +1 -0
  69. package/dist/data/primitive/AdditionalRow.js +16 -0
  70. package/dist/data/primitive/AdditionalRow.js.map +1 -0
  71. package/dist/data/primitive/Cell.d.ts +39 -0
  72. package/dist/data/primitive/Cell.d.ts.map +1 -0
  73. package/dist/data/primitive/Cell.js +41 -0
  74. package/dist/data/primitive/Cell.js.map +1 -0
  75. package/dist/data/primitive/Element.d.ts +18 -0
  76. package/dist/data/primitive/Element.d.ts.map +1 -0
  77. package/dist/data/primitive/Element.js +40 -0
  78. package/dist/data/primitive/Element.js.map +1 -0
  79. package/dist/data/primitive/Row.d.ts +58 -0
  80. package/dist/data/primitive/Row.d.ts.map +1 -0
  81. package/dist/data/primitive/Row.js +193 -0
  82. package/dist/data/primitive/Row.js.map +1 -0
  83. package/dist/data/primitive/RowsGroup.d.ts +29 -0
  84. package/dist/data/primitive/RowsGroup.d.ts.map +1 -0
  85. package/dist/data/primitive/RowsGroup.js +86 -0
  86. package/dist/data/primitive/RowsGroup.js.map +1 -0
  87. package/dist/index.d.ts +20 -433
  88. package/dist/index.js +20 -1300
  89. package/dist/index.js.map +1 -1
  90. package/package.json +5 -5
@@ -0,0 +1,40 @@
1
+ import { makeObservable, action, observable } from 'mobx';
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
5
+ var __publicField = (obj, key, value) => {
6
+ __defNormalProp(obj, key + "" , value);
7
+ return value;
8
+ };
9
+ const voidTable = {};
10
+ class Element {
11
+ constructor(state) {
12
+ this.state = state;
13
+ __publicField(this, "table", voidTable);
14
+ makeObservable(this, {
15
+ state: observable,
16
+ setState: action
17
+ });
18
+ }
19
+ getTable() {
20
+ return this.table;
21
+ }
22
+ setTable(table) {
23
+ this.table = table || voidTable;
24
+ return this;
25
+ }
26
+ getState(prop) {
27
+ return this.state[prop];
28
+ }
29
+ setState(prop, value) {
30
+ if (typeof prop === "function") {
31
+ this.state = prop(this.state);
32
+ } else {
33
+ this.state[prop] = value;
34
+ }
35
+ return this;
36
+ }
37
+ }
38
+
39
+ export { Element };
40
+ //# sourceMappingURL=Element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Element.js","sources":["../../../src/data/primitive/Element.ts"],"sourcesContent":["import { action, makeObservable, observable } from 'mobx';\r\nimport type { TableController } from '../TableController';\r\n\r\nconst voidTable = {} as TableController;\r\n\r\nexport type ElementBaseState = {\r\n properties?: Record<string, unknown>;\r\n};\r\n\r\nexport abstract class Element<T extends ElementBaseState> {\r\n protected table: TableController = voidTable;\r\n\r\n constructor(protected state: T) {\r\n makeObservable<Element<T>, 'state'>(this, {\r\n state: observable,\r\n setState: action,\r\n });\r\n }\r\n\r\n public getTable() {\r\n return this.table;\r\n }\r\n\r\n public setTable(table: null | TableController) {\r\n this.table = table || voidTable;\r\n return this;\r\n }\r\n\r\n public getState<K extends keyof T>(prop: K) {\r\n return this.state[prop];\r\n }\r\n\r\n public setState(cb: (s: T) => T): this;\r\n public setState<K extends keyof T>(prop: K, value: T[K]): this;\r\n public setState<K extends keyof T>(prop: K | ((s: T) => T), value?: T[K]) {\r\n if (typeof prop === 'function') {\r\n this.state = prop(this.state);\r\n } else {\r\n this.state[prop] = value!;\r\n }\r\n return this;\r\n }\r\n}\r\n"],"names":[],"mappings":";;;;;;;;AAGA,MAAM,YAAY,EAAC;AAMZ,MAAe,OAAA,CAAoC;AAAA,EAGxD,YAAsB,KAAA,EAAU;AAAV,IAAA,IAAA,CAAA,KAAA,GAAA,KAAA;AAFtB,IAAA,aAAA,CAAA,IAAA,EAAU,OAAA,EAAyB,SAAA,CAAA;AAGjC,IAAA,cAAA,CAAoC,IAAA,EAAM;AAAA,MACxC,KAAA,EAAO,UAAA;AAAA,MACP,QAAA,EAAU;AAAA,KACX,CAAA;AAAA;AACH,EAEO,QAAA,GAAW;AAChB,IAAA,OAAO,IAAA,CAAK,KAAA;AAAA;AACd,EAEO,SAAS,KAAA,EAA+B;AAC7C,IAAA,IAAA,CAAK,QAAQ,KAAA,IAAS,SAAA;AACtB,IAAA,OAAO,IAAA;AAAA;AACT,EAEO,SAA4B,IAAA,EAAS;AAC1C,IAAA,OAAO,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA;AACxB,EAIO,QAAA,CAA4B,MAAyB,KAAA,EAAc;AACxE,IAAA,IAAI,OAAO,SAAS,UAAA,EAAY;AAC9B,MAAA,IAAA,CAAK,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,KAAK,CAAA;AAAA,KAC9B,MAAO;AACL,MAAA,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA,GAAI,KAAA;AAAA;AAErB,IAAA,OAAO,IAAA;AAAA;AAEX;;;;"}
@@ -0,0 +1,58 @@
1
+ import { Element } from './Element.js';
2
+ import { Cell, CellState } from './Cell.js';
3
+ import { TableController } from '../TableController.js';
4
+ import { RowsGroup, RowsGroupBaseState } from './RowsGroup.js';
5
+ import { HTMLAttributes } from 'react';
6
+
7
+ type RowProperties = {
8
+ id: string;
9
+ cells: Cell[];
10
+ isExpandible?: boolean;
11
+ isExpanded?: boolean;
12
+ isHidden?: boolean;
13
+ isSelectable?: boolean;
14
+ isSelected?: boolean;
15
+ isDisabled?: boolean;
16
+ domProperties?: HTMLAttributes<HTMLTableRowElement>;
17
+ properties?: Record<string, unknown>;
18
+ };
19
+ type TBuildRow = Omit<RowProperties, 'cells'> & {
20
+ cells: (Omit<CellState, 'colName'> & {
21
+ colName?: string;
22
+ })[];
23
+ };
24
+ type RowState = Omit<RowProperties, 'isSelected'>;
25
+ declare class Row extends Element<RowState> {
26
+ protected properties?: Omit<RowProperties, "id"> | undefined;
27
+ protected container: null | RowsGroup<RowsGroupBaseState>;
28
+ hiddenCells: Map<string, Cell>;
29
+ addCell(cell: Cell): this;
30
+ addCellAfter(anchor: Cell, newElement: Cell): void;
31
+ addCellBefore(anchor: Cell, newElement: Cell): void;
32
+ build(data: TBuildRow): void;
33
+ constructor(id: string, properties?: Omit<RowProperties, "id"> | undefined);
34
+ get cells(): Cell[];
35
+ get isSelected(): boolean;
36
+ getCellByColumnName(colName: string): Cell<CellState<any>> | undefined;
37
+ getCellByIndex(index: number): Cell<CellState<any>>;
38
+ getCellIndex(cell: Cell): number;
39
+ getContainer(): RowsGroup<RowsGroupBaseState> | null;
40
+ getFollowingRow(): Row;
41
+ getHiddenCell(colName: string): Cell<CellState<any>> | undefined;
42
+ getIndex(): number;
43
+ getPreviousRow(): Row;
44
+ insertAfter(row: Row): void;
45
+ insertBefore(row: Row): void;
46
+ remove(): void;
47
+ replaceCellOnIndex(index: number, newCell: Cell): void;
48
+ scrollIntoView(): void;
49
+ setContainer(container: null | RowsGroup<RowsGroupBaseState>): this;
50
+ setTable(table: null | TableController): this;
51
+ swap(withRow: Row): void;
52
+ toggleSelection(forceState?: boolean, fireEvent?: boolean): void;
53
+ protected attachCell(cell: Cell): void;
54
+ protected detachCell(cell: Cell): void;
55
+ }
56
+
57
+ export { Row, type RowProperties, type RowState, type TBuildRow };
58
+ //# sourceMappingURL=Row.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Row.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,193 @@
1
+ import { Element } from './Element.js';
2
+ import { Cell } from './Cell.js';
3
+ import { makeObservable, computed } from 'mobx';
4
+ import { AdditionalCell } from './AdditionalCell.js';
5
+
6
+ var __defProp = Object.defineProperty;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __publicField = (obj, key, value) => {
9
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
10
+ return value;
11
+ };
12
+ class Row extends Element {
13
+ constructor(id, properties) {
14
+ const { cells, isSelected, ...state } = properties || {};
15
+ super({ id, ...state, cells: cells || [] });
16
+ this.properties = properties;
17
+ __publicField(this, "container", {});
18
+ __publicField(this, "hiddenCells", /* @__PURE__ */ new Map());
19
+ makeObservable(this, {
20
+ isSelected: computed
21
+ });
22
+ }
23
+ addCell(cell) {
24
+ this.state.cells.push(cell);
25
+ this.attachCell(cell);
26
+ return this;
27
+ }
28
+ addCellAfter(anchor, newElement) {
29
+ const index = this.state.cells.indexOf(anchor) + 1;
30
+ if (index !== -1) {
31
+ this.attachCell(newElement);
32
+ this.state.cells.splice(index, 0, newElement);
33
+ }
34
+ }
35
+ addCellBefore(anchor, newElement) {
36
+ const index = this.state.cells.indexOf(anchor);
37
+ if (index !== -1) {
38
+ this.attachCell(newElement);
39
+ this.state.cells.splice(index, 0, newElement);
40
+ }
41
+ }
42
+ build(data) {
43
+ this.hiddenCells.clear();
44
+ this.state.cells = [];
45
+ const {
46
+ id,
47
+ domProperties,
48
+ isExpanded,
49
+ isExpandible,
50
+ isHidden,
51
+ isSelectable,
52
+ isSelected,
53
+ isDisabled,
54
+ properties
55
+ } = data;
56
+ Object.assign(this.state, {
57
+ id,
58
+ domProperties,
59
+ isExpanded,
60
+ isExpandible,
61
+ isHidden,
62
+ isSelectable,
63
+ isSelected,
64
+ isDisabled,
65
+ properties
66
+ });
67
+ for (let i = 0; i < data.cells.length; i++) {
68
+ const cell = data.cells[i];
69
+ const col = cell.colName ? this.table.head.getHeaderRow().getColumn(cell.colName) : this.table.head.getHeaderRow().getColumns()[i];
70
+ const cellInstance = new Cell({
71
+ ...cell,
72
+ colName: col?.getState("colName")
73
+ });
74
+ if (col?.isVisible) {
75
+ const currentCell = this.state.cells[i - this.hiddenCells.size];
76
+ if (!currentCell) {
77
+ this.addCell(cellInstance);
78
+ } else {
79
+ currentCell.updateState({
80
+ ...cell,
81
+ colName: col?.getState("colName")
82
+ });
83
+ }
84
+ } else {
85
+ cellInstance.setTable(this.table);
86
+ this.hiddenCells.set(col?.getColumnName(), cellInstance);
87
+ }
88
+ }
89
+ this.cells.splice(data.cells.length - this.hiddenCells.size);
90
+ }
91
+ get cells() {
92
+ const hasAdditionalColumn = !!this.table.getState("onRowExpand") || // [...(this.table.head.getColumns()?.columns.values() ?? [])].some(
93
+ // (c) => c.asAdditional,
94
+ // ) ||
95
+ (this.table.head.getFiltersRow()?.getFiltersInTable()?.length || 0) > 0;
96
+ let additionalCell = null;
97
+ if (hasAdditionalColumn) {
98
+ additionalCell = new AdditionalCell();
99
+ additionalCell.setRow(this);
100
+ additionalCell.setTable(this.table);
101
+ }
102
+ return [additionalCell, ...this.state.cells].filter(
103
+ (f) => Boolean(f)
104
+ );
105
+ }
106
+ get isSelected() {
107
+ return this.table.isSelected(this);
108
+ }
109
+ getCellByColumnName(colName) {
110
+ return this.cells.find((c) => c.getState("colName") === colName);
111
+ }
112
+ getCellByIndex(index) {
113
+ return this.cells[index];
114
+ }
115
+ getCellIndex(cell) {
116
+ return this.cells.indexOf(cell);
117
+ }
118
+ getContainer() {
119
+ return this.container;
120
+ }
121
+ getFollowingRow() {
122
+ const containerRows = [...this.container.getState("rows").values()];
123
+ const index = containerRows.findIndex(
124
+ (r) => r.getState("id") === this.state.id
125
+ );
126
+ return containerRows[index + 1] || null;
127
+ }
128
+ getHiddenCell(colName) {
129
+ return this.hiddenCells.get(colName);
130
+ }
131
+ getIndex() {
132
+ return this.getContainer().getRowIndex(this);
133
+ }
134
+ getPreviousRow() {
135
+ const containerRows = [...this.container.getState("rows").values()];
136
+ const index = containerRows.findIndex(
137
+ (r) => r.getState("id") === this.state.id
138
+ );
139
+ return containerRows[index - 1] || null;
140
+ }
141
+ insertAfter(row) {
142
+ this.getContainer()?.insertAfter(this, row);
143
+ }
144
+ insertBefore(row) {
145
+ this.getContainer()?.insertBefore(this, row);
146
+ }
147
+ remove() {
148
+ this.getContainer()?.removeRow(this);
149
+ }
150
+ replaceCellOnIndex(index, newCell) {
151
+ const current = this.cells[index];
152
+ if (!current) {
153
+ throw new Error("IndexOutOfBounds - The provided index is out of bounds");
154
+ }
155
+ this.cells[index] = newCell;
156
+ this.attachCell(newCell);
157
+ this.detachCell(current);
158
+ }
159
+ scrollIntoView() {
160
+ this.table.scrollRowIntoView(this);
161
+ }
162
+ setContainer(container) {
163
+ this.container = container;
164
+ return this;
165
+ }
166
+ setTable(table) {
167
+ super.setTable(table);
168
+ this.state.cells.forEach((c) => c.setTable(table));
169
+ if (table && this.properties?.isSelected) {
170
+ table.toggleRowSelection(this, true);
171
+ }
172
+ return this;
173
+ }
174
+ swap(withRow) {
175
+ this.getContainer()?.swapRows(this, withRow);
176
+ }
177
+ toggleSelection(forceState, fireEvent = true) {
178
+ if (this.state.isSelectable) {
179
+ this.table.toggleRowSelection(this, forceState, fireEvent);
180
+ }
181
+ }
182
+ attachCell(cell) {
183
+ cell.setTable(this.table);
184
+ cell.setRow(this);
185
+ }
186
+ detachCell(cell) {
187
+ cell.setTable(null);
188
+ cell.setRow(null);
189
+ }
190
+ }
191
+
192
+ export { Row };
193
+ //# sourceMappingURL=Row.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Row.js","sources":["../../../src/data/primitive/Row.ts"],"sourcesContent":["import { Element } from './Element';\r\nimport { Cell, type CellState } from './Cell';\r\nimport type { TableController } from '../TableController';\r\nimport { computed, makeObservable } from 'mobx';\r\nimport type { RowsGroup, RowsGroupBaseState } from './RowsGroup';\r\nimport type { HTMLAttributes } from 'react';\r\nimport { AdditionalCell } from './AdditionalCell';\r\n\r\nexport type RowProperties = {\r\n id: string;\r\n cells: Cell[];\r\n\r\n isExpandible?: boolean;\r\n isExpanded?: boolean;\r\n isHidden?: boolean;\r\n isSelectable?: boolean;\r\n isSelected?: boolean;\r\n isDisabled?: boolean;\r\n\r\n domProperties?: HTMLAttributes<HTMLTableRowElement>;\r\n properties?: Record<string, unknown>;\r\n};\r\n\r\nexport type TBuildRow = Omit<RowProperties, 'cells'> & {\r\n cells: (Omit<CellState, 'colName'> & { colName?: string })[];\r\n};\r\n\r\nexport type RowState = Omit<RowProperties, 'isSelected'>;\r\n\r\nexport class Row extends Element<RowState> {\r\n protected container: null | RowsGroup<RowsGroupBaseState> =\r\n {} as RowsGroup<RowsGroupBaseState>;\r\n\r\n hiddenCells: Map<string, Cell> = new Map();\r\n\r\n addCell(cell: Cell) {\r\n this.state.cells.push(cell);\r\n this.attachCell(cell);\r\n return this;\r\n }\r\n\r\n addCellAfter(anchor: Cell, newElement: Cell) {\r\n const index = this.state.cells.indexOf(anchor) + 1;\r\n\r\n if (index !== -1) {\r\n this.attachCell(newElement);\r\n this.state.cells.splice(index, 0, newElement);\r\n }\r\n }\r\n\r\n addCellBefore(anchor: Cell, newElement: Cell) {\r\n const index = this.state.cells.indexOf(anchor);\r\n\r\n if (index !== -1) {\r\n this.attachCell(newElement);\r\n this.state.cells.splice(index, 0, newElement);\r\n }\r\n }\r\n\r\n build(data: TBuildRow) {\r\n this.hiddenCells.clear();\r\n this.state.cells = [];\r\n const {\r\n id,\r\n domProperties,\r\n isExpanded,\r\n isExpandible,\r\n isHidden,\r\n isSelectable,\r\n isSelected,\r\n isDisabled,\r\n properties,\r\n } = data;\r\n Object.assign(this.state, {\r\n id,\r\n domProperties,\r\n isExpanded,\r\n isExpandible,\r\n isHidden,\r\n isSelectable,\r\n isSelected,\r\n isDisabled,\r\n properties,\r\n });\r\n\r\n for (let i = 0; i < data.cells.length; i++) {\r\n const cell = data.cells[i];\r\n\r\n const col = cell.colName\r\n ? this.table.head.getHeaderRow()!.getColumn(cell.colName)!\r\n : this.table.head.getHeaderRow()!.getColumns()[i]!;\r\n\r\n const cellInstance = new Cell({\r\n ...cell,\r\n colName: col?.getState('colName'),\r\n });\r\n\r\n if (col?.isVisible) {\r\n const currentCell = this.state.cells[i - this.hiddenCells.size];\r\n\r\n if (!currentCell) {\r\n this.addCell(cellInstance);\r\n } else {\r\n currentCell.updateState({\r\n ...cell,\r\n colName: col?.getState('colName'),\r\n });\r\n }\r\n } else {\r\n cellInstance.setTable(this.table);\r\n this.hiddenCells.set(col?.getColumnName(), cellInstance);\r\n }\r\n }\r\n this.cells.splice(data.cells.length - this.hiddenCells.size);\r\n }\r\n\r\n constructor(\r\n id: string,\r\n protected properties?: Omit<RowProperties, 'id'>,\r\n ) {\r\n const { cells, isSelected, ...state } = properties || {};\r\n super({ id, ...state, cells: cells || [] });\r\n makeObservable(this, {\r\n isSelected: computed,\r\n });\r\n }\r\n\r\n get cells(): Cell[] {\r\n const hasAdditionalColumn: boolean =\r\n !!this.table.getState('onRowExpand') ||\r\n // [...(this.table.head.getColumns()?.columns.values() ?? [])].some(\r\n // (c) => c.asAdditional,\r\n // ) ||\r\n (this.table.head.getFiltersRow()?.getFiltersInTable()?.length || 0) > 0;\r\n\r\n let additionalCell: Cell | null = null;\r\n if (hasAdditionalColumn) {\r\n additionalCell = new AdditionalCell();\r\n additionalCell.setRow(this);\r\n additionalCell.setTable(this.table);\r\n }\r\n\r\n return [additionalCell, ...this.state.cells].filter((f): f is Cell =>\r\n Boolean(f),\r\n );\r\n }\r\n\r\n get isSelected() {\r\n return this.table.isSelected(this);\r\n }\r\n\r\n getCellByColumnName(colName: string) {\r\n return this.cells.find((c) => c.getState('colName') === colName);\r\n }\r\n\r\n getCellByIndex(index: number) {\r\n return this.cells[index];\r\n }\r\n\r\n getCellIndex(cell: Cell) {\r\n return this.cells.indexOf(cell);\r\n }\r\n\r\n getContainer() {\r\n return this.container;\r\n }\r\n\r\n getFollowingRow() {\r\n const containerRows = [...this.container!.getState('rows').values()];\r\n const index = containerRows.findIndex(\r\n (r) => r.getState('id') === this.state.id,\r\n );\r\n return containerRows[index + 1] || null;\r\n }\r\n\r\n getHiddenCell(colName: string) {\r\n return this.hiddenCells.get(colName);\r\n }\r\n\r\n getIndex() {\r\n return this.getContainer()!.getRowIndex(this);\r\n }\r\n\r\n getPreviousRow() {\r\n const containerRows = [...this.container!.getState('rows').values()];\r\n const index = containerRows.findIndex(\r\n (r) => r.getState('id') === this.state.id,\r\n );\r\n return containerRows[index - 1] || null;\r\n }\r\n\r\n insertAfter(row: Row) {\r\n this.getContainer()?.insertAfter(this, row);\r\n }\r\n\r\n insertBefore(row: Row) {\r\n this.getContainer()?.insertBefore(this, row);\r\n }\r\n\r\n remove() {\r\n this.getContainer()?.removeRow(this);\r\n }\r\n\r\n replaceCellOnIndex(index: number, newCell: Cell) {\r\n const current = this.cells[index];\r\n if (!current) {\r\n throw new Error('IndexOutOfBounds - The provided index is out of bounds');\r\n }\r\n\r\n this.cells[index] = newCell;\r\n this.attachCell(newCell);\r\n\r\n this.detachCell(current);\r\n }\r\n\r\n public scrollIntoView() {\r\n this.table.scrollRowIntoView(this);\r\n }\r\n\r\n public setContainer(container: null | RowsGroup<RowsGroupBaseState>) {\r\n this.container = container;\r\n return this;\r\n }\r\n\r\n public setTable(table: null | TableController) {\r\n super.setTable(table);\r\n\r\n this.state.cells.forEach((c) => c.setTable(table));\r\n\r\n if (table && this.properties?.isSelected) {\r\n table.toggleRowSelection(this, true);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n public swap(withRow: Row) {\r\n this.getContainer()?.swapRows(this, withRow);\r\n }\r\n\r\n public toggleSelection(forceState?: boolean, fireEvent = true) {\r\n if (this.state.isSelectable) {\r\n this.table.toggleRowSelection(this, forceState, fireEvent);\r\n }\r\n }\r\n\r\n protected attachCell(cell: Cell) {\r\n cell.setTable(this.table);\r\n cell.setRow(this);\r\n }\r\n\r\n protected detachCell(cell: Cell) {\r\n cell.setTable(null);\r\n cell.setRow(null);\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { Row } from './Row.js';
2
+ import { TableController } from '../TableController.js';
3
+ import { ElementBaseState, Element } from './Element.js';
4
+ import { HTMLAttributes } from 'react';
5
+
6
+ type RowsGroupBaseState = ElementBaseState & {
7
+ rows: Row[];
8
+ domProperties?: HTMLAttributes<HTMLTableSectionElement>;
9
+ properties?: Record<string, unknown>;
10
+ };
11
+ declare class RowsGroup<U extends RowsGroupBaseState> extends Element<U & RowsGroupBaseState> {
12
+ table: TableController;
13
+ constructor(table: TableController, state: U);
14
+ get rows(): Row[];
15
+ addRow(row: Row): this;
16
+ addRows(rows: Row[]): this;
17
+ clear(): Row[];
18
+ getRowById(id: string | number): Row | undefined;
19
+ getRowByIndex(index: number): Row;
20
+ getRowIndex(row: Row): number;
21
+ insertAfter(anchor: Row, newElement: Row): void;
22
+ insertBefore(anchor: Row, newElement: Row): void;
23
+ removeRow(row: Row): void;
24
+ swapRows(a: Row, b: Row): void;
25
+ protected runAddRowPlugin(newRow: Row): void;
26
+ }
27
+
28
+ export { RowsGroup, type RowsGroupBaseState };
29
+ //# sourceMappingURL=RowsGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RowsGroup.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,86 @@
1
+ import { makeObservable, computed, action } from 'mobx';
2
+ import { Element } from './Element.js';
3
+
4
+ class RowsGroup extends Element {
5
+ constructor(table, state) {
6
+ super({ ...state, rows: [] });
7
+ this.table = table;
8
+ makeObservable(this, { swapRows: action, rows: computed });
9
+ }
10
+ get rows() {
11
+ return this.state.rows;
12
+ }
13
+ addRow(row) {
14
+ this.state.rows.push(row);
15
+ row.setTable(this.table);
16
+ row.setContainer(this);
17
+ this.runAddRowPlugin(row);
18
+ return this;
19
+ }
20
+ addRows(rows) {
21
+ rows.forEach(this.addRow.bind(this));
22
+ return this;
23
+ }
24
+ clear() {
25
+ this.state.rows.forEach((row) => {
26
+ row.setContainer(null);
27
+ row.setTable(null);
28
+ });
29
+ return this.rows.splice(0, this.rows.length);
30
+ }
31
+ getRowById(id) {
32
+ return this.state.rows.find((c) => c.getState("id") === id);
33
+ }
34
+ getRowByIndex(index) {
35
+ return this.state.rows[index];
36
+ }
37
+ getRowIndex(row) {
38
+ return this.state.rows.indexOf(row);
39
+ }
40
+ insertAfter(anchor, newElement) {
41
+ if (anchor.getContainer() === this) {
42
+ const index = this.state.rows.indexOf(anchor);
43
+ this.state.rows.splice(index + 1, 0, newElement);
44
+ newElement.setTable(this.table);
45
+ newElement.setContainer(this);
46
+ this.runAddRowPlugin(newElement);
47
+ }
48
+ }
49
+ insertBefore(anchor, newElement) {
50
+ if (anchor.getContainer() === this) {
51
+ const index = this.state.rows.indexOf(anchor);
52
+ this.state.rows.splice(index, 0, newElement);
53
+ newElement.setTable(this.table);
54
+ newElement.setContainer(this);
55
+ this.runAddRowPlugin(newElement);
56
+ }
57
+ }
58
+ removeRow(row) {
59
+ if (row.getContainer() === this) {
60
+ row.setContainer(null);
61
+ this.state.rows = this.state.rows.filter((r) => r !== row);
62
+ this.table.removeRow(row);
63
+ }
64
+ }
65
+ swapRows(a, b) {
66
+ if (a?.getContainer() === this && b?.getContainer() === this) {
67
+ const aIndex = this.state.rows.findIndex(
68
+ (r) => r.getState?.("id") === a.getState?.("id")
69
+ );
70
+ const bIndex = this.state.rows.findIndex(
71
+ (r) => r.getState?.("id") === b.getState?.("id")
72
+ );
73
+ if (aIndex !== -1 && bIndex !== -1) {
74
+ this.state.rows[aIndex] = b;
75
+ this.state.rows[bIndex] = a;
76
+ }
77
+ }
78
+ }
79
+ runAddRowPlugin(newRow) {
80
+ const plugins = this.getTable().getApplicablePlugins("onAddRow");
81
+ plugins.forEach((c) => c(this, newRow));
82
+ }
83
+ }
84
+
85
+ export { RowsGroup };
86
+ //# sourceMappingURL=RowsGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RowsGroup.js","sources":["../../../src/data/primitive/RowsGroup.ts"],"sourcesContent":["import { action, computed, makeObservable } from 'mobx';\r\nimport type { Row } from './Row';\r\nimport type { TableController } from '../TableController';\r\nimport { Element, type ElementBaseState } from './Element';\r\nimport type { HTMLAttributes } from 'react';\r\n\r\nexport type RowsGroupBaseState = ElementBaseState & {\r\n rows: Row[];\r\n domProperties?: HTMLAttributes<HTMLTableSectionElement>;\r\n properties?: Record<string, unknown>;\r\n};\r\n\r\nexport class RowsGroup<U extends RowsGroupBaseState> extends Element<\r\n U & RowsGroupBaseState\r\n> {\r\n constructor(\r\n public table: TableController,\r\n state: U,\r\n ) {\r\n super({ ...state, rows: [] });\r\n makeObservable(this, { swapRows: action, rows: computed });\r\n }\r\n\r\n get rows() {\r\n return this.state.rows;\r\n }\r\n\r\n addRow(row: Row) {\r\n this.state.rows.push(row);\r\n row.setTable(this.table);\r\n row.setContainer(this);\r\n\r\n this.runAddRowPlugin(row);\r\n\r\n return this;\r\n }\r\n\r\n addRows(rows: Row[]) {\r\n rows.forEach(this.addRow.bind(this));\r\n return this;\r\n }\r\n\r\n clear() {\r\n this.state.rows.forEach((row) => {\r\n row.setContainer(null);\r\n row.setTable(null);\r\n });\r\n return this.rows.splice(0, this.rows.length);\r\n }\r\n\r\n getRowById(id: string | number) {\r\n return this.state.rows.find((c) => c.getState('id') === id);\r\n }\r\n\r\n getRowByIndex(index: number) {\r\n return this.state.rows[index];\r\n }\r\n\r\n getRowIndex(row: Row) {\r\n return this.state.rows.indexOf(row);\r\n }\r\n\r\n insertAfter(anchor: Row, newElement: Row) {\r\n if (anchor.getContainer() === this) {\r\n const index = this.state.rows.indexOf(anchor);\r\n this.state.rows.splice(index + 1, 0, newElement);\r\n newElement.setTable(this.table);\r\n newElement.setContainer(this);\r\n this.runAddRowPlugin(newElement);\r\n }\r\n }\r\n\r\n insertBefore(anchor: Row, newElement: Row) {\r\n if (anchor.getContainer() === this) {\r\n const index = this.state.rows.indexOf(anchor);\r\n this.state.rows.splice(index, 0, newElement);\r\n newElement.setTable(this.table);\r\n newElement.setContainer(this);\r\n this.runAddRowPlugin(newElement);\r\n }\r\n }\r\n\r\n removeRow(row: Row) {\r\n if (row.getContainer() === this) {\r\n row.setContainer(null);\r\n this.state.rows = this.state.rows.filter((r) => r !== row);\r\n this.table.removeRow(row);\r\n }\r\n }\r\n\r\n swapRows(a: Row, b: Row) {\r\n if (a?.getContainer() === this && b?.getContainer() === this) {\r\n const aIndex = this.state.rows.findIndex(\r\n (r) => r.getState?.('id') === a.getState?.('id'),\r\n );\r\n const bIndex = this.state.rows.findIndex(\r\n (r) => r.getState?.('id') === b.getState?.('id'),\r\n );\r\n if (aIndex !== -1 && bIndex !== -1) {\r\n this.state.rows[aIndex] = b;\r\n this.state.rows[bIndex] = a;\r\n }\r\n }\r\n }\r\n\r\n protected runAddRowPlugin(newRow: Row) {\r\n const plugins = this.getTable().getApplicablePlugins('onAddRow');\r\n plugins.forEach((c) => c(this, newRow));\r\n }\r\n}\r\n"],"names":[],"mappings":"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"}