@dxc-technology/halstack-react 0.0.0-a5074e7 → 0.0.0-a5b9b2c

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 (97) hide show
  1. package/HalstackContext.js +90 -50
  2. package/accordion/Accordion.js +7 -13
  3. package/accordion/Accordion.stories.tsx +102 -13
  4. package/alert/Alert.stories.tsx +28 -0
  5. package/box/Box.stories.tsx +15 -0
  6. package/button/Button.js +11 -13
  7. package/button/Button.stories.tsx +150 -8
  8. package/checkbox/Checkbox.d.ts +2 -2
  9. package/checkbox/Checkbox.js +4 -3
  10. package/checkbox/Checkbox.stories.tsx +52 -0
  11. package/checkbox/types.d.ts +4 -0
  12. package/chip/Chip.js +16 -22
  13. package/chip/Chip.stories.tsx +96 -9
  14. package/common/variables.js +259 -249
  15. package/date-input/Calendar.d.ts +4 -0
  16. package/date-input/Calendar.js +258 -0
  17. package/date-input/DateInput.js +134 -237
  18. package/date-input/DateInput.stories.tsx +199 -33
  19. package/date-input/DateInput.test.js +494 -138
  20. package/date-input/DatePicker.d.ts +4 -0
  21. package/date-input/DatePicker.js +146 -0
  22. package/date-input/Icons.d.ts +6 -0
  23. package/date-input/Icons.js +75 -0
  24. package/date-input/YearPicker.d.ts +4 -0
  25. package/date-input/YearPicker.js +126 -0
  26. package/date-input/types.d.ts +51 -0
  27. package/dialog/Dialog.js +1 -3
  28. package/dialog/Dialog.stories.tsx +42 -20
  29. package/dropdown/Dropdown.js +35 -35
  30. package/dropdown/Dropdown.stories.tsx +210 -84
  31. package/dropdown/Dropdown.test.js +17 -22
  32. package/dropdown/DropdownMenu.js +8 -18
  33. package/dropdown/DropdownMenuItem.js +4 -15
  34. package/file-input/FileInput.d.ts +2 -2
  35. package/file-input/FileInput.js +25 -45
  36. package/file-input/FileInput.stories.tsx +96 -17
  37. package/file-input/FileInput.test.js +12 -12
  38. package/file-input/FileItem.d.ts +2 -12
  39. package/file-input/FileItem.js +28 -41
  40. package/file-input/types.d.ts +17 -0
  41. package/footer/Footer.stories.tsx +91 -0
  42. package/header/Header.js +18 -20
  43. package/header/Header.stories.tsx +149 -6
  44. package/link/Link.js +1 -1
  45. package/link/Link.stories.tsx +60 -0
  46. package/number-input/NumberInput.test.js +5 -6
  47. package/package.json +7 -12
  48. package/paginator/Icons.d.ts +5 -0
  49. package/paginator/Icons.js +16 -28
  50. package/paginator/Paginator.js +5 -11
  51. package/paginator/Paginator.stories.tsx +24 -0
  52. package/paginator/Paginator.test.js +17 -10
  53. package/progress-bar/ProgressBar.js +4 -4
  54. package/progress-bar/ProgressBar.stories.jsx +35 -2
  55. package/quick-nav/QuickNav.stories.tsx +14 -0
  56. package/radio-group/RadioGroup.stories.tsx +131 -18
  57. package/resultsetTable/Icons.d.ts +7 -0
  58. package/resultsetTable/Icons.js +51 -0
  59. package/resultsetTable/ResultsetTable.js +48 -105
  60. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  61. package/resultsetTable/ResultsetTable.test.js +40 -63
  62. package/resultsetTable/types.d.ts +2 -2
  63. package/select/Listbox.d.ts +1 -1
  64. package/select/Listbox.js +5 -34
  65. package/select/Option.js +11 -24
  66. package/select/Select.js +43 -24
  67. package/select/Select.stories.tsx +494 -150
  68. package/select/Select.test.js +17 -22
  69. package/select/types.d.ts +2 -2
  70. package/sidenav/Sidenav.js +8 -10
  71. package/sidenav/Sidenav.stories.tsx +148 -46
  72. package/slider/Slider.d.ts +2 -2
  73. package/slider/Slider.js +9 -8
  74. package/slider/Slider.stories.tsx +57 -0
  75. package/slider/types.d.ts +4 -0
  76. package/spinner/Spinner.js +2 -2
  77. package/spinner/Spinner.stories.jsx +27 -1
  78. package/switch/Switch.d.ts +3 -3
  79. package/switch/Switch.js +5 -4
  80. package/switch/Switch.stories.tsx +33 -0
  81. package/switch/types.d.ts +6 -1
  82. package/table/Table.stories.jsx +80 -1
  83. package/table/Table.test.js +1 -1
  84. package/tabs/Tab.js +3 -5
  85. package/tabs/Tabs.js +3 -3
  86. package/tabs/Tabs.stories.tsx +45 -5
  87. package/tabs-nav/NavTabs.stories.tsx +8 -6
  88. package/tabs-nav/Tab.js +5 -7
  89. package/tag/Tag.stories.tsx +14 -1
  90. package/text-input/Suggestion.js +32 -5
  91. package/text-input/TextInput.js +7 -11
  92. package/text-input/TextInput.stories.tsx +92 -4
  93. package/text-input/TextInput.test.js +587 -634
  94. package/textarea/Textarea.stories.jsx +60 -1
  95. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  96. package/wizard/Wizard.stories.tsx +20 -0
  97. 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,146 @@
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: ", ";\n border-radius: 4px;\n width: fit-content;\n font-family: ", ";\n font-size: ", ";\n color: ", ";\n font-weight: ", ";\n"])), function (props) {
105
+ return props.theme.dateInput.pickerBackgroundColor;
106
+ }, function (props) {
107
+ return "".concat(props.theme.dateInput.pickerBorderWidth, " ").concat(props.theme.dateInput.pickerBorderStyle, "\n ").concat(props.theme.dateInput.pickerBorderColor);
108
+ }, function (props) {
109
+ return props.theme.dateInput.pickerFontFamily;
110
+ }, function (props) {
111
+ return props.theme.dateInput.pickerFontSize;
112
+ }, function (props) {
113
+ return props.theme.dateInput.pickerFontColor;
114
+ }, function (props) {
115
+ return props.theme.dateInput.pickerFontWeight;
116
+ });
117
+
118
+ 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"])));
119
+
120
+ 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 color: ", ";\n background-color: ", ";\n border-radius: 4px;\n border: none;\n cursor: pointer;\n\n &:hover {\n color: ", ";\n background-color: ", ";\n }\n &:focus {\n outline: ", ";\n }\n &:active {\n color: ", ";\n background-color: ", ";\n }\n svg {\n width: 24px;\n height: 24px;\n }\n"])), function (props) {
121
+ return props.theme.dateInput.pickerHeaderFontColor;
122
+ }, function (props) {
123
+ return props.theme.dateInput.pickerHeaderBackgroundColor;
124
+ }, function (props) {
125
+ return props.theme.dateInput.pickerHeaderHoverFontColor;
126
+ }, function (props) {
127
+ return props.theme.dateInput.pickerHeaderHoverBackgroundColor;
128
+ }, function (props) {
129
+ return "".concat(props.theme.dateInput.pickerFocusColor, " solid\n ").concat(props.theme.dateInput.pickerFocusWidth);
130
+ }, function (props) {
131
+ return props.theme.dateInput.pickerHeaderActiveFontColor;
132
+ }, function (props) {
133
+ return props.theme.dateInput.pickerHeaderActiveBackgroundColor;
134
+ });
135
+
136
+ var HeaderYearTrigger = (0, _styledComponents["default"])(HeaderButton)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n gap: 8px;\n height: 40px;\n width: 172px;\n"])));
137
+
138
+ 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: ", ";\n"])), function (props) {
139
+ return props.theme.dateInput.pickerFontFamily;
140
+ }, function (props) {
141
+ return props.theme.dateInput.pickerHeaderFontSize;
142
+ });
143
+
144
+ var _default = /*#__PURE__*/_react["default"].memo(DxcDatePicker);
145
+
146
+ 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,126 @@
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: 292px;\n height: 312px;\n padding: 2px 8px 8px 8px;\n"])));
97
+
98
+ 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 line-height: 21px;\n background-color: transparent;\n border: none;\n border-radius: 50px;\n cursor: pointer;\n font-family: ", ";\n font-size: ", ";\n color: ", ";\n font-weight: ", ";\n\n ", "\n\n &:hover, &:focus, &:active {\n font-size: ", ";\n line-height: 36px;\n }\n &:hover {\n color: ", ";\n background-color: ", ";\n }\n &:focus {\n color: ", ";\n outline: ", ";\n }\n &:active {\n color: ", ";\n background-color: ", " !important;\n }\n"])), function (props) {
99
+ return props.theme.dateInput.pickerFontFamily;
100
+ }, function (props) {
101
+ return props.theme.dateInput.pickerFontSize;
102
+ }, function (props) {
103
+ return props.theme.dateInput.pickerFontColor;
104
+ }, function (props) {
105
+ return props.theme.dateInput.pickerFontWeight;
106
+ }, function (props) {
107
+ return props.selected ? "font-size: ".concat(props.theme.dateInput.pickerInteractedYearFontSize, ";\n line-height: 36px;\n color: ").concat(props.theme.dateInput.pickerSelectedFontColor, " !important;\n background-color: ").concat(props.theme.dateInput.pickerSelectedBackgroundColor, " !important;") : props.isCurrentYear ? "border: 1px solid ".concat(props.theme.dateInput.pickerCurrentDateBorderColor, "; \n color: ").concat(props.theme.dateInput.pickerCurrentYearFontColor, ";") : "";
108
+ }, function (props) {
109
+ return props.theme.dateInput.pickerInteractedYearFontSize;
110
+ }, function (props) {
111
+ return props.theme.dateInput.pickerHoverFontColor;
112
+ }, function (props) {
113
+ return props.theme.dateInput.pickerHoverBackgroundColor;
114
+ }, function (props) {
115
+ return props.theme.dateInput.pickerHoverFontColor;
116
+ }, function (props) {
117
+ return "".concat(props.theme.dateInput.pickerFocusColor, " solid\n ").concat(props.theme.dateInput.pickerFocusWidth);
118
+ }, function (props) {
119
+ return props.theme.dateInput.pickerActiveFontColor;
120
+ }, function (props) {
121
+ return props.theme.dateInput.pickerActiveBackgroundColor;
122
+ });
123
+
124
+ var _default = /*#__PURE__*/_react["default"].memo(YearPicker);
125
+
126
+ 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/Dialog.js CHANGED
@@ -102,10 +102,8 @@ var BodyStyle = (0, _styledComponents.createGlobalStyle)(_templateObject || (_te
102
102
 
103
103
  var DialogContainer = _styledComponents["default"].div(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n align-items: center;\n justify-content: center;\n position: fixed;\n inset: 0px;\n height: 100%;\n z-index: 1300;\n"])));
104
104
 
105
- var Overlay = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n position: fixed;\n inset: 0px;\n height: 100%;\n background-color: ", ";\n opacity: ", ";\n"])), function (props) {
105
+ var Overlay = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n position: fixed;\n inset: 0px;\n height: 100%;\n background-color: ", ";\n"])), function (props) {
106
106
  return props.theme.overlayColor;
107
- }, function (props) {
108
- return props.theme.overlayOpacity;
109
107
  });
110
108
 
111
109
  var Dialog = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n display: flex;\n justify-content: space-between;\n z-index: 1300;\n background-color: ", ";\n font-family: ", ";\n font-size: ", ";\n font-weight: ", ";\n ", "\n box-sizing: border-box;\n box-shadow: ", ";\n border-radius: 4px;\n position: relative;\n\n @media (min-width: ", "rem) {\n max-width: 80%;\n min-width: 800px;\n }\n\n @media (max-width: ", "rem) {\n //mobile phones\n max-width: 92%;\n min-width: 92%;\n }\n"])), function (props) {
@@ -6,18 +6,26 @@ import DxcFlex from "../flex/Flex";
6
6
  import DxcInset from "../inset/Inset";
7
7
  import Title from "../../.storybook/components/Title";
8
8
  import ExampleContainer from "../../.storybook/components/ExampleContainer";
9
+ import { HalstackProvider } from "../HalstackContext";
9
10
 
10
11
  export default {
11
12
  title: "Dialog ",
12
13
  component: DxcDialog,
13
14
  };
14
15
 
16
+ const opinionatedTheme = {
17
+ dialog: {
18
+ baseColor: "#ffffff",
19
+ closeIconColor: "#000000",
20
+ overlayColor: "#000000b3",
21
+ },
22
+ };
23
+
15
24
  export const DefaultDialog = () => (
16
25
  <>
17
26
  <ExampleContainer expanded={true}>
18
27
  <Title title="Default dialog" theme="light" level={4} />
19
28
  <DxcDialog>
20
- {" "}
21
29
  <p>
22
30
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
23
31
  placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
@@ -28,12 +36,35 @@ export const DefaultDialog = () => (
28
36
  fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
29
37
  augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
30
38
  dignissim, pharetra neque molestie, molestie lectus.
31
- </p>{" "}
39
+ </p>
32
40
  </DxcDialog>
33
41
  </ExampleContainer>
34
42
  </>
35
43
  );
36
44
 
45
+ export const DefaultDialogOpinionated = () => (
46
+ <>
47
+ <ExampleContainer expanded={true}>
48
+ <Title title="Default dialog" theme="light" level={4} />
49
+ <HalstackProvider theme={opinionatedTheme}>
50
+ <DxcDialog>
51
+ <p>
52
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
53
+ placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
54
+ elit. Donec congue laoreet orci, nec elementum dolor consequat quis. Curabitur rhoncus justo sed dapibus
55
+ tincidunt. Vestibulum cursus ut risus sit amet congue. Nunc luctus, urna ullamcorper facilisis Jia Le, risus
56
+ eros aliquam erat, ut efficitur ante neque id odio. Nam orci leo, dignissim sit amet dolor ut, congue
57
+ gravida enim. Donec rhoncus aliquam nisl, ac cursus enim bibendum vitae. Nunc sit amet elit ornare,
58
+ malesuada urna eu, fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam
59
+ sit amet maximus augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo.
60
+ Praesent quis nunc dignissim, pharetra neque molestie, molestie lectus.
61
+ </p>
62
+ </DxcDialog>
63
+ </HalstackProvider>
64
+ </ExampleContainer>
65
+ </>
66
+ );
67
+
37
68
  export const DialogWithInputs = () => (
38
69
  <>
39
70
  <ExampleContainer expanded={true}>
@@ -82,7 +113,6 @@ export const DialogWithoutOverlay = () => (
82
113
  <ExampleContainer expanded={true}>
83
114
  <Title title="Dialog Without Overlay" theme="light" level={4} />
84
115
  <DxcDialog overlay={false}>
85
- {" "}
86
116
  <p>
87
117
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
88
118
  placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
@@ -93,7 +123,7 @@ export const DialogWithoutOverlay = () => (
93
123
  fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
94
124
  augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
95
125
  dignissim, pharetra neque molestie, molestie lectus.
96
- </p>{" "}
126
+ </p>
97
127
  </DxcDialog>
98
128
  </ExampleContainer>
99
129
  );
@@ -102,7 +132,6 @@ export const DialogCloseVisibleFalse = () => (
102
132
  <ExampleContainer expanded={true}>
103
133
  <Title title="Dialog Close Visible" theme="dark" level={4} />
104
134
  <DxcDialog isCloseVisible={false}>
105
- {" "}
106
135
  <p>
107
136
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
108
137
  placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
@@ -113,7 +142,7 @@ export const DialogCloseVisibleFalse = () => (
113
142
  fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
114
143
  augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
115
144
  dignissim, pharetra neque molestie, molestie lectus.
116
- </p>{" "}
145
+ </p>
117
146
  </DxcDialog>
118
147
  </ExampleContainer>
119
148
  );
@@ -122,7 +151,6 @@ export const DialogWithXxsmallPadding = () => (
122
151
  <ExampleContainer expanded={true}>
123
152
  <Title title="Dialog With Xxsmall Padding" theme="light" level={4} />
124
153
  <DxcDialog padding={"xxsmall"}>
125
- {" "}
126
154
  <p>
127
155
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
128
156
  placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
@@ -133,7 +161,7 @@ export const DialogWithXxsmallPadding = () => (
133
161
  fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
134
162
  augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
135
163
  dignissim, pharetra neque molestie, molestie lectus.
136
- </p>{" "}
164
+ </p>
137
165
  </DxcDialog>
138
166
  </ExampleContainer>
139
167
  );
@@ -142,7 +170,6 @@ export const DialogWithXsmallPadding = () => (
142
170
  <ExampleContainer expanded={true}>
143
171
  <Title title="Dialog With Xsmall Padding" theme="light" level={4} />
144
172
  <DxcDialog padding={"xsmall"}>
145
- {" "}
146
173
  <p>
147
174
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
148
175
  placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
@@ -153,7 +180,7 @@ export const DialogWithXsmallPadding = () => (
153
180
  fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
154
181
  augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
155
182
  dignissim, pharetra neque molestie, molestie lectus.
156
- </p>{" "}
183
+ </p>
157
184
  </DxcDialog>
158
185
  </ExampleContainer>
159
186
  );
@@ -162,7 +189,6 @@ export const DialogWithSmallPadding = () => (
162
189
  <ExampleContainer expanded={true}>
163
190
  <Title title="Dialog With Small Padding" theme="light" level={4} />
164
191
  <DxcDialog padding={"small"}>
165
- {" "}
166
192
  <p>
167
193
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
168
194
  placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
@@ -173,7 +199,7 @@ export const DialogWithSmallPadding = () => (
173
199
  fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
174
200
  augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
175
201
  dignissim, pharetra neque molestie, molestie lectus.
176
- </p>{" "}
202
+ </p>
177
203
  </DxcDialog>
178
204
  </ExampleContainer>
179
205
  );
@@ -182,7 +208,6 @@ export const DialogWithMediumPadding = () => (
182
208
  <ExampleContainer expanded={true}>
183
209
  <Title title="Dialog With Medium Padding" theme="light" level={4} />
184
210
  <DxcDialog padding={"medium"}>
185
- {" "}
186
211
  <p>
187
212
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
188
213
  placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
@@ -193,7 +218,7 @@ export const DialogWithMediumPadding = () => (
193
218
  fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
194
219
  augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
195
220
  dignissim, pharetra neque molestie, molestie lectus.
196
- </p>{" "}
221
+ </p>
197
222
  </DxcDialog>
198
223
  </ExampleContainer>
199
224
  );
@@ -202,7 +227,6 @@ export const DialogWithLargePadding = () => (
202
227
  <ExampleContainer expanded={true}>
203
228
  <Title title="Dialog With Large Padding" theme="light" level={4} />
204
229
  <DxcDialog padding={"large"}>
205
- {" "}
206
230
  <p>
207
231
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
208
232
  placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
@@ -213,7 +237,7 @@ export const DialogWithLargePadding = () => (
213
237
  fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
214
238
  augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
215
239
  dignissim, pharetra neque molestie, molestie lectus.
216
- </p>{" "}
240
+ </p>
217
241
  </DxcDialog>
218
242
  </ExampleContainer>
219
243
  );
@@ -222,7 +246,6 @@ export const DialogWithXlargePadding = () => (
222
246
  <ExampleContainer expanded={true}>
223
247
  <Title title="Dialog With Xlarge Padding" theme="light" level={4} />
224
248
  <DxcDialog padding={"xlarge"}>
225
- {" "}
226
249
  <p>
227
250
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
228
251
  placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
@@ -233,7 +256,7 @@ export const DialogWithXlargePadding = () => (
233
256
  fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
234
257
  augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
235
258
  dignissim, pharetra neque molestie, molestie lectus.
236
- </p>{" "}
259
+ </p>
237
260
  </DxcDialog>
238
261
  </ExampleContainer>
239
262
  );
@@ -242,7 +265,6 @@ export const DialogWithXxlargePadding = () => (
242
265
  <ExampleContainer expanded={true}>
243
266
  <Title title="Dialog With Xxlarge Padding" theme="light" level={4} />
244
267
  <DxcDialog padding={"xxlarge"}>
245
- {" "}
246
268
  <p>
247
269
  Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi egestas luctus porttitor. Donec massa magna,
248
270
  placerat sit amet felis eget, venenatis fringilla ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing
@@ -253,7 +275,7 @@ export const DialogWithXxlargePadding = () => (
253
275
  fringilla mauris. Vivamus bibendum turpis est, id elementum purus euismod sit amet. Etiam sit amet maximus
254
276
  augue. Vivamus erat sapien, ultricies fringilla tellus id, condimentum blandit justo. Praesent quis nunc
255
277
  dignissim, pharetra neque molestie, molestie lectus.
256
- </p>{" "}
278
+ </p>
257
279
  </DxcDialog>
258
280
  </ExampleContainer>
259
281
  );