carbon-react 110.1.1 → 110.2.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 (119) hide show
  1. package/esm/__internal__/form-field/form-field.component.d.ts +5 -1
  2. package/esm/__internal__/form-field/form-field.component.js +8 -5
  3. package/esm/__internal__/utils/helpers/tags/tags.d.ts +5 -2
  4. package/esm/__spec_helper__/mock-match-media.d.ts +3 -1
  5. package/esm/__spec_helper__/test-utils.d.ts +3 -2
  6. package/esm/__spec_helper__/test-utils.js +17 -1
  7. package/esm/components/box/box.component.d.ts +4 -2
  8. package/esm/components/box/box.component.js +2 -1
  9. package/esm/components/button-toggle/button-toggle-icon.component.d.ts +15 -0
  10. package/esm/components/button-toggle/button-toggle-icon.component.js +19 -16
  11. package/esm/components/button-toggle/button-toggle-input.component.d.ts +25 -0
  12. package/esm/components/button-toggle/button-toggle-input.component.js +13 -25
  13. package/esm/components/button-toggle/button-toggle.component.d.ts +24 -0
  14. package/esm/components/button-toggle/button-toggle.component.js +23 -59
  15. package/esm/components/button-toggle/button-toggle.style.d.ts +26 -0
  16. package/esm/components/button-toggle/button-toggle.style.js +3 -8
  17. package/esm/components/button-toggle/index.d.ts +2 -2
  18. package/esm/components/content/content.style.js +0 -1
  19. package/esm/components/date/__internal__/utils.js +1 -1
  20. package/esm/components/dismissible-box/dismissible-box.component.js +398 -0
  21. package/esm/components/loader/index.d.ts +2 -1
  22. package/esm/components/loader/loader-square.style.d.ts +9 -1
  23. package/esm/components/loader/loader-square.style.js +4 -11
  24. package/esm/components/loader/loader.component.d.ts +9 -0
  25. package/esm/components/loader/loader.component.js +162 -24
  26. package/esm/components/loader/loader.config.d.ts +1 -1
  27. package/esm/components/loader/loader.style.d.ts +2 -0
  28. package/esm/components/loader-bar/index.d.ts +2 -1
  29. package/esm/components/loader-bar/loader-bar.component.d.ts +7 -0
  30. package/esm/components/loader-bar/loader-bar.component.js +156 -7
  31. package/esm/components/loader-bar/loader-bar.config.d.ts +1 -0
  32. package/esm/components/loader-bar/loader-bar.style.d.ts +10 -0
  33. package/esm/components/loader-bar/loader-bar.style.js +14 -25
  34. package/esm/components/pod/pod.component.js +1 -0
  35. package/esm/components/pod/pod.style.js +8 -4
  36. package/esm/components/portal/portal.d.ts +15 -12
  37. package/esm/components/portal/portal.js +3 -13
  38. package/esm/components/portrait/index.d.ts +2 -1
  39. package/esm/components/portrait/portrait-gravatar.component.d.ts +16 -0
  40. package/esm/components/portrait/portrait-gravatar.component.js +9 -24
  41. package/esm/components/portrait/portrait-initials.component.d.ts +16 -0
  42. package/esm/components/portrait/portrait-initials.component.js +22 -33
  43. package/esm/components/portrait/portrait.component.d.ts +50 -0
  44. package/esm/components/portrait/portrait.component.js +178 -72
  45. package/esm/components/portrait/portrait.config.d.ts +32 -0
  46. package/esm/components/portrait/portrait.style.d.ts +28 -0
  47. package/esm/components/portrait/portrait.style.js +7 -55
  48. package/esm/components/profile/profile.style.d.ts +2 -2
  49. package/esm/components/show-edit-pod/show-edit-pod.style.js +1 -8
  50. package/esm/style/fonts.css +19 -12
  51. package/esm/style/utils/filter-out-position-props.d.ts +3 -0
  52. package/esm/style/utils/filter-out-position-props.js +5 -0
  53. package/lib/__internal__/form-field/form-field.component.d.ts +5 -1
  54. package/lib/__internal__/form-field/form-field.component.js +8 -5
  55. package/lib/__internal__/utils/helpers/tags/tags.d.ts +5 -2
  56. package/lib/__spec_helper__/mock-match-media.d.ts +3 -1
  57. package/lib/__spec_helper__/test-utils.d.ts +3 -2
  58. package/lib/__spec_helper__/test-utils.js +20 -2
  59. package/lib/components/box/box.component.d.ts +4 -2
  60. package/lib/components/box/box.component.js +1 -0
  61. package/lib/components/button-toggle/button-toggle-icon.component.d.ts +15 -0
  62. package/lib/components/button-toggle/button-toggle-icon.component.js +19 -16
  63. package/lib/components/button-toggle/button-toggle-input.component.d.ts +25 -0
  64. package/lib/components/button-toggle/button-toggle-input.component.js +13 -25
  65. package/lib/components/button-toggle/button-toggle.component.d.ts +24 -0
  66. package/lib/components/button-toggle/button-toggle.component.js +24 -60
  67. package/lib/components/button-toggle/button-toggle.style.d.ts +26 -0
  68. package/lib/components/button-toggle/button-toggle.style.js +6 -12
  69. package/lib/components/button-toggle/index.d.ts +2 -2
  70. package/lib/components/content/content.style.js +0 -1
  71. package/lib/components/date/__internal__/utils.js +1 -1
  72. package/lib/components/dismissible-box/dismissible-box.component.js +398 -0
  73. package/lib/components/loader/index.d.ts +2 -1
  74. package/lib/components/loader/loader-square.style.d.ts +9 -1
  75. package/lib/components/loader/loader-square.style.js +4 -15
  76. package/lib/components/loader/loader.component.d.ts +9 -0
  77. package/lib/components/loader/loader.component.js +163 -28
  78. package/lib/components/loader/loader.config.d.ts +1 -1
  79. package/lib/components/loader/loader.style.d.ts +2 -0
  80. package/lib/components/loader-bar/index.d.ts +2 -1
  81. package/lib/components/loader-bar/loader-bar.component.d.ts +7 -0
  82. package/lib/components/loader-bar/loader-bar.component.js +156 -10
  83. package/lib/components/loader-bar/loader-bar.config.d.ts +1 -0
  84. package/lib/components/loader-bar/loader-bar.style.d.ts +10 -0
  85. package/lib/components/loader-bar/loader-bar.style.js +13 -27
  86. package/lib/components/pod/pod.component.js +1 -0
  87. package/lib/components/pod/pod.style.js +8 -4
  88. package/lib/components/portal/portal.d.ts +15 -12
  89. package/lib/components/portal/portal.js +3 -14
  90. package/lib/components/portrait/index.d.ts +2 -1
  91. package/lib/components/portrait/portrait-gravatar.component.d.ts +16 -0
  92. package/lib/components/portrait/portrait-gravatar.component.js +9 -24
  93. package/lib/components/portrait/portrait-initials.component.d.ts +16 -0
  94. package/lib/components/portrait/portrait-initials.component.js +22 -33
  95. package/lib/components/portrait/portrait.component.d.ts +50 -0
  96. package/lib/components/portrait/portrait.component.js +179 -75
  97. package/lib/components/portrait/portrait.config.d.ts +32 -0
  98. package/lib/components/portrait/portrait.style.d.ts +28 -0
  99. package/lib/components/portrait/portrait.style.js +9 -59
  100. package/lib/components/profile/profile.style.d.ts +2 -2
  101. package/lib/components/show-edit-pod/show-edit-pod.style.js +1 -12
  102. package/lib/style/fonts.css +19 -12
  103. package/lib/style/utils/filter-out-position-props.d.ts +3 -0
  104. package/lib/style/utils/filter-out-position-props.js +18 -0
  105. package/package.json +4 -3
  106. package/esm/components/button-toggle/button-toggle-types.d.ts +0 -1
  107. package/esm/components/button-toggle/button-toggle.d.ts +0 -45
  108. package/esm/components/loader/loader.d.ts +0 -16
  109. package/esm/components/loader-bar/loader-bar.d.ts +0 -10
  110. package/esm/components/portrait/portrait-gravatar.d.ts +0 -18
  111. package/esm/components/portrait/portrait-initials.d.ts +0 -18
  112. package/esm/components/portrait/portrait.d.ts +0 -54
  113. package/lib/components/button-toggle/button-toggle-types.d.ts +0 -1
  114. package/lib/components/button-toggle/button-toggle.d.ts +0 -45
  115. package/lib/components/loader/loader.d.ts +0 -16
  116. package/lib/components/loader-bar/loader-bar.d.ts +0 -10
  117. package/lib/components/portrait/portrait-gravatar.d.ts +0 -18
  118. package/lib/components/portrait/portrait-initials.d.ts +0 -18
  119. package/lib/components/portrait/portrait.d.ts +0 -54
@@ -32,6 +32,10 @@ interface CommonFormFieldProps extends MarginProps, ValidationProps {
32
32
  reverse?: boolean;
33
33
  /** Id of the validation icon */
34
34
  validationIconId?: string;
35
+ /**
36
+ * @private @ignore
37
+ * Flag dedicating if latest validation design should be used */
38
+ validationRedesignOptIn?: boolean;
35
39
  }
36
40
  export interface FormFieldProps extends CommonFormFieldProps, TagProps {
37
41
  /** Breakpoint for adaptive label (inline labels change to top aligned). Enables the adaptive behaviour when set */
@@ -53,7 +57,7 @@ export interface FormFieldProps extends CommonFormFieldProps, TagProps {
53
57
  useValidationIcon?: boolean;
54
58
  }
55
59
  declare const FormField: {
56
- ({ children, disabled, fieldHelp: fieldHelpContent, fieldHelpInline, error, warning, info, tooltipId, fieldHelpId, label, labelId, labelAlign, labelHelp, labelHelpIcon, labelInline, labelSpacing, labelWidth, id, reverse, isOptional, useValidationIcon, adaptiveLabelBreakpoint, isRequired, validationIconId, ...rest }: FormFieldProps): JSX.Element;
60
+ ({ children, "data-component": dataComponent, disabled, fieldHelp: fieldHelpContent, fieldHelpInline, error, warning, info, tooltipId, fieldHelpId, label, labelId, labelAlign, labelHelp, labelHelpIcon, labelInline, labelSpacing, labelWidth, id, reverse, isOptional, useValidationIcon, adaptiveLabelBreakpoint, isRequired, validationIconId, validationRedesignOptIn, ...rest }: FormFieldProps): JSX.Element;
57
61
  displayName: string;
58
62
  };
59
63
  export default FormField;
@@ -13,6 +13,7 @@ import useIsAboveBreakpoint from "../../hooks/__internal__/useIsAboveBreakpoint"
13
13
 
14
14
  const FormField = ({
15
15
  children,
16
+ "data-component": dataComponent,
16
17
  disabled,
17
18
  fieldHelp: fieldHelpContent,
18
19
  fieldHelpInline,
@@ -36,6 +37,7 @@ const FormField = ({
36
37
  adaptiveLabelBreakpoint,
37
38
  isRequired,
38
39
  validationIconId,
40
+ validationRedesignOptIn,
39
41
  ...rest
40
42
  }) => {
41
43
  const invalidValidationProp = useMemo(() => {
@@ -71,15 +73,15 @@ const FormField = ({
71
73
  labelWidth: labelWidth,
72
74
  id: fieldHelpId
73
75
  }, fieldHelpContent) : null;
74
- return /*#__PURE__*/React.createElement(FormFieldStyle, _extends({}, tagComponent(rest["data-component"], rest), marginProps), /*#__PURE__*/React.createElement(FieldLineStyle, {
76
+ return /*#__PURE__*/React.createElement(FormFieldStyle, _extends({}, tagComponent(dataComponent, rest), marginProps), /*#__PURE__*/React.createElement(FieldLineStyle, {
75
77
  inline: inlineLabel
76
78
  }, reverse && children, label && /*#__PURE__*/React.createElement(Label, {
77
79
  labelId: labelId,
78
80
  align: labelAlign,
79
81
  disabled: disabled,
80
- error: !rest.validationRedesignOptIn && error,
81
- warning: !rest.validationRedesignOptIn && warning,
82
- info: !rest.validationRedesignOptIn && info,
82
+ error: !validationRedesignOptIn && error,
83
+ warning: !validationRedesignOptIn && warning,
84
+ info: !validationRedesignOptIn && info,
83
85
  help: labelHelp,
84
86
  tooltipId: tooltipId,
85
87
  htmlFor: id,
@@ -98,7 +100,7 @@ const FormField = ({
98
100
  FormField.propTypes = {
99
101
  "adaptiveLabelBreakpoint": PropTypes.number,
100
102
  "children": PropTypes.node,
101
- "data-component": PropTypes.string.isRequired,
103
+ "data-component": PropTypes.string,
102
104
  "data-element": PropTypes.string,
103
105
  "data-role": PropTypes.string,
104
106
  "disabled": PropTypes.bool,
@@ -276,6 +278,7 @@ FormField.propTypes = {
276
278
  "tooltipId": PropTypes.string,
277
279
  "useValidationIcon": PropTypes.bool,
278
280
  "validationIconId": PropTypes.string,
281
+ "validationRedesignOptIn": PropTypes.bool,
279
282
  "warning": PropTypes.oneOfType([PropTypes.string, PropTypes.bool])
280
283
  };
281
284
  FormField.displayName = "FormField";
@@ -1,13 +1,16 @@
1
1
  interface DataProps {
2
+ /** Identifier used for testing purposes, applied to the root element of the component. */
2
3
  "data-element"?: string;
4
+ /** Identifier used for testing purposes, applied to the root element of the component. */
3
5
  "data-role"?: string;
4
6
  [restKeys: string]: any;
5
7
  }
6
8
  export interface TagProps extends DataProps {
7
- "data-component": string;
9
+ /** Identifier used for testing purposes, applied to the root element of the component. */
10
+ "data-component"?: string;
8
11
  }
9
12
  /**
10
13
  * Builds props object containing top level data tags
11
14
  */
12
- declare function tagComponent(componentName: string, props: DataProps): TagProps;
15
+ declare function tagComponent(componentName: string | undefined, props: DataProps): TagProps;
13
16
  export default tagComponent;
@@ -1,6 +1,8 @@
1
1
  declare function setupMatchMediaMock(): void;
2
2
  declare function mockMatchMedia(
3
3
  matches?: boolean
4
- ): { removeListener: jest.Mock };
4
+ ): {
5
+ removeListener: jest.Mock;
6
+ };
5
7
 
6
8
  export { setupMatchMediaMock, mockMatchMedia };
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { ReactWrapper, ShallowWrapper } from "enzyme";
3
- import { LayoutProps, FlexboxProps, BackgroundProps } from "styled-system";
3
+ import { LayoutProps, FlexboxProps, BackgroundProps, PositionProps } from "styled-system";
4
4
  import { ReactTestRendererJSON } from "react-test-renderer";
5
5
  import { mockMatchMedia } from "./mock-match-media";
6
6
  declare const toCSSCase: (str: string) => string;
@@ -47,5 +47,6 @@ declare const testStyledSystemWidth: (component: (widthProperties?: {
47
47
  declare const testStyledSystemLayout: (component: (layoutProperties?: LayoutProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined) => JSX.Element, styleContainer?: ((wrapper: ReactWrapper) => ReactWrapper) | undefined) => void;
48
48
  declare const testStyledSystemFlexBox: (component: (flexboxProperties?: FlexboxProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined) => JSX.Element, styleContainer?: ((wrapper: ReactWrapper) => ReactWrapper) | undefined) => void;
49
49
  declare const testStyledSystemBackground: (component: (backgroundProperties?: BackgroundProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>, import("csstype").Property.Background<import("styled-system").TLengthStyledSystem>> | undefined) => JSX.Element, styleContainer?: ((wrapper: ReactWrapper) => ReactWrapper) | undefined) => void;
50
+ declare const testStyledSystemPosition: (component: (positionProperties?: PositionProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined) => JSX.Element, styleContainer?: ((wrapper: ReactWrapper) => ReactWrapper) | undefined) => void;
50
51
  declare const expectConsoleOutput: (message: string, type?: "warn" | "error") => () => void;
51
- export { assertStyleMatch, toCSSCase, hoverList, selectedItemOf, childrenFrom, makeArrayKeys, keyboard, assertKeyboardTraversal, assertHoverTraversal, listFrom, click, simulate, carbonThemesJestTable, mockMatchMedia, testStyledSystemSpacing, testStyledSystemMargin, testStyledSystemPadding, testStyledSystemColor, testStyledSystemWidth, testStyledSystemLayout, testStyledSystemFlexBox, testStyledSystemBackground, expectConsoleOutput, };
52
+ export { assertStyleMatch, toCSSCase, hoverList, selectedItemOf, childrenFrom, makeArrayKeys, keyboard, assertKeyboardTraversal, assertHoverTraversal, listFrom, click, simulate, carbonThemesJestTable, mockMatchMedia, testStyledSystemSpacing, testStyledSystemMargin, testStyledSystemPadding, testStyledSystemColor, testStyledSystemWidth, testStyledSystemLayout, testStyledSystemFlexBox, testStyledSystemBackground, testStyledSystemPosition, expectConsoleOutput, };
@@ -109,6 +109,7 @@ const widthProps = ["width", "width", "200px"];
109
109
  const layoutProps = [widthProps, ["height", "height", "200px"], ["minWidth", "min-width", "120px"], ["maxWidth", "max-width", "120px"], ["minHeight", "min-height", "120px"], ["maxHeight", "max-height", "120px"], ["size", "width", "120px"], ["size", "height", "120px"], ["display", "display", "inline-block"], ["verticalAlign", "vertical-align", "baseline"], ["overflow", "overflow", "hidden"], ["overflowX", "overflow-x", "hidden"], ["overflowY", "overflow-y", "hidden"]];
110
110
  const flexBoxProps = [["alignItems", "alignItems", "center"], ["alignContent", "alignContent", "center"], ["justifyItems", "justifyItems", "center"], ["justifyContent", "justifyContent", "center"], ["flexWrap", "flexWrap", "wrap"], ["flexDirection", "flexDirection", "row-reverse"], ["flex", "flex", "1"], ["flexGrow", "flexGrow", "1"], ["flexShrink", "flexShrink", "1"], ["flexBasis", "flexBasis", "100px"], ["justifySelf", "justifySelf", "center"], ["alignSelf", "alignSelf", "center"], ["order", "order", "1"]];
111
111
  const backgroundProps = [["background", "background", "lightblue url('foo.jpg') no-repeat fixed center"], ["backgroundImage", "background-image", "url(foo.jpg)"], ["backgroundSize", "background-size", "center"], ["backgroundRepeat", "background-repeat", "no-repeat"]];
112
+ const positionProps = [["top", "0px"], ["bottom", "0px"], ["right", "0px"], ["left", "0px"], ["position", "fixed"], ["position", "sticky"], ["position", "absolute"], ["position", "static"], ["position", "relative"]];
112
113
  export const getDefaultValue = value => {
113
114
  const spaceArrayLength = space.length - 1;
114
115
  if (value === undefined) return value;
@@ -302,6 +303,21 @@ const testStyledSystemBackground = (component, styleContainer) => {
302
303
  }, styleContainer ? styleContainer(wrapper) : wrapper);
303
304
  });
304
305
  });
306
+ };
307
+
308
+ const testStyledSystemPosition = (component, styleContainer) => {
309
+ describe.each(positionProps)('when a prop is specified using the "%s" styled system props', (styledSystemProp, value) => {
310
+ it(`then ${styledSystemProp} should have been set correctly`, () => {
311
+ const props = {
312
+ [styledSystemProp]: value
313
+ };
314
+ const wrapper = mount(component({ ...props
315
+ }));
316
+ assertStyleMatch({
317
+ [styledSystemProp]: value
318
+ }, styleContainer ? styleContainer(wrapper) : wrapper);
319
+ });
320
+ });
305
321
  }; // this util will catch that a console output occurred without polluting the output when running the unit tests
306
322
 
307
323
 
@@ -335,4 +351,4 @@ const expectConsoleOutput = (message, type = "error") => {
335
351
  };
336
352
  };
337
353
 
338
- export { assertStyleMatch, toCSSCase, hoverList, selectedItemOf, childrenFrom, makeArrayKeys, keyboard, assertKeyboardTraversal, assertHoverTraversal, listFrom, click, simulate, carbonThemesJestTable, mockMatchMedia, testStyledSystemSpacing, testStyledSystemMargin, testStyledSystemPadding, testStyledSystemColor, testStyledSystemWidth, testStyledSystemLayout, testStyledSystemFlexBox, testStyledSystemBackground, expectConsoleOutput };
354
+ export { assertStyleMatch, toCSSCase, hoverList, selectedItemOf, childrenFrom, makeArrayKeys, keyboard, assertKeyboardTraversal, assertHoverTraversal, listFrom, click, simulate, carbonThemesJestTable, mockMatchMedia, testStyledSystemSpacing, testStyledSystemMargin, testStyledSystemPadding, testStyledSystemColor, testStyledSystemWidth, testStyledSystemLayout, testStyledSystemFlexBox, testStyledSystemBackground, testStyledSystemPosition, expectConsoleOutput };
@@ -1,9 +1,9 @@
1
1
  import React from "react";
2
- import { SpaceProps, LayoutProps, FlexboxProps, ColorProps } from "styled-system";
2
+ import { SpaceProps, LayoutProps, FlexboxProps, ColorProps, PositionProps } from "styled-system";
3
3
  export declare type OverflowWrap = "break-word" | "anywhere";
4
4
  export declare type ScrollVariant = "light" | "dark";
5
5
  export declare type BoxSizing = "content-box" | "border-box";
6
- export interface BoxProps extends SpaceProps, LayoutProps, FlexboxProps, ColorProps {
6
+ export interface BoxProps extends SpaceProps, LayoutProps, FlexboxProps, ColorProps, Omit<PositionProps, "zIndex"> {
7
7
  as?: keyof JSX.IntrinsicElements | React.ComponentType<any>;
8
8
  /** String to set Box content break strategy. Note "anywhere" is not supported in Safari */
9
9
  overflowWrap?: OverflowWrap;
@@ -11,6 +11,8 @@ export interface BoxProps extends SpaceProps, LayoutProps, FlexboxProps, ColorPr
11
11
  scrollVariant?: ScrollVariant;
12
12
  /** set the box-sizing attribute of the Box component */
13
13
  boxSizing?: BoxSizing;
14
+ /** Allows a tabindex to be specified */
15
+ tabIndex?: number | string;
14
16
  }
15
17
  declare const Box: import("styled-components").StyledComponent<"div", any, BoxProps, never>;
16
18
  export default Box;
@@ -1,5 +1,5 @@
1
1
  import styled, { css } from "styled-components";
2
- import { space, layout, flexbox } from "styled-system";
2
+ import { space, layout, flexbox, position } from "styled-system";
3
3
  import BaseTheme from "../../style/themes/base";
4
4
  import styledColor from "../../style/utils/color";
5
5
  import boxConfig from "./box.config";
@@ -7,6 +7,7 @@ const Box = styled.div`
7
7
  ${space}
8
8
  ${layout}
9
9
  ${flexbox}
10
+ ${position}
10
11
  ${({
11
12
  color,
12
13
  bg,
@@ -0,0 +1,15 @@
1
+ /// <reference types="react" />
2
+ import { StyledButtonToggleIconProps } from "./button-toggle.style";
3
+ import { IconType } from "../icon";
4
+ export interface ButtonToggleIconProps extends StyledButtonToggleIconProps {
5
+ /**
6
+ * <a href="https://brand.sage.com/d/NdbrveWvNheA/foundations#/icons/icons" target="_blank">List of supported icons</a>
7
+ *
8
+ * buttonIcon to render.
9
+ */
10
+ buttonIcon: IconType;
11
+ /** Sets the icon in the disabled state */
12
+ disabled?: boolean;
13
+ }
14
+ declare const ButtonToggleIcon: ({ buttonIcon, buttonIconSize, disabled, hasContent, }: ButtonToggleIconProps) => JSX.Element;
15
+ export default ButtonToggleIcon;
@@ -1,25 +1,28 @@
1
- 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); }
2
-
3
1
  import React from "react";
4
2
  import PropTypes from "prop-types";
5
3
  import { StyledButtonToggleIcon } from "./button-toggle.style";
6
4
  import Icon from "../icon";
7
5
 
8
- const ButtonToggleIcon = props => /*#__PURE__*/React.createElement(StyledButtonToggleIcon, props, /*#__PURE__*/React.createElement(Icon, _extends({
9
- type: props.buttonIcon,
10
- fontSize: props.buttonIconSize,
11
- bgSize: "extra-small"
12
- }, props)));
6
+ const ButtonToggleIcon = ({
7
+ buttonIcon,
8
+ buttonIconSize,
9
+ disabled,
10
+ hasContent
11
+ }) => /*#__PURE__*/React.createElement(StyledButtonToggleIcon, {
12
+ buttonIconSize: buttonIconSize,
13
+ hasContent: hasContent
14
+ }, /*#__PURE__*/React.createElement(Icon, {
15
+ "aria-hidden": true,
16
+ type: buttonIcon,
17
+ fontSize: buttonIconSize,
18
+ bgSize: "extra-small",
19
+ disabled: disabled
20
+ }));
13
21
 
14
22
  ButtonToggleIcon.propTypes = {
15
- /**
16
- * <a href="https://brand.sage.com/d/NdbrveWvNheA/foundations#/icons/icons" target="_blank">List of supported icons</a>
17
- *
18
- * buttonIcon to render.
19
- */
20
- buttonIcon: PropTypes.string,
21
-
22
- /** Sets the size of the buttonIcon (eg. large) */
23
- buttonIconSize: PropTypes.oneOf(["small", "large"])
23
+ "buttonIcon": PropTypes.oneOf(["add", "admin", "alert", "analysis", "arrow_down", "arrow_left_boxed", "arrow_left_right_small", "arrow_left_small", "arrow_left", "arrow_right_small", "arrow_right", "arrow_up", "arrow", "attach", "bank", "basket_with_squares", "basket", "bin", "block_arrow_right", "blocked_square", "blocked", "bold", "boxed_shapes", "bulk_destroy", "bullet_list_dotted", "bullet_list_numbers", "bullet_list", "business", "calendar_today", "calendar", "call", "camera", "card_view", "caret_down", "caret_large_down", "caret_large_left", "caret_large_right", "caret_large_up", "caret_left", "caret_right", "caret_up", "cart", "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", "contacts", "copy", "create", "credit_card_slash", "credit_card", "cross_circle", "cross", "csv", "delete", "delivery", "disconnect", "disputed", "document_right_align", "document_tick", "document_vertical_lines", "download", "draft", "drag_vertical", "drag", "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", "gift", "go", "graph", "grid", "help", "hide", "home", "image", "in_progress", "in_transit", "individual", "info", "italic", "key", "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", "pause_circle", "pause", "pdf", "people_switch", "people", "person_info", "person_tick", "person", "phone", "piggy_bank", "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", "three_boxes", "tick_circle", "tick", "true_tick", "undo", "unlocked", "upload", "uploaded", "video", "view", "warning"]).isRequired,
24
+ "buttonIconSize": PropTypes.oneOf(["large", "small"]),
25
+ "disabled": PropTypes.bool,
26
+ "hasContent": PropTypes.bool
24
27
  };
25
28
  export default ButtonToggleIcon;
@@ -0,0 +1,25 @@
1
+ import React from "react";
2
+ export interface ButtonToggleInputProps {
3
+ /** Prop to specify the aria-label of the component */
4
+ "aria-label"?: string;
5
+ /** Prop to specify the aria-labelledby property of the component */
6
+ "aria-labelledby"?: string;
7
+ /** Set the checked value of the radio button */
8
+ checked?: boolean;
9
+ /** Disable all user interaction. */
10
+ disabled?: boolean;
11
+ /** Unique ID attribute for input */
12
+ guid?: string;
13
+ /** Name used on the hidden radio button. */
14
+ name?: string;
15
+ /** Callback triggered by blur event on the input. */
16
+ onBlur?: (ev: React.FocusEvent<HTMLInputElement>) => void;
17
+ /** Callback triggered by change event on the input. */
18
+ onChange?: (ev: React.ChangeEvent<HTMLInputElement>) => void;
19
+ /** Callback triggered by focus event on the input. */
20
+ onFocus?: (ev: React.FocusEvent<HTMLInputElement>) => void;
21
+ /** Value for the input */
22
+ value?: string;
23
+ }
24
+ declare const ButtonToggleInput: React.ForwardRefExoticComponent<ButtonToggleInputProps & React.RefAttributes<HTMLInputElement>>;
25
+ export default ButtonToggleInput;
@@ -15,7 +15,7 @@ const ButtonToggleInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
15
15
  props.onBlur(ev);
16
16
  }
17
17
 
18
- if (onBlur) onBlur(ev);
18
+ if (onBlur) onBlur();
19
19
  };
20
20
 
21
21
  const handleFocus = ev => {
@@ -23,7 +23,7 @@ const ButtonToggleInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
23
23
  props.onFocus(ev);
24
24
  }
25
25
 
26
- if (onFocus) onFocus(ev);
26
+ if (onFocus) onFocus();
27
27
  };
28
28
 
29
29
  return /*#__PURE__*/React.createElement(StyledButtonToggleInput, _extends({}, props, {
@@ -35,28 +35,16 @@ const ButtonToggleInput = /*#__PURE__*/React.forwardRef((props, forwardRef) => {
35
35
  }));
36
36
  });
37
37
  ButtonToggleInput.propTypes = {
38
- /** Set the checked value of the radio button */
39
- checked: PropTypes.bool,
40
-
41
- /** Name used on the hidden radio button. */
42
- name: PropTypes.string,
43
-
44
- /** Disable all user interaction. */
45
- disabled: PropTypes.bool,
46
-
47
- /** Unique ID attribute for input */
48
- guid: PropTypes.string,
49
-
50
- /** Value for the input */
51
- value: PropTypes.string,
52
-
53
- /** Callback triggered by change event on the input. */
54
- onChange: PropTypes.func,
55
-
56
- /** Callback triggered by blur event on the input. */
57
- onBlur: PropTypes.func,
58
-
59
- /** Callback triggered by focus event on the input. */
60
- onFocus: PropTypes.func
38
+ "aria-label": PropTypes.string,
39
+ "aria-labelledby": PropTypes.string,
40
+ "checked": PropTypes.bool,
41
+ "disabled": PropTypes.bool,
42
+ "guid": PropTypes.string,
43
+ "name": PropTypes.string,
44
+ "onBlur": PropTypes.func,
45
+ "onChange": PropTypes.func,
46
+ "onFocus": PropTypes.func,
47
+ "value": PropTypes.string
61
48
  };
49
+ ButtonToggleInput.displayName = "ButtonToggleInput";
62
50
  export default ButtonToggleInput;
@@ -0,0 +1,24 @@
1
+ import React from "react";
2
+ import { StyledButtonToggleLabelProps } from "./button-toggle.style";
3
+ import { ButtonToggleInputProps } from "./button-toggle-input.component";
4
+ export interface ButtonToggleProps extends ButtonToggleInputProps, Partial<StyledButtonToggleLabelProps> {
5
+ /** A required prop. This is the button text. */
6
+ children: React.ReactNode;
7
+ /** Identifier used for testing purposes, applied to the root element of the component. */
8
+ "data-component"?: string;
9
+ /** Identifier used for testing purposes, applied to the root element of the component. */
10
+ "data-element"?: string;
11
+ /** Identifier used for testing purposes, applied to the root element of the component. */
12
+ "data-role"?: string;
13
+ /** Set the default value of the Group if component is meant to be used as uncontrolled. */
14
+ defaultChecked?: boolean;
15
+ /** Remove spacing from between buttons. */
16
+ grouped?: boolean;
17
+ /** Callback triggered by click event on the input. */
18
+ onClick?: (ev: React.MouseEvent<HTMLInputElement>) => void;
19
+ }
20
+ export declare const ButtonToggle: {
21
+ (props: ButtonToggleProps): JSX.Element;
22
+ displayName: string;
23
+ };
24
+ export default ButtonToggle;
@@ -11,7 +11,7 @@ const ButtonToggle = props => {
11
11
  "aria-label": ariaLabel,
12
12
  "aria-labelledby": ariaLabelledBy,
13
13
  buttonIcon,
14
- buttonIconSize,
14
+ buttonIconSize = "small",
15
15
  checked,
16
16
  children,
17
17
  "data-component": dataComponent,
@@ -23,7 +23,7 @@ const ButtonToggle = props => {
23
23
  onBlur,
24
24
  onChange,
25
25
  onFocus,
26
- size,
26
+ size = "medium",
27
27
  value
28
28
  } = props;
29
29
  const {
@@ -36,16 +36,17 @@ const ButtonToggle = props => {
36
36
 
37
37
  if (buttonIcon) {
38
38
  icon = /*#__PURE__*/React.createElement(ButtonToggleIcon, {
39
- "aria-hidden": true,
40
39
  buttonIcon: buttonIcon,
41
40
  buttonIconSize: buttonIconSize,
42
- hasNoContent: !children,
43
- disabled: disabled
41
+ disabled: disabled,
42
+ hasContent: !!children
44
43
  });
45
44
  }
46
45
 
47
46
  function handleClick() {
48
- inputRef.current.focus();
47
+ var _inputRef$current;
48
+
49
+ (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
49
50
  }
50
51
 
51
52
  return /*#__PURE__*/React.createElement(StyledButtonToggle, {
@@ -79,64 +80,27 @@ const ButtonToggle = props => {
79
80
  };
80
81
 
81
82
  ButtonToggle.propTypes = {
82
- /** Prop to specify the aria-label of the component */
83
83
  "aria-label": PropTypes.string,
84
-
85
- /** Prop to specify the aria-labelledby property of the component */
86
84
  "aria-labelledby": PropTypes.string,
87
-
88
- /** Set the checked value of the radio button */
89
- checked: PropTypes.bool,
90
-
91
- /** Identifier used for testing purposes, applied to the root element of the component. */
85
+ "buttonIcon": PropTypes.oneOf(["add", "admin", "alert", "analysis", "arrow_down", "arrow_left_boxed", "arrow_left_right_small", "arrow_left_small", "arrow_left", "arrow_right_small", "arrow_right", "arrow_up", "arrow", "attach", "bank", "basket_with_squares", "basket", "bin", "block_arrow_right", "blocked_square", "blocked", "bold", "boxed_shapes", "bulk_destroy", "bullet_list_dotted", "bullet_list_numbers", "bullet_list", "business", "calendar_today", "calendar", "call", "camera", "card_view", "caret_down", "caret_large_down", "caret_large_left", "caret_large_right", "caret_large_up", "caret_left", "caret_right", "caret_up", "cart", "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", "contacts", "copy", "create", "credit_card_slash", "credit_card", "cross_circle", "cross", "csv", "delete", "delivery", "disconnect", "disputed", "document_right_align", "document_tick", "document_vertical_lines", "download", "draft", "drag_vertical", "drag", "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", "gift", "go", "graph", "grid", "help", "hide", "home", "image", "in_progress", "in_transit", "individual", "info", "italic", "key", "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", "pause_circle", "pause", "pdf", "people_switch", "people", "person_info", "person_tick", "person", "phone", "piggy_bank", "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", "three_boxes", "tick_circle", "tick", "true_tick", "undo", "unlocked", "upload", "uploaded", "video", "view", "warning"]),
86
+ "buttonIconSize": PropTypes.oneOf(["large", "small"]),
87
+ "checked": PropTypes.bool,
88
+ "children": PropTypes.node,
92
89
  "data-component": PropTypes.string,
93
-
94
- /** Identifier used for testing purposes, applied to the root element of the component. */
95
90
  "data-element": PropTypes.string,
96
-
97
- /** Identifier used for testing purposes, applied to the root element of the component. */
98
91
  "data-role": PropTypes.string,
99
-
100
- /** Name used on the hidden radio button. */
101
- name: PropTypes.string,
102
-
103
- /** Callback triggered by change event on the input. */
104
- onChange: PropTypes.func,
105
-
106
- /** Callback triggered by focus event on the input. */
107
- onFocus: PropTypes.func,
108
-
109
- /** Callback triggered by blur event on the input. */
110
- onBlur: PropTypes.func,
111
-
112
- /** ButtonToggle size */
113
- size: PropTypes.oneOf(["small", "medium", "large"]),
114
-
115
- /** buttonIcon to render. */
116
- buttonIcon: PropTypes.string,
117
-
118
- /** Sets the size of the buttonIcon (eg. large) */
119
- buttonIconSize: PropTypes.oneOf(["small", "large"]),
120
-
121
- /** Remove spacing from between buttons. */
122
- grouped: PropTypes.bool,
123
-
124
- /** Disable all user interaction. */
125
- disabled: PropTypes.bool,
126
-
127
- /** A required prop. This is the button text. */
128
- children: PropTypes.node.isRequired,
129
-
130
- /** Set the default value of the Group if component is meant to be used as uncontrolled. */
131
- defaultChecked: PropTypes.bool,
132
- // eslint-disable-line react/no-unused-prop-types
133
-
134
- /** Value for the input */
135
- value: PropTypes.string
136
- };
137
- ButtonToggle.defaultProps = {
138
- size: "medium",
139
- buttonIconSize: "small"
92
+ "defaultChecked": PropTypes.bool,
93
+ "disabled": PropTypes.bool,
94
+ "grouped": PropTypes.bool,
95
+ "guid": PropTypes.string,
96
+ "name": PropTypes.string,
97
+ "onBlur": PropTypes.func,
98
+ "onChange": PropTypes.func,
99
+ "onClick": PropTypes.func,
100
+ "onFocus": PropTypes.func,
101
+ "size": PropTypes.oneOf(["large", "medium", "small"]),
102
+ "value": PropTypes.string
140
103
  };
104
+ export { ButtonToggle };
141
105
  ButtonToggle.displayName = "ButtonToggle";
142
106
  export default ButtonToggle;
@@ -0,0 +1,26 @@
1
+ import { IconType } from "../icon";
2
+ export declare type ButtonToggleIconSizes = "small" | "large";
3
+ declare const StyledButtonToggleContentWrapper: import("styled-components").StyledComponent<"div", any, {}, never>;
4
+ export interface StyledButtonToggleLabelProps {
5
+ /** buttonIcon to render. */
6
+ buttonIcon?: IconType;
7
+ /** Sets the size of the buttonIcon (eg. large) */
8
+ buttonIconSize?: ButtonToggleIconSizes;
9
+ /** Disable all user interaction. */
10
+ disabled?: boolean;
11
+ /** ButtonToggle size */
12
+ size: "small" | "medium" | "large";
13
+ }
14
+ declare const StyledButtonToggleLabel: import("styled-components").StyledComponent<"label", any, StyledButtonToggleLabelProps, never>;
15
+ export interface StyledButtonToggleIconProps {
16
+ /** Sets the size of the buttonIcon (eg. large) */
17
+ buttonIconSize?: ButtonToggleIconSizes;
18
+ hasContent?: boolean;
19
+ }
20
+ declare const StyledButtonToggleIcon: import("styled-components").StyledComponent<"div", any, StyledButtonToggleIconProps, never>;
21
+ export interface StyledButtonToggleProps {
22
+ grouped?: boolean;
23
+ }
24
+ declare const StyledButtonToggle: import("styled-components").StyledComponent<"div", any, StyledButtonToggleProps, never>;
25
+ declare const StyledButtonToggleInput: import("styled-components").StyledComponent<"input", any, {}, never>;
26
+ export { StyledButtonToggle, StyledButtonToggleLabel, StyledButtonToggleIcon, StyledButtonToggleInput, StyledButtonToggleContentWrapper, };
@@ -1,4 +1,3 @@
1
- import PropTypes from "prop-types";
2
1
  import styled, { css } from "styled-components";
3
2
  import StyledIcon from "../icon/icon.style";
4
3
  const heightConfig = {
@@ -107,10 +106,9 @@ const iconFontSizes = {
107
106
  };
108
107
  const StyledButtonToggleIcon = styled.div`
109
108
  ${({
110
- hasNoContent
111
- }) => hasNoContent ? "" : css`
112
- margin-right: 8px;
113
- `}
109
+ hasContent
110
+ }) => hasContent && `margin-right: 8px;`}
111
+
114
112
  ${({
115
113
  buttonIconSize
116
114
  }) => buttonIconSize === "large" && css`
@@ -155,7 +153,4 @@ const StyledButtonToggleInput = styled.input`
155
153
  height: 0;
156
154
  opacity: 0;
157
155
  `;
158
- StyledButtonToggleIcon.propTypes = {
159
- buttonIconSize: PropTypes.string
160
- };
161
156
  export { StyledButtonToggle, StyledButtonToggleLabel, StyledButtonToggleIcon, StyledButtonToggleInput, StyledButtonToggleContentWrapper };
@@ -1,2 +1,2 @@
1
- export { default } from "./button-toggle";
2
- export { ButtonToggleProps } from "./button-toggle";
1
+ export { default } from "./button-toggle.component";
2
+ export type { ButtonToggleProps } from "./button-toggle.component";
@@ -33,7 +33,6 @@ const StyledContentTitle = styled.div`
33
33
  return css`
34
34
  display: ${inline ? "inline-block" : "block"};
35
35
  font-weight: bold;
36
- color: var(--colorsUtilityYin090);
37
36
  width: ${titleWidth && `calc(${titleWidth}% - 30px)`};
38
37
  text-align: ${!inline && align};
39
38
 
@@ -1,6 +1,6 @@
1
1
  import { format, formatISO, isMatch, parse, parseISO } from "date-fns/fp";
2
2
  export function parseDate(formatString, valueString) {
3
- if (!valueString || !formatString) return "";
3
+ if (!valueString || !formatString) return null;
4
4
  return parse(new Date(), formatString, valueString);
5
5
  }
6
6
  export function formatToISO(formatString, valueString) {