@popmenu/table 0.68.0 → 0.69.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/build/index.js CHANGED
@@ -3,9 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
+ var core = require('@material-ui/core');
6
7
  var lab = require('@material-ui/lab');
7
8
  var reactTable = require('@tanstack/react-table');
8
- var core = require('@material-ui/core');
9
9
  var CommonAlert = require('@material-ui/lab/Alert');
10
10
  require('@material-ui/core/AppBar');
11
11
  var MuiAvatar = require('@material-ui/core/Avatar');
@@ -2854,17 +2854,17 @@ var useSettingsIndexCardStyles = styles.makeStyles(function (theme) { return ({
2854
2854
  }); });
2855
2855
 
2856
2856
  var SettingsIndexCard = React.forwardRef(function (props, ref) {
2857
- var title = props.title, description = props.description, Icon$1 = props.Icon, onClick = props.onClick, statusLabel = props.statusLabel, restProps = __rest$1(props, ["title", "description", "Icon", "onClick", "statusLabel"]);
2857
+ var title = props.title, description = props.description, Icon = props.Icon, onClick = props.onClick, statusLabel = props.statusLabel, restProps = __rest$1(props, ["title", "description", "Icon", "onClick", "statusLabel"]);
2858
2858
  var classes = useSettingsIndexCardStyles(props);
2859
2859
  var showStatusLabel = (statusLabel === null || statusLabel === void 0 ? void 0 : statusLabel.text) && (statusLabel === null || statusLabel === void 0 ? void 0 : statusLabel.color);
2860
2860
  return (React__default['default'].createElement(core.ButtonBase, __assign$1({ onClick: onClick, ref: ref }, restProps),
2861
2861
  React__default['default'].createElement(Card__default['default'], { classes: { root: classes.cardRoot } },
2862
2862
  React__default['default'].createElement(CardContent__default['default'], { classes: { root: classes.cardContentRoot } },
2863
2863
  React__default['default'].createElement(core.Box, { fontSize: "32px", display: "flex", justifyContent: 'space-between', alignItems: "center", paddingBottom: 2 },
2864
- React__default['default'].createElement(Icon, { icon: Icon$1 || SvgHelp, size: "inherit" }),
2865
- showStatusLabel && (React__default['default'].createElement(Typography, { weight: "semi-bold", variant: "body2", color: statusLabel === null || statusLabel === void 0 ? void 0 : statusLabel.color }, statusLabel === null || statusLabel === void 0 ? void 0 : statusLabel.text))),
2866
- React__default['default'].createElement(Typography, { align: "left", variant: "h6", gutterBottom: true }, title),
2867
- description && (React__default['default'].createElement(Typography, { align: "left", variant: "body2", color: "grey.700" }, description))))));
2864
+ React__default['default'].createElement(Icon$1, { icon: Icon || SvgHelp, size: "inherit" }),
2865
+ showStatusLabel && (React__default['default'].createElement(Typography$1, { weight: "semi-bold", variant: "body2", color: statusLabel === null || statusLabel === void 0 ? void 0 : statusLabel.color }, statusLabel === null || statusLabel === void 0 ? void 0 : statusLabel.text))),
2866
+ React__default['default'].createElement(Typography$1, { align: "left", variant: "h6", gutterBottom: true }, title),
2867
+ description && (React__default['default'].createElement(Typography$1, { align: "left", variant: "body2", color: "grey.700" }, description))))));
2868
2868
  });
2869
2869
  SettingsIndexCard.displayName = 'SettingsIndexCard';
2870
2870
 
@@ -3214,6 +3214,7 @@ createTheme__default['default'](adminDarkOptions);
3214
3214
  var useStyles$3 = core.makeStyles({
3215
3215
  root: {
3216
3216
  justifySelf: 'end',
3217
+ gridArea: 'columnFilter',
3217
3218
  },
3218
3219
  });
3219
3220
 
@@ -3242,6 +3243,7 @@ var useStyles$2 = core.makeStyles({
3242
3243
  maxWidth: 300,
3243
3244
  minWidth: 200,
3244
3245
  width: '100%',
3246
+ gridArea: 'globalFilter',
3245
3247
  },
3246
3248
  });
3247
3249
 
@@ -4001,6 +4003,35 @@ var ColumnFilterChip = function (props) {
4001
4003
  React__default['default'].createElement(Typography$1, __assign$3({ className: classes.label, weight: "semi-bold" }, { component: 'span' }), label[1])) }));
4002
4004
  };
4003
4005
 
4006
+ var TableControlsContainer = function (props) {
4007
+ var showTitle = props.showTitle, showGlobalSearch = props.showGlobalSearch, showColumnFilter = props.showColumnFilter;
4008
+ var gridTemplateAreas;
4009
+ switch (true) {
4010
+ case showTitle && showGlobalSearch && showColumnFilter:
4011
+ gridTemplateAreas = "\n \"title .\"\n \"globalFilter columnFilter\"\n ";
4012
+ break;
4013
+ case showTitle && !showGlobalSearch && showColumnFilter:
4014
+ gridTemplateAreas = "\n \"title columnFilter\"\n ";
4015
+ break;
4016
+ case !showTitle && showGlobalSearch && showColumnFilter:
4017
+ gridTemplateAreas = "\n \"globalFilter columnFilter\"\n ";
4018
+ break;
4019
+ case showTitle && !showGlobalSearch && !showColumnFilter:
4020
+ gridTemplateAreas = "\n \"title .\"\n ";
4021
+ break;
4022
+ case !showTitle && !showGlobalSearch && showColumnFilter:
4023
+ gridTemplateAreas = "\n \". columnFilter\"\n ";
4024
+ break;
4025
+ case !showTitle && showGlobalSearch && !showColumnFilter:
4026
+ gridTemplateAreas = "\n \"globalFilter .\"\n ";
4027
+ break;
4028
+ case showTitle && showGlobalSearch && !showColumnFilter:
4029
+ gridTemplateAreas = "\n \"title .\"\n \"globalFilter .\"\n ";
4030
+ break;
4031
+ }
4032
+ return (React__default['default'].createElement(core.Box, { display: "grid", gridTemplateColumns: "repeat(2, minmax(150px, 1fr))", gridTemplateAreas: gridTemplateAreas, gridGap: 16, marginBottom: 3 }, props.children));
4033
+ };
4034
+
4004
4035
  var ColumnFilterResetButton = function (props) {
4005
4036
  var _a = props.children, children = _a === void 0 ? 'Clear All' : _a, restProps = __rest$3(props, ["children"]);
4006
4037
  return (React__default['default'].createElement(Button, __assign$3({ variant: "text", textTransform: "none" }, restProps), children));
@@ -4013,7 +4044,7 @@ var defaultTableProps = {
4013
4044
  searchable: false,
4014
4045
  };
4015
4046
  var Table = function (props) {
4016
- var data = props.data, columns = props.columns, enableSortingRemoval = props.enableSortingRemoval, loading = props.loading, searchable = props.searchable, sortable = props.sortable, externalFilterState = props.filterState, externalGlobalFilterState = props.globalFilterState, externalPaginationState = props.paginationState, externalSortingState = props.sortingState, externalVisibilityState = props.visibilityState, pageCount = props.pageCount, GlobalFilterProps = props.GlobalFilterProps, Empty = props.Empty, idBase = props.idBase;
4047
+ var title = props.title, data = props.data, columns = props.columns, enableSortingRemoval = props.enableSortingRemoval, loading = props.loading, searchable = props.searchable, sortable = props.sortable, externalFilterState = props.filterState, externalGlobalFilterState = props.globalFilterState, externalPaginationState = props.paginationState, externalSortingState = props.sortingState, externalVisibilityState = props.visibilityState, pageCount = props.pageCount, GlobalFilterProps = props.GlobalFilterProps, Empty = props.Empty, idBase = props.idBase;
4017
4048
  var classes = useStyles$7(props);
4018
4049
  var rootRef = React.useRef(null);
4019
4050
  // Prepare Empty State
@@ -4045,15 +4076,19 @@ var Table = function (props) {
4045
4076
  var pageIndex = pageNumber - 1;
4046
4077
  table.setPageIndex(pageIndex);
4047
4078
  };
4048
- var showControls = searchable || isControlledGlobalFilter || hasColumnFilters;
4079
+ var showTitle = Boolean(title);
4080
+ var showGlobalSearch = Boolean(searchable || isControlledGlobalFilter);
4081
+ var showColumnFilter = Boolean(hasColumnFilters);
4082
+ var showControls = Boolean(showTitle || showGlobalSearch || showColumnFilter);
4049
4083
  return (React__default['default'].createElement(TableContext.Provider, { value: table },
4050
4084
  React__default['default'].createElement(core.Box, __assign$3({ className: classes.root }, { ref: rootRef }, { "data-table-element": "root" }, (table.getPageCount() > 1 && {
4051
4085
  minHeight: getTableMinHeight(rootRef, table.getState().pagination.pageSize),
4052
4086
  })),
4053
4087
  showControls && (React__default['default'].createElement(core.Box, null,
4054
- React__default['default'].createElement(core.Box, { display: "grid", gridTemplateColumns: "repeat(auto-fit, minmax(150px, 1fr))", marginBottom: 3 },
4055
- (searchable || isControlledGlobalFilter) && (React__default['default'].createElement(GlobalFilter, __assign$3({}, GlobalFilterProps, { value: table.getState().globalFilter, setValue: table.setGlobalFilter }))),
4056
- hasColumnFilters && React__default['default'].createElement(FilterPanel, null)),
4088
+ React__default['default'].createElement(TableControlsContainer, { showTitle: showTitle, showGlobalSearch: showGlobalSearch, showColumnFilter: showColumnFilter },
4089
+ showTitle && (React__default['default'].createElement(core.Typography, { variant: "h5", style: { gridArea: 'title', alignSelf: 'center' } }, title)),
4090
+ showGlobalSearch && (React__default['default'].createElement(GlobalFilter, __assign$3({}, GlobalFilterProps, { value: table.getState().globalFilter, setValue: table.setGlobalFilter }))),
4091
+ showColumnFilter && React__default['default'].createElement(FilterPanel, null)),
4057
4092
  React__default['default'].createElement(core.Box, { display: "flex", flexWrap: "wrap", gridGap: 8 },
4058
4093
  selectedColumnFilters.map(function (selectedColumnFilter, i) { return (React__default['default'].createElement(ColumnFilterChip, { key: "selected-column-filter-chip-" + i, columnFilter: selectedColumnFilter, label: formatSelectedFilterText(selectedColumnFilter), onClick: deselectColumnFilter })); }),
4059
4094
  selectedColumnFilters.length >= 1 && React__default['default'].createElement(ColumnFilterResetButton, { onClick: function () { return resetColumnFilters(); } })))),