carbon-react 124.6.0 → 125.0.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 (41) hide show
  1. package/esm/components/card/__internal__/card-context/index.d.ts +3 -0
  2. package/esm/components/card/__internal__/card-context/index.js +3 -1
  3. package/esm/components/card/card-column/card-column.component.d.ts +3 -2
  4. package/esm/components/card/card-column/card-column.component.js +10 -5
  5. package/esm/components/card/card-footer/card-footer.component.d.ts +7 -3
  6. package/esm/components/card/card-footer/card-footer.component.js +7 -5
  7. package/esm/components/card/card-footer/card-footer.style.d.ts +5 -5
  8. package/esm/components/card/card-row/card-row.component.d.ts +4 -3
  9. package/esm/components/card/card-row/card-row.component.js +13 -4
  10. package/esm/components/card/card-row/card-row.style.d.ts +2 -6
  11. package/esm/components/card/card-row/card-row.style.js +12 -1
  12. package/esm/components/card/card.component.d.ts +22 -19
  13. package/esm/components/card/card.component.js +39 -44
  14. package/esm/components/card/card.style.d.ts +33 -4
  15. package/esm/components/card/card.style.js +83 -7
  16. package/esm/components/select/select-list/select-list.component.js +9 -2
  17. package/esm/locales/{pl-pl.d.ts → __internal__/pl-pl.d.ts} +1 -1
  18. package/esm/locales/{pl-pl.js → __internal__/pl-pl.js} +1 -1
  19. package/esm/locales/index.d.ts +0 -1
  20. package/esm/locales/index.js +1 -2
  21. package/lib/components/card/__internal__/card-context/index.d.ts +3 -0
  22. package/lib/components/card/__internal__/card-context/index.js +3 -1
  23. package/lib/components/card/card-column/card-column.component.d.ts +3 -2
  24. package/lib/components/card/card-column/card-column.component.js +10 -5
  25. package/lib/components/card/card-footer/card-footer.component.d.ts +7 -3
  26. package/lib/components/card/card-footer/card-footer.component.js +7 -5
  27. package/lib/components/card/card-footer/card-footer.style.d.ts +5 -5
  28. package/lib/components/card/card-row/card-row.component.d.ts +4 -3
  29. package/lib/components/card/card-row/card-row.component.js +15 -4
  30. package/lib/components/card/card-row/card-row.style.d.ts +2 -6
  31. package/lib/components/card/card-row/card-row.style.js +12 -1
  32. package/lib/components/card/card.component.d.ts +22 -19
  33. package/lib/components/card/card.component.js +39 -44
  34. package/lib/components/card/card.style.d.ts +33 -4
  35. package/lib/components/card/card.style.js +84 -9
  36. package/lib/components/select/select-list/select-list.component.js +9 -2
  37. package/lib/locales/{pl-pl.d.ts → __internal__/pl-pl.d.ts} +1 -1
  38. package/lib/locales/{pl-pl.js → __internal__/pl-pl.js} +1 -1
  39. package/lib/locales/index.d.ts +0 -1
  40. package/lib/locales/index.js +0 -7
  41. package/package.json +1 -1
@@ -7,13 +7,18 @@ exports.default = void 0;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _cardColumn = _interopRequireDefault(require("./card-column.style"));
10
+ var _tags = _interopRequireDefault(require("../../../__internal__/utils/helpers/tags/tags"));
10
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
11
13
  const CardColumn = ({
12
14
  align = "center",
13
- children
14
- }) => /*#__PURE__*/_react.default.createElement(_cardColumn.default, {
15
- align: align,
16
- "data-element": "card-column"
17
- }, children);
15
+ children,
16
+ ...rest
17
+ }) => /*#__PURE__*/_react.default.createElement(_cardColumn.default, _extends({
18
+ align: align
19
+ }, (0, _tags.default)("card-column", {
20
+ "data-element": "card-column",
21
+ ...rest
22
+ })), children);
18
23
  CardColumn.displayName = "CardColumn";
19
24
  var _default = exports.default = CardColumn;
@@ -1,11 +1,15 @@
1
1
  import React from "react";
2
- import { StyledCardFooterProps } from "./card-footer.style";
3
- export interface CardFooterProps extends Partial<StyledCardFooterProps> {
2
+ import { SpaceProps } from "styled-system";
3
+ import { CardContextProps } from "../__internal__/card-context";
4
+ import { TagProps } from "../../../__internal__/utils/helpers/tags/tags";
5
+ export interface CardFooterProps extends SpaceProps, Pick<CardContextProps, "roundness">, Pick<TagProps, "data-element" | "data-role"> {
4
6
  /** Child nodes */
5
7
  children: React.ReactNode;
8
+ /** Specify styling variant to render */
9
+ variant?: "default" | "transparent";
6
10
  }
7
11
  declare const CardFooter: {
8
- ({ spacing, children, variant, ...rest }: CardFooterProps): React.JSX.Element;
12
+ ({ children, variant, ...rest }: CardFooterProps): React.JSX.Element;
9
13
  displayName: string;
10
14
  };
11
15
  export default CardFooter;
@@ -9,25 +9,27 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _utils = require("../../../style/utils");
10
10
  var _cardFooter = _interopRequireDefault(require("./card-footer.style"));
11
11
  var _cardContext = _interopRequireDefault(require("../__internal__/card-context"));
12
+ var _tags = _interopRequireDefault(require("../../../__internal__/utils/helpers/tags/tags"));
12
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
14
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
14
15
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
15
16
  function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
16
17
  const CardFooter = ({
17
- spacing = "medium",
18
18
  children,
19
19
  variant = "default",
20
20
  ...rest
21
21
  }) => {
22
22
  const {
23
- roundness
23
+ roundness,
24
+ spacing
24
25
  } = (0, _react.useContext)(_cardContext.default);
25
26
  return /*#__PURE__*/_react.default.createElement(_cardFooter.default, _extends({
26
- key: "card-footer",
27
- "data-element": "card-footer",
28
27
  spacing: spacing,
29
28
  variant: variant
30
- }, (0, _utils.filterStyledSystemMarginProps)(rest), (0, _utils.filterStyledSystemPaddingProps)(rest), {
29
+ }, (0, _utils.filterStyledSystemMarginProps)(rest), (0, _utils.filterStyledSystemPaddingProps)(rest), (0, _tags.default)("card-footer", {
30
+ "data-element": "card-footer",
31
+ ...rest
32
+ }), {
31
33
  roundness: roundness
32
34
  }), children);
33
35
  };
@@ -1,11 +1,11 @@
1
1
  import { SpaceProps } from "styled-system";
2
- import { CardSpacing } from "../card.config";
3
2
  import { CardContextProps } from "../__internal__/card-context";
4
- export interface StyledCardFooterProps extends SpaceProps, CardContextProps {
5
- /** Predefined size of CardFooter for applying padding. For more granular control, this prop can be over-ridden by the spacing props from styled-system */
6
- spacing: CardSpacing;
3
+ import { CardFooterProps } from "./card-footer.component";
4
+ export interface StyledCardFooterProps extends SpaceProps {
7
5
  /** Specify styling variant to render */
8
- variant: "default" | "transparent";
6
+ variant: Required<CardFooterProps>["variant"];
7
+ roundness: CardFooterProps["roundness"];
8
+ spacing: CardContextProps["spacing"];
9
9
  }
10
10
  declare const StyledCardFooter: import("styled-components").StyledComponent<"div", any, StyledCardFooterProps, never>;
11
11
  export default StyledCardFooter;
@@ -1,11 +1,12 @@
1
1
  import React from "react";
2
- import { StyledCardRowProps } from "./card-row.style";
3
- export interface CardRowProps extends Partial<StyledCardRowProps> {
2
+ import { PaddingProps } from "styled-system";
3
+ import { TagProps } from "../../../__internal__/utils/helpers/tags/tags";
4
+ export interface CardRowProps extends PaddingProps, Pick<TagProps, "data-element" | "data-role"> {
4
5
  /** Child nodes */
5
6
  children: React.ReactNode;
6
7
  }
7
8
  declare const CardRow: {
8
- ({ children, spacing, ...rest }: CardRowProps): React.JSX.Element;
9
+ ({ children, ...rest }: CardRowProps): React.JSX.Element;
9
10
  displayName: string;
10
11
  };
11
12
  export default CardRow;
@@ -4,21 +4,32 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _react = _interopRequireDefault(require("react"));
7
+ var _react = _interopRequireWildcard(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _utils = require("../../../style/utils");
10
10
  var _cardRow = _interopRequireDefault(require("./card-row.style"));
11
+ var _tags = _interopRequireDefault(require("../../../__internal__/utils/helpers/tags/tags"));
12
+ var _cardContext = _interopRequireDefault(require("../__internal__/card-context"));
13
+ var _guid = _interopRequireDefault(require("../../../__internal__/utils/helpers/guid"));
11
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
16
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
17
  function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
13
18
  const CardRow = ({
14
19
  children,
15
- spacing = "medium",
16
20
  ...rest
17
21
  }) => {
22
+ const {
23
+ spacing
24
+ } = (0, _react.useContext)(_cardContext.default);
25
+ const id = (0, _react.useRef)((0, _guid.default)());
18
26
  return /*#__PURE__*/_react.default.createElement(_cardRow.default, _extends({
19
- "data-element": "card-row",
27
+ id: id.current,
20
28
  spacing: spacing
21
- }, (0, _utils.filterStyledSystemPaddingProps)(rest)), children);
29
+ }, (0, _utils.filterStyledSystemPaddingProps)(rest), (0, _tags.default)("card-row", {
30
+ "data-element": "card-row",
31
+ ...rest
32
+ })), children);
22
33
  };
23
34
  CardRow.displayName = "CardRow";
24
35
  var _default = exports.default = CardRow;
@@ -1,10 +1,6 @@
1
- import { PaddingProps } from "styled-system";
2
1
  import { CardSpacing } from "../card.config";
3
- export interface StyledCardRowProps extends PaddingProps {
4
- /**
5
- * Spacing prop is set in Card and defines the padding for the CardRow (the first CardRow has no padding by default).
6
- * For more granular control of CardRow padding these can be over-ridden by Padding props from styled-system.
7
- */
2
+ import { CardRowProps } from "./card-row.component";
3
+ export interface StyledCardRowProps extends CardRowProps {
8
4
  spacing: CardSpacing;
9
5
  }
10
6
  declare const StyledCardRow: import("styled-components").StyledComponent<"div", any, StyledCardRowProps, never>;
@@ -24,7 +24,18 @@ const StyledCardRow = _styledComponents.default.div`
24
24
  padding-bottom: ${paddingSizes[spacing]};
25
25
  `}
26
26
 
27
- ${_styledSystem.padding}
27
+ &:first-of-type:not(:only-of-type) {
28
+ padding-top: var(--spacing000);
29
+ padding-bottom: var(--spacing000);
30
+ }
31
+
32
+ &:only-of-type {
33
+ padding-top: var(--spacing000);
34
+ }
35
+
36
+ && {
37
+ ${_styledSystem.padding}
38
+ }
28
39
  `;
29
40
  StyledCardRow.defaultProps = {
30
41
  theme: _base.default
@@ -2,40 +2,43 @@ import React from "react";
2
2
  import { MarginProps } from "styled-system";
3
3
  import * as DesignTokens from "@sage/design-tokens/js/base/common";
4
4
  import { CardContextProps } from "./__internal__/card-context";
5
- import { CardSpacing } from "./card.config";
5
+ import { TagProps } from "../../__internal__/utils/helpers/tags/tags";
6
6
  declare type DesignTokensType = keyof typeof DesignTokens;
7
7
  declare type BoxShadowsType = Extract<DesignTokensType, `boxShadow${string}`>;
8
- export interface CardProps extends MarginProps, CardContextProps {
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
- /**
14
- * [DEPRECATED - use `data-role` instead]
15
- * Identifier used for testing purposes, applied to the root element of the component.
8
+ export interface CardProps extends MarginProps, Pick<TagProps, "data-element" | "data-role"> {
9
+ /** Action to be executed when card is clicked or enter pressed.
10
+ * Renders a button when passed and no draggable or href props set
16
11
  * */
17
- dataRole?: string;
18
- /** Action to be executed when card is clicked or enter pressed */
19
- action?: (event: React.MouseEvent<HTMLDivElement>) => void;
12
+ onClick?: (event: React.MouseEvent<HTMLAnchorElement> | React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLAnchorElement> | React.KeyboardEvent<HTMLDivElement>) => void;
20
13
  /** Style value for width of card */
21
- cardWidth?: string;
14
+ width?: string;
22
15
  /** Child nodes */
23
16
  children: React.ReactNode;
24
17
  /** Flag to indicate if card is draggable */
25
18
  draggable?: boolean;
26
19
  /** Height of the component (any valid CSS value) */
27
20
  height?: string;
28
- /** Flag to indicate if card is interactive */
29
- interactive?: boolean;
30
- /** Size of card for applying padding */
31
- spacing?: CardSpacing;
32
21
  /** Design token for custom Box Shadow. Note: please check that the box shadow design token you are using is compatible with the Card component. */
33
22
  boxShadow?: BoxShadowsType;
34
- /** Design token for custom Box Shadow on hover. Interactive prop must be True. Note: please check that the box shadow design token you are using is compatible with the Card component. */
23
+ /** Design token for custom Box Shadow on hover. One of `onClick` or `href` props must be true. Note: please check that the box shadow design token you are using is compatible with the Card component. */
35
24
  hoverBoxShadow?: BoxShadowsType;
25
+ /** Size of card for applying padding */
26
+ spacing?: CardContextProps["spacing"];
27
+ /** Sets the level of roundness of the corners, "default" is 8px and "large" is 16px */
28
+ roundness?: CardContextProps["roundness"];
29
+ /** The path to navigate to. Renders an anchor element when passed and no draggable prop set */
30
+ href?: string;
31
+ /** The footer to render underneath the Card content */
32
+ footer?: React.ReactNode;
33
+ /** Target property in which link should open ie: _blank, _self, _parent, _top */
34
+ target?: string;
35
+ /** String for rel property when card has an href prop set */
36
+ rel?: string;
37
+ /** Prop to specify an aria-label for the component */
38
+ "aria-label"?: string;
36
39
  }
37
40
  declare const Card: {
38
- ({ "data-element": dataElement, "data-role": dataRole, dataRole: oldDataRole, action, children, cardWidth, draggable, height, interactive, spacing, boxShadow, hoverBoxShadow, roundness, ...rest }: CardProps): React.JSX.Element;
41
+ ({ "data-element": dataElement, "data-role": dataRole, children, width, draggable, height, onClick, href, spacing, boxShadow, hoverBoxShadow, roundness, footer, rel, target, "aria-label": ariaLabel, ...rest }: CardProps): React.JSX.Element;
39
42
  displayName: string;
40
43
  };
41
44
  export default Card;
@@ -8,77 +8,72 @@ var _react = _interopRequireWildcard(require("react"));
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _utils = require("../../style/utils");
10
10
  var _cardContext = _interopRequireDefault(require("./__internal__/card-context"));
11
- var _card = _interopRequireDefault(require("./card.style"));
11
+ var _card = require("./card.style");
12
12
  var _icon = _interopRequireDefault(require("../icon"));
13
- var _ = require(".");
14
- var _logger = _interopRequireDefault(require("../../__internal__/utils/logger"));
13
+ var _tags = _interopRequireDefault(require("../../__internal__/utils/helpers/tags/tags"));
15
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
15
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
16
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
17
  function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
19
- function hasDisplayName(child, displayName) {
20
- return child.type.displayName === displayName;
21
- }
22
- let isDeprecationWarningTriggered = false;
23
18
  const Card = ({
24
19
  "data-element": dataElement,
25
20
  "data-role": dataRole,
26
- dataRole: oldDataRole,
27
- action,
28
21
  children,
29
- cardWidth = "500px",
22
+ width = "500px",
30
23
  draggable,
31
24
  height,
32
- interactive,
25
+ onClick,
26
+ href,
33
27
  spacing = "medium",
34
28
  boxShadow,
35
29
  hoverBoxShadow,
36
30
  roundness = "default",
31
+ footer,
32
+ rel,
33
+ target,
34
+ "aria-label": ariaLabel,
37
35
  ...rest
38
36
  }) => {
39
- if (!isDeprecationWarningTriggered && oldDataRole) {
40
- isDeprecationWarningTriggered = true;
41
- _logger.default.deprecate("The `dataRole` prop of `Card` is now deprecated. Please use the kebab-case version `data-role` instead.");
37
+ const [contentRef, setContentRef] = (0, _react.useState)(null);
38
+ const interactive = !!(onClick || href);
39
+ let footerWarningFired = false;
40
+ if (!footerWarningFired && interactive && contentRef?.querySelector("[data-component='card-footer']")) {
41
+ footerWarningFired = true;
42
+ // eslint-disable-next-line no-console
43
+ console.warn("This `Card` is interactive you should use the `footer` prop to render a `CardFooter` to avoid potential accessibility issues");
42
44
  }
43
- const renderChildren = (0, _react.useCallback)(() => _react.default.Children.map(children, (child, index) => {
44
- if (! /*#__PURE__*/_react.default.isValidElement(child) || /*#__PURE__*/_react.default.isValidElement(child) && !hasDisplayName(child, _.CardRow.displayName) && !hasDisplayName(child, _.CardFooter.displayName)) return child;
45
- if (index !== 0) return /*#__PURE__*/_react.default.cloneElement(child, {
46
- spacing
47
- });
48
- const childProps = {
49
- spacing,
50
- ...child.props
51
- };
52
- if (hasDisplayName(child, _.CardRow.displayName)) {
53
- const pad = _react.default.Children.toArray(children).filter(row => /*#__PURE__*/_react.default.isValidElement(row) && hasDisplayName(row, _.CardRow.displayName)).length === 1 ? "pt" : "py";
54
- childProps[pad] = 0;
55
- }
56
- return /*#__PURE__*/_react.default.cloneElement(child, childProps);
57
- }), [children, spacing]);
58
- return /*#__PURE__*/_react.default.createElement(_card.default, _extends({
59
- "data-component": "card",
60
- "data-element": dataElement,
61
- "data-role": dataRole || oldDataRole,
62
- cardWidth: cardWidth,
63
- interactive: !!interactive,
45
+ return /*#__PURE__*/_react.default.createElement(_card.StyledCard, _extends({
46
+ cardWidth: width,
47
+ interactive: interactive,
64
48
  draggable: !!draggable,
65
49
  spacing: spacing,
66
50
  boxShadow: boxShadow,
67
51
  hoverBoxShadow: hoverBoxShadow,
68
- onClick: interactive && !draggable ? action : undefined,
69
- height: height
70
- }, interactive && {
71
- tabIndex: 0,
72
- type: "button"
73
- }, {
52
+ height: height,
74
53
  roundness: roundness
75
- }, (0, _utils.filterStyledSystemMarginProps)(rest)), draggable && /*#__PURE__*/_react.default.createElement(_icon.default, {
54
+ }, (0, _utils.filterStyledSystemMarginProps)(rest), (0, _tags.default)("card", {
55
+ "data-element": dataElement,
56
+ "data-role": dataRole
57
+ })), draggable && /*#__PURE__*/_react.default.createElement(_icon.default, {
76
58
  type: "drag"
77
59
  }), /*#__PURE__*/_react.default.createElement(_cardContext.default.Provider, {
78
60
  value: {
79
- roundness
61
+ roundness,
62
+ spacing
80
63
  }
81
- }, renderChildren()));
64
+ }, /*#__PURE__*/_react.default.createElement(_card.StyledCardContent, {
65
+ "data-element": "card-content-container",
66
+ onClick: !draggable ? onClick : undefined,
67
+ href: !draggable ? href : undefined,
68
+ rel: !draggable && href ? rel : undefined,
69
+ target: !draggable && href ? target : undefined,
70
+ interactive: interactive,
71
+ spacing: spacing,
72
+ roundness: roundness,
73
+ hasFooter: !!footer,
74
+ ref: setContentRef,
75
+ "aria-label": ariaLabel
76
+ }, children), footer));
82
77
  };
83
78
  Card.displayName = "Card";
84
79
  var _default = exports.default = Card;
@@ -1,17 +1,46 @@
1
1
  import { MarginProps } from "styled-system";
2
2
  import * as DesignTokens from "@sage/design-tokens/js/base/common";
3
- import { CardSpacing } from "./card.config";
4
3
  import { CardContextProps } from "./__internal__/card-context";
4
+ import { CardProps } from "./card.component";
5
+ export declare const paddingSizes: {
6
+ small: string;
7
+ medium: string;
8
+ large: string;
9
+ };
10
+ export declare const marginSizes: {
11
+ small: string;
12
+ medium: string;
13
+ large: string;
14
+ };
5
15
  declare type DesignTokensType = keyof typeof DesignTokens;
6
16
  export declare type BoxShadowsType = Extract<DesignTokensType, `boxShadow${string}`>;
7
- export interface StyledCardProps extends MarginProps, CardContextProps {
17
+ export interface StyledCardProps extends MarginProps, Pick<CardContextProps, "roundness" | "spacing">, Pick<CardProps, "href" | "onClick"> {
8
18
  cardWidth: string;
9
19
  interactive: boolean;
10
20
  draggable: boolean;
11
21
  height?: string;
12
- spacing: CardSpacing;
13
22
  boxShadow?: BoxShadowsType;
14
23
  hoverBoxShadow?: BoxShadowsType;
15
24
  }
16
25
  declare const StyledCard: import("styled-components").StyledComponent<"div", any, StyledCardProps, never>;
17
- export default StyledCard;
26
+ interface StyledCardContentProps extends Pick<CardContextProps, "roundness" | "spacing"> {
27
+ interactive?: boolean;
28
+ href?: string;
29
+ hasFooter: boolean;
30
+ target?: string;
31
+ rel?: string;
32
+ }
33
+ declare const StyledCardContent: import("styled-components").StyledComponent<"div", any, ({
34
+ as: string;
35
+ role?: undefined;
36
+ type?: undefined;
37
+ } | {
38
+ as: string;
39
+ role: "button";
40
+ type: string;
41
+ } | {
42
+ as?: undefined;
43
+ role?: undefined;
44
+ type?: undefined;
45
+ }) & StyledCardContentProps, "type" | "role" | "as">;
46
+ export { StyledCard, StyledCardContent };
@@ -3,19 +3,25 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ exports.paddingSizes = exports.marginSizes = exports.StyledCardContent = exports.StyledCard = void 0;
7
7
  var _styledComponents = _interopRequireWildcard(require("styled-components"));
8
8
  var _styledSystem = require("styled-system");
9
9
  var _base = _interopRequireDefault(require("../../style/themes/base"));
10
+ var _addFocusStyling = _interopRequireDefault(require("../../style/utils/add-focus-styling"));
10
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
12
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
12
13
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
13
- const paddingSizes = {
14
- small: "0 24px",
15
- medium: "0 32px",
16
- large: "0 48px"
14
+ const paddingSizes = exports.paddingSizes = {
15
+ small: "0 var(--spacing300)",
16
+ medium: "0 var(--spacing400)",
17
+ large: "0 var(--spacing600)"
17
18
  };
18
- const StyledCard = _styledComponents.default.div`
19
+ const marginSizes = exports.marginSizes = {
20
+ small: "0 -24px",
21
+ medium: "0 -32px",
22
+ large: "0 -48px"
23
+ };
24
+ const StyledCard = exports.StyledCard = _styledComponents.default.div`
19
25
  ${({
20
26
  cardWidth,
21
27
  interactive,
@@ -35,6 +41,7 @@ const StyledCard = _styledComponents.default.div`
35
41
  flex-direction: column;
36
42
  height: ${height};
37
43
  justify-content: space-between;
44
+ align-items: normal;
38
45
  margin: 25px;
39
46
  outline: none;
40
47
  padding: ${paddingSizes[spacing]};
@@ -44,8 +51,6 @@ const StyledCard = _styledComponents.default.div`
44
51
  ${_styledSystem.margin}
45
52
 
46
53
  ${interactive && (0, _styledComponents.css)`
47
- cursor: pointer;
48
-
49
54
  :hover,
50
55
  :focus {
51
56
  box-shadow: var(--${hoverBoxShadow});
@@ -61,7 +66,77 @@ const StyledCard = _styledComponents.default.div`
61
66
  }
62
67
  `}
63
68
  `;
69
+ const StyledCardContent = exports.StyledCardContent = _styledComponents.default.div.attrs(({
70
+ href,
71
+ onClick
72
+ }) => {
73
+ if (href) {
74
+ return {
75
+ as: "a"
76
+ };
77
+ }
78
+ if (onClick) {
79
+ return {
80
+ as: "button",
81
+ role: "button",
82
+ type: "button"
83
+ };
84
+ }
85
+ return {};
86
+ })`
87
+ ${({
88
+ interactive,
89
+ theme
90
+ }) => interactive && (0, _styledComponents.css)`
91
+ cursor: pointer;
92
+
93
+ ${!theme.focusRedesignOptOut && (0, _styledComponents.css)`
94
+ :focus {
95
+ ${(0, _addFocusStyling.default)()};
96
+ position: relative;
97
+ }
98
+ `}
99
+ `}
100
+
101
+ outline: none;
102
+ text-decoration: none;
103
+ background-color: inherit;
104
+ border: none;
105
+ padding: 0;
106
+
107
+ ${({
108
+ spacing
109
+ }) => `
110
+ padding: ${paddingSizes[spacing]};
111
+ margin: ${marginSizes[spacing]};
112
+ `}
113
+
114
+ ${({
115
+ roundness,
116
+ hasFooter
117
+ }) => (0, _styledComponents.css)`
118
+ ${roundness === "default" && (0, _styledComponents.css)`
119
+ border-top-left-radius: var(--borderRadius100);
120
+ border-top-right-radius: var(--borderRadius100);
121
+ ${!hasFooter && (0, _styledComponents.css)`
122
+ border-bottom-left-radius: var(--borderRadius100);
123
+ border-bottom-right-radius: var(--borderRadius100);
124
+ `}
125
+ `}
126
+
127
+ ${roundness !== "default" && (0, _styledComponents.css)`
128
+ border-top-left-radius: var(--borderRadius200);
129
+ border-top-right-radius: var(--borderRadius200);
130
+ ${!hasFooter && (0, _styledComponents.css)`
131
+ border-bottom-left-radius: var(--borderRadius200);
132
+ border-bottom-right-radius: var(--borderRadius200);
133
+ `}
134
+ `}
135
+ `}
136
+ `;
64
137
  StyledCard.defaultProps = {
65
138
  theme: _base.default
66
139
  };
67
- var _default = exports.default = StyledCard;
140
+ StyledCardContent.defaultProps = {
141
+ theme: _base.default
142
+ };
@@ -333,8 +333,15 @@ const SelectList = /*#__PURE__*/_react.default.forwardRef(({
333
333
  return;
334
334
  }
335
335
  setCurrentOptionsListIndex(indexOfMatch);
336
- virtualizer.scrollToIndex(indexOfMatch, SCROLL_OPTIONS);
337
- }, [getIndexOfMatch, highlightedValue, virtualizer, handleListScroll, listContainerRef]);
336
+ }, [getIndexOfMatch, highlightedValue]);
337
+
338
+ // ensure that the currently-selected option is always visible immediately after
339
+ // it has been changed
340
+ (0, _react.useEffect)(() => {
341
+ if (currentOptionsListIndex > -1) {
342
+ virtualizer.scrollToIndex(currentOptionsListIndex, SCROLL_OPTIONS);
343
+ }
344
+ }, [currentOptionsListIndex, virtualizer]);
338
345
  (0, _react.useEffect)(() => {
339
346
  if (isLoading && currentOptionsListIndex === lastOptionIndex && lastOptionIndex > -1) {
340
347
  virtualizer.scrollToIndex(lastOptionIndex, {
@@ -1,4 +1,4 @@
1
- import Locale from "./locale";
1
+ import Locale from "../locale";
2
2
  export declare const PolishPlural: (singularNominativ: string, pluralNominativ: string, pluralGenitive: string, value: number) => string;
3
3
  declare const plPL: Locale;
4
4
  export { PolishPlural as PolishPlurals };
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = exports.PolishPlurals = exports.PolishPlural = void 0;
7
- var _dateFnsLocales = require("./date-fns-locales");
7
+ var _dateFnsLocales = require("../date-fns-locales");
8
8
  const isSingular = count => (typeof count === "string" ? parseInt(count) : count) === 1;
9
9
  const PolishPlural = (singularNominativ, pluralNominativ, pluralGenitive, value) => {
10
10
  if (value === 1) {
@@ -1,3 +1,2 @@
1
1
  export type { default } from "./locale";
2
2
  export { default as EnGb } from "./en-gb";
3
- export { default as PlPl } from "./pl-pl";
@@ -9,12 +9,5 @@ Object.defineProperty(exports, "EnGb", {
9
9
  return _enGb.default;
10
10
  }
11
11
  });
12
- Object.defineProperty(exports, "PlPl", {
13
- enumerable: true,
14
- get: function () {
15
- return _plPl.default;
16
- }
17
- });
18
12
  var _enGb = _interopRequireDefault(require("./en-gb"));
19
- var _plPl = _interopRequireDefault(require("./pl-pl"));
20
13
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "carbon-react",
3
- "version": "124.6.0",
3
+ "version": "125.0.0",
4
4
  "description": "A library of reusable React components for easily building user interfaces.",
5
5
  "files": [
6
6
  "lib",