@carbon/react 1.17.0-rc.2 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/es/components/DatePicker/DatePicker.js +10 -2
  2. package/es/components/FluidDatePicker/FluidDatePicker.Skeleton.js +67 -0
  3. package/es/components/ListBox/ListBoxSelection.js +11 -4
  4. package/es/components/MultiSelect/MultiSelect.js +28 -5
  5. package/es/components/OverflowMenu/index.js +1 -2
  6. package/es/components/SkeletonPlaceholder/SkeletonPlaceholder.js +2 -1
  7. package/es/components/SkeletonText/SkeletonText.js +1 -1
  8. package/es/components/StructuredList/StructuredList.js +89 -54
  9. package/es/index.js +2 -1
  10. package/es/internal/FloatingMenu.js +3 -1
  11. package/lib/components/DatePicker/DatePicker.js +9 -1
  12. package/lib/components/FluidDatePicker/FluidDatePicker.Skeleton.js +77 -0
  13. package/lib/components/ListBox/ListBoxSelection.js +11 -4
  14. package/lib/components/MultiSelect/MultiSelect.js +28 -5
  15. package/lib/components/OverflowMenu/index.js +1 -22
  16. package/lib/components/SkeletonPlaceholder/SkeletonPlaceholder.js +2 -1
  17. package/lib/components/SkeletonText/SkeletonText.js +1 -1
  18. package/lib/components/StructuredList/StructuredList.js +87 -52
  19. package/lib/index.js +39 -37
  20. package/lib/internal/FloatingMenu.js +3 -1
  21. package/package.json +5 -5
  22. package/es/components/StructuredList/index.js +0 -43
  23. package/es/components/StructuredList/next/StructuredList.js +0 -342
  24. package/es/internal/ComponentToggle.js +0 -42
  25. package/lib/components/StructuredList/index.js +0 -52
  26. package/lib/components/StructuredList/next/StructuredList.js +0 -357
  27. package/lib/internal/ComponentToggle.js +0 -50
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Copyright IBM Corp. 2016, 2022
3
+ *
4
+ * This source code is licensed under the Apache-2.0 license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ */
7
+
8
+ 'use strict';
9
+
10
+ Object.defineProperty(exports, '__esModule', { value: true });
11
+
12
+ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelpers.js');
13
+ var PropTypes = require('prop-types');
14
+ var React = require('react');
15
+ var cx = require('classnames');
16
+ var usePrefix = require('../../internal/usePrefix.js');
17
+ var FormContext = require('../FluidForm/FormContext.js');
18
+ var iconsReact = require('@carbon/icons-react');
19
+
20
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
+
22
+ var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
23
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
24
+ var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
25
+
26
+ var _excluded = ["className", "datePickerType"];
27
+
28
+ function FluidDatePickerSkeleton(_ref) {
29
+ var className = _ref.className,
30
+ _ref$datePickerType = _ref.datePickerType,
31
+ datePickerType = _ref$datePickerType === void 0 ? 'single' : _ref$datePickerType,
32
+ other = _rollupPluginBabelHelpers.objectWithoutProperties(_ref, _excluded);
33
+
34
+ var prefix = usePrefix.usePrefix();
35
+ var classNames = cx__default["default"](className, "".concat(prefix, "--form-item ").concat(prefix, "--date-picker--fluid__skeleton"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(prefix, "--date-picker--fluid__skeleton--range"), datePickerType === 'range'));
36
+ return /*#__PURE__*/React__default["default"].createElement(FormContext.FormContext.Provider, {
37
+ value: {
38
+ isFluid: true
39
+ }
40
+ }, /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
41
+ className: classNames
42
+ }, other), /*#__PURE__*/React__default["default"].createElement("div", {
43
+ className: "".concat(prefix, "--date-picker--fluid__skeleton--container")
44
+ }, /*#__PURE__*/React__default["default"].createElement("span", {
45
+ className: "".concat(prefix, "--label ").concat(prefix, "--skeleton")
46
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
47
+ className: "".concat(prefix, "--skeleton ").concat(prefix, "--text-input")
48
+ }), datePickerType !== 'simple' && /*#__PURE__*/React__default["default"].createElement(iconsReact.Calendar, {
49
+ className: "".concat(prefix, "--date-picker__icon"),
50
+ role: "img",
51
+ "aria-hidden": "true"
52
+ })), datePickerType === 'range' && /*#__PURE__*/React__default["default"].createElement("div", {
53
+ className: "".concat(prefix, "--date-picker--fluid__skeleton--container")
54
+ }, /*#__PURE__*/React__default["default"].createElement("span", {
55
+ className: "".concat(prefix, "--label ").concat(prefix, "--skeleton")
56
+ }), /*#__PURE__*/React__default["default"].createElement("div", {
57
+ className: "".concat(prefix, "--skeleton ").concat(prefix, "--text-input")
58
+ }), /*#__PURE__*/React__default["default"].createElement(iconsReact.Calendar, {
59
+ className: "".concat(prefix, "--date-picker__icon"),
60
+ role: "img",
61
+ "aria-hidden": "true"
62
+ }))));
63
+ }
64
+
65
+ FluidDatePickerSkeleton.propTypes = {
66
+ /**
67
+ * Specify an optional className to be applied to the outer FluidForm wrapper
68
+ */
69
+ className: PropTypes__default["default"].string,
70
+
71
+ /**
72
+ * Specify which variant of the DatePicker the skeleton should mimic
73
+ */
74
+ datePickerType: PropTypes__default["default"].oneOf(['simple', 'single', 'range'])
75
+ };
76
+
77
+ exports["default"] = FluidDatePickerSkeleton;
@@ -38,14 +38,15 @@ function ListBoxSelection(_ref) {
38
38
  selectionCount = _ref.selectionCount,
39
39
  t = _ref.translateWithId,
40
40
  disabled = _ref.disabled,
41
- onClearSelection = _ref.onClearSelection;
41
+ onClearSelection = _ref.onClearSelection,
42
+ readOnly = _ref.readOnly;
42
43
  var prefix = usePrefix.usePrefix();
43
44
  var className = cx__default["default"]("".concat(prefix, "--list-box__selection"), (_cx = {}, _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--tag--filter"), selectionCount), _rollupPluginBabelHelpers.defineProperty(_cx, "".concat(prefix, "--list-box__selection--multi"), selectionCount), _cx));
44
45
 
45
46
  var handleOnClick = function handleOnClick(event) {
46
47
  event.stopPropagation();
47
48
 
48
- if (disabled) {
49
+ if (disabled || readOnly) {
49
50
  return;
50
51
  }
51
52
 
@@ -59,7 +60,7 @@ function ListBoxSelection(_ref) {
59
60
  var handleOnKeyDown = function handleOnKeyDown(event) {
60
61
  event.stopPropagation();
61
62
 
62
- if (disabled) {
63
+ if (disabled || readOnly) {
63
64
  return;
64
65
  } // When a user hits ENTER, we'll clear the selection
65
66
 
@@ -88,7 +89,8 @@ function ListBoxSelection(_ref) {
88
89
  onKeyDown: handleOnKeyDown,
89
90
  disabled: disabled,
90
91
  "aria-label": t('clear.all'),
91
- title: description
92
+ title: description,
93
+ "aria-disabled": readOnly ? true : undefined
92
94
  }, _Close || (_Close = /*#__PURE__*/React__default["default"].createElement(iconsReact.Close, null)))) : /*#__PURE__*/React__default["default"].createElement("div", {
93
95
  role: "button",
94
96
  className: className,
@@ -135,6 +137,11 @@ ListBoxSelection.propTypes = {
135
137
  */
136
138
  onKeyDown: PropTypes__default["default"].func,
137
139
 
140
+ /**
141
+ * Whether or not the Dropdown is readonly
142
+ */
143
+ readOnly: PropTypes__default["default"].bool,
144
+
138
145
  /**
139
146
  * Specify an optional `selectionCount` value that will be used to determine
140
147
  * whether the selection should display a badge or a single clear icon.
@@ -85,7 +85,8 @@ var MultiSelect = /*#__PURE__*/React__default["default"].forwardRef(function Mul
85
85
  onChange = _ref.onChange,
86
86
  onMenuChange = _ref.onMenuChange,
87
87
  direction = _ref.direction,
88
- selected = _ref.selectedItems;
88
+ selected = _ref.selectedItems,
89
+ readOnly = _ref.readOnly;
89
90
  var prefix = usePrefix.usePrefix();
90
91
 
91
92
  var _useContext = React.useContext(FormContext.FormContext),
@@ -176,7 +177,7 @@ var MultiSelect = /*#__PURE__*/React__default["default"].forwardRef(function Mul
176
177
  var helperId = !helperText ? undefined : "multiselect-helper-text-".concat(multiSelectInstanceId);
177
178
  var fieldLabelId = "multiselect-field-label-".concat(multiSelectInstanceId);
178
179
  var helperClasses = cx__default["default"]("".concat(prefix, "--form__helper-text"), _rollupPluginBabelHelpers.defineProperty({}, "".concat(prefix, "--form__helper-text--disabled"), disabled));
179
- var className = cx__default["default"]("".concat(prefix, "--multi-select"), [enabled ? null : containerClassName], (_cx4 = {}, _rollupPluginBabelHelpers.defineProperty(_cx4, "".concat(prefix, "--multi-select--invalid"), invalid), _rollupPluginBabelHelpers.defineProperty(_cx4, "".concat(prefix, "--multi-select--warning"), showWarning), _rollupPluginBabelHelpers.defineProperty(_cx4, "".concat(prefix, "--multi-select--inline"), inline), _rollupPluginBabelHelpers.defineProperty(_cx4, "".concat(prefix, "--multi-select--selected"), selectedItems && selectedItems.length > 0), _rollupPluginBabelHelpers.defineProperty(_cx4, "".concat(prefix, "--list-box--up"), direction === 'top'), _cx4)); // needs to be capitalized for react to render it correctly
180
+ var className = cx__default["default"]("".concat(prefix, "--multi-select"), [enabled ? null : containerClassName], (_cx4 = {}, _rollupPluginBabelHelpers.defineProperty(_cx4, "".concat(prefix, "--multi-select--invalid"), invalid), _rollupPluginBabelHelpers.defineProperty(_cx4, "".concat(prefix, "--multi-select--warning"), showWarning), _rollupPluginBabelHelpers.defineProperty(_cx4, "".concat(prefix, "--multi-select--inline"), inline), _rollupPluginBabelHelpers.defineProperty(_cx4, "".concat(prefix, "--multi-select--selected"), selectedItems && selectedItems.length > 0), _rollupPluginBabelHelpers.defineProperty(_cx4, "".concat(prefix, "--list-box--up"), direction === 'top'), _rollupPluginBabelHelpers.defineProperty(_cx4, "".concat(prefix, "--multi-select--readonly"), readOnly), _cx4)); // needs to be capitalized for react to render it correctly
180
181
 
181
182
  var ItemToElement = itemToElement;
182
183
  var sortOptions = {
@@ -241,6 +242,21 @@ var MultiSelect = /*#__PURE__*/React__default["default"].forwardRef(function Mul
241
242
  evt.target.classList.contains("".concat(prefix, "--tag__close-icon")) ? setIsFocused(false) : setIsFocused(evt.type === 'focus' ? true : false);
242
243
  };
243
244
 
245
+ var readOnlyEventHandlers = readOnly ? {
246
+ onClick: function onClick(evt) {
247
+ // NOTE: does not prevent click
248
+ evt.preventDefault(); // focus on the element as per readonly input behavior
249
+
250
+ evt.target.focus();
251
+ },
252
+ onKeyDown: function onKeyDown(evt) {
253
+ var selectAccessKeys = ['ArrowDown', 'ArrowUp', ' ', 'Enter']; // This prevents the select from opening for the above keys
254
+
255
+ if (selectAccessKeys.includes(evt.key)) {
256
+ evt.preventDefault();
257
+ }
258
+ }
259
+ } : {};
244
260
  return /*#__PURE__*/React__default["default"].createElement("div", {
245
261
  className: wrapperClasses
246
262
  }, /*#__PURE__*/React__default["default"].createElement("label", _rollupPluginBabelHelpers["extends"]({
@@ -254,6 +270,7 @@ var MultiSelect = /*#__PURE__*/React__default["default"].forwardRef(function Mul
254
270
  size: size,
255
271
  className: className,
256
272
  disabled: disabled,
273
+ readOnly: readOnly,
257
274
  light: light,
258
275
  invalid: invalid,
259
276
  invalidText: invalidText,
@@ -269,12 +286,13 @@ var MultiSelect = /*#__PURE__*/React__default["default"].forwardRef(function Mul
269
286
  type: "button",
270
287
  className: "".concat(prefix, "--list-box__field"),
271
288
  disabled: disabled,
272
- "aria-disabled": disabled
289
+ "aria-disabled": disabled || readOnly
273
290
  }, toggleButtonProps, {
274
291
  ref: mergeRefs["default"](toggleButtonProps.ref, ref),
275
292
  onKeyDown: onKeyDown
276
- }), selectedItems.length > 0 && /*#__PURE__*/React__default["default"].createElement(ListBox["default"].Selection, {
277
- clearSelection: !disabled ? clearSelection : noop,
293
+ }, readOnlyEventHandlers), selectedItems.length > 0 && /*#__PURE__*/React__default["default"].createElement(ListBox["default"].Selection, {
294
+ readOnly: readOnly,
295
+ clearSelection: !disabled && !readOnly ? clearSelection : noop,
278
296
  selectionCount: selectedItems.length,
279
297
  translateWithId: translateWithId,
280
298
  disabled: disabled
@@ -425,6 +443,11 @@ MultiSelect.propTypes = _rollupPluginBabelHelpers.objectSpread2(_rollupPluginBab
425
443
  */
426
444
  open: PropTypes__default["default"].bool,
427
445
 
446
+ /**
447
+ * Whether or not the Dropdown is readonly
448
+ */
449
+ readOnly: PropTypes__default["default"].bool,
450
+
428
451
  /**
429
452
  * For full control of the selected items
430
453
  */
@@ -9,30 +9,9 @@
9
9
 
10
10
  Object.defineProperty(exports, '__esModule', { value: true });
11
11
 
12
- var FeatureFlags = require('@carbon/feature-flags');
13
12
  var OverflowMenu$1 = require('./OverflowMenu.js');
14
13
  var createClassWrapper = require('../../internal/createClassWrapper.js');
15
14
 
16
- function _interopNamespace(e) {
17
- if (e && e.__esModule) return e;
18
- var n = Object.create(null);
19
- if (e) {
20
- Object.keys(e).forEach(function (k) {
21
- if (k !== 'default') {
22
- var d = Object.getOwnPropertyDescriptor(e, k);
23
- Object.defineProperty(n, k, d.get ? d : {
24
- enumerable: true,
25
- get: function () { return e[k]; }
26
- });
27
- }
28
- });
29
- }
30
- n["default"] = e;
31
- return Object.freeze(n);
32
- }
33
-
34
- var FeatureFlags__namespace = /*#__PURE__*/_interopNamespace(FeatureFlags);
35
-
36
- var OverflowMenu = FeatureFlags__namespace.enabled('enable-v11-release') ? createClassWrapper.createClassWrapper(OverflowMenu$1.OverflowMenu) : OverflowMenu$1.OverflowMenu;
15
+ var OverflowMenu = createClassWrapper.createClassWrapper(OverflowMenu$1.OverflowMenu);
37
16
 
38
17
  exports["default"] = OverflowMenu;
@@ -38,7 +38,8 @@ var SkeletonPlaceholder = function SkeletonPlaceholder(_ref) {
38
38
 
39
39
  SkeletonPlaceholder.propTypes = {
40
40
  /**
41
- * the class to be applied to the component
41
+ * Add a custom class to the component
42
+ * to set the height and width
42
43
  */
43
44
  className: PropTypes__default["default"].string
44
45
  };
@@ -99,7 +99,7 @@ SkeletonText.propTypes = {
99
99
  heading: PropTypes__default["default"].bool,
100
100
 
101
101
  /**
102
- * the number of lines in a paragraph
102
+ * the number of lines shown if paragraph is true
103
103
  */
104
104
  lineCount: PropTypes__default["default"].number,
105
105
 
@@ -13,7 +13,7 @@ var _rollupPluginBabelHelpers = require('../../_virtual/_rollupPluginBabelHelper
13
13
  var React = require('react');
14
14
  var PropTypes = require('prop-types');
15
15
  var cx = require('classnames');
16
- var setupGetInstanceId = require('../../tools/setupGetInstanceId.js');
16
+ var useId = require('../../internal/useId.js');
17
17
  var deprecate = require('../../prop-types/deprecate.js');
18
18
  var usePrefix = require('../../internal/usePrefix.js');
19
19
 
@@ -23,13 +23,14 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
23
23
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
24
24
  var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
25
25
 
26
- var _excluded = ["children", "selection", "className", "ariaLabel", "isCondensed", "isFlush", "border"],
26
+ var _excluded = ["children", "selection", "className", "ariaLabel", "isCondensed", "isFlush"],
27
27
  _excluded2 = ["children", "className"],
28
28
  _excluded3 = ["children", "className"],
29
- _excluded4 = ["onKeyDown", "tabIndex", "children", "className", "head", "label"],
30
- _excluded5 = ["className", "value", "name", "title", "id"],
29
+ _excluded4 = ["onKeyDown", "children", "className", "head"],
30
+ _excluded5 = ["className", "name", "title", "id"],
31
31
  _excluded6 = ["children", "className", "head", "noWrap"];
32
- var getInstanceId = setupGetInstanceId["default"]();
32
+ var GridSelectedRowStateContext = /*#__PURE__*/React__default["default"].createContext(null);
33
+ var GridSelectedRowDispatchContext = /*#__PURE__*/React__default["default"].createContext(null);
33
34
  function StructuredListWrapper(props) {
34
35
  var _classNames;
35
36
 
@@ -38,18 +39,27 @@ function StructuredListWrapper(props) {
38
39
  className = props.className,
39
40
  ariaLabel = props.ariaLabel,
40
41
  isCondensed = props.isCondensed,
41
- isFlush = props.isFlush;
42
- props.border;
43
- var other = _rollupPluginBabelHelpers.objectWithoutProperties(props, _excluded);
42
+ isFlush = props.isFlush,
43
+ other = _rollupPluginBabelHelpers.objectWithoutProperties(props, _excluded);
44
44
 
45
45
  var prefix = usePrefix.usePrefix();
46
46
  var classes = cx__default["default"]("".concat(prefix, "--structured-list"), className, (_classNames = {}, _rollupPluginBabelHelpers.defineProperty(_classNames, "".concat(prefix, "--structured-list--selection"), selection), _rollupPluginBabelHelpers.defineProperty(_classNames, "".concat(prefix, "--structured-list--condensed"), isCondensed), _rollupPluginBabelHelpers.defineProperty(_classNames, "".concat(prefix, "--structured-list--flush"), isFlush), _classNames));
47
- return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
47
+
48
+ var _React$useState = React__default["default"].useState(null),
49
+ _React$useState2 = _rollupPluginBabelHelpers.slicedToArray(_React$useState, 2),
50
+ selectedRow = _React$useState2[0],
51
+ setSelectedRow = _React$useState2[1];
52
+
53
+ return /*#__PURE__*/React__default["default"].createElement(GridSelectedRowStateContext.Provider, {
54
+ value: selectedRow
55
+ }, /*#__PURE__*/React__default["default"].createElement(GridSelectedRowDispatchContext.Provider, {
56
+ value: setSelectedRow
57
+ }, /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
48
58
  role: "table",
49
59
  className: classes
50
60
  }, other, {
51
61
  "aria-label": ariaLabel
52
- }), children);
62
+ }), children)));
53
63
  }
54
64
  StructuredListWrapper.propTypes = {
55
65
  /**
@@ -57,11 +67,6 @@ StructuredListWrapper.propTypes = {
57
67
  */
58
68
  ariaLabel: PropTypes__default["default"].string,
59
69
 
60
- /**
61
- * Specify whether a border should be added to your StructuredListWrapper
62
- */
63
- border: deprecate["default"](PropTypes__default["default"].bool, "\nThe prop `border` will be removed in the next major version of Carbon."),
64
-
65
70
  /**
66
71
  * Provide the contents of your StructuredListWrapper
67
72
  */
@@ -89,9 +94,9 @@ StructuredListWrapper.propTypes = {
89
94
  };
90
95
  StructuredListWrapper.defaultProps = {
91
96
  selection: false,
92
- ariaLabel: 'Structured list section',
93
97
  isCondensed: false,
94
- isFlush: false
98
+ isFlush: false,
99
+ ariaLabel: 'Structured list section'
95
100
  };
96
101
  function StructuredListHead(props) {
97
102
  var children = props.children,
@@ -148,29 +153,51 @@ StructuredListBody.propTypes = {
148
153
  StructuredListBody.defaultProps = {
149
154
  onKeyDown: function onKeyDown() {}
150
155
  };
156
+ var GridRowContext = /*#__PURE__*/React__default["default"].createContext(null);
151
157
  function StructuredListRow(props) {
158
+ var _classNames2;
159
+
152
160
  var onKeyDown = props.onKeyDown,
153
- tabIndex = props.tabIndex,
154
161
  children = props.children,
155
162
  className = props.className,
156
163
  head = props.head,
157
- label = props.label,
158
164
  other = _rollupPluginBabelHelpers.objectWithoutProperties(props, _excluded4);
159
165
 
166
+ var _useState = React.useState(false),
167
+ _useState2 = _rollupPluginBabelHelpers.slicedToArray(_useState, 2),
168
+ hasFocusWithin = _useState2[0],
169
+ setHasFocusWithin = _useState2[1];
170
+
171
+ var id = useId.useId('grid-input');
172
+ var setSelectedRow = React__default["default"].useContext(GridSelectedRowDispatchContext);
160
173
  var prefix = usePrefix.usePrefix();
161
- var classes = cx__default["default"]("".concat(prefix, "--structured-list-row"), className, _rollupPluginBabelHelpers.defineProperty({}, "".concat(prefix, "--structured-list-row--header-row"), head));
162
- return label ?
163
- /*#__PURE__*/
164
- // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions
165
- React__default["default"].createElement("label", _rollupPluginBabelHelpers["extends"]({}, other, {
166
- tabIndex: tabIndex,
167
- className: classes,
168
- onKeyDown: onKeyDown
169
- }), children) : /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
174
+ var value = {
175
+ id: id
176
+ };
177
+ var classes = cx__default["default"]("".concat(prefix, "--structured-list-row"), className, (_classNames2 = {}, _rollupPluginBabelHelpers.defineProperty(_classNames2, "".concat(prefix, "--structured-list-row--header-row"), head), _rollupPluginBabelHelpers.defineProperty(_classNames2, "".concat(prefix, "--structured-list-row--focused-within"), hasFocusWithin), _classNames2));
178
+ return head ? /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
170
179
  role: "row"
171
180
  }, other, {
172
181
  className: classes
173
- }), children);
182
+ }), children) :
183
+ /*#__PURE__*/
184
+ // eslint-disable-next-line jsx-a11y/interactive-supports-focus
185
+ React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({}, other, {
186
+ role: "row",
187
+ className: classes,
188
+ onClick: function onClick() {
189
+ return setSelectedRow(id);
190
+ },
191
+ onFocus: function onFocus() {
192
+ setHasFocusWithin(true);
193
+ },
194
+ onBlur: function onBlur() {
195
+ setHasFocusWithin(false);
196
+ },
197
+ onKeyDown: onKeyDown
198
+ }), /*#__PURE__*/React__default["default"].createElement(GridRowContext.Provider, {
199
+ value: value
200
+ }, children));
174
201
  }
175
202
  StructuredListRow.propTypes = {
176
203
  /**
@@ -191,42 +218,44 @@ StructuredListRow.propTypes = {
191
218
  /**
192
219
  * Specify whether a `<label>` should be used
193
220
  */
194
- label: PropTypes__default["default"].bool,
221
+ label: deprecate["default"](PropTypes__default["default"].bool, "\nThe `label` prop is no longer needed and will be removed in the next major version of Carbon."),
195
222
 
196
223
  /**
197
224
  * Provide a handler that is invoked on the key down event for the control,
198
- * if `<label>` is in use
199
- */
200
- onKeyDown: PropTypes__default["default"].func,
201
-
202
- /**
203
- * Specify the tab index of the container node, if `<label>` is in use
204
225
  */
205
- tabIndex: PropTypes__default["default"].number
226
+ onKeyDown: PropTypes__default["default"].func
206
227
  };
207
228
  StructuredListRow.defaultProps = {
208
229
  head: false,
209
- label: false,
210
- tabIndex: 0,
211
230
  onKeyDown: function onKeyDown() {}
212
231
  };
213
232
  function StructuredListInput(props) {
233
+ var _row$id;
234
+
235
+ var defaultId = useId.useId('structureListInput');
236
+
214
237
  var className = props.className,
215
- value = props.value,
216
- name = props.name,
238
+ _props$name = props.name,
239
+ name = _props$name === void 0 ? "structured-list-input-".concat(defaultId) : _props$name,
217
240
  title = props.title,
218
241
  id = props.id,
219
242
  other = _rollupPluginBabelHelpers.objectWithoutProperties(props, _excluded5);
220
243
 
221
244
  var prefix = usePrefix.usePrefix();
222
- var classes = cx__default["default"]("".concat(prefix, "--structured-list-input"), className);
223
- var instanceId = id || getInstanceId();
245
+ var classes = cx__default["default"]("".concat(prefix, "--structured-list-input"), "".concat(prefix, "--visually-hidden"), className);
246
+ var row = React__default["default"].useContext(GridRowContext);
247
+ var selectedRow = React__default["default"].useContext(GridSelectedRowStateContext);
248
+ var setSelectedRow = React__default["default"].useContext(GridSelectedRowDispatchContext);
224
249
  return /*#__PURE__*/React__default["default"].createElement("input", _rollupPluginBabelHelpers["extends"]({}, other, {
225
250
  type: "radio",
226
- tabIndex: -1,
227
- id: instanceId,
251
+ tabIndex: 0,
252
+ checked: row && row.id === selectedRow,
253
+ value: (_row$id = row === null || row === void 0 ? void 0 : row.id) !== null && _row$id !== void 0 ? _row$id : '',
254
+ onChange: function onChange(event) {
255
+ setSelectedRow(event.target.value);
256
+ },
257
+ id: id !== null && id !== void 0 ? id : defaultId,
228
258
  className: classes,
229
- value: value,
230
259
  name: name,
231
260
  title: title
232
261
  }));
@@ -240,7 +269,7 @@ StructuredListInput.propTypes = {
240
269
  /**
241
270
  * Specify whether the underlying input should be checked by default
242
271
  */
243
- defaultChecked: PropTypes__default["default"].bool,
272
+ defaultChecked: deprecate["default"](PropTypes__default["default"].bool, "\nThe prop `defaultChecked` is no longer needed and will be removed in the next major version of Carbon."),
244
273
 
245
274
  /**
246
275
  * Specify a custom `id` for the input
@@ -255,7 +284,7 @@ StructuredListInput.propTypes = {
255
284
  /**
256
285
  * Provide an optional hook that is called each time the input is updated
257
286
  */
258
- onChange: PropTypes__default["default"].func,
287
+ onChange: deprecate["default"](PropTypes__default["default"].func, "\nThe prop `onChange` will be removed in the next major version of Carbon."),
259
288
 
260
289
  /**
261
290
  * Provide a `title` for the input
@@ -265,11 +294,9 @@ StructuredListInput.propTypes = {
265
294
  /**
266
295
  * Specify the value of the input
267
296
  */
268
- value: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number]).isRequired
297
+ value: deprecate["default"](PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].number]).isRequired, "\nThe prop `value` will be removed in the next major version of Carbon.")
269
298
  };
270
299
  StructuredListInput.defaultProps = {
271
- onChange: function onChange() {},
272
- value: 'value',
273
300
  title: 'title'
274
301
  };
275
302
  function StructuredListCell(props) {
@@ -283,9 +310,17 @@ function StructuredListCell(props) {
283
310
 
284
311
  var prefix = usePrefix.usePrefix();
285
312
  var classes = cx__default["default"](className, (_classNames3 = {}, _rollupPluginBabelHelpers.defineProperty(_classNames3, "".concat(prefix, "--structured-list-th"), head), _rollupPluginBabelHelpers.defineProperty(_classNames3, "".concat(prefix, "--structured-list-td"), !head), _rollupPluginBabelHelpers.defineProperty(_classNames3, "".concat(prefix, "--structured-list-content--nowrap"), noWrap), _classNames3));
313
+
314
+ if (head) {
315
+ return /*#__PURE__*/React__default["default"].createElement("span", _rollupPluginBabelHelpers["extends"]({
316
+ className: classes,
317
+ role: "columnheader"
318
+ }, other), children);
319
+ }
320
+
286
321
  return /*#__PURE__*/React__default["default"].createElement("div", _rollupPluginBabelHelpers["extends"]({
287
322
  className: classes,
288
- role: head ? 'columnheader' : 'cell'
323
+ role: "cell"
289
324
  }, other), children);
290
325
  }
291
326
  StructuredListCell.propTypes = {