@semcore/data-table 4.43.0 → 4.44.0

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 (55) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/lib/cjs/Body.js +62 -12
  3. package/lib/cjs/Body.js.map +1 -1
  4. package/lib/cjs/DataTable.js +206 -45
  5. package/lib/cjs/DataTable.js.map +1 -1
  6. package/lib/cjs/Head.js +87 -16
  7. package/lib/cjs/Head.js.map +1 -1
  8. package/lib/cjs/style/data-table.shadow.css +14 -0
  9. package/lib/cjs/translations/__intergalactic-dynamic-locales.js +39 -0
  10. package/lib/cjs/translations/__intergalactic-dynamic-locales.js.map +1 -0
  11. package/lib/cjs/translations/de.json +3 -0
  12. package/lib/cjs/translations/en.json +3 -0
  13. package/lib/cjs/translations/es.json +3 -0
  14. package/lib/cjs/translations/fr.json +3 -0
  15. package/lib/cjs/translations/it.json +3 -0
  16. package/lib/cjs/translations/ja.json +3 -0
  17. package/lib/cjs/translations/ko.json +3 -0
  18. package/lib/cjs/translations/nl.json +3 -0
  19. package/lib/cjs/translations/pl.json +3 -0
  20. package/lib/cjs/translations/pt.json +3 -0
  21. package/lib/cjs/translations/sv.json +3 -0
  22. package/lib/cjs/translations/tr.json +3 -0
  23. package/lib/cjs/translations/vi.json +3 -0
  24. package/lib/cjs/translations/zh.json +3 -0
  25. package/lib/cjs/types.js.map +1 -1
  26. package/lib/es6/Body.js +62 -12
  27. package/lib/es6/Body.js.map +1 -1
  28. package/lib/es6/DataTable.js +207 -45
  29. package/lib/es6/DataTable.js.map +1 -1
  30. package/lib/es6/Head.js +87 -16
  31. package/lib/es6/Head.js.map +1 -1
  32. package/lib/es6/style/data-table.shadow.css +14 -0
  33. package/lib/es6/translations/__intergalactic-dynamic-locales.js +31 -0
  34. package/lib/es6/translations/__intergalactic-dynamic-locales.js.map +1 -0
  35. package/lib/es6/translations/de.json +3 -0
  36. package/lib/es6/translations/en.json +3 -0
  37. package/lib/es6/translations/es.json +3 -0
  38. package/lib/es6/translations/fr.json +3 -0
  39. package/lib/es6/translations/it.json +3 -0
  40. package/lib/es6/translations/ja.json +3 -0
  41. package/lib/es6/translations/ko.json +3 -0
  42. package/lib/es6/translations/nl.json +3 -0
  43. package/lib/es6/translations/pl.json +3 -0
  44. package/lib/es6/translations/pt.json +3 -0
  45. package/lib/es6/translations/sv.json +3 -0
  46. package/lib/es6/translations/tr.json +3 -0
  47. package/lib/es6/translations/vi.json +3 -0
  48. package/lib/es6/translations/zh.json +3 -0
  49. package/lib/es6/types.js.map +1 -1
  50. package/lib/types/Body.d.ts +4 -1
  51. package/lib/types/DataTable.d.ts +15 -58
  52. package/lib/types/Head.d.ts +8 -2
  53. package/lib/types/translations/__intergalactic-dynamic-locales.d.ts +44 -0
  54. package/lib/types/types.d.ts +2 -0
  55. package/package.json +5 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"__intergalactic-dynamic-locales.js","names":["de","en","es","fr","it","ja","ko","nl","pt","tr","vi","zh","pl","sv","localizedMessages"],"sources":["../../../src/translations/__intergalactic-dynamic-locales.ts"],"sourcesContent":["import de from './de.json';\nimport en from './en.json';\nimport es from './es.json';\nimport fr from './fr.json';\nimport it from './it.json';\nimport ja from './ja.json';\nimport ko from './ko.json';\nimport nl from './nl.json';\nimport pt from './pt.json';\nimport tr from './tr.json';\nimport vi from './vi.json';\nimport zh from './zh.json';\nimport pl from './pl.json';\nimport sv from './sv.json';\n\nexport const localizedMessages = {\n de,\n en,\n es,\n fr,\n it,\n ja,\n ko,\n nl,\n pt,\n tr,\n vi,\n zh,\n pl,\n sv,\n};\n"],"mappings":"AAAA,OAAOA,EAAE,MAAM,WAAW;AAC1B,OAAOC,EAAE,MAAM,WAAW;AAC1B,OAAOC,EAAE,MAAM,WAAW;AAC1B,OAAOC,EAAE,MAAM,WAAW;AAC1B,OAAOC,EAAE,MAAM,WAAW;AAC1B,OAAOC,EAAE,MAAM,WAAW;AAC1B,OAAOC,EAAE,MAAM,WAAW;AAC1B,OAAOC,EAAE,MAAM,WAAW;AAC1B,OAAOC,EAAE,MAAM,WAAW;AAC1B,OAAOC,EAAE,MAAM,WAAW;AAC1B,OAAOC,EAAE,MAAM,WAAW;AAC1B,OAAOC,EAAE,MAAM,WAAW;AAC1B,OAAOC,EAAE,MAAM,WAAW;AAC1B,OAAOC,EAAE,MAAM,WAAW;AAE1B,OAAO,IAAMC,iBAAiB,GAAG;EAC/Bd,EAAE,EAAFA,EAAE;EACFC,EAAE,EAAFA,EAAE;EACFC,EAAE,EAAFA,EAAE;EACFC,EAAE,EAAFA,EAAE;EACFC,EAAE,EAAFA,EAAE;EACFC,EAAE,EAAFA,EAAE;EACFC,EAAE,EAAFA,EAAE;EACFC,EAAE,EAAFA,EAAE;EACFC,EAAE,EAAFA,EAAE;EACFC,EAAE,EAAFA,EAAE;EACFC,EAAE,EAAFA,EAAE;EACFC,EAAE,EAAFA,EAAE;EACFC,EAAE,EAAFA,EAAE;EACFC,EAAE,EAAFA;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ {
2
+ "sortableColumn": "Sortierbar"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "sortableColumn": "Sortable"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "sortableColumn": "Ordenable"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "sortableColumn": "Triable"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "sortableColumn": "Ordinabile"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "sortableColumn": "分類可能"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "sortableColumn": "정렬 가능"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "sortableColumn": "Sorteerbaar"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "sortableColumn": "Umożliwia sortowanie"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "sortableColumn": "Classificável"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "sortableColumn": "Sorterbar"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "sortableColumn": "Sıralanabilir"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "sortableColumn": "Có thể sắp xếp"
3
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "sortableColumn": "可排序"
3
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":["ROW_GROUP"],"sources":["../../src/types.ts"],"sourcesContent":["import React from 'react';\nimport { ROW_GROUP } from './DataTable';\nimport { Property } from 'csstype';\nimport { FlexProps } from '@semcore/flex-box';\n\nexport type PseudoChildPropsGetter = (\n props: { [propName: string]: unknown },\n rowData: { [columnName: string]: unknown },\n index: number,\n) => { [propName: string]: unknown };\nexport type PropsLayer = {\n childrenPropsGetter?: PseudoChildPropsGetter;\n [propName: string]: unknown;\n};\n\nexport type SortDirection = 'asc' | 'desc';\nexport type Column<\n Props extends { [propName: string]: unknown } = { [propName: string]: unknown },\n> = {\n name: string;\n active: boolean;\n width: number;\n fixed?: 'left' | 'right';\n resizable?: boolean;\n sortable?: boolean | SortDirection;\n sortDirection: SortDirection;\n varWidth: string;\n setVar: boolean;\n data?: unknown;\n vBorders?: boolean;\n borderLeft?: boolean;\n borderRight?: boolean;\n props: {\n name: string;\n ref: React.RefObject<HTMLElement>;\n } & FlexProps &\n Partial<{\n flex: Property.Flex;\n onClick: (event: React.MouseEvent) => void;\n onKeyDown: (event: React.KeyboardEvent) => void;\n forwardRef: React.Ref<HTMLElement>;\n style: React.CSSProperties;\n fixed: 'left' | 'right';\n resizable: boolean;\n sortable: boolean | SortDirection;\n sortDirection: SortDirection;\n vBorders: boolean;\n borderLeft: Property.BorderLeft;\n borderRight: Property.BorderLeft;\n changeSortSize?: boolean;\n sortSizeRecalculation?: boolean;\n }> &\n Props;\n columns: Column[];\n parentColumns: Column[];\n};\nexport type Cell = Pick<Column, 'name' | 'fixed' | 'data'> & {\n cssVar: string | string[];\n cellPropsLayers: PropsLayer[];\n};\nexport type RowData<\n Data extends { [columnName: string]: unknown } = { [columnName: string]: unknown },\n> = Data &\n Partial<{\n name: string;\n [ROW_GROUP]: RowData[];\n }>;\nexport type NestedCells = (Cell | NestedCells)[] & { flatRowData?: RowData };\n"],"mappings":"AACA,SAASA,SAAS,QAAQ,aAAa"}
1
+ {"version":3,"file":"types.js","names":["ROW_GROUP"],"sources":["../../src/types.ts"],"sourcesContent":["import React from 'react';\nimport { ROW_GROUP } from './DataTable';\nimport { Property } from 'csstype';\nimport { FlexProps } from '@semcore/flex-box';\n\nexport type PseudoChildPropsGetter = (\n props: { [propName: string]: unknown },\n rowData: { [columnName: string]: unknown },\n index: number,\n) => { [propName: string]: unknown };\nexport type PropsLayer = {\n childrenPropsGetter?: PseudoChildPropsGetter;\n [propName: string]: unknown;\n};\n\nexport type SortDirection = 'asc' | 'desc';\nexport type Column<\n Props extends { [propName: string]: unknown } = { [propName: string]: unknown },\n> = {\n name: string;\n active: boolean;\n width: number;\n fixed?: 'left' | 'right';\n resizable?: boolean;\n sortable?: boolean | SortDirection;\n sortDirection: SortDirection;\n varWidth: string;\n setVar: boolean;\n data?: unknown;\n vBorders?: boolean;\n borderLeft?: boolean;\n borderRight?: boolean;\n props: {\n name: string;\n ref: React.RefObject<HTMLElement>;\n } & FlexProps &\n Partial<{\n flex: Property.Flex;\n onClick: (event: React.MouseEvent) => void;\n onKeyDown: (event: React.KeyboardEvent) => void;\n forwardRef: React.Ref<HTMLElement>;\n style: React.CSSProperties;\n fixed: 'left' | 'right';\n resizable: boolean;\n sortable: boolean | SortDirection;\n sortDirection: SortDirection;\n vBorders: boolean;\n borderLeft: Property.BorderLeft;\n borderRight: Property.BorderLeft;\n changeSortSize?: boolean;\n sortSizeRecalculation?: boolean;\n }> &\n Props;\n columns: Column[];\n parentColumns: Column[];\n};\nexport type Cell = Pick<Column, 'name' | 'fixed' | 'data'> & {\n cssVar: string | string[];\n cellPropsLayers: PropsLayer[];\n};\nexport type RowData<\n Data extends { [columnName: string]: unknown } = { [columnName: string]: unknown },\n> = Data &\n Partial<{\n name: string;\n [ROW_GROUP]: RowData[];\n }>;\nexport type NestedCells = (Cell | NestedCells)[] & { flatRowData?: RowData };\n\nexport type RowIndex = number;\nexport type ColIndex = number;\n"],"mappings":"AACA,SAASA,SAAS,QAAQ,aAAa"}
@@ -33,12 +33,15 @@ type State = {
33
33
  scrollAreaHeight: undefined | number;
34
34
  scrollOffset: number;
35
35
  };
36
- declare class Body extends Component<AsProps, State> {
36
+ declare class Body extends Component<AsProps, {}, State> {
37
37
  state: State;
38
38
  scrollContainerRef: React.RefObject<HTMLDivElement>;
39
39
  firstRowRef: React.RefObject<HTMLDivElement>;
40
40
  firstRowResizeObserver: ResizeObserver | null;
41
+ lockedCell: [HTMLElement | null, boolean];
41
42
  getRowHeight: () => number | undefined;
43
+ handleKeyDown: (e: React.KeyboardEvent) => void;
44
+ onFocusCell: (e: React.FocusEvent<HTMLElement, HTMLElement>) => void;
42
45
  renderCells(cells: NestedCells, rowData: RowData, dataIndex: number): React.ReactNode[];
43
46
  renderRow(cells: NestedCells, { dataIndex, topOffset, nested, }: {
44
47
  dataIndex: number;
@@ -7,10 +7,7 @@ declare const ROW_GROUP: unique symbol;
7
7
  export type DataTableData = {
8
8
  [key: string]: unknown;
9
9
  };
10
- export type DataTableSort<Columns extends string | number | symbol = string> = [
11
- sortBy: Columns,
12
- sortDirection: 'desc' | 'asc'
13
- ];
10
+ export type DataTableSort<Column = string> = [sortBy: Column, sortDirection: 'desc' | 'asc'];
14
11
  export type DataTableTheme = 'muted' | 'info' | 'success' | 'warning' | 'danger';
15
12
  export type DataTableUse = 'primary' | 'secondary';
16
13
  export type DataTableRow = DataTableCell[];
@@ -21,10 +18,19 @@ export type DataTableCell = {
21
18
  data: React.ReactNode;
22
19
  [key: string]: unknown;
23
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
+ }>;
24
30
  /** @deprecated */
25
31
  export interface IDataTableProps<DataTableData extends {
26
32
  [key: string]: any;
27
- }[] = UnknownProperties[]> extends DataTableProps<DataTableData> {
33
+ }[] = UnknownProperties[]> extends Omit<DataTableProps<DataTableData>, keyof DataTableAriaProps> {
28
34
  }
29
35
  export type DataTableProps<DataTableData extends {
30
36
  [key: string]: any;
@@ -45,7 +51,9 @@ export type DataTableProps<DataTableData extends {
45
51
  uniqueKey?: keyof DataTableData[0];
46
52
  /** Make cells compact by changing left and right paddings to smaller ones*/
47
53
  compact?: boolean;
48
- };
54
+ /** Count of total rows if table using virtual scroll. Needs for accessibility */
55
+ totalRows?: number;
56
+ } & DataTableAriaProps;
49
57
  /** @deprecated */
50
58
  export interface IDataTableHeadProps extends DataTableHeadProps, UnknownProperties {
51
59
  }
@@ -174,58 +182,7 @@ type IntergalacticDataTableCellComponent<PropsExtending extends {} = {}> = (<Dat
174
182
  row: Data[0],
175
183
  index: number
176
184
  ]>) => Intergalactic.InternalTypings.ComponentRenderingResults) & Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', DataTableCellProps>;
177
- declare const DefinitionTable: (<Data extends DataTableData[], Tag extends Intergalactic.InternalTypings.ComponentTag = "div">(props: Intergalactic.InternalTypings.ComponentProps<Tag, "div", import("@semcore/core").StyledProps & {
178
- display?: Property.Display | undefined;
179
- inline?: boolean | undefined;
180
- boxSizing?: boolean | "border-box" | undefined;
181
- flex?: Property.Flex<string> | undefined;
182
- m?: string | number | undefined;
183
- mt?: string | number | undefined;
184
- mr?: string | number | undefined;
185
- mb?: string | number | undefined;
186
- ml?: string | number | undefined;
187
- mx?: string | number | undefined;
188
- my?: string | number | undefined;
189
- p?: string | number | undefined;
190
- pt?: string | number | undefined;
191
- pr?: string | number | undefined;
192
- pb?: string | number | undefined;
193
- pl?: string | number | undefined;
194
- px?: string | number | undefined;
195
- py?: string | number | undefined;
196
- w?: string | number | undefined;
197
- wMin?: string | number | undefined;
198
- wMax?: string | number | undefined;
199
- h?: string | number | undefined;
200
- hMin?: string | number | undefined;
201
- hMax?: string | number | undefined;
202
- scaleIndent?: number | undefined;
203
- css?: React.CSSProperties | undefined;
204
- position?: Property.Position | undefined;
205
- top?: string | number | undefined;
206
- left?: string | number | undefined;
207
- bottom?: string | number | undefined;
208
- right?: string | number | undefined;
209
- zIndex?: number | undefined;
210
- children?: React.ReactNode;
211
- } & {
212
- /** Table theme according to visual hierarchy on the page
213
- * @default primary
214
- * */
215
- use?: DataTableUse | undefined;
216
- /** Data for table */
217
- data?: Data | undefined;
218
- /** Active sort object */
219
- sort?: DataTableSort<keyof Data[0]> | undefined;
220
- /** Handler call when request will change sort */
221
- onSortChange?: ((sort: DataTableSort<keyof Data[0]>, e?: React.SyntheticEvent) => void) | undefined;
222
- /** Field name in one data entity that is unique accross all dataset
223
- * @default id
224
- */
225
- uniqueKey?: keyof Data[0] | undefined;
226
- /** Make cells compact by changing left and right paddings to smaller ones*/
227
- compact?: boolean | undefined;
228
- }, DataTableCtx, never>) => Intergalactic.InternalTypings.ComponentRenderingResults) & Intergalactic.InternalTypings.ComponentAdditive<"div", "div", DataTableProps<UnknownProperties[]>, {}, {}> & {
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[]>, {}, {}> & {
229
186
  Head: Intergalactic.Component<'div', DataTableHeadProps>;
230
187
  Body: Intergalactic.Component<'div', DataTableBodyProps>;
231
188
  Column: Intergalactic.Component<'div', DataTableColumnProps>;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { Component } from '@semcore/core';
3
- import type { Column } from './types';
3
+ import { Column } from './types';
4
4
  export declare const SORT_ICON_WIDTH = 20;
5
5
  type AsProps = {
6
6
  $onSortClick: (name: string, event: React.MouseEvent | React.KeyboardEvent) => void;
@@ -13,10 +13,13 @@ type AsProps = {
13
13
  uid?: string;
14
14
  withScrollBar?: boolean;
15
15
  animationsDisabled?: boolean;
16
+ getI18nText?: (str: string) => string;
16
17
  };
17
18
  declare class Head extends Component<AsProps> {
18
19
  columns: Column[];
19
20
  static displayName: string;
21
+ headCellMap: Map<number, HTMLElement | null>;
22
+ lockedCell: [HTMLElement | null, boolean];
20
23
  sortWrapperRefs: Map<Node, boolean>;
21
24
  defaultWidths: Map<HTMLElement, {
22
25
  minWidth: number;
@@ -24,10 +27,13 @@ declare class Head extends Component<AsProps> {
24
27
  computedWidth: number;
25
28
  useForRecalculation: boolean;
26
29
  }>;
30
+ sortableColumnDescribeId(): string;
31
+ handleKeyDown: (e: React.KeyboardEvent) => void;
32
+ onFocusCell: (e: React.FocusEvent<HTMLElement, HTMLElement>) => void;
27
33
  bindHandlerSortClick: (name: string) => (event: React.MouseEvent) => void;
28
34
  bindHandlerKeyDown: (name: string) => (event: React.KeyboardEvent) => void;
29
35
  makeSortRefHandler: (active: boolean) => (ref: HTMLElement | null) => void;
30
- makeColumnRefHandler: (column: Column) => (ref: HTMLElement | null) => void;
36
+ makeColumnRefHandler: (column: Column, index: number) => (ref: HTMLElement | null) => void;
31
37
  componentDidUpdate(): void;
32
38
  changeMaxNodeWidth: (diff: number, exceptNode: HTMLElement) => void;
33
39
  backToColumnDefaults: (node: HTMLElement) => void;
@@ -0,0 +1,44 @@
1
+ export declare const localizedMessages: {
2
+ de: {
3
+ sortableColumn: string;
4
+ };
5
+ en: {
6
+ sortableColumn: string;
7
+ };
8
+ es: {
9
+ sortableColumn: string;
10
+ };
11
+ fr: {
12
+ sortableColumn: string;
13
+ };
14
+ it: {
15
+ sortableColumn: string;
16
+ };
17
+ ja: {
18
+ sortableColumn: string;
19
+ };
20
+ ko: {
21
+ sortableColumn: string;
22
+ };
23
+ nl: {
24
+ sortableColumn: string;
25
+ };
26
+ pt: {
27
+ sortableColumn: string;
28
+ };
29
+ tr: {
30
+ sortableColumn: string;
31
+ };
32
+ vi: {
33
+ sortableColumn: string;
34
+ };
35
+ zh: {
36
+ sortableColumn: string;
37
+ };
38
+ pl: {
39
+ sortableColumn: string;
40
+ };
41
+ sv: {
42
+ sortableColumn: string;
43
+ };
44
+ };
@@ -69,3 +69,5 @@ export type RowData<Data extends {
69
69
  export type NestedCells = (Cell | NestedCells)[] & {
70
70
  flatRowData?: RowData;
71
71
  };
72
+ export type RowIndex = number;
73
+ export type ColIndex = number;
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.43.0",
4
+ "version": "4.44.0",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",
@@ -9,10 +9,10 @@
9
9
  "author": "UI-kit team <ui-kit-team@semrush.com>",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@semcore/flex-box": "5.32.0",
13
- "@semcore/icon": "4.44.1",
14
- "@semcore/scroll-area": "5.36.0",
15
- "@semcore/utils": "4.35.0"
12
+ "@semcore/flex-box": "5.33.0",
13
+ "@semcore/icon": "4.45.0",
14
+ "@semcore/scroll-area": "5.37.0",
15
+ "@semcore/utils": "4.36.0"
16
16
  },
17
17
  "devDependencies": {
18
18
  "@types/react": "18.0.21",