@pingux/astro 2.25.0-alpha.0 → 2.25.0-alpha.2

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.
@@ -9,18 +9,21 @@ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object
9
9
  import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
10
10
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
11
11
  import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
12
+ import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
12
13
  var _excluded = ["children"],
13
14
  _excluded2 = ["children"],
14
15
  _excluded3 = ["item", "children", "hasActions"];
16
+ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/concat";
15
17
  function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
18
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
17
- import React, { forwardRef, useCallback, useMemo, useRef } from 'react';
18
- import { FocusRing, mergeProps, useFocusRing, useTable, useTableCell, useTableColumnHeader, useTableHeaderRow, useTableRow, useTableRowGroup, VisuallyHidden } from 'react-aria';
19
+ import React, { forwardRef, useCallback, useMemo, useRef, useState } from 'react';
20
+ import { FocusRing, mergeProps, useFocusRing, VisuallyHidden } from 'react-aria';
19
21
  import MenuDownIcon from '@pingux/mdi-react/MenuDownIcon';
20
22
  import MenuUpIcon from '@pingux/mdi-react/MenuUpIcon';
23
+ import { useTable, useTableCell, useTableColumnHeader, useTableHeaderRow, useTableRow, useTableRowGroup } from '@react-aria/table';
21
24
  import { layoutInfoToStyle, VirtualizerItem } from '@react-aria/virtualizer';
22
25
  import { TableLayout } from '@react-stately/layout';
23
- import { useTableColumnResizeState, useTableState } from '@react-stately/table';
26
+ import { TableColumnLayout, useTableState } from '@react-stately/table';
24
27
  import PropTypes from 'prop-types';
25
28
  import { DataTableContext, useDataTableContext } from '../../context/DataTableContext';
26
29
  import { useStatusClasses } from '../../hooks';
@@ -29,7 +32,11 @@ import DataTableVirtualizer from './DataTableVirtualizer';
29
32
  import { jsx as ___EmotionJSX } from "@emotion/react";
30
33
  var DEFAULT_HEADER_HEIGHT = {
31
34
  medium: 34,
32
- large: 37.5
35
+ large: 40
36
+ };
37
+ var DEFAULT_HIDE_HEADER_CELL_WIDTH = {
38
+ medium: 38,
39
+ large: 46
33
40
  };
34
41
  var ROW_HEIGHTS = {
35
42
  compact: {
@@ -41,43 +48,70 @@ var ROW_HEIGHTS = {
41
48
  large: 50
42
49
  },
43
50
  spacious: {
44
- medium: 48,
45
- large: 75
51
+ medium: 48
46
52
  }
47
53
  };
48
54
  var DataTable = /*#__PURE__*/forwardRef(function (props, ref) {
49
- var width = props.width,
50
- height = props.height,
51
- onAction = props.onAction;
52
- var direction = 'ltr'; // useLocale override
53
- var scale = 'large'; // useProvider override
54
-
55
+ var scale = 'large';
56
+ var direction = 'ltr';
57
+ var onAction = props.onAction;
55
58
  var getDefaultWidth = useCallback();
59
+ var getDefaultMinWidth = useCallback(function (_ref) {
60
+ var _ref$props = _ref.props,
61
+ hideHeader = _ref$props.hideHeader,
62
+ showDivider = _ref$props.showDivider;
63
+ if (hideHeader) {
64
+ var width = DEFAULT_HIDE_HEADER_CELL_WIDTH[scale];
65
+ /* istanbul ignore next */
66
+ return showDivider ? width + 1 : width;
67
+ }
68
+ return 75;
69
+ }, [scale]);
70
+
71
+ // Starts when the user selects resize from the menu, ends when resizing ends
72
+ // used to control the visibility of the resizer Nubbin
73
+ var _useState = useState(false),
74
+ _useState2 = _slicedToArray(_useState, 2),
75
+ isInResizeMode = _useState2[0],
76
+ setIsInResizeMode = _useState2[1];
77
+ // entering resizing/exiting resizing doesn't trigger a render
78
+ // with table layout, so we need to track it here
56
79
  var state = useTableState(_objectSpread({}, props));
57
- var columnState = useTableColumnResizeState(_objectSpread(_objectSpread({}, props), {}, {
58
- getDefaultWidth: getDefaultWidth
59
- }), state.collection);
60
80
  var domRef = useRef(ref);
81
+ var headerRef = useRef();
61
82
  var bodyRef = useRef();
62
83
  var density = props.density || 'regular';
84
+ var columnLayout = useMemo(function () {
85
+ return new TableColumnLayout({
86
+ getDefaultWidth: getDefaultWidth,
87
+ getDefaultMinWidth: getDefaultMinWidth
88
+ });
89
+ }, [getDefaultWidth, getDefaultMinWidth]);
63
90
  var layout = useMemo(function () {
64
91
  return new TableLayout({
65
- // If props.rowHeight is auto, then use estimated heights based on scale,
66
- // otherwise use fixed heights.
92
+ // If props.rowHeight is auto,
93
+ // then use estimated heights based on scale, otherwise use fixed heights.
67
94
  rowHeight: props.overflowMode === 'wrap' ? null : ROW_HEIGHTS[density][scale],
68
95
  estimatedRowHeight: props.overflowMode === 'wrap' ? ROW_HEIGHTS[density][scale] : null,
69
96
  headingHeight: props.overflowMode === 'wrap' ? null : DEFAULT_HEADER_HEIGHT[scale],
70
- estimatedHeadingHeight: props.overflowMode === 'wrap' ? DEFAULT_HEADER_HEIGHT[scale] : null
97
+ estimatedHeadingHeight: props.overflowMode === 'wrap' ? DEFAULT_HEADER_HEIGHT[scale] : null,
98
+ columnLayout: columnLayout,
99
+ initialCollection: state.collection
71
100
  });
72
- }, [props.overflowMode, scale, density]);
73
- layout.collection = state.collection;
74
- layout.getColumnWidth = columnState.getColumnWidth;
101
+ },
102
+ // don't recompute when state.collection changes, only used for initial value
103
+ // eslint-disable-next-line react-hooks/exhaustive-deps
104
+ [props.overflowMode, scale, density, columnLayout]);
75
105
  var _useTable = useTable(_objectSpread(_objectSpread({}, props), {}, {
76
106
  isVirtualized: true,
77
107
  layout: layout,
78
108
  onRowAction: onAction
79
109
  }), state, domRef),
80
110
  gridProps = _useTable.gridProps;
111
+ var _useState3 = useState(false),
112
+ _useState4 = _slicedToArray(_useState3, 2),
113
+ headerMenuOpen = _useState4[0],
114
+ setHeaderMenuOpen = _useState4[1];
81
115
 
82
116
  // This overrides collection view's renderWrapper to support DOM hierarchy.
83
117
  var renderWrapper = function renderWrapper(parent, reusableView, children, renderChildren) {
@@ -119,7 +153,12 @@ var DataTable = /*#__PURE__*/forwardRef(function (props, ref) {
119
153
  parent: parent
120
154
  });
121
155
  };
156
+
157
+ // Overrides default renderView
122
158
  var renderView = function renderView(type, item) {
159
+ var _item$column, _item$column2;
160
+ var isFirstColumn = (item === null || item === void 0 || (_item$column = item.column) === null || _item$column === void 0 ? void 0 : _item$column.index) === 0;
161
+ var isLastColumn = (item === null || item === void 0 || (_item$column2 = item.column) === null || _item$column2 === void 0 ? void 0 : _item$column2.index) === state.collection.columnCount - 1;
123
162
  switch (type) {
124
163
  case 'header':
125
164
  case 'rowgroup':
@@ -134,7 +173,9 @@ var DataTable = /*#__PURE__*/forwardRef(function (props, ref) {
134
173
  }
135
174
  case 'column':
136
175
  return ___EmotionJSX(TableColumnHeader, {
137
- column: item
176
+ column: item,
177
+ isFirst: isFirstColumn,
178
+ isLast: isLastColumn
138
179
  });
139
180
  case 'loader':
140
181
  return ___EmotionJSX(CenteredWrapper, null, ___EmotionJSX(Loader, {
@@ -157,29 +198,40 @@ var DataTable = /*#__PURE__*/forwardRef(function (props, ref) {
157
198
  }
158
199
  viewport.current = e;
159
200
  }, []);
201
+ var _useFocusRing = useFocusRing(),
202
+ isFocusVisible = _useFocusRing.isFocusVisible,
203
+ focusProps = _useFocusRing.focusProps;
204
+ var isEmpty = state.collection.size === 0;
205
+ var onFocusedResizer = function onFocusedResizer() {
206
+ /* istanbul ignore next */
207
+ bodyRef.current.scrollLeft = headerRef.current.scrollLeft;
208
+ };
209
+ var mergedProps = mergeProps(gridProps, focusProps);
160
210
  return ___EmotionJSX(DataTableContext.Provider, {
161
211
  value: {
162
212
  state: state,
163
213
  layout: layout,
164
- columnState: columnState
214
+ isInResizeMode: isInResizeMode,
215
+ setIsInResizeMode: setIsInResizeMode,
216
+ isEmpty: isEmpty,
217
+ onFocusedResizer: onFocusedResizer,
218
+ headerMenuOpen: headerMenuOpen,
219
+ setHeaderMenuOpen: setHeaderMenuOpen
165
220
  }
166
- }, ___EmotionJSX(DataTableVirtualizer, _extends({
167
- style: {
168
- whiteSpace: props.overflowMode === 'wrap' ? 'normal' : 'initial'
169
- }
170
- }, gridProps, {
171
- width: width,
172
- height: height,
221
+ }, ___EmotionJSX(DataTableVirtualizer, _extends({}, mergedProps, {
173
222
  layout: layout,
174
223
  collection: state.collection,
175
- focusedKey: state.selectionManager.focusedKey,
176
224
  renderView: renderView,
177
225
  renderWrapper: renderWrapper,
178
- setTableWidth: columnState.setTableWidth,
179
226
  onVisibleRectChange: onVisibleRectChange,
180
227
  domRef: domRef,
228
+ headerRef: headerRef,
181
229
  bodyRef: bodyRef,
182
- getColumnWidth: columnState.getColumnWidth
230
+ isFocusVisible: isFocusVisible,
231
+ height: props.height,
232
+ style: {
233
+ whiteSpace: props.overflowMode === 'wrap' ? 'normal' : 'initial'
234
+ }
183
235
  })));
184
236
  });
185
237
  DataTable.propTypes = {
@@ -212,7 +264,10 @@ DataTable.propTypes = {
212
264
  /** Callback function that fires when sortable column header is pressed. */
213
265
  onSortChange: PropTypes.func,
214
266
  /** Defines the current column key to sort by and the sort direction. */
215
- sortDescriptor: PropTypes.oneOf(['ascending', 'descending']),
267
+ sortDescriptor: PropTypes.oneOfType([PropTypes.shape({
268
+ column: PropTypes.string,
269
+ direction: PropTypes.oneOf(['ascending', 'descending'])
270
+ }), PropTypes.string]),
216
271
  /** Sets the width of table. */
217
272
  width: PropTypes.oneOfType([PropTypes.string, PropTypes.number])
218
273
  };
@@ -220,16 +275,18 @@ DataTable.defaultProps = {
220
275
  width: '100%',
221
276
  height: 565
222
277
  };
223
- function TableHeader(_ref) {
224
- var children = _ref.children,
225
- otherProps = _objectWithoutProperties(_ref, _excluded);
278
+ var TableHeader = function TableHeader(_ref2) {
279
+ var children = _ref2.children,
280
+ otherProps = _objectWithoutProperties(_ref2, _excluded);
226
281
  var _useTableRowGroup = useTableRowGroup(),
227
282
  rowGroupProps = _useTableRowGroup.rowGroupProps;
228
283
  return ___EmotionJSX(Box, _extends({}, rowGroupProps, otherProps), children);
229
- }
230
- function TableColumnHeader(props) {
231
- var _state$sortDescriptor, _state$sortDescriptor2;
232
- var column = props.column;
284
+ };
285
+ var TableColumnHeader = function TableColumnHeader(props) {
286
+ var _state$sortDescriptor, _state$sortDescriptor2, _useStatusClasses2, _state$sortDescriptor3;
287
+ var column = props.column,
288
+ isFirst = props.isFirst,
289
+ isLast = props.isLast;
233
290
  var ref = useRef(null);
234
291
  var _useDataTableContext = useDataTableContext(),
235
292
  state = _useDataTableContext.state;
@@ -240,11 +297,13 @@ function TableColumnHeader(props) {
240
297
  columnHeaderProps = _useTableColumnHeader.columnHeaderProps;
241
298
  var columnProps = column.props;
242
299
  var arrowIcon = ((_state$sortDescriptor = state.sortDescriptor) === null || _state$sortDescriptor === void 0 ? void 0 : _state$sortDescriptor.direction) === 'ascending' && column.key === ((_state$sortDescriptor2 = state.sortDescriptor) === null || _state$sortDescriptor2 === void 0 ? void 0 : _state$sortDescriptor2.column) ? ___EmotionJSX(Icon, {
300
+ size: 24,
243
301
  icon: MenuUpIcon,
244
302
  title: {
245
303
  name: 'Menu Up Icon'
246
304
  }
247
305
  }) : ___EmotionJSX(Icon, {
306
+ size: 24,
248
307
  icon: MenuDownIcon,
249
308
  color: "active",
250
309
  title: {
@@ -252,31 +311,32 @@ function TableColumnHeader(props) {
252
311
  }
253
312
  });
254
313
  var allProps = [columnHeaderProps];
255
- var _useStatusClasses = useStatusClasses(_defineProperty({
314
+ var _useStatusClasses = useStatusClasses((_useStatusClasses2 = {
256
315
  'is-column-sortable': columnProps.allowsSorting
257
- }, "is-align-".concat(columnProps.align), columnProps.align)),
316
+ }, _defineProperty(_useStatusClasses2, "is-align-".concat(columnProps.align), columnProps.align), _defineProperty(_useStatusClasses2, 'is-first-column', isFirst), _defineProperty(_useStatusClasses2, 'is-last-column', isLast), _useStatusClasses2)),
258
317
  classNames = _useStatusClasses.classNames;
259
318
  return ___EmotionJSX(FocusRing, {
260
319
  focusRingClass: "is-key-focused",
261
320
  focusClass: "is-click-focused"
262
- }, ___EmotionJSX(Box, _extends({}, mergeProps.apply(void 0, allProps), {
321
+ }, ___EmotionJSX(Box, _extends({
322
+ pl: column.index === 0 ? 0 : 'lg',
263
323
  ref: ref,
264
324
  variant: "dataTable.tableHeadCell",
265
325
  className: classNames
266
- }), columnProps.hideHeader ? ___EmotionJSX(VisuallyHidden, null, column.rendered) : ___EmotionJSX(Box, null, column.rendered), columnProps.allowsSorting && ___EmotionJSX(Box, null, arrowIcon)));
267
- }
268
- function TableRowGroup(_ref2) {
269
- var children = _ref2.children,
270
- otherProps = _objectWithoutProperties(_ref2, _excluded2);
326
+ }, mergeProps.apply(void 0, _concatInstanceProperty(allProps).call(allProps, [column.props.cellProps]))), columnProps.hideHeader ? ___EmotionJSX(VisuallyHidden, null, column.rendered) : ___EmotionJSX(Box, null, column.rendered), columnProps.allowsSorting && ((_state$sortDescriptor3 = state.sortDescriptor) === null || _state$sortDescriptor3 === void 0 ? void 0 : _state$sortDescriptor3.column) === column.key && ___EmotionJSX(Box, null, arrowIcon)));
327
+ };
328
+ var TableRowGroup = function TableRowGroup(_ref3) {
329
+ var children = _ref3.children,
330
+ otherProps = _objectWithoutProperties(_ref3, _excluded2);
271
331
  var _useTableRowGroup2 = useTableRowGroup(),
272
332
  rowGroupProps = _useTableRowGroup2.rowGroupProps;
273
333
  return ___EmotionJSX(Box, _extends({}, rowGroupProps, otherProps), children);
274
- }
275
- function TableRow(_ref3) {
276
- var item = _ref3.item,
277
- children = _ref3.children,
278
- hasActions = _ref3.hasActions,
279
- otherProps = _objectWithoutProperties(_ref3, _excluded3);
334
+ };
335
+ var TableRow = function TableRow(_ref4) {
336
+ var item = _ref4.item,
337
+ children = _ref4.children,
338
+ hasActions = _ref4.hasActions,
339
+ otherProps = _objectWithoutProperties(_ref4, _excluded3);
280
340
  var ref = useRef();
281
341
  var _useDataTableContext2 = useDataTableContext(),
282
342
  state = _useDataTableContext2.state;
@@ -285,14 +345,14 @@ function TableRow(_ref3) {
285
345
  isVirtualized: true
286
346
  }, state, ref),
287
347
  rowProps = _useTableRow.rowProps;
288
- var _useFocusRing = useFocusRing({
348
+ var _useFocusRing2 = useFocusRing({
289
349
  within: true
290
350
  }),
291
- isFocusVisibleWithin = _useFocusRing.isFocusVisible,
292
- focusWithinProps = _useFocusRing.focusProps;
293
- var _useFocusRing2 = useFocusRing(),
294
- isFocusVisible = _useFocusRing2.isFocusVisible,
295
- focusProps = _useFocusRing2.focusProps;
351
+ isFocusVisibleWithin = _useFocusRing2.isFocusVisible,
352
+ focusWithinProps = _useFocusRing2.focusProps;
353
+ var _useFocusRing3 = useFocusRing(),
354
+ isFocusVisible = _useFocusRing3.isFocusVisible,
355
+ focusProps = _useFocusRing3.focusProps;
296
356
  var props = mergeProps(rowProps, otherProps, focusWithinProps, focusProps);
297
357
  var _useStatusClasses3 = useStatusClasses({
298
358
  'is-row-focus-visible': isFocusVisible || isFocusVisibleWithin
@@ -303,11 +363,11 @@ function TableRow(_ref3) {
303
363
  variant: "dataTable.tableRow",
304
364
  className: classNames
305
365
  }), children);
306
- }
307
- function TableHeaderRow(_ref4) {
308
- var item = _ref4.item,
309
- children = _ref4.children,
310
- style = _ref4.style;
366
+ };
367
+ var TableHeaderRow = function TableHeaderRow(_ref5) {
368
+ var item = _ref5.item,
369
+ children = _ref5.children,
370
+ style = _ref5.style;
311
371
  var _useDataTableContext3 = useDataTableContext(),
312
372
  state = _useDataTableContext3.state;
313
373
  var ref = useRef();
@@ -320,9 +380,9 @@ function TableHeaderRow(_ref4) {
320
380
  ref: ref,
321
381
  style: style
322
382
  }), children);
323
- }
324
- function TableCell(_ref5) {
325
- var cell = _ref5.cell;
383
+ };
384
+ var TableCell = function TableCell(_ref6) {
385
+ var cell = _ref6.cell;
326
386
  var _useDataTableContext4 = useDataTableContext(),
327
387
  state = _useDataTableContext4.state;
328
388
  var ref = useRef();
@@ -336,16 +396,17 @@ function TableCell(_ref5) {
336
396
  classNames = _useStatusClasses4.classNames;
337
397
  return ___EmotionJSX(FocusRing, {
338
398
  focusRingClass: "is-key-focused"
339
- }, ___EmotionJSX(Box, _extends({}, gridCellProps, {
399
+ }, ___EmotionJSX(Box, _extends({
400
+ pl: cell.index === 0 ? 0 : 'lg',
340
401
  ref: ref,
341
402
  variant: "dataTable.tableCell",
342
403
  className: classNames
343
- }), ___EmotionJSX(Box, {
404
+ }, mergeProps(gridCellProps, cell.props.cellProps)), ___EmotionJSX(Box, {
344
405
  variant: "dataTable.tableCellContents"
345
406
  }, cell.rendered)));
346
- }
347
- function CenteredWrapper(_ref6) {
348
- var children = _ref6.children;
407
+ };
408
+ var CenteredWrapper = function CenteredWrapper(_ref7) {
409
+ var children = _ref7.children;
349
410
  var _useDataTableContext5 = useDataTableContext(),
350
411
  state = _useDataTableContext5.state;
351
412
  return ___EmotionJSX(Box, {
@@ -356,7 +417,7 @@ function CenteredWrapper(_ref6) {
356
417
  role: "rowheader",
357
418
  "aria-colspan": state.collection.columns.length
358
419
  }, children));
359
- }
420
+ };
360
421
  TableCell.propTypes = {
361
422
  cell: PropTypes.shape({
362
423
  column: PropTypes.shape({
@@ -364,7 +425,11 @@ TableCell.propTypes = {
364
425
  align: PropTypes.string
365
426
  })
366
427
  }),
428
+ index: PropTypes.number,
367
429
  parentKey: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
430
+ props: PropTypes.shape({
431
+ cellProps: PropTypes.shape({})
432
+ }),
368
433
  rendered: PropTypes.node
369
434
  })
370
435
  };
@@ -380,13 +445,17 @@ TableRow.propTypes = {
380
445
  };
381
446
  TableColumnHeader.propTypes = {
382
447
  column: PropTypes.shape({
448
+ index: PropTypes.number,
383
449
  key: PropTypes.string,
384
450
  props: PropTypes.shape({
385
451
  align: PropTypes.string,
386
452
  allowsSorting: PropTypes.bool,
453
+ cellProps: PropTypes.shape({}),
387
454
  hideHeader: PropTypes.bool
388
455
  }),
389
456
  rendered: PropTypes.node
390
- })
457
+ }),
458
+ isFirst: PropTypes.bool,
459
+ isLast: PropTypes.bool
391
460
  };
392
461
  export default DataTable;