@dxc-technology/halstack-react 0.0.0-0af2013 → 0.0.0-0bb6041

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 (267) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1331 -5
  4. package/HalstackContext.js +179 -87
  5. package/accordion/Accordion.js +118 -110
  6. package/accordion/Accordion.stories.tsx +104 -16
  7. package/accordion/Accordion.test.js +10 -11
  8. package/accordion/types.d.ts +2 -1
  9. package/accordion-group/AccordionGroup.d.ts +4 -3
  10. package/accordion-group/AccordionGroup.js +25 -65
  11. package/accordion-group/AccordionGroup.stories.tsx +27 -1
  12. package/accordion-group/AccordionGroup.test.js +21 -46
  13. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  14. package/accordion-group/AccordionGroupAccordion.js +43 -0
  15. package/accordion-group/types.d.ts +8 -1
  16. package/alert/Alert.js +9 -10
  17. package/alert/Alert.stories.tsx +28 -0
  18. package/alert/Alert.test.js +1 -1
  19. package/badge/Badge.d.ts +1 -1
  20. package/badge/Badge.js +5 -3
  21. package/badge/types.d.ts +1 -0
  22. package/bleed/Bleed.js +1 -34
  23. package/bleed/Bleed.stories.tsx +95 -95
  24. package/bleed/types.d.ts +1 -1
  25. package/box/Box.js +25 -37
  26. package/box/Box.stories.tsx +15 -0
  27. package/box/Box.test.js +1 -1
  28. package/box/types.d.ts +1 -0
  29. package/bulleted-list/BulletedList.d.ts +7 -0
  30. package/bulleted-list/BulletedList.js +125 -0
  31. package/bulleted-list/BulletedList.stories.tsx +206 -0
  32. package/bulleted-list/types.d.ts +38 -0
  33. package/button/Button.js +52 -73
  34. package/button/Button.stories.tsx +159 -8
  35. package/button/Button.test.js +1 -1
  36. package/button/types.d.ts +5 -5
  37. package/card/Card.js +41 -44
  38. package/card/Card.stories.tsx +12 -13
  39. package/card/Card.test.js +1 -1
  40. package/card/types.d.ts +1 -0
  41. package/checkbox/Checkbox.d.ts +2 -2
  42. package/checkbox/Checkbox.js +97 -101
  43. package/checkbox/Checkbox.stories.tsx +131 -59
  44. package/checkbox/Checkbox.test.js +94 -17
  45. package/checkbox/types.d.ts +4 -0
  46. package/chip/Chip.js +28 -49
  47. package/chip/Chip.stories.tsx +121 -26
  48. package/chip/Chip.test.js +3 -5
  49. package/chip/types.d.ts +1 -1
  50. package/common/OpenSans.css +68 -80
  51. package/common/coreTokens.d.ts +146 -0
  52. package/common/coreTokens.js +167 -0
  53. package/common/utils.d.ts +1 -0
  54. package/common/utils.js +4 -4
  55. package/common/variables.d.ts +1482 -0
  56. package/common/variables.js +1095 -1106
  57. package/date-input/Calendar.d.ts +4 -0
  58. package/date-input/Calendar.js +258 -0
  59. package/date-input/DateInput.js +136 -236
  60. package/date-input/DateInput.stories.tsx +199 -33
  61. package/date-input/DateInput.test.js +494 -138
  62. package/date-input/DatePicker.d.ts +4 -0
  63. package/date-input/DatePicker.js +146 -0
  64. package/date-input/Icons.d.ts +6 -0
  65. package/date-input/Icons.js +75 -0
  66. package/date-input/YearPicker.d.ts +4 -0
  67. package/date-input/YearPicker.js +126 -0
  68. package/date-input/types.d.ts +51 -0
  69. package/dialog/Dialog.js +80 -69
  70. package/dialog/Dialog.stories.tsx +230 -123
  71. package/dialog/Dialog.test.js +334 -5
  72. package/dialog/types.d.ts +1 -0
  73. package/dropdown/Dropdown.d.ts +1 -1
  74. package/dropdown/Dropdown.js +246 -249
  75. package/dropdown/Dropdown.stories.tsx +245 -56
  76. package/dropdown/Dropdown.test.js +507 -110
  77. package/dropdown/DropdownMenu.d.ts +4 -0
  78. package/dropdown/DropdownMenu.js +74 -0
  79. package/dropdown/DropdownMenuItem.d.ts +4 -0
  80. package/dropdown/DropdownMenuItem.js +79 -0
  81. package/dropdown/types.d.ts +23 -3
  82. package/file-input/FileInput.d.ts +2 -2
  83. package/file-input/FileInput.js +180 -223
  84. package/file-input/FileInput.stories.tsx +122 -11
  85. package/file-input/FileInput.test.js +14 -14
  86. package/file-input/FileItem.d.ts +4 -14
  87. package/file-input/FileItem.js +44 -66
  88. package/file-input/types.d.ts +17 -0
  89. package/flex/Flex.d.ts +4 -0
  90. package/flex/Flex.js +71 -0
  91. package/flex/Flex.stories.tsx +112 -0
  92. package/flex/types.d.ts +97 -0
  93. package/footer/Footer.js +12 -12
  94. package/footer/Footer.stories.tsx +99 -1
  95. package/footer/Footer.test.js +14 -26
  96. package/footer/Icons.js +1 -1
  97. package/footer/types.d.ts +2 -1
  98. package/grid/Grid.d.ts +7 -0
  99. package/grid/Grid.js +91 -0
  100. package/grid/Grid.stories.tsx +219 -0
  101. package/grid/types.d.ts +115 -0
  102. package/header/Header.d.ts +3 -2
  103. package/header/Header.js +95 -92
  104. package/header/Header.stories.tsx +152 -9
  105. package/header/Header.test.js +2 -2
  106. package/header/Icons.js +2 -2
  107. package/header/types.d.ts +1 -0
  108. package/heading/Heading.js +1 -1
  109. package/heading/Heading.test.js +1 -1
  110. package/inset/Inset.js +1 -34
  111. package/inset/Inset.stories.tsx +37 -36
  112. package/inset/types.d.ts +1 -1
  113. package/layout/ApplicationLayout.d.ts +16 -6
  114. package/layout/ApplicationLayout.js +71 -118
  115. package/layout/ApplicationLayout.stories.tsx +84 -93
  116. package/layout/Icons.d.ts +5 -0
  117. package/layout/Icons.js +13 -2
  118. package/layout/SidenavContext.d.ts +5 -0
  119. package/layout/SidenavContext.js +19 -0
  120. package/layout/types.d.ts +19 -35
  121. package/link/Link.d.ts +2 -2
  122. package/link/Link.js +26 -52
  123. package/link/Link.stories.tsx +73 -6
  124. package/link/Link.test.js +2 -4
  125. package/link/types.d.ts +5 -6
  126. package/main.d.ts +8 -10
  127. package/main.js +42 -52
  128. package/nav-tabs/NavTabs.d.ts +8 -0
  129. package/nav-tabs/NavTabs.js +122 -0
  130. package/nav-tabs/NavTabs.stories.tsx +274 -0
  131. package/nav-tabs/NavTabs.test.js +82 -0
  132. package/nav-tabs/Tab.d.ts +4 -0
  133. package/nav-tabs/Tab.js +146 -0
  134. package/nav-tabs/types.d.ts +52 -0
  135. package/number-input/NumberInput.test.js +44 -8
  136. package/number-input/types.d.ts +1 -1
  137. package/package.json +17 -21
  138. package/paginator/Icons.d.ts +5 -0
  139. package/paginator/Icons.js +16 -28
  140. package/paginator/Paginator.js +20 -49
  141. package/paginator/Paginator.stories.tsx +24 -0
  142. package/paginator/Paginator.test.js +91 -39
  143. package/paragraph/Paragraph.d.ts +5 -0
  144. package/paragraph/Paragraph.js +38 -0
  145. package/paragraph/Paragraph.stories.tsx +44 -0
  146. package/password-input/PasswordInput.js +7 -4
  147. package/password-input/PasswordInput.test.js +15 -15
  148. package/password-input/types.d.ts +1 -1
  149. package/progress-bar/ProgressBar.js +61 -55
  150. package/progress-bar/ProgressBar.stories.jsx +47 -12
  151. package/progress-bar/ProgressBar.test.js +68 -23
  152. package/quick-nav/QuickNav.js +75 -22
  153. package/quick-nav/QuickNav.stories.tsx +145 -26
  154. package/quick-nav/types.d.ts +1 -1
  155. package/radio-group/Radio.d.ts +1 -1
  156. package/radio-group/Radio.js +46 -31
  157. package/radio-group/RadioGroup.js +37 -36
  158. package/radio-group/RadioGroup.stories.tsx +132 -18
  159. package/radio-group/RadioGroup.test.js +124 -97
  160. package/radio-group/types.d.ts +2 -2
  161. package/resultsetTable/Icons.d.ts +7 -0
  162. package/resultsetTable/Icons.js +51 -0
  163. package/resultsetTable/ResultsetTable.js +49 -108
  164. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  165. package/resultsetTable/ResultsetTable.test.js +61 -42
  166. package/resultsetTable/types.d.ts +1 -1
  167. package/select/Listbox.d.ts +1 -1
  168. package/select/Listbox.js +37 -16
  169. package/select/Option.js +11 -24
  170. package/select/Select.js +127 -116
  171. package/select/Select.stories.tsx +522 -133
  172. package/select/Select.test.js +474 -303
  173. package/select/types.d.ts +3 -6
  174. package/sidenav/Icons.d.ts +7 -0
  175. package/sidenav/Icons.js +51 -0
  176. package/sidenav/Sidenav.d.ts +6 -5
  177. package/sidenav/Sidenav.js +146 -44
  178. package/sidenav/Sidenav.stories.tsx +251 -151
  179. package/sidenav/Sidenav.test.js +25 -37
  180. package/sidenav/types.d.ts +52 -26
  181. package/slider/Slider.d.ts +2 -2
  182. package/slider/Slider.js +121 -97
  183. package/slider/Slider.stories.tsx +64 -1
  184. package/slider/Slider.test.js +122 -22
  185. package/slider/types.d.ts +4 -0
  186. package/spinner/Spinner.js +18 -24
  187. package/spinner/Spinner.stories.jsx +53 -27
  188. package/spinner/Spinner.test.js +1 -1
  189. package/switch/Switch.d.ts +2 -2
  190. package/switch/Switch.js +140 -70
  191. package/switch/Switch.stories.tsx +41 -30
  192. package/switch/Switch.test.js +145 -18
  193. package/switch/types.d.ts +4 -0
  194. package/table/Table.js +3 -3
  195. package/table/Table.stories.jsx +80 -1
  196. package/table/Table.test.js +2 -2
  197. package/tabs/Tab.d.ts +4 -0
  198. package/tabs/Tab.js +132 -0
  199. package/tabs/Tabs.js +358 -108
  200. package/tabs/Tabs.stories.tsx +119 -5
  201. package/tabs/Tabs.test.js +220 -10
  202. package/tabs/types.d.ts +13 -3
  203. package/tag/Tag.js +8 -10
  204. package/tag/Tag.stories.tsx +14 -1
  205. package/tag/Tag.test.js +1 -1
  206. package/tag/types.d.ts +1 -1
  207. package/text-input/Icons.d.ts +8 -0
  208. package/text-input/Icons.js +60 -0
  209. package/text-input/Suggestion.d.ts +4 -0
  210. package/text-input/Suggestion.js +84 -0
  211. package/text-input/Suggestions.d.ts +4 -0
  212. package/text-input/Suggestions.js +134 -0
  213. package/text-input/TextInput.js +219 -342
  214. package/text-input/TextInput.stories.tsx +280 -185
  215. package/text-input/TextInput.test.js +737 -726
  216. package/text-input/types.d.ts +33 -2
  217. package/textarea/Textarea.js +13 -23
  218. package/textarea/Textarea.stories.jsx +60 -1
  219. package/textarea/Textarea.test.js +2 -4
  220. package/textarea/types.d.ts +1 -1
  221. package/toggle-group/ToggleGroup.d.ts +2 -2
  222. package/toggle-group/ToggleGroup.js +7 -4
  223. package/toggle-group/ToggleGroup.stories.tsx +42 -0
  224. package/toggle-group/ToggleGroup.test.js +1 -1
  225. package/toggle-group/types.d.ts +2 -2
  226. package/typography/Typography.d.ts +4 -0
  227. package/typography/Typography.js +32 -0
  228. package/typography/Typography.stories.tsx +198 -0
  229. package/typography/types.d.ts +18 -0
  230. package/typography/types.js +5 -0
  231. package/useTheme.d.ts +1234 -1
  232. package/useTheme.js +1 -1
  233. package/useTranslatedLabels.d.ts +85 -0
  234. package/useTranslatedLabels.js +20 -0
  235. package/utils/BaseTypography.d.ts +21 -0
  236. package/utils/BaseTypography.js +108 -0
  237. package/utils/FocusLock.d.ts +13 -0
  238. package/utils/FocusLock.js +138 -0
  239. package/wizard/Wizard.js +37 -42
  240. package/wizard/Wizard.stories.tsx +40 -1
  241. package/wizard/Wizard.test.js +1 -1
  242. package/wizard/types.d.ts +3 -3
  243. package/common/RequiredComponent.js +0 -32
  244. package/list/List.d.ts +0 -4
  245. package/list/List.js +0 -47
  246. package/list/List.stories.tsx +0 -95
  247. package/list/types.d.ts +0 -7
  248. package/radio/Radio.d.ts +0 -4
  249. package/radio/Radio.js +0 -173
  250. package/radio/Radio.stories.tsx +0 -192
  251. package/radio/Radio.test.js +0 -71
  252. package/radio/types.d.ts +0 -54
  253. package/row/Row.d.ts +0 -3
  254. package/row/Row.js +0 -127
  255. package/row/Row.stories.tsx +0 -237
  256. package/row/types.d.ts +0 -28
  257. package/stack/Stack.d.ts +0 -3
  258. package/stack/Stack.js +0 -97
  259. package/stack/Stack.stories.tsx +0 -164
  260. package/stack/types.d.ts +0 -24
  261. package/text/Text.d.ts +0 -7
  262. package/text/Text.js +0 -30
  263. package/text/Text.stories.tsx +0 -19
  264. /package/{list → bulleted-list}/types.js +0 -0
  265. /package/{radio → flex}/types.js +0 -0
  266. /package/{row → grid}/types.js +0 -0
  267. /package/{stack → nav-tabs}/types.js +0 -0
@@ -17,23 +17,25 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
17
17
 
18
18
  var _react = _interopRequireWildcard(require("react"));
19
19
 
20
- var _pickers = require("@material-ui/pickers");
20
+ var _dayjs = _interopRequireDefault(require("dayjs"));
21
21
 
22
- var _core = require("@material-ui/core");
22
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
23
23
 
24
- var _ClickAwayListener = _interopRequireDefault(require("@material-ui/core/ClickAwayListener"));
24
+ var _useTheme = _interopRequireDefault(require("../useTheme"));
25
25
 
26
- var _Popover = _interopRequireDefault(require("@material-ui/core/Popover"));
26
+ var _useTranslatedLabels = _interopRequireDefault(require("../useTranslatedLabels"));
27
27
 
28
- var _dayjs = _interopRequireDefault(require("dayjs"));
28
+ var _TextInput = _interopRequireDefault(require("../text-input/TextInput"));
29
29
 
30
- var _dayjs2 = _interopRequireDefault(require("@date-io/dayjs"));
30
+ var _DatePicker = _interopRequireDefault(require("./DatePicker"));
31
31
 
32
- var _styledComponents = _interopRequireWildcard(require("styled-components"));
32
+ var Popover = _interopRequireWildcard(require("@radix-ui/react-popover"));
33
33
 
34
- var _useTheme = _interopRequireDefault(require("../useTheme"));
34
+ var _customParseFormat = _interopRequireDefault(require("dayjs/plugin/customParseFormat"));
35
35
 
36
- var _TextInput = _interopRequireDefault(require("../text-input/TextInput"));
36
+ var _uuid = require("uuid");
37
+
38
+ var _Icons = require("./Icons");
37
39
 
38
40
  var _templateObject;
39
41
 
@@ -45,11 +47,35 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
45
47
 
46
48
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
47
49
 
50
+ _dayjs["default"].extend(_customParseFormat["default"]);
51
+
48
52
  var getValueForPicker = function getValueForPicker(value, format) {
49
- return (0, _dayjs["default"])(value, format.toUpperCase(), true).format();
53
+ return (0, _dayjs["default"])(value, format.toUpperCase(), true);
54
+ };
55
+
56
+ var getDate = function getDate(value, format, lastValidYear, setLastValidYear) {
57
+ if ((value || value === "") && format.toUpperCase().includes("YYYY")) return getValueForPicker(value, format);else {
58
+ var newDate = getValueForPicker(value, format);
59
+
60
+ if (!lastValidYear) {
61
+ if (+newDate.format("YY") < 68) {
62
+ setLastValidYear(2000 + +newDate.format("YY"));
63
+ newDate = newDate.set("year", 2000 + +newDate.format("YY"));
64
+ } else {
65
+ setLastValidYear(1900 + +newDate.format("YY"));
66
+ newDate = newDate.set("year", 1900 + +newDate.format("YY"));
67
+ }
68
+ } else {
69
+ newDate = newDate.set("year", (lastValidYear <= 1999 ? 1900 : 2000) + +newDate.format("YY"));
70
+ }
71
+
72
+ return newDate;
73
+ }
50
74
  };
51
75
 
52
76
  var DxcDateInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
77
+ var _ref2;
78
+
53
79
  var label = _ref.label,
54
80
  name = _ref.name,
55
81
  _ref$defaultValue = _ref.defaultValue,
@@ -81,244 +107,138 @@ var DxcDateInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
81
107
  isOpen = _useState4[0],
82
108
  setIsOpen = _useState4[1];
83
109
 
84
- var _useState5 = (0, _react.useState)(null),
85
- _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
86
- anchorEl = _useState6[0],
87
- setAnchorEl = _useState6[1];
110
+ var _useState5 = (0, _react.useState)("date-picker-".concat((0, _uuid.v4)())),
111
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 1),
112
+ calendarId = _useState6[0];
113
+
114
+ var _useState7 = (0, _react.useState)(getValueForPicker((_ref2 = value !== null && value !== void 0 ? value : defaultValue) !== null && _ref2 !== void 0 ? _ref2 : "", format)),
115
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
116
+ dayjsDate = _useState8[0],
117
+ setDayjsDate = _useState8[1];
118
+
119
+ var _useState9 = (0, _react.useState)(innerValue || value ? !format.toUpperCase().includes("YYYY") && +getValueForPicker(value !== null && value !== void 0 ? value : innerValue, format).format("YY") < 68 ? 2000 : 1900 : undefined),
120
+ _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
121
+ lastValidYear = _useState10[0],
122
+ setLastValidYear = _useState10[1];
88
123
 
89
124
  var colorsTheme = (0, _useTheme["default"])();
90
- var refDate = ref || (0, _react.useRef)(null);
91
-
92
- var handleCalendarOnKeyDown = function handleCalendarOnKeyDown(event) {
93
- switch (event.keyCode) {
94
- case 27:
95
- // Esc
96
- event.preventDefault();
97
- setIsOpen(false);
98
- break;
125
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
126
+ var dateRef = (0, _react.useRef)(null);
127
+ (0, _react.useEffect)(function () {
128
+ if (value || value === "") setDayjsDate(getDate(value, format, lastValidYear, setLastValidYear));
129
+ }, [value, format, lastValidYear]);
130
+ (0, _react.useLayoutEffect)(function () {
131
+ if (!disabled) {
132
+ var actionButtonRef = dateRef === null || dateRef === void 0 ? void 0 : dateRef.current.querySelector("[title='Open calendar']");
133
+ actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.setAttribute("aria-haspopup", true);
134
+ actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.setAttribute("role", "combobox");
135
+ actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.setAttribute("aria-expanded", isOpen);
136
+ actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.setAttribute("aria-controls", calendarId);
137
+ actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.setAttribute("aria-describedby", calendarId);
99
138
  }
100
- };
139
+ }, [isOpen, disabled, calendarId]);
101
140
 
102
141
  var handleCalendarOnClick = function handleCalendarOnClick(newDate) {
103
- var newValue = (0, _dayjs["default"])(newDate).format(format.toUpperCase());
104
- value !== null && value !== void 0 ? value : setInnerValue(newValue);
105
- newDate !== null && newDate !== void 0 && newDate.toJSON() ? onChange === null || onChange === void 0 ? void 0 : onChange({
142
+ var newValue = newDate.format(format.toUpperCase());
143
+
144
+ if (!value) {
145
+ setDayjsDate(newDate);
146
+ setInnerValue(newValue);
147
+ }
148
+
149
+ setLastValidYear(newDate.get("year"));
150
+ newDate !== null && newDate !== void 0 && newDate.set("day", newDate.get("date")).toJSON() ? onChange === null || onChange === void 0 ? void 0 : onChange({
106
151
  value: newValue,
107
- date: newDate
152
+ date: newDate.toDate()
108
153
  }) : onChange === null || onChange === void 0 ? void 0 : onChange({
109
154
  value: newValue
110
155
  });
111
156
  };
112
157
 
113
- var handleIOnChange = function handleIOnChange(_ref2) {
114
- var newValue = _ref2.value,
115
- inputError = _ref2.error;
158
+ var handleIOnChange = function handleIOnChange(_ref3) {
159
+ var newValue = _ref3.value,
160
+ inputError = _ref3.error;
116
161
  value !== null && value !== void 0 ? value : setInnerValue(newValue);
117
- var dayjsDate = (0, _dayjs["default"])(newValue, format.toUpperCase(), true);
118
- var invalidDateMessage = newValue !== "" && !dayjsDate.isValid() && "Invalid date.";
162
+ var newDate = getDate(newValue, format, lastValidYear, setLastValidYear);
163
+ var invalidDateMessage = newValue !== "" && !newDate.isValid() && translatedLabels.dateInput.invalidDateErrorMessage;
119
164
  var callbackParams = inputError || invalidDateMessage ? {
120
165
  value: newValue,
121
166
  error: inputError || invalidDateMessage
122
167
  } : {
123
168
  value: newValue
124
169
  };
125
- dayjsDate.isValid() ? onChange === null || onChange === void 0 ? void 0 : onChange(_objectSpread(_objectSpread({}, callbackParams), {}, {
126
- date: dayjsDate.toDate()
127
- })) : onChange === null || onChange === void 0 ? void 0 : onChange(callbackParams);
170
+
171
+ if (newDate.isValid()) {
172
+ setDayjsDate(newDate);
173
+ onChange === null || onChange === void 0 ? void 0 : onChange(_objectSpread(_objectSpread({}, callbackParams), {}, {
174
+ date: newDate.toDate()
175
+ }));
176
+ } else {
177
+ onChange === null || onChange === void 0 ? void 0 : onChange(callbackParams);
178
+ setLastValidYear(function (validYear) {
179
+ var _dayjsDate$get;
180
+
181
+ return (_dayjsDate$get = dayjsDate === null || dayjsDate === void 0 ? void 0 : dayjsDate.get("year")) !== null && _dayjsDate$get !== void 0 ? _dayjsDate$get : validYear;
182
+ });
183
+ setDayjsDate(null);
184
+ }
128
185
  };
129
186
 
130
- var handleIOnBlur = function handleIOnBlur(_ref3) {
131
- var value = _ref3.value,
132
- inputError = _ref3.error;
133
- var dayjsDate = (0, _dayjs["default"])(value, format.toUpperCase(), true);
134
- var invalidDateMessage = value !== "" && !dayjsDate.isValid() && "Invalid date.";
187
+ var handleIOnBlur = function handleIOnBlur(_ref4) {
188
+ var value = _ref4.value,
189
+ inputError = _ref4.error;
190
+ var date = getDate(value, format, lastValidYear, setLastValidYear);
191
+ var invalidDateMessage = value !== "" && !date.isValid() && translatedLabels.dateInput.invalidDateErrorMessage;
135
192
  var callbackParams = inputError || invalidDateMessage ? {
136
193
  value: value,
137
194
  error: inputError || invalidDateMessage
138
195
  } : {
139
196
  value: value
140
197
  };
141
- dayjsDate.isValid() ? onBlur === null || onBlur === void 0 ? void 0 : onBlur(_objectSpread(_objectSpread({}, callbackParams), {}, {
142
- date: dayjsDate.toDate()
198
+ date.isValid() ? onBlur === null || onBlur === void 0 ? void 0 : onBlur(_objectSpread(_objectSpread({}, callbackParams), {}, {
199
+ date: date.toDate()
143
200
  })) : onBlur === null || onBlur === void 0 ? void 0 : onBlur(callbackParams);
144
201
  };
145
202
 
146
203
  var openCalendar = function openCalendar() {
147
- var dateBtn = refDate.current.getElementsByTagName("button")[0];
148
204
  setIsOpen(!isOpen);
149
- setAnchorEl(dateBtn);
150
205
  };
151
206
 
152
207
  var closeCalendar = function closeCalendar() {
153
208
  setIsOpen(false);
154
209
  };
155
210
 
156
- var calendarAction = {
157
- onClick: openCalendar,
158
- icon: /*#__PURE__*/_react["default"].createElement("svg", {
159
- xmlns: "http://www.w3.org/2000/svg",
160
- height: "24",
161
- viewBox: "0 0 24 24",
162
- width: "24",
163
- fill: "currentColor"
164
- }, /*#__PURE__*/_react["default"].createElement("path", {
165
- d: "M0 0h24v24H0z",
166
- fill: "none"
167
- }), /*#__PURE__*/_react["default"].createElement("path", {
168
- 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"
169
- }))
211
+ var handleDatePickerEscKeydown = function handleDatePickerEscKeydown(event) {
212
+ event.preventDefault();
213
+ closeCalendar();
214
+ dateRef === null || dateRef === void 0 ? void 0 : dateRef.current.getElementsByTagName("input")[0].focus();
170
215
  };
171
- var dateTheme = (0, _core.createMuiTheme)({
172
- overrides: {
173
- MuiTypography: {
174
- root: {
175
- fontFamily: "".concat(colorsTheme.dateInput.pickerFontFamily, " !important")
176
- }
177
- },
178
- MuiPickersYearSelection: {
179
- container: {
180
- color: colorsTheme.dateInput.pickerYearFontColor,
181
- "&::-webkit-scrollbar": {
182
- width: "3px"
183
- },
184
- "&::-webkit-scrollbar-track": {
185
- backgroundColor: "#D9D9D9",
186
- borderRadius: "3px"
187
- },
188
- "&::-webkit-scrollbar-thumb": {
189
- backgroundColor: "#666666",
190
- borderRadius: "3px"
191
- }
192
- }
193
- },
194
- MuiPickersToolbar: {
195
- toolbar: {
196
- backgroundColor: colorsTheme.dateInput.pickerBackgroundColor,
197
- color: colorsTheme.dateInput.pickerDayFontColor
198
- }
199
- },
200
- MuiIconButton: {
201
- root: {
202
- height: "36px",
203
- width: "36px",
204
- padding: "0px"
205
- }
206
- },
207
- MuiTouchRipple: {
208
- child: {
209
- opacity: "0"
210
- }
211
- },
212
- MuiButtonBase: {
213
- root: {
214
- "&:focus": {
215
- outline: colorsTheme.dateInput.pickerFocusColor + " solid 2px"
216
- }
217
- }
218
- },
219
- MuiPickersBasePicker: {
220
- pickerView: {
221
- minWidth: "unset",
222
- maxWidth: "unset",
223
- minHeight: "unset",
224
- padding: "0px 10px",
225
- height: colorsTheme.dateInput.pickerHeight,
226
- width: colorsTheme.dateInput.pickerWidth,
227
- backgroundColor: colorsTheme.dateInput.pickerBackgroundColor,
228
- fontFamily: colorsTheme.dateInput.pickerFontFamily
229
- }
230
- },
231
- MuiPickersToolbarText: {
232
- toolbarTxt: {
233
- color: colorsTheme.dateInput.pickerActualDateFontColor,
234
- fontFamily: colorsTheme.dateInput.pickerFontFamily,
235
- fontSize: "2rem"
236
- },
237
- toolbarBtnSelected: {
238
- color: colorsTheme.dateInput.pickerActualDateFontColor
239
- }
240
- },
241
- MuiPickersCalendarHeader: {
242
- transitionContainer: {
243
- color: colorsTheme.dateInput.pickerMonthFontColor
244
- },
245
- dayLabel: {
246
- color: colorsTheme.dateInput.pickerWeekFontColor,
247
- fontFamily: colorsTheme.dateInput.pickerFontFamily
248
- },
249
- switchHeader: {
250
- backgroundColor: "#ffffff",
251
- color: colorsTheme.dateInput.pickerDayFontColor
252
- },
253
- iconButton: {
254
- backgroundColor: colorsTheme.dateInput.pickerMonthArrowsBackgroundColor,
255
- "&:hover": {
256
- backgroundColor: colorsTheme.dateInput.pickerMonthArrowsBackgroundColor
257
- }
258
- }
259
- },
260
- MuiPickersCalendar: {
261
- week: {
262
- marginBottom: "2px"
263
- }
264
- },
265
- MuiPickersDay: {
266
- current: {
267
- color: colorsTheme.dateInput.pickerDayFontColor
268
- },
269
- day: {
270
- fontFamily: colorsTheme.dateInput.pickerFontFamily,
271
- color: colorsTheme.dateInput.pickerDayFontColor,
272
- "&:hover": {
273
- backgroundColor: colorsTheme.dateInput.pickerHoverDateBackgroundColor,
274
- color: colorsTheme.dateInput.pickerHoverDateFontColor
275
- }
276
- },
277
- daySelected: {
278
- backgroundColor: colorsTheme.dateInput.pickerSelectedDateBackgroundColor,
279
- color: colorsTheme.dateInput.pickerSelectedDateColor,
280
- "&:hover": {
281
- backgroundColor: colorsTheme.dateInput.pickerSelectedDateBackgroundColor,
282
- color: colorsTheme.dateInput.pickerSelectedDateColor,
283
- opacity: "1"
284
- }
285
- }
286
- },
287
- MuiPickersYear: {
288
- yearSelected: {
289
- color: colorsTheme.dateInput.pickerSelectedDateColor,
290
- backgroundColor: colorsTheme.dateInput.pickerSelectedDateBackgroundColor,
291
- margin: "0px 100px",
292
- borderRadius: "20px"
293
- },
294
- root: {
295
- "&:focus": {
296
- color: colorsTheme.dateInput.pickerHoverDateFontColor,
297
- backgroundColor: colorsTheme.dateInput.pickerHoverDateBackgroundColor
298
- }
299
- }
300
- },
301
- MuiPickersModal: {
302
- dialogAction: {
303
- color: "pink"
304
- }
305
- }
306
- }
307
- });
216
+
217
+ var handleDatePickerOnBlur = function handleDatePickerOnBlur(event) {
218
+ if (!(event !== null && event !== void 0 && event.currentTarget.contains(event.relatedTarget))) closeCalendar();
219
+ };
220
+
308
221
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
309
222
  theme: colorsTheme
310
- }, /*#__PURE__*/_react["default"].createElement(_core.MuiThemeProvider, {
311
- theme: dateTheme
312
- }, /*#__PURE__*/_react["default"].createElement(_pickers.MuiPickersUtilsProvider, {
313
- utils: _dayjs2["default"]
314
- }, /*#__PURE__*/_react["default"].createElement(StyledDPicker, null, /*#__PURE__*/_react["default"].createElement(_TextInput["default"], {
223
+ }, /*#__PURE__*/_react["default"].createElement("div", {
224
+ ref: ref
225
+ }, /*#__PURE__*/_react["default"].createElement(Popover.Root, {
226
+ open: isOpen
227
+ }, /*#__PURE__*/_react["default"].createElement(Popover.Trigger, {
228
+ asChild: true,
229
+ "aria-controls": undefined
230
+ }, /*#__PURE__*/_react["default"].createElement(_TextInput["default"], {
315
231
  label: label,
316
232
  name: name,
317
233
  defaultValue: defaultValue,
318
234
  value: value !== null && value !== void 0 ? value : innerValue,
319
235
  helperText: helperText,
320
236
  placeholder: placeholder ? format.toUpperCase() : null,
321
- action: calendarAction,
237
+ action: {
238
+ onClick: openCalendar,
239
+ icon: _Icons.calendarIcon,
240
+ title: "Open calendar"
241
+ },
322
242
  clearable: clearable,
323
243
  disabled: disabled,
324
244
  optional: optional,
@@ -329,41 +249,21 @@ var DxcDateInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
329
249
  margin: margin,
330
250
  size: size,
331
251
  tabIndex: tabIndex,
332
- ref: refDate
333
- }), /*#__PURE__*/_react["default"].createElement(_Popover["default"], {
334
- onKeyDown: handleCalendarOnKeyDown,
335
- open: isOpen,
336
- anchorEl: anchorEl,
337
- anchorOrigin: {
338
- vertical: "bottom",
339
- horizontal: "left"
340
- },
341
- transformOrigin: {
342
- vertical: "top",
343
- horizontal: "center"
344
- },
345
- PaperProps: {
346
- style: {
347
- marginTop: "10px"
348
- }
349
- }
350
- }, /*#__PURE__*/_react["default"].createElement(_ClickAwayListener["default"], {
351
- onClickAway: closeCalendar
352
- }, /*#__PURE__*/_react["default"].createElement(_core.Paper, {
353
- role: "dialog",
354
- "aria-modal": "true"
355
- }, /*#__PURE__*/_react["default"].createElement(_pickers.DatePicker, {
356
- variant: "static",
357
- value: getValueForPicker(value !== null && value !== void 0 ? value : innerValue, format),
358
- onChange: function onChange(date) {
359
- return handleCalendarOnClick(date);
360
- },
361
- format: format,
362
- disabled: disabled
363
- }))))))));
252
+ ref: dateRef
253
+ })), /*#__PURE__*/_react["default"].createElement(StyledContent, {
254
+ sideOffset: error ? -18 : 2,
255
+ align: "end",
256
+ "aria-modal": true,
257
+ onBlur: handleDatePickerOnBlur,
258
+ onEscapeKeyDown: handleDatePickerEscKeydown,
259
+ avoidCollisions: false
260
+ }, /*#__PURE__*/_react["default"].createElement(_DatePicker["default"], {
261
+ id: calendarId,
262
+ onDateSelect: handleCalendarOnClick,
263
+ date: dayjsDate
264
+ })))));
364
265
  });
365
266
 
366
- var StyledDPicker = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])([""])));
367
-
267
+ var StyledContent = (0, _styledComponents["default"])(Popover.Content)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n &:focus-visible {\n outline: none;\n }\n"])));
368
268
  var _default = DxcDateInput;
369
269
  exports["default"] = _default;