@carbon/ibm-products 1.59.0 → 1.60.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. package/css/index-full-carbon.css +97 -65
  2. package/css/index-full-carbon.css.map +1 -1
  3. package/css/index-full-carbon.min.css +3 -3
  4. package/css/index-full-carbon.min.css.map +1 -1
  5. package/css/index-without-carbon.css +53 -21
  6. package/css/index-without-carbon.css.map +1 -1
  7. package/css/index-without-carbon.min.css +2 -2
  8. package/css/index-without-carbon.min.css.map +1 -1
  9. package/css/index.css +97 -65
  10. package/css/index.css.map +1 -1
  11. package/css/index.min.css +3 -3
  12. package/css/index.min.css.map +1 -1
  13. package/es/components/Checklist/ChecklistChart.js +2 -2
  14. package/es/components/Datagrid/Datagrid/Datagrid.js +2 -1
  15. package/es/components/Datagrid/Datagrid/DatagridContent.js +15 -7
  16. package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +3 -2
  17. package/es/components/Datagrid/Datagrid/DatagridExpandedRow.js +26 -13
  18. package/es/components/Datagrid/Datagrid/DatagridRow.js +41 -33
  19. package/es/components/Datagrid/Datagrid/DatagridSelectAll.js +13 -1
  20. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +3 -15
  21. package/es/components/Datagrid/Datagrid/DraggableElement.js +32 -135
  22. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +14 -38
  23. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +1 -0
  24. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +128 -40
  25. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +7 -6
  26. package/es/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +104 -18
  27. package/es/components/Datagrid/Datagrid/addons/Filtering/constants.js +1 -0
  28. package/es/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +37 -4
  29. package/es/components/Datagrid/useExpandedRow.js +1 -1
  30. package/es/components/Datagrid/useFiltering.js +4 -1
  31. package/es/components/Datagrid/useNestedRowExpander.js +22 -9
  32. package/es/components/Datagrid/useRowExpander.js +22 -9
  33. package/es/components/Datagrid/utils/DatagridPagination.js +1 -1
  34. package/es/components/Datagrid/utils/getArgTypes.js +12 -0
  35. package/es/components/EmptyStates/EmptyState.js +1 -1
  36. package/es/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +1 -1
  37. package/es/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +1 -1
  38. package/es/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +1 -1
  39. package/es/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +1 -1
  40. package/es/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +1 -1
  41. package/es/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +1 -1
  42. package/es/components/EmptyStates/assets/ErrorIllustration.js +6 -11
  43. package/es/components/EmptyStates/assets/NoDataIllustration.js +6 -11
  44. package/es/components/EmptyStates/assets/NoTagsIllustration.js +6 -12
  45. package/es/components/EmptyStates/assets/NotFoundIllustration.js +6 -12
  46. package/es/components/EmptyStates/assets/NotificationsIllustration.js +6 -12
  47. package/es/components/EmptyStates/assets/UnauthorizedIllustration.js +6 -12
  48. package/es/components/FilterSummary/FilterSummary.js +9 -3
  49. package/es/components/TagSet/TagSet.js +3 -7
  50. package/es/global/js/hooks/useWindowScroll.js +5 -0
  51. package/lib/components/Checklist/ChecklistChart.js +2 -2
  52. package/lib/components/Datagrid/Datagrid/Datagrid.js +2 -1
  53. package/lib/components/Datagrid/Datagrid/DatagridContent.js +14 -6
  54. package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +2 -1
  55. package/lib/components/Datagrid/Datagrid/DatagridExpandedRow.js +26 -13
  56. package/lib/components/Datagrid/Datagrid/DatagridRow.js +41 -33
  57. package/lib/components/Datagrid/Datagrid/DatagridSelectAll.js +13 -1
  58. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +3 -15
  59. package/lib/components/Datagrid/Datagrid/DraggableElement.js +34 -140
  60. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +17 -38
  61. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +1 -0
  62. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +128 -47
  63. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterPanel.js +7 -6
  64. package/lib/components/Datagrid/Datagrid/addons/Filtering/FilterProvider.js +104 -24
  65. package/lib/components/Datagrid/Datagrid/addons/Filtering/constants.js +4 -2
  66. package/lib/components/Datagrid/Datagrid/addons/Filtering/hooks/useFilters.js +36 -3
  67. package/lib/components/Datagrid/useExpandedRow.js +1 -1
  68. package/lib/components/Datagrid/useFiltering.js +4 -1
  69. package/lib/components/Datagrid/useNestedRowExpander.js +24 -9
  70. package/lib/components/Datagrid/useRowExpander.js +24 -9
  71. package/lib/components/Datagrid/utils/DatagridPagination.js +1 -1
  72. package/lib/components/Datagrid/utils/getArgTypes.js +12 -0
  73. package/lib/components/EmptyStates/EmptyState.js +1 -1
  74. package/lib/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +1 -1
  75. package/lib/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +1 -1
  76. package/lib/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +1 -1
  77. package/lib/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +1 -1
  78. package/lib/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +1 -1
  79. package/lib/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +1 -1
  80. package/lib/components/EmptyStates/assets/ErrorIllustration.js +6 -11
  81. package/lib/components/EmptyStates/assets/NoDataIllustration.js +6 -11
  82. package/lib/components/EmptyStates/assets/NoTagsIllustration.js +6 -12
  83. package/lib/components/EmptyStates/assets/NotFoundIllustration.js +6 -12
  84. package/lib/components/EmptyStates/assets/NotificationsIllustration.js +6 -12
  85. package/lib/components/EmptyStates/assets/UnauthorizedIllustration.js +6 -12
  86. package/lib/components/FilterSummary/FilterSummary.js +9 -10
  87. package/lib/components/TagSet/TagSet.js +2 -6
  88. package/lib/global/js/hooks/useWindowScroll.js +6 -0
  89. package/package.json +8 -7
  90. package/scss/components/Datagrid/_datagrid.scss +1 -1
  91. package/scss/components/Datagrid/styles/_datagrid.scss +5 -0
  92. package/scss/components/Datagrid/styles/_draggableElement.scss +44 -20
  93. package/scss/components/Datagrid/styles/_useExpandedRow.scss +10 -0
  94. package/scss/components/Datagrid/styles/addons/_CustomizeColumnsTearsheet.scss +0 -1
@@ -15,6 +15,8 @@ var _classnames = _interopRequireDefault(require("classnames"));
15
15
  var _commonColumnIds = require("../common-column-ids");
16
16
  var _settings = require("../../../settings");
17
17
  var _excluded = ["children"];
18
+ 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; }
19
+ 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) { (0, _defineProperty2.default)(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; }
18
20
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
19
21
  var TableRow = _carbonComponentsReact.DataTable.TableRow,
20
22
  TableCell = _carbonComponentsReact.DataTable.TableCell;
@@ -31,7 +33,8 @@ var DatagridRow = function DatagridRow(datagridState) {
31
33
  var _cx;
32
34
  var row = datagridState.row,
33
35
  rowSize = datagridState.rowSize,
34
- withNestedRows = datagridState.withNestedRows;
36
+ withNestedRows = datagridState.withNestedRows,
37
+ prepareRow = datagridState.prepareRow;
35
38
  var getVisibleNestedRowCount = function getVisibleNestedRowCount(_ref) {
36
39
  var isExpanded = _ref.isExpanded,
37
40
  subRows = _ref.subRows;
@@ -46,6 +49,9 @@ var DatagridRow = function DatagridRow(datagridState) {
46
49
  };
47
50
  var hoverHandler = function hoverHandler(event) {
48
51
  var _hoverRow$style, _hoverRow$style2, _hoverRow$style3;
52
+ if (!withNestedRows) {
53
+ return;
54
+ }
49
55
  var subRowCount = getVisibleNestedRowCount(row);
50
56
  var totalNestedRowIndicatorHeight = (0, _layout.px)(subRowCount * rowHeights[rowSize]);
51
57
  var hoverRow = event.target.closest(".".concat(blockClass, "__carbon-row-expanded"));
@@ -62,48 +68,50 @@ var DatagridRow = function DatagridRow(datagridState) {
62
68
  el.classList.remove("".concat(blockClass, "__carbon-row-expanded-hover-active"));
63
69
  });
64
70
  };
65
- return /*#__PURE__*/_react.default.createElement(TableRow, (0, _extends2.default)({
66
- className: (0, _classnames.default)("".concat(blockClass, "__carbon-row"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expandable"), row.canExpand), (0, _defineProperty2.default)(_cx, "".concat(_settings.carbon.prefix, "--data-table--selected"), row.isSelected), _cx))
71
+ var renderExpandedRow = function renderExpandedRow() {
72
+ if (row.isExpanded) {
73
+ var _row$RowExpansionRend;
74
+ prepareRow(row);
75
+ return row === null || row === void 0 ? void 0 : (_row$RowExpansionRend = row.RowExpansionRenderer) === null || _row$RowExpansionRend === void 0 ? void 0 : _row$RowExpansionRend.call(row, _objectSpread(_objectSpread({}, datagridState), {}, {
76
+ row: row
77
+ }));
78
+ }
79
+ return null;
80
+ };
81
+ var handleMouseLeave = function handleMouseLeave(event) {
82
+ var hoverRow = event.target.closest(".".concat(blockClass, "__carbon-row-expanded"));
83
+ hoverRow === null || hoverRow === void 0 ? void 0 : hoverRow.classList.remove("".concat(blockClass, "__carbon-row-expanded-hover-active"));
84
+ };
85
+ var handleOnKeyUp = function handleOnKeyUp(event) {
86
+ if (!withNestedRows) {
87
+ return;
88
+ }
89
+ if (event.key === 'Enter' || event.key === 'Space') {
90
+ focusRemover();
91
+ hoverHandler(event);
92
+ }
93
+ };
94
+ var rowClassNames = (0, _classnames.default)("".concat(blockClass, "__carbon-row"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expanded"), row.isExpanded), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__carbon-row-expandable"), row.canExpand), (0, _defineProperty2.default)(_cx, "".concat(_settings.carbon.prefix, "--data-table--selected"), row.isSelected), _cx));
95
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(TableRow, (0, _extends2.default)({
96
+ className: rowClassNames
67
97
  }, row.getRowProps({
68
98
  role: false
69
99
  }), {
70
100
  key: row.id,
71
- onMouseEnter: function onMouseEnter(event) {
72
- if (!withNestedRows) {
73
- return;
74
- }
75
- hoverHandler(event);
76
- },
77
- onMouseLeave: function onMouseLeave(event) {
78
- var hoverRow = event.target.closest(".".concat(blockClass, "__carbon-row-expanded"));
79
- hoverRow === null || hoverRow === void 0 ? void 0 : hoverRow.classList.remove("".concat(blockClass, "__carbon-row-expanded-hover-active"));
80
- },
81
- onFocus: function onFocus(event) {
82
- if (!withNestedRows) {
83
- return;
84
- }
85
- hoverHandler(event);
86
- },
87
- onBlur: function onBlur() {
88
- focusRemover();
89
- },
90
- onKeyUp: function onKeyUp(event) {
91
- if (!withNestedRows) {
92
- return;
93
- }
94
- if (event.key === 'Enter' || event.key === 'Space') {
95
- focusRemover();
96
- hoverHandler(event);
97
- }
98
- }
101
+ onMouseEnter: hoverHandler,
102
+ onMouseLeave: handleMouseLeave,
103
+ onFocus: hoverHandler,
104
+ onBlur: focusRemover,
105
+ onKeyUp: handleOnKeyUp
99
106
  }), row.cells.map(function (cell, index) {
107
+ var _cell$column;
100
108
  var cellProps = cell.getCellProps({
101
109
  role: false
102
110
  });
103
111
  var children = cellProps.children,
104
112
  restProps = (0, _objectWithoutProperties2.default)(cellProps, _excluded);
105
113
  var content = children || /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !row.isSkeleton && cell.render('Cell'), row.isSkeleton && /*#__PURE__*/_react.default.createElement(_carbonComponentsReact.SkeletonText, null));
106
- if (cell && cell.column && cell.column.id === _commonColumnIds.selectionColumnId) {
114
+ if ((cell === null || cell === void 0 ? void 0 : (_cell$column = cell.column) === null || _cell$column === void 0 ? void 0 : _cell$column.id) === _commonColumnIds.selectionColumnId) {
107
115
  // directly render component without the wrapping TableCell
108
116
  return cell.render('Cell', {
109
117
  key: cell.column.id
@@ -114,7 +122,7 @@ var DatagridRow = function DatagridRow(datagridState) {
114
122
  }, restProps, {
115
123
  key: cell.column.id
116
124
  }), content);
117
- }));
125
+ })), renderExpandedRow());
118
126
  };
119
127
  var _default = DatagridRow;
120
128
  exports.default = _default;
@@ -52,11 +52,23 @@ var SelectAll = function SelectAll(datagridState) {
52
52
  var _getProps = getProps(),
53
53
  onChange = _getProps.onChange,
54
54
  selectProps = (0, _objectWithoutProperties2.default)(_getProps, _excluded);
55
+ var _ref = selectProps || {},
56
+ indeterminate = _ref.indeterminate;
57
+ var handleSelectAllChange = function handleSelectAllChange(event) {
58
+ if (indeterminate) {
59
+ return onChange === null || onChange === void 0 ? void 0 : onChange({
60
+ target: {
61
+ checked: false
62
+ }
63
+ });
64
+ }
65
+ return onChange === null || onChange === void 0 ? void 0 : onChange(event);
66
+ };
55
67
  return /*#__PURE__*/_react.default.createElement("div", {
56
68
  className: (0, _classnames.default)("".concat(blockClass, "__head-select-all"), "".concat(blockClass, "__checkbox-cell"), (0, _defineProperty2.default)({}, "".concat(blockClass, "__checkbox-cell-sticky-left"), isFirstColumnStickyLeft && windowSize > 671))
57
69
  }, /*#__PURE__*/_react.default.createElement(TableSelectAll, (0, _extends2.default)({}, selectProps, {
58
70
  name: "".concat(tableId, "-select-all-checkbox-name"),
59
- onSelect: onChange,
71
+ onSelect: handleSelectAllChange,
60
72
  disabled: isFetching || selectProps.disabled,
61
73
  id: "".concat(tableId, "-select-all-checkbox-id")
62
74
  })));
@@ -18,7 +18,7 @@ var _classnames = _interopRequireDefault(require("classnames"));
18
18
  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); }
19
19
  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; }
20
20
  /**
21
- * Copyright IBM Corp. 2022, 2022
21
+ * Copyright IBM Corp. 2022, 2023
22
22
  *
23
23
  * This source code is licensed under the Apache-2.0 license found in the
24
24
  * LICENSE file in the root directory of this source tree.
@@ -80,20 +80,8 @@ var DatagridBatchActionsToolbar = function DatagridBatchActionsToolbar(datagridS
80
80
  menuOptionsClass: "".concat(blockClass, "__button-menu-options"),
81
81
  flipped: true
82
82
  }, toolbarBatchActions && toolbarBatchActions.map(function (batchAction, index) {
83
- if (index < 2) {
84
- if (displayAllInMenu) {
85
- return /*#__PURE__*/_react.default.createElement(_ButtonMenu.ButtonMenuItem, {
86
- key: "".concat(batchAction.label, "-").concat(index),
87
- itemText: batchAction.label,
88
- onClick: function onClick() {
89
- batchAction.onClick();
90
- if (batchAction.type === 'select_all') {
91
- toggleAllRowsSelected(true);
92
- }
93
- }
94
- });
95
- }
96
- return null;
83
+ if (index < 2 && !displayAllInMenu) {
84
+ return;
97
85
  }
98
86
  return /*#__PURE__*/_react.default.createElement(_ButtonMenu.ButtonMenuItem, {
99
87
  key: "".concat(batchAction.label, "-").concat(index),
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- var _typeof = require("@babel/runtime/helpers/typeof");
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
- var React = _interopRequireWildcard(require("react"));
10
+ var _react = _interopRequireDefault(require("react"));
12
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
12
  var _iconsReact = require("@carbon/icons-react");
14
- var _reactDnd = require("react-dnd");
15
13
  var _classnames = _interopRequireDefault(require("classnames"));
16
14
  var _settings = require("../../../settings");
17
- 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); }
18
- 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; }
15
+ var _utilities = require("@dnd-kit/utilities");
16
+ var _sortable = require("@dnd-kit/sortable");
19
17
  // @flow
20
18
  /*
21
19
  * Licensed Materials - Property of IBM
@@ -25,161 +23,57 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
25
23
  * restricted by GSA ADP Schedule Contract with IBM Corp.
26
24
  */
27
25
 
28
- var useEffect = React.useEffect,
29
- useRef = React.useRef,
30
- useState = React.useState;
31
26
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
32
- var DRAG_TYPE = "".concat(blockClass, "__shared-ui-draggable-element");
33
27
  var DraggableElement = function DraggableElement(_ref) {
34
28
  var _cx;
35
29
  var id = _ref.id,
36
- index = _ref.index,
37
- listData = _ref.listData,
38
30
  children = _ref.children,
39
- type = _ref.type,
31
+ classList = _ref.classList,
40
32
  disabled = _ref.disabled,
41
33
  ariaLabel = _ref.ariaLabel,
42
- onGrab = _ref.onGrab,
43
- onArrowKeyDown = _ref.onArrowKeyDown,
44
- isFocused = _ref.isFocused,
45
34
  isSticky = _ref.isSticky,
46
- moveElement = _ref.moveElement,
47
- selected = _ref.selected,
48
- _ref$positionLabel = _ref.positionLabel,
49
- positionLabel = _ref$positionLabel === void 0 ? 'Current position {index} of {total}' : _ref$positionLabel,
50
- _ref$grabbedLabel = _ref.grabbedLabel,
51
- grabbedLabel = _ref$grabbedLabel === void 0 ? '{itemName} grabbed.' : _ref$grabbedLabel,
52
- _ref$droppedLabel = _ref.droppedLabel,
53
- droppedLabel = _ref$droppedLabel === void 0 ? '{itemName} dropped.' : _ref$droppedLabel;
54
- var ref = useRef();
55
- var _useDrop = (0, _reactDnd.useDrop)({
56
- accept: DRAG_TYPE + type,
57
- collect: function collect(monitor) {
58
- return {
59
- isOver: !!monitor.isOver()
60
- };
61
- },
62
- drop: function drop(item) {
63
- moveElement(item.index, index);
64
- },
65
- canDrop: function canDrop() {
66
- return !disabled;
67
- },
68
- hover: function hover(item) {
69
- var dragIndex = item.index;
70
- var hoverIndex = index;
71
- // Don't replace items with themselves
72
- if (dragIndex === hoverIndex || disabled) {
73
- return;
74
- }
75
- moveElement(dragIndex, hoverIndex);
76
- // Time to actually perform the action
77
- // Note: we're mutating the monitor item here!
78
- // Generally it's better to avoid mutations,
79
- // but it's good here for the sake of performance
80
- // to avoid expensive index searches.
81
- // eslint-disable-next-line no-param-reassign
82
- item.index = hoverIndex;
83
- }
35
+ selected = _ref.selected;
36
+ var _useSortable = (0, _sortable.useSortable)({
37
+ id: id
84
38
  }),
85
- _useDrop2 = (0, _slicedToArray2.default)(_useDrop, 2),
86
- isOver = _useDrop2[0].isOver,
87
- drop = _useDrop2[1];
88
- var _useDrag = (0, _reactDnd.useDrag)({
89
- type: DRAG_TYPE + type,
90
- item: {
91
- id: id,
92
- index: index
93
- },
94
- canDrag: function canDrag() {
95
- return !disabled;
96
- },
97
- collect: function collect(monitor) {
98
- return {
99
- isDragging: monitor.isDragging()
100
- };
101
- }
102
- }),
103
- _useDrag2 = (0, _slicedToArray2.default)(_useDrag, 3),
104
- isDragging = _useDrag2[0].isDragging,
105
- drag = _useDrag2[1],
106
- preview = _useDrag2[2];
107
- useEffect(function () {
108
- if (isFocused && ref && ref.current) {
109
- ref.current.focus();
110
- }
111
- }, [isFocused]);
112
- var _useState = useState(false),
113
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
114
- isGrabbed = _useState2[0],
115
- setIsGrabbed = _useState2[1];
116
- var _useState3 = useState(isFocused),
117
- _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
118
- isFocusedOnItem = _useState4[0],
119
- setIsFocusedOnItem = _useState4[1];
120
- drop(ref);
121
- var content = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
39
+ attributes = _useSortable.attributes,
40
+ isDragging = _useSortable.isDragging,
41
+ listeners = _useSortable.listeners,
42
+ setNodeRef = _useSortable.setNodeRef,
43
+ transform = _useSortable.transform,
44
+ transition = _useSortable.transition;
45
+ var content = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
122
46
  className: (0, _classnames.default)({
123
47
  disabled: disabled
124
48
  }, "".concat(blockClass, "__draggable-handleStyle"))
125
- }, isSticky ? /*#__PURE__*/React.createElement(_iconsReact.Locked16, null) : /*#__PURE__*/React.createElement(_iconsReact.Draggable16, null)), children);
126
- return /*#__PURE__*/React.createElement("li", {
127
- className: (0, _classnames.default)((_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder-isOver"), isOver && !disabled), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder-grabbed"), isGrabbed), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder-selected"), selected), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder--sticky"), isSticky), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder"), !selected), _cx)),
128
- ref: ref,
129
- "aria-selected": isFocused,
130
- role: "option",
131
- tabIndex: isFocused ? 0 : -1,
132
- onKeyPress: function onKeyPress(e) {
133
- if (e.key === ' ' && e.target === e.currentTarget && !disabled) {
134
- var positionText = positionLabel.replace('{index}', index + 1).replace('{total}', listData.length);
135
- var grabAriaText = (isGrabbed ? droppedLabel : grabbedLabel).replace('{itemName}', ariaLabel);
136
- onGrab(grabAriaText + positionText);
137
- setIsGrabbed(!isGrabbed);
138
- e.preventDefault();
139
- }
140
- },
141
- onKeyDown: function onKeyDown(e) {
142
- if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {
143
- onArrowKeyDown(e, isGrabbed, index);
144
- }
145
- },
146
- onBlur: function onBlur(e) {
147
- // handle when focus move to inner elements
148
- setIsFocusedOnItem(e.currentTarget === e.target);
149
- },
150
- onFocus: function onFocus(e) {
151
- // handle when focus move to li element
152
- setIsFocusedOnItem(e.currentTarget === e.target);
153
- }
154
- }, /*#__PURE__*/React.createElement("span", {
49
+ }, isSticky ? /*#__PURE__*/_react.default.createElement(_iconsReact.Locked16, null) : /*#__PURE__*/_react.default.createElement(_iconsReact.Draggable16, null)), children);
50
+ var style = {
51
+ transform: _utilities.CSS.Transform.toString(transform),
52
+ transition: transition
53
+ };
54
+ return /*#__PURE__*/_react.default.createElement("li", (0, _extends2.default)({
55
+ className: (0, _classnames.default)(classList, "".concat(blockClass, "__draggable-handleHolder"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder--selected"), selected), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder--sticky"), isSticky), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__draggable-handleHolder--dragging"), isDragging), _cx)),
56
+ id: id,
57
+ ref: setNodeRef,
58
+ style: style
59
+ }, attributes, listeners, {
60
+ disabled: disabled,
61
+ "aria-selected": selected,
62
+ role: "option"
63
+ }), /*#__PURE__*/_react.default.createElement("span", {
155
64
  className: "".concat(blockClass, "__shared-ui--assistive-text")
156
- }, ariaLabel), isDragging && !isOver ? /*#__PURE__*/React.createElement("div", {
157
- ref: preview,
158
- className: "".concat(blockClass, "__draggable-handleHolder-droppable ").concat(blockClass, "__draggable-handleHolder-droppable--origin")
159
- }, content) : /*#__PURE__*/React.createElement("div", {
160
- ref: drag,
161
- "aria-hidden": isFocused && isFocusedOnItem // if focus on li, hide the children from aria
162
- ,
65
+ }, ariaLabel), /*#__PURE__*/_react.default.createElement("div", {
163
66
  className: (0, _classnames.default)((0, _defineProperty2.default)({}, "".concat(blockClass, "__draggable-handleStyle"), !disabled), ["".concat(blockClass, "__draggable-handleHolder-droppable")])
164
- }, (!isOver || disabled) && content));
67
+ }, content));
165
68
  };
166
69
  DraggableElement.propTypes = {
167
70
  ariaLabel: _propTypes.default.string.isRequired,
168
71
  children: _propTypes.default.element.isRequired,
72
+ classList: _propTypes.default.string,
169
73
  disabled: _propTypes.default.bool,
170
- droppedLabel: _propTypes.default.string,
171
- grabbedLabel: _propTypes.default.string,
172
74
  id: _propTypes.default.string.isRequired,
173
- index: _propTypes.default.number.isRequired,
174
- isFocused: _propTypes.default.bool.isRequired,
175
75
  isSticky: _propTypes.default.bool,
176
- listData: _propTypes.default.array.isRequired,
177
- moveElement: _propTypes.default.func.isRequired,
178
- onArrowKeyDown: _propTypes.default.func.isRequired,
179
- onGrab: _propTypes.default.func.isRequired,
180
- positionLabel: _propTypes.default.string,
181
- selected: _propTypes.default.bool,
182
- type: _propTypes.default.string.isRequired
76
+ selected: _propTypes.default.bool
183
77
  };
184
78
  var _default = DraggableElement;
185
79
  exports.default = _default;
@@ -1,39 +1,31 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.default = void 0;
8
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
- var _react = _interopRequireDefault(require("react"));
11
+ var _react = _interopRequireWildcard(require("react"));
11
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
- var _reactDnd = require("react-dnd");
13
- var _reactDndHtml5Backend = require("react-dnd-html5-backend");
14
13
  var _carbonComponentsReact = require("carbon-components-react");
15
14
  var _immutabilityHelper = _interopRequireDefault(require("immutability-helper"));
16
15
  var _settings = require("../../../../../settings");
17
16
  var _classnames = _interopRequireDefault(require("classnames"));
18
17
  var _DraggableItemsList = require("./DraggableItemsList");
18
+ var _uuidv = _interopRequireDefault(require("../../../../../global/js/utils/uuidv4"));
19
+ 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); }
20
+ 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; }
19
21
  /**
20
- * Copyright IBM Corp. 2022, 2022
22
+ * Copyright IBM Corp. 2022, 2023
21
23
  *
22
24
  * This source code is licensed under the Apache-2.0 license found in the
23
25
  * LICENSE file in the root directory of this source tree.
24
26
  */
25
27
 
26
28
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
27
- var getNextIndex = function getNextIndex(array, currentIndex, key) {
28
- var newIndex = -1;
29
- if (key === 'ArrowUp') {
30
- newIndex = currentIndex - 1 >= 0 ? currentIndex - 1 : array.length - 1;
31
- }
32
- if (key === 'ArrowDown') {
33
- newIndex = currentIndex + 1 < array.length ? currentIndex + 1 : 0;
34
- }
35
- return newIndex;
36
- };
37
29
  var Columns = function Columns(_ref) {
38
30
  var getVisibleColumnsCount = _ref.getVisibleColumnsCount,
39
31
  filterString = _ref.filterString,
@@ -43,36 +35,26 @@ var Columns = function Columns(_ref) {
43
35
  assistiveTextInstructionsLabel = _ref.assistiveTextInstructionsLabel,
44
36
  assistiveTextDisabledInstructionsLabel = _ref.assistiveTextDisabledInstructionsLabel,
45
37
  selectAllLabel = _ref.selectAllLabel;
38
+ var listId = (0, _react.useRef)((0, _uuidv.default)()); // keep id between renders
39
+ var listRef = (0, _react.useRef)(null);
46
40
  var _React$useState = _react.default.useState(''),
47
41
  _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
48
42
  ariaRegionText = _React$useState2[0],
49
43
  setAriaRegionText = _React$useState2[1];
50
- var _React$useState3 = _react.default.useState(-1),
51
- _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
52
- focusIndex = _React$useState4[0],
53
- setFocusIndex = _React$useState4[1];
54
- var moveElement = _react.default.useCallback(function (dragIndex, hoverIndex) {
55
- var dragCard = columns[dragIndex];
44
+ // after a drag/drop action set the columns
45
+ var moveElement = _react.default.useCallback(function (from, to) {
46
+ var fromCol = columns[from];
56
47
  setColumnsObject((0, _immutabilityHelper.default)(columns, {
57
- $splice: [[dragIndex, 1], [hoverIndex, 0, dragCard]]
48
+ $splice: [[from, 1], [to, 0, fromCol]]
58
49
  }));
59
50
  }, [columns, setColumnsObject]);
60
51
  return /*#__PURE__*/_react.default.createElement("div", {
61
- className: "".concat(blockClass, "__customize-columns-column-list")
62
- }, /*#__PURE__*/_react.default.createElement(_reactDnd.DndProvider, {
63
- backend: _reactDndHtml5Backend.HTML5Backend
52
+ className: "".concat(blockClass, "__customize-columns-column-list"),
53
+ ref: listRef
64
54
  }, /*#__PURE__*/_react.default.createElement("ol", {
65
55
  className: "".concat(blockClass, "__customize-columns-column-list--focus"),
66
56
  role: "listbox",
67
57
  "aria-describedby": "".concat(blockClass, "__customize-columns--instructions"),
68
- onKeyDown: function onKeyDown(e) {
69
- var nextIndex = getNextIndex(columns, focusIndex, e.key);
70
- if (nextIndex >= 0) {
71
- setFocusIndex(nextIndex);
72
- e.preventDefault();
73
- e.stopPropagation();
74
- }
75
- },
76
58
  tabIndex: 0
77
59
  }, /*#__PURE__*/_react.default.createElement("span", {
78
60
  "aria-live": "assertive",
@@ -94,16 +76,13 @@ var Columns = function Columns(_ref) {
94
76
  id: "".concat(blockClass, "__customization-column-select-all"),
95
77
  labelText: selectAllLabel
96
78
  })), /*#__PURE__*/_react.default.createElement(_DraggableItemsList.DraggableItemsList, {
79
+ id: listId.current,
97
80
  columns: columns,
98
81
  filterString: filterString,
99
- focusIndex: focusIndex,
100
- getNextIndex: getNextIndex,
101
82
  moveElement: moveElement,
102
- onSelectColumn: onSelectColumn,
103
83
  setAriaRegionText: setAriaRegionText,
104
- setColumnsObject: setColumnsObject,
105
- setFocusIndex: setFocusIndex
106
- }))));
84
+ onSelectColumn: onSelectColumn
85
+ })));
107
86
  };
108
87
  Columns.propTypes = {
109
88
  assistiveTextDisabledInstructionsLabel: _propTypes.default.string,
@@ -77,6 +77,7 @@ var CustomizeColumnsTearsheet = function CustomizeColumnsTearsheet(_ref) {
77
77
  isDirty = _useState10[0],
78
78
  setIsDirty = _useState10[1];
79
79
  var onRequestClose = function onRequestClose() {
80
+ setColumnObjects(columnDefinitions);
80
81
  setIsTearsheetOpen(false);
81
82
  };
82
83
  var onRequestSubmit = function onRequestSubmit() {