@bsol-oss/react-datatable5 8.0.2 → 8.1.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.
- package/dist/index.d.ts +12 -3
- package/dist/index.js +84 -84
- package/dist/index.mjs +86 -87
- package/dist/types/components/DataTable/TableControls.d.ts +4 -1
- package/dist/types/index.d.ts +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { Row, RowData, OnChangeFn, Updater, FilterFn, ColumnDef, RowSelectionSta
|
|
|
3
3
|
import * as React$1 from 'react';
|
|
4
4
|
import React__default, { ReactNode } from 'react';
|
|
5
5
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
6
|
-
import { ImageProps, TableHeaderProps as TableHeaderProps$1, TableRootProps, GridProps, CardBodyProps, FlexProps, TextProps } from '@chakra-ui/react';
|
|
6
|
+
import { ImageProps, TableHeaderProps as TableHeaderProps$1, TableRootProps, GridProps, CardBodyProps, FlexProps, TextProps, BoxProps } from '@chakra-ui/react';
|
|
7
7
|
import { IconType } from 'react-icons';
|
|
8
8
|
import { RankingInfo } from '@tanstack/match-sorter-utils';
|
|
9
9
|
import { UseQueryResult } from '@tanstack/react-query';
|
|
@@ -304,12 +304,15 @@ interface TableControlsProps {
|
|
|
304
304
|
showFilterName?: boolean;
|
|
305
305
|
showFilterTags?: boolean;
|
|
306
306
|
showReload?: boolean;
|
|
307
|
+
showPagination?: boolean;
|
|
308
|
+
showPageSizeControl?: boolean;
|
|
309
|
+
showPageCountText?: boolean;
|
|
307
310
|
filterOptions?: string[];
|
|
308
311
|
extraItems?: ReactNode;
|
|
309
312
|
loading?: boolean;
|
|
310
313
|
hasError?: boolean;
|
|
311
314
|
}
|
|
312
|
-
declare const TableControls: ({ totalText, fitTableWidth, fitTableHeight, isMobile, children, showGlobalFilter, showFilter, showFilterName, showFilterTags, showReload, filterOptions, extraItems, loading, hasError, }: TableControlsProps) => react_jsx_runtime.JSX.Element;
|
|
315
|
+
declare const TableControls: ({ totalText, fitTableWidth, fitTableHeight, isMobile, children, showGlobalFilter, showFilter, showFilterName, showFilterTags, showReload, showPagination, showPageSizeControl, showPageCountText, filterOptions, extraItems, loading, hasError, }: TableControlsProps) => react_jsx_runtime.JSX.Element;
|
|
313
316
|
|
|
314
317
|
interface TableFooterProps {
|
|
315
318
|
pinnedBgColor?: {
|
|
@@ -530,6 +533,12 @@ interface GetStyleProps {
|
|
|
530
533
|
interface RangeDatePickerProps extends Props, RangeCalendarProps {
|
|
531
534
|
}
|
|
532
535
|
|
|
536
|
+
interface RecordDisplayProps {
|
|
537
|
+
object: object | null;
|
|
538
|
+
boxProps?: BoxProps;
|
|
539
|
+
}
|
|
540
|
+
declare const RecordDisplay: ({ object, boxProps }: RecordDisplayProps) => react_jsx_runtime.JSX.Element;
|
|
541
|
+
|
|
533
542
|
declare module "@tanstack/react-table" {
|
|
534
543
|
interface ColumnMeta<TData extends RowData, TValue> {
|
|
535
544
|
/**
|
|
@@ -588,4 +597,4 @@ declare module "@tanstack/react-table" {
|
|
|
588
597
|
}
|
|
589
598
|
}
|
|
590
599
|
|
|
591
|
-
export { type CalendarProps, CardHeader, type CardHeaderProps, type CustomJSONSchema7Definition, DataDisplay, type DataDisplayProps, type DataResponse, DataTable, type DataTableDefaultState, type DataTableProps, DataTableServer, type DataTableServerProps, type DatePickerProps, DefaultCardTitle, DefaultTable, type DefaultTableProps, DensityToggleButton, type DensityToggleButtonProps, type DisplayTextProps, EditFilterButton, type EditFilterButtonProps, EditOrderButton, type EditOrderButtonProps, EditSortingButton, type EditSortingButtonProps, EditViewButton, type EditViewButtonProps, EmptyState, type EmptyStateProps, ErrorAlert, type ErrorAlertProps, FilterOptions, type FilterOptionsProps, Form, type FormProps, type GetColumnsConfigs, type GetDateColorProps, type GetMultiDatesProps, type GetRangeDatesProps, type GetStyleProps, type GetVariantProps, GlobalFilter, PageSizeControl, type PageSizeControlProps, type RangeCalendarProps, type RangeDatePickerProps, ReloadButton, type ReloadButtonProps, ResetFilteringButton, type ResetFilteringButtonProps, ResetSelectionButton, type ResetSelectionButtonProps, ResetSortingButton, type ResetSortingButtonProps, type Result, RowCountText, Table, TableBody, type TableBodyProps, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableComponent, TableControls, type TableControlsProps, TableFilter, TableFilterTags, TableFooter, type TableFooterProps, TableHeader, type TableHeaderProps, TableLoadingComponent, type TableLoadingComponentProps, TableOrderer, TablePagination, type TableProps, type TableRendererProps, type TableRowSelectorProps, TableSelector, TableSorter, TableViewer, TextCell, type TextCellProps, type UseDataTableProps, type UseDataTableReturn, type UseDataTableServerProps, type UseDataTableServerReturn, getColumns, getMultiDates, getRangeDates, useDataTable, useDataTableContext, useDataTableServer, widthSanityCheck };
|
|
600
|
+
export { type CalendarProps, CardHeader, type CardHeaderProps, type CustomJSONSchema7Definition, DataDisplay, type DataDisplayProps, type DataResponse, DataTable, type DataTableDefaultState, type DataTableProps, DataTableServer, type DataTableServerProps, type DatePickerProps, DefaultCardTitle, DefaultTable, type DefaultTableProps, DensityToggleButton, type DensityToggleButtonProps, type DisplayTextProps, EditFilterButton, type EditFilterButtonProps, EditOrderButton, type EditOrderButtonProps, EditSortingButton, type EditSortingButtonProps, EditViewButton, type EditViewButtonProps, EmptyState, type EmptyStateProps, ErrorAlert, type ErrorAlertProps, FilterOptions, type FilterOptionsProps, Form, type FormProps, type GetColumnsConfigs, type GetDateColorProps, type GetMultiDatesProps, type GetRangeDatesProps, type GetStyleProps, type GetVariantProps, GlobalFilter, PageSizeControl, type PageSizeControlProps, type RangeCalendarProps, type RangeDatePickerProps, RecordDisplay, type RecordDisplayProps, ReloadButton, type ReloadButtonProps, ResetFilteringButton, type ResetFilteringButtonProps, ResetSelectionButton, type ResetSelectionButtonProps, ResetSortingButton, type ResetSortingButtonProps, type Result, RowCountText, Table, TableBody, type TableBodyProps, TableCardContainer, type TableCardContainerProps, TableCards, type TableCardsProps, TableComponent, TableControls, type TableControlsProps, TableFilter, TableFilterTags, TableFooter, type TableFooterProps, TableHeader, type TableHeaderProps, TableLoadingComponent, type TableLoadingComponentProps, TableOrderer, TablePagination, type TableProps, type TableRendererProps, type TableRowSelectorProps, TableSelector, TableSorter, TableViewer, TextCell, type TextCellProps, type UseDataTableProps, type UseDataTableReturn, type UseDataTableServerProps, type UseDataTableServerReturn, getColumns, getMultiDates, getRangeDates, useDataTable, useDataTableContext, useDataTableServer, widthSanityCheck };
|
package/dist/index.js
CHANGED
|
@@ -21,12 +21,12 @@ var hi2 = require('react-icons/hi2');
|
|
|
21
21
|
var reactTable = require('@tanstack/react-table');
|
|
22
22
|
var matchSorterUtils = require('@tanstack/match-sorter-utils');
|
|
23
23
|
var bs = require('react-icons/bs');
|
|
24
|
-
var
|
|
25
|
-
var hi = require('react-icons/hi');
|
|
24
|
+
var usehooks = require('@uidotdev/usehooks');
|
|
26
25
|
var reactQuery = require('@tanstack/react-query');
|
|
27
26
|
var io5 = require('react-icons/io5');
|
|
27
|
+
var gr = require('react-icons/gr');
|
|
28
|
+
var hi = require('react-icons/hi');
|
|
28
29
|
var axios = require('axios');
|
|
29
|
-
var usehooks = require('@uidotdev/usehooks');
|
|
30
30
|
var reactHookForm = require('react-hook-form');
|
|
31
31
|
var dayjs = require('dayjs');
|
|
32
32
|
|
|
@@ -2605,7 +2605,6 @@ const snakeToLabel = (str) => {
|
|
|
2605
2605
|
};
|
|
2606
2606
|
|
|
2607
2607
|
const RecordDisplay = ({ object, boxProps }) => {
|
|
2608
|
-
console.log(object, "dkfos");
|
|
2609
2608
|
if (object === null) {
|
|
2610
2609
|
return jsxRuntime.jsx(jsxRuntime.Fragment, { children: "null" });
|
|
2611
2610
|
}
|
|
@@ -3002,12 +3001,90 @@ const Tooltip = React__namespace.forwardRef(function Tooltip(props, ref) {
|
|
|
3002
3001
|
return (jsxRuntime.jsxs(react.Tooltip.Root, { ...rest, children: [jsxRuntime.jsx(react.Tooltip.Trigger, { asChild: true, children: children }), jsxRuntime.jsx(react.Portal, { disabled: !portalled, container: portalRef, children: jsxRuntime.jsx(react.Tooltip.Positioner, { children: jsxRuntime.jsxs(react.Tooltip.Content, { ref: ref, ...contentProps, children: [showArrow && (jsxRuntime.jsx(react.Tooltip.Arrow, { children: jsxRuntime.jsx(react.Tooltip.ArrowTip, {}) })), content] }) }) })] }));
|
|
3003
3002
|
});
|
|
3004
3003
|
|
|
3005
|
-
const
|
|
3004
|
+
const InputGroup = React__namespace.forwardRef(function InputGroup(props, ref) {
|
|
3005
|
+
const { startElement, startElementProps, endElement, endElementProps, children, startOffset = "6px", endOffset = "6px", ...rest } = props;
|
|
3006
|
+
return (jsxRuntime.jsxs(react.Group, { ref: ref, ...rest, children: [startElement && (jsxRuntime.jsx(react.InputElement, { pointerEvents: "none", ...startElementProps, children: startElement })), React__namespace.cloneElement(children, {
|
|
3007
|
+
...(startElement && {
|
|
3008
|
+
ps: `calc(var(--input-height) - ${startOffset})`,
|
|
3009
|
+
}),
|
|
3010
|
+
...(endElement && { pe: `calc(var(--input-height) - ${endOffset})` }),
|
|
3011
|
+
// @ts-expect-error chakra generated files
|
|
3012
|
+
...children.props,
|
|
3013
|
+
}), endElement && (jsxRuntime.jsx(react.InputElement, { placement: "end", ...endElementProps, children: endElement }))] }));
|
|
3014
|
+
});
|
|
3015
|
+
|
|
3016
|
+
const GlobalFilter = () => {
|
|
3017
|
+
const { table } = useDataTableContext();
|
|
3018
|
+
const [searchTerm, setSearchTerm] = React.useState("");
|
|
3019
|
+
const debouncedSearchTerm = usehooks.useDebounce(searchTerm, 500);
|
|
3020
|
+
React.useEffect(() => {
|
|
3021
|
+
const searchHN = async () => {
|
|
3022
|
+
table.setGlobalFilter(debouncedSearchTerm);
|
|
3023
|
+
};
|
|
3024
|
+
searchHN();
|
|
3025
|
+
}, [debouncedSearchTerm]);
|
|
3026
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(InputGroup, { flex: "1", startElement: jsxRuntime.jsx(md.MdSearch, {}), children: jsxRuntime.jsx(react.Input, { placeholder: "Outline", variant: "outline", onChange: (e) => {
|
|
3027
|
+
setSearchTerm(e.target.value);
|
|
3028
|
+
} }) }) }));
|
|
3029
|
+
};
|
|
3030
|
+
|
|
3031
|
+
const useDataTableServerContext = () => {
|
|
3032
|
+
const context = React.useContext(DataTableServerContext);
|
|
3033
|
+
const { query } = context;
|
|
3034
|
+
const isEmpty = (query.data?.count ?? 0) <= 0;
|
|
3035
|
+
return { ...context, isEmpty };
|
|
3036
|
+
};
|
|
3037
|
+
|
|
3038
|
+
const ReloadButton = ({ text = "Reload", variant = "icon", }) => {
|
|
3039
|
+
const { url } = useDataTableServerContext();
|
|
3040
|
+
const queryClient = reactQuery.useQueryClient();
|
|
3041
|
+
if (variant === "icon") {
|
|
3042
|
+
return (jsxRuntime.jsx(Tooltip, { showArrow: true, content: "This is the tooltip content", children: jsxRuntime.jsx(Button, { variant: "ghost", onClick: () => {
|
|
3043
|
+
queryClient.invalidateQueries({ queryKey: [url] });
|
|
3044
|
+
}, "aria-label": "refresh", children: jsxRuntime.jsx(io5.IoReload, {}) }) }));
|
|
3045
|
+
}
|
|
3046
|
+
return (jsxRuntime.jsxs(Button, { variant: "ghost", onClick: () => {
|
|
3047
|
+
queryClient.invalidateQueries({ queryKey: [url] });
|
|
3048
|
+
}, children: [jsxRuntime.jsx(io5.IoReload, {}), " ", text] }));
|
|
3049
|
+
};
|
|
3050
|
+
|
|
3051
|
+
const FilterOptions = ({ column }) => {
|
|
3052
|
+
const { table } = useDataTableContext();
|
|
3053
|
+
const tableColumn = table.getColumn(column);
|
|
3054
|
+
const options = tableColumn?.columnDef.meta?.filterOptions ?? [];
|
|
3055
|
+
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: options.map((option) => {
|
|
3056
|
+
const selected = table.getColumn(column)?.getFilterValue() === option;
|
|
3057
|
+
return (jsxRuntime.jsxs(react.Button, { size: "sm", onClick: () => {
|
|
3058
|
+
if (selected) {
|
|
3059
|
+
table.setColumnFilters((state) => {
|
|
3060
|
+
return state.filter((filter) => {
|
|
3061
|
+
return filter.id !== column;
|
|
3062
|
+
});
|
|
3063
|
+
});
|
|
3064
|
+
return;
|
|
3065
|
+
}
|
|
3066
|
+
table.getColumn(column)?.setFilterValue(option);
|
|
3067
|
+
}, variant: selected ? "solid" : "outline", display: "flex", gap: "0.25rem", children: [option, selected && jsxRuntime.jsx(md.MdClose, {})] }, option));
|
|
3068
|
+
}) }));
|
|
3069
|
+
};
|
|
3070
|
+
|
|
3071
|
+
const TableFilterTags = () => {
|
|
3072
|
+
const { table } = useDataTableContext();
|
|
3073
|
+
return (jsxRuntime.jsx(react.Flex, { gap: "0.5rem", flexFlow: "wrap", children: table.getState().columnFilters.map(({ id, value }) => {
|
|
3074
|
+
return (jsxRuntime.jsx(Tag, { gap: "0.5rem", closable: true, cursor: "pointer", onClick: () => {
|
|
3075
|
+
table.setColumnFilters(table.getState().columnFilters.filter((filter) => {
|
|
3076
|
+
return filter.value != value;
|
|
3077
|
+
}));
|
|
3078
|
+
}, children: `${id}: ${value}` }, `${id}-${value}`));
|
|
3079
|
+
}) }));
|
|
3080
|
+
};
|
|
3081
|
+
|
|
3082
|
+
const TableControls = ({ totalText = "Total:", fitTableWidth = false, fitTableHeight = false, isMobile = false, children = jsxRuntime.jsx(jsxRuntime.Fragment, {}), showGlobalFilter = false, showFilter = false, showFilterName = false, showFilterTags = false, showReload = false, showPagination = true, showPageSizeControl = true, showPageCountText = true, filterOptions = [], extraItems = jsxRuntime.jsx(jsxRuntime.Fragment, {}), loading = false, hasError = false, }) => {
|
|
3006
3083
|
return (jsxRuntime.jsxs(react.Grid, { templateRows: "auto 1fr auto", width: fitTableWidth ? "fit-content" : "100%", height: fitTableHeight ? "fit-content" : "100%", gap: "0.5rem", children: [jsxRuntime.jsxs(react.Flex, { flexFlow: "column", gap: 2, children: [jsxRuntime.jsxs(react.Flex, { justifyContent: "space-between", children: [jsxRuntime.jsx(react.Box, { children: jsxRuntime.jsx(EditViewButton, { text: isMobile ? undefined : "View", icon: jsxRuntime.jsx(md.MdOutlineViewColumn, {}) }) }), jsxRuntime.jsxs(react.Flex, { gap: "0.5rem", alignItems: "center", justifySelf: "end", children: [loading && jsxRuntime.jsx(react.Spinner, { size: "sm" }), hasError && (jsxRuntime.jsx(Tooltip, { content: "An error occurred while fetching data", children: jsxRuntime.jsx(react.Icon, { as: bs.BsExclamationCircleFill, color: "red.400" }) })), showGlobalFilter && jsxRuntime.jsx(GlobalFilter, {}), showFilter && (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(EditFilterButton, { text: isMobile ? undefined : "Advanced Filter" }) })), showReload && jsxRuntime.jsx(ReloadButton, {}), extraItems] })] }), filterOptions.length > 0 && (jsxRuntime.jsx(react.Flex, { flexFlow: "column", gap: "0.5rem", children: filterOptions.map((column) => {
|
|
3007
3084
|
return (jsxRuntime.jsxs(react.Flex, { alignItems: "center", flexFlow: "wrap", gap: "0.5rem", children: [showFilterName && jsxRuntime.jsxs(react.Text, { children: [column, ":"] }), jsxRuntime.jsx(FilterOptions, { column: column })] }, column));
|
|
3008
3085
|
}) })), showFilterTags && (jsxRuntime.jsx(react.Flex, { children: jsxRuntime.jsx(TableFilterTags, {}) }))] }), jsxRuntime.jsx(react.Grid, { overflow: "auto", backgroundColor: "gray.50", _dark: {
|
|
3009
3086
|
backgroundColor: "gray.900",
|
|
3010
|
-
}, children: children }), jsxRuntime.jsxs(react.Flex, { justifyContent: "space-between", children: [jsxRuntime.jsxs(react.Flex, { gap: "1rem", alignItems: "center", children: [jsxRuntime.jsx(PageSizeControl, {}), jsxRuntime.jsxs(react.Flex, { children: [jsxRuntime.jsx(react.Text, { paddingRight: "0.5rem", children: totalText }), jsxRuntime.jsx(RowCountText, {})] })] }), jsxRuntime.jsx(react.Box, { justifySelf: "end", children: jsxRuntime.jsx(TablePagination, {}) })] })] }));
|
|
3087
|
+
}, children: children }), jsxRuntime.jsxs(react.Flex, { justifyContent: "space-between", children: [jsxRuntime.jsxs(react.Flex, { gap: "1rem", alignItems: "center", children: [showPageSizeControl && jsxRuntime.jsx(PageSizeControl, {}), showPageCountText && (jsxRuntime.jsxs(react.Flex, { children: [jsxRuntime.jsx(react.Text, { paddingRight: "0.5rem", children: totalText }), jsxRuntime.jsx(RowCountText, {})] }))] }), jsxRuntime.jsx(react.Box, { justifySelf: "end", children: showPagination && jsxRuntime.jsx(TablePagination, {}) })] })] }));
|
|
3011
3088
|
};
|
|
3012
3089
|
|
|
3013
3090
|
const TableFooter = ({ pinnedBgColor = { light: "gray.50", dark: "gray.700" }, showSelector = false, alwaysShowSelector = true, }) => {
|
|
@@ -3191,26 +3268,6 @@ const DefaultTable = ({ showFooter = false, tableProps = {}, tableHeaderProps =
|
|
|
3191
3268
|
return (jsxRuntime.jsx(TableControls, { ...controlProps, children: jsxRuntime.jsxs(Table, { ...tableProps, children: [jsxRuntime.jsx(TableHeader, { ...tableHeaderProps }), jsxRuntime.jsx(TableBody, { ...tableBodyProps }), showFooter && jsxRuntime.jsx(TableFooter, { ...tableFooterProps })] }) }));
|
|
3192
3269
|
};
|
|
3193
3270
|
|
|
3194
|
-
const useDataTableServerContext = () => {
|
|
3195
|
-
const context = React.useContext(DataTableServerContext);
|
|
3196
|
-
const { query } = context;
|
|
3197
|
-
const isEmpty = (query.data?.count ?? 0) <= 0;
|
|
3198
|
-
return { ...context, isEmpty };
|
|
3199
|
-
};
|
|
3200
|
-
|
|
3201
|
-
const ReloadButton = ({ text = "Reload", variant = "icon", }) => {
|
|
3202
|
-
const { url } = useDataTableServerContext();
|
|
3203
|
-
const queryClient = reactQuery.useQueryClient();
|
|
3204
|
-
if (variant === "icon") {
|
|
3205
|
-
return (jsxRuntime.jsx(Tooltip, { showArrow: true, content: "This is the tooltip content", children: jsxRuntime.jsx(Button, { variant: "ghost", onClick: () => {
|
|
3206
|
-
queryClient.invalidateQueries({ queryKey: [url] });
|
|
3207
|
-
}, "aria-label": "refresh", children: jsxRuntime.jsx(io5.IoReload, {}) }) }));
|
|
3208
|
-
}
|
|
3209
|
-
return (jsxRuntime.jsxs(Button, { variant: "ghost", onClick: () => {
|
|
3210
|
-
queryClient.invalidateQueries({ queryKey: [url] });
|
|
3211
|
-
}, children: [jsxRuntime.jsx(io5.IoReload, {}), " ", text] }));
|
|
3212
|
-
};
|
|
3213
|
-
|
|
3214
3271
|
const TableCardContainer = ({ children, variant = "", ...props }) => {
|
|
3215
3272
|
if (variant === "carousel") {
|
|
3216
3273
|
return (jsxRuntime.jsx(react.Flex, { overflow: "scroll", gap: "1rem", children: children }));
|
|
@@ -3243,17 +3300,6 @@ const TableComponent = ({ render = () => {
|
|
|
3243
3300
|
return render(table);
|
|
3244
3301
|
};
|
|
3245
3302
|
|
|
3246
|
-
const TableFilterTags = () => {
|
|
3247
|
-
const { table } = useDataTableContext();
|
|
3248
|
-
return (jsxRuntime.jsx(react.Flex, { gap: "0.5rem", flexFlow: "wrap", children: table.getState().columnFilters.map(({ id, value }) => {
|
|
3249
|
-
return (jsxRuntime.jsx(Tag, { gap: "0.5rem", closable: true, cursor: "pointer", onClick: () => {
|
|
3250
|
-
table.setColumnFilters(table.getState().columnFilters.filter((filter) => {
|
|
3251
|
-
return filter.value != value;
|
|
3252
|
-
}));
|
|
3253
|
-
}, children: `${id}: ${value}` }, `${id}-${value}`));
|
|
3254
|
-
}) }));
|
|
3255
|
-
};
|
|
3256
|
-
|
|
3257
3303
|
const TableLoadingComponent = ({ render, }) => {
|
|
3258
3304
|
const { loading } = useDataTableContext();
|
|
3259
3305
|
return jsxRuntime.jsx(jsxRuntime.Fragment, { children: render(loading) });
|
|
@@ -3478,53 +3524,6 @@ const ErrorAlert = ({ showMessage = true }) => {
|
|
|
3478
3524
|
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: isError && (jsxRuntime.jsxs(react.Alert.Root, { status: "error", children: [jsxRuntime.jsx(react.Alert.Indicator, {}), jsxRuntime.jsxs(react.Alert.Content, { children: [jsxRuntime.jsx(react.Alert.Title, { children: error.name }), showMessage && (jsxRuntime.jsx(react.Alert.Description, { children: error.message }))] })] })) }));
|
|
3479
3525
|
};
|
|
3480
3526
|
|
|
3481
|
-
const FilterOptions = ({ column }) => {
|
|
3482
|
-
const { table } = useDataTableContext();
|
|
3483
|
-
const tableColumn = table.getColumn(column);
|
|
3484
|
-
const options = tableColumn?.columnDef.meta?.filterOptions ?? [];
|
|
3485
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: options.map((option) => {
|
|
3486
|
-
const selected = table.getColumn(column)?.getFilterValue() === option;
|
|
3487
|
-
return (jsxRuntime.jsxs(react.Button, { size: "sm", onClick: () => {
|
|
3488
|
-
if (selected) {
|
|
3489
|
-
table.setColumnFilters((state) => {
|
|
3490
|
-
return state.filter((filter) => {
|
|
3491
|
-
return filter.id !== column;
|
|
3492
|
-
});
|
|
3493
|
-
});
|
|
3494
|
-
return;
|
|
3495
|
-
}
|
|
3496
|
-
table.getColumn(column)?.setFilterValue(option);
|
|
3497
|
-
}, variant: selected ? "solid" : "outline", display: "flex", gap: "0.25rem", children: [option, selected && jsxRuntime.jsx(md.MdClose, {})] }, option));
|
|
3498
|
-
}) }));
|
|
3499
|
-
};
|
|
3500
|
-
|
|
3501
|
-
const InputGroup = React__namespace.forwardRef(function InputGroup(props, ref) {
|
|
3502
|
-
const { startElement, startElementProps, endElement, endElementProps, children, startOffset = "6px", endOffset = "6px", ...rest } = props;
|
|
3503
|
-
return (jsxRuntime.jsxs(react.Group, { ref: ref, ...rest, children: [startElement && (jsxRuntime.jsx(react.InputElement, { pointerEvents: "none", ...startElementProps, children: startElement })), React__namespace.cloneElement(children, {
|
|
3504
|
-
...(startElement && {
|
|
3505
|
-
ps: `calc(var(--input-height) - ${startOffset})`,
|
|
3506
|
-
}),
|
|
3507
|
-
...(endElement && { pe: `calc(var(--input-height) - ${endOffset})` }),
|
|
3508
|
-
// @ts-expect-error chakra generated files
|
|
3509
|
-
...children.props,
|
|
3510
|
-
}), endElement && (jsxRuntime.jsx(react.InputElement, { placement: "end", ...endElementProps, children: endElement }))] }));
|
|
3511
|
-
});
|
|
3512
|
-
|
|
3513
|
-
const GlobalFilter = () => {
|
|
3514
|
-
const { table } = useDataTableContext();
|
|
3515
|
-
const [searchTerm, setSearchTerm] = React.useState("");
|
|
3516
|
-
const debouncedSearchTerm = usehooks.useDebounce(searchTerm, 500);
|
|
3517
|
-
React.useEffect(() => {
|
|
3518
|
-
const searchHN = async () => {
|
|
3519
|
-
table.setGlobalFilter(debouncedSearchTerm);
|
|
3520
|
-
};
|
|
3521
|
-
searchHN();
|
|
3522
|
-
}, [debouncedSearchTerm]);
|
|
3523
|
-
return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsx(InputGroup, { flex: "1", startElement: jsxRuntime.jsx(md.MdSearch, {}), children: jsxRuntime.jsx(react.Input, { placeholder: "Outline", variant: "outline", onChange: (e) => {
|
|
3524
|
-
setSearchTerm(e.target.value);
|
|
3525
|
-
} }) }) }));
|
|
3526
|
-
};
|
|
3527
|
-
|
|
3528
3527
|
//@ts-expect-error TODO: find appropriate type
|
|
3529
3528
|
const SchemaFormContext = React.createContext({
|
|
3530
3529
|
schema: {},
|
|
@@ -4807,6 +4806,7 @@ exports.FilterOptions = FilterOptions;
|
|
|
4807
4806
|
exports.Form = Form;
|
|
4808
4807
|
exports.GlobalFilter = GlobalFilter;
|
|
4809
4808
|
exports.PageSizeControl = PageSizeControl;
|
|
4809
|
+
exports.RecordDisplay = RecordDisplay;
|
|
4810
4810
|
exports.ReloadButton = ReloadButton;
|
|
4811
4811
|
exports.ResetFilteringButton = ResetFilteringButton;
|
|
4812
4812
|
exports.ResetSelectionButton = ResetSelectionButton;
|
package/dist/index.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
-
import { Button as Button$1, AbsoluteCenter, Spinner, Span, IconButton, Portal, Dialog, RadioGroup as RadioGroup$1, Grid, Box, Slider as Slider$1, HStack, For, Flex, Text, Tag as Tag$1, Input, useDisclosure, DialogBackdrop, CheckboxCard as CheckboxCard$1, Menu, createRecipeContext, createContext as createContext$1, Pagination, usePaginationContext, Image, Card, DataList, Checkbox as Checkbox$1, Table as Table$1, Tooltip as Tooltip$1, Icon, MenuRoot as MenuRoot$1, MenuTrigger as MenuTrigger$1, EmptyState as EmptyState$2, VStack, List, Alert,
|
|
2
|
+
import { Button as Button$1, AbsoluteCenter, Spinner, Span, IconButton, Portal, Dialog, RadioGroup as RadioGroup$1, Grid, Box, Slider as Slider$1, HStack, For, Flex, Text, Tag as Tag$1, Input, useDisclosure, DialogBackdrop, CheckboxCard as CheckboxCard$1, Menu, createRecipeContext, createContext as createContext$1, Pagination, usePaginationContext, Image, Card, DataList, Checkbox as Checkbox$1, Table as Table$1, Tooltip as Tooltip$1, Group, InputElement, Icon, MenuRoot as MenuRoot$1, MenuTrigger as MenuTrigger$1, EmptyState as EmptyState$2, VStack, List, Alert, Popover, Field as Field$1, NumberInput, Accordion, Show, RadioCard, CheckboxGroup, Heading, Center } from '@chakra-ui/react';
|
|
3
3
|
import { AiOutlineColumnWidth } from 'react-icons/ai';
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import React__default, { createContext, useContext, useState, useEffect, useRef } from 'react';
|
|
6
|
-
import { MdFilterAlt, MdArrowUpward, MdArrowDownward, MdOutlineMoveDown, MdOutlineSort, MdOutlineViewColumn, MdFilterListAlt, MdPushPin, MdCancel, MdClear, MdOutlineChecklist
|
|
6
|
+
import { MdFilterAlt, MdArrowUpward, MdArrowDownward, MdOutlineMoveDown, MdOutlineSort, MdSearch, MdClose, MdOutlineViewColumn, MdFilterListAlt, MdPushPin, MdCancel, MdClear, MdOutlineChecklist } from 'react-icons/md';
|
|
7
7
|
import { LuX, LuCheck, LuChevronRight, LuChevronDown } from 'react-icons/lu';
|
|
8
8
|
import Dayzed from '@bsol-oss/dayzed-react19';
|
|
9
9
|
import { FaUpDown, FaGripLinesVertical } from 'react-icons/fa6';
|
|
@@ -20,12 +20,12 @@ import { HiMiniEllipsisHorizontal, HiChevronLeft, HiChevronRight } from 'react-i
|
|
|
20
20
|
import { flexRender, makeStateUpdater, functionalUpdate, useReactTable, getCoreRowModel, getFilteredRowModel, getSortedRowModel, getPaginationRowModel, createColumnHelper } from '@tanstack/react-table';
|
|
21
21
|
import { rankItem } from '@tanstack/match-sorter-utils';
|
|
22
22
|
import { BsExclamationCircleFill } from 'react-icons/bs';
|
|
23
|
-
import {
|
|
24
|
-
import { HiColorSwatch, HiOutlineInformationCircle } from 'react-icons/hi';
|
|
23
|
+
import { useDebounce } from '@uidotdev/usehooks';
|
|
25
24
|
import { useQueryClient, useQuery, QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
26
25
|
import { IoReload } from 'react-icons/io5';
|
|
26
|
+
import { GrAscend, GrDescend } from 'react-icons/gr';
|
|
27
|
+
import { HiColorSwatch, HiOutlineInformationCircle } from 'react-icons/hi';
|
|
27
28
|
import axios from 'axios';
|
|
28
|
-
import { useDebounce } from '@uidotdev/usehooks';
|
|
29
29
|
import { useFormContext, useForm, FormProvider } from 'react-hook-form';
|
|
30
30
|
import dayjs from 'dayjs';
|
|
31
31
|
|
|
@@ -2585,7 +2585,6 @@ const snakeToLabel = (str) => {
|
|
|
2585
2585
|
};
|
|
2586
2586
|
|
|
2587
2587
|
const RecordDisplay = ({ object, boxProps }) => {
|
|
2588
|
-
console.log(object, "dkfos");
|
|
2589
2588
|
if (object === null) {
|
|
2590
2589
|
return jsx(Fragment, { children: "null" });
|
|
2591
2590
|
}
|
|
@@ -2982,12 +2981,90 @@ const Tooltip = React.forwardRef(function Tooltip(props, ref) {
|
|
|
2982
2981
|
return (jsxs(Tooltip$1.Root, { ...rest, children: [jsx(Tooltip$1.Trigger, { asChild: true, children: children }), jsx(Portal, { disabled: !portalled, container: portalRef, children: jsx(Tooltip$1.Positioner, { children: jsxs(Tooltip$1.Content, { ref: ref, ...contentProps, children: [showArrow && (jsx(Tooltip$1.Arrow, { children: jsx(Tooltip$1.ArrowTip, {}) })), content] }) }) })] }));
|
|
2983
2982
|
});
|
|
2984
2983
|
|
|
2985
|
-
const
|
|
2984
|
+
const InputGroup = React.forwardRef(function InputGroup(props, ref) {
|
|
2985
|
+
const { startElement, startElementProps, endElement, endElementProps, children, startOffset = "6px", endOffset = "6px", ...rest } = props;
|
|
2986
|
+
return (jsxs(Group, { ref: ref, ...rest, children: [startElement && (jsx(InputElement, { pointerEvents: "none", ...startElementProps, children: startElement })), React.cloneElement(children, {
|
|
2987
|
+
...(startElement && {
|
|
2988
|
+
ps: `calc(var(--input-height) - ${startOffset})`,
|
|
2989
|
+
}),
|
|
2990
|
+
...(endElement && { pe: `calc(var(--input-height) - ${endOffset})` }),
|
|
2991
|
+
// @ts-expect-error chakra generated files
|
|
2992
|
+
...children.props,
|
|
2993
|
+
}), endElement && (jsx(InputElement, { placement: "end", ...endElementProps, children: endElement }))] }));
|
|
2994
|
+
});
|
|
2995
|
+
|
|
2996
|
+
const GlobalFilter = () => {
|
|
2997
|
+
const { table } = useDataTableContext();
|
|
2998
|
+
const [searchTerm, setSearchTerm] = useState("");
|
|
2999
|
+
const debouncedSearchTerm = useDebounce(searchTerm, 500);
|
|
3000
|
+
useEffect(() => {
|
|
3001
|
+
const searchHN = async () => {
|
|
3002
|
+
table.setGlobalFilter(debouncedSearchTerm);
|
|
3003
|
+
};
|
|
3004
|
+
searchHN();
|
|
3005
|
+
}, [debouncedSearchTerm]);
|
|
3006
|
+
return (jsx(Fragment, { children: jsx(InputGroup, { flex: "1", startElement: jsx(MdSearch, {}), children: jsx(Input, { placeholder: "Outline", variant: "outline", onChange: (e) => {
|
|
3007
|
+
setSearchTerm(e.target.value);
|
|
3008
|
+
} }) }) }));
|
|
3009
|
+
};
|
|
3010
|
+
|
|
3011
|
+
const useDataTableServerContext = () => {
|
|
3012
|
+
const context = useContext(DataTableServerContext);
|
|
3013
|
+
const { query } = context;
|
|
3014
|
+
const isEmpty = (query.data?.count ?? 0) <= 0;
|
|
3015
|
+
return { ...context, isEmpty };
|
|
3016
|
+
};
|
|
3017
|
+
|
|
3018
|
+
const ReloadButton = ({ text = "Reload", variant = "icon", }) => {
|
|
3019
|
+
const { url } = useDataTableServerContext();
|
|
3020
|
+
const queryClient = useQueryClient();
|
|
3021
|
+
if (variant === "icon") {
|
|
3022
|
+
return (jsx(Tooltip, { showArrow: true, content: "This is the tooltip content", children: jsx(Button, { variant: "ghost", onClick: () => {
|
|
3023
|
+
queryClient.invalidateQueries({ queryKey: [url] });
|
|
3024
|
+
}, "aria-label": "refresh", children: jsx(IoReload, {}) }) }));
|
|
3025
|
+
}
|
|
3026
|
+
return (jsxs(Button, { variant: "ghost", onClick: () => {
|
|
3027
|
+
queryClient.invalidateQueries({ queryKey: [url] });
|
|
3028
|
+
}, children: [jsx(IoReload, {}), " ", text] }));
|
|
3029
|
+
};
|
|
3030
|
+
|
|
3031
|
+
const FilterOptions = ({ column }) => {
|
|
3032
|
+
const { table } = useDataTableContext();
|
|
3033
|
+
const tableColumn = table.getColumn(column);
|
|
3034
|
+
const options = tableColumn?.columnDef.meta?.filterOptions ?? [];
|
|
3035
|
+
return (jsx(Fragment, { children: options.map((option) => {
|
|
3036
|
+
const selected = table.getColumn(column)?.getFilterValue() === option;
|
|
3037
|
+
return (jsxs(Button$1, { size: "sm", onClick: () => {
|
|
3038
|
+
if (selected) {
|
|
3039
|
+
table.setColumnFilters((state) => {
|
|
3040
|
+
return state.filter((filter) => {
|
|
3041
|
+
return filter.id !== column;
|
|
3042
|
+
});
|
|
3043
|
+
});
|
|
3044
|
+
return;
|
|
3045
|
+
}
|
|
3046
|
+
table.getColumn(column)?.setFilterValue(option);
|
|
3047
|
+
}, variant: selected ? "solid" : "outline", display: "flex", gap: "0.25rem", children: [option, selected && jsx(MdClose, {})] }, option));
|
|
3048
|
+
}) }));
|
|
3049
|
+
};
|
|
3050
|
+
|
|
3051
|
+
const TableFilterTags = () => {
|
|
3052
|
+
const { table } = useDataTableContext();
|
|
3053
|
+
return (jsx(Flex, { gap: "0.5rem", flexFlow: "wrap", children: table.getState().columnFilters.map(({ id, value }) => {
|
|
3054
|
+
return (jsx(Tag, { gap: "0.5rem", closable: true, cursor: "pointer", onClick: () => {
|
|
3055
|
+
table.setColumnFilters(table.getState().columnFilters.filter((filter) => {
|
|
3056
|
+
return filter.value != value;
|
|
3057
|
+
}));
|
|
3058
|
+
}, children: `${id}: ${value}` }, `${id}-${value}`));
|
|
3059
|
+
}) }));
|
|
3060
|
+
};
|
|
3061
|
+
|
|
3062
|
+
const TableControls = ({ totalText = "Total:", fitTableWidth = false, fitTableHeight = false, isMobile = false, children = jsx(Fragment, {}), showGlobalFilter = false, showFilter = false, showFilterName = false, showFilterTags = false, showReload = false, showPagination = true, showPageSizeControl = true, showPageCountText = true, filterOptions = [], extraItems = jsx(Fragment, {}), loading = false, hasError = false, }) => {
|
|
2986
3063
|
return (jsxs(Grid, { templateRows: "auto 1fr auto", width: fitTableWidth ? "fit-content" : "100%", height: fitTableHeight ? "fit-content" : "100%", gap: "0.5rem", children: [jsxs(Flex, { flexFlow: "column", gap: 2, children: [jsxs(Flex, { justifyContent: "space-between", children: [jsx(Box, { children: jsx(EditViewButton, { text: isMobile ? undefined : "View", icon: jsx(MdOutlineViewColumn, {}) }) }), jsxs(Flex, { gap: "0.5rem", alignItems: "center", justifySelf: "end", children: [loading && jsx(Spinner, { size: "sm" }), hasError && (jsx(Tooltip, { content: "An error occurred while fetching data", children: jsx(Icon, { as: BsExclamationCircleFill, color: "red.400" }) })), showGlobalFilter && jsx(GlobalFilter, {}), showFilter && (jsx(Fragment, { children: jsx(EditFilterButton, { text: isMobile ? undefined : "Advanced Filter" }) })), showReload && jsx(ReloadButton, {}), extraItems] })] }), filterOptions.length > 0 && (jsx(Flex, { flexFlow: "column", gap: "0.5rem", children: filterOptions.map((column) => {
|
|
2987
3064
|
return (jsxs(Flex, { alignItems: "center", flexFlow: "wrap", gap: "0.5rem", children: [showFilterName && jsxs(Text, { children: [column, ":"] }), jsx(FilterOptions, { column: column })] }, column));
|
|
2988
3065
|
}) })), showFilterTags && (jsx(Flex, { children: jsx(TableFilterTags, {}) }))] }), jsx(Grid, { overflow: "auto", backgroundColor: "gray.50", _dark: {
|
|
2989
3066
|
backgroundColor: "gray.900",
|
|
2990
|
-
}, children: children }), jsxs(Flex, { justifyContent: "space-between", children: [jsxs(Flex, { gap: "1rem", alignItems: "center", children: [jsx(PageSizeControl, {}), jsxs(Flex, { children: [jsx(Text, { paddingRight: "0.5rem", children: totalText }), jsx(RowCountText, {})] })] }), jsx(Box, { justifySelf: "end", children: jsx(TablePagination, {}) })] })] }));
|
|
3067
|
+
}, children: children }), jsxs(Flex, { justifyContent: "space-between", children: [jsxs(Flex, { gap: "1rem", alignItems: "center", children: [showPageSizeControl && jsx(PageSizeControl, {}), showPageCountText && (jsxs(Flex, { children: [jsx(Text, { paddingRight: "0.5rem", children: totalText }), jsx(RowCountText, {})] }))] }), jsx(Box, { justifySelf: "end", children: showPagination && jsx(TablePagination, {}) })] })] }));
|
|
2991
3068
|
};
|
|
2992
3069
|
|
|
2993
3070
|
const TableFooter = ({ pinnedBgColor = { light: "gray.50", dark: "gray.700" }, showSelector = false, alwaysShowSelector = true, }) => {
|
|
@@ -3171,26 +3248,6 @@ const DefaultTable = ({ showFooter = false, tableProps = {}, tableHeaderProps =
|
|
|
3171
3248
|
return (jsx(TableControls, { ...controlProps, children: jsxs(Table, { ...tableProps, children: [jsx(TableHeader, { ...tableHeaderProps }), jsx(TableBody, { ...tableBodyProps }), showFooter && jsx(TableFooter, { ...tableFooterProps })] }) }));
|
|
3172
3249
|
};
|
|
3173
3250
|
|
|
3174
|
-
const useDataTableServerContext = () => {
|
|
3175
|
-
const context = useContext(DataTableServerContext);
|
|
3176
|
-
const { query } = context;
|
|
3177
|
-
const isEmpty = (query.data?.count ?? 0) <= 0;
|
|
3178
|
-
return { ...context, isEmpty };
|
|
3179
|
-
};
|
|
3180
|
-
|
|
3181
|
-
const ReloadButton = ({ text = "Reload", variant = "icon", }) => {
|
|
3182
|
-
const { url } = useDataTableServerContext();
|
|
3183
|
-
const queryClient = useQueryClient();
|
|
3184
|
-
if (variant === "icon") {
|
|
3185
|
-
return (jsx(Tooltip, { showArrow: true, content: "This is the tooltip content", children: jsx(Button, { variant: "ghost", onClick: () => {
|
|
3186
|
-
queryClient.invalidateQueries({ queryKey: [url] });
|
|
3187
|
-
}, "aria-label": "refresh", children: jsx(IoReload, {}) }) }));
|
|
3188
|
-
}
|
|
3189
|
-
return (jsxs(Button, { variant: "ghost", onClick: () => {
|
|
3190
|
-
queryClient.invalidateQueries({ queryKey: [url] });
|
|
3191
|
-
}, children: [jsx(IoReload, {}), " ", text] }));
|
|
3192
|
-
};
|
|
3193
|
-
|
|
3194
3251
|
const TableCardContainer = ({ children, variant = "", ...props }) => {
|
|
3195
3252
|
if (variant === "carousel") {
|
|
3196
3253
|
return (jsx(Flex, { overflow: "scroll", gap: "1rem", children: children }));
|
|
@@ -3223,17 +3280,6 @@ const TableComponent = ({ render = () => {
|
|
|
3223
3280
|
return render(table);
|
|
3224
3281
|
};
|
|
3225
3282
|
|
|
3226
|
-
const TableFilterTags = () => {
|
|
3227
|
-
const { table } = useDataTableContext();
|
|
3228
|
-
return (jsx(Flex, { gap: "0.5rem", flexFlow: "wrap", children: table.getState().columnFilters.map(({ id, value }) => {
|
|
3229
|
-
return (jsx(Tag, { gap: "0.5rem", closable: true, cursor: "pointer", onClick: () => {
|
|
3230
|
-
table.setColumnFilters(table.getState().columnFilters.filter((filter) => {
|
|
3231
|
-
return filter.value != value;
|
|
3232
|
-
}));
|
|
3233
|
-
}, children: `${id}: ${value}` }, `${id}-${value}`));
|
|
3234
|
-
}) }));
|
|
3235
|
-
};
|
|
3236
|
-
|
|
3237
3283
|
const TableLoadingComponent = ({ render, }) => {
|
|
3238
3284
|
const { loading } = useDataTableContext();
|
|
3239
3285
|
return jsx(Fragment, { children: render(loading) });
|
|
@@ -3458,53 +3504,6 @@ const ErrorAlert = ({ showMessage = true }) => {
|
|
|
3458
3504
|
return (jsx(Fragment, { children: isError && (jsxs(Alert.Root, { status: "error", children: [jsx(Alert.Indicator, {}), jsxs(Alert.Content, { children: [jsx(Alert.Title, { children: error.name }), showMessage && (jsx(Alert.Description, { children: error.message }))] })] })) }));
|
|
3459
3505
|
};
|
|
3460
3506
|
|
|
3461
|
-
const FilterOptions = ({ column }) => {
|
|
3462
|
-
const { table } = useDataTableContext();
|
|
3463
|
-
const tableColumn = table.getColumn(column);
|
|
3464
|
-
const options = tableColumn?.columnDef.meta?.filterOptions ?? [];
|
|
3465
|
-
return (jsx(Fragment, { children: options.map((option) => {
|
|
3466
|
-
const selected = table.getColumn(column)?.getFilterValue() === option;
|
|
3467
|
-
return (jsxs(Button$1, { size: "sm", onClick: () => {
|
|
3468
|
-
if (selected) {
|
|
3469
|
-
table.setColumnFilters((state) => {
|
|
3470
|
-
return state.filter((filter) => {
|
|
3471
|
-
return filter.id !== column;
|
|
3472
|
-
});
|
|
3473
|
-
});
|
|
3474
|
-
return;
|
|
3475
|
-
}
|
|
3476
|
-
table.getColumn(column)?.setFilterValue(option);
|
|
3477
|
-
}, variant: selected ? "solid" : "outline", display: "flex", gap: "0.25rem", children: [option, selected && jsx(MdClose, {})] }, option));
|
|
3478
|
-
}) }));
|
|
3479
|
-
};
|
|
3480
|
-
|
|
3481
|
-
const InputGroup = React.forwardRef(function InputGroup(props, ref) {
|
|
3482
|
-
const { startElement, startElementProps, endElement, endElementProps, children, startOffset = "6px", endOffset = "6px", ...rest } = props;
|
|
3483
|
-
return (jsxs(Group, { ref: ref, ...rest, children: [startElement && (jsx(InputElement, { pointerEvents: "none", ...startElementProps, children: startElement })), React.cloneElement(children, {
|
|
3484
|
-
...(startElement && {
|
|
3485
|
-
ps: `calc(var(--input-height) - ${startOffset})`,
|
|
3486
|
-
}),
|
|
3487
|
-
...(endElement && { pe: `calc(var(--input-height) - ${endOffset})` }),
|
|
3488
|
-
// @ts-expect-error chakra generated files
|
|
3489
|
-
...children.props,
|
|
3490
|
-
}), endElement && (jsx(InputElement, { placement: "end", ...endElementProps, children: endElement }))] }));
|
|
3491
|
-
});
|
|
3492
|
-
|
|
3493
|
-
const GlobalFilter = () => {
|
|
3494
|
-
const { table } = useDataTableContext();
|
|
3495
|
-
const [searchTerm, setSearchTerm] = useState("");
|
|
3496
|
-
const debouncedSearchTerm = useDebounce(searchTerm, 500);
|
|
3497
|
-
useEffect(() => {
|
|
3498
|
-
const searchHN = async () => {
|
|
3499
|
-
table.setGlobalFilter(debouncedSearchTerm);
|
|
3500
|
-
};
|
|
3501
|
-
searchHN();
|
|
3502
|
-
}, [debouncedSearchTerm]);
|
|
3503
|
-
return (jsx(Fragment, { children: jsx(InputGroup, { flex: "1", startElement: jsx(MdSearch, {}), children: jsx(Input, { placeholder: "Outline", variant: "outline", onChange: (e) => {
|
|
3504
|
-
setSearchTerm(e.target.value);
|
|
3505
|
-
} }) }) }));
|
|
3506
|
-
};
|
|
3507
|
-
|
|
3508
3507
|
//@ts-expect-error TODO: find appropriate type
|
|
3509
3508
|
const SchemaFormContext = createContext({
|
|
3510
3509
|
schema: {},
|
|
@@ -4770,4 +4769,4 @@ const getMultiDates = ({ selected, selectedDate, selectedDates, selectable, }) =
|
|
|
4770
4769
|
}
|
|
4771
4770
|
};
|
|
4772
4771
|
|
|
4773
|
-
export { CardHeader, DataDisplay, DataTable, DataTableServer, DefaultCardTitle, DefaultTable, DensityToggleButton, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, EmptyState, ErrorAlert, FilterOptions, Form, GlobalFilter, PageSizeControl, ReloadButton, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, RowCountText, Table, TableBody, TableCardContainer, TableCards, TableComponent, TableControls, TableFilter, TableFilterTags, TableFooter, TableHeader, TableLoadingComponent, TableOrderer, TablePagination, TableSelector, TableSorter, TableViewer, TextCell, getColumns, getMultiDates, getRangeDates, useDataTable, useDataTableContext, useDataTableServer, widthSanityCheck };
|
|
4772
|
+
export { CardHeader, DataDisplay, DataTable, DataTableServer, DefaultCardTitle, DefaultTable, DensityToggleButton, EditFilterButton, EditOrderButton, EditSortingButton, EditViewButton, EmptyState, ErrorAlert, FilterOptions, Form, GlobalFilter, PageSizeControl, RecordDisplay, ReloadButton, ResetFilteringButton, ResetSelectionButton, ResetSortingButton, RowCountText, Table, TableBody, TableCardContainer, TableCards, TableComponent, TableControls, TableFilter, TableFilterTags, TableFooter, TableHeader, TableLoadingComponent, TableOrderer, TablePagination, TableSelector, TableSorter, TableViewer, TextCell, getColumns, getMultiDates, getRangeDates, useDataTable, useDataTableContext, useDataTableServer, widthSanityCheck };
|
|
@@ -10,9 +10,12 @@ export interface TableControlsProps {
|
|
|
10
10
|
showFilterName?: boolean;
|
|
11
11
|
showFilterTags?: boolean;
|
|
12
12
|
showReload?: boolean;
|
|
13
|
+
showPagination?: boolean;
|
|
14
|
+
showPageSizeControl?: boolean;
|
|
15
|
+
showPageCountText?: boolean;
|
|
13
16
|
filterOptions?: string[];
|
|
14
17
|
extraItems?: ReactNode;
|
|
15
18
|
loading?: boolean;
|
|
16
19
|
hasError?: boolean;
|
|
17
20
|
}
|
|
18
|
-
export declare const TableControls: ({ totalText, fitTableWidth, fitTableHeight, isMobile, children, showGlobalFilter, showFilter, showFilterName, showFilterTags, showReload, filterOptions, extraItems, loading, hasError, }: TableControlsProps) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export declare const TableControls: ({ totalText, fitTableWidth, fitTableHeight, isMobile, children, showGlobalFilter, showFilter, showFilterName, showFilterTags, showReload, showPagination, showPageSizeControl, showPageCountText, filterOptions, extraItems, loading, hasError, }: TableControlsProps) => import("react/jsx-runtime").JSX.Element;
|
package/dist/types/index.d.ts
CHANGED
|
@@ -103,3 +103,4 @@ export * from "./components/DatePicker/DatePicker";
|
|
|
103
103
|
export * from "./components/DatePicker/getMultiDates";
|
|
104
104
|
export * from "./components/DatePicker/getRangeDates";
|
|
105
105
|
export * from "./components/DatePicker/RangeDatePicker";
|
|
106
|
+
export * from "./components/DataTable/components/RecordDisplay";
|