@prt-ts/fluent-react-table-v2 9.40.0-build.4.0 → 9.40.0-build.5.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.
- package/index.js +11 -13
- package/package.json +1 -1
- package/src/lib/components/grid-header/GridHeader.d.ts +4 -1
- package/src/lib/components/useGridContainer.d.ts +2 -0
- package/src/lib/index.d.ts +1 -1
- package/src/lib/types/TableProps.d.ts +5 -0
- package/src/lib/types/TableRef.d.ts +0 -2
- package/src/lib/types/TableView.d.ts +1 -1
package/index.js
CHANGED
|
@@ -162,7 +162,7 @@ const useGridHeaderStyles = makeStyles({
|
|
|
162
162
|
});
|
|
163
163
|
|
|
164
164
|
const GridHeader = (props) => {
|
|
165
|
-
const { table, gridTitle, globalFilter, setGlobalFilter } = props;
|
|
165
|
+
const { table, gridTitle, globalFilter, setGlobalFilter, applyTableState, tableViews } = props;
|
|
166
166
|
const styles = useGridHeaderStyles();
|
|
167
167
|
const resetAllFilters = React.useCallback(() => {
|
|
168
168
|
table.setGlobalFilter('');
|
|
@@ -188,7 +188,9 @@ const GridHeader = (props) => {
|
|
|
188
188
|
// appearance="subtle"
|
|
189
189
|
, {
|
|
190
190
|
// appearance="subtle"
|
|
191
|
-
icon: jsx$1(TextGrammarDismissRegular, {}), "aria-label": "View Menu" }) })), jsx$1(MenuPopover, { children: jsxs$1(MenuList, { children: [jsx$1(MenuItem, Object.assign({ icon: jsx$1(ClearFilterIcon, {}), onClick: resetAllFilters }, { children: "Clear All Filters" })), jsx$1(MenuItem, Object.assign({ icon: jsx$1(ClearFilterIcon, {}), onClick: resetAllGrouping }, { children: "Clear All Grouping" })), jsx$1(MenuItem, Object.assign({ icon: jsx$1(ClearFilterIcon, {}), onClick: clearAllSelection }, { children: "Clear All Selection" })), jsx$1(MenuDivider, {}), jsx$1(MenuItem, Object.assign({ icon: jsx$1(ClearFilterIcon, {}), onClick: props.resetToGridDefaultView }, { children: "Reset to Default View" }))
|
|
191
|
+
icon: jsx$1(TextGrammarDismissRegular, {}), "aria-label": "View Menu" }) })), jsx$1(MenuPopover, { children: jsxs$1(MenuList, { children: [jsx$1(MenuItem, Object.assign({ icon: jsx$1(ClearFilterIcon, {}), onClick: resetAllFilters }, { children: "Clear All Filters" })), jsx$1(MenuItem, Object.assign({ icon: jsx$1(ClearFilterIcon, {}), onClick: resetAllGrouping }, { children: "Clear All Grouping" })), jsx$1(MenuItem, Object.assign({ icon: jsx$1(ClearFilterIcon, {}), onClick: clearAllSelection }, { children: "Clear All Selection" })), jsx$1(MenuDivider, {}), jsx$1(MenuItem, Object.assign({ icon: jsx$1(ClearFilterIcon, {}), onClick: props.resetToGridDefaultView }, { children: "Reset to Default View" })), tableViews.length > 0 && jsx$1(MenuDivider, {}), tableViews.map((view) => {
|
|
192
|
+
return (jsx$1(MenuItem, Object.assign({ icon: jsx$1(ClearFilterIcon, {}), onClick: () => applyTableState(view.tableState) }, { children: view.viewName }), view.id));
|
|
193
|
+
})] }) })] }), jsx$1(DebouncedInput, { value: globalFilter !== null && globalFilter !== void 0 ? globalFilter : '', onChange: (value) => setGlobalFilter(String(value)), className: "p-2 font-lg shadow border border-block", placeholder: "Search all columns...", openFilterDrawer: props.openFilterDrawer, setFilterDrawerOpen: props.setFilterDrawerOpen })] }))] })));
|
|
192
194
|
};
|
|
193
195
|
// A debounced input react component
|
|
194
196
|
function DebouncedInput({ value: initialValue, onChange, debounce = 500, openFilterDrawer, setFilterDrawerOpen, }) {
|
|
@@ -283,7 +285,7 @@ const useGridContainer = (props, ref) => {
|
|
|
283
285
|
const [expanded, setExpanded] = React.useState((_g = props.expandedState) !== null && _g !== void 0 ? _g : {});
|
|
284
286
|
const [columnPinning, setColumnPinning] = React.useState((_h = props.columnPinningState) !== null && _h !== void 0 ? _h : {});
|
|
285
287
|
const [columnSizing, setColumnSizing] = React.useState({});
|
|
286
|
-
const
|
|
288
|
+
const tableViews = React.useMemo(() => { var _a; return (_a = props.views) !== null && _a !== void 0 ? _a : []; }, [props.views]);
|
|
287
289
|
const table = useReactTable({
|
|
288
290
|
columns: columns,
|
|
289
291
|
data,
|
|
@@ -418,8 +420,7 @@ const useGridContainer = (props, ref) => {
|
|
|
418
420
|
table,
|
|
419
421
|
getTableState,
|
|
420
422
|
applyTableState,
|
|
421
|
-
resetToDefaultView
|
|
422
|
-
setTableAvailableViews: (views) => setTableViews(views),
|
|
423
|
+
resetToDefaultView
|
|
423
424
|
};
|
|
424
425
|
},
|
|
425
426
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
@@ -440,6 +441,7 @@ const useGridContainer = (props, ref) => {
|
|
|
440
441
|
headerMenu,
|
|
441
442
|
setGlobalFilter,
|
|
442
443
|
resetToDefaultView,
|
|
444
|
+
applyTableState,
|
|
443
445
|
};
|
|
444
446
|
};
|
|
445
447
|
|
|
@@ -16142,7 +16144,7 @@ const useNumberRangeFilterStyles$1 = makeStyles({
|
|
|
16142
16144
|
},
|
|
16143
16145
|
});
|
|
16144
16146
|
const FilterDateRange = (props) => {
|
|
16145
|
-
var _a, _b, _c, _d
|
|
16147
|
+
var _a, _b, _c, _d;
|
|
16146
16148
|
const { column } = props;
|
|
16147
16149
|
const columnFilterValue = column.getFilterValue();
|
|
16148
16150
|
const min = (_b = (_a = column.getFacetedMinMaxValues()) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : undefined;
|
|
@@ -16154,11 +16156,7 @@ const FilterDateRange = (props) => {
|
|
|
16154
16156
|
column.setFilterValue((old) => [old === null || old === void 0 ? void 0 : old[0], date]);
|
|
16155
16157
|
};
|
|
16156
16158
|
const styles = useNumberRangeFilterStyles$1();
|
|
16157
|
-
return (jsxs$1("div", Object.assign({ className: styles.searchContainer }, { children: [jsx$1(Field, Object.assign({ label: 'From Date:', size: "small", className: styles.searchInputField }, { children: jsx$1(DatePicker, { value: (columnFilterValue === null || columnFilterValue === void 0 ? void 0 : columnFilterValue[0]) || null, min: min, max: max, onSelectDate: handleMinChange, className: styles.searchInput, placeholder: `
|
|
16158
|
-
? `(${(_g = (_f = column.getFacetedMinMaxValues()) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.toLocaleString()})`
|
|
16159
|
-
: ''}`, size: 'small', allowTextInput: true }) })), jsx$1(Field, Object.assign({ label: 'To Date:', size: "small", className: styles.searchInputField }, { children: jsx$1(DatePicker, { value: (columnFilterValue === null || columnFilterValue === void 0 ? void 0 : columnFilterValue[1]) || null, min: min, max: max, onSelectDate: handleMaxChange, className: styles.searchInput, placeholder: `Max ${((_h = column.getFacetedMinMaxValues()) === null || _h === void 0 ? void 0 : _h[1])
|
|
16160
|
-
? `(${(_k = (_j = column.getFacetedMinMaxValues()) === null || _j === void 0 ? void 0 : _j[1]) === null || _k === void 0 ? void 0 : _k.toLocaleString()})`
|
|
16161
|
-
: ''}`, size: 'small', allowTextInput: true }) }))] })));
|
|
16159
|
+
return (jsxs$1("div", Object.assign({ className: styles.searchContainer }, { children: [jsx$1(Field, Object.assign({ label: 'From Date:', size: "small", className: styles.searchInputField }, { children: jsx$1(DatePicker, { value: (columnFilterValue === null || columnFilterValue === void 0 ? void 0 : columnFilterValue[0]) || null, min: min, max: max, onSelectDate: handleMinChange, className: styles.searchInput, placeholder: `From Date`, size: 'small', allowTextInput: true }) })), jsx$1(Field, Object.assign({ label: 'To Date:', size: "small", className: styles.searchInputField }, { children: jsx$1(DatePicker, { value: (columnFilterValue === null || columnFilterValue === void 0 ? void 0 : columnFilterValue[1]) || null, min: min, max: max, onSelectDate: handleMaxChange, className: styles.searchInput, placeholder: `To Date`, size: 'small', allowTextInput: true }) }))] })));
|
|
16162
16160
|
};
|
|
16163
16161
|
|
|
16164
16162
|
const useNumberRangeFilterStyles = makeStyles({
|
|
@@ -16491,9 +16489,9 @@ const TableContainer = (props) => {
|
|
|
16491
16489
|
|
|
16492
16490
|
function AdvancedTable(props, ref) {
|
|
16493
16491
|
useStaticStyles();
|
|
16494
|
-
const { table, globalFilter, headerMenu, setGlobalFilter, resetToDefaultView } = useGridContainer(props, ref);
|
|
16492
|
+
const { table, globalFilter, headerMenu, tableViews, setGlobalFilter, resetToDefaultView, applyTableState } = useGridContainer(props, ref);
|
|
16495
16493
|
const [isFilterDrawerOpen, setIsFilterDrawerOpen] = React.useState(false);
|
|
16496
|
-
return (jsxs$1(DndProvider, Object.assign({ backend: HTML5Backend }, { children: [jsx$1(GridHeader, { table: table, gridTitle: props.gridTitle, headerMenu: headerMenu, globalFilter: globalFilter, setGlobalFilter: setGlobalFilter, setFilterDrawerOpen: setIsFilterDrawerOpen,
|
|
16494
|
+
return (jsxs$1(DndProvider, Object.assign({ backend: HTML5Backend }, { children: [jsx$1(GridHeader, { table: table, gridTitle: props.gridTitle, headerMenu: headerMenu, globalFilter: globalFilter, openFilterDrawer: isFilterDrawerOpen, setGlobalFilter: setGlobalFilter, setFilterDrawerOpen: setIsFilterDrawerOpen, resetToGridDefaultView: resetToDefaultView, tableViews: tableViews, applyTableState: applyTableState }), jsxs$1("div", Object.assign({ style: { display: 'flex' } }, { children: [jsx$1(TableContainer, { table: table, data: props.data, isLoading: props.isLoading || false, rowSelectionMode: props.rowSelectionMode, noFilterMatchPage: props.noFilterMatchPage, noItemPage: props.noItemPage }), jsx$1(FilterDrawer, { open: isFilterDrawerOpen, setOpen: setIsFilterDrawerOpen, table: table })] })), jsx$1(Pagination, { table: table, pageSizeOptions: props.pageSizeOptions })] })));
|
|
16497
16495
|
}
|
|
16498
16496
|
const ForwardedAdvancedTable = React.forwardRef(AdvancedTable);
|
|
16499
16497
|
|
package/package.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { Table } from '@tanstack/react-table';
|
|
2
|
+
import { Table, TableState } from '@tanstack/react-table';
|
|
3
|
+
import { TableView } from '../../types';
|
|
3
4
|
type GridHeaderProps<TItem extends object> = {
|
|
4
5
|
table: Table<TItem>;
|
|
5
6
|
gridTitle: JSX.Element | React.ReactNode;
|
|
6
7
|
headerMenu?: JSX.Element | React.ReactNode;
|
|
7
8
|
globalFilter: string;
|
|
8
9
|
setGlobalFilter: (value: string) => void;
|
|
10
|
+
tableViews: TableView[];
|
|
11
|
+
applyTableState: (tableState: Partial<TableState>) => boolean;
|
|
9
12
|
openFilterDrawer: boolean;
|
|
10
13
|
setFilterDrawerOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
|
11
14
|
resetToGridDefaultView: () => boolean;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TableState } from '@tanstack/react-table';
|
|
1
2
|
import { TableProps } from '..';
|
|
2
3
|
import { TableRef, TableView } from '../types';
|
|
3
4
|
import * as React from 'react';
|
|
@@ -8,4 +9,5 @@ export declare const useGridContainer: <TItem extends object>(props: TableProps<
|
|
|
8
9
|
headerMenu: JSX.Element | React.ReactNode;
|
|
9
10
|
setGlobalFilter: React.Dispatch<React.SetStateAction<string>>;
|
|
10
11
|
resetToDefaultView: () => boolean;
|
|
12
|
+
applyTableState: (tableState: Partial<TableState>) => boolean;
|
|
11
13
|
};
|
package/src/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { Table } from "./components";
|
|
2
|
-
export type { TableProps, TableRef } from "./types";
|
|
2
|
+
export type { TableProps, TableRef, TableView } from "./types";
|
|
3
3
|
export type { ColumnDef, TableState } from "@tanstack/react-table";
|
|
4
4
|
export { createColumnHelper } from "@tanstack/react-table";
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { ColumnDef, ColumnFiltersState, ColumnOrderState, ColumnPinningState, ExpandedState, GroupingState, RowSelectionState, SortingState, VisibilityState } from "@tanstack/react-table";
|
|
3
|
+
import { TableView } from "./TableView";
|
|
3
4
|
export type TableProps<TItem extends object> = {
|
|
4
5
|
/**
|
|
5
6
|
* Table Columns definitions.
|
|
@@ -79,4 +80,8 @@ export type TableProps<TItem extends object> = {
|
|
|
79
80
|
* @default defaultNoItemComponent
|
|
80
81
|
*/
|
|
81
82
|
noItemPage?: React.ReactNode;
|
|
83
|
+
/**
|
|
84
|
+
* Table Views
|
|
85
|
+
*/
|
|
86
|
+
views?: TableView[];
|
|
82
87
|
};
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { Table, TableState } from "@tanstack/react-table";
|
|
2
|
-
import { TableView } from "./TableView";
|
|
3
2
|
export type TableRef<TItem extends object> = {
|
|
4
3
|
table: Table<TItem>;
|
|
5
4
|
getTableState: () => Partial<TableState>;
|
|
6
5
|
applyTableState: (tableState: Partial<TableState>) => boolean;
|
|
7
6
|
resetToDefaultView: () => boolean;
|
|
8
|
-
setTableAvailableViews: (views: TableView[]) => void;
|
|
9
7
|
};
|