schummar-table 0.8.3 → 0.9.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/dist/cjs/index.js CHANGED
@@ -401,7 +401,7 @@ const noopParentId = () => void 0;
401
401
  function calcProps(props) {
402
402
  const cache = useTableMemo();
403
403
  return react.useMemo(() => {
404
- var _f, _g, _h, _i, _j, _k, _l;
404
+ var _f, _g, _h, _i, _j, _k, _l, _m;
405
405
  let id;
406
406
  if (props.id instanceof Function || Array.isArray(props.id)) {
407
407
  id = cache("id", props.id);
@@ -480,8 +480,9 @@ function calcProps(props) {
480
480
  stickyFooter: (_i = props.stickyFooter) != null ? _i : true,
481
481
  enableExport,
482
482
  enableColumnSelection: (_j = props.enableColumnSelection) != null ? _j : true,
483
- enableColumnResize: (_k = props.enableColumnResize) != null ? _k : true,
484
- enableColumnReorder: (_l = props.enableColumnReorder) != null ? _l : true
483
+ enableClearFiltersButton: (_k = props.enableClearFiltersButton) != null ? _k : false,
484
+ enableColumnResize: (_l = props.enableColumnResize) != null ? _l : true,
485
+ enableColumnReorder: (_m = props.enableColumnReorder) != null ? _m : true
485
486
  });
486
487
  }, [props]);
487
488
  }
@@ -1635,6 +1636,13 @@ const TableInner = react.memo(function TableInner2({
1635
1636
  width: column.width,
1636
1637
  classes: column.classes
1637
1638
  })));
1639
+ const hasActiveFilters = table.useState((state) => {
1640
+ return state.activeColumns.some((column) => {
1641
+ const filter = state.filters.get(column.id);
1642
+ const filterValue = state.filterValues.get(column.id);
1643
+ return filter !== void 0 && filterValue !== void 0 && filter.isActive(filterValue);
1644
+ });
1645
+ });
1638
1646
  const columnWidths = table.useState("columnWidths", {
1639
1647
  throttle: 16
1640
1648
  });
@@ -1646,6 +1654,9 @@ const TableInner = react.memo(function TableInner2({
1646
1654
  const enableColumnSelection = table.useState("props.enableColumnSelection");
1647
1655
  const enableExport = table.useState((state) => !!state.props.enableExport.copy || !!state.props.enableExport.download);
1648
1656
  const cssVariables = useCssVariables();
1657
+ const enableClearFiltersButton = table.useState("props.enableClearFiltersButton");
1658
+ const Button2 = useTheme((t) => t.components.Button);
1659
+ const textClearFilters = useTheme((t) => t.text.clearFilters);
1649
1660
  react.useLayoutEffect(() => {
1650
1661
  var _a, _b;
1651
1662
  return (_b = (_a = table.getState().props).debugRender) == null ? void 0 : _b.call(_a, "render table inner");
@@ -1683,19 +1694,34 @@ const TableInner = react.memo(function TableInner2({
1683
1694
  css: [tableTheme.defaultClasses.headerFill, stickyHeader && tableTheme.defaultClasses.sticky, stickyHeader instanceof Object && stickyHeader]
1684
1695
  })]
1685
1696
  }),
1686
- footer: hasFooter && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
1687
- children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
1688
- className: classes == null ? void 0 : classes.footerCell,
1689
- css: [tableTheme.defaultClasses.footerFill, stickyFooter && tableTheme.defaultClasses.stickyBottom, stickyFooter instanceof Object && stickyFooter]
1690
- }), /* @__PURE__ */ jsxRuntime.jsx("div", {
1691
- className: classes == null ? void 0 : classes.footerCell,
1692
- css: [tableTheme.defaultClasses.footerFill, stickyFooter && tableTheme.defaultClasses.stickyBottom, stickyFooter instanceof Object && stickyFooter]
1693
- }), activeColumns.map((column) => /* @__PURE__ */ jsxRuntime.jsx(ColumnContext.Provider, {
1694
- value: column.id,
1695
- children: /* @__PURE__ */ jsxRuntime.jsx(ColumnFooter, {})
1696
- }, column.id)), /* @__PURE__ */ jsxRuntime.jsx("div", {
1697
- className: classes == null ? void 0 : classes.footerCell,
1698
- css: [tableTheme.defaultClasses.footerFill, stickyFooter && tableTheme.defaultClasses.stickyBottom, stickyFooter instanceof Object && stickyFooter]
1697
+ footer: /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
1698
+ children: [enableClearFiltersButton && hasActiveFilters && /* @__PURE__ */ jsxRuntime.jsx("div", {
1699
+ css: tableTheme.defaultClasses.clearFiltersButton,
1700
+ children: /* @__PURE__ */ jsxRuntime.jsx(Button2, {
1701
+ variant: "text",
1702
+ onClick: () => {
1703
+ table.update((state) => {
1704
+ state.activeColumns.forEach((column) => {
1705
+ state.filterValues.delete(column.id);
1706
+ });
1707
+ });
1708
+ },
1709
+ children: textClearFilters
1710
+ })
1711
+ }), hasFooter && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
1712
+ children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
1713
+ className: classes == null ? void 0 : classes.footerCell,
1714
+ css: [tableTheme.defaultClasses.footerFill, stickyFooter && tableTheme.defaultClasses.stickyBottom, stickyFooter instanceof Object && stickyFooter]
1715
+ }), /* @__PURE__ */ jsxRuntime.jsx("div", {
1716
+ className: classes == null ? void 0 : classes.footerCell,
1717
+ css: [tableTheme.defaultClasses.footerFill, stickyFooter && tableTheme.defaultClasses.stickyBottom, stickyFooter instanceof Object && stickyFooter]
1718
+ }), activeColumns.map((column) => /* @__PURE__ */ jsxRuntime.jsx(ColumnContext.Provider, {
1719
+ value: column.id,
1720
+ children: /* @__PURE__ */ jsxRuntime.jsx(ColumnFooter, {})
1721
+ }, column.id)), /* @__PURE__ */ jsxRuntime.jsx("div", {
1722
+ className: classes == null ? void 0 : classes.footerCell,
1723
+ css: [tableTheme.defaultClasses.footerFill, stickyFooter && tableTheme.defaultClasses.stickyBottom, stickyFooter instanceof Object && stickyFooter]
1724
+ })]
1699
1725
  })]
1700
1726
  }),
1701
1727
  children: (itemIds, startIndex) => itemIds.map((itemId, index) => /* @__PURE__ */ jsxRuntime.jsx(Row, {
@@ -2127,6 +2153,7 @@ const defaultTexts = {
2127
2153
  exportDownload: "Download",
2128
2154
  today: "Today",
2129
2155
  thisWeek: "This week",
2156
+ clearFilters: "Clear all filters",
2130
2157
  reset: "Reset",
2131
2158
  loading: "Loading",
2132
2159
  selected: (count) => `${count} selected`