carbon-react 117.5.0 → 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 (134) 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/lib/__internal__/input/input.component.d.ts +3 -3
  61. package/lib/components/advanced-color-picker/advanced-color-picker.component.js +11 -0
  62. package/lib/components/button-toggle/button-toggle.component.js +10 -0
  63. package/lib/components/checkbox/checkbox.component.js +7 -0
  64. package/lib/components/decimal/decimal.component.js +8 -0
  65. package/lib/components/grouped-character/grouped-character.component.js +7 -0
  66. package/lib/components/menu/__internal__/locators.d.ts +6 -6
  67. package/lib/components/menu/__internal__/spec-helper/index.d.ts +3 -0
  68. package/lib/components/menu/__internal__/submenu/index.d.ts +2 -0
  69. package/lib/components/menu/__internal__/submenu/index.js +15 -0
  70. package/lib/components/menu/__internal__/submenu/package.json +6 -0
  71. package/lib/components/menu/__internal__/submenu/submenu.component.d.ts +42 -0
  72. package/lib/components/menu/__internal__/submenu/submenu.component.js +162 -86
  73. package/lib/components/menu/__internal__/submenu/submenu.context.d.ts +10 -0
  74. package/lib/components/menu/__internal__/submenu/submenu.style.d.ts +16 -0
  75. package/lib/components/menu/__internal__/submenu/submenu.style.js +4 -4
  76. package/lib/components/menu/index.d.ts +12 -6
  77. package/lib/components/menu/index.js +5 -5
  78. package/lib/components/menu/menu-divider/index.d.ts +2 -2
  79. package/lib/components/menu/menu-divider/index.js +15 -0
  80. package/lib/components/menu/menu-divider/menu-divider.component.d.ts +7 -0
  81. package/lib/components/menu/menu-divider/menu-divider.component.js +15 -7
  82. package/lib/components/menu/menu-divider/menu-divider.style.d.ts +6 -0
  83. package/lib/components/menu/menu-divider/package.json +6 -0
  84. package/lib/components/menu/menu-full-screen/index.d.ts +2 -2
  85. package/lib/components/menu/menu-full-screen/menu-full-screen.component.d.ts +14 -0
  86. package/lib/components/menu/menu-full-screen/menu-full-screen.component.js +22 -31
  87. package/lib/components/menu/menu-full-screen/menu-full-screen.style.d.ts +8 -0
  88. package/lib/components/menu/menu-full-screen/menu-full-screen.style.js +30 -28
  89. package/lib/components/menu/menu-item/index.d.ts +2 -2
  90. package/lib/components/menu/menu-item/menu-item.component.d.ts +67 -0
  91. package/lib/components/menu/menu-item/menu-item.component.js +2085 -122
  92. package/lib/components/menu/menu-item/menu-item.style.d.ts +21 -0
  93. package/lib/components/menu/menu-item/menu-item.style.js +191 -146
  94. package/lib/components/menu/menu-segment-title/index.d.ts +2 -2
  95. package/lib/components/menu/menu-segment-title/index.js +15 -0
  96. package/lib/components/menu/menu-segment-title/menu-segment-title.component.d.ts +10 -0
  97. package/lib/components/menu/menu-segment-title/menu-segment-title.component.js +14 -9
  98. package/lib/components/menu/menu-segment-title/menu-segment-title.style.d.ts +8 -0
  99. package/lib/components/menu/menu-segment-title/package.json +6 -0
  100. package/lib/components/menu/menu.component.d.ts +11 -9
  101. package/lib/components/menu/menu.component.js +1889 -20
  102. package/lib/components/menu/menu.config.d.ts +58 -94
  103. package/lib/components/menu/menu.context.d.ts +12 -6
  104. package/lib/components/menu/menu.style.d.ts +12 -2
  105. package/lib/components/menu/menu.style.js +12 -12
  106. package/lib/components/menu/scrollable-block/index.d.ts +2 -1
  107. package/lib/components/menu/scrollable-block/scrollable-block.component.d.ts +19 -0
  108. package/lib/components/menu/scrollable-block/scrollable-block.component.js +15 -21
  109. package/lib/components/menu/scrollable-block/scrollable-block.style.d.ts +8 -0
  110. package/lib/components/number/number.component.js +7 -0
  111. package/lib/components/numeral-date/numeral-date.component.js +10 -0
  112. package/lib/components/radio-button/radio-button-group.component.js +11 -0
  113. package/lib/components/radio-button/radio-button.style.js +1 -1
  114. package/lib/components/search/search.component.js +7 -0
  115. package/lib/components/select/filterable-select/filterable-select.component.js +10 -1
  116. package/lib/components/select/multi-select/multi-select.component.js +10 -1
  117. package/lib/components/select/simple-select/simple-select.component.js +10 -1
  118. package/lib/components/simple-color-picker/simple-color-picker.component.js +11 -0
  119. package/lib/components/switch/switch.component.js +7 -0
  120. package/lib/components/textarea/textarea.component.js +7 -0
  121. package/lib/components/textbox/textbox.component.js +7 -0
  122. package/package.json +2 -2
  123. package/esm/components/menu/menu-divider/menu-divider.d.ts +0 -11
  124. package/esm/components/menu/menu-full-screen/menu-full-screen.d.ts +0 -16
  125. package/esm/components/menu/menu-item/menu-item.d.ts +0 -60
  126. package/esm/components/menu/menu-segment-title/menu-segment-title.d.ts +0 -12
  127. package/esm/components/menu/menu.d.ts +0 -28
  128. package/esm/components/menu/scrollable-block/scrollable-block.d.ts +0 -20
  129. package/lib/components/menu/menu-divider/menu-divider.d.ts +0 -11
  130. package/lib/components/menu/menu-full-screen/menu-full-screen.d.ts +0 -16
  131. package/lib/components/menu/menu-item/menu-item.d.ts +0 -60
  132. package/lib/components/menu/menu-segment-title/menu-segment-title.d.ts +0 -12
  133. package/lib/components/menu/menu.d.ts +0 -28
  134. 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,
@@ -19,7 +19,7 @@ export interface CommonInputProps extends Omit<React.InputHTMLAttributes<HTMLInp
19
19
  onBlur?: (ev: React.FocusEvent<HTMLInputElement>) => void;
20
20
  /** Specify a callback triggered on change */
21
21
  onChange?: (ev: React.ChangeEvent<HTMLInputElement>) => void;
22
- /** pecify a callback triggered on click */
22
+ /** Specify a callback triggered on click */
23
23
  onClick?: (ev: React.MouseEvent<HTMLInputElement>) => void;
24
24
  /** Specify a callback triggered on focus */
25
25
  onFocus?: (ev: React.FocusEvent<HTMLInputElement>) => void;
@@ -37,9 +37,9 @@ export interface CommonInputProps extends Omit<React.InputHTMLAttributes<HTMLInp
37
37
  export interface InputProps extends CommonInputProps {
38
38
  /** The visible width of the text control, in average character widths */
39
39
  cols?: number;
40
- /** Integer to determine a timeout for the defered callback */
40
+ /** Integer to determine a timeout for the deferred callback */
41
41
  deferTimeout?: number;
42
- /** Defered callback to be called after the onChange event */
42
+ /** Deferred callback to be called after the onChange event */
43
43
  onChangeDeferred?: (ev: React.ChangeEvent<HTMLInputElement>) => void;
44
44
  /** The number of visible text lines for the control */
45
45
  rows?: number;
@@ -23,6 +23,8 @@ var _useLocale = _interopRequireDefault(require("../../hooks/__internal__/useLoc
23
23
 
24
24
  var _definitionList = require("../definition-list");
25
25
 
26
+ var _logger = _interopRequireDefault(require("../../__internal__/utils/logger"));
27
+
26
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
29
 
28
30
  function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
@@ -31,6 +33,8 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
31
33
 
32
34
  function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
33
35
 
36
+ let deprecateUncontrolledWarnTriggered = false;
37
+
34
38
  const AdvancedColorPicker = ({
35
39
  "aria-describedby": ariaDescribedBy,
36
40
  "aria-label": ariaLabel,
@@ -144,6 +148,13 @@ const AdvancedColorPicker = ({
144
148
  onBlur(e);
145
149
  }
146
150
  }, [onBlur]);
151
+
152
+ if (!deprecateUncontrolledWarnTriggered && !onChange) {
153
+ deprecateUncontrolledWarnTriggered = true;
154
+
155
+ _logger.default.deprecate("Uncontrolled behaviour in `Advanced Color Picker` is deprecated and support will soon be removed. Please make sure all your inputs are controlled.");
156
+ }
157
+
147
158
  return /*#__PURE__*/_react.default.createElement(_advancedColorPicker.StyledAdvancedColorPickerWrapper, _extends({
148
159
  m: "15px auto auto 15px"
149
160
  }, (0, _utils.filterStyledSystemMarginProps)(props)), /*#__PURE__*/_react.default.createElement(_advancedColorPicker.StyledAdvancedColorPickerCell, {