@entur/datepicker 9.1.5 → 9.2.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/dist/DatePicker/Calendar.d.ts +17 -3
- package/dist/DatePicker/CalendarCell.d.ts +3 -1
- package/dist/DatePicker/CalendarGrid.d.ts +4 -1
- package/dist/DatePicker/DatePicker.d.ts +22 -15
- package/dist/TimePicker/TimePicker.d.ts +21 -3
- package/dist/TimePicker/TimePickerArrowButton.d.ts +6 -2
- package/dist/datepicker.cjs.development.js +151 -74
- 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 +151 -76
- package/dist/datepicker.esm.js.map +1 -1
- package/dist/shared/FieldSegment.d.ts +2 -1
- package/dist/shared/utils.d.ts +7 -4
- package/dist/styles.css +38 -52
- package/package.json +6 -6
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { DateValue } from '@internationalized/date';
|
|
2
|
+
import { CalendarDate, DateValue } from '@internationalized/date';
|
|
3
3
|
import './Calendar.scss';
|
|
4
|
-
type CalendarProps = {
|
|
4
|
+
export type CalendarProps = {
|
|
5
5
|
selectedDate: DateValue | null;
|
|
6
6
|
onChange: (SelectedDate: DateValue | null) => void;
|
|
7
7
|
navigationDescription?: string;
|
|
@@ -21,7 +21,21 @@ type CalendarProps = {
|
|
|
21
21
|
* Gyldig til og med den tiden som legges inn som maxDate.
|
|
22
22
|
* Dato uten tid vil være gyldig hele maxDate-dagen */
|
|
23
23
|
maxDate?: DateValue;
|
|
24
|
+
/** Brukes for å legge til klassenavn på spesifikke datoer i kalenderen.
|
|
25
|
+
* Tar inn en dato og skal returnere klassenavnet som skal legges til den datoen.
|
|
26
|
+
* @default undefined
|
|
27
|
+
* @example (date) => isWeekend(date, 'no-NO') ? 'weekend' : ''
|
|
28
|
+
*
|
|
29
|
+
* OBS: hvis stylingen er meningsbærende bør du bruke ariaLabelForDate i tillegg for å beskrive
|
|
30
|
+
* meningen til skjermlesere o.l.
|
|
31
|
+
*/
|
|
32
|
+
classNameForDate?: (date: CalendarDate) => string;
|
|
33
|
+
/** Legger til teksten som returneres på datoen i kalenderen sin aria-label.
|
|
34
|
+
* Bør brukes sammen med classNameForDate hvis styling-endringene gjort der er meningsbærende.
|
|
35
|
+
* @default undefined
|
|
36
|
+
* @example (date) => isWeekend(date, 'no-NO') ? 'helgedag' : ''
|
|
37
|
+
*/
|
|
38
|
+
ariaLabelForDate?: (date: CalendarDate) => string;
|
|
24
39
|
[key: string]: any;
|
|
25
40
|
};
|
|
26
41
|
export declare const Calendar: React.ForwardRefExoticComponent<Omit<CalendarProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
27
|
-
export {};
|
|
@@ -5,6 +5,8 @@ type CalendarCellProps = {
|
|
|
5
5
|
state: CalendarState;
|
|
6
6
|
date: CalendarDate;
|
|
7
7
|
onSelectedCellClick?: () => void;
|
|
8
|
+
classNameForDate?: (date: CalendarDate) => string;
|
|
9
|
+
ariaLabelForDate?: (date: CalendarDate) => string;
|
|
8
10
|
};
|
|
9
|
-
export declare const CalendarCell: ({ state, date, onSelectedCellClick, ...rest }: CalendarCellProps) => React.JSX.Element;
|
|
11
|
+
export declare const CalendarCell: ({ state, date, onSelectedCellClick, classNameForDate, ariaLabelForDate, ...rest }: CalendarCellProps) => React.JSX.Element;
|
|
10
12
|
export {};
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { CalendarState } from '@react-stately/calendar';
|
|
3
|
+
import { CalendarDate } from '@internationalized/date';
|
|
3
4
|
type CalendarGridProps = {
|
|
4
5
|
state: CalendarState;
|
|
5
6
|
navigationDescription?: string;
|
|
6
7
|
onSelectedCellClick?: () => void;
|
|
8
|
+
classNameForDate?: (date: CalendarDate) => string;
|
|
9
|
+
ariaLabelForDate?: (date: CalendarDate) => string;
|
|
7
10
|
};
|
|
8
|
-
export declare const CalendarGrid: ({ state, navigationDescription, onSelectedCellClick, ...rest }: CalendarGridProps) => React.JSX.Element;
|
|
11
|
+
export declare const CalendarGrid: ({ state, navigationDescription, onSelectedCellClick, classNameForDate, ariaLabelForDate, ...rest }: CalendarGridProps) => React.JSX.Element;
|
|
9
12
|
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import
|
|
2
|
+
import { CalendarDate, DateValue } from '@internationalized/date';
|
|
3
|
+
import type { AriaDatePickerProps, MappedDateValue } from '@react-types/datepicker';
|
|
3
4
|
import type { VariantType } from '@entur/form';
|
|
4
5
|
import './DatePicker.scss';
|
|
5
6
|
export type DatePickerProps<DateType extends DateValue> = {
|
|
@@ -66,25 +67,31 @@ export type DatePickerProps<DateType extends DateValue> = {
|
|
|
66
67
|
navigationDescription?: string;
|
|
67
68
|
/** Tvinger typen på onChange til den gitte typen.
|
|
68
69
|
* Dette er nyttig når utgangsverdien din er 'null', men du ønsker at
|
|
69
|
-
* DatePicker
|
|
70
|
+
* DatePicker alltid skal returnere f.eks ZonedDateTime.
|
|
70
71
|
*
|
|
71
|
-
*
|
|
72
|
+
* Som standard returnerer onChange DateValue basert på selectedDate,
|
|
73
|
+
* eller CalendarDate hvis selectedDate er 'null'.
|
|
72
74
|
*
|
|
73
|
-
*
|
|
74
|
-
* I utgangspunktet vil en DatePicker som initieres med 'null' som verdi og ikke viser tid returnere en CalendarDate.
|
|
75
|
-
* Dette er problematisk hvis du bruker datovelgeren sammen en TimePicker da
|
|
76
|
-
* denne ikke støtter dato uten tidspunkt (CalendarDate). Ved å da tvinge DatePicker til å returnere
|
|
77
|
-
* CalendarDateTime eller ZonedDateTime vil du kunne bruke den sammen med TimePicker.
|
|
78
|
-
*
|
|
79
|
-
* Hvorfor kan ikke dette gjøres automatisk?
|
|
80
|
-
* En DatePicker som initieres med 'null' som verdi gir ingen informasjon om hvilken type man ønsker å returnere.
|
|
81
|
-
* DatePicker støtter dog at du kan sende med en TypeScript-type, men TypeScript eksisterer ikke i runtime og
|
|
82
|
-
* kan derfor ikke brukes til å bestemme hvilken type som skal returneres. Det er derfor nødvendig å enten gi
|
|
83
|
-
* en initiell 'selectedDate' eller tvinge typen med denne prop-en.
|
|
75
|
+
* @default undefined
|
|
84
76
|
*/
|
|
85
77
|
forcedReturnType?: 'CalendarDate' | 'CalendarDateTime' | 'ZonedDateTime';
|
|
78
|
+
/** Brukes for å legge til klassenavn på spesifikke datoer i kalenderen.
|
|
79
|
+
* Tar inn en dato og skal returnere klassenavnet som skal legges til den datoen.
|
|
80
|
+
* @default undefined
|
|
81
|
+
* @example (date) => isWeekend(date, 'no-NO') ? 'weekend' : ''
|
|
82
|
+
*
|
|
83
|
+
* OBS: hvis stylingen er meningsbærende bør du bruke ariaLabelForDate i tillegg for å beskrive
|
|
84
|
+
* meningen til skjermlesere o.l.
|
|
85
|
+
*/
|
|
86
|
+
classNameForDate?: (date: CalendarDate) => string;
|
|
87
|
+
/** Legger til teksten som returneres på datoen i kalenderen sin aria-label.
|
|
88
|
+
* Bør brukes sammen med classNameForDate hvis styling-endringene gjort der er meningsbærende.
|
|
89
|
+
* @default undefined
|
|
90
|
+
* @example (date) => isWeekend(date, 'no-NO') ? 'helgedag' : ''
|
|
91
|
+
*/
|
|
92
|
+
ariaLabelForDate?: (date: CalendarDate) => string;
|
|
86
93
|
/** Ekstra klassenavn */
|
|
87
94
|
className?: string;
|
|
88
95
|
style?: React.CSSProperties;
|
|
89
96
|
} & Omit<AriaDatePickerProps<DateType>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'minValue' | 'maxValue'>;
|
|
90
|
-
export declare const DatePicker: <DateType extends DateValue>({ selectedDate, onChange, locale, disabled, showTime, showTimeZone, className, style, variant, feedback, validationVariant, validationFeedback, disableModal, labelTooltip, navigationDescription, minDate, maxDate, modalTreshold, forcedReturnType, ...rest }: DatePickerProps<DateType>) => React.JSX.Element;
|
|
97
|
+
export declare const DatePicker: <DateType extends DateValue>({ selectedDate, onChange, locale, disabled, showTime, showTimeZone, classNameForDate, className, style, variant, feedback, validationVariant, validationFeedback, disableModal, labelTooltip, navigationDescription, minDate, maxDate, modalTreshold, forcedReturnType, ariaLabelForDate, ...rest }: DatePickerProps<DateType>) => React.JSX.Element;
|
|
@@ -9,8 +9,11 @@ export type TimePickerProps<TimeType extends TimeValue> = {
|
|
|
9
9
|
onChange: (value: MappedTimeValue<TimeType> | null) => void;
|
|
10
10
|
/** Label til TimePicker */
|
|
11
11
|
label: string;
|
|
12
|
-
/** Minutter som legges til eller trekkes fra ved klikk på pilene i TimePicker
|
|
13
|
-
*
|
|
12
|
+
/** Minutter som legges til eller trekkes fra ved klikk på pilene i TimePicker.
|
|
13
|
+
* Rundes av til nærmeste hele 'minuteIncrement' som går opp i 60.
|
|
14
|
+
*
|
|
15
|
+
* OBS: Støtter kun verdier <= 60 og multiplum av 60.
|
|
16
|
+
* @default 30
|
|
14
17
|
*/
|
|
15
18
|
minuteIncrementForArrowButtons?: number;
|
|
16
19
|
/** BCP47-språkkoden til locale-en du ønsker å bruke.
|
|
@@ -21,6 +24,10 @@ export type TimePickerProps<TimeType extends TimeValue> = {
|
|
|
21
24
|
* @default false
|
|
22
25
|
*/
|
|
23
26
|
showTimeZone?: boolean;
|
|
27
|
+
/** Viser sekunder i tillegg til minutter og timer
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
30
|
+
showSeconds?: boolean;
|
|
24
31
|
/** Aria-label for venstrepil-knappen som trekker fra tid
|
|
25
32
|
* @default `Trekk fra ${minuteIncrementForArrowButtons} minutter`
|
|
26
33
|
*/
|
|
@@ -36,8 +43,19 @@ export type TimePickerProps<TimeType extends TimeValue> = {
|
|
|
36
43
|
labelTooltip?: React.ReactNode;
|
|
37
44
|
disabled?: boolean;
|
|
38
45
|
inputRef?: React.ForwardedRef<HTMLDivElement>;
|
|
46
|
+
/** Tvinger typen på onChange til den gitte typen.
|
|
47
|
+
* Dette er nyttig når utgangsverdien din er 'null', men du ønsker at
|
|
48
|
+
* TimePicker alltid skal returnere f.eks Time.
|
|
49
|
+
*
|
|
50
|
+
* Som standard returnerer onChange TimeValue basert på selectedTime,
|
|
51
|
+
* eller ZonedDateTime hvis selectedTime er 'null'.
|
|
52
|
+
*
|
|
53
|
+
* @default undefined
|
|
54
|
+
*/
|
|
55
|
+
forcedReturnType?: 'Time' | 'CalendarDateTime' | 'ZonedDateTime';
|
|
56
|
+
forcedTimeZone?: string;
|
|
39
57
|
/** Ekstra klassenavn */
|
|
40
58
|
className?: string;
|
|
41
59
|
style?: React.CSSProperties;
|
|
42
60
|
} & Omit<AriaTimeFieldProps<TimeType>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'minValue' | 'maxValue'>;
|
|
43
|
-
export declare const TimePicker: <TimeType extends TimeValue>({ selectedTime, onChange, disabled, className, style, label, labelTooltip, feedback, variant, locale: customLocale, showTimeZone, minuteIncrementForArrowButtons, leftArrowButtonAriaLabel, rightArrowButtonAriaLabel, inputRef, ...rest }: TimePickerProps<TimeType>) => React.JSX.Element;
|
|
61
|
+
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, ...rest }: TimePickerProps<TimeType>) => React.JSX.Element;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
type TimePickerArrowButtonProps = {
|
|
3
3
|
direction: 'left' | 'right';
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
'aria-label': string;
|
|
6
|
+
onClick?: () => void;
|
|
7
|
+
onFocus?: () => void;
|
|
8
|
+
};
|
|
9
|
+
export declare const TimePickerArrowButton: ({ direction, onClick, disabled, "aria-label": ariaLabel, ...rest }: TimePickerArrowButtonProps) => React.JSX.Element;
|
|
6
10
|
export {};
|
|
@@ -48,9 +48,11 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
48
48
|
return target;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
+
var _excluded$b = ["segment", "state"];
|
|
51
52
|
var FieldSegment = function FieldSegment(_ref) {
|
|
52
53
|
var segment = _ref.segment,
|
|
53
|
-
state = _ref.state
|
|
54
|
+
state = _ref.state,
|
|
55
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$b);
|
|
54
56
|
var ref = React.useRef(null);
|
|
55
57
|
var _useDateSegment = datepicker.useDateSegment(segment, state, ref),
|
|
56
58
|
segmentProps = _useDateSegment.segmentProps;
|
|
@@ -61,7 +63,7 @@ var FieldSegment = function FieldSegment(_ref) {
|
|
|
61
63
|
'eds-date-and-time-field__segment--dot-separator': segment.text === '.'
|
|
62
64
|
}),
|
|
63
65
|
tabIndex: state.isDisabled ? -1 : segmentProps.tabIndex
|
|
64
|
-
}), segment.text);
|
|
66
|
+
}, rest), segment.text);
|
|
65
67
|
};
|
|
66
68
|
|
|
67
69
|
var nativeDateToDateTime = function nativeDateToDateTime(date$1, timeZone, offset) {
|
|
@@ -157,21 +159,46 @@ var lastMillisecondOfDay = function lastMillisecondOfDay(dateValue) {
|
|
|
157
159
|
};
|
|
158
160
|
var convertValueToType = function convertValueToType(_ref) {
|
|
159
161
|
var value = _ref.value,
|
|
160
|
-
type = _ref.type
|
|
162
|
+
type = _ref.type,
|
|
163
|
+
_ref$timezone = _ref.timezone,
|
|
164
|
+
timezone = _ref$timezone === void 0 ? 'Europe/Oslo' : _ref$timezone;
|
|
161
165
|
if (value === null) return null;
|
|
162
166
|
switch (type) {
|
|
163
167
|
case 'CalendarDate':
|
|
168
|
+
if (!('day' in value)) return date.today(timezone);
|
|
164
169
|
return date.toCalendarDate(value);
|
|
165
170
|
case 'CalendarDateTime':
|
|
171
|
+
if (!('day' in value)) return date.toCalendarDateTime(date.today(timezone), value);
|
|
166
172
|
return date.toCalendarDateTime(value);
|
|
167
173
|
case 'ZonedDateTime':
|
|
168
|
-
return date.toZoned(value,
|
|
174
|
+
if (!('day' in value)) return date.toZoned(date.toCalendarDateTime(date.today(timezone), value), timezone);
|
|
175
|
+
return date.toZoned(value, timezone);
|
|
176
|
+
case 'Time':
|
|
177
|
+
if (!('hour' in value)) return date.toTime(date.now(timezone));
|
|
178
|
+
if (!('day' in value)) return value;
|
|
179
|
+
return date.toTime(value);
|
|
169
180
|
default:
|
|
170
181
|
return value;
|
|
171
182
|
}
|
|
172
183
|
};
|
|
184
|
+
var modulo = function modulo(a, b) {
|
|
185
|
+
return (a % b + b) % b;
|
|
186
|
+
};
|
|
187
|
+
var focusSegment = function focusSegment(ref, segment) {
|
|
188
|
+
if (ref.current) {
|
|
189
|
+
var segments = ref.current.querySelectorAll('.eds-date-and-time-field__segment');
|
|
190
|
+
var firstSegment = segments[0];
|
|
191
|
+
var lastSegment = segments[segments.length - 1];
|
|
192
|
+
switch (segment) {
|
|
193
|
+
case 'first':
|
|
194
|
+
return firstSegment.focus();
|
|
195
|
+
case 'last':
|
|
196
|
+
return lastSegment.focus();
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
};
|
|
173
200
|
|
|
174
|
-
var _excluded$
|
|
201
|
+
var _excluded$a = ["selectedDate", "onChange", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "isDisabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "style", "className", "labelProps", "append"];
|
|
175
202
|
var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
176
203
|
var selectedDate = _ref.selectedDate,
|
|
177
204
|
onChange = _ref.onChange,
|
|
@@ -196,7 +223,7 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
196
223
|
className = _ref.className,
|
|
197
224
|
parentLabelProps = _ref.labelProps,
|
|
198
225
|
append = _ref.append,
|
|
199
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
226
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
|
|
200
227
|
var _useLocale = i18n.useLocale(),
|
|
201
228
|
locale = _useLocale.locale;
|
|
202
229
|
var state = datepicker$1.useDateFieldState(_extends({}, rest, {
|
|
@@ -237,8 +264,8 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
237
264
|
labelTooltip: labelTooltip,
|
|
238
265
|
labelProps: parentLabelProps != null ? parentLabelProps : labelProps
|
|
239
266
|
}, fieldProps, {
|
|
240
|
-
variant:
|
|
241
|
-
feedback:
|
|
267
|
+
variant: variant != null ? variant : state.validationState === 'invalid' ? validationVariant : undefined,
|
|
268
|
+
feedback: feedback != null ? feedback : state.validationState === 'invalid' ? validationFeedback : undefined,
|
|
242
269
|
append: append,
|
|
243
270
|
ariaAlertOnFeedback: true
|
|
244
271
|
}), state.segments.map(function (segment, i) {
|
|
@@ -250,12 +277,12 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
250
277
|
})));
|
|
251
278
|
});
|
|
252
279
|
|
|
253
|
-
var _excluded$
|
|
280
|
+
var _excluded$9 = ["children", "className", "style"];
|
|
254
281
|
var CalendarButton = function CalendarButton(_ref) {
|
|
255
282
|
var children = _ref.children,
|
|
256
283
|
className = _ref.className,
|
|
257
284
|
style = _ref.style,
|
|
258
|
-
props = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
285
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$9);
|
|
259
286
|
var ref = React.useRef(null);
|
|
260
287
|
var _useButton = button.useButton(props, ref),
|
|
261
288
|
buttonProps = _useButton.buttonProps;
|
|
@@ -266,16 +293,18 @@ var CalendarButton = function CalendarButton(_ref) {
|
|
|
266
293
|
}), children);
|
|
267
294
|
};
|
|
268
295
|
|
|
269
|
-
var _excluded$
|
|
296
|
+
var _excluded$8 = ["state", "date", "onSelectedCellClick", "classNameForDate", "ariaLabelForDate"];
|
|
270
297
|
var CalendarCell = function CalendarCell(_ref) {
|
|
271
|
-
var _state$timeZone;
|
|
298
|
+
var _ariaLabelForDate, _classNameForDate, _state$timeZone;
|
|
272
299
|
var state = _ref.state,
|
|
273
300
|
date$1 = _ref.date,
|
|
274
301
|
_ref$onSelectedCellCl = _ref.onSelectedCellClick,
|
|
275
302
|
onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
|
|
276
303
|
return;
|
|
277
304
|
} : _ref$onSelectedCellCl,
|
|
278
|
-
|
|
305
|
+
classNameForDate = _ref.classNameForDate,
|
|
306
|
+
ariaLabelForDate = _ref.ariaLabelForDate,
|
|
307
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
|
|
279
308
|
var cellRef = React.useRef(null);
|
|
280
309
|
var _useCalendarCell = calendar.useCalendarCell({
|
|
281
310
|
date: date$1
|
|
@@ -287,12 +316,14 @@ var CalendarCell = function CalendarCell(_ref) {
|
|
|
287
316
|
isDisabled = _useCalendarCell.isDisabled,
|
|
288
317
|
isUnavailable = _useCalendarCell.isUnavailable,
|
|
289
318
|
formattedDate = _useCalendarCell.formattedDate;
|
|
319
|
+
var ariaLabel = buttonProps['aria-label'] + " " + ((_ariaLabelForDate = ariaLabelForDate == null ? void 0 : ariaLabelForDate(date$1)) != null ? _ariaLabelForDate : '');
|
|
290
320
|
return React.createElement("td", _extends({}, cellProps, {
|
|
291
321
|
className: "eds-datepicker__calendar__grid__cell__td"
|
|
292
322
|
}), React.createElement("div", _extends({}, buttonProps, {
|
|
323
|
+
"aria-label": ariaLabel,
|
|
293
324
|
ref: cellRef,
|
|
294
325
|
hidden: isOutsideVisibleRange,
|
|
295
|
-
className: classNames('eds-datepicker__calendar__grid__cell', {
|
|
326
|
+
className: classNames('eds-datepicker__calendar__grid__cell', [(_classNameForDate = classNameForDate == null ? void 0 : classNameForDate(date$1)) != null ? _classNameForDate : ''], {
|
|
296
327
|
'eds-datepicker__calendar__grid__cell--selected': isSelected,
|
|
297
328
|
'eds-datepicker__calendar__grid__cell--disabled': isDisabled || isUnavailable,
|
|
298
329
|
'eds-datepicker__calendar__grid__cell--outside-month': isOutsideVisibleRange,
|
|
@@ -310,7 +341,7 @@ var CalendarCell = function CalendarCell(_ref) {
|
|
|
310
341
|
}), formattedDate));
|
|
311
342
|
};
|
|
312
343
|
|
|
313
|
-
var _excluded$
|
|
344
|
+
var _excluded$7 = ["state", "navigationDescription", "onSelectedCellClick", "classNameForDate", "ariaLabelForDate"];
|
|
314
345
|
var CalendarGrid = function CalendarGrid(_ref) {
|
|
315
346
|
var state = _ref.state,
|
|
316
347
|
navigationDescription = _ref.navigationDescription,
|
|
@@ -318,7 +349,9 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
318
349
|
onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
|
|
319
350
|
return;
|
|
320
351
|
} : _ref$onSelectedCellCl,
|
|
321
|
-
|
|
352
|
+
classNameForDate = _ref.classNameForDate,
|
|
353
|
+
ariaLabelForDate = _ref.ariaLabelForDate,
|
|
354
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
|
|
322
355
|
var calendarGridId = utils.useRandomId('eds-calendar');
|
|
323
356
|
var _useLocale = i18n.useLocale(),
|
|
324
357
|
locale = _useLocale.locale;
|
|
@@ -359,7 +392,9 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
359
392
|
state: state,
|
|
360
393
|
date: date,
|
|
361
394
|
"aria-describedby": calendarGridId + 'description',
|
|
362
|
-
onSelectedCellClick: onSelectedCellClick
|
|
395
|
+
onSelectedCellClick: onSelectedCellClick,
|
|
396
|
+
classNameForDate: classNameForDate,
|
|
397
|
+
ariaLabelForDate: ariaLabelForDate
|
|
363
398
|
}) : React.createElement("td", {
|
|
364
399
|
key: i
|
|
365
400
|
});
|
|
@@ -369,7 +404,7 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
369
404
|
}, getNavigationDescription()));
|
|
370
405
|
};
|
|
371
406
|
|
|
372
|
-
var _excluded$
|
|
407
|
+
var _excluded$6 = ["selectedDate", "onChange", "locale", "minDate", "maxDate", "style", "children", "navigationDescription", "onSelectedCellClick", "classNameForDate", "ariaLabelForDate"];
|
|
373
408
|
var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
374
409
|
var selectedDate = _ref.selectedDate,
|
|
375
410
|
onChange = _ref.onChange,
|
|
@@ -382,7 +417,9 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
382
417
|
onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
|
|
383
418
|
return;
|
|
384
419
|
} : _ref$onSelectedCellCl,
|
|
385
|
-
|
|
420
|
+
classNameForDate = _ref.classNameForDate,
|
|
421
|
+
ariaLabelForDate = _ref.ariaLabelForDate,
|
|
422
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
|
|
386
423
|
var _useLocale = i18n.useLocale(),
|
|
387
424
|
locale = _useLocale.locale;
|
|
388
425
|
var allProps = _extends({}, rest, {
|
|
@@ -423,11 +460,13 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
423
460
|
}))), React.createElement(CalendarGrid, {
|
|
424
461
|
state: state,
|
|
425
462
|
navigationDescription: navigationDescription,
|
|
426
|
-
onSelectedCellClick: onSelectedCellClick
|
|
463
|
+
onSelectedCellClick: onSelectedCellClick,
|
|
464
|
+
classNameForDate: classNameForDate,
|
|
465
|
+
ariaLabelForDate: ariaLabelForDate
|
|
427
466
|
})));
|
|
428
467
|
});
|
|
429
468
|
|
|
430
|
-
var _excluded$
|
|
469
|
+
var _excluded$5 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "classNameForDate", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold", "forcedReturnType", "ariaLabelForDate"];
|
|
431
470
|
var DatePicker = function DatePicker(_ref) {
|
|
432
471
|
var selectedDate = _ref.selectedDate,
|
|
433
472
|
onChange = _ref.onChange,
|
|
@@ -436,6 +475,7 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
436
475
|
showTime = _ref.showTime,
|
|
437
476
|
_ref$showTimeZone = _ref.showTimeZone,
|
|
438
477
|
showTimeZone = _ref$showTimeZone === void 0 ? false : _ref$showTimeZone,
|
|
478
|
+
classNameForDate = _ref.classNameForDate,
|
|
439
479
|
className = _ref.className,
|
|
440
480
|
variant = _ref.variant,
|
|
441
481
|
feedback = _ref.feedback,
|
|
@@ -450,7 +490,8 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
450
490
|
_ref$modalTreshold = _ref.modalTreshold,
|
|
451
491
|
modalTreshold = _ref$modalTreshold === void 0 ? 1000 : _ref$modalTreshold,
|
|
452
492
|
forcedReturnType = _ref.forcedReturnType,
|
|
453
|
-
|
|
493
|
+
ariaLabelForDate = _ref.ariaLabelForDate,
|
|
494
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
|
|
454
495
|
var CALENDAR_MODAL_MAX_SCREEN_WIDTH = modalTreshold;
|
|
455
496
|
var datePickerRef = React.useRef(null);
|
|
456
497
|
var calendarRef = React.useRef(null);
|
|
@@ -461,7 +502,8 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
461
502
|
if (forcedReturnType !== undefined) {
|
|
462
503
|
return onChange(convertValueToType({
|
|
463
504
|
value: value,
|
|
464
|
-
type: forcedReturnType
|
|
505
|
+
type: forcedReturnType,
|
|
506
|
+
timezone: value !== null && 'timezone' in value ? value.timezone : undefined
|
|
465
507
|
}));
|
|
466
508
|
}
|
|
467
509
|
onChange(value);
|
|
@@ -511,7 +553,9 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
511
553
|
onChange: handleOnChange,
|
|
512
554
|
minDate: minDate,
|
|
513
555
|
maxDate: maxDate,
|
|
514
|
-
ref: calendarRef
|
|
556
|
+
ref: calendarRef,
|
|
557
|
+
classNameForDate: classNameForDate,
|
|
558
|
+
ariaLabelForDate: ariaLabelForDate
|
|
515
559
|
});
|
|
516
560
|
var useModal = typeof width !== 'undefined' && width <= CALENDAR_MODAL_MAX_SCREEN_WIDTH && !disableModal;
|
|
517
561
|
var popoverCalendar = React.createElement("div", {
|
|
@@ -581,7 +625,7 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
581
625
|
}), React.createElement(icons.CalendarIcon, null)), useModal ? modalCalendar : popoverCalendar)));
|
|
582
626
|
};
|
|
583
627
|
|
|
584
|
-
var _excluded$
|
|
628
|
+
var _excluded$4 = ["className", "style", "label", "onChange", "feedback", "variant", "disableLabelAnimation", "prepend"],
|
|
585
629
|
_excluded2$2 = ["onChange", "variant", "value"];
|
|
586
630
|
var NativeDatePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
587
631
|
var className = _ref.className,
|
|
@@ -595,7 +639,7 @@ var NativeDatePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
595
639
|
prepend = _ref$prepend === void 0 ? React.createElement(icons.DateIcon, {
|
|
596
640
|
inline: true
|
|
597
641
|
}) : _ref$prepend,
|
|
598
|
-
rest = _objectWithoutPropertiesLoose(_ref, _excluded$
|
|
642
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
599
643
|
var nativedatepickerId = utils.useRandomId('eds-nativetimepicker');
|
|
600
644
|
return React.createElement(form.BaseFormControl, {
|
|
601
645
|
style: style,
|
|
@@ -654,12 +698,14 @@ var NativeDatePickerBase = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
|
|
|
654
698
|
}, rest));
|
|
655
699
|
});
|
|
656
700
|
|
|
701
|
+
var _excluded$3 = ["direction", "onClick", "disabled", "aria-label"];
|
|
657
702
|
var TimePickerArrowButton = function TimePickerArrowButton(_ref) {
|
|
658
703
|
var direction = _ref.direction,
|
|
659
704
|
onClick = _ref.onClick,
|
|
660
705
|
disabled = _ref.disabled,
|
|
661
|
-
ariaLabel = _ref['aria-label']
|
|
662
|
-
|
|
706
|
+
ariaLabel = _ref['aria-label'],
|
|
707
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
708
|
+
return React.createElement(button$1.IconButton, _extends({
|
|
663
709
|
className: classNames('eds-timepicker__arrowbutton', "eds-timepicker__arrowbutton--" + direction, {
|
|
664
710
|
'eds-timepicker__arrowbutton--disabled': disabled
|
|
665
711
|
}),
|
|
@@ -668,10 +714,10 @@ var TimePickerArrowButton = function TimePickerArrowButton(_ref) {
|
|
|
668
714
|
onClick: onClick,
|
|
669
715
|
"aria-label": ariaLabel,
|
|
670
716
|
disabled: disabled
|
|
671
|
-
}, direction === 'left' ? React.createElement(icons.LeftArrowIcon, null) : React.createElement(icons.RightArrowIcon, null));
|
|
717
|
+
}, rest), direction === 'left' ? React.createElement(icons.LeftArrowIcon, null) : React.createElement(icons.RightArrowIcon, null));
|
|
672
718
|
};
|
|
673
719
|
|
|
674
|
-
var _excluded$2 = ["selectedTime", "onChange", "disabled", "className", "style", "label", "labelTooltip", "feedback", "variant", "locale", "showTimeZone", "minuteIncrementForArrowButtons", "leftArrowButtonAriaLabel", "rightArrowButtonAriaLabel", "inputRef"];
|
|
720
|
+
var _excluded$2 = ["selectedTime", "onChange", "disabled", "className", "style", "label", "labelTooltip", "feedback", "granularity", "variant", "locale", "showTimeZone", "showSeconds", "minuteIncrementForArrowButtons", "leftArrowButtonAriaLabel", "rightArrowButtonAriaLabel", "inputRef", "forcedReturnType", "forcedTimeZone"];
|
|
675
721
|
var TimePicker = function TimePicker(_ref) {
|
|
676
722
|
var selectedTime = _ref.selectedTime,
|
|
677
723
|
onChange = _ref.onChange,
|
|
@@ -681,9 +727,12 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
681
727
|
label = _ref.label,
|
|
682
728
|
labelTooltip = _ref.labelTooltip,
|
|
683
729
|
feedback = _ref.feedback,
|
|
730
|
+
granularity = _ref.granularity,
|
|
684
731
|
variant = _ref.variant,
|
|
685
732
|
customLocale = _ref.locale,
|
|
686
733
|
showTimeZone = _ref.showTimeZone,
|
|
734
|
+
_ref$showSeconds = _ref.showSeconds,
|
|
735
|
+
showSeconds = _ref$showSeconds === void 0 ? false : _ref$showSeconds,
|
|
687
736
|
_ref$minuteIncrementF = _ref.minuteIncrementForArrowButtons,
|
|
688
737
|
minuteIncrementForArrowButtons = _ref$minuteIncrementF === void 0 ? 30 : _ref$minuteIncrementF,
|
|
689
738
|
_ref$leftArrowButtonA = _ref.leftArrowButtonAriaLabel,
|
|
@@ -691,15 +740,30 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
691
740
|
_ref$rightArrowButton = _ref.rightArrowButtonAriaLabel,
|
|
692
741
|
rightArrowButtonAriaLabel = _ref$rightArrowButton === void 0 ? "Legg til " + minuteIncrementForArrowButtons + " minutter" : _ref$rightArrowButton,
|
|
693
742
|
inputRef = _ref.inputRef,
|
|
743
|
+
forcedReturnType = _ref.forcedReturnType,
|
|
744
|
+
forcedTimeZone = _ref.forcedTimeZone,
|
|
694
745
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
695
746
|
var _useLocale = i18n.useLocale(),
|
|
696
747
|
locale = _useLocale.locale;
|
|
697
748
|
if (customLocale) locale = customLocale;
|
|
749
|
+
var timePickerId = utils.useRandomId('eds-timepicker');
|
|
750
|
+
var timeZone = forcedTimeZone != null ? forcedTimeZone : selectedTime !== null && 'timezone' in selectedTime ? selectedTime.timezone : 'Europe/Oslo';
|
|
751
|
+
var handleOnChange = function handleOnChange(value) {
|
|
752
|
+
if (forcedReturnType !== undefined) {
|
|
753
|
+
return onChange(convertValueToType({
|
|
754
|
+
value: value,
|
|
755
|
+
type: forcedReturnType,
|
|
756
|
+
timezone: timeZone
|
|
757
|
+
}));
|
|
758
|
+
}
|
|
759
|
+
onChange(value);
|
|
760
|
+
};
|
|
698
761
|
var state = datepicker$1.useTimeFieldState(_extends({
|
|
699
|
-
onChange:
|
|
762
|
+
onChange: handleOnChange,
|
|
700
763
|
label: label,
|
|
701
764
|
locale: locale,
|
|
702
765
|
value: selectedTime,
|
|
766
|
+
granularity: (granularity != null ? granularity : showSeconds) ? 'second' : 'minute',
|
|
703
767
|
hideTimeZone: !showTimeZone,
|
|
704
768
|
isDisabled: disabled,
|
|
705
769
|
shouldForceLeadingZeros: true
|
|
@@ -711,70 +775,81 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
711
775
|
labelProps = _useTimeField.labelProps,
|
|
712
776
|
fieldProps = _useTimeField.fieldProps;
|
|
713
777
|
var id = utils.useRandomId('timepicker');
|
|
714
|
-
var
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
addMinutesToSelectedTime(minutes);
|
|
719
|
-
}
|
|
720
|
-
};
|
|
721
|
-
var someSegmentIsUndefined = state.segments.some(function (segment) {
|
|
722
|
-
return segment.text === '––';
|
|
723
|
-
});
|
|
724
|
-
var setTimeToNearestMinuteIncrement = function setTimeToNearestMinuteIncrement() {
|
|
725
|
-
var currentTime = date.now(date.getLocalTimeZone());
|
|
726
|
-
var roundedMinute = Math.floor(currentTime.minute / minuteIncrementForArrowButtons) * minuteIncrementForArrowButtons;
|
|
727
|
-
var newTime = currentTime.set({
|
|
728
|
-
minute: roundedMinute
|
|
778
|
+
var getCurrentTime = function getCurrentTime() {
|
|
779
|
+
var getCurrentTimeWithCorrectType = convertValueToType({
|
|
780
|
+
value: date.now(timeZone),
|
|
781
|
+
type: forcedReturnType != null ? forcedReturnType : 'ZonedDateTime'
|
|
729
782
|
});
|
|
730
|
-
|
|
731
|
-
// we can't guarantee newTime matching the type of selectedTime in the future.
|
|
732
|
-
// This might lead to a type issue.
|
|
733
|
-
onChange(newTime);
|
|
783
|
+
return getCurrentTimeWithCorrectType;
|
|
734
784
|
};
|
|
735
|
-
var
|
|
736
|
-
selectedTime
|
|
737
|
-
|
|
738
|
-
|
|
785
|
+
var handleOnClickArrowButton = function handleOnClickArrowButton(operation) {
|
|
786
|
+
if (selectedTime === null) return handleOnChange(getCurrentTime());
|
|
787
|
+
switch (operation) {
|
|
788
|
+
case 'add':
|
|
789
|
+
return handleOnChange(selectedTime.add({
|
|
790
|
+
minutes: minuteIncrementForArrowButtons - modulo(selectedTime.minute, minuteIncrementForArrowButtons)
|
|
791
|
+
}));
|
|
792
|
+
case 'subtract':
|
|
793
|
+
return handleOnChange(selectedTime.subtract({
|
|
794
|
+
minutes: modulo(selectedTime.minute - 1, minuteIncrementForArrowButtons) + 1
|
|
795
|
+
}));
|
|
796
|
+
}
|
|
739
797
|
};
|
|
740
798
|
return React.createElement(i18n.I18nProvider, {
|
|
741
799
|
locale: locale
|
|
742
800
|
}, React.createElement("div", {
|
|
743
801
|
className: classNames(className, 'eds-timepicker__wrapper')
|
|
744
|
-
}, React.createElement(
|
|
745
|
-
direction: "left",
|
|
746
|
-
disabled: disabled,
|
|
747
|
-
"aria-label": leftArrowButtonAriaLabel,
|
|
748
|
-
onClick: function onClick() {
|
|
749
|
-
return handleOnClickArrowButton(minuteIncrementForArrowButtons * -1);
|
|
750
|
-
}
|
|
751
|
-
}), React.createElement(form.BaseFormControl, _extends({
|
|
802
|
+
}, React.createElement(form.BaseFormControl, _extends({
|
|
752
803
|
style: style,
|
|
753
|
-
className: 'eds-timepicker',
|
|
804
|
+
className: classNames('eds-timepicker', {
|
|
805
|
+
'eds-timepicker--disabled': disabled
|
|
806
|
+
}),
|
|
754
807
|
labelId: id,
|
|
755
808
|
label: label,
|
|
756
|
-
labelProps: _extends({}, labelProps
|
|
809
|
+
labelProps: _extends({}, labelProps, {
|
|
810
|
+
'aria-describedby': timePickerId + 'description'
|
|
811
|
+
}),
|
|
757
812
|
ref: utils.mergeRefs(timeFieldRef, inputRef),
|
|
758
813
|
disabled: disabled,
|
|
759
814
|
disableLabelAnimation: true,
|
|
760
815
|
labelTooltip: labelTooltip
|
|
761
816
|
}, fieldProps, {
|
|
762
817
|
variant: variant,
|
|
763
|
-
feedback: feedback
|
|
818
|
+
feedback: feedback,
|
|
819
|
+
ariaAlertOnFeedback: true,
|
|
820
|
+
"aria-describedby": timePickerId + 'description',
|
|
821
|
+
prepend: React.createElement(TimePickerArrowButton, {
|
|
822
|
+
direction: "left",
|
|
823
|
+
disabled: disabled,
|
|
824
|
+
"aria-label": leftArrowButtonAriaLabel,
|
|
825
|
+
onClick: function onClick() {
|
|
826
|
+
return handleOnClickArrowButton('subtract');
|
|
827
|
+
},
|
|
828
|
+
onFocus: function onFocus() {
|
|
829
|
+
return focusSegment(timeFieldRef, 'first');
|
|
830
|
+
}
|
|
831
|
+
}),
|
|
832
|
+
append: React.createElement(TimePickerArrowButton, {
|
|
833
|
+
direction: "right",
|
|
834
|
+
disabled: disabled,
|
|
835
|
+
"aria-label": rightArrowButtonAriaLabel,
|
|
836
|
+
onClick: function onClick() {
|
|
837
|
+
return handleOnClickArrowButton('add');
|
|
838
|
+
},
|
|
839
|
+
onFocus: function onFocus() {
|
|
840
|
+
return focusSegment(timeFieldRef, 'last');
|
|
841
|
+
}
|
|
842
|
+
})
|
|
764
843
|
}), state.segments.map(function (segment, i) {
|
|
765
844
|
return React.createElement(FieldSegment, {
|
|
766
845
|
segment: segment,
|
|
767
846
|
state: state,
|
|
768
|
-
key: i
|
|
847
|
+
key: i,
|
|
848
|
+
"aria-describedby": timePickerId + 'description'
|
|
769
849
|
});
|
|
770
|
-
})), React.createElement(
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
"aria-label": rightArrowButtonAriaLabel,
|
|
774
|
-
onClick: function onClick() {
|
|
775
|
-
return handleOnClickArrowButton(minuteIncrementForArrowButtons);
|
|
776
|
-
}
|
|
777
|
-
})));
|
|
850
|
+
})), React.createElement(a11y.VisuallyHidden, {
|
|
851
|
+
id: timePickerId + 'description'
|
|
852
|
+
}, selectedTime !== null ? 'valgt tid: ' + selectedTime.hour.toString().padStart(2, '0') + ':' + selectedTime.minute.toString().padStart(2, '0') + (showSeconds ? ':' + selectedTime.second.toString().padStart(2, '0') : '') : '')));
|
|
778
853
|
};
|
|
779
854
|
|
|
780
855
|
var _excluded$1 = ["className", "style", "onChange", "label", "feedback", "variant", "prepend"],
|
|
@@ -1063,7 +1138,9 @@ exports.TimePicker = TimePicker;
|
|
|
1063
1138
|
exports.ariaLabelIfNorwegian = ariaLabelIfNorwegian;
|
|
1064
1139
|
exports.convertValueToType = convertValueToType;
|
|
1065
1140
|
exports.createCalendar = createCalendar;
|
|
1141
|
+
exports.focusSegment = focusSegment;
|
|
1066
1142
|
exports.lastMillisecondOfDay = lastMillisecondOfDay;
|
|
1143
|
+
exports.modulo = modulo;
|
|
1067
1144
|
exports.nativeDateToDateValue = nativeDateToDateValue;
|
|
1068
1145
|
exports.nativeDateToTimeValue = nativeDateToTimeValue;
|
|
1069
1146
|
exports.timeOrDateValueToNativeDate = timeOrDateValueToNativeDate;
|