@dxc-technology/halstack-react 0.0.0-2b773b3 → 0.0.0-2bca710

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 (290) hide show
  1. package/BackgroundColorContext.d.ts +2 -2
  2. package/BackgroundColorContext.js +1 -1
  3. package/HalstackContext.d.ts +1348 -0
  4. package/HalstackContext.js +335 -0
  5. package/README.md +47 -0
  6. package/accordion/Accordion.d.ts +1 -1
  7. package/accordion/Accordion.js +108 -134
  8. package/accordion/Accordion.stories.tsx +108 -118
  9. package/accordion/Accordion.test.js +10 -11
  10. package/accordion/types.d.ts +1 -12
  11. package/accordion-group/AccordionGroup.d.ts +4 -3
  12. package/accordion-group/AccordionGroup.js +25 -65
  13. package/accordion-group/AccordionGroup.stories.tsx +93 -66
  14. package/accordion-group/AccordionGroup.test.js +27 -62
  15. package/accordion-group/AccordionGroupAccordion.d.ts +4 -0
  16. package/accordion-group/AccordionGroupAccordion.js +43 -0
  17. package/accordion-group/types.d.ts +7 -12
  18. package/alert/Alert.js +9 -10
  19. package/alert/Alert.stories.tsx +28 -0
  20. package/alert/Alert.test.js +1 -1
  21. package/badge/Badge.d.ts +1 -1
  22. package/badge/Badge.js +5 -3
  23. package/badge/types.d.ts +1 -0
  24. package/bleed/Bleed.js +1 -34
  25. package/bleed/Bleed.stories.tsx +95 -95
  26. package/bleed/types.d.ts +1 -1
  27. package/box/Box.d.ts +1 -1
  28. package/box/Box.js +19 -48
  29. package/box/Box.stories.tsx +38 -51
  30. package/box/Box.test.js +1 -1
  31. package/box/types.d.ts +0 -11
  32. package/bulleted-list/BulletedList.d.ts +7 -0
  33. package/bulleted-list/BulletedList.js +125 -0
  34. package/bulleted-list/BulletedList.stories.tsx +206 -0
  35. package/bulleted-list/types.d.ts +38 -0
  36. package/button/Button.d.ts +1 -1
  37. package/button/Button.js +44 -71
  38. package/button/Button.stories.tsx +159 -8
  39. package/button/Button.test.js +12 -1
  40. package/button/types.d.ts +9 -5
  41. package/card/Card.d.ts +1 -1
  42. package/card/Card.js +37 -58
  43. package/card/Card.stories.tsx +12 -42
  44. package/card/Card.test.js +1 -1
  45. package/card/types.d.ts +1 -6
  46. package/checkbox/Checkbox.d.ts +2 -2
  47. package/checkbox/Checkbox.js +104 -101
  48. package/checkbox/Checkbox.stories.tsx +198 -130
  49. package/checkbox/Checkbox.test.js +94 -17
  50. package/checkbox/types.d.ts +7 -3
  51. package/chip/Chip.js +28 -49
  52. package/chip/Chip.stories.tsx +121 -26
  53. package/chip/Chip.test.js +3 -5
  54. package/chip/types.d.ts +1 -1
  55. package/common/OpenSans.css +68 -80
  56. package/common/coreTokens.d.ts +146 -0
  57. package/common/coreTokens.js +167 -0
  58. package/common/utils.d.ts +1 -0
  59. package/common/utils.js +4 -4
  60. package/common/variables.d.ts +1494 -0
  61. package/common/variables.js +1111 -1111
  62. package/date-input/Calendar.d.ts +4 -0
  63. package/date-input/Calendar.js +258 -0
  64. package/date-input/DateInput.js +140 -238
  65. package/date-input/DateInput.stories.tsx +209 -33
  66. package/date-input/DateInput.test.js +519 -149
  67. package/date-input/DatePicker.d.ts +4 -0
  68. package/date-input/DatePicker.js +146 -0
  69. package/date-input/Icons.d.ts +6 -0
  70. package/date-input/Icons.js +75 -0
  71. package/date-input/YearPicker.d.ts +4 -0
  72. package/date-input/YearPicker.js +126 -0
  73. package/date-input/types.d.ts +55 -0
  74. package/dialog/Dialog.d.ts +1 -1
  75. package/dialog/Dialog.js +68 -103
  76. package/dialog/Dialog.stories.tsx +154 -171
  77. package/dialog/Dialog.test.js +334 -5
  78. package/dialog/types.d.ts +0 -12
  79. package/dropdown/Dropdown.d.ts +1 -1
  80. package/dropdown/Dropdown.js +246 -253
  81. package/dropdown/Dropdown.stories.tsx +245 -56
  82. package/dropdown/Dropdown.test.js +507 -110
  83. package/dropdown/DropdownMenu.d.ts +4 -0
  84. package/dropdown/DropdownMenu.js +74 -0
  85. package/dropdown/DropdownMenuItem.d.ts +4 -0
  86. package/dropdown/DropdownMenuItem.js +79 -0
  87. package/dropdown/types.d.ts +23 -3
  88. package/file-input/FileInput.d.ts +2 -2
  89. package/file-input/FileInput.js +180 -223
  90. package/file-input/FileInput.stories.tsx +122 -11
  91. package/file-input/FileInput.test.js +14 -14
  92. package/file-input/FileItem.d.ts +4 -14
  93. package/file-input/FileItem.js +44 -66
  94. package/file-input/types.d.ts +18 -1
  95. package/flex/Flex.d.ts +4 -0
  96. package/flex/Flex.js +71 -0
  97. package/flex/Flex.stories.tsx +112 -0
  98. package/flex/types.d.ts +97 -0
  99. package/footer/Footer.d.ts +1 -1
  100. package/footer/Footer.js +49 -142
  101. package/footer/Footer.stories.tsx +41 -19
  102. package/footer/Footer.test.js +16 -26
  103. package/footer/Icons.js +1 -1
  104. package/footer/types.d.ts +11 -12
  105. package/grid/Grid.d.ts +7 -0
  106. package/grid/Grid.js +91 -0
  107. package/grid/Grid.stories.tsx +219 -0
  108. package/grid/types.d.ts +115 -0
  109. package/header/Header.d.ts +4 -3
  110. package/header/Header.js +102 -150
  111. package/header/Header.stories.tsx +152 -63
  112. package/header/Header.test.js +20 -4
  113. package/header/Icons.js +2 -2
  114. package/header/types.d.ts +0 -13
  115. package/heading/Heading.js +1 -1
  116. package/heading/Heading.test.js +1 -1
  117. package/image/Image.d.ts +4 -0
  118. package/image/Image.js +85 -0
  119. package/image/Image.stories.tsx +127 -0
  120. package/image/types.d.ts +72 -0
  121. package/inset/Inset.js +1 -34
  122. package/inset/Inset.stories.tsx +37 -36
  123. package/inset/types.d.ts +1 -1
  124. package/layout/ApplicationLayout.d.ts +16 -6
  125. package/layout/ApplicationLayout.js +81 -138
  126. package/layout/ApplicationLayout.stories.tsx +85 -94
  127. package/layout/Icons.d.ts +8 -0
  128. package/layout/Icons.js +52 -45
  129. package/layout/SidenavContext.d.ts +5 -0
  130. package/layout/SidenavContext.js +19 -0
  131. package/layout/types.d.ts +19 -35
  132. package/link/Link.d.ts +3 -2
  133. package/link/Link.js +60 -77
  134. package/link/Link.stories.tsx +155 -53
  135. package/link/Link.test.js +9 -19
  136. package/link/types.d.ts +5 -21
  137. package/main.d.ts +9 -10
  138. package/main.js +55 -57
  139. package/nav-tabs/NavTabs.d.ts +8 -0
  140. package/nav-tabs/NavTabs.js +122 -0
  141. package/nav-tabs/NavTabs.stories.tsx +274 -0
  142. package/nav-tabs/NavTabs.test.js +82 -0
  143. package/nav-tabs/Tab.d.ts +4 -0
  144. package/nav-tabs/Tab.js +146 -0
  145. package/nav-tabs/types.d.ts +52 -0
  146. package/number-input/NumberInput.d.ts +7 -0
  147. package/number-input/NumberInput.js +6 -4
  148. package/number-input/NumberInput.test.js +319 -102
  149. package/number-input/types.d.ts +13 -10
  150. package/package.json +19 -23
  151. package/paginator/Icons.d.ts +5 -0
  152. package/paginator/Icons.js +16 -28
  153. package/paginator/Paginator.js +20 -49
  154. package/paginator/Paginator.stories.tsx +24 -0
  155. package/paginator/Paginator.test.js +91 -39
  156. package/paragraph/Paragraph.d.ts +5 -0
  157. package/paragraph/Paragraph.js +38 -0
  158. package/paragraph/Paragraph.stories.tsx +44 -0
  159. package/password-input/Icons.d.ts +6 -0
  160. package/password-input/Icons.js +39 -0
  161. package/password-input/PasswordInput.js +36 -80
  162. package/password-input/PasswordInput.stories.tsx +1 -0
  163. package/password-input/PasswordInput.test.js +36 -45
  164. package/password-input/types.d.ts +14 -11
  165. package/progress-bar/ProgressBar.js +61 -55
  166. package/progress-bar/ProgressBar.stories.jsx +47 -12
  167. package/progress-bar/ProgressBar.test.js +68 -23
  168. package/quick-nav/QuickNav.js +77 -26
  169. package/quick-nav/QuickNav.stories.tsx +145 -26
  170. package/quick-nav/types.d.ts +4 -4
  171. package/radio-group/Radio.d.ts +1 -1
  172. package/radio-group/Radio.js +46 -31
  173. package/radio-group/RadioGroup.js +37 -36
  174. package/radio-group/RadioGroup.stories.tsx +132 -18
  175. package/radio-group/RadioGroup.test.js +124 -97
  176. package/radio-group/types.d.ts +2 -2
  177. package/resultsetTable/Icons.d.ts +7 -0
  178. package/resultsetTable/Icons.js +51 -0
  179. package/resultsetTable/ResultsetTable.js +49 -108
  180. package/resultsetTable/ResultsetTable.stories.tsx +50 -25
  181. package/resultsetTable/ResultsetTable.test.js +61 -42
  182. package/resultsetTable/types.d.ts +1 -1
  183. package/select/Listbox.d.ts +4 -0
  184. package/select/Listbox.js +169 -0
  185. package/select/Option.js +11 -24
  186. package/select/Select.js +148 -214
  187. package/select/Select.stories.tsx +525 -136
  188. package/select/Select.test.js +478 -307
  189. package/select/types.d.ts +20 -4
  190. package/sidenav/Icons.d.ts +7 -0
  191. package/sidenav/Icons.js +51 -0
  192. package/sidenav/Sidenav.d.ts +6 -5
  193. package/sidenav/Sidenav.js +146 -44
  194. package/sidenav/Sidenav.stories.tsx +251 -151
  195. package/sidenav/Sidenav.test.js +25 -37
  196. package/sidenav/types.d.ts +52 -26
  197. package/slider/Slider.d.ts +2 -2
  198. package/slider/Slider.js +121 -97
  199. package/slider/Slider.stories.tsx +64 -1
  200. package/slider/Slider.test.js +122 -22
  201. package/slider/types.d.ts +4 -0
  202. package/spinner/Spinner.js +18 -24
  203. package/spinner/Spinner.stories.jsx +53 -27
  204. package/spinner/Spinner.test.js +1 -1
  205. package/switch/Switch.d.ts +2 -2
  206. package/switch/Switch.js +138 -68
  207. package/switch/Switch.stories.tsx +49 -38
  208. package/switch/Switch.test.js +145 -18
  209. package/switch/types.d.ts +6 -2
  210. package/table/Table.js +3 -3
  211. package/table/Table.stories.jsx +80 -1
  212. package/table/Table.test.js +2 -2
  213. package/tabs/Tab.d.ts +4 -0
  214. package/tabs/Tab.js +132 -0
  215. package/tabs/Tabs.js +358 -108
  216. package/tabs/Tabs.stories.tsx +119 -11
  217. package/tabs/Tabs.test.js +220 -10
  218. package/tabs/types.d.ts +13 -3
  219. package/tag/Tag.js +12 -17
  220. package/tag/Tag.stories.tsx +14 -1
  221. package/tag/Tag.test.js +1 -1
  222. package/tag/types.d.ts +1 -1
  223. package/text-input/Icons.d.ts +8 -0
  224. package/text-input/Icons.js +60 -0
  225. package/text-input/Suggestion.d.ts +4 -0
  226. package/text-input/Suggestion.js +84 -0
  227. package/text-input/Suggestions.d.ts +4 -0
  228. package/text-input/Suggestions.js +134 -0
  229. package/text-input/TextInput.js +260 -399
  230. package/text-input/TextInput.stories.tsx +319 -185
  231. package/text-input/TextInput.test.js +846 -759
  232. package/text-input/types.d.ts +50 -12
  233. package/textarea/Textarea.js +37 -45
  234. package/textarea/Textarea.stories.jsx +68 -1
  235. package/textarea/Textarea.test.js +61 -19
  236. package/textarea/types.d.ts +14 -7
  237. package/toggle-group/ToggleGroup.d.ts +2 -2
  238. package/toggle-group/ToggleGroup.js +85 -59
  239. package/toggle-group/ToggleGroup.stories.tsx +48 -3
  240. package/toggle-group/ToggleGroup.test.js +38 -24
  241. package/toggle-group/types.d.ts +23 -14
  242. package/typography/Typography.d.ts +4 -0
  243. package/typography/Typography.js +32 -0
  244. package/typography/Typography.stories.tsx +198 -0
  245. package/typography/types.d.ts +18 -0
  246. package/typography/types.js +5 -0
  247. package/useTheme.d.ts +1246 -1
  248. package/useTheme.js +3 -3
  249. package/useTranslatedLabels.d.ts +85 -0
  250. package/useTranslatedLabels.js +20 -0
  251. package/utils/BaseTypography.d.ts +21 -0
  252. package/utils/BaseTypography.js +108 -0
  253. package/utils/FocusLock.d.ts +13 -0
  254. package/utils/FocusLock.js +138 -0
  255. package/wizard/Wizard.js +44 -45
  256. package/wizard/Wizard.stories.tsx +40 -1
  257. package/wizard/Wizard.test.js +1 -1
  258. package/wizard/types.d.ts +3 -3
  259. package/ThemeContext.d.ts +0 -10
  260. package/ThemeContext.js +0 -243
  261. package/card/ice-cream.jpg +0 -0
  262. package/common/RequiredComponent.js +0 -32
  263. package/list/List.d.ts +0 -4
  264. package/list/List.js +0 -47
  265. package/list/List.stories.tsx +0 -95
  266. package/list/types.d.ts +0 -7
  267. package/number-input/NumberInputContext.d.ts +0 -4
  268. package/number-input/NumberInputContext.js +0 -19
  269. package/number-input/numberInputContextTypes.d.ts +0 -19
  270. package/radio/Radio.d.ts +0 -4
  271. package/radio/Radio.js +0 -174
  272. package/radio/Radio.stories.tsx +0 -192
  273. package/radio/Radio.test.js +0 -71
  274. package/radio/types.d.ts +0 -54
  275. package/row/Row.d.ts +0 -3
  276. package/row/Row.js +0 -127
  277. package/row/Row.stories.tsx +0 -237
  278. package/row/types.d.ts +0 -28
  279. package/stack/Stack.d.ts +0 -3
  280. package/stack/Stack.js +0 -97
  281. package/stack/Stack.stories.tsx +0 -164
  282. package/stack/types.d.ts +0 -24
  283. package/text/Text.d.ts +0 -7
  284. package/text/Text.js +0 -30
  285. package/text/Text.stories.tsx +0 -19
  286. /package/{list → bulleted-list}/types.js +0 -0
  287. /package/{radio → flex}/types.js +0 -0
  288. /package/{row → grid}/types.js +0 -0
  289. /package/{stack → image}/types.js +0 -0
  290. /package/{number-input/numberInputContextTypes.js → 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 _moment = _interopRequireDefault(require("moment"));
28
+ var _TextInput = _interopRequireDefault(require("../text-input/TextInput"));
29
29
 
30
- var _dateFns = _interopRequireDefault(require("@date-io/date-fns"));
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, _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
+ }
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,
@@ -62,6 +88,7 @@ var DxcDateInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
62
88
  placeholder = _ref$placeholder === void 0 ? false : _ref$placeholder,
63
89
  clearable = _ref.clearable,
64
90
  disabled = _ref.disabled,
91
+ readOnly = _ref.readOnly,
65
92
  optional = _ref.optional,
66
93
  onChange = _ref.onChange,
67
94
  onBlur = _ref.onBlur,
@@ -81,289 +108,164 @@ var DxcDateInput = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref
81
108
  isOpen = _useState4[0],
82
109
  setIsOpen = _useState4[1];
83
110
 
84
- var _useState5 = (0, _react.useState)(null),
85
- _useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
86
- anchorEl = _useState6[0],
87
- setAnchorEl = _useState6[1];
111
+ var _useState5 = (0, _react.useState)("date-picker-".concat((0, _uuid.v4)())),
112
+ _useState6 = (0, _slicedToArray2["default"])(_useState5, 1),
113
+ calendarId = _useState6[0];
114
+
115
+ var _useState7 = (0, _react.useState)(getValueForPicker((_ref2 = value !== null && value !== void 0 ? value : defaultValue) !== null && _ref2 !== void 0 ? _ref2 : "", format)),
116
+ _useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
117
+ dayjsDate = _useState8[0],
118
+ setDayjsDate = _useState8[1];
119
+
120
+ 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),
121
+ _useState10 = (0, _slicedToArray2["default"])(_useState9, 2),
122
+ lastValidYear = _useState10[0],
123
+ setLastValidYear = _useState10[1];
88
124
 
89
125
  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;
126
+ var translatedLabels = (0, _useTranslatedLabels["default"])();
127
+ var dateRef = (0, _react.useRef)(null);
128
+ (0, _react.useEffect)(function () {
129
+ if (value || value === "") setDayjsDate(getDate(value, format, lastValidYear, setLastValidYear));
130
+ }, [value, format, lastValidYear]);
131
+ (0, _react.useEffect)(function () {
132
+ if (!disabled) {
133
+ var actionButtonRef = dateRef === null || dateRef === void 0 ? void 0 : dateRef.current.querySelector("[title='Open calendar']");
134
+ actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.setAttribute("aria-haspopup", true);
135
+ actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.setAttribute("role", "combobox");
136
+ actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.setAttribute("aria-expanded", isOpen);
137
+ actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.setAttribute("aria-controls", calendarId);
138
+ actionButtonRef === null || actionButtonRef === void 0 ? void 0 : actionButtonRef.setAttribute("aria-describedby", calendarId);
99
139
  }
100
- };
140
+ }, [isOpen, disabled, calendarId]);
101
141
 
102
142
  var handleCalendarOnClick = function handleCalendarOnClick(newDate) {
103
- var newValue = (0, _moment["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({
143
+ var newValue = newDate.format(format.toUpperCase());
144
+
145
+ if (!value) {
146
+ setDayjsDate(newDate);
147
+ setInnerValue(newValue);
148
+ }
149
+
150
+ setLastValidYear(newDate.get("year"));
151
+ newDate !== null && newDate !== void 0 && newDate.set("day", newDate.get("date")).toJSON() ? onChange === null || onChange === void 0 ? void 0 : onChange({
106
152
  value: newValue,
107
- date: newDate
153
+ date: newDate.toDate()
108
154
  }) : onChange === null || onChange === void 0 ? void 0 : onChange({
109
155
  value: newValue
110
156
  });
111
157
  };
112
158
 
113
- var handleIOnChange = function handleIOnChange(_ref2) {
114
- var newValue = _ref2.value,
115
- inputError = _ref2.error;
159
+ var handleOnChange = function handleOnChange(_ref3) {
160
+ var newValue = _ref3.value,
161
+ inputError = _ref3.error;
116
162
  value !== null && value !== void 0 ? value : setInnerValue(newValue);
117
- var momentDate = (0, _moment["default"])(newValue, format.toUpperCase(), true);
118
- var invalidDateMessage = newValue !== "" && !momentDate.isValid() && "Invalid date.";
163
+ var newDate = getDate(newValue, format, lastValidYear, setLastValidYear);
164
+ var invalidDateMessage = newValue !== "" && !newDate.isValid() && translatedLabels.dateInput.invalidDateErrorMessage;
119
165
  var callbackParams = inputError || invalidDateMessage ? {
120
166
  value: newValue,
121
167
  error: inputError || invalidDateMessage
122
168
  } : {
123
169
  value: newValue
124
170
  };
125
- momentDate.isValid() ? onChange === null || onChange === void 0 ? void 0 : onChange(_objectSpread(_objectSpread({}, callbackParams), {}, {
126
- date: momentDate.toDate()
127
- })) : onChange === null || onChange === void 0 ? void 0 : onChange(callbackParams);
171
+
172
+ if (newDate.isValid()) {
173
+ setDayjsDate(newDate);
174
+ onChange === null || onChange === void 0 ? void 0 : onChange(_objectSpread(_objectSpread({}, callbackParams), {}, {
175
+ date: newDate.toDate()
176
+ }));
177
+ } else {
178
+ onChange === null || onChange === void 0 ? void 0 : onChange(callbackParams);
179
+ setLastValidYear(function (validYear) {
180
+ var _dayjsDate$get;
181
+
182
+ return (_dayjsDate$get = dayjsDate === null || dayjsDate === void 0 ? void 0 : dayjsDate.get("year")) !== null && _dayjsDate$get !== void 0 ? _dayjsDate$get : validYear;
183
+ });
184
+ setDayjsDate(null);
185
+ }
128
186
  };
129
187
 
130
- var handleIOnBlur = function handleIOnBlur(_ref3) {
131
- var value = _ref3.value,
132
- inputError = _ref3.error;
133
- var momentDate = (0, _moment["default"])(value, format.toUpperCase(), true);
134
- var invalidDateMessage = value !== "" && !momentDate.isValid() && "Invalid date.";
188
+ var handleOnBlur = function handleOnBlur(_ref4) {
189
+ var value = _ref4.value,
190
+ inputError = _ref4.error;
191
+ var date = getDate(value, format, lastValidYear, setLastValidYear);
192
+ var invalidDateMessage = value !== "" && !date.isValid() && translatedLabels.dateInput.invalidDateErrorMessage;
135
193
  var callbackParams = inputError || invalidDateMessage ? {
136
194
  value: value,
137
195
  error: inputError || invalidDateMessage
138
196
  } : {
139
197
  value: value
140
198
  };
141
- momentDate.isValid() ? onBlur === null || onBlur === void 0 ? void 0 : onBlur(_objectSpread(_objectSpread({}, callbackParams), {}, {
142
- date: momentDate.toDate()
199
+ date.isValid() ? onBlur === null || onBlur === void 0 ? void 0 : onBlur(_objectSpread(_objectSpread({}, callbackParams), {}, {
200
+ date: date.toDate()
143
201
  })) : onBlur === null || onBlur === void 0 ? void 0 : onBlur(callbackParams);
144
202
  };
145
203
 
146
204
  var openCalendar = function openCalendar() {
147
- var dateBtn = refDate.current.getElementsByTagName("button")[0];
148
205
  setIsOpen(!isOpen);
149
- setAnchorEl(dateBtn);
150
206
  };
151
207
 
152
208
  var closeCalendar = function closeCalendar() {
153
209
  setIsOpen(false);
154
210
  };
155
211
 
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
- }))
212
+ var handleDatePickerEscKeydown = function handleDatePickerEscKeydown(event) {
213
+ event.preventDefault();
214
+ closeCalendar();
215
+ dateRef === null || dateRef === void 0 ? void 0 : dateRef.current.getElementsByTagName("input")[0].focus();
170
216
  };
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
- });
217
+
218
+ var handleDatePickerOnBlur = function handleDatePickerOnBlur(event) {
219
+ if (!(event !== null && event !== void 0 && event.currentTarget.contains(event.relatedTarget))) closeCalendar();
220
+ };
221
+
308
222
  return /*#__PURE__*/_react["default"].createElement(_styledComponents.ThemeProvider, {
309
223
  theme: colorsTheme
310
- }, /*#__PURE__*/_react["default"].createElement(_core.MuiThemeProvider, {
311
- theme: dateTheme
312
- }, /*#__PURE__*/_react["default"].createElement(_pickers.MuiPickersUtilsProvider, {
313
- utils: _dateFns["default"]
314
- }, /*#__PURE__*/_react["default"].createElement(StyledDPicker, null, /*#__PURE__*/_react["default"].createElement(_TextInput["default"], {
224
+ }, /*#__PURE__*/_react["default"].createElement("div", {
225
+ ref: ref
226
+ }, /*#__PURE__*/_react["default"].createElement(Popover.Root, {
227
+ open: isOpen
228
+ }, /*#__PURE__*/_react["default"].createElement(Popover.Trigger, {
229
+ asChild: true,
230
+ "aria-controls": undefined
231
+ }, /*#__PURE__*/_react["default"].createElement(_TextInput["default"], {
315
232
  label: label,
316
233
  name: name,
317
234
  defaultValue: defaultValue,
318
235
  value: value !== null && value !== void 0 ? value : innerValue,
319
236
  helperText: helperText,
320
237
  placeholder: placeholder ? format.toUpperCase() : null,
321
- action: calendarAction,
238
+ action: {
239
+ onClick: openCalendar,
240
+ icon: _Icons.calendarIcon,
241
+ title: "Open calendar"
242
+ },
322
243
  clearable: clearable,
323
244
  disabled: disabled,
245
+ readOnly: readOnly,
324
246
  optional: optional,
325
- onChange: handleIOnChange,
326
- onBlur: handleIOnBlur,
247
+ onChange: handleOnChange,
248
+ onBlur: handleOnBlur,
327
249
  error: error,
328
250
  autocomplete: autocomplete,
329
251
  margin: margin,
330
252
  size: size,
331
253
  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
- }))))))));
254
+ ref: dateRef
255
+ })), /*#__PURE__*/_react["default"].createElement(StyledContent, {
256
+ sideOffset: error ? -18 : 2,
257
+ align: "end",
258
+ "aria-modal": true,
259
+ onBlur: handleDatePickerOnBlur,
260
+ onEscapeKeyDown: handleDatePickerEscKeydown,
261
+ avoidCollisions: false
262
+ }, /*#__PURE__*/_react["default"].createElement(_DatePicker["default"], {
263
+ id: calendarId,
264
+ onDateSelect: handleCalendarOnClick,
265
+ date: dayjsDate
266
+ })))));
364
267
  });
365
268
 
366
- var StyledDPicker = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])([""])));
367
-
269
+ var StyledContent = (0, _styledComponents["default"])(Popover.Content)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n &:focus-visible {\n outline: none;\n }\n"])));
368
270
  var _default = DxcDateInput;
369
271
  exports["default"] = _default;