@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 { CalendarPropsType } from "./types";
3
+ declare const _default: React.MemoExoticComponent<({ selectedDate, innerDate, onInnerDateChange, onDaySelect, today, }: CalendarPropsType) => JSX.Element>;
4
+ export default _default;
@@ -0,0 +1,258 @@
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 _react = _interopRequireWildcard(require("react"));
17
+
18
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
19
+
20
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
21
+
22
+ var _main = require("../main");
23
+
24
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
25
+
26
+ 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); }
27
+
28
+ 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; }
29
+
30
+ var getDays = function getDays(innerDate) {
31
+ var monthDayCells = [];
32
+ var lastMonthNumberOfDays = innerDate.set("month", innerDate.get("month") - 1).endOf("month");
33
+ var firstDayOfMonth = innerDate.startOf("month").day() === 0 ? 6 : innerDate.startOf("month").day() - 1;
34
+ var daysInMonth = firstDayOfMonth + innerDate.daysInMonth();
35
+
36
+ for (var i = 0; i < 42; i++) {
37
+ if (i < firstDayOfMonth) {
38
+ monthDayCells.push({
39
+ day: lastMonthNumberOfDays.get("date") - firstDayOfMonth + i + 1,
40
+ month: innerDate.get("month") ? innerDate.get("month") - 1 : 11,
41
+ year: innerDate.set("month", innerDate.get("month") - 1).get("year")
42
+ });
43
+ } else if (i < daysInMonth) {
44
+ monthDayCells.push({
45
+ day: i - firstDayOfMonth + 1,
46
+ month: innerDate.get("month"),
47
+ year: innerDate.get("year")
48
+ });
49
+ } else {
50
+ monthDayCells.push({
51
+ day: i - daysInMonth + 1,
52
+ month: innerDate.get("month") === 11 ? 0 : innerDate.get("month") + 1,
53
+ year: innerDate.set("month", innerDate.get("month") + 1).get("year")
54
+ });
55
+ }
56
+ }
57
+
58
+ return monthDayCells;
59
+ };
60
+
61
+ var getDateToFocus = function getDateToFocus(selectedDate, innerDate, today) {
62
+ return (selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate.get("month")) === innerDate.get("month") && (selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate.get("year")) === innerDate.get("year") ? selectedDate : today.get("month") === innerDate.get("month") && today.get("year") === innerDate.get("year") ? today : innerDate.set("date", 1);
63
+ };
64
+
65
+ var isDaySelected = function isDaySelected(date, selectedDate) {
66
+ 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;
67
+ };
68
+
69
+ var Calendar = function Calendar(_ref) {
70
+ var selectedDate = _ref.selectedDate,
71
+ innerDate = _ref.innerDate,
72
+ onInnerDateChange = _ref.onInnerDateChange,
73
+ onDaySelect = _ref.onDaySelect,
74
+ today = _ref.today;
75
+
76
+ var _useState = (0, _react.useState)(getDateToFocus(selectedDate, innerDate, today)),
77
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
78
+ dateToFocus = _useState2[0],
79
+ setDateToFocus = _useState2[1];
80
+
81
+ var _useState3 = (0, _react.useState)(false),
82
+ _useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
83
+ isFocusable = _useState4[0],
84
+ setIsFocusable = _useState4[1];
85
+
86
+ var dayCells = (0, _react.useMemo)(function () {
87
+ return getDays(innerDate);
88
+ }, [innerDate]);
89
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
90
+ var weekDays = translatedLabels.calendar.daysShort;
91
+
92
+ var onDateClickHandler = function onDateClickHandler(date) {
93
+ var newDate = innerDate.set("month", date.month).set("date", date.day);
94
+ onDaySelect(newDate);
95
+ setDateToFocus(newDate);
96
+ };
97
+
98
+ var handleOnBlur = function handleOnBlur(event) {
99
+ if (!(event !== null && event !== void 0 && event.currentTarget.contains(event.relatedTarget))) {
100
+ setDateToFocus(getDateToFocus(selectedDate, innerDate, today));
101
+ }
102
+ };
103
+
104
+ var focusDate = function focusDate(date) {
105
+ if (innerDate.get("month") !== date.get("month") || innerDate.get("year") !== date.get("year")) {
106
+ onInnerDateChange(date);
107
+ }
108
+
109
+ setDateToFocus(date);
110
+ setIsFocusable(true);
111
+ };
112
+
113
+ (0, _react.useEffect)(function () {
114
+ if (isFocusable) {
115
+ var _document$getElementB;
116
+
117
+ (_document$getElementB = document.getElementById("day_".concat(dateToFocus.get("date"), "_month").concat(dateToFocus.get("month")))) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.focus();
118
+ setIsFocusable(false);
119
+ }
120
+ }, [dateToFocus, isFocusable]);
121
+ (0, _react.useEffect)(function () {
122
+ if (dateToFocus.get("month") !== innerDate.get("month") || dateToFocus.get("year") !== innerDate.get("year")) {
123
+ setDateToFocus(getDateToFocus(selectedDate, innerDate, today));
124
+ }
125
+ }, [innerDate, dateToFocus, selectedDate, today]);
126
+
127
+ var handleDayKeyboardEvent = function handleDayKeyboardEvent(event, date) {
128
+ var dateToFocusTemp = date.month === innerDate.get("month") ? innerDate.set("date", date.day) : innerDate.set("date", date.day).set("month", date.month);
129
+
130
+ switch (event.key) {
131
+ case "PageUp":
132
+ event.preventDefault();
133
+ event.shiftKey ? dateToFocusTemp = dateToFocusTemp.set("year", dateToFocusTemp.get("year") - 1) : dateToFocusTemp = dateToFocusTemp.set("month", dateToFocusTemp.get("month") - 1);
134
+ focusDate(dateToFocusTemp);
135
+ break;
136
+
137
+ case "PageDown":
138
+ event.preventDefault();
139
+ event.shiftKey ? dateToFocusTemp = dateToFocusTemp.set("year", dateToFocusTemp.get("year") + 1) : dateToFocusTemp = dateToFocusTemp.set("month", dateToFocusTemp.get("month") + 1);
140
+ focusDate(dateToFocusTemp);
141
+ break;
142
+
143
+ case "ArrowLeft":
144
+ event.preventDefault();
145
+ dateToFocusTemp = dateToFocusTemp.set("date", dateToFocusTemp.get("date") - 1);
146
+ focusDate(dateToFocusTemp);
147
+ break;
148
+
149
+ case "ArrowRight":
150
+ event.preventDefault();
151
+ dateToFocusTemp = dateToFocusTemp.set("date", dateToFocusTemp.get("date") + 1);
152
+ focusDate(dateToFocusTemp);
153
+ break;
154
+
155
+ case "ArrowUp":
156
+ event.preventDefault();
157
+ dateToFocusTemp = dateToFocusTemp.set("date", dateToFocusTemp.get("date") - 7);
158
+ focusDate(dateToFocusTemp);
159
+ break;
160
+
161
+ case "ArrowDown":
162
+ event.preventDefault();
163
+ dateToFocusTemp = dateToFocusTemp.set("date", dateToFocusTemp.get("date") + 7);
164
+ focusDate(dateToFocusTemp);
165
+ break;
166
+
167
+ case "Home":
168
+ event.preventDefault();
169
+ dateToFocus.get("day") !== 0 ? dateToFocusTemp = dateToFocusTemp.day(1) : dateToFocusTemp = innerDate.date(date.day - 1).day(1);
170
+ focusDate(dateToFocusTemp);
171
+ break;
172
+
173
+ case "End":
174
+ event.preventDefault();
175
+ dateToFocusTemp.get("day") !== 0 && (dateToFocusTemp = dateToFocusTemp.day(7));
176
+ focusDate(dateToFocusTemp);
177
+ break;
178
+
179
+ case " ":
180
+ event.preventDefault();
181
+ onDaySelect(dateToFocusTemp);
182
+ break;
183
+ }
184
+ };
185
+
186
+ return /*#__PURE__*/_react["default"].createElement(CalendarContainer, null, /*#__PURE__*/_react["default"].createElement(_main.DxcFlex, {
187
+ alignItems: "center",
188
+ justifyContent: "space-between"
189
+ }, weekDays.map(function (weekDay) {
190
+ return /*#__PURE__*/_react["default"].createElement(WeekHeaderCell, {
191
+ key: weekDay
192
+ }, weekDay);
193
+ })), /*#__PURE__*/_react["default"].createElement(DayCellsContainer, {
194
+ onBlur: handleOnBlur
195
+ }, dayCells.map(function (date, index) {
196
+ return /*#__PURE__*/_react["default"].createElement(DayCell, {
197
+ onKeyDown: function onKeyDown(event) {
198
+ return handleDayKeyboardEvent(event, date);
199
+ },
200
+ "aria-label": date.day,
201
+ id: "day_".concat(date.day, "_month").concat(date.month),
202
+ key: "day_".concat(index),
203
+ onClick: function onClick() {
204
+ return onDateClickHandler(date);
205
+ },
206
+ selected: isDaySelected(date, selectedDate),
207
+ actualMonth: date.month === innerDate.get("month"),
208
+ autoFocus: date.day === dateToFocus.get("date") && date.month === dateToFocus.get("month"),
209
+ "aria-selected": isDaySelected(date, selectedDate),
210
+ tabIndex: date.day === dateToFocus.get("date") && date.month === dateToFocus.get("month") ? 0 : -1,
211
+ isCurrentDay: today.get("date") === date.day && today.get("month") === innerDate.get("month") && today.get("month") === date.month && today.get("year") === innerDate.get("year")
212
+ }, date.day);
213
+ })));
214
+ };
215
+
216
+ 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) {
217
+ return props.theme.dateInput.pickerFontFamily;
218
+ }, function (props) {
219
+ return props.theme.dateInput.pickerFontSize;
220
+ }, function (props) {
221
+ return props.theme.dateInput.pickerFontColor;
222
+ }, function (props) {
223
+ return props.theme.dateInput.pickerFontWeight;
224
+ });
225
+
226
+ 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"])));
227
+
228
+ 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"])));
229
+
230
+ 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) {
231
+ return props.theme.dateInput.pickerFontFamily;
232
+ }, function (props) {
233
+ return props.theme.dateInput.pickerFontSize;
234
+ }, function (props) {
235
+ return props.theme.dateInput.pickerFontColor;
236
+ }, function (props) {
237
+ return props.theme.dateInput.pickerFontWeight;
238
+ }, function (props) {
239
+ return props.theme.dateInput.pickerFocusColor;
240
+ }, function (props) {
241
+ return props.selected ? props.theme.dateInput.pickerSelectedBackgroundColor : props.theme.dateInput.pickerHoverBackgroundColor;
242
+ }, function (props) {
243
+ return props.selected ? props.theme.dateInput.pickerSelectedFontColor : props.theme.dateInput.pickerHoverFontColor;
244
+ }, function (props) {
245
+ return props.theme.dateInput.pickerActiveBackgroundColor;
246
+ }, function (props) {
247
+ return props.theme.dateInput.pickerActiveFontColor;
248
+ }, function (props) {
249
+ return props.isCurrentDay && !props.selected && "border: ".concat(props.theme.dateInput.pickerCurrentDateBorderWidth, " solid ").concat(props.theme.dateInput.pickerCurrentDateBorderColor, ";");
250
+ }, function (props) {
251
+ return props.selected ? props.theme.dateInput.pickerSelectedBackgroundColor : "transparent";
252
+ }, function (props) {
253
+ return props.selected ? props.theme.dateInput.pickerSelectedFontColor : props.isCurrentDay ? props.theme.dateInput.pickerCurrentDateFontColor : !props.actualMonth ? props.theme.dateInput.pickerNonCurrentMonthFontColor : props.theme.dateInput.pickerFontColor;
254
+ });
255
+
256
+ var _default = /*#__PURE__*/_react["default"].memo(Calendar);
257
+
258
+ exports["default"] = _default;