material-react-table 1.0.0-beta.7 → 1.0.0-rc.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 (91) hide show
  1. package/README.md +21 -21
  2. package/dist/cjs/MaterialReactTable.d.ts +112 -7
  3. package/dist/cjs/_locales/en.d.ts +2 -0
  4. package/dist/cjs/_locales/pt-BR.d.ts +2 -0
  5. package/dist/cjs/column.utils.d.ts +6 -0
  6. package/dist/cjs/head/MRT_TableHeadCellSortLabel.d.ts +2 -0
  7. package/dist/cjs/index.d.ts +4 -3
  8. package/dist/cjs/index.js +226 -82
  9. package/dist/cjs/index.js.map +1 -1
  10. package/dist/cjs/inputs/MRT_FilterCheckbox.d.ts +8 -0
  11. package/dist/cjs/menus/MRT_FilterOptionMenu.d.ts +3 -3
  12. package/dist/cjs/table/MRT_TableRoot.d.ts +254 -2
  13. package/dist/cjs/toolbar/MRT_TablePagination.d.ts +3 -4
  14. package/dist/cjs/toolbar/MRT_ToolbarInternalButtons.d.ts +3 -4
  15. package/dist/cjs/toolbar/MRT_TopToolbar.d.ts +1 -0
  16. package/dist/esm/MaterialReactTable.d.ts +112 -7
  17. package/dist/esm/_locales/en.d.ts +2 -0
  18. package/dist/esm/_locales/pt-BR.d.ts +2 -0
  19. package/dist/esm/column.utils.d.ts +6 -0
  20. package/dist/esm/head/MRT_TableHeadCellSortLabel.d.ts +2 -0
  21. package/dist/esm/index.d.ts +4 -3
  22. package/dist/esm/inputs/MRT_FilterCheckbox.d.ts +8 -0
  23. package/dist/esm/material-react-table.esm.js +226 -84
  24. package/dist/esm/material-react-table.esm.js.map +1 -1
  25. package/dist/esm/menus/MRT_FilterOptionMenu.d.ts +3 -3
  26. package/dist/esm/table/MRT_TableRoot.d.ts +254 -2
  27. package/dist/esm/toolbar/MRT_TablePagination.d.ts +3 -4
  28. package/dist/esm/toolbar/MRT_ToolbarInternalButtons.d.ts +3 -4
  29. package/dist/esm/toolbar/MRT_TopToolbar.d.ts +1 -0
  30. package/dist/index.d.ts +61 -28
  31. package/locales/en.d.ts +2 -0
  32. package/locales/en.esm.d.ts +2 -0
  33. package/locales/en.esm.js +92 -0
  34. package/locales/en.esm.js.map +1 -0
  35. package/locales/en.js +96 -0
  36. package/locales/en.js.map +1 -0
  37. package/locales/pt-BR.d.ts +2 -0
  38. package/locales/pt-BR.esm.d.ts +2 -0
  39. package/locales/pt-BR.esm.js +92 -0
  40. package/locales/pt-BR.esm.js.map +1 -0
  41. package/locales/pt-BR.js +96 -0
  42. package/locales/pt-BR.js.map +1 -0
  43. package/package.json +13 -11
  44. package/src/MaterialReactTable.tsx +205 -67
  45. package/src/_locales/de.ts +1 -0
  46. package/src/{localization.ts → _locales/en.ts} +8 -84
  47. package/src/_locales/es.ts +1 -0
  48. package/src/_locales/fr.ts +1 -0
  49. package/src/_locales/hi.ts +1 -0
  50. package/src/_locales/id.ts +1 -0
  51. package/src/_locales/ja.ts +1 -0
  52. package/src/_locales/nl.ts +1 -0
  53. package/src/_locales/pt-BR.ts +92 -0
  54. package/src/_locales/pt.ts +1 -0
  55. package/src/_locales/ru.ts +1 -0
  56. package/src/_locales/uk.ts +1 -0
  57. package/src/_locales/vi.ts +1 -0
  58. package/src/_locales/zh.ts +1 -0
  59. package/src/body/MRT_EditRowModal.tsx +3 -2
  60. package/src/body/MRT_TableBodyCell.tsx +1 -1
  61. package/src/body/MRT_TableBodyRow.tsx +1 -1
  62. package/src/body/MRT_TableDetailPanel.tsx +1 -1
  63. package/src/buttons/MRT_ExpandAllButton.tsx +1 -1
  64. package/src/buttons/MRT_ExpandButton.tsx +1 -1
  65. package/src/buttons/MRT_GrabHandleButton.tsx +1 -1
  66. package/src/buttons/MRT_ToggleGlobalFilterButton.tsx +7 -2
  67. package/src/buttons/MRT_ToggleRowActionMenuButton.tsx +1 -1
  68. package/src/column.utils.ts +28 -3
  69. package/src/footer/MRT_TableFooter.tsx +1 -1
  70. package/src/head/MRT_TableHead.tsx +10 -2
  71. package/src/head/MRT_TableHeadCell.tsx +10 -2
  72. package/src/head/MRT_TableHeadCellColumnActionsButton.tsx +1 -1
  73. package/src/head/MRT_TableHeadCellFilterContainer.tsx +7 -3
  74. package/src/head/MRT_TableHeadCellGrabHandle.tsx +5 -1
  75. package/src/head/MRT_TableHeadCellResizeHandle.tsx +1 -1
  76. package/src/head/MRT_TableHeadCellSortLabel.tsx +11 -3
  77. package/src/index.tsx +6 -3
  78. package/src/inputs/MRT_FilterCheckbox.tsx +96 -0
  79. package/src/inputs/MRT_FilterTextField.tsx +19 -13
  80. package/src/inputs/MRT_GlobalFilterTextField.tsx +18 -5
  81. package/src/inputs/MRT_SelectCheckbox.tsx +16 -7
  82. package/src/menus/MRT_FilterOptionMenu.tsx +19 -2
  83. package/src/table/MRT_TablePaper.tsx +27 -21
  84. package/src/table/MRT_TableRoot.tsx +27 -8
  85. package/src/toolbar/MRT_BottomToolbar.tsx +4 -1
  86. package/src/toolbar/MRT_TablePagination.tsx +45 -8
  87. package/src/toolbar/MRT_ToolbarAlertBanner.tsx +2 -1
  88. package/src/toolbar/MRT_ToolbarInternalButtons.tsx +8 -4
  89. package/src/toolbar/MRT_TopToolbar.tsx +2 -1
  90. package/dist/cjs/localization.d.ts +0 -84
  91. package/dist/esm/localization.d.ts +0 -84
package/README.md CHANGED
@@ -48,11 +48,13 @@ See all [Props and Options](https://www.material-react-table.com/docs/api)
48
48
 
49
49
  View additional [storybook examples](https://www.material-react-table.dev/)
50
50
 
51
- ## Features (All Features work and are MVP, but are still being polished)
51
+ ## Features
52
52
 
53
53
  _All features can easily be enabled/disabled_
54
54
 
55
- - [x] < 37kb gzipped - [Bundlephobia](https://bundlephobia.com/package/material-react-table)
55
+ _**Fully Fleshed out [Docs](https://www.material-react-table.com/docs/guides#guides) are available for all features**_
56
+
57
+ - [x] < 38kb gzipped - [Bundlephobia](https://bundlephobia.com/package/material-react-table)
56
58
  - [x] Advanced TypeScript Generics Support (TypeScript Optional)
57
59
  - [x] Aggregation and Grouping (Sum, Average, Count, etc.)
58
60
  - [x] Click To Copy Cell Values
@@ -63,7 +65,7 @@ _All features can easily be enabled/disabled_
63
65
  - [x] Column Resizing
64
66
  - [x] Customize Icons
65
67
  - [x] Customize Styling of internal Mui Components
66
- - [x] Data Editing (3 different editing modes)
68
+ - [x] Data Editing (4 different editing modes)
67
69
  - [x] Density Toggle
68
70
  - [x] Detail Panels (Expansion)
69
71
  - [x] Filtering (supports client-side and server-side)
@@ -71,7 +73,7 @@ _All features can easily be enabled/disabled_
71
73
  - [x] Global Filtering (Search across all columns, rank by best match)
72
74
  - [x] Header Groups & Footers
73
75
  - [x] Localization (i18n) support
74
- - [x] Manage your own state
76
+ - [x] Manage your own state or let the table manage it internally for you
75
77
  - [x] Pagination (supports client-side and server-side)
76
78
  - [x] Row Actions (Your Custom Action Buttons)
77
79
  - [x] Row Numbers
@@ -112,33 +114,31 @@ npm install material-react-table
112
114
  import React, { useMemo, useRef, useState, useEffect } from 'react';
113
115
  import MaterialReactTable from 'material-react-table';
114
116
 
117
+ const data = [
118
+ {
119
+ name: 'John',
120
+ age: 30,
121
+ },
122
+ {
123
+ name: 'Sara',
124
+ age: 25,
125
+ },
126
+ ]
127
+
115
128
  export default function App() {
116
129
  const columns = useMemo(
117
130
  () => [
118
131
  {
119
132
  accessorKey: 'name', //simple recommended way to define a column
120
133
  header: 'Name',
121
- muiTableHeadCellProps: { sx: { color: 'green' } }, //custom props
134
+ muiTableHeadCellProps: { sx: { color: 'green' } }, //optional custom props
135
+ Cell: ({ cell}) => <span>{cell.getValue()}</span>, //optional custom cell render
122
136
  },
123
137
  {
124
138
  accessorFn: (row) => row.age, //alternate way
125
139
  id: 'age', //id required if you use accessorFn instead of accessorKey
126
140
  header: 'Age',
127
- Header: <i>Age</i>, //optional custom markup
128
- },
129
- ],
130
- [],
131
- );
132
-
133
- const data = useMemo(
134
- () => [
135
- {
136
- name: 'John',
137
- age: 30,
138
- },
139
- {
140
- name: 'Sara',
141
- age: 25,
141
+ Header: () => <i>Age</i>, //optional custom header render
142
142
  },
143
143
  ],
144
144
  [],
@@ -170,7 +170,7 @@ export default function App() {
170
170
  state={{ rowSelection }} //manage your own state, pass it back to the table (optional)
171
171
  tableInstanceRef={tableInstanceRef} //get a reference to the underlying table instance (optional)
172
172
  />
173
- );
173
+ );
174
174
  }
175
175
  ```
176
176
 
@@ -4,9 +4,97 @@ import type { Cell, Column, ColumnDef, DeepKeys, FilterFn, Header, HeaderGroup,
4
4
  import type { Options as VirtualizerOptions, VirtualItem } from 'react-virtual';
5
5
  import { MRT_Icons } from './icons';
6
6
  import { MRT_FilterFns } from './filterFns';
7
- import { MRT_Localization } from './localization';
8
7
  import { MRT_SortingFns } from './sortingFns';
9
8
  declare type LiteralUnion<T extends U, U = string> = T | (U & Record<never, never>);
9
+ export interface MRT_Localization {
10
+ actions: string;
11
+ and: string;
12
+ cancel: string;
13
+ changeFilterMode: string;
14
+ changeSearchMode: string;
15
+ clearFilter: string;
16
+ clearSearch: string;
17
+ clearSort: string;
18
+ clickToCopy: string;
19
+ columnActions: string;
20
+ copiedToClipboard: string;
21
+ dropToGroupBy: string;
22
+ edit: string;
23
+ expand: string;
24
+ expandAll: string;
25
+ filterArrIncludes: string;
26
+ filterArrIncludesAll: string;
27
+ filterArrIncludesSome: string;
28
+ filterBetween: string;
29
+ filterBetweenInclusive: string;
30
+ filterByColumn: string;
31
+ filterContains: string;
32
+ filterEmpty: string;
33
+ filterEndsWith: string;
34
+ filterEquals: string;
35
+ filterEqualsString: string;
36
+ filterFuzzy: string;
37
+ filterGreaterThan: string;
38
+ filterGreaterThanOrEqualTo: string;
39
+ filterInNumberRange: string;
40
+ filterIncludesString: string;
41
+ filterIncludesStringSensitive: string;
42
+ filterLessThan: string;
43
+ filterLessThanOrEqualTo: string;
44
+ filterMode: string;
45
+ filterNotEmpty: string;
46
+ filterNotEquals: string;
47
+ filterStartsWith: string;
48
+ filterWeakEquals: string;
49
+ filteringByColumn: string;
50
+ goToFirstPage: string;
51
+ goToLastPage: string;
52
+ goToNextPage: string;
53
+ goToPreviousPage: string;
54
+ grab: string;
55
+ groupByColumn: string;
56
+ groupedBy: string;
57
+ hideAll: string;
58
+ hideColumn: string;
59
+ max: string;
60
+ min: string;
61
+ move: string;
62
+ noRecordsToDisplay: string;
63
+ noResultsFound: string;
64
+ of: string;
65
+ or: string;
66
+ pinToLeft: string;
67
+ pinToRight: string;
68
+ resetColumnSize: string;
69
+ resetOrder: string;
70
+ rowActions: string;
71
+ rowNumber: string;
72
+ rowNumbers: string;
73
+ rowsPerPage: string;
74
+ save: string;
75
+ search: string;
76
+ select: string;
77
+ selectedCountOfRowCountRowsSelected: string;
78
+ showAll: string;
79
+ showAllColumns: string;
80
+ showHideColumns: string;
81
+ showHideFilters: string;
82
+ showHideSearch: string;
83
+ sortByColumnAsc: string;
84
+ sortByColumnDesc: string;
85
+ sortedByColumnAsc: string;
86
+ sortedByColumnDesc: string;
87
+ thenBy: string;
88
+ toggleDensity: string;
89
+ toggleFullScreen: string;
90
+ toggleSelectAll: string;
91
+ toggleSelectRow: string;
92
+ toggleVisibility: string;
93
+ ungroupByColumn: string;
94
+ unpin: string;
95
+ unpinAll: string;
96
+ unsorted: string;
97
+ }
10
98
  export interface MRT_RowModel<TData extends Record<string, any> = {}> {
11
99
  flatRows: MRT_Row<TData>[];
12
100
  rows: MRT_Row<TData>[];
@@ -104,9 +192,10 @@ export declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit
104
192
  row: MRT_Row<TData>;
105
193
  table: MRT_TableInstance<TData>;
106
194
  }) => ReactNode;
107
- Filter?: ({ column, header, table, }: {
195
+ Filter?: ({ column, header, rangeFilterIndex, table, }: {
108
196
  column: MRT_Column<TData>;
109
197
  header: MRT_Header<TData>;
198
+ rangeFilterIndex?: number;
110
199
  table: MRT_TableInstance<TData>;
111
200
  }) => ReactNode;
112
201
  Footer?: ReactNode | (({ column, footer, table, }: {
@@ -163,7 +252,7 @@ export declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit
163
252
  text: string;
164
253
  value: any;
165
254
  })[];
166
- filterVariant?: 'text' | 'select' | 'multi-select' | 'range';
255
+ filterVariant?: 'text' | 'select' | 'multi-select' | 'range' | 'checkbox';
167
256
  /**
168
257
  * footer must be a string. If you want custom JSX to render the footer, you can also specify a `Footer` option. (Capital F)
169
258
  */
@@ -194,9 +283,11 @@ export declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit
194
283
  row: MRT_Row<TData>;
195
284
  table: MRT_TableInstance<TData>;
196
285
  }) => TextFieldProps);
197
- muiTableBodyCellProps?: TableCellProps | (({ cell, table, }: {
198
- table: MRT_TableInstance<TData>;
286
+ muiTableBodyCellProps?: TableCellProps | (({ cell, column, row, table, }: {
199
287
  cell: MRT_Cell<TData>;
288
+ column: MRT_Column<TData>;
289
+ row: MRT_Row<TData>;
290
+ table: MRT_TableInstance<TData>;
200
291
  }) => TableCellProps);
201
292
  muiTableFooterCellProps?: TableCellProps | (({ table, column, }: {
202
293
  table: MRT_TableInstance<TData>;
@@ -210,6 +301,10 @@ export declare type MRT_ColumnDef<TData extends Record<string, any> = {}> = Omit
210
301
  table: MRT_TableInstance<TData>;
211
302
  column: MRT_Column<TData>;
212
303
  }) => IconButtonProps);
304
+ muiTableHeadCellFilterCheckboxProps?: CheckboxProps | (({ column, table, }: {
305
+ column: MRT_Column<TData>;
306
+ table: MRT_TableInstance<TData>;
307
+ }) => CheckboxProps);
213
308
  muiTableHeadCellFilterTextFieldProps?: TextFieldProps | (({ table, column, rangeFilterIndex, }: {
214
309
  table: MRT_TableInstance<TData>;
215
310
  column: MRT_Column<TData>;
@@ -406,6 +501,10 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
406
501
  table: MRT_TableInstance<TData>;
407
502
  column: MRT_Column<TData>;
408
503
  }) => IconButtonProps);
504
+ muiTableHeadCellFilterCheckboxProps?: CheckboxProps | (({ column, table, }: {
505
+ column: MRT_Column<TData>;
506
+ table: MRT_TableInstance<TData>;
507
+ }) => CheckboxProps);
409
508
  muiTableHeadCellFilterTextFieldProps?: TextFieldProps | (({ table, column, rangeFilterIndex, }: {
410
509
  table: MRT_TableInstance<TData>;
411
510
  column: MRT_Column<TData>;
@@ -467,6 +566,9 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
467
566
  positionPagination?: 'bottom' | 'top' | 'both';
468
567
  positionToolbarAlertBanner?: 'bottom' | 'top' | 'none';
469
568
  positionToolbarDropZone?: 'bottom' | 'top' | 'none' | 'both';
569
+ renderBottomToolbar?: ReactNode | (({ table }: {
570
+ table: MRT_TableInstance<TData>;
571
+ }) => ReactNode);
470
572
  renderBottomToolbarCustomActions?: ({ table, }: {
471
573
  table: MRT_TableInstance<TData>;
472
574
  }) => ReactNode;
@@ -503,6 +605,9 @@ export declare type MaterialReactTableProps<TData extends Record<string, any> =
503
605
  renderToolbarInternalActions?: ({ table, }: {
504
606
  table: MRT_TableInstance<TData>;
505
607
  }) => ReactNode;
608
+ renderTopToolbar?: ReactNode | (({ table }: {
609
+ table: MRT_TableInstance<TData>;
610
+ }) => ReactNode);
506
611
  renderTopToolbarCustomActions?: ({ table, }: {
507
612
  table: MRT_TableInstance<TData>;
508
613
  }) => ReactNode;
@@ -523,5 +628,5 @@ export declare type Virtualizer = {
523
628
  scrollToIndex: (index: number, options?: any | undefined) => void;
524
629
  measure: () => void;
525
630
  };
526
- declare const _default: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, defaultDisplayColumn, editingMode, enableBottomToolbar, enableColumnActions, enableColumnFilters, enableColumnOrdering, enableColumnResizing, enableDensityToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableGlobalFilterRankedResults, enableGrouping, enableHiding, enableMultiRowSelection, enableMultiSort, enablePagination, enablePinning, enableRowSelection, enableSelectAll, enableSorting, enableStickyHeader, enableTableFooter, enableTableHead, enableToolbarInternalActions, enableTopToolbar, filterFns, icons, localization, positionActionsColumn, positionExpandColumn, positionGlobalFilter, positionPagination, positionToolbarAlertBanner, positionToolbarDropZone, rowNumberMode, selectAllMode, sortingFns, ...rest }: MaterialReactTableProps<TData>) => JSX.Element;
527
- export default _default;
631
+ declare const MaterialReactTable: <TData extends Record<string, any> = {}>({ aggregationFns, autoResetExpanded, columnResizeMode, defaultColumn, defaultDisplayColumn, editingMode, enableBottomToolbar, enableColumnActions, enableColumnFilters, enableColumnOrdering, enableColumnResizing, enableDensityToggle, enableExpandAll, enableFilters, enableFullScreenToggle, enableGlobalFilter, enableGlobalFilterRankedResults, enableGrouping, enableHiding, enableMultiRowSelection, enableMultiSort, enablePagination, enablePinning, enableRowSelection, enableSelectAll, enableSorting, enableStickyHeader, enableTableFooter, enableTableHead, enableToolbarInternalActions, enableTopToolbar, filterFns, icons, localization, positionActionsColumn, positionExpandColumn, positionGlobalFilter, positionPagination, positionToolbarAlertBanner, positionToolbarDropZone, rowNumberMode, selectAllMode, sortingFns, ...rest }: MaterialReactTableProps<TData>) => JSX.Element;
632
+ export default MaterialReactTable;
@@ -0,0 +1,2 @@
1
+ import { MRT_Localization } from '../MaterialReactTable';
2
+ export declare const MRT_Localization_EN: MRT_Localization;
@@ -0,0 +1,2 @@
1
+ import { MRT_Localization } from '../MaterialReactTable';
2
+ export declare const MRT_Localization_PT_BR: MRT_Localization;
@@ -103,3 +103,9 @@ export declare const getCommonCellStyles: ({ column, header, table, tableCellPro
103
103
  tableCellProps: TableCellProps;
104
104
  theme: Theme;
105
105
  }) => any;
106
+ export declare const MRT_DefaultColumn: {
107
+ minSize: number;
108
+ maxSize: number;
109
+ size: number;
110
+ };
111
+ export declare const MRT_DefaultDisplayColumn: Partial<MRT_ColumnDef>;
@@ -1,8 +1,10 @@
1
1
  import { FC } from 'react';
2
+ import { TableCellProps } from '@mui/material';
2
3
  import { MRT_Header, MRT_TableInstance } from '..';
3
4
  interface Props {
4
5
  header: MRT_Header;
5
6
  table: MRT_TableInstance;
7
+ tableCellProps?: TableCellProps;
6
8
  }
7
9
  export declare const MRT_TableHeadCellSortLabel: FC<Props>;
8
10
  export {};
@@ -2,13 +2,14 @@ import MaterialReactTable from './MaterialReactTable';
2
2
  export default MaterialReactTable;
3
3
  export * from './MaterialReactTable';
4
4
  import type { MRT_Icons } from './icons';
5
- import type { MRT_Localization } from './localization';
6
- export type { MRT_Localization, MRT_Icons };
5
+ export type { MRT_Icons };
7
6
  import { MRT_CopyButton } from './buttons/MRT_CopyButton';
8
7
  import { MRT_FullScreenToggleButton } from './buttons/MRT_FullScreenToggleButton';
9
8
  import { MRT_GlobalFilterTextField } from './inputs/MRT_GlobalFilterTextField';
10
9
  import { MRT_ShowHideColumnsButton } from './buttons/MRT_ShowHideColumnsButton';
10
+ import { MRT_TablePagination } from './toolbar/MRT_TablePagination';
11
11
  import { MRT_ToggleDensePaddingButton } from './buttons/MRT_ToggleDensePaddingButton';
12
12
  import { MRT_ToggleFiltersButton } from './buttons/MRT_ToggleFiltersButton';
13
13
  import { MRT_ToggleGlobalFilterButton } from './buttons/MRT_ToggleGlobalFilterButton';
14
- export { MRT_FullScreenToggleButton, MRT_GlobalFilterTextField, MRT_ShowHideColumnsButton, MRT_ToggleDensePaddingButton, MRT_ToggleFiltersButton, MRT_ToggleGlobalFilterButton, MRT_CopyButton, };
14
+ import { MRT_ToolbarInternalButtons } from './toolbar/MRT_ToolbarInternalButtons';
15
+ export { MRT_CopyButton, MRT_FullScreenToggleButton, MRT_GlobalFilterTextField, MRT_ShowHideColumnsButton, MRT_TablePagination, MRT_ToggleDensePaddingButton, MRT_ToggleFiltersButton, MRT_ToggleGlobalFilterButton, MRT_ToolbarInternalButtons, };