@semcore/data-table 4.51.0-prerelease.0 → 4.51.0-prerelease.4

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 (236) hide show
  1. package/lib/cjs/Body.js +477 -0
  2. package/lib/cjs/Body.js.map +1 -0
  3. package/lib/cjs/DataTable.js +629 -0
  4. package/lib/cjs/DataTable.js.map +1 -0
  5. package/lib/cjs/Head.js +398 -0
  6. package/lib/cjs/Head.js.map +1 -0
  7. package/lib/cjs/index.js +15 -38
  8. package/lib/cjs/index.js.map +1 -1
  9. package/lib/cjs/style/data-table.shadow.css +413 -0
  10. package/lib/cjs/style/scroll-shadows.shadow.css +5 -50
  11. package/lib/cjs/translations/__intergalactic-dynamic-locales.js +5 -4
  12. package/lib/cjs/translations/__intergalactic-dynamic-locales.js.map +1 -1
  13. package/lib/cjs/translations/de.json +1 -6
  14. package/lib/cjs/translations/en.json +1 -6
  15. package/lib/cjs/translations/es.json +1 -6
  16. package/lib/cjs/translations/fr.json +1 -6
  17. package/lib/cjs/translations/it.json +1 -6
  18. package/lib/cjs/translations/ja.json +1 -6
  19. package/lib/cjs/translations/ko.json +1 -6
  20. package/lib/cjs/translations/nl.json +1 -6
  21. package/lib/cjs/translations/pl.json +1 -6
  22. package/lib/cjs/translations/pt.json +1 -6
  23. package/lib/cjs/translations/sv.json +1 -6
  24. package/lib/cjs/translations/tr.json +1 -6
  25. package/lib/cjs/translations/vi.json +1 -6
  26. package/lib/cjs/translations/zh.json +1 -6
  27. package/lib/cjs/types.js +4 -0
  28. package/lib/cjs/types.js.map +1 -0
  29. package/lib/cjs/utils.js +57 -0
  30. package/lib/cjs/utils.js.map +1 -0
  31. package/lib/es6/Body.js +469 -0
  32. package/lib/es6/Body.js.map +1 -0
  33. package/lib/es6/DataTable.js +619 -0
  34. package/lib/es6/DataTable.js.map +1 -0
  35. package/lib/es6/Head.js +390 -0
  36. package/lib/es6/Head.js.map +1 -0
  37. package/lib/es6/index.js +2 -7
  38. package/lib/es6/index.js.map +1 -1
  39. package/lib/es6/style/data-table.shadow.css +413 -0
  40. package/lib/es6/style/scroll-shadows.shadow.css +5 -50
  41. package/lib/es6/translations/__intergalactic-dynamic-locales.js +2 -2
  42. package/lib/es6/translations/__intergalactic-dynamic-locales.js.map +1 -1
  43. package/lib/es6/translations/de.json +1 -6
  44. package/lib/es6/translations/en.json +1 -6
  45. package/lib/es6/translations/es.json +1 -6
  46. package/lib/es6/translations/fr.json +1 -6
  47. package/lib/es6/translations/it.json +1 -6
  48. package/lib/es6/translations/ja.json +1 -6
  49. package/lib/es6/translations/ko.json +1 -6
  50. package/lib/es6/translations/nl.json +1 -6
  51. package/lib/es6/translations/pl.json +1 -6
  52. package/lib/es6/translations/pt.json +1 -6
  53. package/lib/es6/translations/sv.json +1 -6
  54. package/lib/es6/translations/tr.json +1 -6
  55. package/lib/es6/translations/vi.json +1 -6
  56. package/lib/es6/translations/zh.json +1 -6
  57. package/lib/es6/types.js +2 -0
  58. package/lib/es6/types.js.map +1 -0
  59. package/lib/es6/utils.js +48 -0
  60. package/lib/es6/utils.js.map +1 -0
  61. package/lib/esm/Body.mjs +430 -0
  62. package/lib/esm/DataTable.mjs +589 -0
  63. package/lib/esm/Head.mjs +368 -0
  64. package/lib/esm/index.mjs +5 -12
  65. package/lib/esm/style/data-table.shadow.css +413 -0
  66. package/lib/esm/style/scroll-shadows.shadow.css +5 -50
  67. package/lib/esm/translations/__intergalactic-dynamic-locales.mjs +2 -2
  68. package/lib/esm/translations/de.json.mjs +1 -6
  69. package/lib/esm/translations/en.json.mjs +1 -6
  70. package/lib/esm/translations/es.json.mjs +1 -6
  71. package/lib/esm/translations/fr.json.mjs +1 -6
  72. package/lib/esm/translations/it.json.mjs +1 -6
  73. package/lib/esm/translations/ja.json.mjs +1 -6
  74. package/lib/esm/translations/ko.json.mjs +1 -6
  75. package/lib/esm/translations/nl.json.mjs +1 -6
  76. package/lib/esm/translations/pl.json.mjs +1 -6
  77. package/lib/esm/translations/pt.json.mjs +1 -6
  78. package/lib/esm/translations/sv.json.mjs +1 -6
  79. package/lib/esm/translations/tr.json.mjs +1 -6
  80. package/lib/esm/translations/vi.json.mjs +1 -6
  81. package/lib/esm/translations/zh.json.mjs +1 -6
  82. package/lib/esm/utils.mjs +52 -0
  83. package/lib/types/Body.d.ts +61 -0
  84. package/lib/types/DataTable.d.ts +205 -0
  85. package/lib/types/Head.d.ts +45 -0
  86. package/lib/types/index.d.ts +2 -10
  87. package/lib/types/translations/__intergalactic-dynamic-locales.d.ts +0 -70
  88. package/lib/types/types.d.ts +73 -0
  89. package/lib/types/utils.d.ts +4 -0
  90. package/package.json +6 -6
  91. package/lib/cjs/components/AccordionRows/AccordionRows.js +0 -177
  92. package/lib/cjs/components/AccordionRows/AccordionRows.js.map +0 -1
  93. package/lib/cjs/components/Body/Body.js +0 -445
  94. package/lib/cjs/components/Body/Body.js.map +0 -1
  95. package/lib/cjs/components/Body/Body.types.js +0 -2
  96. package/lib/cjs/components/Body/Body.types.js.map +0 -1
  97. package/lib/cjs/components/Body/Cell.js +0 -205
  98. package/lib/cjs/components/Body/Cell.js.map +0 -1
  99. package/lib/cjs/components/Body/Cell.types.js +0 -2
  100. package/lib/cjs/components/Body/Cell.types.js.map +0 -1
  101. package/lib/cjs/components/Body/LimitOverlay.js +0 -191
  102. package/lib/cjs/components/Body/LimitOverlay.js.map +0 -1
  103. package/lib/cjs/components/Body/MergedCells.js +0 -31
  104. package/lib/cjs/components/Body/MergedCells.js.map +0 -1
  105. package/lib/cjs/components/Body/Row.js +0 -630
  106. package/lib/cjs/components/Body/Row.js.map +0 -1
  107. package/lib/cjs/components/Body/Row.types.js +0 -2
  108. package/lib/cjs/components/Body/Row.types.js.map +0 -1
  109. package/lib/cjs/components/Body/RowGroup.js +0 -118
  110. package/lib/cjs/components/Body/RowGroup.js.map +0 -1
  111. package/lib/cjs/components/Body/style.shadow.css +0 -367
  112. package/lib/cjs/components/DataTable/DataTable.js +0 -1303
  113. package/lib/cjs/components/DataTable/DataTable.js.map +0 -1
  114. package/lib/cjs/components/DataTable/DataTable.types.js +0 -2
  115. package/lib/cjs/components/DataTable/DataTable.types.js.map +0 -1
  116. package/lib/cjs/components/DataTable/ScrollBars.js +0 -63
  117. package/lib/cjs/components/DataTable/ScrollBars.js.map +0 -1
  118. package/lib/cjs/components/DataTable/dataTable.shadow.css +0 -43
  119. package/lib/cjs/components/Head/Column.js +0 -350
  120. package/lib/cjs/components/Head/Column.js.map +0 -1
  121. package/lib/cjs/components/Head/Column.types.js +0 -2
  122. package/lib/cjs/components/Head/Column.types.js.map +0 -1
  123. package/lib/cjs/components/Head/Group.js +0 -116
  124. package/lib/cjs/components/Head/Group.js.map +0 -1
  125. package/lib/cjs/components/Head/Group.type.js +0 -2
  126. package/lib/cjs/components/Head/Group.type.js.map +0 -1
  127. package/lib/cjs/components/Head/Head.js +0 -350
  128. package/lib/cjs/components/Head/Head.js.map +0 -1
  129. package/lib/cjs/components/Head/Head.types.js +0 -2
  130. package/lib/cjs/components/Head/Head.types.js.map +0 -1
  131. package/lib/cjs/components/Head/style.shadow.css +0 -292
  132. package/lib/cjs/components/RowSelector/RowsSelector.js +0 -132
  133. package/lib/cjs/components/RowSelector/RowsSelector.js.map +0 -1
  134. package/lib/cjs/components/RowSelector/SRAnnouncer.js +0 -62
  135. package/lib/cjs/components/RowSelector/SRAnnouncer.js.map +0 -1
  136. package/lib/cjs/components/RowSelector/SRReactiveAnnouncer.js +0 -39
  137. package/lib/cjs/components/RowSelector/SRReactiveAnnouncer.js.map +0 -1
  138. package/lib/cjs/enhancers/focusableCell.js +0 -76
  139. package/lib/cjs/enhancers/focusableCell.js.map +0 -1
  140. package/lib/cjs/store/SelectableRows.js +0 -211
  141. package/lib/cjs/store/SelectableRows.js.map +0 -1
  142. package/lib/es6/components/AccordionRows/AccordionRows.js +0 -171
  143. package/lib/es6/components/AccordionRows/AccordionRows.js.map +0 -1
  144. package/lib/es6/components/Body/Body.js +0 -439
  145. package/lib/es6/components/Body/Body.js.map +0 -1
  146. package/lib/es6/components/Body/Body.types.js +0 -2
  147. package/lib/es6/components/Body/Body.types.js.map +0 -1
  148. package/lib/es6/components/Body/Cell.js +0 -199
  149. package/lib/es6/components/Body/Cell.js.map +0 -1
  150. package/lib/es6/components/Body/Cell.types.js +0 -2
  151. package/lib/es6/components/Body/Cell.types.js.map +0 -1
  152. package/lib/es6/components/Body/LimitOverlay.js +0 -184
  153. package/lib/es6/components/Body/LimitOverlay.js.map +0 -1
  154. package/lib/es6/components/Body/MergedCells.js +0 -24
  155. package/lib/es6/components/Body/MergedCells.js.map +0 -1
  156. package/lib/es6/components/Body/Row.js +0 -624
  157. package/lib/es6/components/Body/Row.js.map +0 -1
  158. package/lib/es6/components/Body/Row.types.js +0 -2
  159. package/lib/es6/components/Body/Row.types.js.map +0 -1
  160. package/lib/es6/components/Body/RowGroup.js +0 -111
  161. package/lib/es6/components/Body/RowGroup.js.map +0 -1
  162. package/lib/es6/components/Body/style.shadow.css +0 -367
  163. package/lib/es6/components/DataTable/DataTable.js +0 -1298
  164. package/lib/es6/components/DataTable/DataTable.js.map +0 -1
  165. package/lib/es6/components/DataTable/DataTable.types.js +0 -2
  166. package/lib/es6/components/DataTable/DataTable.types.js.map +0 -1
  167. package/lib/es6/components/DataTable/ScrollBars.js +0 -57
  168. package/lib/es6/components/DataTable/ScrollBars.js.map +0 -1
  169. package/lib/es6/components/DataTable/dataTable.shadow.css +0 -43
  170. package/lib/es6/components/Head/Column.js +0 -344
  171. package/lib/es6/components/Head/Column.js.map +0 -1
  172. package/lib/es6/components/Head/Column.types.js +0 -2
  173. package/lib/es6/components/Head/Column.types.js.map +0 -1
  174. package/lib/es6/components/Head/Group.js +0 -111
  175. package/lib/es6/components/Head/Group.js.map +0 -1
  176. package/lib/es6/components/Head/Group.type.js +0 -2
  177. package/lib/es6/components/Head/Group.type.js.map +0 -1
  178. package/lib/es6/components/Head/Head.js +0 -345
  179. package/lib/es6/components/Head/Head.js.map +0 -1
  180. package/lib/es6/components/Head/Head.types.js +0 -2
  181. package/lib/es6/components/Head/Head.types.js.map +0 -1
  182. package/lib/es6/components/Head/style.shadow.css +0 -292
  183. package/lib/es6/components/RowSelector/RowsSelector.js +0 -125
  184. package/lib/es6/components/RowSelector/RowsSelector.js.map +0 -1
  185. package/lib/es6/components/RowSelector/SRAnnouncer.js +0 -55
  186. package/lib/es6/components/RowSelector/SRAnnouncer.js.map +0 -1
  187. package/lib/es6/components/RowSelector/SRReactiveAnnouncer.js +0 -32
  188. package/lib/es6/components/RowSelector/SRReactiveAnnouncer.js.map +0 -1
  189. package/lib/es6/enhancers/focusableCell.js +0 -69
  190. package/lib/es6/enhancers/focusableCell.js.map +0 -1
  191. package/lib/es6/store/SelectableRows.js +0 -204
  192. package/lib/es6/store/SelectableRows.js.map +0 -1
  193. package/lib/esm/components/AccordionRows/AccordionRows.mjs +0 -155
  194. package/lib/esm/components/Body/Body.mjs +0 -395
  195. package/lib/esm/components/Body/Cell.mjs +0 -192
  196. package/lib/esm/components/Body/LimitOverlay.mjs +0 -179
  197. package/lib/esm/components/Body/MergedCells.mjs +0 -27
  198. package/lib/esm/components/Body/Row.mjs +0 -556
  199. package/lib/esm/components/Body/RowGroup.mjs +0 -113
  200. package/lib/esm/components/Body/style.shadow.css +0 -367
  201. package/lib/esm/components/DataTable/DataTable.mjs +0 -1216
  202. package/lib/esm/components/DataTable/ScrollBars.mjs +0 -61
  203. package/lib/esm/components/DataTable/dataTable.shadow.css +0 -43
  204. package/lib/esm/components/Head/Column.mjs +0 -321
  205. package/lib/esm/components/Head/Group.mjs +0 -111
  206. package/lib/esm/components/Head/Head.mjs +0 -307
  207. package/lib/esm/components/Head/style.shadow.css +0 -292
  208. package/lib/esm/components/RowSelector/RowsSelector.mjs +0 -105
  209. package/lib/esm/components/RowSelector/SRAnnouncer.mjs +0 -51
  210. package/lib/esm/components/RowSelector/SRReactiveAnnouncer.mjs +0 -31
  211. package/lib/esm/enhancers/focusableCell.mjs +0 -72
  212. package/lib/esm/store/SelectableRows.mjs +0 -201
  213. package/lib/types/components/AccordionRows/AccordionRows.d.ts +0 -41
  214. package/lib/types/components/Body/Body.d.ts +0 -6
  215. package/lib/types/components/Body/Body.types.d.ts +0 -87
  216. package/lib/types/components/Body/Cell.d.ts +0 -1
  217. package/lib/types/components/Body/Cell.types.d.ts +0 -36
  218. package/lib/types/components/Body/LimitOverlay.d.ts +0 -17
  219. package/lib/types/components/Body/MergedCells.d.ts +0 -17
  220. package/lib/types/components/Body/Row.d.ts +0 -47
  221. package/lib/types/components/Body/Row.types.d.ts +0 -74
  222. package/lib/types/components/Body/RowGroup.d.ts +0 -19
  223. package/lib/types/components/DataTable/DataTable.d.ts +0 -14
  224. package/lib/types/components/DataTable/DataTable.types.d.ts +0 -202
  225. package/lib/types/components/DataTable/ScrollBars.d.ts +0 -11
  226. package/lib/types/components/Head/Column.d.ts +0 -39
  227. package/lib/types/components/Head/Column.types.d.ts +0 -85
  228. package/lib/types/components/Head/Group.d.ts +0 -15
  229. package/lib/types/components/Head/Group.type.d.ts +0 -18
  230. package/lib/types/components/Head/Head.d.ts +0 -9
  231. package/lib/types/components/Head/Head.types.d.ts +0 -58
  232. package/lib/types/components/RowSelector/RowsSelector.d.ts +0 -32
  233. package/lib/types/components/RowSelector/SRAnnouncer.d.ts +0 -10
  234. package/lib/types/components/RowSelector/SRReactiveAnnouncer.d.ts +0 -8
  235. package/lib/types/enhancers/focusableCell.d.ts +0 -9
  236. package/lib/types/store/SelectableRows.d.ts +0 -60
@@ -0,0 +1,52 @@
1
+ var getScrollOffsetValue = function getScrollOffsetValue2(columns) {
2
+ return columns.reduce(function(acc, column) {
3
+ if (column.fixed === "left") {
4
+ acc[0] += column.width;
5
+ }
6
+ if (column.fixed === "right") {
7
+ acc[1] += column.width;
8
+ }
9
+ return acc;
10
+ }, [0, 0]);
11
+ };
12
+ var flattenColumns = function flattenColumns2(columns) {
13
+ return columns.reduce(function(acc, column) {
14
+ var hasNestedColumns = "columns" in column && column.columns.length > 0;
15
+ var columns2 = hasNestedColumns ? flattenColumns2(column.columns) : [column];
16
+ acc = acc.concat(columns2);
17
+ return acc;
18
+ }, []);
19
+ };
20
+ var getFixedStyle = function getFixedStyle2(cell, columns) {
21
+ var side = cell.fixed;
22
+ if (!side) return [void 0, void 0];
23
+ var names = cell.name.split("/");
24
+ var nameSideMap = {
25
+ left: names[0],
26
+ right: names[names.length - 1]
27
+ };
28
+ var name = nameSideMap[side];
29
+ var index = columns.findIndex(function(column) {
30
+ return column.name === name;
31
+ });
32
+ if (index === -1) return [void 0, void 0];
33
+ var startIndexSideMap = {
34
+ left: 0,
35
+ right: index + 1
36
+ };
37
+ var endIndexSideMap = {
38
+ left: index,
39
+ right: columns.length
40
+ };
41
+ var columnsFixed = columns.slice(startIndexSideMap[side], endIndexSideMap[side]);
42
+ if (columnsFixed.length < 1) return [side, 0];
43
+ var vars = columnsFixed.map(function(column) {
44
+ return "var(--".concat(column.name, "_width)");
45
+ });
46
+ return [side, vars.length === 1 ? vars[0] : "calc(".concat(vars.join(" + "), ")")];
47
+ };
48
+ export {
49
+ flattenColumns,
50
+ getFixedStyle,
51
+ getScrollOffsetValue
52
+ };
@@ -0,0 +1,61 @@
1
+ import React from 'react';
2
+ import { Component } from '@semcore/core';
3
+ import { RowData, Column, NestedCells, PropsLayer, Cell } from './types';
4
+ import syncScroll from '@semcore/utils/lib/syncScroll';
5
+ type AsProps = {
6
+ rows: NestedCells[][];
7
+ columns: Column[];
8
+ $scrollRef: ReturnType<ReturnType<typeof syncScroll>>;
9
+ onResize: ResizeObserverCallback;
10
+ onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;
11
+ rowPropsLayers: PropsLayer[];
12
+ use: 'primary' | 'secondary';
13
+ uniqueKey: string;
14
+ virtualScroll?: boolean | {
15
+ tollerance?: number;
16
+ rowHeight?: number;
17
+ };
18
+ renderRows?: (props: {
19
+ rows: NestedCells[][];
20
+ columns: Column[];
21
+ renderRow: (row: Cell[], details: {
22
+ dataIndex: number;
23
+ nested: boolean;
24
+ }) => React.ReactNode;
25
+ }) => React.ReactNode;
26
+ disabledScroll?: boolean;
27
+ uid?: string;
28
+ animationsDisabled?: boolean;
29
+ scrollContainerRef: React.Ref<HTMLDivElement>;
30
+ };
31
+ type State = {
32
+ rowHeight: number | undefined;
33
+ scrollAreaHeight: undefined | number;
34
+ scrollOffset: number;
35
+ };
36
+ declare class Body extends Component<AsProps, {}, State> {
37
+ state: State;
38
+ scrollContainerRef: React.RefObject<HTMLDivElement>;
39
+ firstRowRef: React.RefObject<HTMLDivElement>;
40
+ firstRowResizeObserver: ResizeObserver | null;
41
+ lockedCell: [HTMLElement | null, boolean];
42
+ getRowHeight: () => number | undefined;
43
+ handleKeyDown: (e: React.KeyboardEvent) => void;
44
+ onFocusCell: (e: React.FocusEvent<HTMLElement, HTMLElement>) => void;
45
+ renderCells(cells: NestedCells, rowData: RowData, dataIndex: number): React.ReactNode[];
46
+ renderRow(cells: NestedCells, { dataIndex, topOffset, nested, }: {
47
+ dataIndex: number;
48
+ topOffset?: number;
49
+ nested: boolean;
50
+ }): React.ReactNode;
51
+ renderRows(rows: NestedCells[], nested?: boolean): React.ReactNode[];
52
+ renderVirtualizedRows(rows: NestedCells[]): React.ReactNode[];
53
+ handleFirstRowResize: (entries: ResizeObserverEntry[]) => void;
54
+ handleScrollAreaResize: (entries: ResizeObserverEntry[]) => void;
55
+ handleScrollAreaScroll: (event: React.SyntheticEvent<HTMLElement>) => void;
56
+ setupRowSizeObserver: () => void;
57
+ handleBodyTransitionEnd: () => void;
58
+ componentWillUnmount(): void;
59
+ render(): JSX.Element;
60
+ }
61
+ export default Body;
@@ -0,0 +1,205 @@
1
+ import React from 'react';
2
+ import { Property } from 'csstype';
3
+ import { Component, PropGetterFn, UnknownProperties, Intergalactic } from '@semcore/core';
4
+ import { BoxProps, FlexProps } from '@semcore/flex-box';
5
+ import type { Column } from './types';
6
+ declare const ROW_GROUP: unique symbol;
7
+ export type DataTableData = {
8
+ [key: string]: unknown;
9
+ };
10
+ export type DataTableSort<Column = string> = [sortBy: Column, sortDirection: 'desc' | 'asc'];
11
+ export type DataTableTheme = 'muted' | 'info' | 'success' | 'warning' | 'danger';
12
+ export type DataTableUse = 'primary' | 'secondary';
13
+ export type DataTableRow = DataTableCell[];
14
+ export type DataTableCell = {
15
+ /** Name of column */
16
+ name: string;
17
+ /** Data of column */
18
+ data: React.ReactNode;
19
+ [key: string]: unknown;
20
+ };
21
+ /**
22
+ * Datatable must have an accessible name (aria-table-name).
23
+ * It should describe table content.
24
+ */
25
+ type DataTableAriaProps = Intergalactic.RequireAtLeastOne<{
26
+ 'aria-label'?: string;
27
+ 'aria-labelledby'?: string;
28
+ title?: string;
29
+ }>;
30
+ /** @deprecated */
31
+ export interface IDataTableProps<DataTableData extends {
32
+ [key: string]: any;
33
+ }[] = UnknownProperties[]> extends Omit<DataTableProps<DataTableData>, keyof DataTableAriaProps> {
34
+ }
35
+ export type DataTableProps<DataTableData extends {
36
+ [key: string]: any;
37
+ }[] = UnknownProperties[]> = BoxProps & {
38
+ /** Table theme according to visual hierarchy on the page
39
+ * @default primary
40
+ * */
41
+ use?: DataTableUse;
42
+ /** Data for table */
43
+ data?: DataTableData;
44
+ /** Active sort object */
45
+ sort?: DataTableSort<keyof DataTableData[0]>;
46
+ /** Handler call when request will change sort */
47
+ onSortChange?: (sort: DataTableSort<keyof DataTableData[0]>, e?: React.SyntheticEvent) => void;
48
+ /** Field name in one data entity that is unique accross all dataset
49
+ * @default id
50
+ */
51
+ uniqueKey?: keyof DataTableData[0];
52
+ /** Make cells compact by changing left and right paddings to smaller ones*/
53
+ compact?: boolean;
54
+ /** Count of total rows if table using virtual scroll. Needs for accessibility */
55
+ totalRows?: number;
56
+ } & DataTableAriaProps;
57
+ /** @deprecated */
58
+ export interface IDataTableHeadProps extends DataTableHeadProps, UnknownProperties {
59
+ }
60
+ export type DataTableHeadProps = BoxProps & {
61
+ /** Sticky table header
62
+ * @deprecated
63
+ * */
64
+ sticky?: boolean;
65
+ /** Hidden header */
66
+ hidden?: boolean;
67
+ /** Disabled scroll (as action) */
68
+ disabledScroll?: boolean;
69
+ /** Enable scroll bar element in header */
70
+ withScrollBar?: boolean;
71
+ /** Disables column width change animation **/
72
+ animationsDisabled?: boolean;
73
+ };
74
+ /** @deprecated */
75
+ export interface IDataTableColumnProps extends DataTableColumnProps, UnknownProperties {
76
+ }
77
+ export type DataTableColumnProps = FlexProps & {
78
+ /** Unique column name */
79
+ name?: string;
80
+ /** Enable sorting for column. And if you are passing a string, you can also set the default sorting */
81
+ sortable?: boolean | 'desc' | 'asc';
82
+ /** Enable resize for column
83
+ * @ignore */
84
+ resizable?: boolean;
85
+ /** Fix column on the left o right side of the table */
86
+ fixed?: 'left' | 'right';
87
+ /** Fields to control the size of the column */
88
+ flex?: Property.Flex | 'inherit';
89
+ /** Add vertical border to the column */
90
+ vBorders?: boolean;
91
+ /** Add vertical border to the right side of the cell */
92
+ borderRight?: boolean;
93
+ /** Add vertical border to the left side of the cell */
94
+ borderLeft?: boolean;
95
+ /**
96
+ * Enable changing column width with sort icon
97
+ * @default false
98
+ */
99
+ changeSortSize?: boolean;
100
+ /**
101
+ * Enable column to use as a column for recalculation width
102
+ * @default false (By default used first column with maximum width)
103
+ */
104
+ sortSizeRecalculation?: boolean;
105
+ };
106
+ /** @deprecated */
107
+ export interface IDataTableBodyProps extends DataTableBodyProps, UnknownProperties {
108
+ }
109
+ export type DataTableBodyProps = BoxProps & {
110
+ /** Rows table */
111
+ rows?: DataTableRow[];
112
+ /** When enabled, only visually acessable rows are rendered.
113
+ * `tollerance` property controls how many rows outside of viewport are render.
114
+ * `rowHeight` fixes the rows height if it has known. If not provided, first row node height is measured.
115
+ * @default { tollerance: 2 }
116
+ */
117
+ virtualScroll?: boolean | {
118
+ tollerance?: number;
119
+ rowHeight?: number;
120
+ };
121
+ /** Allows to redefine rows renderning for a very deep and even fragile customization like building custom virtual scrolling */
122
+ renderRows?: (props: {
123
+ rows: DataTableRow[];
124
+ columns: Column[];
125
+ renderRow: (row: DataTableRow, details: {
126
+ dataIndex: number;
127
+ }) => React.ReactNode;
128
+ }) => React.ReactNode;
129
+ /**
130
+ * Called every time user scrolls area
131
+ */
132
+ onScroll?: (event: React.SyntheticEvent<HTMLElement>) => void;
133
+ /** Disabled scroll */
134
+ disabledScroll?: boolean;
135
+ /** Disables column width change animation **/
136
+ animationsDisabled?: boolean;
137
+ /** Ref for table body container */
138
+ scrollContainerRef?: React.Ref<HTMLDivElement>;
139
+ };
140
+ /** @deprecated */
141
+ export interface IDataTableRowProps extends DataTableRowProps, UnknownProperties {
142
+ }
143
+ export type DataTableRowProps = BoxProps & {
144
+ /** Theme for row */
145
+ theme?: DataTableTheme;
146
+ /** Sets row state to active*/
147
+ active?: boolean;
148
+ };
149
+ /** @deprecated */
150
+ export interface IDataTableCellProps extends DataTableCellProps, UnknownProperties {
151
+ }
152
+ export type DataTableCellProps<Name extends string = string> = FlexProps & {
153
+ /** Unique name for column or columns separated by / */
154
+ name: Name;
155
+ /** Theme for cell */
156
+ theme?: DataTableTheme;
157
+ };
158
+ type DataTableCtx = {
159
+ getHeadProps: PropGetterFn;
160
+ getBodyProps: PropGetterFn;
161
+ };
162
+ type IntergalacticDataTableComponent<PropsExtending extends {} = {}> = (<Data extends DataTableData[], Tag extends Intergalactic.Tag = 'div'>(props: Intergalactic.InternalTypings.ComponentProps<Tag, 'div', DataTableProps<Data> & PropsExtending, DataTableCtx, never>) => Intergalactic.InternalTypings.ComponentRenderingResults) & Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', DataTableProps>;
163
+ type IntergalacticDataTableRowComponent<PropsExtending extends {} = {}> = (<Data extends DataTableData[], Tag extends Intergalactic.Tag = 'div'>(props: Intergalactic.InternalTypings.PropsRenderingResultComponentProps<Tag, DataTableRowProps & {
164
+ /**
165
+ * That property is ONLY used for the component strict typings. In the component runtime `data` prop set on `<DataTable>...</DataTable> is used.
166
+ */
167
+ data?: Data;
168
+ } & PropsExtending, DataTableCtx & {
169
+ data: Data;
170
+ }, [
171
+ row: Data[0],
172
+ index: number
173
+ ]>) => Intergalactic.InternalTypings.ComponentRenderingResults) & Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', DataTableRowProps>;
174
+ type IntergalacticDataTableCellComponent<PropsExtending extends {} = {}> = (<Data extends DataTableData[] = [], Name extends string = string, Tag extends Intergalactic.Tag = 'div'>(props: Intergalactic.InternalTypings.PropsRenderingResultComponentProps<Tag, DataTableCellProps<Name> & {
175
+ /**
176
+ * That property is ONLY used for the componenct strict typings. In the component runtime `data` prop set on `<DataTable>...</DataTable> is used.
177
+ */
178
+ data?: Data;
179
+ } & PropsExtending, DataTableCtx & {
180
+ data: Data;
181
+ }, [
182
+ row: Data[0],
183
+ index: number
184
+ ]>) => Intergalactic.InternalTypings.ComponentRenderingResults) & Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', DataTableCellProps>;
185
+ declare const DefinitionTable: (<Data extends DataTableData[], Tag extends Intergalactic.InternalTypings.ComponentTag = "div">(props: Intergalactic.InternalTypings.ComponentProps<Tag, "div", DataTableProps<Data> & {}, DataTableCtx, never>) => Intergalactic.InternalTypings.ComponentRenderingResults) & Intergalactic.InternalTypings.ComponentAdditive<"div", "div", DataTableProps<UnknownProperties[]>, {}, {}> & {
186
+ Head: Intergalactic.Component<'div', DataTableHeadProps>;
187
+ Body: Intergalactic.Component<'div', DataTableBodyProps>;
188
+ Column: Intergalactic.Component<'div', DataTableColumnProps>;
189
+ Row: IntergalacticDataTableRowComponent;
190
+ Cell: IntergalacticDataTableCellComponent;
191
+ };
192
+ export { ROW_GROUP };
193
+ export default DefinitionTable;
194
+ export declare const wrapDataTable: <PropsExtending extends {}>(wrapper: (props: Intergalactic.InternalTypings.EfficientOmit<Intergalactic.InternalTypings.ComponentPropsNesting<IntergalacticDataTableComponent<{}>>, "tag" | "ref"> & {
195
+ ref: React.Ref<any>;
196
+ tag: Intergalactic.InternalTypings.ComponentTag;
197
+ } & PropsExtending) => React.ReactNode) => IntergalacticDataTableComponent<PropsExtending>;
198
+ export declare const wrapDataTableRow: <PropsExtending extends {}>(wrapper: (props: Intergalactic.InternalTypings.EfficientOmit<Intergalactic.InternalTypings.ComponentPropsNesting<IntergalacticDataTableRowComponent<{}>>, "tag" | "ref"> & {
199
+ ref: React.Ref<any>;
200
+ tag: Intergalactic.InternalTypings.ComponentTag;
201
+ } & PropsExtending) => React.ReactNode) => IntergalacticDataTableRowComponent<PropsExtending>;
202
+ export declare const wrapDataTableCell: <PropsExtending extends {}>(wrapper: (props: Intergalactic.InternalTypings.EfficientOmit<Intergalactic.InternalTypings.ComponentPropsNesting<IntergalacticDataTableCellComponent<{}>>, "tag" | "ref"> & {
203
+ ref: React.Ref<any>;
204
+ tag: Intergalactic.InternalTypings.ComponentTag;
205
+ } & PropsExtending) => React.ReactNode) => IntergalacticDataTableCellComponent<PropsExtending>;
@@ -0,0 +1,45 @@
1
+ import React from 'react';
2
+ import { Component } from '@semcore/core';
3
+ import { Column } from './types';
4
+ export declare const SORT_ICON_WIDTH = 20;
5
+ type AsProps = {
6
+ $onSortClick: (name: string, event: React.MouseEvent | React.KeyboardEvent) => void;
7
+ $scrollRef: (instance: unknown) => void;
8
+ use: 'primary' | 'secondary';
9
+ columnsChildren: Column[];
10
+ onResize: ResizeObserverCallback;
11
+ sticky: boolean;
12
+ ['data-ui-name']: string;
13
+ uid?: string;
14
+ withScrollBar?: boolean;
15
+ animationsDisabled?: boolean;
16
+ getI18nText?: (str: string) => string;
17
+ };
18
+ declare class Head extends Component<AsProps> {
19
+ columns: Column[];
20
+ static displayName: string;
21
+ headCellMap: Map<number, HTMLElement | null>;
22
+ lockedCell: [HTMLElement | null, boolean];
23
+ sortWrapperRefs: Map<Node, boolean>;
24
+ defaultWidths: Map<HTMLElement, {
25
+ minWidth: number;
26
+ maxWidth: number | null;
27
+ computedWidth: number;
28
+ useForRecalculation: boolean;
29
+ }>;
30
+ sortableColumnDescribeId(): string;
31
+ handleKeyDown: (e: React.KeyboardEvent) => void;
32
+ onFocusCell: (e: React.FocusEvent<HTMLElement, HTMLElement>) => void;
33
+ bindHandlerSortClick: (name: string) => (event: React.MouseEvent) => void;
34
+ bindHandlerKeyDown: (name: string) => (event: React.KeyboardEvent) => void;
35
+ makeSortRefHandler: (active: boolean) => (ref: HTMLElement | null) => void;
36
+ makeColumnRefHandler: (column: Column, index: number) => (ref: HTMLElement | null) => void;
37
+ componentDidUpdate(): void;
38
+ changeMaxNodeWidth: (diff: number, exceptNode: HTMLElement) => void;
39
+ backToColumnDefaults: (node: HTMLElement) => void;
40
+ calculateActiveColumnMinWidth: (node: HTMLElement) => void;
41
+ renderColumns(columns: Column[], width: number): React.ReactNode[];
42
+ renderColumn(column: Column, width: number): React.ReactNode;
43
+ render(): React.ReactNode;
44
+ }
45
+ export default Head;
@@ -1,10 +1,2 @@
1
- import type { Intergalactic } from '@semcore/core';
2
- import type React from 'react';
3
- import type { CellRenderProps } from './components/Body/Body.types';
4
- import { MergedRowsCell, MergedColumnsCell } from './components/Body/MergedCells';
5
- import { DataTable, ACCORDION, ROW_GROUP } from './components/DataTable/DataTable';
6
- import type { DataTableSort, DataTableType, DataTableData, DataTableProps, DataTableChangeSort, ColumnGroupConfig, ColumnItemConfig } from './components/DataTable/DataTable.types';
7
- import { SelectableRows } from './store/SelectableRows';
8
- declare const wrapDataTable: <PropsExtending extends {}>(wrapper: (props: Intergalactic.InternalTypings.UntypeRefAndTag<Intergalactic.InternalTypings.ComponentPropsNesting<DataTableType>> & PropsExtending) => React.ReactNode) => DataTableType;
9
- export { MergedRowsCell, MergedColumnsCell, DataTable, ACCORDION, ROW_GROUP, wrapDataTable, SelectableRows, };
10
- export type { DataTableSort, DataTableData, DataTableProps, DataTableChangeSort, ColumnGroupConfig, ColumnItemConfig, CellRenderProps, };
1
+ export { default } from './DataTable';
2
+ export * from './DataTable';
@@ -1,114 +1,44 @@
1
1
  export declare const localizedMessages: {
2
2
  de: {
3
3
  sortableColumn: string;
4
- "DataTable.Cell.AccordionToggle.expand:aria-label": string;
5
- "DataTable.Cell.AccordionToggle.collapse:aria-label": string;
6
- "DataTable.Header.selectAllCheckbox:aria-label": string;
7
- "DataTable.allItemsSelected:aria-live": string;
8
- "DataTable.allItemsDeselected:aria-live": string;
9
4
  };
10
5
  en: {
11
6
  sortableColumn: string;
12
- "DataTable.Cell.AccordionToggle.expand:aria-label": string;
13
- "DataTable.Cell.AccordionToggle.collapse:aria-label": string;
14
- "DataTable.Header.selectAllCheckbox:aria-label": string;
15
- "DataTable.allItemsSelected:aria-live": string;
16
- "DataTable.allItemsDeselected:aria-live": string;
17
7
  };
18
8
  es: {
19
9
  sortableColumn: string;
20
- "DataTable.Cell.AccordionToggle.expand:aria-label": string;
21
- "DataTable.Cell.AccordionToggle.collapse:aria-label": string;
22
- "DataTable.Header.selectAllCheckbox:aria-label": string;
23
- "DataTable.allItemsSelected:aria-live": string;
24
- "DataTable.allItemsDeselected:aria-live": string;
25
10
  };
26
11
  fr: {
27
12
  sortableColumn: string;
28
- "DataTable.Cell.AccordionToggle.expand:aria-label": string;
29
- "DataTable.Cell.AccordionToggle.collapse:aria-label": string;
30
- "DataTable.Header.selectAllCheckbox:aria-label": string;
31
- "DataTable.allItemsSelected:aria-live": string;
32
- "DataTable.allItemsDeselected:aria-live": string;
33
13
  };
34
14
  it: {
35
15
  sortableColumn: string;
36
- "DataTable.Cell.AccordionToggle.expand:aria-label": string;
37
- "DataTable.Cell.AccordionToggle.collapse:aria-label": string;
38
- "DataTable.Header.selectAllCheckbox:aria-label": string;
39
- "DataTable.allItemsSelected:aria-live": string;
40
- "DataTable.allItemsDeselected:aria-live": string;
41
16
  };
42
17
  ja: {
43
18
  sortableColumn: string;
44
- "DataTable.Cell.AccordionToggle.expand:aria-label": string;
45
- "DataTable.Cell.AccordionToggle.collapse:aria-label": string;
46
- "DataTable.Header.selectAllCheckbox:aria-label": string;
47
- "DataTable.allItemsSelected:aria-live": string;
48
- "DataTable.allItemsDeselected:aria-live": string;
49
19
  };
50
20
  ko: {
51
21
  sortableColumn: string;
52
- "DataTable.Cell.AccordionToggle.expand:aria-label": string;
53
- "DataTable.Cell.AccordionToggle.collapse:aria-label": string;
54
- "DataTable.Header.selectAllCheckbox:aria-label": string;
55
- "DataTable.allItemsSelected:aria-live": string;
56
- "DataTable.allItemsDeselected:aria-live": string;
57
22
  };
58
23
  nl: {
59
24
  sortableColumn: string;
60
- "DataTable.Cell.AccordionToggle.expand:aria-label": string;
61
- "DataTable.Cell.AccordionToggle.collapse:aria-label": string;
62
- "DataTable.Header.selectAllCheckbox:aria-label": string;
63
- "DataTable.allItemsSelected:aria-live": string;
64
- "DataTable.allItemsDeselected:aria-live": string;
65
25
  };
66
26
  pt: {
67
27
  sortableColumn: string;
68
- "DataTable.Cell.AccordionToggle.expand:aria-label": string;
69
- "DataTable.Cell.AccordionToggle.collapse:aria-label": string;
70
- "DataTable.Header.selectAllCheckbox:aria-label": string;
71
- "DataTable.allItemsSelected:aria-live": string;
72
- "DataTable.allItemsDeselected:aria-live": string;
73
28
  };
74
29
  tr: {
75
30
  sortableColumn: string;
76
- "DataTable.Cell.AccordionToggle.expand:aria-label": string;
77
- "DataTable.Cell.AccordionToggle.collapse:aria-label": string;
78
- "DataTable.Header.selectAllCheckbox:aria-label": string;
79
- "DataTable.allItemsSelected:aria-live": string;
80
- "DataTable.allItemsDeselected:aria-live": string;
81
31
  };
82
32
  vi: {
83
33
  sortableColumn: string;
84
- "DataTable.Cell.AccordionToggle.expand:aria-label": string;
85
- "DataTable.Cell.AccordionToggle.collapse:aria-label": string;
86
- "DataTable.Header.selectAllCheckbox:aria-label": string;
87
- "DataTable.allItemsSelected:aria-live": string;
88
- "DataTable.allItemsDeselected:aria-live": string;
89
34
  };
90
35
  zh: {
91
36
  sortableColumn: string;
92
- "DataTable.Cell.AccordionToggle.expand:aria-label": string;
93
- "DataTable.Cell.AccordionToggle.collapse:aria-label": string;
94
- "DataTable.Header.selectAllCheckbox:aria-label": string;
95
- "DataTable.allItemsSelected:aria-live": string;
96
- "DataTable.allItemsDeselected:aria-live": string;
97
37
  };
98
38
  pl: {
99
39
  sortableColumn: string;
100
- "DataTable.Cell.AccordionToggle.expand:aria-label": string;
101
- "DataTable.Cell.AccordionToggle.collapse:aria-label": string;
102
- "DataTable.Header.selectAllCheckbox:aria-label": string;
103
- "DataTable.allItemsSelected:aria-live": string;
104
- "DataTable.allItemsDeselected:aria-live": string;
105
40
  };
106
41
  sv: {
107
42
  sortableColumn: string;
108
- "DataTable.Cell.AccordionToggle.expand:aria-label": string;
109
- "DataTable.Cell.AccordionToggle.collapse:aria-label": string;
110
- "DataTable.Header.selectAllCheckbox:aria-label": string;
111
- "DataTable.allItemsSelected:aria-live": string;
112
- "DataTable.allItemsDeselected:aria-live": string;
113
43
  };
114
44
  };
@@ -0,0 +1,73 @@
1
+ import React from 'react';
2
+ import { ROW_GROUP } from './DataTable';
3
+ import { Property } from 'csstype';
4
+ import { FlexProps } from '@semcore/flex-box';
5
+ export type PseudoChildPropsGetter = (props: {
6
+ [propName: string]: unknown;
7
+ }, rowData: {
8
+ [columnName: string]: unknown;
9
+ }, index: number) => {
10
+ [propName: string]: unknown;
11
+ };
12
+ export type PropsLayer = {
13
+ childrenPropsGetter?: PseudoChildPropsGetter;
14
+ [propName: string]: unknown;
15
+ };
16
+ export type SortDirection = 'asc' | 'desc';
17
+ export type Column<Props extends {
18
+ [propName: string]: unknown;
19
+ } = {
20
+ [propName: string]: unknown;
21
+ }> = {
22
+ name: string;
23
+ active: boolean;
24
+ width: number;
25
+ fixed?: 'left' | 'right';
26
+ resizable?: boolean;
27
+ sortable?: boolean | SortDirection;
28
+ sortDirection: SortDirection;
29
+ varWidth: string;
30
+ setVar: boolean;
31
+ data?: unknown;
32
+ vBorders?: boolean;
33
+ borderLeft?: boolean;
34
+ borderRight?: boolean;
35
+ props: {
36
+ name: string;
37
+ ref: React.RefObject<HTMLElement>;
38
+ } & FlexProps & Partial<{
39
+ flex: Property.Flex;
40
+ onClick: (event: React.MouseEvent) => void;
41
+ onKeyDown: (event: React.KeyboardEvent) => void;
42
+ forwardRef: React.Ref<HTMLElement>;
43
+ style: React.CSSProperties;
44
+ fixed: 'left' | 'right';
45
+ resizable: boolean;
46
+ sortable: boolean | SortDirection;
47
+ sortDirection: SortDirection;
48
+ vBorders: boolean;
49
+ borderLeft: Property.BorderLeft;
50
+ borderRight: Property.BorderLeft;
51
+ changeSortSize?: boolean;
52
+ sortSizeRecalculation?: boolean;
53
+ }> & Props;
54
+ columns: Column[];
55
+ parentColumns: Column[];
56
+ };
57
+ export type Cell = Pick<Column, 'name' | 'fixed' | 'data'> & {
58
+ cssVar: string | string[];
59
+ cellPropsLayers: PropsLayer[];
60
+ };
61
+ export type RowData<Data extends {
62
+ [columnName: string]: unknown;
63
+ } = {
64
+ [columnName: string]: unknown;
65
+ }> = Data & Partial<{
66
+ name: string;
67
+ [ROW_GROUP]: RowData[];
68
+ }>;
69
+ export type NestedCells = (Cell | NestedCells)[] & {
70
+ flatRowData?: RowData;
71
+ };
72
+ export type RowIndex = number;
73
+ export type ColIndex = number;
@@ -0,0 +1,4 @@
1
+ import type { Column } from './types';
2
+ export declare const getScrollOffsetValue: (columns: Column[]) => [leftOffset: number, rightOffset: number];
3
+ export declare const flattenColumns: (columns: Column[]) => Column[];
4
+ export declare const getFixedStyle: (cell: Pick<Column, 'name' | 'fixed'>, columns: Column[]) => [side: "left" | "right", style: string | number] | [side: undefined, style: undefined];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/data-table",
3
3
  "description": "Semrush DataTable Component",
4
- "version": "4.51.0-prerelease.0",
4
+ "version": "4.51.0-prerelease.4",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",
@@ -14,10 +14,10 @@
14
14
  "types": "./lib/types/index.d.ts"
15
15
  },
16
16
  "dependencies": {
17
- "@semcore/flex-box": "5.42.0-prerelease.0",
18
- "@semcore/icon": "4.63.0-prerelease.0",
19
- "@semcore/scroll-area": "5.46.0-prerelease.0",
20
- "@semcore/utils": "4.49.0-prerelease.0"
17
+ "@semcore/flex-box": "5.42.0-prerelease.4",
18
+ "@semcore/icon": "4.63.0-prerelease.4",
19
+ "@semcore/scroll-area": "5.46.0-prerelease.4",
20
+ "@semcore/utils": "4.49.0-prerelease.4"
21
21
  },
22
22
  "devDependencies": {
23
23
  "@types/react": "18.0.21",
@@ -37,7 +37,7 @@
37
37
  "csstype": "3.0.8"
38
38
  },
39
39
  "peerDependencies": {
40
- "@semcore/core": "^2.40.0-prerelease.0",
40
+ "@semcore/core": "^2.40.0-prerelease.4",
41
41
  "react": "16.8 - 18",
42
42
  "react-dom": "16.8 - 18"
43
43
  },