@arcblock/ux 2.1.6 → 2.1.9
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/lib/Datatable/CustomToolbar.js +350 -0
- package/lib/Datatable/DatatableContext.js +47 -0
- package/lib/Datatable/TableSearch.js +98 -0
- package/lib/Datatable/index.js +338 -0
- package/lib/Datatable/utils.js +154 -0
- package/lib/Layout/dashboard/header.js +1 -1
- package/lib/Layout/dashboard/index.js +1 -1
- package/lib/index.js +8 -0
- package/package.json +5 -4
- package/src/Datatable/CustomToolbar.js +406 -0
- package/src/Datatable/DatatableContext.js +32 -0
- package/src/Datatable/TableSearch.js +130 -0
- package/src/Datatable/index.js +314 -0
- package/src/Datatable/utils.js +165 -0
- package/src/Layout/dashboard/header.js +1 -1
- package/src/Layout/dashboard/index.js +1 -1
- package/src/index.js +2 -0
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = CustomToolbar;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _muiDatatables = require("mui-datatables");
|
|
13
|
+
|
|
14
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
15
|
+
|
|
16
|
+
var _reactToPrint = _interopRequireWildcard(require("react-to-print"));
|
|
17
|
+
|
|
18
|
+
var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
|
|
19
|
+
|
|
20
|
+
var _Tooltip = _interopRequireDefault(require("@mui/material/Tooltip"));
|
|
21
|
+
|
|
22
|
+
var _CloudDownload = _interopRequireDefault(require("@mui/icons-material/CloudDownload"));
|
|
23
|
+
|
|
24
|
+
var _Print = _interopRequireDefault(require("@mui/icons-material/Print"));
|
|
25
|
+
|
|
26
|
+
var _ViewColumn = _interopRequireDefault(require("@mui/icons-material/ViewColumn"));
|
|
27
|
+
|
|
28
|
+
var _FilterList = _interopRequireDefault(require("@mui/icons-material/FilterList"));
|
|
29
|
+
|
|
30
|
+
var _Popover = _interopRequireDefault(require("@mui/material/Popover"));
|
|
31
|
+
|
|
32
|
+
var _MoreVert = _interopRequireDefault(require("@mui/icons-material/MoreVert"));
|
|
33
|
+
|
|
34
|
+
var _Menu = _interopRequireDefault(require("@mui/material/Menu"));
|
|
35
|
+
|
|
36
|
+
var _MenuItem = _interopRequireDefault(require("@mui/material/MenuItem"));
|
|
37
|
+
|
|
38
|
+
var _ListItemIcon = _interopRequireDefault(require("@mui/material/ListItemIcon"));
|
|
39
|
+
|
|
40
|
+
var _ListItemText = _interopRequireDefault(require("@mui/material/ListItemText"));
|
|
41
|
+
|
|
42
|
+
var _useMediaQuery = _interopRequireDefault(require("@mui/material/useMediaQuery"));
|
|
43
|
+
|
|
44
|
+
var _styles = require("@mui/material/styles");
|
|
45
|
+
|
|
46
|
+
var _LinearProgress = _interopRequireDefault(require("@mui/material/LinearProgress"));
|
|
47
|
+
|
|
48
|
+
var _utils = require("./utils");
|
|
49
|
+
|
|
50
|
+
var _TableSearch = _interopRequireDefault(require("./TableSearch"));
|
|
51
|
+
|
|
52
|
+
var _DatatableContext = require("./DatatableContext");
|
|
53
|
+
|
|
54
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
55
|
+
|
|
56
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
57
|
+
|
|
58
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && 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; }
|
|
59
|
+
|
|
60
|
+
function useMobile() {
|
|
61
|
+
const theme = (0, _styles.useTheme)();
|
|
62
|
+
return (0, _useMediaQuery.default)(theme.breakpoints.down('sm'));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function CustomToolbar(props) {
|
|
66
|
+
const [menuIconEl, setMenuIconEl] = (0, _react.useState)(null);
|
|
67
|
+
const moreBtn = (0, _react.useRef)(null);
|
|
68
|
+
const isMobile = useMobile();
|
|
69
|
+
const toolbarId = (0, _react.useRef)(Math.random().toString(32).slice(2));
|
|
70
|
+
const [searchOpened, setSearchOpened] = (0, _react.useState)(false);
|
|
71
|
+
const {
|
|
72
|
+
customButtons,
|
|
73
|
+
loading,
|
|
74
|
+
disabled
|
|
75
|
+
} = (0, _DatatableContext.useDatatableContext)();
|
|
76
|
+
const {
|
|
77
|
+
data,
|
|
78
|
+
options,
|
|
79
|
+
components,
|
|
80
|
+
columns,
|
|
81
|
+
filterList,
|
|
82
|
+
filterData,
|
|
83
|
+
filterUpdate,
|
|
84
|
+
resetFilters,
|
|
85
|
+
updateFilterByType,
|
|
86
|
+
toggleViewColumn,
|
|
87
|
+
updateColumns,
|
|
88
|
+
title,
|
|
89
|
+
searchText,
|
|
90
|
+
searchTextUpdate,
|
|
91
|
+
searchClose
|
|
92
|
+
} = props;
|
|
93
|
+
const customToolbarEle = options.customToolbar ? options.customToolbar(props) : '';
|
|
94
|
+
const {
|
|
95
|
+
search,
|
|
96
|
+
downloadCsv,
|
|
97
|
+
print,
|
|
98
|
+
viewColumns,
|
|
99
|
+
filterTable
|
|
100
|
+
} = options.textLabels.toolbar;
|
|
101
|
+
const hideSearch = options.search === false || options.search === 'false';
|
|
102
|
+
const hidePrint = options.print === false || options.print === 'false';
|
|
103
|
+
const TableFilterComponent = components.TableFilter || _muiDatatables.TableFilter;
|
|
104
|
+
const TableViewColComponent = components.TableViewCol || _muiDatatables.TableViewCol;
|
|
105
|
+
(0, _react.useEffect)(() => {
|
|
106
|
+
if (loading || disabled) {
|
|
107
|
+
setAllPopsEl({});
|
|
108
|
+
}
|
|
109
|
+
}, [loading, disabled]);
|
|
110
|
+
|
|
111
|
+
const printArea = func => {
|
|
112
|
+
return /*#__PURE__*/_react.default.createElement(_reactToPrint.default, {
|
|
113
|
+
content: () => props.tableRef()
|
|
114
|
+
}, /*#__PURE__*/_react.default.createElement(_reactToPrint.PrintContextConsumer, null, func));
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const getPopId = key => "toolbar-pop-".concat(toolbarId.current, "-").concat(key);
|
|
118
|
+
|
|
119
|
+
const defaultButtons = []; // download/viewColumns/filter button behaviours, rendered using custom button logic
|
|
120
|
+
|
|
121
|
+
if (!(options.download === false || options.download === 'false')) {
|
|
122
|
+
defaultButtons.push({
|
|
123
|
+
Icon: _CloudDownload.default,
|
|
124
|
+
title: downloadCsv,
|
|
125
|
+
onClick: () => {
|
|
126
|
+
(0, _utils.handleCSVDownload)(props);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (!(options.viewColumns === false || options.viewColumns === 'false')) {
|
|
132
|
+
defaultButtons.push({
|
|
133
|
+
Icon: _ViewColumn.default,
|
|
134
|
+
title: viewColumns,
|
|
135
|
+
|
|
136
|
+
popRender() {
|
|
137
|
+
return /*#__PURE__*/_react.default.createElement(TableViewColComponent, {
|
|
138
|
+
data: data,
|
|
139
|
+
columns: columns,
|
|
140
|
+
options: options,
|
|
141
|
+
onColumnUpdate: toggleViewColumn,
|
|
142
|
+
updateColumns: updateColumns,
|
|
143
|
+
components: components
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
if (!(options.filter === false || options.filter === 'false')) {
|
|
151
|
+
defaultButtons.push({
|
|
152
|
+
Icon: _FilterList.default,
|
|
153
|
+
title: filterTable,
|
|
154
|
+
|
|
155
|
+
popRender() {
|
|
156
|
+
return /*#__PURE__*/_react.default.createElement(TableFilterComponent, {
|
|
157
|
+
customFooter: options.customFilterDialogFooter,
|
|
158
|
+
columns: columns,
|
|
159
|
+
options: options,
|
|
160
|
+
filterList: filterList,
|
|
161
|
+
filterData: filterData,
|
|
162
|
+
onFilterUpdate: filterUpdate,
|
|
163
|
+
onFilterReset: resetFilters,
|
|
164
|
+
updateFilterByType: updateFilterByType,
|
|
165
|
+
components: components
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
const showMore = [!hidePrint, ...defaultButtons, ...customButtons].filter(e => !!e).length > 1 && isMobile;
|
|
173
|
+
const allPops = [];
|
|
174
|
+
const [allPopsEl, setAllPopsEl] = (0, _react.useState)({}); // Large screens show the toolbar buttons directly, small screens show the drop-down menu style buttons
|
|
175
|
+
// The right-hand button of the form toolbar in desktop mode
|
|
176
|
+
|
|
177
|
+
const toolbarButtons = [...defaultButtons, ...customButtons].map((e, index) => {
|
|
178
|
+
if ( /*#__PURE__*/(0, _react.isValidElement)(e)) {
|
|
179
|
+
return e;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
const popId = getPopId(index);
|
|
183
|
+
|
|
184
|
+
if (e.Icon) {
|
|
185
|
+
const {
|
|
186
|
+
Icon,
|
|
187
|
+
popRender
|
|
188
|
+
} = e; // When popRender is present, clicking the button will bubble up the content returned by the popRender
|
|
189
|
+
|
|
190
|
+
if (popRender) {
|
|
191
|
+
allPops.push( /*#__PURE__*/_react.default.createElement(_Popover.default, {
|
|
192
|
+
open: !!allPopsEl[popId],
|
|
193
|
+
anchorEl: () => allPopsEl[popId],
|
|
194
|
+
onClose: () => {
|
|
195
|
+
setAllPopsEl({});
|
|
196
|
+
},
|
|
197
|
+
key: popId,
|
|
198
|
+
anchorOrigin: {
|
|
199
|
+
vertical: 'bottom',
|
|
200
|
+
horizontal: 'right'
|
|
201
|
+
}
|
|
202
|
+
}, /*#__PURE__*/_react.default.createElement("div", null, popRender())));
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
return /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
|
|
206
|
+
title: e.title,
|
|
207
|
+
key: popId
|
|
208
|
+
}, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
209
|
+
"data-testid": "".concat(e.title, "-iconButton"),
|
|
210
|
+
id: "btn-".concat(popId),
|
|
211
|
+
"aria-label": e.title,
|
|
212
|
+
onClick: () => {
|
|
213
|
+
if (e.onClick) {
|
|
214
|
+
e.onClick();
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
if (popRender) {
|
|
218
|
+
// On the large screen, the bubble is positioned at the corresponding button
|
|
219
|
+
setAllPopsEl({
|
|
220
|
+
[popId]: document.getElementById("btn-".concat(popId))
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}, /*#__PURE__*/_react.default.createElement(Icon, null)));
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
return e;
|
|
228
|
+
}); // The toolbar menu in the mobile to replace toolbarButtons
|
|
229
|
+
|
|
230
|
+
const menuItems = [...defaultButtons, ...customButtons].map((e, index) => {
|
|
231
|
+
const popId = getPopId(index);
|
|
232
|
+
let content;
|
|
233
|
+
|
|
234
|
+
if ( /*#__PURE__*/(0, _react.isValidElement)(e)) {
|
|
235
|
+
content = e;
|
|
236
|
+
} else if (e.Icon) {
|
|
237
|
+
const {
|
|
238
|
+
Icon
|
|
239
|
+
} = e;
|
|
240
|
+
content = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(Icon, {
|
|
241
|
+
fontSize: "small"
|
|
242
|
+
})), /*#__PURE__*/_react.default.createElement(_ListItemText.default, null, e.title));
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
|
|
246
|
+
key: popId,
|
|
247
|
+
onClick: () => {
|
|
248
|
+
setMenuIconEl(null);
|
|
249
|
+
|
|
250
|
+
if (e.onClick) {
|
|
251
|
+
e.onClick();
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
if (e.popRender) {
|
|
255
|
+
// On the small screen, the bubbles are positioned at the three dot buttons
|
|
256
|
+
setAllPopsEl({
|
|
257
|
+
[popId]: moreBtn.current
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}, content);
|
|
262
|
+
});
|
|
263
|
+
return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(Container, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
264
|
+
className: "custom-toobar-title ".concat(isMobile && searchOpened && /*#__PURE__*/(0, _react.isValidElement)(title) ? 'toobar-title-hidden' : '')
|
|
265
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
266
|
+
className: "custom-toobar-title-inner"
|
|
267
|
+
}, /*#__PURE__*/_react.default.createElement("span", null, title))), /*#__PURE__*/_react.default.createElement("div", {
|
|
268
|
+
className: "custom-toobar-btns ".concat(loading || disabled ? 'toobar-btns-disabled' : '')
|
|
269
|
+
}, !hideSearch && /*#__PURE__*/_react.default.createElement(_TableSearch.default, {
|
|
270
|
+
search: search,
|
|
271
|
+
options: options,
|
|
272
|
+
searchText: searchText,
|
|
273
|
+
searchTextUpdate: searchTextUpdate,
|
|
274
|
+
searchClose: searchClose,
|
|
275
|
+
onSearchOpen: setSearchOpened
|
|
276
|
+
}), !showMore && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !hidePrint && printArea(_ref => {
|
|
277
|
+
let {
|
|
278
|
+
handlePrint
|
|
279
|
+
} = _ref;
|
|
280
|
+
return /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
|
|
281
|
+
title: print
|
|
282
|
+
}, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
283
|
+
"data-testid": "".concat(print, "-iconButton"),
|
|
284
|
+
"aria-label": print,
|
|
285
|
+
disabled: options.print === 'disabled',
|
|
286
|
+
onClick: handlePrint
|
|
287
|
+
}, /*#__PURE__*/_react.default.createElement(_Print.default, null))));
|
|
288
|
+
}), toolbarButtons), showMore && /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
289
|
+
ref: moreBtn,
|
|
290
|
+
"aria-haspopup": "true",
|
|
291
|
+
"aria-expanded": menuIconEl ? 'true' : undefined,
|
|
292
|
+
onClick: event => setMenuIconEl(event.currentTarget),
|
|
293
|
+
style: {
|
|
294
|
+
flexShrink: 0
|
|
295
|
+
}
|
|
296
|
+
}, /*#__PURE__*/_react.default.createElement(_MoreVert.default, null))), customToolbarEle), /*#__PURE__*/_react.default.createElement(_Menu.default, {
|
|
297
|
+
anchorEl: menuIconEl,
|
|
298
|
+
open: !!menuIconEl,
|
|
299
|
+
onClose: () => setMenuIconEl(null),
|
|
300
|
+
MenuListProps: {
|
|
301
|
+
'aria-labelledby': 'more-button'
|
|
302
|
+
}
|
|
303
|
+
}, !hidePrint && printArea(_ref2 => {
|
|
304
|
+
let {
|
|
305
|
+
handlePrint
|
|
306
|
+
} = _ref2;
|
|
307
|
+
return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
|
|
308
|
+
onClick: () => {
|
|
309
|
+
setMenuIconEl(null);
|
|
310
|
+
handlePrint();
|
|
311
|
+
}
|
|
312
|
+
}, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Print.default, {
|
|
313
|
+
fontSize: "small"
|
|
314
|
+
})), /*#__PURE__*/_react.default.createElement(_ListItemText.default, null, print));
|
|
315
|
+
}), menuItems), allPops.map((e, index) => /*#__PURE__*/_react.default.createElement("div", {
|
|
316
|
+
key: getPopId(index)
|
|
317
|
+
}, e)), loading && /*#__PURE__*/_react.default.createElement(_LinearProgress.default, null));
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
CustomToolbar.propTypes = {
|
|
321
|
+
data: _propTypes.default.array,
|
|
322
|
+
options: _propTypes.default.object.isRequired,
|
|
323
|
+
components: _propTypes.default.object,
|
|
324
|
+
columns: _propTypes.default.array.isRequired,
|
|
325
|
+
filterList: _propTypes.default.array,
|
|
326
|
+
filterData: _propTypes.default.array,
|
|
327
|
+
filterUpdate: _propTypes.default.func.isRequired,
|
|
328
|
+
resetFilters: _propTypes.default.func.isRequired,
|
|
329
|
+
updateFilterByType: _propTypes.default.func.isRequired,
|
|
330
|
+
toggleViewColumn: _propTypes.default.func.isRequired,
|
|
331
|
+
updateColumns: _propTypes.default.func.isRequired,
|
|
332
|
+
title: _propTypes.default.any,
|
|
333
|
+
searchText: _propTypes.default.any,
|
|
334
|
+
searchTextUpdate: _propTypes.default.func.isRequired,
|
|
335
|
+
searchClose: _propTypes.default.func.isRequired,
|
|
336
|
+
tableRef: _propTypes.default.func.isRequired
|
|
337
|
+
};
|
|
338
|
+
CustomToolbar.defaultProps = {
|
|
339
|
+
data: [],
|
|
340
|
+
components: {},
|
|
341
|
+
filterList: [],
|
|
342
|
+
filterData: [],
|
|
343
|
+
title: '',
|
|
344
|
+
searchText: null
|
|
345
|
+
};
|
|
346
|
+
|
|
347
|
+
const Container = _styledComponents.default.div.withConfig({
|
|
348
|
+
displayName: "CustomToolbar__Container",
|
|
349
|
+
componentId: "sc-cvz3dp-0"
|
|
350
|
+
})(["display:flex;align-items:center;height:56px;.custom-toobar-title{position:relative;flex:1;font-size:18px;font-weight:800;height:56px;transition:all ease 0.3s;&-inner{line-height:56px;width:100%;height:56px;position:absolute;left:0;top:0;span{display:inline-block;max-width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}}}.custom-toobar-btns{display:flex;justify-content:center;align-items:center;&.toobar-btns-disabled{position:relative;opacity:0.5;&:after{position:absolute;display:block;z-index:2;width:100%;height:100%;left:0;top:0;content:'';cursor:not-allowed;}}}.toobar-title-hidden{opacity:0;cursor:none;}"]);
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.DatatableProvide = void 0;
|
|
7
|
+
exports.useDatatableContext = useDatatableContext;
|
|
8
|
+
|
|
9
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
10
|
+
|
|
11
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
12
|
+
|
|
13
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && 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; }
|
|
14
|
+
|
|
15
|
+
const DatatableContext = /*#__PURE__*/(0, _react.createContext)({});
|
|
16
|
+
const {
|
|
17
|
+
Provider
|
|
18
|
+
} = DatatableContext; // eslint-disable-next-line react/prop-types
|
|
19
|
+
|
|
20
|
+
const DatatableProvide = _ref => {
|
|
21
|
+
let {
|
|
22
|
+
children
|
|
23
|
+
} = _ref;
|
|
24
|
+
const [customButtons, setCustomButtons] = (0, _react.useState)([]);
|
|
25
|
+
const [loading, setLoading] = (0, _react.useState)(false);
|
|
26
|
+
const [disabled, setDisabled] = (0, _react.useState)(false);
|
|
27
|
+
const [filterLabel, setFilterLabel] = (0, _react.useState)('Filter');
|
|
28
|
+
const value = {
|
|
29
|
+
customButtons,
|
|
30
|
+
setCustomButtons,
|
|
31
|
+
filterLabel,
|
|
32
|
+
setFilterLabel,
|
|
33
|
+
loading,
|
|
34
|
+
setLoading,
|
|
35
|
+
disabled,
|
|
36
|
+
setDisabled
|
|
37
|
+
};
|
|
38
|
+
return /*#__PURE__*/_react.default.createElement(Provider, {
|
|
39
|
+
value: value
|
|
40
|
+
}, children);
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
exports.DatatableProvide = DatatableProvide;
|
|
44
|
+
|
|
45
|
+
function useDatatableContext() {
|
|
46
|
+
return (0, _react.useContext)(DatatableContext);
|
|
47
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = TableSearch;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _IconButton = _interopRequireDefault(require("@mui/material/IconButton"));
|
|
13
|
+
|
|
14
|
+
var _Tooltip = _interopRequireDefault(require("@mui/material/Tooltip"));
|
|
15
|
+
|
|
16
|
+
var _Search = _interopRequireDefault(require("@mui/icons-material/Search"));
|
|
17
|
+
|
|
18
|
+
var _TextField = _interopRequireDefault(require("@mui/material/TextField"));
|
|
19
|
+
|
|
20
|
+
var _Clear = _interopRequireDefault(require("@mui/icons-material/Clear"));
|
|
21
|
+
|
|
22
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
23
|
+
|
|
24
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
25
|
+
|
|
26
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
27
|
+
|
|
28
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && 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; }
|
|
29
|
+
|
|
30
|
+
function TableSearch(_ref) {
|
|
31
|
+
let {
|
|
32
|
+
search,
|
|
33
|
+
options,
|
|
34
|
+
searchText,
|
|
35
|
+
searchTextUpdate,
|
|
36
|
+
searchClose,
|
|
37
|
+
onSearchOpen
|
|
38
|
+
} = _ref;
|
|
39
|
+
const [inputMode, setInputMode] = (0, _react.useState)(false);
|
|
40
|
+
|
|
41
|
+
const clickSearchIcon = () => {
|
|
42
|
+
setInputMode(true);
|
|
43
|
+
onSearchOpen(true);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const onChange = event => {
|
|
47
|
+
searchTextUpdate(event.currentTarget.value);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const clickClose = () => {
|
|
51
|
+
setInputMode(false);
|
|
52
|
+
searchClose();
|
|
53
|
+
onSearchOpen(false);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
return /*#__PURE__*/_react.default.createElement(Container, null, inputMode ? /*#__PURE__*/_react.default.createElement("div", {
|
|
57
|
+
className: "toolbar-search-icon-placeholder"
|
|
58
|
+
}, /*#__PURE__*/_react.default.createElement(_Search.default, null)) : /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
|
|
59
|
+
title: search,
|
|
60
|
+
disableFocusListener: true
|
|
61
|
+
}, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
62
|
+
"aria-label": search,
|
|
63
|
+
"data-testid": "".concat(search, "-iconButton"),
|
|
64
|
+
disabled: options.search === 'disabled',
|
|
65
|
+
onClick: clickSearchIcon
|
|
66
|
+
}, /*#__PURE__*/_react.default.createElement(_Search.default, null))), /*#__PURE__*/_react.default.createElement("div", {
|
|
67
|
+
className: "toolbar-search-area ".concat(inputMode ? 'toolbar-btn-show' : '')
|
|
68
|
+
}, inputMode && /*#__PURE__*/_react.default.createElement(_TextField.default, {
|
|
69
|
+
variant: "standard",
|
|
70
|
+
spacing: 2,
|
|
71
|
+
onChange: onChange,
|
|
72
|
+
value: searchText || '',
|
|
73
|
+
autoFocus: true
|
|
74
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
75
|
+
className: "toolbar-search-close ".concat(inputMode ? 'toolbar-btn-show' : '')
|
|
76
|
+
}, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
77
|
+
onClick: clickClose
|
|
78
|
+
}, /*#__PURE__*/_react.default.createElement(_Clear.default, null))));
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
TableSearch.propTypes = {
|
|
82
|
+
search: _propTypes.default.string,
|
|
83
|
+
searchText: _propTypes.default.string,
|
|
84
|
+
onSearchOpen: _propTypes.default.func,
|
|
85
|
+
options: _propTypes.default.object.isRequired,
|
|
86
|
+
searchTextUpdate: _propTypes.default.func.isRequired,
|
|
87
|
+
searchClose: _propTypes.default.func.isRequired
|
|
88
|
+
};
|
|
89
|
+
TableSearch.defaultProps = {
|
|
90
|
+
search: '',
|
|
91
|
+
searchText: '',
|
|
92
|
+
onSearchOpen: () => {}
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
const Container = _styledComponents.default.div.withConfig({
|
|
96
|
+
displayName: "TableSearch__Container",
|
|
97
|
+
componentId: "sc-43ylue-0"
|
|
98
|
+
})(["display:flex;align-items:center;.toolbar-search-area{width:0;transition:all ease 0.3s;overflow:hidden;.MuiFormControl-root{width:inherit;margin:0 12px;}&.toolbar-btn-show{width:260px;padding-left:8px;", "{width:200px;}", "{width:180px;}&.small-textfield{width:200px;}}}.toolbar-search-close{width:0;transition:all ease 0.3s;overflow:hidden;&.toolbar-btn-show{width:40px;}}.toolbar-search-icon-placeholder{display:flex;justify-content:center;align-items:center;width:40px;height:40px;}"], props => props.theme.breakpoints.down('md'), props => props.theme.breakpoints.down('sm'));
|