@entur/datepicker 9.2.0-beta.0 → 9.3.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 +16 -5
- package/dist/DatePicker/CalendarCell.d.ts +2 -1
- package/dist/DatePicker/CalendarGrid.d.ts +3 -1
- package/dist/DatePicker/DatePicker.d.ts +8 -1
- package/dist/datepicker.cjs.development.js +80 -44
- 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 +81 -46
- package/dist/datepicker.esm.js.map +1 -1
- package/dist/shared/utils.d.ts +2 -0
- package/dist/styles.css +35 -27
- package/package.json +10 -10
package/dist/datepicker.esm.js
CHANGED
|
@@ -5,7 +5,7 @@ import { useDateSegment, useDateField, useDatePicker, useTimeField } from '@reac
|
|
|
5
5
|
import { useLocale, I18nProvider } from '@react-aria/i18n';
|
|
6
6
|
import classNames from 'classnames';
|
|
7
7
|
import { BaseFormControl, useVariant, useInputGroupContext, isFilled, TextField } from '@entur/form';
|
|
8
|
-
import { CalendarDate, Time, getLocalTimeZone, GregorianCalendar, toCalendarDateTime, toTime, now, toZoned, today, toCalendarDate, ZonedDateTime, parseAbsolute, CalendarDateTime, isEqualDay, getWeeksInMonth, parseTime } from '@internationalized/date';
|
|
8
|
+
import { CalendarDate, Time, getLocalTimeZone, GregorianCalendar, toCalendarDateTime, toTime, now, toZoned, today, toCalendarDate, startOfWeek, startOfYear, ZonedDateTime, parseAbsolute, CalendarDateTime, isEqualDay, getWeeksInMonth, parseTime } from '@internationalized/date';
|
|
9
9
|
export { CalendarDate, CalendarDateTime, Time, ZonedDateTime } from '@internationalized/date';
|
|
10
10
|
import { useCalendarCell, useCalendarGrid, useCalendar } from '@react-aria/calendar';
|
|
11
11
|
import { useCalendarState } from '@react-stately/calendar';
|
|
@@ -194,6 +194,21 @@ var focusSegment = function focusSegment(ref, segment) {
|
|
|
194
194
|
}
|
|
195
195
|
}
|
|
196
196
|
};
|
|
197
|
+
/** Based on code from https://stackoverflow.com/questions/6117814/get-week-of-year-in-javascript-like-in-php */
|
|
198
|
+
function getWeekNumberForDate(date) {
|
|
199
|
+
if (date === null) return -1;
|
|
200
|
+
var calendarDate = convertValueToType({
|
|
201
|
+
value: date,
|
|
202
|
+
type: 'CalendarDate'
|
|
203
|
+
});
|
|
204
|
+
var firstDayOfWeek = startOfWeek(calendarDate, 'no-NO');
|
|
205
|
+
var thursdayOfWeek = firstDayOfWeek.add({
|
|
206
|
+
days: 3
|
|
207
|
+
});
|
|
208
|
+
var firstDayOfYearForThursday = startOfYear(thursdayOfWeek);
|
|
209
|
+
var weekNumber = Math.ceil((thursdayOfWeek.compare(firstDayOfYearForThursday) + 1) / 7);
|
|
210
|
+
return weekNumber;
|
|
211
|
+
}
|
|
197
212
|
|
|
198
213
|
var _excluded$a = ["selectedDate", "onChange", "label", "locale", "showTimeZone", "showTime", "granularity", "disabled", "isDisabled", "variant", "feedback", "validationVariant", "validationFeedback", "labelTooltip", "minDate", "maxDate", "style", "className", "labelProps", "append"];
|
|
199
214
|
var DateField = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
@@ -290,15 +305,16 @@ var CalendarButton = function CalendarButton(_ref) {
|
|
|
290
305
|
}), children);
|
|
291
306
|
};
|
|
292
307
|
|
|
293
|
-
var _excluded$8 = ["state", "date", "onSelectedCellClick", "classNameForDate", "ariaLabelForDate"];
|
|
308
|
+
var _excluded$8 = ["state", "date", "onSelectedCellClick", "weekNumberString", "classNameForDate", "ariaLabelForDate"];
|
|
294
309
|
var CalendarCell = function CalendarCell(_ref) {
|
|
295
|
-
var _ariaLabelForDate, _classNameForDate, _state$timeZone;
|
|
310
|
+
var _ariaLabelForDate, _classNameForDate, _state$timeZone, _classNames;
|
|
296
311
|
var state = _ref.state,
|
|
297
312
|
date = _ref.date,
|
|
298
313
|
_ref$onSelectedCellCl = _ref.onSelectedCellClick,
|
|
299
314
|
onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
|
|
300
315
|
return;
|
|
301
316
|
} : _ref$onSelectedCellCl,
|
|
317
|
+
weekNumberString = _ref.weekNumberString,
|
|
302
318
|
classNameForDate = _ref.classNameForDate,
|
|
303
319
|
ariaLabelForDate = _ref.ariaLabelForDate,
|
|
304
320
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
|
|
@@ -313,19 +329,15 @@ var CalendarCell = function CalendarCell(_ref) {
|
|
|
313
329
|
isDisabled = _useCalendarCell.isDisabled,
|
|
314
330
|
isUnavailable = _useCalendarCell.isUnavailable,
|
|
315
331
|
formattedDate = _useCalendarCell.formattedDate;
|
|
316
|
-
var ariaLabel = buttonProps['aria-label'] + " " + ((_ariaLabelForDate = ariaLabelForDate == null ? void 0 : ariaLabelForDate(date)) != null ? _ariaLabelForDate : '');
|
|
332
|
+
var ariaLabel = "" + buttonProps['aria-label'] + weekNumberString + " " + ((_ariaLabelForDate = ariaLabelForDate == null ? void 0 : ariaLabelForDate(date)) != null ? _ariaLabelForDate : '');
|
|
317
333
|
return React.createElement("td", _extends({}, cellProps, {
|
|
318
334
|
className: "eds-datepicker__calendar__grid__cell__td"
|
|
319
335
|
}), React.createElement("div", _extends({}, buttonProps, {
|
|
320
336
|
"aria-label": ariaLabel,
|
|
337
|
+
"aria-hidden": isOutsideVisibleRange,
|
|
321
338
|
ref: cellRef,
|
|
322
339
|
hidden: isOutsideVisibleRange,
|
|
323
|
-
className: classNames('eds-datepicker__calendar__grid__cell', [(_classNameForDate = classNameForDate == null ? void 0 : classNameForDate(date)) != null ? _classNameForDate : ''],
|
|
324
|
-
'eds-datepicker__calendar__grid__cell--selected': isSelected,
|
|
325
|
-
'eds-datepicker__calendar__grid__cell--disabled': isDisabled || isUnavailable,
|
|
326
|
-
'eds-datepicker__calendar__grid__cell--outside-month': isOutsideVisibleRange,
|
|
327
|
-
'eds-datepicker__calendar__grid__cell--today': isEqualDay(date, now((_state$timeZone = state.timeZone) != null ? _state$timeZone : getLocalTimeZone()))
|
|
328
|
-
})
|
|
340
|
+
className: classNames('eds-datepicker__calendar__grid__cell', (_classNames = {}, _classNames[(_classNameForDate = classNameForDate == null ? void 0 : classNameForDate(date)) != 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'] = isEqualDay(date, now((_state$timeZone = state.timeZone) != null ? _state$timeZone : getLocalTimeZone())), _classNames))
|
|
329
341
|
}, rest, {
|
|
330
342
|
onClick: function onClick(e) {
|
|
331
343
|
buttonProps.onClick && buttonProps.onClick(e);
|
|
@@ -338,7 +350,7 @@ var CalendarCell = function CalendarCell(_ref) {
|
|
|
338
350
|
}), formattedDate));
|
|
339
351
|
};
|
|
340
352
|
|
|
341
|
-
var _excluded$7 = ["state", "navigationDescription", "onSelectedCellClick", "classNameForDate", "ariaLabelForDate"];
|
|
353
|
+
var _excluded$7 = ["state", "navigationDescription", "onSelectedCellClick", "showWeekNumbers", "weekNumberHeader", "classNameForDate", "ariaLabelForDate"];
|
|
342
354
|
var CalendarGrid = function CalendarGrid(_ref) {
|
|
343
355
|
var state = _ref.state,
|
|
344
356
|
navigationDescription = _ref.navigationDescription,
|
|
@@ -346,6 +358,8 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
346
358
|
onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
|
|
347
359
|
return;
|
|
348
360
|
} : _ref$onSelectedCellCl,
|
|
361
|
+
showWeekNumbers = _ref.showWeekNumbers,
|
|
362
|
+
weekNumberHeader = _ref.weekNumberHeader,
|
|
349
363
|
classNameForDate = _ref.classNameForDate,
|
|
350
364
|
ariaLabelForDate = _ref.ariaLabelForDate,
|
|
351
365
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$7);
|
|
@@ -376,19 +390,26 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
376
390
|
return React.createElement(React.Fragment, null, React.createElement("table", _extends({}, gridProps, {
|
|
377
391
|
cellSpacing: "0",
|
|
378
392
|
className: "eds-datepicker__calendar__grid"
|
|
379
|
-
}), React.createElement("thead", _extends({}, headerProps), React.createElement("tr", null,
|
|
393
|
+
}), React.createElement("thead", _extends({}, headerProps), React.createElement("tr", null, showWeekNumbers && React.createElement("th", {
|
|
394
|
+
className: "eds-datepicker__calendar__grid__weeknumber-header"
|
|
395
|
+
}, weekNumberHeader), weekDaysMapped().map(function (day, index) {
|
|
380
396
|
return React.createElement("th", {
|
|
381
397
|
key: index
|
|
382
398
|
}, day);
|
|
383
399
|
}))), React.createElement("tbody", null, weeksArray.map(function (weekIndex) {
|
|
400
|
+
var weekNumber = getWeekNumberForDate(state.getDatesInWeek(weekIndex)[0]);
|
|
384
401
|
return React.createElement("tr", {
|
|
385
402
|
key: weekIndex
|
|
386
|
-
},
|
|
403
|
+
}, showWeekNumbers && React.createElement("th", {
|
|
404
|
+
"aria-hidden": true,
|
|
405
|
+
className: "eds-datepicker__calendar__grid__weeknumber"
|
|
406
|
+
}, weekNumber), state.getDatesInWeek(weekIndex).map(function (date, i) {
|
|
387
407
|
return date ? React.createElement(CalendarCell, {
|
|
388
408
|
key: i,
|
|
389
409
|
state: state,
|
|
390
410
|
date: date,
|
|
391
411
|
"aria-describedby": calendarGridId + 'description',
|
|
412
|
+
weekNumberString: showWeekNumbers ? ", " + weekNumberHeader + " " + weekNumber + "," : '',
|
|
392
413
|
onSelectedCellClick: onSelectedCellClick,
|
|
393
414
|
classNameForDate: classNameForDate,
|
|
394
415
|
ariaLabelForDate: ariaLabelForDate
|
|
@@ -401,28 +422,43 @@ var CalendarGrid = function CalendarGrid(_ref) {
|
|
|
401
422
|
}, getNavigationDescription()));
|
|
402
423
|
};
|
|
403
424
|
|
|
404
|
-
var _excluded$6 = ["
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
customLocale = _ref.locale,
|
|
409
|
-
minDate = _ref.minDate,
|
|
410
|
-
maxDate = _ref.maxDate,
|
|
411
|
-
style = _ref.style,
|
|
412
|
-
navigationDescription = _ref.navigationDescription,
|
|
413
|
-
_ref$onSelectedCellCl = _ref.onSelectedCellClick,
|
|
414
|
-
onSelectedCellClick = _ref$onSelectedCellCl === void 0 ? function () {
|
|
415
|
-
return;
|
|
416
|
-
} : _ref$onSelectedCellCl,
|
|
417
|
-
classNameForDate = _ref.classNameForDate,
|
|
418
|
-
ariaLabelForDate = _ref.ariaLabelForDate,
|
|
425
|
+
var _excluded$6 = ["locale"],
|
|
426
|
+
_excluded2$3 = ["selectedDate", "onChange", "minDate", "maxDate", "showWeekNumbers", "weekNumberHeader", "style", "className", "navigationDescription", "onSelectedCellClick", "classNameForDate", "ariaLabelForDate", "calendarRef"];
|
|
427
|
+
var Calendar = function Calendar(_ref) {
|
|
428
|
+
var localOverride = _ref.locale,
|
|
419
429
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
|
|
420
430
|
var _useLocale = useLocale(),
|
|
421
431
|
locale = _useLocale.locale;
|
|
432
|
+
return React.createElement(I18nProvider, {
|
|
433
|
+
locale: localOverride != null ? localOverride : locale
|
|
434
|
+
}, React.createElement(CalendarBase, _extends({}, rest)));
|
|
435
|
+
};
|
|
436
|
+
var CalendarBase = function CalendarBase(_ref2) {
|
|
437
|
+
var selectedDate = _ref2.selectedDate,
|
|
438
|
+
onChange = _ref2.onChange,
|
|
439
|
+
minDate = _ref2.minDate,
|
|
440
|
+
maxDate = _ref2.maxDate,
|
|
441
|
+
_ref2$showWeekNumbers = _ref2.showWeekNumbers,
|
|
442
|
+
showWeekNumbers = _ref2$showWeekNumbers === void 0 ? false : _ref2$showWeekNumbers,
|
|
443
|
+
_ref2$weekNumberHeade = _ref2.weekNumberHeader,
|
|
444
|
+
weekNumberHeader = _ref2$weekNumberHeade === void 0 ? 'uke' : _ref2$weekNumberHeade,
|
|
445
|
+
style = _ref2.style,
|
|
446
|
+
className = _ref2.className,
|
|
447
|
+
navigationDescription = _ref2.navigationDescription,
|
|
448
|
+
_ref2$onSelectedCellC = _ref2.onSelectedCellClick,
|
|
449
|
+
onSelectedCellClick = _ref2$onSelectedCellC === void 0 ? function () {
|
|
450
|
+
return;
|
|
451
|
+
} : _ref2$onSelectedCellC,
|
|
452
|
+
classNameForDate = _ref2.classNameForDate,
|
|
453
|
+
ariaLabelForDate = _ref2.ariaLabelForDate,
|
|
454
|
+
calendarRef = _ref2.calendarRef,
|
|
455
|
+
rest = _objectWithoutPropertiesLoose(_ref2, _excluded2$3);
|
|
456
|
+
var _useLocale2 = useLocale(),
|
|
457
|
+
locale = _useLocale2.locale;
|
|
422
458
|
var allProps = _extends({}, rest, {
|
|
423
459
|
value: selectedDate,
|
|
424
460
|
onChange: onChange,
|
|
425
|
-
locale:
|
|
461
|
+
locale: locale,
|
|
426
462
|
createCalendar: createCalendar,
|
|
427
463
|
minValue: minDate,
|
|
428
464
|
maxValue: maxDate
|
|
@@ -433,16 +469,9 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
433
469
|
prevButtonProps = _useCalendar.prevButtonProps,
|
|
434
470
|
nextButtonProps = _useCalendar.nextButtonProps,
|
|
435
471
|
title = _useCalendar.title;
|
|
436
|
-
return React.createElement(
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
return React.createElement(I18nProvider, {
|
|
440
|
-
locale: customLocale
|
|
441
|
-
}, child);
|
|
442
|
-
}
|
|
443
|
-
}, React.createElement("div", _extends({}, calendarProps, {
|
|
444
|
-
ref: ref,
|
|
445
|
-
className: "eds-datepicker__calendar",
|
|
472
|
+
return React.createElement("div", _extends({}, calendarProps, {
|
|
473
|
+
ref: calendarRef,
|
|
474
|
+
className: classNames('eds-datepicker__calendar', className),
|
|
446
475
|
style: style
|
|
447
476
|
}), React.createElement("div", {
|
|
448
477
|
className: "eds-datepicker__calendar__header"
|
|
@@ -459,11 +488,13 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
459
488
|
navigationDescription: navigationDescription,
|
|
460
489
|
onSelectedCellClick: onSelectedCellClick,
|
|
461
490
|
classNameForDate: classNameForDate,
|
|
462
|
-
ariaLabelForDate: ariaLabelForDate
|
|
463
|
-
|
|
464
|
-
|
|
491
|
+
ariaLabelForDate: ariaLabelForDate,
|
|
492
|
+
showWeekNumbers: showWeekNumbers,
|
|
493
|
+
weekNumberHeader: weekNumberHeader
|
|
494
|
+
}));
|
|
495
|
+
};
|
|
465
496
|
|
|
466
|
-
var _excluded$5 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "classNameForDate", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold", "forcedReturnType", "ariaLabelForDate"];
|
|
497
|
+
var _excluded$5 = ["selectedDate", "onChange", "locale", "disabled", "showTime", "showTimeZone", "classNameForDate", "className", "style", "variant", "feedback", "validationVariant", "validationFeedback", "showWeekNumbers", "weekNumberHeader", "disableModal", "labelTooltip", "navigationDescription", "minDate", "maxDate", "modalTreshold", "forcedReturnType", "ariaLabelForDate"];
|
|
467
498
|
var DatePicker = function DatePicker(_ref) {
|
|
468
499
|
var selectedDate = _ref.selectedDate,
|
|
469
500
|
onChange = _ref.onChange,
|
|
@@ -478,6 +509,8 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
478
509
|
feedback = _ref.feedback,
|
|
479
510
|
validationVariant = _ref.validationVariant,
|
|
480
511
|
validationFeedback = _ref.validationFeedback,
|
|
512
|
+
showWeekNumbers = _ref.showWeekNumbers,
|
|
513
|
+
weekNumberHeader = _ref.weekNumberHeader,
|
|
481
514
|
_ref$disableModal = _ref.disableModal,
|
|
482
515
|
disableModal = _ref$disableModal === void 0 ? false : _ref$disableModal,
|
|
483
516
|
labelTooltip = _ref.labelTooltip,
|
|
@@ -550,9 +583,11 @@ var DatePicker = function DatePicker(_ref) {
|
|
|
550
583
|
onChange: handleOnChange,
|
|
551
584
|
minDate: minDate,
|
|
552
585
|
maxDate: maxDate,
|
|
553
|
-
|
|
586
|
+
calendarRef: calendarRef,
|
|
554
587
|
classNameForDate: classNameForDate,
|
|
555
|
-
ariaLabelForDate: ariaLabelForDate
|
|
588
|
+
ariaLabelForDate: ariaLabelForDate,
|
|
589
|
+
showWeekNumbers: showWeekNumbers,
|
|
590
|
+
weekNumberHeader: weekNumberHeader
|
|
556
591
|
});
|
|
557
592
|
var useModal = typeof width !== 'undefined' && width <= CALENDAR_MODAL_MAX_SCREEN_WIDTH && !disableModal;
|
|
558
593
|
var popoverCalendar = React.createElement("div", {
|
|
@@ -1109,5 +1144,5 @@ var SimpleTimePicker = function SimpleTimePicker(_ref) {
|
|
|
1109
1144
|
|
|
1110
1145
|
warnAboutMissingStyles('datepicker', 'form', 'icons');
|
|
1111
1146
|
|
|
1112
|
-
export { Calendar, DateField, DatePicker, NativeDatePicker, NativeTimePicker, SimpleTimePicker, TimePicker, ariaLabelIfNorwegian, convertValueToType, createCalendar, focusSegment, lastMillisecondOfDay, modulo, nativeDateToDateValue, nativeDateToTimeValue, timeOrDateValueToNativeDate };
|
|
1147
|
+
export { Calendar, DateField, DatePicker, NativeDatePicker, NativeTimePicker, SimpleTimePicker, TimePicker, ariaLabelIfNorwegian, convertValueToType, createCalendar, focusSegment, getWeekNumberForDate, lastMillisecondOfDay, modulo, nativeDateToDateValue, nativeDateToTimeValue, timeOrDateValueToNativeDate };
|
|
1113
1148
|
//# sourceMappingURL=datepicker.esm.js.map
|