UNPKG

20.8 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', { value: true });
4
5function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
7var slicedToArray = require('./slicedToArray-ef426d0f.js');
8require('./unsupportedIterableToArray-8a00e599.js');
9var React = require('react');
10var React__default = _interopDefault(React);
11require('./_commonjsHelpers-72d386ba.js');
12var index = require('./index-b0606964.js');
13var defineProperty = require('./defineProperty-0921a47c.js');
14require('./toConsumableArray-7f36359f.js');
15var _styled = require('styled-components');
16var _styled__default = _interopDefault(_styled);
17require('./getPrototypeOf-e2d1e599.js');
18require('./color.js');
19require('./components.js');
20require('./contains-component.js');
21require('./css.js');
22require('./dayjs.min-aa59a48e.js');
23require('./date.js');
24require('./miscellaneous.js');
25require('./environment.js');
26require('./font.js');
27require('./math-ecfd5d91.js');
28require('./characters.js');
29require('./format.js');
30require('./keycodes.js');
31require('./url.js');
32require('./web3.js');
33var constants = require('./constants.js');
34require('./breakpoints.js');
35var springs = require('./springs.js');
36var textStyles = require('./text-styles.js');
37require('./theme-dark.js');
38require('./theme-light.js');
39var Theme = require('./Theme.js');
40require('./extends-40571110.js');
41require('./objectWithoutProperties-35db8ab0.js');
42require('./index-ecc57c9f.js');
43require('./isObject-52908731.js');
44require('./Viewport-fe2db97a.js');
45var Layout = require('./Layout.js');
46require('./FocusVisible.js');
47require('./ButtonBase.js');
48require('./IconPropTypes-086fd371.js');
49require('./IconAddUser.js');
50require('./IconAlert.js');
51require('./IconAlignCenter.js');
52require('./IconAlignJustify.js');
53require('./IconAlignLeft.js');
54require('./IconAlignRight.js');
55require('./IconAragon.js');
56require('./IconArrowDown.js');
57require('./IconArrowLeft.js');
58require('./IconArrowRight.js');
59require('./IconArrowUp.js');
60require('./IconAtSign.js');
61require('./IconBlock.js');
62require('./IconBookmark.js');
63require('./IconCalendar.js');
64require('./IconCanvas.js');
65require('./IconCaution.js');
66require('./IconCenter.js');
67require('./IconChart.js');
68require('./IconChat.js');
69require('./IconCheck.js');
70require('./IconChip.js');
71require('./IconCircleCheck.js');
72require('./IconCircleMinus.js');
73require('./IconCirclePlus.js');
74require('./IconClock.js');
75require('./IconCloudDownload.js');
76require('./IconCloudUpload.js');
77require('./IconCoin.js');
78require('./IconConfiguration.js');
79require('./IconConnect.js');
80require('./IconConnection.js');
81require('./IconConsole.js');
82require('./IconCopy.js');
83require('./IconCross.js');
84require('./IconDashedSquare.js');
85require('./IconDown.js');
86require('./IconDownload.js');
87require('./IconEdit.js');
88require('./IconEllipsis.js');
89require('./IconEnter.js');
90require('./IconEthereum.js');
91require('./IconExternal.js');
92require('./IconFile.js');
93require('./IconFilter.js');
94require('./IconFlag.js');
95require('./IconFolder.js');
96require('./IconGraph2.js');
97require('./IconGraph.js');
98require('./IconGrid.js');
99require('./IconGroup.js');
100require('./IconHash.js');
101require('./IconHeart.js');
102require('./IconHide.js');
103require('./IconHome.js');
104require('./IconImage.js');
105require('./IconInfo.js');
106require('./IconLabel.js');
107require('./IconLayers.js');
108require('./IconLeft.js');
109require('./IconLink.js');
110require('./IconLocation.js');
111require('./IconLock.js');
112require('./IconMail.js');
113require('./IconMaximize.js');
114require('./IconMenu.js');
115require('./IconMinimize.js');
116require('./IconMinus.js');
117require('./IconMove.js');
118require('./IconNoPicture.js');
119require('./IconPicture.js');
120require('./IconPlus.js');
121require('./IconPower.js');
122require('./IconPrint.js');
123require('./IconProhibited.js');
124require('./IconQuestion.js');
125require('./IconRefresh.js');
126require('./IconRemoveUser.js');
127require('./IconRight.js');
128require('./IconRotateLeft.js');
129require('./IconRotateRight.js');
130require('./IconSearch.js');
131require('./IconSettings.js');
132require('./IconShare.js');
133require('./IconSquareMinus.js');
134require('./IconSquarePlus.js');
135require('./IconSquare.js');
136require('./IconStarFilled.js');
137require('./IconStar.js');
138require('./IconSwap.js');
139require('./IconTarget.js');
140require('./IconToken.js');
141require('./IconTrash.js');
142require('./IconUnlock.js');
143require('./IconUp.js');
144require('./IconUpload.js');
145require('./IconUser.js');
146require('./IconView.js');
147require('./IconVote.js');
148require('./IconWallet.js');
149require('./IconWarning.js');
150require('./IconWorld.js');
151require('./IconWrite.js');
152require('./IconZoomIn.js');
153require('./IconZoomOut.js');
154require('./objectWithoutPropertiesLoose-1af20ad0.js');
155require('react-dom');
156var web = require('./web-d0294535.js');
157var Checkbox = require('./Checkbox.js');
158require('./Button.js');
159require('./ButtonIcon.js');
160var ToggleButton = require('./ToggleButton.js');
161var OpenedSurfaceBorder = require('./OpenedSurfaceBorder.js');
162
163function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
164
165function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { defineProperty._defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
166
167function headingsFromFields(fields, _ref) {
168 var hasAnyActions = _ref.hasAnyActions,
169 hasAnyExpansion = _ref.hasAnyExpansion,
170 selectContent = _ref.selectContent,
171 selectable = _ref.selectable;
172 var cells = fields.map(function (field, index) {
173 return [field.label, field.align === 'end' ? 'right' : 'left'];
174 });
175
176 if (hasAnyExpansion || selectable) {
177 cells.unshift([selectable ? selectContent : null, 'left']);
178 }
179
180 if (hasAnyActions) {
181 cells.push([null, 'left']);
182 } // Return null if all the fields are empty
183
184
185 if (cells.every(function (cell) {
186 return !cell[0];
187 })) {
188 return null;
189 }
190
191 return cells;
192}
193
194function cellsFromEntry(entry, _ref2) {
195 var fields = _ref2.fields,
196 hasAnyActions = _ref2.hasAnyActions,
197 hasAnyExpansion = _ref2.hasAnyExpansion,
198 hasExpansion = _ref2.hasExpansion,
199 selectContent = _ref2.selectContent,
200 selectable = _ref2.selectable,
201 toggleChildContent = _ref2.toggleChildContent;
202 var cells = entry.entryNodes.map(function (content, index) {
203 return [content, fields[index].align, false];
204 }); // Checkbox
205
206 if (selectable) {
207 cells.unshift([selectContent, 'start', true]);
208 } // Toggle child
209
210
211 if (!selectable && hasAnyExpansion) {
212 cells.unshift([hasExpansion && toggleChildContent, 'start', true]);
213 } // Actions
214
215
216 if (hasAnyActions) {
217 cells.push([entry.actions, 'end', true]);
218 }
219
220 return cells;
221}
222
223var _StyledTable = _styled__default("table").withConfig({
224 displayName: "TableView___StyledTable",
225 componentId: "aczwu3-0"
226})(["width:100%;border-spacing:0;border-collapse:separate;"]);
227
228function TableView(_ref3) {
229 var alignChildOnField = _ref3.alignChildOnField,
230 allSelected = _ref3.allSelected,
231 entries = _ref3.entries,
232 fields = _ref3.fields,
233 hasAnyActions = _ref3.hasAnyActions,
234 hasAnyExpansion = _ref3.hasAnyExpansion,
235 onSelect = _ref3.onSelect,
236 onSelectAll = _ref3.onSelectAll,
237 renderSelectionCount = _ref3.renderSelectionCount,
238 rowHeight = _ref3.rowHeight,
239 selectable = _ref3.selectable,
240 selectedCount = _ref3.selectedCount;
241
242 var _useState = React.useState(-1),
243 _useState2 = slicedToArray._slicedToArray(_useState, 2),
244 opened = _useState2[0],
245 setOpened = _useState2[1];
246
247 var toggleEntry = React.useCallback(function (index) {
248 setOpened(function (opened) {
249 return opened === index ? -1 : index;
250 });
251 }, []);
252 var headCells = React.useMemo(function () {
253 return headingsFromFields(fields, {
254 hasAnyActions: hasAnyActions,
255 hasAnyExpansion: hasAnyExpansion,
256 selectContent: /*#__PURE__*/React__default.createElement(Checkbox.default, {
257 indeterminate: allSelected === 0,
258 checked: allSelected > -1,
259 onChange: onSelectAll
260 }),
261 selectable: selectable
262 });
263 }, [fields, hasAnyActions, hasAnyExpansion, allSelected, onSelectAll, selectable]);
264 React.useEffect(function () {
265 setOpened(-1);
266 }, [entries, fields]);
267 return /*#__PURE__*/React__default.createElement(_StyledTable, null, headCells && /*#__PURE__*/React__default.createElement("thead", null, /*#__PURE__*/React__default.createElement(HeadRow, {
268 cells: headCells,
269 selectedCount: selectedCount,
270 renderSelectionCount: renderSelectionCount
271 })), /*#__PURE__*/React__default.createElement("tbody", null, entries.map(function (entry, index) {
272 return /*#__PURE__*/React__default.createElement(Entry, {
273 key: entry.index,
274 alignChildOnField: alignChildOnField,
275 entry: entry,
276 fields: fields,
277 firstRow: index === 0,
278 hasAnyActions: hasAnyActions,
279 hasAnyExpansion: hasAnyExpansion,
280 onSelect: onSelect,
281 onToggle: toggleEntry,
282 opened: opened === entry.index,
283 rowHeight: rowHeight,
284 selectable: selectable
285 });
286 })));
287}
288
289TableView.propTypes = {
290 alignChildOnField: index.PropTypes.number.isRequired,
291 allSelected: index.PropTypes.oneOf([-1, 0, 1]).isRequired,
292 entries: index.PropTypes.array.isRequired,
293 fields: index.PropTypes.array.isRequired,
294 hasAnyActions: index.PropTypes.bool.isRequired,
295 hasAnyExpansion: index.PropTypes.bool.isRequired,
296 onSelect: index.PropTypes.func.isRequired,
297 onSelectAll: index.PropTypes.func.isRequired,
298 renderSelectionCount: index.PropTypes.func.isRequired,
299 rowHeight: index.PropTypes.number.isRequired,
300 selectable: index.PropTypes.bool.isRequired,
301 selectedCount: index.PropTypes.number.isRequired
302}; // Disable prop types check for internal components
303
304/* eslint-disable react/prop-types */
305
306function useSidePadding() {
307 var _useLayout = Layout.useLayout(),
308 layoutName = _useLayout.layoutName;
309
310 return layoutName === 'small' ? 2 * constants.GU : 3 * constants.GU;
311}
312
313var _StyledTh = _styled__default("th").withConfig({
314 displayName: "TableView___StyledTh",
315 componentId: "aczwu3-1"
316})(["height:", "px;padding:0;padding-left:", "px;padding-right:", "px;text-align:", ";", ";color:", ";border-bottom:1px solid ", ";"], function (p) {
317 return p._css;
318}, function (p) {
319 return p._css2;
320}, function (p) {
321 return p._css3;
322}, function (p) {
323 return p._css4;
324}, function (p) {
325 return p._css5;
326}, function (p) {
327 return p._css6;
328}, function (p) {
329 return p._css7;
330});
331
332function HeadRow(_ref4) {
333 var cells = _ref4.cells,
334 selectedCount = _ref4.selectedCount,
335 renderSelectionCount = _ref4.renderSelectionCount;
336 var theme = Theme.useTheme();
337 var sidePadding = useSidePadding();
338 return /*#__PURE__*/React__default.createElement("tr", null, cells.map(function (cell, index) {
339 var hidden = selectedCount > 0 && index > 1;
340 var content = selectedCount > 0 && index === 1 ? renderSelectionCount(selectedCount) : cell[0];
341 return !hidden && /*#__PURE__*/React__default.createElement(_StyledTh, {
342 key: index,
343 colSpan: selectedCount > 0 && index === 1 ? cells.length - 1 : 1,
344 _css: 4 * constants.GU,
345 _css2: index === 0 ? sidePadding : 0,
346 _css3: index === cells.length - 1 ? sidePadding : 0,
347 _css4: cell[1],
348 _css5: textStyles.textStyle('label2'),
349 _css6: theme.surfaceContentSecondary,
350 _css7: theme.border
351 }, content);
352 }));
353}
354
355var Entry = /*#__PURE__*/React__default.memo(function Entry(_ref5) {
356 var alignChildOnField = _ref5.alignChildOnField,
357 entry = _ref5.entry,
358 fields = _ref5.fields,
359 firstRow = _ref5.firstRow,
360 hasAnyActions = _ref5.hasAnyActions,
361 hasAnyExpansion = _ref5.hasAnyExpansion,
362 onSelect = _ref5.onSelect,
363 onToggle = _ref5.onToggle,
364 opened = _ref5.opened,
365 rowHeight = _ref5.rowHeight,
366 selectable = _ref5.selectable;
367 var hasExpansion = entry.expansion.content.length > 0;
368 var entryIndex = entry.index;
369 var handleToggle = React.useCallback(function () {
370 onToggle(entryIndex);
371 }, [entryIndex, onToggle]);
372 var handleSelectChange = React.useCallback(function (check) {
373 onSelect(entryIndex, check);
374 }, [entryIndex, onSelect]);
375 var cells = cellsFromEntry(entry, {
376 fields: fields,
377 hasAnyActions: hasAnyActions,
378 hasAnyExpansion: hasAnyExpansion,
379 hasExpansion: hasExpansion,
380 selectable: selectable,
381 toggleChildContent: hasAnyExpansion ? /*#__PURE__*/React__default.createElement(Toggle, {
382 opened: opened,
383 onToggle: handleToggle
384 }) : null,
385 selectContent: selectable ? /*#__PURE__*/React__default.createElement(Checkbox.default, {
386 onChange: handleSelectChange,
387 checked: entry.selected
388 }) : null
389 });
390 return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(EntryRow, {
391 cells: cells,
392 firstRow: firstRow,
393 rowHeight: rowHeight,
394 selected: entry.selected
395 }), hasExpansion && /*#__PURE__*/React__default.createElement(EntryExpansion, {
396 alignChildOnCell: alignChildOnField + 1,
397 cellsCount: cells.length,
398 expansion: entry.expansion,
399 opened: opened,
400 rowHeight: rowHeight
401 }));
402});
403
404var _StyledTr = _styled__default("tr").withConfig({
405 displayName: "TableView___StyledTr",
406 componentId: "aczwu3-2"
407})(["transition:background 150ms ease-in-out;background:", ";"], function (p) {
408 return p._css8;
409});
410
411var _StyledTd = _styled__default("td").withConfig({
412 displayName: "TableView___StyledTd",
413 componentId: "aczwu3-3"
414})(["position:relative;width:", ";height:", "px;padding-top:0;padding-bottom:0;padding-left:", "px;padding-right:", "px;border-top:", ";"], function (p) {
415 return p._css9;
416}, function (p) {
417 return p._css10;
418}, function (p) {
419 return p._css11;
420}, function (p) {
421 return p._css12;
422}, function (p) {
423 return p._css13;
424});
425
426var _StyledDiv = _styled__default("div").withConfig({
427 displayName: "TableView___StyledDiv",
428 componentId: "aczwu3-4"
429})(["display:flex;width:100%;justify-content:", ";"], function (p) {
430 return p._css14;
431});
432
433function EntryRow(_ref6) {
434 var firstRow = _ref6.firstRow,
435 cells = _ref6.cells,
436 selected = _ref6.selected,
437 rowHeight = _ref6.rowHeight,
438 mode = _ref6.mode;
439 var theme = Theme.useTheme();
440 var sidePadding = useSidePadding();
441 return /*#__PURE__*/React__default.createElement(_StyledTr, {
442 _css8: selected ? theme.surfaceSelected : 'none'
443 }, cells.map(function (_ref7, index, cells) {
444 var _ref8 = slicedToArray._slicedToArray(_ref7, 3),
445 content = _ref8[0],
446 align = _ref8[1],
447 compact = _ref8[2];
448
449 var first = index === 0;
450 var last = index === cells.length - 1;
451 return /*#__PURE__*/React__default.createElement(_StyledTd, {
452 key: index,
453 _css9: compact ? '1px' // For some reason Blink tends to make 0 grow but not 1px
454 : 'auto',
455 _css10: rowHeight,
456 _css11: first || compact ? sidePadding : 0,
457 _css12: !first && (align !== 'end' || last) || compact ? sidePadding : 0,
458 _css13: firstRow ? '0' : "1px solid ".concat(theme.border)
459 }, /*#__PURE__*/React__default.createElement(_StyledDiv, {
460 _css14: "flex-".concat(align)
461 }, content));
462 }));
463}
464
465var _StyledTr2 = _styled__default("tr").withConfig({
466 displayName: "TableView___StyledTr2",
467 componentId: "aczwu3-5"
468})(["td{position:relative;padding:0;box-shadow:inset 0 6px 4px -4px rgba(0,0,0,0.16);background:", ";}"], function (p) {
469 return p._css15;
470});
471
472var _StyledAnimatedDiv = _styled__default(web.extendedAnimated.div).withConfig({
473 displayName: "TableView___StyledAnimatedDiv",
474 componentId: "aczwu3-6"
475})(["overflow:hidden"]);
476
477var _StyledDiv2 = _styled__default("div").withConfig({
478 displayName: "TableView___StyledDiv2",
479 componentId: "aczwu3-7"
480})(["height:", ";border-top:1px solid ", ";"], function (p) {
481 return p._css16;
482}, function (p) {
483 return p._css17;
484});
485
486var _StyledAnimatedDiv2 = _styled__default(web.extendedAnimated.div).withConfig({
487 displayName: "TableView___StyledAnimatedDiv2",
488 componentId: "aczwu3-8"
489})(["overflow:hidden"]);
490
491var _StyledDiv3 = _styled__default("div").withConfig({
492 displayName: "TableView___StyledDiv3",
493 componentId: "aczwu3-9"
494})(["display:flex;align-items:center;height:", ";padding-left:", "px;padding-right:", "px;border-top:1px solid ", ";"], function (p) {
495 return p._css18;
496}, function (p) {
497 return p._css19;
498}, function (p) {
499 return p._css20;
500}, function (p) {
501 return p._css21;
502});
503
504function EntryExpansion(_ref9) {
505 var alignChildOnCell = _ref9.alignChildOnCell,
506 cellsCount = _ref9.cellsCount,
507 expansion = _ref9.expansion,
508 opened = _ref9.opened,
509 rowHeight = _ref9.rowHeight;
510 var theme = Theme.useTheme(); // Handles the height of the expansion in free layout mode
511
512 var _useState3 = React.useState(0),
513 _useState4 = slicedToArray._slicedToArray(_useState3, 2),
514 freeLayoutContentHeight = _useState4[0],
515 setFreeLayoutContentHeight = _useState4[1];
516
517 var handleFreeLayoutContentRef = React.useCallback(function (element) {
518 if (element) {
519 setFreeLayoutContentHeight(element.getBoundingClientRect().height);
520 }
521 }, []);
522 var height = expansion.freeLayout ? freeLayoutContentHeight : rowHeight * expansion.content.length;
523 return /*#__PURE__*/React__default.createElement(web.Transition, {
524 native: true,
525 unique: true,
526 items: opened,
527 from: {
528 height: 0
529 },
530 enter: {
531 height: height
532 },
533 update: {
534 height: height
535 },
536 leave: {
537 height: 0
538 },
539 config: _objectSpread(_objectSpread({}, springs.springs.smooth), {}, {
540 precision: 0.1
541 })
542 }, function (show) {
543 return show && function (_ref10) {
544 var height = _ref10.height;
545 return /*#__PURE__*/React__default.createElement(_StyledTr2, {
546 _css15: theme.surfaceUnder
547 }, alignChildOnCell > 0 && /*#__PURE__*/React__default.createElement("td", {
548 colSpan: alignChildOnCell
549 }, /*#__PURE__*/React__default.createElement(OpenedSurfaceBorder.OpenedSurfaceBorder, {
550 opened: opened
551 }), /*#__PURE__*/React__default.createElement(_StyledAnimatedDiv, {
552 style: {
553 height: height
554 }
555 }, expansion.content.map(function (child, i) {
556 return /*#__PURE__*/React__default.createElement(_StyledDiv2, {
557 key: i,
558 _css16: expansion.freeLayout ? 'auto' : "".concat(rowHeight, "px"),
559 _css17: theme.border
560 });
561 }))), /*#__PURE__*/React__default.createElement("td", {
562 colSpan: alignChildOnCell === -1 ? cellsCount : cellsCount - alignChildOnCell
563 }, alignChildOnCell === 0 && /*#__PURE__*/React__default.createElement(OpenedSurfaceBorder.OpenedSurfaceBorder, {
564 opened: opened
565 }), /*#__PURE__*/React__default.createElement(_StyledAnimatedDiv2, {
566 style: {
567 height: height
568 }
569 }, expansion.content.map(function (child, i) {
570 return /*#__PURE__*/React__default.createElement(_StyledDiv3, {
571 key: i,
572 ref: expansion.freeLayout ? handleFreeLayoutContentRef : null,
573 _css18: expansion.freeLayout ? 'auto' : "".concat(rowHeight, "px"),
574 _css19: alignChildOnCell < 1 ? 3 * constants.GU : 0,
575 _css20: 3 * constants.GU,
576 _css21: theme.border
577 }, child);
578 }))));
579 };
580 });
581}
582
583var _StyledDiv4 = _styled__default("div").withConfig({
584 displayName: "TableView___StyledDiv4",
585 componentId: "aczwu3-10"
586})(["width:100%;height:100%;"]);
587
588var Toggle = /*#__PURE__*/React__default.memo(function Toggle(_ref11) {
589 var opened = _ref11.opened,
590 onToggle = _ref11.onToggle;
591 return /*#__PURE__*/React__default.createElement(_StyledDiv4, null, /*#__PURE__*/React__default.createElement(OpenedSurfaceBorder.OpenedSurfaceBorder, {
592 opened: opened
593 }), /*#__PURE__*/React__default.createElement(ToggleButton.ToggleButton, {
594 opened: opened,
595 onClick: onToggle
596 }));
597});
598
599exports.TableView = TableView;
600//# sourceMappingURL=TableView.js.map