@salt-ds/lab 1.0.0-alpha.42 → 1.0.0-alpha.44

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 (141) hide show
  1. package/css/salt-lab.css +15 -105
  2. package/dist-cjs/calendar/Calendar.js +7 -0
  3. package/dist-cjs/calendar/Calendar.js.map +1 -1
  4. package/dist-cjs/calendar/internal/CalendarCarousel.js +1 -1
  5. package/dist-cjs/calendar/internal/CalendarCarousel.js.map +1 -1
  6. package/dist-cjs/calendar/internal/CalendarDay.css.js +1 -1
  7. package/dist-cjs/calendar/internal/CalendarMonth.js.map +1 -1
  8. package/dist-cjs/calendar/internal/CalendarNavigation.css.js +1 -1
  9. package/dist-cjs/calendar/internal/useFocusManagement.js +3 -0
  10. package/dist-cjs/calendar/internal/useFocusManagement.js.map +1 -1
  11. package/dist-cjs/calendar/useCalendar.js +29 -1
  12. package/dist-cjs/calendar/useCalendar.js.map +1 -1
  13. package/dist-cjs/calendar/useSelection.js +1 -0
  14. package/dist-cjs/calendar/useSelection.js.map +1 -1
  15. package/dist-cjs/contact-details/ContactPrimaryInfo.js.map +1 -1
  16. package/dist-cjs/contact-details/ContactSecondaryInfo.js.map +1 -1
  17. package/dist-cjs/contact-details/ContactTertiaryInfo.js.map +1 -1
  18. package/dist-cjs/index.js +1 -10
  19. package/dist-cjs/index.js.map +1 -1
  20. package/dist-cjs/stepped-tracker/StepLabel/StepLabel.js.map +1 -1
  21. package/dist-es/calendar/Calendar.js +7 -0
  22. package/dist-es/calendar/Calendar.js.map +1 -1
  23. package/dist-es/calendar/internal/CalendarCarousel.js +1 -1
  24. package/dist-es/calendar/internal/CalendarCarousel.js.map +1 -1
  25. package/dist-es/calendar/internal/CalendarDay.css.js +1 -1
  26. package/dist-es/calendar/internal/CalendarMonth.js.map +1 -1
  27. package/dist-es/calendar/internal/CalendarNavigation.css.js +1 -1
  28. package/dist-es/calendar/internal/useFocusManagement.js +3 -0
  29. package/dist-es/calendar/internal/useFocusManagement.js.map +1 -1
  30. package/dist-es/calendar/useCalendar.js +31 -3
  31. package/dist-es/calendar/useCalendar.js.map +1 -1
  32. package/dist-es/calendar/useSelection.js +1 -1
  33. package/dist-es/calendar/useSelection.js.map +1 -1
  34. package/dist-es/contact-details/ContactPrimaryInfo.js.map +1 -1
  35. package/dist-es/contact-details/ContactSecondaryInfo.js.map +1 -1
  36. package/dist-es/contact-details/ContactTertiaryInfo.js.map +1 -1
  37. package/dist-es/index.js +1 -6
  38. package/dist-es/index.js.map +1 -1
  39. package/dist-es/stepped-tracker/StepLabel/StepLabel.js.map +1 -1
  40. package/dist-types/breadcrumbs/internal/BreadcrumbsCollapsed.d.ts +1 -1
  41. package/dist-types/breadcrumbs/internal/BreadcrumbsSeparator.d.ts +1 -1
  42. package/dist-types/button-bar/internal/DescendantContext.d.ts +1 -1
  43. package/dist-types/calendar/internal/CalendarMonth.d.ts +0 -1
  44. package/dist-types/calendar/useSelection.d.ts +2 -0
  45. package/dist-types/combo-box-deprecated/internal/MultiSelectComboBox.d.ts +1 -1
  46. package/dist-types/combo-box-deprecated/internal/useComboBox.d.ts +60 -54
  47. package/dist-types/combo-box-deprecated/internal/useMultiSelectComboBox.d.ts +182 -165
  48. package/dist-types/common-hooks/collectionProvider.d.ts +1 -1
  49. package/dist-types/contact-details/ContactPrimaryInfo.d.ts +1 -1
  50. package/dist-types/contact-details/ContactSecondaryInfo.d.ts +1 -1
  51. package/dist-types/contact-details/ContactTertiaryInfo.d.ts +1 -1
  52. package/dist-types/contact-details/MailLinkComponent.d.ts +1 -1
  53. package/dist-types/contact-details/types.d.ts +1 -1
  54. package/dist-types/form-field-legacy/FormActivationIndicator.d.ts +1 -1
  55. package/dist-types/form-field-legacy/FormHelperText.d.ts +1 -1
  56. package/dist-types/form-field-legacy/FormLabel.d.ts +1 -1
  57. package/dist-types/form-field-legacy/NecessityIndicator.d.ts +1 -1
  58. package/dist-types/form-field-legacy/StatusIndicator.d.ts +1 -1
  59. package/dist-types/index.d.ts +0 -1
  60. package/dist-types/list-deprecated/internal/DescendantContext.d.ts +1 -1
  61. package/dist-types/list-deprecated/internal/Highlighter.d.ts +1 -1
  62. package/dist-types/query-input/internal/CategoryList.d.ts +1 -1
  63. package/dist-types/query-input/internal/SearchList.d.ts +1 -1
  64. package/dist-types/query-input/internal/ValueList.d.ts +1 -1
  65. package/dist-types/query-input/internal/ValueSelector.d.ts +1 -1
  66. package/dist-types/responsive/overflowUtils.d.ts +1 -1
  67. package/dist-types/slider/internal/SliderMarkLabels.d.ts +1 -1
  68. package/dist-types/slider/internal/SliderRail.d.ts +1 -1
  69. package/dist-types/slider/internal/SliderRailMarks.d.ts +1 -1
  70. package/dist-types/slider/internal/SliderSelection.d.ts +1 -1
  71. package/dist-types/stepped-tracker/StepLabel/StepLabel.d.ts +4 -3
  72. package/dist-types/stepped-tracker/SteppedTrackerContext.d.ts +2 -2
  73. package/dist-types/stepped-tracker/TrackerConnector/TrackerConnector.d.ts +1 -1
  74. package/dist-types/stepper-input/useStepperInput.d.ts +60 -55
  75. package/dist-types/tabs/TabActivationIndicator.d.ts +1 -1
  76. package/dist-types/toolbar/Tooltray.d.ts +1 -1
  77. package/dist-types/tree/TreeNode.d.ts +1 -1
  78. package/package.json +3 -3
  79. package/dist-cjs/menu/Menu.js +0 -24
  80. package/dist-cjs/menu/Menu.js.map +0 -1
  81. package/dist-cjs/menu/MenuBase.js +0 -129
  82. package/dist-cjs/menu/MenuBase.js.map +0 -1
  83. package/dist-cjs/menu/MenuContext.js +0 -26
  84. package/dist-cjs/menu/MenuContext.js.map +0 -1
  85. package/dist-cjs/menu/MenuGroup.css.js +0 -6
  86. package/dist-cjs/menu/MenuGroup.css.js.map +0 -1
  87. package/dist-cjs/menu/MenuGroup.js +0 -44
  88. package/dist-cjs/menu/MenuGroup.js.map +0 -1
  89. package/dist-cjs/menu/MenuItem.css.js +0 -6
  90. package/dist-cjs/menu/MenuItem.css.js.map +0 -1
  91. package/dist-cjs/menu/MenuItem.js +0 -92
  92. package/dist-cjs/menu/MenuItem.js.map +0 -1
  93. package/dist-cjs/menu/MenuPanel.css.js +0 -6
  94. package/dist-cjs/menu/MenuPanel.css.js.map +0 -1
  95. package/dist-cjs/menu/MenuPanel.js +0 -61
  96. package/dist-cjs/menu/MenuPanel.js.map +0 -1
  97. package/dist-cjs/menu/MenuPanelBase.js +0 -29
  98. package/dist-cjs/menu/MenuPanelBase.js.map +0 -1
  99. package/dist-cjs/menu/MenuPanelContext.js +0 -22
  100. package/dist-cjs/menu/MenuPanelContext.js.map +0 -1
  101. package/dist-cjs/menu/MenuTrigger.js +0 -43
  102. package/dist-cjs/menu/MenuTrigger.js.map +0 -1
  103. package/dist-cjs/menu/MenuTriggerContext.js +0 -18
  104. package/dist-cjs/menu/MenuTriggerContext.js.map +0 -1
  105. package/dist-es/menu/Menu.js +0 -20
  106. package/dist-es/menu/Menu.js.map +0 -1
  107. package/dist-es/menu/MenuBase.js +0 -125
  108. package/dist-es/menu/MenuBase.js.map +0 -1
  109. package/dist-es/menu/MenuContext.js +0 -21
  110. package/dist-es/menu/MenuContext.js.map +0 -1
  111. package/dist-es/menu/MenuGroup.css.js +0 -4
  112. package/dist-es/menu/MenuGroup.css.js.map +0 -1
  113. package/dist-es/menu/MenuGroup.js +0 -40
  114. package/dist-es/menu/MenuGroup.js.map +0 -1
  115. package/dist-es/menu/MenuItem.css.js +0 -4
  116. package/dist-es/menu/MenuItem.css.js.map +0 -1
  117. package/dist-es/menu/MenuItem.js +0 -88
  118. package/dist-es/menu/MenuItem.js.map +0 -1
  119. package/dist-es/menu/MenuPanel.css.js +0 -4
  120. package/dist-es/menu/MenuPanel.css.js.map +0 -1
  121. package/dist-es/menu/MenuPanel.js +0 -57
  122. package/dist-es/menu/MenuPanel.js.map +0 -1
  123. package/dist-es/menu/MenuPanelBase.js +0 -25
  124. package/dist-es/menu/MenuPanelBase.js.map +0 -1
  125. package/dist-es/menu/MenuPanelContext.js +0 -17
  126. package/dist-es/menu/MenuPanelContext.js.map +0 -1
  127. package/dist-es/menu/MenuTrigger.js +0 -39
  128. package/dist-es/menu/MenuTrigger.js.map +0 -1
  129. package/dist-es/menu/MenuTriggerContext.js +0 -13
  130. package/dist-es/menu/MenuTriggerContext.js.map +0 -1
  131. package/dist-types/menu/Menu.d.ts +0 -4
  132. package/dist-types/menu/MenuBase.d.ts +0 -27
  133. package/dist-types/menu/MenuContext.d.ts +0 -16
  134. package/dist-types/menu/MenuGroup.d.ts +0 -12
  135. package/dist-types/menu/MenuItem.d.ts +0 -8
  136. package/dist-types/menu/MenuPanel.d.ts +0 -8
  137. package/dist-types/menu/MenuPanelBase.d.ts +0 -4
  138. package/dist-types/menu/MenuPanelContext.d.ts +0 -5
  139. package/dist-types/menu/MenuTrigger.d.ts +0 -8
  140. package/dist-types/menu/MenuTriggerContext.d.ts +0 -6
  141. package/dist-types/menu/index.d.ts +0 -5
package/css/salt-lab.css CHANGED
@@ -2084,107 +2084,6 @@
2084
2084
  border-right: var(--salt-size-border) var(--salt-separable-borderStyle) var(--salt-separable-primary-borderColor);
2085
2085
  }
2086
2086
 
2087
- /* src/menu/MenuGroup.css */
2088
- .saltMenuGroup-label {
2089
- background: var(--salt-container-primary-background);
2090
- color: var(--salt-text-secondary-foreground);
2091
- font-size: var(--salt-text-label-fontSize);
2092
- font-weight: var(--salt-text-label-fontWeight-strong);
2093
- height: calc(var(--salt-size-base) + var(--salt-spacing-100));
2094
- padding-left: var(--salt-spacing-100);
2095
- padding-right: var(--salt-spacing-100);
2096
- display: flex;
2097
- align-items: center;
2098
- position: sticky;
2099
- top: 0;
2100
- z-index: var(--salt-zIndex-default);
2101
- }
2102
- .saltMenuGroup {
2103
- border-top: var(--salt-size-border) var(--salt-separable-borderStyle) var(--salt-separable-tertiary-borderColor);
2104
- }
2105
- .saltMenuGroup:first-of-type {
2106
- border-top: 0;
2107
- }
2108
-
2109
- /* src/menu/MenuItem.css */
2110
- .saltMenuItem {
2111
- color: var(--salt-content-primary-foreground);
2112
- background: var(--salt-selectable-background);
2113
- font-size: var(--salt-text-fontSize);
2114
- font-weight: var(--salt-text-fontWeight);
2115
- min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));
2116
- padding-left: var(--salt-spacing-100);
2117
- padding-right: var(--salt-spacing-100);
2118
- display: flex;
2119
- justify-content: flex-start;
2120
- gap: var(--salt-spacing-100);
2121
- position: relative;
2122
- align-items: center;
2123
- cursor: var(--salt-selectable-cursor-hover);
2124
- box-sizing: border-box;
2125
- flex-shrink: 0;
2126
- }
2127
- .saltMenuItem:focus-visible {
2128
- outline: var(--salt-focused-outline);
2129
- outline-offset: calc(var(--salt-size-border) * -2);
2130
- }
2131
- .saltMenuItem:hover {
2132
- outline: none;
2133
- }
2134
- .saltMenuItem:hover,
2135
- .saltMenuItem:focus-visible {
2136
- background: var(--salt-selectable-background-hover);
2137
- }
2138
- .saltMenuItem:active {
2139
- z-index: var(--salt-zIndex-default);
2140
- background: var(--salt-selectable-background-selected);
2141
- box-shadow:
2142
- calc(var(--salt-size-border) * -2) 0 0 0 var(--salt-selectable-background-hover),
2143
- calc(var(--salt-size-border) * -1) 0 0 var(--salt-size-border) var(--salt-selectable-borderColor-selected),
2144
- 0 calc(var(--salt-size-border) * -1) 0 var(--salt-selectable-borderColor-selected);
2145
- }
2146
- .saltMenuItem[aria-disabled=true],
2147
- .saltMenuItem[aria-disabled=true]:active {
2148
- background: var(--salt-selectable-background-disabled);
2149
- color: var(--salt-text-primary-foreground-disabled);
2150
- cursor: var(--salt-selectable-cursor-disabled);
2151
- box-shadow: none;
2152
- }
2153
- .saltMenuItem-blurActive {
2154
- z-index: var(--salt-zIndex-default);
2155
- background: var(--salt-selectable-background-selected);
2156
- box-shadow:
2157
- calc(var(--salt-size-border) * -2) 0 0 0 var(--salt-selectable-background-hover),
2158
- calc(var(--salt-size-border) * -1) 0 0 var(--salt-size-border) var(--salt-selectable-borderColor-selected),
2159
- 0 calc(var(--salt-size-border) * -1) 0 var(--salt-selectable-borderColor-selected);
2160
- }
2161
- .saltMenuItem-expandIcon.saltIcon {
2162
- margin-left: auto;
2163
- }
2164
-
2165
- /* src/menu/MenuPanel.css */
2166
- .saltMenuPanel {
2167
- background: var(--salt-container-primary-background);
2168
- border: var(--salt-size-border) var(--salt-selectable-borderStyle-selected) var(--salt-selectable-borderColor-selected);
2169
- overflow: hidden;
2170
- overflow-y: auto;
2171
- min-width: 10em;
2172
- position: relative;
2173
- z-index: var(--salt-zIndex-popout);
2174
- box-shadow: var(--salt-overlayable-shadow-popout);
2175
- box-sizing: border-box;
2176
- }
2177
- .saltMenuPanel-container {
2178
- display: flex;
2179
- flex-direction: column;
2180
- gap: var(--salt-size-border);
2181
- max-height: inherit;
2182
- min-height: inherit;
2183
- }
2184
- .saltMenuPanel:focus-visible {
2185
- outline: none;
2186
- }
2187
-
2188
2087
  /* src/menu-button/MenuButton.css */
2189
2088
 
2190
2089
  /* src/menu-button/MenuButtonTrigger.css */
@@ -3892,6 +3791,15 @@
3892
3791
  .saltCalendarDay-outOfRange {
3893
3792
  color: var(--salt-content-secondary-foreground);
3894
3793
  }
3794
+ .saltCalendarDay-outOfRange:hover {
3795
+ color: var(--salt-content-primary-foreground);
3796
+ }
3797
+ .saltCalendarDay-outOfRange .saltCalendarDay-today {
3798
+ border-bottom: var(--salt-size-indicator) var(--salt-selectable-borderStyle) var(--salt-content-secondary-foreground);
3799
+ }
3800
+ .saltCalendarDay-outOfRange.saltCalendarDay-highlighted:before {
3801
+ background: var(--salt-content-secondary-foreground);
3802
+ }
3895
3803
  .saltCalendarDay:hover,
3896
3804
  .saltCalendarDay-hoveredOffset,
3897
3805
  .saltCalendarDay-hoveredOffset:hover {
@@ -3926,7 +3834,8 @@
3926
3834
  background: var(--salt-selectable-background-disabled);
3927
3835
  cursor: var(--salt-selectable-cursor-disabled);
3928
3836
  }
3929
- .saltCalendarDay-highlighted:before {
3837
+ .saltCalendarDay-highlighted:before,
3838
+ .saltCalendarDay-highlighted:hover:before {
3930
3839
  content: "";
3931
3840
  height: var(--salt-spacing-200);
3932
3841
  width: var(--salt-spacing-200);
@@ -3947,7 +3856,8 @@
3947
3856
  position: absolute;
3948
3857
  }
3949
3858
  .saltCalendarDay-today,
3950
- .saltCalendarDay-today:hover {
3859
+ .saltCalendarDay-today:hover,
3860
+ .saltCalendarDay-outOfRange .saltCalendarDay-today:hover {
3951
3861
  border-bottom: var(--salt-size-indicator) var(--salt-selectable-borderStyle) var(--salt-content-foreground-active);
3952
3862
  margin-bottom: calc(var(--salt-size-indicator) * -1);
3953
3863
  }
@@ -3972,7 +3882,7 @@
3972
3882
  padding-bottom: var(--salt-spacing-100);
3973
3883
  grid-gap: 0;
3974
3884
  align-items: center;
3975
- height: var(--salt-size-base);
3885
+ box-sizing: border-box;
3976
3886
  }
3977
3887
  .saltCalendarNavigation-hideYearDropdown {
3978
3888
  grid-template-columns: min-content auto min-content;
@@ -4198,4 +4108,4 @@
4198
4108
  margin: calc(var(--salt-size-unit) / 2) 0;
4199
4109
  }
4200
4110
 
4201
- /* src/661f0e45-f9f4-41c4-b519-2172b59518c6.css */
4111
+ /* src/78b598bf-3e71-47e9-9b67-d4035acb4996.css */
@@ -14,6 +14,8 @@ var useCalendar = require('./useCalendar.js');
14
14
  var window = require('@salt-ds/window');
15
15
  var styles = require('@salt-ds/styles');
16
16
  var Calendar$1 = require('./Calendar.css.js');
17
+ var date = require('@internationalized/date');
18
+ var utils = require('./internal/utils.js');
17
19
 
18
20
  const withBaseName = core.makePrefixer("saltCalendar");
19
21
  const Calendar = React.forwardRef(
@@ -39,6 +41,10 @@ const Calendar = React.forwardRef(
39
41
  const handleBlur = React.useCallback(() => {
40
42
  setCalendarFocused(false);
41
43
  }, [setCalendarFocused]);
44
+ const calendarLabel = new date.DateFormatter(utils.getCurrentLocale(), {
45
+ month: "long",
46
+ year: "numeric"
47
+ }).format(state.visibleMonth.toDate(date.getLocalTimeZone()));
42
48
  return /* @__PURE__ */ jsxRuntime.jsx(CalendarContext.CalendarContext.Provider, {
43
49
  value: {
44
50
  state,
@@ -47,6 +53,7 @@ const Calendar = React.forwardRef(
47
53
  children: /* @__PURE__ */ jsxRuntime.jsxs("div", {
48
54
  className: clsx.clsx(withBaseName(), className),
49
55
  role: "application",
56
+ "aria-label": calendarLabel,
50
57
  ref,
51
58
  children: [
52
59
  /* @__PURE__ */ jsxRuntime.jsx(CalendarNavigation.CalendarNavigation, {
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.js","sources":["../src/calendar/Calendar.tsx"],"sourcesContent":["import { forwardRef, useCallback } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport {\n CalendarNavigation,\n CalendarNavigationProps,\n} from \"./internal/CalendarNavigation\";\nimport { CalendarWeekHeader } from \"./internal/CalendarWeekHeader\";\nimport {\n CalendarCarousel,\n CalendarCarouselProps,\n} from \"./internal/CalendarCarousel\";\nimport { CalendarContext } from \"./internal/CalendarContext\";\nimport { useCalendar, useCalendarProps } from \"./useCalendar\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport calendarCss from \"./Calendar.css\";\n\nexport type CalendarProps = useCalendarProps & {\n className?: string;\n renderDayContents?: CalendarCarouselProps[\"renderDayContents\"];\n hideYearDropdown?: CalendarNavigationProps[\"hideYearDropdown\"];\n TooltipProps?: CalendarCarouselProps[\"TooltipProps\"];\n hideOutOfRangeDates?: CalendarCarouselProps[\"hideOutOfRangeDates\"];\n};\n\nconst withBaseName = makePrefixer(\"saltCalendar\");\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n function Calendar(props, ref) {\n const {\n className,\n renderDayContents,\n hideYearDropdown,\n TooltipProps,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-calendar\",\n css: calendarCss,\n window: targetWindow,\n });\n\n const { state, helpers } = useCalendar({ hideYearDropdown, ...rest });\n\n const { setCalendarFocused } = helpers;\n\n const handleFocus = useCallback(() => {\n setCalendarFocused(true);\n }, [setCalendarFocused]);\n\n const handleBlur = useCallback(() => {\n setCalendarFocused(false);\n }, [setCalendarFocused]);\n\n return (\n <CalendarContext.Provider\n value={{\n state,\n helpers,\n }}\n >\n <div\n className={clsx(withBaseName(), className)}\n role=\"application\"\n ref={ref}\n >\n <CalendarNavigation hideYearDropdown={hideYearDropdown} />\n <CalendarWeekHeader />\n <CalendarCarousel\n onFocus={handleFocus}\n onBlur={handleBlur}\n renderDayContents={renderDayContents}\n TooltipProps={TooltipProps}\n />\n </div>\n </CalendarContext.Provider>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","Calendar","useWindow","useComponentCssInjection","calendarCss","useCalendar","useCallback","jsx","CalendarContext","jsxs","clsx","CalendarNavigation","CalendarWeekHeader","CalendarCarousel"],"mappings":";;;;;;;;;;;;;;;;;AA4BA,MAAM,YAAA,GAAeA,kBAAa,cAAc,CAAA,CAAA;AAEzC,MAAM,QAAW,GAAAC,gBAAA;AAAA,EACtB,SAASC,SAAS,CAAA,KAAA,EAAO,GAAK,EAAA;AAC5B,IAAM,MAAA;AAAA,MACJ,SAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACG,GAAA,IAAA;AAAA,KACD,GAAA,KAAA,CAAA;AAEJ,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,eAAA;AAAA,MACR,GAAK,EAAAC,UAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAM,MAAA,EAAE,OAAO,OAAQ,EAAA,GAAIC,wBAAY,EAAE,gBAAA,EAAkB,GAAG,IAAA,EAAM,CAAA,CAAA;AAEpE,IAAM,MAAA,EAAE,oBAAuB,GAAA,OAAA,CAAA;AAE/B,IAAM,MAAA,WAAA,GAAcC,kBAAY,MAAM;AACpC,MAAA,kBAAA,CAAmB,IAAI,CAAA,CAAA;AAAA,KACzB,EAAG,CAAC,kBAAkB,CAAC,CAAA,CAAA;AAEvB,IAAM,MAAA,UAAA,GAAaA,kBAAY,MAAM;AACnC,MAAA,kBAAA,CAAmB,KAAK,CAAA,CAAA;AAAA,KAC1B,EAAG,CAAC,kBAAkB,CAAC,CAAA,CAAA;AAEvB,IACE,uBAAAC,cAAA,CAACC,gCAAgB,QAAhB,EAAA;AAAA,MACC,KAAO,EAAA;AAAA,QACL,KAAA;AAAA,QACA,OAAA;AAAA,OACF;AAAA,MAEA,QAAC,kBAAAC,eAAA,CAAA,KAAA,EAAA;AAAA,QACC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,IAAK,EAAA,aAAA;AAAA,QACL,GAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAACH,cAAA,CAAAI,qCAAA,EAAA;AAAA,YAAmB,gBAAA;AAAA,WAAoC,CAAA;AAAA,yCACvDC,qCAAmB,EAAA,EAAA,CAAA;AAAA,0BACnBL,cAAA,CAAAM,iCAAA,EAAA;AAAA,YACC,OAAS,EAAA,WAAA;AAAA,YACT,MAAQ,EAAA,UAAA;AAAA,YACR,iBAAA;AAAA,YACA,YAAA;AAAA,WACF,CAAA;AAAA,SAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
1
+ {"version":3,"file":"Calendar.js","sources":["../src/calendar/Calendar.tsx"],"sourcesContent":["import { forwardRef, useCallback } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport {\n CalendarNavigation,\n CalendarNavigationProps,\n} from \"./internal/CalendarNavigation\";\nimport { CalendarWeekHeader } from \"./internal/CalendarWeekHeader\";\nimport {\n CalendarCarousel,\n CalendarCarouselProps,\n} from \"./internal/CalendarCarousel\";\nimport { CalendarContext } from \"./internal/CalendarContext\";\nimport { useCalendar, useCalendarProps } from \"./useCalendar\";\n\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport calendarCss from \"./Calendar.css\";\nimport { DateFormatter, getLocalTimeZone } from \"@internationalized/date\";\nimport { getCurrentLocale } from \"./internal/utils\";\n\nexport type CalendarProps = useCalendarProps & {\n className?: string;\n renderDayContents?: CalendarCarouselProps[\"renderDayContents\"];\n hideYearDropdown?: CalendarNavigationProps[\"hideYearDropdown\"];\n TooltipProps?: CalendarCarouselProps[\"TooltipProps\"];\n hideOutOfRangeDates?: CalendarCarouselProps[\"hideOutOfRangeDates\"];\n};\n\nconst withBaseName = makePrefixer(\"saltCalendar\");\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n function Calendar(props, ref) {\n const {\n className,\n renderDayContents,\n hideYearDropdown,\n TooltipProps,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-calendar\",\n css: calendarCss,\n window: targetWindow,\n });\n\n const { state, helpers } = useCalendar({ hideYearDropdown, ...rest });\n\n const { setCalendarFocused } = helpers;\n\n const handleFocus = useCallback(() => {\n setCalendarFocused(true);\n }, [setCalendarFocused]);\n\n const handleBlur = useCallback(() => {\n setCalendarFocused(false);\n }, [setCalendarFocused]);\n\n const calendarLabel = new DateFormatter(getCurrentLocale(), {\n month: \"long\",\n year: \"numeric\",\n }).format(state.visibleMonth.toDate(getLocalTimeZone()));\n return (\n <CalendarContext.Provider\n value={{\n state,\n helpers,\n }}\n >\n <div\n className={clsx(withBaseName(), className)}\n role=\"application\"\n aria-label={calendarLabel}\n ref={ref}\n >\n <CalendarNavigation hideYearDropdown={hideYearDropdown} />\n <CalendarWeekHeader />\n <CalendarCarousel\n onFocus={handleFocus}\n onBlur={handleBlur}\n renderDayContents={renderDayContents}\n TooltipProps={TooltipProps}\n />\n </div>\n </CalendarContext.Provider>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","Calendar","useWindow","useComponentCssInjection","calendarCss","useCalendar","useCallback","DateFormatter","getCurrentLocale","getLocalTimeZone","jsx","CalendarContext","jsxs","clsx","CalendarNavigation","CalendarWeekHeader","CalendarCarousel"],"mappings":";;;;;;;;;;;;;;;;;;;AA8BA,MAAM,YAAA,GAAeA,kBAAa,cAAc,CAAA,CAAA;AAEzC,MAAM,QAAW,GAAAC,gBAAA;AAAA,EACtB,SAASC,SAAS,CAAA,KAAA,EAAO,GAAK,EAAA;AAC5B,IAAM,MAAA;AAAA,MACJ,SAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,YAAA;AAAA,MACG,GAAA,IAAA;AAAA,KACD,GAAA,KAAA,CAAA;AAEJ,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,eAAA;AAAA,MACR,GAAK,EAAAC,UAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAM,MAAA,EAAE,OAAO,OAAQ,EAAA,GAAIC,wBAAY,EAAE,gBAAA,EAAkB,GAAG,IAAA,EAAM,CAAA,CAAA;AAEpE,IAAM,MAAA,EAAE,oBAAuB,GAAA,OAAA,CAAA;AAE/B,IAAM,MAAA,WAAA,GAAcC,kBAAY,MAAM;AACpC,MAAA,kBAAA,CAAmB,IAAI,CAAA,CAAA;AAAA,KACzB,EAAG,CAAC,kBAAkB,CAAC,CAAA,CAAA;AAEvB,IAAM,MAAA,UAAA,GAAaA,kBAAY,MAAM;AACnC,MAAA,kBAAA,CAAmB,KAAK,CAAA,CAAA;AAAA,KAC1B,EAAG,CAAC,kBAAkB,CAAC,CAAA,CAAA;AAEvB,IAAA,MAAM,aAAgB,GAAA,IAAIC,kBAAc,CAAAC,sBAAA,EAAoB,EAAA;AAAA,MAC1D,KAAO,EAAA,MAAA;AAAA,MACP,IAAM,EAAA,SAAA;AAAA,KACP,EAAE,MAAO,CAAA,KAAA,CAAM,aAAa,MAAO,CAAAC,qBAAA,EAAkB,CAAC,CAAA,CAAA;AACvD,IACE,uBAAAC,cAAA,CAACC,gCAAgB,QAAhB,EAAA;AAAA,MACC,KAAO,EAAA;AAAA,QACL,KAAA;AAAA,QACA,OAAA;AAAA,OACF;AAAA,MAEA,QAAC,kBAAAC,eAAA,CAAA,KAAA,EAAA;AAAA,QACC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,IAAK,EAAA,aAAA;AAAA,QACL,YAAY,EAAA,aAAA;AAAA,QACZ,GAAA;AAAA,QAEA,QAAA,EAAA;AAAA,0BAACH,cAAA,CAAAI,qCAAA,EAAA;AAAA,YAAmB,gBAAA;AAAA,WAAoC,CAAA;AAAA,yCACvDC,qCAAmB,EAAA,EAAA,CAAA;AAAA,0BACnBL,cAAA,CAAAM,iCAAA,EAAA;AAAA,YACC,OAAS,EAAA,WAAA;AAAA,YACT,MAAQ,EAAA,UAAA;AAAA,YACR,iBAAA;AAAA,YACA,YAAA;AAAA,WACF,CAAA;AAAA,SAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -49,6 +49,7 @@ const CalendarCarousel = React.forwardRef(function CalendarCarousel2(props, ref)
49
49
  }, [utils.formatDate(visibleMonth)]);
50
50
  return /* @__PURE__ */ jsxRuntime.jsx("div", {
51
51
  className: withBaseName(),
52
+ tabIndex: -1,
52
53
  style: {
53
54
  overflowX: "hidden",
54
55
  position: "relative"
@@ -64,7 +65,6 @@ const CalendarCarousel = React.forwardRef(function CalendarCarousel2(props, ref)
64
65
  },
65
66
  "aria-hidden": index !== 1 ? "true" : void 0,
66
67
  children: /* @__PURE__ */ jsxRuntime.jsx(CalendarMonth.CalendarMonth, {
67
- isVisible: index === 1,
68
68
  ...rest,
69
69
  date
70
70
  })
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarCarousel.js","sources":["../src/calendar/internal/CalendarCarousel.tsx"],"sourcesContent":["import { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { DateValue, isSameMonth } from \"@internationalized/date\";\nimport { CalendarMonth, CalendarMonthProps } from \"./CalendarMonth\";\nimport { makePrefixer, useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { useCalendarContext } from \"./CalendarContext\";\n\nimport calendarCarouselCss from \"./CalendarCarousel.css\";\nimport { formatDate, monthDiff } from \"./utils\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nexport type CalendarCarouselProps = Omit<CalendarMonthProps, \"date\">;\n\nfunction getMonths(month: DateValue) {\n return [month.subtract({ months: 1 }), month, month.add({ months: 1 })];\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarCarousel\");\n\nexport const CalendarCarousel = forwardRef<\n HTMLDivElement,\n CalendarCarouselProps\n>(function CalendarCarousel(props, ref) {\n const { ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-calendar-carousel\",\n css: calendarCarouselCss,\n window: targetWindow,\n });\n\n const {\n state: { visibleMonth },\n } = useCalendarContext();\n const containerRef = useRef<HTMLDivElement>(null);\n const diffIndex = (a: DateValue, b: DateValue) => monthDiff(a, b);\n\n const { current: baseIndex } = useRef(visibleMonth);\n\n useIsomorphicLayoutEffect(() => {\n if (containerRef.current) {\n containerRef.current.style.transform = `translate3d(${\n diffIndex(baseIndex, visibleMonth) * -101 // needs to be higher than 100% so the next month doesn't show on the edges\n }%, 0, 0)`;\n }\n });\n\n const [months, setMonths] = useState(() => getMonths(visibleMonth));\n\n useEffect(() => {\n setMonths((oldMonths) => {\n const newMonths = getMonths(visibleMonth).filter((month) => {\n return !oldMonths.find((oldMonth) => isSameMonth(oldMonth, month));\n });\n\n return oldMonths.concat(newMonths);\n });\n setMonths(getMonths(visibleMonth));\n return undefined;\n }, [formatDate(visibleMonth)]); // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <div\n className={withBaseName()}\n style={{\n overflowX: \"hidden\",\n position: \"relative\",\n }}\n ref={ref}\n >\n <div className={withBaseName(\"track\")} ref={containerRef}>\n {months.map((date, index) => (\n <div\n key={formatDate(date)}\n className={withBaseName(\"slide\")}\n style={{\n transform: `translateX(${diffIndex(date, baseIndex) * -101}%)`,\n }}\n aria-hidden={index !== 1 ? \"true\" : undefined}\n >\n <CalendarMonth isVisible={index === 1} {...rest} date={date} />\n </div>\n ))}\n </div>\n </div>\n );\n});\n"],"names":["makePrefixer","forwardRef","CalendarCarousel","useWindow","useComponentCssInjection","calendarCarouselCss","useCalendarContext","useRef","monthDiff","useIsomorphicLayoutEffect","useState","useEffect","isSameMonth","formatDate","jsx","CalendarMonth"],"mappings":";;;;;;;;;;;;;;;AAaA,SAAS,UAAU,KAAkB,EAAA;AACnC,EAAA,OAAO,CAAC,KAAA,CAAM,QAAS,CAAA,EAAE,QAAQ,CAAE,EAAC,CAAG,EAAA,KAAA,EAAO,MAAM,GAAI,CAAA,EAAE,MAAQ,EAAA,CAAA,EAAG,CAAC,CAAA,CAAA;AACxE,CAAA;AAEA,MAAM,YAAA,GAAeA,kBAAa,sBAAsB,CAAA,CAAA;AAEjD,MAAM,gBAAmB,GAAAC,gBAAA,CAG9B,SAASC,iBAAAA,CAAiB,OAAO,GAAK,EAAA;AACtC,EAAM,MAAA,EAAA,GAAK,MAAS,GAAA,KAAA,CAAA;AAEpB,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,wBAAA;AAAA,IACR,GAAK,EAAAC,kBAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAM,MAAA;AAAA,IACJ,KAAA,EAAO,EAAE,YAAa,EAAA;AAAA,MACpBC,kCAAmB,EAAA,CAAA;AACvB,EAAM,MAAA,YAAA,GAAeC,aAAuB,IAAI,CAAA,CAAA;AAChD,EAAA,MAAM,YAAY,CAAC,CAAA,EAAc,CAAiB,KAAAC,eAAA,CAAU,GAAG,CAAC,CAAA,CAAA;AAEhE,EAAA,MAAM,EAAE,OAAA,EAAS,SAAU,EAAA,GAAID,aAAO,YAAY,CAAA,CAAA;AAElD,EAAAE,8BAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,aAAa,OAAS,EAAA;AACxB,MAAA,YAAA,CAAa,QAAQ,KAAM,CAAA,SAAA,GAAY,eACrC,SAAU,CAAA,SAAA,EAAW,YAAY,CAAI,GAAA,CAAA,GAAA,CAAA,QAAA,CAAA,CAAA;AAAA,KAEzC;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,CAAC,QAAQ,SAAS,CAAA,GAAIC,eAAS,MAAM,SAAA,CAAU,YAAY,CAAC,CAAA,CAAA;AAElE,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,SAAA,CAAU,CAAC,SAAc,KAAA;AACvB,MAAA,MAAM,YAAY,SAAU,CAAA,YAAY,CAAE,CAAA,MAAA,CAAO,CAAC,KAAU,KAAA;AAC1D,QAAO,OAAA,CAAC,UAAU,IAAK,CAAA,CAAC,aAAaC,gBAAY,CAAA,QAAA,EAAU,KAAK,CAAC,CAAA,CAAA;AAAA,OAClE,CAAA,CAAA;AAED,MAAO,OAAA,SAAA,CAAU,OAAO,SAAS,CAAA,CAAA;AAAA,KAClC,CAAA,CAAA;AACD,IAAU,SAAA,CAAA,SAAA,CAAU,YAAY,CAAC,CAAA,CAAA;AACjC,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACN,EAAA,CAACC,gBAAW,CAAA,YAAY,CAAC,CAAC,CAAA,CAAA;AAE7B,EAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,IACC,WAAW,YAAa,EAAA;AAAA,IACxB,KAAO,EAAA;AAAA,MACL,SAAW,EAAA,QAAA;AAAA,MACX,QAAU,EAAA,UAAA;AAAA,KACZ;AAAA,IACA,GAAA;AAAA,IAEA,QAAC,kBAAAA,cAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,MAAG,GAAK,EAAA,YAAA;AAAA,MACzC,QAAO,EAAA,MAAA,CAAA,GAAA,CAAI,CAAC,IAAA,EAAM,0BAChBA,cAAA,CAAA,KAAA,EAAA;AAAA,QAEC,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,QAC/B,KAAO,EAAA;AAAA,UACL,SAAW,EAAA,CAAA,WAAA,EAAc,SAAU,CAAA,IAAA,EAAM,SAAS,CAAI,GAAA,CAAA,GAAA,CAAA,EAAA,CAAA;AAAA,SACxD;AAAA,QACA,aAAA,EAAa,KAAU,KAAA,CAAA,GAAI,MAAS,GAAA,KAAA,CAAA;AAAA,QAEpC,QAAC,kBAAAA,cAAA,CAAAC,2BAAA,EAAA;AAAA,UAAc,WAAW,KAAU,KAAA,CAAA;AAAA,UAAI,GAAG,IAAA;AAAA,UAAM,IAAA;AAAA,SAAY,CAAA;AAAA,OAPxD,EAAAF,gBAAA,CAAW,IAAI,CAQtB,CACD,CAAA;AAAA,KACH,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"CalendarCarousel.js","sources":["../src/calendar/internal/CalendarCarousel.tsx"],"sourcesContent":["import { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { DateValue, isSameMonth } from \"@internationalized/date\";\nimport { CalendarMonth, CalendarMonthProps } from \"./CalendarMonth\";\nimport { makePrefixer, useIsomorphicLayoutEffect } from \"@salt-ds/core\";\nimport { useCalendarContext } from \"./CalendarContext\";\n\nimport calendarCarouselCss from \"./CalendarCarousel.css\";\nimport { formatDate, monthDiff } from \"./utils\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nexport type CalendarCarouselProps = Omit<CalendarMonthProps, \"date\">;\n\nfunction getMonths(month: DateValue) {\n return [month.subtract({ months: 1 }), month, month.add({ months: 1 })];\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarCarousel\");\n\nexport const CalendarCarousel = forwardRef<\n HTMLDivElement,\n CalendarCarouselProps\n>(function CalendarCarousel(props, ref) {\n const { ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-calendar-carousel\",\n css: calendarCarouselCss,\n window: targetWindow,\n });\n\n const {\n state: { visibleMonth },\n } = useCalendarContext();\n const containerRef = useRef<HTMLDivElement>(null);\n const diffIndex = (a: DateValue, b: DateValue) => monthDiff(a, b);\n\n const { current: baseIndex } = useRef(visibleMonth);\n\n useIsomorphicLayoutEffect(() => {\n if (containerRef.current) {\n containerRef.current.style.transform = `translate3d(${\n diffIndex(baseIndex, visibleMonth) * -101 // needs to be higher than 100% so the next month doesn't show on the edges\n }%, 0, 0)`;\n }\n });\n\n const [months, setMonths] = useState(() => getMonths(visibleMonth));\n\n useEffect(() => {\n setMonths((oldMonths) => {\n const newMonths = getMonths(visibleMonth).filter((month) => {\n return !oldMonths.find((oldMonth) => isSameMonth(oldMonth, month));\n });\n\n return oldMonths.concat(newMonths);\n });\n setMonths(getMonths(visibleMonth));\n return undefined;\n }, [formatDate(visibleMonth)]); // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n <div\n className={withBaseName()}\n tabIndex={-1} // https://bugzilla.mozilla.org/show_bug.cgi?id=1069739\n style={{\n overflowX: \"hidden\",\n position: \"relative\",\n }}\n ref={ref}\n >\n <div className={withBaseName(\"track\")} ref={containerRef}>\n {months.map((date, index) => (\n <div\n key={formatDate(date)}\n className={withBaseName(\"slide\")}\n style={{\n transform: `translateX(${diffIndex(date, baseIndex) * -101}%)`,\n }}\n aria-hidden={index !== 1 ? \"true\" : undefined}\n >\n <CalendarMonth {...rest} date={date} />\n </div>\n ))}\n </div>\n </div>\n );\n});\n"],"names":["makePrefixer","forwardRef","CalendarCarousel","useWindow","useComponentCssInjection","calendarCarouselCss","useCalendarContext","useRef","monthDiff","useIsomorphicLayoutEffect","useState","useEffect","isSameMonth","formatDate","jsx","CalendarMonth"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltCalendarDay {\n font-family: var(--salt-text-fontFamily);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n font-size: var(--salt-text-fontSize);\n width: var(--salt-size-base);\n height: var(--salt-size-base);\n color: var(--salt-content-primary-foreground);\n background: var(--salt-selectable-background);\n cursor: pointer;\n border: none;\n padding: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n overflow: hidden;\n}\n.saltCalendarDay-content {\n margin: 0 var(--salt-spacing-50);\n width: 100%;\n}\n\n.saltCalendarDay:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(0px - var(--salt-focused-outlineWidth));\n}\n\n.saltCalendarDay-outOfRange {\n color: var(--salt-content-secondary-foreground);\n}\n\n.saltCalendarDay:hover,\n.saltCalendarDay-hoveredOffset,\n.saltCalendarDay-hoveredOffset:hover {\n background: var(--salt-selectable-background-hover);\n}\n.saltCalendarDay-selectedStart {\n z-index: var(--salt-zIndex-default);\n}\n\n.saltCalendarDay-selected,\n.saltCalendarDay-selected:hover,\n.saltCalendarDay-selectedStart,\n.saltCalendarDay-selectedStart:hover,\n.saltCalendarDay-selectedEnd,\n.saltCalendarDay-selectedEnd:hover {\n background: var(--salt-selectable-background-selected);\n box-shadow: 0 0 0 var(--salt-size-border) var(--salt-selectable-borderColor-selected);\n}\n\n.saltCalendarDay-hoveredSpan,\n.saltCalendarDay-hoveredSpan:hover,\n.saltCalendarDay-selectedSpan,\n.saltCalendarDay-selectedSpan:hover {\n background: var(--salt-selectable-background-hover);\n box-shadow: calc(var(--salt-size-border) * -2) 0 0 0 var(--salt-selectable-background-hover),\n calc(var(--salt-size-border) * -1) 0 0 var(--salt-size-border) var(--salt-selectable-borderColor-selected), 0 calc(var(--salt-size-border) * -1) 0 var(--salt-selectable-borderColor-selected);\n}\n\n.saltCalendarDay-disabled,\n.saltCalendarDay-disabled:hover,\n.saltCalendarDay-unselectable,\n.saltCalendarDay-unselectable:hover {\n background: var(--salt-selectable-background-disabled);\n cursor: var(--salt-selectable-cursor-disabled);\n}\n\n.saltCalendarDay-highlighted:before {\n content: \"\";\n height: var(--salt-spacing-200); /* TODO: change for size-modifier when available */\n width: var(--salt-spacing-200);\n top: calc(var(--salt-spacing-100) * -1);\n right: calc(var(--salt-spacing-100) * -1);\n transform: rotate(45deg);\n background: var(--salt-selectable-borderColor-selected);\n position: absolute;\n}\n\n.saltCalendarDay-disabled {\n color: var(--salt-content-secondary-foreground-disabled);\n}\n.saltCalendarDay-unselectable:after {\n content: \"\";\n height: var(--salt-size-border);\n width: calc(100% - var(--salt-spacing-100));\n background: var(--salt-content-secondary-foreground);\n position: absolute;\n}\n\n.saltCalendarDay-today,\n.saltCalendarDay-today:hover {\n border-bottom: var(--salt-size-indicator) var(--salt-selectable-borderStyle) var(--salt-content-foreground-active);\n margin-bottom: calc(var(--salt-size-indicator) * -1);\n}\n\n.saltCalendarDay-hidden {\n visibility: hidden;\n}\n";
3
+ var css_248z = ".saltCalendarDay {\n font-family: var(--salt-text-fontFamily);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n font-size: var(--salt-text-fontSize);\n width: var(--salt-size-base);\n height: var(--salt-size-base);\n color: var(--salt-content-primary-foreground);\n background: var(--salt-selectable-background);\n cursor: pointer;\n border: none;\n padding: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n overflow: hidden;\n}\n.saltCalendarDay-content {\n margin: 0 var(--salt-spacing-50);\n width: 100%;\n}\n\n.saltCalendarDay:focus-visible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(0px - var(--salt-focused-outlineWidth));\n}\n\n.saltCalendarDay-outOfRange {\n color: var(--salt-content-secondary-foreground);\n}\n.saltCalendarDay-outOfRange:hover {\n color: var(--salt-content-primary-foreground);\n}\n.saltCalendarDay-outOfRange .saltCalendarDay-today {\n border-bottom: var(--salt-size-indicator) var(--salt-selectable-borderStyle) var(--salt-content-secondary-foreground);\n}\n\n.saltCalendarDay-outOfRange.saltCalendarDay-highlighted:before {\n background: var(--salt-content-secondary-foreground);\n}\n.saltCalendarDay:hover,\n.saltCalendarDay-hoveredOffset,\n.saltCalendarDay-hoveredOffset:hover {\n background: var(--salt-selectable-background-hover);\n}\n.saltCalendarDay-selectedStart {\n z-index: var(--salt-zIndex-default);\n}\n\n.saltCalendarDay-selected,\n.saltCalendarDay-selected:hover,\n.saltCalendarDay-selectedStart,\n.saltCalendarDay-selectedStart:hover,\n.saltCalendarDay-selectedEnd,\n.saltCalendarDay-selectedEnd:hover {\n background: var(--salt-selectable-background-selected);\n box-shadow: 0 0 0 var(--salt-size-border) var(--salt-selectable-borderColor-selected);\n}\n\n.saltCalendarDay-hoveredSpan,\n.saltCalendarDay-hoveredSpan:hover,\n.saltCalendarDay-selectedSpan,\n.saltCalendarDay-selectedSpan:hover {\n background: var(--salt-selectable-background-hover);\n box-shadow: calc(var(--salt-size-border) * -2) 0 0 0 var(--salt-selectable-background-hover),\n calc(var(--salt-size-border) * -1) 0 0 var(--salt-size-border) var(--salt-selectable-borderColor-selected), 0 calc(var(--salt-size-border) * -1) 0 var(--salt-selectable-borderColor-selected);\n}\n\n.saltCalendarDay-disabled,\n.saltCalendarDay-disabled:hover,\n.saltCalendarDay-unselectable,\n.saltCalendarDay-unselectable:hover {\n background: var(--salt-selectable-background-disabled);\n cursor: var(--salt-selectable-cursor-disabled);\n}\n\n.saltCalendarDay-highlighted:before,\n.saltCalendarDay-highlighted:hover:before {\n content: \"\";\n height: var(--salt-spacing-200); /* TODO: change for size-modifier when available */\n width: var(--salt-spacing-200);\n top: calc(var(--salt-spacing-100) * -1);\n right: calc(var(--salt-spacing-100) * -1);\n transform: rotate(45deg);\n background: var(--salt-selectable-borderColor-selected);\n position: absolute;\n}\n\n.saltCalendarDay-disabled {\n color: var(--salt-content-secondary-foreground-disabled);\n}\n.saltCalendarDay-unselectable:after {\n content: \"\";\n height: var(--salt-size-border);\n width: calc(100% - var(--salt-spacing-100));\n background: var(--salt-content-secondary-foreground);\n position: absolute;\n}\n\n.saltCalendarDay-today,\n.saltCalendarDay-today:hover,\n.saltCalendarDay-outOfRange .saltCalendarDay-today:hover {\n border-bottom: var(--salt-size-indicator) var(--salt-selectable-borderStyle) var(--salt-content-foreground-active);\n margin-bottom: calc(var(--salt-size-indicator) * -1);\n}\n\n.saltCalendarDay-hidden {\n visibility: hidden;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=CalendarDay.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarMonth.js","sources":["../src/calendar/internal/CalendarMonth.tsx"],"sourcesContent":["import {\n ComponentPropsWithRef,\n forwardRef,\n MouseEvent,\n SyntheticEvent,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { DateValue } from \"@internationalized/date\";\nimport { CalendarDay, CalendarDayProps } from \"./CalendarDay\";\nimport { formatDate, generateVisibleDays } from \"./utils\";\n\nimport calendarMonthCss from \"./CalendarMonth.css\";\nimport { useCalendarContext } from \"./CalendarContext\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nexport interface CalendarMonthProps extends ComponentPropsWithRef<\"div\"> {\n date: DateValue;\n hideOutOfRangeDates?: boolean;\n renderDayContents?: CalendarDayProps[\"renderDayContents\"];\n isVisible?: boolean;\n TooltipProps?: CalendarDayProps[\"TooltipProps\"];\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarMonth\");\n\nexport const CalendarMonth = forwardRef<HTMLDivElement, CalendarMonthProps>(\n function CalendarMonth(props, ref) {\n const {\n className,\n date,\n renderDayContents,\n onMouseLeave,\n TooltipProps,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-calendar-month\",\n css: calendarMonthCss,\n window: targetWindow,\n });\n\n const days = generateVisibleDays(date);\n const {\n helpers: { setHoveredDate },\n } = useCalendarContext();\n\n const handleMouseLeave = (event: SyntheticEvent) => {\n setHoveredDate(event, null);\n onMouseLeave?.(event as MouseEvent<HTMLDivElement>);\n };\n\n return (\n <div\n className={clsx(withBaseName(), className)}\n ref={ref}\n onMouseLeave={handleMouseLeave}\n {...rest}\n >\n <div\n data-testid=\"CalendarDateGrid\"\n className={withBaseName(\"dateGrid\")}\n >\n {days.map((day) => {\n return (\n <CalendarDay\n key={formatDate(day.date)}\n day={day.date}\n renderDayContents={renderDayContents}\n month={date}\n TooltipProps={TooltipProps}\n />\n );\n })}\n </div>\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","CalendarMonth","useWindow","useComponentCssInjection","calendarMonthCss","generateVisibleDays","useCalendarContext","jsx","clsx","CalendarDay","formatDate"],"mappings":";;;;;;;;;;;;;;;AAyBA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA,CAAA;AAE9C,MAAM,aAAgB,GAAAC,gBAAA;AAAA,EAC3B,SAASC,cAAc,CAAA,KAAA,EAAO,GAAK,EAAA;AACjC,IAAM,MAAA;AAAA,MACJ,SAAA;AAAA,MACA,IAAA;AAAA,MACA,iBAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACG,GAAA,IAAA;AAAA,KACD,GAAA,KAAA,CAAA;AAEJ,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,eAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAM,MAAA,IAAA,GAAOC,0BAAoB,IAAI,CAAA,CAAA;AACrC,IAAM,MAAA;AAAA,MACJ,OAAA,EAAS,EAAE,cAAe,EAAA;AAAA,QACxBC,kCAAmB,EAAA,CAAA;AAEvB,IAAM,MAAA,gBAAA,GAAmB,CAAC,KAA0B,KAAA;AAClD,MAAA,cAAA,CAAe,OAAO,IAAI,CAAA,CAAA;AAC1B,MAAe,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAA,KAAA,CAAA,CAAA;AAAA,KACjB,CAAA;AAEA,IAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,MACC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,GAAA;AAAA,MACA,YAAc,EAAA,gBAAA;AAAA,MACb,GAAG,IAAA;AAAA,MAEJ,QAAC,kBAAAD,cAAA,CAAA,KAAA,EAAA;AAAA,QACC,aAAY,EAAA,kBAAA;AAAA,QACZ,SAAA,EAAW,aAAa,UAAU,CAAA;AAAA,QAEjC,QAAA,EAAA,IAAA,CAAK,GAAI,CAAA,CAAC,GAAQ,KAAA;AACjB,UAAA,uBACGA,cAAA,CAAAE,uBAAA,EAAA;AAAA,YAEC,KAAK,GAAI,CAAA,IAAA;AAAA,YACT,iBAAA;AAAA,YACA,KAAO,EAAA,IAAA;AAAA,YACP,YAAA;AAAA,WAJK,EAAAC,gBAAA,CAAW,GAAI,CAAA,IAAI,CAK1B,CAAA,CAAA;AAAA,SAEH,CAAA;AAAA,OACH,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
1
+ {"version":3,"file":"CalendarMonth.js","sources":["../src/calendar/internal/CalendarMonth.tsx"],"sourcesContent":["import {\n ComponentPropsWithRef,\n forwardRef,\n MouseEvent,\n SyntheticEvent,\n} from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { DateValue } from \"@internationalized/date\";\nimport { CalendarDay, CalendarDayProps } from \"./CalendarDay\";\nimport { formatDate, generateVisibleDays } from \"./utils\";\n\nimport calendarMonthCss from \"./CalendarMonth.css\";\nimport { useCalendarContext } from \"./CalendarContext\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nexport interface CalendarMonthProps extends ComponentPropsWithRef<\"div\"> {\n date: DateValue;\n hideOutOfRangeDates?: boolean;\n renderDayContents?: CalendarDayProps[\"renderDayContents\"];\n TooltipProps?: CalendarDayProps[\"TooltipProps\"];\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarMonth\");\n\nexport const CalendarMonth = forwardRef<HTMLDivElement, CalendarMonthProps>(\n function CalendarMonth(props, ref) {\n const {\n className,\n date,\n renderDayContents,\n onMouseLeave,\n TooltipProps,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-calendar-month\",\n css: calendarMonthCss,\n window: targetWindow,\n });\n\n const days = generateVisibleDays(date);\n const {\n helpers: { setHoveredDate },\n } = useCalendarContext();\n\n const handleMouseLeave = (event: SyntheticEvent) => {\n setHoveredDate(event, null);\n onMouseLeave?.(event as MouseEvent<HTMLDivElement>);\n };\n\n return (\n <div\n className={clsx(withBaseName(), className)}\n ref={ref}\n onMouseLeave={handleMouseLeave}\n {...rest}\n >\n <div\n data-testid=\"CalendarDateGrid\"\n className={withBaseName(\"dateGrid\")}\n >\n {days.map((day) => {\n return (\n <CalendarDay\n key={formatDate(day.date)}\n day={day.date}\n renderDayContents={renderDayContents}\n month={date}\n TooltipProps={TooltipProps}\n />\n );\n })}\n </div>\n </div>\n );\n }\n);\n"],"names":["makePrefixer","forwardRef","CalendarMonth","useWindow","useComponentCssInjection","calendarMonthCss","generateVisibleDays","useCalendarContext","jsx","clsx","CalendarDay","formatDate"],"mappings":";;;;;;;;;;;;;;;AAwBA,MAAM,YAAA,GAAeA,kBAAa,mBAAmB,CAAA,CAAA;AAE9C,MAAM,aAAgB,GAAAC,gBAAA;AAAA,EAC3B,SAASC,cAAc,CAAA,KAAA,EAAO,GAAK,EAAA;AACjC,IAAM,MAAA;AAAA,MACJ,SAAA;AAAA,MACA,IAAA;AAAA,MACA,iBAAA;AAAA,MACA,YAAA;AAAA,MACA,YAAA;AAAA,MACG,GAAA,IAAA;AAAA,KACD,GAAA,KAAA,CAAA;AAEJ,IAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,eAAA;AAAA,MACL,MAAQ,EAAA,YAAA;AAAA,KACT,CAAA,CAAA;AAED,IAAM,MAAA,IAAA,GAAOC,0BAAoB,IAAI,CAAA,CAAA;AACrC,IAAM,MAAA;AAAA,MACJ,OAAA,EAAS,EAAE,cAAe,EAAA;AAAA,QACxBC,kCAAmB,EAAA,CAAA;AAEvB,IAAM,MAAA,gBAAA,GAAmB,CAAC,KAA0B,KAAA;AAClD,MAAA,cAAA,CAAe,OAAO,IAAI,CAAA,CAAA;AAC1B,MAAe,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAA,KAAA,CAAA,CAAA;AAAA,KACjB,CAAA;AAEA,IAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,MACC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACzC,GAAA;AAAA,MACA,YAAc,EAAA,gBAAA;AAAA,MACb,GAAG,IAAA;AAAA,MAEJ,QAAC,kBAAAD,cAAA,CAAA,KAAA,EAAA;AAAA,QACC,aAAY,EAAA,kBAAA;AAAA,QACZ,SAAA,EAAW,aAAa,UAAU,CAAA;AAAA,QAEjC,QAAA,EAAA,IAAA,CAAK,GAAI,CAAA,CAAC,GAAQ,KAAA;AACjB,UAAA,uBACGA,cAAA,CAAAE,uBAAA,EAAA;AAAA,YAEC,KAAK,GAAI,CAAA,IAAA;AAAA,YACT,iBAAA;AAAA,YACA,KAAO,EAAA,IAAA;AAAA,YACP,YAAA;AAAA,WAJK,EAAAC,gBAAA,CAAW,GAAI,CAAA,IAAI,CAK1B,CAAA,CAAA;AAAA,SAEH,CAAA;AAAA,OACH,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltCalendarNavigation {\n display: grid;\n grid-template-columns: min-content auto min-content;\n padding-bottom: var(--salt-spacing-100);\n grid-gap: 0;\n align-items: center;\n height: var(--salt-size-base);\n}\n\n.saltCalendarNavigation-hideYearDropdown {\n grid-template-columns: min-content auto min-content;\n grid-gap: var(--salt-spacing-300);\n}\n\n.saltCalendarNavigation-dropdowns {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: var(--salt-spacing-100);\n}\n";
3
+ var css_248z = ".saltCalendarNavigation {\n display: grid;\n grid-template-columns: min-content auto min-content;\n padding-bottom: var(--salt-spacing-100);\n grid-gap: 0;\n align-items: center;\n box-sizing: border-box;\n}\n\n.saltCalendarNavigation-hideYearDropdown {\n grid-template-columns: min-content auto min-content;\n grid-gap: var(--salt-spacing-300);\n}\n\n.saltCalendarNavigation-dropdowns {\n display: grid;\n grid-template-columns: 1fr 1fr;\n grid-gap: var(--salt-spacing-100);\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=CalendarNavigation.css.js.map
@@ -49,6 +49,9 @@ function useFocusManagement({ date: date$1 }) {
49
49
  }
50
50
  break;
51
51
  }
52
+ if (newDate.compare(date$1) !== 0) {
53
+ event.preventDefault();
54
+ }
52
55
  setFocusedDate(event, newDate);
53
56
  };
54
57
  const handleFocus = (event) => {
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusManagement.js","sources":["../src/calendar/internal/useFocusManagement.ts"],"sourcesContent":["import {\n FocusEventHandler,\n KeyboardEventHandler,\n MouseEventHandler,\n} from \"react\";\nimport { useCalendarContext } from \"./CalendarContext\";\nimport { DateValue, endOfWeek, startOfWeek } from \"@internationalized/date\";\nimport { getCurrentLocale } from \"./utils\";\n\nexport function useFocusManagement({ date }: { date: DateValue }) {\n const {\n helpers: { setFocusedDate },\n } = useCalendarContext();\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n setFocusedDate(event, date);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = (event) => {\n let newDate = date;\n switch (event.key) {\n case \"ArrowUp\":\n newDate = date.subtract({ weeks: 1 });\n break;\n case \"ArrowDown\":\n newDate = date.add({ weeks: 1 });\n break;\n case \"ArrowLeft\":\n newDate = date.subtract({ days: 1 });\n break;\n case \"ArrowRight\":\n newDate = date.add({ days: 1 });\n break;\n case \"Home\":\n newDate = startOfWeek(date, getCurrentLocale());\n break;\n case \"End\":\n // @ts-ignore TODO bug in @internationalized/date\n newDate = endOfWeek(date, getCurrentLocale());\n break;\n case \"PageUp\":\n if (event.shiftKey) {\n newDate = date.subtract({ years: 1 });\n } else {\n newDate = date.subtract({ months: 1 });\n }\n break;\n case \"PageDown\":\n if (event.shiftKey) {\n newDate = date.add({ years: 1 });\n } else {\n newDate = date.add({ months: 1 });\n }\n break;\n default:\n }\n\n setFocusedDate(event, newDate);\n };\n\n const handleFocus: FocusEventHandler<HTMLButtonElement> = (event) => {\n setFocusedDate(event, date);\n };\n\n return {\n handleClick,\n handleKeyDown,\n handleFocus,\n };\n}\n"],"names":["date","useCalendarContext","startOfWeek","getCurrentLocale","endOfWeek"],"mappings":";;;;;;;;AASgB,SAAA,kBAAA,CAAmB,QAAEA,MAAA,EAA6B,EAAA;AAChE,EAAM,MAAA;AAAA,IACJ,OAAA,EAAS,EAAE,cAAe,EAAA;AAAA,MACxBC,kCAAmB,EAAA,CAAA;AACvB,EAAM,MAAA,WAAA,GAAoD,CAAC,KAAU,KAAA;AACnE,IAAA,cAAA,CAAe,OAAOD,MAAI,CAAA,CAAA;AAAA,GAC5B,CAAA;AAEA,EAAM,MAAA,aAAA,GAAyD,CAAC,KAAU,KAAA;AACxE,IAAA,IAAI,OAAU,GAAAA,MAAA,CAAA;AACd,IAAA,QAAQ,KAAM,CAAA,GAAA;AAAA,MACP,KAAA,SAAA;AACH,QAAA,OAAA,GAAUA,MAAK,CAAA,QAAA,CAAS,EAAE,KAAA,EAAO,GAAG,CAAA,CAAA;AACpC,QAAA,MAAA;AAAA,MACG,KAAA,WAAA;AACH,QAAA,OAAA,GAAUA,MAAK,CAAA,GAAA,CAAI,EAAE,KAAA,EAAO,GAAG,CAAA,CAAA;AAC/B,QAAA,MAAA;AAAA,MACG,KAAA,WAAA;AACH,QAAA,OAAA,GAAUA,MAAK,CAAA,QAAA,CAAS,EAAE,IAAA,EAAM,GAAG,CAAA,CAAA;AACnC,QAAA,MAAA;AAAA,MACG,KAAA,YAAA;AACH,QAAA,OAAA,GAAUA,MAAK,CAAA,GAAA,CAAI,EAAE,IAAA,EAAM,GAAG,CAAA,CAAA;AAC9B,QAAA,MAAA;AAAA,MACG,KAAA,MAAA;AACH,QAAU,OAAA,GAAAE,gBAAA,CAAYF,MAAM,EAAAG,sBAAA,EAAkB,CAAA,CAAA;AAC9C,QAAA,MAAA;AAAA,MACG,KAAA,KAAA;AAEH,QAAU,OAAA,GAAAC,cAAA,CAAUJ,MAAM,EAAAG,sBAAA,EAAkB,CAAA,CAAA;AAC5C,QAAA,MAAA;AAAA,MACG,KAAA,QAAA;AACH,QAAA,IAAI,MAAM,QAAU,EAAA;AAClB,UAAA,OAAA,GAAUH,MAAK,CAAA,QAAA,CAAS,EAAE,KAAA,EAAO,GAAG,CAAA,CAAA;AAAA,SAC/B,MAAA;AACL,UAAA,OAAA,GAAUA,MAAK,CAAA,QAAA,CAAS,EAAE,MAAA,EAAQ,GAAG,CAAA,CAAA;AAAA,SACvC;AACA,QAAA,MAAA;AAAA,MACG,KAAA,UAAA;AACH,QAAA,IAAI,MAAM,QAAU,EAAA;AAClB,UAAA,OAAA,GAAUA,MAAK,CAAA,GAAA,CAAI,EAAE,KAAA,EAAO,GAAG,CAAA,CAAA;AAAA,SAC1B,MAAA;AACL,UAAA,OAAA,GAAUA,MAAK,CAAA,GAAA,CAAI,EAAE,MAAA,EAAQ,GAAG,CAAA,CAAA;AAAA,SAClC;AACA,QAAA,MAAA;AAAA,KAAA;AAIJ,IAAA,cAAA,CAAe,OAAO,OAAO,CAAA,CAAA;AAAA,GAC/B,CAAA;AAEA,EAAM,MAAA,WAAA,GAAoD,CAAC,KAAU,KAAA;AACnE,IAAA,cAAA,CAAe,OAAOA,MAAI,CAAA,CAAA;AAAA,GAC5B,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,WAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA;AAAA,GACF,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"useFocusManagement.js","sources":["../src/calendar/internal/useFocusManagement.ts"],"sourcesContent":["import {\n FocusEventHandler,\n KeyboardEventHandler,\n MouseEventHandler,\n} from \"react\";\nimport { useCalendarContext } from \"./CalendarContext\";\nimport { DateValue, endOfWeek, startOfWeek } from \"@internationalized/date\";\nimport { getCurrentLocale } from \"./utils\";\n\nexport function useFocusManagement({ date }: { date: DateValue }) {\n const {\n helpers: { setFocusedDate },\n } = useCalendarContext();\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n setFocusedDate(event, date);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = (event) => {\n let newDate = date;\n switch (event.key) {\n case \"ArrowUp\":\n newDate = date.subtract({ weeks: 1 });\n break;\n case \"ArrowDown\":\n newDate = date.add({ weeks: 1 });\n break;\n case \"ArrowLeft\":\n newDate = date.subtract({ days: 1 });\n break;\n case \"ArrowRight\":\n newDate = date.add({ days: 1 });\n break;\n case \"Home\":\n newDate = startOfWeek(date, getCurrentLocale());\n break;\n case \"End\":\n // @ts-ignore TODO bug in @internationalized/date\n newDate = endOfWeek(date, getCurrentLocale());\n break;\n case \"PageUp\":\n if (event.shiftKey) {\n newDate = date.subtract({ years: 1 });\n } else {\n newDate = date.subtract({ months: 1 });\n }\n break;\n case \"PageDown\":\n if (event.shiftKey) {\n newDate = date.add({ years: 1 });\n } else {\n newDate = date.add({ months: 1 });\n }\n break;\n default:\n }\n if (newDate.compare(date) !== 0) {\n event.preventDefault();\n }\n setFocusedDate(event, newDate);\n };\n\n const handleFocus: FocusEventHandler<HTMLButtonElement> = (event) => {\n setFocusedDate(event, date);\n };\n\n return {\n handleClick,\n handleKeyDown,\n handleFocus,\n };\n}\n"],"names":["date","useCalendarContext","startOfWeek","getCurrentLocale","endOfWeek"],"mappings":";;;;;;;;AASgB,SAAA,kBAAA,CAAmB,QAAEA,MAAA,EAA6B,EAAA;AAChE,EAAM,MAAA;AAAA,IACJ,OAAA,EAAS,EAAE,cAAe,EAAA;AAAA,MACxBC,kCAAmB,EAAA,CAAA;AACvB,EAAM,MAAA,WAAA,GAAoD,CAAC,KAAU,KAAA;AACnE,IAAA,cAAA,CAAe,OAAOD,MAAI,CAAA,CAAA;AAAA,GAC5B,CAAA;AAEA,EAAM,MAAA,aAAA,GAAyD,CAAC,KAAU,KAAA;AACxE,IAAA,IAAI,OAAU,GAAAA,MAAA,CAAA;AACd,IAAA,QAAQ,KAAM,CAAA,GAAA;AAAA,MACP,KAAA,SAAA;AACH,QAAA,OAAA,GAAUA,MAAK,CAAA,QAAA,CAAS,EAAE,KAAA,EAAO,GAAG,CAAA,CAAA;AACpC,QAAA,MAAA;AAAA,MACG,KAAA,WAAA;AACH,QAAA,OAAA,GAAUA,MAAK,CAAA,GAAA,CAAI,EAAE,KAAA,EAAO,GAAG,CAAA,CAAA;AAC/B,QAAA,MAAA;AAAA,MACG,KAAA,WAAA;AACH,QAAA,OAAA,GAAUA,MAAK,CAAA,QAAA,CAAS,EAAE,IAAA,EAAM,GAAG,CAAA,CAAA;AACnC,QAAA,MAAA;AAAA,MACG,KAAA,YAAA;AACH,QAAA,OAAA,GAAUA,MAAK,CAAA,GAAA,CAAI,EAAE,IAAA,EAAM,GAAG,CAAA,CAAA;AAC9B,QAAA,MAAA;AAAA,MACG,KAAA,MAAA;AACH,QAAU,OAAA,GAAAE,gBAAA,CAAYF,MAAM,EAAAG,sBAAA,EAAkB,CAAA,CAAA;AAC9C,QAAA,MAAA;AAAA,MACG,KAAA,KAAA;AAEH,QAAU,OAAA,GAAAC,cAAA,CAAUJ,MAAM,EAAAG,sBAAA,EAAkB,CAAA,CAAA;AAC5C,QAAA,MAAA;AAAA,MACG,KAAA,QAAA;AACH,QAAA,IAAI,MAAM,QAAU,EAAA;AAClB,UAAA,OAAA,GAAUH,MAAK,CAAA,QAAA,CAAS,EAAE,KAAA,EAAO,GAAG,CAAA,CAAA;AAAA,SAC/B,MAAA;AACL,UAAA,OAAA,GAAUA,MAAK,CAAA,QAAA,CAAS,EAAE,MAAA,EAAQ,GAAG,CAAA,CAAA;AAAA,SACvC;AACA,QAAA,MAAA;AAAA,MACG,KAAA,UAAA;AACH,QAAA,IAAI,MAAM,QAAU,EAAA;AAClB,UAAA,OAAA,GAAUA,MAAK,CAAA,GAAA,CAAI,EAAE,KAAA,EAAO,GAAG,CAAA,CAAA;AAAA,SAC1B,MAAA;AACL,UAAA,OAAA,GAAUA,MAAK,CAAA,GAAA,CAAI,EAAE,MAAA,EAAQ,GAAG,CAAA,CAAA;AAAA,SAClC;AACA,QAAA,MAAA;AAAA,KAAA;AAGJ,IAAA,IAAI,OAAQ,CAAA,OAAA,CAAQA,MAAI,CAAA,KAAM,CAAG,EAAA;AAC/B,MAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AAAA,KACvB;AACA,IAAA,cAAA,CAAe,OAAO,OAAO,CAAA,CAAA;AAAA,GAC/B,CAAA;AAEA,EAAM,MAAA,WAAA,GAAoD,CAAC,KAAU,KAAA;AACnE,IAAA,cAAA,CAAe,OAAOA,MAAI,CAAA,CAAA;AAAA,GAC5B,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,WAAA;AAAA,IACA,aAAA;AAAA,IACA,WAAA;AAAA,GACF,CAAA;AACF;;;;"}
@@ -63,8 +63,36 @@ function useCalendar(props) {
63
63
  hoveredDate
64
64
  });
65
65
  const [calendarFocused, setCalendarFocused] = React.useState(false);
66
+ const isInVisibleMonth = (date$1) => date$1 != null && date.isSameMonth(date$1, visibleMonth);
67
+ const getInitialFocusedDate = () => {
68
+ const selectedDate2 = selectionManager.state.selectedDate;
69
+ if (useSelection.isRangeOrOffsetSelectionValue(selectedDate2)) {
70
+ if (isInVisibleMonth(selectedDate2 == null ? void 0 : selectedDate2.startDate)) {
71
+ return selectedDate2.startDate;
72
+ }
73
+ if (isInVisibleMonth(selectedDate2 == null ? void 0 : selectedDate2.endDate)) {
74
+ return selectedDate2.endDate;
75
+ }
76
+ if ((selectedDate2 == null ? void 0 : selectedDate2.startDate) && (selectedDate2 == null ? void 0 : selectedDate2.endDate) && visibleMonth.compare(selectedDate2.startDate) < 0 && visibleMonth.compare(selectedDate2.endDate) > 0) {
77
+ return date.startOfMonth(visibleMonth);
78
+ }
79
+ }
80
+ if (Array.isArray(selectedDate2)) {
81
+ const selectionInMonth = selectedDate2.filter((day) => isInVisibleMonth(day)).sort((a, b) => a.compare(b));
82
+ if (selectionInMonth.length > 0) {
83
+ return selectionInMonth[0];
84
+ }
85
+ }
86
+ if (!useSelection.isRangeOrOffsetSelectionValue(selectedDate2) && !Array.isArray(selectedDate2) && isInVisibleMonth(selectedDate2) && !selectedDate2.startDate) {
87
+ return selectedDate2;
88
+ }
89
+ if (isInVisibleMonth(date.today(date.getLocalTimeZone()))) {
90
+ return date.today(date.getLocalTimeZone());
91
+ }
92
+ return date.startOfMonth(visibleMonth);
93
+ };
66
94
  const [focusedDate, setFocusedDateState] = React.useState(
67
- date.startOfMonth(visibleMonth)
95
+ getInitialFocusedDate
68
96
  );
69
97
  const isDayVisible = React.useCallback(
70
98
  (date$1) => {
@@ -1 +1 @@
1
- {"version":3,"file":"useCalendar.js","sources":["../src/calendar/useCalendar.ts"],"sourcesContent":["import {\n DateValue,\n endOfMonth,\n endOfYear,\n getLocalTimeZone,\n isSameDay,\n startOfMonth,\n startOfYear,\n today,\n} from \"@internationalized/date\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { SyntheticEvent, useCallback, useEffect, useState } from \"react\";\nimport {\n UseMultiSelectionCalendarProps,\n UseOffsetSelectionCalendarProps,\n UseRangeSelectionCalendarProps,\n useSelectionCalendar,\n useSelectionCalendarProps,\n UseSingleSelectionCalendarProps,\n} from \"./useSelection\";\n\ninterface BaseUseCalendarProps {\n defaultVisibleMonth?: DateValue;\n onVisibleMonthChange?: (\n event: SyntheticEvent,\n visibleMonth: DateValue\n ) => void;\n isDayUnselectable?: (date: DateValue) => string | false | void;\n isDayHighlighted?: (date: DateValue) => string | false | void;\n isDayDisabled?: (date: DateValue) => boolean;\n visibleMonth?: DateValue;\n hideOutOfRangeDates?: boolean;\n hideYearDropdown?: boolean;\n minDate?: DateValue;\n maxDate?: DateValue;\n}\n\nexport type useCalendarProps = (\n | Omit<UseSingleSelectionCalendarProps, \"isDaySelectable\">\n | Omit<UseMultiSelectionCalendarProps, \"isDaySelectable\">\n | Omit<UseRangeSelectionCalendarProps, \"isDaySelectable\">\n | Omit<UseOffsetSelectionCalendarProps, \"isDaySelectable\">\n) &\n BaseUseCalendarProps;\n\nconst defaultIsDayUnselectable = (): string | false => false;\nconst defaultIsDayHighlighted = (): string | false => false;\nconst defaultIsDayDisabled = (): false => false;\n\nexport function useCalendar(props: useCalendarProps) {\n const {\n selectedDate,\n defaultSelectedDate,\n visibleMonth: visibleMonthProp,\n hideYearDropdown,\n hideOutOfRangeDates,\n defaultVisibleMonth = today(getLocalTimeZone()),\n onSelectedDateChange,\n onVisibleMonthChange,\n isDayUnselectable = defaultIsDayUnselectable,\n isDayHighlighted = defaultIsDayHighlighted,\n isDayDisabled = defaultIsDayDisabled,\n minDate = hideYearDropdown\n ? startOfYear(today(getLocalTimeZone()))\n : undefined,\n maxDate = hideYearDropdown\n ? endOfYear(today(getLocalTimeZone()))\n : undefined,\n selectionVariant,\n onHoveredDateChange,\n hoveredDate,\n // startDateOffset,\n // endDateOffset,\n } = props;\n const [visibleMonth, setVisibleMonthState] = useControlled({\n controlled: visibleMonthProp ? startOfMonth(visibleMonthProp) : undefined,\n default: startOfMonth(defaultVisibleMonth),\n name: \"Calendar\",\n state: \"visibleMonth\",\n });\n\n const isOutsideAllowedDates = useCallback(\n (date: DateValue) => {\n return (\n (minDate != null && date.compare(minDate) < 0) ||\n (maxDate != null && date.compare(maxDate) > 0)\n );\n },\n [maxDate, minDate]\n );\n\n const isOutsideAllowedMonths = (date: DateValue) => {\n return (\n (minDate != null && endOfMonth(date).compare(minDate) < 0) ||\n (maxDate != null && startOfMonth(date).compare(maxDate) > 0)\n );\n };\n\n const isOutsideAllowedYears = (date: DateValue) => {\n return (\n (minDate != null && endOfYear(date).compare(minDate) < 0) ||\n (maxDate != null && startOfYear(date).compare(maxDate) > 0)\n );\n };\n\n const isDaySelectable = useCallback(\n (date?: DateValue) =>\n !(\n date &&\n (isDayUnselectable(date) ||\n isDayDisabled(date) ||\n isOutsideAllowedDates(date))\n ),\n [isDayUnselectable, isDayDisabled, isOutsideAllowedDates]\n );\n\n const selectionManager = useSelectionCalendar({\n defaultSelectedDate: defaultSelectedDate,\n selectedDate,\n onSelectedDateChange,\n startDateOffset:\n props.selectionVariant === \"offset\"\n ? props.startDateOffset\n : (date) => date,\n endDateOffset:\n props.selectionVariant === \"offset\"\n ? props.endDateOffset\n : (date) => date,\n isDaySelectable,\n selectionVariant,\n onHoveredDateChange,\n hoveredDate,\n } as useSelectionCalendarProps);\n\n const [calendarFocused, setCalendarFocused] = useState(false);\n\n const [focusedDate, setFocusedDateState] = useState<DateValue>(\n startOfMonth(visibleMonth)\n );\n\n const isDayVisible = useCallback(\n (date: DateValue) => {\n const startInsideDays = startOfMonth(visibleMonth);\n\n if (date.compare(startInsideDays) < 0) return false;\n\n const endInsideDays = endOfMonth(visibleMonth);\n\n return !(date.compare(endInsideDays) > 0);\n },\n [visibleMonth]\n );\n\n const setVisibleMonth = useCallback(\n (event: SyntheticEvent, newVisibleMonth: DateValue) => {\n setVisibleMonthState(newVisibleMonth);\n onVisibleMonthChange?.(event, newVisibleMonth);\n },\n [onVisibleMonthChange, setVisibleMonthState]\n );\n\n const setFocusedDate = useCallback(\n (event: SyntheticEvent, date: DateValue) => {\n if (isSameDay(date, focusedDate) || isOutsideAllowedDates(date)) return;\n\n setFocusedDateState(date);\n\n const shouldTransition =\n !isDayVisible(date) &&\n isDaySelectable(date) &&\n !isOutsideAllowedDates(date);\n if (shouldTransition) {\n setVisibleMonth(event, startOfMonth(date));\n }\n },\n [\n focusedDate,\n isDaySelectable,\n isDayVisible,\n isOutsideAllowedDates,\n setVisibleMonth,\n ]\n );\n\n useEffect(() => {\n if (!isDayVisible(focusedDate)) {\n setFocusedDateState(startOfMonth(visibleMonth));\n }\n }, [isDayVisible, focusedDate, visibleMonth]);\n\n return {\n state: {\n visibleMonth,\n focusedDate,\n minDate,\n maxDate,\n selectionVariant,\n hideOutOfRangeDates,\n calendarFocused,\n ...selectionManager.state,\n },\n helpers: {\n setVisibleMonth,\n setFocusedDate,\n setCalendarFocused,\n isDayUnselectable,\n isDayHighlighted,\n isDayDisabled,\n isDayVisible,\n isOutsideAllowedDates,\n isOutsideAllowedMonths,\n isOutsideAllowedYears,\n ...selectionManager.helpers,\n },\n };\n}\n"],"names":["today","getLocalTimeZone","startOfYear","endOfYear","useControlled","startOfMonth","useCallback","date","endOfMonth","useSelectionCalendar","useState","isSameDay","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"useCalendar.js","sources":["../src/calendar/useCalendar.ts"],"sourcesContent":["import {\n DateValue,\n endOfMonth,\n endOfYear,\n getLocalTimeZone,\n isSameDay,\n isSameMonth,\n startOfMonth,\n startOfYear,\n today,\n} from \"@internationalized/date\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { SyntheticEvent, useCallback, useEffect, useState } from \"react\";\nimport {\n isRangeOrOffsetSelectionValue,\n UseMultiSelectionCalendarProps,\n UseOffsetSelectionCalendarProps,\n UseRangeSelectionCalendarProps,\n useSelectionCalendar,\n useSelectionCalendarProps,\n UseSingleSelectionCalendarProps,\n} from \"./useSelection\";\n\ninterface BaseUseCalendarProps {\n defaultVisibleMonth?: DateValue;\n onVisibleMonthChange?: (\n event: SyntheticEvent,\n visibleMonth: DateValue\n ) => void;\n isDayUnselectable?: (date: DateValue) => string | false | void;\n isDayHighlighted?: (date: DateValue) => string | false | void;\n isDayDisabled?: (date: DateValue) => boolean;\n visibleMonth?: DateValue;\n hideOutOfRangeDates?: boolean;\n hideYearDropdown?: boolean;\n minDate?: DateValue;\n maxDate?: DateValue;\n}\n\nexport type useCalendarProps = (\n | Omit<UseSingleSelectionCalendarProps, \"isDaySelectable\">\n | Omit<UseMultiSelectionCalendarProps, \"isDaySelectable\">\n | Omit<UseRangeSelectionCalendarProps, \"isDaySelectable\">\n | Omit<UseOffsetSelectionCalendarProps, \"isDaySelectable\">\n) &\n BaseUseCalendarProps;\n\nconst defaultIsDayUnselectable = (): string | false => false;\nconst defaultIsDayHighlighted = (): string | false => false;\nconst defaultIsDayDisabled = (): false => false;\n\nexport function useCalendar(props: useCalendarProps) {\n const {\n selectedDate,\n defaultSelectedDate,\n visibleMonth: visibleMonthProp,\n hideYearDropdown,\n hideOutOfRangeDates,\n defaultVisibleMonth = today(getLocalTimeZone()),\n onSelectedDateChange,\n onVisibleMonthChange,\n isDayUnselectable = defaultIsDayUnselectable,\n isDayHighlighted = defaultIsDayHighlighted,\n isDayDisabled = defaultIsDayDisabled,\n minDate = hideYearDropdown\n ? startOfYear(today(getLocalTimeZone()))\n : undefined,\n maxDate = hideYearDropdown\n ? endOfYear(today(getLocalTimeZone()))\n : undefined,\n selectionVariant,\n onHoveredDateChange,\n hoveredDate,\n // startDateOffset,\n // endDateOffset,\n } = props;\n const [visibleMonth, setVisibleMonthState] = useControlled({\n controlled: visibleMonthProp ? startOfMonth(visibleMonthProp) : undefined,\n default: startOfMonth(defaultVisibleMonth),\n name: \"Calendar\",\n state: \"visibleMonth\",\n });\n\n const isOutsideAllowedDates = useCallback(\n (date: DateValue) => {\n return (\n (minDate != null && date.compare(minDate) < 0) ||\n (maxDate != null && date.compare(maxDate) > 0)\n );\n },\n [maxDate, minDate]\n );\n\n const isOutsideAllowedMonths = (date: DateValue) => {\n return (\n (minDate != null && endOfMonth(date).compare(minDate) < 0) ||\n (maxDate != null && startOfMonth(date).compare(maxDate) > 0)\n );\n };\n\n const isOutsideAllowedYears = (date: DateValue) => {\n return (\n (minDate != null && endOfYear(date).compare(minDate) < 0) ||\n (maxDate != null && startOfYear(date).compare(maxDate) > 0)\n );\n };\n\n const isDaySelectable = useCallback(\n (date?: DateValue) =>\n !(\n date &&\n (isDayUnselectable(date) ||\n isDayDisabled(date) ||\n isOutsideAllowedDates(date))\n ),\n [isDayUnselectable, isDayDisabled, isOutsideAllowedDates]\n );\n\n const selectionManager = useSelectionCalendar({\n defaultSelectedDate: defaultSelectedDate,\n selectedDate,\n onSelectedDateChange,\n startDateOffset:\n props.selectionVariant === \"offset\"\n ? props.startDateOffset\n : (date) => date,\n endDateOffset:\n props.selectionVariant === \"offset\"\n ? props.endDateOffset\n : (date) => date,\n isDaySelectable,\n selectionVariant,\n onHoveredDateChange,\n hoveredDate,\n } as useSelectionCalendarProps);\n\n const [calendarFocused, setCalendarFocused] = useState(false);\n\n const isInVisibleMonth = (\n date: DateValue | undefined | null\n ): date is DateValue => date != null && isSameMonth(date, visibleMonth);\n\n const getInitialFocusedDate = (): DateValue => {\n const selectedDate = selectionManager.state.selectedDate;\n // Case range or offset\n if (isRangeOrOffsetSelectionValue(selectedDate)) {\n if (isInVisibleMonth(selectedDate?.startDate)) {\n return selectedDate.startDate;\n }\n if (isInVisibleMonth(selectedDate?.endDate)) {\n return selectedDate.endDate;\n }\n if (\n selectedDate?.startDate &&\n selectedDate?.endDate &&\n visibleMonth.compare(selectedDate.startDate) < 0 &&\n visibleMonth.compare(selectedDate.endDate) > 0\n ) {\n return startOfMonth(visibleMonth);\n }\n }\n // Case multiselect\n if (Array.isArray(selectedDate)) {\n // return first selected day in visible month\n const selectionInMonth = selectedDate\n .filter((day) => isInVisibleMonth(day))\n .sort((a, b) => a.compare(b));\n if (selectionInMonth.length > 0) {\n return selectionInMonth[0];\n }\n }\n // Case single select\n if (\n !isRangeOrOffsetSelectionValue(selectedDate) &&\n !Array.isArray(selectedDate) &&\n isInVisibleMonth(selectedDate) &&\n // @ts-ignore Checks it is not a range\n !selectedDate.startDate\n ) {\n return selectedDate;\n }\n // default\n if (isInVisibleMonth(today(getLocalTimeZone()))) {\n return today(getLocalTimeZone());\n }\n return startOfMonth(visibleMonth);\n };\n\n const [focusedDate, setFocusedDateState] = useState<DateValue>(\n getInitialFocusedDate\n );\n\n const isDayVisible = useCallback(\n (date: DateValue) => {\n const startInsideDays = startOfMonth(visibleMonth);\n\n if (date.compare(startInsideDays) < 0) return false;\n\n const endInsideDays = endOfMonth(visibleMonth);\n\n return !(date.compare(endInsideDays) > 0);\n },\n [visibleMonth]\n );\n\n const setVisibleMonth = useCallback(\n (event: SyntheticEvent, newVisibleMonth: DateValue) => {\n setVisibleMonthState(newVisibleMonth);\n onVisibleMonthChange?.(event, newVisibleMonth);\n },\n [onVisibleMonthChange, setVisibleMonthState]\n );\n\n const setFocusedDate = useCallback(\n (event: SyntheticEvent, date: DateValue) => {\n if (isSameDay(date, focusedDate) || isOutsideAllowedDates(date)) return;\n\n setFocusedDateState(date);\n\n const shouldTransition =\n !isDayVisible(date) &&\n isDaySelectable(date) &&\n !isOutsideAllowedDates(date);\n if (shouldTransition) {\n setVisibleMonth(event, startOfMonth(date));\n }\n },\n [\n focusedDate,\n isDaySelectable,\n isDayVisible,\n isOutsideAllowedDates,\n setVisibleMonth,\n ]\n );\n\n useEffect(() => {\n if (!isDayVisible(focusedDate)) {\n setFocusedDateState(startOfMonth(visibleMonth));\n }\n }, [isDayVisible, focusedDate, visibleMonth]);\n\n return {\n state: {\n visibleMonth,\n focusedDate,\n minDate,\n maxDate,\n selectionVariant,\n hideOutOfRangeDates,\n calendarFocused,\n ...selectionManager.state,\n },\n helpers: {\n setVisibleMonth,\n setFocusedDate,\n setCalendarFocused,\n isDayUnselectable,\n isDayHighlighted,\n isDayDisabled,\n isDayVisible,\n isOutsideAllowedDates,\n isOutsideAllowedMonths,\n isOutsideAllowedYears,\n ...selectionManager.helpers,\n },\n };\n}\n"],"names":["today","getLocalTimeZone","startOfYear","endOfYear","useControlled","startOfMonth","useCallback","date","endOfMonth","useSelectionCalendar","useState","isSameMonth","selectedDate","isRangeOrOffsetSelectionValue","isSameDay","useEffect"],"mappings":"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"}
@@ -235,6 +235,7 @@ function useSelectionDay({ date }) {
235
235
  };
236
236
  }
237
237
 
238
+ exports.isRangeOrOffsetSelectionValue = isRangeOrOffsetSelectionValue;
238
239
  exports.useSelectionCalendar = useSelectionCalendar;
239
240
  exports.useSelectionDay = useSelectionDay;
240
241
  //# sourceMappingURL=useSelection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSelection.js","sources":["../src/calendar/useSelection.ts"],"sourcesContent":["import { makePrefixer, useControlled } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { KeyboardEventHandler, MouseEventHandler, SyntheticEvent } from \"react\";\nimport { isPlainObject } from \"../utils\";\nimport { useCalendarContext } from \"./internal/CalendarContext\";\nimport { CalendarDate, DateValue, isSameDay } from \"@internationalized/date\";\n\ninterface BaseUseSelectionCalendarProps<SelectionVariantType> {\n hoveredDate?: DateValue | null;\n selectedDate?: SelectionVariantType | null;\n defaultSelectedDate?: SelectionVariantType;\n onSelectedDateChange?: (\n event: SyntheticEvent,\n selectedDate: SelectionVariantType\n ) => void;\n isDaySelectable: (date?: DateValue) => boolean;\n onHoveredDateChange?: (\n event: SyntheticEvent,\n hoveredDate: DateValue | null\n ) => void;\n}\n\ntype SingleSelectionValueType = DateValue;\ntype MultiSelectionValueType = DateValue[];\ntype RangeSelectionValueType = {\n startDate?: DateValue;\n endDate?: DateValue;\n};\ntype OffsetSelectionValueType = {\n startDate?: DateValue;\n endDate?: DateValue;\n};\n\ntype AllSelectionValueType =\n | SingleSelectionValueType\n | MultiSelectionValueType\n | RangeSelectionValueType\n | OffsetSelectionValueType\n | null;\n\nexport interface UseOffsetSelectionCalendarProps\n extends Omit<\n BaseUseSelectionCalendarProps<OffsetSelectionValueType>,\n \"startDateOffset\" | \"endDateOffset\"\n > {\n selectionVariant: \"offset\";\n startDateOffset?: (date: DateValue) => DateValue;\n endDateOffset?: (date: DateValue) => DateValue;\n}\n\nexport interface UseRangeSelectionCalendarProps\n extends BaseUseSelectionCalendarProps<RangeSelectionValueType> {\n selectionVariant: \"range\";\n}\n\nexport interface UseMultiSelectionCalendarProps\n extends BaseUseSelectionCalendarProps<MultiSelectionValueType> {\n selectionVariant: \"multiselect\";\n}\n\nexport interface UseSingleSelectionCalendarProps\n extends BaseUseSelectionCalendarProps<SingleSelectionValueType> {\n selectionVariant: \"default\";\n}\n\nexport type useSelectionCalendarProps =\n | UseSingleSelectionCalendarProps\n | UseMultiSelectionCalendarProps\n | UseRangeSelectionCalendarProps\n | UseOffsetSelectionCalendarProps;\n\nfunction addOrRemoveFromArray(\n array: AllSelectionValueType | null = [],\n item: DateValue\n) {\n if (Array.isArray(array)) {\n if (array.find((element) => isSameDay(element, item))) {\n return array.filter((element) => !isSameDay(element, item));\n }\n return array.concat(item);\n }\n return [item];\n}\n\nconst defaultOffset = (date: DateValue) => date;\n\nfunction isRangeOrOffsetSelectionValue(\n selectionValue?: AllSelectionValueType\n): selectionValue is RangeSelectionValueType | OffsetSelectionValueType {\n return selectionValue != null && isPlainObject(selectionValue);\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarDay\");\n\nexport function useSelectionCalendar(props: useSelectionCalendarProps) {\n const {\n hoveredDate: hoveredDateProp,\n selectedDate: selectedDateProp,\n defaultSelectedDate,\n // onSelectedDateChange,\n onHoveredDateChange,\n isDaySelectable,\n selectionVariant,\n // startDateOffset,\n // endDateOffset,\n } = props;\n const [selectedDate, setSelectedDateState] = useControlled({\n controlled: selectedDateProp,\n default: defaultSelectedDate,\n name: \"Calendar\",\n state: \"selectedDate\",\n });\n\n const getStartDateOffset = (date: DateValue) => {\n if (props.selectionVariant === \"offset\" && props.startDateOffset) {\n return props.startDateOffset(date);\n } else {\n return defaultOffset(date);\n }\n };\n\n const getEndDateOffset = (date: DateValue) => {\n if (props.selectionVariant === \"offset\" && props.endDateOffset) {\n return props.endDateOffset(date);\n } else {\n return defaultOffset(date);\n }\n };\n\n const setSelectedDate = (\n event: SyntheticEvent<HTMLButtonElement>,\n newSelectedDate: DateValue\n ) => {\n if (isDaySelectable(newSelectedDate)) {\n switch (props.selectionVariant) {\n case \"default\":\n setSelectedDateState(newSelectedDate);\n props.onSelectedDateChange?.(event, newSelectedDate);\n break;\n case \"multiselect\":\n const newDates = addOrRemoveFromArray(selectedDate, newSelectedDate);\n setSelectedDateState(newDates);\n props.onSelectedDateChange?.(event, newDates);\n break;\n case \"range\":\n let base = selectedDate;\n if (isRangeOrOffsetSelectionValue(base)) {\n if (base?.startDate && base?.endDate) {\n base = { startDate: newSelectedDate };\n } else if (\n base?.startDate &&\n newSelectedDate.compare(base.startDate) > 0\n ) {\n base = { ...base, endDate: newSelectedDate };\n } else {\n base = { startDate: newSelectedDate };\n }\n } else {\n base = { startDate: newSelectedDate };\n }\n setSelectedDateState(base);\n props.onSelectedDateChange?.(event, base);\n break;\n case \"offset\":\n const newRange = {\n startDate: getStartDateOffset(newSelectedDate),\n endDate: getEndDateOffset(newSelectedDate),\n };\n setSelectedDateState(newRange);\n props.onSelectedDateChange?.(event, newRange);\n }\n }\n };\n\n const isSelected = (date: DateValue) => {\n switch (selectionVariant) {\n case \"default\":\n return (\n selectedDate instanceof CalendarDate && isSameDay(selectedDate, date)\n );\n case \"multiselect\":\n return (\n Array.isArray(selectedDate) &&\n !!selectedDate.find((element) => isSameDay(element, date))\n );\n default:\n return false;\n }\n };\n\n const [hoveredDate, setHoveredDateState] = useControlled({\n controlled: hoveredDateProp,\n default: undefined,\n name: \"Calendar\",\n state: \"hoveredDate\",\n });\n\n const setHoveredDate = (event: SyntheticEvent, date: DateValue | null) => {\n setHoveredDateState(date);\n onHoveredDateChange?.(event, date);\n };\n\n const isHovered = (date: DateValue) => {\n return !!hoveredDate && isSameDay(date, hoveredDate);\n };\n\n const isSelectedSpan = (date: DateValue) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionValue(selectedDate) &&\n selectedDate?.startDate &&\n selectedDate?.endDate\n ) {\n return (\n date.compare(selectedDate.startDate) > 0 &&\n date.compare(selectedDate.endDate) < 0\n );\n }\n return false;\n };\n const isHoveredSpan = (date: DateValue) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionValue(selectedDate) &&\n selectedDate.startDate &&\n !selectedDate.endDate &&\n hoveredDate\n ) {\n const isForwardRange =\n hoveredDate.compare(selectedDate.startDate) > 0 &&\n ((date.compare(selectedDate.startDate) > 0 &&\n date.compare(hoveredDate) < 0) ||\n isSameDay(date, hoveredDate));\n\n const isValidDayHovered = isDaySelectable(hoveredDate);\n\n return isForwardRange && isValidDayHovered;\n }\n return false;\n };\n\n const isSelectedStart = (date: DateValue) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionValue(selectedDate) &&\n selectedDate.startDate\n ) {\n return isSameDay(selectedDate.startDate, date);\n }\n return false;\n };\n\n const isSelectedEnd = (date: DateValue) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionValue(selectedDate) &&\n selectedDate.endDate\n ) {\n return isSameDay(selectedDate.endDate, date);\n }\n return false;\n };\n\n const isHoveredOffset = (date: DateValue) => {\n if (hoveredDate && selectionVariant === \"offset\") {\n const startDate = getStartDateOffset(hoveredDate);\n const endDate = getEndDateOffset(hoveredDate);\n\n return (\n date.compare(startDate) >= 0 &&\n date.compare(endDate) <= 0 &&\n isDaySelectable(date)\n );\n }\n\n return false;\n };\n\n return {\n state: {\n selectedDate,\n hoveredDate,\n },\n helpers: {\n setSelectedDate,\n isSelected,\n setHoveredDate,\n isHovered,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHoveredOffset,\n },\n };\n}\n\nexport function useSelectionDay({ date }: { date: DateValue }) {\n const {\n helpers: {\n setSelectedDate,\n isSelected,\n setHoveredDate,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHovered,\n isHoveredOffset,\n isDayUnselectable,\n },\n } = useCalendarContext();\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n setSelectedDate(event, date);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = (event) => {\n switch (event.key) {\n case \"Space\":\n case \"Enter\":\n setSelectedDate(event, date);\n event.preventDefault();\n }\n };\n\n const handleMouseOver: MouseEventHandler<HTMLButtonElement> = (event) => {\n setHoveredDate(event, date);\n };\n\n const handleMouseLeave: MouseEventHandler<HTMLButtonElement> = (event) => {\n setHoveredDate(event, null);\n };\n\n const selected = isSelected(date);\n const selectedSpan = isSelectedSpan(date);\n const hoveredSpan = isHoveredSpan(date);\n const selectedStart = isSelectedStart(date);\n const selectedEnd = isSelectedEnd(date);\n const hovered = isHovered(date);\n const hoveredOffset = isHoveredOffset(date);\n\n return {\n handleClick,\n handleKeyDown,\n handleMouseOver,\n handleMouseLeave,\n status: {\n selected,\n selectedSpan,\n hoveredSpan,\n selectedStart,\n selectedEnd,\n hovered,\n hoveredOffset,\n },\n dayProps: {\n className: clsx({\n [withBaseName(\"selected\")]: selected,\n [withBaseName(\"selectedSpan\")]: selectedSpan,\n [withBaseName(\"hoveredSpan\")]: hoveredSpan,\n [withBaseName(\"selectedStart\")]: selectedStart,\n [withBaseName(\"selectedEnd\")]: selectedEnd,\n [withBaseName(\"hovered\")]: hovered,\n [withBaseName(\"hoveredOffset\")]: hoveredOffset,\n }),\n \"aria-pressed\":\n selected || selectedEnd || selectedStart || selectedSpan\n ? \"true\"\n : undefined,\n \"aria-disabled\": !!isDayUnselectable(date) ? \"true\" : undefined,\n },\n };\n}\n"],"names":["isSameDay","isPlainObject","makePrefixer","useControlled","date","CalendarDate","useCalendarContext","clsx"],"mappings":";;;;;;;;;;;AAuEA,SAAS,oBACP,CAAA,KAAA,GAAsC,EAAC,EACvC,IACA,EAAA;AACA,EAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,KAAK,CAAG,EAAA;AACxB,IAAI,IAAA,KAAA,CAAM,KAAK,CAAC,OAAA,KAAYA,eAAU,OAAS,EAAA,IAAI,CAAC,CAAG,EAAA;AACrD,MAAO,OAAA,KAAA,CAAM,OAAO,CAAC,OAAA,KAAY,CAACA,cAAU,CAAA,OAAA,EAAS,IAAI,CAAC,CAAA,CAAA;AAAA,KAC5D;AACA,IAAO,OAAA,KAAA,CAAM,OAAO,IAAI,CAAA,CAAA;AAAA,GAC1B;AACA,EAAA,OAAO,CAAC,IAAI,CAAA,CAAA;AACd,CAAA;AAEA,MAAM,aAAA,GAAgB,CAAC,IAAoB,KAAA,IAAA,CAAA;AAE3C,SAAS,8BACP,cACsE,EAAA;AACtE,EAAO,OAAA,cAAA,IAAkB,IAAQ,IAAAC,2BAAA,CAAc,cAAc,CAAA,CAAA;AAC/D,CAAA;AAEA,MAAM,YAAA,GAAeC,kBAAa,iBAAiB,CAAA,CAAA;AAE5C,SAAS,qBAAqB,KAAkC,EAAA;AACrE,EAAM,MAAA;AAAA,IACJ,WAAa,EAAA,eAAA;AAAA,IACb,YAAc,EAAA,gBAAA;AAAA,IACd,mBAAA;AAAA,IAEA,mBAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,GAGE,GAAA,KAAA,CAAA;AACJ,EAAA,MAAM,CAAC,YAAA,EAAc,oBAAoB,CAAA,GAAIC,kBAAc,CAAA;AAAA,IACzD,UAAY,EAAA,gBAAA;AAAA,IACZ,OAAS,EAAA,mBAAA;AAAA,IACT,IAAM,EAAA,UAAA;AAAA,IACN,KAAO,EAAA,cAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAM,MAAA,kBAAA,GAAqB,CAAC,IAAoB,KAAA;AAC9C,IAAA,IAAI,KAAM,CAAA,gBAAA,KAAqB,QAAY,IAAA,KAAA,CAAM,eAAiB,EAAA;AAChE,MAAO,OAAA,KAAA,CAAM,gBAAgB,IAAI,CAAA,CAAA;AAAA,KAC5B,MAAA;AACL,MAAA,OAAO,cAAc,IAAI,CAAA,CAAA;AAAA,KAC3B;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,gBAAA,GAAmB,CAAC,IAAoB,KAAA;AAC5C,IAAA,IAAI,KAAM,CAAA,gBAAA,KAAqB,QAAY,IAAA,KAAA,CAAM,aAAe,EAAA;AAC9D,MAAO,OAAA,KAAA,CAAM,cAAc,IAAI,CAAA,CAAA;AAAA,KAC1B,MAAA;AACL,MAAA,OAAO,cAAc,IAAI,CAAA,CAAA;AAAA,KAC3B;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,eAAA,GAAkB,CACtB,KAAA,EACA,eACG,KAAA;AApIP,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAqII,IAAI,IAAA,eAAA,CAAgB,eAAe,CAAG,EAAA;AACpC,MAAA,QAAQ,KAAM,CAAA,gBAAA;AAAA,QACP,KAAA,SAAA;AACH,UAAA,oBAAA,CAAqB,eAAe,CAAA,CAAA;AACpC,UAAM,CAAA,EAAA,GAAA,KAAA,CAAA,oBAAA,KAAN,+BAA6B,KAAO,EAAA,eAAA,CAAA,CAAA;AACpC,UAAA,MAAA;AAAA,QACG,KAAA,aAAA;AACH,UAAM,MAAA,QAAA,GAAW,oBAAqB,CAAA,YAAA,EAAc,eAAe,CAAA,CAAA;AACnE,UAAA,oBAAA,CAAqB,QAAQ,CAAA,CAAA;AAC7B,UAAM,CAAA,EAAA,GAAA,KAAA,CAAA,oBAAA,KAAN,+BAA6B,KAAO,EAAA,QAAA,CAAA,CAAA;AACpC,UAAA,MAAA;AAAA,QACG,KAAA,OAAA;AACH,UAAA,IAAI,IAAO,GAAA,YAAA,CAAA;AACX,UAAI,IAAA,6BAAA,CAA8B,IAAI,CAAG,EAAA;AACvC,YAAI,IAAA,CAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,SAAa,MAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAM,OAAS,CAAA,EAAA;AACpC,cAAO,IAAA,GAAA,EAAE,WAAW,eAAgB,EAAA,CAAA;AAAA,aACtC,MAAA,IAAA,CACE,6BAAM,SACN,KAAA,eAAA,CAAgB,QAAQ,IAAK,CAAA,SAAS,IAAI,CAC1C,EAAA;AACA,cAAA,IAAA,GAAO,EAAE,GAAG,IAAM,EAAA,OAAA,EAAS,eAAgB,EAAA,CAAA;AAAA,aACtC,MAAA;AACL,cAAO,IAAA,GAAA,EAAE,WAAW,eAAgB,EAAA,CAAA;AAAA,aACtC;AAAA,WACK,MAAA;AACL,YAAO,IAAA,GAAA,EAAE,WAAW,eAAgB,EAAA,CAAA;AAAA,WACtC;AACA,UAAA,oBAAA,CAAqB,IAAI,CAAA,CAAA;AACzB,UAAM,CAAA,EAAA,GAAA,KAAA,CAAA,oBAAA,KAAN,+BAA6B,KAAO,EAAA,IAAA,CAAA,CAAA;AACpC,UAAA,MAAA;AAAA,QACG,KAAA,QAAA;AACH,UAAA,MAAM,QAAW,GAAA;AAAA,YACf,SAAA,EAAW,mBAAmB,eAAe,CAAA;AAAA,YAC7C,OAAA,EAAS,iBAAiB,eAAe,CAAA;AAAA,WAC3C,CAAA;AACA,UAAA,oBAAA,CAAqB,QAAQ,CAAA,CAAA;AAC7B,UAAM,CAAA,EAAA,GAAA,KAAA,CAAA,oBAAA,KAAN,+BAA6B,KAAO,EAAA,QAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAE1C;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,UAAA,GAAa,CAACC,MAAoB,KAAA;AACtC,IAAQ,QAAA,gBAAA;AAAA,MACD,KAAA,SAAA;AACH,QAAA,OACE,YAAwB,YAAAC,iBAAA,IAAgBL,cAAU,CAAA,YAAA,EAAcI,MAAI,CAAA,CAAA;AAAA,MAEnE,KAAA,aAAA;AACH,QAAA,OACE,KAAM,CAAA,OAAA,CAAQ,YAAY,CAAA,IAC1B,CAAC,CAAC,YAAa,CAAA,IAAA,CAAK,CAAC,OAAA,KAAYJ,cAAU,CAAA,OAAA,EAASI,MAAI,CAAC,CAAA,CAAA;AAAA,MAAA;AAG3D,QAAO,OAAA,KAAA,CAAA;AAAA,KAAA;AAAA,GAEb,CAAA;AAEA,EAAA,MAAM,CAAC,WAAA,EAAa,mBAAmB,CAAA,GAAID,kBAAc,CAAA;AAAA,IACvD,UAAY,EAAA,eAAA;AAAA,IACZ,OAAS,EAAA,KAAA,CAAA;AAAA,IACT,IAAM,EAAA,UAAA;AAAA,IACN,KAAO,EAAA,aAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAM,MAAA,cAAA,GAAiB,CAAC,KAAA,EAAuB,IAA2B,KAAA;AACxE,IAAA,mBAAA,CAAoB,IAAI,CAAA,CAAA;AACxB,IAAA,mBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,mBAAA,CAAsB,KAAO,EAAA,IAAA,CAAA,CAAA;AAAA,GAC/B,CAAA;AAEA,EAAM,MAAA,SAAA,GAAY,CAACC,MAAoB,KAAA;AACrC,IAAA,OAAO,CAAC,CAAC,WAAe,IAAAJ,cAAA,CAAUI,QAAM,WAAW,CAAA,CAAA;AAAA,GACrD,CAAA;AAEA,EAAM,MAAA,cAAA,GAAiB,CAAC,IAAoB,KAAA;AAC1C,IACG,IAAA,CAAA,gBAAA,KAAqB,OAAW,IAAA,gBAAA,KAAqB,QACtD,KAAA,6BAAA,CAA8B,YAAY,CAC1C,KAAA,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAc,SACd,CAAA,KAAA,YAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,YAAA,CAAc,OACd,CAAA,EAAA;AACA,MACE,OAAA,IAAA,CAAK,OAAQ,CAAA,YAAA,CAAa,SAAS,CAAA,GAAI,KACvC,IAAK,CAAA,OAAA,CAAQ,YAAa,CAAA,OAAO,CAAI,GAAA,CAAA,CAAA;AAAA,KAEzC;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,CAAA;AACA,EAAM,MAAA,aAAA,GAAgB,CAACA,MAAoB,KAAA;AACzC,IAAA,IAAA,CACG,gBAAqB,KAAA,OAAA,IAAW,gBAAqB,KAAA,QAAA,KACtD,6BAA8B,CAAA,YAAY,CAC1C,IAAA,YAAA,CAAa,SACb,IAAA,CAAC,YAAa,CAAA,OAAA,IACd,WACA,EAAA;AACA,MAAM,MAAA,cAAA,GACJ,YAAY,OAAQ,CAAA,YAAA,CAAa,SAAS,CAAI,GAAA,CAAA,KAC5CA,OAAK,OAAQ,CAAA,YAAA,CAAa,SAAS,CAAI,GAAA,CAAA,IACvCA,OAAK,OAAQ,CAAA,WAAW,IAAI,CAC5B,IAAAJ,cAAA,CAAUI,QAAM,WAAW,CAAA,CAAA,CAAA;AAE/B,MAAM,MAAA,iBAAA,GAAoB,gBAAgB,WAAW,CAAA,CAAA;AAErD,MAAA,OAAO,cAAkB,IAAA,iBAAA,CAAA;AAAA,KAC3B;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAM,MAAA,eAAA,GAAkB,CAACA,MAAoB,KAAA;AAC3C,IACG,IAAA,CAAA,gBAAA,KAAqB,WAAW,gBAAqB,KAAA,QAAA,KACtD,8BAA8B,YAAY,CAAA,IAC1C,aAAa,SACb,EAAA;AACA,MAAO,OAAAJ,cAAA,CAAU,YAAa,CAAA,SAAA,EAAWI,MAAI,CAAA,CAAA;AAAA,KAC/C;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAM,MAAA,aAAA,GAAgB,CAACA,MAAoB,KAAA;AACzC,IACG,IAAA,CAAA,gBAAA,KAAqB,WAAW,gBAAqB,KAAA,QAAA,KACtD,8BAA8B,YAAY,CAAA,IAC1C,aAAa,OACb,EAAA;AACA,MAAO,OAAAJ,cAAA,CAAU,YAAa,CAAA,OAAA,EAASI,MAAI,CAAA,CAAA;AAAA,KAC7C;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAM,MAAA,eAAA,GAAkB,CAAC,IAAoB,KAAA;AAC3C,IAAI,IAAA,WAAA,IAAe,qBAAqB,QAAU,EAAA;AAChD,MAAM,MAAA,SAAA,GAAY,mBAAmB,WAAW,CAAA,CAAA;AAChD,MAAM,MAAA,OAAA,GAAU,iBAAiB,WAAW,CAAA,CAAA;AAE5C,MACE,OAAA,IAAA,CAAK,OAAQ,CAAA,SAAS,CAAK,IAAA,CAAA,IAC3B,IAAK,CAAA,OAAA,CAAQ,OAAO,CAAA,IAAK,CACzB,IAAA,eAAA,CAAgB,IAAI,CAAA,CAAA;AAAA,KAExB;AAEA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,KAAO,EAAA;AAAA,MACL,YAAA;AAAA,MACA,WAAA;AAAA,KACF;AAAA,IACA,OAAS,EAAA;AAAA,MACP,eAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,SAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,KACF;AAAA,GACF,CAAA;AACF,CAAA;AAEgB,SAAA,eAAA,CAAgB,EAAE,IAAA,EAA6B,EAAA;AAC7D,EAAM,MAAA;AAAA,IACJ,OAAS,EAAA;AAAA,MACP,eAAA;AAAA,MACA,UAAA;AAAA,MACA,cAAA;AAAA,MACA,cAAA;AAAA,MACA,aAAA;AAAA,MACA,eAAA;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,eAAA;AAAA,MACA,iBAAA;AAAA,KACF;AAAA,MACEE,kCAAmB,EAAA,CAAA;AAEvB,EAAM,MAAA,WAAA,GAAoD,CAAC,KAAU,KAAA;AACnE,IAAA,eAAA,CAAgB,OAAO,IAAI,CAAA,CAAA;AAAA,GAC7B,CAAA;AAEA,EAAM,MAAA,aAAA,GAAyD,CAAC,KAAU,KAAA;AACxE,IAAA,QAAQ,KAAM,CAAA,GAAA;AAAA,MACP,KAAA,OAAA,CAAA;AAAA,MACA,KAAA,OAAA;AACH,QAAA,eAAA,CAAgB,OAAO,IAAI,CAAA,CAAA;AAC3B,QAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AAAA,KAAA;AAAA,GAE3B,CAAA;AAEA,EAAM,MAAA,eAAA,GAAwD,CAAC,KAAU,KAAA;AACvE,IAAA,cAAA,CAAe,OAAO,IAAI,CAAA,CAAA;AAAA,GAC5B,CAAA;AAEA,EAAM,MAAA,gBAAA,GAAyD,CAAC,KAAU,KAAA;AACxE,IAAA,cAAA,CAAe,OAAO,IAAI,CAAA,CAAA;AAAA,GAC5B,CAAA;AAEA,EAAM,MAAA,QAAA,GAAW,WAAW,IAAI,CAAA,CAAA;AAChC,EAAM,MAAA,YAAA,GAAe,eAAe,IAAI,CAAA,CAAA;AACxC,EAAM,MAAA,WAAA,GAAc,cAAc,IAAI,CAAA,CAAA;AACtC,EAAM,MAAA,aAAA,GAAgB,gBAAgB,IAAI,CAAA,CAAA;AAC1C,EAAM,MAAA,WAAA,GAAc,cAAc,IAAI,CAAA,CAAA;AACtC,EAAM,MAAA,OAAA,GAAU,UAAU,IAAI,CAAA,CAAA;AAC9B,EAAM,MAAA,aAAA,GAAgB,gBAAgB,IAAI,CAAA,CAAA;AAE1C,EAAO,OAAA;AAAA,IACL,WAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,QAAA;AAAA,MACA,YAAA;AAAA,MACA,WAAA;AAAA,MACA,aAAA;AAAA,MACA,WAAA;AAAA,MACA,OAAA;AAAA,MACA,aAAA;AAAA,KACF;AAAA,IACA,QAAU,EAAA;AAAA,MACR,WAAWC,SAAK,CAAA;AAAA,QACd,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,QAC5B,CAAC,YAAa,CAAA,cAAc,CAAI,GAAA,YAAA;AAAA,QAChC,CAAC,YAAa,CAAA,aAAa,CAAI,GAAA,WAAA;AAAA,QAC/B,CAAC,YAAa,CAAA,eAAe,CAAI,GAAA,aAAA;AAAA,QACjC,CAAC,YAAa,CAAA,aAAa,CAAI,GAAA,WAAA;AAAA,QAC/B,CAAC,YAAa,CAAA,SAAS,CAAI,GAAA,OAAA;AAAA,QAC3B,CAAC,YAAa,CAAA,eAAe,CAAI,GAAA,aAAA;AAAA,OAClC,CAAA;AAAA,MACD,cACE,EAAA,QAAA,IAAY,WAAe,IAAA,aAAA,IAAiB,eACxC,MACA,GAAA,KAAA,CAAA;AAAA,MACN,iBAAiB,CAAC,CAAC,iBAAkB,CAAA,IAAI,IAAI,MAAS,GAAA,KAAA,CAAA;AAAA,KACxD;AAAA,GACF,CAAA;AACF;;;;;"}
1
+ {"version":3,"file":"useSelection.js","sources":["../src/calendar/useSelection.ts"],"sourcesContent":["import { makePrefixer, useControlled } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { KeyboardEventHandler, MouseEventHandler, SyntheticEvent } from \"react\";\nimport { isPlainObject } from \"../utils\";\nimport { useCalendarContext } from \"./internal/CalendarContext\";\nimport { CalendarDate, DateValue, isSameDay } from \"@internationalized/date\";\n\ninterface BaseUseSelectionCalendarProps<SelectionVariantType> {\n hoveredDate?: DateValue | null;\n selectedDate?: SelectionVariantType | null;\n defaultSelectedDate?: SelectionVariantType;\n onSelectedDateChange?: (\n event: SyntheticEvent,\n selectedDate: SelectionVariantType\n ) => void;\n isDaySelectable: (date?: DateValue) => boolean;\n onHoveredDateChange?: (\n event: SyntheticEvent,\n hoveredDate: DateValue | null\n ) => void;\n}\n\ntype SingleSelectionValueType = DateValue;\ntype MultiSelectionValueType = DateValue[];\ntype RangeSelectionValueType = {\n startDate?: DateValue;\n endDate?: DateValue;\n};\ntype OffsetSelectionValueType = {\n startDate?: DateValue;\n endDate?: DateValue;\n};\n\ntype AllSelectionValueType =\n | SingleSelectionValueType\n | MultiSelectionValueType\n | RangeSelectionValueType\n | OffsetSelectionValueType\n | null;\n\nexport interface UseOffsetSelectionCalendarProps\n extends Omit<\n BaseUseSelectionCalendarProps<OffsetSelectionValueType>,\n \"startDateOffset\" | \"endDateOffset\"\n > {\n selectionVariant: \"offset\";\n startDateOffset?: (date: DateValue) => DateValue;\n endDateOffset?: (date: DateValue) => DateValue;\n}\n\nexport interface UseRangeSelectionCalendarProps\n extends BaseUseSelectionCalendarProps<RangeSelectionValueType> {\n selectionVariant: \"range\";\n}\n\nexport interface UseMultiSelectionCalendarProps\n extends BaseUseSelectionCalendarProps<MultiSelectionValueType> {\n selectionVariant: \"multiselect\";\n}\n\nexport interface UseSingleSelectionCalendarProps\n extends BaseUseSelectionCalendarProps<SingleSelectionValueType> {\n selectionVariant: \"default\";\n}\n\nexport type useSelectionCalendarProps =\n | UseSingleSelectionCalendarProps\n | UseMultiSelectionCalendarProps\n | UseRangeSelectionCalendarProps\n | UseOffsetSelectionCalendarProps;\n\nfunction addOrRemoveFromArray(\n array: AllSelectionValueType | null = [],\n item: DateValue\n) {\n if (Array.isArray(array)) {\n if (array.find((element) => isSameDay(element, item))) {\n return array.filter((element) => !isSameDay(element, item));\n }\n return array.concat(item);\n }\n return [item];\n}\n\nconst defaultOffset = (date: DateValue) => date;\n\nexport function isRangeOrOffsetSelectionValue(\n selectionValue?: AllSelectionValueType\n): selectionValue is RangeSelectionValueType | OffsetSelectionValueType {\n return selectionValue != null && isPlainObject(selectionValue);\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarDay\");\n\nexport function useSelectionCalendar(props: useSelectionCalendarProps) {\n const {\n hoveredDate: hoveredDateProp,\n selectedDate: selectedDateProp,\n defaultSelectedDate,\n // onSelectedDateChange,\n onHoveredDateChange,\n isDaySelectable,\n selectionVariant,\n // startDateOffset,\n // endDateOffset,\n } = props;\n const [selectedDate, setSelectedDateState] = useControlled({\n controlled: selectedDateProp,\n default: defaultSelectedDate,\n name: \"Calendar\",\n state: \"selectedDate\",\n });\n\n const getStartDateOffset = (date: DateValue) => {\n if (props.selectionVariant === \"offset\" && props.startDateOffset) {\n return props.startDateOffset(date);\n } else {\n return defaultOffset(date);\n }\n };\n\n const getEndDateOffset = (date: DateValue) => {\n if (props.selectionVariant === \"offset\" && props.endDateOffset) {\n return props.endDateOffset(date);\n } else {\n return defaultOffset(date);\n }\n };\n\n const setSelectedDate = (\n event: SyntheticEvent<HTMLButtonElement>,\n newSelectedDate: DateValue\n ) => {\n if (isDaySelectable(newSelectedDate)) {\n switch (props.selectionVariant) {\n case \"default\":\n setSelectedDateState(newSelectedDate);\n props.onSelectedDateChange?.(event, newSelectedDate);\n break;\n case \"multiselect\":\n const newDates = addOrRemoveFromArray(selectedDate, newSelectedDate);\n setSelectedDateState(newDates);\n props.onSelectedDateChange?.(event, newDates);\n break;\n case \"range\":\n let base = selectedDate;\n if (isRangeOrOffsetSelectionValue(base)) {\n if (base?.startDate && base?.endDate) {\n base = { startDate: newSelectedDate };\n } else if (\n base?.startDate &&\n newSelectedDate.compare(base.startDate) > 0\n ) {\n base = { ...base, endDate: newSelectedDate };\n } else {\n base = { startDate: newSelectedDate };\n }\n } else {\n base = { startDate: newSelectedDate };\n }\n setSelectedDateState(base);\n props.onSelectedDateChange?.(event, base);\n break;\n case \"offset\":\n const newRange = {\n startDate: getStartDateOffset(newSelectedDate),\n endDate: getEndDateOffset(newSelectedDate),\n };\n setSelectedDateState(newRange);\n props.onSelectedDateChange?.(event, newRange);\n }\n }\n };\n\n const isSelected = (date: DateValue) => {\n switch (selectionVariant) {\n case \"default\":\n return (\n selectedDate instanceof CalendarDate && isSameDay(selectedDate, date)\n );\n case \"multiselect\":\n return (\n Array.isArray(selectedDate) &&\n !!selectedDate.find((element) => isSameDay(element, date))\n );\n default:\n return false;\n }\n };\n\n const [hoveredDate, setHoveredDateState] = useControlled({\n controlled: hoveredDateProp,\n default: undefined,\n name: \"Calendar\",\n state: \"hoveredDate\",\n });\n\n const setHoveredDate = (event: SyntheticEvent, date: DateValue | null) => {\n setHoveredDateState(date);\n onHoveredDateChange?.(event, date);\n };\n\n const isHovered = (date: DateValue) => {\n return !!hoveredDate && isSameDay(date, hoveredDate);\n };\n\n const isSelectedSpan = (date: DateValue) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionValue(selectedDate) &&\n selectedDate?.startDate &&\n selectedDate?.endDate\n ) {\n return (\n date.compare(selectedDate.startDate) > 0 &&\n date.compare(selectedDate.endDate) < 0\n );\n }\n return false;\n };\n const isHoveredSpan = (date: DateValue) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionValue(selectedDate) &&\n selectedDate.startDate &&\n !selectedDate.endDate &&\n hoveredDate\n ) {\n const isForwardRange =\n hoveredDate.compare(selectedDate.startDate) > 0 &&\n ((date.compare(selectedDate.startDate) > 0 &&\n date.compare(hoveredDate) < 0) ||\n isSameDay(date, hoveredDate));\n\n const isValidDayHovered = isDaySelectable(hoveredDate);\n\n return isForwardRange && isValidDayHovered;\n }\n return false;\n };\n\n const isSelectedStart = (date: DateValue) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionValue(selectedDate) &&\n selectedDate.startDate\n ) {\n return isSameDay(selectedDate.startDate, date);\n }\n return false;\n };\n\n const isSelectedEnd = (date: DateValue) => {\n if (\n (selectionVariant === \"range\" || selectionVariant === \"offset\") &&\n isRangeOrOffsetSelectionValue(selectedDate) &&\n selectedDate.endDate\n ) {\n return isSameDay(selectedDate.endDate, date);\n }\n return false;\n };\n\n const isHoveredOffset = (date: DateValue) => {\n if (hoveredDate && selectionVariant === \"offset\") {\n const startDate = getStartDateOffset(hoveredDate);\n const endDate = getEndDateOffset(hoveredDate);\n\n return (\n date.compare(startDate) >= 0 &&\n date.compare(endDate) <= 0 &&\n isDaySelectable(date)\n );\n }\n\n return false;\n };\n\n return {\n state: {\n selectedDate,\n hoveredDate,\n },\n helpers: {\n setSelectedDate,\n isSelected,\n setHoveredDate,\n isHovered,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHoveredOffset,\n },\n };\n}\n\nexport function useSelectionDay({ date }: { date: DateValue }) {\n const {\n helpers: {\n setSelectedDate,\n isSelected,\n setHoveredDate,\n isSelectedSpan,\n isHoveredSpan,\n isSelectedStart,\n isSelectedEnd,\n isHovered,\n isHoveredOffset,\n isDayUnselectable,\n },\n } = useCalendarContext();\n\n const handleClick: MouseEventHandler<HTMLButtonElement> = (event) => {\n setSelectedDate(event, date);\n };\n\n const handleKeyDown: KeyboardEventHandler<HTMLButtonElement> = (event) => {\n switch (event.key) {\n case \"Space\":\n case \"Enter\":\n setSelectedDate(event, date);\n event.preventDefault();\n }\n };\n\n const handleMouseOver: MouseEventHandler<HTMLButtonElement> = (event) => {\n setHoveredDate(event, date);\n };\n\n const handleMouseLeave: MouseEventHandler<HTMLButtonElement> = (event) => {\n setHoveredDate(event, null);\n };\n\n const selected = isSelected(date);\n const selectedSpan = isSelectedSpan(date);\n const hoveredSpan = isHoveredSpan(date);\n const selectedStart = isSelectedStart(date);\n const selectedEnd = isSelectedEnd(date);\n const hovered = isHovered(date);\n const hoveredOffset = isHoveredOffset(date);\n\n return {\n handleClick,\n handleKeyDown,\n handleMouseOver,\n handleMouseLeave,\n status: {\n selected,\n selectedSpan,\n hoveredSpan,\n selectedStart,\n selectedEnd,\n hovered,\n hoveredOffset,\n },\n dayProps: {\n className: clsx({\n [withBaseName(\"selected\")]: selected,\n [withBaseName(\"selectedSpan\")]: selectedSpan,\n [withBaseName(\"hoveredSpan\")]: hoveredSpan,\n [withBaseName(\"selectedStart\")]: selectedStart,\n [withBaseName(\"selectedEnd\")]: selectedEnd,\n [withBaseName(\"hovered\")]: hovered,\n [withBaseName(\"hoveredOffset\")]: hoveredOffset,\n }),\n \"aria-pressed\":\n selected || selectedEnd || selectedStart || selectedSpan\n ? \"true\"\n : undefined,\n \"aria-disabled\": !!isDayUnselectable(date) ? \"true\" : undefined,\n },\n };\n}\n"],"names":["isSameDay","isPlainObject","makePrefixer","useControlled","date","CalendarDate","useCalendarContext","clsx"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ContactPrimaryInfo.js","sources":["../src/contact-details/ContactPrimaryInfo.tsx"],"sourcesContent":["import { makePrefixer, useId, Text } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, HTMLAttributes, useEffect } from \"react\";\nimport { useContactDetailsContext } from \"./internal\";\n\nconst withBaseName = makePrefixer(\"saltContactPrimaryInfo\");\n\nexport interface ContactPrimaryInfoProps\n extends HTMLAttributes<HTMLDivElement> {\n text: string;\n}\n\nexport const ContactPrimaryInfo = forwardRef<\n HTMLDivElement,\n ContactPrimaryInfoProps\n>(function ContactPrimaryInfo(props, ref) {\n const {\n id: idProp,\n text,\n className,\n \"aria-level\": ariaLevel = 2,\n ...restProps\n } = props;\n const { setPrimary, setPrimaryId, secondaryId, tertiaryId, variant } =\n useContactDetailsContext();\n const id = useId(idProp);\n\n useEffect(() => {\n setPrimary(text || \"\");\n setPrimaryId(id);\n return () => {\n setPrimary(undefined);\n setPrimaryId(undefined);\n };\n }, [setPrimary, id, text, setPrimaryId]);\n\n return (\n <Text\n {...restProps}\n maxRows={1}\n id={id}\n ref={ref}\n styleAs={variant === \"default\" ? \"h2\" : \"h4\"}\n className={clsx(withBaseName(), className)}\n role=\"heading\"\n aria-labelledby={`${id} ${secondaryId != null ? secondaryId : null} ${\n tertiaryId != null ? tertiaryId : null\n }`}\n aria-level={ariaLevel}\n data-testid=\"primary\"\n >\n {text}\n </Text>\n );\n});\n"],"names":["makePrefixer","forwardRef","ContactPrimaryInfo","useContactDetailsContext","useId","useEffect","jsx","Text","clsx"],"mappings":";;;;;;;;;;;AAKA,MAAM,YAAA,GAAeA,kBAAa,wBAAwB,CAAA,CAAA;AAOnD,MAAM,kBAAqB,GAAAC,gBAAA,CAGhC,SAASC,mBAAAA,CAAmB,OAAO,GAAK,EAAA;AACxC,EAAM,MAAA;AAAA,IACJ,EAAI,EAAA,MAAA;AAAA,IACJ,IAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAc,SAAY,GAAA,CAAA;AAAA,IACvB,GAAA,SAAA;AAAA,GACD,GAAA,KAAA,CAAA;AACJ,EAAA,MAAM,EAAE,UAAY,EAAA,YAAA,EAAc,aAAa,UAAY,EAAA,OAAA,KACzDC,8CAAyB,EAAA,CAAA;AAC3B,EAAM,MAAA,EAAA,GAAKC,WAAM,MAAM,CAAA,CAAA;AAEvB,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,UAAA,CAAW,QAAQ,EAAE,CAAA,CAAA;AACrB,IAAA,YAAA,CAAa,EAAE,CAAA,CAAA;AACf,IAAA,OAAO,MAAM;AACX,MAAA,UAAA,CAAW,KAAS,CAAA,CAAA,CAAA;AACpB,MAAA,YAAA,CAAa,KAAS,CAAA,CAAA,CAAA;AAAA,KACxB,CAAA;AAAA,KACC,CAAC,UAAA,EAAY,EAAI,EAAA,IAAA,EAAM,YAAY,CAAC,CAAA,CAAA;AAEvC,EAAA,uBACGC,cAAA,CAAAC,SAAA,EAAA;AAAA,IACE,GAAG,SAAA;AAAA,IACJ,OAAS,EAAA,CAAA;AAAA,IACT,EAAA;AAAA,IACA,GAAA;AAAA,IACA,OAAA,EAAS,OAAY,KAAA,SAAA,GAAY,IAAO,GAAA,IAAA;AAAA,IACxC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,IACzC,IAAK,EAAA,SAAA;AAAA,IACL,iBAAA,EAAiB,GAAG,EAAM,CAAA,CAAA,EAAA,WAAA,IAAe,OAAO,WAAc,GAAA,IAAA,CAAA,CAAA,EAC5D,UAAc,IAAA,IAAA,GAAO,UAAa,GAAA,IAAA,CAAA,CAAA;AAAA,IAEpC,YAAY,EAAA,SAAA;AAAA,IACZ,aAAY,EAAA,SAAA;AAAA,IAEX,QAAA,EAAA,IAAA;AAAA,GACH,CAAA,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"ContactPrimaryInfo.js","sources":["../src/contact-details/ContactPrimaryInfo.tsx"],"sourcesContent":["import { makePrefixer, useId, Text } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { forwardRef, HTMLAttributes, useEffect } from \"react\";\nimport { useContactDetailsContext } from \"./internal\";\n\nconst withBaseName = makePrefixer(\"saltContactPrimaryInfo\");\n\nexport interface ContactPrimaryInfoProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\"> {\n text: string;\n}\n\nexport const ContactPrimaryInfo = forwardRef<\n HTMLDivElement,\n ContactPrimaryInfoProps\n>(function ContactPrimaryInfo(props, ref) {\n const {\n id: idProp,\n text,\n className,\n \"aria-level\": ariaLevel = 2,\n ...restProps\n } = props;\n const { setPrimary, setPrimaryId, secondaryId, tertiaryId, variant } =\n useContactDetailsContext();\n const id = useId(idProp);\n\n useEffect(() => {\n setPrimary(text || \"\");\n setPrimaryId(id);\n return () => {\n setPrimary(undefined);\n setPrimaryId(undefined);\n };\n }, [setPrimary, id, text, setPrimaryId]);\n\n return (\n <Text\n {...restProps}\n maxRows={1}\n id={id}\n ref={ref}\n styleAs={variant === \"default\" ? \"h2\" : \"h4\"}\n className={clsx(withBaseName(), className)}\n role=\"heading\"\n aria-labelledby={`${id} ${secondaryId != null ? secondaryId : null} ${\n tertiaryId != null ? tertiaryId : null\n }`}\n aria-level={ariaLevel}\n data-testid=\"primary\"\n >\n {text}\n </Text>\n );\n});\n"],"names":["makePrefixer","forwardRef","ContactPrimaryInfo","useContactDetailsContext","useId","useEffect","jsx","Text","clsx"],"mappings":";;;;;;;;;;;AAKA,MAAM,YAAA,GAAeA,kBAAa,wBAAwB,CAAA,CAAA;AAOnD,MAAM,kBAAqB,GAAAC,gBAAA,CAGhC,SAASC,mBAAAA,CAAmB,OAAO,GAAK,EAAA;AACxC,EAAM,MAAA;AAAA,IACJ,EAAI,EAAA,MAAA;AAAA,IACJ,IAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAc,SAAY,GAAA,CAAA;AAAA,IACvB,GAAA,SAAA;AAAA,GACD,GAAA,KAAA,CAAA;AACJ,EAAA,MAAM,EAAE,UAAY,EAAA,YAAA,EAAc,aAAa,UAAY,EAAA,OAAA,KACzDC,8CAAyB,EAAA,CAAA;AAC3B,EAAM,MAAA,EAAA,GAAKC,WAAM,MAAM,CAAA,CAAA;AAEvB,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,UAAA,CAAW,QAAQ,EAAE,CAAA,CAAA;AACrB,IAAA,YAAA,CAAa,EAAE,CAAA,CAAA;AACf,IAAA,OAAO,MAAM;AACX,MAAA,UAAA,CAAW,KAAS,CAAA,CAAA,CAAA;AACpB,MAAA,YAAA,CAAa,KAAS,CAAA,CAAA,CAAA;AAAA,KACxB,CAAA;AAAA,KACC,CAAC,UAAA,EAAY,EAAI,EAAA,IAAA,EAAM,YAAY,CAAC,CAAA,CAAA;AAEvC,EAAA,uBACGC,cAAA,CAAAC,SAAA,EAAA;AAAA,IACE,GAAG,SAAA;AAAA,IACJ,OAAS,EAAA,CAAA;AAAA,IACT,EAAA;AAAA,IACA,GAAA;AAAA,IACA,OAAA,EAAS,OAAY,KAAA,SAAA,GAAY,IAAO,GAAA,IAAA;AAAA,IACxC,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,IACzC,IAAK,EAAA,SAAA;AAAA,IACL,iBAAA,EAAiB,GAAG,EAAM,CAAA,CAAA,EAAA,WAAA,IAAe,OAAO,WAAc,GAAA,IAAA,CAAA,CAAA,EAC5D,UAAc,IAAA,IAAA,GAAO,UAAa,GAAA,IAAA,CAAA,CAAA;AAAA,IAEpC,YAAY,EAAA,SAAA;AAAA,IACZ,aAAY,EAAA,SAAA;AAAA,IAEX,QAAA,EAAA,IAAA;AAAA,GACH,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ContactSecondaryInfo.js","sources":["../src/contact-details/ContactSecondaryInfo.tsx"],"sourcesContent":["import { makePrefixer, useId, Text } from \"@salt-ds/core\";\nimport { IconProps } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { ComponentType, forwardRef, HTMLAttributes, useEffect } from \"react\";\nimport { useContactDetailsContext } from \"./internal\";\nimport { ValueComponentProps } from \"./types\";\n\nconst withBaseName = makePrefixer(\"saltContactSecondaryInfo\");\n\nexport interface ContactSecondaryInfoProps\n extends HTMLAttributes<HTMLDivElement> {\n icon?: ComponentType<IconProps>;\n text: string;\n ValueComponent?: ComponentType<ValueComponentProps>;\n}\n\nexport const ContactSecondaryInfo = forwardRef<\n HTMLDivElement,\n ContactSecondaryInfoProps\n>(function ContactSecondaryInfo(props, ref) {\n const {\n id: idProp,\n text,\n icon: Icon,\n className,\n ValueComponent,\n ...restProps\n } = props;\n const { setSecondary, setSecondaryId, variant } = useContactDetailsContext();\n const id = useId(idProp);\n\n useEffect(() => {\n setSecondary(text || \"\");\n setSecondaryId(id);\n return () => {\n setSecondary(undefined);\n setSecondaryId(undefined);\n };\n }, [id, text, setSecondary, setSecondaryId]);\n\n return (\n <Text\n styleAs={variant === \"default\" ? \"h4\" : undefined}\n maxRows={1}\n {...restProps}\n id={id}\n ref={ref}\n className={clsx(withBaseName(), className)}\n data-testid=\"secondary\"\n >\n {Icon ? <Icon className={withBaseName(\"icon\")} /> : null}\n {text}\n </Text>\n );\n});\n"],"names":["makePrefixer","forwardRef","ContactSecondaryInfo","useContactDetailsContext","useId","useEffect","jsxs","Text","clsx","jsx"],"mappings":";;;;;;;;;;;AAOA,MAAM,YAAA,GAAeA,kBAAa,0BAA0B,CAAA,CAAA;AASrD,MAAM,oBAAuB,GAAAC,gBAAA,CAGlC,SAASC,qBAAAA,CAAqB,OAAO,GAAK,EAAA;AAC1C,EAAM,MAAA;AAAA,IACJ,EAAI,EAAA,MAAA;AAAA,IACJ,IAAA;AAAA,IACA,IAAM,EAAA,IAAA;AAAA,IACN,SAAA;AAAA,IACA,cAAA;AAAA,IACG,GAAA,SAAA;AAAA,GACD,GAAA,KAAA,CAAA;AACJ,EAAA,MAAM,EAAE,YAAA,EAAc,cAAgB,EAAA,OAAA,KAAYC,8CAAyB,EAAA,CAAA;AAC3E,EAAM,MAAA,EAAA,GAAKC,WAAM,MAAM,CAAA,CAAA;AAEvB,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,YAAA,CAAa,QAAQ,EAAE,CAAA,CAAA;AACvB,IAAA,cAAA,CAAe,EAAE,CAAA,CAAA;AACjB,IAAA,OAAO,MAAM;AACX,MAAA,YAAA,CAAa,KAAS,CAAA,CAAA,CAAA;AACtB,MAAA,cAAA,CAAe,KAAS,CAAA,CAAA,CAAA;AAAA,KAC1B,CAAA;AAAA,KACC,CAAC,EAAA,EAAI,IAAM,EAAA,YAAA,EAAc,cAAc,CAAC,CAAA,CAAA;AAE3C,EAAA,uBACGC,eAAA,CAAAC,SAAA,EAAA;AAAA,IACC,OAAA,EAAS,OAAY,KAAA,SAAA,GAAY,IAAO,GAAA,KAAA,CAAA;AAAA,IACxC,OAAS,EAAA,CAAA;AAAA,IACR,GAAG,SAAA;AAAA,IACJ,EAAA;AAAA,IACA,GAAA;AAAA,IACA,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,IACzC,aAAY,EAAA,WAAA;AAAA,IAEX,QAAA,EAAA;AAAA,MAAA,IAAA,mBAAQC,cAAA,CAAA,IAAA,EAAA;AAAA,QAAK,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,OAAG,CAAK,GAAA,IAAA;AAAA,MACnD,IAAA;AAAA,KAAA;AAAA,GACH,CAAA,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"ContactSecondaryInfo.js","sources":["../src/contact-details/ContactSecondaryInfo.tsx"],"sourcesContent":["import { makePrefixer, useId, Text } from \"@salt-ds/core\";\nimport { IconProps } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { ComponentType, forwardRef, HTMLAttributes, useEffect } from \"react\";\nimport { useContactDetailsContext } from \"./internal\";\nimport { ValueComponentProps } from \"./types\";\n\nconst withBaseName = makePrefixer(\"saltContactSecondaryInfo\");\n\nexport interface ContactSecondaryInfoProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\"> {\n icon?: ComponentType<IconProps>;\n text: string;\n ValueComponent?: ComponentType<ValueComponentProps>;\n}\n\nexport const ContactSecondaryInfo = forwardRef<\n HTMLDivElement,\n ContactSecondaryInfoProps\n>(function ContactSecondaryInfo(props, ref) {\n const {\n id: idProp,\n text,\n icon: Icon,\n className,\n ValueComponent,\n ...restProps\n } = props;\n const { setSecondary, setSecondaryId, variant } = useContactDetailsContext();\n const id = useId(idProp);\n\n useEffect(() => {\n setSecondary(text || \"\");\n setSecondaryId(id);\n return () => {\n setSecondary(undefined);\n setSecondaryId(undefined);\n };\n }, [id, text, setSecondary, setSecondaryId]);\n\n return (\n <Text\n styleAs={variant === \"default\" ? \"h4\" : undefined}\n maxRows={1}\n {...restProps}\n id={id}\n ref={ref}\n className={clsx(withBaseName(), className)}\n data-testid=\"secondary\"\n >\n {Icon ? <Icon className={withBaseName(\"icon\")} /> : null}\n {text}\n </Text>\n );\n});\n"],"names":["makePrefixer","forwardRef","ContactSecondaryInfo","useContactDetailsContext","useId","useEffect","jsxs","Text","clsx","jsx"],"mappings":";;;;;;;;;;;AAOA,MAAM,YAAA,GAAeA,kBAAa,0BAA0B,CAAA,CAAA;AASrD,MAAM,oBAAuB,GAAAC,gBAAA,CAGlC,SAASC,qBAAAA,CAAqB,OAAO,GAAK,EAAA;AAC1C,EAAM,MAAA;AAAA,IACJ,EAAI,EAAA,MAAA;AAAA,IACJ,IAAA;AAAA,IACA,IAAM,EAAA,IAAA;AAAA,IACN,SAAA;AAAA,IACA,cAAA;AAAA,IACG,GAAA,SAAA;AAAA,GACD,GAAA,KAAA,CAAA;AACJ,EAAA,MAAM,EAAE,YAAA,EAAc,cAAgB,EAAA,OAAA,KAAYC,8CAAyB,EAAA,CAAA;AAC3E,EAAM,MAAA,EAAA,GAAKC,WAAM,MAAM,CAAA,CAAA;AAEvB,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,YAAA,CAAa,QAAQ,EAAE,CAAA,CAAA;AACvB,IAAA,cAAA,CAAe,EAAE,CAAA,CAAA;AACjB,IAAA,OAAO,MAAM;AACX,MAAA,YAAA,CAAa,KAAS,CAAA,CAAA,CAAA;AACtB,MAAA,cAAA,CAAe,KAAS,CAAA,CAAA,CAAA;AAAA,KAC1B,CAAA;AAAA,KACC,CAAC,EAAA,EAAI,IAAM,EAAA,YAAA,EAAc,cAAc,CAAC,CAAA,CAAA;AAE3C,EAAA,uBACGC,eAAA,CAAAC,SAAA,EAAA;AAAA,IACC,OAAA,EAAS,OAAY,KAAA,SAAA,GAAY,IAAO,GAAA,KAAA,CAAA;AAAA,IACxC,OAAS,EAAA,CAAA;AAAA,IACR,GAAG,SAAA;AAAA,IACJ,EAAA;AAAA,IACA,GAAA;AAAA,IACA,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,IACzC,aAAY,EAAA,WAAA;AAAA,IAEX,QAAA,EAAA;AAAA,MAAA,IAAA,mBAAQC,cAAA,CAAA,IAAA,EAAA;AAAA,QAAK,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,OAAG,CAAK,GAAA,IAAA;AAAA,MACnD,IAAA;AAAA,KAAA;AAAA,GACH,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"ContactTertiaryInfo.js","sources":["../src/contact-details/ContactTertiaryInfo.tsx"],"sourcesContent":["import { makePrefixer, useId, Text } from \"@salt-ds/core\";\nimport { IconProps } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { ComponentType, forwardRef, HTMLAttributes, useEffect } from \"react\";\nimport { useContactDetailsContext } from \"./internal\";\n\nconst withBaseName = makePrefixer(\"saltContactTertiaryInfo\");\n\nexport interface ContactTertiaryInfoProps\n extends HTMLAttributes<HTMLDivElement> {\n icon?: ComponentType<IconProps>;\n text: string;\n}\n\nexport const ContactTertiaryInfo = forwardRef<\n HTMLDivElement,\n ContactTertiaryInfoProps\n>(function ContactTertiaryInfo(props, ref) {\n const { id: idProp, text, icon: Icon, className, ...restProps } = props;\n const { variant, setTertiary, setTertiaryId } = useContactDetailsContext();\n const id = useId(idProp);\n\n useEffect(() => {\n setTertiary(text);\n setTertiaryId(id);\n return () => {\n setTertiary(undefined);\n setTertiaryId(undefined);\n };\n }, [id, text, setTertiary, setTertiaryId]);\n\n if (variant === \"mini\") {\n return null;\n }\n\n return (\n <Text\n {...restProps}\n maxRows={1}\n styleAs={variant === \"default\" ? \"h4\" : undefined}\n id={id}\n ref={ref}\n className={clsx(withBaseName(), className)}\n data-testid=\"tertiary\"\n >\n {Icon ? <Icon className={withBaseName(\"icon\")} /> : null}\n {text}\n </Text>\n );\n});\n"],"names":["makePrefixer","forwardRef","ContactTertiaryInfo","useContactDetailsContext","useId","useEffect","jsxs","Text","clsx","jsx"],"mappings":";;;;;;;;;;;AAMA,MAAM,YAAA,GAAeA,kBAAa,yBAAyB,CAAA,CAAA;AAQpD,MAAM,mBAAsB,GAAAC,gBAAA,CAGjC,SAASC,oBAAAA,CAAoB,OAAO,GAAK,EAAA;AACzC,EAAM,MAAA,EAAE,IAAI,MAAQ,EAAA,IAAA,EAAM,MAAM,IAAM,EAAA,SAAA,EAAA,GAAc,WAAc,GAAA,KAAA,CAAA;AAClE,EAAA,MAAM,EAAE,OAAA,EAAS,WAAa,EAAA,aAAA,KAAkBC,8CAAyB,EAAA,CAAA;AACzE,EAAM,MAAA,EAAA,GAAKC,WAAM,MAAM,CAAA,CAAA;AAEvB,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,WAAA,CAAY,IAAI,CAAA,CAAA;AAChB,IAAA,aAAA,CAAc,EAAE,CAAA,CAAA;AAChB,IAAA,OAAO,MAAM;AACX,MAAA,WAAA,CAAY,KAAS,CAAA,CAAA,CAAA;AACrB,MAAA,aAAA,CAAc,KAAS,CAAA,CAAA,CAAA;AAAA,KACzB,CAAA;AAAA,KACC,CAAC,EAAA,EAAI,IAAM,EAAA,WAAA,EAAa,aAAa,CAAC,CAAA,CAAA;AAEzC,EAAA,IAAI,YAAY,MAAQ,EAAA;AACtB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBACGC,eAAA,CAAAC,SAAA,EAAA;AAAA,IACE,GAAG,SAAA;AAAA,IACJ,OAAS,EAAA,CAAA;AAAA,IACT,OAAA,EAAS,OAAY,KAAA,SAAA,GAAY,IAAO,GAAA,KAAA,CAAA;AAAA,IACxC,EAAA;AAAA,IACA,GAAA;AAAA,IACA,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,IACzC,aAAY,EAAA,UAAA;AAAA,IAEX,QAAA,EAAA;AAAA,MAAA,IAAA,mBAAQC,cAAA,CAAA,IAAA,EAAA;AAAA,QAAK,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,OAAG,CAAK,GAAA,IAAA;AAAA,MACnD,IAAA;AAAA,KAAA;AAAA,GACH,CAAA,CAAA;AAEJ,CAAC;;;;"}
1
+ {"version":3,"file":"ContactTertiaryInfo.js","sources":["../src/contact-details/ContactTertiaryInfo.tsx"],"sourcesContent":["import { makePrefixer, useId, Text } from \"@salt-ds/core\";\nimport { IconProps } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { ComponentType, forwardRef, HTMLAttributes, useEffect } from \"react\";\nimport { useContactDetailsContext } from \"./internal\";\n\nconst withBaseName = makePrefixer(\"saltContactTertiaryInfo\");\n\nexport interface ContactTertiaryInfoProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"color\"> {\n icon?: ComponentType<IconProps>;\n text: string;\n}\n\nexport const ContactTertiaryInfo = forwardRef<\n HTMLDivElement,\n ContactTertiaryInfoProps\n>(function ContactTertiaryInfo(props, ref) {\n const { id: idProp, text, icon: Icon, className, ...restProps } = props;\n const { variant, setTertiary, setTertiaryId } = useContactDetailsContext();\n const id = useId(idProp);\n\n useEffect(() => {\n setTertiary(text);\n setTertiaryId(id);\n return () => {\n setTertiary(undefined);\n setTertiaryId(undefined);\n };\n }, [id, text, setTertiary, setTertiaryId]);\n\n if (variant === \"mini\") {\n return null;\n }\n\n return (\n <Text\n {...restProps}\n maxRows={1}\n styleAs={variant === \"default\" ? \"h4\" : undefined}\n id={id}\n ref={ref}\n className={clsx(withBaseName(), className)}\n data-testid=\"tertiary\"\n >\n {Icon ? <Icon className={withBaseName(\"icon\")} /> : null}\n {text}\n </Text>\n );\n});\n"],"names":["makePrefixer","forwardRef","ContactTertiaryInfo","useContactDetailsContext","useId","useEffect","jsxs","Text","clsx","jsx"],"mappings":";;;;;;;;;;;AAMA,MAAM,YAAA,GAAeA,kBAAa,yBAAyB,CAAA,CAAA;AAQpD,MAAM,mBAAsB,GAAAC,gBAAA,CAGjC,SAASC,oBAAAA,CAAoB,OAAO,GAAK,EAAA;AACzC,EAAM,MAAA,EAAE,IAAI,MAAQ,EAAA,IAAA,EAAM,MAAM,IAAM,EAAA,SAAA,EAAA,GAAc,WAAc,GAAA,KAAA,CAAA;AAClE,EAAA,MAAM,EAAE,OAAA,EAAS,WAAa,EAAA,aAAA,KAAkBC,8CAAyB,EAAA,CAAA;AACzE,EAAM,MAAA,EAAA,GAAKC,WAAM,MAAM,CAAA,CAAA;AAEvB,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,WAAA,CAAY,IAAI,CAAA,CAAA;AAChB,IAAA,aAAA,CAAc,EAAE,CAAA,CAAA;AAChB,IAAA,OAAO,MAAM;AACX,MAAA,WAAA,CAAY,KAAS,CAAA,CAAA,CAAA;AACrB,MAAA,aAAA,CAAc,KAAS,CAAA,CAAA,CAAA;AAAA,KACzB,CAAA;AAAA,KACC,CAAC,EAAA,EAAI,IAAM,EAAA,WAAA,EAAa,aAAa,CAAC,CAAA,CAAA;AAEzC,EAAA,IAAI,YAAY,MAAQ,EAAA;AACtB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBACGC,eAAA,CAAAC,SAAA,EAAA;AAAA,IACE,GAAG,SAAA;AAAA,IACJ,OAAS,EAAA,CAAA;AAAA,IACT,OAAA,EAAS,OAAY,KAAA,SAAA,GAAY,IAAO,GAAA,KAAA,CAAA;AAAA,IACxC,EAAA;AAAA,IACA,GAAA;AAAA,IACA,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,IACzC,aAAY,EAAA,UAAA;AAAA,IAEX,QAAA,EAAA;AAAA,MAAA,IAAA,mBAAQC,cAAA,CAAA,IAAA,EAAA;AAAA,QAAK,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,OAAG,CAAK,GAAA,IAAA;AAAA,MACnD,IAAA;AAAA,KAAA;AAAA,GACH,CAAA,CAAA;AAEJ,CAAC;;;;"}