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