@carbon/ibm-products 2.10.2 → 2.11.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. package/README.md +7 -0
  2. package/css/index-full-carbon.css +71 -26
  3. package/css/index-full-carbon.css.map +1 -1
  4. package/css/index-full-carbon.min.css +3 -3
  5. package/css/index-full-carbon.min.css.map +1 -1
  6. package/css/index-without-carbon-released-only.css +1 -0
  7. package/css/index-without-carbon-released-only.css.map +1 -1
  8. package/css/index-without-carbon-released-only.min.css.map +1 -1
  9. package/css/index-without-carbon.css +71 -26
  10. package/css/index-without-carbon.css.map +1 -1
  11. package/css/index-without-carbon.min.css +3 -3
  12. package/css/index-without-carbon.min.css.map +1 -1
  13. package/css/index.css +68 -25
  14. package/css/index.css.map +1 -1
  15. package/css/index.min.css +2 -2
  16. package/css/index.min.css.map +1 -1
  17. package/es/components/APIKeyModal/APIKeyModal.js +10 -3
  18. package/es/components/AboutModal/AboutModal.js +10 -3
  19. package/es/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +17 -5
  20. package/es/components/CreateModal/CreateModal.js +10 -3
  21. package/es/components/Datagrid/Datagrid/DatagridContent.js +9 -7
  22. package/es/components/Datagrid/Datagrid/DatagridEmptyBody.js +3 -2
  23. package/es/components/Datagrid/Datagrid/DatagridExpandedRow.js +26 -13
  24. package/es/components/Datagrid/Datagrid/DatagridRow.js +47 -40
  25. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +30 -37
  26. package/es/components/Datagrid/Datagrid/DraggableElement.js +36 -132
  27. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +17 -49
  28. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +125 -40
  29. package/es/components/Datagrid/Extensions/ExpandableRow/ExpandableRow.docs-page.js +1 -1
  30. package/es/components/Datagrid/useExpandedRow.js +1 -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/DatagridActions.js +1 -1
  34. package/es/components/Datagrid/utils/DatagridPagination.js +1 -1
  35. package/es/components/Datagrid/utils/getArgTypes.js +12 -0
  36. package/es/components/EditTearsheet/EditTearsheet.js +47 -38
  37. package/es/components/EditTearsheet/EditTearsheetForm.js +6 -0
  38. package/es/components/EditTearsheet/preview-components/MultiFormEditTearsheet.js +6 -1
  39. package/es/components/EmptyStates/EmptyState.js +1 -1
  40. package/es/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +1 -1
  41. package/es/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +1 -1
  42. package/es/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +1 -1
  43. package/es/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +1 -1
  44. package/es/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +1 -1
  45. package/es/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +1 -1
  46. package/es/components/EmptyStates/assets/ErrorIllustration.js +6 -11
  47. package/es/components/EmptyStates/assets/NoDataIllustration.js +6 -11
  48. package/es/components/EmptyStates/assets/NoTagsIllustration.js +6 -12
  49. package/es/components/EmptyStates/assets/NotFoundIllustration.js +6 -12
  50. package/es/components/EmptyStates/assets/NotificationsIllustration.js +6 -12
  51. package/es/components/EmptyStates/assets/UnauthorizedIllustration.js +6 -12
  52. package/es/components/ExportModal/ExportModal.js +10 -3
  53. package/es/components/ImportModal/ImportModal.js +10 -3
  54. package/es/components/RemoveModal/RemoveModal.js +10 -3
  55. package/es/components/TagSet/TagSet.js +5 -21
  56. package/es/components/TagSet/TagSetModal.js +7 -3
  57. package/es/components/Tearsheet/Tearsheet.js +2 -2
  58. package/es/components/Tearsheet/TearsheetNarrow.js +2 -2
  59. package/es/components/Tearsheet/TearsheetShell.js +14 -28
  60. package/es/global/decorators/sidePanelDecorator.js +7 -0
  61. package/es/global/js/hooks/usePortalTarget.js +30 -0
  62. package/es/global/js/hooks/useRetrieveFormTitles.js +20 -0
  63. package/es/global/js/hooks/useWindowScroll.js +5 -0
  64. package/es/global/js/package-settings.js +0 -1
  65. package/es/global/js/utils/getNodeTextContent.js +47 -0
  66. package/flags.js +6 -0
  67. package/lib/components/APIKeyModal/APIKeyModal.js +10 -3
  68. package/lib/components/AboutModal/AboutModal.js +10 -3
  69. package/lib/components/ButtonSetWithOverflow/ButtonSetWithOverflow.js +17 -5
  70. package/lib/components/CreateModal/CreateModal.js +10 -3
  71. package/lib/components/Datagrid/Datagrid/DatagridContent.js +9 -7
  72. package/lib/components/Datagrid/Datagrid/DatagridEmptyBody.js +2 -1
  73. package/lib/components/Datagrid/Datagrid/DatagridExpandedRow.js +26 -13
  74. package/lib/components/Datagrid/Datagrid/DatagridRow.js +46 -41
  75. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +30 -37
  76. package/lib/components/Datagrid/Datagrid/DraggableElement.js +37 -137
  77. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +20 -49
  78. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +130 -47
  79. package/lib/components/Datagrid/Extensions/ExpandableRow/ExpandableRow.docs-page.js +1 -1
  80. package/lib/components/Datagrid/useExpandedRow.js +1 -1
  81. package/lib/components/Datagrid/useNestedRowExpander.js +24 -9
  82. package/lib/components/Datagrid/useRowExpander.js +24 -9
  83. package/lib/components/Datagrid/utils/DatagridActions.js +1 -1
  84. package/lib/components/Datagrid/utils/DatagridPagination.js +1 -1
  85. package/lib/components/Datagrid/utils/getArgTypes.js +12 -0
  86. package/lib/components/EditTearsheet/EditTearsheet.js +47 -38
  87. package/lib/components/EditTearsheet/EditTearsheetForm.js +6 -0
  88. package/lib/components/EditTearsheet/preview-components/MultiFormEditTearsheet.js +6 -1
  89. package/lib/components/EmptyStates/EmptyState.js +1 -1
  90. package/lib/components/EmptyStates/ErrorEmptyState/ErrorEmptyState.js +1 -1
  91. package/lib/components/EmptyStates/NoDataEmptyState/NoDataEmptyState.js +1 -1
  92. package/lib/components/EmptyStates/NoTagsEmptyState/NoTagsEmptyState.js +1 -1
  93. package/lib/components/EmptyStates/NotFoundEmptyState/NotFoundEmptyState.js +1 -1
  94. package/lib/components/EmptyStates/NotificationsEmptyState/NotificationsEmptyState.js +1 -1
  95. package/lib/components/EmptyStates/UnauthorizedEmptyState/UnauthorizedEmptyState.js +1 -1
  96. package/lib/components/EmptyStates/assets/ErrorIllustration.js +6 -11
  97. package/lib/components/EmptyStates/assets/NoDataIllustration.js +6 -11
  98. package/lib/components/EmptyStates/assets/NoTagsIllustration.js +6 -12
  99. package/lib/components/EmptyStates/assets/NotFoundIllustration.js +6 -12
  100. package/lib/components/EmptyStates/assets/NotificationsIllustration.js +6 -12
  101. package/lib/components/EmptyStates/assets/UnauthorizedIllustration.js +6 -12
  102. package/lib/components/ExportModal/ExportModal.js +10 -3
  103. package/lib/components/ImportModal/ImportModal.js +10 -3
  104. package/lib/components/RemoveModal/RemoveModal.js +10 -3
  105. package/lib/components/TagSet/TagSet.js +5 -21
  106. package/lib/components/TagSet/TagSetModal.js +7 -3
  107. package/lib/components/Tearsheet/Tearsheet.js +2 -2
  108. package/lib/components/Tearsheet/TearsheetNarrow.js +2 -2
  109. package/lib/components/Tearsheet/TearsheetShell.js +14 -28
  110. package/lib/global/decorators/sidePanelDecorator.js +7 -0
  111. package/lib/global/js/hooks/usePortalTarget.js +38 -0
  112. package/lib/global/js/hooks/useRetrieveFormTitles.js +28 -0
  113. package/lib/global/js/hooks/useWindowScroll.js +6 -0
  114. package/lib/global/js/package-settings.js +0 -1
  115. package/lib/global/js/utils/getNodeTextContent.js +55 -0
  116. package/package.json +7 -3
  117. package/scss/components/ActionSet/_action-set.scss +2 -1
  118. package/scss/components/Datagrid/_datagrid.scss +9 -0
  119. package/scss/components/Datagrid/styles/_datagrid.scss +7 -6
  120. package/scss/components/Datagrid/styles/_draggableElement.scss +34 -16
  121. package/scss/components/Datagrid/styles/_useExpandedRow.scss +13 -0
  122. package/scss/components/Datagrid/styles/addons/_CustomizeColumnsTearsheet.scss +1 -1
  123. package/scss/components/Datagrid/styles/addons/_FilterFlyout.scss +23 -11
  124. package/scss/components/Datagrid/styles/addons/_FilterPanel.scss +7 -3
  125. package/scss/components/FilterSummary/_filter-summary.scss +3 -1
  126. package/scss/global/decorators/_side-panel-decorator.scss +7 -0
  127. package/scss/global/js/utils/_story-as-full-page.scss +0 -6
@@ -1,18 +1,23 @@
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
13
  var _react2 = require("@carbon/react");
14
+ var _immutabilityHelper = _interopRequireDefault(require("immutability-helper"));
13
15
  var _settings = require("../../../../../settings");
14
16
  var _classnames = _interopRequireDefault(require("classnames"));
15
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; }
16
21
  /**
17
22
  * Copyright IBM Corp. 2022, 2023
18
23
  *
@@ -20,20 +25,7 @@ var _DraggableItemsList = require("./DraggableItemsList");
20
25
  * LICENSE file in the root directory of this source tree.
21
26
  */
22
27
 
23
- // import { DndProvider } from 'react-dnd';
24
- // import { HTML5Backend } from 'react-dnd-html5-backend';
25
- // import update from 'immutability-helper';
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,43 +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
- // const moveElement = React.useCallback(
55
- // (dragIndex, hoverIndex) => {
56
- // const dragCard = columns[dragIndex];
57
- // setColumnsObject(
58
- // update(columns, {
59
- // $splice: [
60
- // [dragIndex, 1],
61
- // [hoverIndex, 0, dragCard],
62
- // ],
63
- // })
64
- // );
65
- // },
66
- // [columns, setColumnsObject]
67
- // );
68
-
44
+ // after a drag/drop action set the columns
45
+ var moveElement = _react.default.useCallback(function (from, to) {
46
+ var fromCol = columns[from];
47
+ setColumnsObject((0, _immutabilityHelper.default)(columns, {
48
+ $splice: [[from, 1], [to, 0, fromCol]]
49
+ }));
50
+ }, [columns, setColumnsObject]);
69
51
  return /*#__PURE__*/_react.default.createElement("div", {
70
- className: "".concat(blockClass, "__customize-columns-column-list")
52
+ className: "".concat(blockClass, "__customize-columns-column-list"),
53
+ ref: listRef
71
54
  }, /*#__PURE__*/_react.default.createElement("ol", {
72
55
  className: "".concat(blockClass, "__customize-columns-column-list--focus"),
73
56
  role: "listbox",
74
57
  "aria-describedby": "".concat(blockClass, "__customize-columns--instructions"),
75
- onKeyDown: function onKeyDown(e) {
76
- var nextIndex = getNextIndex(columns, focusIndex, e.key);
77
- if (nextIndex >= 0) {
78
- setFocusIndex(nextIndex);
79
- e.preventDefault();
80
- e.stopPropagation();
81
- }
82
- },
83
58
  tabIndex: 0
84
59
  }, /*#__PURE__*/_react.default.createElement("span", {
85
60
  "aria-live": "assertive",
@@ -101,16 +76,12 @@ var Columns = function Columns(_ref) {
101
76
  id: "".concat(blockClass, "__customization-column-select-all"),
102
77
  labelText: selectAllLabel
103
78
  })), /*#__PURE__*/_react.default.createElement(_DraggableItemsList.DraggableItemsList, {
79
+ id: listId.current,
104
80
  columns: columns,
105
81
  filterString: filterString,
106
- focusIndex: focusIndex,
107
- getNextIndex: getNextIndex
108
- // moveElement={moveElement}
109
- ,
110
- onSelectColumn: onSelectColumn,
82
+ moveElement: moveElement,
111
83
  setAriaRegionText: setAriaRegionText,
112
- setColumnsObject: setColumnsObject,
113
- setFocusIndex: setFocusIndex
84
+ onSelectColumn: onSelectColumn
114
85
  })));
115
86
  };
116
87
  Columns.propTypes = {
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.DraggableItemsList = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
9
  var _react = _interopRequireDefault(require("react"));
9
10
  var _propTypes = require("prop-types");
10
11
  var _react2 = require("@carbon/react");
@@ -12,24 +13,28 @@ var _common = require("./common");
12
13
  var _DraggableElement = _interopRequireDefault(require("../../DraggableElement"));
13
14
  var _settings = require("../../../../../settings");
14
15
  var _getColTitle2 = _interopRequireDefault(require("../../../utils/getColTitle"));
15
- /**
16
- * Copyright IBM Corp. 2023, 2023
17
- *
18
- * This source code is licensed under the Apache-2.0 license found in the
19
- * LICENSE file in the root directory of this source tree.
20
- */
21
-
16
+ var _core = require("@dnd-kit/core");
17
+ var _sortable = require("@dnd-kit/sortable");
18
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } /**
20
+ * Copyright IBM Corp. 2023, 2023
21
+ *
22
+ * This source code is licensed under the Apache-2.0 license found in the
23
+ * LICENSE file in the root directory of this source tree.
24
+ */
22
25
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
26
+ var matchedColsById = function matchedColsById(col1, col2) {
27
+ return col1 && col2 && col1.id === col2.id;
28
+ };
23
29
  var DraggableItemsList = function DraggableItemsList(_ref) {
24
30
  var columns = _ref.columns,
25
31
  filterString = _ref.filterString,
26
- focusIndex = _ref.focusIndex,
27
- getNextIndex = _ref.getNextIndex,
32
+ id = _ref.id,
33
+ moveElement = _ref.moveElement,
28
34
  onSelectColumn = _ref.onSelectColumn,
29
- setAriaRegionText = _ref.setAriaRegionText,
30
- setColumnsObject = _ref.setColumnsObject,
31
- setFocusIndex = _ref.setFocusIndex;
32
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, columns
35
+ setAriaRegionText = _ref.setAriaRegionText;
36
+ var draggableClass = "".concat(blockClass, "__draggable-item");
37
+ var visibleCols = columns
33
38
  // hide the columns without Header, e.g the sticky actions, spacer
34
39
  .filter(function (colDef) {
35
40
  return !!(0, _getColTitle2.default)(colDef);
@@ -38,7 +43,108 @@ var DraggableItemsList = function DraggableItemsList(_ref) {
38
43
  }).filter(function (colDef) {
39
44
  var _getColTitle;
40
45
  return filterString.length === 0 || ((_getColTitle = (0, _getColTitle2.default)(colDef)) === null || _getColTitle === void 0 ? void 0 : _getColTitle.toLowerCase().includes(filterString)) && colDef.id !== 'spacer';
41
- }).map(function (colDef, i) {
46
+ });
47
+
48
+ // let localRefCopy;
49
+ var handleDragEnd = function handleDragEnd(event) {
50
+ var active = event.active,
51
+ over = event.over;
52
+ var fromVisibleIndex = columns.findIndex(function (col) {
53
+ return matchedColsById(col, active);
54
+ });
55
+ var toVisibleIndex = columns.findIndex(function (col) {
56
+ return matchedColsById(col, over);
57
+ });
58
+ var colTitle = (0, _getColTitle2.default)(visibleCols[fromVisibleIndex]);
59
+ setAriaRegionText("".concat(colTitle, " dropped. New position ").concat(toVisibleIndex + 1, " of ").concat(visibleCols.length, "."));
60
+ var fromIndex = columns.findIndex(function (col) {
61
+ return matchedColsById(col, active);
62
+ });
63
+ var toIndex = columns.findIndex(function (col) {
64
+ return matchedColsById(col, over);
65
+ });
66
+ moveElement(fromIndex, toIndex);
67
+ };
68
+ var handleDragStart = function handleDragStart(event) {
69
+ var active = event.active;
70
+ var fromIndex = visibleCols.findIndex(function (col) {
71
+ return matchedColsById(col, active);
72
+ });
73
+ var colTitle = (0, _getColTitle2.default)(visibleCols[fromIndex]);
74
+ setAriaRegionText("".concat(colTitle, " grabbed. Current position ").concat(fromIndex + 1, " of ").concat(visibleCols.length, "."));
75
+ };
76
+ var handleDragUpdate = function handleDragUpdate(event) {
77
+ var active = event.active,
78
+ over = event.over;
79
+ var fromIndex = visibleCols.findIndex(function (col) {
80
+ return matchedColsById(col, active);
81
+ });
82
+ var toIndex = visibleCols.findIndex(function (col) {
83
+ return matchedColsById(col, over);
84
+ });
85
+ var colTitle = (0, _getColTitle2.default)(visibleCols[fromIndex]);
86
+ setAriaRegionText("".concat(colTitle, " grabbed. Original position ").concat(fromIndex + 1, ", new position ").concat(toIndex + 1, " of ").concat(visibleCols.length, "."));
87
+ };
88
+ var pointerSensor = (0, _core.useSensor)(_core.PointerSensor, {
89
+ // Require the mouse to move by 10 pixels before activating
90
+ activationConstraint: {
91
+ distance: 4
92
+ }
93
+ });
94
+ var keyboardSensor = (0, _core.useSensor)(_core.KeyboardSensor, {
95
+ coordinateGetter: function coordinateGetter(event, args) {
96
+ var currentCoordinates = args.currentCoordinates;
97
+ var target = event.target;
98
+ while (target && !target.classList.contains(draggableClass)) {
99
+ target = target.parentNode;
100
+ }
101
+ var delta = target.offsetHeight;
102
+ switch (event.code) {
103
+ case 'ArrowRight':
104
+ case 'ArrowLeft':
105
+ // ignore right and left
106
+ return currentCoordinates;
107
+ case 'ArrowUp':
108
+ return _objectSpread(_objectSpread({}, currentCoordinates), {}, {
109
+ y: currentCoordinates.y - delta
110
+ });
111
+ case 'ArrowDown':
112
+ return _objectSpread(_objectSpread({}, currentCoordinates), {}, {
113
+ y: currentCoordinates.y + delta
114
+ });
115
+ case 'Space':
116
+ break;
117
+ }
118
+ }
119
+ });
120
+ var sensors = (0, _core.useSensors)(pointerSensor, keyboardSensor);
121
+ var handleCheckboxKeydown = function handleCheckboxKeydown(event, colDef) {
122
+ if (event.code === 'Space') {
123
+ onSelectColumn(colDef, !(0, _common.isColumnVisible)(colDef));
124
+ event.preventDefault();
125
+ event.stopPropagation();
126
+ return false;
127
+ }
128
+ };
129
+ return /*#__PURE__*/_react.default.createElement(_core.DndContext, {
130
+ collisionDetection: _core.closestCenter,
131
+ onDragEnd: handleDragEnd,
132
+ onDragStart: handleDragStart,
133
+ onDragMove: handleDragUpdate,
134
+ sensors: sensors
135
+ }, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
136
+ className: "".concat(blockClass, "__draggable-underlay"),
137
+ "aria-hidden": "true",
138
+ key: "draggable-underlay-".concat(id)
139
+ }, visibleCols.map(function (colDef) {
140
+ return /*#__PURE__*/_react.default.createElement("div", {
141
+ className: "".concat(blockClass, "__draggable-underlay-item"),
142
+ key: colDef.id
143
+ });
144
+ })), /*#__PURE__*/_react.default.createElement(_sortable.SortableContext, {
145
+ items: visibleCols,
146
+ strategy: _sortable.verticalListSortingStrategy
147
+ }, visibleCols.map(function (colDef) {
42
148
  var colHeaderTitle = (0, _getColTitle2.default)(colDef);
43
149
  var searchString = new RegExp('(' + filterString + ')');
44
150
  var res = filterString.length ? colHeaderTitle.toLowerCase().split(searchString) : null;
@@ -46,7 +152,6 @@ var DraggableItemsList = function DraggableItemsList(_ref) {
46
152
  var highlightedText = res !== null ? res[0] === '' ? "<strong>".concat(firstWord, "</strong>") + res[2] : firstWord + "<strong>".concat(res[1], "</strong>") + res[2] : colHeaderTitle;
47
153
  var isFrozenColumn = !!colDef.sticky;
48
154
  var listContents = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_react2.Checkbox, {
49
- wrapperClassName: "".concat(blockClass, "__customize-columns-checkbox-wrapper"),
50
155
  checked: (0, _common.isColumnVisible)(colDef),
51
156
  disabled: isFrozenColumn,
52
157
  onChange: function onChange(_, _ref2) {
@@ -57,7 +162,10 @@ var DraggableItemsList = function DraggableItemsList(_ref) {
57
162
  labelText: colHeaderTitle,
58
163
  title: colHeaderTitle,
59
164
  className: "".concat(blockClass, "__customize-columns-checkbox"),
60
- hideLabel: true
165
+ hideLabel: true,
166
+ onKeyDown: function onKeyDown(event) {
167
+ return handleCheckboxKeydown(event, colDef);
168
+ }
61
169
  }), /*#__PURE__*/_react.default.createElement("div", {
62
170
  dangerouslySetInnerHTML: {
63
171
  __html: highlightedText
@@ -65,47 +173,22 @@ var DraggableItemsList = function DraggableItemsList(_ref) {
65
173
  className: "".concat(blockClass, "__customize-columns-checkbox-visible-label")
66
174
  }));
67
175
  return /*#__PURE__*/_react.default.createElement(_DraggableElement.default, {
176
+ classList: draggableClass,
68
177
  key: colDef.id,
69
- index: i,
70
- listData: columns,
71
- setListData: setColumnsObject,
72
- id: "dnd-datagrid-columns-".concat(colDef.id),
73
- type: "column-customization",
178
+ id: colDef.id,
74
179
  disabled: filterString.length > 0 || isFrozenColumn,
75
180
  ariaLabel: colHeaderTitle,
76
- onGrab: setAriaRegionText,
77
- isFocused: focusIndex === i
78
- // moveElement={moveElement}
79
- ,
80
- onArrowKeyDown: function onArrowKeyDown(e, isGrabbed, currentIndex) {
81
- if (isGrabbed) {
82
- var _columns$nextIndex;
83
- var nextIndex = getNextIndex(columns, currentIndex, e.key);
84
- e.preventDefault();
85
- e.stopPropagation();
86
- if (nextIndex >= 0 && !((_columns$nextIndex = columns[nextIndex]) !== null && _columns$nextIndex !== void 0 && _columns$nextIndex.sticky)) {
87
- setFocusIndex(nextIndex);
88
- // moveElement(currentIndex, nextIndex);
89
- e.target.scrollIntoView({
90
- block: 'center'
91
- });
92
- }
93
- }
94
- },
95
181
  isSticky: isFrozenColumn,
96
182
  selected: (0, _common.isColumnVisible)(colDef)
97
183
  }, listContents);
98
- }));
184
+ }))));
99
185
  };
100
186
  exports.DraggableItemsList = DraggableItemsList;
101
187
  DraggableItemsList.propTypes = {
102
188
  columns: _propTypes.PropTypes.array.isRequired,
103
189
  filterString: _propTypes.PropTypes.string.isRequired,
104
- focusIndex: _propTypes.PropTypes.number.isRequired,
105
- getNextIndex: _propTypes.PropTypes.func.isRequired,
106
- // moveElement: PropTypes.func.isRequired,
190
+ id: _propTypes.PropTypes.string.isRequired,
191
+ moveElement: _propTypes.PropTypes.func.isRequired,
107
192
  onSelectColumn: _propTypes.PropTypes.func.isRequired,
108
- setAriaRegionText: _propTypes.PropTypes.func.isRequired,
109
- setColumnsObject: _propTypes.PropTypes.func.isRequired,
110
- setFocusIndex: _propTypes.PropTypes.func.isRequired
193
+ setAriaRegionText: _propTypes.PropTypes.func.isRequired
111
194
  };
@@ -13,7 +13,7 @@ var DocsPage = function DocsPage() {
13
13
  description: "The `Datagrid` supports expandable rows with the use of the `useExpandedRow` hook.",
14
14
  source: {
15
15
  language: 'jsx',
16
- code: "\nimport { Datagrid, useDatagrid, useExpandedRow } from '@carbon/ibm-products';\n\nconst App = () => {\n const columns = React.useMemo(() => defaultHeader, []); // These are the columns that will be used by the datagrid\n const [data] = useState(makeData(10)); // This is the data that will be rendered by the datagrid\n\n const expansionRenderer = ({ row }) => {\n return <div>Content for row index: {row.id}</div>;\n };\n\n const datagridState = useDatagrid(\n {\n columns,\n data,\n ExpandedRowContentComponent: expansionRenderer,\n },\n useExpandedRow\n );\n\n return <Datagrid datagridState={datagridState} />;\n};\n "
16
+ code: "\nimport { Datagrid, useDatagrid, useExpandedRow } from '@carbon/ibm-products';\n\nconst App = () => {\n const columns = React.useMemo(() => defaultHeader, []); // These are the columns that will be used by the datagrid\n const [data] = useState(makeData(10)); // This is the data that will be rendered by the datagrid\n\n const expansionRenderer = ({ row }) => {\n return <div>Content for row index: {row.id}</div>;\n };\n\n const datagridState = useDatagrid(\n {\n columns,\n data,\n ExpandedRowContentComponent: expansionRenderer,\n expanderButtonTitleExpanded: 'Collapse row',\n expanderButtonTitleCollapsed: 'Expand row', \n },\n useExpandedRow\n );\n\n return <Datagrid datagridState={datagridState} />;\n};\n "
17
17
  }
18
18
  }]
19
19
  });
@@ -38,7 +38,7 @@ var useExpandedRow = function useExpandedRow(hooks) {
38
38
  return _objectSpread(_objectSpread({}, row), {}, {
39
39
  canExpand: row.original && !row.original.notExpandable,
40
40
  expandedContentHeight: expandedRowsHeight[row.index] || expandedContentHeight,
41
- RowRenderer: (0, _DatagridExpandedRow.default)(row.RowRenderer, ExpandedRowContentComponent)
41
+ RowExpansionRenderer: (0, _DatagridExpandedRow.default)(ExpandedRowContentComponent)
42
42
  });
43
43
  });
44
44
  Object.assign(instance, {
@@ -1,6 +1,7 @@
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
  });
@@ -8,32 +9,45 @@ exports.default = void 0;
8
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
- var _react = _interopRequireDefault(require("react"));
12
+ var _react = _interopRequireWildcard(require("react"));
12
13
  var _icons = require("@carbon/react/icons");
13
14
  var _classnames = _interopRequireDefault(require("classnames"));
14
15
  var _settings = require("../../settings");
16
+ 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); }
17
+ 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
18
  /* eslint-disable react/prop-types */
16
- /*
17
- * Licensed Materials - Property of IBM
18
- * 5724-Q36
19
- * (c) Copyright IBM Corp. 2020
20
- * US Government Users Restricted Rights - Use, duplication or disclosure
21
- * restricted by GSA ADP Schedule Contract with IBM Corp.
19
+ /**
20
+ * Copyright IBM Corp. 2020, 2023
21
+ *
22
+ * This source code is licensed under the Apache-2.0 license found in the
23
+ * LICENSE file in the root directory of this source tree.
22
24
  */
23
25
 
24
26
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
25
27
  var useNestedRowExpander = function useNestedRowExpander(hooks) {
28
+ var tempState = (0, _react.useRef)();
29
+ var useInstance = function useInstance(instance) {
30
+ tempState.current = instance;
31
+ };
26
32
  var visibleColumns = function visibleColumns(columns) {
27
33
  var expanderColumn = {
28
34
  id: 'expander',
29
35
  Cell: function Cell(_ref) {
30
36
  var _cx;
31
37
  var row = _ref.row;
38
+ var _ref2 = (tempState === null || tempState === void 0 ? void 0 : tempState.current) || {},
39
+ _ref2$expanderButtonT = _ref2.expanderButtonTitleExpanded,
40
+ expanderButtonTitleExpanded = _ref2$expanderButtonT === void 0 ? 'Collapse row' : _ref2$expanderButtonT,
41
+ _ref2$expanderButtonT2 = _ref2.expanderButtonTitleCollapsed,
42
+ expanderButtonTitleCollapsed = _ref2$expanderButtonT2 === void 0 ? 'Expand row' : _ref2$expanderButtonT2;
43
+ var expanderTitle = row.isExpanded ? expanderButtonTitleExpanded : expanderButtonTitleCollapsed;
32
44
  return row.canExpand && /*#__PURE__*/_react.default.createElement("button", (0, _extends2.default)({
33
45
  type: "button",
34
- "aria-label": "Expand current row",
46
+ "aria-label": expanderTitle,
35
47
  className: (0, _classnames.default)("".concat(blockClass, "__row-expander"), "".concat(_settings.carbon.prefix, "--btn"), "".concat(_settings.carbon.prefix, "--btn--ghost"))
36
- }, row.getToggleRowExpandedProps()), /*#__PURE__*/_react.default.createElement(_icons.ChevronRight, {
48
+ }, row.getToggleRowExpandedProps(), {
49
+ title: expanderTitle
50
+ }), /*#__PURE__*/_react.default.createElement(_icons.ChevronRight, {
37
51
  className: (0, _classnames.default)("".concat(blockClass, "__expander-icon"), (_cx = {}, (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__expander-icon--not-open"), !row.isExpanded), (0, _defineProperty2.default)(_cx, "".concat(blockClass, "__expander-icon--open"), row.isExpanded), _cx))
38
52
  }));
39
53
  },
@@ -45,6 +59,7 @@ var useNestedRowExpander = function useNestedRowExpander(hooks) {
45
59
  return [expanderColumn].concat((0, _toConsumableArray2.default)(columns));
46
60
  };
47
61
  hooks.visibleColumns.push(visibleColumns);
62
+ hooks.useInstance.push(useInstance);
48
63
  };
49
64
  var _default = useNestedRowExpander;
50
65
  exports.default = _default;
@@ -1,37 +1,51 @@
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 _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
10
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
- var _react = _interopRequireDefault(require("react"));
11
+ var _react = _interopRequireWildcard(require("react"));
11
12
  var _icons = require("@carbon/react/icons");
12
13
  var _settings = require("../../settings");
13
14
  var _classnames = _interopRequireDefault(require("classnames"));
15
+ 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); }
16
+ 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; }
14
17
  /* eslint-disable react/prop-types */
15
- /*
16
- * Licensed Materials - Property of IBM
17
- * 5724-Q36
18
- * (c) Copyright IBM Corp. 2020
19
- * US Government Users Restricted Rights - Use, duplication or disclosure
20
- * restricted by GSA ADP Schedule Contract with IBM Corp.
18
+ /**
19
+ * Copyright IBM Corp. 2020, 2023
20
+ *
21
+ * This source code is licensed under the Apache-2.0 license found in the
22
+ * LICENSE file in the root directory of this source tree.
21
23
  */
22
24
 
23
25
  var blockClass = "".concat(_settings.pkg.prefix, "--datagrid");
24
26
  var useRowExpander = function useRowExpander(hooks) {
27
+ var tempState = (0, _react.useRef)();
28
+ var useInstance = function useInstance(instance) {
29
+ tempState.current = instance;
30
+ };
25
31
  var visibleColumns = function visibleColumns(columns) {
26
32
  var expanderColumn = {
27
33
  id: 'expander',
28
34
  Cell: function Cell(_ref) {
29
35
  var row = _ref.row;
36
+ var _ref2 = (tempState === null || tempState === void 0 ? void 0 : tempState.current) || {},
37
+ _ref2$expanderButtonT = _ref2.expanderButtonTitleExpanded,
38
+ expanderButtonTitleExpanded = _ref2$expanderButtonT === void 0 ? 'Collapse row' : _ref2$expanderButtonT,
39
+ _ref2$expanderButtonT2 = _ref2.expanderButtonTitleCollapsed,
40
+ expanderButtonTitleCollapsed = _ref2$expanderButtonT2 === void 0 ? 'Expand row' : _ref2$expanderButtonT2;
41
+ var expanderTitle = row.isExpanded ? expanderButtonTitleExpanded : expanderButtonTitleCollapsed;
30
42
  return row.canExpand && /*#__PURE__*/_react.default.createElement("button", (0, _extends2.default)({
31
43
  type: "button",
32
- "aria-label": "Expand current row",
44
+ "aria-label": expanderTitle,
33
45
  className: (0, _classnames.default)("".concat(blockClass, "__row-expander"), "".concat(_settings.carbon.prefix, "--btn"), "".concat(_settings.carbon.prefix, "--btn--ghost"))
34
- }, row.getToggleRowExpandedProps()), row.isExpanded ? /*#__PURE__*/_react.default.createElement(_icons.ChevronUp, {
46
+ }, row.getToggleRowExpandedProps(), {
47
+ title: expanderTitle
48
+ }), row.isExpanded ? /*#__PURE__*/_react.default.createElement(_icons.ChevronUp, {
35
49
  className: "".concat(blockClass, "__row-expander--icon")
36
50
  }) : /*#__PURE__*/_react.default.createElement(_icons.ChevronDown, {
37
51
  className: "".concat(blockClass, "__row-expander--icon")
@@ -45,6 +59,7 @@ var useRowExpander = function useRowExpander(hooks) {
45
59
  return [expanderColumn].concat((0, _toConsumableArray2.default)(columns));
46
60
  };
47
61
  hooks.visibleColumns.push(visibleColumns);
62
+ hooks.useInstance.push(useInstance);
48
63
  };
49
64
  var _default = useRowExpander;
50
65
  exports.default = _default;
@@ -16,7 +16,7 @@ var _hooks = require("../Datagrid/addons/Filtering/hooks");
16
16
  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); }
17
17
  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; }
18
18
  /**
19
- * Copyright IBM Corp. 2020, 2022
19
+ * Copyright IBM Corp. 2020, 2023
20
20
  *
21
21
  * This source code is licensed under the Apache-2.0 license found in the
22
22
  * LICENSE file in the root directory of this source tree.
@@ -9,7 +9,7 @@ var _react = _interopRequireDefault(require("react"));
9
9
  var _react2 = require("@carbon/react");
10
10
  /* eslint-disable react/prop-types */
11
11
  /**
12
- * Copyright IBM Corp. 2022, 2022
12
+ * Copyright IBM Corp. 2022, 2023
13
13
  *
14
14
  * This source code is licensed under the Apache-2.0 license found in the
15
15
  * LICENSE file in the root directory of this source tree.
@@ -93,6 +93,18 @@ var ARG_TYPES = {
93
93
  },
94
94
  description: 'This value controls the height of the expanded content area. _This value is set/passed inside of the `datagridState` object._'
95
95
  },
96
+ expanderButtonTitleExpanded: {
97
+ control: {
98
+ type: 'text'
99
+ },
100
+ description: 'This value controls the expander title/aria-label when expanded. _This value is set/passed inside of the `datagridState` object._'
101
+ },
102
+ expanderButtonTitleCollapsed: {
103
+ control: {
104
+ type: 'text'
105
+ },
106
+ description: 'This value controls the expander title/aria-label when expanded. _This value is set/passed inside of the `datagridState` object._'
107
+ },
96
108
  customizeColumnsProps: {
97
109
  control: 'object',
98
110
  description: 'This is an object containing all of the props used with the column customization extension. _This value is set/passed inside of the `datagridState` object._'