@dxc-technology/halstack-react 0.0.0-0271b6e → 0.0.0-0276e5a

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