@dxc-technology/halstack-react 0.0.0-090152f → 0.0.0-0a9608a

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 (95) hide show
  1. package/HalstackContext.js +7 -8
  2. package/accordion/Accordion.js +7 -13
  3. package/accordion/Accordion.stories.tsx +52 -12
  4. package/accordion/types.d.ts +1 -0
  5. package/accordion-group/types.d.ts +1 -0
  6. package/box/types.d.ts +1 -0
  7. package/button/Button.js +11 -13
  8. package/button/Button.stories.tsx +58 -1
  9. package/card/types.d.ts +1 -0
  10. package/checkbox/Checkbox.d.ts +2 -2
  11. package/checkbox/Checkbox.js +16 -15
  12. package/checkbox/Checkbox.stories.tsx +79 -59
  13. package/checkbox/types.d.ts +4 -0
  14. package/chip/Chip.js +11 -23
  15. package/chip/Chip.stories.tsx +41 -9
  16. package/common/variables.js +130 -126
  17. package/date-input/Calendar.d.ts +4 -0
  18. package/date-input/Calendar.js +246 -0
  19. package/date-input/DateInput.js +134 -237
  20. package/date-input/DateInput.stories.tsx +137 -38
  21. package/date-input/DateInput.test.js +494 -138
  22. package/date-input/DatePicker.d.ts +4 -0
  23. package/date-input/DatePicker.js +132 -0
  24. package/date-input/Icons.d.ts +6 -0
  25. package/date-input/Icons.js +75 -0
  26. package/date-input/YearPicker.d.ts +4 -0
  27. package/date-input/YearPicker.js +116 -0
  28. package/date-input/types.d.ts +51 -0
  29. package/dialog/types.d.ts +1 -0
  30. package/dropdown/Dropdown.js +38 -37
  31. package/dropdown/Dropdown.stories.tsx +175 -94
  32. package/dropdown/Dropdown.test.js +18 -24
  33. package/dropdown/DropdownMenu.js +8 -18
  34. package/dropdown/DropdownMenuItem.js +4 -15
  35. package/file-input/FileInput.d.ts +2 -2
  36. package/file-input/FileInput.js +177 -219
  37. package/file-input/FileInput.stories.tsx +38 -10
  38. package/file-input/FileInput.test.js +53 -12
  39. package/file-input/FileItem.d.ts +4 -14
  40. package/file-input/FileItem.js +38 -63
  41. package/file-input/types.d.ts +17 -0
  42. package/flex/Flex.d.ts +1 -1
  43. package/flex/Flex.js +31 -19
  44. package/flex/types.d.ts +14 -3
  45. package/footer/types.d.ts +1 -0
  46. package/header/Header.js +18 -20
  47. package/header/Header.stories.tsx +34 -1
  48. package/header/types.d.ts +1 -0
  49. package/link/Link.js +1 -1
  50. package/number-input/NumberInput.test.js +43 -7
  51. package/package.json +7 -12
  52. package/paginator/Icons.d.ts +5 -0
  53. package/paginator/Icons.js +16 -28
  54. package/paginator/Paginator.js +6 -12
  55. package/paginator/Paginator.test.js +18 -11
  56. package/password-input/PasswordInput.test.js +13 -12
  57. package/quick-nav/QuickNav.js +11 -12
  58. package/quick-nav/QuickNav.stories.tsx +97 -19
  59. package/radio-group/RadioGroup.js +9 -5
  60. package/radio-group/RadioGroup.test.js +116 -59
  61. package/resultsetTable/Icons.d.ts +7 -0
  62. package/resultsetTable/Icons.js +51 -0
  63. package/resultsetTable/ResultsetTable.js +48 -107
  64. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  65. package/resultsetTable/ResultsetTable.test.js +40 -63
  66. package/resultsetTable/types.d.ts +2 -2
  67. package/select/Listbox.d.ts +1 -1
  68. package/select/Listbox.js +5 -34
  69. package/select/Option.js +11 -24
  70. package/select/Select.js +46 -25
  71. package/select/Select.stories.tsx +209 -167
  72. package/select/Select.test.js +284 -231
  73. package/select/types.d.ts +2 -2
  74. package/sidenav/Sidenav.js +8 -10
  75. package/sidenav/Sidenav.stories.tsx +59 -50
  76. package/slider/Slider.d.ts +2 -2
  77. package/slider/Slider.js +15 -11
  78. package/slider/types.d.ts +4 -0
  79. package/spinner/Spinner.js +2 -2
  80. package/switch/Switch.d.ts +3 -3
  81. package/switch/Switch.js +5 -4
  82. package/switch/types.d.ts +6 -1
  83. package/table/Table.js +1 -1
  84. package/table/Table.test.js +1 -1
  85. package/tabs/Tab.js +3 -5
  86. package/tabs/Tabs.js +3 -3
  87. package/tabs/Tabs.stories.tsx +7 -5
  88. package/tabs-nav/NavTabs.stories.tsx +8 -6
  89. package/tabs-nav/Tab.js +5 -7
  90. package/text-input/Suggestion.js +32 -5
  91. package/text-input/TextInput.js +172 -162
  92. package/text-input/TextInput.stories.tsx +24 -4
  93. package/text-input/TextInput.test.js +658 -647
  94. package/text-input/types.d.ts +5 -0
  95. package/common/RequiredComponent.js +0 -32
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { DatePickerPropsType } from "./types";
3
+ declare const _default: React.MemoExoticComponent<({ date, onDateSelect, id }: DatePickerPropsType) => JSX.Element>;
4
+ export default _default;
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _dayjs = _interopRequireDefault(require("dayjs"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
19
+
20
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
21
+
22
+ var _Calendar = _interopRequireDefault(require("./Calendar"));
23
+
24
+ var _YearPicker = _interopRequireDefault(require("./YearPicker"));
25
+
26
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
27
+
28
+ var _Icons = require("./Icons");
29
+
30
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
31
+
32
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
+
34
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
35
+
36
+ var today = (0, _dayjs["default"])();
37
+
38
+ var DxcDatePicker = function DxcDatePicker(_ref) {
39
+ var date = _ref.date,
40
+ onDateSelect = _ref.onDateSelect,
41
+ id = _ref.id;
42
+
43
+ var _useState = (0, _react.useState)(date !== null && date !== void 0 && date.isValid() ? date : (0, _dayjs["default"])()),
44
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
45
+ innerDate = _useState2[0],
46
+ setInnerDate = _useState2[1];
47
+
48
+ var _useState3 = (0, _react.useState)("calendar"),
49
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
50
+ content = _useState4[0],
51
+ setContent = _useState4[1];
52
+
53
+ var selectedDate = date !== null && date !== void 0 && date.isValid() ? date : null;
54
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
55
+
56
+ var handleDateSelect = function handleDateSelect(date) {
57
+ setInnerDate(date);
58
+ onDateSelect(date);
59
+ };
60
+
61
+ var handleOnYearSelect = function handleOnYearSelect(year) {
62
+ setInnerDate(innerDate.set("year", year));
63
+ setContent("calendar");
64
+ };
65
+
66
+ var handleMonthChange = function handleMonthChange(date) {
67
+ setInnerDate(date);
68
+ };
69
+
70
+ return /*#__PURE__*/_react["default"].createElement(DatePicker, {
71
+ id: id
72
+ }, /*#__PURE__*/_react["default"].createElement(PickerHeader, null, /*#__PURE__*/_react["default"].createElement(HeaderButton, {
73
+ "aria-label": translatedLabels.calendar.previousMonthTitle,
74
+ title: translatedLabels.calendar.previousMonthTitle,
75
+ onClick: function onClick() {
76
+ return handleMonthChange(innerDate.set("month", innerDate.get("month") - 1));
77
+ }
78
+ }, _Icons.leftCaret), /*#__PURE__*/_react["default"].createElement(HeaderYearTrigger, {
79
+ "aria-live": "polite",
80
+ onClick: function onClick() {
81
+ return setContent(function (content) {
82
+ return content === "yearPicker" ? "calendar" : "yearPicker";
83
+ });
84
+ }
85
+ }, /*#__PURE__*/_react["default"].createElement(HeaderYearTriggerLabel, null, translatedLabels.calendar.months[innerDate.get("month")], " ", innerDate.format("YYYY")), content === "yearPicker" ? _Icons.upCaret : _Icons.downCaret), /*#__PURE__*/_react["default"].createElement(HeaderButton, {
86
+ "aria-label": translatedLabels.calendar.nextMonthTitle,
87
+ title: translatedLabels.calendar.nextMonthTitle,
88
+ onClick: function onClick() {
89
+ return handleMonthChange(innerDate.set("month", innerDate.get("month") + 1));
90
+ }
91
+ }, _Icons.rightCaret)), content === "calendar" && /*#__PURE__*/_react["default"].createElement(_Calendar["default"], {
92
+ innerDate: innerDate,
93
+ selectedDate: selectedDate,
94
+ onInnerDateChange: setInnerDate,
95
+ onDaySelect: handleDateSelect,
96
+ today: today
97
+ }), content === "yearPicker" && /*#__PURE__*/_react["default"].createElement(_YearPicker["default"], {
98
+ selectedDate: selectedDate,
99
+ onYearSelect: handleOnYearSelect,
100
+ today: today
101
+ }));
102
+ };
103
+
104
+ var DatePicker = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n padding-top: 16px;\n background-color: ", ";\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);\n border: 1px solid #bfbfbf;\n border-radius: 4px;\n width: fit-content;\n"])), function (props) {
105
+ return props.theme.dateInput.pickerBackgroundColor;
106
+ });
107
+
108
+ var PickerHeader = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n gap: 8px;\n align-items: center;\n justify-content: space-between;\n padding: 0px 16px;\n"])));
109
+
110
+ var HeaderButton = _styledComponents["default"].button(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0px;\n background-color: ", ";\n font-size: 1.5rem;\n border-radius: 4px;\n border: none;\n cursor: pointer;\n\n &:focus {\n outline: ", " solid 2px;\n }\n &:hover {\n background-color: ", ";\n }\n &:active {\n background-color: #4b1c7d;\n color: #ffffff;\n }\n svg {\n width: 24px;\n height: 24px;\n }\n"])), function (props) {
111
+ return props.theme.dateInput.pickerMonthArrowsBackgroundColor;
112
+ }, function (props) {
113
+ return props.theme.dateInput.pickerFocusColor;
114
+ }, function (props) {
115
+ return props.theme.dateInput.pickerHoverDateBackgroundColor;
116
+ });
117
+
118
+ var HeaderYearTrigger = _styledComponents["default"].button(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n gap: 8px;\n align-items: center;\n justify-content: center;\n height: 40px;\n width: 172px;\n color: ", ";\n background-color: transparent;\n border-radius: 4px;\n border: none;\n cursor: pointer;\n\n &:hover {\n background-color: ", ";\n }\n &:focus {\n outline: ", " solid 2px;\n }\n &:active {\n color: #ffffff;\n background-color: #4b1c7d;\n }\n"])), function (props) {
119
+ return props.theme.dateInput.pickerMonthFontColor;
120
+ }, function (props) {
121
+ return props.theme.dateInput.pickerHoverDateBackgroundColor;
122
+ }, function (props) {
123
+ return props.theme.dateInput.pickerFocusColor;
124
+ });
125
+
126
+ var HeaderYearTriggerLabel = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n font-family: ", ";\n font-size: 0.875rem;\n"])), function (props) {
127
+ return props.theme.dateInput.pickerFontFamily;
128
+ });
129
+
130
+ var _default = /*#__PURE__*/_react["default"].memo(DxcDatePicker);
131
+
132
+ exports["default"] = _default;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ export declare const calendarIcon: JSX.Element;
3
+ export declare const leftCaret: JSX.Element;
4
+ export declare const rightCaret: JSX.Element;
5
+ export declare const downCaret: JSX.Element;
6
+ export declare const upCaret: JSX.Element;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.upCaret = exports.rightCaret = exports.leftCaret = exports.downCaret = exports.calendarIcon = void 0;
9
+
10
+ var _react = _interopRequireDefault(require("react"));
11
+
12
+ var calendarIcon = /*#__PURE__*/_react["default"].createElement("svg", {
13
+ xmlns: "http://www.w3.org/2000/svg",
14
+ height: "24",
15
+ viewBox: "0 0 24 24",
16
+ width: "24",
17
+ fill: "currentColor"
18
+ }, /*#__PURE__*/_react["default"].createElement("path", {
19
+ d: "M0 0h24v24H0z",
20
+ fill: "none"
21
+ }), /*#__PURE__*/_react["default"].createElement("path", {
22
+ d: "M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V8h16v13z"
23
+ }));
24
+
25
+ exports.calendarIcon = calendarIcon;
26
+
27
+ var leftCaret = /*#__PURE__*/_react["default"].createElement("svg", {
28
+ fill: "currentColor",
29
+ focusable: "false",
30
+ viewBox: "0 0 24 24"
31
+ }, /*#__PURE__*/_react["default"].createElement("path", {
32
+ d: "M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z"
33
+ }), /*#__PURE__*/_react["default"].createElement("path", {
34
+ fill: "none",
35
+ d: "M0 0h24v24H0V0z"
36
+ }));
37
+
38
+ exports.leftCaret = leftCaret;
39
+
40
+ var rightCaret = /*#__PURE__*/_react["default"].createElement("svg", {
41
+ fill: "currentColor",
42
+ focusable: "false",
43
+ viewBox: "0 0 24 24"
44
+ }, /*#__PURE__*/_react["default"].createElement("path", {
45
+ d: "M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z"
46
+ }), /*#__PURE__*/_react["default"].createElement("path", {
47
+ fill: "none",
48
+ d: "M0 0h24v24H0V0z"
49
+ }));
50
+
51
+ exports.rightCaret = rightCaret;
52
+
53
+ var downCaret = /*#__PURE__*/_react["default"].createElement("svg", {
54
+ xmlns: "http://www.w3.org/2000/svg",
55
+ width: "24",
56
+ height: "24",
57
+ viewBox: "0 0 24 24"
58
+ }, /*#__PURE__*/_react["default"].createElement("path", {
59
+ d: "M7.5 10L12.5 15L17.5 10H7.5Z",
60
+ fill: "currentColor"
61
+ }));
62
+
63
+ exports.downCaret = downCaret;
64
+
65
+ var upCaret = /*#__PURE__*/_react["default"].createElement("svg", {
66
+ xmlns: "http://www.w3.org/2000/svg",
67
+ height: "24",
68
+ width: "24",
69
+ viewBox: "0 0 24 24"
70
+ }, /*#__PURE__*/_react["default"].createElement("path", {
71
+ d: "m7 14 5-5 5 5Z",
72
+ fill: "currentColor"
73
+ }));
74
+
75
+ exports.upCaret = upCaret;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { YearPickerPropsType } from "./types";
3
+ declare const _default: React.MemoExoticComponent<({ onYearSelect, selectedDate, today }: YearPickerPropsType) => JSX.Element>;
4
+ export default _default;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports["default"] = void 0;
11
+
12
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
+
14
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
+
16
+ var _dayjs = _interopRequireDefault(require("dayjs"));
17
+
18
+ var _react = _interopRequireWildcard(require("react"));
19
+
20
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
21
+
22
+ var _templateObject, _templateObject2;
23
+
24
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
+
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+
28
+ var getYearsArray = function getYearsArray() {
29
+ var yearList = [];
30
+
31
+ for (var i = 1899; i <= 2100; i++) {
32
+ yearList.push(i);
33
+ }
34
+
35
+ return yearList;
36
+ };
37
+
38
+ var yearList = getYearsArray();
39
+
40
+ var YearPicker = function YearPicker(_ref) {
41
+ var onYearSelect = _ref.onYearSelect,
42
+ selectedDate = _ref.selectedDate,
43
+ today = _ref.today;
44
+
45
+ var _useState = (0, _react.useState)(selectedDate ? selectedDate.get("year") : (0, _dayjs["default"])().get("year")),
46
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
47
+ yearToFocus = _useState2[0],
48
+ setYearToFocus = _useState2[1];
49
+
50
+ (0, _react.useEffect)(function () {
51
+ var _yearToFocusEl$scroll;
52
+
53
+ var yearToFocusEl = document.getElementById("year_".concat(yearToFocus));
54
+ yearToFocusEl === null || yearToFocusEl === void 0 ? void 0 : (_yearToFocusEl$scroll = yearToFocusEl.scrollIntoView) === null || _yearToFocusEl$scroll === void 0 ? void 0 : _yearToFocusEl$scroll.call(yearToFocusEl, {
55
+ block: "nearest",
56
+ inline: "start"
57
+ });
58
+ yearToFocusEl === null || yearToFocusEl === void 0 ? void 0 : yearToFocusEl.focus();
59
+ }, [yearToFocus]);
60
+
61
+ var handleDayKeyboardEvent = function handleDayKeyboardEvent(event) {
62
+ switch (event.key) {
63
+ case "ArrowUp":
64
+ setYearToFocus(function (prev) {
65
+ return prev > 1899 ? prev - 1 : prev;
66
+ });
67
+ break;
68
+
69
+ case "ArrowDown":
70
+ setYearToFocus(function (prev) {
71
+ return prev < 2100 ? prev + 1 : prev;
72
+ });
73
+ break;
74
+ }
75
+ };
76
+
77
+ return /*#__PURE__*/_react["default"].createElement(YearPickerContainer, null, yearList.map(function (year) {
78
+ return /*#__PURE__*/_react["default"].createElement(YearPickerButton, {
79
+ "aria-label": year,
80
+ key: year,
81
+ selected: (selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate.get("year")) === year,
82
+ "aria-selected": (selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate.get("year")) === year,
83
+ tabIndex: yearToFocus === year ? 0 : -1,
84
+ isCurrentYear: today.get("year") === year,
85
+ onKeyDown: function onKeyDown(event) {
86
+ return handleDayKeyboardEvent(event);
87
+ },
88
+ id: "year_".concat(year),
89
+ onClick: function onClick() {
90
+ onYearSelect(year);
91
+ }
92
+ }, year);
93
+ }));
94
+ };
95
+
96
+ var YearPickerContainer = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n gap: 4px;\n align-items: center;\n overflow-y: scroll;\n width: ", ";\n height: 312px;\n padding: 2px 8px 8px 8px;\n"])), function (props) {
97
+ return props.theme.dateInput.pickerWidth;
98
+ });
99
+
100
+ var YearPickerButton = _styledComponents["default"].button(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n width: 80px;\n min-height: 40px;\n font-size: 0.875rem;\n line-height: 21px;\n color: ", ";\n background-color: transparent;\n border: none;\n border-radius: 50px;\n cursor: pointer;\n\n ", "\n\n &:hover, &:focus, &:active {\n font-size: 1.5rem;\n line-height: 36px;\n }\n &:hover {\n color: ", ";\n background-color: ", ";\n }\n &:focus {\n color: ", ";\n outline: ", " solid 2px;\n }\n &:active {\n color: #ffffff;\n background-color: #4b1c7d !important;\n }\n"])), function (props) {
101
+ return props.theme.dateInput.pickerYearFontColor;
102
+ }, function (props) {
103
+ return props.selected ? "font-size: 1.5rem;\n line-height: 36px;\n color: ".concat(props.theme.dateInput.pickerSelectedDateColor, " !important;\n background-color: ").concat(props.theme.dateInput.pickerSelectedDateBackgroundColor, " !important;") : props.isCurrentYear ? "border: 1px solid #cbacec; \n color: #5f249f;" : "";
104
+ }, function (props) {
105
+ return props.theme.dateInput.pickerHoverDateFontColor;
106
+ }, function (props) {
107
+ return props.theme.dateInput.pickerHoverDateBackgroundColor;
108
+ }, function (props) {
109
+ return props.theme.dateInput.pickerHoverDateFontColor;
110
+ }, function (props) {
111
+ return props.theme.dateInput.pickerFocusColor;
112
+ });
113
+
114
+ var _default = /*#__PURE__*/_react["default"].memo(YearPicker);
115
+
116
+ exports["default"] = _default;
@@ -1,3 +1,4 @@
1
+ import { Dayjs } from "dayjs";
1
2
  declare type Space = "xxsmall" | "xsmall" | "small" | "medium" | "large" | "xlarge" | "xxlarge";
2
3
  declare type Margin = {
3
4
  top?: Space;
@@ -100,6 +101,56 @@ declare type Props = {
100
101
  */
101
102
  tabIndex?: number;
102
103
  };
104
+ export declare type DatePickerPropsType = {
105
+ /**
106
+ * Initial selected date value. If invalid the actual date will be used instead.
107
+ */
108
+ date: Dayjs;
109
+ /**
110
+ * Function called when a date is selected.
111
+ */
112
+ onDateSelect: (date: Dayjs) => void;
113
+ /**
114
+ * Id assigned to the date picker.
115
+ */
116
+ id: string;
117
+ };
118
+ export declare type CalendarPropsType = {
119
+ /**
120
+ * Initial selected date value. If invalid the actual date will be used instead.
121
+ */
122
+ selectedDate: Dayjs;
123
+ /**
124
+ * Date showed by the calendar.
125
+ */
126
+ innerDate: Dayjs;
127
+ /**
128
+ * Function called when the date showned needs to be updated
129
+ */
130
+ onInnerDateChange: (date: Dayjs) => void;
131
+ /**
132
+ * Function called when a date is selected.
133
+ */
134
+ onDaySelect: (date: Dayjs) => void;
135
+ /**
136
+ * Current date
137
+ */
138
+ today: Dayjs;
139
+ };
140
+ export declare type YearPickerPropsType = {
141
+ /**
142
+ * Initial selected date value. If invalid the actual date will be used instead.
143
+ */
144
+ selectedDate: Dayjs;
145
+ /**
146
+ * Function called when a year is selected.
147
+ */
148
+ onYearSelect: (year: number) => void;
149
+ /**
150
+ * Current date
151
+ */
152
+ today: Dayjs;
153
+ };
103
154
  /**
104
155
  * Reference to the component.
105
156
  */
package/dialog/types.d.ts CHANGED
@@ -26,6 +26,7 @@ declare type Props = {
26
26
  */
27
27
  onBackgroundClick?: () => void;
28
28
  /**
29
+ * @deprecated This prop will be removed shortly, consider using the Inset component for this purpose.
29
30
  * Size of the padding to be applied to the component ('xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge').
30
31
  * You can pass an object with 'top', 'bottom', 'left' and 'right' properties in order to specify different padding sizes.
31
32
  */
@@ -63,6 +63,28 @@ var downArrowIcon = /*#__PURE__*/_react["default"].createElement("svg", {
63
63
  fill: "none"
64
64
  }));
65
65
 
66
+ var useWidth = function useWidth(target) {
67
+ var _useState = (0, _react.useState)(0),
68
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
69
+ width = _useState2[0],
70
+ setWidth = _useState2[1];
71
+
72
+ (0, _react.useEffect)(function () {
73
+ if (target != null) {
74
+ setWidth(target.getBoundingClientRect().width);
75
+ var triggerObserver = new ResizeObserver(function (entries) {
76
+ var rect = entries[0].target.getBoundingClientRect();
77
+ setWidth(rect === null || rect === void 0 ? void 0 : rect.width);
78
+ });
79
+ triggerObserver.observe(target);
80
+ return function () {
81
+ triggerObserver.unobserve(target);
82
+ };
83
+ }
84
+ }, [target]);
85
+ return width;
86
+ };
87
+
66
88
  var DxcDropdown = function DxcDropdown(_ref) {
67
89
  var options = _ref.options,
68
90
  _ref$optionsIconPosit = _ref.optionsIconPosition,
@@ -85,21 +107,16 @@ var DxcDropdown = function DxcDropdown(_ref) {
85
107
  _ref$tabIndex = _ref.tabIndex,
86
108
  tabIndex = _ref$tabIndex === void 0 ? 0 : _ref$tabIndex;
87
109
 
88
- var _useState = (0, _react.useState)("trigger-".concat((0, _uuid.v4)())),
89
- _useState2 = (0, _slicedToArray2["default"])(_useState, 1),
90
- triggerId = _useState2[0];
110
+ var _useState3 = (0, _react.useState)("trigger-".concat((0, _uuid.v4)())),
111
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
112
+ triggerId = _useState4[0];
91
113
 
92
114
  var menuId = "menu-".concat(triggerId);
93
115
 
94
- var _useState3 = (0, _react.useState)(false),
95
- _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
96
- isOpen = _useState4[0],
97
- changeIsOpen = _useState4[1];
98
-
99
- var _useState5 = (0, _react.useState)(null),
116
+ var _useState5 = (0, _react.useState)(false),
100
117
  _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
101
- menuStyles = _useState6[0],
102
- setMenuStyles = _useState6[1];
118
+ isOpen = _useState6[0],
119
+ changeIsOpen = _useState6[1];
103
120
 
104
121
  var _useState7 = (0, _react.useState)(0),
105
122
  _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
@@ -109,6 +126,7 @@ var DxcDropdown = function DxcDropdown(_ref) {
109
126
  var colorsTheme = (0, _useTheme["default"])();
110
127
  var triggerRef = (0, _react.useRef)(null);
111
128
  var menuRef = (0, _react.useRef)(null);
129
+ var width = useWidth(triggerRef.current);
112
130
 
113
131
  var handleOnOpenMenu = function handleOnOpenMenu() {
114
132
  changeIsOpen(true);
@@ -226,23 +244,6 @@ var DxcDropdown = function DxcDropdown(_ref) {
226
244
  inline: "start"
227
245
  });
228
246
  }, [visualFocusIndex]);
229
-
230
- var handleMenuResize = function handleMenuResize() {
231
- var _triggerRef$current4;
232
-
233
- var rect = triggerRef === null || triggerRef === void 0 ? void 0 : (_triggerRef$current4 = triggerRef.current) === null || _triggerRef$current4 === void 0 ? void 0 : _triggerRef$current4.getBoundingClientRect();
234
- setMenuStyles({
235
- width: rect === null || rect === void 0 ? void 0 : rect.width
236
- });
237
- };
238
-
239
- (0, _react.useEffect)(function () {
240
- handleMenuResize();
241
- window.addEventListener("resize", handleMenuResize);
242
- return function () {
243
- window.removeEventListener("resize", handleMenuResize);
244
- };
245
- }, []);
246
247
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
247
248
  theme: colorsTheme.dropdown
248
249
  }, /*#__PURE__*/_react["default"].createElement(DropdownContainer, {
@@ -254,9 +255,9 @@ var DxcDropdown = function DxcDropdown(_ref) {
254
255
  }, /*#__PURE__*/_react["default"].createElement(Popover.Root, {
255
256
  open: isOpen
256
257
  }, /*#__PURE__*/_react["default"].createElement(Popover.Trigger, {
257
- asChild: true
258
+ asChild: true,
259
+ type: undefined
258
260
  }, /*#__PURE__*/_react["default"].createElement(DropdownTrigger, {
259
- opened: isOpen,
260
261
  onClick: handleTriggerOnClick,
261
262
  onKeyDown: handleTriggerOnKeyDown,
262
263
  onBlur: function onBlur(event) {
@@ -267,14 +268,12 @@ var DxcDropdown = function DxcDropdown(_ref) {
267
268
  margin: margin,
268
269
  size: size,
269
270
  id: triggerId,
270
- "aria-disabled": disabled,
271
271
  "aria-haspopup": "true",
272
+ "aria-controls": menuId,
272
273
  "aria-expanded": isOpen ? true : undefined,
273
274
  tabIndex: tabIndex,
274
275
  ref: triggerRef
275
276
  }, /*#__PURE__*/_react["default"].createElement(DropdownTriggerContent, null, label && iconPosition === "after" && /*#__PURE__*/_react["default"].createElement(DropdownTriggerLabel, null, label), icon && /*#__PURE__*/_react["default"].createElement(DropdownTriggerIcon, {
276
- label: label,
277
- iconPosition: iconPosition,
278
277
  disabled: disabled,
279
278
  role: typeof icon === "string" ? undefined : "img"
280
279
  }, typeof icon === "string" ? /*#__PURE__*/_react["default"].createElement("img", {
@@ -292,7 +291,9 @@ var DxcDropdown = function DxcDropdown(_ref) {
292
291
  visualFocusIndex: visualFocusIndex,
293
292
  menuItemOnClick: handleMenuItemOnClick,
294
293
  onKeyDown: handleMenuOnKeyDown,
295
- styles: menuStyles,
294
+ styles: {
295
+ width: width
296
+ },
296
297
  ref: menuRef
297
298
  })))));
298
299
  };
@@ -367,12 +368,12 @@ var DropdownTriggerLabel = _styledComponents["default"].span(_templateObject4 ||
367
368
  return props.theme.buttonFontWeight;
368
369
  });
369
370
 
370
- var DropdownTriggerIcon = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n width: ", ";\n height: ", ";\n color: ", ";\n\n img,\n svg {\n height: 100%;\n width: 100%;\n }\n"])), function (props) {
371
- return props.theme.buttonIconSize;
371
+ var DropdownTriggerIcon = _styledComponents["default"].span(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n color: ", ";\n\n img,\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {
372
+ return props.disabled ? props.theme.disabledColor : props.theme.buttonIconColor;
372
373
  }, function (props) {
373
374
  return props.theme.buttonIconSize;
374
375
  }, function (props) {
375
- return props.disabled ? props.theme.disabledColor : props.theme.buttonIconColor;
376
+ return props.theme.buttonIconSize;
376
377
  });
377
378
 
378
379
  var CaretIcon = _styledComponents["default"].span(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n color: ", ";\n\n svg {\n width: ", ";\n height: ", ";\n }\n"])), function (props) {