@carbon/ibm-products 2.0.0-rc.24 → 2.0.0-rc.26

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. package/README.md +10 -4
  2. package/css/index-full-carbon.css +87 -123
  3. package/css/index-full-carbon.css.map +1 -1
  4. package/css/index-full-carbon.min.css +4 -4
  5. package/css/index-full-carbon.min.css.map +1 -1
  6. package/css/index-without-carbon-released-only.css +18 -109
  7. package/css/index-without-carbon-released-only.css.map +1 -1
  8. package/css/index-without-carbon-released-only.min.css +3 -3
  9. package/css/index-without-carbon-released-only.min.css.map +1 -1
  10. package/css/index-without-carbon.css +87 -123
  11. package/css/index-without-carbon.css.map +1 -1
  12. package/css/index-without-carbon.min.css +4 -4
  13. package/css/index-without-carbon.min.css.map +1 -1
  14. package/css/index.css +87 -123
  15. package/css/index.css.map +1 -1
  16. package/css/index.min.css +4 -4
  17. package/css/index.min.css.map +1 -1
  18. package/es/components/AddSelect/AddSelectBody.js +1 -0
  19. package/es/components/AddSelect/AddSelectFormControl.js +92 -0
  20. package/es/components/AddSelect/AddSelectList.js +26 -195
  21. package/es/components/AddSelect/AddSelectRow.js +220 -0
  22. package/es/components/AddSelect/hooks/useFocus.js +35 -0
  23. package/es/components/CreateFullPage/CreateFullPageStep.js +16 -9
  24. package/es/components/CreateTearsheet/CreateTearsheetStep.js +8 -8
  25. package/es/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +11 -17
  26. package/es/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +9 -13
  27. package/es/components/Datagrid/Datagrid/DatagridContent.js +1 -1
  28. package/es/components/Datagrid/Datagrid/DatagridToolbar.js +1 -1
  29. package/es/components/Datagrid/Datagrid/DatagridVirtualBody.js +15 -4
  30. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +15 -60
  31. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +6 -8
  32. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +112 -0
  33. package/es/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +1 -0
  34. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +29 -23
  35. package/es/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +1 -0
  36. package/es/components/Datagrid/index.js +7 -7
  37. package/es/components/Datagrid/useInfiniteScroll.js +5 -1
  38. package/es/components/Datagrid/useOnRowClick.js +3 -3
  39. package/es/components/Datagrid/useSortableColumns.js +19 -9
  40. package/es/components/Datagrid/utils/getAutoSizedColumnWidth.js +29 -0
  41. package/es/components/ExampleComponent/ExampleComponent.js +39 -5
  42. package/es/components/ExampleComponent/useExample.js +51 -0
  43. package/es/components/InlineEditV1/InlineEditV1.js +15 -20
  44. package/es/components/InlineEditV2/InlineEditV2.js +21 -31
  45. package/es/components/SidePanel/SidePanel.js +3 -5
  46. package/es/components/index.js +1 -1
  47. package/es/global/js/package-settings.js +24 -3
  48. package/es/global/js/utils/story-helper.js +9 -0
  49. package/es/global/js/utils/test-helper.js +38 -6
  50. package/lib/components/AddSelect/AddSelectBody.js +1 -0
  51. package/lib/components/AddSelect/AddSelectFormControl.js +110 -0
  52. package/lib/components/AddSelect/AddSelectList.js +29 -203
  53. package/lib/components/AddSelect/AddSelectRow.js +247 -0
  54. package/lib/components/AddSelect/hooks/useFocus.js +46 -0
  55. package/lib/components/CreateFullPage/CreateFullPageStep.js +14 -7
  56. package/lib/components/CreateTearsheet/CreateTearsheetStep.js +7 -7
  57. package/lib/components/CreateTearsheet/preview-components/MultiStepTearsheet.js +10 -16
  58. package/lib/components/CreateTearsheet/preview-components/MultiStepWithIntro.js +9 -13
  59. package/lib/components/Datagrid/Datagrid/DatagridContent.js +1 -1
  60. package/lib/components/Datagrid/Datagrid/DatagridToolbar.js +1 -1
  61. package/lib/components/Datagrid/Datagrid/DatagridVirtualBody.js +15 -3
  62. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/Columns.js +16 -64
  63. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/CustomizeColumnsTearsheet.js +6 -8
  64. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/DraggableItemsList.js +132 -0
  65. package/lib/components/Datagrid/Datagrid/addons/CustomizeColumns/TearsheetWrapper.js +1 -0
  66. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeDropdown.js +23 -16
  67. package/lib/components/Datagrid/Datagrid/addons/RowSize/RowSizeRadioGroup.js +1 -0
  68. package/lib/components/Datagrid/index.js +9 -1
  69. package/lib/components/Datagrid/useInfiniteScroll.js +5 -0
  70. package/lib/components/Datagrid/useOnRowClick.js +3 -3
  71. package/lib/components/Datagrid/useSortableColumns.js +19 -9
  72. package/lib/components/Datagrid/utils/getAutoSizedColumnWidth.js +40 -0
  73. package/lib/components/ExampleComponent/ExampleComponent.js +47 -4
  74. package/lib/components/ExampleComponent/useExample.js +63 -0
  75. package/lib/components/InlineEditV1/InlineEditV1.js +14 -19
  76. package/lib/components/InlineEditV2/InlineEditV2.js +20 -30
  77. package/lib/components/SidePanel/SidePanel.js +2 -4
  78. package/lib/components/index.js +6 -0
  79. package/lib/global/js/package-settings.js +24 -3
  80. package/lib/global/js/utils/story-helper.js +13 -2
  81. package/lib/global/js/utils/test-helper.js +42 -8
  82. package/package.json +2 -2
  83. package/scss/components/AddSelect/_add-select.scss +4 -16
  84. package/scss/components/CreateFullPage/_create-full-page.scss +5 -10
  85. package/scss/components/CreateTearsheet/_create-tearsheet.scss +8 -3
  86. package/scss/components/Datagrid/styles/_datagrid.scss +4 -0
  87. package/scss/components/Datagrid/styles/_useSortableColumns.scss +6 -3
  88. package/scss/components/Datagrid/styles/addons/_CustomizeColumnsTearsheet.scss +15 -2
  89. package/scss/components/Datagrid/styles/addons/_RowSizeDropdown.scss +18 -6
  90. package/scss/components/EmptyStates/_empty-state.scss +2 -2
  91. package/scss/components/InlineEditV1/_inline-edit-v1.scss +5 -89
  92. package/scss/components/InlineEditV2/_inline-edit-v2.scss +42 -3
  93. package/scss/components/SidePanel/_side-panel.scss +7 -15
@@ -1,6 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
5
+ var _excluded = ["filteredItems", "multi"];
4
6
  //
5
7
  // Copyright IBM Corp. 2022, 2022
6
8
  //
@@ -8,218 +10,47 @@ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
8
10
  // LICENSE file in the root directory of this source tree.
9
11
  //
10
12
  import React from 'react';
11
- import { Button, Checkbox, Dropdown, RadioButton } from '@carbon/react';
12
- import { ChevronRight, View } from '@carbon/react/icons';
13
13
  import PropTypes from 'prop-types';
14
14
  import cx from 'classnames';
15
15
  import { pkg } from '../../settings';
16
- import { UserProfileImage } from '../UserProfileImage';
16
+ import { AddSelectRow } from './AddSelectRow';
17
+ import useFocus from './hooks/useFocus';
17
18
  var blockClass = "".concat(pkg.prefix, "--add-select__selections");
18
19
  var componentName = 'AddSelectList';
19
20
  export var AddSelectList = function AddSelectList(_ref) {
20
- var _modifiers$options;
21
-
22
- var appliedModifiers = _ref.appliedModifiers,
23
- displayMetalPanel = _ref.displayMetalPanel,
24
- filteredItems = _ref.filteredItems,
25
- metaIconDescription = _ref.metaIconDescription,
26
- modifiers = _ref.modifiers,
21
+ var filteredItems = _ref.filteredItems,
27
22
  multi = _ref.multi,
28
- multiSelection = _ref.multiSelection,
29
- navIconDescription = _ref.navIconDescription,
30
- parentId = _ref.parentId,
31
- setAppliedModifiers = _ref.setAppliedModifiers,
32
- setDisplayMetaPanel = _ref.setDisplayMetaPanel,
33
- setMultiSelection = _ref.setMultiSelection,
34
- setParentSelected = _ref.setParentSelected,
35
- setSingleSelection = _ref.setSingleSelection,
36
- singleSelection = _ref.singleSelection;
37
- var hasModifiers = (modifiers === null || modifiers === void 0 ? void 0 : (_modifiers$options = modifiers.options) === null || _modifiers$options === void 0 ? void 0 : _modifiers$options.length) > 0;
38
-
39
- var handleSingleSelection = function handleSingleSelection(value) {
40
- setSingleSelection(value);
41
- };
42
-
43
- var handleMultiSelection = function handleMultiSelection(event, _ref2) {
44
- var checked = _ref2.checked,
45
- id = _ref2.id;
46
-
47
- if (checked) {
48
- var newValues = [].concat(_toConsumableArray(multiSelection), [id]);
49
- setMultiSelection(newValues);
50
- } else {
51
- var _newValues = multiSelection.filter(function (v) {
52
- return v !== id;
53
- });
54
-
55
- setMultiSelection(_newValues);
56
- }
57
- };
58
-
59
- var onNavigateItem = function onNavigateItem(_ref3) {
60
- var id = _ref3.id,
61
- title = _ref3.title;
62
- setParentSelected(id, title, parentId);
63
- };
64
-
65
- var isSelected = function isSelected(id) {
66
- if (multi) {
67
- return multiSelection.includes(id);
68
- }
23
+ rest = _objectWithoutProperties(_ref, _excluded);
69
24
 
70
- return id === singleSelection;
71
- };
72
-
73
- var getAvatarProps = function getAvatarProps(_ref4) {
74
- var src = _ref4.src,
75
- alt = _ref4.alt,
76
- icon = _ref4.icon,
77
- backgroundColor = _ref4.backgroundColor,
78
- theme = _ref4.theme;
79
- return {
80
- className: "".concat(blockClass, "-cell-avatar"),
81
- size: 'lg',
82
- theme: theme,
83
- image: src,
84
- imageDescription: alt,
85
- icon: icon,
86
- backgroundColor: backgroundColor
87
- };
88
- };
89
-
90
- var getItemIcon = function getItemIcon(_ref5) {
91
- var Icon = _ref5.icon;
92
- return /*#__PURE__*/React.createElement(Icon, null);
93
- };
94
-
95
- var modifierHandler = function modifierHandler(id, selectedItem) {
96
- var modifiersClone = _toConsumableArray(appliedModifiers);
97
-
98
- var modifierIdx = modifiersClone.findIndex(function (item) {
99
- return item.id === id;
100
- });
101
- modifiersClone[modifierIdx] = _defineProperty({
102
- id: id
103
- }, modifiers.id, selectedItem);
104
- setAppliedModifiers(modifiersClone);
105
- };
106
-
107
- var metaPanelHandler = function metaPanelHandler(item) {
108
- if (item.meta) {
109
- setDisplayMetaPanel(item);
110
- }
111
- };
112
-
113
- var isInMetaPanel = function isInMetaPanel(id) {
114
- return id === (displayMetalPanel === null || displayMetalPanel === void 0 ? void 0 : displayMetalPanel.id);
115
- };
25
+ var _useFocus = useFocus(filteredItems.length),
26
+ _useFocus2 = _slicedToArray(_useFocus, 2),
27
+ focus = _useFocus2[0],
28
+ setFocus = _useFocus2[1];
116
29
 
117
30
  return /*#__PURE__*/React.createElement("div", {
31
+ id: "add-select-focus",
118
32
  className: cx("".concat(blockClass, "-wrapper"), _defineProperty({}, "".concat(blockClass, "-wrapper-multi"), multi))
119
33
  }, /*#__PURE__*/React.createElement("div", {
120
34
  className: "".concat(blockClass)
121
35
  }, /*#__PURE__*/React.createElement("div", {
122
- className: "".concat(blockClass, "-body")
123
- }, filteredItems.map(function (item) {
124
- var _cx2;
125
-
126
- return /*#__PURE__*/React.createElement("div", {
36
+ className: "".concat(blockClass, "-body"),
37
+ role: "treegrid",
38
+ "aria-label": "add select tree label"
39
+ }, filteredItems.map(function (item, index) {
40
+ return /*#__PURE__*/React.createElement(AddSelectRow, _extends({
127
41
  key: item.id,
128
- className: cx("".concat(blockClass, "-row"), (_cx2 = {}, _defineProperty(_cx2, "".concat(blockClass, "-row--selected"), isSelected(item.id)), _defineProperty(_cx2, "".concat(blockClass, "-row-meta--selected"), isInMetaPanel(item.id)), _cx2))
129
- }, /*#__PURE__*/React.createElement("div", {
130
- className: "".concat(blockClass, "-cell")
131
- }, /*#__PURE__*/React.createElement("div", {
132
- className: "".concat(blockClass, "-cell-wrapper")
133
- }, multi ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
134
- className: "".concat(blockClass, "-checkbox")
135
- }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Checkbox, {
136
- onChange: handleMultiSelection,
137
- labelText: item.title,
138
- id: item.id,
139
- checked: isSelected(item.id),
140
- className: "".concat(blockClass, "-checkbox-wrapper")
141
- })), /*#__PURE__*/React.createElement("div", {
142
- className: "".concat(blockClass, "-checkbox-label-wrapper")
143
- }, item.avatar && /*#__PURE__*/React.createElement(UserProfileImage, getAvatarProps(item.avatar)), item.icon && /*#__PURE__*/React.createElement("div", {
144
- className: "".concat(blockClass, "-cell-icon")
145
- }, getItemIcon(item)), /*#__PURE__*/React.createElement("div", {
146
- className: "".concat(blockClass, "-checkbox-label-text")
147
- }, /*#__PURE__*/React.createElement("span", {
148
- className: "".concat(blockClass, "-cell-title")
149
- }, item.title), item.subtitle && /*#__PURE__*/React.createElement("span", {
150
- className: "".concat(blockClass, "-cell-subtitle")
151
- }, item.subtitle)))), hasModifiers && /*#__PURE__*/React.createElement(Dropdown, {
152
- id: "add-select-modifier-".concat(item.id),
153
- type: "inline",
154
- items: modifiers.options,
155
- label: modifiers.label,
156
- disabled: !isSelected(item.id),
157
- className: "".concat(blockClass, "-dropdown"),
158
- initialSelectedItem: item[modifiers.id],
159
- onChange: function onChange(_ref6) {
160
- var selectedItem = _ref6.selectedItem;
161
- return modifierHandler(item.id, selectedItem);
162
- }
163
- })) : /*#__PURE__*/React.createElement(RadioButton, {
164
- className: "".concat(blockClass, "-radio"),
165
- name: "add-select-selections",
166
- id: item.id,
167
- value: item.value,
168
- labelText: item.title,
169
- onChange: function onChange() {
170
- return handleSingleSelection(item.id);
171
- },
172
- checked: isSelected(item.id)
173
- }), item.children && /*#__PURE__*/React.createElement(Button, {
174
- className: "".concat(blockClass, "-view-children"),
175
- renderIcon: function renderIcon(props) {
176
- return /*#__PURE__*/React.createElement(ChevronRight, _extends({
177
- size: 16
178
- }, props));
179
- },
180
- iconDescription: navIconDescription,
181
- tooltipPosition: "left",
182
- tooltipAlignment: "center",
183
- hasIconOnly: true,
184
- onClick: function onClick() {
185
- return onNavigateItem(item);
186
- },
187
- kind: "ghost",
188
- size: "sm"
189
- }), item.meta && /*#__PURE__*/React.createElement(Button, {
190
- className: "".concat(blockClass, "-view-meta"),
191
- renderIcon: function renderIcon(props) {
192
- return /*#__PURE__*/React.createElement(View, _extends({
193
- size: 16
194
- }, props));
195
- },
196
- iconDescription: metaIconDescription,
197
- tooltipPosition: "left",
198
- tooltipAlignment: "center",
199
- hasIconOnly: true,
200
- kind: "ghost",
201
- size: "sm",
202
- onClick: function onClick() {
203
- return metaPanelHandler(item);
204
- }
205
- }))));
42
+ index: index,
43
+ focus: focus,
44
+ setSize: filteredItems.length,
45
+ item: item,
46
+ multi: multi,
47
+ setFocus: setFocus
48
+ }, rest));
206
49
  }))));
207
50
  };
208
51
  AddSelectList.propTypes = {
209
- appliedModifiers: PropTypes.array,
210
- displayMetalPanel: PropTypes.object,
211
52
  filteredItems: PropTypes.array,
212
- metaIconDescription: PropTypes.string,
213
- modifiers: PropTypes.object,
214
- multi: PropTypes.bool,
215
- multiSelection: PropTypes.array,
216
- navIconDescription: PropTypes.string,
217
- parentId: PropTypes.string,
218
- setAppliedModifiers: PropTypes.func,
219
- setDisplayMetaPanel: PropTypes.func,
220
- setMultiSelection: PropTypes.func,
221
- setParentSelected: PropTypes.func,
222
- setSingleSelection: PropTypes.func,
223
- singleSelection: PropTypes.string
53
+ focus: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
54
+ multi: PropTypes.bool
224
55
  };
225
56
  AddSelectList.displayName = componentName;
@@ -0,0 +1,220 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
+ //
5
+ // Copyright IBM Corp. 2022, 2022
6
+ //
7
+ // This source code is licensed under the Apache-2.0 license found in the
8
+ // LICENSE file in the root directory of this source tree.
9
+ //
10
+ import React, { useRef, useEffect, useCallback } from 'react';
11
+ import { Button, Dropdown } from '@carbon/react';
12
+ import { ChevronRight, View } from '@carbon/react/icons';
13
+ import PropTypes from 'prop-types';
14
+ import cx from 'classnames';
15
+ import { pkg } from '../../settings';
16
+ import { AddSelectFormControl } from './AddSelectFormControl';
17
+ var blockClass = "".concat(pkg.prefix, "--add-select__selections");
18
+ var componentName = 'AddSelectList';
19
+ export var AddSelectRow = function AddSelectRow(_ref) {
20
+ var _modifiers$options, _cx;
21
+
22
+ var appliedModifiers = _ref.appliedModifiers,
23
+ displayMetalPanel = _ref.displayMetalPanel,
24
+ index = _ref.index,
25
+ focus = _ref.focus,
26
+ item = _ref.item,
27
+ metaIconDescription = _ref.metaIconDescription,
28
+ modifiers = _ref.modifiers,
29
+ multi = _ref.multi,
30
+ multiSelection = _ref.multiSelection,
31
+ navIconDescription = _ref.navIconDescription,
32
+ parentId = _ref.parentId,
33
+ setAppliedModifiers = _ref.setAppliedModifiers,
34
+ setDisplayMetaPanel = _ref.setDisplayMetaPanel,
35
+ setFocus = _ref.setFocus,
36
+ setMultiSelection = _ref.setMultiSelection,
37
+ setParentSelected = _ref.setParentSelected,
38
+ setSingleSelection = _ref.setSingleSelection,
39
+ singleSelection = _ref.singleSelection;
40
+ var ref = useRef(null);
41
+ useEffect(function () {
42
+ if (focus === index) {
43
+ ref.current.focus();
44
+ }
45
+ }, [focus, index]);
46
+
47
+ var isSelected = function isSelected() {
48
+ if (multi) {
49
+ return multiSelection.includes(item.id);
50
+ }
51
+
52
+ return item.id === singleSelection;
53
+ };
54
+
55
+ var getTabIndex = function getTabIndex() {
56
+ // on initial load make the first item tabbable
57
+ if (index === 0 && focus === '') {
58
+ return 0;
59
+ } // make it so only the last focused item is tabbable
60
+
61
+
62
+ if (focus === index && focus !== '') {
63
+ return 0;
64
+ } // make unfocused items un-tabbable
65
+
66
+
67
+ return -1;
68
+ };
69
+
70
+ var focusHandler = useCallback(function (reset) {
71
+ setFocus(reset ? '' : index);
72
+ }, [setFocus, index]);
73
+
74
+ var handleSingleSelection = function handleSingleSelection() {
75
+ setSingleSelection(item.id);
76
+ };
77
+
78
+ var onSelectKeyDown = function onSelectKeyDown(_ref2) {
79
+ var key = _ref2.key;
80
+
81
+ if (key === 'Enter' || key === ' ') {
82
+ if (multi) {
83
+ handleMultiSelection();
84
+ } else {
85
+ handleSingleSelection();
86
+ }
87
+ } else if (key === 'ArrowRight' && item.children) {
88
+ onNavigateItem();
89
+ }
90
+ };
91
+
92
+ var handleMultiSelection = function handleMultiSelection() {
93
+ var checked = isSelected();
94
+
95
+ if (!checked) {
96
+ var newValues = [].concat(_toConsumableArray(multiSelection), [item.id]);
97
+ setMultiSelection(newValues);
98
+ } else {
99
+ var _newValues = multiSelection.filter(function (v) {
100
+ return v !== item.id;
101
+ });
102
+
103
+ setMultiSelection(_newValues);
104
+ }
105
+ };
106
+
107
+ var onNavigateItem = function onNavigateItem() {
108
+ focusHandler(true);
109
+ setParentSelected(item.id, item.title, parentId);
110
+ };
111
+
112
+ var modifierHandler = function modifierHandler(id, selectedItem) {
113
+ var modifiersClone = _toConsumableArray(appliedModifiers);
114
+
115
+ var modifierIdx = modifiersClone.findIndex(function (item) {
116
+ return item.id === id;
117
+ });
118
+ modifiersClone[modifierIdx] = _defineProperty({
119
+ id: id
120
+ }, modifiers.id, selectedItem);
121
+ setAppliedModifiers(modifiersClone);
122
+ };
123
+
124
+ var metaPanelHandler = function metaPanelHandler() {
125
+ if (item.meta) {
126
+ setDisplayMetaPanel(item);
127
+ }
128
+ };
129
+
130
+ var isInMetaPanel = function isInMetaPanel(id) {
131
+ return id === (displayMetalPanel === null || displayMetalPanel === void 0 ? void 0 : displayMetalPanel.id);
132
+ };
133
+
134
+ var hasModifiers = (modifiers === null || modifiers === void 0 ? void 0 : (_modifiers$options = modifiers.options) === null || _modifiers$options === void 0 ? void 0 : _modifiers$options.length) > 0;
135
+ var tabIndex = getTabIndex();
136
+ var selected = isSelected();
137
+ return /*#__PURE__*/React.createElement("div", {
138
+ className: cx("".concat(blockClass, "-row"), (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "-row--selected"), isSelected(item.id)), _defineProperty(_cx, "".concat(blockClass, "-row-meta--selected"), isInMetaPanel(item.id)), _cx)),
139
+ onKeyDown: onSelectKeyDown,
140
+ tabIndex: tabIndex,
141
+ ref: ref,
142
+ role: "row"
143
+ }, /*#__PURE__*/React.createElement("div", {
144
+ className: "".concat(blockClass, "-cell")
145
+ }, /*#__PURE__*/React.createElement("div", {
146
+ className: "".concat(blockClass, "-cell-wrapper")
147
+ }, multi ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(AddSelectFormControl, {
148
+ type: "checkbox",
149
+ item: item,
150
+ selected: selected,
151
+ onClick: handleMultiSelection
152
+ }), hasModifiers && /*#__PURE__*/React.createElement(Dropdown, {
153
+ id: "add-select-modifier-".concat(item.id),
154
+ type: "inline",
155
+ items: modifiers.options,
156
+ label: modifiers.label,
157
+ disabled: !isSelected(item.id),
158
+ className: "".concat(blockClass, "-dropdown"),
159
+ initialSelectedItem: item[modifiers.id],
160
+ onChange: function onChange(_ref3) {
161
+ var selectedItem = _ref3.selectedItem;
162
+ return modifierHandler(item.id, selectedItem);
163
+ }
164
+ })) : /*#__PURE__*/React.createElement(AddSelectFormControl, {
165
+ type: "radio",
166
+ item: item,
167
+ selected: selected,
168
+ onClick: handleSingleSelection
169
+ }), item.children && /*#__PURE__*/React.createElement(Button, {
170
+ className: "".concat(blockClass, "-view-children"),
171
+ renderIcon: function renderIcon(props) {
172
+ return /*#__PURE__*/React.createElement(ChevronRight, _extends({
173
+ size: 16
174
+ }, props));
175
+ },
176
+ iconDescription: navIconDescription,
177
+ tooltipPosition: "left",
178
+ tooltipAlignment: "center",
179
+ hasIconOnly: true,
180
+ onClick: onNavigateItem,
181
+ kind: "ghost",
182
+ size: "sm"
183
+ }), item.meta && /*#__PURE__*/React.createElement(Button, {
184
+ className: "".concat(blockClass, "-view-meta"),
185
+ renderIcon: function renderIcon(props) {
186
+ return /*#__PURE__*/React.createElement(View, _extends({
187
+ size: 16
188
+ }, props));
189
+ },
190
+ iconDescription: metaIconDescription,
191
+ tooltipPosition: "left",
192
+ tooltipAlignment: "center",
193
+ hasIconOnly: true,
194
+ kind: "ghost",
195
+ size: "sm",
196
+ onClick: metaPanelHandler
197
+ }))));
198
+ };
199
+ AddSelectRow.propTypes = {
200
+ appliedModifiers: PropTypes.array,
201
+ displayMetalPanel: PropTypes.object,
202
+ filteredItems: PropTypes.array,
203
+ focus: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
204
+ index: PropTypes.number,
205
+ item: PropTypes.object,
206
+ metaIconDescription: PropTypes.string,
207
+ modifiers: PropTypes.object,
208
+ multi: PropTypes.bool,
209
+ multiSelection: PropTypes.array,
210
+ navIconDescription: PropTypes.string,
211
+ parentId: PropTypes.string,
212
+ setAppliedModifiers: PropTypes.func,
213
+ setDisplayMetaPanel: PropTypes.func,
214
+ setFocus: PropTypes.func,
215
+ setMultiSelection: PropTypes.func,
216
+ setParentSelected: PropTypes.func,
217
+ setSingleSelection: PropTypes.func,
218
+ singleSelection: PropTypes.string
219
+ };
220
+ AddSelectRow.displayName = componentName;
@@ -0,0 +1,35 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
+ import { useCallback, useState, useEffect } from 'react';
3
+
4
+ var useFocus = function useFocus(size) {
5
+ // the state should represent the location of the item in the array
6
+ // make it '' initially so that it doesn't automatically focus the first item
7
+ var _useState = useState(''),
8
+ _useState2 = _slicedToArray(_useState, 2),
9
+ currentFocus = _useState2[0],
10
+ setCurrentFocus = _useState2[1];
11
+
12
+ var handleKeyDown = useCallback(function (e) {
13
+ var focus = currentFocus === '' ? 0 : currentFocus;
14
+
15
+ if (e.keyCode === 40) {
16
+ // Down arrow
17
+ e.preventDefault();
18
+ setCurrentFocus(focus === size - 1 ? 0 : focus + 1);
19
+ } else if (e.keyCode === 38) {
20
+ // Up arrow
21
+ e.preventDefault();
22
+ setCurrentFocus(focus === 0 ? size - 1 : focus - 1);
23
+ }
24
+ }, [size, currentFocus, setCurrentFocus]);
25
+ useEffect(function () {
26
+ var el = document.querySelector('#add-select-focus');
27
+ el.addEventListener('keydown', handleKeyDown, false);
28
+ return function () {
29
+ el.removeEventListener('keydown', handleKeyDown, false);
30
+ };
31
+ }, [handleKeyDown]);
32
+ return [currentFocus, setCurrentFocus];
33
+ };
34
+
35
+ export default useFocus;
@@ -5,7 +5,7 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
5
5
  var _excluded = ["children", "className", "subtitle", "description", "disableSubmit", "includeStep", "introStep", "title", "hasFieldset", "fieldsetLegendText", "onNext", "onMount", "secondaryLabel"];
6
6
 
7
7
  /**
8
- * Copyright IBM Corp. 2021, 2022
8
+ * Copyright IBM Corp. 2021, 2023
9
9
  *
10
10
  * This source code is licensed under the Apache-2.0 license found in the
11
11
  * LICENSE file in the root directory of this source tree.
@@ -14,7 +14,7 @@ import React, { forwardRef, useContext, useEffect, useState } from 'react';
14
14
  import PropTypes from 'prop-types';
15
15
  import cx from 'classnames';
16
16
  import { pkg } from '../../settings';
17
- import { FormGroup } from '@carbon/react';
17
+ import { Column, FormGroup, Grid } from '@carbon/react';
18
18
  import { StepsContext, StepNumberContext } from './CreateFullPage';
19
19
  import { usePreviousValue, useRetrieveStepData } from '../../global/js/hooks';
20
20
  import pconsole from '../../global/js/utils/pconsole';
@@ -80,16 +80,23 @@ export var CreateFullPageStep = /*#__PURE__*/forwardRef(function (_ref, ref) {
80
80
  stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.setOnNext(onNext); // needs to be updated here otherwise there could be stale state values from only initially setting onNext
81
81
  }
82
82
  }, [stepsContext, stepNumber, disableSubmit, onNext]);
83
+ var span = {
84
+ span: 50
85
+ }; // Half.
86
+
83
87
  return stepsContext ? /*#__PURE__*/React.createElement("section", _extends({}, rest, {
84
88
  className: cx(blockClass, className, (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__step--hidden-step"), stepNumber !== (stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.currentStep)), _defineProperty(_cx, "".concat(blockClass, "__step--visible-step"), stepNumber === (stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.currentStep)), _cx)),
85
89
  ref: ref
86
- }), /*#__PURE__*/React.createElement("h5", {
87
- className: "".concat(blockClass, "-title")
88
- }, title), subtitle && /*#__PURE__*/React.createElement("h6", {
89
- className: "".concat(blockClass, "-subtitle")
90
- }, subtitle), description && /*#__PURE__*/React.createElement("p", {
91
- className: "".concat(blockClass, "-description")
92
- }, description), hasFieldset ? /*#__PURE__*/React.createElement(FormGroup, {
90
+ }), /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Column, span, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Column, _extends({
91
+ className: "".concat(blockClass, "-title"),
92
+ as: "h5"
93
+ }, span), title), subtitle && /*#__PURE__*/React.createElement(Column, _extends({
94
+ className: "".concat(blockClass, "-subtitle"),
95
+ as: "h6"
96
+ }, span), subtitle), description && /*#__PURE__*/React.createElement(Column, _extends({
97
+ className: "".concat(blockClass, "-description"),
98
+ as: "p"
99
+ }, span), description)))), hasFieldset ? /*#__PURE__*/React.createElement(FormGroup, {
93
100
  legendText: fieldsetLegendText,
94
101
  className: "".concat(blockClass, "-fieldset")
95
102
  }, children) : children) : pconsole.warn("You have tried using a ".concat(componentName, " component outside of a CreateFullPage. This is not allowed. ").concat(componentName, "s should always be children of the CreateFullPage"));
@@ -5,7 +5,7 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
5
5
  var _excluded = ["children", "className", "description", "disableSubmit", "fieldsetLegendText", "hasFieldset", "includeStep", "introStep", "onNext", "onMount", "secondaryLabel", "subtitle", "title"];
6
6
 
7
7
  /**
8
- * Copyright IBM Corp. 2021, 2022
8
+ * Copyright IBM Corp. 2021, 2023
9
9
  *
10
10
  * This source code is licensed under the Apache-2.0 license found in the
11
11
  * LICENSE file in the root directory of this source tree.
@@ -83,26 +83,26 @@ export var CreateTearsheetStep = /*#__PURE__*/forwardRef(function (_ref, ref) {
83
83
  stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.setOnNext(onNext); // needs to be updated here otherwise there could be stale state values from only initially setting onNext
84
84
  }
85
85
  }, [stepsContext, stepNumber, disableSubmit, onNext]);
86
- return stepsContext ? /*#__PURE__*/React.createElement("div", _extends({}, rest, {
86
+ return stepsContext ? /*#__PURE__*/React.createElement(Grid, _extends({}, rest, {
87
87
  className: cx(blockClass, className, (_cx = {}, _defineProperty(_cx, "".concat(blockClass, "__step--hidden-step"), stepNumber !== (stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.currentStep)), _defineProperty(_cx, "".concat(blockClass, "__step--visible-step"), stepNumber === (stepsContext === null || stepsContext === void 0 ? void 0 : stepsContext.currentStep)), _cx)),
88
88
  ref: ref
89
- }), /*#__PURE__*/React.createElement(Grid, {
90
- narrow: true
91
- }, /*#__PURE__*/React.createElement(Column, {
89
+ }), /*#__PURE__*/React.createElement(Column, {
92
90
  xlg: 12,
93
91
  lg: 12,
94
92
  md: 8,
95
- sm: 8
93
+ sm: 4
96
94
  }, /*#__PURE__*/React.createElement("h4", {
97
95
  className: "".concat(blockClass, "--title")
98
96
  }, title), subtitle && /*#__PURE__*/React.createElement("h6", {
99
97
  className: "".concat(blockClass, "--subtitle")
100
98
  }, subtitle), description && /*#__PURE__*/React.createElement("p", {
101
99
  className: "".concat(blockClass, "--description")
102
- }, description))), hasFieldset ? /*#__PURE__*/React.createElement(FormGroup, {
100
+ }, description)), /*#__PURE__*/React.createElement(Column, {
101
+ span: 100
102
+ }, hasFieldset ? /*#__PURE__*/React.createElement(FormGroup, {
103
103
  legendText: fieldsetLegendText,
104
104
  className: "".concat(blockClass, "--fieldset")
105
- }, children) : children) : pconsole.warn("You have tried using a ".concat(componentName, " component outside of a CreateTearsheet. This is not allowed. ").concat(componentName, "s should always be children of the CreateTearsheet"));
105
+ }, children) : children)) : pconsole.warn("You have tried using a ".concat(componentName, " component outside of a CreateTearsheet. This is not allowed. ").concat(componentName, "s should always be children of the CreateTearsheet"));
106
106
  }); // Return a placeholder if not released and not enabled by feature flag
107
107
 
108
108
  CreateTearsheetStep = pkg.checkComponentEnabled(CreateTearsheetStep, componentName);
@@ -6,7 +6,7 @@ var _excluded = ["value1", "setValue1"];
6
6
  /* eslint-disable react/prop-types */
7
7
 
8
8
  /**
9
- * Copyright IBM Corp. 2021, 2022
9
+ * Copyright IBM Corp. 2021, 2023
10
10
  *
11
11
  * This source code is licensed under the Apache-2.0 license found in the
12
12
  * LICENSE file in the root directory of this source tree.
@@ -26,13 +26,11 @@ var CustomStep = function CustomStep(_ref) {
26
26
 
27
27
  return /*#__PURE__*/React.createElement(CreateTearsheetStep, _extends({}, rest, {
28
28
  disableSubmit: !value1
29
- }), /*#__PURE__*/React.createElement(Grid, {
30
- narrow: true
31
- }, /*#__PURE__*/React.createElement(Column, {
29
+ }), /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Column, {
32
30
  xlg: 8,
33
31
  lg: 8,
34
32
  md: 8,
35
- sm: 8
33
+ sm: 4
36
34
  }, /*#__PURE__*/React.createElement(TextInput, {
37
35
  value: value1,
38
36
  onChange: function onChange(event) {
@@ -174,13 +172,11 @@ export var MultiStepTearsheet = function MultiStepTearsheet(_ref2) {
174
172
  disableSubmit: !stepOneTextInputValue,
175
173
  subtitle: "This is the unique name used to recognize your topic",
176
174
  description: "It will also be used by your producers and consumers as part of the connection information, so make it something easy to recognize."
177
- }, /*#__PURE__*/React.createElement(Grid, {
178
- narrow: true
179
- }, /*#__PURE__*/React.createElement(Column, {
175
+ }, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Column, {
180
176
  xlg: 8,
181
177
  lg: 8,
182
178
  md: 8,
183
- sm: 8
179
+ sm: 4
184
180
  }, /*#__PURE__*/React.createElement(TextInput, {
185
181
  labelText: "Topic name",
186
182
  placeholder: "Enter topic name",
@@ -253,11 +249,11 @@ export var MultiStepTearsheet = function MultiStepTearsheet(_ref2) {
253
249
  subtitle: "One or more partitions make up a topic. A partition is an ordered list of messages.",
254
250
  description: "Partitions are distributed across the brokers in order to increase the scalability of your topic. You can also use them to distribute messages across the members of a consumer group.",
255
251
  fieldsetLegendText: "Partition information"
256
- }, /*#__PURE__*/React.createElement(Grid, {
257
- narrow: true
258
- }, /*#__PURE__*/React.createElement(Column, {
252
+ }, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Column, {
259
253
  xlg: 3,
260
- lg: 3
254
+ lg: 3,
255
+ md: 8,
256
+ sm: 4
261
257
  }, /*#__PURE__*/React.createElement(NumberInput, {
262
258
  iconDescription: "Choose a number",
263
259
  id: "carbon-number",
@@ -279,13 +275,11 @@ export var MultiStepTearsheet = function MultiStepTearsheet(_ref2) {
279
275
  subtitle: "This is how long messages are retained before they are deleted.",
280
276
  description: "If your messages are not read by a consumer within this time, they will be missed.",
281
277
  fieldsetLegendText: "Message retention scheduling"
282
- }, /*#__PURE__*/React.createElement(Grid, {
283
- narrow: true
284
- }, /*#__PURE__*/React.createElement(Column, {
278
+ }, /*#__PURE__*/React.createElement(Grid, null, /*#__PURE__*/React.createElement(Column, {
285
279
  xlg: 8,
286
280
  lg: 8,
287
281
  md: 8,
288
- sm: 8
282
+ sm: 4
289
283
  }, /*#__PURE__*/React.createElement(RadioButtonGroup, {
290
284
  legendText: "Message retention",
291
285
  name: "radio-button-group",