@arcblock/ux 2.1.4 → 2.1.7
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/Blocklet/blocklet.js +1 -1
- package/lib/Datatable/CustomToolbar.js +330 -0
- package/lib/Datatable/TableSearch.js +100 -0
- package/lib/Datatable/index.js +185 -0
- package/lib/Datatable/utils.js +154 -0
- package/lib/index.js +8 -0
- package/package.json +5 -4
- package/src/Blocklet/blocklet.js +6 -7
- package/src/Datatable/CustomToolbar.js +371 -0
- package/src/Datatable/TableSearch.js +127 -0
- package/src/Datatable/index.js +145 -0
- package/src/Datatable/utils.js +165 -0
- package/src/index.js +2 -0
package/lib/Blocklet/blocklet.js
CHANGED
|
@@ -36,7 +36,7 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
|
|
|
36
36
|
const Div = _styledComponents.default.div.withConfig({
|
|
37
37
|
displayName: "blocklet__Div",
|
|
38
38
|
componentId: "sc-atxvkd-0"
|
|
39
|
-
})(["&.arcblock-blocklet{padding:
|
|
39
|
+
})(["&.arcblock-blocklet{padding:", " ", " 0 ", ";}.arcblock-blocklet__content{cursor:pointer;display:flex;", "{align-items:center;}}.arcblock-blocklet__cover{width:64px;height:64px;margin-right:", ";overflow:hidden;border-radius:12px;transform:translateZ(0);", "{width:80px;height:80px;margin-bottom:12px;}}.arcblock-blocklet__button--hover{&:not(.Mui-disabled){position:relative;z-index:1;&::before{content:'';position:absolute;height:100%;width:100%;left:0;top:0;transition:opacity 0.3s;}&:hover::before{opacity:0;}&::after{content:'';position:absolute;height:100%;width:100%;background-color:", ";transform:scale(0.1);opacity:0;z-index:-1;transition:transform 0.3s,opacity 0.3s,background-color 0.3s;}&:hover::after{opacity:1;transform-origin:center;transform:scale(1);}}&:not(.Mui-disabled){background-color:transparent !important;color:", ";}&:not(.Mui-disabled){&:hover{color:", ";}}}.arcblock-blocklet__info{flex:1;overflow:hidden;border-bottom:1px solid ", ";padding-bottom:", ";}.arcblock-blocklet__text{height:57px;overflow:hidden;}.arcblock-blocklet__title{margin:0;font-size:16px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.arcblock-blocklet__describe{margin-top:", ";color:", ";font-size:14px;font-weight:500;line-height:17px;max-height:34px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word;}.arcblock-blocklet__version{color:", ";font-size:12px;}"], props => props.theme.spacing(2), props => props.theme.spacing(2), props => props.theme.spacing(2), props => props.theme.breakpoints.up('sm'), props => props.theme.spacing(2), props => props.theme.breakpoints.up('sm'), props => props.theme.palette.primary.main, props => props.theme.palette.primary.main, props => props.theme.palette.common.white, props => props.theme.palette.divider, props => props.theme.spacing(2), props => props.theme.spacing(0.5), props => props.theme.palette.grey[600], props => props.theme.palette.grey[600]);
|
|
40
40
|
|
|
41
41
|
function BlockletStore(_ref) {
|
|
42
42
|
let {
|
|
@@ -0,0 +1,330 @@
|
|
|
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 _utils = require("./utils");
|
|
47
|
+
|
|
48
|
+
var _TableSearch = _interopRequireDefault(require("./TableSearch"));
|
|
49
|
+
|
|
50
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
51
|
+
|
|
52
|
+
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); }
|
|
53
|
+
|
|
54
|
+
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; }
|
|
55
|
+
|
|
56
|
+
function useMobile() {
|
|
57
|
+
const theme = (0, _styles.useTheme)();
|
|
58
|
+
return (0, _useMediaQuery.default)(theme.breakpoints.down('sm'));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function CustomToolbar(props) {
|
|
62
|
+
const [menuIconEl, setMenuIconEl] = (0, _react.useState)(null);
|
|
63
|
+
const moreBtn = (0, _react.useRef)(null);
|
|
64
|
+
const isMobile = useMobile();
|
|
65
|
+
const toolbarId = (0, _react.useRef)(Math.random().toString(32).slice(2));
|
|
66
|
+
const {
|
|
67
|
+
data,
|
|
68
|
+
options,
|
|
69
|
+
components,
|
|
70
|
+
columns,
|
|
71
|
+
filterList,
|
|
72
|
+
filterData,
|
|
73
|
+
filterUpdate,
|
|
74
|
+
resetFilters,
|
|
75
|
+
updateFilterByType,
|
|
76
|
+
toggleViewColumn,
|
|
77
|
+
updateColumns,
|
|
78
|
+
title,
|
|
79
|
+
searchText,
|
|
80
|
+
searchTextUpdate,
|
|
81
|
+
searchClose,
|
|
82
|
+
customButtons
|
|
83
|
+
} = props;
|
|
84
|
+
const {
|
|
85
|
+
search,
|
|
86
|
+
downloadCsv,
|
|
87
|
+
print,
|
|
88
|
+
viewColumns,
|
|
89
|
+
filterTable
|
|
90
|
+
} = options.textLabels.toolbar;
|
|
91
|
+
const hideSearch = options.search === false || options.search === 'false';
|
|
92
|
+
const hidePrint = options.print === false || options.print === 'false';
|
|
93
|
+
const TableFilterComponent = components.TableFilter || _muiDatatables.TableFilter;
|
|
94
|
+
const TableViewColComponent = components.TableViewCol || _muiDatatables.TableViewCol;
|
|
95
|
+
|
|
96
|
+
const printArea = func => {
|
|
97
|
+
return /*#__PURE__*/_react.default.createElement(_reactToPrint.default, {
|
|
98
|
+
content: () => props.tableRef()
|
|
99
|
+
}, /*#__PURE__*/_react.default.createElement(_reactToPrint.PrintContextConsumer, null, func));
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
const getPopId = key => "toolbar-pop-".concat(toolbarId.current, "-").concat(key);
|
|
103
|
+
|
|
104
|
+
const defaultButtons = [];
|
|
105
|
+
|
|
106
|
+
if (!(options.download === false || options.download === 'false')) {
|
|
107
|
+
defaultButtons.push({
|
|
108
|
+
Icon: _CloudDownload.default,
|
|
109
|
+
title: downloadCsv,
|
|
110
|
+
onClick: () => {
|
|
111
|
+
(0, _utils.handleCSVDownload)(props);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
if (!(options.viewColumns === false || options.viewColumns === 'false')) {
|
|
117
|
+
defaultButtons.push({
|
|
118
|
+
Icon: _ViewColumn.default,
|
|
119
|
+
title: viewColumns,
|
|
120
|
+
|
|
121
|
+
popRender() {
|
|
122
|
+
return /*#__PURE__*/_react.default.createElement(TableViewColComponent, {
|
|
123
|
+
data: data,
|
|
124
|
+
columns: columns,
|
|
125
|
+
options: options,
|
|
126
|
+
onColumnUpdate: toggleViewColumn,
|
|
127
|
+
updateColumns: updateColumns,
|
|
128
|
+
components: components
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
if (!(options.filter === false || options.filter === 'false')) {
|
|
136
|
+
defaultButtons.push({
|
|
137
|
+
Icon: _FilterList.default,
|
|
138
|
+
title: filterTable,
|
|
139
|
+
|
|
140
|
+
popRender() {
|
|
141
|
+
return /*#__PURE__*/_react.default.createElement(TableFilterComponent, {
|
|
142
|
+
customFooter: options.customFilterDialogFooter,
|
|
143
|
+
columns: columns,
|
|
144
|
+
options: options,
|
|
145
|
+
filterList: filterList,
|
|
146
|
+
filterData: filterData,
|
|
147
|
+
onFilterUpdate: filterUpdate,
|
|
148
|
+
onFilterReset: resetFilters,
|
|
149
|
+
updateFilterByType: updateFilterByType,
|
|
150
|
+
components: components
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
const showMore = [!hidePrint, ...defaultButtons, ...customButtons].filter(e => !!e).length > 1 && isMobile;
|
|
158
|
+
const allPops = [];
|
|
159
|
+
const [allPopsEl, setAllPopsEl] = (0, _react.useState)({});
|
|
160
|
+
const toolbarButtons = [...defaultButtons, ...customButtons].map((e, index) => {
|
|
161
|
+
if ( /*#__PURE__*/(0, _react.isValidElement)(e)) {
|
|
162
|
+
return e;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
const popId = getPopId(index);
|
|
166
|
+
|
|
167
|
+
if (e.Icon) {
|
|
168
|
+
const {
|
|
169
|
+
Icon,
|
|
170
|
+
popRender
|
|
171
|
+
} = e;
|
|
172
|
+
|
|
173
|
+
if (popRender) {
|
|
174
|
+
allPops.push( /*#__PURE__*/_react.default.createElement(_Popover.default, {
|
|
175
|
+
open: !!allPopsEl[popId],
|
|
176
|
+
anchorEl: () => allPopsEl[popId],
|
|
177
|
+
onClose: () => {
|
|
178
|
+
setAllPopsEl({});
|
|
179
|
+
},
|
|
180
|
+
key: popId,
|
|
181
|
+
anchorOrigin: {
|
|
182
|
+
vertical: 'bottom',
|
|
183
|
+
horizontal: 'right'
|
|
184
|
+
}
|
|
185
|
+
}, /*#__PURE__*/_react.default.createElement("div", null, popRender())));
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
|
|
189
|
+
title: e.title,
|
|
190
|
+
key: popId
|
|
191
|
+
}, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
192
|
+
"data-testid": "".concat(e.title, "-iconButton"),
|
|
193
|
+
id: "btn-".concat(popId),
|
|
194
|
+
"aria-label": e.title,
|
|
195
|
+
onClick: () => {
|
|
196
|
+
if (e.onClick) {
|
|
197
|
+
e.onClick();
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
if (popRender) {
|
|
201
|
+
setAllPopsEl({
|
|
202
|
+
[popId]: document.getElementById("btn-".concat(popId))
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}, /*#__PURE__*/_react.default.createElement(Icon, null)));
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
return e;
|
|
210
|
+
});
|
|
211
|
+
const menuItems = [...defaultButtons, ...customButtons].map((e, index) => {
|
|
212
|
+
const popId = getPopId(index);
|
|
213
|
+
let content;
|
|
214
|
+
|
|
215
|
+
if ( /*#__PURE__*/(0, _react.isValidElement)(e)) {
|
|
216
|
+
content = e;
|
|
217
|
+
} else if (e.Icon) {
|
|
218
|
+
const {
|
|
219
|
+
Icon
|
|
220
|
+
} = e;
|
|
221
|
+
content = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(Icon, {
|
|
222
|
+
fontSize: "small"
|
|
223
|
+
})), /*#__PURE__*/_react.default.createElement(_ListItemText.default, null, e.title));
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
|
|
227
|
+
key: popId,
|
|
228
|
+
onClick: () => {
|
|
229
|
+
setMenuIconEl(null);
|
|
230
|
+
|
|
231
|
+
if (e.onClick) {
|
|
232
|
+
e.onClick();
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
if (e.popRender) {
|
|
236
|
+
setAllPopsEl({
|
|
237
|
+
[popId]: moreBtn.current
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}, content);
|
|
242
|
+
});
|
|
243
|
+
return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(Container, null, /*#__PURE__*/_react.default.createElement("div", {
|
|
244
|
+
className: "custom-toobar-title"
|
|
245
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
246
|
+
className: "custom-toobar-title-inner"
|
|
247
|
+
}, /*#__PURE__*/_react.default.createElement("span", null, title))), /*#__PURE__*/_react.default.createElement("div", {
|
|
248
|
+
className: "custom-toobar-right"
|
|
249
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
250
|
+
className: "custom-toobar-btns"
|
|
251
|
+
}, !hideSearch && /*#__PURE__*/_react.default.createElement(_TableSearch.default, {
|
|
252
|
+
search: search,
|
|
253
|
+
options: options,
|
|
254
|
+
searchText: searchText,
|
|
255
|
+
searchTextUpdate: searchTextUpdate,
|
|
256
|
+
searchClose: searchClose,
|
|
257
|
+
isMobile: isMobile
|
|
258
|
+
}), !showMore && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !hidePrint && printArea(_ref => {
|
|
259
|
+
let {
|
|
260
|
+
handlePrint
|
|
261
|
+
} = _ref;
|
|
262
|
+
return /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
|
|
263
|
+
title: print
|
|
264
|
+
}, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
265
|
+
"data-testid": "".concat(print, "-iconButton"),
|
|
266
|
+
"aria-label": print,
|
|
267
|
+
disabled: options.print === 'disabled',
|
|
268
|
+
onClick: handlePrint
|
|
269
|
+
}, /*#__PURE__*/_react.default.createElement(_Print.default, null))));
|
|
270
|
+
}), toolbarButtons), showMore && /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
271
|
+
ref: moreBtn,
|
|
272
|
+
"aria-haspopup": "true",
|
|
273
|
+
"aria-expanded": menuIconEl ? 'true' : undefined,
|
|
274
|
+
onClick: event => setMenuIconEl(event.currentTarget)
|
|
275
|
+
}, /*#__PURE__*/_react.default.createElement(_MoreVert.default, null))))), /*#__PURE__*/_react.default.createElement(_Menu.default, {
|
|
276
|
+
anchorEl: menuIconEl,
|
|
277
|
+
open: !!menuIconEl,
|
|
278
|
+
onClose: () => setMenuIconEl(null),
|
|
279
|
+
MenuListProps: {
|
|
280
|
+
'aria-labelledby': 'more-button'
|
|
281
|
+
}
|
|
282
|
+
}, !hidePrint && printArea(_ref2 => {
|
|
283
|
+
let {
|
|
284
|
+
handlePrint
|
|
285
|
+
} = _ref2;
|
|
286
|
+
return /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
|
|
287
|
+
onClick: () => {
|
|
288
|
+
setMenuIconEl(null);
|
|
289
|
+
handlePrint();
|
|
290
|
+
}
|
|
291
|
+
}, /*#__PURE__*/_react.default.createElement(_ListItemIcon.default, null, /*#__PURE__*/_react.default.createElement(_Print.default, {
|
|
292
|
+
fontSize: "small"
|
|
293
|
+
})), /*#__PURE__*/_react.default.createElement(_ListItemText.default, null, print));
|
|
294
|
+
}), menuItems), allPops.map((e, index) => /*#__PURE__*/_react.default.createElement("div", {
|
|
295
|
+
key: getPopId(index)
|
|
296
|
+
}, e)));
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
CustomToolbar.propTypes = {
|
|
300
|
+
data: _propTypes.default.array,
|
|
301
|
+
options: _propTypes.default.object.isRequired,
|
|
302
|
+
components: _propTypes.default.object,
|
|
303
|
+
columns: _propTypes.default.array.isRequired,
|
|
304
|
+
filterList: _propTypes.default.array,
|
|
305
|
+
filterData: _propTypes.default.array,
|
|
306
|
+
filterUpdate: _propTypes.default.func.isRequired,
|
|
307
|
+
resetFilters: _propTypes.default.func.isRequired,
|
|
308
|
+
updateFilterByType: _propTypes.default.func.isRequired,
|
|
309
|
+
toggleViewColumn: _propTypes.default.func.isRequired,
|
|
310
|
+
updateColumns: _propTypes.default.func.isRequired,
|
|
311
|
+
title: _propTypes.default.string,
|
|
312
|
+
searchText: _propTypes.default.any,
|
|
313
|
+
searchTextUpdate: _propTypes.default.func.isRequired,
|
|
314
|
+
searchClose: _propTypes.default.func.isRequired,
|
|
315
|
+
tableRef: _propTypes.default.func.isRequired,
|
|
316
|
+
customButtons: _propTypes.default.array.isRequired
|
|
317
|
+
};
|
|
318
|
+
CustomToolbar.defaultProps = {
|
|
319
|
+
data: [],
|
|
320
|
+
components: {},
|
|
321
|
+
filterList: [],
|
|
322
|
+
filterData: [],
|
|
323
|
+
title: '',
|
|
324
|
+
searchText: null
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
const Container = _styledComponents.default.div.withConfig({
|
|
328
|
+
displayName: "CustomToolbar__Container",
|
|
329
|
+
componentId: "sc-cvz3dp-0"
|
|
330
|
+
})(["display:flex;align-items:center;height:56px;.custom-toobar{&-title{position:relative;flex:1;font-size:18px;font-weight:800;height:56px;&-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;}}}&-right{display:flex;margin-left:auto;}&-btns{display:flex;justify-content:center;align-items:center;}}"]);
|
|
@@ -0,0 +1,100 @@
|
|
|
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
|
+
isMobile,
|
|
38
|
+
onSearchOpen
|
|
39
|
+
} = _ref;
|
|
40
|
+
const [inputMode, setInputMode] = (0, _react.useState)(false);
|
|
41
|
+
|
|
42
|
+
const clickSearchIcon = () => {
|
|
43
|
+
setInputMode(true);
|
|
44
|
+
onSearchOpen(true);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
const onChange = event => {
|
|
48
|
+
searchTextUpdate(event.currentTarget.value);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
const clickClose = () => {
|
|
52
|
+
setInputMode(false);
|
|
53
|
+
searchClose();
|
|
54
|
+
onSearchOpen(false);
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
return /*#__PURE__*/_react.default.createElement(Container, null, inputMode ? /*#__PURE__*/_react.default.createElement("div", {
|
|
58
|
+
className: "toolbar-search-icon-placeholder-"
|
|
59
|
+
}, /*#__PURE__*/_react.default.createElement(_Search.default, null)) : /*#__PURE__*/_react.default.createElement(_Tooltip.default, {
|
|
60
|
+
title: search,
|
|
61
|
+
disableFocusListener: true
|
|
62
|
+
}, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
63
|
+
"aria-label": search,
|
|
64
|
+
"data-testid": "".concat(search, "-iconButton"),
|
|
65
|
+
disabled: options.search === 'disabled',
|
|
66
|
+
onClick: clickSearchIcon
|
|
67
|
+
}, /*#__PURE__*/_react.default.createElement(_Search.default, null))), /*#__PURE__*/_react.default.createElement("div", {
|
|
68
|
+
className: "toolbar-search-area ".concat(inputMode ? 'toolbar-btn-show' : '', " ").concat(isMobile ? 'small-textfield' : '')
|
|
69
|
+
}, inputMode && /*#__PURE__*/_react.default.createElement(_TextField.default, {
|
|
70
|
+
variant: "standard",
|
|
71
|
+
spacing: 2,
|
|
72
|
+
onChange: onChange,
|
|
73
|
+
value: searchText || '',
|
|
74
|
+
autoFocus: true
|
|
75
|
+
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
76
|
+
className: "toolbar-search-close ".concat(inputMode ? 'toolbar-btn-show' : '')
|
|
77
|
+
}, /*#__PURE__*/_react.default.createElement(_IconButton.default, {
|
|
78
|
+
onClick: clickClose
|
|
79
|
+
}, /*#__PURE__*/_react.default.createElement(_Clear.default, null))));
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
TableSearch.propTypes = {
|
|
83
|
+
search: _propTypes.default.string,
|
|
84
|
+
searchText: _propTypes.default.string,
|
|
85
|
+
onSearchOpen: _propTypes.default.func,
|
|
86
|
+
options: _propTypes.default.object.isRequired,
|
|
87
|
+
searchTextUpdate: _propTypes.default.func.isRequired,
|
|
88
|
+
searchClose: _propTypes.default.func.isRequired,
|
|
89
|
+
isMobile: _propTypes.default.bool.isRequired
|
|
90
|
+
};
|
|
91
|
+
TableSearch.defaultProps = {
|
|
92
|
+
search: '',
|
|
93
|
+
searchText: '',
|
|
94
|
+
onSearchOpen: () => {}
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
const Container = _styledComponents.default.div.withConfig({
|
|
98
|
+
displayName: "TableSearch__Container",
|
|
99
|
+
componentId: "sc-43ylue-0"
|
|
100
|
+
})(["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;&.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;}"]);
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = Datatable;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
11
|
+
|
|
12
|
+
var _muiDatatables = _interopRequireWildcard(require("mui-datatables"));
|
|
13
|
+
|
|
14
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
|
15
|
+
|
|
16
|
+
var _CustomToolbar = _interopRequireDefault(require("./CustomToolbar"));
|
|
17
|
+
|
|
18
|
+
const _excluded = ["locale", "options", "style", "customButtons"];
|
|
19
|
+
|
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
21
|
+
|
|
22
|
+
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); }
|
|
23
|
+
|
|
24
|
+
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; }
|
|
25
|
+
|
|
26
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
27
|
+
|
|
28
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
29
|
+
|
|
30
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
31
|
+
|
|
32
|
+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
33
|
+
|
|
34
|
+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
35
|
+
|
|
36
|
+
const WrapFilterList = props => {
|
|
37
|
+
const hasFilter = !!props.filterList.filter(e => e.length).length;
|
|
38
|
+
|
|
39
|
+
if (hasFilter) {
|
|
40
|
+
return /*#__PURE__*/_react.default.createElement(FilterLine, null, hasFilter && /*#__PURE__*/_react.default.createElement("div", {
|
|
41
|
+
className: "toolbar-filter-title"
|
|
42
|
+
}, "Filter"), /*#__PURE__*/_react.default.createElement("div", {
|
|
43
|
+
className: "toolbar-filter-content"
|
|
44
|
+
}, /*#__PURE__*/_react.default.createElement(_muiDatatables.TableFilterList, props)));
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return '';
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
WrapFilterList.propTypes = {
|
|
51
|
+
filterList: _propTypes.default.array
|
|
52
|
+
};
|
|
53
|
+
WrapFilterList.defaultProps = {
|
|
54
|
+
filterList: []
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
function Datatable(_ref) {
|
|
58
|
+
let {
|
|
59
|
+
locale,
|
|
60
|
+
options,
|
|
61
|
+
style,
|
|
62
|
+
customButtons
|
|
63
|
+
} = _ref,
|
|
64
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
65
|
+
|
|
66
|
+
const container = (0, _react.useRef)(null);
|
|
67
|
+
let textLabels = {
|
|
68
|
+
body: {
|
|
69
|
+
noMatch: 'Sorry, no matching records found',
|
|
70
|
+
toolTip: 'Sort'
|
|
71
|
+
},
|
|
72
|
+
pagination: {
|
|
73
|
+
next: 'Next Page',
|
|
74
|
+
previous: 'Previous Page',
|
|
75
|
+
rowsPerPage: 'Rows per page:',
|
|
76
|
+
displayRows: 'of',
|
|
77
|
+
jumpToPage: 'Jump to Page:'
|
|
78
|
+
},
|
|
79
|
+
toolbar: {
|
|
80
|
+
search: 'Search',
|
|
81
|
+
downloadCsv: 'Download CSV',
|
|
82
|
+
print: 'Print',
|
|
83
|
+
viewColumns: 'View Columns',
|
|
84
|
+
filterTable: 'Filter Table'
|
|
85
|
+
},
|
|
86
|
+
filter: {
|
|
87
|
+
all: 'All',
|
|
88
|
+
title: 'FILTERS',
|
|
89
|
+
reset: 'RESET'
|
|
90
|
+
},
|
|
91
|
+
viewColumns: {
|
|
92
|
+
title: 'Show Columns',
|
|
93
|
+
titleAria: 'Show/Hide Table Columns'
|
|
94
|
+
},
|
|
95
|
+
selectedRows: {
|
|
96
|
+
text: 'row(s) selected',
|
|
97
|
+
delete: 'Delete',
|
|
98
|
+
deleteAria: 'Delete Selected Rows'
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
if (locale === 'zh') {
|
|
103
|
+
textLabels = {
|
|
104
|
+
body: {
|
|
105
|
+
noMatch: '对不起,没有找到匹配的记录',
|
|
106
|
+
toolTip: '排序'
|
|
107
|
+
},
|
|
108
|
+
pagination: {
|
|
109
|
+
next: '下一页',
|
|
110
|
+
previous: '上一页',
|
|
111
|
+
rowsPerPage: '每页行数',
|
|
112
|
+
displayRows: '/',
|
|
113
|
+
jumpToPage: '跳转到页面:'
|
|
114
|
+
},
|
|
115
|
+
toolbar: {
|
|
116
|
+
search: '搜索',
|
|
117
|
+
downloadCsv: '下载CSV',
|
|
118
|
+
print: '打印',
|
|
119
|
+
viewColumns: '查看列',
|
|
120
|
+
filterTable: '筛选表格'
|
|
121
|
+
},
|
|
122
|
+
filter: {
|
|
123
|
+
all: '全部',
|
|
124
|
+
title: '筛选器',
|
|
125
|
+
reset: '重置'
|
|
126
|
+
},
|
|
127
|
+
viewColumns: {
|
|
128
|
+
title: '显示的列',
|
|
129
|
+
titleAria: '显示/隐藏 表格的列'
|
|
130
|
+
},
|
|
131
|
+
selectedRows: {
|
|
132
|
+
text: '个已选项目',
|
|
133
|
+
delete: '删除',
|
|
134
|
+
deleteAria: '删除所选项目'
|
|
135
|
+
}
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const opts = _objectSpread({
|
|
140
|
+
selectableRows: 'none',
|
|
141
|
+
textLabels
|
|
142
|
+
}, options);
|
|
143
|
+
|
|
144
|
+
const WrapCustomToolBar = props => {
|
|
145
|
+
return /*#__PURE__*/_react.default.createElement(_CustomToolbar.default, Object.assign({}, props, {
|
|
146
|
+
customButtons: customButtons || []
|
|
147
|
+
}));
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
const props = _objectSpread(_objectSpread({
|
|
151
|
+
options: opts
|
|
152
|
+
}, rest), {}, {
|
|
153
|
+
components: {
|
|
154
|
+
TableToolbar: WrapCustomToolBar,
|
|
155
|
+
TableFilterList: WrapFilterList
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
Datatable.propTypes = {
|
|
160
|
+
options: _propTypes.default.object,
|
|
161
|
+
style: _propTypes.default.object,
|
|
162
|
+
locale: _propTypes.default.string,
|
|
163
|
+
customButtons: _propTypes.default.array
|
|
164
|
+
};
|
|
165
|
+
Datatable.defaultProps = {
|
|
166
|
+
options: {},
|
|
167
|
+
style: {},
|
|
168
|
+
locale: 'en',
|
|
169
|
+
customButtons: []
|
|
170
|
+
};
|
|
171
|
+
return /*#__PURE__*/_react.default.createElement(TableContainer, {
|
|
172
|
+
ref: container,
|
|
173
|
+
style: style
|
|
174
|
+
}, /*#__PURE__*/_react.default.createElement(_muiDatatables.default, props));
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
const TableContainer = _styledComponents.default.div.withConfig({
|
|
178
|
+
displayName: "Datatable__TableContainer",
|
|
179
|
+
componentId: "sc-1ju12vq-0"
|
|
180
|
+
})(["height:100%;> .MuiPaper-root{display:flex;flex-direction:column;height:100%;box-shadow:none;}", "{[class*='MUIDataTableBody-emptyTitle']{padding-left:16px;width:200%;margin-left:-100%;text-align:center;}}"], props => props.theme.breakpoints.down('md'));
|
|
181
|
+
|
|
182
|
+
const FilterLine = _styledComponents.default.div.withConfig({
|
|
183
|
+
displayName: "Datatable__FilterLine",
|
|
184
|
+
componentId: "sc-1ju12vq-1"
|
|
185
|
+
})(["display:flex;align-items:center;.toolbar-filter-content{margin-bottom:8px;}.toolbar-filter-title{font-weight:700;font-size:14px;}"]);
|