@entur/datepicker 4.0.0-alpha.0 → 4.0.0-beta.0
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 +17 -0
- package/dist/DatePicker/beta/Calendar.d.ts +2 -0
- package/dist/DatePicker/beta/CalendarCell.d.ts +1 -1
- package/dist/DatePicker/beta/CalendarGrid.d.ts +2 -1
- package/dist/DatePicker/beta/DateField.d.ts +15 -1
- package/dist/DatePicker/beta/DatePicker.d.ts +36 -6
- package/dist/datepicker.cjs.development.js +181 -108
- 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 +182 -109
- package/dist/datepicker.esm.js.map +1 -1
- package/dist/styles.css +72 -55
- package/package.json +9 -7
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,23 @@
|
|
|
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
|
+
# [4.0.0-beta.0](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@4.0.0-alpha.1...@entur/datepicker@4.0.0-beta.0) (2022-10-27)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **datepicker:** final touches to datepicker and supcomponents ([8c21915](https://bitbucket.org/enturas/design-system/commits/8c21915cea21346444bfdf2b66bfe10de1c9fcba))
|
|
11
|
+
|
|
12
|
+
# [4.0.0-alpha.1](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@4.0.0-alpha.0...@entur/datepicker@4.0.0-alpha.1) (2022-10-26)
|
|
13
|
+
|
|
14
|
+
### Bug Fixes
|
|
15
|
+
|
|
16
|
+
- **datepicker:** fix locale issues ([8c325b8](https://bitbucket.org/enturas/design-system/commits/8c325b86088feb9f8a7d4ad538a18ec6d78e202d))
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
- **datepicker:** add i18y-wrapper to components for locale ([aed14fb](https://bitbucket.org/enturas/design-system/commits/aed14fb32e789159b4021c8b740a8101b83228fa))
|
|
21
|
+
- **datepicker:** add modal view for calendar when using small screen widths ([05d9325](https://bitbucket.org/enturas/design-system/commits/05d9325a83dbc8d7d2e62050e7d6bbecbe2f665e))
|
|
22
|
+
|
|
6
23
|
# [4.0.0-alpha.0](https://bitbucket.org/enturas/design-system/compare/@entur/datepicker@3.0.2...@entur/datepicker@4.0.0-alpha.0) (2022-10-20)
|
|
7
24
|
|
|
8
25
|
### Bug Fixes
|
|
@@ -3,6 +3,8 @@ import { DateValue } from '@internationalized/date';
|
|
|
3
3
|
import './Calendar.scss';
|
|
4
4
|
declare type CalendarProps = {
|
|
5
5
|
selectedDate: DateValue;
|
|
6
|
+
onChange: (SelectedDate: DateValue) => void;
|
|
7
|
+
navigationDescription?: string;
|
|
6
8
|
style?: React.CSSProperties;
|
|
7
9
|
[key: string]: any;
|
|
8
10
|
};
|
|
@@ -5,5 +5,5 @@ declare type CalendarCellProps = {
|
|
|
5
5
|
state: CalendarState;
|
|
6
6
|
date: CalendarDate;
|
|
7
7
|
};
|
|
8
|
-
export declare const CalendarCell: ({ state, date }: CalendarCellProps) => JSX.Element;
|
|
8
|
+
export declare const CalendarCell: ({ state, date, ...rest }: CalendarCellProps) => JSX.Element;
|
|
9
9
|
export {};
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { CalendarState } from '@react-stately/calendar';
|
|
3
3
|
declare type CalendarGridProps = {
|
|
4
4
|
state: CalendarState;
|
|
5
|
+
navigationDescription?: string;
|
|
5
6
|
};
|
|
6
|
-
export declare const CalendarGrid: ({ state, ...rest }: CalendarGridProps) => JSX.Element;
|
|
7
|
+
export declare const CalendarGrid: ({ state, navigationDescription, ...rest }: CalendarGridProps) => JSX.Element;
|
|
7
8
|
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { SpectrumDateFieldProps, DateValue } from '@react-types/datepicker';
|
|
3
|
+
import type { CalendarDate } from '@internationalized/date';
|
|
3
4
|
import { VariantType } from '@entur/form';
|
|
4
5
|
import './DateField.scss';
|
|
5
6
|
export declare type DateFieldProps = {
|
|
@@ -18,15 +19,28 @@ export declare type DateFieldProps = {
|
|
|
18
19
|
*/
|
|
19
20
|
showTimeZone?: boolean;
|
|
20
21
|
showTime?: boolean;
|
|
22
|
+
/** Tidligste gyldige datovalg.
|
|
23
|
+
* Eks: today(getLocalTimeZone()) == i dag i lokal tidssone */
|
|
24
|
+
minValue?: CalendarDate;
|
|
25
|
+
/** Seneste gyldige datovalg. (se minValue) */
|
|
26
|
+
maxValue?: CalendarDate;
|
|
21
27
|
/** Varselmelding, som vil komme under TimePicker */
|
|
22
28
|
feedback?: string;
|
|
23
29
|
/** Valideringsvariant */
|
|
24
30
|
variant?: VariantType;
|
|
31
|
+
/** Varselmelding som forteller om ugyldig dato
|
|
32
|
+
* @default "Ugyldig dato"
|
|
33
|
+
*/
|
|
34
|
+
validationFeedback?: string;
|
|
35
|
+
/** Valideringsvariant for melding om ugyldig dato
|
|
36
|
+
* @default "error"
|
|
37
|
+
*/
|
|
38
|
+
validationVariant?: VariantType;
|
|
25
39
|
labelTooltip?: React.ReactNode;
|
|
26
40
|
disabled?: boolean;
|
|
27
41
|
/** Ekstra klassenavn */
|
|
28
42
|
className?: string;
|
|
29
43
|
style?: React.CSSProperties;
|
|
30
44
|
[key: string]: any;
|
|
31
|
-
} & Omit<SpectrumDateFieldProps<DateValue>, 'onChange' | 'label' | 'hideTimeZone' | 'placeholder'>;
|
|
45
|
+
} & Omit<SpectrumDateFieldProps<DateValue>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'minValue' | 'maxValue'>;
|
|
32
46
|
export declare const DateField: React.ForwardRefExoticComponent<Pick<DateFieldProps, string | number> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
3
|
-
import {
|
|
2
|
+
import type { CalendarDate } from '@internationalized/date';
|
|
3
|
+
import type { DateValue, SpectrumDatePickerProps } from '@react-types/datepicker';
|
|
4
|
+
import type { VariantType } from '@entur/form';
|
|
4
5
|
import './DatePicker.scss';
|
|
5
6
|
declare type DatePickerProps = {
|
|
6
7
|
/** Den valgte datoen. Dato i '@internationalized/date'-pakkens format */
|
|
@@ -17,17 +18,46 @@ declare type DatePickerProps = {
|
|
|
17
18
|
* @default false
|
|
18
19
|
*/
|
|
19
20
|
showTimeZone?: boolean;
|
|
20
|
-
/** Viser tidspunkt i tillegg til dato
|
|
21
|
+
/** Viser tidspunkt i tillegg til dato.
|
|
22
|
+
* OBS: selectedDate må være av typen CalendarDateTime eller ZonedDateTime
|
|
23
|
+
*/
|
|
21
24
|
showTime?: boolean;
|
|
25
|
+
/** Tidligste gyldige datovalg.
|
|
26
|
+
* Eks: today(getLocalTimeZone()) == i dag i lokal tidssone. */
|
|
27
|
+
minValue?: CalendarDate;
|
|
28
|
+
/** Seneste gyldige datovalg.
|
|
29
|
+
* Eks: today(getLocalTimeZone()) == i dag i lokal tidssone
|
|
30
|
+
*
|
|
31
|
+
* OBS: Hvis du bruker dato med tid vil det være til, men ikke med denne datoen */
|
|
32
|
+
maxValue?: CalendarDate;
|
|
33
|
+
/** Funksjon som tar inn en dato og sier om den er utilgjengelig.
|
|
34
|
+
* Eks. (date) => isWeekend(date, 'no-NO') == helgedager er ikke tilgjengelig */
|
|
35
|
+
isDateUnavailable?: (date: DateValue) => boolean;
|
|
22
36
|
/** Varselmelding, som vil komme under DatePicker sitt inputfelt */
|
|
23
37
|
feedback?: string;
|
|
24
38
|
/** Valideringsvariant */
|
|
25
39
|
variant?: VariantType;
|
|
40
|
+
/** Varselmelding som forteller om ugyldig dato
|
|
41
|
+
* @default "Ugyldig dato"
|
|
42
|
+
*/
|
|
43
|
+
validationFeedback?: string;
|
|
44
|
+
/** Valideringsvariant for melding om ugyldig dato
|
|
45
|
+
* @default "error"
|
|
46
|
+
*/
|
|
47
|
+
validationVariant?: VariantType;
|
|
26
48
|
disabled?: boolean;
|
|
49
|
+
/** Hvis true vil kalenderen alltid vises i en popover når den åpnes
|
|
50
|
+
* @default false
|
|
51
|
+
*/
|
|
52
|
+
disableModal?: boolean;
|
|
53
|
+
labelTooltip?: React.ReactNode;
|
|
54
|
+
/** Skjermlesertest som forklarer navigasjon i kalenderen. Oversettes automatisk for engelsk locale, men ikke andre språk.
|
|
55
|
+
* @default 'Bruk piltastene til å navigere mellom datoer'
|
|
56
|
+
*/
|
|
57
|
+
navigationDescription?: string;
|
|
27
58
|
/** Ekstra klassenavn */
|
|
28
59
|
className?: string;
|
|
29
60
|
style?: React.CSSProperties;
|
|
30
|
-
|
|
31
|
-
};
|
|
32
|
-
export declare const DatePickerBeta: ({ selectedDate: value, onChange, disabled: isDisabled, className, style, variant, feedback, ...rest }: DatePickerProps) => JSX.Element;
|
|
61
|
+
} & Omit<SpectrumDatePickerProps<DateValue>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'minValue' | 'maxValue'>;
|
|
62
|
+
export declare const DatePickerBeta: ({ selectedDate: value, onChange, locale, disabled: isDisabled, showTime, showTimeZone, className, style, variant, feedback, validationVariant, validationFeedback, disableModal, labelTooltip, navigationDescription, ...rest }: DatePickerProps) => JSX.Element;
|
|
33
63
|
export {};
|
|
@@ -21,9 +21,11 @@ var date = require('@internationalized/date');
|
|
|
21
21
|
var calendar = require('@react-aria/calendar');
|
|
22
22
|
var calendar$1 = require('@react-stately/calendar');
|
|
23
23
|
var button$1 = require('@react-aria/button');
|
|
24
|
+
var a11y = require('@entur/a11y');
|
|
24
25
|
var reactDom = require('@floating-ui/react-dom');
|
|
25
26
|
var FocusLock = require('react-focus-lock');
|
|
26
27
|
var tokens = require('@entur/tokens');
|
|
28
|
+
var modal = require('@entur/modal');
|
|
27
29
|
|
|
28
30
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
29
31
|
|
|
@@ -106,7 +108,7 @@ function getMonthName(monthIndex, locale) {
|
|
|
106
108
|
return formatter.format(new Date(year, monthIndex));
|
|
107
109
|
}
|
|
108
110
|
|
|
109
|
-
var _excluded$
|
|
111
|
+
var _excluded$a = ["style", "label", "inputPlaceholder", "prepend", "feedback", "variant", "disabled", "calendarButtonTooltipOpen", "calendarButtonTooltipClose", "hideCalendarButton", "disableLabelAnimation", "inputRef", "calendarButtonId", "forwardRef", "toggleCalendarGUI", "onKeyDownInput", "onBlurInput", "selectedDate", "setFocusToCalendarGUI", "setShouldFocusOnCalendarButtonAfterSelect", "calendarGUIIsOpen", "placeholder", "onClick", "aria-labelledby"];
|
|
110
112
|
var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
111
113
|
var style = _ref.style,
|
|
112
114
|
label = _ref.label,
|
|
@@ -130,7 +132,7 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
|
|
|
130
132
|
setShouldFocusOnCalendarButtonAfterSelect = _ref.setShouldFocusOnCalendarButtonAfterSelect,
|
|
131
133
|
calendarGUIIsOpen = _ref.calendarGUIIsOpen,
|
|
132
134
|
onClick = _ref.onClick,
|
|
133
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
135
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
|
|
134
136
|
|
|
135
137
|
React__default["default"].useEffect(function () {
|
|
136
138
|
var _inputRef$current, _inputRef$current2, _inputRef$current3;
|
|
@@ -208,7 +210,7 @@ var DatePickerInput = /*#__PURE__*/React__default["default"].forwardRef(function
|
|
|
208
210
|
}, rest));
|
|
209
211
|
});
|
|
210
212
|
|
|
211
|
-
var _excluded$
|
|
213
|
+
var _excluded$9 = ["style", "className", "selectedDate", "label", "placeholder", "onChange", "onKeyDown", "dateFormats", "minDate", "maxDate", "inline", "disabled", "prepend", "feedback", "variant", "validationFeedback", "validationVariant", "disableLabelAnimation", "calendarButtonTooltipOpen", "calendarButtonTooltipClose", "hideCalendarButton", "hideCalendar", "hideValidation", "weekLabel", "chooseDayAriaLabelPrefix", "previousMonthAriaLabel", "nextMonthAriaLabel", "locale", "open"];
|
|
212
214
|
ReactDatepicker.registerLocale('nb', locale.nb);
|
|
213
215
|
var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
214
216
|
var style = _ref.style,
|
|
@@ -260,7 +262,7 @@ var DatePicker = /*#__PURE__*/React__default["default"].forwardRef(function (_re
|
|
|
260
262
|
_ref$locale = _ref.locale,
|
|
261
263
|
locale$1 = _ref$locale === void 0 ? locale.nb : _ref$locale,
|
|
262
264
|
open = _ref.open,
|
|
263
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
265
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$9);
|
|
264
266
|
|
|
265
267
|
var datepickerId = utils.useRandomId('eds-datepicker');
|
|
266
268
|
var datepickerRef = React.useRef(null);
|
|
@@ -593,14 +595,15 @@ var createCalendar = function createCalendar(identifier) {
|
|
|
593
595
|
}
|
|
594
596
|
};
|
|
595
597
|
var ariaLabelIfNorwegian = function ariaLabelIfNorwegian(norwegianAriaLabel, locale, propsCollection) {
|
|
596
|
-
if (locale !== 'no-
|
|
598
|
+
if (locale.toLowerCase() !== 'no-no') return propsCollection['aria-label'];
|
|
597
599
|
return norwegianAriaLabel;
|
|
598
600
|
};
|
|
599
601
|
|
|
600
|
-
var _excluded$
|
|
602
|
+
var _excluded$8 = ["selectedDate", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "style", "className", "labelProps", "append"];
|
|
601
603
|
var DateField = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
602
604
|
var value = _ref.selectedDate,
|
|
603
605
|
label = _ref.label,
|
|
606
|
+
customLocale = _ref.locale,
|
|
604
607
|
showTimeZone = _ref.showTimeZone,
|
|
605
608
|
showTime = _ref.showTime,
|
|
606
609
|
_ref$granularity = _ref.granularity,
|
|
@@ -608,18 +611,22 @@ var DateField = /*#__PURE__*/React__default["default"].forwardRef(function (_ref
|
|
|
608
611
|
disabled = _ref.disabled,
|
|
609
612
|
variant = _ref.variant,
|
|
610
613
|
feedback = _ref.feedback,
|
|
614
|
+
_ref$validationVarian = _ref.validationVariant,
|
|
615
|
+
validationVariant = _ref$validationVarian === void 0 ? 'error' : _ref$validationVarian,
|
|
616
|
+
_ref$validationFeedba = _ref.validationFeedback,
|
|
617
|
+
validationFeedback = _ref$validationFeedba === void 0 ? 'Ugyldig dato' : _ref$validationFeedba,
|
|
611
618
|
labelTooltip = _ref.labelTooltip,
|
|
612
619
|
style = _ref.style,
|
|
613
620
|
className = _ref.className,
|
|
614
621
|
parentLabelProps = _ref.labelProps,
|
|
615
622
|
append = _ref.append,
|
|
616
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
623
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
|
|
617
624
|
|
|
618
625
|
var _useLocale = i18n.useLocale(),
|
|
619
626
|
locale = _useLocale.locale;
|
|
620
627
|
|
|
621
628
|
var state = datepicker$1.useDateFieldState(_extends({}, rest, {
|
|
622
|
-
locale: locale,
|
|
629
|
+
locale: customLocale != null ? customLocale : locale,
|
|
623
630
|
createCalendar: createCalendar,
|
|
624
631
|
value: value === null ? undefined : value,
|
|
625
632
|
hideTimeZone: !showTimeZone,
|
|
@@ -635,7 +642,14 @@ var DateField = /*#__PURE__*/React__default["default"].forwardRef(function (_ref
|
|
|
635
642
|
fieldProps = _useDateField.fieldProps;
|
|
636
643
|
|
|
637
644
|
var id = utils.useRandomId('datefield');
|
|
638
|
-
return React__default["default"].createElement(
|
|
645
|
+
return React__default["default"].createElement(utils.ConditionalWrapper, {
|
|
646
|
+
condition: customLocale !== undefined,
|
|
647
|
+
wrapper: function wrapper(child) {
|
|
648
|
+
return React__default["default"].createElement(i18n.I18nProvider, {
|
|
649
|
+
locale: customLocale
|
|
650
|
+
}, child);
|
|
651
|
+
}
|
|
652
|
+
}, React__default["default"].createElement(form.BaseFormControl, _extends({
|
|
639
653
|
style: style,
|
|
640
654
|
className: classNames__default["default"]('eds-datefield', className),
|
|
641
655
|
labelId: id,
|
|
@@ -646,24 +660,25 @@ var DateField = /*#__PURE__*/React__default["default"].forwardRef(function (_ref
|
|
|
646
660
|
labelTooltip: labelTooltip,
|
|
647
661
|
labelProps: parentLabelProps != null ? parentLabelProps : labelProps
|
|
648
662
|
}, fieldProps, {
|
|
649
|
-
variant: variant,
|
|
650
|
-
feedback: feedback,
|
|
651
|
-
append: append
|
|
663
|
+
variant: (variant != null ? variant : state.validationState === 'invalid') ? validationVariant : undefined,
|
|
664
|
+
feedback: (feedback != null ? feedback : state.validationState === 'invalid') ? validationFeedback : undefined,
|
|
665
|
+
append: append,
|
|
666
|
+
ariaAlertOnFeedback: true
|
|
652
667
|
}), state.segments.map(function (segment, i) {
|
|
653
668
|
return React__default["default"].createElement(FieldSegment, {
|
|
654
669
|
segment: segment,
|
|
655
670
|
state: state,
|
|
656
671
|
key: i
|
|
657
672
|
});
|
|
658
|
-
}));
|
|
673
|
+
})));
|
|
659
674
|
});
|
|
660
675
|
|
|
661
|
-
var _excluded$
|
|
676
|
+
var _excluded$7 = ["children", "className", "style"];
|
|
662
677
|
var CalendarButton = function CalendarButton(_ref) {
|
|
663
678
|
var children = _ref.children,
|
|
664
679
|
className = _ref.className,
|
|
665
680
|
style = _ref.style,
|
|
666
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
681
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$7);
|
|
667
682
|
|
|
668
683
|
var ref = React.useRef(null);
|
|
669
684
|
|
|
@@ -677,11 +692,14 @@ var CalendarButton = function CalendarButton(_ref) {
|
|
|
677
692
|
}), children);
|
|
678
693
|
};
|
|
679
694
|
|
|
695
|
+
var _excluded$6 = ["state", "date"];
|
|
680
696
|
var CalendarCell = function CalendarCell(_ref) {
|
|
681
697
|
var _state$timeZone;
|
|
682
698
|
|
|
683
699
|
var state = _ref.state,
|
|
684
|
-
date$1 = _ref.date
|
|
700
|
+
date$1 = _ref.date,
|
|
701
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
|
|
702
|
+
|
|
685
703
|
var cellRef = React.useRef(null);
|
|
686
704
|
|
|
687
705
|
var _useCalendarCell = calendar.useCalendarCell({
|
|
@@ -702,18 +720,21 @@ var CalendarCell = function CalendarCell(_ref) {
|
|
|
702
720
|
hidden: isOutsideVisibleRange,
|
|
703
721
|
className: classNames__default["default"]('eds-datepicker__calendar__grid__cell', {
|
|
704
722
|
'eds-datepicker__calendar__grid__cell--selected': isSelected,
|
|
705
|
-
'eds-datepicker__calendar__grid__cell--disabled': isDisabled,
|
|
706
|
-
'eds-datepicker__calendar__grid__cell--
|
|
723
|
+
'eds-datepicker__calendar__grid__cell--disabled': isDisabled || isUnavailable,
|
|
724
|
+
'eds-datepicker__calendar__grid__cell--outside-month': isOutsideVisibleRange,
|
|
707
725
|
'eds-datepicker__calendar__grid__cell--today': date.isEqualDay(date$1, date.now((_state$timeZone = state.timeZone) != null ? _state$timeZone : date.getLocalTimeZone()))
|
|
708
726
|
})
|
|
709
|
-
}), formattedDate));
|
|
727
|
+
}, rest), formattedDate));
|
|
710
728
|
};
|
|
711
729
|
|
|
712
|
-
var _excluded$5 = ["state"];
|
|
730
|
+
var _excluded$5 = ["state", "navigationDescription"];
|
|
713
731
|
var CalendarGrid = function CalendarGrid(_ref) {
|
|
714
732
|
var state = _ref.state,
|
|
733
|
+
navigationDescription = _ref.navigationDescription,
|
|
715
734
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
|
|
716
735
|
|
|
736
|
+
var calendarGridId = utils.useRandomId('eds-calendar');
|
|
737
|
+
|
|
717
738
|
var _useLocale = i18n.useLocale(),
|
|
718
739
|
locale = _useLocale.locale;
|
|
719
740
|
|
|
@@ -733,7 +754,13 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
733
754
|
});
|
|
734
755
|
};
|
|
735
756
|
|
|
736
|
-
|
|
757
|
+
var getNavigationDescription = function getNavigationDescription() {
|
|
758
|
+
if (navigationDescription) return navigationDescription;
|
|
759
|
+
if (locale.toLowerCase().includes('en')) return 'Use the arrow keys to navigate between dates';
|
|
760
|
+
return 'Bruk piltastene til å navigere mellom datoer';
|
|
761
|
+
};
|
|
762
|
+
|
|
763
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement("table", _extends({}, gridProps, {
|
|
737
764
|
cellSpacing: "0",
|
|
738
765
|
className: "eds-datepicker__calendar__grid"
|
|
739
766
|
}), React__default["default"].createElement("thead", _extends({}, headerProps), React__default["default"].createElement("tr", null, weekDaysMapped().map(function (day, index) {
|
|
@@ -747,24 +774,31 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
747
774
|
return date ? React__default["default"].createElement(CalendarCell, {
|
|
748
775
|
key: i,
|
|
749
776
|
state: state,
|
|
750
|
-
date: date
|
|
777
|
+
date: date,
|
|
778
|
+
"aria-describedby": calendarGridId + 'description'
|
|
751
779
|
}) : React__default["default"].createElement("td", {
|
|
752
780
|
key: i
|
|
753
781
|
});
|
|
754
782
|
}));
|
|
755
|
-
})))
|
|
783
|
+
}))), React__default["default"].createElement(a11y.VisuallyHidden, {
|
|
784
|
+
id: calendarGridId + 'description'
|
|
785
|
+
}, getNavigationDescription()));
|
|
756
786
|
};
|
|
757
787
|
|
|
758
|
-
var _excluded$4 = ["selectedDate", "style", "children"];
|
|
788
|
+
var _excluded$4 = ["selectedDate", "onChange", "locale", "style", "children", "navigationDescription"];
|
|
759
789
|
var Calendar = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
760
|
-
var
|
|
790
|
+
var onChange = _ref.onChange,
|
|
791
|
+
customLocale = _ref.locale,
|
|
792
|
+
style = _ref.style,
|
|
793
|
+
navigationDescription = _ref.navigationDescription,
|
|
761
794
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
762
795
|
|
|
763
796
|
var _useLocale = i18n.useLocale(),
|
|
764
797
|
locale = _useLocale.locale;
|
|
765
798
|
|
|
766
799
|
var state = calendar$1.useCalendarState(_extends({}, rest, {
|
|
767
|
-
|
|
800
|
+
onChange: onChange,
|
|
801
|
+
locale: customLocale != null ? customLocale : locale,
|
|
768
802
|
createCalendar: createCalendar
|
|
769
803
|
}));
|
|
770
804
|
|
|
@@ -772,10 +806,16 @@ var Calendar = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
|
|
|
772
806
|
calendarProps = _useCalendar.calendarProps,
|
|
773
807
|
prevButtonProps = _useCalendar.prevButtonProps,
|
|
774
808
|
nextButtonProps = _useCalendar.nextButtonProps,
|
|
775
|
-
title = _useCalendar.title;
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
809
|
+
title = _useCalendar.title;
|
|
810
|
+
|
|
811
|
+
return React__default["default"].createElement(utils.ConditionalWrapper, {
|
|
812
|
+
condition: customLocale,
|
|
813
|
+
wrapper: function wrapper(child) {
|
|
814
|
+
return React__default["default"].createElement(i18n.I18nProvider, {
|
|
815
|
+
locale: customLocale
|
|
816
|
+
}, child);
|
|
817
|
+
}
|
|
818
|
+
}, React__default["default"].createElement("div", _extends({}, calendarProps, {
|
|
779
819
|
ref: ref,
|
|
780
820
|
className: "eds-datepicker__calendar",
|
|
781
821
|
style: style
|
|
@@ -790,48 +830,38 @@ var Calendar = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
|
|
|
790
830
|
}), React__default["default"].createElement(icons.RightArrowIcon, {
|
|
791
831
|
size: 20
|
|
792
832
|
}))), React__default["default"].createElement(CalendarGrid, {
|
|
793
|
-
state: state
|
|
794
|
-
|
|
795
|
-
});
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
// return month + ' ' + year;
|
|
800
|
-
// switch (month.toLowerCase()) {
|
|
801
|
-
// case 'january':
|
|
802
|
-
// return 'januar ' + year;
|
|
803
|
-
// case 'february':
|
|
804
|
-
// return 'februar ' + year;
|
|
805
|
-
// case 'march':
|
|
806
|
-
// return 'mars ' + year;
|
|
807
|
-
// case 'may':
|
|
808
|
-
// return 'mai ' + year;
|
|
809
|
-
// case 'june':
|
|
810
|
-
// return 'juni ' + year;
|
|
811
|
-
// case 'july':
|
|
812
|
-
// return 'juli ' + year;
|
|
813
|
-
// case 'october':
|
|
814
|
-
// return 'oktober ' + year;
|
|
815
|
-
// case 'december':
|
|
816
|
-
// return 'desember ' + year;
|
|
817
|
-
// default:
|
|
818
|
-
// return month.toLowerCase() + ' ' + year.toLowerCase();
|
|
819
|
-
// }
|
|
820
|
-
// };
|
|
821
|
-
|
|
822
|
-
var _excluded$3 = ["selectedDate", "onChange", "disabled", "className", "style", "variant", "feedback"];
|
|
833
|
+
state: state,
|
|
834
|
+
navigationDescription: navigationDescription
|
|
835
|
+
})));
|
|
836
|
+
});
|
|
837
|
+
|
|
838
|
+
var _excluded$3 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription"];
|
|
823
839
|
var DatePickerBeta = function DatePickerBeta(_ref) {
|
|
824
840
|
var value = _ref.selectedDate,
|
|
825
841
|
_onChange = _ref.onChange,
|
|
842
|
+
locale = _ref.locale,
|
|
826
843
|
isDisabled = _ref.disabled,
|
|
844
|
+
showTime = _ref.showTime,
|
|
845
|
+
_ref$showTimeZone = _ref.showTimeZone,
|
|
846
|
+
showTimeZone = _ref$showTimeZone === void 0 ? false : _ref$showTimeZone,
|
|
827
847
|
className = _ref.className,
|
|
828
848
|
variant = _ref.variant,
|
|
829
849
|
feedback = _ref.feedback,
|
|
850
|
+
validationVariant = _ref.validationVariant,
|
|
851
|
+
validationFeedback = _ref.validationFeedback,
|
|
852
|
+
_ref$disableModal = _ref.disableModal,
|
|
853
|
+
disableModal = _ref$disableModal === void 0 ? false : _ref$disableModal,
|
|
854
|
+
labelTooltip = _ref.labelTooltip,
|
|
855
|
+
navigationDescription = _ref.navigationDescription,
|
|
830
856
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
831
857
|
|
|
858
|
+
var CALENDAR_MODAL_MAX_SCREEN_WIDTH = 1000;
|
|
832
859
|
var datePickerRef = React.useRef(null);
|
|
833
860
|
var calendarRef = React.useRef(null);
|
|
834
|
-
var dateFieldRef = React.useRef(null);
|
|
861
|
+
var dateFieldRef = React.useRef(null);
|
|
862
|
+
|
|
863
|
+
var _useWindowDimensions = utils.useWindowDimensions(),
|
|
864
|
+
width = _useWindowDimensions.width;
|
|
835
865
|
|
|
836
866
|
var state = datepicker$1.useDatePickerState(_extends({}, rest, {
|
|
837
867
|
value: value,
|
|
@@ -846,8 +876,22 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
|
|
|
846
876
|
fieldProps = _useDatePicker.fieldProps,
|
|
847
877
|
buttonProps = _useDatePicker.buttonProps,
|
|
848
878
|
dialogProps = _useDatePicker.dialogProps,
|
|
849
|
-
calendarProps = _useDatePicker.calendarProps;
|
|
879
|
+
calendarProps = _useDatePicker.calendarProps;
|
|
880
|
+
|
|
881
|
+
React.useEffect(function () {
|
|
882
|
+
var _calendarRef$current;
|
|
850
883
|
|
|
884
|
+
var keyDownHandler = function keyDownHandler(event) {
|
|
885
|
+
if (event.key === 'Escape') state.setOpen(false);
|
|
886
|
+
};
|
|
887
|
+
|
|
888
|
+
(_calendarRef$current = calendarRef.current) == null ? void 0 : _calendarRef$current.addEventListener('keydown', keyDownHandler);
|
|
889
|
+
return function () {
|
|
890
|
+
var _calendarRef$current2;
|
|
891
|
+
|
|
892
|
+
return (_calendarRef$current2 = calendarRef.current) == null ? void 0 : _calendarRef$current2.removeEventListener('keydown', keyDownHandler);
|
|
893
|
+
}; // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
894
|
+
}, []); // calculations for floating-UI popover position
|
|
851
895
|
|
|
852
896
|
var _useFloating = reactDom.useFloating({
|
|
853
897
|
placement: 'bottom-start',
|
|
@@ -859,58 +903,31 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
|
|
|
859
903
|
y = _useFloating.y,
|
|
860
904
|
reference = _useFloating.reference,
|
|
861
905
|
floating = _useFloating.floating,
|
|
862
|
-
strategy = _useFloating.strategy;
|
|
906
|
+
strategy = _useFloating.strategy;
|
|
863
907
|
|
|
864
|
-
|
|
865
|
-
React.useEffect(function () {
|
|
866
|
-
var _calendarRef$current, _calendarRef$current2;
|
|
867
|
-
|
|
868
|
-
var gridCellPrefix = 'eds-datepicker__calendar__grid__cell';
|
|
869
|
-
var selectedCell = (_calendarRef$current = calendarRef.current) == null ? void 0 : _calendarRef$current.getElementsByClassName(gridCellPrefix + '--selected')[0];
|
|
870
|
-
var todayCell = (_calendarRef$current2 = calendarRef.current) == null ? void 0 : _calendarRef$current2.getElementsByClassName(gridCellPrefix + '--today')[0];
|
|
871
|
-
if (selectedCell) selectedCell.focus();else if (todayCell) todayCell.focus();
|
|
872
|
-
}, [state.isOpen]);
|
|
873
908
|
utils.useOnClickOutside([calendarRef], function () {
|
|
874
909
|
state.setOpen(false);
|
|
875
910
|
});
|
|
876
|
-
React.useEffect(function () {
|
|
877
|
-
var _calendarRef$current3;
|
|
878
911
|
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
912
|
+
var handleCalendarButtonOnClick = function handleCalendarButtonOnClick(calendarIsOpen) {
|
|
913
|
+
if (!calendarIsOpen) {
|
|
914
|
+
state.setOpen(true);
|
|
915
|
+
setFocusToRelevantDate();
|
|
916
|
+
} else {
|
|
917
|
+
state.setOpen(false);
|
|
918
|
+
}
|
|
919
|
+
};
|
|
882
920
|
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
var _calendarRef$current4;
|
|
921
|
+
var setFocusToRelevantDate = function setFocusToRelevantDate() {
|
|
922
|
+
var _calendarRef$current3, _calendarRef$current4;
|
|
886
923
|
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
datePickerRef.current = node;
|
|
895
|
-
reference(node);
|
|
896
|
-
},
|
|
897
|
-
className: "eds-datepicker__datefield__wrapper"
|
|
898
|
-
}), React__default["default"].createElement(DateField, _extends({}, fieldProps, {
|
|
899
|
-
selectedDate: state.value,
|
|
900
|
-
label: rest.label,
|
|
901
|
-
labelProps: labelProps,
|
|
902
|
-
ref: dateFieldRef,
|
|
903
|
-
className: classNames__default["default"]('eds-datepicker__datefield', {
|
|
904
|
-
'eds-datepicker__datefield--disabled': fieldProps.isDisabled
|
|
905
|
-
}),
|
|
906
|
-
variant: variant,
|
|
907
|
-
feedback: feedback
|
|
908
|
-
})), !fieldProps.isDisabled && React__default["default"].createElement(CalendarButton, _extends({}, buttonProps, {
|
|
909
|
-
onPress: function onPress() {
|
|
910
|
-
return state.setOpen(!state.isOpen);
|
|
911
|
-
},
|
|
912
|
-
className: "eds-datepicker__open-calendar-button"
|
|
913
|
-
}), React__default["default"].createElement(icons.CalendarIcon, null))), React__default["default"].createElement(FocusLock__default["default"], {
|
|
924
|
+
var gridCellPrefix = 'eds-datepicker__calendar__grid__cell';
|
|
925
|
+
var selectedCell = (_calendarRef$current3 = calendarRef.current) == null ? void 0 : _calendarRef$current3.getElementsByClassName(gridCellPrefix + '--selected')[0];
|
|
926
|
+
var todayCell = (_calendarRef$current4 = calendarRef.current) == null ? void 0 : _calendarRef$current4.getElementsByClassName(gridCellPrefix + '--today')[0];
|
|
927
|
+
if (selectedCell) selectedCell.focus();else if (todayCell) todayCell.focus();
|
|
928
|
+
};
|
|
929
|
+
|
|
930
|
+
var popoverCalendar = React__default["default"].createElement(FocusLock__default["default"], {
|
|
914
931
|
disabled: !state.isOpen,
|
|
915
932
|
returnFocus: true
|
|
916
933
|
}, React__default["default"].createElement(Calendar, _extends({}, dialogProps, calendarProps, {
|
|
@@ -924,6 +941,7 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
|
|
|
924
941
|
calendarRef.current = node;
|
|
925
942
|
floating(node);
|
|
926
943
|
},
|
|
944
|
+
navigationDescription: navigationDescription,
|
|
927
945
|
// styling for floating-UI popover
|
|
928
946
|
style: {
|
|
929
947
|
display: state.isOpen ? 'block' : 'none',
|
|
@@ -932,7 +950,62 @@ var DatePickerBeta = function DatePickerBeta(_ref) {
|
|
|
932
950
|
left: x != null ? x : 0,
|
|
933
951
|
zIndex: 10
|
|
934
952
|
}
|
|
935
|
-
})))
|
|
953
|
+
})));
|
|
954
|
+
var modalCalendar = React__default["default"].createElement(modal.Modal, {
|
|
955
|
+
size: 'small',
|
|
956
|
+
title: "",
|
|
957
|
+
open: state.isOpen,
|
|
958
|
+
onDismiss: function onDismiss() {
|
|
959
|
+
return state.setOpen(false);
|
|
960
|
+
},
|
|
961
|
+
closeOnClickOutside: true,
|
|
962
|
+
className: "eds-datepicker__calendar-modal"
|
|
963
|
+
}, React__default["default"].createElement(Calendar, _extends({}, dialogProps, calendarProps, {
|
|
964
|
+
onChange: function onChange(dateValue) {
|
|
965
|
+
_onChange(dateValue);
|
|
966
|
+
|
|
967
|
+
state.setOpen(false);
|
|
968
|
+
},
|
|
969
|
+
disabled: calendarProps.isDisabled,
|
|
970
|
+
ref: calendarRef,
|
|
971
|
+
navigationDescription: navigationDescription
|
|
972
|
+
})));
|
|
973
|
+
return React__default["default"].createElement(utils.ConditionalWrapper, {
|
|
974
|
+
condition: locale !== undefined,
|
|
975
|
+
wrapper: function wrapper(child) {
|
|
976
|
+
return React__default["default"].createElement(i18n.I18nProvider, {
|
|
977
|
+
locale: locale
|
|
978
|
+
}, child);
|
|
979
|
+
}
|
|
980
|
+
}, React__default["default"].createElement("div", {
|
|
981
|
+
className: classNames__default["default"]('eds-datepicker', className)
|
|
982
|
+
}, React__default["default"].createElement("div", _extends({}, groupProps, {
|
|
983
|
+
ref: function ref(node) {
|
|
984
|
+
datePickerRef.current = node;
|
|
985
|
+
reference(node);
|
|
986
|
+
},
|
|
987
|
+
className: "eds-datepicker__datefield__wrapper"
|
|
988
|
+
}), React__default["default"].createElement(DateField, _extends({}, fieldProps, {
|
|
989
|
+
selectedDate: state.value,
|
|
990
|
+
label: rest.label,
|
|
991
|
+
labelProps: labelProps,
|
|
992
|
+
showTime: showTime,
|
|
993
|
+
showTimeZone: showTimeZone,
|
|
994
|
+
ref: dateFieldRef,
|
|
995
|
+
variant: variant,
|
|
996
|
+
feedback: feedback,
|
|
997
|
+
validationVariant: validationVariant,
|
|
998
|
+
validationFeedback: validationFeedback,
|
|
999
|
+
labelTooltip: labelTooltip,
|
|
1000
|
+
className: classNames__default["default"]('eds-datepicker__datefield', {
|
|
1001
|
+
'eds-datepicker__datefield--disabled': fieldProps.isDisabled
|
|
1002
|
+
})
|
|
1003
|
+
})), !fieldProps.isDisabled && React__default["default"].createElement(CalendarButton, _extends({}, buttonProps, {
|
|
1004
|
+
onPress: function onPress() {
|
|
1005
|
+
return handleCalendarButtonOnClick(state.isOpen);
|
|
1006
|
+
},
|
|
1007
|
+
className: "eds-datepicker__open-calendar-button"
|
|
1008
|
+
}), React__default["default"].createElement(icons.CalendarIcon, null)), width > CALENDAR_MODAL_MAX_SCREEN_WIDTH || disableModal ? popoverCalendar : modalCalendar)));
|
|
936
1009
|
};
|
|
937
1010
|
|
|
938
1011
|
var _excluded$2 = ["className", "style", "label", "onChange", "feedback", "variant", "disableLabelAnimation", "prepend"],
|