@entur/datepicker 9.0.4-beta.0 → 9.1.0-RC.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/DatePicker.d.ts +20 -1
- package/dist/datepicker.cjs.development.js +34 -8
- 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 +35 -10
- package/dist/datepicker.esm.js.map +1 -1
- package/dist/shared/utils.d.ts +4 -0
- package/dist/styles.css +40 -40
- package/package.json +10 -10
|
@@ -64,8 +64,27 @@ export type DatePickerProps<DateType extends DateValue> = {
|
|
|
64
64
|
* @default 'Bruk piltastene til å navigere mellom datoer'
|
|
65
65
|
*/
|
|
66
66
|
navigationDescription?: string;
|
|
67
|
+
/** Tvinger typen på onChange til den gitte typen.
|
|
68
|
+
* Dette er nyttig når utgangsverdien din er 'null', men du ønsker at
|
|
69
|
+
* DatePicker f.eks alltid skal returnere en 'ZonedDateTime'.
|
|
70
|
+
*
|
|
71
|
+
* @default undefined (onChange returnerer DateValue bassert på value, og om tid vises eller ikke)
|
|
72
|
+
*
|
|
73
|
+
* Hvorfor er dette nødvendig?
|
|
74
|
+
* I utgangspunktet vil en DatePicker som initieres med 'null' som verdi og ikke viser tid returnere en CalendarDate.
|
|
75
|
+
* Dette er problematisk hvis du bruker datovelgeren sammen en TimePicker da
|
|
76
|
+
* denne ikke støtter dato uten tidspunkt (CalendarDate). Ved å da tvinge DatePicker til å returnere
|
|
77
|
+
* CalendarDateTime eller ZonedDateTime vil du kunne bruke den sammen med TimePicker.
|
|
78
|
+
*
|
|
79
|
+
* Hvorfor kan ikke dette gjøres automatisk?
|
|
80
|
+
* En DatePicker som initieres med 'null' som verdi gir ingen informasjon om hvilken type man ønsker å returnere.
|
|
81
|
+
* DatePicker støtter dog at du kan sende med en TypeScript-type, men TypeScript eksisterer ikke i runtime og
|
|
82
|
+
* kan derfor ikke brukes til å bestemme hvilken type som skal returneres. Det er derfor nødvendig å enten gi
|
|
83
|
+
* en initiell 'selectedDate' eller tvinge typen med denne prop-en.
|
|
84
|
+
*/
|
|
85
|
+
forcedReturnType?: 'CalendarDate' | 'CalendarDateTime' | 'ZonedDateTime';
|
|
67
86
|
/** Ekstra klassenavn */
|
|
68
87
|
className?: string;
|
|
69
88
|
style?: React.CSSProperties;
|
|
70
89
|
} & Omit<AriaDatePickerProps<DateType>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'minValue' | 'maxValue'>;
|
|
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;
|
|
90
|
+
export declare const DatePicker: <DateType extends DateValue>({ selectedDate, onChange, locale, disabled, showTime, showTimeZone, className, style, variant, feedback, validationVariant, validationFeedback, disableModal, labelTooltip, navigationDescription, minDate, maxDate, modalTreshold, forcedReturnType, ...rest }: DatePickerProps<DateType>) => React.JSX.Element;
|
|
@@ -155,6 +155,21 @@ var lastMillisecondOfDay = function lastMillisecondOfDay(dateValue) {
|
|
|
155
155
|
milliseconds: -1
|
|
156
156
|
});
|
|
157
157
|
};
|
|
158
|
+
var convertValueToType = function convertValueToType(_ref) {
|
|
159
|
+
var value = _ref.value,
|
|
160
|
+
type = _ref.type;
|
|
161
|
+
if (value === null) return null;
|
|
162
|
+
switch (type) {
|
|
163
|
+
case 'CalendarDate':
|
|
164
|
+
return date.toCalendarDate(value);
|
|
165
|
+
case 'CalendarDateTime':
|
|
166
|
+
return date.toCalendarDateTime(value);
|
|
167
|
+
case 'ZonedDateTime':
|
|
168
|
+
return date.toZoned(value, 'Europe/Oslo');
|
|
169
|
+
default:
|
|
170
|
+
return value;
|
|
171
|
+
}
|
|
172
|
+
};
|
|
158
173
|
|
|
159
174
|
var _excluded$9 = ["selectedDate", "onChange", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "isDisabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "style", "className", "labelProps", "append"];
|
|
160
175
|
var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
@@ -370,15 +385,16 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
370
385
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
|
|
371
386
|
var _useLocale = i18n.useLocale(),
|
|
372
387
|
locale = _useLocale.locale;
|
|
373
|
-
var
|
|
388
|
+
var allProps = _extends({}, rest, {
|
|
374
389
|
value: selectedDate,
|
|
375
390
|
onChange: onChange,
|
|
376
391
|
locale: customLocale != null ? customLocale : locale,
|
|
377
392
|
createCalendar: createCalendar,
|
|
378
393
|
minValue: minDate,
|
|
379
394
|
maxValue: maxDate
|
|
380
|
-
})
|
|
381
|
-
var
|
|
395
|
+
});
|
|
396
|
+
var state = calendar$1.useCalendarState(allProps);
|
|
397
|
+
var _useCalendar = calendar.useCalendar(allProps, state),
|
|
382
398
|
calendarProps = _useCalendar.calendarProps,
|
|
383
399
|
prevButtonProps = _useCalendar.prevButtonProps,
|
|
384
400
|
nextButtonProps = _useCalendar.nextButtonProps,
|
|
@@ -411,7 +427,7 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
411
427
|
})));
|
|
412
428
|
});
|
|
413
429
|
|
|
414
|
-
var _excluded$4 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold"];
|
|
430
|
+
var _excluded$4 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold", "forcedReturnType"];
|
|
415
431
|
var DatePicker = function DatePicker(_ref) {
|
|
416
432
|
var selectedDate = _ref.selectedDate,
|
|
417
433
|
onChange = _ref.onChange,
|
|
@@ -433,6 +449,7 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
433
449
|
maxDate = _ref.maxDate,
|
|
434
450
|
_ref$modalTreshold = _ref.modalTreshold,
|
|
435
451
|
modalTreshold = _ref$modalTreshold === void 0 ? 1000 : _ref$modalTreshold,
|
|
452
|
+
forcedReturnType = _ref.forcedReturnType,
|
|
436
453
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
437
454
|
var CALENDAR_MODAL_MAX_SCREEN_WIDTH = modalTreshold;
|
|
438
455
|
var datePickerRef = React.useRef(null);
|
|
@@ -440,12 +457,21 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
440
457
|
var dateFieldRef = React.useRef(null);
|
|
441
458
|
var _useWindowDimensions = utils.useWindowDimensions(),
|
|
442
459
|
width = _useWindowDimensions.width;
|
|
460
|
+
var handleOnChange = function handleOnChange(value) {
|
|
461
|
+
if (forcedReturnType !== undefined) {
|
|
462
|
+
return onChange(convertValueToType({
|
|
463
|
+
value: value,
|
|
464
|
+
type: forcedReturnType
|
|
465
|
+
}));
|
|
466
|
+
}
|
|
467
|
+
onChange(value);
|
|
468
|
+
};
|
|
443
469
|
var state = datepicker$1.useDatePickerState(_extends({}, rest, {
|
|
444
470
|
minValue: minDate,
|
|
445
471
|
// this weird logic makes sure the entire day is included if no time is provided in maxDate
|
|
446
472
|
maxValue: 'hour' in (maxDate != null ? maxDate : {}) ? maxDate : maxDate !== undefined ? lastMillisecondOfDay(maxDate) : undefined,
|
|
447
473
|
value: selectedDate,
|
|
448
|
-
onChange:
|
|
474
|
+
onChange: handleOnChange,
|
|
449
475
|
granularity: showTime ? 'minute' : rest.granularity,
|
|
450
476
|
isDisabled: disabled
|
|
451
477
|
}));
|
|
@@ -482,10 +508,9 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
482
508
|
return state.setOpen(false);
|
|
483
509
|
},
|
|
484
510
|
selectedDate: selectedDate,
|
|
485
|
-
onChange:
|
|
511
|
+
onChange: handleOnChange,
|
|
486
512
|
minDate: minDate,
|
|
487
513
|
maxDate: maxDate,
|
|
488
|
-
granularity: showTime ? 'minute' : rest.granularity,
|
|
489
514
|
ref: calendarRef
|
|
490
515
|
});
|
|
491
516
|
var useModal = typeof width !== 'undefined' && width <= CALENDAR_MODAL_MAX_SCREEN_WIDTH && !disableModal;
|
|
@@ -531,7 +556,7 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
531
556
|
className: "eds-datepicker__datefield__wrapper"
|
|
532
557
|
}), React.createElement(DateField, _extends({}, fieldProps, {
|
|
533
558
|
selectedDate: selectedDate,
|
|
534
|
-
onChange:
|
|
559
|
+
onChange: handleOnChange,
|
|
535
560
|
label: rest.label,
|
|
536
561
|
labelProps: labelProps,
|
|
537
562
|
disabled: disabled,
|
|
@@ -1036,6 +1061,7 @@ exports.NativeTimePicker = NativeTimePicker;
|
|
|
1036
1061
|
exports.SimpleTimePicker = SimpleTimePicker;
|
|
1037
1062
|
exports.TimePicker = TimePicker;
|
|
1038
1063
|
exports.ariaLabelIfNorwegian = ariaLabelIfNorwegian;
|
|
1064
|
+
exports.convertValueToType = convertValueToType;
|
|
1039
1065
|
exports.createCalendar = createCalendar;
|
|
1040
1066
|
exports.lastMillisecondOfDay = lastMillisecondOfDay;
|
|
1041
1067
|
exports.nativeDateToDateValue = nativeDateToDateValue;
|