@popmenu/table 0.47.0 → 0.47.3

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.
@@ -1,3 +1,4 @@
1
+ import { TextFieldProps } from '@material-ui/core';
1
2
  import { Column, ColumnFiltersState, PaginationState } from '@tanstack/react-table';
2
3
  import { Dispatch, SetStateAction } from 'react';
3
4
  export interface ColumnFilter {
@@ -21,6 +22,8 @@ export interface TableProps<T = unknown> {
21
22
  paginationState?: [PaginationState, Dispatch<SetStateAction<PaginationState>>];
22
23
  /** GlobalFiltering state. Expects the result of a React useState hook. Used only for manual filtering. */
23
24
  globalFilterState?: [string, Dispatch<SetStateAction<string>>];
25
+ /** Props applied to the TextField for global filtering. */
26
+ GlobalFilterProps?: TextFieldProps;
24
27
  /** Filtering state. Expects the result of a React useState hook. Used only for manual filtering. */
25
28
  filterState?: [ColumnFiltersState, Dispatch<SetStateAction<Array<ColumnFilter>>>];
26
29
  /** Filtering state. Expects the result of a React useState hook. Used only for manual filtering. */
package/build/index.es.js CHANGED
@@ -963,7 +963,6 @@ var getTableMinHeight = function (rootRef, pageSize) {
963
963
  var defaultBodyRowHeight = 56;
964
964
  var defaultHeaderRowHeight = 57;
965
965
  var defaultFooterHeight = 88;
966
- var borderOffset = 1;
967
966
  var minHeight = defaultBodyRowHeight * pageSize + defaultHeaderRowHeight + defaultFooterHeight;
968
967
  if (rootRef === null || rootRef === void 0 ? void 0 : rootRef.current) {
969
968
  var rootTableNode = rootRef.current;
@@ -971,9 +970,8 @@ var getTableMinHeight = function (rootRef, pageSize) {
971
970
  var bodyRowNode = rootTableNode.querySelector("[data-table-element=\"body-row\"]");
972
971
  if (headerRowNode && bodyRowNode) {
973
972
  var headerRowHeight = headerRowNode.getBoundingClientRect().height;
974
- var firstBodyRowHeight = bodyRowNode.getBoundingClientRect().height;
975
- var restBodyRowHeight = firstBodyRowHeight - borderOffset;
976
- minHeight = headerRowHeight + firstBodyRowHeight + restBodyRowHeight * (pageSize - 1) + defaultFooterHeight;
973
+ var bodyRowHeight = bodyRowNode.getBoundingClientRect().height;
974
+ minHeight = headerRowHeight + bodyRowHeight * pageSize + defaultFooterHeight;
977
975
  }
978
976
  }
979
977
  return minHeight;
@@ -3128,16 +3126,14 @@ var useStyles$1 = makeStyles({
3128
3126
 
3129
3127
  var GlobalFilter = function (props) {
3130
3128
  var value = props.value, setValue = props.setValue, restProps = __rest$3(props, ["value", "setValue"]);
3131
- var onChange = restProps.onChange, InputProps = restProps.InputProps, cleanRestProps = __rest$3(restProps, ["onChange", "InputProps"]);
3132
3129
  var classes = useStyles$1();
3133
3130
  var handleChange = function (e) {
3134
3131
  setValue(e.target.value);
3135
- if (onChange) {
3136
- onChange(e);
3137
- }
3138
3132
  };
3139
- return (React__default.createElement(TextField, __assign$3({ className: classes.root, variant: "outlined", value: value, onChange: handleChange, InputProps: __assign$3({ startAdornment: (React__default.createElement(InputAdornment, { position: "start" },
3140
- React__default.createElement(Icon$1, { icon: SvgSearch }))) }, InputProps) }, cleanRestProps)));
3133
+ return (React__default.createElement(TextField, __assign$3({ className: classes.root, variant: "outlined", value: value, onChange: handleChange, InputProps: {
3134
+ startAdornment: (React__default.createElement(InputAdornment, { position: "start" },
3135
+ React__default.createElement(Icon$1, { icon: SvgSearch }))),
3136
+ } }, restProps)));
3141
3137
  };
3142
3138
 
3143
3139
  var TableHeaderRow = function (props) {
@@ -3220,7 +3216,7 @@ var defaultTableProps = {
3220
3216
  searchable: false,
3221
3217
  };
3222
3218
  var Table = function (props) {
3223
- var data = props.data, columns = props.columns, loading = props.loading, searchable = props.searchable, sortable = props.sortable, externalFilterState = props.filterState, externalGlobalFilterState = props.globalFilterState, externalPaginationState = props.paginationState, externalVisibilityState = props.visibilityState, pageCount = props.pageCount, Empty = props.Empty;
3219
+ var data = props.data, columns = props.columns, loading = props.loading, searchable = props.searchable, sortable = props.sortable, externalFilterState = props.filterState, externalGlobalFilterState = props.globalFilterState, externalPaginationState = props.paginationState, externalVisibilityState = props.visibilityState, pageCount = props.pageCount, GlobalFilterProps = props.GlobalFilterProps, Empty = props.Empty;
3224
3220
  var classes = useStyles$6(props);
3225
3221
  var rootRef = useRef(null);
3226
3222
  // Prepare Empty State
@@ -3250,15 +3246,18 @@ var Table = function (props) {
3250
3246
  var pageIndex = pageNumber - 1;
3251
3247
  table.setPageIndex(pageIndex);
3252
3248
  };
3249
+ var showControls = searchable || isControlledGlobalFilter || hasColumnFilters;
3253
3250
  return (React__default.createElement(TableContext.Provider, { value: table },
3254
- React__default.createElement(Box, __assign$3({ className: classes.root }, { ref: rootRef }, { "data-table-element": "root", minHeight: getTableMinHeight(rootRef, table.getState().pagination.pageSize) }),
3255
- React__default.createElement(Box, null,
3251
+ React__default.createElement(Box, __assign$3({ className: classes.root }, { ref: rootRef }, { "data-table-element": "root" }, (table.getPageCount() > 1 && {
3252
+ minHeight: getTableMinHeight(rootRef, table.getState().pagination.pageSize),
3253
+ })),
3254
+ showControls && (React__default.createElement(Box, null,
3256
3255
  React__default.createElement(Box, { display: "grid", gridAutoFlow: "column", marginBottom: 3 },
3257
- (searchable || isControlledGlobalFilter) && (React__default.createElement(GlobalFilter, { value: table.getState().globalFilter, setValue: table.setGlobalFilter })),
3256
+ (searchable || isControlledGlobalFilter) && (React__default.createElement(GlobalFilter, __assign$3({}, GlobalFilterProps, { value: table.getState().globalFilter, setValue: table.setGlobalFilter }))),
3258
3257
  hasColumnFilters && React__default.createElement(FilterPanel, null)),
3259
3258
  React__default.createElement(Box, { display: "flex", flexWrap: "wrap", gridGap: 8 },
3260
3259
  selectedColumnFilters.map(function (selectedColumnFilter, i) { return (React__default.createElement(ColumnFilterChip, { key: "selected-column-filter-chip-" + i, columnFilter: selectedColumnFilter, label: formatSelectedFilterText(selectedColumnFilter), onClick: deselectColumnFilter })); }),
3261
- selectedColumnFilters.length >= 1 && React__default.createElement(ColumnFilterResetButton, { onClick: function () { return resetColumnFilters(); } }))),
3260
+ selectedColumnFilters.length >= 1 && React__default.createElement(ColumnFilterResetButton, { onClick: function () { return resetColumnFilters(); } })))),
3262
3261
  React__default.createElement(Box, { className: classes.tableContainer, flexGrow: loading || isEmpty ? 0 : 1 },
3263
3262
  React__default.createElement("table", { className: classes.table },
3264
3263
  React__default.createElement(TableHeader, null, table.getHeaderGroups().map(function (headerGroup) { return (React__default.createElement(TableHeaderRow, { key: headerGroup.id }, headerGroup.headers.map(function (header) { return (React__default.createElement(TableHeaderCell, { key: header.id, context: header.getContext() }, flexRender(header.column.columnDef.header, header.getContext()))); }))); })),