carbon-react 144.19.0 → 144.20.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 (21) hide show
  1. package/esm/components/advanced-color-picker/advanced-color-picker.component.d.ts +3 -2
  2. package/esm/components/advanced-color-picker/advanced-color-picker.component.js +3 -1
  3. package/esm/components/dialog/dialog.component.js +4 -1
  4. package/esm/components/dialog-full-screen/dialog-full-screen.component.d.ts +1 -1
  5. package/esm/components/dialog-full-screen/dialog-full-screen.component.js +3 -1
  6. package/esm/components/modal/modal.component.d.ts +5 -1
  7. package/esm/components/modal/modal.component.js +2 -1
  8. package/esm/components/sidebar/sidebar.component.d.ts +1 -1
  9. package/esm/components/sidebar/sidebar.component.js +4 -1
  10. package/esm/components/vertical-menu/vertical-menu-full-screen/vertical-menu-full-screen.component.js +2 -1
  11. package/lib/components/advanced-color-picker/advanced-color-picker.component.d.ts +3 -2
  12. package/lib/components/advanced-color-picker/advanced-color-picker.component.js +3 -1
  13. package/lib/components/dialog/dialog.component.js +4 -1
  14. package/lib/components/dialog-full-screen/dialog-full-screen.component.d.ts +1 -1
  15. package/lib/components/dialog-full-screen/dialog-full-screen.component.js +3 -1
  16. package/lib/components/modal/modal.component.d.ts +5 -1
  17. package/lib/components/modal/modal.component.js +2 -1
  18. package/lib/components/sidebar/sidebar.component.d.ts +1 -1
  19. package/lib/components/sidebar/sidebar.component.js +4 -1
  20. package/lib/components/vertical-menu/vertical-menu-full-screen/vertical-menu-full-screen.component.js +2 -1
  21. package/package.json +1 -1
@@ -1,10 +1,11 @@
1
1
  import React from "react";
2
2
  import { MarginProps } from "styled-system";
3
+ import { ModalProps } from "../modal";
3
4
  export interface AdvancedColor {
4
5
  label: string;
5
6
  value: string;
6
7
  }
7
- export interface AdvancedColorPickerProps extends MarginProps {
8
+ export interface AdvancedColorPickerProps extends MarginProps, Pick<ModalProps, "restoreFocusOnClose"> {
8
9
  /** Prop to specify the aria-describedby property of the component */
9
10
  "aria-describedby"?: string;
10
11
  /**
@@ -39,5 +40,5 @@ export interface AdvancedColorPickerProps extends MarginProps {
39
40
  /** Prop for `selectedColor` containing pre-selected color for `controlled` use */
40
41
  selectedColor?: string;
41
42
  }
42
- export declare const AdvancedColorPicker: ({ "aria-describedby": ariaDescribedBy, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, availableColors, defaultColor, name, onOpen, onClose, onChange, onBlur, open, role, selectedColor, ...props }: AdvancedColorPickerProps) => React.JSX.Element;
43
+ export declare const AdvancedColorPicker: ({ "aria-describedby": ariaDescribedBy, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, availableColors, defaultColor, name, onOpen, onClose, onChange, onBlur, open, role, selectedColor, restoreFocusOnClose, ...props }: AdvancedColorPickerProps) => React.JSX.Element;
43
44
  export default AdvancedColorPicker;
@@ -24,6 +24,7 @@ export const AdvancedColorPicker = ({
24
24
  open = false,
25
25
  role,
26
26
  selectedColor,
27
+ restoreFocusOnClose = true,
27
28
  ...props
28
29
  }) => {
29
30
  const [dialogOpen, setDialogOpen] = useState();
@@ -142,7 +143,8 @@ export const AdvancedColorPicker = ({
142
143
  onCancel: handleOnClose,
143
144
  bespokeFocusTrap: handleFocus,
144
145
  focusFirstElement: selectedColorRef,
145
- role: role
146
+ role: role,
147
+ restoreFocusOnClose: restoreFocusOnClose
146
148
  }, /*#__PURE__*/React.createElement(StyledAdvancedColorPickerPreview, {
147
149
  "data-element": "color-picker-preview",
148
150
  color: currentColor
@@ -40,6 +40,7 @@ const Dialog = /*#__PURE__*/forwardRef(({
40
40
  focusableContainers,
41
41
  topModalOverride,
42
42
  closeButtonDataProps,
43
+ restoreFocusOnClose = true,
43
44
  ...rest
44
45
  }, ref) => {
45
46
  if (!deprecatedClassNameWarningShown && className) {
@@ -101,7 +102,8 @@ const Dialog = /*#__PURE__*/forwardRef(({
101
102
  disableEscKey: disableEscKey,
102
103
  disableClose: disableClose,
103
104
  className: className ? `${className} carbon-dialog` : "carbon-dialog",
104
- topModalOverride: topModalOverride
105
+ topModalOverride: topModalOverride,
106
+ restoreFocusOnClose: restoreFocusOnClose
105
107
  }, /*#__PURE__*/React.createElement(FocusTrap, {
106
108
  autoFocus: !disableAutoFocus,
107
109
  focusFirstElement: focusFirstElement,
@@ -182,6 +184,7 @@ if (process.env.NODE_ENV !== "production") {
182
184
  "help": PropTypes.string,
183
185
  "onCancel": PropTypes.func,
184
186
  "open": PropTypes.bool.isRequired,
187
+ "restoreFocusOnClose": PropTypes.bool,
185
188
  "role": PropTypes.string,
186
189
  "showCloseIcon": PropTypes.bool,
187
190
  "size": PropTypes.oneOf(["auto", "extra-large", "extra-small", "large", "maximise", "medium-large", "medium-small", "medium", "small"]),
@@ -55,5 +55,5 @@ export interface DialogFullScreenProps extends ModalProps {
55
55
  /** A custom close event handler */
56
56
  onCancel?: (ev: React.KeyboardEvent<HTMLElement> | React.MouseEvent<HTMLButtonElement>) => void;
57
57
  }
58
- export declare const DialogFullScreen: ({ "aria-describedby": ariaDescribedBy, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, disableAutoFocus, focusFirstElement, bespokeFocusTrap, open, children, title, subtitle, pagesStyling, headerChildren, showCloseIcon, disableContentPadding, disableEscKey, onCancel, contentRef, help, role, focusableContainers, focusableSelectors, topModalOverride, closeButtonDataProps, ...rest }: DialogFullScreenProps) => React.JSX.Element;
58
+ export declare const DialogFullScreen: ({ "aria-describedby": ariaDescribedBy, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, disableAutoFocus, focusFirstElement, bespokeFocusTrap, open, children, title, subtitle, pagesStyling, headerChildren, showCloseIcon, disableContentPadding, disableEscKey, onCancel, contentRef, help, role, focusableContainers, focusableSelectors, topModalOverride, closeButtonDataProps, restoreFocusOnClose, ...rest }: DialogFullScreenProps) => React.JSX.Element;
59
59
  export default DialogFullScreen;
@@ -37,6 +37,7 @@ export const DialogFullScreen = ({
37
37
  focusableSelectors,
38
38
  topModalOverride,
39
39
  closeButtonDataProps,
40
+ restoreFocusOnClose = true,
40
41
  ...rest
41
42
  }) => {
42
43
  const locale = useLocale();
@@ -87,7 +88,8 @@ export const DialogFullScreen = ({
87
88
  open: open,
88
89
  onCancel: onCancel,
89
90
  disableEscKey: disableEscKey,
90
- topModalOverride: topModalOverride
91
+ topModalOverride: topModalOverride,
92
+ restoreFocusOnClose: restoreFocusOnClose
91
93
  }, componentTags), /*#__PURE__*/React.createElement(FocusTrap, {
92
94
  autoFocus: !disableAutoFocus,
93
95
  focusFirstElement: focusFirstElement,
@@ -21,6 +21,10 @@ export interface ModalProps extends Omit<TagProps, "data-component"> {
21
21
  timeout?: number;
22
22
  /** Manually override the internal modal stacking order to set this as top */
23
23
  topModalOverride?: boolean;
24
+ /** Enables the automatic restoration of focus to the element that invoked
25
+ * the modal when the modal is closed.
26
+ */
27
+ restoreFocusOnClose?: boolean;
24
28
  }
25
- declare const Modal: ({ children, "data-element": dataElement, "data-role": dataRole, open, onCancel, disableEscKey, disableClose, enableBackgroundUI, timeout, topModalOverride, ...rest }: ModalProps) => React.JSX.Element;
29
+ declare const Modal: ({ children, "data-element": dataElement, "data-role": dataRole, open, onCancel, disableEscKey, disableClose, enableBackgroundUI, timeout, topModalOverride, restoreFocusOnClose, ...rest }: ModalProps) => React.JSX.Element;
26
30
  export default Modal;
@@ -21,6 +21,7 @@ const Modal = ({
21
21
  enableBackgroundUI = false,
22
22
  timeout = 300,
23
23
  topModalOverride,
24
+ restoreFocusOnClose = true,
24
25
  ...rest
25
26
  }) => {
26
27
  if (!deprecatedClassNameWarningShown && rest.className) {
@@ -65,7 +66,7 @@ const Modal = ({
65
66
  modalRef: ref,
66
67
  setTriggerRefocusFlag,
67
68
  topModalOverride,
68
- focusCallToActionElement: document.activeElement
69
+ focusCallToActionElement: restoreFocusOnClose ? document.activeElement : undefined
69
70
  });
70
71
  let background;
71
72
  let content;
@@ -5,7 +5,7 @@ import { TagProps } from "../../__internal__/utils/helpers/tags/tags";
5
5
  declare type CustomRefObject<T> = {
6
6
  current?: T | null;
7
7
  };
8
- export interface SidebarProps extends PaddingProps, Omit<TagProps, "data-component">, WidthProps, Pick<ModalProps, "topModalOverride"> {
8
+ export interface SidebarProps extends PaddingProps, Omit<TagProps, "data-component">, WidthProps, Pick<ModalProps, "topModalOverride" | "restoreFocusOnClose"> {
9
9
  /** Prop to specify the aria-describedby property of the component */
10
10
  "aria-describedby"?: string;
11
11
  /**
@@ -38,6 +38,7 @@ const Sidebar = /*#__PURE__*/React.forwardRef(({
38
38
  width,
39
39
  headerPadding = {},
40
40
  topModalOverride,
41
+ restoreFocusOnClose = true,
41
42
  ...rest
42
43
  }, ref) => {
43
44
  const locale = useLocale();
@@ -93,7 +94,8 @@ const Sidebar = /*#__PURE__*/React.forwardRef(({
93
94
  onCancel: onCancel,
94
95
  disableEscKey: disableEscKey,
95
96
  enableBackgroundUI: enableBackgroundUI,
96
- topModalOverride: topModalOverride
97
+ topModalOverride: topModalOverride,
98
+ restoreFocusOnClose: restoreFocusOnClose
97
99
  }, enableBackgroundUI ? sidebar : /*#__PURE__*/React.createElement(FocusTrap, {
98
100
  wrapperRef: sidebarRef,
99
101
  isOpen: open,
@@ -449,6 +451,7 @@ if (process.env.NODE_ENV !== "production") {
449
451
  "toString": PropTypes.func.isRequired,
450
452
  "valueOf": PropTypes.func.isRequired
451
453
  }), PropTypes.string]),
454
+ "restoreFocusOnClose": PropTypes.bool,
452
455
  "role": PropTypes.string,
453
456
  "size": PropTypes.oneOf(["extra-large", "extra-small", "large", "medium-large", "medium-small", "medium", "small"]),
454
457
  "topModalOverride": PropTypes.bool,
@@ -32,7 +32,8 @@ export const VerticalMenuFullScreen = ({
32
32
  open: isOpen,
33
33
  closeModal: handleKeyDown,
34
34
  modalRef: menuWrapperRef,
35
- topModalOverride: true
35
+ topModalOverride: true,
36
+ focusCallToActionElement: document.activeElement
36
37
  });
37
38
 
38
39
  // TODO remove this as part of FE-5650
@@ -1,10 +1,11 @@
1
1
  import React from "react";
2
2
  import { MarginProps } from "styled-system";
3
+ import { ModalProps } from "../modal";
3
4
  export interface AdvancedColor {
4
5
  label: string;
5
6
  value: string;
6
7
  }
7
- export interface AdvancedColorPickerProps extends MarginProps {
8
+ export interface AdvancedColorPickerProps extends MarginProps, Pick<ModalProps, "restoreFocusOnClose"> {
8
9
  /** Prop to specify the aria-describedby property of the component */
9
10
  "aria-describedby"?: string;
10
11
  /**
@@ -39,5 +40,5 @@ export interface AdvancedColorPickerProps extends MarginProps {
39
40
  /** Prop for `selectedColor` containing pre-selected color for `controlled` use */
40
41
  selectedColor?: string;
41
42
  }
42
- export declare const AdvancedColorPicker: ({ "aria-describedby": ariaDescribedBy, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, availableColors, defaultColor, name, onOpen, onClose, onChange, onBlur, open, role, selectedColor, ...props }: AdvancedColorPickerProps) => React.JSX.Element;
43
+ export declare const AdvancedColorPicker: ({ "aria-describedby": ariaDescribedBy, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, availableColors, defaultColor, name, onOpen, onClose, onChange, onBlur, open, role, selectedColor, restoreFocusOnClose, ...props }: AdvancedColorPickerProps) => React.JSX.Element;
43
44
  export default AdvancedColorPicker;
@@ -33,6 +33,7 @@ const AdvancedColorPicker = ({
33
33
  open = false,
34
34
  role,
35
35
  selectedColor,
36
+ restoreFocusOnClose = true,
36
37
  ...props
37
38
  }) => {
38
39
  const [dialogOpen, setDialogOpen] = (0, _react.useState)();
@@ -151,7 +152,8 @@ const AdvancedColorPicker = ({
151
152
  onCancel: handleOnClose,
152
153
  bespokeFocusTrap: handleFocus,
153
154
  focusFirstElement: selectedColorRef,
154
- role: role
155
+ role: role,
156
+ restoreFocusOnClose: restoreFocusOnClose
155
157
  }, /*#__PURE__*/_react.default.createElement(_advancedColorPicker.StyledAdvancedColorPickerPreview, {
156
158
  "data-element": "color-picker-preview",
157
159
  color: currentColor
@@ -49,6 +49,7 @@ const Dialog = exports.Dialog = /*#__PURE__*/(0, _react.forwardRef)(({
49
49
  focusableContainers,
50
50
  topModalOverride,
51
51
  closeButtonDataProps,
52
+ restoreFocusOnClose = true,
52
53
  ...rest
53
54
  }, ref) => {
54
55
  if (!deprecatedClassNameWarningShown && className) {
@@ -110,7 +111,8 @@ const Dialog = exports.Dialog = /*#__PURE__*/(0, _react.forwardRef)(({
110
111
  disableEscKey: disableEscKey,
111
112
  disableClose: disableClose,
112
113
  className: className ? `${className} carbon-dialog` : "carbon-dialog",
113
- topModalOverride: topModalOverride
114
+ topModalOverride: topModalOverride,
115
+ restoreFocusOnClose: restoreFocusOnClose
114
116
  }, /*#__PURE__*/_react.default.createElement(_focusTrap.default, {
115
117
  autoFocus: !disableAutoFocus,
116
118
  focusFirstElement: focusFirstElement,
@@ -191,6 +193,7 @@ if (process.env.NODE_ENV !== "production") {
191
193
  "help": _propTypes.default.string,
192
194
  "onCancel": _propTypes.default.func,
193
195
  "open": _propTypes.default.bool.isRequired,
196
+ "restoreFocusOnClose": _propTypes.default.bool,
194
197
  "role": _propTypes.default.string,
195
198
  "showCloseIcon": _propTypes.default.bool,
196
199
  "size": _propTypes.default.oneOf(["auto", "extra-large", "extra-small", "large", "maximise", "medium-large", "medium-small", "medium", "small"]),
@@ -55,5 +55,5 @@ export interface DialogFullScreenProps extends ModalProps {
55
55
  /** A custom close event handler */
56
56
  onCancel?: (ev: React.KeyboardEvent<HTMLElement> | React.MouseEvent<HTMLButtonElement>) => void;
57
57
  }
58
- export declare const DialogFullScreen: ({ "aria-describedby": ariaDescribedBy, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, disableAutoFocus, focusFirstElement, bespokeFocusTrap, open, children, title, subtitle, pagesStyling, headerChildren, showCloseIcon, disableContentPadding, disableEscKey, onCancel, contentRef, help, role, focusableContainers, focusableSelectors, topModalOverride, closeButtonDataProps, ...rest }: DialogFullScreenProps) => React.JSX.Element;
58
+ export declare const DialogFullScreen: ({ "aria-describedby": ariaDescribedBy, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, disableAutoFocus, focusFirstElement, bespokeFocusTrap, open, children, title, subtitle, pagesStyling, headerChildren, showCloseIcon, disableContentPadding, disableEscKey, onCancel, contentRef, help, role, focusableContainers, focusableSelectors, topModalOverride, closeButtonDataProps, restoreFocusOnClose, ...rest }: DialogFullScreenProps) => React.JSX.Element;
59
59
  export default DialogFullScreen;
@@ -46,6 +46,7 @@ const DialogFullScreen = ({
46
46
  focusableSelectors,
47
47
  topModalOverride,
48
48
  closeButtonDataProps,
49
+ restoreFocusOnClose = true,
49
50
  ...rest
50
51
  }) => {
51
52
  const locale = (0, _useLocale.default)();
@@ -96,7 +97,8 @@ const DialogFullScreen = ({
96
97
  open: open,
97
98
  onCancel: onCancel,
98
99
  disableEscKey: disableEscKey,
99
- topModalOverride: topModalOverride
100
+ topModalOverride: topModalOverride,
101
+ restoreFocusOnClose: restoreFocusOnClose
100
102
  }, componentTags), /*#__PURE__*/_react.default.createElement(_focusTrap.default, {
101
103
  autoFocus: !disableAutoFocus,
102
104
  focusFirstElement: focusFirstElement,
@@ -21,6 +21,10 @@ export interface ModalProps extends Omit<TagProps, "data-component"> {
21
21
  timeout?: number;
22
22
  /** Manually override the internal modal stacking order to set this as top */
23
23
  topModalOverride?: boolean;
24
+ /** Enables the automatic restoration of focus to the element that invoked
25
+ * the modal when the modal is closed.
26
+ */
27
+ restoreFocusOnClose?: boolean;
24
28
  }
25
- declare const Modal: ({ children, "data-element": dataElement, "data-role": dataRole, open, onCancel, disableEscKey, disableClose, enableBackgroundUI, timeout, topModalOverride, ...rest }: ModalProps) => React.JSX.Element;
29
+ declare const Modal: ({ children, "data-element": dataElement, "data-role": dataRole, open, onCancel, disableEscKey, disableClose, enableBackgroundUI, timeout, topModalOverride, restoreFocusOnClose, ...rest }: ModalProps) => React.JSX.Element;
26
30
  export default Modal;
@@ -30,6 +30,7 @@ const Modal = ({
30
30
  enableBackgroundUI = false,
31
31
  timeout = 300,
32
32
  topModalOverride,
33
+ restoreFocusOnClose = true,
33
34
  ...rest
34
35
  }) => {
35
36
  if (!deprecatedClassNameWarningShown && rest.className) {
@@ -74,7 +75,7 @@ const Modal = ({
74
75
  modalRef: ref,
75
76
  setTriggerRefocusFlag,
76
77
  topModalOverride,
77
- focusCallToActionElement: document.activeElement
78
+ focusCallToActionElement: restoreFocusOnClose ? document.activeElement : undefined
78
79
  });
79
80
  let background;
80
81
  let content;
@@ -5,7 +5,7 @@ import { TagProps } from "../../__internal__/utils/helpers/tags/tags";
5
5
  declare type CustomRefObject<T> = {
6
6
  current?: T | null;
7
7
  };
8
- export interface SidebarProps extends PaddingProps, Omit<TagProps, "data-component">, WidthProps, Pick<ModalProps, "topModalOverride"> {
8
+ export interface SidebarProps extends PaddingProps, Omit<TagProps, "data-component">, WidthProps, Pick<ModalProps, "topModalOverride" | "restoreFocusOnClose"> {
9
9
  /** Prop to specify the aria-describedby property of the component */
10
10
  "aria-describedby"?: string;
11
11
  /**
@@ -46,6 +46,7 @@ const Sidebar = exports.Sidebar = /*#__PURE__*/_react.default.forwardRef(({
46
46
  width,
47
47
  headerPadding = {},
48
48
  topModalOverride,
49
+ restoreFocusOnClose = true,
49
50
  ...rest
50
51
  }, ref) => {
51
52
  const locale = (0, _useLocale.default)();
@@ -101,7 +102,8 @@ const Sidebar = exports.Sidebar = /*#__PURE__*/_react.default.forwardRef(({
101
102
  onCancel: onCancel,
102
103
  disableEscKey: disableEscKey,
103
104
  enableBackgroundUI: enableBackgroundUI,
104
- topModalOverride: topModalOverride
105
+ topModalOverride: topModalOverride,
106
+ restoreFocusOnClose: restoreFocusOnClose
105
107
  }, enableBackgroundUI ? sidebar : /*#__PURE__*/_react.default.createElement(_focusTrap.default, {
106
108
  wrapperRef: sidebarRef,
107
109
  isOpen: open,
@@ -457,6 +459,7 @@ if (process.env.NODE_ENV !== "production") {
457
459
  "toString": _propTypes.default.func.isRequired,
458
460
  "valueOf": _propTypes.default.func.isRequired
459
461
  }), _propTypes.default.string]),
462
+ "restoreFocusOnClose": _propTypes.default.bool,
460
463
  "role": _propTypes.default.string,
461
464
  "size": _propTypes.default.oneOf(["extra-large", "extra-small", "large", "medium-large", "medium-small", "medium", "small"]),
462
465
  "topModalOverride": _propTypes.default.bool,
@@ -41,7 +41,8 @@ const VerticalMenuFullScreen = ({
41
41
  open: isOpen,
42
42
  closeModal: handleKeyDown,
43
43
  modalRef: menuWrapperRef,
44
- topModalOverride: true
44
+ topModalOverride: true,
45
+ focusCallToActionElement: document.activeElement
45
46
  });
46
47
 
47
48
  // TODO remove this as part of FE-5650
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "carbon-react",
3
- "version": "144.19.0",
3
+ "version": "144.20.0",
4
4
  "description": "A library of reusable React components for easily building user interfaces.",
5
5
  "files": [
6
6
  "lib",