UNPKG

7.52 kBJavaScriptView Raw
1"use strict";
2
3function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.Unstable_StatefulContainer = Unstable_StatefulContainer;
9
10var React = _interopRequireWildcard(require("react"));
11
12var _constants = require("./constants.js");
13
14function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
15
16function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
17
18function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
19
20function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
21
22function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
23
24function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
25
26function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
27
28function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
29
30function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
31
32function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
33
34function useDuplicateColumnTitleWarning(columns) {
35 React.useEffect(function () {
36 if (process.env.NODE_ENV !== "production") {
37 var titles = columns.reduce(function (set, column) {
38 return set.add(column.title);
39 }, new Set());
40
41 if (titles.size < columns.length) {
42 console.warn('BaseWeb DataTable: Column titles must be unique else will result in non-deterministic filtering.');
43 }
44 }
45 }, [columns]);
46}
47
48function useSortParameters() {
49 var _React$useState = React.useState(-1),
50 _React$useState2 = _slicedToArray(_React$useState, 2),
51 sortIndex = _React$useState2[0],
52 setSortIndex = _React$useState2[1];
53
54 var _React$useState3 = React.useState(null),
55 _React$useState4 = _slicedToArray(_React$useState3, 2),
56 sortDirection = _React$useState4[0],
57 setSortDirection = _React$useState4[1];
58
59 function handleSort(columnIndex) {
60 if (columnIndex === sortIndex) {
61 if (sortDirection === _constants.SORT_DIRECTIONS.ASC) {
62 setSortIndex(-1);
63 setSortDirection(_constants.SORT_DIRECTIONS.DESC);
64 } else {
65 setSortDirection(_constants.SORT_DIRECTIONS.ASC);
66 }
67 } else {
68 setSortIndex(columnIndex);
69 setSortDirection(_constants.SORT_DIRECTIONS.DESC);
70 }
71 }
72
73 return [sortIndex, sortDirection, handleSort];
74}
75
76function Unstable_StatefulContainer(props) {
77 useDuplicateColumnTitleWarning(props.columns);
78
79 var _useSortParameters = useSortParameters(),
80 _useSortParameters2 = _slicedToArray(_useSortParameters, 3),
81 sortIndex = _useSortParameters2[0],
82 sortDirection = _useSortParameters2[1],
83 handleSort = _useSortParameters2[2];
84
85 var _React$useState5 = React.useState(props.initialFilters || new Map()),
86 _React$useState6 = _slicedToArray(_React$useState5, 2),
87 filters = _React$useState6[0],
88 setFilters = _React$useState6[1];
89
90 var _React$useState7 = React.useState(''),
91 _React$useState8 = _slicedToArray(_React$useState7, 2),
92 textQuery = _React$useState8[0],
93 setTextQuery = _React$useState8[1];
94
95 function handleFilterAdd(title, filterParams) {
96 filters.set(title, filterParams);
97
98 if (props.onFilterAdd) {
99 props.onFilterAdd(title, filterParams);
100 }
101
102 setFilters(new Map(filters));
103 }
104
105 function handleFilterRemove(title) {
106 filters.delete(title);
107
108 if (props.onFilterRemove) {
109 props.onFilterRemove(title);
110 }
111
112 setFilters(new Map(filters));
113 }
114
115 var _React$useState9 = React.useState(props.initialSelectedRowIds || new Set()),
116 _React$useState10 = _slicedToArray(_React$useState9, 2),
117 selectedRowIds = _React$useState10[0],
118 setSelectedRowIds = _React$useState10[1];
119
120 function handleSelectChange(next) {
121 setSelectedRowIds(next);
122 var selectionCallback = props.onSelectionChange;
123
124 if (selectionCallback) {
125 selectionCallback(props.rows.filter(function (r) {
126 return next.has(r.id);
127 }));
128 }
129 }
130
131 function handleSelectMany(incomingRows) {
132 // only adds rows that are visible in the table
133 handleSelectChange(new Set([].concat(_toConsumableArray(selectedRowIds), _toConsumableArray(incomingRows.map(function (r) {
134 return r.id;
135 })))));
136 }
137
138 function handleSelectNone() {
139 handleSelectChange(new Set());
140 }
141
142 function handleSelectOne(row) {
143 if (selectedRowIds.has(row.id)) {
144 selectedRowIds.delete(row.id);
145 } else {
146 selectedRowIds.add(row.id);
147 }
148
149 handleSelectChange(new Set(selectedRowIds));
150 }
151
152 var handleIncludedRowsChange = React.useCallback(function (rows) {
153 if (props.onIncludedRowsChange) {
154 props.onIncludedRowsChange(rows);
155 }
156 }, [props.onIncludedRowsChange]);
157 var handleRowHighlightChange = React.useCallback(function (rowIndex, row) {
158 if (props.onRowHighlightChange) {
159 props.onRowHighlightChange(rowIndex, row);
160 }
161 }, [props.rowHighlightIndex]);
162 return props.children({
163 filters: filters,
164 onFilterAdd: handleFilterAdd,
165 onFilterRemove: handleFilterRemove,
166 onIncludedRowsChange: handleIncludedRowsChange,
167 onRowHighlightChange: handleRowHighlightChange,
168 onSelectMany: handleSelectMany,
169 onSelectNone: handleSelectNone,
170 onSelectOne: handleSelectOne,
171 onSort: handleSort,
172 onTextQueryChange: setTextQuery,
173 resizableColumnWidths: Boolean(props.resizableColumnWidths),
174 rowHighlightIndex: props.rowHighlightIndex,
175 selectedRowIds: selectedRowIds,
176 sortIndex: sortIndex,
177 sortDirection: sortDirection,
178 textQuery: textQuery
179 });
180}
\No newline at end of file