@digigov/ui 0.33.0 → 0.34.0
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/CHANGELOG.md +12 -1
- package/admin/Dropdown/index.js +34 -27
- package/core/Table/Table.stories.d.ts +1 -0
- package/core/Table/Table.stories.js +14 -0
- package/core/Table/__stories__/Stacked.d.ts +2 -0
- package/core/Table/__stories__/Stacked.js +42 -0
- package/core/Table/__stories__/WithSortFilters.js +34 -54
- package/core/Table/index.d.ts +11 -19
- package/core/Table/index.js +85 -174
- package/es/admin/Dropdown/index.js +34 -27
- package/es/core/Table/Table.stories.js +1 -0
- package/es/core/Table/__stories__/Stacked.js +29 -0
- package/es/core/Table/__stories__/WithSortFilters.js +34 -54
- package/es/core/Table/index.js +70 -154
- package/es/hooks/useSort.js +54 -0
- package/esm/admin/Dropdown/index.js +34 -27
- package/esm/core/Table/Table.stories.js +1 -0
- package/esm/core/Table/__stories__/Stacked.js +29 -0
- package/esm/core/Table/__stories__/WithSortFilters.js +34 -54
- package/esm/core/Table/index.js +70 -154
- package/esm/hooks/useSort.js +54 -0
- package/esm/index.js +1 -1
- package/hooks/useSort.d.ts +9 -0
- package/hooks/useSort.js +67 -0
- package/package.json +3 -3
- package/src/admin/Dropdown/index.tsx +79 -63
- package/src/core/Table/Table.stories.js +1 -0
- package/src/core/Table/__stories__/Stacked.tsx +59 -0
- package/src/core/Table/__stories__/WithSortFilters.tsx +34 -71
- package/src/core/Table/index.tsx +92 -175
- package/src/hooks/useSort.tsx +53 -0
package/core/Table/index.js
CHANGED
|
@@ -8,19 +8,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
8
8
|
value: true
|
|
9
9
|
});
|
|
10
10
|
var _exportNames = {
|
|
11
|
-
|
|
12
|
-
TableHeadCellSort: true,
|
|
13
|
-
useSortableData: true
|
|
11
|
+
TableSortLabel: true
|
|
14
12
|
};
|
|
15
|
-
exports
|
|
16
|
-
|
|
17
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
|
+
exports["default"] = exports.TableSortLabel = void 0;
|
|
18
14
|
|
|
19
15
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
20
16
|
|
|
21
|
-
var
|
|
22
|
-
|
|
23
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
17
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
24
18
|
|
|
25
19
|
var _react = _interopRequireWildcard(require("react"));
|
|
26
20
|
|
|
@@ -46,20 +40,6 @@ var _NavVerticalItem = require("@digigov/ui/core/NavList/NavVerticalItem");
|
|
|
46
40
|
|
|
47
41
|
var _SvgIcon = require("@digigov/ui/core/SvgIcon");
|
|
48
42
|
|
|
49
|
-
var _TableHeadCell = _interopRequireWildcard(require("@digigov/react-core/TableHeadCell"));
|
|
50
|
-
|
|
51
|
-
Object.keys(_TableHeadCell).forEach(function (key) {
|
|
52
|
-
if (key === "default" || key === "__esModule") return;
|
|
53
|
-
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
54
|
-
if (key in exports && exports[key] === _TableHeadCell[key]) return;
|
|
55
|
-
Object.defineProperty(exports, key, {
|
|
56
|
-
enumerable: true,
|
|
57
|
-
get: function get() {
|
|
58
|
-
return _TableHeadCell[key];
|
|
59
|
-
}
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
|
|
63
43
|
var _CaretContainer = _interopRequireDefault(require("@digigov/ui/core/CaretContainer"));
|
|
64
44
|
|
|
65
45
|
var _TableContainer = require("@digigov/react-core/TableContainer");
|
|
@@ -132,6 +112,20 @@ Object.keys(_TableHead).forEach(function (key) {
|
|
|
132
112
|
});
|
|
133
113
|
});
|
|
134
114
|
|
|
115
|
+
var _TableHeadCell = require("@digigov/react-core/TableHeadCell");
|
|
116
|
+
|
|
117
|
+
Object.keys(_TableHeadCell).forEach(function (key) {
|
|
118
|
+
if (key === "default" || key === "__esModule") return;
|
|
119
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
120
|
+
if (key in exports && exports[key] === _TableHeadCell[key]) return;
|
|
121
|
+
Object.defineProperty(exports, key, {
|
|
122
|
+
enumerable: true,
|
|
123
|
+
get: function get() {
|
|
124
|
+
return _TableHeadCell[key];
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
|
|
135
129
|
var _TableRow = require("@digigov/react-core/TableRow");
|
|
136
130
|
|
|
137
131
|
Object.keys(_TableRow).forEach(function (key) {
|
|
@@ -173,170 +167,87 @@ Object.keys(_TableFloatingScroll).forEach(function (key) {
|
|
|
173
167
|
}
|
|
174
168
|
});
|
|
175
169
|
});
|
|
176
|
-
var _excluded = ["
|
|
170
|
+
var _excluded = ["labels", "disabled", "children", "direction", "onSort"];
|
|
177
171
|
|
|
178
172
|
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); }
|
|
179
173
|
|
|
180
174
|
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; }
|
|
181
175
|
|
|
182
|
-
var
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
var _useState3 = (0, _react.useState)(0),
|
|
189
|
-
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
190
|
-
directionValue = _useState4[0],
|
|
191
|
-
setDirectionValue = _useState4[1];
|
|
192
|
-
|
|
193
|
-
var sortedItems = (0, _react.useMemo)(function () {
|
|
194
|
-
var sortableItems = (0, _toConsumableArray2["default"])(items);
|
|
195
|
-
|
|
196
|
-
if (sortableItems.length === 0) {
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
if (field) {
|
|
201
|
-
sortableItems.sort(function (a, b) {
|
|
202
|
-
if (a[field] === null) return 1;
|
|
203
|
-
if (b[field] === null) return -1;
|
|
204
|
-
if (a[field] === null && b[field] === null) return 0;
|
|
205
|
-
return a[field].toString().localeCompare(b[field].toString(), undefined, {
|
|
206
|
-
numeric: true
|
|
207
|
-
}) * (directionValue > 0 ? 1 : -1);
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
return sortableItems;
|
|
212
|
-
}, [items, directionValue, field]);
|
|
213
|
-
|
|
214
|
-
var sortAscDesc = function sortAscDesc(item, value) {
|
|
215
|
-
setDirectionValue(value);
|
|
216
|
-
setField(item);
|
|
217
|
-
};
|
|
218
|
-
|
|
219
|
-
return {
|
|
220
|
-
sortedData: sortedItems,
|
|
221
|
-
sortedProps: {
|
|
222
|
-
sortedData: sortedItems,
|
|
223
|
-
sortedDirectionValue: directionValue,
|
|
224
|
-
sortedField: field,
|
|
225
|
-
sortedAscDesc: sortAscDesc
|
|
226
|
-
}
|
|
227
|
-
};
|
|
228
|
-
};
|
|
229
|
-
|
|
230
|
-
exports.useSortableData = useSortableData;
|
|
231
|
-
|
|
232
|
-
var TableHeadCellSort = /*#__PURE__*/_react["default"].forwardRef(function TableHeadCellSort(_ref, ref) {
|
|
233
|
-
var props = (0, _extends2["default"])({}, _ref);
|
|
234
|
-
return /*#__PURE__*/_react["default"].createElement(TableHeadCellSortBase, (0, _extends2["default"])({
|
|
235
|
-
ref: ref
|
|
236
|
-
}, props));
|
|
176
|
+
var _ref2 = /*#__PURE__*/_react["default"].createElement(_SvgIcon.CaretIcon, {
|
|
177
|
+
direction: 'up',
|
|
178
|
+
marginRight: 1,
|
|
179
|
+
marginTop: 1,
|
|
180
|
+
size: "m"
|
|
237
181
|
});
|
|
238
182
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
headerItems = _ref2.headerItems,
|
|
246
|
-
sortedData = _ref2.sortedData,
|
|
247
|
-
children = _ref2.children,
|
|
248
|
-
props = (0, _objectWithoutProperties2["default"])(_ref2, _excluded);
|
|
249
|
-
var innerRef = (0, _react.useRef)();
|
|
250
|
-
|
|
251
|
-
var _ref3 = headerItems || {},
|
|
252
|
-
name = _ref3.name,
|
|
253
|
-
sortLabels = _ref3.sortLabels;
|
|
254
|
-
|
|
255
|
-
var _useState5 = (0, _react.useState)(0),
|
|
256
|
-
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
257
|
-
sortDirection = _useState6[0],
|
|
258
|
-
setSortDirection = _useState6[1];
|
|
259
|
-
|
|
260
|
-
var setSortAscDesc = (0, _react.useCallback)(function (name, value) {
|
|
261
|
-
if (sortedAscDesc) {
|
|
262
|
-
if (sortedField !== name) {
|
|
263
|
-
sortedAscDesc('', 0);
|
|
264
|
-
setSortDirection(value);
|
|
265
|
-
sortedAscDesc(name, value);
|
|
266
|
-
} else {
|
|
267
|
-
if (value !== sortDirection) {
|
|
268
|
-
setSortDirection(value);
|
|
269
|
-
sortedAscDesc(name, value);
|
|
270
|
-
} else {
|
|
271
|
-
setSortDirection(0);
|
|
272
|
-
sortedAscDesc('', 0);
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
}, [sortedField, sortedDirectionValue, sortDirection]);
|
|
183
|
+
var _ref3 = /*#__PURE__*/_react["default"].createElement(_SvgIcon.CaretIcon, {
|
|
184
|
+
direction: 'down',
|
|
185
|
+
marginRight: 1,
|
|
186
|
+
marginTop: 1,
|
|
187
|
+
size: "m"
|
|
188
|
+
});
|
|
277
189
|
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
}, [
|
|
297
|
-
return /*#__PURE__*/_react["default"].createElement(_TableHeadCell["default"], (0, _extends2["default"])({}, props, {
|
|
298
|
-
ref: ref
|
|
299
|
-
}), /*#__PURE__*/_react["default"].createElement(_Dropdown.Dropdown, {
|
|
300
|
-
tabIndex: 0,
|
|
301
|
-
disabled: setDisabled(sortedData),
|
|
302
|
-
ref: innerRef
|
|
303
|
-
}, /*#__PURE__*/_react["default"].createElement(_Dropdown.DropdownButton, {
|
|
190
|
+
var TableSortLabel = /*#__PURE__*/_react["default"].forwardRef(function TableSortLabel(_ref, _ref4) {
|
|
191
|
+
var labels = _ref.labels,
|
|
192
|
+
disabled = _ref.disabled,
|
|
193
|
+
children = _ref.children,
|
|
194
|
+
_ref$direction = _ref.direction,
|
|
195
|
+
direction = _ref$direction === void 0 ? 0 : _ref$direction,
|
|
196
|
+
onSort = _ref.onSort,
|
|
197
|
+
props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
|
|
198
|
+
// TODO: this is a workaround for the dropdown component
|
|
199
|
+
// https://itnext.io/reusing-the-ref-from-forwardref-with-react-hooks-4ce9df693dd
|
|
200
|
+
var dropdownRef = (0, _react.useRef)(null);
|
|
201
|
+
var active = [-1, 1].includes(direction);
|
|
202
|
+
return /*#__PURE__*/_react["default"].createElement(_Dropdown.Dropdown, (0, _extends2["default"])({
|
|
203
|
+
ref: function ref(el) {
|
|
204
|
+
dropdownRef.current = el;
|
|
205
|
+
typeof _ref4 === 'function' && _ref4(el);
|
|
206
|
+
},
|
|
207
|
+
disabled: disabled
|
|
208
|
+
}, props), /*#__PURE__*/_react["default"].createElement(_Dropdown.DropdownButton, {
|
|
304
209
|
variant: "link",
|
|
305
|
-
|
|
210
|
+
tabIndex: 0,
|
|
211
|
+
underline: active
|
|
306
212
|
}, children, /*#__PURE__*/_react["default"].createElement(_CaretContainer["default"], {
|
|
307
213
|
marginLeft: 1
|
|
308
|
-
},
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
|
|
214
|
+
}, /*#__PURE__*/_react["default"].createElement(_SvgIcon.CaretIcon, {
|
|
215
|
+
direction: 'up',
|
|
216
|
+
size: "m",
|
|
217
|
+
variant: direction === 1 ? 'dark' : 'gray'
|
|
218
|
+
}), /*#__PURE__*/_react["default"].createElement(_SvgIcon.CaretIcon, {
|
|
219
|
+
direction: 'down',
|
|
220
|
+
size: "m",
|
|
221
|
+
variant: direction === -1 ? 'dark' : 'gray'
|
|
222
|
+
}))), /*#__PURE__*/_react["default"].createElement(_Dropdown.DropdownContent, null, /*#__PURE__*/_react["default"].createElement(_NavVertical.NavVertical, null, /*#__PURE__*/_react["default"].createElement(_NavVerticalItem.NavVerticalItem, {
|
|
223
|
+
active: direction === 1,
|
|
224
|
+
tabIndex: 0,
|
|
225
|
+
onClick: function onClick() {
|
|
226
|
+
onSort(1);
|
|
227
|
+
dropdownRef.current && (dropdownRef.current.open = false);
|
|
228
|
+
},
|
|
229
|
+
onKeyDown: function onKeyDown(e) {
|
|
230
|
+
if (e.key === 'Enter') {
|
|
231
|
+
onSort(1);
|
|
232
|
+
dropdownRef.current && (dropdownRef.current.open = false);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}, _ref2, labels.asc), /*#__PURE__*/_react["default"].createElement(_NavVerticalItem.NavVerticalItem, {
|
|
236
|
+
active: direction === -1,
|
|
237
|
+
tabIndex: 0,
|
|
238
|
+
onClick: function onClick() {
|
|
239
|
+
onSort(-1);
|
|
240
|
+
dropdownRef.current && (dropdownRef.current.open = false);
|
|
241
|
+
},
|
|
242
|
+
onKeyDown: function onKeyDown(e) {
|
|
243
|
+
if (e.key === 'Enter') {
|
|
244
|
+
onSort(-1);
|
|
245
|
+
dropdownRef.current && (dropdownRef.current.open = false);
|
|
330
246
|
}
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
marginRight: 1,
|
|
334
|
-
marginTop: 1,
|
|
335
|
-
size: "m"
|
|
336
|
-
}), obj.label));
|
|
337
|
-
}))));
|
|
247
|
+
}
|
|
248
|
+
}, _ref3, labels.desc))));
|
|
338
249
|
});
|
|
339
250
|
|
|
340
|
-
exports.
|
|
251
|
+
exports.TableSortLabel = TableSortLabel;
|
|
341
252
|
var _default = _Table["default"];
|
|
342
253
|
exports["default"] = _default;
|
|
@@ -9,25 +9,31 @@ export * from '@digigov/react-extensions/admin/DropdownContent';
|
|
|
9
9
|
/**
|
|
10
10
|
* Dropdown component is used for showing more options with a button.
|
|
11
11
|
*/
|
|
12
|
-
export var Dropdown = /*#__PURE__*/React.forwardRef(function Dropdown(_ref,
|
|
12
|
+
export var Dropdown = /*#__PURE__*/React.forwardRef(function Dropdown(_ref, _ref2) {
|
|
13
13
|
var _ref$closeBehaviour = _ref.closeBehaviour,
|
|
14
14
|
closeBehaviour = _ref$closeBehaviour === void 0 ? 'clickOutside' : _ref$closeBehaviour,
|
|
15
15
|
_ref$float = _ref["float"],
|
|
16
16
|
_float = _ref$float === void 0 ? false : _ref$float,
|
|
17
17
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
18
18
|
|
|
19
|
-
var innerRef =
|
|
19
|
+
var innerRef = useRef(null);
|
|
20
20
|
useEffect(function () {
|
|
21
|
+
var element = innerRef.current;
|
|
22
|
+
|
|
23
|
+
if (!element) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
|
|
21
27
|
var keyDownHandler = function keyDownHandler(event) {
|
|
22
28
|
if (event.key === 'Escape') {
|
|
23
|
-
|
|
29
|
+
element.open = false;
|
|
24
30
|
event.preventDefault();
|
|
25
31
|
}
|
|
26
32
|
};
|
|
27
33
|
|
|
28
34
|
var handleClickOutside = function handleClickOutside(event) {
|
|
29
|
-
if (
|
|
30
|
-
|
|
35
|
+
if (element && !element.contains(event.target)) {
|
|
36
|
+
element.open = false;
|
|
31
37
|
}
|
|
32
38
|
};
|
|
33
39
|
|
|
@@ -38,42 +44,37 @@ export var Dropdown = /*#__PURE__*/React.forwardRef(function Dropdown(_ref, ref)
|
|
|
38
44
|
document.addEventListener('keydown', keyDownHandler);
|
|
39
45
|
|
|
40
46
|
var toggleFloat = function toggleFloat() {
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
var tbody = innerRef.current.closest('tbody');
|
|
44
|
-
var parentElement = (_innerRef$current = innerRef.current) === null || _innerRef$current === void 0 ? void 0 : _innerRef$current.parentElement;
|
|
45
|
-
|
|
46
|
-
if (innerRef.current.open) {
|
|
47
|
-
var _innerRef$current2;
|
|
47
|
+
var tbody = element.closest('tbody');
|
|
48
|
+
var parentElement = element === null || element === void 0 ? void 0 : element.parentElement;
|
|
48
49
|
|
|
50
|
+
if (element.open) {
|
|
49
51
|
tbody.style.position = 'static';
|
|
50
|
-
var rect =
|
|
52
|
+
var rect = element === null || element === void 0 ? void 0 : element.getBoundingClientRect();
|
|
51
53
|
var parentRect = parentElement.getBoundingClientRect();
|
|
52
|
-
|
|
54
|
+
element.style.position = 'static'; // arbitrary spacing of 12 pixels because CSS
|
|
53
55
|
|
|
54
56
|
var top = rect.top + window.pageYOffset;
|
|
55
57
|
var left = rect.left + window.pageXOffset;
|
|
56
58
|
parentElement.style.height = "".concat(parentRect.height, "px");
|
|
57
59
|
parentElement.style.width = "".concat(parentRect.width, "px");
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
60
|
+
element.style.top = "".concat(top, "px");
|
|
61
|
+
element.style.left = "".concat(left, "px");
|
|
62
|
+
element.style.position = "absolute";
|
|
63
|
+
element.style.display = "block";
|
|
64
|
+
element.style.background = 'white';
|
|
63
65
|
} else {
|
|
64
66
|
tbody.style.position = 'relative';
|
|
65
67
|
parentElement.style.height = '';
|
|
66
68
|
parentElement.style.width = '';
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
innerRef.current.style.background = 'transparent';
|
|
69
|
+
element.style.top = "0";
|
|
70
|
+
element.style.left = "0";
|
|
71
|
+
element.style.position = "relative";
|
|
72
|
+
element.style.display = "table-cell"; // element.style.background = 'transparent';
|
|
72
73
|
}
|
|
73
74
|
};
|
|
74
75
|
|
|
75
76
|
if (_float) {
|
|
76
|
-
|
|
77
|
+
element.addEventListener('toggle', toggleFloat);
|
|
77
78
|
}
|
|
78
79
|
|
|
79
80
|
return function () {
|
|
@@ -82,7 +83,7 @@ export var Dropdown = /*#__PURE__*/React.forwardRef(function Dropdown(_ref, ref)
|
|
|
82
83
|
}
|
|
83
84
|
|
|
84
85
|
if (_float) {
|
|
85
|
-
|
|
86
|
+
element.removeEventListener('toggle', toggleFloat);
|
|
86
87
|
}
|
|
87
88
|
|
|
88
89
|
document.removeEventListener('keydown', keyDownHandler);
|
|
@@ -91,7 +92,13 @@ export var Dropdown = /*#__PURE__*/React.forwardRef(function Dropdown(_ref, ref)
|
|
|
91
92
|
// @ts-ignore
|
|
92
93
|
|
|
93
94
|
return /*#__PURE__*/React.createElement(DropdownBase, _extends({
|
|
94
|
-
ref:
|
|
95
|
+
ref: function ref(el) {
|
|
96
|
+
innerRef.current = el;
|
|
97
|
+
|
|
98
|
+
if (typeof _ref2 === 'function') {
|
|
99
|
+
_ref2(el);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
95
102
|
}, props));
|
|
96
103
|
});
|
|
97
104
|
export { DropdownBase };
|
|
@@ -14,6 +14,7 @@ export * from './__stories__/VerticalHeaders';
|
|
|
14
14
|
export * from './__stories__/ZebraProp';
|
|
15
15
|
export * from './__stories__/NumericDataType';
|
|
16
16
|
export * from './__stories__/VerticalBorders';
|
|
17
|
+
export * from './__stories__/Stacked';
|
|
17
18
|
export * from './__stories__/DarkVariant';
|
|
18
19
|
export * from './__stories__/DarkVariantWithVerticalHeaders';
|
|
19
20
|
export * from './__stories__/WithLoader';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { TableContainer, Table, TableCaption, TableHead, TableRow, TableBody, TableHeadCell, TableDataCell } from '@digigov/ui/core/Table';
|
|
3
|
+
|
|
4
|
+
var _ref = /*#__PURE__*/React.createElement(TableContainer, null, /*#__PURE__*/React.createElement(Table, {
|
|
5
|
+
stacked: "always"
|
|
6
|
+
}, /*#__PURE__*/React.createElement(TableCaption, null, "\u03A0\u03B5\u03C1\u03AF\u03BF\u03B4\u03BF\u03C2 \u03BA\u03B1\u03B9 \u03C0\u03BF\u03C3\u03AC"), /*#__PURE__*/React.createElement(TableHead, null, /*#__PURE__*/React.createElement(TableRow, null, /*#__PURE__*/React.createElement(TableHeadCell, null, "\u03A0\u03B5\u03C1\u03AF\u03BF\u03B4\u03BF\u03C2"), /*#__PURE__*/React.createElement(TableHeadCell, null, "\u039A\u03B1\u03BD\u03BF\u03BD\u03B9\u03BA\u03CC \u03C0\u03BF\u03C3\u03CC"), /*#__PURE__*/React.createElement(TableHeadCell, null, "\u039C\u03B5\u03B9\u03C9\u03BC\u03AD\u03BD\u03BF \u03C0\u03BF\u03C3\u03CC"))), /*#__PURE__*/React.createElement(TableBody, null, /*#__PURE__*/React.createElement(TableRow, null, /*#__PURE__*/React.createElement(TableDataCell, {
|
|
7
|
+
"data-label": "\u03A0\u03B5\u03C1\u03AF\u03BF\u03B4\u03BF\u03C2"
|
|
8
|
+
}, "\u03A0\u03C1\u03CE\u03C4\u03B5\u03C2 6 \u03B5\u03B2\u03B4\u03BF\u03BC\u03AC\u03B4\u03B5\u03C2"), /*#__PURE__*/React.createElement(TableDataCell, {
|
|
9
|
+
"data-label": "\u039A\u03B1\u03BD\u03BF\u03BD\u03B9\u03BA\u03CC \u03C0\u03BF\u03C3\u03CC"
|
|
10
|
+
}, "\u20AC109.80 / \u03B5\u03B2\u03B4\u03BF\u03BC\u03AC\u03B4\u03B1"), /*#__PURE__*/React.createElement(TableDataCell, {
|
|
11
|
+
"data-label": "\u039C\u03B5\u03B9\u03C9\u03BC\u03AD\u03BD\u03BF \u03C0\u03BF\u03C3\u03CC"
|
|
12
|
+
}, "\u20AC69.80 / \u03B5\u03B2\u03B4\u03BF\u03BC\u03AC\u03B4\u03B1")), /*#__PURE__*/React.createElement(TableRow, null, /*#__PURE__*/React.createElement(TableDataCell, {
|
|
13
|
+
"data-label": "\u03A0\u03B5\u03C1\u03AF\u03BF\u03B4\u03BF\u03C2"
|
|
14
|
+
}, "\u0395\u03C0\u03CC\u03BC\u03B5\u03BD\u03B5\u03C2 33 \u03B5\u03B2\u03B4\u03BF\u03BC\u03AC\u03B4\u03B5\u03C2"), /*#__PURE__*/React.createElement(TableDataCell, {
|
|
15
|
+
"data-label": "\u039A\u03B1\u03BD\u03BF\u03BD\u03B9\u03BA\u03CC \u03C0\u03BF\u03C3\u03CC"
|
|
16
|
+
}, "\u20AC99.80 / \u03B5\u03B2\u03B4\u03BF\u03BC\u03AC\u03B4\u03B1"), /*#__PURE__*/React.createElement(TableDataCell, {
|
|
17
|
+
"data-label": "\u039C\u03B5\u03B9\u03C9\u03BC\u03AD\u03BD\u03BF \u03C0\u03BF\u03C3\u03CC"
|
|
18
|
+
}, "\u20AC64.80 / \u03B5\u03B2\u03B4\u03BF\u03BC\u03AC\u03B4\u03B1")), /*#__PURE__*/React.createElement(TableRow, null, /*#__PURE__*/React.createElement(TableDataCell, {
|
|
19
|
+
"data-label": "\u03A0\u03B5\u03C1\u03AF\u03BF\u03B4\u03BF\u03C2"
|
|
20
|
+
}, "\u03A3\u03C5\u03BD\u03BF\u03BB\u03B9\u03BA\u03CC \u03C0\u03BF\u03C3\u03CC "), /*#__PURE__*/React.createElement(TableDataCell, {
|
|
21
|
+
"data-label": "\u039A\u03B1\u03BD\u03BF\u03BD\u03B9\u03BA\u03CC \u03C0\u03BF\u03C3\u03CC"
|
|
22
|
+
}, "\u20AC4.282,20 "), /*#__PURE__*/React.createElement(TableDataCell, {
|
|
23
|
+
"data-label": "\u039C\u03B5\u03B9\u03C9\u03BC\u03AD\u03BD\u03BF \u03C0\u03BF\u03C3\u03CC"
|
|
24
|
+
}, " \u20AC3.282,20")))));
|
|
25
|
+
|
|
26
|
+
export var Stacked = function Stacked() {
|
|
27
|
+
return _ref;
|
|
28
|
+
};
|
|
29
|
+
export default Stacked;
|
|
@@ -1,54 +1,34 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/extends";
|
|
2
1
|
import React from 'react';
|
|
3
|
-
import { TableContainer, Table, TableCaption, TableHead, TableRow, TableBody,
|
|
4
|
-
|
|
2
|
+
import { TableContainer, Table, TableCaption, TableHead, TableRow, TableBody, TableHeadCell, TableDataCell, TableNoDataRow, TableSortLabel } from '@digigov/ui/core/Table';
|
|
3
|
+
import { useSort } from '@digigov/ui/hooks/useSort';
|
|
4
|
+
var headerConfig = [{
|
|
5
5
|
name: 'product',
|
|
6
6
|
label: 'Προϊόν',
|
|
7
|
-
sortLabels:
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}, {
|
|
12
|
-
label: 'Αλφαβητική σειρά (Ω -> Α)',
|
|
13
|
-
direction: 'desc',
|
|
14
|
-
value: -1
|
|
15
|
-
}]
|
|
7
|
+
sortLabels: {
|
|
8
|
+
asc: 'Αλφαβητική σειρά (Α -> Ω)',
|
|
9
|
+
desc: 'Αλφαβητική σειρά (Ω -> Α)'
|
|
10
|
+
}
|
|
16
11
|
}, {
|
|
17
12
|
name: 'price',
|
|
18
13
|
label: 'Τιμή',
|
|
19
|
-
sortLabels:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
}, {
|
|
24
|
-
label: 'Φθίνουσα σειρά',
|
|
25
|
-
direction: 'descending',
|
|
26
|
-
value: -1
|
|
27
|
-
}]
|
|
14
|
+
sortLabels: {
|
|
15
|
+
asc: 'Αύξουσα σειρά',
|
|
16
|
+
desc: 'Φθίνουσα σειρά'
|
|
17
|
+
}
|
|
28
18
|
}, {
|
|
29
19
|
name: 'stock',
|
|
30
20
|
label: 'Στοκ',
|
|
31
|
-
sortLabels:
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}, {
|
|
36
|
-
label: 'Φθίνουσα σειρά',
|
|
37
|
-
direction: 'descending',
|
|
38
|
-
value: -1
|
|
39
|
-
}]
|
|
21
|
+
sortLabels: {
|
|
22
|
+
asc: 'Αύξουσα σειρά',
|
|
23
|
+
desc: 'Φθίνουσα σειρά'
|
|
24
|
+
}
|
|
40
25
|
}, {
|
|
41
26
|
name: 'date',
|
|
42
27
|
label: 'Ημερομηνία',
|
|
43
|
-
sortLabels:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}, {
|
|
48
|
-
label: 'Φθίνουσα σειρά',
|
|
49
|
-
direction: 'descending',
|
|
50
|
-
value: -1
|
|
51
|
-
}]
|
|
28
|
+
sortLabels: {
|
|
29
|
+
asc: 'Αύξουσα σειρά',
|
|
30
|
+
desc: 'Φθίνουσα σειρά'
|
|
31
|
+
}
|
|
52
32
|
}];
|
|
53
33
|
var data = [{
|
|
54
34
|
id: 1,
|
|
@@ -99,25 +79,25 @@ var _ref = /*#__PURE__*/React.createElement(TableCaption, null, "Table of produc
|
|
|
99
79
|
var _ref2 = /*#__PURE__*/React.createElement(TableNoDataRow, null, "No data");
|
|
100
80
|
|
|
101
81
|
export var WithSortFilters = function WithSortFilters() {
|
|
102
|
-
var
|
|
103
|
-
sortedData =
|
|
104
|
-
|
|
82
|
+
var _useSort = useSort(data),
|
|
83
|
+
sortedData = _useSort.sortedData,
|
|
84
|
+
setSortedField = _useSort.setSortedField,
|
|
85
|
+
field = _useSort.field,
|
|
86
|
+
direction = _useSort.direction;
|
|
105
87
|
|
|
106
88
|
return /*#__PURE__*/React.createElement("div", {
|
|
107
89
|
className: "example"
|
|
108
|
-
}, /*#__PURE__*/React.createElement(TableContainer
|
|
109
|
-
|
|
110
|
-
* style={{
|
|
111
|
-
* overflow: 'inherit',
|
|
112
|
-
* }}
|
|
113
|
-
*/
|
|
114
|
-
, null, /*#__PURE__*/React.createElement(Table, null, _ref, /*#__PURE__*/React.createElement(TableHead, null, /*#__PURE__*/React.createElement(TableRow, null, headerItems && headerItems.length > 0 && headerItems.map(function (header, index) {
|
|
115
|
-
return /*#__PURE__*/React.createElement(TableHeadCellSort, _extends({
|
|
90
|
+
}, /*#__PURE__*/React.createElement(TableContainer, null, /*#__PURE__*/React.createElement(Table, null, _ref, /*#__PURE__*/React.createElement(TableHead, null, /*#__PURE__*/React.createElement(TableRow, null, headerConfig.map(function (header, index) {
|
|
91
|
+
return /*#__PURE__*/React.createElement(TableHeadCell, {
|
|
116
92
|
key: index
|
|
117
|
-
},
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
93
|
+
}, /*#__PURE__*/React.createElement(TableSortLabel, {
|
|
94
|
+
labels: header.sortLabels,
|
|
95
|
+
onSort: function onSort(dir) {
|
|
96
|
+
return setSortedField(header.name, dir);
|
|
97
|
+
},
|
|
98
|
+
direction: header.name === field ? direction : 0
|
|
99
|
+
}, header.label));
|
|
100
|
+
}))), /*#__PURE__*/React.createElement(TableBody, null, sortedData.length > 0 ? sortedData.map(function (d, index) {
|
|
121
101
|
return /*#__PURE__*/React.createElement(TableRow, {
|
|
122
102
|
key: index
|
|
123
103
|
}, /*#__PURE__*/React.createElement(TableDataCell, null, d.product), /*#__PURE__*/React.createElement(TableDataCell, null, d.price), /*#__PURE__*/React.createElement(TableDataCell, null, d.stock), /*#__PURE__*/React.createElement(TableDataCell, null, new Date(d.date).toLocaleDateString('en-GB')));
|