carbon-react 142.0.2 → 142.0.4

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.
@@ -297,6 +297,7 @@ const FilterableSelect = /*#__PURE__*/React.forwardRef(({
297
297
  if (onClick) {
298
298
  onClick(event);
299
299
  }
300
+ setOpen(true);
300
301
  }
301
302
  function handleDropdownIconClick(event) {
302
303
  isMouseDownReported.current = false;
@@ -66,6 +66,7 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
66
66
  const isClickTriggeredBySelect = useRef(false);
67
67
  const isMouseDownReported = useRef(false);
68
68
  const isMouseDownOnInput = useRef(false);
69
+ const isOpenedByFocus = useRef(false);
69
70
  const isControlled = useRef(value !== undefined);
70
71
  const [textboxRef, setTextboxRef] = useState();
71
72
  const [isOpen, setOpenState] = useState(false);
@@ -271,6 +272,17 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
271
272
  if (onClick) {
272
273
  onClick(event);
273
274
  }
275
+ if (!openOnFocus || openOnFocus && !isOpenedByFocus.current) {
276
+ if (isOpen) {
277
+ setFilterText("");
278
+ setOpenState(false);
279
+ return;
280
+ }
281
+ onOpen?.();
282
+ setOpenState(true);
283
+ } else {
284
+ isOpenedByFocus.current = false;
285
+ }
274
286
  }
275
287
  function handleDropdownIconClick(event) {
276
288
  isMouseDownReported.current = false;
@@ -329,8 +341,12 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
329
341
  isInputFocused.current = true;
330
342
  }
331
343
  if (isMouseDownReported.current && !isMouseDownOnInput.current) {
344
+ isOpenedByFocus.current = false;
332
345
  return false;
333
346
  }
347
+ if (isMouseDownOnInput.current) {
348
+ isOpenedByFocus.current = true;
349
+ }
334
350
  return true;
335
351
  });
336
352
  });
@@ -13,6 +13,7 @@ import { InputGroupContext } from "../../__internal__/input-behaviour";
13
13
  import { filterStyledSystemMarginProps } from "../../style/utils";
14
14
  import Logger from "../../__internal__/utils/logger";
15
15
  let deprecateUncontrolledWarnTriggered = false;
16
+ const isBlurBlockedDeprecateWarnTriggered = false;
16
17
  const SimpleColorPicker = /*#__PURE__*/React.forwardRef((props, ref) => {
17
18
  const {
18
19
  children,
@@ -145,9 +146,13 @@ const SimpleColorPicker = /*#__PURE__*/React.forwardRef((props, ref) => {
145
146
  });
146
147
  const handleOnBlur = ev => {
147
148
  ev.preventDefault();
148
- if (!blurBlocked && onBlur) {
149
- onBlur(ev);
150
- }
149
+ setTimeout(() => {
150
+ const hasBlurred = !gridItemRefs?.current?.find(colorRef => colorRef === document.activeElement);
151
+ /* istanbul ignore else */
152
+ if (onBlur && hasBlurred && !blurBlocked) {
153
+ onBlur(ev);
154
+ }
155
+ }, 5);
151
156
  };
152
157
  const handleOnMouseDown = ev => {
153
158
  setIsBlurBlocked(true);
@@ -177,6 +182,10 @@ const SimpleColorPicker = /*#__PURE__*/React.forwardRef((props, ref) => {
177
182
  deprecateUncontrolledWarnTriggered = true;
178
183
  Logger.deprecate("Uncontrolled behaviour in `Simple Color Picker` is deprecated and support will soon be removed. Please make sure all your inputs are controlled.");
179
184
  }
185
+ if (!isBlurBlockedDeprecateWarnTriggered && isBlurBlocked) {
186
+ deprecateUncontrolledWarnTriggered = true;
187
+ Logger.deprecate(`The 'isBlurBlocked' prop in ${SimpleColorPicker.displayName} is deprecated and support will soon be removed.`);
188
+ }
180
189
  return /*#__PURE__*/React.createElement(Fieldset, _extends({
181
190
  role: "radiogroup",
182
191
  legend: legend,
@@ -306,6 +306,7 @@ const FilterableSelect = exports.FilterableSelect = /*#__PURE__*/_react.default.
306
306
  if (onClick) {
307
307
  onClick(event);
308
308
  }
309
+ setOpen(true);
309
310
  }
310
311
  function handleDropdownIconClick(event) {
311
312
  isMouseDownReported.current = false;
@@ -75,6 +75,7 @@ const MultiSelect = exports.MultiSelect = /*#__PURE__*/_react.default.forwardRef
75
75
  const isClickTriggeredBySelect = (0, _react.useRef)(false);
76
76
  const isMouseDownReported = (0, _react.useRef)(false);
77
77
  const isMouseDownOnInput = (0, _react.useRef)(false);
78
+ const isOpenedByFocus = (0, _react.useRef)(false);
78
79
  const isControlled = (0, _react.useRef)(value !== undefined);
79
80
  const [textboxRef, setTextboxRef] = (0, _react.useState)();
80
81
  const [isOpen, setOpenState] = (0, _react.useState)(false);
@@ -280,6 +281,17 @@ const MultiSelect = exports.MultiSelect = /*#__PURE__*/_react.default.forwardRef
280
281
  if (onClick) {
281
282
  onClick(event);
282
283
  }
284
+ if (!openOnFocus || openOnFocus && !isOpenedByFocus.current) {
285
+ if (isOpen) {
286
+ setFilterText("");
287
+ setOpenState(false);
288
+ return;
289
+ }
290
+ onOpen?.();
291
+ setOpenState(true);
292
+ } else {
293
+ isOpenedByFocus.current = false;
294
+ }
283
295
  }
284
296
  function handleDropdownIconClick(event) {
285
297
  isMouseDownReported.current = false;
@@ -338,8 +350,12 @@ const MultiSelect = exports.MultiSelect = /*#__PURE__*/_react.default.forwardRef
338
350
  isInputFocused.current = true;
339
351
  }
340
352
  if (isMouseDownReported.current && !isMouseDownOnInput.current) {
353
+ isOpenedByFocus.current = false;
341
354
  return false;
342
355
  }
356
+ if (isMouseDownOnInput.current) {
357
+ isOpenedByFocus.current = true;
358
+ }
343
359
  return true;
344
360
  });
345
361
  });
@@ -22,6 +22,7 @@ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return
22
22
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
23
23
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
24
24
  let deprecateUncontrolledWarnTriggered = false;
25
+ const isBlurBlockedDeprecateWarnTriggered = false;
25
26
  const SimpleColorPicker = exports.SimpleColorPicker = /*#__PURE__*/_react.default.forwardRef((props, ref) => {
26
27
  const {
27
28
  children,
@@ -154,9 +155,13 @@ const SimpleColorPicker = exports.SimpleColorPicker = /*#__PURE__*/_react.defaul
154
155
  });
155
156
  const handleOnBlur = ev => {
156
157
  ev.preventDefault();
157
- if (!blurBlocked && onBlur) {
158
- onBlur(ev);
159
- }
158
+ setTimeout(() => {
159
+ const hasBlurred = !gridItemRefs?.current?.find(colorRef => colorRef === document.activeElement);
160
+ /* istanbul ignore else */
161
+ if (onBlur && hasBlurred && !blurBlocked) {
162
+ onBlur(ev);
163
+ }
164
+ }, 5);
160
165
  };
161
166
  const handleOnMouseDown = ev => {
162
167
  setIsBlurBlocked(true);
@@ -186,6 +191,10 @@ const SimpleColorPicker = exports.SimpleColorPicker = /*#__PURE__*/_react.defaul
186
191
  deprecateUncontrolledWarnTriggered = true;
187
192
  _logger.default.deprecate("Uncontrolled behaviour in `Simple Color Picker` is deprecated and support will soon be removed. Please make sure all your inputs are controlled.");
188
193
  }
194
+ if (!isBlurBlockedDeprecateWarnTriggered && isBlurBlocked) {
195
+ deprecateUncontrolledWarnTriggered = true;
196
+ _logger.default.deprecate(`The 'isBlurBlocked' prop in ${SimpleColorPicker.displayName} is deprecated and support will soon be removed.`);
197
+ }
189
198
  return /*#__PURE__*/_react.default.createElement(_fieldset.default, _extends({
190
199
  role: "radiogroup",
191
200
  legend: legend,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "carbon-react",
3
- "version": "142.0.2",
3
+ "version": "142.0.4",
4
4
  "description": "A library of reusable React components for easily building user interfaces.",
5
5
  "files": [
6
6
  "lib",