schummar-table 0.8.1 → 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 +46 -17
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/tableTheme.js +9 -0
- package/dist/cjs/tableTheme.js.map +1 -1
- package/dist/es/index.js +46 -17
- package/dist/es/index.js.map +1 -1
- package/dist/es/tableTheme.js +9 -0
- package/dist/es/tableTheme.js.map +1 -1
- package/dist/types/theme/defaultTheme/defaultClasses.d.ts +1 -0
- package/dist/types/types.d.ts +5 -0
- package/package.json +1 -1
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
|
-
|
|
484
|
-
|
|
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
|
}
|
|
@@ -637,7 +638,7 @@ function ColumnFooter() {
|
|
|
637
638
|
const column = state.activeColumns.find((column2) => column2.id === columnId);
|
|
638
639
|
if ((column == null ? void 0 : column.footer) instanceof Function) {
|
|
639
640
|
const items = state.activeItems;
|
|
640
|
-
const values = items.map((item) => column == null ? void 0 : column.value(item));
|
|
641
|
+
const values = items.map((item) => column == null ? void 0 : column.value(item.value));
|
|
641
642
|
return column == null ? void 0 : column.footer(values, items);
|
|
642
643
|
}
|
|
643
644
|
return column == null ? void 0 : column.footer;
|
|
@@ -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:
|
|
1687
|
-
children: [/* @__PURE__ */ jsxRuntime.jsx("div", {
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
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`
|
|
@@ -2343,6 +2370,7 @@ function DatePicker({
|
|
|
2343
2370
|
const textToday = useTheme((t) => t.text.today);
|
|
2344
2371
|
const textThisWeek = useTheme((t) => t.text.thisWeek);
|
|
2345
2372
|
const textReset = useTheme((t) => t.text.reset);
|
|
2373
|
+
const cssVariables = useCssVariables();
|
|
2346
2374
|
const [baseDate] = react.useState(new Date());
|
|
2347
2375
|
const [dateInView, setDateInView] = react.useState(baseDate);
|
|
2348
2376
|
const [dirty, setDirty] = react.useState();
|
|
@@ -2420,6 +2448,7 @@ function DatePicker({
|
|
|
2420
2448
|
return (year) => format(new Date(year, 0, 1));
|
|
2421
2449
|
}, [locale]);
|
|
2422
2450
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
2451
|
+
css: cssVariables,
|
|
2423
2452
|
children: [/* @__PURE__ */ jsxRuntime.jsxs("div", {
|
|
2424
2453
|
css: {
|
|
2425
2454
|
display: "grid",
|