@entur/datepicker 2.0.4 → 2.0.5
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.
- package/CHANGELOG.md +6 -0
- package/dist/DatePicker/DatePickerInput.d.ts +5 -1
- package/dist/datepicker.cjs.development.js +100 -32
- package/dist/datepicker.cjs.development.js.map +1 -1
- package/dist/datepicker.cjs.production.min.js +1 -1
- package/dist/datepicker.cjs.production.min.js.map +1 -1
- package/dist/datepicker.esm.js +101 -33
- package/dist/datepicker.esm.js.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [2.0.5](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@2.0.4...@entur/datepicker@2.0.5) (2022-06-02)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **datepicker:** make keyboard navigation in datepicker more accessible ([ec7be40](https://bitbucket.org/enturas/design-system/commits/ec7be4018bfbdab9da48b996e83968297c6d4f4b))
|
|
11
|
+
|
|
6
12
|
## [2.0.4](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@2.0.3...@entur/datepicker@2.0.4) (2022-05-13)
|
|
7
13
|
|
|
8
14
|
**Note:** Version bump only for package @entur/datepicker
|
|
@@ -12,11 +12,15 @@ declare type DatePickerInputProps = {
|
|
|
12
12
|
calendarButtonTooltip: string;
|
|
13
13
|
hideCalendarButton?: boolean;
|
|
14
14
|
inputRef: React.RefObject<HTMLInputElement>;
|
|
15
|
+
calendarButtonId: string;
|
|
15
16
|
forwardRef: React.ForwardedRef<HTMLInputElement>;
|
|
16
17
|
toggleCalendarGUI: () => void;
|
|
17
|
-
|
|
18
|
+
setFocusToCalendarGUI: () => void;
|
|
19
|
+
setShouldFocusOnCalendarButtonAfterSelect: React.Dispatch<React.SetStateAction<boolean>>;
|
|
18
20
|
onKeyDownInput: (event: KeyboardEvent) => any;
|
|
19
21
|
onBlurInput: (event: FocusEvent) => any;
|
|
22
|
+
calendarGUIIsOpen: () => boolean | undefined;
|
|
23
|
+
onClick?: React.MouseEventHandler<HTMLInputElement>;
|
|
20
24
|
onFocus: undefined;
|
|
21
25
|
selectedDate: Date | null;
|
|
22
26
|
placeholder?: null;
|
|
@@ -138,7 +138,7 @@ function getMonthList(locale) {
|
|
|
138
138
|
return Array.from(monthList, getMonthName);
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
var _excluded$4 = ["style", "label", "inputPlaceholder", "prepend", "feedback", "variant", "disabled", "calendarButtonTooltip", "hideCalendarButton", "disableLabelAnimation", "inputRef", "forwardRef", "toggleCalendarGUI", "onKeyDownInput", "onBlurInput", "selectedDate", "placeholder"];
|
|
141
|
+
var _excluded$4 = ["style", "label", "inputPlaceholder", "prepend", "feedback", "variant", "disabled", "calendarButtonTooltip", "hideCalendarButton", "disableLabelAnimation", "inputRef", "calendarButtonId", "forwardRef", "toggleCalendarGUI", "onKeyDownInput", "onBlurInput", "selectedDate", "setFocusToCalendarGUI", "setShouldFocusOnCalendarButtonAfterSelect", "calendarGUIIsOpen", "placeholder", "onClick"];
|
|
142
142
|
var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
143
143
|
var style = _ref.style,
|
|
144
144
|
label = _ref.label,
|
|
@@ -151,11 +151,16 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
|
|
|
151
151
|
hideCalendarButton = _ref.hideCalendarButton,
|
|
152
152
|
disableLabelAnimation = _ref.disableLabelAnimation,
|
|
153
153
|
inputRef = _ref.inputRef,
|
|
154
|
+
calendarButtonId = _ref.calendarButtonId,
|
|
154
155
|
forwardRef = _ref.forwardRef,
|
|
155
156
|
toggleCalendarGUI = _ref.toggleCalendarGUI,
|
|
156
157
|
onKeyDownInput = _ref.onKeyDownInput,
|
|
157
158
|
onBlurInput = _ref.onBlurInput,
|
|
158
159
|
selectedDate = _ref.selectedDate,
|
|
160
|
+
setFocusToCalendarGUI = _ref.setFocusToCalendarGUI,
|
|
161
|
+
setShouldFocusOnCalendarButtonAfterSelect = _ref.setShouldFocusOnCalendarButtonAfterSelect,
|
|
162
|
+
calendarGUIIsOpen = _ref.calendarGUIIsOpen,
|
|
163
|
+
onClick = _ref.onClick,
|
|
159
164
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
160
165
|
|
|
161
166
|
React__default["default"].useEffect(function () {
|
|
@@ -170,7 +175,7 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
|
|
|
170
175
|
(_inputRef$current4 = inputRef.current) == null ? void 0 : _inputRef$current4.removeEventListener('keydown', handleOnKeyDown);
|
|
171
176
|
(_inputRef$current5 = inputRef.current) == null ? void 0 : _inputRef$current5.removeEventListener('blur', handleOnBlur);
|
|
172
177
|
(_inputRef$current6 = inputRef.current) == null ? void 0 : _inputRef$current6.removeEventListener('focus', handleOnFocus);
|
|
173
|
-
};
|
|
178
|
+
}; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
174
179
|
}, [inputRef, selectedDate]);
|
|
175
180
|
|
|
176
181
|
function handleOnKeyDown(event) {
|
|
@@ -181,13 +186,24 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
|
|
|
181
186
|
onBlurInput(event);
|
|
182
187
|
}
|
|
183
188
|
|
|
184
|
-
function handleOnFocus() {
|
|
185
|
-
|
|
189
|
+
var handleOnFocus = function handleOnFocus() {
|
|
190
|
+
return requestAnimationFrame(function () {
|
|
186
191
|
var _inputRef$current7;
|
|
187
192
|
|
|
188
193
|
return (_inputRef$current7 = inputRef.current) == null ? void 0 : _inputRef$current7.select();
|
|
189
|
-
}
|
|
190
|
-
}
|
|
194
|
+
});
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
var handleOnClickInputField = function handleOnClickInputField(event) {
|
|
198
|
+
setShouldFocusOnCalendarButtonAfterSelect(false);
|
|
199
|
+
onClick && onClick(event);
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
var handleOnClickCalendarButton = function handleOnClickCalendarButton() {
|
|
203
|
+
toggleCalendarGUI();
|
|
204
|
+
setFocusToCalendarGUI();
|
|
205
|
+
setShouldFocusOnCalendarButtonAfterSelect(true);
|
|
206
|
+
};
|
|
191
207
|
|
|
192
208
|
return React__default["default"].createElement(form.TextField, _extends({
|
|
193
209
|
style: style,
|
|
@@ -198,14 +214,17 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
|
|
|
198
214
|
variant: variant,
|
|
199
215
|
disableLabelAnimation: disableLabelAnimation,
|
|
200
216
|
ref: mergeRefs(ref, inputRef, forwardRef),
|
|
217
|
+
onClick: handleOnClickInputField,
|
|
201
218
|
append: !hideCalendarButton && React__default["default"].createElement(tooltip.Tooltip, {
|
|
202
219
|
placement: "top",
|
|
203
220
|
content: calendarButtonTooltip,
|
|
204
221
|
disableHoverListener: disabled,
|
|
205
222
|
disableFocusListener: disabled
|
|
206
223
|
}, React__default["default"].createElement(button.IconButton, {
|
|
224
|
+
id: calendarButtonId,
|
|
207
225
|
type: "button",
|
|
208
|
-
onClick:
|
|
226
|
+
onClick: handleOnClickCalendarButton,
|
|
227
|
+
tabIndex: calendarGUIIsOpen() ? -1 : 0
|
|
209
228
|
}, React__default["default"].createElement(icons.CalendarIcon, null)))
|
|
210
229
|
}, rest));
|
|
211
230
|
});
|
|
@@ -273,40 +292,71 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
|
|
|
273
292
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
274
293
|
|
|
275
294
|
var datepickerId = utils.useRandomId('eds-datepicker');
|
|
295
|
+
var datepickerRef = React.useRef(null);
|
|
296
|
+
var inputRef = React__default["default"].useRef(null);
|
|
297
|
+
var calendarButton = document.getElementById(datepickerId + '-button');
|
|
276
298
|
|
|
277
299
|
var _useState = React.useState(false),
|
|
278
300
|
showValidation = _useState[0],
|
|
279
301
|
setShowValidation = _useState[1];
|
|
280
302
|
|
|
281
|
-
var
|
|
282
|
-
|
|
303
|
+
var _useState2 = React.useState(false),
|
|
304
|
+
shouldFocusOnCalendarButtonAfterSelect = _useState2[0],
|
|
305
|
+
setShouldFocusOnCalendarButtonAfterSelect = _useState2[1]; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
306
|
+
|
|
307
|
+
|
|
283
308
|
React__default["default"].useEffect(function () {
|
|
284
309
|
return validateInput();
|
|
285
310
|
}, [selectedDate]);
|
|
286
311
|
|
|
287
|
-
var
|
|
288
|
-
var
|
|
312
|
+
var handleOnChange = function handleOnChange(date, event) {
|
|
313
|
+
var _inputRef$current;
|
|
289
314
|
|
|
290
|
-
|
|
315
|
+
if (shouldFocusOnCalendarButtonAfterSelect && !hideCalendarButton) {
|
|
316
|
+
calendarButton == null ? void 0 : calendarButton.focus();
|
|
317
|
+
setShouldFocusOnCalendarButtonAfterSelect(false);
|
|
318
|
+
} else (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
|
|
319
|
+
|
|
320
|
+
onChange(date, event);
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
var handleOnKeyDown = function handleOnKeyDown(event) {
|
|
291
324
|
setShowValidation(false);
|
|
292
325
|
|
|
293
326
|
if (event.key === 'Enter') {
|
|
294
|
-
|
|
327
|
+
if (!datePickerGUIIsOpen()) {
|
|
328
|
+
// onBlurInput will validate if calendar is open
|
|
329
|
+
validateInput();
|
|
330
|
+
forceUpdateInputFormat();
|
|
331
|
+
}
|
|
332
|
+
|
|
295
333
|
focusAndSelectInputField();
|
|
334
|
+
} else if (event.key === 'Tab' && datePickerGUIIsOpen()) {
|
|
296
335
|
forceUpdateInputFormat();
|
|
297
|
-
} else if (event.key === '
|
|
298
|
-
validateInput();
|
|
336
|
+
} else if (event.key === 'Escape') {
|
|
299
337
|
forceUpdateInputFormat();
|
|
338
|
+
focusAndSelectInputField();
|
|
339
|
+
if (datePickerGUIIsOpen()) toggleCalendarGUI();
|
|
300
340
|
}
|
|
301
341
|
|
|
302
342
|
onKeyDown(event);
|
|
303
343
|
};
|
|
304
344
|
|
|
345
|
+
var handleOnClickOutside = function handleOnClickOutside() {
|
|
346
|
+
return setShouldFocusOnCalendarButtonAfterSelect(false);
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
var handleOnBlurInput = function handleOnBlurInput() {
|
|
350
|
+
if (datePickerGUIIsOpen()) return;
|
|
351
|
+
validateInput();
|
|
352
|
+
forceUpdateInputFormat();
|
|
353
|
+
};
|
|
354
|
+
|
|
305
355
|
var validateInput = function validateInput() {
|
|
306
|
-
var _inputRef$
|
|
356
|
+
var _inputRef$current2;
|
|
307
357
|
|
|
308
358
|
setShowValidation(false);
|
|
309
|
-
var inputValue = (_inputRef$
|
|
359
|
+
var inputValue = (_inputRef$current2 = inputRef.current) == null ? void 0 : _inputRef$current2.value;
|
|
310
360
|
if (!inputValue) return;
|
|
311
361
|
var inputValueParsedWithAllDateFormats = dateFormats.map(function (format) {
|
|
312
362
|
return dateFns.parse(inputValue, format, new Date(), {
|
|
@@ -342,25 +392,43 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
|
|
|
342
392
|
};
|
|
343
393
|
|
|
344
394
|
var focusAndSelectInputField = function focusAndSelectInputField() {
|
|
345
|
-
return
|
|
346
|
-
var _inputRef$
|
|
395
|
+
return requestAnimationFrame(function () {
|
|
396
|
+
var _inputRef$current3;
|
|
347
397
|
|
|
348
|
-
(_inputRef$
|
|
349
|
-
}
|
|
398
|
+
return (_inputRef$current3 = inputRef.current) == null ? void 0 : _inputRef$current3.select();
|
|
399
|
+
});
|
|
350
400
|
};
|
|
351
401
|
|
|
352
402
|
var forceUpdateInputFormat = function forceUpdateInputFormat() {
|
|
353
|
-
var _datepickerRef$
|
|
403
|
+
var _datepickerRef$curren;
|
|
354
404
|
|
|
355
|
-
return (_datepickerRef$
|
|
405
|
+
return (_datepickerRef$curren = datepickerRef.current) == null ? void 0 : _datepickerRef$curren.setState({
|
|
356
406
|
inputValue: null
|
|
357
407
|
});
|
|
358
408
|
};
|
|
359
409
|
|
|
360
410
|
var toggleCalendarGUI = function toggleCalendarGUI() {
|
|
361
|
-
var _datepickerRef$
|
|
411
|
+
var _datepickerRef$curren2;
|
|
362
412
|
|
|
363
|
-
return (_datepickerRef$
|
|
413
|
+
return (_datepickerRef$curren2 = datepickerRef.current) == null ? void 0 : _datepickerRef$curren2.setOpen(!datePickerGUIIsOpen());
|
|
414
|
+
}; // this focus function will fail if both an inline and a non-inline calendar is present in the same document
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
var setFocusToCalendarGUI = function setFocusToCalendarGUI() {
|
|
418
|
+
if (inline || hideCalendar || datePickerGUIIsOpen()) return; // 1 frame delay to allow calendar to spawn
|
|
419
|
+
|
|
420
|
+
requestAnimationFrame(function () {
|
|
421
|
+
var dateToSetFocusTo = selectedDate ? document.getElementsByClassName('eds-datepicker__calender__day--selected')[0] : document.getElementsByClassName('eds-datepicker__calender__day--today')[0];
|
|
422
|
+
if (dateToSetFocusTo !== null) dateToSetFocusTo.focus();
|
|
423
|
+
});
|
|
424
|
+
setShouldFocusOnCalendarButtonAfterSelect(true);
|
|
425
|
+
setShowValidation(false);
|
|
426
|
+
};
|
|
427
|
+
|
|
428
|
+
var datePickerGUIIsOpen = function datePickerGUIIsOpen() {
|
|
429
|
+
var _datepickerRef$curren3;
|
|
430
|
+
|
|
431
|
+
return (_datepickerRef$curren3 = datepickerRef.current) == null ? void 0 : _datepickerRef$curren3.isCalendarOpen();
|
|
364
432
|
};
|
|
365
433
|
|
|
366
434
|
return React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement(ReactDatepicker__default["default"], _extends({
|
|
@@ -370,8 +438,8 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
|
|
|
370
438
|
dateFormat: dateFormats,
|
|
371
439
|
showWeekNumbers: true,
|
|
372
440
|
weekLabel: weekLabel,
|
|
373
|
-
onChange:
|
|
374
|
-
onClickOutside:
|
|
441
|
+
onChange: handleOnChange,
|
|
442
|
+
onClickOutside: handleOnClickOutside,
|
|
375
443
|
id: datepickerId,
|
|
376
444
|
ariaLabelledBy: datepickerId,
|
|
377
445
|
showPopperArrow: false,
|
|
@@ -421,15 +489,15 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
|
|
|
421
489
|
feedback: getFeedbackAndVariant().feedback,
|
|
422
490
|
variant: getFeedbackAndVariant().variant,
|
|
423
491
|
inputRef: inputRef,
|
|
492
|
+
calendarButtonId: datepickerId + '-button',
|
|
424
493
|
forwardRef: ref,
|
|
425
494
|
onKeyDownInput: handleOnKeyDown,
|
|
426
|
-
onBlurInput:
|
|
427
|
-
var _datepickerRef$curren5;
|
|
428
|
-
|
|
429
|
-
return !((_datepickerRef$curren5 = datepickerRef.current) != null && _datepickerRef$curren5.isCalendarOpen()) && validateInput();
|
|
430
|
-
},
|
|
495
|
+
onBlurInput: handleOnBlurInput,
|
|
431
496
|
onFocus: undefined,
|
|
432
497
|
toggleCalendarGUI: toggleCalendarGUI,
|
|
498
|
+
setFocusToCalendarGUI: setFocusToCalendarGUI,
|
|
499
|
+
setShouldFocusOnCalendarButtonAfterSelect: setShouldFocusOnCalendarButtonAfterSelect,
|
|
500
|
+
calendarGUIIsOpen: datePickerGUIIsOpen,
|
|
433
501
|
disableLabelAnimation: disableLabelAnimation,
|
|
434
502
|
hideCalendarButton: hideCalendarButton,
|
|
435
503
|
selectedDate: selectedDate
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datepicker.cjs.development.js","sources":["../src/DatePicker/DatePickerHeader.tsx","../src/DatePicker/DatePickerInput.tsx","../src/DatePicker/DatePicker.tsx","../src/NativeDatePicker.tsx","../src/TimePicker.tsx","../src/NativeTimePicker.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport { ReactDatePickerCustomHeaderProps } from 'react-datepicker';\n\nimport { LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { Heading3 } from '@entur/typography';\nimport { IconButton } from '@entur/button';\n\nexport const DatePickerHeader = ({\n date,\n decreaseMonth,\n increaseMonth,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n}: Partial<ReactDatePickerCustomHeaderProps>) => {\n const monthNames = getMonthList();\n return (\n <div className=\"eds-datepicker__calender__header\">\n <IconButton\n type=\"button\"\n className=\"eds-datepicker__calender__header__month-button--left\"\n onClick={decreaseMonth}\n disabled={prevMonthButtonDisabled}\n >\n <LeftArrowIcon />\n </IconButton>\n <Heading3 className=\"eds-datepicker__calender__header__month-text\">\n {monthNames[date?.getMonth() ?? 0]}\n </Heading3>\n <Heading3 className=\"eds-datepicker__calender__header__month-text\">\n {date?.getFullYear()}\n </Heading3>\n\n <IconButton\n type=\"button\"\n className=\"eds-datepicker__calender__header__month-button--right\"\n onClick={increaseMonth}\n disabled={nextMonthButtonDisabled}\n >\n <RightArrowIcon />\n </IconButton>\n </div>\n );\n};\n\nfunction getMonthList(locale = 'nb') {\n const year = new Date().getFullYear();\n const monthList = Array(12).keys();\n const formatter = new Intl.DateTimeFormat(locale, {\n month: 'long',\n });\n const getMonthName = (monthIndex: number) =>\n formatter.format(new Date(year, monthIndex));\n\n return Array.from(monthList, getMonthName);\n}\n","import React from 'react';\n\nimport { TextField, VariantType } from '@entur/form';\nimport { Tooltip } from '@entur/tooltip';\nimport { IconButton } from '@entur/button';\nimport { CalendarIcon } from '@entur/icons';\n\ntype DatePickerInputProps = {\n style?: React.CSSProperties;\n label: string;\n inputPlaceholder: string;\n prepend?: React.ReactNode;\n feedback?: string;\n variant?: VariantType;\n disabled?: boolean;\n disableLabelAnimation?: boolean;\n calendarButtonTooltip: string;\n hideCalendarButton?: boolean;\n inputRef: React.RefObject<HTMLInputElement>;\n forwardRef: React.ForwardedRef<HTMLInputElement>;\n toggleCalendarGUI: () => void;\n onClick?: React.MouseEventHandler<HTMLButtonElement | HTMLInputElement>;\n onKeyDownInput: (event: KeyboardEvent) => any;\n onBlurInput: (event: FocusEvent) => any;\n onFocus: undefined; // To prevent open on focus\n selectedDate: Date | null; // Necessary to update component on state change\n placeholder?: null; // override react-datepickers placeholder prop\n};\n\nexport const DatePickerInput = React.forwardRef<\n HTMLInputElement,\n DatePickerInputProps\n>(\n (\n {\n style,\n label,\n inputPlaceholder,\n prepend,\n feedback,\n variant,\n disabled,\n calendarButtonTooltip,\n hideCalendarButton,\n disableLabelAnimation,\n inputRef,\n forwardRef,\n toggleCalendarGUI,\n onKeyDownInput,\n onBlurInput,\n selectedDate,\n placeholder, // eslint-disable-line\n ...rest // forwarded props from react-datepicker\n },\n ref,\n ) => {\n React.useEffect(() => {\n inputRef.current?.addEventListener('keydown', handleOnKeyDown);\n inputRef.current?.addEventListener('blur', handleOnBlur);\n inputRef.current?.addEventListener('focus', handleOnFocus);\n return () => {\n inputRef.current?.removeEventListener('keydown', handleOnKeyDown);\n inputRef.current?.removeEventListener('blur', handleOnBlur);\n inputRef.current?.removeEventListener('focus', handleOnFocus);\n };\n }, [inputRef, selectedDate]);\n\n function handleOnKeyDown(this: HTMLElement, event: KeyboardEvent) {\n onKeyDownInput(event);\n }\n function handleOnBlur(this: HTMLElement, event: FocusEvent) {\n onBlurInput(event);\n }\n function handleOnFocus() {\n setTimeout(() => inputRef.current?.select(), 5);\n }\n\n return (\n <TextField\n style={style}\n label={label}\n placeholder={inputPlaceholder}\n prepend={prepend}\n feedback={feedback}\n variant={variant}\n disableLabelAnimation={disableLabelAnimation}\n ref={mergeRefs(ref, inputRef, forwardRef)}\n append={\n !hideCalendarButton && (\n <Tooltip\n placement=\"top\"\n content={calendarButtonTooltip}\n disableHoverListener={disabled}\n disableFocusListener={disabled}\n >\n <IconButton type=\"button\" onClick={toggleCalendarGUI}>\n <CalendarIcon />\n </IconButton>\n </Tooltip>\n )\n }\n {...rest}\n />\n );\n },\n);\n\nconst mergeRefs = <T extends HTMLElement>(\n ...refs: React.MutableRefObject<T>[] | React.ForwardedRef<T>[]\n) => {\n return (node: T) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) ref.current = node;\n }\n };\n};\n","import React, { useRef, useState } from 'react';\nimport ReactDatePicker, {\n default as ReactDatepicker,\n ReactDatePickerProps,\n registerLocale,\n} from 'react-datepicker';\nimport { parse, isSameDay, Locale } from 'date-fns';\nimport { nb } from 'date-fns/locale';\nimport classNames from 'classnames';\n\nimport { VariantType } from '@entur/form';\nimport { useRandomId } from '@entur/utils';\n\nimport { DatePickerHeader } from './DatePickerHeader';\nimport { DatePickerInput } from './DatePickerInput';\n\nimport './DatePicker.scss';\nimport 'react-datepicker/dist/react-datepicker.css';\n\nregisterLocale('nb', nb);\n\nexport type DatePickerProps = {\n /** Hva som er den valgte datoen */\n selectedDate: Date | null;\n /** Kalles når datoen/tiden endres */\n onChange: (\n date: Date | null,\n event: React.SyntheticEvent<any, Event> | undefined,\n ) => void;\n /**\n * Kalles når en tast trykkes i inputfeltet\n */\n onKeyDown?: (event: KeyboardEvent) => void;\n /**\n * Datoformater som skal støttes. Første i listen er formatet alt input omgjøres til.\n * Format-valg tilgjengelig her: https://date-fns.org/v2.28.0/docs/format\n * OBS: Noen kombinasjoner av datoformater kan gi rar og uønsket oppførsel,\n * test nøye ved endring\n * @default \"['dd.MM.yyyy', 'ddMMyyyy', 'dd/MM/yyyy', 'ddMMyy']\"\n */\n dateFormats?: string[];\n /**\n * Locale fra date-fns som brukes av Datepicker-en\n * @default nb\n */\n locale?: Locale;\n /** Placeholder om ingen dato er valgt\n * @default \"dd.mm.yyyy\"\n */\n placeholder?: string;\n /** Ekstra klassenavn */\n className?: string;\n /** Label over DatePicker */\n label: string;\n /**\n * Varselmelding, som vil komme under DatePicker\n */\n feedback?: string;\n /** Valideringsvariant\n */\n variant?: VariantType;\n /** Varselmelding for når datoen er på feil format\n * @default \"Ugyldig dato\"\n */\n validationFeedback?: string;\n /** Valideringsvariant for melding om feil datoformat\n * @default \"error\"\n */\n validationVariant?: VariantType;\n style?: React.CSSProperties;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Tekst eller ikon som kommer før inputfelter\n * @default <DateIcon />\n */\n prepend?: React.ReactNode;\n /**\n * Tekst som vises ved hover på «Åpne kalender»-knappen\n */\n calendarButtonTooltip?: string;\n /** Skjuler knapp for åpning av kalender\n * @default false\n */\n hideCalendarButton?: boolean;\n /** Skjuler tilbakemeldingsteksten ved feil dato-input\n * @default false\n */\n hideValidation?: boolean;\n /** Skjuler kalender-GUI-et\n * @default false\n */\n hideCalendar?: boolean;\n /** Viser kun kalender-popover-en\n * @default false\n */\n inline?: boolean;\n // For testing\n 'data-cy'?: any;\n} & Omit<\n ReactDatePickerProps,\n 'selected' | 'customInput' | 'onChangeRaw' | 'dateFormat' | 'locale'\n>;\n\nexport const DatePicker = React.forwardRef<HTMLInputElement, DatePickerProps>(\n (\n {\n style,\n className,\n selectedDate,\n label,\n placeholder = 'dd.mm.yyyy',\n onChange,\n onKeyDown = () => null,\n dateFormats = ['dd.MM.yyyy', 'ddMMyyyy', 'dd/MM/yyyy', 'ddMMyy'],\n minDate,\n maxDate,\n inline = false,\n disabled,\n prepend,\n feedback = '',\n variant,\n validationFeedback = 'Ugyldig dato',\n validationVariant = 'error',\n disableLabelAnimation = false,\n calendarButtonTooltip = 'Åpne\\xa0kalender',\n hideCalendarButton = false,\n hideCalendar = false,\n hideValidation = false,\n weekLabel = 'uke',\n locale = nb,\n open,\n ...rest\n },\n ref,\n ) => {\n const datepickerId = useRandomId('eds-datepicker');\n\n const [showValidation, setShowValidation] = useState(false);\n\n const datepickerRef = useRef<ReactDatePicker>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n React.useEffect(() => validateInput(), [selectedDate]);\n\n const handleOnKeyDown = (event: KeyboardEvent) => {\n const calendarIsClosed = !datepickerRef.current?.isCalendarOpen();\n\n setShowValidation(false);\n if (event.key === 'Enter') {\n validateInput();\n focusAndSelectInputField();\n forceUpdateInputFormat();\n } else if (event.key === 'Tab' && calendarIsClosed) {\n validateInput();\n forceUpdateInputFormat();\n }\n onKeyDown(event);\n };\n\n const validateInput = () => {\n setShowValidation(false);\n const inputValue = inputRef.current?.value;\n if (!inputValue) return;\n\n const inputValueParsedWithAllDateFormats = dateFormats.map(format =>\n parse(inputValue, format, new Date(), {\n locale: locale,\n }),\n );\n\n const parsedDateFromInputIsTheSameAsSelectedDate =\n selectedDate &&\n inputValueParsedWithAllDateFormats.some(dateFormat =>\n isSameDay(dateFormat, selectedDate),\n );\n\n if (parsedDateFromInputIsTheSameAsSelectedDate) {\n // valid date inputted\n setShowValidation(false);\n } else {\n // invalid date inputted\n setShowValidation(true);\n }\n };\n\n const getFeedbackAndVariant = (): {\n feedback: string;\n variant: VariantType | undefined;\n } => {\n if (feedback) return { feedback, variant };\n if (!hideValidation && showValidation)\n return { feedback: validationFeedback, variant: validationVariant };\n return { feedback: '', variant: undefined };\n };\n\n const focusAndSelectInputField = () =>\n setTimeout(() => {\n inputRef.current?.select();\n }, 5);\n\n const forceUpdateInputFormat = () =>\n datepickerRef.current?.setState({ inputValue: null });\n\n const toggleCalendarGUI = () =>\n datepickerRef.current?.setOpen(!datepickerRef.current?.isCalendarOpen());\n\n return (\n <>\n <ReactDatepicker\n selected={selectedDate}\n minDate={minDate}\n maxDate={maxDate}\n dateFormat={dateFormats}\n showWeekNumbers\n weekLabel={weekLabel}\n onChange={onChange}\n onClickOutside={validateInput}\n id={datepickerId}\n ariaLabelledBy={datepickerId}\n showPopperArrow={false}\n locale={locale}\n inline={inline}\n disabled={disabled}\n preventOpenOnFocus={true}\n open={hideCalendar ? false : open}\n ref={datepickerRef}\n calendarClassName=\"eds-datepicker__calender\"\n dayClassName={() => 'eds-datepicker__calender__day'}\n weekDayClassName={() => 'eds-datepicker__calender__day-name'}\n className={classNames(className, 'eds-datepicker__input')}\n highlightDates={[\n { 'eds-datepicker__calender__day--today': [new Date()] },\n {\n 'eds-datepicker__calender__day--selected': selectedDate\n ? [selectedDate]\n : [],\n },\n ]}\n renderCustomHeader={({\n date,\n changeYear,\n changeMonth,\n decreaseMonth,\n increaseMonth,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n }) => (\n <DatePickerHeader\n date={date}\n changeYear={changeYear}\n changeMonth={changeMonth}\n increaseMonth={increaseMonth}\n decreaseMonth={decreaseMonth}\n prevMonthButtonDisabled={prevMonthButtonDisabled}\n nextMonthButtonDisabled={nextMonthButtonDisabled}\n />\n )}\n customInput={\n <DatePickerInput\n style={style}\n label={label}\n inputPlaceholder={placeholder}\n calendarButtonTooltip={calendarButtonTooltip}\n prepend={prepend}\n feedback={getFeedbackAndVariant().feedback}\n variant={getFeedbackAndVariant().variant}\n inputRef={inputRef}\n forwardRef={ref}\n onKeyDownInput={handleOnKeyDown}\n onBlurInput={() =>\n !datepickerRef.current?.isCalendarOpen() && validateInput()\n }\n onFocus={undefined}\n toggleCalendarGUI={toggleCalendarGUI}\n disableLabelAnimation={disableLabelAnimation}\n hideCalendarButton={hideCalendarButton}\n selectedDate={selectedDate}\n />\n }\n {...rest}\n />\n </>\n );\n },\n);\n","import React from 'react';\nimport {\n BaseFormControl,\n isFilled,\n useInputGroupContext,\n useVariant,\n VariantType,\n} from '@entur/form';\nimport { DateIcon } from '@entur/icons';\nimport { useOnMount, useRandomId } from '@entur/utils';\n\nexport type NativeDatePickerProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label over NativeDatePicker */\n label: string;\n /** Varselmelding, som vil komme under NativeDatePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Tekst eller ikon som kommer før inputfelter\n * @default <DateIcon />\n */\n prepend?: React.ReactNode;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const NativeDatePicker = React.forwardRef<\n HTMLInputElement,\n NativeDatePickerProps\n>(\n (\n {\n className,\n style,\n label,\n onChange,\n feedback,\n variant,\n disableLabelAnimation,\n prepend = <DateIcon inline />,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const nativedatepickerId = useRandomId('eds-nativetimepicker');\n return (\n <BaseFormControl\n style={style}\n className={className}\n prepend={prepend}\n label={label}\n feedback={feedback}\n variant={variant}\n labelId={nativedatepickerId}\n disableLabelAnimation={disableLabelAnimation}\n isFilled\n >\n <NativeDatePickerBase\n onChange={onChange}\n aria-labelledby={nativedatepickerId}\n ref={ref}\n variant={variant}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype NativeDatePickerBaseProps = {\n onChange?: any;\n variant?: VariantType;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nconst NativeDatePickerBase = React.forwardRef<\n HTMLInputElement,\n NativeDatePickerBaseProps\n>(({ onChange, variant, value, ...rest }, ref) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n const { isFilled: isDatepickerFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n setFiller && !isDatepickerFilled && setFiller(true);\n });\n\n React.useEffect(() => {\n if (value) {\n setFiller && !isDatepickerFilled && setFiller(true);\n } else {\n setFiller && isDatepickerFilled && setFiller(false);\n }\n }, [value, setFiller, isDatepickerFilled]);\n\n const handleChange = (event: any) => {\n if (isFilled(event.target)) {\n setFiller && !isDatepickerFilled && setFiller(true);\n } else {\n setFiller && isDatepickerFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n return (\n <input\n ref={ref}\n aria-invalid={currentVariant === 'error'}\n type=\"date\"\n className=\"eds-form-control eds-native-date-picker\"\n onChange={handleChange}\n value={value}\n {...rest}\n />\n );\n});\n","import React from 'react';\nimport {\n default as ReactDatepicker,\n ReactDatePickerProps,\n registerLocale,\n} from 'react-datepicker';\nimport classNames from 'classnames';\nimport {\n BaseFormControl,\n useInputGroupContext,\n VariantType,\n} from '@entur/form';\nimport { LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { useOnMount, useRandomId } from '@entur/utils';\nimport { nb } from 'date-fns/locale';\nimport { add, sub } from 'date-fns';\nimport * as Popper from '@popperjs/core';\nimport './TimePicker.scss';\nregisterLocale('nb', nb);\n\nexport type TimePickerProps = {\n /** Hva som er den valgte datoen */\n selectedTime?: Date;\n /** Kalles når datoen/tiden endres */\n onChange: (\n date: Date | null,\n event: React.SyntheticEvent<any, Event>,\n ) => void;\n /** Placeholder om ingen dato er valgt\n * @default \"Velg tid\"\n */\n placeholder?: string;\n /** Ekstra klassenavn */\n className?: string;\n /** Label over TimePicker */\n label: string;\n /** Varselmelding, som vil komme under TimePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n style?: React.CSSProperties;\n labelTooltip?: React.ReactNode;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Kalles ved klikk på pil venstre i TimePicker\n * @default Trekker fra 30 minutter av den valgte tiden\n */\n onLeftArrowClick?: (selectedTime?: Date | null, e?: React.MouseEvent) => void;\n /** Kalles ved klikk på pil høyre i TimePicker\n * @default Legger til 30 minutter av den valgte tiden\n */\n onRightArrowClick?: (\n selectedTime?: Date | null,\n e?: React.MouseEvent,\n ) => void;\n} & ReactDatePickerProps;\n\nexport const TimePicker = React.forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n selectedTime = null,\n onChange,\n placeholder = 'Velg tid',\n disabled,\n className,\n style,\n label,\n labelTooltip,\n feedback,\n variant,\n disableLabelAnimation,\n locale = 'nb',\n onLeftArrowClick = (selectedTime, event) =>\n selectedTime && onChange(sub(selectedTime, { minutes: 30 }), event),\n onRightArrowClick = (selectedTime, event) =>\n selectedTime && onChange(add(selectedTime, { minutes: 30 }), event),\n ...rest\n },\n ref,\n ) => {\n const timepickerId = useRandomId('eds-timepicker');\n return (\n <BaseFormControl\n style={style}\n ref={ref}\n label={label}\n labelId={timepickerId}\n labelTooltip={labelTooltip}\n variant={variant}\n feedback={feedback}\n disableLabelAnimation={disableLabelAnimation}\n className=\"eds-timepicker-form-control\"\n disabled={disabled}\n prepend={\n <TimePickerArrowButton\n direction=\"left\"\n tabIndex={-1}\n onClick={(e: React.MouseEvent) => onLeftArrowClick(selectedTime, e)}\n disabled={disabled}\n />\n }\n >\n <TimePickerBase\n selectedTime={selectedTime}\n onChange={onChange}\n placeholder={placeholder}\n className={className}\n locale={locale}\n ariaLabelledBy={timepickerId}\n disabled={disabled}\n {...rest}\n />\n <TimePickerArrowButton\n direction=\"right\"\n tabIndex={-1}\n onClick={(e: React.MouseEvent) => onRightArrowClick(selectedTime, e)}\n disabled={disabled}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype TimePickerBaseProps = {\n /** Hva som er den valgte datoen */\n selectedTime?: Date | null;\n /** Kalles når datoen/tiden endres */\n onChange: (\n date: Date | null,\n event: React.SyntheticEvent<any, Event>,\n ) => void;\n /** Placeholder om ingen dato er valgt\n * @default \"Velg tid\"\n */\n placeholder?: string;\n /** Ekstra klassenavn */\n className?: string;\n [key: string]: any;\n} & ReactDatePickerProps;\n\nconst POPPER_MODIFIERS: Popper.StrictModifiers[] = [\n {\n name: 'offset',\n enabled: true,\n options: {\n offset: [0, 0],\n },\n },\n];\nconst TimePickerBase: React.FC<TimePickerBaseProps> = ({\n className,\n onChange,\n selectedTime,\n placeholder,\n timeFormat = 'HH:mm',\n dateFormat = ['HH:mm', 'HHmm'],\n ...rest\n}) => {\n const { isFilled: isTimepickerFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n if (selectedTime) {\n setFiller && !isTimepickerFilled && setFiller(true);\n }\n });\n\n React.useEffect(() => {\n if (selectedTime) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n }, [selectedTime, setFiller, isTimepickerFilled]);\n\n const handleChange = (date: any, event: any) => {\n if (date) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n if (onChange) {\n onChange(date, event);\n }\n };\n return (\n <ReactDatepicker\n className={classNames(\n 'eds-form-control',\n 'eds-timepicker__input',\n className,\n )}\n calendarClassName=\"eds-timepicker\"\n selected={selectedTime}\n onChange={handleChange}\n dateFormat={dateFormat}\n timeFormat={timeFormat}\n showTimeSelect\n showTimeInput={true}\n showTimeSelectOnly\n showPopperArrow={false}\n placeholderText={placeholder}\n popperClassName=\"eds-datepicker__popper\"\n popperModifiers={POPPER_MODIFIERS}\n open={false}\n {...rest}\n />\n );\n};\n\ntype TimePickerArrowButtonProps = {\n direction: 'left' | 'right';\n} & React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n>;\n\nconst TimePickerArrowButton: React.FC<TimePickerArrowButtonProps> = ({\n direction,\n ...rest\n}) => {\n return (\n <button\n className={classNames(\n 'eds-timepicker__arrowbutton',\n `eds-timepicker__arrowbutton--${direction}`,\n )}\n type=\"button\"\n {...rest}\n >\n {direction === 'left' ? <LeftArrowIcon /> : <RightArrowIcon />}\n </button>\n );\n};\n","import React from 'react';\nimport {\n BaseFormControl,\n isFilled,\n useInputGroupContext,\n useVariant,\n VariantType,\n} from '@entur/form';\nimport { ClockIcon } from '@entur/icons';\nimport { useOnMount, useRandomId } from '@entur/utils';\n\nexport type NativeTimePickerProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label over NativeTimePicker */\n label: string;\n /** Varselmelding, som vil komme under NativeTimePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Tekst eller ikon som kommer før inputfelter\n * @default <ClockIcon />\n */\n prepend?: React.ReactNode;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const NativeTimePicker = React.forwardRef<\n HTMLInputElement,\n NativeTimePickerProps\n>(\n (\n {\n className,\n style,\n onChange,\n label,\n feedback,\n variant,\n disableLabelAnimation,\n prepend = <ClockIcon />,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const nativetimepickerId = useRandomId('eds-nativetimepicker');\n return (\n <BaseFormControl\n style={style}\n className={className}\n prepend={prepend}\n label={label}\n feedback={feedback}\n variant={variant}\n labelId={nativetimepickerId}\n disableLabelAnimation={disableLabelAnimation}\n >\n <NativeTimePickerBase\n onChange={onChange}\n aria-labelledby={nativetimepickerId}\n ref={ref}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype NativeTimePickerBaseProps = {\n variant?: VariantType;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nconst NativeTimePickerBase = React.forwardRef<\n HTMLInputElement,\n NativeTimePickerBaseProps\n>(({ onChange, value, ...rest }, ref) => {\n const contextVariant = useVariant();\n const currentVariant = rest.variant || contextVariant;\n const { isFilled: isTimepickerFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n setFiller && !isTimepickerFilled && setFiller(true);\n });\n\n React.useEffect(() => {\n if (value) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n }, [value, setFiller, isTimepickerFilled]);\n\n const handleChange = (event: any) => {\n if (isFilled(event.target)) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n return (\n <input\n ref={ref}\n aria-invalid={currentVariant === 'error'}\n type=\"time\"\n className=\"eds-form-control eds-native-date-picker\"\n onChange={handleChange}\n value={value}\n {...rest}\n />\n );\n});\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('datepicker', 'form', 'icons');\n\nexport * from './DatePicker';\nexport * from './NativeDatePicker';\nexport * from './TimePicker';\nexport * from './NativeTimePicker';\n"],"names":["DatePickerHeader","date","decreaseMonth","increaseMonth","prevMonthButtonDisabled","nextMonthButtonDisabled","monthNames","getMonthList","React","className","IconButton","type","onClick","disabled","LeftArrowIcon","Heading3","getMonth","getFullYear","RightArrowIcon","locale","year","Date","monthList","Array","keys","formatter","Intl","DateTimeFormat","month","getMonthName","monthIndex","format","from","DatePickerInput","forwardRef","ref","style","label","inputPlaceholder","prepend","feedback","variant","calendarButtonTooltip","hideCalendarButton","disableLabelAnimation","inputRef","toggleCalendarGUI","onKeyDownInput","onBlurInput","selectedDate","rest","useEffect","current","addEventListener","handleOnKeyDown","handleOnBlur","handleOnFocus","removeEventListener","event","setTimeout","select","TextField","placeholder","mergeRefs","append","Tooltip","placement","content","disableHoverListener","disableFocusListener","CalendarIcon","refs","node","registerLocale","nb","DatePicker","onChange","onKeyDown","dateFormats","minDate","maxDate","inline","validationFeedback","validationVariant","hideCalendar","hideValidation","weekLabel","open","datepickerId","useRandomId","useState","showValidation","setShowValidation","datepickerRef","useRef","validateInput","calendarIsClosed","isCalendarOpen","key","focusAndSelectInputField","forceUpdateInputFormat","inputValue","value","inputValueParsedWithAllDateFormats","map","parse","parsedDateFromInputIsTheSameAsSelectedDate","some","dateFormat","isSameDay","getFeedbackAndVariant","undefined","setState","setOpen","ReactDatepicker","selected","showWeekNumbers","onClickOutside","id","ariaLabelledBy","showPopperArrow","preventOpenOnFocus","calendarClassName","dayClassName","weekDayClassName","classNames","highlightDates","renderCustomHeader","changeYear","changeMonth","customInput","onFocus","NativeDatePicker","DateIcon","nativedatepickerId","BaseFormControl","labelId","isFilled","NativeDatePickerBase","contextVariant","useVariant","currentVariant","useInputGroupContext","isDatepickerFilled","setFiller","setFilled","useOnMount","handleChange","target","TimePicker","selectedTime","labelTooltip","onLeftArrowClick","sub","minutes","onRightArrowClick","add","timepickerId","TimePickerArrowButton","direction","tabIndex","e","TimePickerBase","POPPER_MODIFIERS","name","enabled","options","offset","timeFormat","isTimepickerFilled","showTimeSelect","showTimeInput","showTimeSelectOnly","placeholderText","popperClassName","popperModifiers","NativeTimePicker","ClockIcon","nativetimepickerId","NativeTimePickerBase","warnAboutMissingStyles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"datepicker.cjs.development.js","sources":["../src/DatePicker/DatePickerHeader.tsx","../src/DatePicker/DatePickerInput.tsx","../src/DatePicker/DatePicker.tsx","../src/NativeDatePicker.tsx","../src/TimePicker.tsx","../src/NativeTimePicker.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport { ReactDatePickerCustomHeaderProps } from 'react-datepicker';\n\nimport { LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { Heading3 } from '@entur/typography';\nimport { IconButton } from '@entur/button';\n\nexport const DatePickerHeader = ({\n date,\n decreaseMonth,\n increaseMonth,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n}: Partial<ReactDatePickerCustomHeaderProps>) => {\n const monthNames = getMonthList();\n return (\n <div className=\"eds-datepicker__calender__header\">\n <IconButton\n type=\"button\"\n className=\"eds-datepicker__calender__header__month-button--left\"\n onClick={decreaseMonth}\n disabled={prevMonthButtonDisabled}\n >\n <LeftArrowIcon />\n </IconButton>\n <Heading3 className=\"eds-datepicker__calender__header__month-text\">\n {monthNames[date?.getMonth() ?? 0]}\n </Heading3>\n <Heading3 className=\"eds-datepicker__calender__header__month-text\">\n {date?.getFullYear()}\n </Heading3>\n\n <IconButton\n type=\"button\"\n className=\"eds-datepicker__calender__header__month-button--right\"\n onClick={increaseMonth}\n disabled={nextMonthButtonDisabled}\n >\n <RightArrowIcon />\n </IconButton>\n </div>\n );\n};\n\nfunction getMonthList(locale = 'nb') {\n const year = new Date().getFullYear();\n const monthList = Array(12).keys();\n const formatter = new Intl.DateTimeFormat(locale, {\n month: 'long',\n });\n const getMonthName = (monthIndex: number) =>\n formatter.format(new Date(year, monthIndex));\n\n return Array.from(monthList, getMonthName);\n}\n","import React from 'react';\n\nimport { TextField, VariantType } from '@entur/form';\nimport { Tooltip } from '@entur/tooltip';\nimport { IconButton } from '@entur/button';\nimport { CalendarIcon } from '@entur/icons';\n\ntype DatePickerInputProps = {\n style?: React.CSSProperties;\n label: string;\n inputPlaceholder: string;\n prepend?: React.ReactNode;\n feedback?: string;\n variant?: VariantType;\n disabled?: boolean;\n disableLabelAnimation?: boolean;\n calendarButtonTooltip: string;\n hideCalendarButton?: boolean;\n inputRef: React.RefObject<HTMLInputElement>;\n calendarButtonId: string;\n forwardRef: React.ForwardedRef<HTMLInputElement>;\n toggleCalendarGUI: () => void;\n setFocusToCalendarGUI: () => void;\n setShouldFocusOnCalendarButtonAfterSelect: React.Dispatch<\n React.SetStateAction<boolean>\n >;\n onKeyDownInput: (event: KeyboardEvent) => any;\n onBlurInput: (event: FocusEvent) => any;\n calendarGUIIsOpen: () => boolean | undefined;\n onClick?: React.MouseEventHandler<HTMLInputElement>; // react-datepicker's onClick prop\n onFocus: undefined; // To prevent open on focus\n selectedDate: Date | null; // Necessary to update component on state change\n placeholder?: null; // override react-datepickers placeholder prop\n};\n\nexport const DatePickerInput = React.forwardRef<\n HTMLInputElement,\n DatePickerInputProps\n>(\n (\n {\n style,\n label,\n inputPlaceholder,\n prepend,\n feedback,\n variant,\n disabled,\n calendarButtonTooltip,\n hideCalendarButton,\n disableLabelAnimation,\n inputRef,\n calendarButtonId,\n forwardRef,\n toggleCalendarGUI,\n onKeyDownInput,\n onBlurInput,\n selectedDate,\n setFocusToCalendarGUI,\n setShouldFocusOnCalendarButtonAfterSelect,\n calendarGUIIsOpen,\n placeholder, // eslint-disable-line\n onClick,\n ...rest // forwarded props from react-datepicker\n },\n ref,\n ) => {\n React.useEffect(() => {\n inputRef.current?.addEventListener('keydown', handleOnKeyDown);\n inputRef.current?.addEventListener('blur', handleOnBlur);\n inputRef.current?.addEventListener('focus', handleOnFocus);\n return () => {\n inputRef.current?.removeEventListener('keydown', handleOnKeyDown);\n inputRef.current?.removeEventListener('blur', handleOnBlur);\n inputRef.current?.removeEventListener('focus', handleOnFocus);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [inputRef, selectedDate]);\n\n function handleOnKeyDown(this: HTMLElement, event: KeyboardEvent) {\n onKeyDownInput(event);\n }\n function handleOnBlur(this: HTMLElement, event: FocusEvent) {\n onBlurInput(event);\n }\n const handleOnFocus = () =>\n requestAnimationFrame(() => inputRef.current?.select());\n\n const handleOnClickInputField = (\n event: React.MouseEvent<HTMLInputElement, MouseEvent>,\n ) => {\n setShouldFocusOnCalendarButtonAfterSelect(false);\n onClick && onClick(event);\n };\n\n const handleOnClickCalendarButton = () => {\n toggleCalendarGUI();\n setFocusToCalendarGUI();\n setShouldFocusOnCalendarButtonAfterSelect(true);\n };\n\n return (\n <TextField\n style={style}\n label={label}\n placeholder={inputPlaceholder}\n prepend={prepend}\n feedback={feedback}\n variant={variant}\n disableLabelAnimation={disableLabelAnimation}\n ref={mergeRefs(ref, inputRef, forwardRef)}\n onClick={handleOnClickInputField}\n append={\n !hideCalendarButton && (\n <Tooltip\n placement=\"top\"\n content={calendarButtonTooltip}\n disableHoverListener={disabled}\n disableFocusListener={disabled}\n >\n <IconButton\n id={calendarButtonId}\n type=\"button\"\n onClick={handleOnClickCalendarButton}\n tabIndex={calendarGUIIsOpen() ? -1 : 0}\n >\n <CalendarIcon />\n </IconButton>\n </Tooltip>\n )\n }\n {...rest}\n />\n );\n },\n);\n\nconst mergeRefs = <T extends HTMLElement>(\n ...refs: React.MutableRefObject<T>[] | React.ForwardedRef<T>[]\n) => {\n return (node: T) => {\n for (const ref of refs) {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) ref.current = node;\n }\n };\n};\n","import React, { useRef, useState } from 'react';\nimport ReactDatePicker, {\n default as ReactDatepicker,\n ReactDatePickerProps,\n registerLocale,\n} from 'react-datepicker';\nimport { parse, isSameDay, Locale } from 'date-fns';\nimport { nb } from 'date-fns/locale';\nimport classNames from 'classnames';\n\nimport { VariantType } from '@entur/form';\nimport { useRandomId } from '@entur/utils';\n\nimport { DatePickerHeader } from './DatePickerHeader';\nimport { DatePickerInput } from './DatePickerInput';\n\nimport './DatePicker.scss';\nimport 'react-datepicker/dist/react-datepicker.css';\n\nregisterLocale('nb', nb);\n\nexport type DatePickerProps = {\n /** Hva som er den valgte datoen */\n selectedDate: Date | null;\n /** Kalles når datoen/tiden endres */\n onChange: (\n date: Date | null,\n event: React.SyntheticEvent<any, Event> | undefined,\n ) => void;\n /**\n * Kalles når en tast trykkes i inputfeltet\n */\n onKeyDown?: (event: KeyboardEvent) => void;\n /**\n * Datoformater som skal støttes. Første i listen er formatet alt input omgjøres til.\n * Format-valg tilgjengelig her: https://date-fns.org/v2.28.0/docs/format\n * OBS: Noen kombinasjoner av datoformater kan gi rar og uønsket oppførsel,\n * test nøye ved endring\n * @default \"['dd.MM.yyyy', 'ddMMyyyy', 'dd/MM/yyyy', 'ddMMyy']\"\n */\n dateFormats?: string[];\n /**\n * Locale fra date-fns som brukes av Datepicker-en\n * @default nb\n */\n locale?: Locale;\n /** Placeholder om ingen dato er valgt\n * @default \"dd.mm.yyyy\"\n */\n placeholder?: string;\n /** Ekstra klassenavn */\n className?: string;\n /** Label over DatePicker */\n label: string;\n /**\n * Varselmelding, som vil komme under DatePicker\n */\n feedback?: string;\n /** Valideringsvariant\n */\n variant?: VariantType;\n /** Varselmelding for når datoen er på feil format\n * @default \"Ugyldig dato\"\n */\n validationFeedback?: string;\n /** Valideringsvariant for melding om feil datoformat\n * @default \"error\"\n */\n validationVariant?: VariantType;\n style?: React.CSSProperties;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Tekst eller ikon som kommer før inputfelter\n * @default <DateIcon />\n */\n prepend?: React.ReactNode;\n /**\n * Tekst som vises ved hover på «Åpne kalender»-knappen\n */\n calendarButtonTooltip?: string;\n /** Skjuler knapp for åpning av kalender\n * @default false\n */\n hideCalendarButton?: boolean;\n /** Skjuler tilbakemeldingsteksten ved feil dato-input\n * @default false\n */\n hideValidation?: boolean;\n /** Skjuler kalender-GUI-et\n * @default false\n */\n hideCalendar?: boolean;\n /** Viser kun kalender-popover-en\n * @default false\n */\n inline?: boolean;\n // For testing\n 'data-cy'?: any;\n} & Omit<\n ReactDatePickerProps,\n 'selected' | 'customInput' | 'onChangeRaw' | 'dateFormat' | 'locale'\n>;\n\nexport const DatePicker = React.forwardRef<HTMLInputElement, DatePickerProps>(\n (\n {\n style,\n className,\n selectedDate,\n label,\n placeholder = 'dd.mm.yyyy',\n onChange,\n onKeyDown = () => null,\n dateFormats = ['dd.MM.yyyy', 'ddMMyyyy', 'dd/MM/yyyy', 'ddMMyy'],\n minDate,\n maxDate,\n inline = false,\n disabled,\n prepend,\n feedback = '',\n variant,\n validationFeedback = 'Ugyldig dato',\n validationVariant = 'error',\n disableLabelAnimation = false,\n calendarButtonTooltip = 'Åpne\\xa0kalender',\n hideCalendarButton = false,\n hideCalendar = false,\n hideValidation = false,\n weekLabel = 'uke',\n locale = nb,\n open,\n ...rest\n },\n ref,\n ) => {\n const datepickerId = useRandomId('eds-datepicker');\n\n const datepickerRef = useRef<ReactDatePicker>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const calendarButton = document.getElementById(datepickerId + '-button');\n\n const [showValidation, setShowValidation] = useState(false);\n const [\n shouldFocusOnCalendarButtonAfterSelect,\n setShouldFocusOnCalendarButtonAfterSelect,\n ] = useState(false);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useEffect(() => validateInput(), [selectedDate]);\n\n const handleOnChange = (\n date: Date | null,\n event: React.SyntheticEvent<any, Event> | undefined,\n ): void => {\n if (shouldFocusOnCalendarButtonAfterSelect && !hideCalendarButton) {\n calendarButton?.focus();\n setShouldFocusOnCalendarButtonAfterSelect(false);\n } else inputRef.current?.focus();\n\n onChange(date, event);\n };\n\n const handleOnKeyDown = (event: KeyboardEvent) => {\n setShowValidation(false);\n\n if (event.key === 'Enter') {\n if (!datePickerGUIIsOpen()) {\n // onBlurInput will validate if calendar is open\n validateInput();\n forceUpdateInputFormat();\n }\n focusAndSelectInputField();\n } else if (event.key === 'Tab' && datePickerGUIIsOpen()) {\n forceUpdateInputFormat();\n } else if (event.key === 'Escape') {\n forceUpdateInputFormat();\n focusAndSelectInputField();\n if (datePickerGUIIsOpen()) toggleCalendarGUI();\n }\n onKeyDown(event);\n };\n\n const handleOnClickOutside = () =>\n setShouldFocusOnCalendarButtonAfterSelect(false);\n\n const handleOnBlurInput = () => {\n if (datePickerGUIIsOpen()) return;\n validateInput();\n forceUpdateInputFormat();\n };\n\n const validateInput = () => {\n setShowValidation(false);\n const inputValue = inputRef.current?.value;\n if (!inputValue) return;\n\n const inputValueParsedWithAllDateFormats = dateFormats.map(format =>\n parse(inputValue, format, new Date(), {\n locale: locale,\n }),\n );\n\n const parsedDateFromInputIsTheSameAsSelectedDate =\n selectedDate &&\n inputValueParsedWithAllDateFormats.some(dateFormat =>\n isSameDay(dateFormat, selectedDate),\n );\n\n if (parsedDateFromInputIsTheSameAsSelectedDate) {\n // valid date inputted\n setShowValidation(false);\n } else {\n // invalid date inputted\n setShowValidation(true);\n }\n };\n\n const getFeedbackAndVariant = (): {\n feedback: string;\n variant: VariantType | undefined;\n } => {\n if (feedback) return { feedback, variant };\n if (!hideValidation && showValidation)\n return { feedback: validationFeedback, variant: validationVariant };\n return { feedback: '', variant: undefined };\n };\n\n const focusAndSelectInputField = () =>\n requestAnimationFrame(() => inputRef.current?.select());\n\n const forceUpdateInputFormat = () =>\n datepickerRef.current?.setState({ inputValue: null });\n\n const toggleCalendarGUI = () =>\n datepickerRef.current?.setOpen(!datePickerGUIIsOpen());\n\n // this focus function will fail if both an inline and a non-inline calendar is present in the same document\n const setFocusToCalendarGUI = () => {\n if (inline || hideCalendar || datePickerGUIIsOpen()) return;\n // 1 frame delay to allow calendar to spawn\n requestAnimationFrame(() => {\n const dateToSetFocusTo = selectedDate\n ? (document.getElementsByClassName(\n 'eds-datepicker__calender__day--selected',\n )[0] as HTMLElement | null)\n : (document.getElementsByClassName(\n 'eds-datepicker__calender__day--today',\n )[0] as HTMLElement | null);\n if (dateToSetFocusTo !== null) dateToSetFocusTo.focus();\n });\n setShouldFocusOnCalendarButtonAfterSelect(true);\n setShowValidation(false);\n };\n\n const datePickerGUIIsOpen = () => datepickerRef.current?.isCalendarOpen();\n\n return (\n <>\n <ReactDatepicker\n selected={selectedDate}\n minDate={minDate}\n maxDate={maxDate}\n dateFormat={dateFormats}\n showWeekNumbers\n weekLabel={weekLabel}\n onChange={handleOnChange}\n onClickOutside={handleOnClickOutside}\n id={datepickerId}\n ariaLabelledBy={datepickerId}\n showPopperArrow={false}\n locale={locale}\n inline={inline}\n disabled={disabled}\n preventOpenOnFocus={true}\n open={hideCalendar ? false : open}\n ref={datepickerRef}\n calendarClassName=\"eds-datepicker__calender\"\n dayClassName={() => 'eds-datepicker__calender__day'}\n weekDayClassName={() => 'eds-datepicker__calender__day-name'}\n className={classNames(className, 'eds-datepicker__input')}\n highlightDates={[\n { 'eds-datepicker__calender__day--today': [new Date()] },\n {\n 'eds-datepicker__calender__day--selected': selectedDate\n ? [selectedDate]\n : [],\n },\n ]}\n renderCustomHeader={({\n date,\n changeYear,\n changeMonth,\n decreaseMonth,\n increaseMonth,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n }) => (\n <DatePickerHeader\n date={date}\n changeYear={changeYear}\n changeMonth={changeMonth}\n increaseMonth={increaseMonth}\n decreaseMonth={decreaseMonth}\n prevMonthButtonDisabled={prevMonthButtonDisabled}\n nextMonthButtonDisabled={nextMonthButtonDisabled}\n />\n )}\n customInput={\n <DatePickerInput\n style={style}\n label={label}\n inputPlaceholder={placeholder}\n calendarButtonTooltip={calendarButtonTooltip}\n prepend={prepend}\n feedback={getFeedbackAndVariant().feedback}\n variant={getFeedbackAndVariant().variant}\n inputRef={inputRef}\n calendarButtonId={datepickerId + '-button'}\n forwardRef={ref}\n onKeyDownInput={handleOnKeyDown}\n onBlurInput={handleOnBlurInput}\n onFocus={undefined}\n toggleCalendarGUI={toggleCalendarGUI}\n setFocusToCalendarGUI={setFocusToCalendarGUI}\n setShouldFocusOnCalendarButtonAfterSelect={\n setShouldFocusOnCalendarButtonAfterSelect\n }\n calendarGUIIsOpen={datePickerGUIIsOpen}\n disableLabelAnimation={disableLabelAnimation}\n hideCalendarButton={hideCalendarButton}\n selectedDate={selectedDate}\n />\n }\n {...rest}\n />\n </>\n );\n },\n);\n","import React from 'react';\nimport {\n BaseFormControl,\n isFilled,\n useInputGroupContext,\n useVariant,\n VariantType,\n} from '@entur/form';\nimport { DateIcon } from '@entur/icons';\nimport { useOnMount, useRandomId } from '@entur/utils';\n\nexport type NativeDatePickerProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label over NativeDatePicker */\n label: string;\n /** Varselmelding, som vil komme under NativeDatePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Tekst eller ikon som kommer før inputfelter\n * @default <DateIcon />\n */\n prepend?: React.ReactNode;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const NativeDatePicker = React.forwardRef<\n HTMLInputElement,\n NativeDatePickerProps\n>(\n (\n {\n className,\n style,\n label,\n onChange,\n feedback,\n variant,\n disableLabelAnimation,\n prepend = <DateIcon inline />,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const nativedatepickerId = useRandomId('eds-nativetimepicker');\n return (\n <BaseFormControl\n style={style}\n className={className}\n prepend={prepend}\n label={label}\n feedback={feedback}\n variant={variant}\n labelId={nativedatepickerId}\n disableLabelAnimation={disableLabelAnimation}\n isFilled\n >\n <NativeDatePickerBase\n onChange={onChange}\n aria-labelledby={nativedatepickerId}\n ref={ref}\n variant={variant}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype NativeDatePickerBaseProps = {\n onChange?: any;\n variant?: VariantType;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nconst NativeDatePickerBase = React.forwardRef<\n HTMLInputElement,\n NativeDatePickerBaseProps\n>(({ onChange, variant, value, ...rest }, ref) => {\n const contextVariant = useVariant();\n const currentVariant = variant || contextVariant;\n const { isFilled: isDatepickerFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n setFiller && !isDatepickerFilled && setFiller(true);\n });\n\n React.useEffect(() => {\n if (value) {\n setFiller && !isDatepickerFilled && setFiller(true);\n } else {\n setFiller && isDatepickerFilled && setFiller(false);\n }\n }, [value, setFiller, isDatepickerFilled]);\n\n const handleChange = (event: any) => {\n if (isFilled(event.target)) {\n setFiller && !isDatepickerFilled && setFiller(true);\n } else {\n setFiller && isDatepickerFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n return (\n <input\n ref={ref}\n aria-invalid={currentVariant === 'error'}\n type=\"date\"\n className=\"eds-form-control eds-native-date-picker\"\n onChange={handleChange}\n value={value}\n {...rest}\n />\n );\n});\n","import React from 'react';\nimport {\n default as ReactDatepicker,\n ReactDatePickerProps,\n registerLocale,\n} from 'react-datepicker';\nimport classNames from 'classnames';\nimport {\n BaseFormControl,\n useInputGroupContext,\n VariantType,\n} from '@entur/form';\nimport { LeftArrowIcon, RightArrowIcon } from '@entur/icons';\nimport { useOnMount, useRandomId } from '@entur/utils';\nimport { nb } from 'date-fns/locale';\nimport { add, sub } from 'date-fns';\nimport * as Popper from '@popperjs/core';\nimport './TimePicker.scss';\nregisterLocale('nb', nb);\n\nexport type TimePickerProps = {\n /** Hva som er den valgte datoen */\n selectedTime?: Date;\n /** Kalles når datoen/tiden endres */\n onChange: (\n date: Date | null,\n event: React.SyntheticEvent<any, Event>,\n ) => void;\n /** Placeholder om ingen dato er valgt\n * @default \"Velg tid\"\n */\n placeholder?: string;\n /** Ekstra klassenavn */\n className?: string;\n /** Label over TimePicker */\n label: string;\n /** Varselmelding, som vil komme under TimePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n style?: React.CSSProperties;\n labelTooltip?: React.ReactNode;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Kalles ved klikk på pil venstre i TimePicker\n * @default Trekker fra 30 minutter av den valgte tiden\n */\n onLeftArrowClick?: (selectedTime?: Date | null, e?: React.MouseEvent) => void;\n /** Kalles ved klikk på pil høyre i TimePicker\n * @default Legger til 30 minutter av den valgte tiden\n */\n onRightArrowClick?: (\n selectedTime?: Date | null,\n e?: React.MouseEvent,\n ) => void;\n} & ReactDatePickerProps;\n\nexport const TimePicker = React.forwardRef<HTMLDivElement, TimePickerProps>(\n (\n {\n selectedTime = null,\n onChange,\n placeholder = 'Velg tid',\n disabled,\n className,\n style,\n label,\n labelTooltip,\n feedback,\n variant,\n disableLabelAnimation,\n locale = 'nb',\n onLeftArrowClick = (selectedTime, event) =>\n selectedTime && onChange(sub(selectedTime, { minutes: 30 }), event),\n onRightArrowClick = (selectedTime, event) =>\n selectedTime && onChange(add(selectedTime, { minutes: 30 }), event),\n ...rest\n },\n ref,\n ) => {\n const timepickerId = useRandomId('eds-timepicker');\n return (\n <BaseFormControl\n style={style}\n ref={ref}\n label={label}\n labelId={timepickerId}\n labelTooltip={labelTooltip}\n variant={variant}\n feedback={feedback}\n disableLabelAnimation={disableLabelAnimation}\n className=\"eds-timepicker-form-control\"\n disabled={disabled}\n prepend={\n <TimePickerArrowButton\n direction=\"left\"\n tabIndex={-1}\n onClick={(e: React.MouseEvent) => onLeftArrowClick(selectedTime, e)}\n disabled={disabled}\n />\n }\n >\n <TimePickerBase\n selectedTime={selectedTime}\n onChange={onChange}\n placeholder={placeholder}\n className={className}\n locale={locale}\n ariaLabelledBy={timepickerId}\n disabled={disabled}\n {...rest}\n />\n <TimePickerArrowButton\n direction=\"right\"\n tabIndex={-1}\n onClick={(e: React.MouseEvent) => onRightArrowClick(selectedTime, e)}\n disabled={disabled}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype TimePickerBaseProps = {\n /** Hva som er den valgte datoen */\n selectedTime?: Date | null;\n /** Kalles når datoen/tiden endres */\n onChange: (\n date: Date | null,\n event: React.SyntheticEvent<any, Event>,\n ) => void;\n /** Placeholder om ingen dato er valgt\n * @default \"Velg tid\"\n */\n placeholder?: string;\n /** Ekstra klassenavn */\n className?: string;\n [key: string]: any;\n} & ReactDatePickerProps;\n\nconst POPPER_MODIFIERS: Popper.StrictModifiers[] = [\n {\n name: 'offset',\n enabled: true,\n options: {\n offset: [0, 0],\n },\n },\n];\nconst TimePickerBase: React.FC<TimePickerBaseProps> = ({\n className,\n onChange,\n selectedTime,\n placeholder,\n timeFormat = 'HH:mm',\n dateFormat = ['HH:mm', 'HHmm'],\n ...rest\n}) => {\n const { isFilled: isTimepickerFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n if (selectedTime) {\n setFiller && !isTimepickerFilled && setFiller(true);\n }\n });\n\n React.useEffect(() => {\n if (selectedTime) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n }, [selectedTime, setFiller, isTimepickerFilled]);\n\n const handleChange = (date: any, event: any) => {\n if (date) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n if (onChange) {\n onChange(date, event);\n }\n };\n return (\n <ReactDatepicker\n className={classNames(\n 'eds-form-control',\n 'eds-timepicker__input',\n className,\n )}\n calendarClassName=\"eds-timepicker\"\n selected={selectedTime}\n onChange={handleChange}\n dateFormat={dateFormat}\n timeFormat={timeFormat}\n showTimeSelect\n showTimeInput={true}\n showTimeSelectOnly\n showPopperArrow={false}\n placeholderText={placeholder}\n popperClassName=\"eds-datepicker__popper\"\n popperModifiers={POPPER_MODIFIERS}\n open={false}\n {...rest}\n />\n );\n};\n\ntype TimePickerArrowButtonProps = {\n direction: 'left' | 'right';\n} & React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n>;\n\nconst TimePickerArrowButton: React.FC<TimePickerArrowButtonProps> = ({\n direction,\n ...rest\n}) => {\n return (\n <button\n className={classNames(\n 'eds-timepicker__arrowbutton',\n `eds-timepicker__arrowbutton--${direction}`,\n )}\n type=\"button\"\n {...rest}\n >\n {direction === 'left' ? <LeftArrowIcon /> : <RightArrowIcon />}\n </button>\n );\n};\n","import React from 'react';\nimport {\n BaseFormControl,\n isFilled,\n useInputGroupContext,\n useVariant,\n VariantType,\n} from '@entur/form';\nimport { ClockIcon } from '@entur/icons';\nimport { useOnMount, useRandomId } from '@entur/utils';\n\nexport type NativeTimePickerProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Label over NativeTimePicker */\n label: string;\n /** Varselmelding, som vil komme under NativeTimePicker */\n feedback?: string;\n /** Valideringsvariant */\n variant?: VariantType;\n /** Plasserer labelen statisk på toppen av inputfeltet\n * @default false\n */\n disableLabelAnimation?: boolean;\n /** Tekst eller ikon som kommer før inputfelter\n * @default <ClockIcon />\n */\n prepend?: React.ReactNode;\n} & React.InputHTMLAttributes<HTMLInputElement>;\n\nexport const NativeTimePicker = React.forwardRef<\n HTMLInputElement,\n NativeTimePickerProps\n>(\n (\n {\n className,\n style,\n onChange,\n label,\n feedback,\n variant,\n disableLabelAnimation,\n prepend = <ClockIcon />,\n ...rest\n },\n ref: React.Ref<HTMLInputElement>,\n ) => {\n const nativetimepickerId = useRandomId('eds-nativetimepicker');\n return (\n <BaseFormControl\n style={style}\n className={className}\n prepend={prepend}\n label={label}\n feedback={feedback}\n variant={variant}\n labelId={nativetimepickerId}\n disableLabelAnimation={disableLabelAnimation}\n >\n <NativeTimePickerBase\n onChange={onChange}\n aria-labelledby={nativetimepickerId}\n ref={ref}\n {...rest}\n />\n </BaseFormControl>\n );\n },\n);\n\ntype NativeTimePickerBaseProps = {\n variant?: VariantType;\n} & React.DetailedHTMLProps<\n React.InputHTMLAttributes<HTMLInputElement>,\n HTMLInputElement\n>;\n\nconst NativeTimePickerBase = React.forwardRef<\n HTMLInputElement,\n NativeTimePickerBaseProps\n>(({ onChange, value, ...rest }, ref) => {\n const contextVariant = useVariant();\n const currentVariant = rest.variant || contextVariant;\n const { isFilled: isTimepickerFilled, setFilled: setFiller } =\n useInputGroupContext();\n\n useOnMount(() => {\n setFiller && !isTimepickerFilled && setFiller(true);\n });\n\n React.useEffect(() => {\n if (value) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n }, [value, setFiller, isTimepickerFilled]);\n\n const handleChange = (event: any) => {\n if (isFilled(event.target)) {\n setFiller && !isTimepickerFilled && setFiller(true);\n } else {\n setFiller && isTimepickerFilled && setFiller(false);\n }\n if (onChange) {\n onChange(event);\n }\n };\n return (\n <input\n ref={ref}\n aria-invalid={currentVariant === 'error'}\n type=\"time\"\n className=\"eds-form-control eds-native-date-picker\"\n onChange={handleChange}\n value={value}\n {...rest}\n />\n );\n});\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('datepicker', 'form', 'icons');\n\nexport * from './DatePicker';\nexport * from './NativeDatePicker';\nexport * from './TimePicker';\nexport * from './NativeTimePicker';\n"],"names":["DatePickerHeader","date","decreaseMonth","increaseMonth","prevMonthButtonDisabled","nextMonthButtonDisabled","monthNames","getMonthList","React","className","IconButton","type","onClick","disabled","LeftArrowIcon","Heading3","getMonth","getFullYear","RightArrowIcon","locale","year","Date","monthList","Array","keys","formatter","Intl","DateTimeFormat","month","getMonthName","monthIndex","format","from","DatePickerInput","forwardRef","ref","style","label","inputPlaceholder","prepend","feedback","variant","calendarButtonTooltip","hideCalendarButton","disableLabelAnimation","inputRef","calendarButtonId","toggleCalendarGUI","onKeyDownInput","onBlurInput","selectedDate","setFocusToCalendarGUI","setShouldFocusOnCalendarButtonAfterSelect","calendarGUIIsOpen","rest","useEffect","current","addEventListener","handleOnKeyDown","handleOnBlur","handleOnFocus","removeEventListener","event","requestAnimationFrame","select","handleOnClickInputField","handleOnClickCalendarButton","TextField","placeholder","mergeRefs","append","Tooltip","placement","content","disableHoverListener","disableFocusListener","id","tabIndex","CalendarIcon","refs","node","registerLocale","nb","DatePicker","onChange","onKeyDown","dateFormats","minDate","maxDate","inline","validationFeedback","validationVariant","hideCalendar","hideValidation","weekLabel","open","datepickerId","useRandomId","datepickerRef","useRef","calendarButton","document","getElementById","useState","showValidation","setShowValidation","shouldFocusOnCalendarButtonAfterSelect","validateInput","handleOnChange","focus","key","datePickerGUIIsOpen","forceUpdateInputFormat","focusAndSelectInputField","handleOnClickOutside","handleOnBlurInput","inputValue","value","inputValueParsedWithAllDateFormats","map","parse","parsedDateFromInputIsTheSameAsSelectedDate","some","dateFormat","isSameDay","getFeedbackAndVariant","undefined","setState","setOpen","dateToSetFocusTo","getElementsByClassName","isCalendarOpen","ReactDatepicker","selected","showWeekNumbers","onClickOutside","ariaLabelledBy","showPopperArrow","preventOpenOnFocus","calendarClassName","dayClassName","weekDayClassName","classNames","highlightDates","renderCustomHeader","changeYear","changeMonth","customInput","onFocus","NativeDatePicker","DateIcon","nativedatepickerId","BaseFormControl","labelId","isFilled","NativeDatePickerBase","contextVariant","useVariant","currentVariant","useInputGroupContext","isDatepickerFilled","setFiller","setFilled","useOnMount","handleChange","target","TimePicker","selectedTime","labelTooltip","onLeftArrowClick","sub","minutes","onRightArrowClick","add","timepickerId","TimePickerArrowButton","direction","e","TimePickerBase","POPPER_MODIFIERS","name","enabled","options","offset","timeFormat","isTimepickerFilled","showTimeSelect","showTimeInput","showTimeSelectOnly","placeholderText","popperClassName","popperModifiers","NativeTimePicker","ClockIcon","nativetimepickerId","NativeTimePickerBase","warnAboutMissingStyles"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),a=require("react-datepicker"),n=require("date-fns"),r=require("date-fns/locale"),l=require("classnames"),o=require("@entur/icons"),i=require("@entur/typography"),d=require("@entur/button"),u=require("@entur/form"),c=require("@entur/tooltip");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("react-datepicker/dist/react-datepicker.css");var f=s(t),m=s(a),p=s(l);function b(){return b=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n])}return e},b.apply(this,arguments)}function v(e,t){if(null==e)return{};var a,n,r={},l=Object.keys(e);for(n=0;n<l.length;n++)t.indexOf(a=l[n])>=0||(r[a]=e[a]);return r}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}function y(e,t){var a="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(a)return(a=a.call(e)).next.bind(a);if(Array.isArray(e)||(a=function(e,t){if(e){if("string"==typeof e)return h(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);return"Object"===a&&e.constructor&&(a=e.constructor.name),"Map"===a||"Set"===a?Array.from(e):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?h(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){a&&(e=a);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var k=function(e){var t,a=e.date,n=e.decreaseMonth,r=e.increaseMonth,l=e.prevMonthButtonDisabled,u=e.nextMonthButtonDisabled,c=function(e){void 0===e&&(e="nb");var t=(new Date).getFullYear(),a=Array(12).keys(),n=new Intl.DateTimeFormat(e,{month:"long"});return Array.from(a,(function(e){return n.format(new Date(t,e))}))}();return f.default.createElement("div",{className:"eds-datepicker__calender__header"},f.default.createElement(d.IconButton,{type:"button",className:"eds-datepicker__calender__header__month-button--left",onClick:n,disabled:l},f.default.createElement(o.LeftArrowIcon,null)),f.default.createElement(i.Heading3,{className:"eds-datepicker__calender__header__month-text"},c[null!=(t=null==a?void 0:a.getMonth())?t:0]),f.default.createElement(i.Heading3,{className:"eds-datepicker__calender__header__month-text"},null==a?void 0:a.getFullYear()),f.default.createElement(d.IconButton,{type:"button",className:"eds-datepicker__calender__header__month-button--right",onClick:r,disabled:u},f.default.createElement(o.RightArrowIcon,null)))},g=["style","label","inputPlaceholder","prepend","feedback","variant","disabled","calendarButtonTooltip","hideCalendarButton","disableLabelAnimation","inputRef","forwardRef","toggleCalendarGUI","onKeyDownInput","onBlurInput","selectedDate","placeholder"],C=f.default.forwardRef((function(e,t){var a=e.style,n=e.label,r=e.inputPlaceholder,l=e.prepend,i=e.feedback,s=e.variant,m=e.disabled,p=e.calendarButtonTooltip,h=e.hideCalendarButton,y=e.disableLabelAnimation,k=e.inputRef,C=e.forwardRef,w=e.toggleCalendarGUI,E=e.onKeyDownInput,I=e.onBlurInput,A=e.selectedDate,L=v(e,g);function D(e){E(e)}function N(e){I(e)}function F(){setTimeout((function(){var e;return null==(e=k.current)?void 0:e.select()}),5)}return f.default.useEffect((function(){var e,t,a;return null==(e=k.current)||e.addEventListener("keydown",D),null==(t=k.current)||t.addEventListener("blur",N),null==(a=k.current)||a.addEventListener("focus",F),function(){var e,t,a;null==(e=k.current)||e.removeEventListener("keydown",D),null==(t=k.current)||t.removeEventListener("blur",N),null==(a=k.current)||a.removeEventListener("focus",F)}}),[k,A]),f.default.createElement(u.TextField,b({style:a,label:n,placeholder:r,prepend:l,feedback:i,variant:s,disableLabelAnimation:y,ref:_(t,k,C),append:!h&&f.default.createElement(c.Tooltip,{placement:"top",content:p,disableHoverListener:m,disableFocusListener:m},f.default.createElement(d.IconButton,{type:"button",onClick:w},f.default.createElement(o.CalendarIcon,null)))},L))})),_=function(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];return function(e){for(var a,n=y(t);!(a=n()).done;){var r=a.value;"function"==typeof r?r(e):r&&(r.current=e)}}},w=["style","className","selectedDate","label","placeholder","onChange","onKeyDown","dateFormats","minDate","maxDate","inline","disabled","prepend","feedback","variant","validationFeedback","validationVariant","disableLabelAnimation","calendarButtonTooltip","hideCalendarButton","hideCalendar","hideValidation","weekLabel","locale","open"];a.registerLocale("nb",r.nb);var E=f.default.forwardRef((function(a,l){var o=a.style,i=a.className,d=a.selectedDate,u=a.label,c=a.placeholder,s=void 0===c?"dd.mm.yyyy":c,h=a.onChange,y=a.onKeyDown,g=void 0===y?function(){return null}:y,_=a.dateFormats,E=void 0===_?["dd.MM.yyyy","ddMMyyyy","dd/MM/yyyy","ddMMyy"]:_,I=a.minDate,A=a.maxDate,L=a.inline,D=void 0!==L&&L,N=a.disabled,F=a.prepend,M=a.feedback,B=void 0===M?"":M,T=a.variant,R=a.validationFeedback,x=void 0===R?"Ugyldig dato":R,O=a.validationVariant,q=void 0===O?"error":O,P=a.disableLabelAnimation,S=void 0!==P&&P,H=a.calendarButtonTooltip,j=void 0===H?"Åpne kalender":H,V=a.hideCalendarButton,G=void 0!==V&&V,K=a.hideCalendar,U=void 0!==K&&K,Y=a.hideValidation,W=void 0!==Y&&Y,$=a.weekLabel,z=void 0===$?"uke":$,J=a.locale,Q=void 0===J?r.nb:J,X=a.open,Z=v(a,w),ee=e.useRandomId("eds-datepicker"),te=t.useState(!1),ae=te[0],ne=te[1],re=t.useRef(null),le=f.default.useRef(null);f.default.useEffect((function(){return oe()}),[d]);var oe=function(){var e;ne(!1);var t=null==(e=le.current)?void 0:e.value;if(t){var a=E.map((function(e){return n.parse(t,e,new Date,{locale:Q})})),r=d&&a.some((function(e){return n.isSameDay(e,d)}));ne(!r)}},ie=function(){return B?{feedback:B,variant:T}:!W&&ae?{feedback:x,variant:q}:{feedback:"",variant:void 0}},de=function(){var e;return null==(e=re.current)?void 0:e.setState({inputValue:null})};return f.default.createElement(f.default.Fragment,null,f.default.createElement(m.default,b({selected:d,minDate:I,maxDate:A,dateFormat:E,showWeekNumbers:!0,weekLabel:z,onChange:h,onClickOutside:oe,id:ee,ariaLabelledBy:ee,showPopperArrow:!1,locale:Q,inline:D,disabled:N,preventOpenOnFocus:!0,open:!U&&X,ref:re,calendarClassName:"eds-datepicker__calender",dayClassName:function(){return"eds-datepicker__calender__day"},weekDayClassName:function(){return"eds-datepicker__calender__day-name"},className:p.default(i,"eds-datepicker__input"),highlightDates:[{"eds-datepicker__calender__day--today":[new Date]},{"eds-datepicker__calender__day--selected":d?[d]:[]}],renderCustomHeader:function(e){return f.default.createElement(k,{date:e.date,changeYear:e.changeYear,changeMonth:e.changeMonth,increaseMonth:e.increaseMonth,decreaseMonth:e.decreaseMonth,prevMonthButtonDisabled:e.prevMonthButtonDisabled,nextMonthButtonDisabled:e.nextMonthButtonDisabled})},customInput:f.default.createElement(C,{style:o,label:u,inputPlaceholder:s,calendarButtonTooltip:j,prepend:F,feedback:ie().feedback,variant:ie().variant,inputRef:le,forwardRef:l,onKeyDownInput:function(e){var t,a=!(null!=(t=re.current)&&t.isCalendarOpen());ne(!1),"Enter"===e.key?(oe(),setTimeout((function(){var e;null==(e=le.current)||e.select()}),5),de()):"Tab"===e.key&&a&&(oe(),de()),g(e)},onBlurInput:function(){var e;return!(null!=(e=re.current)&&e.isCalendarOpen())&&oe()},onFocus:void 0,toggleCalendarGUI:function(){var e,t;return null==(e=re.current)?void 0:e.setOpen(!(null!=(t=re.current)&&t.isCalendarOpen()))},disableLabelAnimation:S,hideCalendarButton:G,selectedDate:d})},Z)))})),I=["className","style","label","onChange","feedback","variant","disableLabelAnimation","prepend"],A=["onChange","variant","value"],L=f.default.forwardRef((function(t,a){var n=t.className,r=t.style,l=t.label,i=t.onChange,d=t.feedback,c=t.variant,s=t.disableLabelAnimation,m=t.prepend,p=void 0===m?f.default.createElement(o.DateIcon,{inline:!0}):m,h=v(t,I),y=e.useRandomId("eds-nativetimepicker");return f.default.createElement(u.BaseFormControl,{style:r,className:n,prepend:p,label:l,feedback:d,variant:c,labelId:y,disableLabelAnimation:s,isFilled:!0},f.default.createElement(D,b({onChange:i,"aria-labelledby":y,ref:a,variant:c},h)))})),D=f.default.forwardRef((function(t,a){var n=t.onChange,r=t.variant,l=t.value,o=v(t,A),i=u.useVariant(),d=r||i,c=u.useInputGroupContext(),s=c.isFilled,m=c.setFilled;return e.useOnMount((function(){m&&!s&&m(!0)})),f.default.useEffect((function(){l?m&&!s&&m(!0):m&&s&&m(!1)}),[l,m,s]),f.default.createElement("input",b({ref:a,"aria-invalid":"error"===d,type:"date",className:"eds-form-control eds-native-date-picker",onChange:function(e){u.isFilled(e.target)?m&&!s&&m(!0):m&&s&&m(!1),n&&n(e)},value:l},o))})),N=["selectedTime","onChange","placeholder","disabled","className","style","label","labelTooltip","feedback","variant","disableLabelAnimation","locale","onLeftArrowClick","onRightArrowClick"],F=["className","onChange","selectedTime","placeholder","timeFormat","dateFormat"],M=["direction"];a.registerLocale("nb",r.nb);var B=f.default.forwardRef((function(t,a){var r=t.selectedTime,l=void 0===r?null:r,o=t.onChange,i=t.placeholder,d=void 0===i?"Velg tid":i,c=t.disabled,s=t.className,m=t.style,p=t.label,h=t.labelTooltip,y=t.feedback,k=t.variant,g=t.disableLabelAnimation,C=t.locale,_=void 0===C?"nb":C,w=t.onLeftArrowClick,E=void 0===w?function(e,t){return e&&o(n.sub(e,{minutes:30}),t)}:w,I=t.onRightArrowClick,A=void 0===I?function(e,t){return e&&o(n.add(e,{minutes:30}),t)}:I,L=v(t,N),D=e.useRandomId("eds-timepicker");return f.default.createElement(u.BaseFormControl,{style:m,ref:a,label:p,labelId:D,labelTooltip:h,variant:k,feedback:y,disableLabelAnimation:g,className:"eds-timepicker-form-control",disabled:c,prepend:f.default.createElement(x,{direction:"left",tabIndex:-1,onClick:function(e){return E(l,e)},disabled:c})},f.default.createElement(R,b({selectedTime:l,onChange:o,placeholder:d,className:s,locale:_,ariaLabelledBy:D,disabled:c},L)),f.default.createElement(x,{direction:"right",tabIndex:-1,onClick:function(e){return A(l,e)},disabled:c}))})),T=[{name:"offset",enabled:!0,options:{offset:[0,0]}}],R=function(t){var a=t.className,n=t.onChange,r=t.selectedTime,l=t.placeholder,o=t.timeFormat,i=void 0===o?"HH:mm":o,d=t.dateFormat,c=void 0===d?["HH:mm","HHmm"]:d,s=v(t,F),h=u.useInputGroupContext(),y=h.isFilled,k=h.setFilled;return e.useOnMount((function(){r&&k&&!y&&k(!0)})),f.default.useEffect((function(){r?k&&!y&&k(!0):k&&y&&k(!1)}),[r,k,y]),f.default.createElement(m.default,b({className:p.default("eds-form-control","eds-timepicker__input",a),calendarClassName:"eds-timepicker",selected:r,onChange:function(e,t){e?k&&!y&&k(!0):k&&y&&k(!1),n&&n(e,t)},dateFormat:c,timeFormat:i,showTimeSelect:!0,showTimeInput:!0,showTimeSelectOnly:!0,showPopperArrow:!1,placeholderText:l,popperClassName:"eds-datepicker__popper",popperModifiers:T,open:!1},s))},x=function(e){var t=e.direction,a=v(e,M);return f.default.createElement("button",b({className:p.default("eds-timepicker__arrowbutton","eds-timepicker__arrowbutton--"+t),type:"button"},a),f.default.createElement("left"===t?o.LeftArrowIcon:o.RightArrowIcon,null))},O=["className","style","onChange","label","feedback","variant","disableLabelAnimation","prepend"],q=["onChange","value"],P=f.default.forwardRef((function(t,a){var n=t.className,r=t.style,l=t.onChange,i=t.label,d=t.feedback,c=t.variant,s=t.disableLabelAnimation,m=t.prepend,p=void 0===m?f.default.createElement(o.ClockIcon,null):m,h=v(t,O),y=e.useRandomId("eds-nativetimepicker");return f.default.createElement(u.BaseFormControl,{style:r,className:n,prepend:p,label:i,feedback:d,variant:c,labelId:y,disableLabelAnimation:s},f.default.createElement(S,b({onChange:l,"aria-labelledby":y,ref:a},h)))})),S=f.default.forwardRef((function(t,a){var n=t.onChange,r=t.value,l=v(t,q),o=u.useVariant(),i=l.variant||o,d=u.useInputGroupContext(),c=d.isFilled,s=d.setFilled;return e.useOnMount((function(){s&&!c&&s(!0)})),f.default.useEffect((function(){r?s&&!c&&s(!0):s&&c&&s(!1)}),[r,s,c]),f.default.createElement("input",b({ref:a,"aria-invalid":"error"===i,type:"time",className:"eds-form-control eds-native-date-picker",onChange:function(e){u.isFilled(e.target)?s&&!c&&s(!0):s&&c&&s(!1),n&&n(e)},value:r},l))}));e.warnAboutMissingStyles("datepicker","form","icons"),exports.DatePicker=E,exports.NativeDatePicker=L,exports.NativeTimePicker=P,exports.TimePicker=B;
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),n=require("react-datepicker"),a=require("date-fns"),r=require("date-fns/locale"),l=require("classnames"),o=require("@entur/icons"),i=require("@entur/typography"),d=require("@entur/button"),u=require("@entur/form"),c=require("@entur/tooltip");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("react-datepicker/dist/react-datepicker.css");var f=s(t),m=s(n),p=s(l);function b(){return b=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},b.apply(this,arguments)}function v(e,t){if(null==e)return{};var n,a,r={},l=Object.keys(e);for(a=0;a<l.length;a++)t.indexOf(n=l[a])>=0||(r[n]=e[n]);return r}function h(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function y(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return h(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?h(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var a=0;return function(){return a>=e.length?{done:!0}:{done:!1,value:e[a++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var k=function(e){var t,n=e.date,a=e.decreaseMonth,r=e.increaseMonth,l=e.prevMonthButtonDisabled,u=e.nextMonthButtonDisabled,c=function(e){void 0===e&&(e="nb");var t=(new Date).getFullYear(),n=Array(12).keys(),a=new Intl.DateTimeFormat(e,{month:"long"});return Array.from(n,(function(e){return a.format(new Date(t,e))}))}();return f.default.createElement("div",{className:"eds-datepicker__calender__header"},f.default.createElement(d.IconButton,{type:"button",className:"eds-datepicker__calender__header__month-button--left",onClick:a,disabled:l},f.default.createElement(o.LeftArrowIcon,null)),f.default.createElement(i.Heading3,{className:"eds-datepicker__calender__header__month-text"},c[null!=(t=null==n?void 0:n.getMonth())?t:0]),f.default.createElement(i.Heading3,{className:"eds-datepicker__calender__header__month-text"},null==n?void 0:n.getFullYear()),f.default.createElement(d.IconButton,{type:"button",className:"eds-datepicker__calender__header__month-button--right",onClick:r,disabled:u},f.default.createElement(o.RightArrowIcon,null)))},g=["style","label","inputPlaceholder","prepend","feedback","variant","disabled","calendarButtonTooltip","hideCalendarButton","disableLabelAnimation","inputRef","calendarButtonId","forwardRef","toggleCalendarGUI","onKeyDownInput","onBlurInput","selectedDate","setFocusToCalendarGUI","setShouldFocusOnCalendarButtonAfterSelect","calendarGUIIsOpen","placeholder","onClick"],C=f.default.forwardRef((function(e,t){var n=e.style,a=e.label,r=e.inputPlaceholder,l=e.prepend,i=e.feedback,s=e.variant,m=e.disabled,p=e.calendarButtonTooltip,h=e.hideCalendarButton,y=e.disableLabelAnimation,k=e.inputRef,C=e.calendarButtonId,I=e.forwardRef,w=e.toggleCalendarGUI,E=e.onKeyDownInput,A=e.onBlurInput,F=e.selectedDate,B=e.setFocusToCalendarGUI,L=e.setShouldFocusOnCalendarButtonAfterSelect,N=e.calendarGUIIsOpen,D=e.onClick,M=v(e,g);function T(e){E(e)}function x(e){A(e)}f.default.useEffect((function(){var e,t,n;return null==(e=k.current)||e.addEventListener("keydown",T),null==(t=k.current)||t.addEventListener("blur",x),null==(n=k.current)||n.addEventListener("focus",O),function(){var e,t,n;null==(e=k.current)||e.removeEventListener("keydown",T),null==(t=k.current)||t.removeEventListener("blur",x),null==(n=k.current)||n.removeEventListener("focus",O)}}),[k,F]);var O=function(){return requestAnimationFrame((function(){var e;return null==(e=k.current)?void 0:e.select()}))};return f.default.createElement(u.TextField,b({style:n,label:a,placeholder:r,prepend:l,feedback:i,variant:s,disableLabelAnimation:y,ref:_(t,k,I),onClick:function(e){L(!1),D&&D(e)},append:!h&&f.default.createElement(c.Tooltip,{placement:"top",content:p,disableHoverListener:m,disableFocusListener:m},f.default.createElement(d.IconButton,{id:C,type:"button",onClick:function(){w(),B(),L(!0)},tabIndex:N()?-1:0},f.default.createElement(o.CalendarIcon,null)))},M))})),_=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){for(var n,a=y(t);!(n=a()).done;){var r=n.value;"function"==typeof r?r(e):r&&(r.current=e)}}},I=["style","className","selectedDate","label","placeholder","onChange","onKeyDown","dateFormats","minDate","maxDate","inline","disabled","prepend","feedback","variant","validationFeedback","validationVariant","disableLabelAnimation","calendarButtonTooltip","hideCalendarButton","hideCalendar","hideValidation","weekLabel","locale","open"];n.registerLocale("nb",r.nb);var w=f.default.forwardRef((function(n,l){var o=n.style,i=n.className,d=n.selectedDate,u=n.label,c=n.placeholder,s=void 0===c?"dd.mm.yyyy":c,h=n.onChange,y=n.onKeyDown,g=void 0===y?function(){return null}:y,_=n.dateFormats,w=void 0===_?["dd.MM.yyyy","ddMMyyyy","dd/MM/yyyy","ddMMyy"]:_,E=n.minDate,A=n.maxDate,F=n.inline,B=void 0!==F&&F,L=n.disabled,N=n.prepend,D=n.feedback,M=void 0===D?"":D,T=n.variant,x=n.validationFeedback,O=void 0===x?"Ugyldig dato":x,R=n.validationVariant,S=void 0===R?"error":R,q=n.disableLabelAnimation,G=void 0!==q&&q,P=n.calendarButtonTooltip,U=void 0===P?"Åpne kalender":P,H=n.hideCalendarButton,j=void 0!==H&&H,V=n.hideCalendar,K=void 0!==V&&V,Y=n.hideValidation,W=void 0!==Y&&Y,$=n.weekLabel,z=void 0===$?"uke":$,J=n.locale,Q=void 0===J?r.nb:J,X=n.open,Z=v(n,I),ee=e.useRandomId("eds-datepicker"),te=t.useRef(null),ne=f.default.useRef(null),ae=document.getElementById(ee+"-button"),re=t.useState(!1),le=re[0],oe=re[1],ie=t.useState(!1),de=ie[0],ue=ie[1];f.default.useEffect((function(){return ce()}),[d]);var ce=function(){var e;oe(!1);var t=null==(e=ne.current)?void 0:e.value;if(t){var n=w.map((function(e){return a.parse(t,e,new Date,{locale:Q})})),r=d&&n.some((function(e){return a.isSameDay(e,d)}));oe(!r)}},se=function(){return M?{feedback:M,variant:T}:!W&&le?{feedback:O,variant:S}:{feedback:"",variant:void 0}},fe=function(){return requestAnimationFrame((function(){var e;return null==(e=ne.current)?void 0:e.select()}))},me=function(){var e;return null==(e=te.current)?void 0:e.setState({inputValue:null})},pe=function(){var e;return null==(e=te.current)?void 0:e.setOpen(!be())},be=function(){var e;return null==(e=te.current)?void 0:e.isCalendarOpen()};return f.default.createElement(f.default.Fragment,null,f.default.createElement(m.default,b({selected:d,minDate:E,maxDate:A,dateFormat:w,showWeekNumbers:!0,weekLabel:z,onChange:function(e,t){var n;de&&!j?(null==ae||ae.focus(),ue(!1)):null==(n=ne.current)||n.focus(),h(e,t)},onClickOutside:function(){return ue(!1)},id:ee,ariaLabelledBy:ee,showPopperArrow:!1,locale:Q,inline:B,disabled:L,preventOpenOnFocus:!0,open:!K&&X,ref:te,calendarClassName:"eds-datepicker__calender",dayClassName:function(){return"eds-datepicker__calender__day"},weekDayClassName:function(){return"eds-datepicker__calender__day-name"},className:p.default(i,"eds-datepicker__input"),highlightDates:[{"eds-datepicker__calender__day--today":[new Date]},{"eds-datepicker__calender__day--selected":d?[d]:[]}],renderCustomHeader:function(e){return f.default.createElement(k,{date:e.date,changeYear:e.changeYear,changeMonth:e.changeMonth,increaseMonth:e.increaseMonth,decreaseMonth:e.decreaseMonth,prevMonthButtonDisabled:e.prevMonthButtonDisabled,nextMonthButtonDisabled:e.nextMonthButtonDisabled})},customInput:f.default.createElement(C,{style:o,label:u,inputPlaceholder:s,calendarButtonTooltip:U,prepend:N,feedback:se().feedback,variant:se().variant,inputRef:ne,calendarButtonId:ee+"-button",forwardRef:l,onKeyDownInput:function(e){oe(!1),"Enter"===e.key?(be()||(ce(),me()),fe()):"Tab"===e.key&&be()?me():"Escape"===e.key&&(me(),fe(),be()&&pe()),g(e)},onBlurInput:function(){be()||(ce(),me())},onFocus:void 0,toggleCalendarGUI:pe,setFocusToCalendarGUI:function(){B||K||be()||(requestAnimationFrame((function(){var e=d?document.getElementsByClassName("eds-datepicker__calender__day--selected")[0]:document.getElementsByClassName("eds-datepicker__calender__day--today")[0];null!==e&&e.focus()})),ue(!0),oe(!1))},setShouldFocusOnCalendarButtonAfterSelect:ue,calendarGUIIsOpen:be,disableLabelAnimation:G,hideCalendarButton:j,selectedDate:d})},Z)))})),E=["className","style","label","onChange","feedback","variant","disableLabelAnimation","prepend"],A=["onChange","variant","value"],F=f.default.forwardRef((function(t,n){var a=t.className,r=t.style,l=t.label,i=t.onChange,d=t.feedback,c=t.variant,s=t.disableLabelAnimation,m=t.prepend,p=void 0===m?f.default.createElement(o.DateIcon,{inline:!0}):m,h=v(t,E),y=e.useRandomId("eds-nativetimepicker");return f.default.createElement(u.BaseFormControl,{style:r,className:a,prepend:p,label:l,feedback:d,variant:c,labelId:y,disableLabelAnimation:s,isFilled:!0},f.default.createElement(B,b({onChange:i,"aria-labelledby":y,ref:n,variant:c},h)))})),B=f.default.forwardRef((function(t,n){var a=t.onChange,r=t.variant,l=t.value,o=v(t,A),i=u.useVariant(),d=r||i,c=u.useInputGroupContext(),s=c.isFilled,m=c.setFilled;return e.useOnMount((function(){m&&!s&&m(!0)})),f.default.useEffect((function(){l?m&&!s&&m(!0):m&&s&&m(!1)}),[l,m,s]),f.default.createElement("input",b({ref:n,"aria-invalid":"error"===d,type:"date",className:"eds-form-control eds-native-date-picker",onChange:function(e){u.isFilled(e.target)?m&&!s&&m(!0):m&&s&&m(!1),a&&a(e)},value:l},o))})),L=["selectedTime","onChange","placeholder","disabled","className","style","label","labelTooltip","feedback","variant","disableLabelAnimation","locale","onLeftArrowClick","onRightArrowClick"],N=["className","onChange","selectedTime","placeholder","timeFormat","dateFormat"],D=["direction"];n.registerLocale("nb",r.nb);var M=f.default.forwardRef((function(t,n){var r=t.selectedTime,l=void 0===r?null:r,o=t.onChange,i=t.placeholder,d=void 0===i?"Velg tid":i,c=t.disabled,s=t.className,m=t.style,p=t.label,h=t.labelTooltip,y=t.feedback,k=t.variant,g=t.disableLabelAnimation,C=t.locale,_=void 0===C?"nb":C,I=t.onLeftArrowClick,w=void 0===I?function(e,t){return e&&o(a.sub(e,{minutes:30}),t)}:I,E=t.onRightArrowClick,A=void 0===E?function(e,t){return e&&o(a.add(e,{minutes:30}),t)}:E,F=v(t,L),B=e.useRandomId("eds-timepicker");return f.default.createElement(u.BaseFormControl,{style:m,ref:n,label:p,labelId:B,labelTooltip:h,variant:k,feedback:y,disableLabelAnimation:g,className:"eds-timepicker-form-control",disabled:c,prepend:f.default.createElement(O,{direction:"left",tabIndex:-1,onClick:function(e){return w(l,e)},disabled:c})},f.default.createElement(x,b({selectedTime:l,onChange:o,placeholder:d,className:s,locale:_,ariaLabelledBy:B,disabled:c},F)),f.default.createElement(O,{direction:"right",tabIndex:-1,onClick:function(e){return A(l,e)},disabled:c}))})),T=[{name:"offset",enabled:!0,options:{offset:[0,0]}}],x=function(t){var n=t.className,a=t.onChange,r=t.selectedTime,l=t.placeholder,o=t.timeFormat,i=void 0===o?"HH:mm":o,d=t.dateFormat,c=void 0===d?["HH:mm","HHmm"]:d,s=v(t,N),h=u.useInputGroupContext(),y=h.isFilled,k=h.setFilled;return e.useOnMount((function(){r&&k&&!y&&k(!0)})),f.default.useEffect((function(){r?k&&!y&&k(!0):k&&y&&k(!1)}),[r,k,y]),f.default.createElement(m.default,b({className:p.default("eds-form-control","eds-timepicker__input",n),calendarClassName:"eds-timepicker",selected:r,onChange:function(e,t){e?k&&!y&&k(!0):k&&y&&k(!1),a&&a(e,t)},dateFormat:c,timeFormat:i,showTimeSelect:!0,showTimeInput:!0,showTimeSelectOnly:!0,showPopperArrow:!1,placeholderText:l,popperClassName:"eds-datepicker__popper",popperModifiers:T,open:!1},s))},O=function(e){var t=e.direction,n=v(e,D);return f.default.createElement("button",b({className:p.default("eds-timepicker__arrowbutton","eds-timepicker__arrowbutton--"+t),type:"button"},n),f.default.createElement("left"===t?o.LeftArrowIcon:o.RightArrowIcon,null))},R=["className","style","onChange","label","feedback","variant","disableLabelAnimation","prepend"],S=["onChange","value"],q=f.default.forwardRef((function(t,n){var a=t.className,r=t.style,l=t.onChange,i=t.label,d=t.feedback,c=t.variant,s=t.disableLabelAnimation,m=t.prepend,p=void 0===m?f.default.createElement(o.ClockIcon,null):m,h=v(t,R),y=e.useRandomId("eds-nativetimepicker");return f.default.createElement(u.BaseFormControl,{style:r,className:a,prepend:p,label:i,feedback:d,variant:c,labelId:y,disableLabelAnimation:s},f.default.createElement(G,b({onChange:l,"aria-labelledby":y,ref:n},h)))})),G=f.default.forwardRef((function(t,n){var a=t.onChange,r=t.value,l=v(t,S),o=u.useVariant(),i=l.variant||o,d=u.useInputGroupContext(),c=d.isFilled,s=d.setFilled;return e.useOnMount((function(){s&&!c&&s(!0)})),f.default.useEffect((function(){r?s&&!c&&s(!0):s&&c&&s(!1)}),[r,s,c]),f.default.createElement("input",b({ref:n,"aria-invalid":"error"===i,type:"time",className:"eds-form-control eds-native-date-picker",onChange:function(e){u.isFilled(e.target)?s&&!c&&s(!0):s&&c&&s(!1),a&&a(e)},value:r},l))}));e.warnAboutMissingStyles("datepicker","form","icons"),exports.DatePicker=w,exports.NativeDatePicker=F,exports.NativeTimePicker=q,exports.TimePicker=M;
|
|
2
2
|
//# sourceMappingURL=datepicker.cjs.production.min.js.map
|