@danske/sapphire-react-lab 0.76.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.
Files changed (134) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +15 -0
  3. package/build/cjs/index.js +2876 -0
  4. package/build/cjs/index.js.map +1 -0
  5. package/build/esm/Accordion/index.js +11 -0
  6. package/build/esm/Accordion/index.js.map +1 -0
  7. package/build/esm/Accordion/src/Accordion.js +72 -0
  8. package/build/esm/Accordion/src/Accordion.js.map +1 -0
  9. package/build/esm/Accordion/src/AccordionHeading.js +49 -0
  10. package/build/esm/Accordion/src/AccordionHeading.js.map +1 -0
  11. package/build/esm/Accordion/src/AccordionItem.js +68 -0
  12. package/build/esm/Accordion/src/AccordionItem.js.map +1 -0
  13. package/build/esm/Accordion/src/useTreeState.js +42 -0
  14. package/build/esm/Accordion/src/useTreeState.js.map +1 -0
  15. package/build/esm/Avatar/src/Avatar.js +63 -0
  16. package/build/esm/Avatar/src/Avatar.js.map +1 -0
  17. package/build/esm/Calendar/i18n/da-DK.js +9 -0
  18. package/build/esm/Calendar/i18n/da-DK.js.map +1 -0
  19. package/build/esm/Calendar/i18n/de-DE.js +9 -0
  20. package/build/esm/Calendar/i18n/de-DE.js.map +1 -0
  21. package/build/esm/Calendar/i18n/en-US.js +9 -0
  22. package/build/esm/Calendar/i18n/en-US.js.map +1 -0
  23. package/build/esm/Calendar/i18n/fi-FI.js +9 -0
  24. package/build/esm/Calendar/i18n/fi-FI.js.map +1 -0
  25. package/build/esm/Calendar/i18n/index.js +20 -0
  26. package/build/esm/Calendar/i18n/index.js.map +1 -0
  27. package/build/esm/Calendar/i18n/nb-NO.js +9 -0
  28. package/build/esm/Calendar/i18n/nb-NO.js.map +1 -0
  29. package/build/esm/Calendar/i18n/pl-PL.js +9 -0
  30. package/build/esm/Calendar/i18n/pl-PL.js.map +1 -0
  31. package/build/esm/Calendar/i18n/sv-SE.js +9 -0
  32. package/build/esm/Calendar/i18n/sv-SE.js.map +1 -0
  33. package/build/esm/Calendar/src/Calendar.js +122 -0
  34. package/build/esm/Calendar/src/Calendar.js.map +1 -0
  35. package/build/esm/Calendar/src/CalendarButtons.js +96 -0
  36. package/build/esm/Calendar/src/CalendarButtons.js.map +1 -0
  37. package/build/esm/Calendar/src/CalendarDaysGrid.js +169 -0
  38. package/build/esm/Calendar/src/CalendarDaysGrid.js.map +1 -0
  39. package/build/esm/Calendar/src/CalendarHeader.js +58 -0
  40. package/build/esm/Calendar/src/CalendarHeader.js.map +1 -0
  41. package/build/esm/Calendar/src/CalendarMonthOrYearCell.js +79 -0
  42. package/build/esm/Calendar/src/CalendarMonthOrYearCell.js.map +1 -0
  43. package/build/esm/Calendar/src/CalendarMonthsGrid.js +58 -0
  44. package/build/esm/Calendar/src/CalendarMonthsGrid.js.map +1 -0
  45. package/build/esm/Calendar/src/CalendarPageAnimation.js +67 -0
  46. package/build/esm/Calendar/src/CalendarPageAnimation.js.map +1 -0
  47. package/build/esm/Calendar/src/CalendarYearsGrid.js +52 -0
  48. package/build/esm/Calendar/src/CalendarYearsGrid.js.map +1 -0
  49. package/build/esm/Calendar/src/RangeCalendar.js +119 -0
  50. package/build/esm/Calendar/src/RangeCalendar.js.map +1 -0
  51. package/build/esm/Calendar/src/useCustomDurationCalendarGrid.js +57 -0
  52. package/build/esm/Calendar/src/useCustomDurationCalendarGrid.js.map +1 -0
  53. package/build/esm/Calendar/src/useRangeCalendarState.js +57 -0
  54. package/build/esm/Calendar/src/useRangeCalendarState.js.map +1 -0
  55. package/build/esm/Calendar/src/useSapphireCalendarState.js +86 -0
  56. package/build/esm/Calendar/src/useSapphireCalendarState.js.map +1 -0
  57. package/build/esm/Calendar/src/utils.js +12 -0
  58. package/build/esm/Calendar/src/utils.js.map +1 -0
  59. package/build/esm/DateField/i18n/da-DK.js +7 -0
  60. package/build/esm/DateField/i18n/da-DK.js.map +1 -0
  61. package/build/esm/DateField/i18n/de-DE.js +7 -0
  62. package/build/esm/DateField/i18n/de-DE.js.map +1 -0
  63. package/build/esm/DateField/i18n/en-US.js +7 -0
  64. package/build/esm/DateField/i18n/en-US.js.map +1 -0
  65. package/build/esm/DateField/i18n/fi-FI.js +7 -0
  66. package/build/esm/DateField/i18n/fi-FI.js.map +1 -0
  67. package/build/esm/DateField/i18n/index.js +20 -0
  68. package/build/esm/DateField/i18n/index.js.map +1 -0
  69. package/build/esm/DateField/i18n/nb-NO.js +7 -0
  70. package/build/esm/DateField/i18n/nb-NO.js.map +1 -0
  71. package/build/esm/DateField/i18n/pl-PL.js +7 -0
  72. package/build/esm/DateField/i18n/pl-PL.js.map +1 -0
  73. package/build/esm/DateField/i18n/sv-SE.js +7 -0
  74. package/build/esm/DateField/i18n/sv-SE.js.map +1 -0
  75. package/build/esm/DateField/src/DateField.js +126 -0
  76. package/build/esm/DateField/src/DateField.js.map +1 -0
  77. package/build/esm/DateField/src/DateFieldButton.js +44 -0
  78. package/build/esm/DateField/src/DateFieldButton.js.map +1 -0
  79. package/build/esm/DateField/src/DateInput.js +81 -0
  80. package/build/esm/DateField/src/DateInput.js.map +1 -0
  81. package/build/esm/DateField/src/DateRangeField.js +151 -0
  82. package/build/esm/DateField/src/DateRangeField.js.map +1 -0
  83. package/build/esm/DateField/src/DateRangeInput.js +90 -0
  84. package/build/esm/DateField/src/DateRangeInput.js.map +1 -0
  85. package/build/esm/DateField/src/DateSegment.js +52 -0
  86. package/build/esm/DateField/src/DateSegment.js.map +1 -0
  87. package/build/esm/DateField/src/helpers.js +14 -0
  88. package/build/esm/DateField/src/helpers.js.map +1 -0
  89. package/build/esm/DateField/src/useDateRangePickerState.js +57 -0
  90. package/build/esm/DateField/src/useDateRangePickerState.js.map +1 -0
  91. package/build/esm/DateField/src/utils/placeholders.js +91 -0
  92. package/build/esm/DateField/src/utils/placeholders.js.map +1 -0
  93. package/build/esm/DateField/src/utils/segments.js +46 -0
  94. package/build/esm/DateField/src/utils/segments.js.map +1 -0
  95. package/build/esm/FeedbackMessage/src/FeedbackMessage.js +55 -0
  96. package/build/esm/FeedbackMessage/src/FeedbackMessage.js.map +1 -0
  97. package/build/esm/Fieldset/src/Fieldset.js +77 -0
  98. package/build/esm/Fieldset/src/Fieldset.js.map +1 -0
  99. package/build/esm/Filtering/src/FilterDropdown.js +61 -0
  100. package/build/esm/Filtering/src/FilterDropdown.js.map +1 -0
  101. package/build/esm/NotificationBadge/src/NotificationBadge.js +72 -0
  102. package/build/esm/NotificationBadge/src/NotificationBadge.js.map +1 -0
  103. package/build/esm/SearchField/src/SearchField.js +115 -0
  104. package/build/esm/SearchField/src/SearchField.js.map +1 -0
  105. package/build/esm/SearchField/src/useComboBoxState.js +42 -0
  106. package/build/esm/SearchField/src/useComboBoxState.js.map +1 -0
  107. package/build/esm/Spinner/src/Spinner.js +46 -0
  108. package/build/esm/Spinner/src/Spinner.js.map +1 -0
  109. package/build/esm/Toast/src/Toast.js +66 -0
  110. package/build/esm/Toast/src/Toast.js.map +1 -0
  111. package/build/esm/Toast/src/ToastProvider.js +53 -0
  112. package/build/esm/Toast/src/ToastProvider.js.map +1 -0
  113. package/build/esm/Toast/src/ToastRegion.js +56 -0
  114. package/build/esm/Toast/src/ToastRegion.js.map +1 -0
  115. package/build/esm/Toast/src/context.js +10 -0
  116. package/build/esm/Toast/src/context.js.map +1 -0
  117. package/build/esm/Toast/src/useShowToast.js +15 -0
  118. package/build/esm/Toast/src/useShowToast.js.map +1 -0
  119. package/build/esm/ToggleButton/src/ToggleButton.js +85 -0
  120. package/build/esm/ToggleButton/src/ToggleButton.js.map +1 -0
  121. package/build/esm/Typography/index.js +14 -0
  122. package/build/esm/Typography/index.js.map +1 -0
  123. package/build/esm/Typography/src/Body.js +66 -0
  124. package/build/esm/Typography/src/Body.js.map +1 -0
  125. package/build/esm/Typography/src/Caption.js +59 -0
  126. package/build/esm/Typography/src/Caption.js.map +1 -0
  127. package/build/esm/Typography/src/Heading.js +55 -0
  128. package/build/esm/Typography/src/Heading.js.map +1 -0
  129. package/build/esm/Typography/src/Subheading.js +63 -0
  130. package/build/esm/Typography/src/Subheading.js.map +1 -0
  131. package/build/esm/index.js +21 -0
  132. package/build/esm/index.js.map +1 -0
  133. package/build/index.d.ts +746 -0
  134. package/package.json +65 -0
@@ -0,0 +1,52 @@
1
+ import React from 'react';
2
+ import clsx from 'clsx';
3
+ import { startOfYear, endOfYear } from '@internationalized/date';
4
+ import styles from '@danske/sapphire-css/components/calendar/calendar.module.css';
5
+ import { range, chunks } from './utils.js';
6
+ import { CalendarMonthOrYearCell } from './CalendarMonthOrYearCell.js';
7
+ import { useCustomDurationCalendarGrid } from './useCustomDurationCalendarGrid.js';
8
+
9
+ var __defProp = Object.defineProperty;
10
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
11
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
12
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
13
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
+ var __spreadValues = (a, b) => {
15
+ for (var prop in b || (b = {}))
16
+ if (__hasOwnProp.call(b, prop))
17
+ __defNormalProp(a, prop, b[prop]);
18
+ if (__getOwnPropSymbols)
19
+ for (var prop of __getOwnPropSymbols(b)) {
20
+ if (__propIsEnum.call(b, prop))
21
+ __defNormalProp(a, prop, b[prop]);
22
+ }
23
+ return a;
24
+ };
25
+ function CalendarYearsGrid({
26
+ state
27
+ }) {
28
+ const years = range(state.visibleRange.start.year, state.visibleRange.end.year).slice(0, 12);
29
+ const yearRows = [...chunks(years, 3)];
30
+ const { gridProps } = useCustomDurationCalendarGrid({ cellsDuration: "years" }, state);
31
+ return /* @__PURE__ */ React.createElement("table", __spreadValues({
32
+ className: clsx(styles["sapphire-calendar__table"], styles["sapphire-calendar__table--month-year"])
33
+ }, gridProps), /* @__PURE__ */ React.createElement("tbody", null, yearRows.map((currentRowYears, rowIndex) => /* @__PURE__ */ React.createElement("tr", {
34
+ key: rowIndex,
35
+ className: styles["sapphire-calendar__table-body-row"]
36
+ }, currentRowYears.map((year, index) => {
37
+ const newFocusedDate = state.focusedDate.set({
38
+ year
39
+ });
40
+ const isYearDisabled = state.isInvalid(startOfYear(newFocusedDate)) && state.isInvalid(endOfYear(newFocusedDate));
41
+ return /* @__PURE__ */ React.createElement(CalendarMonthOrYearCell, {
42
+ key: index,
43
+ date: newFocusedDate,
44
+ field: "year",
45
+ isDisabled: isYearDisabled,
46
+ state
47
+ }, year);
48
+ })))));
49
+ }
50
+
51
+ export { CalendarYearsGrid };
52
+ //# sourceMappingURL=CalendarYearsGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CalendarYearsGrid.js","sources":["../../../../src/Calendar/src/CalendarYearsGrid.tsx"],"sourcesContent":["import React from 'react';\nimport clsx from 'clsx';\nimport { endOfYear, startOfYear } from '@internationalized/date';\n\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\n\nimport { chunks, range } from './utils';\nimport { CalendarMonthOrYearCell } from './CalendarMonthOrYearCell';\nimport { SapphireCalendarState } from './useSapphireCalendarState';\nimport { useCustomDurationCalendarGrid } from './useCustomDurationCalendarGrid';\n\nexport function CalendarYearsGrid({\n state,\n}: {\n state: SapphireCalendarState;\n}): JSX.Element {\n const years = range(\n state.visibleRange.start.year,\n state.visibleRange.end.year\n ).slice(0, 12);\n const yearRows = [...chunks(years, 3)];\n const { gridProps } = useCustomDurationCalendarGrid(\n { cellsDuration: 'years' },\n state\n );\n return (\n <table\n className={clsx(\n styles['sapphire-calendar__table'],\n styles['sapphire-calendar__table--month-year']\n )}\n {...gridProps}\n >\n <tbody>\n {yearRows.map((currentRowYears, rowIndex) => (\n <tr\n key={rowIndex}\n className={styles['sapphire-calendar__table-body-row']}\n >\n {currentRowYears.map((year, index) => {\n const newFocusedDate = state.focusedDate.set({\n year: year,\n });\n // Since validation is only about min and max dates, we just\n // check the edges of the period\n const isYearDisabled =\n state.isInvalid(startOfYear(newFocusedDate)) &&\n state.isInvalid(endOfYear(newFocusedDate));\n return (\n <CalendarMonthOrYearCell\n key={index}\n date={newFocusedDate}\n field={'year'}\n isDisabled={isYearDisabled}\n state={state}\n >\n {year}\n </CalendarMonthOrYearCell>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAWkC,SAAA,iBAAA,CAAA;AAAA,EAChC,KAAA;AAAA,CAGc,EAAA;AACd,EAAM,MAAA,KAAA,GAAQ,KACZ,CAAA,KAAA,CAAM,YAAa,CAAA,KAAA,CAAM,IACzB,EAAA,KAAA,CAAM,YAAa,CAAA,GAAA,CAAI,IACvB,CAAA,CAAA,KAAA,CAAM,CAAG,EAAA,EAAA,CAAA,CAAA;AACX,EAAA,MAAM,QAAW,GAAA,CAAC,GAAG,MAAA,CAAO,KAAO,EAAA,CAAA,CAAA,CAAA,CAAA;AACnC,EAAA,MAAM,EAAE,SAAA,EAAA,GAAc,6BACpB,CAAA,EAAE,eAAe,OACjB,EAAA,EAAA,KAAA,CAAA,CAAA;AAEF,EAAA,2CACG,OAAD,EAAA,cAAA,CAAA;AAAA,IACE,SAAW,EAAA,IAAA,CACT,MAAO,CAAA,0BAAA,CAAA,EACP,MAAO,CAAA,sCAAA,CAAA,CAAA;AAAA,GAEL,EAAA,SAAA,CAAA,kBAEH,KAAA,CAAA,aAAA,CAAA,OAAA,EAAD,IACG,EAAA,QAAA,CAAS,IAAI,CAAC,eAAA,EAAiB,QAC9B,qBAAA,KAAA,CAAA,aAAA,CAAC,IAAD,EAAA;AAAA,IACE,GAAK,EAAA,QAAA;AAAA,IACL,WAAW,MAAO,CAAA,mCAAA,CAAA;AAAA,GAAA,EAEjB,eAAgB,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,KAAU,KAAA;AACpC,IAAM,MAAA,cAAA,GAAiB,KAAM,CAAA,WAAA,CAAY,GAAI,CAAA;AAAA,MAC3C,IAAA;AAAA,KAAA,CAAA,CAAA;AAIF,IAAA,MAAM,iBACJ,KAAM,CAAA,SAAA,CAAU,YAAY,cAC5B,CAAA,CAAA,IAAA,KAAA,CAAM,UAAU,SAAU,CAAA,cAAA,CAAA,CAAA,CAAA;AAC5B,IAAA,2CACG,uBAAD,EAAA;AAAA,MACE,GAAK,EAAA,KAAA;AAAA,MACL,IAAM,EAAA,cAAA;AAAA,MACN,KAAO,EAAA,MAAA;AAAA,MACP,UAAY,EAAA,cAAA;AAAA,MACZ,KAAA;AAAA,KAEC,EAAA,IAAA,CAAA,CAAA;AAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
@@ -0,0 +1,119 @@
1
+ import React, { useMemo } from 'react';
2
+ import { createCalendar, toCalendarDate } from '@internationalized/date';
3
+ import { useRangeCalendar } from '@react-aria/calendar';
4
+ import { useObjectRef, mergeProps, filterDOMProps } from '@react-aria/utils';
5
+ import { useThemeCheck, useSapphireStyleProps, Button } from '@danske/sapphire-react';
6
+ import styles from '@danske/sapphire-css/components/calendar/calendar.module.css';
7
+ import { CalendarDaysGrid } from './CalendarDaysGrid.js';
8
+ import { useLocale, useDateFormatter } from '@react-aria/i18n';
9
+ import clsx from 'clsx';
10
+ import { useRangeCalendarState } from './useRangeCalendarState.js';
11
+ import { CalendarHeader } from './CalendarHeader.js';
12
+ import { useCalendarAnimationState, CalendarPageAnimation } from './CalendarPageAnimation.js';
13
+ import { sentenceCase } from './utils.js';
14
+
15
+ var __defProp = Object.defineProperty;
16
+ var __defProps = Object.defineProperties;
17
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
18
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
19
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
20
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
21
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
22
+ var __spreadValues = (a, b) => {
23
+ for (var prop in b || (b = {}))
24
+ if (__hasOwnProp.call(b, prop))
25
+ __defNormalProp(a, prop, b[prop]);
26
+ if (__getOwnPropSymbols)
27
+ for (var prop of __getOwnPropSymbols(b)) {
28
+ if (__propIsEnum.call(b, prop))
29
+ __defNormalProp(a, prop, b[prop]);
30
+ }
31
+ return a;
32
+ };
33
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
34
+ var __objRest = (source, exclude) => {
35
+ var target = {};
36
+ for (var prop in source)
37
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
38
+ target[prop] = source[prop];
39
+ if (source != null && __getOwnPropSymbols)
40
+ for (var prop of __getOwnPropSymbols(source)) {
41
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
42
+ target[prop] = source[prop];
43
+ }
44
+ return target;
45
+ };
46
+ const _RangeCalendar = function RangeCalendar2(_a, forwardedRef) {
47
+ var _b = _a, {
48
+ showWeekNumbers,
49
+ showTwoMonths = false,
50
+ allowUnavailableDatesWithinRange = false,
51
+ predefinedRanges
52
+ } = _b, props = __objRest(_b, [
53
+ "showWeekNumbers",
54
+ "showTwoMonths",
55
+ "allowUnavailableDatesWithinRange",
56
+ "predefinedRanges"
57
+ ]);
58
+ useThemeCheck();
59
+ const { styleProps } = useSapphireStyleProps(props);
60
+ const ref = useObjectRef(forwardedRef);
61
+ const { locale } = useLocale();
62
+ const state = useCalendarAnimationState(useRangeCalendarState(__spreadProps(__spreadValues({}, props), {
63
+ locale,
64
+ allowsNonContiguousRanges: allowUnavailableDatesWithinRange,
65
+ visibleDuration: useMemo(() => ({ months: showTwoMonths ? 2 : 1 }), [showTwoMonths]),
66
+ createCalendar
67
+ })));
68
+ const { calendarProps, prevButtonProps, nextButtonProps } = useRangeCalendar(props, state, ref);
69
+ const monthDateFormatter = useDateFormatter({
70
+ month: "long",
71
+ year: "numeric",
72
+ era: state.visibleRange.start.calendar.identifier === "gregory" && state.visibleRange.start.era === "BC" ? "short" : void 0,
73
+ calendar: state.visibleRange.start.calendar.identifier,
74
+ timeZone: state.timeZone
75
+ });
76
+ return /* @__PURE__ */ React.createElement("div", __spreadValues({
77
+ ref,
78
+ className: clsx(styles["sapphire-calendar"], styleProps.className),
79
+ style: styleProps.style
80
+ }, mergeProps(calendarProps, filterDOMProps(props))), /* @__PURE__ */ React.createElement("div", {
81
+ className: styles["sapphire-calendar__tables-row"]
82
+ }, [state.visibleRange.start].concat(showTwoMonths ? state.visibleRange.start.add({ months: 1 }) : []).map((startOfMonth, index, visibleMonths) => {
83
+ const isLeft = visibleMonths.length > 1 && index === 0;
84
+ const isRight = visibleMonths.length > 1 && index === visibleMonths.length - 1;
85
+ const shouldAnimate = visibleMonths.length === 1;
86
+ const daysGrid = /* @__PURE__ */ React.createElement(CalendarDaysGrid, {
87
+ startDate: startOfMonth,
88
+ state,
89
+ showWeekNumbers
90
+ });
91
+ return /* @__PURE__ */ React.createElement("div", {
92
+ key: index,
93
+ className: styles["sapphire-calendar__table-container"]
94
+ }, /* @__PURE__ */ React.createElement(CalendarHeader, {
95
+ prevButtonProps,
96
+ nextButtonProps,
97
+ isLeft,
98
+ isRight
99
+ }, sentenceCase(monthDateFormatter.format(startOfMonth.toDate(state.timeZone)))), shouldAnimate ? /* @__PURE__ */ React.createElement(CalendarPageAnimation, {
100
+ state: state.animationState
101
+ }, daysGrid) : daysGrid);
102
+ })), predefinedRanges && /* @__PURE__ */ React.createElement("div", {
103
+ className: styles["sapphire-calendar__custom-ranges"]
104
+ }, Object.entries(predefinedRanges).map(([key, { label, dateRange }]) => /* @__PURE__ */ React.createElement("div", {
105
+ key
106
+ }, /* @__PURE__ */ React.createElement(Button, {
107
+ variant: "secondary",
108
+ appearance: "ghost",
109
+ onPress: () => {
110
+ state.setValue(dateRange, key);
111
+ state.setAnchorDate(null);
112
+ state.setFocusedDate(toCalendarDate(dateRange.end));
113
+ }
114
+ }, label)))));
115
+ };
116
+ const RangeCalendar = React.forwardRef(_RangeCalendar);
117
+
118
+ export { RangeCalendar };
119
+ //# sourceMappingURL=RangeCalendar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RangeCalendar.js","sources":["../../../../src/Calendar/src/RangeCalendar.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport {\n createCalendar,\n DateValue,\n toCalendarDate,\n} from '@internationalized/date';\nimport { AriaRangeCalendarProps, useRangeCalendar } from '@react-aria/calendar';\nimport { filterDOMProps, mergeProps, useObjectRef } from '@react-aria/utils';\n\nimport {\n Button,\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\nimport styles from '@danske/sapphire-css/components/calendar/calendar.module.css';\n\nimport { CalendarDaysGrid } from './CalendarDaysGrid';\nimport { useDateFormatter, useLocale } from '@react-aria/i18n';\nimport clsx from 'clsx';\nimport { useRangeCalendarState } from './useRangeCalendarState';\nimport type { RangeCalendarStateOptions } from './useRangeCalendarState';\nimport { CalendarHeader } from './CalendarHeader';\nimport {\n CalendarPageAnimation,\n useCalendarAnimationState,\n} from './CalendarPageAnimation';\nimport { sentenceCase } from './utils';\n\nexport type PredefinedDateRange = {\n label: string;\n dateRange: { start: DateValue; end: DateValue };\n};\n\nexport interface SapphireRangeCalendarProps<P extends string = string>\n extends SapphireStyleProps,\n Omit<\n AriaRangeCalendarProps<DateValue>,\n | 'validationState'\n | 'errorMessage'\n | 'allowsNonContiguousRanges'\n | 'onChange'\n > {\n /**\n * This callback also gives you the information if the selected range was a\n * predefined date according to the `predefinedRanges` prop.\n */\n onChange?: RangeCalendarStateOptions<DateValue, P>['onChange'];\n /**\n * Whether week numbers are visible as a first column\n */\n showWeekNumbers?: boolean;\n\n /**\n * Whether to show two months at the same time.\n */\n showTwoMonths?: boolean;\n\n /**\n * A set of predefined date ranges the user can more conveniently select.\n */\n predefinedRanges?: Record<P, PredefinedDateRange>;\n\n /**\n * Whether range is allowed to span unavailable dates.\n */\n allowUnavailableDatesWithinRange?: boolean;\n}\n\n/**\n * Displays a calendar and allow users to select a consecutive range of dates.\n * One or two months can be visible at the same time.\n */\nconst _RangeCalendar = function RangeCalendar<T extends string>(\n {\n showWeekNumbers,\n showTwoMonths = false,\n allowUnavailableDatesWithinRange = false,\n predefinedRanges,\n ...props\n }: SapphireRangeCalendarProps<T>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>\n): JSX.Element {\n useThemeCheck();\n const { styleProps } = useSapphireStyleProps(props);\n\n const ref = useObjectRef(forwardedRef);\n const { locale } = useLocale();\n const state = useCalendarAnimationState(\n useRangeCalendarState({\n ...props,\n locale,\n allowsNonContiguousRanges: allowUnavailableDatesWithinRange,\n visibleDuration: useMemo(\n () => ({ months: showTwoMonths ? 2 : 1 }),\n [showTwoMonths]\n ),\n createCalendar,\n })\n );\n const { calendarProps, prevButtonProps, nextButtonProps } = useRangeCalendar(\n props,\n state,\n ref\n );\n\n const monthDateFormatter = useDateFormatter({\n month: 'long',\n year: 'numeric',\n era:\n state.visibleRange.start.calendar.identifier === 'gregory' &&\n state.visibleRange.start.era === 'BC'\n ? 'short'\n : undefined,\n calendar: state.visibleRange.start.calendar.identifier,\n timeZone: state.timeZone,\n });\n\n return (\n <div\n ref={ref}\n className={clsx(styles['sapphire-calendar'], styleProps.className)}\n style={styleProps.style}\n {...mergeProps(calendarProps, filterDOMProps(props))}\n >\n <div className={styles['sapphire-calendar__tables-row']}>\n {[state.visibleRange.start]\n .concat(\n showTwoMonths ? state.visibleRange.start.add({ months: 1 }) : []\n )\n .map((startOfMonth, index, visibleMonths) => {\n const isLeft = visibleMonths.length > 1 && index === 0;\n const isRight =\n visibleMonths.length > 1 && index === visibleMonths.length - 1;\n const shouldAnimate = visibleMonths.length === 1;\n const daysGrid = (\n <CalendarDaysGrid\n startDate={startOfMonth}\n state={state}\n showWeekNumbers={showWeekNumbers}\n />\n );\n return (\n <div\n key={index}\n className={styles['sapphire-calendar__table-container']}\n >\n <CalendarHeader\n prevButtonProps={prevButtonProps}\n nextButtonProps={nextButtonProps}\n isLeft={isLeft}\n isRight={isRight}\n >\n {sentenceCase(\n monthDateFormatter.format(\n startOfMonth.toDate(state.timeZone)\n )\n )}\n </CalendarHeader>\n {shouldAnimate ? (\n <CalendarPageAnimation state={state.animationState}>\n {daysGrid}\n </CalendarPageAnimation>\n ) : (\n daysGrid\n )}\n </div>\n );\n })}\n </div>\n {predefinedRanges && (\n <div className={styles['sapphire-calendar__custom-ranges']}>\n {(\n Object.entries(predefinedRanges) as Array<[T, PredefinedDateRange]>\n ).map(([key, { label, dateRange }]) => (\n <div key={key}>\n <Button\n variant=\"secondary\"\n appearance=\"ghost\"\n onPress={() => {\n state.setValue(dateRange, key);\n state.setAnchorDate(null);\n state.setFocusedDate(toCalendarDate(dateRange.end));\n }}\n >\n {label}\n </Button>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n\n// eslint-disable-next-line\n// @ts-ignore Union type too complex to represent (TODO: check if this is still\n// an issue when we use TS@5.\nexport const RangeCalendar = React.forwardRef(_RangeCalendar) as <\n T extends string\n>(\n props: SapphireRangeCalendarProps<T> & {\n ref?: React.ForwardedRef<HTMLDivElement>;\n }\n) => ReturnType<typeof _RangeCalendar>;\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyEA,MAAM,cAAA,GAAiB,SACrB,cAAA,CAAA,EAAA,EAOA,YACa,EAAA;AARb,EACE,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAA,eAAA;AAAA,IACA,aAAgB,GAAA,KAAA;AAAA,IAChB,gCAAmC,GAAA,KAAA;AAAA,IACnC,gBAAA;AAAA,GAJF,GAAA,EAAA,EAKK,kBALL,EAKK,EAAA;AAAA,IAJH,iBAAA;AAAA,IACA,eAAA;AAAA,IACA,kCAAA;AAAA,IACA,kBAAA;AAAA,GAAA,CAAA,CAAA;AAKF,EAAA,aAAA,EAAA,CAAA;AACA,EAAM,MAAA,EAAE,eAAe,qBAAsB,CAAA,KAAA,CAAA,CAAA;AAE7C,EAAA,MAAM,MAAM,YAAa,CAAA,YAAA,CAAA,CAAA;AACzB,EAAA,MAAM,EAAE,MAAW,EAAA,GAAA,SAAA,EAAA,CAAA;AACnB,EAAA,MAAM,KAAQ,GAAA,yBAAA,CACZ,qBAAsB,CAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EACjB,KADiB,CAAA,EAAA;AAAA,IAEpB,MAAA;AAAA,IACA,yBAA2B,EAAA,gCAAA;AAAA,IAC3B,eAAA,EAAiB,QACf,OAAO,EAAE,QAAQ,aAAgB,GAAA,CAAA,GAAI,MACrC,CAAC,aAAA,CAAA,CAAA;AAAA,IAEH,cAAA;AAAA,GAAA,CAAA,CAAA,CAAA,CAAA;AAGJ,EAAA,MAAM,EAAE,aAAe,EAAA,eAAA,EAAiB,eAAoB,EAAA,GAAA,gBAAA,CAC1D,OACA,KACA,EAAA,GAAA,CAAA,CAAA;AAGF,EAAA,MAAM,qBAAqB,gBAAiB,CAAA;AAAA,IAC1C,KAAO,EAAA,MAAA;AAAA,IACP,IAAM,EAAA,SAAA;AAAA,IACN,GACE,EAAA,KAAA,CAAM,YAAa,CAAA,KAAA,CAAM,QAAS,CAAA,UAAA,KAAe,SACjD,IAAA,KAAA,CAAM,YAAa,CAAA,KAAA,CAAM,GAAQ,KAAA,IAAA,GAC7B,OACA,GAAA,KAAA,CAAA;AAAA,IACN,QAAU,EAAA,KAAA,CAAM,YAAa,CAAA,KAAA,CAAM,QAAS,CAAA,UAAA;AAAA,IAC5C,UAAU,KAAM,CAAA,QAAA;AAAA,GAAA,CAAA,CAAA;AAGlB,EAAA,2CACG,KAAD,EAAA,cAAA,CAAA;AAAA,IACE,GAAA;AAAA,IACA,SAAW,EAAA,IAAA,CAAK,MAAO,CAAA,mBAAA,CAAA,EAAsB,UAAW,CAAA,SAAA,CAAA;AAAA,IACxD,OAAO,UAAW,CAAA,KAAA;AAAA,GAAA,EACd,UAAW,CAAA,aAAA,EAAe,cAAe,CAAA,KAAA,CAAA,CAAA,CAAA,sCAE5C,KAAD,EAAA;AAAA,IAAK,WAAW,MAAO,CAAA,+BAAA,CAAA;AAAA,GAAA,EACpB,CAAC,KAAM,CAAA,YAAA,CAAa,OAClB,MACC,CAAA,aAAA,GAAgB,MAAM,YAAa,CAAA,KAAA,CAAM,GAAI,CAAA,EAAE,QAAQ,CAAO,EAAA,CAAA,GAAA,EAAA,CAAA,CAE/D,IAAI,CAAC,YAAA,EAAc,OAAO,aAAkB,KAAA;AAC3C,IAAA,MAAM,MAAS,GAAA,aAAA,CAAc,MAAS,GAAA,CAAA,IAAK,KAAU,KAAA,CAAA,CAAA;AACrD,IAAA,MAAM,UACJ,aAAc,CAAA,MAAA,GAAS,CAAK,IAAA,KAAA,KAAU,cAAc,MAAS,GAAA,CAAA,CAAA;AAC/D,IAAM,MAAA,aAAA,GAAgB,cAAc,MAAW,KAAA,CAAA,CAAA;AAC/C,IAAM,MAAA,QAAA,uCACH,gBAAD,EAAA;AAAA,MACE,SAAW,EAAA,YAAA;AAAA,MACX,KAAA;AAAA,MACA,eAAA;AAAA,KAAA,CAAA,CAAA;AAGJ,IAAA,2CACG,KAAD,EAAA;AAAA,MACE,GAAK,EAAA,KAAA;AAAA,MACL,WAAW,MAAO,CAAA,oCAAA,CAAA;AAAA,KAAA,sCAEjB,cAAD,EAAA;AAAA,MACE,eAAA;AAAA,MACA,eAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,KAEC,EAAA,YAAA,CACC,mBAAmB,MACjB,CAAA,YAAA,CAAa,OAAO,KAAM,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,EAI/B,aACC,mBAAA,KAAA,CAAA,aAAA,CAAC,qBAAD,EAAA;AAAA,MAAuB,OAAO,KAAM,CAAA,cAAA;AAAA,KAAA,EACjC,QAGH,CAAA,GAAA,QAAA,CAAA,CAAA;AAAA,GAMX,CAAA,CAAA,EAAA,gBAAA,wCACE,KAAD,EAAA;AAAA,IAAK,WAAW,MAAO,CAAA,kCAAA,CAAA;AAAA,GAEnB,EAAA,MAAA,CAAO,OAAQ,CAAA,gBAAA,CAAA,CACf,GAAI,CAAA,CAAC,CAAC,GAAA,EAAK,EAAE,KAAA,EAAO,SACpB,EAAA,CAAA,qBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA;AAAA,IAAK,GAAA;AAAA,GAAA,sCACF,MAAD,EAAA;AAAA,IACE,OAAQ,EAAA,WAAA;AAAA,IACR,UAAW,EAAA,OAAA;AAAA,IACX,SAAS,MAAM;AACb,MAAA,KAAA,CAAM,SAAS,SAAW,EAAA,GAAA,CAAA,CAAA;AAC1B,MAAA,KAAA,CAAM,aAAc,CAAA,IAAA,CAAA,CAAA;AACpB,MAAM,KAAA,CAAA,cAAA,CAAe,eAAe,SAAU,CAAA,GAAA,CAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAG/C,EAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CAAA,CAAA;AAaJ,MAAA,aAAA,GAAgB,MAAM,UAAW,CAAA,cAAA;;;;"}
@@ -0,0 +1,57 @@
1
+ import { useLocale } from '@react-aria/i18n';
2
+
3
+ function useCustomDurationCalendarGrid({
4
+ cellsDuration,
5
+ perRow = 3
6
+ }, state) {
7
+ const { direction } = useLocale();
8
+ const onKeyDown = (e) => {
9
+ switch (e.key) {
10
+ case "Enter":
11
+ case " ":
12
+ e.preventDefault();
13
+ state.selectFocusedDate();
14
+ break;
15
+ case "ArrowLeft":
16
+ e.preventDefault();
17
+ e.stopPropagation();
18
+ if (direction === "rtl") {
19
+ state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: 1 }));
20
+ } else {
21
+ state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: -1 }));
22
+ }
23
+ break;
24
+ case "ArrowUp":
25
+ e.preventDefault();
26
+ e.stopPropagation();
27
+ state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: -perRow }));
28
+ break;
29
+ case "ArrowRight":
30
+ e.preventDefault();
31
+ e.stopPropagation();
32
+ if (direction === "rtl") {
33
+ state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: -1 }));
34
+ } else {
35
+ state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: 1 }));
36
+ }
37
+ break;
38
+ case "ArrowDown":
39
+ e.preventDefault();
40
+ e.stopPropagation();
41
+ state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: perRow }));
42
+ break;
43
+ }
44
+ };
45
+ const gridProps = {
46
+ role: "grid",
47
+ "aria-readonly": state.isReadOnly || void 0,
48
+ "aria-disabled": state.isDisabled || void 0,
49
+ onKeyDown,
50
+ onFocus: () => state.setFocused(true),
51
+ onBlur: () => state.setFocused(false)
52
+ };
53
+ return { gridProps };
54
+ }
55
+
56
+ export { useCustomDurationCalendarGrid };
57
+ //# sourceMappingURL=useCustomDurationCalendarGrid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCustomDurationCalendarGrid.js","sources":["../../../../src/Calendar/src/useCustomDurationCalendarGrid.tsx"],"sourcesContent":["import { CalendarState } from '@react-stately/calendar';\nimport { DateDuration } from '@internationalized/date';\nimport React from 'react';\nimport { DOMAttributes } from '@react-types/shared';\nimport { useLocale } from '@react-aria/i18n';\n\n/**\n * A little generalized but also simplified version of useCalendarGrid, to be used for months and\n * years view. The keyboard navigation in useCalendarGrid is around the assumption of grid cells\n * representing days, but not other durations like month or year.\n *\n * NOTE: only simple arrow key navigation is supported in this hook, and Home/End PageUp/PageDown\n * are left out to keep it simple.\n */\nexport function useCustomDurationCalendarGrid(\n {\n cellsDuration,\n perRow = 3,\n }: {\n cellsDuration: keyof DateDuration;\n perRow?: number;\n },\n state: CalendarState\n): { gridProps: DOMAttributes } {\n const { direction } = useLocale();\n\n const onKeyDown = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case 'Enter':\n case ' ':\n e.preventDefault();\n state.selectFocusedDate();\n break;\n case 'ArrowLeft':\n e.preventDefault();\n e.stopPropagation();\n if (direction === 'rtl') {\n state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: 1 }));\n } else {\n state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: -1 }));\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n e.stopPropagation();\n state.setFocusedDate(\n state.focusedDate.add({ [cellsDuration]: -perRow })\n );\n break;\n case 'ArrowRight':\n e.preventDefault();\n e.stopPropagation();\n if (direction === 'rtl') {\n state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: -1 }));\n } else {\n state.setFocusedDate(state.focusedDate.add({ [cellsDuration]: 1 }));\n }\n break;\n case 'ArrowDown':\n e.preventDefault();\n e.stopPropagation();\n state.setFocusedDate(\n state.focusedDate.add({ [cellsDuration]: perRow })\n );\n break;\n }\n };\n const gridProps = {\n role: 'grid',\n 'aria-readonly': state.isReadOnly || undefined,\n 'aria-disabled': state.isDisabled || undefined,\n onKeyDown,\n onFocus: () => state.setFocused(true),\n onBlur: () => state.setFocused(false),\n };\n return { gridProps };\n}\n"],"names":[],"mappings":";;AAeE,SAAA,6BAAA,CAAA;AAAA,EACE,aAAA;AAAA,EACA,MAAS,GAAA,CAAA;AAAA,CAAA,EAKX,KAC8B,EAAA;AAC9B,EAAA,MAAM,EAAE,SAAc,EAAA,GAAA,SAAA,EAAA,CAAA;AAEtB,EAAM,MAAA,SAAA,GAAY,CAAC,CAA2B,KAAA;AAC5C,IAAA,QAAQ,CAAE,CAAA,GAAA;AAAA,MACH,KAAA,OAAA,CAAA;AAAA,MACA,KAAA,GAAA;AACH,QAAE,CAAA,CAAA,cAAA,EAAA,CAAA;AACF,QAAM,KAAA,CAAA,iBAAA,EAAA,CAAA;AACN,QAAA,MAAA;AAAA,MACG,KAAA,WAAA;AACH,QAAE,CAAA,CAAA,cAAA,EAAA,CAAA;AACF,QAAE,CAAA,CAAA,eAAA,EAAA,CAAA;AACF,QAAA,IAAI,cAAc,KAAO,EAAA;AACvB,UAAA,KAAA,CAAM,cAAe,CAAA,KAAA,CAAM,WAAY,CAAA,GAAA,CAAI,GAAG,aAAgB,GAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAAA,SACzD,MAAA;AACL,UAAA,KAAA,CAAM,cAAe,CAAA,KAAA,CAAM,WAAY,CAAA,GAAA,CAAI,GAAG,aAAgB,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAAA,SAAA;AAEhE,QAAA,MAAA;AAAA,MACG,KAAA,SAAA;AACH,QAAE,CAAA,CAAA,cAAA,EAAA,CAAA;AACF,QAAE,CAAA,CAAA,eAAA,EAAA,CAAA;AACF,QAAA,KAAA,CAAM,eACJ,KAAM,CAAA,WAAA,CAAY,GAAI,CAAA,EAAA,CAAG,gBAAgB,CAAC,MAAA,EAAA,CAAA,CAAA,CAAA;AAE5C,QAAA,MAAA;AAAA,MACG,KAAA,YAAA;AACH,QAAE,CAAA,CAAA,cAAA,EAAA,CAAA;AACF,QAAE,CAAA,CAAA,eAAA,EAAA,CAAA;AACF,QAAA,IAAI,cAAc,KAAO,EAAA;AACvB,UAAA,KAAA,CAAM,cAAe,CAAA,KAAA,CAAM,WAAY,CAAA,GAAA,CAAI,GAAG,aAAgB,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAAA,SACzD,MAAA;AACL,UAAA,KAAA,CAAM,cAAe,CAAA,KAAA,CAAM,WAAY,CAAA,GAAA,CAAI,GAAG,aAAgB,GAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AAAA,SAAA;AAEhE,QAAA,MAAA;AAAA,MACG,KAAA,WAAA;AACH,QAAE,CAAA,CAAA,cAAA,EAAA,CAAA;AACF,QAAE,CAAA,CAAA,eAAA,EAAA,CAAA;AACF,QAAA,KAAA,CAAM,cACJ,CAAA,KAAA,CAAM,WAAY,CAAA,GAAA,CAAI,GAAG,aAAgB,GAAA,MAAA,EAAA,CAAA,CAAA,CAAA;AAE3C,QAAA,MAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAGN,EAAA,MAAM,SAAY,GAAA;AAAA,IAChB,IAAM,EAAA,MAAA;AAAA,IACN,eAAA,EAAiB,MAAM,UAAc,IAAA,KAAA,CAAA;AAAA,IACrC,eAAA,EAAiB,MAAM,UAAc,IAAA,KAAA,CAAA;AAAA,IACrC,SAAA;AAAA,IACA,OAAA,EAAS,MAAM,KAAA,CAAM,UAAW,CAAA,IAAA,CAAA;AAAA,IAChC,MAAA,EAAQ,MAAM,KAAA,CAAM,UAAW,CAAA,KAAA,CAAA;AAAA,GAAA,CAAA;AAEjC,EAAA,OAAO,EAAE,SAAA,EAAA,CAAA;AAAA;;;;"}
@@ -0,0 +1,57 @@
1
+ import { useRangeCalendarState as useRangeCalendarState$1 } from '@react-stately/calendar';
2
+ import { useRef } from 'react';
3
+
4
+ var __defProp = Object.defineProperty;
5
+ var __defProps = Object.defineProperties;
6
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
+ var __objRest = (source, exclude) => {
24
+ var target = {};
25
+ for (var prop in source)
26
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
27
+ target[prop] = source[prop];
28
+ if (source != null && __getOwnPropSymbols)
29
+ for (var prop of __getOwnPropSymbols(source)) {
30
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
31
+ target[prop] = source[prop];
32
+ }
33
+ return target;
34
+ };
35
+ const useRangeCalendarState = (_a) => {
36
+ var _b = _a, {
37
+ onChange
38
+ } = _b, options = __objRest(_b, [
39
+ "onChange"
40
+ ]);
41
+ const lastPredefinedRange = useRef(void 0);
42
+ const state = useRangeCalendarState$1(__spreadProps(__spreadValues({}, options), {
43
+ onChange: (value) => {
44
+ onChange == null ? void 0 : onChange(value, lastPredefinedRange.current);
45
+ lastPredefinedRange.current = void 0;
46
+ }
47
+ }));
48
+ return __spreadProps(__spreadValues({}, state), {
49
+ setValue: (value, predefinedRange) => {
50
+ lastPredefinedRange.current = predefinedRange;
51
+ state.setValue(value);
52
+ }
53
+ });
54
+ };
55
+
56
+ export { useRangeCalendarState };
57
+ //# sourceMappingURL=useRangeCalendarState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRangeCalendarState.js","sources":["../../../../src/Calendar/src/useRangeCalendarState.ts"],"sourcesContent":["import { useRangeCalendarState as originalUseRangeCalendarState } from '@react-stately/calendar';\nimport type {\n RangeCalendarStateOptions as OriginalRangeCalendarStateOptions,\n RangeCalendarState as OriginalRangeCalendarState,\n} from '@react-stately/calendar';\nimport { DateValue } from '@internationalized/date';\nimport { useRef } from 'react';\n\ntype OriginalOnChange<T extends DateValue> = NonNullable<\n OriginalRangeCalendarStateOptions<T>['onChange']\n>;\n\nexport type RangeCalendarStateOptions<\n T extends DateValue,\n P extends string\n> = Omit<OriginalRangeCalendarStateOptions<T>, 'onChange'> & {\n onChange?: (\n value: Parameters<OriginalOnChange<T>>[0],\n predefinedRange?: P\n ) => ReturnType<OriginalOnChange<T>>;\n};\n\ntype OriginalSetValue = OriginalRangeCalendarState['setValue'];\n\nexport type RangeCalendarState<P extends string> = Omit<\n OriginalRangeCalendarState,\n 'setValue'\n> & {\n setValue: (\n value: Parameters<OriginalSetValue>[0],\n predefinedRange?: P\n ) => ReturnType<OriginalSetValue>;\n};\n\n/**\n * A wrapper to allow for the onChange callback to have extra info\n **/\nexport const useRangeCalendarState = <P extends string>({\n onChange,\n ...options\n}: RangeCalendarStateOptions<DateValue, P>): RangeCalendarState<P> => {\n const lastPredefinedRange = useRef<P | undefined>(undefined);\n\n const state = originalUseRangeCalendarState({\n ...options,\n onChange: (value) => {\n onChange?.(value, lastPredefinedRange.current);\n lastPredefinedRange.current = undefined;\n },\n });\n\n return {\n ...state,\n setValue: (value, predefinedRange) => {\n lastPredefinedRange.current = predefinedRange;\n state.setValue(value);\n },\n };\n};\n"],"names":["originalUseRangeCalendarState"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCa,MAAA,qBAAA,GAAwB,CAAmB,EAGc,KAAA;AAHd,EACtD,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAA,QAAA;AAAA,GADsD,GAAA,EAAA,EAEnD,oBAFmD,EAEnD,EAAA;AAAA,IADH,UAAA;AAAA,GAAA,CAAA,CAAA;AAGA,EAAA,MAAM,sBAAsB,MAAsB,CAAA,KAAA,CAAA,CAAA,CAAA;AAElD,EAAM,MAAA,KAAA,GAAQA,uBAA8B,CAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EACvC,OADuC,CAAA,EAAA;AAAA,IAE1C,QAAA,EAAU,CAAC,KAAU,KAAA;AACnB,MAAA,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAW,OAAO,mBAAoB,CAAA,OAAA,CAAA,CAAA;AACtC,MAAA,mBAAA,CAAoB,OAAU,GAAA,KAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAIlC,EAAA,OAAO,iCACF,KADE,CAAA,EAAA;AAAA,IAEL,QAAA,EAAU,CAAC,KAAA,EAAO,eAAoB,KAAA;AACpC,MAAA,mBAAA,CAAoB,OAAU,GAAA,eAAA,CAAA;AAC9B,MAAA,KAAA,CAAM,QAAS,CAAA,KAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA,CAAA;AAAA;;;;"}
@@ -0,0 +1,86 @@
1
+ import { useCalendarState } from '@react-stately/calendar';
2
+ import { useControlledState } from '@react-stately/utils';
3
+
4
+ var __defProp = Object.defineProperty;
5
+ var __defProps = Object.defineProperties;
6
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
10
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
+ var __spreadValues = (a, b) => {
12
+ for (var prop in b || (b = {}))
13
+ if (__hasOwnProp.call(b, prop))
14
+ __defNormalProp(a, prop, b[prop]);
15
+ if (__getOwnPropSymbols)
16
+ for (var prop of __getOwnPropSymbols(b)) {
17
+ if (__propIsEnum.call(b, prop))
18
+ __defNormalProp(a, prop, b[prop]);
19
+ }
20
+ return a;
21
+ };
22
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
23
+ var __objRest = (source, exclude) => {
24
+ var target = {};
25
+ for (var prop in source)
26
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
27
+ target[prop] = source[prop];
28
+ if (source != null && __getOwnPropSymbols)
29
+ for (var prop of __getOwnPropSymbols(source)) {
30
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
31
+ target[prop] = source[prop];
32
+ }
33
+ return target;
34
+ };
35
+ const viewToVisibleDuration = {
36
+ days: {
37
+ months: 1
38
+ },
39
+ months: {
40
+ years: 1
41
+ },
42
+ years: {
43
+ years: 12
44
+ }
45
+ };
46
+ function useSapphireCalendarState(_a) {
47
+ var _b = _a, {
48
+ view: viewProp,
49
+ defaultView = "days",
50
+ onViewChange
51
+ } = _b, otherOptions = __objRest(_b, [
52
+ "view",
53
+ "defaultView",
54
+ "onViewChange"
55
+ ]);
56
+ const [view, setView] = useControlledState(viewProp, defaultView, onViewChange);
57
+ const state = useCalendarState(__spreadProps(__spreadValues({}, otherOptions), {
58
+ visibleDuration: viewToVisibleDuration[view]
59
+ }));
60
+ const broadenView = () => {
61
+ switch (view) {
62
+ case "days":
63
+ return setView("months");
64
+ case "months":
65
+ return setView("years");
66
+ }
67
+ };
68
+ const narrowView = () => {
69
+ switch (view) {
70
+ case "months":
71
+ return setView("days");
72
+ case "years":
73
+ return setView("months");
74
+ }
75
+ };
76
+ const canDrillUp = !state.isReadOnly && ["days", "months"].includes(view);
77
+ return __spreadProps(__spreadValues({}, state), {
78
+ view,
79
+ narrowView,
80
+ broadenView,
81
+ canBroadenView: canDrillUp
82
+ });
83
+ }
84
+
85
+ export { useSapphireCalendarState };
86
+ //# sourceMappingURL=useSapphireCalendarState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSapphireCalendarState.js","sources":["../../../../src/Calendar/src/useSapphireCalendarState.tsx"],"sourcesContent":["import { DateDuration } from '@internationalized/date';\nimport {\n CalendarState,\n CalendarStateOptions,\n useCalendarState,\n} from '@react-stately/calendar';\nimport { useControlledState } from '@react-stately/utils';\n\nexport type CalendarView = 'days' | 'months' | 'years';\nconst viewToVisibleDuration: Record<CalendarView, DateDuration> = {\n days: {\n months: 1,\n },\n months: {\n years: 1,\n },\n years: {\n years: 12,\n },\n};\n\nexport type SapphireCalendarStateOptions = {\n /**\n * Controls the calendar's view (day, month, year).\n */\n view?: CalendarView;\n\n /**\n * The view of the calendar when it first mounts (uncontrolled).\n */\n defaultView?: CalendarView;\n /**\n * Handler that is called when the view is changed.\n */\n onViewChange?: (value: CalendarView) => void;\n};\n\nexport type SapphireCalendarState = CalendarState & {\n view: CalendarView;\n narrowView: () => void;\n broadenView: () => void;\n canBroadenView: boolean;\n};\n\nexport function useSapphireCalendarState({\n view: viewProp,\n defaultView = 'days',\n onViewChange,\n ...otherOptions\n}: SapphireCalendarStateOptions & CalendarStateOptions): SapphireCalendarState {\n const [view, setView] = useControlledState<CalendarView>(\n viewProp,\n defaultView,\n onViewChange\n );\n const state = useCalendarState({\n ...otherOptions,\n visibleDuration: viewToVisibleDuration[view],\n });\n const broadenView = () => {\n switch (view) {\n case 'days':\n return setView('months');\n case 'months':\n return setView('years');\n }\n };\n const narrowView = () => {\n switch (view) {\n case 'months':\n return setView('days');\n case 'years':\n return setView('months');\n }\n };\n const canDrillUp = !state.isReadOnly && ['days', 'months'].includes(view);\n return {\n ...state,\n view: view,\n narrowView,\n broadenView,\n canBroadenView: canDrillUp,\n };\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,MAAM,qBAA4D,GAAA;AAAA,EAChE,IAAM,EAAA;AAAA,IACJ,MAAQ,EAAA,CAAA;AAAA,GAAA;AAAA,EAEV,MAAQ,EAAA;AAAA,IACN,KAAO,EAAA,CAAA;AAAA,GAAA;AAAA,EAET,KAAO,EAAA;AAAA,IACL,KAAO,EAAA,EAAA;AAAA,GAAA;AAAA,CAAA,CAAA;AA2BJ,SAAA,wBAAA,CAAkC,EAKsC,EAAA;AALtC,EACvC,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAM,IAAA,EAAA,QAAA;AAAA,IACN,WAAc,GAAA,MAAA;AAAA,IACd,YAAA;AAAA,GAHuC,GAAA,EAAA,EAIpC,yBAJoC,EAIpC,EAAA;AAAA,IAHH,MAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,GAAA,CAAA,CAAA;AAGA,EAAA,MAAM,CAAC,IAAA,EAAM,OAAW,CAAA,GAAA,kBAAA,CACtB,UACA,WACA,EAAA,YAAA,CAAA,CAAA;AAEF,EAAM,MAAA,KAAA,GAAQ,gBAAiB,CAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAC1B,YAD0B,CAAA,EAAA;AAAA,IAE7B,iBAAiB,qBAAsB,CAAA,IAAA,CAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAEzC,EAAA,MAAM,cAAc,MAAM;AACxB,IAAQ,QAAA,IAAA;AAAA,MACD,KAAA,MAAA;AACH,QAAA,OAAO,OAAQ,CAAA,QAAA,CAAA,CAAA;AAAA,MACZ,KAAA,QAAA;AACH,QAAA,OAAO,OAAQ,CAAA,OAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAGrB,EAAA,MAAM,aAAa,MAAM;AACvB,IAAQ,QAAA,IAAA;AAAA,MACD,KAAA,QAAA;AACH,QAAA,OAAO,OAAQ,CAAA,MAAA,CAAA,CAAA;AAAA,MACZ,KAAA,OAAA;AACH,QAAA,OAAO,OAAQ,CAAA,QAAA,CAAA,CAAA;AAAA,KAAA;AAAA,GAAA,CAAA;AAGrB,EAAA,MAAM,aAAa,CAAC,KAAA,CAAM,cAAc,CAAC,MAAA,EAAQ,UAAU,QAAS,CAAA,IAAA,CAAA,CAAA;AACpE,EAAA,OAAO,iCACF,KADE,CAAA,EAAA;AAAA,IAEL,IAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAgB,EAAA,UAAA;AAAA,GAAA,CAAA,CAAA;AAAA;;;;"}
@@ -0,0 +1,12 @@
1
+ function range(start, end) {
2
+ return Array(end - start + 1).fill(null).map((_, index) => start + index);
3
+ }
4
+ function* chunks(array, chunkSize) {
5
+ for (let i = 0; i < array.length; i += chunkSize) {
6
+ yield array.slice(i, i + chunkSize);
7
+ }
8
+ }
9
+ const sentenceCase = (sentence) => sentence.slice(0, 1).toLocaleUpperCase() + sentence.slice(1);
10
+
11
+ export { chunks, range, sentenceCase };
12
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/Calendar/src/utils.ts"],"sourcesContent":["/**\n * Creates an array filled with numbers from {@param start} to {@param end}\n */\nexport function range(start: number, end: number): number[] {\n return Array(end - start + 1)\n .fill(null)\n .map((_, index) => start + index);\n}\n\n/**\n * Converts an array into chunks\n * @returns iterator of the chunks\n */\nexport function* chunks<T>(\n array: T[],\n chunkSize: number\n): Generator<T[], void> {\n for (let i = 0; i < array.length; i += chunkSize) {\n yield array.slice(i, i + chunkSize);\n }\n}\n\n/**\n * Uppercases the first letter in the string\n * @param sentence\n * @returns sentence with first letter upper cased\n */\nexport const sentenceCase = (sentence: string): string =>\n sentence.slice(0, 1).toLocaleUpperCase() + sentence.slice(1);\n"],"names":[],"mappings":"AAGO,SAAA,KAAA,CAAe,OAAe,GAAuB,EAAA;AAC1D,EAAO,OAAA,KAAA,CAAM,GAAM,GAAA,KAAA,GAAQ,CACxB,CAAA,CAAA,IAAA,CAAK,MACL,GAAI,CAAA,CAAC,CAAG,EAAA,KAAA,KAAU,KAAQ,GAAA,KAAA,CAAA,CAAA;AAAA,CAAA;AAOxB,UAAA,MAAA,CACL,OACA,SACsB,EAAA;AACtB,EAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,KAAM,CAAA,MAAA,EAAQ,KAAK,SAAW,EAAA;AAChD,IAAM,MAAA,KAAA,CAAM,KAAM,CAAA,CAAA,EAAG,CAAI,GAAA,SAAA,CAAA,CAAA;AAAA,GAAA;AAAA,CAAA;AAShB,MAAA,YAAA,GAAe,CAAC,QAC3B,KAAA,QAAA,CAAS,MAAM,CAAG,EAAA,CAAA,CAAA,CAAG,iBAAsB,EAAA,GAAA,QAAA,CAAS,KAAM,CAAA,CAAA;;;;"}
@@ -0,0 +1,7 @@
1
+ var clear = "Nulstil";
2
+ var da = {
3
+ clear: clear
4
+ };
5
+
6
+ export { clear, da as default };
7
+ //# sourceMappingURL=da-DK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"da-DK.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,7 @@
1
+ var clear = "Zurücksetzen";
2
+ var de = {
3
+ clear: clear
4
+ };
5
+
6
+ export { clear, de as default };
7
+ //# sourceMappingURL=de-DE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"de-DE.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,7 @@
1
+ var clear = "Clear";
2
+ var en = {
3
+ clear: clear
4
+ };
5
+
6
+ export { clear, en as default };
7
+ //# sourceMappingURL=en-US.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en-US.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,7 @@
1
+ var clear = "Nollaa";
2
+ var fi = {
3
+ clear: clear
4
+ };
5
+
6
+ export { clear, fi as default };
7
+ //# sourceMappingURL=fi-FI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fi-FI.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,20 @@
1
+ import da from './da-DK.js';
2
+ import en from './en-US.js';
3
+ import de from './de-DE.js';
4
+ import fi from './fi-FI.js';
5
+ import no from './nb-NO.js';
6
+ import pl from './pl-PL.js';
7
+ import se from './sv-SE.js';
8
+
9
+ var intlMessages = {
10
+ "da-DK": da,
11
+ "en-US": en,
12
+ "de-DE": de,
13
+ "fi-FI": fi,
14
+ "nb-NO": no,
15
+ "pl-PL": pl,
16
+ "sv-SE": se
17
+ };
18
+
19
+ export { intlMessages as default };
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../src/DateField/i18n/index.ts"],"sourcesContent":["import da from './da-DK.json';\nimport en from './en-US.json';\nimport de from './de-DE.json';\nimport fi from './fi-FI.json';\nimport no from './nb-NO.json';\nimport pl from './pl-PL.json';\nimport se from './sv-SE.json';\n\nexport default {\n 'da-DK': da,\n 'en-US': en,\n 'de-DE': de,\n 'fi-FI': fi,\n 'nb-NO': no,\n 'pl-PL': pl,\n 'sv-SE': se,\n};\n"],"names":[],"mappings":";;;;;;;;AAQA,mBAAe;AAAA,EACb,OAAS,EAAA,EAAA;AAAA,EACT,OAAS,EAAA,EAAA;AAAA,EACT,OAAS,EAAA,EAAA;AAAA,EACT,OAAS,EAAA,EAAA;AAAA,EACT,OAAS,EAAA,EAAA;AAAA,EACT,OAAS,EAAA,EAAA;AAAA,EACT,OAAS,EAAA,EAAA;AAAA,CAAA;;;;"}
@@ -0,0 +1,7 @@
1
+ var clear = "Nullstill";
2
+ var no = {
3
+ clear: clear
4
+ };
5
+
6
+ export { clear, no as default };
7
+ //# sourceMappingURL=nb-NO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nb-NO.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,7 @@
1
+ var clear = "Zresetuj";
2
+ var pl = {
3
+ clear: clear
4
+ };
5
+
6
+ export { clear, pl as default };
7
+ //# sourceMappingURL=pl-PL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pl-PL.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}
@@ -0,0 +1,7 @@
1
+ var clear = "Återställ";
2
+ var se = {
3
+ clear: clear
4
+ };
5
+
6
+ export { clear, se as default };
7
+ //# sourceMappingURL=sv-SE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sv-SE.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;"}