@carbon/react 1.56.0 → 1.57.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 (79) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +902 -908
  2. package/es/components/ComboBox/ComboBox.js +1 -0
  3. package/es/components/ContainedList/ContainedList.d.ts +45 -0
  4. package/es/components/ContainedList/ContainedList.js +18 -3
  5. package/es/components/ContainedList/ContainedListItem/ContainedListItem.d.ts +35 -0
  6. package/es/components/ContainedList/ContainedListItem/ContainedListItem.js +3 -2
  7. package/es/components/ContainedList/ContainedListItem/index.d.ts +9 -0
  8. package/es/components/ContainedList/index.d.ts +11 -0
  9. package/es/components/ContainedList/index.js +13 -0
  10. package/es/components/DataTable/TableToolbarSearch.js +1 -1
  11. package/es/components/DataTable/stories/examples/TableToolbarFilter.d.ts +51 -0
  12. package/es/components/DatePicker/DatePicker.d.ts +5 -4
  13. package/es/components/DatePicker/plugins/rangePlugin.js +5 -6
  14. package/es/components/Dialog/index.d.ts +31 -0
  15. package/es/components/ListBox/next/ListBoxTrigger.js +4 -3
  16. package/es/components/MultiSelect/FilterableMultiSelect.d.ts +177 -0
  17. package/es/components/MultiSelect/FilterableMultiSelect.js +388 -313
  18. package/es/components/MultiSelect/MultiSelect.js +1 -2
  19. package/es/components/MultiSelect/MultiSelectPropTypes.d.ts +62 -0
  20. package/es/components/MultiSelect/index.d.ts +10 -0
  21. package/es/components/MultiSelect/index.js +2 -0
  22. package/es/components/OverflowMenu/OverflowMenu.d.ts +300 -0
  23. package/es/components/OverflowMenu/OverflowMenu.js +22 -14
  24. package/es/components/OverflowMenu/next/index.d.ts +39 -0
  25. package/es/components/OverflowMenu/next/index.js +4 -3
  26. package/es/components/Pagination/Pagination.js +9 -9
  27. package/es/components/RadioButton/RadioButton.d.ts +4 -0
  28. package/es/components/RadioButton/RadioButton.js +7 -1
  29. package/es/components/RadioButtonGroup/RadioButtonGroup.d.ts +4 -0
  30. package/es/components/RadioButtonGroup/RadioButtonGroup.js +7 -1
  31. package/es/components/RadioTile/RadioTile.d.ts +4 -0
  32. package/es/components/RadioTile/RadioTile.js +7 -1
  33. package/es/components/Slider/Slider.js +3 -3
  34. package/es/components/StructuredList/StructuredList.js +6 -2
  35. package/es/components/TileGroup/TileGroup.d.ts +8 -0
  36. package/es/components/TileGroup/TileGroup.js +7 -1
  37. package/es/components/TimePicker/TimePicker.js +1 -1
  38. package/es/index.js +2 -0
  39. package/es/internal/Selection.js +4 -1
  40. package/lib/components/ComboBox/ComboBox.js +1 -0
  41. package/lib/components/ContainedList/ContainedList.d.ts +45 -0
  42. package/lib/components/ContainedList/ContainedList.js +18 -3
  43. package/lib/components/ContainedList/ContainedListItem/ContainedListItem.d.ts +35 -0
  44. package/lib/components/ContainedList/ContainedListItem/ContainedListItem.js +3 -2
  45. package/lib/components/ContainedList/ContainedListItem/index.d.ts +9 -0
  46. package/lib/components/ContainedList/index.d.ts +11 -0
  47. package/lib/components/ContainedList/index.js +19 -0
  48. package/lib/components/DataTable/TableToolbarSearch.js +1 -1
  49. package/lib/components/DataTable/stories/examples/TableToolbarFilter.d.ts +51 -0
  50. package/lib/components/DatePicker/DatePicker.d.ts +5 -4
  51. package/lib/components/DatePicker/plugins/rangePlugin.js +5 -6
  52. package/lib/components/Dialog/index.d.ts +31 -0
  53. package/lib/components/ListBox/next/ListBoxTrigger.js +4 -3
  54. package/lib/components/MultiSelect/FilterableMultiSelect.d.ts +177 -0
  55. package/lib/components/MultiSelect/FilterableMultiSelect.js +387 -312
  56. package/lib/components/MultiSelect/MultiSelect.js +1 -2
  57. package/lib/components/MultiSelect/MultiSelectPropTypes.d.ts +62 -0
  58. package/lib/components/MultiSelect/index.d.ts +10 -0
  59. package/lib/components/MultiSelect/index.js +2 -0
  60. package/lib/components/OverflowMenu/OverflowMenu.d.ts +300 -0
  61. package/lib/components/OverflowMenu/OverflowMenu.js +21 -13
  62. package/lib/components/OverflowMenu/next/index.d.ts +39 -0
  63. package/lib/components/OverflowMenu/next/index.js +4 -3
  64. package/lib/components/Pagination/Pagination.js +9 -9
  65. package/lib/components/RadioButton/RadioButton.d.ts +4 -0
  66. package/lib/components/RadioButton/RadioButton.js +7 -1
  67. package/lib/components/RadioButtonGroup/RadioButtonGroup.d.ts +4 -0
  68. package/lib/components/RadioButtonGroup/RadioButtonGroup.js +7 -1
  69. package/lib/components/RadioTile/RadioTile.d.ts +4 -0
  70. package/lib/components/RadioTile/RadioTile.js +7 -1
  71. package/lib/components/Slider/Slider.js +3 -3
  72. package/lib/components/StructuredList/StructuredList.js +6 -2
  73. package/lib/components/TileGroup/TileGroup.d.ts +8 -0
  74. package/lib/components/TileGroup/TileGroup.js +7 -1
  75. package/lib/components/TimePicker/TimePicker.js +1 -1
  76. package/lib/index.js +2 -0
  77. package/lib/internal/Selection.js +4 -1
  78. package/package.json +8 -8
  79. package/telemetry.yml +1 -1
@@ -45,6 +45,7 @@ const RadioButtonGroup = /*#__PURE__*/React__default["default"].forwardRef((prop
45
45
  warn = false,
46
46
  warnText,
47
47
  slug,
48
+ required,
48
49
  ...rest
49
50
  } = props;
50
51
  const prefix = usePrefix.usePrefix();
@@ -72,7 +73,8 @@ const RadioButtonGroup = /*#__PURE__*/React__default["default"].forwardRef((prop
72
73
  key: value,
73
74
  value: value,
74
75
  onChange: handleOnChange,
75
- checked: value === selected
76
+ checked: value === selected,
77
+ required: required
76
78
  };
77
79
  if (!selected && radioButton?.props.checked) {
78
80
  newProps.checked = true;
@@ -197,6 +199,10 @@ RadioButtonGroup.propTypes = {
197
199
  * Whether the RadioButtonGroup should be read-only
198
200
  */
199
201
  readOnly: PropTypes__default["default"].bool,
202
+ /**
203
+ * `true` to specify if radio selection in group is required.
204
+ */
205
+ required: PropTypes__default["default"].bool,
200
206
  /**
201
207
  * **Experimental**: Provide a `Slug` component to be rendered inside the `RadioButtonGroup` component
202
208
  */
@@ -50,6 +50,10 @@ export interface RadioTileProps {
50
50
  * Specify the value of the underlying `<input>`.
51
51
  */
52
52
  value: string | number;
53
+ /**
54
+ * `true` to specify if the input is required.
55
+ */
56
+ required?: boolean;
53
57
  }
54
58
  declare const RadioTile: React.ForwardRefExoticComponent<RadioTileProps & React.RefAttributes<HTMLInputElement>>;
55
59
  export default RadioTile;
@@ -43,6 +43,7 @@ const RadioTile = /*#__PURE__*/React__default["default"].forwardRef(function Rad
43
43
  id,
44
44
  onChange = noopFn.noopFn,
45
45
  tabIndex = 0,
46
+ required,
46
47
  ...rest
47
48
  } = _ref;
48
49
  const prefix = usePrefix.usePrefix();
@@ -84,7 +85,8 @@ const RadioTile = /*#__PURE__*/React__default["default"].forwardRef(function Rad
84
85
  tabIndex: !disabled ? tabIndex : undefined,
85
86
  type: "radio",
86
87
  value: value,
87
- ref: ref
88
+ ref: ref,
89
+ required: required
88
90
  }), /*#__PURE__*/React__default["default"].createElement("label", _rollupPluginBabelHelpers["extends"]({}, rest, {
89
91
  htmlFor: inputId,
90
92
  className: className
@@ -130,6 +132,10 @@ RadioTile.propTypes = {
130
132
  * the underlying `<input>` changes.
131
133
  */
132
134
  onChange: PropTypes__default["default"].func,
135
+ /**
136
+ * `true` to specify if the control is required.
137
+ */
138
+ required: PropTypes__default["default"].bool,
133
139
  /**
134
140
  * Specify the tab index of the underlying `<input>`.
135
141
  */
@@ -522,7 +522,7 @@ class Slider extends React.PureComponent {
522
522
  if (clientX) {
523
523
  const leftOffset = this.state.isRtl ? (boundingRect?.right ?? 0) - clientX : clientX - (boundingRect?.left ?? 0);
524
524
  return leftOffset / width;
525
- } else if (value && range) {
525
+ } else if (value !== null && value !== undefined && range) {
526
526
  // Prevent NaN calculation if the range is 0.
527
527
  return range === 0 ? 0 : (value - this.props.min) / range;
528
528
  }
@@ -1104,7 +1104,7 @@ class Slider extends React.PureComponent {
1104
1104
  hasTooltip: hideTextInput,
1105
1105
  className: lowerThumbWrapperClasses,
1106
1106
  label: `${value}`,
1107
- align: twoHandles ? 'top-right' : 'top'
1107
+ align: "top"
1108
1108
  }, lowerThumbWrapperProps), /*#__PURE__*/React__default["default"].createElement("div", {
1109
1109
  className: lowerThumbClasses,
1110
1110
  role: "slider",
@@ -1123,7 +1123,7 @@ class Slider extends React.PureComponent {
1123
1123
  hasTooltip: hideTextInput,
1124
1124
  className: upperThumbWrapperClasses,
1125
1125
  label: `${valueUpper}`,
1126
- align: "top-left"
1126
+ align: "top"
1127
1127
  }, upperThumbWrapperProps), /*#__PURE__*/React__default["default"].createElement("div", {
1128
1128
  className: upperThumbClasses,
1129
1129
  role: "slider",
@@ -27,7 +27,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
27
27
  var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
28
28
  var cx__default = /*#__PURE__*/_interopDefaultLegacy(cx);
29
29
 
30
- var _StructuredListCell, _RadioButtonChecked, _RadioButton;
30
+ var _StructuredListCell;
31
31
  const GridSelectedRowStateContext = /*#__PURE__*/React__default["default"].createContext(null);
32
32
  const GridSelectedRowDispatchContext = /*#__PURE__*/React__default["default"].createContext(null);
33
33
  function StructuredListWrapper(props) {
@@ -202,7 +202,11 @@ function StructuredListRow(props) {
202
202
  onKeyDown: onKeyDown
203
203
  }), /*#__PURE__*/React__default["default"].createElement(GridRowContext.Provider, {
204
204
  value: value
205
- }, selection && /*#__PURE__*/React__default["default"].createElement(StructuredListCell, null, selectedRow === id ? _RadioButtonChecked || (_RadioButtonChecked = /*#__PURE__*/React__default["default"].createElement(iconsReact.RadioButtonChecked, null)) : _RadioButton || (_RadioButton = /*#__PURE__*/React__default["default"].createElement(iconsReact.RadioButton, null))), children));
205
+ }, selection && /*#__PURE__*/React__default["default"].createElement(StructuredListCell, null, selectedRow === id ? /*#__PURE__*/React__default["default"].createElement(iconsReact.RadioButtonChecked, {
206
+ className: `${prefix}--structured-list__icon`
207
+ }) : /*#__PURE__*/React__default["default"].createElement(iconsReact.RadioButton, {
208
+ className: `${prefix}--structured-list__icon`
209
+ })), children));
206
210
  }
207
211
  StructuredListRow.propTypes = {
208
212
  /**
@@ -40,6 +40,10 @@ export interface TileGroupProps extends Omit<ReactAttr<HTMLFieldSetElement>, Exc
40
40
  * Specify the value that is currently selected in the group
41
41
  */
42
42
  valueSelected?: string | number;
43
+ /**
44
+ * `true` to specify if input selection in group is required.
45
+ */
46
+ required?: boolean;
43
47
  }
44
48
  declare const TileGroup: {
45
49
  (props: any): import("react/jsx-runtime").JSX.Element;
@@ -73,6 +77,10 @@ declare const TileGroup: {
73
77
  * the group changes
74
78
  */
75
79
  onChange: PropTypes.Requireable<(...args: any[]) => any>;
80
+ /**
81
+ * `true` to specify if input selection in group is required.
82
+ */
83
+ required: PropTypes.Requireable<boolean>;
76
84
  /**
77
85
  * Specify the value that is currently selected in the group
78
86
  */
@@ -30,7 +30,8 @@ const TileGroup = props => {
30
30
  legend,
31
31
  name,
32
32
  onChange = noopFn.noopFn,
33
- valueSelected
33
+ valueSelected,
34
+ required
34
35
  } = props;
35
36
  const prefix = usePrefix.usePrefix();
36
37
  const [selected, setSelected] = React.useState(valueSelected ?? defaultSelected);
@@ -54,6 +55,7 @@ const TileGroup = props => {
54
55
  ...otherProps
55
56
  } = child.props;
56
57
  return /*#__PURE__*/React__default["default"].createElement(RadioTile["default"], _rollupPluginBabelHelpers["extends"]({}, otherProps, {
58
+ required: required,
57
59
  name: name,
58
60
  key: value,
59
61
  value: value,
@@ -122,6 +124,10 @@ TileGroup.propTypes = {
122
124
  * the group changes
123
125
  */
124
126
  onChange: PropTypes__default["default"].func,
127
+ /**
128
+ * `true` to specify if input selection in group is required.
129
+ */
130
+ required: PropTypes__default["default"].bool,
125
131
  /**
126
132
  * Specify the value that is currently selected in the group
127
133
  */
@@ -123,7 +123,7 @@ const TimePicker = /*#__PURE__*/React__default["default"].forwardRef(function Ti
123
123
  if (item) {
124
124
  return /*#__PURE__*/React__default["default"].cloneElement(item, {
125
125
  ...item.props,
126
- disabled: disabled,
126
+ disabled: item.props.disabled ?? disabled,
127
127
  readOnly: readOnly,
128
128
  ...readOnlyEventHandlers
129
129
  });
package/lib/index.js CHANGED
@@ -30,6 +30,7 @@ var index$5 = require('./components/ComboButton/index.js');
30
30
  var ComposedModal = require('./components/ComposedModal/ComposedModal.js');
31
31
  var ModalHeader = require('./components/ComposedModal/ModalHeader.js');
32
32
  var ModalFooter = require('./components/ComposedModal/ModalFooter.js');
33
+ require('./components/ContainedList/index.js');
33
34
  var index$6 = require('./components/ContentSwitcher/index.js');
34
35
  var Copy = require('./components/Copy/Copy.js');
35
36
  var CopyButton = require('./components/CopyButton/CopyButton.js');
@@ -73,6 +74,7 @@ var MenuItem = require('./components/Menu/MenuItem.js');
73
74
  var index$8 = require('./components/MenuButton/index.js');
74
75
  var Modal = require('./components/Modal/Modal.js');
75
76
  var ModalWrapper = require('./components/ModalWrapper/ModalWrapper.js');
77
+ require('./components/MultiSelect/index.js');
76
78
  var Notification = require('./components/Notification/Notification.js');
77
79
  var NumberInput_Skeleton = require('./components/NumberInput/NumberInput.Skeleton.js');
78
80
  var NumberInput = require('./components/NumberInput/NumberInput.js');
@@ -50,6 +50,9 @@ function useSelection(_ref2) {
50
50
  const [uncontrolledItems, setUncontrolledItems] = React.useState(initialSelectedItems);
51
51
  const isControlled = !!controlledItems;
52
52
  const [selectedItems, setSelectedItems] = React.useState(isControlled ? controlledItems : uncontrolledItems);
53
+ React.useEffect(() => {
54
+ setSelectedItems(isControlled ? controlledItems : uncontrolledItems);
55
+ }, [isControlled, controlledItems, uncontrolledItems]);
53
56
  React.useEffect(() => {
54
57
  callOnChangeHandler({
55
58
  isControlled,
@@ -84,7 +87,7 @@ function useSelection(_ref2) {
84
87
  isMounted: isMounted.current,
85
88
  onChangeHandlerControlled: savedOnChange.current,
86
89
  onChangeHandlerUncontrolled: setUncontrolledItems,
87
- selectedItems: setSelectedItems([])
90
+ selectedItems: []
88
91
  });
89
92
  }, [disabled, isControlled]);
90
93
  React.useEffect(() => {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@carbon/react",
3
3
  "description": "React components for the Carbon Design System",
4
- "version": "1.56.0",
4
+ "version": "1.57.0",
5
5
  "license": "Apache-2.0",
6
6
  "main": "lib/index.js",
7
7
  "module": "es/index.js",
@@ -48,12 +48,12 @@
48
48
  },
49
49
  "dependencies": {
50
50
  "@babel/runtime": "^7.18.3",
51
- "@carbon/feature-flags": "^0.19.0",
52
- "@carbon/icons-react": "^11.40.0",
53
- "@carbon/layout": "^11.21.0",
54
- "@carbon/styles": "^1.56.0",
51
+ "@carbon/feature-flags": "^0.20.0",
52
+ "@carbon/icons-react": "^11.41.0",
53
+ "@carbon/layout": "^11.22.0",
54
+ "@carbon/styles": "^1.57.0",
55
55
  "@floating-ui/react": "^0.26.0",
56
- "@ibm/telemetry-js": "^1.4.0",
56
+ "@ibm/telemetry-js": "^1.5.0",
57
57
  "classnames": "2.5.1",
58
58
  "copy-to-clipboard": "^3.3.1",
59
59
  "downshift": "8.5.0",
@@ -81,7 +81,7 @@
81
81
  "@babel/preset-react": "^7.22.3",
82
82
  "@babel/preset-typescript": "^7.21.5",
83
83
  "@carbon/test-utils": "^10.30.0",
84
- "@carbon/themes": "^11.34.0",
84
+ "@carbon/themes": "^11.35.0",
85
85
  "@rollup/plugin-babel": "^6.0.0",
86
86
  "@rollup/plugin-commonjs": "^25.0.0",
87
87
  "@rollup/plugin-node-resolve": "^15.0.0",
@@ -141,5 +141,5 @@
141
141
  "**/*.scss",
142
142
  "**/*.css"
143
143
  ],
144
- "gitHead": "7d883c90790c14c76ce131a62121a533ffe6af6f"
144
+ "gitHead": "e4922a44b2110b9dcb71da21ff6c0c9bb95610e0"
145
145
  }
package/telemetry.yml CHANGED
@@ -816,4 +816,4 @@ collect:
816
816
  - 'hollow'
817
817
  js:
818
818
  tokens: null
819
- functions: {}
819
+ functions: {}