@dxc-technology/halstack-react 0.0.0-74ba970 → 0.0.0-752ca0a

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