@commonsku/styles 1.17.3 → 1.17.4

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.cjs CHANGED
@@ -6634,6 +6634,8 @@ var VirtualTable = function (props) {
6634
6634
  var _m = reactTable.useTable(__assign({ columns: columns, data: data, defaultColumn: defaultColumn, initialState: __assign({}, (defaultSort ? { sortBy: [defaultSort] } : {})), onUpdateData: onUpdateData }, useTableProps), reactTable.useFlexLayout, reactTable.useSortBy, reactTable.useExpanded), getTableProps = _m.getTableProps, getTableBodyProps = _m.getTableBodyProps, headerGroups = _m.headerGroups, footerGroups = _m.footerGroups, totalColumnsWidth = _m.totalColumnsWidth, prepareRow = _m.prepareRow, toggleAllRowsExpanded = _m.toggleAllRowsExpanded, tableData = __rest(_m, ["getTableProps", "getTableBodyProps", "headerGroups", "footerGroups", "totalColumnsWidth", "prepareRow", "toggleAllRowsExpanded"]);
6635
6635
  var rows = React.useMemo(function () { return tableData.rows; }, [tableData.rows]);
6636
6636
  var windowSize = useWindowSize();
6637
+ var _o = React.useState(false), scrolledToTop = _o[0], setScrolledToTop = _o[1];
6638
+ var _p = React.useState(false), scrolledToBottom = _p[0], setScrolledToBottom = _p[1];
6637
6639
  var headerRef = React.useRef(null);
6638
6640
  var footerRef = React.useRef(null);
6639
6641
  var rowsRef = React.useRef(null);
@@ -6722,17 +6724,35 @@ var VirtualTable = function (props) {
6722
6724
  ], (headerGroupProps.className || "").split(' '), true), (headerGroup.className || "").split(' '), true).filter(function (v) { return v; }).join(' ');
6723
6725
  return __assign(__assign({}, headerGroupProps), { style: headerStyles, className: headerClassNames });
6724
6726
  };
6727
+ var handleScroll = React.useCallback(function (props) {
6728
+ if (onScroll != null) {
6729
+ onScroll(props);
6730
+ }
6731
+ var rows = rowsRef.current;
6732
+ if (rows != null) {
6733
+ setScrolledToTop(rows.scrollTop === 0);
6734
+ setScrolledToBottom(rows.scrollTop === rows.scrollHeight - rows.offsetHeight);
6735
+ }
6736
+ }, [onScroll]);
6725
6737
  return (React__default.default.createElement("div", __assign({}, getTableProps(), { className: "table ".concat(className || '') }),
6726
6738
  React__default.default.createElement("div", __assign({}, tableHeaderProps, { className: "thead ".concat(tableHeaderProps.className || ''), style: __assign(__assign({}, (tableHeaderProps.style || {})), (hideHeader ? { display: 'none' } : {})) }), headerGroups.map(function (headerGroup) { return (React__default.default.createElement("div", __assign({}, getHeaderGroupProps(headerGroup, false), { ref: headerRef, style: { width: tableWidth, } }), headerGroup.headers.map(function (column) { return (React__default.default.createElement("div", __assign({}, getHeaderProps(column, false), { className: "th", onClick: function () { return handleSort(column); } }),
6727
6739
  column.render("Header"),
6728
- React__default.default.createElement("span", null, column.isSorted ? React__default.default.createElement(FilledChevronIcon, { direction: sortDirection(column), size: "medium", style: { verticalAlign: 'middle' } }) : null))); }))); })),
6740
+ React__default.default.createElement("span", null, column.canSort &&
6741
+ React__default.default.createElement(FilledChevronIcon, { direction: column.isSorted ? sortDirection(column) : 'updown', size: "medium", style: { verticalAlign: 'middle' } })))); }))); })),
6729
6742
  React__default.default.createElement("div", __assign({ className: "tbody" }, getTableBodyProps()), rows.length === 0 && NoRowsFound ? React__default.default.createElement(NoRowsFound, null) :
6730
- React__default.default.createElement(reactWindow.VariableSizeList, { useIsScrolling: true, className: "table-list-rows", height: height, itemCount: rows.length, itemSize: function (i) {
6731
- if (itemSize) {
6732
- return itemSize({ row: rows[i], index: i });
6733
- }
6734
- return (rows[i] && rows[i].isExpanded ? 300 : 50) + gutterSize;
6735
- }, width: tableWidth, onScroll: onScroll, ref: listRef, outerRef: rowsRef }, RenderRow)),
6743
+ React__default.default.createElement("div", { className: "scroll-container" },
6744
+ !scrolledToTop &&
6745
+ React__default.default.createElement("div", { className: "scroll-decoration-top" },
6746
+ React__default.default.createElement(DoubleArrowIcon, { direction: "up" })),
6747
+ React__default.default.createElement(reactWindow.VariableSizeList, { useIsScrolling: true, className: "table-list-rows", height: height, itemCount: rows.length, itemSize: function (i) {
6748
+ if (itemSize) {
6749
+ return itemSize({ row: rows[i], index: i });
6750
+ }
6751
+ return (rows[i] && rows[i].isExpanded ? 300 : 50) + gutterSize;
6752
+ }, width: tableWidth, onScroll: handleScroll, ref: listRef, outerRef: rowsRef }, RenderRow),
6753
+ !scrolledToBottom &&
6754
+ React__default.default.createElement("div", { className: "scroll-decoration-bottom" },
6755
+ React__default.default.createElement(DoubleArrowIcon, { direction: "down" })))),
6736
6756
  !hideFooter ? React__default.default.createElement("div", __assign({}, tableFooterProps, { className: "table-footer-wrapper ".concat(tableFooterProps.className || '') }), footerGroups.map(function (footerGroup) { return (React__default.default.createElement("div", __assign({}, getHeaderGroupProps(footerGroup, true), { className: "table-footer tr", ref: footerRef }), footerGroup.headers.map(function (column) { return (React__default.default.createElement("div", __assign({}, getHeaderProps(column, true)), column.render("Footer"))); }))); })) : null,
6737
6757
  TableFooter ? React__default.default.createElement(TableFooter, __assign({}, customTableFooterProps)) : null));
6738
6758
  };
@@ -6746,9 +6766,57 @@ function sortDirection(col) {
6746
6766
  return "updown";
6747
6767
  }
6748
6768
 
6749
- var VirtualTableStyles = styled__default.default.div(templateObject_1$a || (templateObject_1$a = __makeTemplateObject(["\npadding: 1rem;\n\n.table-list-rows {\n ", "\n}\n\n.table {\n display: inline-flex;\n flex-direction: column;\n ", "\n width: 100% !important;\n min-width: 100% !important;\n ", "\n\n .thead {\n padding-right: 15px;\n ", "\n\n .tr {\n overflow-x: hidden;\n min-width: 100%;\n }\n }\n\n .tbody {\n flex: 1 1 auto;\n height: 80vh;\n }\n\n .tr-group {\n display: flex;\n flex-direction: column;\n\n .tr, .tr-sub {\n width: 99%;\n }\n }\n\n .tr {\n display: flex;\n\n ", "\n }\n\n .tr.header {\n position: sticky;\n }\n\n .th,\n .td {\n margin: 0;\n padding: 0.5rem;\n ", "\n }\n}"], ["\npadding: 1rem;\n\n.table-list-rows {\n ", "\n}\n\n.table {\n display: inline-flex;\n flex-direction: column;\n ", "\n width: 100% !important;\n min-width: 100% !important;\n ", "\n\n .thead {\n padding-right: 15px;\n ", "\n\n .tr {\n overflow-x: hidden;\n min-width: 100%;\n }\n }\n\n .tbody {\n flex: 1 1 auto;\n height: 80vh;\n }\n\n .tr-group {\n display: flex;\n flex-direction: column;\n\n .tr, .tr-sub {\n width: 99%;\n }\n }\n\n .tr {\n display: flex;\n\n ", "\n }\n\n .tr.header {\n position: sticky;\n }\n\n .th,\n .td {\n margin: 0;\n padding: 0.5rem;\n ", "\n }\n}"])), function (p) { return p.rowClickable ? "\n .tr {\n cursor: pointer;\n }\n " : ''; }, function (p) { return p.bordered ? "\n border-spacing: 0;\n border: 1px solid black;\n " : ''; }, function (p) { return p.tableHeight ? "height: ".concat(p.tableHeight).concat(typeof p.tableHeight === 'number' ? 'px' : '', ";") : ''; }, function (p) { return p.bordered ? 'border-bottom: 1px solid #000;' : ''; }, function (p) { return p.bordered ? "\n :last-child {\n .td {\n border-bottom: 0;\n }\n }\n " : ''; }, function (p) { return p.bordered ? "\n border-bottom: 1px solid black;\n border-right: 1px solid black;\n :last-child {\n border-right: 0;\n }\n " : ''; });
6769
+ var VirtualTableStyles = styled__default.default.div(templateObject_1$a || (templateObject_1$a = __makeTemplateObject(["\npadding: 1rem;\n\n.table-list-rows {\n ", "\n}\n\n.table {\n display: inline-flex;\n flex-direction: column;\n ", "\n width: 100% !important;\n min-width: 100% !important;\n ", "\n\n .thead {\n padding-right: 15px;\n ", "\n\n .tr {\n overflow-x: hidden;\n min-width: 100%;\n }\n }\n\n .tbody {\n flex: 1 1 auto;\n height: 80vh;\n }\n\n .tr-group {\n display: flex;\n flex-direction: column;\n\n .tr, .tr-sub {\n width: 99%;\n }\n }\n\n .tr {\n display: flex;\n\n ", "\n }\n\n .tr.header {\n position: sticky;\n }\n\n .th,\n .td {\n margin: 0;\n padding: 0.5rem;\n ", "\n }\n}\n\n.scroll-container {\n position: relative;\n}\n\n.scroll-decoration-top, .scroll-decoration-bottom {\n", "\n}\n\n.scroll-decoration-top {\n background: linear-gradient(180deg, #DFEEF4 0%, rgba(166, 194, 198, 0.00) 100%);\n top: 0;\n}\n\n.scroll-decoration-bottom {\n background: linear-gradient(0deg, #DFEEF4 0%, rgba(166, 194, 198, 0.00) 100%);\n bottom: 0;\n}"], ["\npadding: 1rem;\n\n.table-list-rows {\n ", "\n}\n\n.table {\n display: inline-flex;\n flex-direction: column;\n ", "\n width: 100% !important;\n min-width: 100% !important;\n ", "\n\n .thead {\n padding-right: 15px;\n ", "\n\n .tr {\n overflow-x: hidden;\n min-width: 100%;\n }\n }\n\n .tbody {\n flex: 1 1 auto;\n height: 80vh;\n }\n\n .tr-group {\n display: flex;\n flex-direction: column;\n\n .tr, .tr-sub {\n width: 99%;\n }\n }\n\n .tr {\n display: flex;\n\n ", "\n }\n\n .tr.header {\n position: sticky;\n }\n\n .th,\n .td {\n margin: 0;\n padding: 0.5rem;\n ", "\n }\n}\n\n.scroll-container {\n position: relative;\n}\n\n.scroll-decoration-top, .scroll-decoration-bottom {\n", "\n}\n\n.scroll-decoration-top {\n background: linear-gradient(180deg, #DFEEF4 0%, rgba(166, 194, 198, 0.00) 100%);\n top: 0;\n}\n\n.scroll-decoration-bottom {\n background: linear-gradient(0deg, #DFEEF4 0%, rgba(166, 194, 198, 0.00) 100%);\n bottom: 0;\n}"])), function (p) { return p.rowClickable ? "\n .tr {\n cursor: pointer;\n }\n " : ''; }, function (p) { return p.bordered ? "\n border-spacing: 0;\n border: 1px solid black;\n " : ''; }, function (p) { return p.tableHeight ? "height: ".concat(p.tableHeight).concat(typeof p.tableHeight === 'number' ? 'px' : '', ";") : ''; }, function (p) { return p.bordered ? 'border-bottom: 1px solid #000;' : ''; }, function (p) { return p.bordered ? "\n :last-child {\n .td {\n border-bottom: 0;\n }\n }\n " : ''; }, function (p) { return p.bordered ? "\n border-bottom: 1px solid black;\n border-right: 1px solid black;\n :last-child {\n border-right: 0;\n }\n " : ''; }, function (p) { return p.scrollDecoration ? "\n position: absolute;\n height: 48px;\n width: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000000000;\n pointer-events: none;\n" : "\n display: none;\n"; });
6750
6770
  var templateObject_1$a;
6751
6771
 
6772
+ var SelectionTable = function (props) {
6773
+ var columns = props.columns, onSelectRow = props.onSelectRow;
6774
+ var _a = React.useState(props.data.map(function (row) { return (__assign({ selected: false }, row)); })), data = _a[0], setData = _a[1];
6775
+ var selectionState = React.useMemo(function () {
6776
+ return !data.some(function (row) { return row.selected === false; })
6777
+ ? 'all'
6778
+ : data.some(function (row) { return row.selected === true; })
6779
+ ? 'indeterminate'
6780
+ : 'none';
6781
+ }, [data]);
6782
+ var handleSelectHeader = React.useCallback(function () {
6783
+ switch (selectionState) {
6784
+ case 'none':
6785
+ setData(data.map(function (row) { return (__assign(__assign({}, row), { selected: true })); }));
6786
+ break;
6787
+ case 'all':
6788
+ case 'indeterminate':
6789
+ setData(data.map(function (row) { return (__assign(__assign({}, row), { selected: false })); }));
6790
+ break;
6791
+ }
6792
+ }, [data, selectionState]);
6793
+ var handleSelectRow = React.useCallback(function (rowIndex) {
6794
+ setData(function (prev) { return prev.map(function (row, index) {
6795
+ if (rowIndex !== index)
6796
+ return row;
6797
+ if (onSelectRow != null) {
6798
+ onSelectRow(row, rowIndex);
6799
+ }
6800
+ return __assign(__assign({}, row), { selected: rowIndex === index
6801
+ ? !row.selected
6802
+ : row.selected });
6803
+ }); });
6804
+ }, [onSelectRow]);
6805
+ var selectionHeader = React.useMemo(function () { return (React__default.default.createElement(LabeledCheckbox, { label: "", checked: selectionState === 'all', indeterminate: selectionState === 'indeterminate', onChange: handleSelectHeader })); }, [selectionState, handleSelectHeader]);
6806
+ var selectionColumn = React.useMemo(function () { return ({
6807
+ Header: selectionHeader,
6808
+ accessor: 'selected',
6809
+ Cell: function (cellObj) {
6810
+ return (React__default.default.createElement(LabeledCheckbox, { label: "", checked: cellObj.row.original.selected, onChange: function () { return handleSelectRow(cellObj.row.index); } }));
6811
+ },
6812
+ sticky: 'left',
6813
+ noDrag: true,
6814
+ width: 40,
6815
+ disableSortBy: true,
6816
+ }); }, [handleSelectRow, selectionHeader]);
6817
+ return (React__default.default.createElement(VirtualTable, __assign({}, props, { columns: __spreadArray([selectionColumn], columns, true), data: data, minWidth: 40 })));
6818
+ };
6819
+
6752
6820
  var psuedoSelectors = {
6753
6821
  __after: '&:after',
6754
6822
  __before: '&:before',
@@ -7979,6 +8047,7 @@ exports.SalesArrowIcon = SalesArrowIcon;
7979
8047
  exports.SalesOrderCircleIcon = SalesOrderCircleIcon;
7980
8048
  exports.SearchIcon = SearchIcon;
7981
8049
  exports.Select = SKUSelect;
8050
+ exports.SelectionTable = SelectionTable;
7982
8051
  exports.SharedStyles = SharedStyles;
7983
8052
  exports.ShopIcon = ShopIcon;
7984
8053
  exports.ShoppingCartIcon = ShoppingCartIcon;