@entur/datepicker 9.1.6 → 9.2.0-beta.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.
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
- import { DateValue } from '@internationalized/date';
2
+ import { CalendarDate, DateValue } from '@internationalized/date';
3
3
  import './Calendar.scss';
4
- type CalendarProps = {
4
+ export type CalendarProps = {
5
5
  selectedDate: DateValue | null;
6
6
  onChange: (SelectedDate: DateValue | null) => void;
7
7
  navigationDescription?: string;
@@ -21,7 +21,21 @@ type CalendarProps = {
21
21
  * Gyldig til og med den tiden som legges inn som maxDate.
22
22
  * Dato uten tid vil være gyldig hele maxDate-dagen */
23
23
  maxDate?: DateValue;
24
+ /** Brukes for å legge til klassenavn på spesifikke datoer i kalenderen.
25
+ * Tar inn en dato og skal returnere klassenavnet som skal legges til den datoen.
26
+ * @default undefined
27
+ * @example (date) => isWeekend(date, 'no-NO') ? 'weekend' : ''
28
+ *
29
+ * OBS: hvis stylingen er meningsbærende bør du bruke ariaLabelForDate i tillegg for å beskrive
30
+ * meningen til skjermlesere o.l.
31
+ */
32
+ classNameForDate?: (date: CalendarDate) => string;
33
+ /** Legger til teksten som returneres på datoen i kalenderen sin aria-label.
34
+ * Bør brukes sammen med classNameForDate hvis styling-endringene gjort der er meningsbærende.
35
+ * @default undefined
36
+ * @example (date) => isWeekend(date, 'no-NO') ? 'helgedag' : ''
37
+ */
38
+ ariaLabelForDate?: (date: CalendarDate) => string;
24
39
  [key: string]: any;
25
40
  };
26
41
  export declare const Calendar: React.ForwardRefExoticComponent<Omit<CalendarProps, "ref"> & React.RefAttributes<HTMLDivElement>>;
27
- export {};
@@ -5,6 +5,8 @@ type CalendarCellProps = {
5
5
  state: CalendarState;
6
6
  date: CalendarDate;
7
7
  onSelectedCellClick?: () => void;
8
+ classNameForDate?: (date: CalendarDate) => string;
9
+ ariaLabelForDate?: (date: CalendarDate) => string;
8
10
  };
9
- export declare const CalendarCell: ({ state, date, onSelectedCellClick, ...rest }: CalendarCellProps) => React.JSX.Element;
11
+ export declare const CalendarCell: ({ state, date, onSelectedCellClick, classNameForDate, ariaLabelForDate, ...rest }: CalendarCellProps) => React.JSX.Element;
10
12
  export {};
@@ -1,9 +1,12 @@
1
1
  import React from 'react';
2
2
  import { CalendarState } from '@react-stately/calendar';
3
+ import { CalendarDate } from '@internationalized/date';
3
4
  type CalendarGridProps = {
4
5
  state: CalendarState;
5
6
  navigationDescription?: string;
6
7
  onSelectedCellClick?: () => void;
8
+ classNameForDate?: (date: CalendarDate) => string;
9
+ ariaLabelForDate?: (date: CalendarDate) => string;
7
10
  };
8
- export declare const CalendarGrid: ({ state, navigationDescription, onSelectedCellClick, ...rest }: CalendarGridProps) => React.JSX.Element;
11
+ export declare const CalendarGrid: ({ state, navigationDescription, onSelectedCellClick, classNameForDate, ariaLabelForDate, ...rest }: CalendarGridProps) => React.JSX.Element;
9
12
  export {};
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- import type { DateValue, AriaDatePickerProps, MappedDateValue } from '@react-types/datepicker';
2
+ import { CalendarDate, DateValue } from '@internationalized/date';
3
+ import type { AriaDatePickerProps, MappedDateValue } from '@react-types/datepicker';
3
4
  import type { VariantType } from '@entur/form';
4
5
  import './DatePicker.scss';
5
6
  export type DatePickerProps<DateType extends DateValue> = {
@@ -74,8 +75,23 @@ export type DatePickerProps<DateType extends DateValue> = {
74
75
  * @default undefined
75
76
  */
76
77
  forcedReturnType?: 'CalendarDate' | 'CalendarDateTime' | 'ZonedDateTime';
78
+ /** Brukes for å legge til klassenavn på spesifikke datoer i kalenderen.
79
+ * Tar inn en dato og skal returnere klassenavnet som skal legges til den datoen.
80
+ * @default undefined
81
+ * @example (date) => isWeekend(date, 'no-NO') ? 'weekend' : ''
82
+ *
83
+ * OBS: hvis stylingen er meningsbærende bør du bruke ariaLabelForDate i tillegg for å beskrive
84
+ * meningen til skjermlesere o.l.
85
+ */
86
+ classNameForDate?: (date: CalendarDate) => string;
87
+ /** Legger til teksten som returneres på datoen i kalenderen sin aria-label.
88
+ * Bør brukes sammen med classNameForDate hvis styling-endringene gjort der er meningsbærende.
89
+ * @default undefined
90
+ * @example (date) => isWeekend(date, 'no-NO') ? 'helgedag' : ''
91
+ */
92
+ ariaLabelForDate?: (date: CalendarDate) => string;
77
93
  /** Ekstra klassenavn */
78
94
  className?: string;
79
95
  style?: React.CSSProperties;
80
96
  } & Omit<AriaDatePickerProps<DateType>, 'value' | 'onChange' | 'label' | 'hideTimeZone' | 'placeholder' | 'minValue' | 'maxValue'>;
81
- 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;
97
+ export declare const DatePicker: <DateType extends DateValue>({ selectedDate, onChange, locale, disabled, showTime, showTimeZone, classNameForDate, className, style, variant, feedback, validationVariant, validationFeedback, disableModal, labelTooltip, navigationDescription, minDate, maxDate, modalTreshold, forcedReturnType, ariaLabelForDate, ...rest }: DatePickerProps<DateType>) => React.JSX.Element;
@@ -293,15 +293,17 @@ var CalendarButton = function CalendarButton(_ref) {
293
293
  }), children);
294
294
  };
295
295
 
296
- var _excluded$8 = ["state", "date", "onSelectedCellClick"];
296
+ var _excluded$8 = ["state", "date", "onSelectedCellClick", "classNameForDate", "ariaLabelForDate"];
297
297
  var CalendarCell = function CalendarCell(_ref) {
298
- var _state$timeZone;
298
+ var _ariaLabelForDate, _classNameForDate, _state$timeZone;
299
299
  var state = _ref.state,
300
300
  date$1 = _ref.date,
301
301
  _ref$onSelectedCellCl = _ref.onSelectedCellClick,
302
302
  onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
303
303
  return;
304
304
  } : _ref$onSelectedCellCl,
305
+ classNameForDate = _ref.classNameForDate,
306
+ ariaLabelForDate = _ref.ariaLabelForDate,
305
307
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
306
308
  var cellRef = React.useRef(null);
307
309
  var _useCalendarCell = calendar.useCalendarCell({
@@ -314,12 +316,14 @@ var CalendarCell = function CalendarCell(_ref) {
314
316
  isDisabled = _useCalendarCell.isDisabled,
315
317
  isUnavailable = _useCalendarCell.isUnavailable,
316
318
  formattedDate = _useCalendarCell.formattedDate;
319
+ var ariaLabel = buttonProps['aria-label'] + " " + ((_ariaLabelForDate = ariaLabelForDate == null ? void 0 : ariaLabelForDate(date$1)) != null ? _ariaLabelForDate : '');
317
320
  return React.createElement("td", _extends({}, cellProps, {
318
321
  className: "eds-datepicker__calendar__grid__cell__td"
319
322
  }), React.createElement("div", _extends({}, buttonProps, {
323
+ "aria-label": ariaLabel,
320
324
  ref: cellRef,
321
325
  hidden: isOutsideVisibleRange,
322
- className: classNames('eds-datepicker__calendar__grid__cell', {
326
+ className: classNames('eds-datepicker__calendar__grid__cell', [(_classNameForDate = classNameForDate == null ? void 0 : classNameForDate(date$1)) != null ? _classNameForDate : ''], {
323
327
  'eds-datepicker__calendar__grid__cell--selected': isSelected,
324
328
  'eds-datepicker__calendar__grid__cell--disabled': isDisabled || isUnavailable,
325
329
  'eds-datepicker__calendar__grid__cell--outside-month': isOutsideVisibleRange,
@@ -337,7 +341,7 @@ var CalendarCell = function CalendarCell(_ref) {
337
341
  }), formattedDate));
338
342
  };
339
343
 
340
- var _excluded$7 = ["state", "navigationDescription", "onSelectedCellClick"];
344
+ var _excluded$7 = ["state", "navigationDescription", "onSelectedCellClick", "classNameForDate", "ariaLabelForDate"];
341
345
  var CalendarGrid = function CalendarGrid(_ref) {
342
346
  var state = _ref.state,
343
347
  navigationDescription = _ref.navigationDescription,
@@ -345,6 +349,8 @@ var CalendarGrid = function CalendarGrid(_ref) {
345
349
  onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
346
350
  return;
347
351
  } : _ref$onSelectedCellCl,
352
+ classNameForDate = _ref.classNameForDate,
353
+ ariaLabelForDate = _ref.ariaLabelForDate,
348
354
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
349
355
  var calendarGridId = utils.useRandomId('eds-calendar');
350
356
  var _useLocale = i18n.useLocale(),
@@ -386,7 +392,9 @@ var CalendarGrid = function CalendarGrid(_ref) {
386
392
  state: state,
387
393
  date: date,
388
394
  "aria-describedby": calendarGridId + 'description',
389
- onSelectedCellClick: onSelectedCellClick
395
+ onSelectedCellClick: onSelectedCellClick,
396
+ classNameForDate: classNameForDate,
397
+ ariaLabelForDate: ariaLabelForDate
390
398
  }) : React.createElement("td", {
391
399
  key: i
392
400
  });
@@ -396,7 +404,7 @@ var CalendarGrid = function CalendarGrid(_ref) {
396
404
  }, getNavigationDescription()));
397
405
  };
398
406
 
399
- var _excluded$6 = ["selectedDate", "onChange", "locale", "minDate", "maxDate", "style", "children", "navigationDescription", "onSelectedCellClick"];
407
+ var _excluded$6 = ["selectedDate", "onChange", "locale", "minDate", "maxDate", "style", "children", "navigationDescription", "onSelectedCellClick", "classNameForDate", "ariaLabelForDate"];
400
408
  var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
401
409
  var selectedDate = _ref.selectedDate,
402
410
  onChange = _ref.onChange,
@@ -409,6 +417,8 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
409
417
  onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
410
418
  return;
411
419
  } : _ref$onSelectedCellCl,
420
+ classNameForDate = _ref.classNameForDate,
421
+ ariaLabelForDate = _ref.ariaLabelForDate,
412
422
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
413
423
  var _useLocale = i18n.useLocale(),
414
424
  locale = _useLocale.locale;
@@ -450,11 +460,13 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
450
460
  }))), React.createElement(CalendarGrid, {
451
461
  state: state,
452
462
  navigationDescription: navigationDescription,
453
- onSelectedCellClick: onSelectedCellClick
463
+ onSelectedCellClick: onSelectedCellClick,
464
+ classNameForDate: classNameForDate,
465
+ ariaLabelForDate: ariaLabelForDate
454
466
  })));
455
467
  });
456
468
 
457
- var _excluded$5 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold", "forcedReturnType"];
469
+ var _excluded$5 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "classNameForDate", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold", "forcedReturnType", "ariaLabelForDate"];
458
470
  var DatePicker = function DatePicker(_ref) {
459
471
  var selectedDate = _ref.selectedDate,
460
472
  onChange = _ref.onChange,
@@ -463,6 +475,7 @@ var DatePicker = function DatePicker(_ref) {
463
475
  showTime = _ref.showTime,
464
476
  _ref$showTimeZone = _ref.showTimeZone,
465
477
  showTimeZone = _ref$showTimeZone === void 0 ? false : _ref$showTimeZone,
478
+ classNameForDate = _ref.classNameForDate,
466
479
  className = _ref.className,
467
480
  variant = _ref.variant,
468
481
  feedback = _ref.feedback,
@@ -477,6 +490,7 @@ var DatePicker = function DatePicker(_ref) {
477
490
  _ref$modalTreshold = _ref.modalTreshold,
478
491
  modalTreshold = _ref$modalTreshold === void 0 ? 1000 : _ref$modalTreshold,
479
492
  forcedReturnType = _ref.forcedReturnType,
493
+ ariaLabelForDate = _ref.ariaLabelForDate,
480
494
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
481
495
  var CALENDAR_MODAL_MAX_SCREEN_WIDTH = modalTreshold;
482
496
  var datePickerRef = React.useRef(null);
@@ -539,7 +553,9 @@ var DatePicker = function DatePicker(_ref) {
539
553
  onChange: handleOnChange,
540
554
  minDate: minDate,
541
555
  maxDate: maxDate,
542
- ref: calendarRef
556
+ ref: calendarRef,
557
+ classNameForDate: classNameForDate,
558
+ ariaLabelForDate: ariaLabelForDate
543
559
  });
544
560
  var useModal = typeof width !== 'undefined' && width <= CALENDAR_MODAL_MAX_SCREEN_WIDTH && !disableModal;
545
561
  var popoverCalendar = React.createElement("div", {