@entur/datepicker 11.3.0 → 11.4.0-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/Calendar.d.ts +4 -0
- package/dist/DatePicker/CalendarCell.d.ts +2 -1
- package/dist/DatePicker/CalendarGrid.d.ts +2 -1
- package/dist/DatePicker/DatePicker.d.ts +5 -1
- package/dist/datepicker.cjs.js +45 -16
- package/dist/datepicker.cjs.js.map +1 -1
- package/dist/datepicker.esm.js +45 -16
- package/dist/datepicker.esm.js.map +1 -1
- package/dist/shared/utils.d.ts +1 -0
- package/dist/styles.css +30 -1
- package/package.json +7 -7
|
@@ -34,6 +34,10 @@ type BaseCalendarProps<DateType extends DateValue> = {
|
|
|
34
34
|
/** Overskrift som vises for ukenummer-kolonnen. Vises kun hvis 'showWeekNumbers' er true.
|
|
35
35
|
* @default 'uke' */
|
|
36
36
|
weekNumberHeader?: string;
|
|
37
|
+
/** Vis datoer som ligger utenfor den viste måneden.
|
|
38
|
+
* @example Hvis uken starter på onsdag vises de to siste datoene i forrige måned i ruten til mandagen og tirsdagen før.
|
|
39
|
+
* @default false */
|
|
40
|
+
showOutsideMonth?: boolean;
|
|
37
41
|
/** Brukes for å legge til klassenavn på spesifikke datoer i kalenderen.
|
|
38
42
|
* Tar inn en dato og skal returnere klassenavnet som skal legges til den datoen.
|
|
39
43
|
* @default undefined
|
|
@@ -5,10 +5,11 @@ type CalendarCellProps = {
|
|
|
5
5
|
state: CalendarState;
|
|
6
6
|
date: CalendarDate;
|
|
7
7
|
weekNumberString: string;
|
|
8
|
+
showOutsideMonth?: boolean;
|
|
8
9
|
onSelectedCellClick?: () => void;
|
|
9
10
|
onCellClick?: () => void;
|
|
10
11
|
classNameForDate?: (date: CalendarDate) => string;
|
|
11
12
|
ariaLabelForDate?: (date: CalendarDate) => string;
|
|
12
13
|
};
|
|
13
|
-
export declare const CalendarCell: ({ state, date, onSelectedCellClick, onCellClick, weekNumberString, classNameForDate, ariaLabelForDate, ...rest }: CalendarCellProps) => React.JSX.Element;
|
|
14
|
+
export declare const CalendarCell: ({ state, date, showOutsideMonth, onSelectedCellClick, onCellClick, weekNumberString, classNameForDate, ariaLabelForDate, ...rest }: CalendarCellProps) => React.JSX.Element;
|
|
14
15
|
export {};
|
|
@@ -6,10 +6,11 @@ type CalendarGridProps = {
|
|
|
6
6
|
navigationDescription?: string;
|
|
7
7
|
showWeekNumbers: boolean;
|
|
8
8
|
weekNumberHeader: string;
|
|
9
|
+
showOutsideMonth?: boolean;
|
|
9
10
|
onSelectedCellClick?: () => void;
|
|
10
11
|
onCellClick?: () => void;
|
|
11
12
|
classNameForDate?: (date: CalendarDate) => string;
|
|
12
13
|
ariaLabelForDate?: (date: CalendarDate) => string;
|
|
13
14
|
};
|
|
14
|
-
export declare const CalendarGrid: ({ state, navigationDescription, onSelectedCellClick, onCellClick, showWeekNumbers, weekNumberHeader, classNameForDate, ariaLabelForDate, ...rest }: CalendarGridProps) => React.JSX.Element;
|
|
15
|
+
export declare const CalendarGrid: ({ state, navigationDescription, onSelectedCellClick, onCellClick, showWeekNumbers, weekNumberHeader, showOutsideMonth, classNameForDate, ariaLabelForDate, ...rest }: CalendarGridProps) => React.JSX.Element;
|
|
15
16
|
export {};
|
|
@@ -9,6 +9,10 @@ type BaseDatePickerProps = {
|
|
|
9
9
|
/** Overskrift som vises for ukenummer-kolonnen. Vises kun hvis 'showWeekNumbers' er true.
|
|
10
10
|
* @default '#' */
|
|
11
11
|
weekNumberHeader?: string;
|
|
12
|
+
/** Vis datoer som ligger utenfor den viste måneden.
|
|
13
|
+
* @example Hvis uken starter på onsdag vises de to siste datoene i forrige måned i ruten til mandagen og tirsdagen før.
|
|
14
|
+
* @default false */
|
|
15
|
+
showOutsideMonth?: boolean;
|
|
12
16
|
/** Hvis true vil kalenderen alltid vises i en popover når den åpnes
|
|
13
17
|
* @default false
|
|
14
18
|
*/
|
|
@@ -39,5 +43,5 @@ type BaseDatePickerProps = {
|
|
|
39
43
|
ariaLabelForDate?: (date: CalendarDate) => string;
|
|
40
44
|
};
|
|
41
45
|
export type DatePickerProps<DateType extends DateValue> = Omit<BaseDateFieldProps<DateType>, keyof BaseDatePickerProps | 'labelProps' | 'fieldProps' | 'groupProps' | 'dateFieldRef'> & BaseDatePickerProps & ExtendedDateFieldProps<DateType>;
|
|
42
|
-
export declare const DatePicker: <DateType extends DateValue>({ selectedDate, locale, disabled, readOnly, showTime, showTimeZone, classNameForDate, className, variant, feedback, validationVariant, validationFeedback, showWeekNumbers, weekNumberHeader, disableModal, labelTooltip, navigationDescription, minDate, maxDate, modalTreshold, ariaLabelForDate, append, prepend, granularity, ...rest }: DatePickerProps<DateType>) => React.JSX.Element;
|
|
46
|
+
export declare const DatePicker: <DateType extends DateValue>({ selectedDate, locale, disabled, readOnly, showTime, showTimeZone, classNameForDate, className, variant, feedback, validationVariant, validationFeedback, showWeekNumbers, weekNumberHeader, showOutsideMonth, disableModal, labelTooltip, navigationDescription, minDate, maxDate, modalTreshold, ariaLabelForDate, append, prepend, granularity, ...rest }: DatePickerProps<DateType>) => React.JSX.Element;
|
|
43
47
|
export {};
|
package/dist/datepicker.cjs.js
CHANGED
|
@@ -192,6 +192,11 @@ function handleOnChange({
|
|
|
192
192
|
}
|
|
193
193
|
onChange?.(value);
|
|
194
194
|
}
|
|
195
|
+
function getAdjustedMaxDate(maxDate) {
|
|
196
|
+
if ("hour" in (maxDate ?? {})) return maxDate;
|
|
197
|
+
if (maxDate !== void 0) return lastMillisecondOfDay(maxDate);
|
|
198
|
+
return void 0;
|
|
199
|
+
}
|
|
195
200
|
const DateField = ({
|
|
196
201
|
selectedDate,
|
|
197
202
|
onChange,
|
|
@@ -236,8 +241,7 @@ const DateField = ({
|
|
|
236
241
|
hideTimeZone: !showTimeZone,
|
|
237
242
|
granularity,
|
|
238
243
|
minValue: minDate,
|
|
239
|
-
|
|
240
|
-
maxValue: "hour" in (maxDate ?? {}) ? maxDate : maxDate !== void 0 ? lastMillisecondOfDay(maxDate) : void 0,
|
|
244
|
+
maxValue: getAdjustedMaxDate(maxDate),
|
|
241
245
|
isDisabled: isDisabled || disabled || readOnly,
|
|
242
246
|
shouldForceLeadingZeros: true
|
|
243
247
|
};
|
|
@@ -291,6 +295,7 @@ const CalendarButton = ({
|
|
|
291
295
|
const CalendarCell = ({
|
|
292
296
|
state,
|
|
293
297
|
date: date$1,
|
|
298
|
+
showOutsideMonth = false,
|
|
294
299
|
onSelectedCellClick = () => {
|
|
295
300
|
return;
|
|
296
301
|
},
|
|
@@ -313,20 +318,37 @@ const CalendarCell = ({
|
|
|
313
318
|
formattedDate
|
|
314
319
|
} = calendar.useCalendarCell({ date: date$1 }, state, cellRef);
|
|
315
320
|
const ariaLabel = `${buttonProps["aria-label"]}${weekNumberString} ${ariaLabelForDate?.(date$1) ?? ""}`;
|
|
316
|
-
const cellCanBeSelected = !(isOutsideVisibleRange || isDisabled || isUnavailable);
|
|
321
|
+
const cellCanBeSelected = showOutsideMonth ? !(isDisabled || isUnavailable) : !(isOutsideVisibleRange || isDisabled || isUnavailable);
|
|
322
|
+
const shouldHideDate = !showOutsideMonth && isOutsideVisibleRange;
|
|
323
|
+
const extendedButtonProps = {
|
|
324
|
+
...buttonProps,
|
|
325
|
+
...showOutsideMonth && isOutsideVisibleRange && {
|
|
326
|
+
onClick: () => {
|
|
327
|
+
state.selectDate(date$1);
|
|
328
|
+
onCellClick();
|
|
329
|
+
},
|
|
330
|
+
onKeyUp: (e) => {
|
|
331
|
+
if (e.key === "Enter") {
|
|
332
|
+
state.selectDate(date$1);
|
|
333
|
+
onCellClick();
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
};
|
|
317
338
|
return /* @__PURE__ */ jsxRuntime.jsx("td", { ...cellProps, className: "eds-datepicker__calendar__grid__cell__td", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
318
339
|
"div",
|
|
319
340
|
{
|
|
320
|
-
...
|
|
341
|
+
...extendedButtonProps,
|
|
321
342
|
"aria-label": ariaLabel,
|
|
322
|
-
"aria-hidden":
|
|
343
|
+
"aria-hidden": shouldHideDate,
|
|
323
344
|
ref: cellRef,
|
|
324
|
-
hidden:
|
|
345
|
+
hidden: shouldHideDate,
|
|
325
346
|
className: classNames("eds-datepicker__calendar__grid__cell", {
|
|
326
|
-
[classNameForDate?.(date$1) ?? ""]: !
|
|
347
|
+
[classNameForDate?.(date$1) ?? ""]: !shouldHideDate,
|
|
327
348
|
"eds-datepicker__calendar__grid__cell--selected": isSelected,
|
|
328
349
|
"eds-datepicker__calendar__grid__cell--disabled": isDisabled || isUnavailable,
|
|
329
|
-
"eds-datepicker__calendar__grid__cell--outside-month": isOutsideVisibleRange,
|
|
350
|
+
"eds-datepicker__calendar__grid__cell--outside-month": isOutsideVisibleRange && !showOutsideMonth,
|
|
351
|
+
"eds-datepicker__calendar__grid__cell--outside-month--visible": isOutsideVisibleRange && showOutsideMonth,
|
|
330
352
|
"eds-datepicker__calendar__grid__cell--today": date.isEqualDay(
|
|
331
353
|
date$1,
|
|
332
354
|
date.now(state.timeZone ?? date.getLocalTimeZone())
|
|
@@ -334,12 +356,12 @@ const CalendarCell = ({
|
|
|
334
356
|
}),
|
|
335
357
|
...rest,
|
|
336
358
|
onClick: (e) => {
|
|
337
|
-
|
|
359
|
+
extendedButtonProps?.onClick?.(e);
|
|
338
360
|
isSelected && onSelectedCellClick();
|
|
339
361
|
cellCanBeSelected && onCellClick();
|
|
340
362
|
},
|
|
341
363
|
onKeyUp: (e) => {
|
|
342
|
-
|
|
364
|
+
extendedButtonProps?.onKeyUp?.(e);
|
|
343
365
|
if (e.key === "Enter") {
|
|
344
366
|
isSelected && onSelectedCellClick();
|
|
345
367
|
cellCanBeSelected && onCellClick();
|
|
@@ -360,6 +382,7 @@ const CalendarGrid = ({
|
|
|
360
382
|
},
|
|
361
383
|
showWeekNumbers,
|
|
362
384
|
weekNumberHeader,
|
|
385
|
+
showOutsideMonth = false,
|
|
363
386
|
classNameForDate,
|
|
364
387
|
ariaLabelForDate,
|
|
365
388
|
...rest
|
|
@@ -406,7 +429,7 @@ const CalendarGrid = ({
|
|
|
406
429
|
showWeekNumbers && /* @__PURE__ */ jsxRuntime.jsx(
|
|
407
430
|
"th",
|
|
408
431
|
{
|
|
409
|
-
"aria-
|
|
432
|
+
"aria-label": `${weekNumberHeader} ${weekNumber}`,
|
|
410
433
|
className: "eds-datepicker__calendar__grid__weeknumber",
|
|
411
434
|
children: weekNumber
|
|
412
435
|
}
|
|
@@ -422,7 +445,8 @@ const CalendarGrid = ({
|
|
|
422
445
|
onSelectedCellClick,
|
|
423
446
|
onCellClick,
|
|
424
447
|
classNameForDate,
|
|
425
|
-
ariaLabelForDate
|
|
448
|
+
ariaLabelForDate,
|
|
449
|
+
showOutsideMonth
|
|
426
450
|
},
|
|
427
451
|
`${date2.month}.${date2.day}`
|
|
428
452
|
) : /* @__PURE__ */ jsxRuntime.jsx("td", {}, i)
|
|
@@ -450,6 +474,7 @@ const CalendarBase = ({
|
|
|
450
474
|
maxDate,
|
|
451
475
|
showWeekNumbers = false,
|
|
452
476
|
weekNumberHeader = "uke",
|
|
477
|
+
showOutsideMonth = false,
|
|
453
478
|
forcedReturnType,
|
|
454
479
|
style,
|
|
455
480
|
className,
|
|
@@ -478,7 +503,7 @@ const CalendarBase = ({
|
|
|
478
503
|
locale,
|
|
479
504
|
createCalendar,
|
|
480
505
|
minValue: minDate,
|
|
481
|
-
maxValue: maxDate
|
|
506
|
+
maxValue: getAdjustedMaxDate(maxDate)
|
|
482
507
|
};
|
|
483
508
|
const state = calendar$1.useCalendarState(_props);
|
|
484
509
|
const { calendarProps, prevButtonProps, nextButtonProps, title } = calendar.useCalendar(_props, state);
|
|
@@ -532,7 +557,8 @@ const CalendarBase = ({
|
|
|
532
557
|
classNameForDate,
|
|
533
558
|
ariaLabelForDate,
|
|
534
559
|
showWeekNumbers,
|
|
535
|
-
weekNumberHeader
|
|
560
|
+
weekNumberHeader,
|
|
561
|
+
showOutsideMonth
|
|
536
562
|
}
|
|
537
563
|
)
|
|
538
564
|
]
|
|
@@ -554,6 +580,7 @@ const DatePicker = ({
|
|
|
554
580
|
validationFeedback,
|
|
555
581
|
showWeekNumbers,
|
|
556
582
|
weekNumberHeader,
|
|
583
|
+
showOutsideMonth = false,
|
|
557
584
|
disableModal = false,
|
|
558
585
|
labelTooltip,
|
|
559
586
|
navigationDescription,
|
|
@@ -580,7 +607,7 @@ const DatePicker = ({
|
|
|
580
607
|
}),
|
|
581
608
|
minValue: minDate,
|
|
582
609
|
// this weird logic makes sure the entire day is included if no time is provided in maxDate
|
|
583
|
-
maxValue:
|
|
610
|
+
maxValue: getAdjustedMaxDate(maxDate),
|
|
584
611
|
value: selectedDate,
|
|
585
612
|
granularity,
|
|
586
613
|
isDisabled: disabled || readOnly
|
|
@@ -624,7 +651,8 @@ const DatePicker = ({
|
|
|
624
651
|
classNameForDate,
|
|
625
652
|
ariaLabelForDate,
|
|
626
653
|
showWeekNumbers,
|
|
627
|
-
weekNumberHeader
|
|
654
|
+
weekNumberHeader,
|
|
655
|
+
showOutsideMonth
|
|
628
656
|
};
|
|
629
657
|
const isModal = typeof width !== "undefined" && width <= CALENDAR_MODAL_MAX_SCREEN_WIDTH && !disableModal;
|
|
630
658
|
const popoverCalendar = /* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -1233,6 +1261,7 @@ exports.ariaLabelIfNorwegian = ariaLabelIfNorwegian;
|
|
|
1233
1261
|
exports.convertValueToType = convertValueToType;
|
|
1234
1262
|
exports.createCalendar = createCalendar;
|
|
1235
1263
|
exports.focusSegment = focusSegment;
|
|
1264
|
+
exports.getAdjustedMaxDate = getAdjustedMaxDate;
|
|
1236
1265
|
exports.getWeekNumberForDate = getWeekNumberForDate;
|
|
1237
1266
|
exports.handleOnChange = handleOnChange;
|
|
1238
1267
|
exports.lastMillisecondOfDay = lastMillisecondOfDay;
|