@entur/datepicker 8.1.7 → 9.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DatePicker/Calendar.d.ts +14 -0
- package/dist/DatePicker/DateField.d.ts +11 -2
- package/dist/DatePicker/DatePicker.d.ts +10 -4
- package/dist/datepicker.cjs.development.js +89 -101
- package/dist/datepicker.cjs.development.js.map +1 -1
- package/dist/datepicker.cjs.production.min.js +1 -1
- package/dist/datepicker.cjs.production.min.js.map +1 -1
- package/dist/datepicker.esm.js +90 -103
- package/dist/datepicker.esm.js.map +1 -1
- package/dist/shared/utils.d.ts +11 -10
- package/dist/styles.css +30 -31
- package/package.json +6 -10
|
@@ -7,6 +7,20 @@ type CalendarProps = {
|
|
|
7
7
|
navigationDescription?: string;
|
|
8
8
|
style?: React.CSSProperties;
|
|
9
9
|
onSelectedCellClick?: () => void;
|
|
10
|
+
/** Tidligste gyldige datovalg.
|
|
11
|
+
* Eks: today(getLocalTimeZone()) == i dag i lokal tidssone.
|
|
12
|
+
*
|
|
13
|
+
* OBS: Hvis du bruker dato med tid vil tidspunktet også tas hensyn til.
|
|
14
|
+
* Gyldig fra og med den tiden som legges inn som minDate.
|
|
15
|
+
* Dato uten tid vil være gyldig hele minDate-dagen */
|
|
16
|
+
minDate?: DateValue;
|
|
17
|
+
/** Seneste gyldige datovalg.
|
|
18
|
+
* Eks: today(getLocalTimeZone()).add({days: 1}) == i morgen i lokal tidssone
|
|
19
|
+
*
|
|
20
|
+
* OBS: Hvis du bruker dato med tid vil tidspunktet også tas hensyn til.
|
|
21
|
+
* Gyldig til og med den tiden som legges inn som maxDate.
|
|
22
|
+
* Dato uten tid vil være gyldig hele maxDate-dagen */
|
|
23
|
+
maxDate?: DateValue;
|
|
10
24
|
[key: string]: any;
|
|
11
25
|
};
|
|
12
26
|
export declare const Calendar: React.ForwardRefExoticComponent<Omit<CalendarProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
@@ -19,9 +19,18 @@ export type DateFieldProps = {
|
|
|
19
19
|
showTimeZone?: boolean;
|
|
20
20
|
showTime?: boolean;
|
|
21
21
|
/** Tidligste gyldige datovalg.
|
|
22
|
-
* Eks: today(getLocalTimeZone()) == i dag i lokal tidssone
|
|
22
|
+
* Eks: today(getLocalTimeZone()) == i dag i lokal tidssone.
|
|
23
|
+
*
|
|
24
|
+
* OBS: Hvis du bruker dato med tid vil tidspunktet også tas hensyn til.
|
|
25
|
+
* Gyldig fra og med den tiden som legges inn som minDate.
|
|
26
|
+
* Dato uten tid vil være gyldig hele minDate-dagen */
|
|
23
27
|
minDate?: DateValue;
|
|
24
|
-
/** Seneste gyldige datovalg.
|
|
28
|
+
/** Seneste gyldige datovalg.
|
|
29
|
+
* Eks: today(getLocalTimeZone()).add({days: 1}) == i morgen i lokal tidssone
|
|
30
|
+
*
|
|
31
|
+
* OBS: Hvis du bruker dato med tid vil tidspunktet også tas hensyn til.
|
|
32
|
+
* Gyldig til og med den tiden som legges inn som maxDate.
|
|
33
|
+
* Dato uten tid vil være gyldig hele maxDate-dagen */
|
|
25
34
|
maxDate?: DateValue;
|
|
26
35
|
/** Varselmelding, som vil komme under TimePicker */
|
|
27
36
|
feedback?: string;
|
|
@@ -22,12 +22,18 @@ export type DatePickerProps<DateType extends DateValue> = {
|
|
|
22
22
|
*/
|
|
23
23
|
showTime?: boolean;
|
|
24
24
|
/** Tidligste gyldige datovalg.
|
|
25
|
-
* Eks: today(getLocalTimeZone()) == i dag i lokal tidssone.
|
|
25
|
+
* Eks: today(getLocalTimeZone()) == i dag i lokal tidssone.
|
|
26
|
+
*
|
|
27
|
+
* OBS: Hvis du bruker dato med tid vil tidspunktet også tas hensyn til.
|
|
28
|
+
* Gyldig fra og med den tiden som legges inn som minDate.
|
|
29
|
+
* Dato uten tid vil være gyldig hele minDate-dagen */
|
|
26
30
|
minDate?: DateValue;
|
|
27
31
|
/** Seneste gyldige datovalg.
|
|
28
|
-
* Eks: today(getLocalTimeZone()) == i
|
|
32
|
+
* Eks: today(getLocalTimeZone()).add({days: 1}) == i morgen i lokal tidssone
|
|
29
33
|
*
|
|
30
|
-
* OBS: Hvis du bruker dato med tid vil
|
|
34
|
+
* OBS: Hvis du bruker dato med tid vil tidspunktet også tas hensyn til.
|
|
35
|
+
* Gyldig til og med den tiden som legges inn som maxDate.
|
|
36
|
+
* Dato uten tid vil være gyldig hele maxDate-dagen */
|
|
31
37
|
maxDate?: DateValue;
|
|
32
38
|
/** Funksjon som tar inn en dato og sier om den er utilgjengelig.
|
|
33
39
|
* Eks. (date) => isWeekend(date, 'no-NO') == helgedager er ikke tilgjengelig */
|
|
@@ -62,4 +68,4 @@ export type DatePickerProps<DateType extends DateValue> = {
|
|
|
62
68
|
className?: string;
|
|
63
69
|
style?: React.CSSProperties;
|
|
64
70
|
} & Omit<AriaDatePickerProps<DateType>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'minValue' | 'maxValue'>;
|
|
65
|
-
export declare const DatePicker: <DateType extends DateValue>({ selectedDate
|
|
71
|
+
export declare const DatePicker: <DateType extends DateValue>({ selectedDate, onChange, locale, disabled, showTime, showTimeZone, className, style, variant, feedback, validationVariant, validationFeedback, disableModal, labelTooltip, navigationDescription, minDate, maxDate, modalTreshold, ...rest }: DatePickerProps<DateType>) => React.JSX.Element;
|
|
@@ -54,15 +54,6 @@ var FieldSegment = function FieldSegment(_ref) {
|
|
|
54
54
|
var ref = React.useRef(null);
|
|
55
55
|
var _useDateSegment = datepicker.useDateSegment(segment, state, ref),
|
|
56
56
|
segmentProps = _useDateSegment.segmentProps;
|
|
57
|
-
var is12HourFormatted = state.segments.some(function (segment) {
|
|
58
|
-
return segment.text === 'AM' || segment.text === 'PM';
|
|
59
|
-
});
|
|
60
|
-
var segmentDisplayText = function segmentDisplayText() {
|
|
61
|
-
if (is12HourFormatted) return segment.text;
|
|
62
|
-
// if number add '0' padding to start when one digit
|
|
63
|
-
if (segment.text.match(/\d+/)) return segment.text.padStart(2, '0');
|
|
64
|
-
return segment.text;
|
|
65
|
-
};
|
|
66
57
|
return React.createElement("div", _extends({}, segmentProps, {
|
|
67
58
|
ref: ref,
|
|
68
59
|
className: classNames('eds-date-and-time-field__segment', {
|
|
@@ -70,7 +61,7 @@ var FieldSegment = function FieldSegment(_ref) {
|
|
|
70
61
|
'eds-date-and-time-field__segment--dot-separator': segment.text === '.'
|
|
71
62
|
}),
|
|
72
63
|
tabIndex: state.isDisabled ? -1 : segmentProps.tabIndex
|
|
73
|
-
}),
|
|
64
|
+
}), segment.text);
|
|
74
65
|
};
|
|
75
66
|
|
|
76
67
|
var nativeDateToDateTime = function nativeDateToDateTime(date$1, timeZone, offset) {
|
|
@@ -84,83 +75,64 @@ var nativeDateToDateTime = function nativeDateToDateTime(date$1, timeZone, offse
|
|
|
84
75
|
};
|
|
85
76
|
/**
|
|
86
77
|
* Tar inn et JS Date-objekt og returnerer et av DateValue-objektene fra @internationalized/date-pakken
|
|
87
|
-
* @param {Date} date JS Date-objekt som ønskes konvertert til et DateValue-objekt
|
|
78
|
+
* @param {Date | null} date JS Date-objekt som ønskes konvertert til et DateValue-objekt
|
|
88
79
|
* @param {boolean} noTimeOnlyDate Hvis tidspunktet er irrelevant kan denne settes til true, da får man et CalendarDate-objekt uten tidspunkt tilbake
|
|
89
80
|
* @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
|
|
90
81
|
* @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.
|
|
91
|
-
* @returns {CalendarDateTime | ZonedDateTime | CalendarDate} et av DateValue-objektene med verdier fra date
|
|
82
|
+
* @returns {CalendarDateTime | ZonedDateTime | CalendarDate | null} et av DateValue-objektene med verdier fra date eller null
|
|
92
83
|
*/
|
|
93
|
-
|
|
84
|
+
function nativeDateToDateValue(date$1, noTimeOnlyDate, timeZone, offset) {
|
|
94
85
|
if (noTimeOnlyDate === void 0) {
|
|
95
86
|
noTimeOnlyDate = false;
|
|
96
87
|
}
|
|
88
|
+
if (date$1 === null) return null;
|
|
97
89
|
if (noTimeOnlyDate) return new date.CalendarDate(date$1.getFullYear(), date$1.getMonth() + 1, date$1.getDate());
|
|
98
90
|
return nativeDateToDateTime(date$1, timeZone, offset);
|
|
99
|
-
}
|
|
91
|
+
}
|
|
100
92
|
/**
|
|
101
93
|
* Tar inn et JS Date-objekt og returnerer et av TimeValue-objektene fra @internationalized/date-pakken
|
|
102
|
-
* @param {Date} date JS Date-objekt som ønskes konvertert til et TimeValue-objekt
|
|
94
|
+
* @param {Date | null} date JS Date-objekt som ønskes konvertert til et TimeValue-objekt
|
|
103
95
|
* @param {boolean} noDateOnlyTime Hvis datoen er irrelevant kan denne settes til true, da får man et Time-objekt uten dato tilbake
|
|
104
96
|
* @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
|
|
105
97
|
* @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.
|
|
106
|
-
* @returns {Time | CalendarDateTime | ZonedDateTime} et av TimeValue-objektene med verdier fra date
|
|
98
|
+
* @returns {Time | CalendarDateTime | ZonedDateTime | null} et av TimeValue-objektene med verdier fra date eller null
|
|
107
99
|
*/
|
|
108
|
-
|
|
100
|
+
function nativeDateToTimeValue(date$1, noDateOnlyTime, timeZone, offset) {
|
|
109
101
|
if (noDateOnlyTime === void 0) {
|
|
110
102
|
noDateOnlyTime = false;
|
|
111
103
|
}
|
|
104
|
+
if (date$1 === null) return null;
|
|
112
105
|
if (noDateOnlyTime) return new date.Time(date$1.getHours(), date$1.getMinutes(), date$1.getSeconds(), 0);
|
|
113
106
|
return nativeDateToDateTime(date$1, timeZone, offset);
|
|
114
|
-
}
|
|
107
|
+
}
|
|
115
108
|
/**
|
|
116
|
-
* Tar inn et av Date- eller TimeValue-objektene fra
|
|
117
|
-
* @param {DateValue | TimeValue} value En dato eller et tidspunkt på Date- eller TimeValue-formatet som ønskes konvertert til et JS Date-objekt
|
|
109
|
+
* Tar inn et av Date- eller TimeValue-objektene fra \@internationalized/date-pakken og returnerer et JS Date-objekt
|
|
110
|
+
* @param {DateValue | TimeValue | null} value En dato eller et tidspunkt på Date- eller TimeValue-formatet som ønskes konvertert til et JS Date-objekt
|
|
118
111
|
* @param {string} timeZoneForCalendarDateTime Tidssonen value er i. Fungerer kun med typen er CalendarDateTime
|
|
119
|
-
* @returns {Date} et Date-objekt med verdier fra time
|
|
112
|
+
* @returns {Date | null} et Date-objekt med verdier fra time eller null
|
|
120
113
|
*/
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
//
|
|
124
|
-
if (!value
|
|
125
|
-
// type is Time
|
|
114
|
+
function timeOrDateValueToNativeDate(value, timeZoneForCalendarDateTime) {
|
|
115
|
+
if (value === null) return null;
|
|
116
|
+
// type is Time
|
|
117
|
+
if (!('day' in value)) {
|
|
126
118
|
var date$1 = new Date();
|
|
127
|
-
// @ts-expect-error hour does not exist on CalendarDate
|
|
128
119
|
date$1.setHours(value.hour);
|
|
129
|
-
// @ts-expect-error minute does not exist on CalendarDate
|
|
130
120
|
date$1.setMinutes(value.minute);
|
|
131
|
-
// @ts-expect-error second does not exist on CalendarDate
|
|
132
121
|
date$1.setSeconds(value.second);
|
|
133
122
|
return date$1;
|
|
134
123
|
}
|
|
135
|
-
//
|
|
136
|
-
if (!value
|
|
137
|
-
// type is CalendarDate
|
|
138
|
-
// @ts-expect-error .toDate(timeZone) does not exist in type Time
|
|
124
|
+
// type is CalendarDate
|
|
125
|
+
if (!('hour' in value)) {
|
|
139
126
|
return value.toDate(timeZoneForCalendarDateTime != null ? timeZoneForCalendarDateTime : date.getLocalTimeZone());
|
|
140
127
|
}
|
|
141
|
-
//
|
|
142
|
-
if (!value
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
// @ts-expect-error .toDate(timeZone) does not exist in type Time
|
|
146
|
-
return value.toDate(timeZoneForCalendarDateTime);
|
|
147
|
-
return new Date(
|
|
148
|
-
// @ts-expect-error not in type Time
|
|
149
|
-
value.year,
|
|
150
|
-
// @ts-expect-error not in type Time
|
|
151
|
-
value.month - 1,
|
|
152
|
-
// @ts-expect-error not in type Time
|
|
153
|
-
value.day,
|
|
154
|
-
// @ts-expect-error not in type CalendarDate
|
|
155
|
-
value.hour,
|
|
156
|
-
// @ts-expect-error not in type CalendarDate
|
|
157
|
-
value.minute,
|
|
158
|
-
// @ts-expect-error not in type CalendarDate
|
|
159
|
-
value.second);
|
|
128
|
+
// type is CalendarDateTime
|
|
129
|
+
if (!('timeZone' in value)) {
|
|
130
|
+
if (timeZoneForCalendarDateTime) return value.toDate(timeZoneForCalendarDateTime);
|
|
131
|
+
return new Date(value.year, value.month - 1, value.day, value.hour, value.minute, value.second);
|
|
160
132
|
}
|
|
161
|
-
//
|
|
133
|
+
// type is ZonedDateTime
|
|
162
134
|
return value.toDate();
|
|
163
|
-
}
|
|
135
|
+
}
|
|
164
136
|
var createCalendar = function createCalendar(identifier) {
|
|
165
137
|
if (identifier === void 0) {
|
|
166
138
|
identifier = 'gregory';
|
|
@@ -176,10 +148,18 @@ var ariaLabelIfNorwegian = function ariaLabelIfNorwegian(norwegianAriaLabel, loc
|
|
|
176
148
|
if (locale.toLowerCase() !== 'no-no') return propsCollection['aria-label'];
|
|
177
149
|
return norwegianAriaLabel;
|
|
178
150
|
};
|
|
151
|
+
var lastMillisecondOfDay = function lastMillisecondOfDay(dateValue) {
|
|
152
|
+
return date.toCalendarDateTime(dateValue.add({
|
|
153
|
+
days: 1
|
|
154
|
+
})).add({
|
|
155
|
+
milliseconds: -1
|
|
156
|
+
});
|
|
157
|
+
};
|
|
179
158
|
|
|
180
|
-
var _excluded$9 = ["selectedDate", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "style", "className", "labelProps", "append"];
|
|
159
|
+
var _excluded$9 = ["selectedDate", "onChange", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "isDisabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "style", "className", "labelProps", "append"];
|
|
181
160
|
var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
182
|
-
var
|
|
161
|
+
var selectedDate = _ref.selectedDate,
|
|
162
|
+
onChange = _ref.onChange,
|
|
183
163
|
label = _ref.label,
|
|
184
164
|
customLocale = _ref.locale,
|
|
185
165
|
showTimeZone = _ref.showTimeZone,
|
|
@@ -187,6 +167,7 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
187
167
|
_ref$granularity = _ref.granularity,
|
|
188
168
|
granularity = _ref$granularity === void 0 ? 'day' : _ref$granularity,
|
|
189
169
|
disabled = _ref.disabled,
|
|
170
|
+
isDisabled = _ref.isDisabled,
|
|
190
171
|
variant = _ref.variant,
|
|
191
172
|
feedback = _ref.feedback,
|
|
192
173
|
_ref$validationVarian = _ref.validationVariant,
|
|
@@ -194,8 +175,8 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
194
175
|
_ref$validationFeedba = _ref.validationFeedback,
|
|
195
176
|
validationFeedback = _ref$validationFeedba === void 0 ? 'Ugyldig dato' : _ref$validationFeedba,
|
|
196
177
|
labelTooltip = _ref.labelTooltip,
|
|
197
|
-
|
|
198
|
-
|
|
178
|
+
minDate = _ref.minDate,
|
|
179
|
+
maxDate = _ref.maxDate,
|
|
199
180
|
style = _ref.style,
|
|
200
181
|
className = _ref.className,
|
|
201
182
|
parentLabelProps = _ref.labelProps,
|
|
@@ -206,16 +187,19 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
206
187
|
var state = datepicker$1.useDateFieldState(_extends({}, rest, {
|
|
207
188
|
locale: customLocale != null ? customLocale : locale,
|
|
208
189
|
createCalendar: createCalendar,
|
|
209
|
-
value:
|
|
190
|
+
value: selectedDate,
|
|
191
|
+
onChange: onChange,
|
|
210
192
|
hideTimeZone: !showTimeZone,
|
|
211
193
|
granularity: showTime ? 'minute' : granularity,
|
|
212
|
-
minValue:
|
|
213
|
-
|
|
194
|
+
minValue: minDate,
|
|
195
|
+
// this weird logic makes sure the entire day is included if no time is provided in maxDate
|
|
196
|
+
maxValue: 'hour' in (maxDate != null ? maxDate : {}) ? maxDate : maxDate !== undefined ? lastMillisecondOfDay(maxDate) : undefined,
|
|
197
|
+
isDisabled: isDisabled || disabled,
|
|
198
|
+
shouldForceLeadingZeros: true
|
|
214
199
|
}));
|
|
215
200
|
var dateFieldRef = React.useRef(null);
|
|
216
201
|
var _useDateField = datepicker.useDateField(_extends({}, rest, {
|
|
217
|
-
label: label
|
|
218
|
-
isDisabled: disabled || rest.isDisabled
|
|
202
|
+
label: label
|
|
219
203
|
}), state, dateFieldRef),
|
|
220
204
|
labelProps = _useDateField.labelProps,
|
|
221
205
|
fieldProps = _useDateField.fieldProps;
|
|
@@ -232,7 +216,7 @@ var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
232
216
|
className: classNames('eds-datefield', className),
|
|
233
217
|
labelId: id,
|
|
234
218
|
ref: utils.mergeRefs(dateFieldRef, ref),
|
|
235
|
-
disabled:
|
|
219
|
+
disabled: isDisabled || disabled,
|
|
236
220
|
disableLabelAnimation: true,
|
|
237
221
|
label: label,
|
|
238
222
|
labelTooltip: labelTooltip,
|
|
@@ -370,10 +354,13 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
370
354
|
}, getNavigationDescription()));
|
|
371
355
|
};
|
|
372
356
|
|
|
373
|
-
var _excluded$5 = ["selectedDate", "onChange", "locale", "style", "children", "navigationDescription", "onSelectedCellClick"];
|
|
357
|
+
var _excluded$5 = ["selectedDate", "onChange", "locale", "minDate", "maxDate", "style", "children", "navigationDescription", "onSelectedCellClick"];
|
|
374
358
|
var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
375
|
-
var
|
|
359
|
+
var selectedDate = _ref.selectedDate,
|
|
360
|
+
onChange = _ref.onChange,
|
|
376
361
|
customLocale = _ref.locale,
|
|
362
|
+
minDate = _ref.minDate,
|
|
363
|
+
maxDate = _ref.maxDate,
|
|
377
364
|
style = _ref.style,
|
|
378
365
|
navigationDescription = _ref.navigationDescription,
|
|
379
366
|
_ref$onSelectedCellCl = _ref.onSelectedCellClick,
|
|
@@ -384,9 +371,12 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
384
371
|
var _useLocale = i18n.useLocale(),
|
|
385
372
|
locale = _useLocale.locale;
|
|
386
373
|
var state = calendar$1.useCalendarState(_extends({}, rest, {
|
|
374
|
+
value: selectedDate,
|
|
387
375
|
onChange: onChange,
|
|
388
376
|
locale: customLocale != null ? customLocale : locale,
|
|
389
|
-
createCalendar: createCalendar
|
|
377
|
+
createCalendar: createCalendar,
|
|
378
|
+
minValue: minDate,
|
|
379
|
+
maxValue: maxDate
|
|
390
380
|
}));
|
|
391
381
|
var _useCalendar = calendar.useCalendar(rest, state),
|
|
392
382
|
calendarProps = _useCalendar.calendarProps,
|
|
@@ -423,10 +413,10 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
423
413
|
|
|
424
414
|
var _excluded$4 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold"];
|
|
425
415
|
var DatePicker = function DatePicker(_ref) {
|
|
426
|
-
var
|
|
416
|
+
var selectedDate = _ref.selectedDate,
|
|
427
417
|
onChange = _ref.onChange,
|
|
428
418
|
locale = _ref.locale,
|
|
429
|
-
|
|
419
|
+
disabled = _ref.disabled,
|
|
430
420
|
showTime = _ref.showTime,
|
|
431
421
|
_ref$showTimeZone = _ref.showTimeZone,
|
|
432
422
|
showTimeZone = _ref$showTimeZone === void 0 ? false : _ref$showTimeZone,
|
|
@@ -439,8 +429,8 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
439
429
|
disableModal = _ref$disableModal === void 0 ? false : _ref$disableModal,
|
|
440
430
|
labelTooltip = _ref.labelTooltip,
|
|
441
431
|
navigationDescription = _ref.navigationDescription,
|
|
442
|
-
|
|
443
|
-
|
|
432
|
+
minDate = _ref.minDate,
|
|
433
|
+
maxDate = _ref.maxDate,
|
|
444
434
|
_ref$modalTreshold = _ref.modalTreshold,
|
|
445
435
|
modalTreshold = _ref$modalTreshold === void 0 ? 1000 : _ref$modalTreshold,
|
|
446
436
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
@@ -451,17 +441,15 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
451
441
|
var _useWindowDimensions = utils.useWindowDimensions(),
|
|
452
442
|
width = _useWindowDimensions.width;
|
|
453
443
|
var state = datepicker$1.useDatePickerState(_extends({}, rest, {
|
|
454
|
-
minValue:
|
|
455
|
-
|
|
456
|
-
|
|
444
|
+
minValue: minDate,
|
|
445
|
+
// this weird logic makes sure the entire day is included if no time is provided in maxDate
|
|
446
|
+
maxValue: 'hour' in (maxDate != null ? maxDate : {}) ? maxDate : maxDate !== undefined ? lastMillisecondOfDay(maxDate) : undefined,
|
|
447
|
+
value: selectedDate,
|
|
457
448
|
onChange: onChange,
|
|
458
|
-
granularity: showTime ? 'minute' : rest.granularity
|
|
449
|
+
granularity: showTime ? 'minute' : rest.granularity,
|
|
450
|
+
isDisabled: disabled
|
|
459
451
|
}));
|
|
460
|
-
var _useDatePicker = datepicker.useDatePicker(_extends({
|
|
461
|
-
isDisabled: isDisabled,
|
|
462
|
-
minValue: minValue,
|
|
463
|
-
maxValue: maxValue
|
|
464
|
-
}, rest), state, datePickerRef),
|
|
452
|
+
var _useDatePicker = datepicker.useDatePicker(_extends({}, rest), state, datePickerRef),
|
|
465
453
|
groupProps = _useDatePicker.groupProps,
|
|
466
454
|
labelProps = _useDatePicker.labelProps,
|
|
467
455
|
fieldProps = _useDatePicker.fieldProps,
|
|
@@ -481,12 +469,6 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
481
469
|
reference = _useFloating.reference,
|
|
482
470
|
floating = _useFloating.floating,
|
|
483
471
|
strategy = _useFloating.strategy;
|
|
484
|
-
var onChangeCalendar = function onChangeCalendar(newSelectedDate) {
|
|
485
|
-
// Necessary to avoid state update on unmounted component
|
|
486
|
-
requestAnimationFrame(function () {
|
|
487
|
-
calendarProps.onChange && calendarProps.onChange(newSelectedDate);
|
|
488
|
-
});
|
|
489
|
-
};
|
|
490
472
|
utils.useOnClickOutside([calendarRef], function () {
|
|
491
473
|
state.setOpen(false);
|
|
492
474
|
});
|
|
@@ -494,13 +476,17 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
494
476
|
state.setOpen(false);
|
|
495
477
|
});
|
|
496
478
|
var calendarSharedProps = _extends({}, dialogProps, calendarProps, {
|
|
497
|
-
disabled:
|
|
479
|
+
disabled: disabled,
|
|
498
480
|
navigationDescription: navigationDescription,
|
|
499
481
|
onSelectedCellClick: function onSelectedCellClick() {
|
|
500
482
|
return state.setOpen(false);
|
|
501
483
|
},
|
|
502
|
-
|
|
503
|
-
|
|
484
|
+
selectedDate: selectedDate,
|
|
485
|
+
onChange: onChange,
|
|
486
|
+
minDate: minDate,
|
|
487
|
+
maxDate: maxDate,
|
|
488
|
+
granularity: showTime ? 'minute' : rest.granularity,
|
|
489
|
+
ref: calendarRef
|
|
504
490
|
});
|
|
505
491
|
var useModal = typeof width !== 'undefined' && width <= CALENDAR_MODAL_MAX_SCREEN_WIDTH && !disableModal;
|
|
506
492
|
var popoverCalendar = React.createElement("div", {
|
|
@@ -517,9 +503,7 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
517
503
|
}, React.createElement(FocusLock, {
|
|
518
504
|
disabled: !state.isOpen || useModal,
|
|
519
505
|
returnFocus: true
|
|
520
|
-
}, state.isOpen && React.createElement(Calendar, _extends({}, calendarSharedProps
|
|
521
|
-
ref: calendarRef
|
|
522
|
-
}))));
|
|
506
|
+
}, state.isOpen && React.createElement(Calendar, _extends({}, calendarSharedProps))));
|
|
523
507
|
var modalCalendar = React.createElement(modal.Modal, {
|
|
524
508
|
size: "small",
|
|
525
509
|
title: "",
|
|
@@ -527,7 +511,6 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
527
511
|
onDismiss: function onDismiss() {
|
|
528
512
|
return state.setOpen(false);
|
|
529
513
|
},
|
|
530
|
-
closeOnClickOutside: true,
|
|
531
514
|
className: "eds-datepicker__calendar-modal"
|
|
532
515
|
}, React.createElement(Calendar, _extends({}, calendarSharedProps)));
|
|
533
516
|
return React.createElement(utils.ConditionalWrapper, {
|
|
@@ -547,9 +530,13 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
547
530
|
id: undefined,
|
|
548
531
|
className: "eds-datepicker__datefield__wrapper"
|
|
549
532
|
}), React.createElement(DateField, _extends({}, fieldProps, {
|
|
550
|
-
selectedDate:
|
|
533
|
+
selectedDate: selectedDate,
|
|
534
|
+
onChange: onChange,
|
|
551
535
|
label: rest.label,
|
|
552
536
|
labelProps: labelProps,
|
|
537
|
+
disabled: disabled,
|
|
538
|
+
minDate: minDate,
|
|
539
|
+
maxDate: maxDate,
|
|
553
540
|
showTime: showTime,
|
|
554
541
|
showTimeZone: showTimeZone,
|
|
555
542
|
ref: dateFieldRef,
|
|
@@ -559,9 +546,9 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
559
546
|
validationFeedback: validationFeedback,
|
|
560
547
|
labelTooltip: labelTooltip,
|
|
561
548
|
className: classNames('eds-datepicker__datefield', {
|
|
562
|
-
'eds-datepicker__datefield--disabled':
|
|
549
|
+
'eds-datepicker__datefield--disabled': disabled
|
|
563
550
|
})
|
|
564
|
-
})), !
|
|
551
|
+
})), !disabled && React.createElement(CalendarButton, _extends({}, buttonProps, {
|
|
565
552
|
onPress: function onPress() {
|
|
566
553
|
return state.setOpen(!state.isOpen);
|
|
567
554
|
},
|
|
@@ -687,9 +674,10 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
687
674
|
onChange: onChange,
|
|
688
675
|
label: label,
|
|
689
676
|
locale: locale,
|
|
690
|
-
value: selectedTime
|
|
677
|
+
value: selectedTime,
|
|
691
678
|
hideTimeZone: !showTimeZone,
|
|
692
|
-
isDisabled: disabled
|
|
679
|
+
isDisabled: disabled,
|
|
680
|
+
shouldForceLeadingZeros: true
|
|
693
681
|
}, rest));
|
|
694
682
|
var timeFieldRef = React.useRef(null);
|
|
695
683
|
var _useTimeField = datepicker.useTimeField(_extends({}, rest, {
|
|
@@ -720,8 +708,7 @@ var TimePicker = function TimePicker(_ref) {
|
|
|
720
708
|
onChange(newTime);
|
|
721
709
|
};
|
|
722
710
|
var addMinutesToSelectedTime = function addMinutesToSelectedTime(minutes) {
|
|
723
|
-
|
|
724
|
-
state.value && state.setValue((_state$value = state.value) == null ? void 0 : _state$value.add({
|
|
711
|
+
selectedTime !== null && onChange(selectedTime.add({
|
|
725
712
|
minutes: minutes
|
|
726
713
|
}));
|
|
727
714
|
};
|
|
@@ -870,7 +857,7 @@ var SimpleTimePicker = function SimpleTimePicker(_ref) {
|
|
|
870
857
|
onChange: onChange,
|
|
871
858
|
label: label,
|
|
872
859
|
locale: locale,
|
|
873
|
-
value: selectedTime
|
|
860
|
+
value: selectedTime,
|
|
874
861
|
hideTimeZone: true,
|
|
875
862
|
isDisabled: disabled,
|
|
876
863
|
isReadOnly: readOnly
|
|
@@ -1050,6 +1037,7 @@ exports.SimpleTimePicker = SimpleTimePicker;
|
|
|
1050
1037
|
exports.TimePicker = TimePicker;
|
|
1051
1038
|
exports.ariaLabelIfNorwegian = ariaLabelIfNorwegian;
|
|
1052
1039
|
exports.createCalendar = createCalendar;
|
|
1040
|
+
exports.lastMillisecondOfDay = lastMillisecondOfDay;
|
|
1053
1041
|
exports.nativeDateToDateValue = nativeDateToDateValue;
|
|
1054
1042
|
exports.nativeDateToTimeValue = nativeDateToTimeValue;
|
|
1055
1043
|
exports.timeOrDateValueToNativeDate = timeOrDateValueToNativeDate;
|