material-react-table 3.0.1 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -14,7 +14,7 @@ const MRT_Localization_SV = {
14
14
  collapseAll: 'Stäng alla',
15
15
  columnActions: 'Kolumnåtgärd',
16
16
  copiedToClipboard: 'Kopierade till urklipp',
17
- dropToGroupBy: 'Släpp för att grupp efter {column}',
17
+ dropToGroupBy: 'Släpp för att gruppera efter {column}',
18
18
  edit: 'Redigera',
19
19
  expand: 'Expandera',
20
20
  expandAll: 'Expandera alla',
@@ -38,7 +38,7 @@ const MRT_Localization_SV = {
38
38
  filterLessThan: 'Mindre än',
39
39
  filterLessThanOrEqualTo: 'Mindre än eller lika med',
40
40
  filterMode: 'Filterläge: {filterType}',
41
- filterNotEmpty: 'Inte Tom',
41
+ filterNotEmpty: 'Inte tom',
42
42
  filterNotEquals: 'Inte lika med',
43
43
  filterStartsWith: 'Börjar med',
44
44
  filterWeakEquals: 'Lika med',
@@ -52,8 +52,8 @@ const MRT_Localization_SV = {
52
52
  groupedBy: 'Gruppera efter ',
53
53
  hideAll: 'Göm alla',
54
54
  hideColumn: 'Göm {column} kolumn',
55
- max: 'Max',
56
- min: 'Minst',
55
+ max: 'Max.',
56
+ min: 'Min.',
57
57
  move: 'Flytta',
58
58
  noRecordsToDisplay: 'Inget att visa',
59
59
  noResultsFound: 'Inga resultat funna',
@@ -78,9 +78,9 @@ const MRT_Localization_SV = {
78
78
  showHideFilters: 'Visa/Göm filter',
79
79
  showHideSearch: 'Visa/Göm sök',
80
80
  sortByColumnAsc: 'Sortera efter {column} stigande',
81
- sortByColumnDesc: 'Sortera efter {column} nedåtgående',
81
+ sortByColumnDesc: 'Sortera efter {column} fallande',
82
82
  sortedByColumnAsc: 'Sorterat efter {column} stigande',
83
- sortedByColumnDesc: 'Sorterat efter {column} nedåtgående',
83
+ sortedByColumnDesc: 'Sorterat efter {column} fallande',
84
84
  thenBy: ', sedan av ',
85
85
  toggleDensity: 'Växla densitet',
86
86
  toggleFullScreen: 'Växla helskärm',
@@ -18,7 +18,7 @@ const MRT_Localization_SV = {
18
18
  collapseAll: 'Stäng alla',
19
19
  columnActions: 'Kolumnåtgärd',
20
20
  copiedToClipboard: 'Kopierade till urklipp',
21
- dropToGroupBy: 'Släpp för att grupp efter {column}',
21
+ dropToGroupBy: 'Släpp för att gruppera efter {column}',
22
22
  edit: 'Redigera',
23
23
  expand: 'Expandera',
24
24
  expandAll: 'Expandera alla',
@@ -42,7 +42,7 @@ const MRT_Localization_SV = {
42
42
  filterLessThan: 'Mindre än',
43
43
  filterLessThanOrEqualTo: 'Mindre än eller lika med',
44
44
  filterMode: 'Filterläge: {filterType}',
45
- filterNotEmpty: 'Inte Tom',
45
+ filterNotEmpty: 'Inte tom',
46
46
  filterNotEquals: 'Inte lika med',
47
47
  filterStartsWith: 'Börjar med',
48
48
  filterWeakEquals: 'Lika med',
@@ -56,8 +56,8 @@ const MRT_Localization_SV = {
56
56
  groupedBy: 'Gruppera efter ',
57
57
  hideAll: 'Göm alla',
58
58
  hideColumn: 'Göm {column} kolumn',
59
- max: 'Max',
60
- min: 'Minst',
59
+ max: 'Max.',
60
+ min: 'Min.',
61
61
  move: 'Flytta',
62
62
  noRecordsToDisplay: 'Inget att visa',
63
63
  noResultsFound: 'Inga resultat funna',
@@ -82,9 +82,9 @@ const MRT_Localization_SV = {
82
82
  showHideFilters: 'Visa/Göm filter',
83
83
  showHideSearch: 'Visa/Göm sök',
84
84
  sortByColumnAsc: 'Sortera efter {column} stigande',
85
- sortByColumnDesc: 'Sortera efter {column} nedåtgående',
85
+ sortByColumnDesc: 'Sortera efter {column} fallande',
86
86
  sortedByColumnAsc: 'Sorterat efter {column} stigande',
87
- sortedByColumnDesc: 'Sorterat efter {column} nedåtgående',
87
+ sortedByColumnDesc: 'Sorterat efter {column} fallande',
88
88
  thenBy: ', sedan av ',
89
89
  toggleDensity: 'Växla densitet',
90
90
  toggleFullScreen: 'Växla helskärm',
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "3.0.1",
2
+ "version": "3.0.2",
3
3
  "license": "MIT",
4
4
  "name": "material-react-table",
5
5
  "description": "A fully featured Material UI V6 implementation of TanStack React Table V8, written from the ground up in TypeScript.",
@@ -62,47 +62,47 @@
62
62
  "build-storybook": "storybook build"
63
63
  },
64
64
  "devDependencies": {
65
- "@emotion/react": "^11.13.3",
66
- "@emotion/styled": "^11.13.0",
67
- "@faker-js/faker": "^8.4.1",
68
- "@mui/icons-material": "^6.0.1",
69
- "@mui/material": "^6.0.1",
70
- "@mui/x-date-pickers": "^7.15.0",
65
+ "@emotion/react": "^11.13.5",
66
+ "@emotion/styled": "^11.13.5",
67
+ "@faker-js/faker": "^9.2.0",
68
+ "@mui/icons-material": "^6.1.9",
69
+ "@mui/material": "^6.1.9",
70
+ "@mui/x-date-pickers": "^7.23.0",
71
71
  "@rollup/plugin-typescript": "^11.1.6",
72
- "@size-limit/preset-small-lib": "^11.1.4",
73
- "@storybook/addon-a11y": "^8.2.9",
74
- "@storybook/addon-essentials": "^8.2.9",
75
- "@storybook/addon-links": "^8.2.9",
76
- "@storybook/addon-storysource": "^8.2.9",
77
- "@storybook/blocks": "^8.2.9",
78
- "@storybook/preview-api": "^8.2.9",
79
- "@storybook/react": "^8.2.9",
80
- "@storybook/react-vite": "^8.2.9",
81
- "@types/node": "^22.5.2",
82
- "@types/react": "^18.3.5",
83
- "@types/react-dom": "^18.3.0",
84
- "@typescript-eslint/eslint-plugin": "^8.4.0",
85
- "@typescript-eslint/parser": "^8.4.0",
86
- "@vitejs/plugin-react": "^4.3.1",
87
- "eslint": "^9.9.1",
72
+ "@size-limit/preset-small-lib": "^11.1.6",
73
+ "@storybook/addon-a11y": "^8.4.6",
74
+ "@storybook/addon-essentials": "^8.4.6",
75
+ "@storybook/addon-links": "^8.4.6",
76
+ "@storybook/addon-storysource": "^8.4.6",
77
+ "@storybook/blocks": "^8.4.6",
78
+ "@storybook/preview-api": "^8.4.6",
79
+ "@storybook/react": "^8.4.6",
80
+ "@storybook/react-vite": "^8.4.6",
81
+ "@types/node": "^22.10.1",
82
+ "@types/react": "^18.3.12",
83
+ "@types/react-dom": "^18.3.1",
84
+ "@typescript-eslint/eslint-plugin": "^8.16.0",
85
+ "@typescript-eslint/parser": "^8.16.0",
86
+ "@vitejs/plugin-react": "^4.3.4",
87
+ "eslint": "^9.16.0",
88
88
  "eslint-plugin-mui-path-imports": "^0.0.15",
89
- "eslint-plugin-perfectionist": "^3.3.0",
90
- "eslint-plugin-storybook": "^0.8.0",
89
+ "eslint-plugin-perfectionist": "^4.1.2",
90
+ "eslint-plugin-storybook": "^0.11.1",
91
91
  "prop-types": "^15.8.1",
92
92
  "react": "^18.3.1",
93
93
  "react-dom": "^18.3.1",
94
94
  "react-is": "^18.3.1",
95
95
  "rollup": "^2.79.1",
96
96
  "rollup-plugin-copy": "^3.5.0",
97
- "rollup-plugin-delete": "^2.0.0",
97
+ "rollup-plugin-delete": "^2.1.0",
98
98
  "rollup-plugin-dts": "^6.1.1",
99
99
  "rollup-plugin-peer-deps-external": "^2.2.4",
100
- "size-limit": "^11.1.4",
101
- "storybook": "^8.2.9",
100
+ "size-limit": "^11.1.6",
101
+ "storybook": "^8.4.6",
102
102
  "storybook-dark-mode": "^4.0.2",
103
- "tslib": "^2.7.0",
104
- "typescript": "^5.5.4",
105
- "vite": "^5.4.2"
103
+ "tslib": "^2.8.1",
104
+ "typescript": "^5.7.2",
105
+ "vite": "^6.0.1"
106
106
  },
107
107
  "peerDependencies": {
108
108
  "@emotion/react": ">=11.13",
@@ -116,7 +116,7 @@
116
116
  "dependencies": {
117
117
  "@tanstack/match-sorter-utils": "8.19.4",
118
118
  "@tanstack/react-table": "8.20.5",
119
- "@tanstack/react-virtual": "3.10.6",
120
- "highlight-words": "1.2.2"
119
+ "@tanstack/react-virtual": "3.10.9",
120
+ "highlight-words": "2.0.0"
121
121
  }
122
122
  }
@@ -233,13 +233,13 @@ export const MRT_TableBodyCell = <TData extends MRT_RowData>({
233
233
  };
234
234
 
235
235
  const handleKeyDown = (event: React.KeyboardEvent<HTMLTableCellElement>) => {
236
+ tableCellProps?.onKeyDown?.(event);
236
237
  cellKeyboardShortcuts({
237
238
  cell,
238
239
  cellValue: cell.getValue<string>(),
239
240
  event,
240
241
  table,
241
242
  });
242
- tableCellProps?.onKeyDown?.(event);
243
243
  };
244
244
 
245
245
  return (
@@ -49,12 +49,12 @@ export const MRT_TableFooterCell = <TData extends MRT_RowData>({
49
49
  };
50
50
 
51
51
  const handleKeyDown = (event: React.KeyboardEvent<HTMLTableCellElement>) => {
52
+ tableCellProps?.onKeyDown?.(event);
52
53
  cellKeyboardShortcuts({
53
54
  event,
54
55
  cellValue: footer.column.columnDef.footer,
55
56
  table,
56
57
  });
57
- tableCellProps?.onKeyDown?.(event);
58
58
  };
59
59
 
60
60
  return (
@@ -150,14 +150,13 @@ export const MRT_TableHeadCell = <TData extends MRT_RowData>({
150
150
  };
151
151
 
152
152
  const handleKeyDown = (event: React.KeyboardEvent<HTMLTableCellElement>) => {
153
+ tableCellProps?.onKeyDown?.(event);
153
154
  cellKeyboardShortcuts({
154
155
  event,
155
156
  cellValue: header.column.columnDef.header,
156
157
  table,
157
158
  header,
158
159
  });
159
-
160
- tableCellProps?.onKeyDown?.(event);
161
160
  };
162
161
 
163
162
  const HeaderElement =
@@ -155,7 +155,7 @@ export const MRT_EditCellTextField = <TData extends MRT_RowData>({
155
155
  ...textFieldProps.SelectProps,
156
156
  }}
157
157
  inputProps={{
158
- autoComplete: 'new-password', //disable autocomplete and autofill
158
+ autoComplete: 'off',
159
159
  ...textFieldProps.inputProps,
160
160
  }}
161
161
  onBlur={handleBlur}
@@ -185,7 +185,7 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
185
185
  textFieldProps?.onChange?.(event);
186
186
  };
187
187
 
188
- const handleAutocompleteChange = (newValue: DropdownOption) => {
188
+ const handleAutocompleteChange = (newValue: DropdownOption | null) => {
189
189
  setAutocompleteValue(newValue);
190
190
  handleChange(getValueAndLabel(newValue).value);
191
191
  };
@@ -316,7 +316,7 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
316
316
  ) : null,
317
317
  inputProps: {
318
318
  'aria-label': filterPlaceholder,
319
- autoComplete: 'new-password', // disable autocomplete and autofill
319
+ autoComplete: 'off',
320
320
  disabled: !!filterChipLabel,
321
321
  sx: {
322
322
  textOverflow: 'ellipsis',
@@ -422,7 +422,8 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
422
422
  getOptionLabel={(option: DropdownOption) =>
423
423
  getValueAndLabel(option).label
424
424
  }
425
- onChange={(_e, newValue: DropdownOption) =>
425
+ // @ts-ignore
426
+ onChange={(_e, newValue: DropdownOption | null) =>
426
427
  handleAutocompleteChange(newValue)
427
428
  }
428
429
  options={
@@ -458,11 +459,11 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
458
459
  multiple: isMultiSelectFilter,
459
460
  renderValue: isMultiSelectFilter
460
461
  ? (selected: any) =>
461
- !selected?.length ? (
462
+ !Array.isArray(selected) || selected.length === 0 ? (
462
463
  <Box sx={{ opacity: 0.5 }}>{filterPlaceholder}</Box>
463
464
  ) : (
464
465
  <Box sx={{ display: 'flex', flexWrap: 'wrap', gap: '2px' }}>
465
- {(selected as string[])?.map((value) => {
466
+ {selected.map((value: string) => {
466
467
  const selectedValue = dropdownOptions?.find(
467
468
  (option) => getValueAndLabel(option).value === value,
468
469
  );
@@ -480,7 +481,13 @@ export const MRT_FilterTextField = <TData extends MRT_RowData>({
480
481
  }}
481
482
  onChange={handleTextFieldChange}
482
483
  onClick={(e: MouseEvent<HTMLInputElement>) => e.stopPropagation()}
483
- value={filterValue ?? ''}
484
+ value={
485
+ isMultiSelectFilter
486
+ ? Array.isArray(filterValue)
487
+ ? filterValue
488
+ : []
489
+ : ''
490
+ }
484
491
  >
485
492
  {(isSelectFilter || isMultiSelectFilter) && [
486
493
  <MenuItem disabled divider hidden key="p" value="">
@@ -94,7 +94,7 @@ export const MRT_GlobalFilterTextField = <TData extends MRT_RowData>({
94
94
  >
95
95
  <TextField
96
96
  inputProps={{
97
- autoComplete: 'new-password', // disable autocomplete and autofill
97
+ autoComplete: 'off',
98
98
  ...textFieldProps.inputProps,
99
99
  }}
100
100
  onChange={handleChange}
@@ -45,6 +45,7 @@ export const MRT_RowActionMenu = <TData extends MRT_RowData>({
45
45
  const editItem = parseFromValuesOrFunc(enableEditing, row) &&
46
46
  ['modal', 'row'].includes(editDisplayMode!) && (
47
47
  <MRT_ActionMenuItem
48
+ key={'edit'}
48
49
  icon={<EditIcon />}
49
50
  label={localization.edit}
50
51
  onClick={handleEdit}
package/src/locales/sv.ts CHANGED
@@ -16,7 +16,7 @@ export const MRT_Localization_SV: MRT_Localization = {
16
16
  collapseAll: 'Stäng alla',
17
17
  columnActions: 'Kolumnåtgärd',
18
18
  copiedToClipboard: 'Kopierade till urklipp',
19
- dropToGroupBy: 'Släpp för att grupp efter {column}',
19
+ dropToGroupBy: 'Släpp för att gruppera efter {column}',
20
20
  edit: 'Redigera',
21
21
  expand: 'Expandera',
22
22
  expandAll: 'Expandera alla',
@@ -40,7 +40,7 @@ export const MRT_Localization_SV: MRT_Localization = {
40
40
  filterLessThan: 'Mindre än',
41
41
  filterLessThanOrEqualTo: 'Mindre än eller lika med',
42
42
  filterMode: 'Filterläge: {filterType}',
43
- filterNotEmpty: 'Inte Tom',
43
+ filterNotEmpty: 'Inte tom',
44
44
  filterNotEquals: 'Inte lika med',
45
45
  filterStartsWith: 'Börjar med',
46
46
  filterWeakEquals: 'Lika med',
@@ -54,8 +54,8 @@ export const MRT_Localization_SV: MRT_Localization = {
54
54
  groupedBy: 'Gruppera efter ',
55
55
  hideAll: 'Göm alla',
56
56
  hideColumn: 'Göm {column} kolumn',
57
- max: 'Max',
58
- min: 'Minst',
57
+ max: 'Max.',
58
+ min: 'Min.',
59
59
  move: 'Flytta',
60
60
  noRecordsToDisplay: 'Inget att visa',
61
61
  noResultsFound: 'Inga resultat funna',
@@ -81,9 +81,9 @@ export const MRT_Localization_SV: MRT_Localization = {
81
81
  showHideFilters: 'Visa/Göm filter',
82
82
  showHideSearch: 'Visa/Göm sök',
83
83
  sortByColumnAsc: 'Sortera efter {column} stigande',
84
- sortByColumnDesc: 'Sortera efter {column} nedåtgående',
84
+ sortByColumnDesc: 'Sortera efter {column} fallande',
85
85
  sortedByColumnAsc: 'Sorterat efter {column} stigande',
86
- sortedByColumnDesc: 'Sorterat efter {column} nedåtgående',
86
+ sortedByColumnDesc: 'Sorterat efter {column} fallande',
87
87
  thenBy: ', sedan av ',
88
88
  toggleDensity: 'Växla densitet',
89
89
  toggleFullScreen: 'Växla helskärm',
package/src/types.ts CHANGED
@@ -1196,7 +1196,7 @@ export interface MRT_TableOptions<TData extends MRT_RowData>
1196
1196
  row: MRT_Row<TData>;
1197
1197
  table: MRT_TableInstance<TData>;
1198
1198
  values: Record<LiteralUnion<string & DeepKeys<TData>>, any>;
1199
- }) => void;
1199
+ }) => Promise<void> | void;
1200
1200
  onDensityChange?: OnChangeFn<MRT_DensityState>;
1201
1201
  onDraggingColumnChange?: OnChangeFn<MRT_Column<TData> | null>;
1202
1202
  onDraggingRowChange?: OnChangeFn<MRT_Row<TData> | null>;
@@ -81,6 +81,7 @@ export const cellKeyboardShortcuts = <TData extends MRT_RowData = MRT_RowData>({
81
81
  table: MRT_TableInstance<TData>;
82
82
  }) => {
83
83
  if (!table.options.enableKeyboardShortcuts) return;
84
+ if (event.isPropagationStopped()) return;
84
85
  const currentCell = event.currentTarget;
85
86
 
86
87
  if (cellValue && isWinCtrlMacMeta(event) && event.key === 'c') {
@@ -6,7 +6,7 @@ export const parseFromValuesOrFunc = <T, U>(
6
6
  ): T | undefined => (fn instanceof Function ? fn(arg) : fn);
7
7
 
8
8
  export const getValueAndLabel = (
9
- option?: DropdownOption,
9
+ option?: DropdownOption | null,
10
10
  ): { label: string; value: string } => {
11
11
  let label: string = '';
12
12
  let value: string = '';