material-react-table 1.2.9 → 1.3.0-beta.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 (43) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/MaterialReactTable.d.ts +7 -3
  3. package/dist/cjs/_locales/it.d.ts +2 -0
  4. package/dist/cjs/column.utils.d.ts +29 -17
  5. package/dist/cjs/index.js +359 -422
  6. package/dist/cjs/index.js.map +1 -1
  7. package/dist/cjs/table/MRT_TableRoot.d.ts +1 -1
  8. package/dist/esm/MaterialReactTable.d.ts +7 -3
  9. package/dist/esm/_locales/it.d.ts +2 -0
  10. package/dist/esm/column.utils.d.ts +29 -17
  11. package/dist/esm/material-react-table.esm.js +17 -4
  12. package/dist/esm/material-react-table.esm.js.map +1 -1
  13. package/dist/esm/table/MRT_TableRoot.d.ts +1 -1
  14. package/dist/index.d.ts +19 -4
  15. package/locales/cs.js +0 -2
  16. package/locales/cs.js.map +1 -1
  17. package/locales/de.js +0 -2
  18. package/locales/de.js.map +1 -1
  19. package/locales/en.js +0 -2
  20. package/locales/en.js.map +1 -1
  21. package/locales/es.js +0 -2
  22. package/locales/es.js.map +1 -1
  23. package/locales/it.d.ts +2 -0
  24. package/locales/it.esm.d.ts +2 -0
  25. package/locales/it.esm.js +92 -0
  26. package/locales/it.esm.js.map +1 -0
  27. package/locales/it.js +94 -0
  28. package/locales/it.js.map +1 -0
  29. package/locales/ja.js +0 -2
  30. package/locales/ja.js.map +1 -1
  31. package/locales/pl.js +0 -2
  32. package/locales/pl.js.map +1 -1
  33. package/locales/pt-BR.js +0 -2
  34. package/locales/pt-BR.js.map +1 -1
  35. package/locales/ru.js +0 -2
  36. package/locales/ru.js.map +1 -1
  37. package/package.json +16 -15
  38. package/src/MaterialReactTable.tsx +11 -1
  39. package/src/_locales/it.ts +92 -0
  40. package/src/body/MRT_TableBodyCell.tsx +2 -1
  41. package/src/column.utils.ts +30 -1
  42. package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +1 -1
  43. package/src/table/MRT_TableRoot.tsx +2 -1
@@ -0,0 +1,92 @@
1
+ import { MRT_Localization } from '../MaterialReactTable';
2
+
3
+ export const MRT_Localization_IT: MRT_Localization = {
4
+ actions: 'Azioni',
5
+ and: 'e',
6
+ cancel: 'Cancella',
7
+ changeFilterMode: 'Cambia modalità filtro',
8
+ changeSearchMode: 'Cambia modalita ricerca',
9
+ clearFilter: 'Cancella filtro',
10
+ clearSearch: 'Cancella ricerca',
11
+ clearSort: 'Cancella ordinamento',
12
+ clickToCopy: 'Click per copiare',
13
+ columnActions: 'Azioni colonna',
14
+ copiedToClipboard: 'Copia negli appunti',
15
+ dropToGroupBy: 'Crea gruppo da {column}',
16
+ edit: 'Modifica',
17
+ expand: 'Espandi',
18
+ expandAll: 'Esapndi tutto',
19
+ filterArrIncludes: 'Includi',
20
+ filterArrIncludesAll: 'Includi tutto',
21
+ filterArrIncludesSome: 'Inclusioni',
22
+ filterBetween: 'Tra',
23
+ filterBetweenInclusive: 'Tra inclusioni',
24
+ filterByColumn: 'Filtra da {column}',
25
+ filterContains: 'Contiene',
26
+ filterEmpty: 'Vuoto',
27
+ filterEndsWith: 'Finisce con',
28
+ filterEquals: 'Uguale',
29
+ filterEqualsString: 'Uguale',
30
+ filterFuzzy: 'Sfocato',
31
+ filterGreaterThan: 'Maggiore di',
32
+ filterGreaterThanOrEqualTo: 'Magiorre o uguale a',
33
+ filterInNumberRange: 'Tra',
34
+ filterIncludesString: 'Contiene',
35
+ filterIncludesStringSensitive: 'Contiene',
36
+ filterLessThan: 'Minore di',
37
+ filterLessThanOrEqualTo: 'Minore o uguale a',
38
+ filterMode: 'Modalità filtro: {filterType}',
39
+ filterNotEmpty: 'Non vuoto',
40
+ filterNotEquals: 'Non uguale',
41
+ filterStartsWith: 'Inizia con',
42
+ filterWeakEquals: 'Uguale',
43
+ filteringByColumn: 'Filtrando da {column} - {filterType} {filterValue}',
44
+ goToFirstPage: 'Vai alla prima pagina',
45
+ goToLastPage: 'Vai all\'ultima pagina',
46
+ goToNextPage: 'Vai alla pagina successiva',
47
+ goToPreviousPage: 'Vai alla pagina precedente',
48
+ grab: 'Prendi',
49
+ groupByColumn: 'Raggruppa da {column}',
50
+ groupedBy: 'Raggruppa da ',
51
+ hideAll: 'Nascondi tutto',
52
+ hideColumn: 'Nasconi la colonna {column}',
53
+ max: 'Massimo',
54
+ min: 'Minimo',
55
+ move: 'Sposta',
56
+ noRecordsToDisplay: 'Nessun record da mostrare',
57
+ noResultsFound: 'Nessun risultato trovato',
58
+ of: 'di',
59
+ or: 'o',
60
+ pinToLeft: 'Blocca a sinistra',
61
+ pinToRight: 'Blocca a destra',
62
+ resetColumnSize: 'Resetta dimensione colonna',
63
+ resetOrder: 'Resetta ordine',
64
+ rowActions: 'Azioni riga',
65
+ rowNumber: '#',
66
+ rowNumbers: 'Righe',
67
+ rowsPerPage: 'Righe per pagina',
68
+ save: 'Salva',
69
+ search: 'Cerca',
70
+ selectedCountOfRowCountRowsSelected:
71
+ '{selectedCount} di {rowCount} row(s) selezionate',
72
+ select: 'Seleziona',
73
+ showAll: 'Mostra tutto',
74
+ showAllColumns: 'Mostra tutte le colonne',
75
+ showHideColumns: 'Mostra/Nascondi colonne',
76
+ showHideFilters: 'Mostra/Nascondi filtri',
77
+ showHideSearch: 'Mostra/Nascondi ricerca',
78
+ sortByColumnAsc: 'Ordina da {column} crescente',
79
+ sortByColumnDesc: 'Ordina da {column} decrecente',
80
+ sortedByColumnAsc: 'Ordinato da {column} crescente',
81
+ sortedByColumnDesc: 'Ordinato da {column} decrescente',
82
+ thenBy: ', poi da',
83
+ toggleDensity: 'Cambia densità',
84
+ toggleFullScreen: 'Cambia schermo intero',
85
+ toggleSelectAll: 'Cambia selezione totale',
86
+ toggleSelectRow: 'Cambia selezione riga',
87
+ toggleVisibility: 'Cambia visibilità',
88
+ ungroupByColumn: 'Rimuovi gruppo {column}',
89
+ unpin: 'Sblocca',
90
+ unpinAll: 'Sblocca tutto',
91
+ unsorted: 'Non ordinato',
92
+ };
@@ -133,7 +133,8 @@ export const MRT_TableBodyCell: FC<Props> = ({
133
133
  editingMode !== 'modal' &&
134
134
  (editingMode === 'table' ||
135
135
  editingRow?.id === row.id ||
136
- editingCell?.id === cell.id);
136
+ editingCell?.id === cell.id) &&
137
+ !row.getIsGrouped();
137
138
 
138
139
  const handleDoubleClick = (event: MouseEvent<HTMLTableCellElement>) => {
139
140
  tableCellProps?.onDoubleClick?.(event);
@@ -1,4 +1,9 @@
1
- import type { ColumnOrderState, GroupingState } from '@tanstack/react-table';
1
+ import type {
2
+ ColumnOrderState,
3
+ GroupingState,
4
+ Row,
5
+ } from '@tanstack/react-table';
6
+ import { MRT_AggregationFns } from './aggregationFns';
2
7
  import { MRT_FilterFns } from './filterFns';
3
8
  import { MRT_SortingFns } from './sortingFns';
4
9
  import { alpha, lighten } from '@mui/material/styles';
@@ -38,12 +43,15 @@ export const getAllLeafColumnDefs = <TData extends Record<string, any> = {}>(
38
43
  };
39
44
 
40
45
  export const prepareColumns = <TData extends Record<string, any> = {}>({
46
+ aggregationFns,
41
47
  columnDefs,
42
48
  columnFilterFns,
43
49
  defaultDisplayColumn,
44
50
  filterFns,
45
51
  sortingFns,
46
52
  }: {
53
+ aggregationFns: typeof MRT_AggregationFns &
54
+ MaterialReactTableProps<TData>['aggregationFns'];
47
55
  columnDefs: MRT_ColumnDef<TData>[];
48
56
  columnFilterFns: { [key: string]: MRT_FilterOption };
49
57
  defaultDisplayColumn: Partial<MRT_ColumnDef<TData>>;
@@ -52,16 +60,21 @@ export const prepareColumns = <TData extends Record<string, any> = {}>({
52
60
  MaterialReactTableProps<TData>['sortingFns'];
53
61
  }): MRT_DefinedColumnDef<TData>[] =>
54
62
  columnDefs.map((columnDef) => {
63
+ //assign columnId
55
64
  if (!columnDef.id) columnDef.id = getColumnId(columnDef);
56
65
  if (process.env.NODE_ENV !== 'production' && !columnDef.id) {
57
66
  console.error(
58
67
  'Column definitions must have a valid `accessorKey` or `id` property',
59
68
  );
60
69
  }
70
+
71
+ //assign columnDefType
61
72
  if (!columnDef.columnDefType) columnDef.columnDefType = 'data';
62
73
  if (columnDef.columns?.length) {
63
74
  columnDef.columnDefType = 'group';
75
+ //recursively prepare columns if this is a group column
64
76
  columnDef.columns = prepareColumns({
77
+ aggregationFns,
65
78
  columnDefs: columnDef.columns,
66
79
  columnFilterFns,
67
80
  defaultDisplayColumn,
@@ -69,12 +82,28 @@ export const prepareColumns = <TData extends Record<string, any> = {}>({
69
82
  sortingFns,
70
83
  });
71
84
  } else if (columnDef.columnDefType === 'data') {
85
+ //assign aggregationFns if multiple aggregationFns are provided
86
+ if (Array.isArray(columnDef.aggregationFn)) {
87
+ const aggFns = columnDef.aggregationFn as string[];
88
+ columnDef.aggregationFn = (
89
+ columnId: string,
90
+ leafRows: Row<TData>[],
91
+ childRows: Row<TData>[],
92
+ ) =>
93
+ aggFns.map((fn) =>
94
+ aggregationFns[fn]?.(columnId, leafRows, childRows),
95
+ );
96
+ }
97
+
98
+ //assign filterFns
72
99
  if (Object.keys(filterFns).includes(columnFilterFns[columnDef.id])) {
73
100
  columnDef.filterFn =
74
101
  filterFns[columnFilterFns[columnDef.id]] ?? filterFns.fuzzy;
75
102
  (columnDef as MRT_DefinedColumnDef)._filterFn =
76
103
  columnFilterFns[columnDef.id];
77
104
  }
105
+
106
+ //assign sortingFns
78
107
  if (Object.keys(sortingFns).includes(columnDef.sortingFn as string)) {
79
108
  // @ts-ignore
80
109
  columnDef.sortingFn = sortingFns[columnDef.sortingFn];
@@ -65,7 +65,7 @@ export const MRT_TableHeadCellColumnActionsButton: FC<Props> = ({
65
65
  {...iconButtonProps}
66
66
  sx={(theme) => ({
67
67
  height: '2rem',
68
- m: '-6px -3px',
68
+ m: '-8px -4px',
69
69
  opacity: 0.5,
70
70
  transform: 'scale(0.85)',
71
71
  transition: 'opacity 150ms',
@@ -209,6 +209,7 @@ export const MRT_TableRoot = <TData extends Record<string, any> = {}>(
209
209
  const columnDefs = useMemo(
210
210
  () =>
211
211
  prepareColumns({
212
+ aggregationFns: props.aggregationFns as any,
212
213
  columnDefs: [...displayColumns, ...props.columns],
213
214
  columnFilterFns: props.state?.columnFilterFns ?? columnFilterFns,
214
215
  defaultDisplayColumn: props.defaultDisplayColumn ?? {},
@@ -296,7 +297,7 @@ export const MRT_TableRoot = <TData extends Record<string, any> = {}>(
296
297
  tablePaperRef,
297
298
  topToolbarRef,
298
299
  },
299
- setColumnFilterFns: props.onFilterFnsChange ?? setColumnFilterFns,
300
+ setColumnFilterFns: props.onColumnFilterFnsChange ?? setColumnFilterFns,
300
301
  setDensity: props.onDensityChange ?? setDensity,
301
302
  setDraggingColumn: props.onDraggingColumnChange ?? setDraggingColumn,
302
303
  setDraggingRow: props.onDraggingRowChange ?? setDraggingRow,