carbon-react 110.4.0 → 110.5.1

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 (122) hide show
  1. package/esm/__internal__/i18n-context/index.d.ts +2 -1
  2. package/esm/__internal__/popover/popover.component.d.ts +2 -1
  3. package/esm/__internal__/popover/popover.component.js +15 -4
  4. package/esm/__internal__/popover/popover.style.d.ts +6 -2
  5. package/esm/__internal__/popover/popover.style.js +6 -2
  6. package/esm/components/i18n-provider/i18n-provider.component.d.ts +8 -0
  7. package/esm/components/i18n-provider/i18n-provider.component.js +100 -80
  8. package/esm/components/i18n-provider/index.d.ts +2 -1
  9. package/esm/components/icon/icon.component.js +22 -9
  10. package/esm/components/message/index.d.ts +2 -1
  11. package/esm/components/message/message-content/message-content.component.d.ts +9 -0
  12. package/esm/components/message/message-content/message-content.component.js +4 -5
  13. package/esm/components/message/message-content/message-content.style.d.ts +2 -0
  14. package/esm/components/message/message-content/message-content.style.js +0 -3
  15. package/esm/components/message/message.component.d.ts +27 -0
  16. package/esm/components/message/message.component.js +169 -37
  17. package/esm/components/message/message.style.d.ts +8 -0
  18. package/esm/components/message/message.style.js +1 -8
  19. package/esm/components/message/type-icon/type-icon.component.d.ts +10 -0
  20. package/esm/components/message/type-icon/type-icon.component.js +4 -8
  21. package/esm/components/message/type-icon/type-icon.style.d.ts +9 -0
  22. package/esm/components/message/type-icon/type-icon.style.js +0 -10
  23. package/esm/components/search/search.component.js +28 -2
  24. package/esm/components/search/search.d.ts +3 -1
  25. package/esm/components/select/filterable-select/filterable-select.component.js +7 -5
  26. package/esm/components/select/multi-select/multi-select.component.js +4 -3
  27. package/esm/components/select/select-list/select-list.component.js +34 -18
  28. package/esm/components/select/simple-select/simple-select.component.js +4 -3
  29. package/esm/components/sidebar/__internal__/sidebar-header/index.d.ts +1 -0
  30. package/esm/components/sidebar/__internal__/sidebar-header/sidebar-header.component.d.ts +9 -0
  31. package/esm/components/sidebar/__internal__/sidebar-header/sidebar-header.component.js +7 -18
  32. package/esm/components/sidebar/__internal__/sidebar-header/sidebar-header.style.d.ts +2 -0
  33. package/esm/components/sidebar/index.d.ts +2 -1
  34. package/esm/components/sidebar/index.js +1 -2
  35. package/esm/components/sidebar/sidebar.component.d.ts +44 -0
  36. package/esm/components/sidebar/sidebar.component.js +187 -48
  37. package/esm/components/sidebar/sidebar.config.d.ts +11 -0
  38. package/esm/components/sidebar/sidebar.style.d.ts +8 -0
  39. package/esm/components/step-sequence/index.d.ts +4 -2
  40. package/esm/components/step-sequence/step-sequence-item/index.d.ts +2 -0
  41. package/esm/components/step-sequence/step-sequence-item/step-sequence-item.component.d.ts +19 -0
  42. package/esm/components/step-sequence/step-sequence-item/step-sequence-item.component.js +26 -41
  43. package/esm/components/step-sequence/step-sequence-item/step-sequence-item.style.d.ts +9 -0
  44. package/esm/components/step-sequence/step-sequence-item/step-sequence-item.style.js +18 -2
  45. package/esm/components/step-sequence/step-sequence.component.d.ts +13 -0
  46. package/esm/components/step-sequence/step-sequence.component.js +170 -18
  47. package/esm/components/step-sequence/step-sequence.config.d.ts +2 -0
  48. package/esm/components/step-sequence/step-sequence.style.d.ts +4 -0
  49. package/esm/components/tabs/__internal__/tab-title/tab-title.component.d.ts +4 -0
  50. package/esm/components/tabs/__internal__/tab-title/tab-title.component.js +34 -4
  51. package/esm/components/tabs/__internal__/tab-title/tab-title.d.ts +6 -0
  52. package/esm/components/tabs/__internal__/tab-title/tab-title.style.d.ts +4 -0
  53. package/lib/__internal__/i18n-context/index.d.ts +2 -1
  54. package/lib/__internal__/popover/popover.component.d.ts +2 -1
  55. package/lib/__internal__/popover/popover.component.js +16 -5
  56. package/lib/__internal__/popover/popover.style.d.ts +6 -2
  57. package/lib/__internal__/popover/popover.style.js +8 -3
  58. package/lib/components/i18n-provider/i18n-provider.component.d.ts +8 -0
  59. package/lib/components/i18n-provider/i18n-provider.component.js +102 -82
  60. package/lib/components/i18n-provider/index.d.ts +2 -1
  61. package/lib/components/icon/icon.component.js +22 -8
  62. package/lib/components/message/index.d.ts +2 -1
  63. package/lib/components/message/message-content/message-content.component.d.ts +9 -0
  64. package/lib/components/message/message-content/message-content.component.js +5 -6
  65. package/lib/components/message/message-content/message-content.style.d.ts +2 -0
  66. package/lib/components/message/message-content/message-content.style.js +0 -4
  67. package/lib/components/message/message.component.d.ts +27 -0
  68. package/lib/components/message/message.component.js +170 -40
  69. package/lib/components/message/message.style.d.ts +8 -0
  70. package/lib/components/message/message.style.js +1 -9
  71. package/lib/components/message/type-icon/type-icon.component.d.ts +10 -0
  72. package/lib/components/message/type-icon/type-icon.component.js +4 -8
  73. package/lib/components/message/type-icon/type-icon.style.d.ts +9 -0
  74. package/lib/components/message/type-icon/type-icon.style.js +0 -13
  75. package/lib/components/search/search.component.js +28 -2
  76. package/lib/components/search/search.d.ts +3 -1
  77. package/lib/components/select/filterable-select/filterable-select.component.js +7 -5
  78. package/lib/components/select/multi-select/multi-select.component.js +4 -3
  79. package/lib/components/select/select-list/select-list.component.js +34 -18
  80. package/lib/components/select/simple-select/simple-select.component.js +4 -3
  81. package/lib/components/sidebar/__internal__/sidebar-header/index.d.ts +1 -0
  82. package/lib/components/sidebar/__internal__/sidebar-header/sidebar-header.component.d.ts +9 -0
  83. package/lib/components/sidebar/__internal__/sidebar-header/sidebar-header.component.js +7 -19
  84. package/lib/components/sidebar/__internal__/sidebar-header/sidebar-header.style.d.ts +2 -0
  85. package/lib/components/sidebar/index.d.ts +2 -1
  86. package/lib/components/sidebar/sidebar.component.d.ts +44 -0
  87. package/lib/components/sidebar/sidebar.component.js +187 -50
  88. package/lib/components/sidebar/sidebar.config.d.ts +11 -0
  89. package/lib/components/sidebar/sidebar.style.d.ts +8 -0
  90. package/lib/components/step-sequence/index.d.ts +4 -2
  91. package/lib/components/step-sequence/step-sequence-item/index.d.ts +2 -0
  92. package/lib/components/step-sequence/step-sequence-item/step-sequence-item.component.d.ts +19 -0
  93. package/lib/components/step-sequence/step-sequence-item/step-sequence-item.component.js +30 -48
  94. package/lib/components/step-sequence/step-sequence-item/step-sequence-item.style.d.ts +9 -0
  95. package/lib/components/step-sequence/step-sequence-item/step-sequence-item.style.js +22 -3
  96. package/lib/components/step-sequence/step-sequence.component.d.ts +13 -0
  97. package/lib/components/step-sequence/step-sequence.component.js +171 -21
  98. package/lib/components/step-sequence/step-sequence.config.d.ts +2 -0
  99. package/lib/components/step-sequence/step-sequence.style.d.ts +4 -0
  100. package/lib/components/tabs/__internal__/tab-title/tab-title.component.d.ts +4 -0
  101. package/lib/components/tabs/__internal__/tab-title/tab-title.component.js +38 -4
  102. package/lib/components/tabs/__internal__/tab-title/tab-title.d.ts +6 -0
  103. package/lib/components/tabs/__internal__/tab-title/tab-title.style.d.ts +4 -0
  104. package/package.json +1 -1
  105. package/esm/components/i18n-provider/i18n-provider.d.ts +0 -11
  106. package/esm/components/message/message.d.ts +0 -29
  107. package/esm/components/sidebar/__internal__/sidebar-header/__definition__.js +0 -13
  108. package/esm/components/sidebar/sidebar.d.ts +0 -57
  109. package/esm/components/step-sequence/step-sequence-item/step-sequence-item-content.style.js +0 -5
  110. package/esm/components/step-sequence/step-sequence-item/step-sequence-item-hidden-label.style.js +0 -9
  111. package/esm/components/step-sequence/step-sequence-item/step-sequence-item-indicator.style.js +0 -9
  112. package/esm/components/step-sequence/step-sequence-item/step-sequence-item.d.ts +0 -22
  113. package/esm/components/step-sequence/step-sequence.d.ts +0 -12
  114. package/lib/components/i18n-provider/i18n-provider.d.ts +0 -11
  115. package/lib/components/message/message.d.ts +0 -29
  116. package/lib/components/sidebar/__internal__/sidebar-header/__definition__.js +0 -25
  117. package/lib/components/sidebar/sidebar.d.ts +0 -57
  118. package/lib/components/step-sequence/step-sequence-item/step-sequence-item-content.style.js +0 -16
  119. package/lib/components/step-sequence/step-sequence-item/step-sequence-item-hidden-label.style.js +0 -20
  120. package/lib/components/step-sequence/step-sequence-item/step-sequence-item-indicator.style.js +0 -20
  121. package/lib/components/step-sequence/step-sequence-item/step-sequence-item.d.ts +0 -22
  122. package/lib/components/step-sequence/step-sequence.d.ts +0 -12
@@ -1,2 +1,3 @@
1
- declare var _default: import("react").Context<import("../../locales/locale").default>;
1
+ /// <reference types="react" />
2
+ declare const _default: import("react").Context<import("../../locales/locale").default>;
2
3
  export default _default;
@@ -13,6 +13,7 @@ export interface PopoverProps {
13
13
  onFirstUpdate?: (state: Partial<State>) => void;
14
14
  disablePortal?: boolean;
15
15
  reference: React.RefObject<HTMLElement>;
16
+ isOpen?: boolean;
16
17
  }
17
- declare const Popover: ({ children, placement, disablePortal, reference, onFirstUpdate, modifiers, disableBackgroundUI, }: PopoverProps) => JSX.Element;
18
+ declare const Popover: ({ children, placement, disablePortal, reference, onFirstUpdate, modifiers, disableBackgroundUI, isOpen, }: PopoverProps) => JSX.Element;
18
19
  export default Popover;
@@ -3,7 +3,7 @@ import PropTypes from "prop-types";
3
3
  import ReactDOM from "react-dom";
4
4
  import { createPopper } from "@popperjs/core";
5
5
  import useResizeObserver from "../../hooks/__internal__/useResizeObserver";
6
- import StyledBackdrop from "./popover.style";
6
+ import { StyledBackdrop, StyledPopoverContent } from "./popover.style";
7
7
  import CarbonScopedTokensProvider from "../../style/design-tokens/carbon-scoped-tokens-provider/carbon-scoped-tokens-provider.component";
8
8
  import { ModalContext } from "../../components/modal/modal.component";
9
9
 
@@ -14,12 +14,12 @@ const Popover = ({
14
14
  reference,
15
15
  onFirstUpdate,
16
16
  modifiers,
17
- disableBackgroundUI
17
+ disableBackgroundUI,
18
+ isOpen = true
18
19
  }) => {
19
20
  var _reference$current;
20
21
 
21
- const elementDOM = useRef(null); // TODO: Remove TempModalContext after modal has been converted to TS
22
-
22
+ const elementDOM = useRef(null);
23
23
  const {
24
24
  isInModal
25
25
  } = useContext(ModalContext);
@@ -52,6 +52,13 @@ const Popover = ({
52
52
 
53
53
  popperInstance === null || popperInstance === void 0 ? void 0 : (_popperInstance$curre = popperInstance.current) === null || _popperInstance$curre === void 0 ? void 0 : _popperInstance$curre.update();
54
54
  });
55
+ useEffect(() => {
56
+ if (isOpen) {
57
+ var _popperInstance$curre2;
58
+
59
+ popperInstance === null || popperInstance === void 0 ? void 0 : (_popperInstance$curre2 = popperInstance.current) === null || _popperInstance$curre2 === void 0 ? void 0 : _popperInstance$curre2.update();
60
+ }
61
+ }, [isOpen]);
55
62
  useLayoutEffect(() => {
56
63
  if (reference.current) {
57
64
  popperInstance.current = createPopper(reference.current, popperElementRef.current, {
@@ -82,6 +89,9 @@ const Popover = ({
82
89
  }
83
90
  };
84
91
  }, [disablePortal, mountNode]);
92
+ content = /*#__PURE__*/React.createElement(StyledPopoverContent, {
93
+ isOpen: isOpen
94
+ }, content);
85
95
 
86
96
  if (disableBackgroundUI) {
87
97
  content = /*#__PURE__*/React.createElement(StyledBackdrop, null, content);
@@ -98,6 +108,7 @@ Popover.propTypes = {
98
108
  "children": PropTypes.element.isRequired,
99
109
  "disableBackgroundUI": PropTypes.bool,
100
110
  "disablePortal": PropTypes.bool,
111
+ "isOpen": PropTypes.bool,
101
112
  "modifiers": PropTypes.arrayOf(PropTypes.shape({
102
113
  "enabled": PropTypes.bool,
103
114
  "name": PropTypes.string.isRequired,
@@ -1,2 +1,6 @@
1
- declare const StyledBackdrop: import("styled-components").StyledComponent<"div", any, {}, never>;
2
- export default StyledBackdrop;
1
+ export declare const StyledBackdrop: import("styled-components").StyledComponent<"div", any, {}, never>;
2
+ declare type StyledPopoverContentProps = {
3
+ isOpen?: boolean;
4
+ };
5
+ export declare const StyledPopoverContent: import("styled-components").StyledComponent<"div", any, StyledPopoverContentProps, never>;
6
+ export {};
@@ -1,6 +1,6 @@
1
1
  import styled from "styled-components";
2
2
  import baseTheme from "../../style/themes/base";
3
- const StyledBackdrop = styled.div`
3
+ export const StyledBackdrop = styled.div`
4
4
  bottom: 0;
5
5
  left: 0;
6
6
  position: fixed;
@@ -14,4 +14,8 @@ const StyledBackdrop = styled.div`
14
14
  StyledBackdrop.defaultProps = {
15
15
  theme: baseTheme
16
16
  };
17
- export default StyledBackdrop;
17
+ export const StyledPopoverContent = styled.div`
18
+ ${({
19
+ isOpen
20
+ }) => !isOpen && "display: none;"}
21
+ `;
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ import Locale from "../../locales";
3
+ export interface I18nProviderProps {
4
+ locale?: Partial<Locale>;
5
+ children: React.ReactNode;
6
+ }
7
+ export declare const I18nProvider: ({ locale, children }: I18nProviderProps) => JSX.Element;
8
+ export default I18nProvider;
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
- import merge from "lodash/merge";
3
2
  import PropTypes from "prop-types";
3
+ import merge from "lodash/merge";
4
4
  import Context from "../../__internal__/i18n-context";
5
5
  import enGB from "../../locales/en-gb";
6
6
 
@@ -9,87 +9,107 @@ const I18nProvider = ({
9
9
  children
10
10
  }) => locale ? /*#__PURE__*/React.createElement(Context.Provider, {
11
11
  value: merge({}, enGB, locale)
12
- }, children) : children;
12
+ }, children) : /*#__PURE__*/React.createElement(React.Fragment, null, children);
13
13
 
14
- I18nProvider.defaultProps = {
15
- locale: undefined
16
- };
17
14
  I18nProvider.propTypes = {
18
- locale: PropTypes.shape({
19
- locale: PropTypes.func,
20
- actions: PropTypes.shape({
21
- edit: PropTypes.func,
22
- delete: PropTypes.func,
23
- reset: PropTypes.func
24
- }),
25
- actionPopover: PropTypes.shape({
26
- ariaLabel: PropTypes.func
27
- }),
28
- batchSelection: PropTypes.shape({
29
- selected: PropTypes.func
30
- }),
31
- confirm: PropTypes.shape({
32
- no: PropTypes.func,
33
- yes: PropTypes.func
34
- }),
35
- date: PropTypes.shape({
36
- dateFnsLocale: PropTypes.func
37
- }),
38
- errors: PropTypes.shape({
39
- messages: PropTypes.shape({
40
- formSummary: PropTypes.func
41
- })
42
- }),
43
- message: PropTypes.shape({
44
- closeButtonAriaLabel: PropTypes.func
45
- }),
46
- numeralDate: PropTypes.shape({
47
- validation: PropTypes.shape({
48
- day: PropTypes.func,
49
- month: PropTypes.func,
50
- year: PropTypes.func
51
- })
52
- }),
53
- pager: PropTypes.shape({
54
- show: PropTypes.func,
55
- records: PropTypes.func,
56
- first: PropTypes.func,
57
- last: PropTypes.func,
58
- next: PropTypes.func,
59
- previous: PropTypes.func,
60
- pageX: PropTypes.func,
61
- ofY: PropTypes.func
62
- }),
63
- select: PropTypes.shape({
64
- actionButtonText: PropTypes.func,
65
- placeholder: PropTypes.func,
66
- noResultsForTerm: PropTypes.func
67
- }),
68
- switch: PropTypes.shape({
69
- on: PropTypes.func,
70
- off: PropTypes.func
71
- }),
72
- table: PropTypes.shape({
73
- noData: PropTypes.func
74
- }),
75
- textEditor: PropTypes.shape({
76
- tooltipMessages: PropTypes.shape({
77
- bold: PropTypes.func,
78
- italic: PropTypes.func,
79
- bulletList: PropTypes.func,
80
- numberList: PropTypes.func
81
- }),
82
- ariaLabels: PropTypes.shape({
83
- bold: PropTypes.func,
84
- italic: PropTypes.func,
85
- bulletList: PropTypes.func,
86
- numberList: PropTypes.func
87
- })
88
- }),
89
- titleSelect: PropTypes.shape({
90
- deselect: PropTypes.func
15
+ "children": PropTypes.node,
16
+ "locale": PropTypes.shape({
17
+ "actionPopover": PropTypes.shape({
18
+ "ariaLabel": PropTypes.func.isRequired
19
+ }),
20
+ "actions": PropTypes.shape({
21
+ "delete": PropTypes.func.isRequired,
22
+ "edit": PropTypes.func.isRequired
23
+ }),
24
+ "batchSelection": PropTypes.shape({
25
+ "selected": PropTypes.func.isRequired
26
+ }),
27
+ "confirm": PropTypes.shape({
28
+ "no": PropTypes.func.isRequired,
29
+ "yes": PropTypes.func.isRequired
30
+ }),
31
+ "date": PropTypes.shape({
32
+ "dateFnsLocale": PropTypes.func.isRequired
33
+ }),
34
+ "dialog": PropTypes.shape({
35
+ "ariaLabels": PropTypes.shape({
36
+ "close": PropTypes.func.isRequired
37
+ }).isRequired
38
+ }),
39
+ "dialogFullScreen": PropTypes.shape({
40
+ "ariaLabels": PropTypes.shape({
41
+ "close": PropTypes.func.isRequired
42
+ }).isRequired
43
+ }),
44
+ "errors": PropTypes.shape({
45
+ "messages": PropTypes.shape({
46
+ "formSummary": PropTypes.func.isRequired
47
+ }).isRequired
48
+ }),
49
+ "heading": PropTypes.shape({
50
+ "backLinkAriaLabel": PropTypes.func.isRequired
51
+ }),
52
+ "link": PropTypes.shape({
53
+ "skipLinkLabel": PropTypes.func.isRequired
54
+ }),
55
+ "locale": PropTypes.func,
56
+ "message": PropTypes.shape({
57
+ "closeButtonAriaLabel": PropTypes.func.isRequired
58
+ }),
59
+ "numeralDate": PropTypes.shape({
60
+ "validation": PropTypes.shape({
61
+ "day": PropTypes.func.isRequired,
62
+ "month": PropTypes.func.isRequired,
63
+ "year": PropTypes.func.isRequired
64
+ }).isRequired
65
+ }),
66
+ "pager": PropTypes.shape({
67
+ "first": PropTypes.func.isRequired,
68
+ "last": PropTypes.func.isRequired,
69
+ "next": PropTypes.func.isRequired,
70
+ "ofY": PropTypes.func.isRequired,
71
+ "pageX": PropTypes.func.isRequired,
72
+ "previous": PropTypes.func.isRequired,
73
+ "records": PropTypes.func.isRequired,
74
+ "show": PropTypes.func.isRequired
75
+ }),
76
+ "select": PropTypes.shape({
77
+ "actionButtonText": PropTypes.func.isRequired,
78
+ "noResultsForTerm": PropTypes.func.isRequired,
79
+ "placeholder": PropTypes.func.isRequired
80
+ }),
81
+ "sidebar": PropTypes.shape({
82
+ "ariaLabels": PropTypes.shape({
83
+ "close": PropTypes.func.isRequired
84
+ }).isRequired
85
+ }),
86
+ "switch": PropTypes.shape({
87
+ "off": PropTypes.func.isRequired,
88
+ "on": PropTypes.func.isRequired
89
+ }),
90
+ "textEditor": PropTypes.shape({
91
+ "ariaLabels": PropTypes.shape({
92
+ "bold": PropTypes.func.isRequired,
93
+ "bulletList": PropTypes.func.isRequired,
94
+ "italic": PropTypes.func.isRequired,
95
+ "numberList": PropTypes.func.isRequired
96
+ }).isRequired,
97
+ "tooltipMessages": PropTypes.shape({
98
+ "bold": PropTypes.func.isRequired,
99
+ "bulletList": PropTypes.func.isRequired,
100
+ "italic": PropTypes.func.isRequired,
101
+ "numberList": PropTypes.func.isRequired
102
+ }).isRequired
103
+ }),
104
+ "tileSelect": PropTypes.shape({
105
+ "deselect": PropTypes.func.isRequired
106
+ }),
107
+ "toast": PropTypes.shape({
108
+ "ariaLabels": PropTypes.shape({
109
+ "close": PropTypes.func.isRequired
110
+ }).isRequired
91
111
  })
92
- }),
93
- children: PropTypes.node.isRequired
112
+ })
94
113
  };
114
+ export { I18nProvider };
95
115
  export default I18nProvider;
@@ -1 +1,2 @@
1
- export { default } from "./i18n-provider";
1
+ export { default } from "./i18n-provider.component";
2
+ export type { I18nProviderProps } from "./i18n-provider.component";
@@ -1,4 +1,4 @@
1
- import React, { useContext } from "react";
1
+ import React, { useContext, useMemo } from "react";
2
2
  import PropTypes from "prop-types";
3
3
  import invariant from "invariant";
4
4
  import Tooltip from "../tooltip";
@@ -7,6 +7,7 @@ import { TooltipContext } from "../../__internal__/tooltip-provider";
7
7
  import tagComponent from "../../__internal__/utils/helpers/tags/tags";
8
8
  import StyledIcon from "./icon.style";
9
9
  import { ICON_TOOLTIP_POSITIONS } from "./icon-config";
10
+ import { TabTitleContext } from "../tabs/__internal__/tab-title/tab-title.component";
10
11
  const Icon = /*#__PURE__*/React.forwardRef(({
11
12
  "aria-hidden": ariaHidden,
12
13
  ariaLabel,
@@ -47,9 +48,12 @@ const Icon = /*#__PURE__*/React.forwardRef(({
47
48
  disabled: disabledFromContext,
48
49
  target
49
50
  } = useContext(TooltipContext);
51
+ const {
52
+ isInTab
53
+ } = useContext(TabTitleContext);
50
54
  /** Return Icon type with overrides */
51
55
 
52
- const iconType = () => {
56
+ const iconType = useMemo(() => {
53
57
  // switch tweaks icon names for actual icons in the set
54
58
  switch (type) {
55
59
  case "help":
@@ -71,10 +75,16 @@ const Icon = /*#__PURE__*/React.forwardRef(({
71
75
  default:
72
76
  return type;
73
77
  }
74
- };
75
-
78
+ }, [type]);
76
79
  const isFocusable = focusableFromContext !== undefined ? focusableFromContext : focusable;
77
80
  const hasTooltip = !disabled && !disabledFromContext && !!tooltipMessage && isFocusable;
81
+ const computedTabIndex = useMemo(() => {
82
+ if (isInTab) {
83
+ return undefined;
84
+ }
85
+
86
+ return hasTooltip && tabIndex === undefined ? 0 : tabIndex;
87
+ }, [isInTab, hasTooltip, tabIndex]);
78
88
  const styledIconProps = {
79
89
  "aria-hidden": ariaHidden,
80
90
  "aria-label": ariaLabel,
@@ -83,7 +93,7 @@ const Icon = /*#__PURE__*/React.forwardRef(({
83
93
  bgShape,
84
94
  className: className || undefined,
85
95
  color,
86
- "data-element": iconType(),
96
+ "data-element": iconType,
87
97
  disabled: disabledFromContext || disabled,
88
98
  fontSize,
89
99
  hasTooltip,
@@ -92,15 +102,18 @@ const Icon = /*#__PURE__*/React.forwardRef(({
92
102
  key: "icon",
93
103
  ref,
94
104
  role,
95
- tabIndex: hasTooltip && tabIndex === undefined ? 0 : tabIndex,
96
- type: iconType(),
105
+ tabIndex: computedTabIndex,
106
+ type: iconType,
97
107
  ...tagComponent("icon", rest),
98
108
  ...filterStyledSystemMarginProps(rest)
99
109
  };
100
110
 
111
+ const shouldShowTooltip = () => {
112
+ return tooltipVisibleFromContext !== undefined ? tooltipVisibleFromContext : tooltipVisible;
113
+ };
114
+
101
115
  if (tooltipMessage) {
102
- const showTooltip = tooltipVisibleFromContext !== undefined ? tooltipVisibleFromContext : tooltipVisible;
103
- const visible = disabled ? undefined : showTooltip;
116
+ const visible = disabled ? undefined : shouldShowTooltip();
104
117
  return /*#__PURE__*/React.createElement(Tooltip, {
105
118
  message: tooltipMessage,
106
119
  position: tooltipPositionFromContext || tooltipPosition,
@@ -1 +1,2 @@
1
- export { default } from "./message";
1
+ export { default } from "./message.component";
2
+ export type { MessageProps } from "./message.component";
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ interface MessageContentProps {
3
+ /** set message title */
4
+ title?: React.ReactNode;
5
+ /** set content to component */
6
+ children?: React.ReactNode;
7
+ }
8
+ declare const MessageContent: ({ title, children }: MessageContentProps) => JSX.Element;
9
+ export default MessageContent;
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import PropTypes from "prop-types";
3
- import Content from "../../content/content.component.js";
3
+ import Content from "../../content";
4
4
  import MessageContentStyle from "./message-content.style";
5
5
 
6
6
  const MessageContent = ({
@@ -8,13 +8,12 @@ const MessageContent = ({
8
8
  children
9
9
  }) => {
10
10
  return /*#__PURE__*/React.createElement(MessageContentStyle, null, /*#__PURE__*/React.createElement(Content, {
11
- title: title,
12
- className: "message-content"
11
+ title: title
13
12
  }, children));
14
13
  };
15
14
 
16
15
  MessageContent.propTypes = {
17
- title: PropTypes.node,
18
- children: PropTypes.node
16
+ "children": PropTypes.node,
17
+ "title": PropTypes.node
19
18
  };
20
19
  export default MessageContent;
@@ -0,0 +1,2 @@
1
+ declare const MessageContentStyle: import("styled-components").StyledComponent<"div", any, {}, never>;
2
+ export default MessageContentStyle;
@@ -1,5 +1,4 @@
1
1
  import styled from "styled-components";
2
- import { margin } from "styled-system";
3
2
  const MessageContentStyle = styled.div`
4
3
  padding: 15px 50px 15px 20px;
5
4
  white-space: pre-wrap;
@@ -12,7 +11,5 @@ const MessageContentStyle = styled.div`
12
11
  .carbon-content__body {
13
12
  margin-top: 0px;
14
13
  }
15
-
16
- ${margin}
17
14
  `;
18
15
  export default MessageContentStyle;
@@ -0,0 +1,27 @@
1
+ import React from "react";
2
+ import { MarginProps } from "styled-system";
3
+ export declare type MessageVariant = "error" | "info" | "success" | "warning";
4
+ export interface MessageProps extends MarginProps {
5
+ /** set content to component */
6
+ children?: React.ReactNode;
7
+ /** set custom class to component */
8
+ className?: string;
9
+ /** set custom aria label for message close button */
10
+ closeButtonAriaLabel?: string;
11
+ /** set custom id to component root */
12
+ id?: string;
13
+ /** function runs when user click dismiss button */
14
+ onDismiss?: (e: React.KeyboardEvent<HTMLButtonElement> | React.MouseEvent<HTMLButtonElement>) => void;
15
+ /** show message component */
16
+ open?: boolean;
17
+ /** determines if the close icon is shown */
18
+ showCloseIcon?: boolean;
19
+ /** set message title */
20
+ title?: React.ReactNode;
21
+ /** set background to be invisible */
22
+ transparent?: boolean;
23
+ /** set type of message based on new DLS standard */
24
+ variant?: MessageVariant;
25
+ }
26
+ export declare const Message: ({ open, transparent, title, variant, children, onDismiss, id, className, closeButtonAriaLabel, showCloseIcon, ...props }: MessageProps) => JSX.Element | null;
27
+ export default Message;