@entur/datepicker 11.2.1-beta.3 → 11.2.1-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,759 +1,780 @@
1
- import { useRandomId, ConditionalWrapper, mergeRefs, useWindowDimensions, useOnClickOutside, useOnEscape, useOnMount, warnAboutMissingStyles } from "@entur/utils";
2
- import { jsx, jsxs, Fragment } from "react/jsx-runtime";
3
- import React, { useRef, useEffect, useState } from "react";
4
- import { useDateFieldState, useDatePickerState, useTimeFieldState } from "@react-stately/datepicker";
5
- import { useDateSegment, useDateField, useDatePicker, useTimeField } from "@react-aria/datepicker";
6
- import { useLocale, I18nProvider } from "@react-aria/i18n";
7
- import classNames from "classnames";
8
- import { BaseFormControl, useVariant, useInputGroupContext, isFilled, TextField } from "@entur/form";
9
- import { toCalendarDateTime, CalendarDate, Time, getLocalTimeZone, GregorianCalendar, toTime, now, toZoned, today, toCalendarDate, startOfWeek, startOfYear, ZonedDateTime, parseAbsolute, CalendarDateTime, isEqualDay, getWeeksInMonth, parseTime } from "@internationalized/date";
10
- import { CalendarDate as CalendarDate2, CalendarDateTime as CalendarDateTime2, Time as Time2, ZonedDateTime as ZonedDateTime2 } from "@internationalized/date";
11
- import { useCalendarCell, useCalendarGrid, useCalendar } from "@react-aria/calendar";
12
- import { useCalendarState } from "@react-stately/calendar";
13
- import { LeftArrowIcon, RightArrowIcon, CalendarIcon, DateIcon, ClockIcon } from "@entur/icons";
14
- import { useButton } from "@react-aria/button";
15
- import { IconButton } from "@entur/button";
16
- import { VisuallyHidden } from "@entur/a11y";
17
- import { useFloating, offset, flip, shift, autoUpdate } from "@floating-ui/react-dom";
18
- import FocusLock from "react-focus-lock";
19
- import { space, zIndexes } from "@entur/tokens";
20
- import { Modal } from "@entur/modal";
21
- const FieldSegment = ({ segment, state, ...rest }) => {
22
- const ref = useRef(null);
23
- const { segmentProps } = useDateSegment(segment, state, ref);
24
- return /* @__PURE__ */ jsx(
25
- "div",
26
- {
27
- ...segmentProps,
28
- ref,
29
- className: classNames("eds-date-and-time-field__segment", {
30
- "eds-date-and-time-field__segment--placeholder": segment.isPlaceholder,
31
- "eds-date-and-time-field__segment--dot-separator": segment.text === "." || segment.text === ":"
32
- }),
33
- tabIndex: state.isDisabled ? -1 : segmentProps.tabIndex,
34
- ...rest,
35
- children: segment.text
1
+ import { useRandomId, ConditionalWrapper, mergeRefs, useWindowDimensions, useOnClickOutside, useOnEscape, useOnMount, warnAboutMissingStyles } from '@entur/utils';
2
+ import React, { useRef, useEffect, useState } from 'react';
3
+ import { useDateFieldState, useDatePickerState, useTimeFieldState } from '@react-stately/datepicker';
4
+ import { useDateSegment, useDateField, useDatePicker, useTimeField } from '@react-aria/datepicker';
5
+ import { useLocale, I18nProvider } from '@react-aria/i18n';
6
+ import classNames from 'classnames';
7
+ import { BaseFormControl, useVariant, useInputGroupContext, isFilled, TextField } from '@entur/form';
8
+ import { CalendarDate, Time, getLocalTimeZone, GregorianCalendar, toCalendarDateTime, toTime, now, toZoned, today, toCalendarDate, startOfWeek, startOfYear, ZonedDateTime, parseAbsolute, CalendarDateTime, isEqualDay, getWeeksInMonth, parseTime } from '@internationalized/date';
9
+ export { CalendarDate, CalendarDateTime, Time, ZonedDateTime } from '@internationalized/date';
10
+ import { useCalendarCell, useCalendarGrid, useCalendar } from '@react-aria/calendar';
11
+ import { useCalendarState } from '@react-stately/calendar';
12
+ import { LeftArrowIcon, RightArrowIcon, CalendarIcon, DateIcon, ClockIcon } from '@entur/icons';
13
+ import { useButton } from '@react-aria/button';
14
+ import { IconButton } from '@entur/button';
15
+ import { VisuallyHidden } from '@entur/a11y';
16
+ import { useFloating, autoUpdate, offset, flip, shift } from '@floating-ui/react-dom';
17
+ import FocusLock from 'react-focus-lock';
18
+ import { space, zIndexes } from '@entur/tokens';
19
+ import { Modal } from '@entur/modal';
20
+
21
+ function _extends() {
22
+ return _extends = Object.assign ? Object.assign.bind() : function (n) {
23
+ for (var e = 1; e < arguments.length; e++) {
24
+ var t = arguments[e];
25
+ for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
36
26
  }
37
- );
27
+ return n;
28
+ }, _extends.apply(null, arguments);
29
+ }
30
+ function _objectWithoutPropertiesLoose(r, e) {
31
+ if (null == r) return {};
32
+ var t = {};
33
+ for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
34
+ if (-1 !== e.indexOf(n)) continue;
35
+ t[n] = r[n];
36
+ }
37
+ return t;
38
+ }
39
+
40
+ var _excluded$b = ["segment", "state"];
41
+ var FieldSegment = function FieldSegment(_ref) {
42
+ var segment = _ref.segment,
43
+ state = _ref.state,
44
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$b);
45
+ var ref = useRef(null);
46
+ var _useDateSegment = useDateSegment(segment, state, ref),
47
+ segmentProps = _useDateSegment.segmentProps;
48
+ return React.createElement("div", _extends({}, segmentProps, {
49
+ ref: ref,
50
+ className: classNames('eds-date-and-time-field__segment', {
51
+ 'eds-date-and-time-field__segment--placeholder': segment.isPlaceholder,
52
+ 'eds-date-and-time-field__segment--dot-separator': segment.text === '.' || segment.text === ':'
53
+ }),
54
+ tabIndex: state.isDisabled ? -1 : segmentProps.tabIndex
55
+ }, rest), segment.text);
38
56
  };
39
- const nativeDateToDateTime = (date, timeZone, offset2) => {
57
+
58
+ var nativeDateToDateTime = function nativeDateToDateTime(date, timeZone, offset) {
40
59
  if (timeZone) {
41
- if (offset2) {
42
- return new ZonedDateTime(
43
- date.getFullYear(),
44
- date.getMonth() + 1,
45
- date.getDate(),
46
- timeZone,
47
- offset2,
48
- date.getHours(),
49
- date.getMinutes(),
50
- date.getSeconds(),
51
- date.getMilliseconds()
52
- );
60
+ if (offset) {
61
+ return new ZonedDateTime(date.getFullYear(), date.getMonth() + 1, date.getDate(), timeZone, offset, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
53
62
  }
54
63
  return parseAbsolute(date.toISOString(), timeZone);
55
64
  }
56
- return new CalendarDateTime(
57
- date.getFullYear(),
58
- date.getMonth() + 1,
59
- date.getDate(),
60
- date.getHours(),
61
- date.getMinutes(),
62
- date.getSeconds(),
63
- date.getMilliseconds()
64
- );
65
+ return new CalendarDateTime(date.getFullYear(), date.getMonth() + 1, date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
65
66
  };
66
- function nativeDateToDateValue(date, noTimeOnlyDate = false, timeZone, offset2) {
67
+ /**
68
+ * Tar inn et JS Date-objekt og returnerer et av DateValue-objektene fra @internationalized/date-pakken
69
+ * @param {Date | null} date JS Date-objekt som ønskes konvertert til et DateValue-objekt
70
+ * @param {boolean} noTimeOnlyDate Hvis tidspunktet er irrelevant kan denne settes til true, da får man et CalendarDate-objekt uten tidspunkt tilbake
71
+ * @param {string} timeZone Tidssonen på IANA-formatet som tidpunktet skal konverteres til. Utelates denne får man et tidspunkt uten tidssone. Kan brukes med og uten en UTC-offset Vær obs på annen oppførsel med offset, les mer på beskrivelsen av offset
72
+ * @param {number} offset UTC-offset i millisekunder, må brukes med en tidssone. Ved å legge på en offset lager du en variant av en tidssone. Det betyr at tidspunktet ikke endres (time, minutt, sekund uendret), men tidssonen, med tilhørende offset, tidspunktet er i endres.
73
+ * @returns {CalendarDateTime | ZonedDateTime | CalendarDate | null} et av DateValue-objektene med verdier fra date eller null
74
+ */
75
+ function nativeDateToDateValue(date, noTimeOnlyDate, timeZone, offset) {
76
+ if (noTimeOnlyDate === void 0) {
77
+ noTimeOnlyDate = false;
78
+ }
67
79
  if (date === null) return null;
68
- if (noTimeOnlyDate)
69
- return new CalendarDate(
70
- date.getFullYear(),
71
- date.getMonth() + 1,
72
- date.getDate()
73
- );
74
- return nativeDateToDateTime(date, timeZone, offset2);
80
+ if (noTimeOnlyDate) return new CalendarDate(date.getFullYear(), date.getMonth() + 1, date.getDate());
81
+ return nativeDateToDateTime(date, timeZone, offset);
75
82
  }
76
- function nativeDateToTimeValue(date, noDateOnlyTime = false, timeZone, offset2) {
83
+ /**
84
+ * Tar inn et JS Date-objekt og returnerer et av TimeValue-objektene fra @internationalized/date-pakken
85
+ * @param {Date | null} date JS Date-objekt som ønskes konvertert til et TimeValue-objekt
86
+ * @param {boolean} noDateOnlyTime Hvis datoen er irrelevant kan denne settes til true, da får man et Time-objekt uten dato tilbake
87
+ * @param {string} timeZone Tidssonen på IANA-formatet som tidpunktet skal konverteres til. Utelates denne får man et tidspunkt uten tidssone. Kan brukes med og uten en UTC-offset Vær obs på annen oppførsel med offset, les mer på beskrivelsen av offset
88
+ * @param {number} offset UTC-offset i millisekunder, må brukes med en tidssone. Ved å legge på en offset lager du en variant av en tidssone. Det betyr at tidspunktet ikke endres (time, minutt, sekund uendret), men tidssonen, med tilhørende offset, tidspunktet er i endres.
89
+ * @returns {Time | CalendarDateTime | ZonedDateTime | null} et av TimeValue-objektene med verdier fra date eller null
90
+ */
91
+ function nativeDateToTimeValue(date, noDateOnlyTime, timeZone, offset) {
92
+ if (noDateOnlyTime === void 0) {
93
+ noDateOnlyTime = false;
94
+ }
77
95
  if (date === null) return null;
78
- if (noDateOnlyTime)
79
- return new Time(
80
- date.getHours(),
81
- date.getMinutes(),
82
- date.getSeconds(),
83
- date.getMilliseconds()
84
- );
85
- return nativeDateToDateTime(date, timeZone, offset2);
96
+ if (noDateOnlyTime) return new Time(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());
97
+ return nativeDateToDateTime(date, timeZone, offset);
86
98
  }
99
+ /**
100
+ * Tar inn et av Date- eller TimeValue-objektene fra \@internationalized/date-pakken og returnerer et JS Date-objekt
101
+ * @param {DateValue | TimeValue | null} value En dato eller et tidspunkt på Date- eller TimeValue-formatet som ønskes konvertert til et JS Date-objekt
102
+ * @param {string} timeZoneForCalendarDateTime Tidssonen value er i. Fungerer kun med typen er CalendarDateTime
103
+ * @returns {Date | null} et Date-objekt med verdier fra time eller null
104
+ */
87
105
  function timeOrDateValueToNativeDate(value, timeZoneForCalendarDateTime) {
88
106
  if (value === null) return null;
89
- if (!("day" in value)) {
90
- const date = /* @__PURE__ */ new Date();
107
+ // type is Time
108
+ if (!('day' in value)) {
109
+ var date = new Date();
91
110
  date.setHours(value.hour);
92
111
  date.setMinutes(value.minute);
93
112
  date.setSeconds(value.second);
94
113
  date.setMilliseconds(value.millisecond);
95
114
  return date;
96
115
  }
97
- if (!("hour" in value)) {
98
- return value.toDate(timeZoneForCalendarDateTime ?? getLocalTimeZone());
116
+ // type is CalendarDate
117
+ if (!('hour' in value)) {
118
+ return value.toDate(timeZoneForCalendarDateTime != null ? timeZoneForCalendarDateTime : getLocalTimeZone());
99
119
  }
100
- if (!("timeZone" in value)) {
101
- if (timeZoneForCalendarDateTime)
102
- return value.toDate(timeZoneForCalendarDateTime);
120
+ // type is CalendarDateTime
121
+ if (!('timeZone' in value)) {
122
+ if (timeZoneForCalendarDateTime) return value.toDate(timeZoneForCalendarDateTime);
103
123
  return value.toDate(getLocalTimeZone());
104
124
  }
125
+ // type is ZonedDateTime
105
126
  return value.toDate();
106
127
  }
107
- const createCalendar = (identifier = "gregory") => {
128
+ var createCalendar = function createCalendar(identifier) {
129
+ if (identifier === void 0) {
130
+ identifier = 'gregory';
131
+ }
108
132
  switch (identifier) {
109
- case "gregory":
133
+ case 'gregory':
110
134
  return new GregorianCalendar();
111
135
  default:
112
- throw new Error(`Unsupported calendar ${identifier}`);
136
+ throw new Error("Unsupported calendar " + identifier);
113
137
  }
114
138
  };
115
- const ariaLabelIfNorwegian = (norwegianAriaLabel, locale, propsCollection) => {
116
- if (locale.toLowerCase() !== "no-no") return propsCollection["aria-label"];
139
+ var ariaLabelIfNorwegian = function ariaLabelIfNorwegian(norwegianAriaLabel, locale, propsCollection) {
140
+ if (locale.toLowerCase() !== 'no-no') return propsCollection['aria-label'];
117
141
  return norwegianAriaLabel;
118
142
  };
119
- const lastMillisecondOfDay = (dateValue) => toCalendarDateTime(dateValue.add({ days: 1 })).add({
120
- milliseconds: -1
121
- });
122
- const convertValueToType = ({
123
- value,
124
- type,
125
- timezone = "Europe/Oslo"
126
- }) => {
143
+ var lastMillisecondOfDay = function lastMillisecondOfDay(dateValue) {
144
+ return toCalendarDateTime(dateValue.add({
145
+ days: 1
146
+ })).add({
147
+ milliseconds: -1
148
+ });
149
+ };
150
+ var convertValueToType = function convertValueToType(_ref) {
151
+ var value = _ref.value,
152
+ type = _ref.type,
153
+ _ref$timezone = _ref.timezone,
154
+ timezone = _ref$timezone === void 0 ? 'Europe/Oslo' : _ref$timezone;
127
155
  if (value === null) return null;
128
156
  switch (type) {
129
- case "CalendarDate":
130
- if (!("day" in value)) return today(timezone);
157
+ case 'CalendarDate':
158
+ if (!('day' in value)) return today(timezone);
131
159
  return toCalendarDate(value);
132
- case "CalendarDateTime":
133
- if (!("day" in value)) return toCalendarDateTime(today(timezone), value);
160
+ case 'CalendarDateTime':
161
+ if (!('day' in value)) return toCalendarDateTime(today(timezone), value);
134
162
  return toCalendarDateTime(value);
135
- case "ZonedDateTime":
136
- if (!("day" in value))
137
- return toZoned(toCalendarDateTime(today(timezone), value), timezone);
163
+ case 'ZonedDateTime':
164
+ if (!('day' in value)) return toZoned(toCalendarDateTime(today(timezone), value), timezone);
138
165
  return toZoned(value, timezone);
139
- case "Time":
140
- if (!("hour" in value)) return toTime(now(timezone));
141
- if (!("day" in value)) return value;
166
+ case 'Time':
167
+ if (!('hour' in value)) return toTime(now(timezone));
168
+ if (!('day' in value)) return value;
142
169
  return toTime(value);
143
170
  default:
144
171
  return value;
145
172
  }
146
173
  };
147
- const modulo = (a, b) => (a % b + b) % b;
148
- const focusSegment = (ref, segment) => {
174
+ var modulo = function modulo(a, b) {
175
+ return (a % b + b) % b;
176
+ };
177
+ var focusSegment = function focusSegment(ref, segment) {
149
178
  if (ref.current) {
150
- const segments = ref.current.querySelectorAll(
151
- ".eds-date-and-time-field__segment"
152
- );
153
- const firstSegment = segments[0];
154
- const lastSegment = segments[segments.length - 1];
179
+ var segments = ref.current.querySelectorAll('.eds-date-and-time-field__segment');
180
+ var firstSegment = segments[0];
181
+ var lastSegment = segments[segments.length - 1];
155
182
  switch (segment) {
156
- case "first":
183
+ case 'first':
157
184
  return firstSegment.focus();
158
- case "last":
185
+ case 'last':
159
186
  return lastSegment.focus();
160
187
  }
161
188
  }
162
189
  };
190
+ /** Based on code from https://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php */
163
191
  function getWeekNumberForDate(date) {
164
192
  if (date === null) return -1;
165
- const calendarDate = convertValueToType({
193
+ var calendarDate = convertValueToType({
166
194
  value: date,
167
- type: "CalendarDate"
195
+ type: 'CalendarDate'
196
+ });
197
+ var firstDayOfWeek = startOfWeek(calendarDate, 'no-NO');
198
+ var thursdayOfWeek = firstDayOfWeek.add({
199
+ days: 3
168
200
  });
169
- const firstDayOfWeek = startOfWeek(calendarDate, "no-NO");
170
- const thursdayOfWeek = firstDayOfWeek.add({ days: 3 });
171
- const firstDayOfYearForThursday = startOfYear(thursdayOfWeek);
172
- const weekNumber = Math.ceil(
173
- (thursdayOfWeek.compare(firstDayOfYearForThursday) + 1) / 7
174
- );
201
+ var firstDayOfYearForThursday = startOfYear(thursdayOfWeek);
202
+ var weekNumber = Math.ceil((thursdayOfWeek.compare(firstDayOfYearForThursday) + 1) / 7);
175
203
  return weekNumber;
176
204
  }
177
- function handleOnChange({
178
- value,
179
- selectedDate,
180
- forcedReturnType,
181
- onChange
182
- }) {
183
- if (forcedReturnType !== void 0 || !selectedDate) {
184
- return onChange?.(
185
- convertValueToType({
186
- value,
187
- type: forcedReturnType ?? "ZonedDateTime",
188
- timezone: value !== null && "timezone" in value ? value.timezone : void 0
189
- })
190
- );
205
+ function handleOnChange(_ref2) {
206
+ var value = _ref2.value,
207
+ selectedDate = _ref2.selectedDate,
208
+ forcedReturnType = _ref2.forcedReturnType,
209
+ onChange = _ref2.onChange;
210
+ if (forcedReturnType !== undefined || !selectedDate) {
211
+ return onChange == null ? void 0 : onChange(convertValueToType({
212
+ value: value,
213
+ type: forcedReturnType != null ? forcedReturnType : 'ZonedDateTime',
214
+ timezone: value !== null && 'timezone' in value ? value.timezone : undefined
215
+ }));
191
216
  }
192
- onChange?.(value);
217
+ onChange == null || onChange(value);
193
218
  }
194
- const DateField = ({
195
- selectedDate,
196
- onChange,
197
- label,
198
- locale: customLocale,
199
- showTimeZone,
200
- showTime,
201
- granularity = showTime ? "minute" : "day",
202
- disabled,
203
- readOnly,
204
- isDisabled,
205
- variant,
206
- feedback,
207
- validationVariant = "negative",
208
- validationFeedback = "Ugyldig dato",
209
- labelTooltip,
210
- minDate,
211
- maxDate,
212
- forcedReturnType,
213
- style,
214
- className,
215
- labelProps: parentLabelProps,
216
- append,
217
- prepend,
218
- onValidate,
219
- dateFieldRef: ref,
220
- ...rest
221
- }) => {
222
- const { locale } = useLocale();
223
- const _props = {
224
- ...rest,
225
- label,
226
- locale: customLocale ?? locale,
227
- createCalendar,
219
+
220
+ var _excluded$a = ["selectedDate", "onChange", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "readOnly", "isDisabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "forcedReturnType", "style", "className", "labelProps", "append", "prepend", "onValidate", "dateFieldRef"];
221
+ var DateField = function DateField(_ref) {
222
+ var selectedDate = _ref.selectedDate,
223
+ _onChange = _ref.onChange,
224
+ label = _ref.label,
225
+ customLocale = _ref.locale,
226
+ showTimeZone = _ref.showTimeZone,
227
+ showTime = _ref.showTime,
228
+ _ref$granularity = _ref.granularity,
229
+ granularity = _ref$granularity === void 0 ? showTime ? 'minute' : 'day' : _ref$granularity,
230
+ disabled = _ref.disabled,
231
+ readOnly = _ref.readOnly,
232
+ isDisabled = _ref.isDisabled,
233
+ variant = _ref.variant,
234
+ feedback = _ref.feedback,
235
+ _ref$validationVarian = _ref.validationVariant,
236
+ validationVariant = _ref$validationVarian === void 0 ? 'negative' : _ref$validationVarian,
237
+ _ref$validationFeedba = _ref.validationFeedback,
238
+ validationFeedback = _ref$validationFeedba === void 0 ? 'Ugyldig dato' : _ref$validationFeedba,
239
+ labelTooltip = _ref.labelTooltip,
240
+ minDate = _ref.minDate,
241
+ maxDate = _ref.maxDate,
242
+ forcedReturnType = _ref.forcedReturnType,
243
+ style = _ref.style,
244
+ className = _ref.className,
245
+ parentLabelProps = _ref.labelProps,
246
+ append = _ref.append,
247
+ prepend = _ref.prepend,
248
+ onValidate = _ref.onValidate,
249
+ ref = _ref.dateFieldRef,
250
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$a);
251
+ var _useLocale = useLocale(),
252
+ locale = _useLocale.locale;
253
+ var _props = _extends({}, rest, {
254
+ label: label,
255
+ locale: customLocale != null ? customLocale : locale,
256
+ createCalendar: createCalendar,
228
257
  value: selectedDate,
229
- onChange: (value) => handleOnChange({
230
- value,
231
- selectedDate,
232
- forcedReturnType,
233
- onChange
234
- }),
258
+ onChange: function onChange(value) {
259
+ return handleOnChange({
260
+ value: value,
261
+ selectedDate: selectedDate,
262
+ forcedReturnType: forcedReturnType,
263
+ onChange: _onChange
264
+ });
265
+ },
235
266
  hideTimeZone: !showTimeZone,
236
- granularity,
267
+ granularity: granularity,
237
268
  minValue: minDate,
238
269
  // this weird logic makes sure the entire day is included if no time is provided in maxDate
239
- maxValue: "hour" in (maxDate ?? {}) ? maxDate : maxDate !== void 0 ? lastMillisecondOfDay(maxDate) : void 0,
270
+ maxValue: 'hour' in (maxDate != null ? maxDate : {}) ? maxDate : maxDate !== undefined ? lastMillisecondOfDay(maxDate) : undefined,
240
271
  isDisabled: isDisabled || disabled || readOnly,
241
272
  shouldForceLeadingZeros: true
242
- };
243
- const state = useDateFieldState(_props);
244
- const dateFieldRef = useRef(null);
245
- const { labelProps, fieldProps } = useDateField(_props, state, dateFieldRef);
246
- useEffect(() => onValidate?.(!state.isInvalid), [state.isInvalid]);
247
- const id = useRandomId("datefield");
248
- return /* @__PURE__ */ jsx(
249
- ConditionalWrapper,
250
- {
251
- condition: customLocale !== void 0,
252
- wrapper: (child) => /* @__PURE__ */ jsx(I18nProvider, { locale: customLocale, children: child }),
253
- children: /* @__PURE__ */ jsx(
254
- BaseFormControl,
255
- {
256
- append,
257
- ariaAlertOnFeedback: true,
258
- className: classNames("eds-datefield", className, {
259
- "eds-datefield--has-tooltip": labelTooltip !== void 0
260
- }),
261
- disabled: isDisabled || disabled,
262
- readOnly,
263
- disableLabelAnimation: true,
264
- feedback: feedback ?? (state.validationState === "invalid" ? validationFeedback : void 0),
265
- label,
266
- labelId: id,
267
- labelProps: parentLabelProps ?? labelProps,
268
- labelTooltip,
269
- prepend,
270
- ref: mergeRefs(ref, dateFieldRef),
271
- style,
272
- variant: variant ?? (state.isInvalid ? validationVariant : void 0),
273
- ...fieldProps,
274
- children: state.segments.map((segment, i) => /* @__PURE__ */ jsx(FieldSegment, { segment, state }, i))
275
- }
276
- )
273
+ });
274
+ var state = useDateFieldState(_props);
275
+ var dateFieldRef = useRef(null);
276
+ var _useDateField = useDateField(_props, state, dateFieldRef),
277
+ labelProps = _useDateField.labelProps,
278
+ fieldProps = _useDateField.fieldProps;
279
+ useEffect(function () {
280
+ return onValidate == null ? void 0 : onValidate(!state.isInvalid);
281
+ }, [state.isInvalid]);
282
+ var id = useRandomId('datefield');
283
+ return React.createElement(ConditionalWrapper, {
284
+ condition: customLocale !== undefined,
285
+ wrapper: function wrapper(child) {
286
+ return React.createElement(I18nProvider, {
287
+ locale: customLocale
288
+ }, child);
277
289
  }
278
- );
290
+ }, React.createElement(BaseFormControl, _extends({
291
+ append: append,
292
+ ariaAlertOnFeedback: true,
293
+ className: classNames('eds-datefield', className, {
294
+ 'eds-datefield--has-tooltip': labelTooltip !== undefined
295
+ }),
296
+ disabled: isDisabled || disabled,
297
+ readOnly: readOnly,
298
+ disableLabelAnimation: true,
299
+ feedback: feedback != null ? feedback : state.validationState === 'invalid' ? validationFeedback : undefined,
300
+ label: label,
301
+ labelId: id,
302
+ labelProps: parentLabelProps != null ? parentLabelProps : labelProps,
303
+ labelTooltip: labelTooltip,
304
+ prepend: prepend,
305
+ ref: mergeRefs(ref, dateFieldRef),
306
+ style: style,
307
+ variant: variant != null ? variant : state.isInvalid ? validationVariant : undefined
308
+ }, fieldProps), state.segments.map(function (segment, i) {
309
+ return React.createElement(FieldSegment, {
310
+ segment: segment,
311
+ state: state,
312
+ key: i
313
+ });
314
+ })));
279
315
  };
280
- const CalendarButton = ({
281
- children,
282
- className,
283
- style,
284
- ...props
285
- }) => {
286
- const ref = useRef(null);
287
- const { buttonProps } = useButton(props, ref);
288
- return /* @__PURE__ */ jsx(IconButton, { ...buttonProps, ref, className, style, children });
316
+
317
+ var _excluded$9 = ["children", "className", "style"];
318
+ var CalendarButton = function CalendarButton(_ref) {
319
+ var children = _ref.children,
320
+ className = _ref.className,
321
+ style = _ref.style,
322
+ props = _objectWithoutPropertiesLoose(_ref, _excluded$9);
323
+ var ref = useRef(null);
324
+ var _useButton = useButton(props, ref),
325
+ buttonProps = _useButton.buttonProps;
326
+ return React.createElement(IconButton, _extends({}, buttonProps, {
327
+ ref: ref,
328
+ className: className,
329
+ style: style
330
+ }), children);
289
331
  };
290
- const CalendarCell = ({
291
- state,
292
- date,
293
- onSelectedCellClick = () => {
294
- return;
295
- },
296
- onCellClick = () => {
297
- return;
298
- },
299
- weekNumberString,
300
- classNameForDate,
301
- ariaLabelForDate,
302
- ...rest
303
- }) => {
304
- const cellRef = useRef(null);
305
- const {
306
- cellProps,
307
- buttonProps,
308
- isSelected,
309
- isOutsideVisibleRange,
310
- isDisabled,
311
- isUnavailable,
312
- formattedDate
313
- } = useCalendarCell({ date }, state, cellRef);
314
- const ariaLabel = `${buttonProps["aria-label"]}${weekNumberString} ${ariaLabelForDate?.(date) ?? ""}`;
315
- const cellCanBeSelected = !(isOutsideVisibleRange || isDisabled || isUnavailable);
316
- return /* @__PURE__ */ jsx("td", { ...cellProps, className: "eds-datepicker__calendar__grid__cell__td", children: /* @__PURE__ */ jsx(
317
- "div",
318
- {
319
- ...buttonProps,
320
- "aria-label": ariaLabel,
321
- "aria-hidden": isOutsideVisibleRange,
322
- ref: cellRef,
323
- hidden: isOutsideVisibleRange,
324
- className: classNames("eds-datepicker__calendar__grid__cell", {
325
- [classNameForDate?.(date) ?? ""]: !isOutsideVisibleRange,
326
- "eds-datepicker__calendar__grid__cell--selected": isSelected,
327
- "eds-datepicker__calendar__grid__cell--disabled": isDisabled || isUnavailable,
328
- "eds-datepicker__calendar__grid__cell--outside-month": isOutsideVisibleRange,
329
- "eds-datepicker__calendar__grid__cell--today": isEqualDay(
330
- date,
331
- now(state.timeZone ?? getLocalTimeZone())
332
- )
333
- }),
334
- ...rest,
335
- onClick: (e) => {
336
- buttonProps.onClick && buttonProps.onClick(e);
332
+
333
+ var _excluded$8 = ["state", "date", "onSelectedCellClick", "onCellClick", "weekNumberString", "classNameForDate", "ariaLabelForDate"];
334
+ var CalendarCell = function CalendarCell(_ref) {
335
+ var _ariaLabelForDate, _classNameForDate, _state$timeZone, _classNames;
336
+ var state = _ref.state,
337
+ date = _ref.date,
338
+ _ref$onSelectedCellCl = _ref.onSelectedCellClick,
339
+ onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
340
+ return;
341
+ } : _ref$onSelectedCellCl,
342
+ _ref$onCellClick = _ref.onCellClick,
343
+ onCellClick = _ref$onCellClick === void 0 ? function () {
344
+ return;
345
+ } : _ref$onCellClick,
346
+ weekNumberString = _ref.weekNumberString,
347
+ classNameForDate = _ref.classNameForDate,
348
+ ariaLabelForDate = _ref.ariaLabelForDate,
349
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
350
+ var cellRef = useRef(null);
351
+ var _useCalendarCell = useCalendarCell({
352
+ date: date
353
+ }, state, cellRef),
354
+ cellProps = _useCalendarCell.cellProps,
355
+ buttonProps = _useCalendarCell.buttonProps,
356
+ isSelected = _useCalendarCell.isSelected,
357
+ isOutsideVisibleRange = _useCalendarCell.isOutsideVisibleRange,
358
+ isDisabled = _useCalendarCell.isDisabled,
359
+ isUnavailable = _useCalendarCell.isUnavailable,
360
+ formattedDate = _useCalendarCell.formattedDate;
361
+ var ariaLabel = "" + buttonProps['aria-label'] + weekNumberString + " " + ((_ariaLabelForDate = ariaLabelForDate == null ? void 0 : ariaLabelForDate(date)) != null ? _ariaLabelForDate : '');
362
+ var cellCanBeSelected = !(isOutsideVisibleRange || isDisabled || isUnavailable);
363
+ return React.createElement("td", _extends({}, cellProps, {
364
+ className: "eds-datepicker__calendar__grid__cell__td"
365
+ }), React.createElement("div", _extends({}, buttonProps, {
366
+ "aria-label": ariaLabel,
367
+ "aria-hidden": isOutsideVisibleRange,
368
+ ref: cellRef,
369
+ hidden: isOutsideVisibleRange,
370
+ className: classNames('eds-datepicker__calendar__grid__cell', (_classNames = {}, _classNames[(_classNameForDate = classNameForDate == null ? void 0 : classNameForDate(date)) != null ? _classNameForDate : ''] = !isOutsideVisibleRange, _classNames['eds-datepicker__calendar__grid__cell--selected'] = isSelected, _classNames['eds-datepicker__calendar__grid__cell--disabled'] = isDisabled || isUnavailable, _classNames['eds-datepicker__calendar__grid__cell--outside-month'] = isOutsideVisibleRange, _classNames['eds-datepicker__calendar__grid__cell--today'] = isEqualDay(date, now((_state$timeZone = state.timeZone) != null ? _state$timeZone : getLocalTimeZone())), _classNames))
371
+ }, rest, {
372
+ onClick: function onClick(e) {
373
+ buttonProps.onClick && buttonProps.onClick(e);
374
+ // Used to force close calendar on select
375
+ isSelected && onSelectedCellClick();
376
+ cellCanBeSelected && onCellClick();
377
+ },
378
+ onKeyUp: function onKeyUp(e) {
379
+ buttonProps.onKeyUp && buttonProps.onKeyUp(e);
380
+ if (e.key === 'Enter') {
381
+ // Used to force close calendar on select
337
382
  isSelected && onSelectedCellClick();
338
383
  cellCanBeSelected && onCellClick();
339
- },
340
- onKeyUp: (e) => {
341
- buttonProps.onKeyUp && buttonProps.onKeyUp(e);
342
- if (e.key === "Enter") {
343
- isSelected && onSelectedCellClick();
344
- cellCanBeSelected && onCellClick();
345
- }
346
- },
347
- children: formattedDate
384
+ }
348
385
  }
349
- ) });
386
+ }), formattedDate));
350
387
  };
351
- const CalendarGrid = ({
352
- state,
353
- navigationDescription,
354
- onSelectedCellClick = () => {
355
- return;
356
- },
357
- onCellClick = () => {
358
- return;
359
- },
360
- showWeekNumbers,
361
- weekNumberHeader,
362
- classNameForDate,
363
- ariaLabelForDate,
364
- ...rest
365
- }) => {
366
- const calendarGridId = useRandomId("eds-calendar");
367
- const { locale } = useLocale();
368
- const { gridProps, headerProps, weekDays } = useCalendarGrid(rest, state);
369
- const weeksInMonth = getWeeksInMonth(state.visibleRange.start, locale);
370
- const weeksArray = Array.from(Array(weeksInMonth).keys());
371
- const weekDaysMapped = () => {
372
- if (locale.toLowerCase().includes("no"))
373
- return ["ma", "ti", "on", "to", "fr", "lø", "sø"];
374
- if (locale.toLowerCase().includes("en")) {
375
- if (weekDays[0] === "M")
376
- return ["Mo", "Tu", "We", "Th", "Fr", "Sa", "Su"];
377
- if (weekDays[0] === "S")
378
- return ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
388
+
389
+ var _excluded$7 = ["state", "navigationDescription", "onSelectedCellClick", "onCellClick", "showWeekNumbers", "weekNumberHeader", "classNameForDate", "ariaLabelForDate"];
390
+ var CalendarGrid = function CalendarGrid(_ref) {
391
+ var state = _ref.state,
392
+ navigationDescription = _ref.navigationDescription,
393
+ _ref$onSelectedCellCl = _ref.onSelectedCellClick,
394
+ onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
395
+ return;
396
+ } : _ref$onSelectedCellCl,
397
+ _ref$onCellClick = _ref.onCellClick,
398
+ onCellClick = _ref$onCellClick === void 0 ? function () {
399
+ return;
400
+ } : _ref$onCellClick,
401
+ showWeekNumbers = _ref.showWeekNumbers,
402
+ weekNumberHeader = _ref.weekNumberHeader,
403
+ classNameForDate = _ref.classNameForDate,
404
+ ariaLabelForDate = _ref.ariaLabelForDate,
405
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
406
+ var calendarGridId = useRandomId('eds-calendar');
407
+ var _useLocale = useLocale(),
408
+ locale = _useLocale.locale;
409
+ var _useCalendarGrid = useCalendarGrid(rest, state),
410
+ gridProps = _useCalendarGrid.gridProps,
411
+ headerProps = _useCalendarGrid.headerProps,
412
+ weekDays = _useCalendarGrid.weekDays;
413
+ var weeksInMonth = getWeeksInMonth(state.visibleRange.start, locale);
414
+ var weeksArray = Array.from(Array(weeksInMonth).keys());
415
+ var weekDaysMapped = function weekDaysMapped() {
416
+ if (locale.toLowerCase().includes('no')) return ['ma', 'ti', 'on', 'to', 'fr', 'lø', 'sø'];
417
+ if (locale.toLowerCase().includes('en')) {
418
+ if (weekDays[0] === 'M') return ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'];
419
+ if (weekDays[0] === 'S') return ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];
379
420
  }
380
- return weekDays.map((day) => day.toLowerCase());
421
+ return weekDays.map(function (day) {
422
+ return day.toLowerCase();
423
+ });
381
424
  };
382
- const getNavigationDescription = () => {
425
+ var getNavigationDescription = function getNavigationDescription() {
383
426
  if (navigationDescription) return navigationDescription;
384
- if (locale.toLowerCase().includes("en"))
385
- return "Use the arrow keys to navigate between dates";
386
- return "Bruk piltastene til å navigere mellom datoer";
427
+ if (locale.toLowerCase().includes('en')) return 'Use the arrow keys to navigate between dates';
428
+ return 'Bruk piltastene til å navigere mellom datoer';
387
429
  };
388
- return /* @__PURE__ */ jsxs(Fragment, { children: [
389
- /* @__PURE__ */ jsxs(
390
- "table",
391
- {
392
- ...gridProps,
393
- cellSpacing: "0",
394
- className: "eds-datepicker__calendar__grid",
395
- children: [
396
- /* @__PURE__ */ jsx("thead", { ...headerProps, children: /* @__PURE__ */ jsxs("tr", { children: [
397
- showWeekNumbers && /* @__PURE__ */ jsx("th", { className: "eds-datepicker__calendar__grid__weeknumber-header", children: weekNumberHeader }),
398
- weekDaysMapped().map((day) => /* @__PURE__ */ jsx("th", { children: day }, day))
399
- ] }) }),
400
- /* @__PURE__ */ jsx("tbody", { children: weeksArray.map((weekIndex) => {
401
- const weekNumber = getWeekNumberForDate(
402
- state.getDatesInWeek(weekIndex)[0]
403
- );
404
- return /* @__PURE__ */ jsxs("tr", { children: [
405
- showWeekNumbers && /* @__PURE__ */ jsx(
406
- "th",
407
- {
408
- "aria-hidden": true,
409
- className: "eds-datepicker__calendar__grid__weeknumber",
410
- children: weekNumber
411
- }
412
- ),
413
- state.getDatesInWeek(weekIndex).map(
414
- (date, i) => date ? /* @__PURE__ */ jsx(
415
- CalendarCell,
416
- {
417
- state,
418
- date,
419
- "aria-describedby": calendarGridId + "description",
420
- weekNumberString: showWeekNumbers ? `, ${weekNumberHeader} ${weekNumber},` : "",
421
- onSelectedCellClick,
422
- onCellClick,
423
- classNameForDate,
424
- ariaLabelForDate
425
- },
426
- `${date.month}.${date.day}`
427
- ) : /* @__PURE__ */ jsx("td", {}, i)
428
- )
429
- ] }, weekIndex);
430
- }) })
431
- ]
432
- }
433
- ),
434
- /* @__PURE__ */ jsx(VisuallyHidden, { id: calendarGridId + "description", children: getNavigationDescription() })
435
- ] });
430
+ return React.createElement(React.Fragment, null, React.createElement("table", _extends({}, gridProps, {
431
+ cellSpacing: "0",
432
+ className: "eds-datepicker__calendar__grid"
433
+ }), React.createElement("thead", _extends({}, headerProps), React.createElement("tr", null, showWeekNumbers && React.createElement("th", {
434
+ className: "eds-datepicker__calendar__grid__weeknumber-header"
435
+ }, weekNumberHeader), weekDaysMapped().map(function (day) {
436
+ return React.createElement("th", {
437
+ key: day
438
+ }, day);
439
+ }))), React.createElement("tbody", null, weeksArray.map(function (weekIndex) {
440
+ var weekNumber = getWeekNumberForDate(state.getDatesInWeek(weekIndex)[0]);
441
+ return React.createElement("tr", {
442
+ key: weekIndex
443
+ }, showWeekNumbers && React.createElement("th", {
444
+ "aria-hidden": true,
445
+ className: "eds-datepicker__calendar__grid__weeknumber"
446
+ }, weekNumber), state.getDatesInWeek(weekIndex).map(function (date, i) {
447
+ return date ? React.createElement(CalendarCell, {
448
+ key: date.month + "." + date.day,
449
+ state: state,
450
+ date: date,
451
+ "aria-describedby": calendarGridId + 'description',
452
+ weekNumberString: showWeekNumbers ? ", " + weekNumberHeader + " " + weekNumber + "," : '',
453
+ onSelectedCellClick: onSelectedCellClick,
454
+ onCellClick: onCellClick,
455
+ classNameForDate: classNameForDate,
456
+ ariaLabelForDate: ariaLabelForDate
457
+ }) : React.createElement("td", {
458
+ key: i
459
+ });
460
+ }));
461
+ }))), React.createElement(VisuallyHidden, {
462
+ id: calendarGridId + 'description'
463
+ }, getNavigationDescription()));
436
464
  };
437
- const Calendar = ({
438
- locale: localOverride,
439
- ...rest
440
- }) => {
441
- const props = { isDisabled: rest.disabled, ...rest };
442
- const { locale } = useLocale();
443
- return /* @__PURE__ */ jsx(I18nProvider, { locale: localOverride ?? locale, children: /* @__PURE__ */ jsx(CalendarBase, { ...props }) });
465
+
466
+ var _excluded$6 = ["locale"],
467
+ _excluded2$3 = ["selectedDate", "onChange", "minDate", "maxDate", "showWeekNumbers", "weekNumberHeader", "forcedReturnType", "style", "className", "navigationDescription", "onSelectedCellClick", "onCellClick", "classNameForDate", "ariaLabelForDate", "calendarRef"];
468
+ var Calendar = function Calendar(_ref) {
469
+ var localOverride = _ref.locale,
470
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
471
+ var props = _extends({
472
+ isDisabled: rest.disabled
473
+ }, rest);
474
+ var _useLocale = useLocale(),
475
+ locale = _useLocale.locale;
476
+ return React.createElement(I18nProvider, {
477
+ locale: localOverride != null ? localOverride : locale
478
+ }, React.createElement(CalendarBase, _extends({}, props)));
444
479
  };
445
- const CalendarBase = ({
446
- selectedDate,
447
- onChange,
448
- minDate,
449
- maxDate,
450
- showWeekNumbers = false,
451
- weekNumberHeader = "uke",
452
- forcedReturnType,
453
- style,
454
- className,
455
- navigationDescription,
456
- onSelectedCellClick = () => {
457
- return;
458
- },
459
- onCellClick = () => {
460
- return;
461
- },
462
- classNameForDate,
463
- ariaLabelForDate,
464
- calendarRef,
465
- ...rest
466
- }) => {
467
- const { locale } = useLocale();
468
- const _props = {
469
- ...rest,
480
+ var CalendarBase = function CalendarBase(_ref2) {
481
+ var selectedDate = _ref2.selectedDate,
482
+ _onChange = _ref2.onChange,
483
+ minDate = _ref2.minDate,
484
+ maxDate = _ref2.maxDate,
485
+ _ref2$showWeekNumbers = _ref2.showWeekNumbers,
486
+ showWeekNumbers = _ref2$showWeekNumbers === void 0 ? false : _ref2$showWeekNumbers,
487
+ _ref2$weekNumberHeade = _ref2.weekNumberHeader,
488
+ weekNumberHeader = _ref2$weekNumberHeade === void 0 ? 'uke' : _ref2$weekNumberHeade,
489
+ forcedReturnType = _ref2.forcedReturnType,
490
+ style = _ref2.style,
491
+ className = _ref2.className,
492
+ navigationDescription = _ref2.navigationDescription,
493
+ _ref2$onSelectedCellC = _ref2.onSelectedCellClick,
494
+ onSelectedCellClick = _ref2$onSelectedCellC === void 0 ? function () {
495
+ return;
496
+ } : _ref2$onSelectedCellC,
497
+ _ref2$onCellClick = _ref2.onCellClick,
498
+ onCellClick = _ref2$onCellClick === void 0 ? function () {
499
+ return;
500
+ } : _ref2$onCellClick,
501
+ classNameForDate = _ref2.classNameForDate,
502
+ ariaLabelForDate = _ref2.ariaLabelForDate,
503
+ calendarRef = _ref2.calendarRef,
504
+ rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$3);
505
+ var _useLocale2 = useLocale(),
506
+ locale = _useLocale2.locale;
507
+ var _props = _extends({}, rest, {
470
508
  value: selectedDate,
471
- onChange: (value) => handleOnChange({
472
- value,
473
- selectedDate,
474
- forcedReturnType,
475
- onChange
476
- }),
477
- locale,
478
- createCalendar,
509
+ onChange: function onChange(value) {
510
+ return handleOnChange({
511
+ value: value,
512
+ selectedDate: selectedDate,
513
+ forcedReturnType: forcedReturnType,
514
+ onChange: _onChange
515
+ });
516
+ },
517
+ locale: locale,
518
+ createCalendar: createCalendar,
479
519
  minValue: minDate,
480
520
  maxValue: maxDate
481
- };
482
- const state = useCalendarState(_props);
483
- const { calendarProps, prevButtonProps, nextButtonProps, title } = useCalendar(_props, state);
484
- useEffect(
485
- () => rest.onValidate?.(!state.isValueInvalid),
486
- [state.isValueInvalid]
487
- );
488
- return /* @__PURE__ */ jsxs(
489
- "div",
490
- {
491
- ...calendarProps,
492
- ref: calendarRef,
493
- className: classNames("eds-datepicker__calendar", className),
494
- style,
495
- children: [
496
- /* @__PURE__ */ jsxs("div", { className: "eds-datepicker__calendar__header", children: [
497
- /* @__PURE__ */ jsx(
498
- CalendarButton,
499
- {
500
- ...prevButtonProps,
501
- "aria-label": ariaLabelIfNorwegian(
502
- "Forrige måned",
503
- locale,
504
- prevButtonProps
505
- ),
506
- children: /* @__PURE__ */ jsx(LeftArrowIcon, { size: 20 })
507
- }
508
- ),
509
- /* @__PURE__ */ jsx("h2", { children: title }),
510
- /* @__PURE__ */ jsx(
511
- CalendarButton,
512
- {
513
- ...nextButtonProps,
514
- "aria-label": ariaLabelIfNorwegian(
515
- "Neste måned",
516
- locale,
517
- nextButtonProps
518
- ),
519
- children: /* @__PURE__ */ jsx(RightArrowIcon, { size: 20 })
520
- }
521
- )
522
- ] }),
523
- /* @__PURE__ */ jsx(
524
- CalendarGrid,
525
- {
526
- ...rest,
527
- state,
528
- navigationDescription,
529
- onSelectedCellClick,
530
- onCellClick,
531
- classNameForDate,
532
- ariaLabelForDate,
533
- showWeekNumbers,
534
- weekNumberHeader
535
- }
536
- )
537
- ]
538
- }
539
- );
521
+ });
522
+ var state = useCalendarState(_props);
523
+ var _useCalendar = useCalendar(_props, state),
524
+ calendarProps = _useCalendar.calendarProps,
525
+ prevButtonProps = _useCalendar.prevButtonProps,
526
+ nextButtonProps = _useCalendar.nextButtonProps,
527
+ title = _useCalendar.title;
528
+ useEffect(function () {
529
+ return rest.onValidate == null ? void 0 : rest.onValidate(!state.isValueInvalid);
530
+ }, [state.isValueInvalid]);
531
+ return React.createElement("div", _extends({}, calendarProps, {
532
+ ref: calendarRef,
533
+ className: classNames('eds-datepicker__calendar', className),
534
+ style: style
535
+ }), React.createElement("div", {
536
+ className: "eds-datepicker__calendar__header"
537
+ }, React.createElement(CalendarButton, _extends({}, prevButtonProps, {
538
+ "aria-label": ariaLabelIfNorwegian('Forrige måned', locale, prevButtonProps)
539
+ }), React.createElement(LeftArrowIcon, {
540
+ size: 20
541
+ })), React.createElement("h2", null, title), React.createElement(CalendarButton, _extends({}, nextButtonProps, {
542
+ "aria-label": ariaLabelIfNorwegian('Neste måned', locale, nextButtonProps)
543
+ }), React.createElement(RightArrowIcon, {
544
+ size: 20
545
+ }))), React.createElement(CalendarGrid, _extends({}, rest, {
546
+ state: state,
547
+ navigationDescription: navigationDescription,
548
+ onSelectedCellClick: onSelectedCellClick,
549
+ onCellClick: onCellClick,
550
+ classNameForDate: classNameForDate,
551
+ ariaLabelForDate: ariaLabelForDate,
552
+ showWeekNumbers: showWeekNumbers,
553
+ weekNumberHeader: weekNumberHeader
554
+ })));
540
555
  };
541
- const DatePicker = ({
542
- selectedDate,
543
- locale,
544
- disabled,
545
- readOnly,
546
- showTime,
547
- showTimeZone = false,
548
- classNameForDate,
549
- className,
550
- variant,
551
- feedback,
552
- validationVariant,
553
- validationFeedback,
554
- showWeekNumbers,
555
- weekNumberHeader,
556
- disableModal = false,
557
- labelTooltip,
558
- navigationDescription,
559
- minDate,
560
- maxDate,
561
- modalTreshold = 1e3,
562
- ariaLabelForDate,
563
- append,
564
- prepend,
565
- granularity = showTime ? "minute" : "day",
566
- ...rest
567
- }) => {
568
- const CALENDAR_MODAL_MAX_SCREEN_WIDTH = modalTreshold;
569
- const datePickerRef = useRef(null);
570
- const calendarRef = useRef(null);
571
- const { width } = useWindowDimensions();
572
- const _props = {
573
- ...rest,
574
- onChange: (value) => handleOnChange({
575
- value,
576
- selectedDate,
577
- forcedReturnType: rest.forcedReturnType,
578
- onChange: rest.onChange
579
- }),
556
+
557
+ var _excluded$5 = ["selectedDate", "locale", "disabled", "readOnly", "showTime", "showTimeZone", "classNameForDate", "className", "variant", "feedback", "validationVariant", "validationFeedback", "showWeekNumbers", "weekNumberHeader", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold", "ariaLabelForDate", "append", "prepend", "granularity"];
558
+ var DatePicker = function DatePicker(_ref) {
559
+ var selectedDate = _ref.selectedDate,
560
+ locale = _ref.locale,
561
+ disabled = _ref.disabled,
562
+ readOnly = _ref.readOnly,
563
+ showTime = _ref.showTime,
564
+ _ref$showTimeZone = _ref.showTimeZone,
565
+ showTimeZone = _ref$showTimeZone === void 0 ? false : _ref$showTimeZone,
566
+ classNameForDate = _ref.classNameForDate,
567
+ className = _ref.className,
568
+ variant = _ref.variant,
569
+ feedback = _ref.feedback,
570
+ validationVariant = _ref.validationVariant,
571
+ validationFeedback = _ref.validationFeedback,
572
+ showWeekNumbers = _ref.showWeekNumbers,
573
+ weekNumberHeader = _ref.weekNumberHeader,
574
+ _ref$disableModal = _ref.disableModal,
575
+ disableModal = _ref$disableModal === void 0 ? false : _ref$disableModal,
576
+ labelTooltip = _ref.labelTooltip,
577
+ navigationDescription = _ref.navigationDescription,
578
+ minDate = _ref.minDate,
579
+ maxDate = _ref.maxDate,
580
+ _ref$modalTreshold = _ref.modalTreshold,
581
+ modalTreshold = _ref$modalTreshold === void 0 ? 1000 : _ref$modalTreshold,
582
+ ariaLabelForDate = _ref.ariaLabelForDate,
583
+ append = _ref.append,
584
+ prepend = _ref.prepend,
585
+ _ref$granularity = _ref.granularity,
586
+ granularity = _ref$granularity === void 0 ? showTime ? 'minute' : 'day' : _ref$granularity,
587
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
588
+ var CALENDAR_MODAL_MAX_SCREEN_WIDTH = modalTreshold;
589
+ var datePickerRef = useRef(null);
590
+ var calendarRef = useRef(null);
591
+ var _useWindowDimensions = useWindowDimensions(),
592
+ width = _useWindowDimensions.width;
593
+ var _props = _extends({}, rest, {
594
+ onChange: function onChange(value) {
595
+ return handleOnChange({
596
+ value: value,
597
+ selectedDate: selectedDate,
598
+ forcedReturnType: rest.forcedReturnType,
599
+ onChange: rest.onChange
600
+ });
601
+ },
580
602
  minValue: minDate,
581
603
  // this weird logic makes sure the entire day is included if no time is provided in maxDate
582
- maxValue: "hour" in (maxDate ?? {}) ? maxDate : maxDate !== void 0 ? lastMillisecondOfDay(maxDate) : void 0,
604
+ maxValue: 'hour' in (maxDate != null ? maxDate : {}) ? maxDate : maxDate !== undefined ? lastMillisecondOfDay(maxDate) : undefined,
583
605
  value: selectedDate,
584
- granularity,
606
+ granularity: granularity,
585
607
  isDisabled: disabled || readOnly
586
- };
587
- const state = useDatePickerState(_props);
588
- const {
589
- groupProps,
590
- labelProps,
591
- fieldProps,
592
- buttonProps,
593
- dialogProps,
594
- calendarProps
595
- } = useDatePicker(_props, state, datePickerRef);
596
- const { refs, floatingStyles, update } = useFloating({
597
- whileElementsMounted: (ref, float, update2) => autoUpdate(ref, float, update2, { elementResize: false }),
598
- placement: "bottom-start",
599
- middleware: [
600
- offset(space.extraSmall2),
601
- flip(),
602
- shift({ padding: space.extraSmall })
603
- ]
604
608
  });
605
- useOnClickOutside([calendarRef], () => state.setOpen(false));
606
- useOnEscape(calendarRef, () => state.setOpen(false));
607
- const calendarSharedProps = {
608
- ...dialogProps,
609
- ...calendarProps,
609
+ var state = useDatePickerState(_props);
610
+ var _useDatePicker = useDatePicker(_props, state, datePickerRef),
611
+ groupProps = _useDatePicker.groupProps,
612
+ labelProps = _useDatePicker.labelProps,
613
+ fieldProps = _useDatePicker.fieldProps,
614
+ buttonProps = _useDatePicker.buttonProps,
615
+ dialogProps = _useDatePicker.dialogProps,
616
+ calendarProps = _useDatePicker.calendarProps;
617
+ // calculations for floating-UI popover position
618
+ var _useFloating = useFloating({
619
+ whileElementsMounted: function whileElementsMounted(ref, _float, update) {
620
+ return autoUpdate(ref, _float, update, {
621
+ elementResize: false
622
+ });
623
+ },
624
+ placement: 'bottom-start',
625
+ middleware: [offset(space.extraSmall2), flip(), shift({
626
+ padding: space.extraSmall
627
+ })]
628
+ }),
629
+ refs = _useFloating.refs,
630
+ floatingStyles = _useFloating.floatingStyles,
631
+ update = _useFloating.update;
632
+ useOnClickOutside([calendarRef], function () {
633
+ return state.setOpen(false);
634
+ });
635
+ useOnEscape(calendarRef, function () {
636
+ return state.setOpen(false);
637
+ });
638
+ var calendarSharedProps = _extends({}, dialogProps, calendarProps, {
610
639
  // We don't use handleOnChange here since it's handled internally by Calendar
611
640
  onChange: rest.onChange,
612
641
  forcedReturnType: rest.forcedReturnType,
613
- disabled,
614
- navigationDescription,
615
- onSelectedCellClick: () => state.setOpen(false),
642
+ disabled: disabled,
643
+ navigationDescription: navigationDescription,
644
+ onSelectedCellClick: function onSelectedCellClick() {
645
+ return state.setOpen(false);
646
+ },
616
647
  // onCellClick is a temporary fix solving an issue where the
617
648
  // calendar sometimes doesn't close on date selection
618
- onCellClick: () => state.setOpen(false),
619
- selectedDate,
620
- minDate,
621
- maxDate,
622
- calendarRef,
623
- classNameForDate,
624
- ariaLabelForDate,
625
- showWeekNumbers,
626
- weekNumberHeader
627
- };
628
- const isModal = typeof width !== "undefined" && width <= CALENDAR_MODAL_MAX_SCREEN_WIDTH && !disableModal;
629
- const popoverCalendar = /* @__PURE__ */ jsx(
630
- "div",
631
- {
632
- style: { ...floatingStyles, zIndex: zIndexes.popover },
633
- ref: refs.setFloating,
634
- children: /* @__PURE__ */ jsx(FocusLock, { disabled: !state.isOpen || isModal, returnFocus: true, children: state.isOpen && /* @__PURE__ */ jsx(Calendar, { ...calendarSharedProps }) })
635
- }
636
- );
637
- const modalCalendar = /* @__PURE__ */ jsx(
638
- Modal,
639
- {
640
- size: "small",
641
- title: "",
642
- open: state.isOpen,
643
- onDismiss: () => state.setOpen(false),
644
- className: "eds-datepicker__calendar-modal",
645
- children: /* @__PURE__ */ jsx(Calendar, { ...calendarSharedProps })
646
- }
647
- );
648
- return /* @__PURE__ */ jsxs(
649
- ConditionalWrapper,
650
- {
651
- condition: locale !== void 0,
652
- wrapper: (child) => /* @__PURE__ */ jsx(I18nProvider, { locale, children: child }),
653
- children: [
654
- /* @__PURE__ */ jsx(
655
- DateField,
656
- {
657
- ...groupProps,
658
- ...fieldProps,
659
- ...rest,
660
- append: !disabled && !readOnly && /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [
661
- append,
662
- /* @__PURE__ */ jsx(
663
- CalendarButton,
664
- {
665
- ...buttonProps,
666
- onPress: () => {
667
- state.setOpen(!state.isOpen);
668
- update();
669
- },
670
- className: "eds-datepicker__open-calendar-button",
671
- children: /* @__PURE__ */ jsx(CalendarIcon, {})
672
- }
673
- )
674
- ] }),
675
- prepend,
676
- className: classNames("eds-datepicker", className, {
677
- "eds-datepicker--disabled": disabled
678
- }),
679
- disabled,
680
- readOnly,
681
- feedback,
682
- labelProps,
683
- labelTooltip,
684
- maxDate,
685
- minDate,
686
- dateFieldRef: (node) => {
687
- refs.setReference(node);
688
- datePickerRef.current = node;
689
- },
690
- selectedDate,
691
- showTime,
692
- showTimeZone,
693
- validationFeedback,
694
- validationVariant,
695
- variant
696
- }
697
- ),
698
- isModal ? modalCalendar : popoverCalendar
699
- ]
649
+ onCellClick: function onCellClick() {
650
+ return state.setOpen(false);
651
+ },
652
+ selectedDate: selectedDate,
653
+ minDate: minDate,
654
+ maxDate: maxDate,
655
+ calendarRef: calendarRef,
656
+ classNameForDate: classNameForDate,
657
+ ariaLabelForDate: ariaLabelForDate,
658
+ showWeekNumbers: showWeekNumbers,
659
+ weekNumberHeader: weekNumberHeader
660
+ });
661
+ var isModal = typeof width !== 'undefined' && width <= CALENDAR_MODAL_MAX_SCREEN_WIDTH && !disableModal;
662
+ var popoverCalendar = React.createElement("div", {
663
+ style: _extends({}, floatingStyles, {
664
+ zIndex: zIndexes.popover
665
+ }),
666
+ ref: refs.setFloating
667
+ }, React.createElement(FocusLock, {
668
+ disabled: !state.isOpen || isModal,
669
+ returnFocus: true
670
+ }, state.isOpen && React.createElement(Calendar, _extends({}, calendarSharedProps))));
671
+ var modalCalendar = React.createElement(Modal, {
672
+ size: "small",
673
+ title: "",
674
+ open: state.isOpen,
675
+ onDismiss: function onDismiss() {
676
+ return state.setOpen(false);
677
+ },
678
+ className: "eds-datepicker__calendar-modal"
679
+ }, React.createElement(Calendar, _extends({}, calendarSharedProps)));
680
+ return React.createElement(ConditionalWrapper, {
681
+ condition: locale !== undefined,
682
+ wrapper: function wrapper(child) {
683
+ return React.createElement(I18nProvider, {
684
+ locale: locale
685
+ }, child);
700
686
  }
701
- );
702
- };
703
- const NativeDatePicker = React.forwardRef(
704
- ({
705
- className,
706
- style,
707
- label,
708
- onChange,
709
- feedback,
710
- variant,
711
- disableLabelAnimation,
712
- prepend = /* @__PURE__ */ jsx(DateIcon, { inline: true }),
713
- ...rest
714
- }, ref) => {
715
- const nativedatepickerId = useRandomId("eds-nativetimepicker");
716
- return /* @__PURE__ */ jsx(
717
- BaseFormControl,
718
- {
719
- style,
720
- className,
721
- prepend,
722
- label,
723
- feedback,
724
- variant,
725
- labelId: nativedatepickerId,
726
- disableLabelAnimation,
727
- isFilled: true,
728
- children: /* @__PURE__ */ jsx(
729
- NativeDatePickerBase,
730
- {
731
- onChange,
732
- "aria-labelledby": nativedatepickerId,
733
- ref,
734
- variant,
735
- ...rest
736
- }
737
- )
687
+ }, React.createElement(DateField, _extends({}, groupProps, fieldProps, rest, {
688
+ append: !disabled && !readOnly && React.createElement("div", {
689
+ style: {
690
+ display: 'flex',
691
+ alignItems: 'center'
738
692
  }
739
- );
740
- }
741
- );
742
- const NativeDatePickerBase = React.forwardRef(({ onChange, variant, value, ...rest }, ref) => {
743
- const contextVariant = useVariant();
744
- const currentVariant = variant || contextVariant;
745
- const { isFilled: isDatepickerFilled, setFilled: setFiller } = useInputGroupContext();
746
- useOnMount(() => {
693
+ }, append, React.createElement(CalendarButton, _extends({}, buttonProps, {
694
+ onPress: function onPress() {
695
+ state.setOpen(!state.isOpen);
696
+ update();
697
+ },
698
+ className: "eds-datepicker__open-calendar-button"
699
+ }), React.createElement(CalendarIcon, null))),
700
+ prepend: prepend,
701
+ className: classNames('eds-datepicker', className, {
702
+ 'eds-datepicker--disabled': disabled
703
+ }),
704
+ disabled: disabled,
705
+ readOnly: readOnly,
706
+ feedback: feedback,
707
+ labelProps: labelProps,
708
+ labelTooltip: labelTooltip,
709
+ maxDate: maxDate,
710
+ minDate: minDate,
711
+ dateFieldRef: function dateFieldRef(node) {
712
+ refs.setReference(node);
713
+ datePickerRef.current = node;
714
+ },
715
+ selectedDate: selectedDate,
716
+ showTime: showTime,
717
+ showTimeZone: showTimeZone,
718
+ validationFeedback: validationFeedback,
719
+ validationVariant: validationVariant,
720
+ variant: variant
721
+ })), isModal ? modalCalendar : popoverCalendar);
722
+ };
723
+
724
+ var _excluded$4 = ["className", "style", "label", "onChange", "feedback", "variant", "disableLabelAnimation", "prepend"],
725
+ _excluded2$2 = ["onChange", "variant", "value"];
726
+ var NativeDatePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
727
+ var className = _ref.className,
728
+ style = _ref.style,
729
+ label = _ref.label,
730
+ onChange = _ref.onChange,
731
+ feedback = _ref.feedback,
732
+ variant = _ref.variant,
733
+ disableLabelAnimation = _ref.disableLabelAnimation,
734
+ _ref$prepend = _ref.prepend,
735
+ prepend = _ref$prepend === void 0 ? React.createElement(DateIcon, {
736
+ inline: true
737
+ }) : _ref$prepend,
738
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
739
+ var nativedatepickerId = useRandomId('eds-nativetimepicker');
740
+ return React.createElement(BaseFormControl, {
741
+ style: style,
742
+ className: className,
743
+ prepend: prepend,
744
+ label: label,
745
+ feedback: feedback,
746
+ variant: variant,
747
+ labelId: nativedatepickerId,
748
+ disableLabelAnimation: disableLabelAnimation,
749
+ isFilled: true
750
+ }, React.createElement(NativeDatePickerBase, _extends({
751
+ onChange: onChange,
752
+ "aria-labelledby": nativedatepickerId,
753
+ ref: ref,
754
+ variant: variant
755
+ }, rest)));
756
+ });
757
+ var NativeDatePickerBase = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
758
+ var onChange = _ref2.onChange,
759
+ variant = _ref2.variant,
760
+ value = _ref2.value,
761
+ rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$2);
762
+ var contextVariant = useVariant();
763
+ var currentVariant = variant || contextVariant;
764
+ var _useInputGroupContext = useInputGroupContext(),
765
+ isDatepickerFilled = _useInputGroupContext.isFilled,
766
+ setFiller = _useInputGroupContext.setFilled;
767
+ useOnMount(function () {
747
768
  setFiller && !isDatepickerFilled && setFiller(true);
748
769
  });
749
- React.useEffect(() => {
770
+ React.useEffect(function () {
750
771
  if (value) {
751
772
  setFiller && !isDatepickerFilled && setFiller(true);
752
773
  } else {
753
774
  setFiller && isDatepickerFilled && setFiller(false);
754
775
  }
755
776
  }, [value, setFiller, isDatepickerFilled]);
756
- const handleChange = (event) => {
777
+ var handleChange = function handleChange(event) {
757
778
  if (isFilled(event.target)) {
758
779
  setFiller && !isDatepickerFilled && setFiller(true);
759
780
  } else {
@@ -763,243 +784,236 @@ const NativeDatePickerBase = React.forwardRef(({ onChange, variant, value, ...re
763
784
  onChange(event);
764
785
  }
765
786
  };
766
- return /* @__PURE__ */ jsx(
767
- "input",
768
- {
769
- ref,
770
- "aria-invalid": currentVariant === "error",
771
- type: "date",
772
- className: "eds-form-control eds-native-date-picker",
773
- onChange: handleChange,
774
- value,
775
- ...rest
776
- }
777
- );
787
+ return React.createElement("input", _extends({
788
+ ref: ref,
789
+ "aria-invalid": currentVariant === 'error',
790
+ type: "date",
791
+ className: "eds-form-control eds-native-date-picker",
792
+ onChange: handleChange,
793
+ value: value
794
+ }, rest));
778
795
  });
779
- const TimePickerArrowButton = ({
780
- direction,
781
- onClick,
782
- disabled,
783
- readonly,
784
- "aria-label": ariaLabel,
785
- ...rest
786
- }) => {
787
- return /* @__PURE__ */ jsx(
788
- IconButton,
789
- {
790
- className: classNames(
791
- "eds-timepicker__arrowbutton",
792
- `eds-timepicker__arrowbutton--${direction}`,
793
- { "eds-timepicker__arrowbutton--disabled": disabled }
794
- ),
795
- type: "button",
796
- tabIndex: -1,
797
- onClick,
798
- "aria-label": ariaLabel,
799
- disabled,
800
- ...rest,
801
- children: direction === "left" ? /* @__PURE__ */ jsx(LeftArrowIcon, {}) : /* @__PURE__ */ jsx(RightArrowIcon, {})
802
- }
803
- );
796
+
797
+ var _excluded$3 = ["direction", "onClick", "disabled", "readonly", "aria-label"];
798
+ var TimePickerArrowButton = function TimePickerArrowButton(_ref) {
799
+ var direction = _ref.direction,
800
+ onClick = _ref.onClick,
801
+ disabled = _ref.disabled,
802
+ ariaLabel = _ref['aria-label'],
803
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
804
+ return React.createElement(IconButton, _extends({
805
+ className: classNames('eds-timepicker__arrowbutton', "eds-timepicker__arrowbutton--" + direction, {
806
+ 'eds-timepicker__arrowbutton--disabled': disabled
807
+ }),
808
+ type: "button",
809
+ tabIndex: -1,
810
+ onClick: onClick,
811
+ "aria-label": ariaLabel,
812
+ disabled: disabled
813
+ }, rest), direction === 'left' ? React.createElement(LeftArrowIcon, null) : React.createElement(RightArrowIcon, null));
804
814
  };
805
- const TimePicker = ({
806
- selectedTime,
807
- onChange,
808
- disabled,
809
- readOnly,
810
- className,
811
- style,
812
- label,
813
- labelTooltip,
814
- feedback,
815
- granularity,
816
- variant,
817
- locale: customLocale,
818
- showTimeZone,
819
- showSeconds = false,
820
- minuteIncrementForArrowButtons = 30,
821
- leftArrowButtonAriaLabel = `Trekk fra ${minuteIncrementForArrowButtons} minutter`,
822
- rightArrowButtonAriaLabel = `Legg til ${minuteIncrementForArrowButtons} minutter`,
823
- inputRef,
824
- forcedReturnType,
825
- forcedTimeZone,
826
- append,
827
- prepend,
828
- ...rest
829
- }) => {
830
- let { locale } = useLocale();
815
+
816
+ var _excluded$2 = ["selectedTime", "onChange", "disabled", "readOnly", "className", "style", "label", "labelTooltip", "feedback", "granularity", "variant", "locale", "showTimeZone", "showSeconds", "minuteIncrementForArrowButtons", "leftArrowButtonAriaLabel", "rightArrowButtonAriaLabel", "inputRef", "forcedReturnType", "forcedTimeZone", "append", "prepend"];
817
+ var TimePicker = function TimePicker(_ref) {
818
+ var selectedTime = _ref.selectedTime,
819
+ onChange = _ref.onChange,
820
+ disabled = _ref.disabled,
821
+ readOnly = _ref.readOnly,
822
+ className = _ref.className,
823
+ style = _ref.style,
824
+ label = _ref.label,
825
+ labelTooltip = _ref.labelTooltip,
826
+ feedback = _ref.feedback,
827
+ granularity = _ref.granularity,
828
+ variant = _ref.variant,
829
+ customLocale = _ref.locale,
830
+ showTimeZone = _ref.showTimeZone,
831
+ _ref$showSeconds = _ref.showSeconds,
832
+ showSeconds = _ref$showSeconds === void 0 ? false : _ref$showSeconds,
833
+ _ref$minuteIncrementF = _ref.minuteIncrementForArrowButtons,
834
+ minuteIncrementForArrowButtons = _ref$minuteIncrementF === void 0 ? 30 : _ref$minuteIncrementF,
835
+ _ref$leftArrowButtonA = _ref.leftArrowButtonAriaLabel,
836
+ leftArrowButtonAriaLabel = _ref$leftArrowButtonA === void 0 ? "Trekk fra " + minuteIncrementForArrowButtons + " minutter" : _ref$leftArrowButtonA,
837
+ _ref$rightArrowButton = _ref.rightArrowButtonAriaLabel,
838
+ rightArrowButtonAriaLabel = _ref$rightArrowButton === void 0 ? "Legg til " + minuteIncrementForArrowButtons + " minutter" : _ref$rightArrowButton,
839
+ inputRef = _ref.inputRef,
840
+ forcedReturnType = _ref.forcedReturnType,
841
+ forcedTimeZone = _ref.forcedTimeZone,
842
+ append = _ref.append,
843
+ prepend = _ref.prepend,
844
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
845
+ var _useLocale = useLocale(),
846
+ locale = _useLocale.locale;
831
847
  if (customLocale) locale = customLocale;
832
- const timePickerId = useRandomId("eds-timepicker");
833
- const timeZone = forcedTimeZone ?? (selectedTime !== null && "timezone" in selectedTime ? selectedTime.timezone : "Europe/Oslo");
834
- const handleOnChange2 = (value) => {
835
- if (forcedReturnType !== void 0 || !selectedTime) {
836
- return onChange(
837
- convertValueToType({
838
- value,
839
- type: forcedReturnType ?? "ZonedDateTime",
840
- timezone: timeZone
841
- })
842
- );
848
+ var timePickerId = useRandomId('eds-timepicker');
849
+ var timeZone = forcedTimeZone != null ? forcedTimeZone : selectedTime !== null && 'timezone' in selectedTime ? selectedTime.timezone : 'Europe/Oslo';
850
+ var handleOnChange = function handleOnChange(value) {
851
+ if (forcedReturnType !== undefined || !selectedTime) {
852
+ return onChange(convertValueToType({
853
+ value: value,
854
+ type: forcedReturnType != null ? forcedReturnType : 'ZonedDateTime',
855
+ timezone: timeZone
856
+ }));
843
857
  }
844
858
  onChange(value);
845
859
  };
846
- const state = useTimeFieldState({
847
- onChange: handleOnChange2,
848
- label,
849
- locale,
860
+ var state = useTimeFieldState(_extends({
861
+ onChange: handleOnChange,
862
+ label: label,
863
+ locale: locale,
850
864
  value: selectedTime,
851
- granularity: granularity ?? showSeconds ? "second" : "minute",
865
+ granularity: (granularity != null ? granularity : showSeconds) ? 'second' : 'minute',
852
866
  hideTimeZone: !showTimeZone,
853
867
  isDisabled: disabled || readOnly,
854
- shouldForceLeadingZeros: true,
855
- ...rest
856
- });
857
- const timeFieldRef = useRef(null);
858
- const { labelProps, fieldProps } = useTimeField(
859
- { ...rest, label },
860
- state,
861
- timeFieldRef
862
- );
863
- const id = useRandomId("timepicker");
864
- const getCurrentTime = () => {
865
- const getCurrentTimeWithCorrectType = convertValueToType({
868
+ shouldForceLeadingZeros: true
869
+ }, rest));
870
+ var timeFieldRef = useRef(null);
871
+ var _useTimeField = useTimeField(_extends({}, rest, {
872
+ label: label
873
+ }), state, timeFieldRef),
874
+ labelProps = _useTimeField.labelProps,
875
+ fieldProps = _useTimeField.fieldProps;
876
+ var id = useRandomId('timepicker');
877
+ var getCurrentTime = function getCurrentTime() {
878
+ var getCurrentTimeWithCorrectType = convertValueToType({
866
879
  value: now(timeZone),
867
- type: forcedReturnType ?? "ZonedDateTime"
880
+ type: forcedReturnType != null ? forcedReturnType : 'ZonedDateTime'
868
881
  });
869
882
  return getCurrentTimeWithCorrectType;
870
883
  };
871
- const handleOnClickArrowButton = (operation) => {
872
- if (selectedTime === null) return handleOnChange2(getCurrentTime());
884
+ var handleOnClickArrowButton = function handleOnClickArrowButton(operation) {
885
+ if (selectedTime === null) return handleOnChange(getCurrentTime());
873
886
  switch (operation) {
874
- case "add":
875
- return handleOnChange2(
876
- selectedTime.add({
877
- minutes: minuteIncrementForArrowButtons - modulo(selectedTime.minute, minuteIncrementForArrowButtons)
878
- })
879
- );
880
- case "subtract":
881
- return handleOnChange2(
882
- selectedTime.subtract({
883
- minutes: modulo(selectedTime.minute - 1, minuteIncrementForArrowButtons) + 1
884
- })
885
- );
887
+ case 'add':
888
+ return handleOnChange(selectedTime.add({
889
+ minutes: minuteIncrementForArrowButtons - modulo(selectedTime.minute, minuteIncrementForArrowButtons)
890
+ }));
891
+ case 'subtract':
892
+ return handleOnChange(selectedTime.subtract({
893
+ minutes: modulo(selectedTime.minute - 1, minuteIncrementForArrowButtons) + 1
894
+ }));
886
895
  }
887
896
  };
888
- return /* @__PURE__ */ jsx(I18nProvider, { locale, children: /* @__PURE__ */ jsxs(
889
- BaseFormControl,
890
- {
891
- append: /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [
892
- append,
893
- /* @__PURE__ */ jsx(
894
- TimePickerArrowButton,
895
- {
896
- direction: "right",
897
- disabled: disabled || readOnly,
898
- "aria-label": rightArrowButtonAriaLabel,
899
- onClick: () => handleOnClickArrowButton("add"),
900
- onFocus: () => focusSegment(timeFieldRef, "last")
901
- }
902
- )
903
- ] }),
904
- ariaAlertOnFeedback: true,
905
- "aria-describedby": timePickerId + "description",
906
- className: classNames("eds-timepicker", className, {
907
- "eds-timepicker--disabled": disabled,
908
- "eds-timepicker--has-tooltip": labelTooltip !== void 0,
909
- "eds-timepicker--readonly": readOnly
910
- }),
911
- disabled,
912
- readOnly,
913
- disableLabelAnimation: true,
914
- feedback,
915
- label,
916
- labelId: id,
917
- labelProps: {
918
- ...labelProps,
919
- "aria-describedby": timePickerId + "description"
897
+ return React.createElement(I18nProvider, {
898
+ locale: locale
899
+ }, React.createElement(BaseFormControl, {
900
+ append: React.createElement("div", {
901
+ style: {
902
+ display: 'flex',
903
+ alignItems: 'center'
904
+ }
905
+ }, append, React.createElement(TimePickerArrowButton, {
906
+ direction: "right",
907
+ disabled: disabled || readOnly,
908
+ "aria-label": rightArrowButtonAriaLabel,
909
+ onClick: function onClick() {
910
+ return handleOnClickArrowButton('add');
911
+ },
912
+ onFocus: function onFocus() {
913
+ return focusSegment(timeFieldRef, 'last');
914
+ }
915
+ })),
916
+ ariaAlertOnFeedback: true,
917
+ "aria-describedby": timePickerId + 'description',
918
+ className: classNames('eds-timepicker', className, {
919
+ 'eds-timepicker--disabled': disabled,
920
+ 'eds-timepicker--has-tooltip': labelTooltip !== undefined,
921
+ 'eds-timepicker--readonly': readOnly
922
+ }),
923
+ disabled: disabled,
924
+ readOnly: readOnly,
925
+ disableLabelAnimation: true,
926
+ feedback: feedback,
927
+ label: label,
928
+ labelId: id,
929
+ labelProps: _extends({}, labelProps, {
930
+ 'aria-describedby': timePickerId + 'description'
931
+ }),
932
+ labelTooltip: labelTooltip,
933
+ prepend: React.createElement("div", {
934
+ style: {
935
+ display: 'flex',
936
+ alignItems: 'center'
937
+ }
938
+ }, React.createElement(TimePickerArrowButton, {
939
+ direction: "left",
940
+ disabled: disabled || readOnly,
941
+ "aria-label": leftArrowButtonAriaLabel,
942
+ onClick: function onClick() {
943
+ return handleOnClickArrowButton('subtract');
920
944
  },
921
- labelTooltip,
922
- prepend: /* @__PURE__ */ jsxs("div", { style: { display: "flex", alignItems: "center" }, children: [
923
- /* @__PURE__ */ jsx(
924
- TimePickerArrowButton,
925
- {
926
- direction: "left",
927
- disabled: disabled || readOnly,
928
- "aria-label": leftArrowButtonAriaLabel,
929
- onClick: () => handleOnClickArrowButton("subtract"),
930
- onFocus: () => focusSegment(timeFieldRef, "first")
931
- }
932
- ),
933
- prepend
934
- ] }),
935
- ref: inputRef,
936
- style,
937
- variant,
938
- children: [
939
- /* @__PURE__ */ jsx(
940
- "span",
941
- {
942
- ref: timeFieldRef,
943
- ...fieldProps,
944
- style: { display: "contents" },
945
- children: state.segments.map((segment, i) => /* @__PURE__ */ jsx(
946
- FieldSegment,
947
- {
948
- segment,
949
- state,
950
- "aria-describedby": timePickerId + "description"
951
- },
952
- i
953
- ))
954
- }
955
- ),
956
- /* @__PURE__ */ jsx(VisuallyHidden, { id: timePickerId + "description", children: selectedTime !== null ? "valgt tid: " + selectedTime.hour.toString().padStart(2, "0") + ":" + selectedTime.minute.toString().padStart(2, "0") + (showSeconds ? ":" + selectedTime.second.toString().padStart(2, "0") : "") : "" })
957
- ]
945
+ onFocus: function onFocus() {
946
+ return focusSegment(timeFieldRef, 'first');
947
+ }
948
+ }), prepend),
949
+ ref: inputRef,
950
+ style: style,
951
+ variant: variant
952
+ }, React.createElement("span", _extends({
953
+ ref: timeFieldRef
954
+ }, fieldProps, {
955
+ style: {
956
+ display: 'contents'
958
957
  }
959
- ) });
958
+ }), state.segments.map(function (segment, i) {
959
+ return React.createElement(FieldSegment, {
960
+ segment: segment,
961
+ state: state,
962
+ key: i,
963
+ "aria-describedby": timePickerId + 'description'
964
+ });
965
+ })), React.createElement(VisuallyHidden, {
966
+ id: timePickerId + 'description'
967
+ }, selectedTime !== null ? 'valgt tid: ' + selectedTime.hour.toString().padStart(2, '0') + ':' + selectedTime.minute.toString().padStart(2, '0') + (showSeconds ? ':' + selectedTime.second.toString().padStart(2, '0') : '') : '')));
960
968
  };
961
- const NativeTimePicker = React.forwardRef(
962
- ({ className, style, onChange, label, feedback, variant, prepend, ...rest }, ref) => {
963
- const nativetimepickerId = useRandomId("eds-native-timepicker");
964
- return /* @__PURE__ */ jsx(
965
- BaseFormControl,
966
- {
967
- style,
968
- className: classNames(className, "eds-native-timepicker"),
969
- prepend,
970
- label,
971
- feedback,
972
- variant,
973
- labelId: nativetimepickerId,
974
- disableLabelAnimation: true,
975
- children: /* @__PURE__ */ jsx(
976
- NativeTimePickerBase,
977
- {
978
- onChange,
979
- "aria-labelledby": nativetimepickerId,
980
- ref,
981
- ...rest
982
- }
983
- )
984
- }
985
- );
986
- }
987
- );
988
- const NativeTimePickerBase = React.forwardRef(({ onChange, value, ...rest }, ref) => {
989
- const contextVariant = useVariant();
990
- const currentVariant = rest.variant || contextVariant;
991
- const { isFilled: isTimepickerFilled, setFilled: setFiller } = useInputGroupContext();
992
- useOnMount(() => {
969
+
970
+ var _excluded$1 = ["className", "style", "onChange", "label", "feedback", "variant", "prepend"],
971
+ _excluded2$1 = ["onChange", "value"];
972
+ var NativeTimePicker = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
973
+ var className = _ref.className,
974
+ style = _ref.style,
975
+ onChange = _ref.onChange,
976
+ label = _ref.label,
977
+ feedback = _ref.feedback,
978
+ variant = _ref.variant,
979
+ prepend = _ref.prepend,
980
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
981
+ var nativetimepickerId = useRandomId('eds-native-timepicker');
982
+ return React.createElement(BaseFormControl, {
983
+ style: style,
984
+ className: classNames(className, 'eds-native-timepicker'),
985
+ prepend: prepend,
986
+ label: label,
987
+ feedback: feedback,
988
+ variant: variant,
989
+ labelId: nativetimepickerId,
990
+ disableLabelAnimation: true
991
+ }, React.createElement(NativeTimePickerBase, _extends({
992
+ onChange: onChange,
993
+ "aria-labelledby": nativetimepickerId,
994
+ ref: ref
995
+ }, rest)));
996
+ });
997
+ var NativeTimePickerBase = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
998
+ var onChange = _ref2.onChange,
999
+ value = _ref2.value,
1000
+ rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$1);
1001
+ var contextVariant = useVariant();
1002
+ var currentVariant = rest.variant || contextVariant;
1003
+ var _useInputGroupContext = useInputGroupContext(),
1004
+ isTimepickerFilled = _useInputGroupContext.isFilled,
1005
+ setFiller = _useInputGroupContext.setFilled;
1006
+ useOnMount(function () {
993
1007
  setFiller && !isTimepickerFilled && setFiller(true);
994
1008
  });
995
- React.useEffect(() => {
1009
+ React.useEffect(function () {
996
1010
  if (value) {
997
1011
  setFiller && !isTimepickerFilled && setFiller(true);
998
1012
  } else {
999
1013
  setFiller && isTimepickerFilled && setFiller(false);
1000
1014
  }
1001
1015
  }, [value, setFiller, isTimepickerFilled]);
1002
- const handleChange = (event) => {
1016
+ var handleChange = function handleChange(event) {
1003
1017
  if (isFilled(event.target)) {
1004
1018
  setFiller && !isTimepickerFilled && setFiller(true);
1005
1019
  } else {
@@ -1009,224 +1023,211 @@ const NativeTimePickerBase = React.forwardRef(({ onChange, value, ...rest }, ref
1009
1023
  onChange(event);
1010
1024
  }
1011
1025
  };
1012
- return /* @__PURE__ */ jsx(
1013
- "input",
1014
- {
1015
- ref,
1016
- "aria-invalid": currentVariant === "error",
1017
- type: "time",
1018
- className: "eds-form-control",
1019
- onChange: handleChange,
1020
- value,
1021
- ...rest
1022
- }
1023
- );
1026
+ return React.createElement("input", _extends({
1027
+ ref: ref,
1028
+ "aria-invalid": currentVariant === 'error',
1029
+ type: "time",
1030
+ className: "eds-form-control",
1031
+ onChange: handleChange,
1032
+ value: value
1033
+ }, rest));
1024
1034
  });
1025
- const SimpleTimePicker = ({
1026
- append,
1027
- className,
1028
- disabled,
1029
- feedback,
1030
- showClockIcon = "right",
1031
- inputRef,
1032
- label,
1033
- labelTooltip,
1034
- onChange,
1035
- padding = "default",
1036
- prepend,
1037
- readOnly,
1038
- selectedTime,
1039
- showSeconds,
1040
- style,
1041
- variant,
1042
- ...rest
1043
- }) => {
1044
- const [inputText, setInputText] = useState("");
1045
- const timeFieldRef = useRef(null);
1046
- const [lastValidSelectedTime, setLastValidSelectedTime] = useState(null);
1047
- const { locale } = useLocale();
1048
- const state = useTimeFieldState({
1049
- onChange,
1050
- label,
1051
- locale,
1035
+
1036
+ var _excluded = ["append", "className", "disabled", "feedback", "showClockIcon", "inputRef", "label", "labelTooltip", "onChange", "padding", "prepend", "readOnly", "selectedTime", "showSeconds", "style", "variant"],
1037
+ _excluded2 = ["onBlur", "onClick", "onDragStart", "onFocus", "onKeyDown", "onKeyUp", "onMouseDown", "onPointerDown", "onPointerUp"];
1038
+ var inputResult;
1039
+ (function (inputResult) {
1040
+ inputResult[inputResult["RESET_TIME"] = 0] = "RESET_TIME";
1041
+ inputResult[inputResult["INVALID"] = 1] = "INVALID";
1042
+ })(inputResult || (inputResult = {}));
1043
+ var SimpleTimePicker = function SimpleTimePicker(_ref) {
1044
+ var append = _ref.append,
1045
+ disabled = _ref.disabled,
1046
+ feedback = _ref.feedback,
1047
+ _ref$showClockIcon = _ref.showClockIcon,
1048
+ showClockIcon = _ref$showClockIcon === void 0 ? 'right' : _ref$showClockIcon,
1049
+ inputRef = _ref.inputRef,
1050
+ label = _ref.label,
1051
+ labelTooltip = _ref.labelTooltip,
1052
+ onChange = _ref.onChange,
1053
+ _ref$padding = _ref.padding,
1054
+ padding = _ref$padding === void 0 ? 'default' : _ref$padding,
1055
+ prepend = _ref.prepend,
1056
+ readOnly = _ref.readOnly,
1057
+ selectedTime = _ref.selectedTime,
1058
+ showSeconds = _ref.showSeconds,
1059
+ style = _ref.style,
1060
+ variant = _ref.variant,
1061
+ rest = _objectWithoutPropertiesLoose(_ref, _excluded);
1062
+ var _useState = useState(''),
1063
+ inputText = _useState[0],
1064
+ setInputText = _useState[1];
1065
+ var timeFieldRef = useRef(null);
1066
+ var _useState2 = useState(null),
1067
+ lastValidSelectedTime = _useState2[0],
1068
+ setLastValidSelectedTime = _useState2[1];
1069
+ var _useLocale = useLocale(),
1070
+ locale = _useLocale.locale;
1071
+ var state = useTimeFieldState(_extends({
1072
+ onChange: onChange,
1073
+ label: label,
1074
+ locale: locale,
1052
1075
  value: selectedTime,
1053
1076
  hideTimeZone: true,
1054
1077
  isDisabled: disabled,
1055
- isReadOnly: readOnly,
1056
- ...rest
1057
- });
1058
- const { labelProps, fieldProps } = useTimeField(
1059
- { ...rest, label },
1060
- state,
1061
- timeFieldRef
1062
- );
1063
- useEffect(() => {
1078
+ isReadOnly: readOnly
1079
+ }, rest));
1080
+ var _useTimeField = useTimeField(_extends({}, rest, {
1081
+ label: label
1082
+ }), state, timeFieldRef),
1083
+ labelProps = _useTimeField.labelProps,
1084
+ fieldProps = _useTimeField.fieldProps;
1085
+ useEffect(function () {
1064
1086
  updateInputWithSelectedTime();
1087
+ // @ts-expect-error TimeType and MappedTimeValue<TimeType> is actually the same
1065
1088
  if (selectedTime !== null) setLastValidSelectedTime(selectedTime);
1066
- }, [selectedTime?.toString()]);
1067
- const updateInputWithSelectedTime = () => {
1068
- const selectedTimeString = getStringFromTimeValue(selectedTime);
1089
+ }, [selectedTime == null ? void 0 : selectedTime.toString()]);
1090
+ var updateInputWithSelectedTime = function updateInputWithSelectedTime() {
1091
+ var selectedTimeString = getStringFromTimeValue(selectedTime);
1069
1092
  setInputText(selectedTimeString);
1070
- const timeFieldIsFocused = document.activeElement === timeFieldRef?.current;
1071
- if (selectedTimeString === "" && !timeFieldIsFocused)
1072
- addPlaceholderToInput();
1093
+ var timeFieldIsFocused = document.activeElement === (timeFieldRef == null ? void 0 : timeFieldRef.current);
1094
+ if (selectedTimeString === '' && !timeFieldIsFocused) addPlaceholderToInput();
1073
1095
  };
1074
- const getStringFromTimeValue = (timeValue) => {
1075
- if (timeValue === null) return "";
1076
- const timeObject = "day" in timeValue ? toTime(timeValue) : timeValue;
1096
+ var getStringFromTimeValue = function getStringFromTimeValue(timeValue) {
1097
+ if (timeValue === null) return '';
1098
+ var timeObject = 'day' in timeValue ? toTime(timeValue) : timeValue;
1077
1099
  if (showSeconds) return timeObject.toString().slice(0, 8);
1078
1100
  return timeObject.toString().slice(0, 5);
1079
1101
  };
1080
- const addPlaceholderToInput = () => {
1081
- if (showSeconds) setInputText("–– : –– : ––");
1082
- else setInputText("–– : ––");
1102
+ var addPlaceholderToInput = function addPlaceholderToInput() {
1103
+ if (showSeconds) setInputText('–– : –– : ––');else setInputText('–– : ––');
1083
1104
  };
1084
- const handleChangeTime = () => {
1085
- const newTime = getValueForOnChangeFromInput();
1086
- if (newTime === 1) {
1105
+ var handleChangeTime = function handleChangeTime() {
1106
+ var newTime = getValueForOnChangeFromInput();
1107
+ if (newTime === inputResult.INVALID) {
1087
1108
  return updateInputWithSelectedTime();
1088
1109
  }
1089
- if (newTime?.toString() !== selectedTime?.toString()) onChange?.(newTime);
1110
+ if ((newTime == null ? void 0 : newTime.toString()) !== (selectedTime == null ? void 0 : selectedTime.toString())) onChange == null || onChange(newTime);
1090
1111
  };
1091
- const getValueForOnChangeFromInput = () => {
1092
- const formatedTimeString = formatTimeString(inputText);
1093
- const newTimeObject = formatedTimeStringToTimeObject(formatedTimeString);
1094
- if (newTimeObject === 1) {
1095
- return 1;
1112
+ var getValueForOnChangeFromInput = function getValueForOnChangeFromInput() {
1113
+ var formatedTimeString = formatTimeString(inputText);
1114
+ var newTimeObject = formatedTimeStringToTimeObject(formatedTimeString);
1115
+ if (newTimeObject === inputResult.INVALID) {
1116
+ return inputResult.INVALID;
1096
1117
  }
1097
- if (newTimeObject === 0) {
1118
+ if (newTimeObject === inputResult.RESET_TIME) {
1098
1119
  return null;
1099
1120
  }
1100
- const updatedSelectedTime = getSelectedTimeWithTimeFromObject(newTimeObject);
1121
+ var updatedSelectedTime = getSelectedTimeWithTimeFromObject(newTimeObject);
1101
1122
  return updatedSelectedTime;
1102
1123
  };
1103
- const formatTimeString = (timeString) => {
1104
- if (timeString.length === 0) return 0;
1105
- if (timeString.length < 3 || timeString.length > 8)
1106
- return 1;
1107
- const numberOfColons = (timeString.match(new RegExp(":", "g")) || []).length;
1108
- const stringLength = timeString.length;
1124
+ var formatTimeString = function formatTimeString(timeString) {
1125
+ if (timeString.length === 0) return inputResult.RESET_TIME;
1126
+ if (timeString.length < 3 || timeString.length > 8) return inputResult.INVALID;
1127
+ var numberOfColons = (timeString.match(new RegExp(':', 'g')) || []).length;
1128
+ var stringLength = timeString.length;
1129
+ // targets 'd:dd:dd' and 'dd:dd:dd'
1109
1130
  if (numberOfColons === 2 && stringLength >= 7) {
1110
- return timeString.padStart(8, "0");
1131
+ return timeString.padStart(8, '0');
1111
1132
  }
1133
+ // targets 'd:dd' and 'dd:dd'
1112
1134
  if (numberOfColons === 1) {
1113
- return timeString.padStart(5, "0");
1135
+ return timeString.padStart(5, '0');
1114
1136
  }
1115
- if (stringLength > 6) return 1;
1116
- const stringLengthIsEven = stringLength % 2 == 0;
1117
- const hourString = stringLengthIsEven ? timeString.slice(0, 2) : timeString.slice(0, 1);
1118
- const minuteString = stringLengthIsEven ? timeString.slice(2, 4) : timeString.slice(1, 3);
1119
- const secondString = (() => {
1120
- const stringSlice = stringLengthIsEven ? timeString.slice(4, 6) : timeString.slice(3, 5);
1121
- if (stringSlice === "") return "00";
1137
+ if (stringLength > 6) return inputResult.INVALID;
1138
+ var stringLengthIsEven = stringLength % 2 == 0;
1139
+ var hourString = stringLengthIsEven ? timeString.slice(0, 2) : timeString.slice(0, 1);
1140
+ var minuteString = stringLengthIsEven ? timeString.slice(2, 4) : timeString.slice(1, 3);
1141
+ var secondString = function () {
1142
+ var stringSlice = stringLengthIsEven ? timeString.slice(4, 6) : timeString.slice(3, 5);
1143
+ if (stringSlice === '') return '00';
1122
1144
  return stringSlice;
1123
- })();
1124
- const timeStringWithColon = hourString.padStart(2, "0") + ":" + minuteString + (showSeconds ? ":" + secondString : "");
1145
+ }();
1146
+ var timeStringWithColon = hourString.padStart(2, '0') + ':' + minuteString + (showSeconds ? ':' + secondString : '');
1125
1147
  return timeStringWithColon;
1126
1148
  };
1127
- const formatedTimeStringToTimeObject = (formatedTimeString) => {
1128
- if (formatedTimeString === 1) return 1;
1129
- if (formatedTimeString === 0)
1130
- return 0;
1131
- const isNumberTest = /^\d+$/;
1132
- const hourString = formatedTimeString.slice(0, 2);
1133
- const minuteString = formatedTimeString.slice(3, 5);
1134
- const secondString = formatedTimeString.slice(6, 8);
1135
- if (hourString.match(isNumberTest) && minuteString.match(isNumberTest) && (secondString === "" || secondString.match(isNumberTest))) {
1149
+ var formatedTimeStringToTimeObject = function formatedTimeStringToTimeObject(formatedTimeString) {
1150
+ if (formatedTimeString === inputResult.INVALID) return inputResult.INVALID;
1151
+ if (formatedTimeString === inputResult.RESET_TIME) return inputResult.RESET_TIME;
1152
+ var isNumberTest = /^\d+$/;
1153
+ var hourString = formatedTimeString.slice(0, 2);
1154
+ var minuteString = formatedTimeString.slice(3, 5);
1155
+ var secondString = formatedTimeString.slice(6, 8);
1156
+ if (hourString.match(isNumberTest) && minuteString.match(isNumberTest) && (secondString === '' || secondString.match(isNumberTest))) {
1136
1157
  try {
1137
- const timeObject = parseTime(formatedTimeString);
1158
+ var timeObject = parseTime(formatedTimeString);
1138
1159
  return timeObject;
1139
1160
  } catch (e) {
1140
- return 1;
1161
+ return inputResult.INVALID;
1141
1162
  }
1142
1163
  }
1143
- return 1;
1164
+ return inputResult.INVALID;
1144
1165
  };
1145
- const getSelectedTimeWithTimeFromObject = (newTime) => {
1146
- const selectedTimeWithUpdateTime = (lastValidSelectedTime ?? new Time()).set({
1166
+ var getSelectedTimeWithTimeFromObject = function getSelectedTimeWithTimeFromObject(newTime) {
1167
+ var selectedTimeWithUpdateTime = (lastValidSelectedTime != null ? lastValidSelectedTime : new Time()).set({
1147
1168
  hour: newTime.hour,
1148
1169
  minute: newTime.minute,
1149
1170
  second: newTime.second
1150
1171
  });
1151
1172
  return selectedTimeWithUpdateTime;
1152
1173
  };
1153
- const {
1154
- onBlur,
1155
- onClick,
1156
- onDragStart,
1157
- onFocus,
1158
- onKeyDown,
1159
- onKeyUp,
1160
- onMouseDown,
1161
- onPointerDown,
1162
- onPointerUp,
1163
- ...usedFieldProps
1164
- } = fieldProps;
1165
- return /* @__PURE__ */ jsx(I18nProvider, { locale, children: /* @__PURE__ */ jsx(
1166
- TextField,
1167
- {
1168
- append: append || (showClockIcon === true || showClockIcon === "right" ? /* @__PURE__ */ jsx(ClockIcon, { onClick: () => timeFieldRef?.current?.focus(), inline: true }) : void 0),
1169
- className: classNames("eds-simple-timepicker", {
1170
- "eds-simple-timepicker--padding-large": padding === "large",
1171
- "eds-simple-timepicker--show-seconds": showSeconds,
1172
- "eds-simple-timepicker--hide-clock": !showClockIcon,
1173
- "eds-simple-timepicker--has-tooltip": labelTooltip !== void 0
1174
- }),
1175
- disabled,
1176
- disableLabelAnimation: true,
1177
- feedback,
1178
- label,
1179
- labelProps,
1180
- labelTooltip,
1181
- onBlur: () => {
1182
- handleChangeTime();
1183
- if (selectedTime === null) {
1184
- addPlaceholderToInput();
1185
- }
1174
+ var usedFieldProps = _objectWithoutPropertiesLoose(fieldProps, _excluded2);
1175
+ return React.createElement(I18nProvider, {
1176
+ locale: locale
1177
+ }, React.createElement(TextField, _extends({
1178
+ append: append || (showClockIcon === true || showClockIcon === 'right' ? React.createElement(ClockIcon, {
1179
+ onClick: function onClick() {
1180
+ var _timeFieldRef$current;
1181
+ return timeFieldRef == null || (_timeFieldRef$current = timeFieldRef.current) == null ? void 0 : _timeFieldRef$current.focus();
1186
1182
  },
1187
- onChange: (e) => setInputText(e.target.value),
1188
- onFocus: () => {
1189
- if (selectedTime === null) {
1190
- setInputText("");
1191
- }
1192
- },
1193
- onKeyDown: ({ key }) => {
1194
- if (key === "Enter") handleChangeTime();
1195
- },
1196
- placeholder: showSeconds ? "–– : –– : ––" : "–– : ––",
1197
- prepend: prepend || (showClockIcon === "left" ? /* @__PURE__ */ jsx(ClockIcon, { onClick: () => timeFieldRef?.current?.focus() }) : void 0),
1198
- readOnly,
1199
- ref: mergeRefs(timeFieldRef, inputRef),
1200
- style,
1201
- value: inputText,
1202
- variant,
1203
- ...usedFieldProps
1204
- }
1205
- ) });
1206
- };
1207
- warnAboutMissingStyles("datepicker", "form", "icons");
1208
- export {
1209
- Calendar,
1210
- CalendarDate2 as CalendarDate,
1211
- CalendarDateTime2 as CalendarDateTime,
1212
- DateField,
1213
- DatePicker,
1214
- NativeDatePicker,
1215
- NativeTimePicker,
1216
- SimpleTimePicker,
1217
- Time2 as Time,
1218
- TimePicker,
1219
- ZonedDateTime2 as ZonedDateTime,
1220
- ariaLabelIfNorwegian,
1221
- convertValueToType,
1222
- createCalendar,
1223
- focusSegment,
1224
- getWeekNumberForDate,
1225
- handleOnChange,
1226
- lastMillisecondOfDay,
1227
- modulo,
1228
- nativeDateToDateValue,
1229
- nativeDateToTimeValue,
1230
- timeOrDateValueToNativeDate
1183
+ inline: true
1184
+ }) : undefined),
1185
+ className: classNames('eds-simple-timepicker', {
1186
+ 'eds-simple-timepicker--padding-large': padding === 'large',
1187
+ 'eds-simple-timepicker--show-seconds': showSeconds,
1188
+ 'eds-simple-timepicker--hide-clock': !showClockIcon,
1189
+ 'eds-simple-timepicker--has-tooltip': labelTooltip !== undefined
1190
+ }),
1191
+ disabled: disabled,
1192
+ disableLabelAnimation: true,
1193
+ feedback: feedback,
1194
+ label: label,
1195
+ labelProps: labelProps,
1196
+ labelTooltip: labelTooltip,
1197
+ onBlur: function onBlur() {
1198
+ handleChangeTime();
1199
+ if (selectedTime === null) {
1200
+ addPlaceholderToInput();
1201
+ }
1202
+ },
1203
+ onChange: function onChange(e) {
1204
+ return setInputText(e.target.value);
1205
+ },
1206
+ onFocus: function onFocus() {
1207
+ if (selectedTime === null) {
1208
+ setInputText('');
1209
+ }
1210
+ },
1211
+ onKeyDown: function onKeyDown(_ref2) {
1212
+ var key = _ref2.key;
1213
+ if (key === 'Enter') handleChangeTime();
1214
+ },
1215
+ placeholder: showSeconds ? '–– : –– : ––' : '–– : ––',
1216
+ prepend: prepend || (showClockIcon === 'left' ? React.createElement(ClockIcon, {
1217
+ onClick: function onClick() {
1218
+ var _timeFieldRef$current2;
1219
+ return timeFieldRef == null || (_timeFieldRef$current2 = timeFieldRef.current) == null ? void 0 : _timeFieldRef$current2.focus();
1220
+ }
1221
+ }) : undefined),
1222
+ readOnly: readOnly,
1223
+ ref: mergeRefs(timeFieldRef, inputRef),
1224
+ style: style,
1225
+ value: inputText,
1226
+ variant: variant
1227
+ }, usedFieldProps)));
1231
1228
  };
1229
+
1230
+ warnAboutMissingStyles('datepicker', 'form', 'icons');
1231
+
1232
+ export { Calendar, DateField, DatePicker, NativeDatePicker, NativeTimePicker, SimpleTimePicker, TimePicker, ariaLabelIfNorwegian, convertValueToType, createCalendar, focusSegment, getWeekNumberForDate, handleOnChange, lastMillisecondOfDay, modulo, nativeDateToDateValue, nativeDateToTimeValue, timeOrDateValueToNativeDate };
1232
1233
  //# sourceMappingURL=datepicker.esm.js.map