@entur/datepicker 10.1.3 → 11.0.1-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/README.md +2 -2
- package/dist/DatePicker/Calendar.d.ts +5 -2
- package/dist/DatePicker/DateField.d.ts +31 -9
- package/dist/DatePicker/DatePicker.d.ts +4 -72
- package/dist/TimePicker/TimePicker.d.ts +1 -1
- package/dist/datepicker.cjs.development.js +72 -65
- 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 +73 -67
- package/dist/datepicker.esm.js.map +1 -1
- package/dist/shared/utils.d.ts +8 -1
- package/dist/styles.css +62 -56
- package/package.json +11 -11
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
This package contains the different Datepicker components.
|
|
4
4
|
|
|
5
|
-
> 💡 Looking for the [documentation](https://
|
|
5
|
+
> 💡 Looking for the [documentation](https://linje.entur.no/komponenter/skjemaelementer/datepicker)?
|
|
6
6
|
|
|
7
7
|
## Installation
|
|
8
8
|
|
|
@@ -14,4 +14,4 @@ yarn add @entur/datepicker
|
|
|
14
14
|
|
|
15
15
|
## Usage
|
|
16
16
|
|
|
17
|
-
Please refer to the [documentation](https://
|
|
17
|
+
Please refer to the [documentation](https://linje.entur.no/komponenter/skjemaelementer/datepicker) for usage information.
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { AriaCalendarProps } from '@react-aria/calendar';
|
|
2
3
|
import { CalendarDate, DateValue } from '@internationalized/date';
|
|
3
4
|
import { MappedDateValue } from '@react-types/datepicker';
|
|
5
|
+
import { DateFieldProps } from './DateField';
|
|
4
6
|
import './Calendar.scss';
|
|
5
|
-
export type CalendarProps<DateType extends DateValue> = {
|
|
7
|
+
export type CalendarProps<DateType extends DateValue> = Omit<AriaCalendarProps<DateType>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'placeholderValue' | 'defaultValue' | 'minValue' | 'maxValue'> & {
|
|
6
8
|
selectedDate: DateType | null;
|
|
7
|
-
onChange
|
|
9
|
+
onChange?: (selectedDate: MappedDateValue<DateType> | null) => void;
|
|
8
10
|
navigationDescription?: string;
|
|
9
11
|
style?: React.CSSProperties;
|
|
10
12
|
/** Ekstra klassenavn */
|
|
@@ -48,5 +50,6 @@ export type CalendarProps<DateType extends DateValue> = {
|
|
|
48
50
|
ariaLabelForDate?: (date: CalendarDate) => string;
|
|
49
51
|
locale?: string;
|
|
50
52
|
calendarRef?: React.MutableRefObject<HTMLDivElement | null>;
|
|
53
|
+
forcedReturnType?: DateFieldProps<DateType>['forcedReturnType'];
|
|
51
54
|
};
|
|
52
55
|
export declare const Calendar: <DateType extends DateValue>({ locale: localOverride, ...rest }: CalendarProps<DateType>) => React.JSX.Element;
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { DateValue, AriaDatePickerProps, MappedDateValue, Granularity } from '@react-types/datepicker';
|
|
3
3
|
import { BaseFormControlProps } from '@entur/form';
|
|
4
4
|
import { VariantType } from '@entur/utils';
|
|
5
|
+
import { ForcedReturnType } from '../shared/utils';
|
|
5
6
|
import './DateField.scss';
|
|
6
7
|
/** @deprecated use variant="information" instead */
|
|
7
8
|
declare const info = "info";
|
|
8
9
|
/** @deprecated use variant="negative" instead */
|
|
9
10
|
declare const error = "error";
|
|
10
|
-
export type DateFieldProps<DateType extends DateValue> = {
|
|
11
|
+
export type DateFieldProps<DateType extends DateValue> = Omit<AriaDatePickerProps<DateType>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'placeholderValue' | 'defaultValue' | 'minValue' | 'maxValue'> & Partial<Omit<BaseFormControlProps, 'children' | 'label' | 'defaultValue' | 'value' | 'onChange'>> & {
|
|
11
12
|
/** Den valgte tiden. Tid i '@internationalized/date'-pakkens format */
|
|
12
13
|
selectedDate: DateType | null;
|
|
13
|
-
/** Kalles når
|
|
14
|
-
onChange
|
|
15
|
-
/**
|
|
14
|
+
/** Kalles når dato endres. Tid i '@internationalized/date'-pakkens format */
|
|
15
|
+
onChange?: (value: MappedDateValue<DateType> | null) => void;
|
|
16
|
+
/** Ledetekst til DateField */
|
|
16
17
|
label: string;
|
|
17
18
|
/** BCP47-språkkoden til locale-en du ønsker å bruke.
|
|
18
19
|
* @default Brukerenhetens selvvalgte locale
|
|
@@ -22,6 +23,15 @@ export type DateFieldProps<DateType extends DateValue> = {
|
|
|
22
23
|
* @default false
|
|
23
24
|
*/
|
|
24
25
|
showTimeZone?: boolean;
|
|
26
|
+
/** Brukes for å vise tid i datovelgeren. Velg minste enhet som skal vises.
|
|
27
|
+
* Hvis du vil vise tid vil "minute" vise minutt og ikke sekund, mens "second" viser
|
|
28
|
+
* sekunder også.
|
|
29
|
+
* @default "day"
|
|
30
|
+
*/
|
|
31
|
+
granularity?: Granularity;
|
|
32
|
+
/** Viser tidspunkt i tillegg til dato.
|
|
33
|
+
* OBS: selectedDate må være av typen CalendarDateTime eller ZonedDateTime
|
|
34
|
+
*/
|
|
25
35
|
showTime?: boolean;
|
|
26
36
|
/** Tidligste gyldige datovalg.
|
|
27
37
|
* Eks: today(getLocalTimeZone()) == i dag i lokal tidssone.
|
|
@@ -37,6 +47,19 @@ export type DateFieldProps<DateType extends DateValue> = {
|
|
|
37
47
|
* Gyldig til og med den tiden som legges inn som maxDate.
|
|
38
48
|
* Dato uten tid vil være gyldig hele maxDate-dagen */
|
|
39
49
|
maxDate?: DateValue;
|
|
50
|
+
/** Funksjon som tar inn en dato og sier om den er utilgjengelig.
|
|
51
|
+
* Eks. (date) => isWeekend(date, 'no-NO') == helgedager er ikke tilgjengelig */
|
|
52
|
+
isDateUnavailable?: (date: DateValue) => boolean;
|
|
53
|
+
/** Tvinger typen på onChange til den gitte typen.
|
|
54
|
+
* Dette er nyttig når utgangsverdien din er 'null', men du ønsker at
|
|
55
|
+
* DatePicker alltid skal returnere f.eks ZonedDateTime.
|
|
56
|
+
*
|
|
57
|
+
* Som standard returnerer onChange DateValue basert på selectedDate,
|
|
58
|
+
* eller CalendarDate hvis selectedDate er 'null'.
|
|
59
|
+
*
|
|
60
|
+
* @default undefined
|
|
61
|
+
*/
|
|
62
|
+
forcedReturnType?: ForcedReturnType;
|
|
40
63
|
/** Varselmelding, som vil komme under TimePicker */
|
|
41
64
|
feedback?: string;
|
|
42
65
|
/** Valideringsvariant*/
|
|
@@ -51,13 +74,12 @@ export type DateFieldProps<DateType extends DateValue> = {
|
|
|
51
74
|
validationVariant?: VariantType | typeof error | typeof info;
|
|
52
75
|
labelTooltip?: React.ReactNode;
|
|
53
76
|
labelProps?: React.DOMAttributes<Element>;
|
|
54
|
-
fieldProps?:
|
|
55
|
-
groupProps?: React.DOMAttributes<Element>;
|
|
77
|
+
fieldProps?: DateFieldProps<DateType>;
|
|
56
78
|
dateFieldRef?: React.Ref<HTMLDivElement>;
|
|
57
79
|
disabled?: boolean;
|
|
58
80
|
/** Ekstra klassenavn */
|
|
59
81
|
className?: string;
|
|
60
82
|
style?: React.CSSProperties;
|
|
61
|
-
}
|
|
62
|
-
export declare const DateField: <DateType extends DateValue>({ selectedDate, onChange, label, locale: customLocale, showTimeZone, showTime, granularity, disabled, isDisabled, variant, feedback, validationVariant, validationFeedback, labelTooltip, minDate, maxDate, style, className, labelProps: parentLabelProps,
|
|
83
|
+
};
|
|
84
|
+
export declare const DateField: <DateType extends DateValue>({ selectedDate, onChange, label, locale: customLocale, showTimeZone, showTime, granularity, disabled, isDisabled, variant, feedback, validationVariant, validationFeedback, labelTooltip, minDate, maxDate, forcedReturnType, style, className, labelProps: parentLabelProps, append, prepend, dateFieldRef: ref, ...rest }: DateFieldProps<DateType>) => React.JSX.Element;
|
|
63
85
|
export {};
|
|
@@ -1,62 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { CalendarDate, DateValue } from '@internationalized/date';
|
|
3
|
-
import
|
|
4
|
-
import type { BaseFormControlProps } from '@entur/form';
|
|
5
|
-
import type { VariantType } from '@entur/utils';
|
|
3
|
+
import { DateFieldProps } from './DateField';
|
|
6
4
|
import './DatePicker.scss';
|
|
7
|
-
|
|
8
|
-
declare const info = "info";
|
|
9
|
-
/** @deprecated use variant="negative" instead */
|
|
10
|
-
declare const error = "error";
|
|
11
|
-
export type DatePickerProps<DateType extends DateValue> = {
|
|
12
|
-
/** Den valgte datoen. Dato i '@internationalized/date'-pakkens format */
|
|
13
|
-
selectedDate: DateType | null;
|
|
14
|
-
/** Kalles når tiden endres. Dato i '@internationalized/date'-pakkens format */
|
|
15
|
-
onChange: (value: MappedDateValue<DateType> | null) => void;
|
|
16
|
-
/** Ledetekst for inputfeltet til DatePicker */
|
|
17
|
-
label: string;
|
|
18
|
-
/** BCP47-språkkoden til locale-en du ønsker å bruke.
|
|
19
|
-
* @default Brukerenhetens selvvalgte locale
|
|
20
|
-
*/
|
|
21
|
-
locale?: string;
|
|
22
|
-
/** Viser den gjeldende tidssonen hvis en er valgt (krever at tid også vises)
|
|
23
|
-
* @default false
|
|
24
|
-
*/
|
|
25
|
-
showTimeZone?: boolean;
|
|
26
|
-
/** Viser tidspunkt i tillegg til dato.
|
|
27
|
-
* OBS: selectedDate må være av typen CalendarDateTime eller ZonedDateTime
|
|
28
|
-
*/
|
|
29
|
-
showTime?: boolean;
|
|
30
|
-
/** Tidligste gyldige datovalg.
|
|
31
|
-
* Eks: today(getLocalTimeZone()) == i dag i lokal tidssone.
|
|
32
|
-
*
|
|
33
|
-
* OBS: Hvis du bruker dato med tid vil tidspunktet også tas hensyn til.
|
|
34
|
-
* Gyldig fra og med den tiden som legges inn som minDate.
|
|
35
|
-
* Dato uten tid vil være gyldig hele minDate-dagen */
|
|
36
|
-
minDate?: DateValue;
|
|
37
|
-
/** Seneste gyldige datovalg.
|
|
38
|
-
* Eks: today(getLocalTimeZone()).add({days: 1}) == i morgen i lokal tidssone
|
|
39
|
-
*
|
|
40
|
-
* OBS: Hvis du bruker dato med tid vil tidspunktet også tas hensyn til.
|
|
41
|
-
* Gyldig til og med den tiden som legges inn som maxDate.
|
|
42
|
-
* Dato uten tid vil være gyldig hele maxDate-dagen */
|
|
43
|
-
maxDate?: DateValue;
|
|
44
|
-
/** Funksjon som tar inn en dato og sier om den er utilgjengelig.
|
|
45
|
-
* Eks. (date) => isWeekend(date, 'no-NO') == helgedager er ikke tilgjengelig */
|
|
46
|
-
isDateUnavailable?: (date: DateValue) => boolean;
|
|
47
|
-
/** Varselmelding, som vil komme under DatePicker sitt inputfelt */
|
|
48
|
-
feedback?: string;
|
|
49
|
-
/** Valideringsvariant*/
|
|
50
|
-
variant?: VariantType | typeof error | typeof info;
|
|
51
|
-
/** Varselmelding som forteller om ugyldig dato
|
|
52
|
-
* @default "Ugyldig dato"
|
|
53
|
-
*/
|
|
54
|
-
validationFeedback?: string;
|
|
55
|
-
/** Valideringsvariant for melding om ugyldig dato
|
|
56
|
-
* @default "negative"
|
|
57
|
-
*/
|
|
58
|
-
validationVariant?: VariantType | typeof error | typeof info;
|
|
59
|
-
disabled?: boolean;
|
|
5
|
+
export type DatePickerProps<DateType extends DateValue> = Omit<DateFieldProps<DateType>, 'labelProps' | 'fieldProps' | 'groupProps' | 'dateFieldRef'> & {
|
|
60
6
|
/** Slå på visning av ukenummere i kalenderen. Overskriften for ukenummer-kolonnen
|
|
61
7
|
* kan endres med prop-en 'weekNumberHeader'
|
|
62
8
|
* @default false */
|
|
@@ -77,16 +23,6 @@ export type DatePickerProps<DateType extends DateValue> = {
|
|
|
77
23
|
* @default 'Bruk piltastene til å navigere mellom datoer'
|
|
78
24
|
*/
|
|
79
25
|
navigationDescription?: string;
|
|
80
|
-
/** Tvinger typen på onChange til den gitte typen.
|
|
81
|
-
* Dette er nyttig når utgangsverdien din er 'null', men du ønsker at
|
|
82
|
-
* DatePicker alltid skal returnere f.eks ZonedDateTime.
|
|
83
|
-
*
|
|
84
|
-
* Som standard returnerer onChange DateValue basert på selectedDate,
|
|
85
|
-
* eller CalendarDate hvis selectedDate er 'null'.
|
|
86
|
-
*
|
|
87
|
-
* @default undefined
|
|
88
|
-
*/
|
|
89
|
-
forcedReturnType?: 'CalendarDate' | 'CalendarDateTime' | 'ZonedDateTime';
|
|
90
26
|
/** Brukes for å legge til klassenavn på spesifikke datoer i kalenderen.
|
|
91
27
|
* Tar inn en dato og skal returnere klassenavnet som skal legges til den datoen.
|
|
92
28
|
* @default undefined
|
|
@@ -102,9 +38,5 @@ export type DatePickerProps<DateType extends DateValue> = {
|
|
|
102
38
|
* @example (date) => isWeekend(date, 'no-NO') ? 'helgedag' : ''
|
|
103
39
|
*/
|
|
104
40
|
ariaLabelForDate?: (date: CalendarDate) => string;
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
style?: React.CSSProperties;
|
|
108
|
-
} & Omit<AriaDatePickerProps<DateType>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'minValue' | 'maxValue'> & Omit<Partial<BaseFormControlProps>, 'children'>;
|
|
109
|
-
export declare const DatePicker: <DateType extends DateValue>({ selectedDate, onChange, locale, disabled, showTime, showTimeZone, classNameForDate, className, style, variant, feedback, validationVariant, validationFeedback, showWeekNumbers, weekNumberHeader, disableModal, labelTooltip, navigationDescription, minDate, maxDate, modalTreshold, forcedReturnType, ariaLabelForDate, append, prepend, ...rest }: DatePickerProps<DateType>) => React.JSX.Element;
|
|
110
|
-
export {};
|
|
41
|
+
};
|
|
42
|
+
export declare const DatePicker: <DateType extends DateValue>({ selectedDate, locale, disabled, showTime, showTimeZone, classNameForDate, className, variant, feedback, validationVariant, validationFeedback, showWeekNumbers, weekNumberHeader, disableModal, labelTooltip, navigationDescription, minDate, maxDate, modalTreshold, forcedReturnType, ariaLabelForDate, append, prepend, granularity, ...rest }: DatePickerProps<DateType>) => React.JSX.Element;
|
|
@@ -62,6 +62,6 @@ export type TimePickerProps<TimeType extends TimeValue> = {
|
|
|
62
62
|
/** Ekstra klassenavn */
|
|
63
63
|
className?: string;
|
|
64
64
|
style?: React.CSSProperties;
|
|
65
|
-
} & Omit<AriaTimeFieldProps<TimeType>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'minValue' | 'maxValue'> & Partial<BaseFormControlProps>;
|
|
65
|
+
} & Omit<AriaTimeFieldProps<TimeType>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'minValue' | 'maxValue'> & Omit<Partial<BaseFormControlProps>, 'children' | 'label'>;
|
|
66
66
|
export declare const TimePicker: <TimeType extends TimeValue>({ selectedTime, onChange, disabled, className, style, label, labelTooltip, feedback, granularity, variant, locale: customLocale, showTimeZone, showSeconds, minuteIncrementForArrowButtons, leftArrowButtonAriaLabel, rightArrowButtonAriaLabel, inputRef, forcedReturnType, forcedTimeZone, append, prepend, ...rest }: TimePickerProps<TimeType>) => React.JSX.Element;
|
|
67
67
|
export {};
|
|
@@ -52,7 +52,7 @@ var FieldSegment = function FieldSegment(_ref) {
|
|
|
52
52
|
ref: ref,
|
|
53
53
|
className: classNames('eds-date-and-time-field__segment', {
|
|
54
54
|
'eds-date-and-time-field__segment--placeholder': segment.isPlaceholder,
|
|
55
|
-
'eds-date-and-time-field__segment--dot-separator': segment.text === '.'
|
|
55
|
+
'eds-date-and-time-field__segment--dot-separator': segment.text === '.' || segment.text === ':'
|
|
56
56
|
}),
|
|
57
57
|
tabIndex: state.isDisabled ? -1 : segmentProps.tabIndex
|
|
58
58
|
}, rest), segment.text);
|
|
@@ -205,17 +205,31 @@ function getWeekNumberForDate(date$1) {
|
|
|
205
205
|
var weekNumber = Math.ceil((thursdayOfWeek.compare(firstDayOfYearForThursday) + 1) / 7);
|
|
206
206
|
return weekNumber;
|
|
207
207
|
}
|
|
208
|
+
function handleOnChange(_ref2) {
|
|
209
|
+
var value = _ref2.value,
|
|
210
|
+
selectedDate = _ref2.selectedDate,
|
|
211
|
+
forcedReturnType = _ref2.forcedReturnType,
|
|
212
|
+
onChange = _ref2.onChange;
|
|
213
|
+
if (forcedReturnType !== undefined || !selectedDate) {
|
|
214
|
+
return onChange == null ? void 0 : onChange(convertValueToType({
|
|
215
|
+
value: value,
|
|
216
|
+
type: forcedReturnType != null ? forcedReturnType : 'ZonedDateTime',
|
|
217
|
+
timezone: value !== null && 'timezone' in value ? value.timezone : undefined
|
|
218
|
+
}));
|
|
219
|
+
}
|
|
220
|
+
onChange == null || onChange(value);
|
|
221
|
+
}
|
|
208
222
|
|
|
209
|
-
var _excluded$a = ["selectedDate", "onChange", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "isDisabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "
|
|
223
|
+
var _excluded$a = ["selectedDate", "onChange", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "isDisabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "forcedReturnType", "style", "className", "labelProps", "append", "prepend", "dateFieldRef"];
|
|
210
224
|
var DateField = function DateField(_ref) {
|
|
211
225
|
var selectedDate = _ref.selectedDate,
|
|
212
|
-
|
|
226
|
+
_onChange = _ref.onChange,
|
|
213
227
|
label = _ref.label,
|
|
214
228
|
customLocale = _ref.locale,
|
|
215
229
|
showTimeZone = _ref.showTimeZone,
|
|
216
230
|
showTime = _ref.showTime,
|
|
217
231
|
_ref$granularity = _ref.granularity,
|
|
218
|
-
granularity = _ref$granularity === void 0 ? 'day' : _ref$granularity,
|
|
232
|
+
granularity = _ref$granularity === void 0 ? showTime ? 'minute' : 'day' : _ref$granularity,
|
|
219
233
|
disabled = _ref.disabled,
|
|
220
234
|
isDisabled = _ref.isDisabled,
|
|
221
235
|
variant = _ref.variant,
|
|
@@ -227,34 +241,40 @@ var DateField = function DateField(_ref) {
|
|
|
227
241
|
labelTooltip = _ref.labelTooltip,
|
|
228
242
|
minDate = _ref.minDate,
|
|
229
243
|
maxDate = _ref.maxDate,
|
|
244
|
+
forcedReturnType = _ref.forcedReturnType,
|
|
230
245
|
style = _ref.style,
|
|
231
246
|
className = _ref.className,
|
|
232
247
|
parentLabelProps = _ref.labelProps,
|
|
233
|
-
parentFieldProps = _ref.fieldProps,
|
|
234
|
-
parentGroupProps = _ref.groupProps,
|
|
235
248
|
append = _ref.append,
|
|
236
249
|
prepend = _ref.prepend,
|
|
237
250
|
ref = _ref.dateFieldRef,
|
|
238
251
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
|
|
239
252
|
var _useLocale = i18n.useLocale(),
|
|
240
253
|
locale = _useLocale.locale;
|
|
241
|
-
var
|
|
254
|
+
var _props = _extends({}, rest, {
|
|
255
|
+
label: label,
|
|
242
256
|
locale: customLocale != null ? customLocale : locale,
|
|
243
257
|
createCalendar: createCalendar,
|
|
244
258
|
value: selectedDate,
|
|
245
|
-
onChange: onChange
|
|
259
|
+
onChange: function onChange(value) {
|
|
260
|
+
return handleOnChange({
|
|
261
|
+
value: value,
|
|
262
|
+
selectedDate: selectedDate,
|
|
263
|
+
forcedReturnType: forcedReturnType,
|
|
264
|
+
onChange: _onChange
|
|
265
|
+
});
|
|
266
|
+
},
|
|
246
267
|
hideTimeZone: !showTimeZone,
|
|
247
|
-
granularity:
|
|
268
|
+
granularity: granularity,
|
|
248
269
|
minValue: minDate,
|
|
249
270
|
// this weird logic makes sure the entire day is included if no time is provided in maxDate
|
|
250
271
|
maxValue: 'hour' in (maxDate != null ? maxDate : {}) ? maxDate : maxDate !== undefined ? lastMillisecondOfDay(maxDate) : undefined,
|
|
251
272
|
isDisabled: isDisabled || disabled,
|
|
252
273
|
shouldForceLeadingZeros: true
|
|
253
|
-
})
|
|
274
|
+
});
|
|
275
|
+
var state = datepicker$1.useDateFieldState(_props);
|
|
254
276
|
var dateFieldRef = React.useRef(null);
|
|
255
|
-
var _useDateField = datepicker.useDateField(
|
|
256
|
-
label: label
|
|
257
|
-
}), state, dateFieldRef),
|
|
277
|
+
var _useDateField = datepicker.useDateField(_props, state, dateFieldRef),
|
|
258
278
|
labelProps = _useDateField.labelProps,
|
|
259
279
|
fieldProps = _useDateField.fieldProps;
|
|
260
280
|
var id = utils.useRandomId('datefield');
|
|
@@ -279,22 +299,16 @@ var DateField = function DateField(_ref) {
|
|
|
279
299
|
labelProps: parentLabelProps != null ? parentLabelProps : labelProps,
|
|
280
300
|
labelTooltip: labelTooltip,
|
|
281
301
|
prepend: prepend,
|
|
282
|
-
ref: ref,
|
|
302
|
+
ref: utils.mergeRefs(ref, dateFieldRef),
|
|
283
303
|
style: style,
|
|
284
|
-
variant: variant != null ? variant : state.
|
|
285
|
-
},
|
|
286
|
-
ref: dateFieldRef
|
|
287
|
-
}, fieldProps, {
|
|
288
|
-
style: {
|
|
289
|
-
display: 'contents'
|
|
290
|
-
}
|
|
291
|
-
}), state.segments.map(function (segment, i) {
|
|
304
|
+
variant: variant != null ? variant : state.isInvalid ? validationVariant : undefined
|
|
305
|
+
}, fieldProps), state.segments.map(function (segment, i) {
|
|
292
306
|
return React.createElement(FieldSegment, {
|
|
293
307
|
segment: segment,
|
|
294
308
|
state: state,
|
|
295
309
|
key: i
|
|
296
310
|
});
|
|
297
|
-
})))
|
|
311
|
+
})));
|
|
298
312
|
};
|
|
299
313
|
|
|
300
314
|
var _excluded$9 = ["children", "className", "style"];
|
|
@@ -400,9 +414,9 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
400
414
|
className: "eds-datepicker__calendar__grid"
|
|
401
415
|
}), React.createElement("thead", _extends({}, headerProps), React.createElement("tr", null, showWeekNumbers && React.createElement("th", {
|
|
402
416
|
className: "eds-datepicker__calendar__grid__weeknumber-header"
|
|
403
|
-
}, weekNumberHeader), weekDaysMapped().map(function (day
|
|
417
|
+
}, weekNumberHeader), weekDaysMapped().map(function (day) {
|
|
404
418
|
return React.createElement("th", {
|
|
405
|
-
key:
|
|
419
|
+
key: day
|
|
406
420
|
}, day);
|
|
407
421
|
}))), React.createElement("tbody", null, weeksArray.map(function (weekIndex) {
|
|
408
422
|
var weekNumber = getWeekNumberForDate(state.getDatesInWeek(weekIndex)[0]);
|
|
@@ -413,7 +427,7 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
413
427
|
className: "eds-datepicker__calendar__grid__weeknumber"
|
|
414
428
|
}, weekNumber), state.getDatesInWeek(weekIndex).map(function (date, i) {
|
|
415
429
|
return date ? React.createElement(CalendarCell, {
|
|
416
|
-
key:
|
|
430
|
+
key: date.month + "." + date.day,
|
|
417
431
|
state: state,
|
|
418
432
|
date: date,
|
|
419
433
|
"aria-describedby": calendarGridId + 'description',
|
|
@@ -431,7 +445,7 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
431
445
|
};
|
|
432
446
|
|
|
433
447
|
var _excluded$6 = ["locale"],
|
|
434
|
-
_excluded2$3 = ["selectedDate", "onChange", "minDate", "maxDate", "showWeekNumbers", "weekNumberHeader", "style", "className", "navigationDescription", "onSelectedCellClick", "classNameForDate", "ariaLabelForDate", "calendarRef"];
|
|
448
|
+
_excluded2$3 = ["selectedDate", "onChange", "minDate", "maxDate", "showWeekNumbers", "weekNumberHeader", "forcedReturnType", "style", "className", "navigationDescription", "onSelectedCellClick", "classNameForDate", "ariaLabelForDate", "calendarRef"];
|
|
435
449
|
var Calendar = function Calendar(_ref) {
|
|
436
450
|
var localOverride = _ref.locale,
|
|
437
451
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
|
|
@@ -443,13 +457,14 @@ var Calendar = function Calendar(_ref) {
|
|
|
443
457
|
};
|
|
444
458
|
var CalendarBase = function CalendarBase(_ref2) {
|
|
445
459
|
var selectedDate = _ref2.selectedDate,
|
|
446
|
-
|
|
460
|
+
_onChange = _ref2.onChange,
|
|
447
461
|
minDate = _ref2.minDate,
|
|
448
462
|
maxDate = _ref2.maxDate,
|
|
449
463
|
_ref2$showWeekNumbers = _ref2.showWeekNumbers,
|
|
450
464
|
showWeekNumbers = _ref2$showWeekNumbers === void 0 ? false : _ref2$showWeekNumbers,
|
|
451
465
|
_ref2$weekNumberHeade = _ref2.weekNumberHeader,
|
|
452
466
|
weekNumberHeader = _ref2$weekNumberHeade === void 0 ? 'uke' : _ref2$weekNumberHeade,
|
|
467
|
+
forcedReturnType = _ref2.forcedReturnType,
|
|
453
468
|
style = _ref2.style,
|
|
454
469
|
className = _ref2.className,
|
|
455
470
|
navigationDescription = _ref2.navigationDescription,
|
|
@@ -463,16 +478,23 @@ var CalendarBase = function CalendarBase(_ref2) {
|
|
|
463
478
|
rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$3);
|
|
464
479
|
var _useLocale2 = i18n.useLocale(),
|
|
465
480
|
locale = _useLocale2.locale;
|
|
466
|
-
var
|
|
481
|
+
var _props = _extends({}, rest, {
|
|
467
482
|
value: selectedDate,
|
|
468
|
-
onChange: onChange
|
|
483
|
+
onChange: function onChange(value) {
|
|
484
|
+
return handleOnChange({
|
|
485
|
+
value: value,
|
|
486
|
+
selectedDate: selectedDate,
|
|
487
|
+
forcedReturnType: forcedReturnType,
|
|
488
|
+
onChange: _onChange
|
|
489
|
+
});
|
|
490
|
+
},
|
|
469
491
|
locale: locale,
|
|
470
492
|
createCalendar: createCalendar,
|
|
471
493
|
minValue: minDate,
|
|
472
494
|
maxValue: maxDate
|
|
473
495
|
});
|
|
474
|
-
var state = calendar$1.useCalendarState(
|
|
475
|
-
var _useCalendar = calendar.useCalendar(
|
|
496
|
+
var state = calendar$1.useCalendarState(_props);
|
|
497
|
+
var _useCalendar = calendar.useCalendar(_props, state),
|
|
476
498
|
calendarProps = _useCalendar.calendarProps,
|
|
477
499
|
prevButtonProps = _useCalendar.prevButtonProps,
|
|
478
500
|
nextButtonProps = _useCalendar.nextButtonProps,
|
|
@@ -491,7 +513,7 @@ var CalendarBase = function CalendarBase(_ref2) {
|
|
|
491
513
|
"aria-label": ariaLabelIfNorwegian('Neste måned', locale, nextButtonProps)
|
|
492
514
|
}), React.createElement(icons.RightArrowIcon, {
|
|
493
515
|
size: 20
|
|
494
|
-
}))), React.createElement(CalendarGrid, {
|
|
516
|
+
}))), React.createElement(CalendarGrid, _extends({}, rest, {
|
|
495
517
|
state: state,
|
|
496
518
|
navigationDescription: navigationDescription,
|
|
497
519
|
onSelectedCellClick: onSelectedCellClick,
|
|
@@ -499,13 +521,12 @@ var CalendarBase = function CalendarBase(_ref2) {
|
|
|
499
521
|
ariaLabelForDate: ariaLabelForDate,
|
|
500
522
|
showWeekNumbers: showWeekNumbers,
|
|
501
523
|
weekNumberHeader: weekNumberHeader
|
|
502
|
-
}));
|
|
524
|
+
})));
|
|
503
525
|
};
|
|
504
526
|
|
|
505
|
-
var _excluded$5 = ["selectedDate", "
|
|
527
|
+
var _excluded$5 = ["selectedDate", "locale", "disabled", "showTime", "showTimeZone", "classNameForDate", "className", "variant", "feedback", "validationVariant", "validationFeedback", "showWeekNumbers", "weekNumberHeader", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold", "forcedReturnType", "ariaLabelForDate", "append", "prepend", "granularity"];
|
|
506
528
|
var DatePicker = function DatePicker(_ref) {
|
|
507
529
|
var selectedDate = _ref.selectedDate,
|
|
508
|
-
onChange = _ref.onChange,
|
|
509
530
|
locale = _ref.locale,
|
|
510
531
|
disabled = _ref.disabled,
|
|
511
532
|
showTime = _ref.showTime,
|
|
@@ -513,7 +534,6 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
513
534
|
showTimeZone = _ref$showTimeZone === void 0 ? false : _ref$showTimeZone,
|
|
514
535
|
classNameForDate = _ref.classNameForDate,
|
|
515
536
|
className = _ref.className,
|
|
516
|
-
style = _ref.style,
|
|
517
537
|
variant = _ref.variant,
|
|
518
538
|
feedback = _ref.feedback,
|
|
519
539
|
validationVariant = _ref.validationVariant,
|
|
@@ -528,36 +548,27 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
528
548
|
maxDate = _ref.maxDate,
|
|
529
549
|
_ref$modalTreshold = _ref.modalTreshold,
|
|
530
550
|
modalTreshold = _ref$modalTreshold === void 0 ? 1000 : _ref$modalTreshold,
|
|
531
|
-
forcedReturnType = _ref.forcedReturnType,
|
|
532
551
|
ariaLabelForDate = _ref.ariaLabelForDate,
|
|
533
552
|
append = _ref.append,
|
|
534
553
|
prepend = _ref.prepend,
|
|
554
|
+
_ref$granularity = _ref.granularity,
|
|
555
|
+
granularity = _ref$granularity === void 0 ? showTime ? 'minute' : 'day' : _ref$granularity,
|
|
535
556
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
|
|
536
557
|
var CALENDAR_MODAL_MAX_SCREEN_WIDTH = modalTreshold;
|
|
537
558
|
var datePickerRef = React.useRef(null);
|
|
538
559
|
var calendarRef = React.useRef(null);
|
|
539
560
|
var _useWindowDimensions = utils.useWindowDimensions(),
|
|
540
561
|
width = _useWindowDimensions.width;
|
|
541
|
-
var
|
|
542
|
-
if (forcedReturnType !== undefined) {
|
|
543
|
-
return onChange(convertValueToType({
|
|
544
|
-
value: value,
|
|
545
|
-
type: forcedReturnType,
|
|
546
|
-
timezone: value !== null && 'timezone' in value ? value.timezone : undefined
|
|
547
|
-
}));
|
|
548
|
-
}
|
|
549
|
-
onChange(value);
|
|
550
|
-
};
|
|
551
|
-
var state = datepicker$1.useDatePickerState(_extends({}, rest, {
|
|
562
|
+
var _props = _extends({}, rest, {
|
|
552
563
|
minValue: minDate,
|
|
553
564
|
// this weird logic makes sure the entire day is included if no time is provided in maxDate
|
|
554
565
|
maxValue: 'hour' in (maxDate != null ? maxDate : {}) ? maxDate : maxDate !== undefined ? lastMillisecondOfDay(maxDate) : undefined,
|
|
555
566
|
value: selectedDate,
|
|
556
|
-
|
|
557
|
-
granularity: showTime ? 'minute' : rest.granularity,
|
|
567
|
+
granularity: granularity,
|
|
558
568
|
isDisabled: disabled
|
|
559
|
-
})
|
|
560
|
-
var
|
|
569
|
+
});
|
|
570
|
+
var state = datepicker$1.useDatePickerState(_props);
|
|
571
|
+
var _useDatePicker = datepicker.useDatePicker(_props, state, datePickerRef),
|
|
561
572
|
groupProps = _useDatePicker.groupProps,
|
|
562
573
|
labelProps = _useDatePicker.labelProps,
|
|
563
574
|
fieldProps = _useDatePicker.fieldProps,
|
|
@@ -586,13 +597,13 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
586
597
|
state.setOpen(false);
|
|
587
598
|
});
|
|
588
599
|
var calendarSharedProps = _extends({}, dialogProps, calendarProps, {
|
|
600
|
+
onChange: rest.onChange,
|
|
589
601
|
disabled: disabled,
|
|
590
602
|
navigationDescription: navigationDescription,
|
|
591
603
|
onSelectedCellClick: function onSelectedCellClick() {
|
|
592
604
|
return state.setOpen(false);
|
|
593
605
|
},
|
|
594
606
|
selectedDate: selectedDate,
|
|
595
|
-
onChange: handleOnChange,
|
|
596
607
|
minDate: minDate,
|
|
597
608
|
maxDate: maxDate,
|
|
598
609
|
calendarRef: calendarRef,
|
|
@@ -601,14 +612,14 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
601
612
|
showWeekNumbers: showWeekNumbers,
|
|
602
613
|
weekNumberHeader: weekNumberHeader
|
|
603
614
|
});
|
|
604
|
-
var
|
|
615
|
+
var isModal = typeof width !== 'undefined' && width <= CALENDAR_MODAL_MAX_SCREEN_WIDTH && !disableModal;
|
|
605
616
|
var popoverCalendar = React.createElement("div", {
|
|
606
617
|
style: _extends({}, floatingStyles, {
|
|
607
618
|
zIndex: tokens.zIndexes.popover
|
|
608
619
|
}),
|
|
609
620
|
ref: refs.setFloating
|
|
610
621
|
}, React.createElement(FocusLock, {
|
|
611
|
-
disabled: !state.isOpen ||
|
|
622
|
+
disabled: !state.isOpen || isModal,
|
|
612
623
|
returnFocus: true
|
|
613
624
|
}, state.isOpen && React.createElement(Calendar, _extends({}, calendarSharedProps))));
|
|
614
625
|
var modalCalendar = React.createElement(modal.Modal, {
|
|
@@ -627,7 +638,7 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
627
638
|
locale: locale
|
|
628
639
|
}, child);
|
|
629
640
|
}
|
|
630
|
-
}, React.createElement(DateField, {
|
|
641
|
+
}, React.createElement(DateField, _extends({}, groupProps, fieldProps, rest, {
|
|
631
642
|
append: !disabled && React.createElement("div", {
|
|
632
643
|
style: {
|
|
633
644
|
display: 'flex',
|
|
@@ -646,14 +657,10 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
646
657
|
}),
|
|
647
658
|
disabled: disabled,
|
|
648
659
|
feedback: feedback,
|
|
649
|
-
fieldProps: fieldProps,
|
|
650
|
-
groupProps: groupProps,
|
|
651
|
-
label: rest.label,
|
|
652
660
|
labelProps: labelProps,
|
|
653
661
|
labelTooltip: labelTooltip,
|
|
654
662
|
maxDate: maxDate,
|
|
655
663
|
minDate: minDate,
|
|
656
|
-
onChange: handleOnChange,
|
|
657
664
|
dateFieldRef: function dateFieldRef(node) {
|
|
658
665
|
refs.setReference(node);
|
|
659
666
|
datePickerRef.current = node;
|
|
@@ -661,11 +668,10 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
661
668
|
selectedDate: selectedDate,
|
|
662
669
|
showTime: showTime,
|
|
663
670
|
showTimeZone: showTimeZone,
|
|
664
|
-
style: style,
|
|
665
671
|
validationFeedback: validationFeedback,
|
|
666
672
|
validationVariant: validationVariant,
|
|
667
673
|
variant: variant
|
|
668
|
-
}),
|
|
674
|
+
})), isModal ? modalCalendar : popoverCalendar);
|
|
669
675
|
};
|
|
670
676
|
|
|
671
677
|
var _excluded$4 = ["className", "style", "label", "onChange", "feedback", "variant", "disableLabelAnimation", "prepend"],
|
|
@@ -794,10 +800,10 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
794
800
|
var timePickerId = utils.useRandomId('eds-timepicker');
|
|
795
801
|
var timeZone = forcedTimeZone != null ? forcedTimeZone : selectedTime !== null && 'timezone' in selectedTime ? selectedTime.timezone : 'Europe/Oslo';
|
|
796
802
|
var handleOnChange = function handleOnChange(value) {
|
|
797
|
-
if (forcedReturnType !== undefined) {
|
|
803
|
+
if (forcedReturnType !== undefined || !selectedTime) {
|
|
798
804
|
return onChange(convertValueToType({
|
|
799
805
|
value: value,
|
|
800
|
-
type: forcedReturnType,
|
|
806
|
+
type: forcedReturnType != null ? forcedReturnType : 'ZonedDateTime',
|
|
801
807
|
timezone: timeZone
|
|
802
808
|
}));
|
|
803
809
|
}
|
|
@@ -1201,6 +1207,7 @@ exports.convertValueToType = convertValueToType;
|
|
|
1201
1207
|
exports.createCalendar = createCalendar;
|
|
1202
1208
|
exports.focusSegment = focusSegment;
|
|
1203
1209
|
exports.getWeekNumberForDate = getWeekNumberForDate;
|
|
1210
|
+
exports.handleOnChange = handleOnChange;
|
|
1204
1211
|
exports.lastMillisecondOfDay = lastMillisecondOfDay;
|
|
1205
1212
|
exports.modulo = modulo;
|
|
1206
1213
|
exports.nativeDateToDateValue = nativeDateToDateValue;
|