carbon-react 117.4.1 → 117.6.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 (138) hide show
  1. package/esm/__internal__/input/input.component.d.ts +3 -3
  2. package/esm/components/advanced-color-picker/advanced-color-picker.component.js +8 -0
  3. package/esm/components/button-toggle/button-toggle.component.js +7 -0
  4. package/esm/components/checkbox/checkbox.component.js +6 -0
  5. package/esm/components/decimal/decimal.component.js +7 -0
  6. package/esm/components/grouped-character/grouped-character.component.js +6 -0
  7. package/esm/components/menu/__internal__/locators.d.ts +6 -6
  8. package/esm/components/menu/__internal__/spec-helper/index.d.ts +3 -0
  9. package/esm/components/menu/__internal__/submenu/index.d.ts +2 -0
  10. package/esm/components/menu/__internal__/submenu/index.js +1 -0
  11. package/esm/components/menu/__internal__/submenu/submenu.component.d.ts +42 -0
  12. package/esm/components/menu/__internal__/submenu/submenu.component.js +162 -85
  13. package/esm/components/menu/__internal__/submenu/submenu.context.d.ts +10 -0
  14. package/esm/components/menu/__internal__/submenu/submenu.style.d.ts +16 -0
  15. package/esm/components/menu/__internal__/submenu/submenu.style.js +4 -4
  16. package/esm/components/menu/index.d.ts +12 -6
  17. package/esm/components/menu/index.js +5 -5
  18. package/esm/components/menu/menu-divider/index.d.ts +2 -2
  19. package/esm/components/menu/menu-divider/index.js +1 -0
  20. package/esm/components/menu/menu-divider/menu-divider.component.d.ts +7 -0
  21. package/esm/components/menu/menu-divider/menu-divider.component.js +14 -7
  22. package/esm/components/menu/menu-divider/menu-divider.style.d.ts +6 -0
  23. package/esm/components/menu/menu-full-screen/index.d.ts +2 -2
  24. package/esm/components/menu/menu-full-screen/menu-full-screen.component.d.ts +14 -0
  25. package/esm/components/menu/menu-full-screen/menu-full-screen.component.js +20 -30
  26. package/esm/components/menu/menu-full-screen/menu-full-screen.style.d.ts +8 -0
  27. package/esm/components/menu/menu-full-screen/menu-full-screen.style.js +29 -27
  28. package/esm/components/menu/menu-item/index.d.ts +2 -2
  29. package/esm/components/menu/menu-item/menu-item.component.d.ts +67 -0
  30. package/esm/components/menu/menu-item/menu-item.component.js +2084 -121
  31. package/esm/components/menu/menu-item/menu-item.style.d.ts +21 -0
  32. package/esm/components/menu/menu-item/menu-item.style.js +188 -146
  33. package/esm/components/menu/menu-segment-title/index.d.ts +2 -2
  34. package/esm/components/menu/menu-segment-title/index.js +1 -0
  35. package/esm/components/menu/menu-segment-title/menu-segment-title.component.d.ts +10 -0
  36. package/esm/components/menu/menu-segment-title/menu-segment-title.component.js +13 -9
  37. package/esm/components/menu/menu-segment-title/menu-segment-title.style.d.ts +8 -0
  38. package/esm/components/menu/menu.component.d.ts +11 -9
  39. package/esm/components/menu/menu.component.js +1887 -18
  40. package/esm/components/menu/menu.config.d.ts +58 -94
  41. package/esm/components/menu/menu.context.d.ts +12 -6
  42. package/esm/components/menu/menu.style.d.ts +12 -2
  43. package/esm/components/menu/menu.style.js +11 -11
  44. package/esm/components/menu/scrollable-block/index.d.ts +2 -1
  45. package/esm/components/menu/scrollable-block/scrollable-block.component.d.ts +19 -0
  46. package/esm/components/menu/scrollable-block/scrollable-block.component.js +13 -20
  47. package/esm/components/menu/scrollable-block/scrollable-block.style.d.ts +8 -0
  48. package/esm/components/number/number.component.js +6 -0
  49. package/esm/components/numeral-date/numeral-date.component.js +8 -0
  50. package/esm/components/radio-button/radio-button-group.component.js +8 -0
  51. package/esm/components/radio-button/radio-button.style.js +1 -1
  52. package/esm/components/search/search.component.js +6 -0
  53. package/esm/components/select/filterable-select/filterable-select.component.js +9 -1
  54. package/esm/components/select/multi-select/multi-select.component.js +9 -1
  55. package/esm/components/select/simple-select/simple-select.component.js +9 -1
  56. package/esm/components/simple-color-picker/simple-color-picker.component.js +8 -0
  57. package/esm/components/switch/switch.component.js +6 -0
  58. package/esm/components/textarea/textarea.component.js +6 -0
  59. package/esm/components/textbox/textbox.component.js +6 -0
  60. package/esm/components/vertical-menu/vertical-menu-item.component.d.ts +3 -1
  61. package/esm/components/vertical-menu/vertical-menu-item.component.js +3 -1
  62. package/lib/__internal__/input/input.component.d.ts +3 -3
  63. package/lib/components/advanced-color-picker/advanced-color-picker.component.js +11 -0
  64. package/lib/components/button-toggle/button-toggle.component.js +10 -0
  65. package/lib/components/checkbox/checkbox.component.js +7 -0
  66. package/lib/components/decimal/decimal.component.js +8 -0
  67. package/lib/components/grouped-character/grouped-character.component.js +7 -0
  68. package/lib/components/menu/__internal__/locators.d.ts +6 -6
  69. package/lib/components/menu/__internal__/spec-helper/index.d.ts +3 -0
  70. package/lib/components/menu/__internal__/submenu/index.d.ts +2 -0
  71. package/lib/components/menu/__internal__/submenu/index.js +15 -0
  72. package/lib/components/menu/__internal__/submenu/package.json +6 -0
  73. package/lib/components/menu/__internal__/submenu/submenu.component.d.ts +42 -0
  74. package/lib/components/menu/__internal__/submenu/submenu.component.js +162 -86
  75. package/lib/components/menu/__internal__/submenu/submenu.context.d.ts +10 -0
  76. package/lib/components/menu/__internal__/submenu/submenu.style.d.ts +16 -0
  77. package/lib/components/menu/__internal__/submenu/submenu.style.js +4 -4
  78. package/lib/components/menu/index.d.ts +12 -6
  79. package/lib/components/menu/index.js +5 -5
  80. package/lib/components/menu/menu-divider/index.d.ts +2 -2
  81. package/lib/components/menu/menu-divider/index.js +15 -0
  82. package/lib/components/menu/menu-divider/menu-divider.component.d.ts +7 -0
  83. package/lib/components/menu/menu-divider/menu-divider.component.js +15 -7
  84. package/lib/components/menu/menu-divider/menu-divider.style.d.ts +6 -0
  85. package/lib/components/menu/menu-divider/package.json +6 -0
  86. package/lib/components/menu/menu-full-screen/index.d.ts +2 -2
  87. package/lib/components/menu/menu-full-screen/menu-full-screen.component.d.ts +14 -0
  88. package/lib/components/menu/menu-full-screen/menu-full-screen.component.js +22 -31
  89. package/lib/components/menu/menu-full-screen/menu-full-screen.style.d.ts +8 -0
  90. package/lib/components/menu/menu-full-screen/menu-full-screen.style.js +30 -28
  91. package/lib/components/menu/menu-item/index.d.ts +2 -2
  92. package/lib/components/menu/menu-item/menu-item.component.d.ts +67 -0
  93. package/lib/components/menu/menu-item/menu-item.component.js +2085 -122
  94. package/lib/components/menu/menu-item/menu-item.style.d.ts +21 -0
  95. package/lib/components/menu/menu-item/menu-item.style.js +191 -146
  96. package/lib/components/menu/menu-segment-title/index.d.ts +2 -2
  97. package/lib/components/menu/menu-segment-title/index.js +15 -0
  98. package/lib/components/menu/menu-segment-title/menu-segment-title.component.d.ts +10 -0
  99. package/lib/components/menu/menu-segment-title/menu-segment-title.component.js +14 -9
  100. package/lib/components/menu/menu-segment-title/menu-segment-title.style.d.ts +8 -0
  101. package/lib/components/menu/menu-segment-title/package.json +6 -0
  102. package/lib/components/menu/menu.component.d.ts +11 -9
  103. package/lib/components/menu/menu.component.js +1889 -20
  104. package/lib/components/menu/menu.config.d.ts +58 -94
  105. package/lib/components/menu/menu.context.d.ts +12 -6
  106. package/lib/components/menu/menu.style.d.ts +12 -2
  107. package/lib/components/menu/menu.style.js +12 -12
  108. package/lib/components/menu/scrollable-block/index.d.ts +2 -1
  109. package/lib/components/menu/scrollable-block/scrollable-block.component.d.ts +19 -0
  110. package/lib/components/menu/scrollable-block/scrollable-block.component.js +15 -21
  111. package/lib/components/menu/scrollable-block/scrollable-block.style.d.ts +8 -0
  112. package/lib/components/number/number.component.js +7 -0
  113. package/lib/components/numeral-date/numeral-date.component.js +10 -0
  114. package/lib/components/radio-button/radio-button-group.component.js +11 -0
  115. package/lib/components/radio-button/radio-button.style.js +1 -1
  116. package/lib/components/search/search.component.js +7 -0
  117. package/lib/components/select/filterable-select/filterable-select.component.js +10 -1
  118. package/lib/components/select/multi-select/multi-select.component.js +10 -1
  119. package/lib/components/select/simple-select/simple-select.component.js +10 -1
  120. package/lib/components/simple-color-picker/simple-color-picker.component.js +11 -0
  121. package/lib/components/switch/switch.component.js +7 -0
  122. package/lib/components/textarea/textarea.component.js +7 -0
  123. package/lib/components/textbox/textbox.component.js +7 -0
  124. package/lib/components/vertical-menu/vertical-menu-item.component.d.ts +3 -1
  125. package/lib/components/vertical-menu/vertical-menu-item.component.js +3 -1
  126. package/package.json +2 -2
  127. package/esm/components/menu/menu-divider/menu-divider.d.ts +0 -11
  128. package/esm/components/menu/menu-full-screen/menu-full-screen.d.ts +0 -16
  129. package/esm/components/menu/menu-item/menu-item.d.ts +0 -60
  130. package/esm/components/menu/menu-segment-title/menu-segment-title.d.ts +0 -12
  131. package/esm/components/menu/menu.d.ts +0 -28
  132. package/esm/components/menu/scrollable-block/scrollable-block.d.ts +0 -20
  133. package/lib/components/menu/menu-divider/menu-divider.d.ts +0 -11
  134. package/lib/components/menu/menu-full-screen/menu-full-screen.d.ts +0 -16
  135. package/lib/components/menu/menu-item/menu-item.d.ts +0 -60
  136. package/lib/components/menu/menu-segment-title/menu-segment-title.d.ts +0 -12
  137. package/lib/components/menu/menu.d.ts +0 -28
  138. package/lib/components/menu/scrollable-block/scrollable-block.d.ts +0 -20
@@ -1,95 +1,59 @@
1
- declare namespace _default {
2
- namespace light {
3
- const background: string;
4
- const color: string;
5
- const selected: string;
6
- const submenuOpenedBackground: string;
7
- const submenuBackground: string;
8
- const submenuSelected: string;
9
- const submenuItemBackground: string;
10
- const submenuItemBackgroundHover: string;
11
- const title: string;
12
- const alternate: string;
13
- const alternateHover: string;
14
- const divider: string;
15
- }
16
- namespace dark {
17
- const background_1: string;
18
- export { background_1 as background };
19
- const color_1: string;
20
- export { color_1 as color };
21
- const selected_1: string;
22
- export { selected_1 as selected };
23
- const submenuOpenedBackground_1: string;
24
- export { submenuOpenedBackground_1 as submenuOpenedBackground };
25
- const submenuBackground_1: string;
26
- export { submenuBackground_1 as submenuBackground };
27
- const submenuSelected_1: string;
28
- export { submenuSelected_1 as submenuSelected };
29
- const submenuItemBackground_1: string;
30
- export { submenuItemBackground_1 as submenuItemBackground };
31
- const submenuItemBackgroundHover_1: string;
32
- export { submenuItemBackgroundHover_1 as submenuItemBackgroundHover };
33
- const title_1: string;
34
- export { title_1 as title };
35
- const alternate_1: string;
36
- export { alternate_1 as alternate };
37
- const alternateHover_1: string;
38
- export { alternateHover_1 as alternateHover };
39
- const divider_1: string;
40
- export { divider_1 as divider };
41
- }
42
- namespace black {
43
- const background_2: string;
44
- export { background_2 as background };
45
- const color_2: string;
46
- export { color_2 as color };
47
- const selected_2: string;
48
- export { selected_2 as selected };
49
- const submenuOpenedBackground_2: string;
50
- export { submenuOpenedBackground_2 as submenuOpenedBackground };
51
- const submenuBackground_2: string;
52
- export { submenuBackground_2 as submenuBackground };
53
- const submenuSelected_2: string;
54
- export { submenuSelected_2 as submenuSelected };
55
- const submenuItemBackground_2: string;
56
- export { submenuItemBackground_2 as submenuItemBackground };
57
- const submenuItemBackgroundHover_2: string;
58
- export { submenuItemBackgroundHover_2 as submenuItemBackgroundHover };
59
- const title_2: string;
60
- export { title_2 as title };
61
- const alternate_2: string;
62
- export { alternate_2 as alternate };
63
- const alternateHover_2: string;
64
- export { alternateHover_2 as alternateHover };
65
- const divider_2: string;
66
- export { divider_2 as divider };
67
- }
68
- namespace white {
69
- const background_3: string;
70
- export { background_3 as background };
71
- const color_3: string;
72
- export { color_3 as color };
73
- const selected_3: string;
74
- export { selected_3 as selected };
75
- const submenuOpenedBackground_3: string;
76
- export { submenuOpenedBackground_3 as submenuOpenedBackground };
77
- const submenuBackground_3: string;
78
- export { submenuBackground_3 as submenuBackground };
79
- const submenuSelected_3: string;
80
- export { submenuSelected_3 as submenuSelected };
81
- const submenuItemBackground_3: string;
82
- export { submenuItemBackground_3 as submenuItemBackground };
83
- const submenuItemBackgroundHover_3: string;
84
- export { submenuItemBackgroundHover_3 as submenuItemBackgroundHover };
85
- const title_3: string;
86
- export { title_3 as title };
87
- const alternate_3: string;
88
- export { alternate_3 as alternate };
89
- const alternateHover_3: string;
90
- export { alternateHover_3 as alternateHover };
91
- const divider_3: string;
92
- export { divider_3 as divider };
93
- }
94
- }
1
+ declare const _default: {
2
+ light: {
3
+ background: string;
4
+ color: string;
5
+ selected: string;
6
+ submenuOpenedBackground: string;
7
+ submenuBackground: string;
8
+ submenuSelected: string;
9
+ submenuItemBackground: string;
10
+ submenuItemBackgroundHover: string;
11
+ title: string;
12
+ alternate: string;
13
+ alternateHover: string;
14
+ divider: string;
15
+ };
16
+ dark: {
17
+ background: string;
18
+ color: string;
19
+ selected: string;
20
+ submenuOpenedBackground: string;
21
+ submenuBackground: string;
22
+ submenuSelected: string;
23
+ submenuItemBackground: string;
24
+ submenuItemBackgroundHover: string;
25
+ title: string;
26
+ alternate: string;
27
+ alternateHover: string;
28
+ divider: string;
29
+ };
30
+ black: {
31
+ background: string;
32
+ color: string;
33
+ selected: string;
34
+ submenuOpenedBackground: string;
35
+ submenuBackground: string;
36
+ submenuSelected: string;
37
+ submenuItemBackground: string;
38
+ submenuItemBackgroundHover: string;
39
+ title: string;
40
+ alternate: string;
41
+ alternateHover: string;
42
+ divider: string;
43
+ };
44
+ white: {
45
+ background: string;
46
+ color: string;
47
+ selected: string;
48
+ submenuOpenedBackground: string;
49
+ submenuBackground: string;
50
+ submenuSelected: string;
51
+ submenuItemBackground: string;
52
+ submenuItemBackgroundHover: string;
53
+ title: string;
54
+ alternate: string;
55
+ alternateHover: string;
56
+ divider: string;
57
+ };
58
+ };
95
59
  export default _default;
@@ -1,8 +1,14 @@
1
- declare var _default: React.Context<{
2
- menuType: string;
1
+ import React from "react";
2
+ export declare type MenuType = "light" | "dark" | "white" | "black";
3
+ export interface MenuContextProps {
4
+ menuType: MenuType;
5
+ openSubmenuId: string | null;
3
6
  inMenu: boolean;
4
- openSubmenuId: null;
5
- setOpenSubmenuId: () => void;
6
- }>;
7
+ inFullscreenView?: boolean;
8
+ setOpenSubmenuId: (id: string | null) => void;
9
+ registerItem?: (id: string) => void;
10
+ unregisterItem?: (id: string) => void;
11
+ focusId?: string;
12
+ }
13
+ declare const _default: React.Context<MenuContextProps>;
7
14
  export default _default;
8
- import React from "react";
@@ -1,2 +1,12 @@
1
- export const StyledMenuWrapper: import("styled-components").StyledComponent<"ul", any, {}, never>;
2
- export const StyledMenuItem: import("styled-components").StyledComponent<"li", any, {}, never>;
1
+ import { FlexboxProps, LayoutProps } from "styled-system";
2
+ import { MenuProps } from "./menu.component";
3
+ interface StyledMenuProps extends Pick<MenuProps, "menuType">, FlexboxProps, LayoutProps {
4
+ inFullscreenView?: boolean;
5
+ }
6
+ declare const StyledMenuWrapper: import("styled-components").StyledComponent<"ul", any, StyledMenuProps, never>;
7
+ interface StyledMenuItemProps extends Pick<MenuProps, "menuType" | "maxWidth"> {
8
+ inFullscreenView?: boolean;
9
+ inSubmenu?: boolean;
10
+ }
11
+ declare const StyledMenuItem: import("styled-components").StyledComponent<"li", any, StyledMenuItemProps, never>;
12
+ export { StyledMenuWrapper, StyledMenuItem };
@@ -16,15 +16,15 @@ const StyledMenuWrapper = styled.ul`
16
16
  ${StyledVerticalWrapper} {
17
17
  ${({
18
18
  menuType
19
- }) => css`
20
- display: inline-block;
21
- vertical-align: bottom;
22
- background-color: ${menuConfigVariants[menuType].background};
19
+ }) => menuType && css`
20
+ display: inline-block;
21
+ vertical-align: bottom;
22
+ background-color: ${menuConfigVariants[menuType].background};
23
23
 
24
- ${menuType === "dark" && css`
25
- color: ${menuConfigVariants[menuType].color};
24
+ ${menuType === "dark" && css`
25
+ color: ${menuConfigVariants[menuType].color};
26
+ `}
26
27
  `}
27
- `}
28
28
 
29
29
  ${StyledDivider} {
30
30
  position: relative;
@@ -50,10 +50,10 @@ const StyledMenuItem = styled.li`
50
50
  padding-top: 16px;
51
51
  padding-bottom: 16px;
52
52
 
53
- a,
54
- ${StyledLink} a,
55
- button,
56
- ${StyledLink} button,
53
+ > a,
54
+ ${StyledLink} > a,
55
+ > button,
56
+ ${StyledLink} > button,
57
57
  > span,
58
58
  > div,
59
59
  [data-component="submenu-wrapper"] > ${StyledLink} {
@@ -1 +1,2 @@
1
- export { default } from "./scrollable-block";
1
+ export { default } from "./scrollable-block.component";
2
+ export type { ScrollableBlockProps } from "./scrollable-block.component";
@@ -0,0 +1,19 @@
1
+ import React from "react";
2
+ import { VariantType } from "../menu-item";
3
+ import { TagProps } from "../../../__internal__/utils/helpers/tags";
4
+ export interface ScrollableBlockProps extends TagProps {
5
+ /** Children elements */
6
+ children: React.ReactNode;
7
+ /** A custom height to be applied to the component. */
8
+ height?: string | number;
9
+ /** set the colour variant for a menuType */
10
+ variant?: VariantType;
11
+ /** the element, if any, displayed at the top of the block to be its semantic "parent",
12
+ * but not part of the scrollable section
13
+ */
14
+ parent?: React.ReactElement;
15
+ /** the colour variant for the parent element, if different from the variant of the block */
16
+ parentVariant?: VariantType;
17
+ }
18
+ export declare const ScrollableBlock: ({ children, height, variant, parent, parentVariant, ...rest }: ScrollableBlockProps) => JSX.Element;
19
+ export default ScrollableBlock;
@@ -6,6 +6,7 @@ import MenuContext from "../menu.context";
6
6
  import MenuItem from "../menu-item";
7
7
  import StyledScrollableBlock from "./scrollable-block.style";
8
8
  import Box from "../../box";
9
+ import tagComponent from "../../../__internal__/utils/helpers/tags";
9
10
 
10
11
  const ScrollableBlock = ({
11
12
  children,
@@ -24,16 +25,15 @@ const ScrollableBlock = ({
24
25
  white: "light",
25
26
  black: "dark"
26
27
  };
27
- return /*#__PURE__*/React.createElement(StyledScrollableBlock, _extends({
28
- "data-component": "submenu-scrollable-block",
28
+ return /*#__PURE__*/React.createElement(StyledScrollableBlock, _extends({}, tagComponent("submenu-scrollable-block", rest), {
29
29
  menuType: menuType,
30
30
  variant: variant
31
31
  }, rest), parent && /*#__PURE__*/React.createElement(MenuItem, {
32
32
  "data-component": "scrollable-block-parent",
33
33
  overrideColor: true,
34
34
  variant: parentVariant,
35
- as: "div",
36
- href: "#"
35
+ p: "2px 16px",
36
+ as: "div"
37
37
  }, parent), /*#__PURE__*/React.createElement(Box, {
38
38
  overflowY: "scroll",
39
39
  scrollVariant: scrollVariants[menuType],
@@ -45,21 +45,14 @@ const ScrollableBlock = ({
45
45
  };
46
46
 
47
47
  ScrollableBlock.propTypes = {
48
- /** Children elements */
49
- children: PropTypes.node.isRequired,
50
-
51
- /** Styled system height prop */
52
- height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
53
-
54
- /** set the colour variant for a menuType */
55
- variant: PropTypes.oneOf(["default", "alternate"]),
56
-
57
- /** the element, if any, displayed at the top of the block to be its semantic "parent",
58
- * but not part of the scrollable section
59
- */
60
- parent: PropTypes.node,
61
-
62
- /** the colour variant for the parent element, if different from the variant of the block */
63
- parentVariant: PropTypes.oneOf(["default", "alternate"])
48
+ "children": PropTypes.node,
49
+ "data-component": PropTypes.string,
50
+ "data-element": PropTypes.string,
51
+ "data-role": PropTypes.string,
52
+ "height": PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
53
+ "parent": PropTypes.element,
54
+ "parentVariant": PropTypes.oneOf(["alternate", "default"]),
55
+ "variant": PropTypes.oneOf(["alternate", "default"])
64
56
  };
57
+ export { ScrollableBlock };
65
58
  export default ScrollableBlock;
@@ -0,0 +1,8 @@
1
+ import { MenuType } from "../menu.context";
2
+ import { VariantType } from "../menu-item";
3
+ interface StyledScrollableBlockProps {
4
+ menuType: MenuType;
5
+ variant: VariantType;
6
+ }
7
+ declare const StyledScrollableBlock: import("styled-components").StyledComponent<"li", any, StyledScrollableBlockProps, never>;
8
+ export default StyledScrollableBlock;
@@ -5,6 +5,7 @@ import PropTypes from "prop-types";
5
5
  import Textbox from "../textbox";
6
6
  import Logger from "../../__internal__/utils/logger";
7
7
  let deprecateInputRefWarnTriggered = false;
8
+ let deprecateUncontrolledWarnTriggered = false;
8
9
 
9
10
  function isValidNumber(value) {
10
11
  const regex = new RegExp("^[-]?[0-9]*$");
@@ -27,6 +28,11 @@ const Number = /*#__PURE__*/React.forwardRef(({
27
28
  Logger.deprecate("The `inputRef` prop in `Number` component is deprecated and will soon be removed. Please use `ref` instead.");
28
29
  }
29
30
 
31
+ if (!deprecateUncontrolledWarnTriggered && !onChange) {
32
+ deprecateUncontrolledWarnTriggered = true;
33
+ Logger.deprecate("Uncontrolled behaviour in `Number` is deprecated and support will soon be removed. Please make sure all your inputs are controlled.");
34
+ }
35
+
30
36
  const handleOnChange = event => {
31
37
  if (isValidNumber(event.target.value) && onChange) {
32
38
  onChange(event);
@@ -17,6 +17,8 @@ import { TooltipProvider } from "../../__internal__/tooltip-provider";
17
17
  import { NewValidationContext } from "../carbon-provider/carbon-provider.component";
18
18
  import NumeralDateContext from "./numeral-date-context";
19
19
  import FormSpacingProvider from "../../__internal__/form-spacing-provider";
20
+ import Logger from "../../__internal__/utils/logger";
21
+ let deprecateUncontrolledWarnTriggered = false;
20
22
  export const ALLOWED_DATE_FORMATS = [["dd", "mm", "yyyy"], ["mm", "dd", "yyyy"], ["dd", "mm"], ["mm", "dd"], ["mm", "yyyy"]];
21
23
  const incorrectDateFormatMessage = "Forbidden prop dateFormat supplied to NumeralDate. " + "Only one of these date formats is allowed: " + "['dd', 'mm', 'yyyy'], " + "['mm', 'dd', 'yyyy'], " + "['dd', 'mm'], " + "['mm', 'dd'], " + "['mm', 'yyyy']";
22
24
 
@@ -156,6 +158,12 @@ const NumeralDate = ({
156
158
  const internalMessage = Object.keys(internalMessages).reduce((combinedMessage, datePart) => internalMessages[datePart] ? `${combinedMessage + internalMessages[datePart]}\n` : combinedMessage, "");
157
159
  const internalError = enableInternalError ? internalMessage + error : error;
158
160
  const internalWarning = enableInternalWarning ? internalMessage + warning : warning;
161
+
162
+ if (!deprecateUncontrolledWarnTriggered && !isControlled.current) {
163
+ deprecateUncontrolledWarnTriggered = true;
164
+ Logger.deprecate("Uncontrolled behaviour in `Numeral Date` is deprecated and support will soon be removed. Please make sure all your inputs are controlled.");
165
+ }
166
+
159
167
  return /*#__PURE__*/React.createElement(TooltipProvider, {
160
168
  helpAriaLabel: helpAriaLabel
161
169
  }, /*#__PURE__*/React.createElement(InputGroupBehaviour, null, /*#__PURE__*/React.createElement(FormField, _extends({
@@ -9,6 +9,8 @@ import RadioButtonMapper from "../../__internal__/radio-button-mapper/radio-butt
9
9
  import useIsAboveBreakpoint from "../../hooks/__internal__/useIsAboveBreakpoint";
10
10
  import { filterStyledSystemMarginProps } from "../../style/utils";
11
11
  import { TooltipProvider } from "../../__internal__/tooltip-provider";
12
+ import Logger from "../../__internal__/utils/logger";
13
+ let deprecateUncontrolledWarnTriggered = false;
12
14
 
13
15
  const RadioButtonGroup = props => {
14
16
  const {
@@ -32,6 +34,12 @@ const RadioButtonGroup = props => {
32
34
  required,
33
35
  tooltipPosition
34
36
  } = props;
37
+
38
+ if (!deprecateUncontrolledWarnTriggered && !onChange) {
39
+ deprecateUncontrolledWarnTriggered = true;
40
+ Logger.deprecate("Uncontrolled behaviour in `Radio Button` is deprecated and support will soon be removed. Please make sure all your inputs are controlled.");
41
+ }
42
+
35
43
  const marginProps = filterStyledSystemMarginProps(props);
36
44
  const isAboveLegendBreakpoint = useIsAboveBreakpoint(adaptiveLegendBreakpoint);
37
45
  const isAboveSpacingBreakpoint = useIsAboveBreakpoint(adaptiveSpacingBreakpoint);
@@ -60,7 +60,7 @@ const RadioButtonStyle = styled(CheckboxStyle)`
60
60
 
61
61
  ${disabled && css`
62
62
  circle {
63
- fill: var(--colorsCtilityDisabled400);
63
+ fill: var(--colorsUtilityDisabled400);
64
64
  }
65
65
 
66
66
  ${HiddenCheckableInputStyle}:checked + ${StyledCheckableInputSvgWrapper} circle {
@@ -12,6 +12,7 @@ import Textbox from "../textbox";
12
12
  import Button from "../button";
13
13
  import Logger from "../../__internal__/utils/logger";
14
14
  let deprecateInputRefWarnTriggered = false;
15
+ let deprecateUncontrolledWarnTriggered = false;
15
16
  const Search = /*#__PURE__*/React.forwardRef(({
16
17
  defaultValue,
17
18
  onChange,
@@ -45,6 +46,11 @@ const Search = /*#__PURE__*/React.forwardRef(({
45
46
  Logger.deprecate("The `inputRef` prop in `Search` component is deprecated and will soon be removed. Please use `ref` instead.");
46
47
  }
47
48
 
49
+ if (!deprecateUncontrolledWarnTriggered && !isControlled) {
50
+ deprecateUncontrolledWarnTriggered = true;
51
+ Logger.deprecate("Uncontrolled behaviour in `Search` is deprecated and support will soon be removed. Please make sure all your inputs are controlled.");
52
+ }
53
+
48
54
  !(typeof initialValue === "string") ? process.env.NODE_ENV !== "production" ? invariant(false, "This component has no initial value") : invariant(false) : void 0;
49
55
  !(threshold === undefined || typeof threshold === "number" && threshold > 0) ? process.env.NODE_ENV !== "production" ? invariant(false, "Threshold must be a positive number") : invariant(false) : void 0;
50
56
  const [searchValue, setSearchValue] = useState(initialValue);
@@ -16,6 +16,7 @@ import useStableCallback from "../../../hooks/__internal__/useStableCallback";
16
16
  import useFormSpacing from "../../../hooks/__internal__/useFormSpacing";
17
17
  import useInputAccessibility from "../../../hooks/__internal__/useInputAccessibility/useInputAccessibility";
18
18
  let deprecateInputRefWarnTriggered = false;
19
+ let deprecateUncontrolledWarnTriggered = false;
19
20
  const FilterableSelectList = withFilter(SelectList);
20
21
  const FilterableSelect = /*#__PURE__*/React.forwardRef(({
21
22
  "aria-label": ariaLabel,
@@ -80,7 +81,14 @@ const FilterableSelect = /*#__PURE__*/React.forwardRef(({
80
81
 
81
82
  if (!deprecateInputRefWarnTriggered && inputRef) {
82
83
  deprecateInputRefWarnTriggered = true;
83
- Logger.deprecate("The `inputRef` prop in `FilterableSelect` component is deprecated and will soon be removed. Please use `ref` instead.");
84
+ Logger.deprecate("The `inputRef` prop in `Filterable Select` component is deprecated and will soon be removed. Please use `ref` instead.");
85
+ }
86
+
87
+ const componentIsUncontrolled = !isControlled || !onChange && defaultValue;
88
+
89
+ if (!deprecateUncontrolledWarnTriggered && componentIsUncontrolled) {
90
+ deprecateUncontrolledWarnTriggered = true;
91
+ Logger.deprecate("Uncontrolled behaviour in `Filterable Select` is deprecated and support will soon be removed. Please make sure all your inputs are controlled.");
84
92
  }
85
93
 
86
94
  const createCustomEvent = useCallback(newValue => {
@@ -18,6 +18,7 @@ import useStableCallback from "../../../hooks/__internal__/useStableCallback";
18
18
  import useFormSpacing from "../../../hooks/__internal__/useFormSpacing";
19
19
  import useInputAccessibility from "../../../hooks/__internal__/useInputAccessibility/useInputAccessibility";
20
20
  let deprecateInputRefWarnTriggered = false;
21
+ let deprecateUncontrolledWarnTriggered = false;
21
22
  const FilterableSelectList = withFilter(SelectList);
22
23
  const MultiSelect = /*#__PURE__*/React.forwardRef(({
23
24
  "aria-label": ariaLabel,
@@ -86,7 +87,14 @@ const MultiSelect = /*#__PURE__*/React.forwardRef(({
86
87
 
87
88
  if (!deprecateInputRefWarnTriggered && inputRef) {
88
89
  deprecateInputRefWarnTriggered = true;
89
- Logger.deprecate("The `inputRef` prop in `MultiSelect` component is deprecated and will soon be removed. Please use `ref` instead.");
90
+ Logger.deprecate("The `inputRef` prop in `Multi Select` component is deprecated and will soon be removed. Please use `ref` instead.");
91
+ }
92
+
93
+ const componentIsUncontrolled = !isControlled || !onChange && defaultValue;
94
+
95
+ if (!deprecateUncontrolledWarnTriggered && componentIsUncontrolled) {
96
+ deprecateUncontrolledWarnTriggered = true;
97
+ Logger.deprecate("Uncontrolled behaviour in `Multi Select` is deprecated and support will soon be removed. Please make sure all your inputs are controlled.");
90
98
  }
91
99
 
92
100
  const setOpen = useCallback(() => {
@@ -16,6 +16,7 @@ import Logger from "../../../__internal__/utils/logger";
16
16
  import useFormSpacing from "../../../hooks/__internal__/useFormSpacing";
17
17
  import useInputAccessibility from "../../../hooks/__internal__/useInputAccessibility/useInputAccessibility";
18
18
  let deprecateInputRefWarnTriggered = false;
19
+ let deprecateUncontrolledWarnTriggered = false;
19
20
  const SimpleSelect = /*#__PURE__*/React.forwardRef(({
20
21
  "aria-label": ariaLabel,
21
22
  "aria-labelledby": ariaLabelledby,
@@ -76,7 +77,14 @@ const SimpleSelect = /*#__PURE__*/React.forwardRef(({
76
77
 
77
78
  if (!deprecateInputRefWarnTriggered && inputRef) {
78
79
  deprecateInputRefWarnTriggered = true;
79
- Logger.deprecate("The `inputRef` prop in `Select` component is deprecated and will soon be removed. Please use `ref` instead.");
80
+ Logger.deprecate("The `inputRef` prop in `Simple Select` component is deprecated and will soon be removed. Please use `ref` instead.");
81
+ }
82
+
83
+ const componentIsUncontrolled = !isControlled || !onChange && defaultValue;
84
+
85
+ if (!deprecateUncontrolledWarnTriggered && componentIsUncontrolled) {
86
+ deprecateUncontrolledWarnTriggered = true;
87
+ Logger.deprecate("Uncontrolled behaviour in `Simple Select` is deprecated and support will soon be removed. Please make sure all your inputs are controlled.");
80
88
  }
81
89
 
82
90
  const childOptions = useMemo(() => React.Children.toArray(children), [children]);
@@ -12,6 +12,8 @@ import { StyledContent, StyledColorOptions } from "./simple-color-picker.style";
12
12
  import ValidationIcon from "../../__internal__/validations/validation-icon.component";
13
13
  import { InputGroupContext } from "../../__internal__/input-behaviour";
14
14
  import { filterStyledSystemMarginProps } from "../../style/utils";
15
+ import Logger from "../../__internal__/utils/logger";
16
+ let deprecateUncontrolledWarnTriggered = false;
15
17
  const SimpleColorPicker = /*#__PURE__*/React.forwardRef((props, ref) => {
16
18
  const {
17
19
  children,
@@ -185,6 +187,12 @@ const SimpleColorPicker = /*#__PURE__*/React.forwardRef((props, ref) => {
185
187
  warning,
186
188
  info
187
189
  };
190
+
191
+ if (!deprecateUncontrolledWarnTriggered && !onChange) {
192
+ deprecateUncontrolledWarnTriggered = true;
193
+ Logger.deprecate("Uncontrolled behaviour in `Simple Color Picker` is deprecated and support will soon be removed. Please make sure all your inputs are controlled.");
194
+ }
195
+
188
196
  return /*#__PURE__*/React.createElement(Fieldset, _extends({
189
197
  role: "radiogroup",
190
198
  legend: legend,
@@ -8,6 +8,7 @@ import { TooltipProvider } from "../../__internal__/tooltip-provider";
8
8
  import Logger from "../../__internal__/utils/logger";
9
9
  import useFormSpacing from "../../hooks/__internal__/useFormSpacing";
10
10
  let deprecateInputRefWarnTriggered = false;
11
+ let deprecateUncontrolledWarnTriggered = false;
11
12
  const Switch = /*#__PURE__*/React.forwardRef(({
12
13
  autoFocus,
13
14
  id,
@@ -48,6 +49,11 @@ const Switch = /*#__PURE__*/React.forwardRef(({
48
49
  Logger.deprecate("The `inputRef` prop in `Switch` component is deprecated and will soon be removed. Please use `ref` instead.");
49
50
  }
50
51
 
52
+ if (!deprecateUncontrolledWarnTriggered && !onChange) {
53
+ deprecateUncontrolledWarnTriggered = true;
54
+ Logger.deprecate("Uncontrolled behaviour in `Switch` is deprecated and support will soon be removed. Please make sure all your inputs are controlled.");
55
+ }
56
+
51
57
  const onChangeInternal = useCallback(e => {
52
58
  setCheckedInternal(e.target.checked);
53
59
  onChange === null || onChange === void 0 ? void 0 : onChange(e);
@@ -19,6 +19,7 @@ import Box from "../box";
19
19
  import Logger from "../../__internal__/utils/logger";
20
20
  import useFormSpacing from "../../hooks/__internal__/useFormSpacing";
21
21
  let deprecateInputRefWarnTriggered = false;
22
+ let deprecateUncontrolledWarnTriggered = false;
22
23
  const Textarea = /*#__PURE__*/React.forwardRef(({
23
24
  "aria-labelledby": ariaLabelledBy,
24
25
  autoFocus,
@@ -89,6 +90,11 @@ const Textarea = /*#__PURE__*/React.forwardRef(({
89
90
  Logger.deprecate("The `inputRef` prop in `Textarea` component is deprecated and will soon be removed. Please use `ref` instead.");
90
91
  }
91
92
 
93
+ if (!deprecateUncontrolledWarnTriggered && !onChange) {
94
+ deprecateUncontrolledWarnTriggered = true;
95
+ Logger.deprecate("Uncontrolled behaviour in `Textarea` is deprecated and support will soon be removed. Please make sure all your inputs are controlled.");
96
+ }
97
+
92
98
  const minHeight = useRef(MIN_HEIGHT);
93
99
 
94
100
  const expandTextarea = () => {
@@ -20,6 +20,7 @@ import Box from "../box";
20
20
  import Logger from "../../__internal__/utils/logger";
21
21
  import guid from "../../__internal__/utils/helpers/guid";
22
22
  let deprecateInputRefWarnTriggered = false;
23
+ let deprecateUncontrolledWarnTriggered = false;
23
24
  const Textbox = /*#__PURE__*/React.forwardRef(({
24
25
  "aria-labelledby": ariaLabelledBy,
25
26
  align = "left",
@@ -93,6 +94,11 @@ const Textbox = /*#__PURE__*/React.forwardRef(({
93
94
  Logger.deprecate("The `inputRef` prop in `Textbox` component is deprecated and will soon be removed. Please use `ref` instead.");
94
95
  }
95
96
 
97
+ if (!deprecateUncontrolledWarnTriggered && !onChange) {
98
+ deprecateUncontrolledWarnTriggered = true;
99
+ Logger.deprecate("Uncontrolled behaviour in `Textbox` is deprecated and support will soon be removed. Please make sure all your inputs are controlled.");
100
+ }
101
+
96
102
  const {
97
103
  labelId,
98
104
  validationId,
@@ -5,6 +5,8 @@ import { IconType } from "../icon";
5
5
  export interface VerticalMenuItemProps<T = React.ElementType> extends PaddingProps, TagProps {
6
6
  /** Children of the menu item - another level of VerticalMenuItems */
7
7
  children?: React.ReactNode;
8
+ /** Default open state of the component */
9
+ defaultOpen?: boolean;
8
10
  /** Title of the menu item */
9
11
  title: string;
10
12
  /** Adornment of the menu item meant to be rendered on the right side */
@@ -21,5 +23,5 @@ export interface VerticalMenuItemProps<T = React.ElementType> extends PaddingPro
21
23
  component?: T;
22
24
  }
23
25
  declare type InferredComponentProps<T extends React.ElementType> = Omit<React.ComponentProps<T>, keyof VerticalMenuItemProps<T>>;
24
- export declare const VerticalMenuItem: <T>({ title, iconType, adornment, children, component, active, height, href, ...rest }: T extends React.ElementType<any> ? InferredComponentProps<T> & VerticalMenuItemProps<T> : VerticalMenuItemProps<React.ElementType<any>>) => JSX.Element;
26
+ export declare const VerticalMenuItem: <T>({ defaultOpen, title, iconType, adornment, children, component, active, height, href, ...rest }: T extends React.ElementType<any> ? InferredComponentProps<T> & VerticalMenuItemProps<T> : VerticalMenuItemProps<React.ElementType<any>>) => JSX.Element;
25
27
  export default VerticalMenuItem;
@@ -11,6 +11,7 @@ const MenuItemContext = /*#__PURE__*/React.createContext({
11
11
  });
12
12
 
13
13
  const VerticalMenuItem = ({
14
+ defaultOpen = false,
14
15
  title,
15
16
  iconType,
16
17
  adornment,
@@ -21,7 +22,7 @@ const VerticalMenuItem = ({
21
22
  href,
22
23
  ...rest
23
24
  }) => {
24
- const [isOpen, setIsOpen] = useState(false);
25
+ const [isOpen, setIsOpen] = useState(defaultOpen);
25
26
 
26
27
  const handleOnClick = () => {
27
28
  setIsOpen(state => !state);
@@ -104,6 +105,7 @@ VerticalMenuItem.propTypes = {
104
105
  "data-component": PropTypes.string,
105
106
  "data-element": PropTypes.string,
106
107
  "data-role": PropTypes.string,
108
+ "defaultOpen": PropTypes.bool,
107
109
  "height": PropTypes.string,
108
110
  "href": PropTypes.string,
109
111
  "iconType": PropTypes.oneOf(["add", "admin", "alert_on", "alert", "analysis", "arrow_bottom_right_circle", "arrow_down", "arrow_left_boxed", "arrow_left_right_small", "arrow_left_small", "arrow_left", "arrow_right_small", "arrow_right", "arrow_top_left_circle", "arrow_up", "arrow", "arrows_left_right", "attach", "bank_with_card", "bank", "basket_with_squares", "basket", "bed", "bin", "block_arrow_right", "blocked_square", "blocked", "bold", "box_arrow_left", "boxed_shapes", "bulk_destroy", "bullet_list_dotted", "bullet_list_numbers", "bullet_list", "business", "calendar_today", "calendar", "call", "camera", "car_lock", "car_money", "car_repair", "card_view", "caret_down", "caret_large_down", "caret_large_left", "caret_large_right", "caret_large_up", "caret_left", "caret_right", "caret_up", "cart", "cash", "chart_bar", "chart_line", "chart_pie", "chat_notes", "chat", "chevron_down_thick", "chevron_down", "chevron_left_thick", "chevron_left", "chevron_right_thick", "chevron_right", "chevron_up_thick", "chevron_up", "circle_with_dots", "circles_connection", "clock", "close", "coins", "collaborate", "computer_clock", "connect", "construction", "contacts", "copy", "create", "credit_card_slash", "credit_card", "cross_circle", "cross", "csv", "dashboard", "delete", "delivery", "disconnect", "disputed", "document_right_align", "document_tick", "document_vertical_lines", "download", "draft", "drag_vertical", "drag", "drill", "dropdown", "duplicate", "edit", "edited", "ellipsis_horizontal", "ellipsis_vertical", "email_switch", "email", "entry", "envelope_dollar", "envelope_euro", "error_square", "error", "euro", "expand", "factory", "favourite_lined", "favourite", "fax", "feedback", "file_excel", "file_generic", "file_image", "file_pdf", "file_word", "files_leaning", "filter_new", "filter", "fit_height", "fit_width", "flag", "folder", "form_refresh", "gift", "go", "graduation_hat", "graph", "grid", "hand_cash_coins", "hand_cash_note", "help", "hide", "home", "image", "in_progress", "in_transit", "individual", "info", "italic", "key", "laptop", "ledger_arrow_left", "ledger_arrow_right", "ledger", "lightbulb_off", "lightbulb_on", "link", "list_view", "location", "locked", "logout", "lookup", "marker", "message", "minus_large", "minus", "mobile", "money_bag", "none", "old_warning", "palm_tree", "pause_circle", "pause", "pdf", "people_switch", "people", "percentage_boxed", "person_info", "person_tick", "person", "petrol_pump", "phone", "piggy_bank", "plane", "play_circle", "play", "plus_large", "plus", "pound", "print", "progress", "progressed", "question_hollow", "question_mark", "question", "refresh_clock", "refresh", "remove", "sage_coin", "save", "scan", "search", "services", "settings_old", "settings", "share", "shop", "sort_down", "sort_up", "spanner", "split_container", "split", "square_dot", "squares_nine", "stacked_boxes", "stacked_squares", "submitted", "sync", "tag", "talk", "theatre_masks", "three_boxes", "tick_circle", "tick_thick", "tick", "true_tick", "u_turn_left", "u_turn_right", "undo", "unlocked", "upload", "uploaded", "video", "view", "warning"]),