@dxc-technology/halstack-react 12.0.2 → 12.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 (87) hide show
  1. package/HalstackContext.d.ts +23 -0
  2. package/HalstackContext.js +31 -21
  3. package/breadcrumbs/Breadcrumbs.stories.tsx +1 -1
  4. package/breadcrumbs/Breadcrumbs.test.js +1 -2
  5. package/breadcrumbs/types.d.ts +24 -0
  6. package/card/Card.stories.tsx +1 -1
  7. package/chip/Chip.stories.tsx +2 -6
  8. package/common/coreTokens.d.ts +0 -1
  9. package/common/coreTokens.js +0 -1
  10. package/common/variables.d.ts +29 -0
  11. package/common/variables.js +25 -2
  12. package/container/types.d.ts +113 -11
  13. package/contextual-menu/ContextualMenu.js +56 -8
  14. package/contextual-menu/ContextualMenu.stories.tsx +50 -51
  15. package/contextual-menu/ContextualMenu.test.js +108 -66
  16. package/contextual-menu/GroupItem.js +9 -9
  17. package/contextual-menu/ItemAction.d.ts +1 -1
  18. package/contextual-menu/ItemAction.js +52 -15
  19. package/contextual-menu/SingleItem.d.ts +1 -1
  20. package/contextual-menu/SingleItem.js +14 -14
  21. package/contextual-menu/types.d.ts +13 -6
  22. package/date-input/Calendar.js +46 -30
  23. package/date-input/DateInput.accessibility.test.js +12 -13
  24. package/date-input/DateInput.js +9 -3
  25. package/date-input/DateInput.stories.tsx +5 -6
  26. package/date-input/DateInput.test.js +30 -31
  27. package/date-input/YearPicker.js +9 -4
  28. package/dialog/Dialog.stories.tsx +2 -3
  29. package/dialog/Dialog.test.js +1 -2
  30. package/divider/Divider.stories.tsx +2 -1
  31. package/dropdown/Dropdown.accessibility.test.js +1 -2
  32. package/dropdown/Dropdown.stories.tsx +1 -1
  33. package/dropdown/Dropdown.test.js +1 -2
  34. package/file-input/FileInput.js +1 -3
  35. package/file-input/FileItem.js +1 -1
  36. package/file-input/types.d.ts +0 -4
  37. package/grid/Grid.stories.tsx +3 -1
  38. package/header/Header.stories.tsx +1 -1
  39. package/icon/Icon.stories.tsx +1 -1
  40. package/number-input/NumberInput.accessibility.test.js +1 -2
  41. package/number-input/NumberInput.js +5 -2
  42. package/number-input/NumberInput.stories.tsx +11 -16
  43. package/number-input/NumberInput.test.js +1 -2
  44. package/package.json +19 -16
  45. package/paginator/Paginator.accessibility.test.js +1 -2
  46. package/paginator/Paginator.test.js +1 -2
  47. package/password-input/PasswordInput.accessibility.test.js +1 -2
  48. package/password-input/PasswordInput.js +6 -3
  49. package/password-input/PasswordInput.stories.tsx +10 -1
  50. package/password-input/PasswordInput.test.js +1 -2
  51. package/resultset-table/ResultsetTable.accessibility.test.js +1 -2
  52. package/resultset-table/ResultsetTable.js +33 -9
  53. package/resultset-table/ResultsetTable.stories.tsx +2 -2
  54. package/resultset-table/ResultsetTable.test.js +102 -32
  55. package/resultset-table/types.d.ts +3 -2
  56. package/select/Select.accessibility.test.js +1 -2
  57. package/select/Select.js +3 -1
  58. package/select/Select.stories.tsx +11 -2
  59. package/select/Select.test.js +1 -2
  60. package/sidenav/Sidenav.stories.tsx +1 -1
  61. package/slider/Slider.accessibility.test.js +1 -2
  62. package/slider/Slider.test.js +1 -2
  63. package/table/Table.accessibility.test.js +1 -2
  64. package/table/Table.stories.tsx +1 -1
  65. package/table/Table.test.js +1 -2
  66. package/tabs/Tabs.stories.tsx +2 -2
  67. package/tag/Tag.stories.tsx +1 -1
  68. package/text-input/TextInput.accessibility.test.js +1 -2
  69. package/text-input/TextInput.js +3 -1
  70. package/text-input/TextInput.stories.tsx +11 -8
  71. package/text-input/TextInput.test.js +1 -2
  72. package/toggle-group/ToggleGroup.stories.tsx +1 -1
  73. package/tooltip/Tooltip.accessibility.test.d.ts +1 -0
  74. package/tooltip/Tooltip.accessibility.test.js +144 -0
  75. package/tooltip/Tooltip.d.ts +4 -0
  76. package/tooltip/Tooltip.js +50 -0
  77. package/tooltip/Tooltip.stories.tsx +111 -0
  78. package/tooltip/Tooltip.test.d.ts +1 -0
  79. package/tooltip/Tooltip.test.js +112 -0
  80. package/tooltip/types.d.ts +16 -0
  81. package/tooltip/types.js +5 -0
  82. package/typography/Typography.stories.tsx +1 -3
  83. package/typography/Typography.test.js +23 -0
  84. package/useTheme.d.ts +23 -0
  85. package/utils/BaseTypography.js +44 -40
  86. package/utils/FocusLock.js +2 -1
  87. package/wizard/Wizard.stories.tsx +1 -1
@@ -12,40 +12,77 @@ var _react = _interopRequireDefault(require("react"));
12
12
  var _styledComponents = _interopRequireDefault(require("styled-components"));
13
13
  var _coreTokens = _interopRequireDefault(require("../common/coreTokens"));
14
14
  var _Icon = _interopRequireDefault(require("../icon/Icon"));
15
- var _templateObject, _templateObject2, _templateObject3;
16
- var _excluded = ["badge", "collapseIcon", "icon", "label", "depthLevel", "selected"];
15
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
16
+ var _excluded = ["badge", "collapseIcon", "icon", "label", "depthLevel"];
17
17
  var ItemAction = function ItemAction(_ref) {
18
18
  var badge = _ref.badge,
19
19
  collapseIcon = _ref.collapseIcon,
20
20
  icon = _ref.icon,
21
21
  label = _ref.label,
22
22
  depthLevel = _ref.depthLevel,
23
- selected = _ref.selected,
24
23
  props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
25
24
  var modifiedBadge = badge && /*#__PURE__*/_react["default"].cloneElement(badge, {
26
25
  size: "small"
27
26
  });
28
27
  return /*#__PURE__*/_react["default"].createElement(Action, (0, _extends2["default"])({
29
- depthLevel: depthLevel,
30
- selected: selected
31
- }, props), /*#__PURE__*/_react["default"].createElement(Label, null, collapseIcon, icon && depthLevel === 0 && (typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
28
+ depthLevel: depthLevel
29
+ }, props), /*#__PURE__*/_react["default"].createElement(Label, null, collapseIcon && /*#__PURE__*/_react["default"].createElement(Icon, null, collapseIcon), icon && depthLevel === 0 && /*#__PURE__*/_react["default"].createElement(Icon, null, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement(_Icon["default"], {
32
30
  icon: icon
33
31
  }) : icon), /*#__PURE__*/_react["default"].createElement(Text, {
32
+ selected: props.selected,
34
33
  onMouseEnter: function onMouseEnter(event) {
35
34
  var text = event.currentTarget;
36
35
  if (text.title === "" && text.scrollWidth > text.clientWidth) text.title = label;
37
36
  }
38
37
  }, label)), modifiedBadge);
39
38
  };
40
- var Action = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n border: none;\n border-radius: 4px;\n width: 100%;\n padding: ", ";\n box-shadow: inset 0 0 0 2px transparent;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: ", ";\n ", ";\n cursor: pointer;\n overflow: hidden;\n\n &:hover {\n ", ";\n }\n &:active {\n ", ";\n }\n &:focus {\n outline: 2px solid ", ";\n outline-offset: -1px;\n }\n span::before {\n display: flex;\n font-size: 16px;\n }\n svg {\n height: 16px;\n width: 16px;\n }\n"])), function (props) {
39
+ var Action = _styledComponents["default"].button(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n border: none;\n border-radius: 4px;\n width: 100%;\n padding: ", ";\n box-shadow: inset 0 0 0 2px transparent;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: ", ";\n ", ";\n cursor: pointer;\n overflow: hidden;\n\n &:hover {\n ", ";\n }\n &:active {\n ", ";\n }\n &:focus {\n outline: 2px solid ", ";\n outline-offset: -1px;\n }\n"])), function (props) {
41
40
  return "".concat(_coreTokens["default"].spacing_4, " ").concat(_coreTokens["default"].spacing_8, " ").concat(_coreTokens["default"].spacing_4, " ", "\n calc(".concat(_coreTokens["default"].spacing_8, " + (").concat(_coreTokens["default"].spacing_24, " * ").concat(props.depthLevel, "))\n "), ";");
42
- }, _coreTokens["default"].spacing_16, function (props) {
43
- return props.selected ? "background-color: ".concat(_coreTokens["default"].color_purple_100, "; font-weight: ").concat(_coreTokens["default"].type_semibold, ";") : "background-color: ".concat(_coreTokens["default"].color_transparent);
44
- }, function (props) {
45
- return props.selected ? "background-color: ".concat(_coreTokens["default"].color_purple_200, ";") : "background-color: ".concat(_coreTokens["default"].color_grey_100, ";");
46
- }, function (props) {
47
- return props.selected ? "background-color: ".concat(_coreTokens["default"].color_purple_200, ";") : "background-color: ".concat(_coreTokens["default"].color_grey_100, ";");
41
+ }, _coreTokens["default"].spacing_16, function (_ref2) {
42
+ var selected = _ref2.selected,
43
+ theme = _ref2.theme;
44
+ return selected ? "background-color: ".concat(theme.selectedMenuItemBackgroundColor, ";") : "background-color: ".concat(_coreTokens["default"].color_transparent);
45
+ }, function (_ref3) {
46
+ var selected = _ref3.selected,
47
+ theme = _ref3.theme;
48
+ return selected ? "background-color: ".concat(theme.hoverSelectedMenuItemBackgroundColor, ";") : "background-color: ".concat(theme.hoverMenuItemBackgroundColor, ";");
49
+ }, function (_ref4) {
50
+ var selected = _ref4.selected,
51
+ theme = _ref4.theme;
52
+ return selected ? "background-color: ".concat(theme.activeSelectedMenuItemBackgroundColor, ";") : "background-color: ".concat(theme.activeMenuItemBackgroundColor, ";");
48
53
  }, _coreTokens["default"].color_blue_600);
49
- var Label = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n gap: ", ";\n overflow: hidden;\n"])), _coreTokens["default"].spacing_8);
50
- var Text = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n line-height: 24px;\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n"])), _coreTokens["default"].color_grey_900, _coreTokens["default"].type_sans, _coreTokens["default"].type_scale_02);
54
+ var Icon = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n font-size: ", ";\n color: ", ";\n\n svg {\n height: ", ";\n width: ", ";\n }\n"])), function (_ref5) {
55
+ var theme = _ref5.theme;
56
+ return theme.iconSize;
57
+ }, function (_ref6) {
58
+ var theme = _ref6.theme;
59
+ return theme.iconColor;
60
+ }, function (_ref7) {
61
+ var theme = _ref7.theme;
62
+ return theme.iconSize;
63
+ }, function (_ref8) {
64
+ var theme = _ref8.theme;
65
+ return theme.iconSize;
66
+ });
67
+ var Label = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n gap: ", ";\n overflow: hidden;\n"])), _coreTokens["default"].spacing_8);
68
+ var Text = _styledComponents["default"].span(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-style: ", ";\n font-weight: ", ";\n line-height: ", ";\n text-overflow: ellipsis;\n white-space: nowrap;\n overflow: hidden;\n"])), function (_ref9) {
69
+ var theme = _ref9.theme;
70
+ return theme.menuItemFontColor;
71
+ }, function (_ref10) {
72
+ var theme = _ref10.theme;
73
+ return theme.fontFamily;
74
+ }, function (_ref11) {
75
+ var theme = _ref11.theme;
76
+ return theme.menuItemFontSize;
77
+ }, function (_ref12) {
78
+ var theme = _ref12.theme;
79
+ return theme.menuItemFontStyle;
80
+ }, function (_ref13) {
81
+ var selected = _ref13.selected,
82
+ theme = _ref13.theme;
83
+ return selected ? theme.selectedMenuItemFontWeight : theme.menuItemFontWeight;
84
+ }, function (_ref14) {
85
+ var theme = _ref14.theme;
86
+ return theme.menuItemLineHeight;
87
+ });
51
88
  var _default = exports["default"] = ItemAction;
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
2
  import { SingleItemProps } from "./types";
3
- declare const SingleItem: ({ badge, icon, id, label, depthLevel, onSelect }: SingleItemProps) => React.JSX.Element;
3
+ declare const SingleItem: ({ id, onSelect, selectedByDefault, ...props }: SingleItemProps) => React.JSX.Element;
4
4
  export default SingleItem;
@@ -6,18 +6,19 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports["default"] = void 0;
9
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
9
11
  var _react = _interopRequireWildcard(require("react"));
10
12
  var _ContextualMenu = require("./ContextualMenu");
11
13
  var _ItemAction = _interopRequireDefault(require("./ItemAction"));
14
+ var _excluded = ["id", "onSelect", "selectedByDefault"];
12
15
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
13
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 && {}.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; }
14
17
  var SingleItem = function SingleItem(_ref) {
15
- var badge = _ref.badge,
16
- icon = _ref.icon,
17
- id = _ref.id,
18
- label = _ref.label,
19
- depthLevel = _ref.depthLevel,
20
- onSelect = _ref.onSelect;
18
+ var id = _ref.id,
19
+ onSelect = _ref.onSelect,
20
+ selectedByDefault = _ref.selectedByDefault,
21
+ props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
21
22
  var _useContext = (0, _react.useContext)(_ContextualMenu.ContextualMenuContext),
22
23
  selectedItemId = _useContext.selectedItemId,
23
24
  setSelectedItemId = _useContext.setSelectedItemId;
@@ -25,14 +26,13 @@ var SingleItem = function SingleItem(_ref) {
25
26
  setSelectedItemId(id);
26
27
  onSelect === null || onSelect === void 0 ? void 0 : onSelect();
27
28
  };
28
- return /*#__PURE__*/_react["default"].createElement(_ItemAction["default"], {
29
- "aria-selected": selectedItemId === id,
30
- badge: badge,
31
- icon: icon,
32
- label: label,
33
- depthLevel: depthLevel,
29
+ (0, _react.useEffect)(function () {
30
+ if (selectedItemId === -1 && selectedByDefault) setSelectedItemId(id);
31
+ }, [selectedItemId, selectedByDefault, id]);
32
+ return /*#__PURE__*/_react["default"].createElement(_ItemAction["default"], (0, _extends2["default"])({
33
+ "aria-selected": selectedItemId === -1 ? selectedByDefault : selectedItemId === id,
34
34
  onClick: handleClick,
35
- selected: selectedItemId === id
36
- });
35
+ selected: selectedItemId === -1 ? selectedByDefault : selectedItemId === id
36
+ }, props));
37
37
  };
38
38
  var _default = exports["default"] = SingleItem;
@@ -1,22 +1,26 @@
1
1
  import React from "react";
2
2
  type SVG = React.ReactNode & React.SVGProps<SVGSVGElement>;
3
- type Item = {
3
+ type CommonItemProps = {
4
4
  badge?: React.ReactElement;
5
5
  icon?: string | SVG;
6
6
  label: string;
7
+ };
8
+ type Item = CommonItemProps & {
7
9
  onSelect?: () => void;
10
+ selectedByDefault?: boolean;
8
11
  };
9
- type GroupItem = {
10
- badge?: React.ReactElement;
11
- icon?: string | SVG;
12
+ type GroupItem = CommonItemProps & {
12
13
  items: (Item | GroupItem)[];
13
- label: string;
14
14
  };
15
15
  type Section = {
16
16
  items: (Item | GroupItem)[];
17
17
  title?: string;
18
18
  };
19
19
  type Props = {
20
+ /**
21
+ * Array of items to be displayed in the Contextual menu.
22
+ * Each item can be a single/simple item, a group item or a section.
23
+ */
20
24
  items: (Item | GroupItem)[] | Section[];
21
25
  };
22
26
  /**
@@ -45,9 +49,12 @@ type MenuItemProps = {
45
49
  item: ItemWithId | GroupItemWithId;
46
50
  depthLevel?: number;
47
51
  };
48
- type ItemActionProps = React.ButtonHTMLAttributes<HTMLButtonElement> & Item & {
52
+ type ItemActionProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {
53
+ badge?: Item["badge"];
49
54
  collapseIcon?: React.ReactNode;
50
55
  depthLevel: number;
56
+ icon?: Item["icon"];
57
+ label: Item["label"];
51
58
  selected: boolean;
52
59
  };
53
60
  type ContextualMenuContextProps = {
@@ -11,8 +11,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
11
11
  var _react = _interopRequireWildcard(require("react"));
12
12
  var _styledComponents = _interopRequireDefault(require("styled-components"));
13
13
  var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
14
- var _Flex = _interopRequireDefault(require("../flex/Flex"));
15
- var _templateObject, _templateObject2, _templateObject3, _templateObject4;
14
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
16
15
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(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 && {}.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
  var getDays = function getDays(innerDate) {
@@ -49,12 +48,20 @@ var getDateToFocus = function getDateToFocus(selectedDate, innerDate, today) {
49
48
  var isDaySelected = function isDaySelected(date, selectedDate) {
50
49
  return (selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate.get("month")) === date.month && (selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate.get("year")) === date.year && (selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate.get("date")) === date.day;
51
50
  };
51
+ var divideDaysIntoWeeks = function divideDaysIntoWeeks(data, weekSize) {
52
+ return Array.from({
53
+ length: Math.ceil(data.length / weekSize)
54
+ }, function (_, rowIndex) {
55
+ return data.slice(rowIndex * weekSize, (rowIndex + 1) * weekSize);
56
+ });
57
+ };
52
58
  var Calendar = function Calendar(_ref) {
53
59
  var selectedDate = _ref.selectedDate,
54
60
  innerDate = _ref.innerDate,
55
61
  onInnerDateChange = _ref.onInnerDateChange,
56
62
  onDaySelect = _ref.onDaySelect,
57
63
  today = _ref.today;
64
+ var id = (0, _react.useId)();
58
65
  var _useState = (0, _react.useState)(getDateToFocus(selectedDate, innerDate, today)),
59
66
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
60
67
  dateToFocus = _useState2[0],
@@ -88,7 +95,7 @@ var Calendar = function Calendar(_ref) {
88
95
  (0, _react.useEffect)(function () {
89
96
  if (isFocusable) {
90
97
  var _document$getElementB;
91
- (_document$getElementB = document.getElementById("day_".concat(dateToFocus.get("date"), "_month").concat(dateToFocus.get("month")))) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.focus();
98
+ (_document$getElementB = document.getElementById("".concat(id, "_day_").concat(dateToFocus.get("date"), "_month").concat(dateToFocus.get("month")))) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.focus();
92
99
  setIsFocusable(false);
93
100
  }
94
101
  }, [dateToFocus, isFocusable]);
@@ -146,33 +153,40 @@ var Calendar = function Calendar(_ref) {
146
153
  break;
147
154
  }
148
155
  };
149
- return /*#__PURE__*/_react["default"].createElement(CalendarContainer, null, /*#__PURE__*/_react["default"].createElement(_Flex["default"], {
150
- alignItems: "center",
151
- justifyContent: "space-between"
156
+ return /*#__PURE__*/_react["default"].createElement(CalendarContainer, {
157
+ role: "grid"
158
+ }, /*#__PURE__*/_react["default"].createElement(CalendarHeaderRow, {
159
+ role: "row"
152
160
  }, weekDays.map(function (weekDay) {
153
161
  return /*#__PURE__*/_react["default"].createElement(WeekHeaderCell, {
154
- key: weekDay
162
+ key: weekDay,
163
+ role: "columnheader"
155
164
  }, weekDay);
156
- })), /*#__PURE__*/_react["default"].createElement(DayCellsContainer, {
157
- onBlur: handleOnBlur
158
- }, dayCells.map(function (date, index) {
159
- return /*#__PURE__*/_react["default"].createElement(DayCell, {
160
- onKeyDown: function onKeyDown(event) {
161
- return handleDayKeyboardEvent(event, date);
162
- },
163
- "aria-label": date.day,
164
- id: "day_".concat(date.day, "_month").concat(date.month),
165
- key: "day_".concat(index),
166
- onClick: function onClick() {
167
- return onDateClickHandler(date);
168
- },
169
- selected: isDaySelected(date, selectedDate),
170
- actualMonth: date.month === innerDate.get("month"),
171
- autoFocus: date.day === dateToFocus.get("date") && date.month === dateToFocus.get("month"),
172
- "aria-selected": isDaySelected(date, selectedDate),
173
- tabIndex: date.day === dateToFocus.get("date") && date.month === dateToFocus.get("month") ? 0 : -1,
174
- isCurrentDay: today.get("date") === date.day && today.get("month") === innerDate.get("month") && today.get("month") === date.month && today.get("year") === innerDate.get("year")
175
- }, date.day);
165
+ })), /*#__PURE__*/_react["default"].createElement(MonthContainer, {
166
+ onBlur: handleOnBlur,
167
+ role: "rowgroup"
168
+ }, divideDaysIntoWeeks(dayCells, weekDays.length).map(function (week, rowIndex) {
169
+ return /*#__PURE__*/_react["default"].createElement(WeekContainer, {
170
+ key: "".concat(id, "_week_").concat(rowIndex),
171
+ role: "row"
172
+ }, week.map(function (date, index) {
173
+ return /*#__PURE__*/_react["default"].createElement(DayCellButton, {
174
+ id: "".concat(id, "_day_").concat(date.day, "_month").concat(date.month),
175
+ role: "gridcell",
176
+ "aria-selected": isDaySelected(date, selectedDate),
177
+ onKeyDown: function onKeyDown(event) {
178
+ return handleDayKeyboardEvent(event, date);
179
+ },
180
+ onClick: function onClick() {
181
+ return onDateClickHandler(date);
182
+ },
183
+ selected: isDaySelected(date, selectedDate),
184
+ actualMonth: date.month === innerDate.get("month"),
185
+ autoFocus: date.day === dateToFocus.get("date") && date.month === dateToFocus.get("month"),
186
+ tabIndex: date.day === dateToFocus.get("date") && date.month === dateToFocus.get("month") ? 0 : -1,
187
+ isCurrentDay: today.get("date") === date.day && today.get("month") === innerDate.get("month") && today.get("month") === date.month && today.get("year") === innerDate.get("year")
188
+ }, date.day);
189
+ }));
176
190
  })));
177
191
  };
178
192
  var CalendarContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 0px 8px 8px 8px;\n width: 292px;\n font-family: ", ";\n font-size: ", ";\n color: ", ";\n font-weight: ", ";\n"])), function (props) {
@@ -184,9 +198,11 @@ var CalendarContainer = _styledComponents["default"].div(_templateObject || (_te
184
198
  }, function (props) {
185
199
  return props.theme.dateInput.pickerFontWeight;
186
200
  });
187
- var WeekHeaderCell = _styledComponents["default"].span(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n"])));
188
- var DayCellsContainer = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n gap: 4px;\n flex-wrap: wrap;\n justify-content: space-between;\n"])));
189
- var DayCell = _styledComponents["default"].button(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n justify-content: center;\n align-items: center;\n width: 36px;\n height: 36px;\n padding: 0;\n border: none;\n border-radius: 50%;\n cursor: pointer;\n font-family: ", ";\n font-size: ", ";\n color: ", ";\n font-weight: ", ";\n\n &:focus {\n outline: ", " solid 2px;\n }\n &:hover {\n background-color: ", ";\n color: ", ";\n }\n &:active {\n background-color: ", ";\n color: ", ";\n }\n\n ", "\n background-color: ", ";\n color: ", ";\n"])), function (props) {
201
+ var CalendarHeaderRow = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n"])));
202
+ var WeekHeaderCell = _styledComponents["default"].span(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n"])));
203
+ var MonthContainer = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n gap: 4px;\n flex-direction: column;\n justify-content: space-between;\n"])));
204
+ var WeekContainer = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n gap: 4px;\n justify-content: space-between;\n"])));
205
+ var DayCellButton = _styledComponents["default"].button(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: inline-flex;\n justify-content: center;\n align-items: center;\n width: 36px;\n height: 36px;\n padding: 0;\n border: none;\n border-radius: 50%;\n cursor: pointer;\n font-family: ", ";\n font-size: ", ";\n color: ", ";\n font-weight: ", ";\n\n &:focus {\n outline: ", " solid 2px;\n }\n &:hover {\n background-color: ", ";\n color: ", ";\n }\n &:active {\n background-color: ", ";\n color: ", ";\n }\n\n ", "\n background-color: ", ";\n color: ", ";\n"])), function (props) {
190
206
  return props.theme.dateInput.pickerFontFamily;
191
207
  }, function (props) {
192
208
  return props.theme.dateInput.pickerFontSize;
@@ -10,17 +10,6 @@ var _react2 = require("@testing-library/react");
10
10
  var _axeHelper = require("../../test/accessibility/axe-helper.js");
11
11
  var _DateInput = _interopRequireDefault(require("./DateInput"));
12
12
  var _disabledRules = require("../../test/accessibility/rules/specific/date-input/disabledRules.js");
13
- // TODO: REMOVE
14
-
15
- var disabledRules = {
16
- rules: _disabledRules.disabledRules.reduce(function (rulesObj, rule) {
17
- rulesObj[rule] = {
18
- enabled: false
19
- };
20
- return rulesObj;
21
- }, {})
22
- };
23
-
24
13
  // Mocking DOMRect for Radix Primitive Popover
25
14
  global.globalThis = global;
26
15
  global.DOMRect = {
@@ -41,7 +30,7 @@ global.ResizeObserver = /*#__PURE__*/function () {
41
30
  function ResizeObserver() {
42
31
  (0, _classCallCheck2["default"])(this, ResizeObserver);
43
32
  }
44
- (0, _createClass2["default"])(ResizeObserver, [{
33
+ return (0, _createClass2["default"])(ResizeObserver, [{
45
34
  key: "observe",
46
35
  value: function observe() {}
47
36
  }, {
@@ -51,8 +40,18 @@ global.ResizeObserver = /*#__PURE__*/function () {
51
40
  key: "disconnect",
52
41
  value: function disconnect() {}
53
42
  }]);
54
- return ResizeObserver;
55
43
  }();
44
+
45
+ // TODO: REMOVE
46
+
47
+ var disabledRules = {
48
+ rules: _disabledRules.disabledRules.reduce(function (rulesObj, rule) {
49
+ rulesObj[rule] = {
50
+ enabled: false
51
+ };
52
+ return rulesObj;
53
+ }, {})
54
+ };
56
55
  describe("DateInput component accessibility tests", function () {
57
56
  it("Should not have basic accessibility issues", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
58
57
  var _render, baseElement, results;
@@ -18,7 +18,7 @@ var _TextInput = _interopRequireDefault(require("../text-input/TextInput"));
18
18
  var _DatePicker = _interopRequireDefault(require("./DatePicker"));
19
19
  var Popover = _interopRequireWildcard(require("@radix-ui/react-popover"));
20
20
  var _customParseFormat = _interopRequireDefault(require("dayjs/plugin/customParseFormat"));
21
- var _templateObject;
21
+ var _templateObject, _templateObject2;
22
22
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
23
23
  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 && {}.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; }
24
24
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
@@ -97,7 +97,9 @@ var DxcDateInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
97
97
  actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.setAttribute("role", "combobox");
98
98
  actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.setAttribute("aria-expanded", isOpen);
99
99
  actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.setAttribute("aria-controls", calendarId);
100
- actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.setAttribute("aria-describedby", calendarId);
100
+ if (isOpen) {
101
+ actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.setAttribute("aria-describedby", calendarId);
102
+ }
101
103
  }
102
104
  }, [isOpen, disabled, calendarId]);
103
105
  var handleCalendarOnClick = function handleCalendarOnClick(newDate) {
@@ -174,7 +176,8 @@ var DxcDateInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
174
176
  };
175
177
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
176
178
  theme: colorsTheme
177
- }, /*#__PURE__*/_react["default"].createElement("div", {
179
+ }, /*#__PURE__*/_react["default"].createElement(DateInputContainer, {
180
+ size: size,
178
181
  ref: ref
179
182
  }, /*#__PURE__*/_react["default"].createElement(Popover.Root, {
180
183
  open: isOpen
@@ -219,4 +222,7 @@ var DxcDateInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
219
222
  }))))));
220
223
  });
221
224
  var StyledPopoverContent = (0, _styledComponents["default"])(Popover.Content)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n z-index: 2147483647;\n &:focus-visible {\n outline: none;\n }\n"])));
225
+ var DateInputContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n ", "\n"])), function (props) {
226
+ return props.size == "fillParent" && "width: 100%;";
227
+ });
222
228
  var _default = exports["default"] = DxcDateInput;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { userEvent, within, fireEvent, screen } from "@storybook/testing-library";
2
+ import { userEvent, within, fireEvent, screen } from "@storybook/test";
3
3
  import DxcDateInput from "./DateInput";
4
4
  import DxcDatePicker from "./DatePicker";
5
5
  import YearPicker from "./YearPicker";
@@ -17,11 +17,10 @@ export default {
17
17
  title: "Date Input",
18
18
  component: DxcDateInput,
19
19
  parameters: {
20
- // TODO: REMOVE
21
20
  a11y: {
22
21
  config: {
23
22
  rules: [
24
- ...disabledRules.map((ruleId) => ({ id: ruleId, reviewOnFail: true })),
23
+ ...disabledRules.map((ruleId) => ({ id: ruleId, enabled: false })),
25
24
  ...preview?.parameters?.a11y?.config?.rules,
26
25
  ],
27
26
  },
@@ -209,15 +208,15 @@ const DatePickerButtonStates = () => {
209
208
  <ThemeProvider theme={colorsTheme}>
210
209
  <ExampleContainer pseudoState="pseudo-focus">
211
210
  <Title title="Isolated calendar focused" theme="light" level={4} />
212
- <DxcDatePicker date={dayjs("06-04-1950", "DD-MM-YYYY")} onDateSelect={() => {}} id="test-calendar" />
211
+ <DxcDatePicker date={dayjs("06-04-1950", "DD-MM-YYYY")} onDateSelect={() => {}} id="test-calendar1" />
213
212
  </ExampleContainer>
214
213
  <ExampleContainer pseudoState="pseudo-hover">
215
214
  <Title title="Isolated calendar hovered" theme="light" level={4} />
216
- <DxcDatePicker date={dayjs("06-04-1950", "DD-MM-YYYY")} onDateSelect={() => {}} id="test-calendar" />
215
+ <DxcDatePicker date={dayjs("06-04-1950", "DD-MM-YYYY")} onDateSelect={() => {}} id="test-calendar2" />
217
216
  </ExampleContainer>
218
217
  <ExampleContainer pseudoState="pseudo-active">
219
218
  <Title title="Isolated calendar actived" theme="light" level={4} />
220
- <DxcDatePicker date={dayjs("06-04-1950", "DD-MM-YYYY")} onDateSelect={() => {}} id="test-calendar" />
219
+ <DxcDatePicker date={dayjs("06-04-1950", "DD-MM-YYYY")} onDateSelect={() => {}} id="test-calendar3" />
221
220
  </ExampleContainer>
222
221
  </ThemeProvider>
223
222
  </>
@@ -28,7 +28,7 @@ global.ResizeObserver = /*#__PURE__*/function () {
28
28
  function ResizeObserver() {
29
29
  (0, _classCallCheck2["default"])(this, ResizeObserver);
30
30
  }
31
- (0, _createClass2["default"])(ResizeObserver, [{
31
+ return (0, _createClass2["default"])(ResizeObserver, [{
32
32
  key: "observe",
33
33
  value: function observe() {}
34
34
  }, {
@@ -38,7 +38,6 @@ global.ResizeObserver = /*#__PURE__*/function () {
38
38
  key: "disconnect",
39
39
  value: function disconnect() {}
40
40
  }]);
41
- return ResizeObserver;
42
41
  }();
43
42
  describe("DateInput component tests", function () {
44
43
  test("Renders with correct label, helper text, optional, placeholder and clearable action", /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
@@ -308,7 +307,7 @@ describe("DateInput component tests", function () {
308
307
  _context10.next = 5;
309
308
  return _userEvent["default"].click(calendarAction);
310
309
  case 5:
311
- dayButton = getAllByText("10")[0].closest("button");
310
+ dayButton = getAllByText("10")[0];
312
311
  _react2.fireEvent.click(dayButton);
313
312
  d = (0, _dayjs["default"])();
314
313
  d = d.set("date", 10);
@@ -374,7 +373,7 @@ describe("DateInput component tests", function () {
374
373
  _context12.next = 5;
375
374
  return _userEvent["default"].click(calendarAction);
376
375
  case 5:
377
- dayButton = getAllByText("31")[0].closest("button");
376
+ dayButton = getAllByText("31")[0];
378
377
  _react2.fireEvent.click(dayButton);
379
378
  d = (0, _dayjs["default"])("10-08-2021", "DD-MM-YYYY", true);
380
379
  d = d.set("date", 31).set("month", 6);
@@ -444,31 +443,31 @@ describe("DateInput component tests", function () {
444
443
  _context14.next = 7;
445
444
  return _userEvent["default"].click(calendarAction);
446
445
  case 7:
447
- expect(document.activeElement === getAllByText("1")[0].closest("button")).toBeTruthy();
448
- _react2.fireEvent.keyDown(getAllByText("1")[0].closest("button"), {
446
+ expect(document.activeElement === getAllByText("1")[0]).toBeTruthy();
447
+ _react2.fireEvent.keyDown(getAllByText("1")[0], {
449
448
  key: "ArrowRight",
450
449
  code: "ArrowRight",
451
450
  keyCode: 39,
452
451
  charCode: 39
453
452
  });
454
- expect(document.activeElement === getAllByText("2")[0].closest("button")).toBeTruthy();
455
- _react2.fireEvent.keyDown(getAllByText("2")[0].closest("button"), {
453
+ expect(document.activeElement === getAllByText("2")[0]).toBeTruthy();
454
+ _react2.fireEvent.keyDown(getAllByText("2")[0], {
456
455
  key: "PageUp",
457
456
  code: "PageUp",
458
457
  keyCode: 33,
459
458
  charCode: 33
460
459
  });
461
- expect(document.activeElement === getAllByText("2")[0].closest("button")).toBeTruthy();
460
+ expect(document.activeElement === getAllByText("2")[0]).toBeTruthy();
462
461
  expect(getByText("December 2009")).toBeTruthy();
463
- _react2.fireEvent.keyDown(getAllByText("2")[0].closest("button"), {
462
+ _react2.fireEvent.keyDown(getAllByText("2")[0], {
464
463
  key: "PageDown",
465
464
  code: "PageDown",
466
465
  keyCode: 34,
467
466
  charCode: 34
468
467
  });
469
- expect(document.activeElement === getAllByText("2")[0].closest("button")).toBeTruthy();
468
+ expect(document.activeElement === getAllByText("2")[0]).toBeTruthy();
470
469
  expect(getByText("January 2010")).toBeTruthy();
471
- _react2.fireEvent.keyDown(getAllByText("2")[0].closest("button"), {
470
+ _react2.fireEvent.keyDown(getAllByText("2")[0], {
472
471
  key: "PageDown",
473
472
  code: "PageDown",
474
473
  keyCode: 34,
@@ -476,7 +475,7 @@ describe("DateInput component tests", function () {
476
475
  shiftKey: true
477
476
  });
478
477
  expect(getByText("January 2011")).toBeTruthy();
479
- _react2.fireEvent.keyDown(getAllByText("2")[0].closest("button"), {
478
+ _react2.fireEvent.keyDown(getAllByText("2")[0], {
480
479
  key: "PageUp",
481
480
  code: "PageUp",
482
481
  keyCode: 33,
@@ -484,14 +483,14 @@ describe("DateInput component tests", function () {
484
483
  shiftKey: true
485
484
  });
486
485
  expect(getByText("January 2010")).toBeTruthy();
487
- expect(document.activeElement === getAllByText("2")[0].closest("button")).toBeTruthy();
488
- _react2.fireEvent.click(getAllByText("2")[0].closest("button"), {
486
+ expect(document.activeElement === getAllByText("2")[0]).toBeTruthy();
487
+ _react2.fireEvent.click(getAllByText("2")[0], {
489
488
  key: " ",
490
489
  code: "Space",
491
490
  keyCode: 32,
492
491
  charCode: 32
493
492
  });
494
- expect(getAllByText("2")[0].closest("button").getAttribute("aria-selected")).toBe("true");
493
+ expect(getAllByText("2")[0].getAttribute("aria-selected")).toBe("true");
495
494
  _react2.fireEvent.keyDown(document, {
496
495
  key: "Escape",
497
496
  code: "Escape",
@@ -518,42 +517,42 @@ describe("DateInput component tests", function () {
518
517
  _context15.next = 7;
519
518
  return _userEvent["default"].click(calendarAction);
520
519
  case 7:
521
- expect(document.activeElement === getAllByText("1")[0].closest("button")).toBeTruthy();
522
- _react2.fireEvent.keyDown(getAllByText("1")[0].closest("button"), {
520
+ expect(document.activeElement === getAllByText("1")[0]).toBeTruthy();
521
+ _react2.fireEvent.keyDown(getAllByText("1")[0], {
523
522
  key: "ArrowDown",
524
523
  code: "ArrowDown",
525
524
  keyCode: 40,
526
525
  charCode: 40
527
526
  });
528
- expect(document.activeElement === getAllByText("8")[0].closest("button")).toBeTruthy();
529
- _react2.fireEvent.keyDown(getAllByText("8")[0].closest("button"), {
527
+ expect(document.activeElement === getAllByText("8")[0]).toBeTruthy();
528
+ _react2.fireEvent.keyDown(getAllByText("8")[0], {
530
529
  key: "ArrowDown",
531
530
  code: "ArrowDown",
532
531
  keyCode: 40,
533
532
  charCode: 40
534
533
  });
535
- expect(document.activeElement === getAllByText("15")[0].closest("button")).toBeTruthy();
536
- _react2.fireEvent.keyDown(getAllByText("15")[0].closest("button"), {
534
+ expect(document.activeElement === getAllByText("15")[0]).toBeTruthy();
535
+ _react2.fireEvent.keyDown(getAllByText("15")[0], {
537
536
  key: "ArrowUp",
538
537
  code: "ArrowUp",
539
538
  keyCode: 38,
540
539
  charCode: 38
541
540
  });
542
- expect(document.activeElement === getAllByText("8")[0].closest("button")).toBeTruthy();
543
- _react2.fireEvent.keyDown(getAllByText("8")[0].closest("button"), {
541
+ expect(document.activeElement === getAllByText("8")[0]).toBeTruthy();
542
+ _react2.fireEvent.keyDown(getAllByText("8")[0], {
544
543
  key: "End",
545
544
  code: "End",
546
545
  keyCode: 35,
547
546
  charCode: 35
548
547
  });
549
- expect(document.activeElement === getAllByText("10")[0].closest("button")).toBeTruthy();
550
- _react2.fireEvent.keyDown(getAllByText("10")[0].closest("button"), {
548
+ expect(document.activeElement === getAllByText("10")[0]).toBeTruthy();
549
+ _react2.fireEvent.keyDown(getAllByText("10")[0], {
551
550
  key: "Home",
552
551
  code: "Home",
553
552
  keyCode: 36,
554
553
  charCode: 36
555
554
  });
556
- _react2.fireEvent.keyDown(getAllByText("10")[0].closest("button"), {
555
+ _react2.fireEvent.keyDown(getAllByText("10")[0], {
557
556
  key: " ",
558
557
  code: "Space",
559
558
  keyCode: 32,
@@ -728,16 +727,16 @@ describe("DateInput component tests", function () {
728
727
  calendarAction = getByRole("combobox");
729
728
  expect(calendarAction.getAttribute("aria-autocomplete")).toBeNull();
730
729
  expect(calendarAction.getAttribute("aria-controls")).toBeTruthy();
731
- expect(calendarAction.getAttribute("aria-describedby")).toBeTruthy();
732
- expect(calendarAction.getAttribute("aria-describedby") === calendarAction.getAttribute("aria-controls")).toBeTruthy();
730
+ expect(calendarAction.getAttribute("aria-describedby")).toBeFalsy();
733
731
  expect(calendarAction.getAttribute("aria-expanded")).toBe("false");
734
- _context17.next = 13;
732
+ _context17.next = 12;
735
733
  return _userEvent["default"].click(calendarAction);
736
- case 13:
734
+ case 12:
737
735
  datePicker = getByRole("dialog");
738
736
  expect(datePicker.getAttribute("aria-modal")).toBe("true");
739
737
  expect(calendarAction.getAttribute("aria-expanded")).toBe("true");
740
738
  expect(document.getElementById(calendarAction.getAttribute("aria-describedby"))).toBeTruthy();
739
+ expect(calendarAction.getAttribute("aria-describedby") === calendarAction.getAttribute("aria-controls")).toBeTruthy();
741
740
  _context17.next = 19;
742
741
  return _userEvent["default"].type(calendarAction, "{esc}");
743
742
  case 19: