carbon-react 147.5.0 → 147.7.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.
@@ -85,6 +85,7 @@ export const Confirm = ({
85
85
  "data-element": "confirm",
86
86
  ...confirmButtonDataProps
87
87
  })), isLoadingConfirm ? /*#__PURE__*/React.createElement(Loader, {
88
+ "data-role": "confirm-loader",
88
89
  isInsideButton: true,
89
90
  isActive: true
90
91
  }) : confirmLabel || l.confirm.yes());
@@ -1,5 +1,5 @@
1
1
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
- import React, { useState, useEffect } from "react";
2
+ import React, { useState, useEffect, useContext } from "react";
3
3
  import PropTypes from "prop-types";
4
4
  import tagComponent from "../../__internal__/utils/helpers/tags/tags";
5
5
  import { FieldsetStyle, StyledLegend } from "./fieldset.style";
@@ -15,6 +15,9 @@ export const Fieldset = ({
15
15
  }) => {
16
16
  const [ref, setRef] = useState(null);
17
17
  const marginProps = useFormSpacing(rest);
18
+ const {
19
+ validationRedesignOptIn
20
+ } = useContext(NewValidationContext);
18
21
  useEffect(() => {
19
22
  if (ref && required) {
20
23
  Array.from(ref.querySelectorAll("input") || /* istanbul ignore next */[]).forEach(el => {
@@ -22,19 +25,16 @@ export const Fieldset = ({
22
25
  });
23
26
  }
24
27
  }, [ref, required]);
25
- return /*#__PURE__*/React.createElement(NewValidationContext.Provider, {
26
- value: {
27
- validationRedesignOptIn: false
28
- }
29
- }, /*#__PURE__*/React.createElement(FieldsetStyle, _extends({
30
- ref: setRef
28
+ return /*#__PURE__*/React.createElement(FieldsetStyle, _extends({
29
+ ref: setRef,
30
+ newValidation: validationRedesignOptIn
31
31
  }, tagComponent("fieldset", rest), rest, marginProps), legend && /*#__PURE__*/React.createElement(StyledLegend, {
32
32
  "data-element": "legend",
33
33
  isRequired: required,
34
34
  isOptional: isOptional
35
- }, legend), /*#__PURE__*/React.createElement(FormSpacingProvider, {
35
+ }, legend), validationRedesignOptIn ? children : /*#__PURE__*/React.createElement(FormSpacingProvider, {
36
36
  marginBottom: undefined
37
- }, children)));
37
+ }, children));
38
38
  };
39
39
  Fieldset.displayName = "Fieldset";
40
40
  export default Fieldset;
@@ -1,9 +1,12 @@
1
1
  export interface StyledFieldsetProps {
2
+ newValidation?: boolean;
3
+ }
4
+ declare const FieldsetStyle: import("styled-components").StyledComponent<"fieldset", any, StyledFieldsetProps, never>;
5
+ export interface StyledLegendProps {
2
6
  /** Flag to configure fields as mandatory. */
3
7
  isRequired?: boolean;
4
8
  /** Flag to configure fields as optional. */
5
9
  isOptional?: boolean;
6
10
  }
7
- declare const FieldsetStyle: import("styled-components").StyledComponent<"fieldset", any, {}, never>;
8
- declare const StyledLegend: import("styled-components").StyledComponent<"legend", any, StyledFieldsetProps, never>;
11
+ declare const StyledLegend: import("styled-components").StyledComponent<"legend", any, StyledLegendProps, never>;
9
12
  export { FieldsetStyle, StyledLegend };
@@ -9,15 +9,19 @@ const FieldsetStyle = styled.fieldset`
9
9
  border: none;
10
10
  padding: 0;
11
11
 
12
- &&&& ${FormFieldStyle} {
13
- margin-top: 0;
14
- margin-bottom: -1px;
15
- }
12
+ ${({
13
+ newValidation
14
+ }) => !newValidation && css`
15
+ &&&& ${FormFieldStyle} {
16
+ margin-top: 0;
17
+ margin-bottom: -1px;
18
+ }
16
19
 
17
- & ${CheckboxStyle} {
18
- padding-top: 8px;
19
- padding-bottom: 8px;
20
- }
20
+ & ${CheckboxStyle} {
21
+ padding-top: 8px;
22
+ padding-bottom: 8px;
23
+ }
24
+ `}
21
25
  `;
22
26
  FieldsetStyle.defaultProps = {
23
27
  theme: baseTheme
@@ -25,12 +29,11 @@ FieldsetStyle.defaultProps = {
25
29
  const StyledLegend = styled.legend`
26
30
  display: flex;
27
31
  align-items: center;
28
- margin-bottom: 32px;
29
- font-size: 20px;
32
+ margin-bottom: var(--spacing250);
33
+ font-size: var(--fontSizes400);
30
34
  font-weight: var(--fontWeights500);
31
35
  color: var(--colorsUtilityYin090);
32
36
  line-height: 24px;
33
- margin-right: 4px;
34
37
 
35
38
  ${({
36
39
  isRequired
@@ -5,8 +5,16 @@ import { StyledLoaderSquareProps } from "./loader-square.style";
5
5
  export interface LoaderProps extends Omit<StyledLoaderSquareProps, "backgroundColor">, MarginProps, TagProps {
6
6
  /** Toggle between the default variant and gradient variant */
7
7
  variant?: string;
8
- /** Specify a custom accessible name for the Loader component */
8
+ /**
9
+ * Specify a custom accessible name for the Loader component
10
+ * @deprecated - use `loaderLabel` prop instead
11
+ */
9
12
  "aria-label"?: string;
13
+ /**
14
+ * Specify a custom accessible label for the Loader.
15
+ * This label is visible to users who have enabled the reduce motion setting in their operating system. It is also available to assistive technologies.
16
+ */
17
+ loaderLabel?: string;
10
18
  }
11
- export declare const Loader: ({ variant, "aria-label": ariaLabel, size, isInsideButton, isActive, ...rest }: LoaderProps) => React.JSX.Element;
19
+ export declare const Loader: ({ variant, "aria-label": ariaLabel, size, isInsideButton, isActive, loaderLabel, ...rest }: LoaderProps) => React.JSX.Element;
12
20
  export default Loader;
@@ -7,14 +7,22 @@ import useLocale from "../../hooks/__internal__/useLocale";
7
7
  import tagComponent from "../../__internal__/utils/helpers/tags/tags";
8
8
  import StyledLoader from "./loader.style";
9
9
  import StyledLoaderSquare from "./loader-square.style";
10
+ import Typography from "../typography";
11
+ import Logger from "../../__internal__/utils/logger";
12
+ let deprecateAriaLabelWarnTriggered = false;
10
13
  export const Loader = ({
11
14
  variant = "default",
12
15
  "aria-label": ariaLabel,
13
16
  size = "medium",
14
17
  isInsideButton,
15
18
  isActive = true,
19
+ loaderLabel,
16
20
  ...rest
17
21
  }) => {
22
+ if (!deprecateAriaLabelWarnTriggered && ariaLabel) {
23
+ deprecateAriaLabelWarnTriggered = true;
24
+ Logger.deprecate("The aria-label prop in Loader is deprecated and will soon be removed, please use the `loaderLabel` prop instead to provide an accessible label.");
25
+ }
18
26
  const l = useLocale();
19
27
  const reduceMotion = !useMediaQuery("screen and (prefers-reduced-motion: no-preference)");
20
28
  const loaderSquareProps = {
@@ -25,13 +33,14 @@ export const Loader = ({
25
33
  };
26
34
 
27
35
  // FE-6368 has been raised for the below, changed hex values for design tokens (when added)
28
- return /*#__PURE__*/React.createElement(StyledLoader, _extends({
29
- "aria-label": ariaLabel || l.loader.loading(),
30
- role: "progressbar"
31
- }, tagComponent("loader", rest), filterStyledSystemMarginProps(rest)), reduceMotion ? l.loader.loading() : /*#__PURE__*/React.createElement(React.Fragment, null, ["#13A038", "#0092DB", "#8F49FE"].map(color => /*#__PURE__*/React.createElement(StyledLoaderSquare, _extends({
36
+ return /*#__PURE__*/React.createElement(StyledLoader, _extends({}, tagComponent("loader", rest), filterStyledSystemMarginProps(rest)), reduceMotion ? loaderLabel || ariaLabel || l.loader.loading() : /*#__PURE__*/React.createElement(React.Fragment, null, ["#13A038", "#0092DB", "#8F49FE"].map(color => /*#__PURE__*/React.createElement(StyledLoaderSquare, _extends({
32
37
  "data-role": "loader-square",
33
38
  key: color,
34
39
  backgroundColor: variant === "gradient" ? /* istanbul ignore next */color : "var(--colorsActionMajor500)"
35
- }, loaderSquareProps)))));
40
+ }, loaderSquareProps))), /*#__PURE__*/React.createElement(Typography, {
41
+ "data-role": "hidden-label",
42
+ variant: "span",
43
+ screenReaderOnly: true
44
+ }, loaderLabel || ariaLabel || l.loader.loading())));
36
45
  };
37
46
  export default Loader;
@@ -405,7 +405,9 @@ const SelectList = /*#__PURE__*/React.forwardRef(({
405
405
  }, [setPlacement]);
406
406
  const loader = isLoading ? /*#__PURE__*/React.createElement(StyledSelectLoaderContainer, {
407
407
  key: "loader"
408
- }, /*#__PURE__*/React.createElement(Loader, null)) : undefined;
408
+ }, /*#__PURE__*/React.createElement(Loader, {
409
+ "data-role": "select-list-loader"
410
+ })) : undefined;
409
411
  let selectListContent = renderedChildren;
410
412
  const listBoxProps = {
411
413
  role: "listbox",
@@ -49,7 +49,9 @@ const SwitchSlider = ({
49
49
  };
50
50
  const sliderContent = /*#__PURE__*/React.createElement(SwitchSliderPanel, _extends({
51
51
  "data-role": "slider-panel"
52
- }, sliderPanelStyleProps), loading ? /*#__PURE__*/React.createElement(Loader, loaderProps) : panelContent);
52
+ }, sliderPanelStyleProps), loading ? /*#__PURE__*/React.createElement(Loader, _extends({
53
+ "data-role": "switch-slider-loader"
54
+ }, loaderProps)) : panelContent);
53
55
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(HiddenContent, {
54
56
  size: size,
55
57
  "aria-hidden": true
@@ -94,6 +94,7 @@ const Confirm = ({
94
94
  "data-element": "confirm",
95
95
  ...confirmButtonDataProps
96
96
  })), isLoadingConfirm ? /*#__PURE__*/_react.default.createElement(_loader.default, {
97
+ "data-role": "confirm-loader",
97
98
  isInsideButton: true,
98
99
  isActive: true
99
100
  }) : confirmLabel || l.confirm.yes());
@@ -24,6 +24,9 @@ const Fieldset = ({
24
24
  }) => {
25
25
  const [ref, setRef] = (0, _react.useState)(null);
26
26
  const marginProps = (0, _useFormSpacing.default)(rest);
27
+ const {
28
+ validationRedesignOptIn
29
+ } = (0, _react.useContext)(_newValidation.default);
27
30
  (0, _react.useEffect)(() => {
28
31
  if (ref && required) {
29
32
  Array.from(ref.querySelectorAll("input") || /* istanbul ignore next */[]).forEach(el => {
@@ -31,19 +34,16 @@ const Fieldset = ({
31
34
  });
32
35
  }
33
36
  }, [ref, required]);
34
- return /*#__PURE__*/_react.default.createElement(_newValidation.default.Provider, {
35
- value: {
36
- validationRedesignOptIn: false
37
- }
38
- }, /*#__PURE__*/_react.default.createElement(_fieldset.FieldsetStyle, _extends({
39
- ref: setRef
37
+ return /*#__PURE__*/_react.default.createElement(_fieldset.FieldsetStyle, _extends({
38
+ ref: setRef,
39
+ newValidation: validationRedesignOptIn
40
40
  }, (0, _tags.default)("fieldset", rest), rest, marginProps), legend && /*#__PURE__*/_react.default.createElement(_fieldset.StyledLegend, {
41
41
  "data-element": "legend",
42
42
  isRequired: required,
43
43
  isOptional: isOptional
44
- }, legend), /*#__PURE__*/_react.default.createElement(_formSpacingProvider.default, {
44
+ }, legend), validationRedesignOptIn ? children : /*#__PURE__*/_react.default.createElement(_formSpacingProvider.default, {
45
45
  marginBottom: undefined
46
- }, children)));
46
+ }, children));
47
47
  };
48
48
  exports.Fieldset = Fieldset;
49
49
  Fieldset.displayName = "Fieldset";
@@ -1,9 +1,12 @@
1
1
  export interface StyledFieldsetProps {
2
+ newValidation?: boolean;
3
+ }
4
+ declare const FieldsetStyle: import("styled-components").StyledComponent<"fieldset", any, StyledFieldsetProps, never>;
5
+ export interface StyledLegendProps {
2
6
  /** Flag to configure fields as mandatory. */
3
7
  isRequired?: boolean;
4
8
  /** Flag to configure fields as optional. */
5
9
  isOptional?: boolean;
6
10
  }
7
- declare const FieldsetStyle: import("styled-components").StyledComponent<"fieldset", any, {}, never>;
8
- declare const StyledLegend: import("styled-components").StyledComponent<"legend", any, StyledFieldsetProps, never>;
11
+ declare const StyledLegend: import("styled-components").StyledComponent<"legend", any, StyledLegendProps, never>;
9
12
  export { FieldsetStyle, StyledLegend };
@@ -18,15 +18,19 @@ const FieldsetStyle = exports.FieldsetStyle = _styledComponents.default.fieldset
18
18
  border: none;
19
19
  padding: 0;
20
20
 
21
- &&&& ${_formField.default} {
22
- margin-top: 0;
23
- margin-bottom: -1px;
24
- }
21
+ ${({
22
+ newValidation
23
+ }) => !newValidation && (0, _styledComponents.css)`
24
+ &&&& ${_formField.default} {
25
+ margin-top: 0;
26
+ margin-bottom: -1px;
27
+ }
25
28
 
26
- & ${_checkbox.default} {
27
- padding-top: 8px;
28
- padding-bottom: 8px;
29
- }
29
+ & ${_checkbox.default} {
30
+ padding-top: 8px;
31
+ padding-bottom: 8px;
32
+ }
33
+ `}
30
34
  `;
31
35
  FieldsetStyle.defaultProps = {
32
36
  theme: _base.default
@@ -34,12 +38,11 @@ FieldsetStyle.defaultProps = {
34
38
  const StyledLegend = exports.StyledLegend = _styledComponents.default.legend`
35
39
  display: flex;
36
40
  align-items: center;
37
- margin-bottom: 32px;
38
- font-size: 20px;
41
+ margin-bottom: var(--spacing250);
42
+ font-size: var(--fontSizes400);
39
43
  font-weight: var(--fontWeights500);
40
44
  color: var(--colorsUtilityYin090);
41
45
  line-height: 24px;
42
- margin-right: 4px;
43
46
 
44
47
  ${({
45
48
  isRequired
@@ -5,8 +5,16 @@ import { StyledLoaderSquareProps } from "./loader-square.style";
5
5
  export interface LoaderProps extends Omit<StyledLoaderSquareProps, "backgroundColor">, MarginProps, TagProps {
6
6
  /** Toggle between the default variant and gradient variant */
7
7
  variant?: string;
8
- /** Specify a custom accessible name for the Loader component */
8
+ /**
9
+ * Specify a custom accessible name for the Loader component
10
+ * @deprecated - use `loaderLabel` prop instead
11
+ */
9
12
  "aria-label"?: string;
13
+ /**
14
+ * Specify a custom accessible label for the Loader.
15
+ * This label is visible to users who have enabled the reduce motion setting in their operating system. It is also available to assistive technologies.
16
+ */
17
+ loaderLabel?: string;
10
18
  }
11
- export declare const Loader: ({ variant, "aria-label": ariaLabel, size, isInsideButton, isActive, ...rest }: LoaderProps) => React.JSX.Element;
19
+ export declare const Loader: ({ variant, "aria-label": ariaLabel, size, isInsideButton, isActive, loaderLabel, ...rest }: LoaderProps) => React.JSX.Element;
12
20
  export default Loader;
@@ -12,16 +12,24 @@ var _useLocale = _interopRequireDefault(require("../../hooks/__internal__/useLoc
12
12
  var _tags = _interopRequireDefault(require("../../__internal__/utils/helpers/tags/tags"));
13
13
  var _loader = _interopRequireDefault(require("./loader.style"));
14
14
  var _loaderSquare = _interopRequireDefault(require("./loader-square.style"));
15
+ var _typography = _interopRequireDefault(require("../typography"));
16
+ var _logger = _interopRequireDefault(require("../../__internal__/utils/logger"));
15
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
16
18
  function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
19
+ let deprecateAriaLabelWarnTriggered = false;
17
20
  const Loader = ({
18
21
  variant = "default",
19
22
  "aria-label": ariaLabel,
20
23
  size = "medium",
21
24
  isInsideButton,
22
25
  isActive = true,
26
+ loaderLabel,
23
27
  ...rest
24
28
  }) => {
29
+ if (!deprecateAriaLabelWarnTriggered && ariaLabel) {
30
+ deprecateAriaLabelWarnTriggered = true;
31
+ _logger.default.deprecate("The aria-label prop in Loader is deprecated and will soon be removed, please use the `loaderLabel` prop instead to provide an accessible label.");
32
+ }
25
33
  const l = (0, _useLocale.default)();
26
34
  const reduceMotion = !(0, _useMediaQuery.default)("screen and (prefers-reduced-motion: no-preference)");
27
35
  const loaderSquareProps = {
@@ -32,14 +40,15 @@ const Loader = ({
32
40
  };
33
41
 
34
42
  // FE-6368 has been raised for the below, changed hex values for design tokens (when added)
35
- return /*#__PURE__*/_react.default.createElement(_loader.default, _extends({
36
- "aria-label": ariaLabel || l.loader.loading(),
37
- role: "progressbar"
38
- }, (0, _tags.default)("loader", rest), (0, _utils.filterStyledSystemMarginProps)(rest)), reduceMotion ? l.loader.loading() : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, ["#13A038", "#0092DB", "#8F49FE"].map(color => /*#__PURE__*/_react.default.createElement(_loaderSquare.default, _extends({
43
+ return /*#__PURE__*/_react.default.createElement(_loader.default, _extends({}, (0, _tags.default)("loader", rest), (0, _utils.filterStyledSystemMarginProps)(rest)), reduceMotion ? loaderLabel || ariaLabel || l.loader.loading() : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, ["#13A038", "#0092DB", "#8F49FE"].map(color => /*#__PURE__*/_react.default.createElement(_loaderSquare.default, _extends({
39
44
  "data-role": "loader-square",
40
45
  key: color,
41
46
  backgroundColor: variant === "gradient" ? /* istanbul ignore next */color : "var(--colorsActionMajor500)"
42
- }, loaderSquareProps)))));
47
+ }, loaderSquareProps))), /*#__PURE__*/_react.default.createElement(_typography.default, {
48
+ "data-role": "hidden-label",
49
+ variant: "span",
50
+ screenReaderOnly: true
51
+ }, loaderLabel || ariaLabel || l.loader.loading())));
43
52
  };
44
53
  exports.Loader = Loader;
45
54
  var _default = exports.default = Loader;
@@ -414,7 +414,9 @@ const SelectList = /*#__PURE__*/_react.default.forwardRef(({
414
414
  }, [setPlacement]);
415
415
  const loader = isLoading ? /*#__PURE__*/_react.default.createElement(_selectList.StyledSelectLoaderContainer, {
416
416
  key: "loader"
417
- }, /*#__PURE__*/_react.default.createElement(_loader.default, null)) : undefined;
417
+ }, /*#__PURE__*/_react.default.createElement(_loader.default, {
418
+ "data-role": "select-list-loader"
419
+ })) : undefined;
418
420
  let selectListContent = renderedChildren;
419
421
  const listBoxProps = {
420
422
  role: "listbox",
@@ -56,7 +56,9 @@ const SwitchSlider = ({
56
56
  };
57
57
  const sliderContent = /*#__PURE__*/_react.default.createElement(_switchSliderPanel.default, _extends({
58
58
  "data-role": "slider-panel"
59
- }, sliderPanelStyleProps), loading ? /*#__PURE__*/_react.default.createElement(_loader.default, loaderProps) : panelContent);
59
+ }, sliderPanelStyleProps), loading ? /*#__PURE__*/_react.default.createElement(_loader.default, _extends({
60
+ "data-role": "switch-slider-loader"
61
+ }, loaderProps)) : panelContent);
60
62
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_switchSlider.HiddenContent, {
61
63
  size: size,
62
64
  "aria-hidden": true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "carbon-react",
3
- "version": "147.5.0",
3
+ "version": "147.7.0",
4
4
  "description": "A library of reusable React components for easily building user interfaces.",
5
5
  "files": [
6
6
  "lib",