@salt-ds/lab 1.0.0-alpha.35 → 1.0.0-alpha.37

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 (85) hide show
  1. package/css/salt-lab.css +27 -159
  2. package/dist-cjs/calendar/internal/CalendarNavigation.js +4 -8
  3. package/dist-cjs/calendar/internal/CalendarNavigation.js.map +1 -1
  4. package/dist-cjs/combo-box/useCombobox.js.map +1 -1
  5. package/dist-cjs/index.js +2 -8
  6. package/dist-cjs/index.js.map +1 -1
  7. package/dist-cjs/segmented-button-group/SegmentedButtonGroup.css.js +6 -0
  8. package/dist-cjs/segmented-button-group/SegmentedButtonGroup.css.js.map +1 -0
  9. package/dist-cjs/segmented-button-group/SegmentedButtonGroup.js +30 -0
  10. package/dist-cjs/segmented-button-group/SegmentedButtonGroup.js.map +1 -0
  11. package/dist-cjs/tabs-next/TabstripNext.css.js +1 -1
  12. package/dist-es/calendar/internal/CalendarNavigation.js +3 -7
  13. package/dist-es/calendar/internal/CalendarNavigation.js.map +1 -1
  14. package/dist-es/combo-box/useCombobox.js.map +1 -1
  15. package/dist-es/index.js +1 -4
  16. package/dist-es/index.js.map +1 -1
  17. package/dist-es/segmented-button-group/SegmentedButtonGroup.css.js +4 -0
  18. package/dist-es/segmented-button-group/SegmentedButtonGroup.css.js.map +1 -0
  19. package/dist-es/segmented-button-group/SegmentedButtonGroup.js +26 -0
  20. package/dist-es/segmented-button-group/SegmentedButtonGroup.js.map +1 -0
  21. package/dist-es/tabs-next/TabstripNext.css.js +1 -1
  22. package/dist-types/calendar/internal/CalendarNavigation.d.ts +2 -3
  23. package/dist-types/index.d.ts +1 -3
  24. package/dist-types/segmented-button-group/SegmentedButtonGroup.d.ts +4 -0
  25. package/dist-types/segmented-button-group/index.d.ts +1 -0
  26. package/package.json +2 -2
  27. package/dist-cjs/combo-box-next/ComboBoxNext.js +0 -338
  28. package/dist-cjs/combo-box-next/ComboBoxNext.js.map +0 -1
  29. package/dist-cjs/combo-box-next/useComboBoxNext.js +0 -68
  30. package/dist-cjs/combo-box-next/useComboBoxNext.js.map +0 -1
  31. package/dist-cjs/dropdown-next/DropdownNext.css.js +0 -6
  32. package/dist-cjs/dropdown-next/DropdownNext.css.js.map +0 -1
  33. package/dist-cjs/dropdown-next/DropdownNext.js +0 -335
  34. package/dist-cjs/dropdown-next/DropdownNext.js.map +0 -1
  35. package/dist-cjs/list-control/ListControlContext.js +0 -38
  36. package/dist-cjs/list-control/ListControlContext.js.map +0 -1
  37. package/dist-cjs/list-control/ListControlState.js +0 -192
  38. package/dist-cjs/list-control/ListControlState.js.map +0 -1
  39. package/dist-cjs/option/Option.css.js +0 -6
  40. package/dist-cjs/option/Option.css.js.map +0 -1
  41. package/dist-cjs/option/Option.js +0 -99
  42. package/dist-cjs/option/Option.js.map +0 -1
  43. package/dist-cjs/option/OptionGroup.css.js +0 -6
  44. package/dist-cjs/option/OptionGroup.css.js.map +0 -1
  45. package/dist-cjs/option/OptionGroup.js +0 -44
  46. package/dist-cjs/option/OptionGroup.js.map +0 -1
  47. package/dist-cjs/option/OptionList.css.js +0 -6
  48. package/dist-cjs/option/OptionList.css.js.map +0 -1
  49. package/dist-cjs/option/OptionList.js +0 -40
  50. package/dist-cjs/option/OptionList.js.map +0 -1
  51. package/dist-es/combo-box-next/ComboBoxNext.js +0 -334
  52. package/dist-es/combo-box-next/ComboBoxNext.js.map +0 -1
  53. package/dist-es/combo-box-next/useComboBoxNext.js +0 -64
  54. package/dist-es/combo-box-next/useComboBoxNext.js.map +0 -1
  55. package/dist-es/dropdown-next/DropdownNext.css.js +0 -4
  56. package/dist-es/dropdown-next/DropdownNext.css.js.map +0 -1
  57. package/dist-es/dropdown-next/DropdownNext.js +0 -331
  58. package/dist-es/dropdown-next/DropdownNext.js.map +0 -1
  59. package/dist-es/list-control/ListControlContext.js +0 -33
  60. package/dist-es/list-control/ListControlContext.js.map +0 -1
  61. package/dist-es/list-control/ListControlState.js +0 -187
  62. package/dist-es/list-control/ListControlState.js.map +0 -1
  63. package/dist-es/option/Option.css.js +0 -4
  64. package/dist-es/option/Option.css.js.map +0 -1
  65. package/dist-es/option/Option.js +0 -95
  66. package/dist-es/option/Option.js.map +0 -1
  67. package/dist-es/option/OptionGroup.css.js +0 -4
  68. package/dist-es/option/OptionGroup.css.js.map +0 -1
  69. package/dist-es/option/OptionGroup.js +0 -40
  70. package/dist-es/option/OptionGroup.js.map +0 -1
  71. package/dist-es/option/OptionList.css.js +0 -4
  72. package/dist-es/option/OptionList.css.js.map +0 -1
  73. package/dist-es/option/OptionList.js +0 -36
  74. package/dist-es/option/OptionList.js.map +0 -1
  75. package/dist-types/combo-box-next/ComboBoxNext.d.ts +0 -17
  76. package/dist-types/combo-box-next/index.d.ts +0 -1
  77. package/dist-types/combo-box-next/useComboBoxNext.d.ts +0 -30
  78. package/dist-types/dropdown-next/DropdownNext.d.ts +0 -99
  79. package/dist-types/dropdown-next/index.d.ts +0 -1
  80. package/dist-types/list-control/ListControlContext.d.ts +0 -21
  81. package/dist-types/list-control/ListControlState.d.ts +0 -70
  82. package/dist-types/option/Option.d.ts +0 -16
  83. package/dist-types/option/OptionGroup.d.ts +0 -12
  84. package/dist-types/option/OptionList.d.ts +0 -5
  85. package/dist-types/option/index.d.ts +0 -2
package/css/salt-lab.css CHANGED
@@ -901,91 +901,6 @@
901
901
  outline: none;
902
902
  }
903
903
 
904
- /* src/dropdown-next/DropdownNext.css */
905
- .saltDropdownNext {
906
- --dropdownNext-borderColor: var(--salt-editable-borderColor);
907
- --dropdownNext-color: var(--salt-content-primary-foreground);
908
- --dropdownNext-cursor: var(--salt-selectable-cursor-hover);
909
- }
910
- .saltDropdownNext {
911
- all: unset;
912
- box-sizing: border-box;
913
- min-width: 4em;
914
- width: 100%;
915
- background: var(--dropdownNext-background);
916
- cursor: var(--dropdownNext-cursor);
917
- min-height: var(--salt-size-base);
918
- border-bottom: var(--salt-size-border) var(--salt-editable-borderStyle) var(--dropdownNext-borderColor);
919
- display: flex;
920
- align-items: center;
921
- padding: 0 var(--salt-spacing-100);
922
- gap: var(--salt-spacing-100);
923
- color: var(--dropdownNext-color);
924
- font-family: var(--salt-text-fontFamily);
925
- font-size: var(--salt-text-fontSize);
926
- font-weight: var(--salt-text-fontWeight);
927
- }
928
- .saltDropdownNext:hover {
929
- --dropdownNext-borderColor: var(--salt-editable-borderColor-hover);
930
- }
931
- .saltDropdownNext:focus-visible {
932
- outline: var(--salt-focused-outline);
933
- --dropdownNext-borderColor: var(--salt-editable-borderColor-hover);
934
- }
935
- .saltDropdownNext-content {
936
- flex: 1;
937
- max-width: 100%;
938
- overflow: hidden;
939
- text-overflow: ellipsis;
940
- text-wrap: nowrap;
941
- }
942
- .saltDropdownNext-placeholder {
943
- color: var(--salt-content-secondary-foreground);
944
- font-weight: var(--salt-text-fontWeight-small);
945
- }
946
- .saltDropdownNext-primary {
947
- --dropdownNext-background: var(--salt-editable-primary-background);
948
- }
949
- .saltDropdownNext-secondary {
950
- --dropdownNext-background: var(--salt-editable-secondary-background);
951
- }
952
- .saltDropdownNext:disabled {
953
- --dropdownNext-background: var(--salt-editable-primary-background-disabled);
954
- --dropdownNext-borderColor: var(--salt-editable-borderColor-disabled);
955
- --dropdownNext-color: var(--salt-content-primary-foreground-disabled);
956
- --dropdownNext-cursor: var(--salt-selectable-cursor-disabled);
957
- }
958
- .saltDropdownNext[aria-readonly=true] {
959
- --dropdownNext-background: var(--salt-editable-primary-background-readonly);
960
- --dropdownNext-borderColor: var(--salt-editable-borderColor-readonly);
961
- --dropdownNext-color: var(--salt-content-primary-foreground);
962
- --dropdownNext-cursor: var(--salt-selectable-cursor-readonly);
963
- }
964
- .saltDropdownNext-error {
965
- --dropdownNext-background: var(--salt-status-error-background);
966
- --dropdownNext-borderColor: var(--salt-status-error-borderColor);
967
- }
968
- .saltDropdownNext-error .saltDropdownNext:focus-visible {
969
- outline-color: var(--salt-status-error-borderColor);
970
- --dropdownNext-borderColor: var(--salt-status-error-borderColor);
971
- }
972
- .saltDropdownNext-warning {
973
- --dropdownNext-background: var(--salt-status-warning-background);
974
- --dropdownNext-borderColor: var(--salt-status-warning-borderColor);
975
- }
976
- .saltDropdownNext-warning .saltDropdownNext:focus-visible {
977
- outline-color: var(--salt-status-warning-borderColor);
978
- --dropdownNext-borderColor: var(--salt-status-warning-borderColor);
979
- }
980
- .saltDropdownNext-success {
981
- --dropdownNext-background: var(--salt-status-success-background);
982
- --dropdownNext-borderColor: var(--salt-status-success-borderColor);
983
- }
984
- .saltDropdownNext-success .saltDropdownNext:focus-visible {
985
- outline-color: var(--salt-status-success-borderColor);
986
- --dropdownNext-borderColor: var(--salt-status-success-borderColor);
987
- }
988
-
989
904
  /* src/editable-label/EditableLabel.css */
990
905
  .saltEditableLabel {
991
906
  --saltInputLegacy-minWidth: 14px;
@@ -2118,78 +2033,6 @@
2118
2033
  align-items: flex-end;
2119
2034
  }
2120
2035
 
2121
- /* src/option/Option.css */
2122
- .saltOption {
2123
- color: var(--salt-content-primary-foreground);
2124
- background: var(--salt-selectable-background);
2125
- font-size: var(--salt-text-fontSize);
2126
- font-weight: var(--salt-text-fontWeight);
2127
- min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));
2128
- padding-left: var(--salt-spacing-100);
2129
- padding-right: var(--salt-spacing-100);
2130
- display: flex;
2131
- gap: var(--salt-spacing-100);
2132
- position: relative;
2133
- align-items: center;
2134
- margin-top: var(--salt-size-border);
2135
- margin-bottom: var(--salt-size-border);
2136
- border-top: var(--salt-size-border) var(--salt-container-borderStyle) transparent;
2137
- border-bottom: var(--salt-size-border) var(--salt-container-borderStyle) transparent;
2138
- cursor: var(--salt-selectable-cursor-hover);
2139
- box-sizing: border-box;
2140
- }
2141
- .saltOption-active {
2142
- background: var(--salt-selectable-background-hover);
2143
- }
2144
- .saltOption-focusVisible {
2145
- outline: var(--salt-focused-outline);
2146
- outline-offset: calc(var(--salt-size-border) * -2);
2147
- }
2148
- .saltOption:hover {
2149
- background: var(--salt-selectable-background-hover);
2150
- }
2151
- .saltOption[aria-selected=true] {
2152
- background: var(--salt-selectable-background-selected);
2153
- border-color: var(--salt-selectable-borderColor-selected);
2154
- }
2155
- .saltOption[aria-disabled=true] {
2156
- color: var(--salt-content-primary-foreground-disabled);
2157
- cursor: var(--salt-selectable-cursor-disabled);
2158
- }
2159
-
2160
- /* src/option/OptionGroup.css */
2161
- .saltOptionGroup-label {
2162
- background: var(--salt-container-primary-background);
2163
- color: var(--salt-text-secondary-foreground);
2164
- font-size: var(--salt-text-label-fontSize);
2165
- font-weight: var(--salt-text-label-fontWeight-strong);
2166
- height: calc(var(--salt-size-base) + var(--salt-spacing-100));
2167
- padding-left: var(--salt-spacing-100);
2168
- padding-right: var(--salt-spacing-100);
2169
- display: flex;
2170
- align-items: center;
2171
- position: sticky;
2172
- top: 0;
2173
- z-index: 2;
2174
- }
2175
-
2176
- /* src/option/OptionList.css */
2177
- .saltOptionList {
2178
- background: var(--salt-container-primary-background);
2179
- border: var(--salt-size-border) var(--salt-selectable-borderStyle-selected) var(--salt-selectable-borderColor-selected);
2180
- overflow: hidden;
2181
- overflow-y: auto;
2182
- position: relative;
2183
- z-index: var(--salt-zIndex-flyover);
2184
- box-shadow: var(--salt-overlayable-shadow-popout);
2185
- max-height: inherit;
2186
- min-height: inherit;
2187
- box-sizing: border-box;
2188
- }
2189
- .saltOptionList-collapsed {
2190
- display: none;
2191
- }
2192
-
2193
2036
  /* src/overlay/Overlay.css */
2194
2037
  .saltOverlayPanel {
2195
2038
  --overlay-borderColor: var(--saltOverlay-borderColor, var(--salt-container-primary-borderColor));
@@ -2358,6 +2201,30 @@
2358
2201
  display: none;
2359
2202
  }
2360
2203
 
2204
+ /* src/segmented-button-group/SegmentedButtonGroup.css */
2205
+ .saltSegmentedButtonGroup {
2206
+ display: flex;
2207
+ flex-direction: row;
2208
+ background: var(--button-background);
2209
+ gap: var(--salt-size-border);
2210
+ }
2211
+ .saltSegmentedButtonGroup > *:not(:last-child)::after {
2212
+ content: "";
2213
+ width: var(--salt-size-border);
2214
+ position: absolute;
2215
+ background: var(--button-background);
2216
+ right: calc(var(--salt-size-border) * -1);
2217
+ height: 100%;
2218
+ }
2219
+ .saltSegmentedButtonGroup > *:not(:first-child)::before {
2220
+ content: "";
2221
+ width: var(--salt-size-border);
2222
+ position: absolute;
2223
+ background: var(--salt-separable-primary-borderColor);
2224
+ left: calc(var(--salt-size-border) * -1);
2225
+ height: 100%;
2226
+ }
2227
+
2361
2228
  /* src/skip-link/SkipLink.css */
2362
2229
  .saltSkipLink {
2363
2230
  --skipLink-padding: var(--saltSkipLink-padding, var(--salt-size-unit));
@@ -3062,8 +2929,9 @@
3062
2929
  line-height: var(--salt-text-lineHeight);
3063
2930
  }
3064
2931
  .saltTabstripNext-container {
3065
- display: inherit;
2932
+ display: block;
3066
2933
  width: 100%;
2934
+ height: fit-content;
3067
2935
  position: relative;
3068
2936
  }
3069
2937
  .saltTabstripNext-main {
@@ -4139,4 +4007,4 @@
4139
4007
  margin: calc(var(--salt-size-unit) / 2) 0;
4140
4008
  }
4141
4009
 
4142
- /* src/f96ec07e-dc55-4df2-91fd-46b77d4db9c0.css */
4010
+ /* src/a594b208-f7f4-449a-8dd9-8366e9bc378e.css */
@@ -7,16 +7,12 @@ var React = require('react');
7
7
  var core = require('@salt-ds/core');
8
8
  var icons = require('@salt-ds/icons');
9
9
  var clsx = require('clsx');
10
- var DropdownNext = require('../../dropdown-next/DropdownNext.js');
11
10
  var CalendarContext = require('./CalendarContext.js');
12
11
  var CalendarNavigation$1 = require('./CalendarNavigation.css.js');
13
12
  var date = require('@internationalized/date');
14
13
  var utils = require('./utils.js');
15
14
  var window = require('@salt-ds/window');
16
15
  var styles = require('@salt-ds/styles');
17
- var Option = require('../../option/Option.js');
18
- require('../../option/OptionGroup.js');
19
- var ListControlContext = require('../../list-control/ListControlContext.js');
20
16
 
21
17
  const withBaseName = core.makePrefixer("saltCalendarNavigation");
22
18
  function useCalendarNavigation() {
@@ -79,7 +75,7 @@ const OptionWithTooltip = ({
79
75
  disabled,
80
76
  tooltipContent
81
77
  }) => {
82
- const { activeState, openState } = ListControlContext.useListControlContext();
78
+ const { activeState, openState } = core.useListControlContext();
83
79
  const open = (activeState == null ? void 0 : activeState.value) === value;
84
80
  return /* @__PURE__ */ jsxRuntime.jsx(core.Tooltip, {
85
81
  placement: "right",
@@ -88,7 +84,7 @@ const OptionWithTooltip = ({
88
84
  content: tooltipContent,
89
85
  enterDelay: 0,
90
86
  leaveDelay: 0,
91
- children: /* @__PURE__ */ jsxRuntime.jsx(Option.Option, {
87
+ children: /* @__PURE__ */ jsxRuntime.jsx(core.Option, {
92
88
  value,
93
89
  disabled,
94
90
  children
@@ -170,7 +166,7 @@ const CalendarNavigation = React.forwardRef(function CalendarNavigation2(props,
170
166
  /* @__PURE__ */ jsxRuntime.jsxs("div", {
171
167
  className: withBaseName("dropdowns"),
172
168
  children: [
173
- /* @__PURE__ */ jsxRuntime.jsx(DropdownNext.DropdownNext, {
169
+ /* @__PURE__ */ jsxRuntime.jsx(core.Dropdown, {
174
170
  "aria-label": "Month Dropdown",
175
171
  selected: selectedMonth ? [selectedMonth] : [],
176
172
  value: formatMonth(selectedMonth),
@@ -183,7 +179,7 @@ const CalendarNavigation = React.forwardRef(function CalendarNavigation2(props,
183
179
  children: formatMonth(month)
184
180
  }, formatMonth(month)))
185
181
  }),
186
- !hideYearDropdown && /* @__PURE__ */ jsxRuntime.jsx(DropdownNext.DropdownNext, {
182
+ !hideYearDropdown && /* @__PURE__ */ jsxRuntime.jsx(core.Dropdown, {
187
183
  "aria-label": "Year Dropdown",
188
184
  selected: selectedYear ? [selectedYear] : [],
189
185
  value: formatYear(selectedYear),
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarNavigation.js","sources":["../src/calendar/internal/CalendarNavigation.tsx"],"sourcesContent":["import {\n ComponentPropsWithRef,\n forwardRef,\n MouseEventHandler,\n SyntheticEvent,\n} from \"react\";\nimport { Button, ButtonProps, makePrefixer, Tooltip } from \"@salt-ds/core\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\nimport { DropdownNext, DropdownNextProps } from \"../../dropdown-next\";\n\nimport { useCalendarContext } from \"./CalendarContext\";\n\nimport calendarNavigationCss from \"./CalendarNavigation.css\";\nimport { DateValue, isSameMonth, isSameYear } from \"@internationalized/date\";\nimport { formatDate, monthDiff, monthsForLocale } from \"./utils\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { Option, OptionProps } from \"../../option\";\nimport { useListControlContext } from \"../../list-control/ListControlContext\";\n\ntype dateDropdownProps = DropdownNextProps<DateValue>;\n\nexport interface CalendarNavigationProps extends ComponentPropsWithRef<\"div\"> {\n MonthDropdownProps?: dateDropdownProps;\n YearDropdownProps?: dateDropdownProps;\n onMonthSelect?: dateDropdownProps[\"onChange\"];\n onYearSelect?: dateDropdownProps[\"onChange\"];\n onNavigateNext?: ButtonProps[\"onClick\"];\n onNavigatePrevious?: ButtonProps[\"onClick\"];\n hideYearDropdown?: boolean;\n}\n\ninterface OptionWithTooltipProps extends OptionProps {\n value: DateValue;\n tooltipContent: string;\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarNavigation\");\n\nfunction useCalendarNavigation() {\n const {\n state: { visibleMonth, minDate, maxDate },\n helpers: {\n setVisibleMonth,\n isDayVisible,\n isOutsideAllowedYears,\n isOutsideAllowedMonths,\n },\n } = useCalendarContext();\n\n const moveToNextMonth = (event: SyntheticEvent) => {\n setVisibleMonth(event, visibleMonth.add({ months: 1 }));\n };\n\n const moveToPreviousMonth = (event: SyntheticEvent) => {\n setVisibleMonth(event, visibleMonth.subtract({ months: 1 }));\n };\n\n const moveToMonth = (event: SyntheticEvent, month: DateValue) => {\n let newMonth = month;\n\n if (!isOutsideAllowedYears(newMonth)) {\n if (isOutsideAllowedMonths(newMonth)) {\n // If month is navigable we should move to the closest navigable month\n const navigableMonths = monthsForLocale(visibleMonth).filter(\n (n) => !isOutsideAllowedMonths(n)\n );\n newMonth = navigableMonths.reduce((closestMonth, currentMonth) =>\n Math.abs(monthDiff(currentMonth, newMonth)) <\n Math.abs(monthDiff(closestMonth, newMonth))\n ? currentMonth\n : closestMonth\n );\n }\n setVisibleMonth(event, newMonth);\n }\n };\n\n const months: DateValue[] = monthsForLocale(visibleMonth);\n\n const years: DateValue[] = [-2, -1, 0, 1, 2]\n .map((delta) => visibleMonth.add({ years: delta }))\n .filter((year) => !isOutsideAllowedYears(year));\n\n const selectedMonth: DateValue | undefined = months.find((month: DateValue) =>\n isSameMonth(month, visibleMonth)\n );\n const selectedYear: DateValue | undefined = years.find((year: DateValue) =>\n isSameYear(year, visibleMonth)\n );\n\n const canNavigatePrevious = !(minDate && isDayVisible(minDate));\n const canNavigateNext = !(maxDate && isDayVisible(maxDate));\n\n return {\n moveToNextMonth,\n moveToPreviousMonth,\n moveToMonth,\n visibleMonth,\n months,\n years,\n canNavigateNext,\n canNavigatePrevious,\n selectedMonth,\n selectedYear,\n isOutsideAllowedMonths,\n };\n}\n\nconst OptionWithTooltip = ({\n value,\n children,\n disabled,\n tooltipContent,\n}: OptionWithTooltipProps) => {\n const { activeState, openState } = useListControlContext();\n const open = activeState?.value === value;\n\n return (\n <Tooltip\n placement=\"right\"\n open={open && openState}\n disabled={!disabled}\n content={tooltipContent}\n enterDelay={0} // --salt-duration-instant\n leaveDelay={0} // --salt-duration-instant\n >\n <Option value={value} disabled={disabled}>\n {children}\n </Option>\n </Tooltip>\n );\n};\n\nexport const CalendarNavigation = forwardRef<\n HTMLDivElement,\n CalendarNavigationProps\n>(function CalendarNavigation(props, ref) {\n const {\n className,\n MonthDropdownProps,\n YearDropdownProps,\n hideYearDropdown,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-calendar-navigation\",\n css: calendarNavigationCss,\n window: targetWindow,\n });\n\n const {\n moveToPreviousMonth,\n moveToNextMonth,\n moveToMonth,\n months,\n years,\n canNavigateNext,\n canNavigatePrevious,\n visibleMonth,\n selectedMonth,\n selectedYear,\n isOutsideAllowedMonths,\n } = useCalendarNavigation();\n\n const handleNavigatePrevious: MouseEventHandler<HTMLButtonElement> = (\n event\n ) => {\n moveToPreviousMonth(event);\n };\n\n const handleNavigateNext: MouseEventHandler<HTMLButtonElement> = (event) => {\n moveToNextMonth(event);\n };\n\n const handleMonthSelect = (event: SyntheticEvent, month: DateValue[]) => {\n moveToMonth(event, month[0]);\n };\n\n const handleYearSelect = (event: SyntheticEvent, year: DateValue[]) => {\n moveToMonth(event, year[0]);\n };\n\n const formatMonth = (date?: DateValue) => {\n return !date\n ? \"\"\n : formatDate(date, { month: hideYearDropdown ? \"long\" : \"short\" });\n };\n\n const formatYear = (date?: DateValue) => {\n return !date ? \"\" : formatDate(date, { year: \"numeric\" });\n };\n\n return (\n <div\n className={clsx(\n withBaseName(),\n { [withBaseName(\"hideYearDropdown\")]: hideYearDropdown },\n className\n )}\n ref={ref}\n {...rest}\n >\n <Tooltip\n placement=\"top\"\n disabled={canNavigatePrevious}\n content=\"Past dates are out of range\"\n enterDelay={0} // --salt-duration-instant\n leaveDelay={0} // --salt-duration-instant\n >\n <Button\n disabled={!canNavigatePrevious}\n variant=\"secondary\"\n onClick={handleNavigatePrevious}\n focusableWhenDisabled={true}\n >\n <ChevronLeftIcon\n aria-label={`Previous Month, ${formatDate(\n visibleMonth.subtract({ months: 1 })\n )}`}\n />\n </Button>\n </Tooltip>\n <div className={withBaseName(\"dropdowns\")}>\n <DropdownNext\n aria-label=\"Month Dropdown\"\n selected={selectedMonth ? [selectedMonth] : []}\n value={formatMonth(selectedMonth)}\n onSelectionChange={handleMonthSelect}\n {...MonthDropdownProps}\n >\n {months.map((month) => (\n <OptionWithTooltip\n key={formatMonth(month)}\n value={month}\n disabled={isOutsideAllowedMonths(month)}\n tooltipContent=\"This month is out of range\"\n >\n {formatMonth(month)}\n </OptionWithTooltip>\n ))}\n </DropdownNext>\n {!hideYearDropdown && (\n <DropdownNext\n aria-label=\"Year Dropdown\"\n selected={selectedYear ? [selectedYear] : []}\n value={formatYear(selectedYear)}\n onSelectionChange={handleYearSelect}\n {...YearDropdownProps}\n >\n {years.map((year) => (\n <OptionWithTooltip\n key={formatYear(year)}\n value={year}\n tooltipContent=\"This year is out of range\"\n >\n {formatYear(year)}\n </OptionWithTooltip>\n ))}\n </DropdownNext>\n )}\n </div>\n <Tooltip\n placement=\"top\"\n disabled={canNavigateNext}\n content=\"Future dates are out of range\"\n enterDelay={0} // --salt-duration-instant\n leaveDelay={0} // --salt-duration-instant\n >\n <Button\n disabled={!canNavigateNext}\n variant=\"secondary\"\n onClick={handleNavigateNext}\n focusableWhenDisabled={true}\n >\n <ChevronRightIcon\n aria-label={`Next Month, ${formatDate(\n visibleMonth.add({ months: 1 })\n )}`}\n />\n </Button>\n </Tooltip>\n </div>\n );\n});\n"],"names":["makePrefixer","useCalendarContext","monthsForLocale","monthDiff","isSameMonth","isSameYear","useListControlContext","jsx","Tooltip","Option","forwardRef","CalendarNavigation","useWindow","useComponentCssInjection","calendarNavigationCss","formatDate","jsxs","clsx","Button","ChevronLeftIcon","DropdownNext","ChevronRightIcon"],"mappings":"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"}
1
+ {"version":3,"file":"CalendarNavigation.js","sources":["../src/calendar/internal/CalendarNavigation.tsx"],"sourcesContent":["import {\n ComponentPropsWithRef,\n forwardRef,\n MouseEventHandler,\n SyntheticEvent,\n} from \"react\";\nimport {\n Button,\n ButtonProps,\n makePrefixer,\n Tooltip,\n Dropdown,\n DropdownProps,\n Option,\n OptionProps,\n useListControlContext,\n} from \"@salt-ds/core\";\nimport { ChevronLeftIcon, ChevronRightIcon } from \"@salt-ds/icons\";\nimport { clsx } from \"clsx\";\n\nimport { useCalendarContext } from \"./CalendarContext\";\n\nimport calendarNavigationCss from \"./CalendarNavigation.css\";\nimport { DateValue, isSameMonth, isSameYear } from \"@internationalized/date\";\nimport { formatDate, monthDiff, monthsForLocale } from \"./utils\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\ntype dateDropdownProps = DropdownProps<DateValue>;\n\nexport interface CalendarNavigationProps extends ComponentPropsWithRef<\"div\"> {\n MonthDropdownProps?: dateDropdownProps;\n YearDropdownProps?: dateDropdownProps;\n onMonthSelect?: dateDropdownProps[\"onChange\"];\n onYearSelect?: dateDropdownProps[\"onChange\"];\n onNavigateNext?: ButtonProps[\"onClick\"];\n onNavigatePrevious?: ButtonProps[\"onClick\"];\n hideYearDropdown?: boolean;\n}\n\ninterface OptionWithTooltipProps extends OptionProps {\n value: DateValue;\n tooltipContent: string;\n}\n\nconst withBaseName = makePrefixer(\"saltCalendarNavigation\");\n\nfunction useCalendarNavigation() {\n const {\n state: { visibleMonth, minDate, maxDate },\n helpers: {\n setVisibleMonth,\n isDayVisible,\n isOutsideAllowedYears,\n isOutsideAllowedMonths,\n },\n } = useCalendarContext();\n\n const moveToNextMonth = (event: SyntheticEvent) => {\n setVisibleMonth(event, visibleMonth.add({ months: 1 }));\n };\n\n const moveToPreviousMonth = (event: SyntheticEvent) => {\n setVisibleMonth(event, visibleMonth.subtract({ months: 1 }));\n };\n\n const moveToMonth = (event: SyntheticEvent, month: DateValue) => {\n let newMonth = month;\n\n if (!isOutsideAllowedYears(newMonth)) {\n if (isOutsideAllowedMonths(newMonth)) {\n // If month is navigable we should move to the closest navigable month\n const navigableMonths = monthsForLocale(visibleMonth).filter(\n (n) => !isOutsideAllowedMonths(n)\n );\n newMonth = navigableMonths.reduce((closestMonth, currentMonth) =>\n Math.abs(monthDiff(currentMonth, newMonth)) <\n Math.abs(monthDiff(closestMonth, newMonth))\n ? currentMonth\n : closestMonth\n );\n }\n setVisibleMonth(event, newMonth);\n }\n };\n\n const months: DateValue[] = monthsForLocale(visibleMonth);\n\n const years: DateValue[] = [-2, -1, 0, 1, 2]\n .map((delta) => visibleMonth.add({ years: delta }))\n .filter((year) => !isOutsideAllowedYears(year));\n\n const selectedMonth: DateValue | undefined = months.find((month: DateValue) =>\n isSameMonth(month, visibleMonth)\n );\n const selectedYear: DateValue | undefined = years.find((year: DateValue) =>\n isSameYear(year, visibleMonth)\n );\n\n const canNavigatePrevious = !(minDate && isDayVisible(minDate));\n const canNavigateNext = !(maxDate && isDayVisible(maxDate));\n\n return {\n moveToNextMonth,\n moveToPreviousMonth,\n moveToMonth,\n visibleMonth,\n months,\n years,\n canNavigateNext,\n canNavigatePrevious,\n selectedMonth,\n selectedYear,\n isOutsideAllowedMonths,\n };\n}\n\nconst OptionWithTooltip = ({\n value,\n children,\n disabled,\n tooltipContent,\n}: OptionWithTooltipProps) => {\n const { activeState, openState } = useListControlContext();\n const open = activeState?.value === value;\n\n return (\n <Tooltip\n placement=\"right\"\n open={open && openState}\n disabled={!disabled}\n content={tooltipContent}\n enterDelay={0} // --salt-duration-instant\n leaveDelay={0} // --salt-duration-instant\n >\n <Option value={value} disabled={disabled}>\n {children}\n </Option>\n </Tooltip>\n );\n};\n\nexport const CalendarNavigation = forwardRef<\n HTMLDivElement,\n CalendarNavigationProps\n>(function CalendarNavigation(props, ref) {\n const {\n className,\n MonthDropdownProps,\n YearDropdownProps,\n hideYearDropdown,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-calendar-navigation\",\n css: calendarNavigationCss,\n window: targetWindow,\n });\n\n const {\n moveToPreviousMonth,\n moveToNextMonth,\n moveToMonth,\n months,\n years,\n canNavigateNext,\n canNavigatePrevious,\n visibleMonth,\n selectedMonth,\n selectedYear,\n isOutsideAllowedMonths,\n } = useCalendarNavigation();\n\n const handleNavigatePrevious: MouseEventHandler<HTMLButtonElement> = (\n event\n ) => {\n moveToPreviousMonth(event);\n };\n\n const handleNavigateNext: MouseEventHandler<HTMLButtonElement> = (event) => {\n moveToNextMonth(event);\n };\n\n const handleMonthSelect = (event: SyntheticEvent, month: DateValue[]) => {\n moveToMonth(event, month[0]);\n };\n\n const handleYearSelect = (event: SyntheticEvent, year: DateValue[]) => {\n moveToMonth(event, year[0]);\n };\n\n const formatMonth = (date?: DateValue) => {\n return !date\n ? \"\"\n : formatDate(date, { month: hideYearDropdown ? \"long\" : \"short\" });\n };\n\n const formatYear = (date?: DateValue) => {\n return !date ? \"\" : formatDate(date, { year: \"numeric\" });\n };\n\n return (\n <div\n className={clsx(\n withBaseName(),\n { [withBaseName(\"hideYearDropdown\")]: hideYearDropdown },\n className\n )}\n ref={ref}\n {...rest}\n >\n <Tooltip\n placement=\"top\"\n disabled={canNavigatePrevious}\n content=\"Past dates are out of range\"\n enterDelay={0} // --salt-duration-instant\n leaveDelay={0} // --salt-duration-instant\n >\n <Button\n disabled={!canNavigatePrevious}\n variant=\"secondary\"\n onClick={handleNavigatePrevious}\n focusableWhenDisabled={true}\n >\n <ChevronLeftIcon\n aria-label={`Previous Month, ${formatDate(\n visibleMonth.subtract({ months: 1 })\n )}`}\n />\n </Button>\n </Tooltip>\n <div className={withBaseName(\"dropdowns\")}>\n <Dropdown\n aria-label=\"Month Dropdown\"\n selected={selectedMonth ? [selectedMonth] : []}\n value={formatMonth(selectedMonth)}\n onSelectionChange={handleMonthSelect}\n {...MonthDropdownProps}\n >\n {months.map((month) => (\n <OptionWithTooltip\n key={formatMonth(month)}\n value={month}\n disabled={isOutsideAllowedMonths(month)}\n tooltipContent=\"This month is out of range\"\n >\n {formatMonth(month)}\n </OptionWithTooltip>\n ))}\n </Dropdown>\n {!hideYearDropdown && (\n <Dropdown\n aria-label=\"Year Dropdown\"\n selected={selectedYear ? [selectedYear] : []}\n value={formatYear(selectedYear)}\n onSelectionChange={handleYearSelect}\n {...YearDropdownProps}\n >\n {years.map((year) => (\n <OptionWithTooltip\n key={formatYear(year)}\n value={year}\n tooltipContent=\"This year is out of range\"\n >\n {formatYear(year)}\n </OptionWithTooltip>\n ))}\n </Dropdown>\n )}\n </div>\n <Tooltip\n placement=\"top\"\n disabled={canNavigateNext}\n content=\"Future dates are out of range\"\n enterDelay={0} // --salt-duration-instant\n leaveDelay={0} // --salt-duration-instant\n >\n <Button\n disabled={!canNavigateNext}\n variant=\"secondary\"\n onClick={handleNavigateNext}\n focusableWhenDisabled={true}\n >\n <ChevronRightIcon\n aria-label={`Next Month, ${formatDate(\n visibleMonth.add({ months: 1 })\n )}`}\n />\n </Button>\n </Tooltip>\n </div>\n );\n});\n"],"names":["makePrefixer","useCalendarContext","monthsForLocale","monthDiff","isSameMonth","isSameYear","useListControlContext","jsx","Tooltip","Option","forwardRef","CalendarNavigation","useWindow","useComponentCssInjection","calendarNavigationCss","formatDate","jsxs","clsx","Button","ChevronLeftIcon","Dropdown","ChevronRightIcon"],"mappings":";;;;;;;;;;;;;;;;AA6CA,MAAM,YAAA,GAAeA,kBAAa,wBAAwB,CAAA,CAAA;AAE1D,SAAS,qBAAwB,GAAA;AAC/B,EAAM,MAAA;AAAA,IACJ,KAAO,EAAA,EAAE,YAAc,EAAA,OAAA,EAAS,OAAQ,EAAA;AAAA,IACxC,OAAS,EAAA;AAAA,MACP,eAAA;AAAA,MACA,YAAA;AAAA,MACA,qBAAA;AAAA,MACA,sBAAA;AAAA,KACF;AAAA,MACEC,kCAAmB,EAAA,CAAA;AAEvB,EAAM,MAAA,eAAA,GAAkB,CAAC,KAA0B,KAAA;AACjD,IAAA,eAAA,CAAgB,OAAO,YAAa,CAAA,GAAA,CAAI,EAAE,MAAQ,EAAA,CAAA,EAAG,CAAC,CAAA,CAAA;AAAA,GACxD,CAAA;AAEA,EAAM,MAAA,mBAAA,GAAsB,CAAC,KAA0B,KAAA;AACrD,IAAA,eAAA,CAAgB,OAAO,YAAa,CAAA,QAAA,CAAS,EAAE,MAAQ,EAAA,CAAA,EAAG,CAAC,CAAA,CAAA;AAAA,GAC7D,CAAA;AAEA,EAAM,MAAA,WAAA,GAAc,CAAC,KAAA,EAAuB,KAAqB,KAAA;AAC/D,IAAA,IAAI,QAAW,GAAA,KAAA,CAAA;AAEf,IAAI,IAAA,CAAC,qBAAsB,CAAA,QAAQ,CAAG,EAAA;AACpC,MAAI,IAAA,sBAAA,CAAuB,QAAQ,CAAG,EAAA;AAEpC,QAAM,MAAA,eAAA,GAAkBC,qBAAgB,CAAA,YAAY,CAAE,CAAA,MAAA;AAAA,UACpD,CAAC,CAAA,KAAM,CAAC,sBAAA,CAAuB,CAAC,CAAA;AAAA,SAClC,CAAA;AACA,QAAA,QAAA,GAAW,eAAgB,CAAA,MAAA;AAAA,UAAO,CAAC,YAAc,EAAA,YAAA,KAC/C,IAAK,CAAA,GAAA,CAAIC,gBAAU,YAAc,EAAA,QAAQ,CAAC,CAAA,GAC1C,KAAK,GAAI,CAAAA,eAAA,CAAU,cAAc,QAAQ,CAAC,IACtC,YACA,GAAA,YAAA;AAAA,SACN,CAAA;AAAA,OACF;AACA,MAAA,eAAA,CAAgB,OAAO,QAAQ,CAAA,CAAA;AAAA,KACjC;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,MAAA,GAAsBD,sBAAgB,YAAY,CAAA,CAAA;AAExD,EAAM,MAAA,KAAA,GAAqB,CAAC,CAAA,CAAA,EAAI,CAAI,CAAA,EAAA,CAAA,EAAG,GAAG,CAAC,CAAA,CACxC,GAAI,CAAA,CAAC,KAAU,KAAA,YAAA,CAAa,IAAI,EAAE,KAAA,EAAO,KAAM,EAAC,CAAC,CAAA,CACjD,MAAO,CAAA,CAAC,IAAS,KAAA,CAAC,qBAAsB,CAAA,IAAI,CAAC,CAAA,CAAA;AAEhD,EAAA,MAAM,gBAAuC,MAAO,CAAA,IAAA;AAAA,IAAK,CAAC,KAAA,KACxDE,gBAAY,CAAA,KAAA,EAAO,YAAY,CAAA;AAAA,GACjC,CAAA;AACA,EAAA,MAAM,eAAsC,KAAM,CAAA,IAAA;AAAA,IAAK,CAAC,IAAA,KACtDC,eAAW,CAAA,IAAA,EAAM,YAAY,CAAA;AAAA,GAC/B,CAAA;AAEA,EAAA,MAAM,mBAAsB,GAAA,EAAE,OAAW,IAAA,YAAA,CAAa,OAAO,CAAA,CAAA,CAAA;AAC7D,EAAA,MAAM,eAAkB,GAAA,EAAE,OAAW,IAAA,YAAA,CAAa,OAAO,CAAA,CAAA,CAAA;AAEzD,EAAO,OAAA;AAAA,IACL,eAAA;AAAA,IACA,mBAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,eAAA;AAAA,IACA,mBAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA,sBAAA;AAAA,GACF,CAAA;AACF,CAAA;AAEA,MAAM,oBAAoB,CAAC;AAAA,EACzB,KAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AACF,CAA8B,KAAA;AAC5B,EAAA,MAAM,EAAE,WAAA,EAAa,SAAU,EAAA,GAAIC,0BAAsB,EAAA,CAAA;AACzD,EAAM,MAAA,IAAA,GAAA,CAAO,2CAAa,KAAU,MAAA,KAAA,CAAA;AAEpC,EAAA,uBACGC,cAAA,CAAAC,YAAA,EAAA;AAAA,IACC,SAAU,EAAA,OAAA;AAAA,IACV,MAAM,IAAQ,IAAA,SAAA;AAAA,IACd,UAAU,CAAC,QAAA;AAAA,IACX,OAAS,EAAA,cAAA;AAAA,IACT,UAAY,EAAA,CAAA;AAAA,IACZ,UAAY,EAAA,CAAA;AAAA,IAEZ,QAAC,kBAAAD,cAAA,CAAAE,WAAA,EAAA;AAAA,MAAO,KAAA;AAAA,MAAc,QAAA;AAAA,MACnB,QAAA;AAAA,KACH,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEO,MAAM,kBAAqB,GAAAC,gBAAA,CAGhC,SAASC,mBAAAA,CAAmB,OAAO,GAAK,EAAA;AACxC,EAAM,MAAA;AAAA,IACJ,SAAA;AAAA,IACA,kBAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACG,GAAA,IAAA;AAAA,GACD,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,0BAAA;AAAA,IACR,GAAK,EAAAC,oBAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAM,MAAA;AAAA,IACJ,mBAAA;AAAA,IACA,eAAA;AAAA,IACA,WAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,eAAA;AAAA,IACA,mBAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA;AAAA,IACA,sBAAA;AAAA,MACE,qBAAsB,EAAA,CAAA;AAE1B,EAAM,MAAA,sBAAA,GAA+D,CACnE,KACG,KAAA;AACH,IAAA,mBAAA,CAAoB,KAAK,CAAA,CAAA;AAAA,GAC3B,CAAA;AAEA,EAAM,MAAA,kBAAA,GAA2D,CAAC,KAAU,KAAA;AAC1E,IAAA,eAAA,CAAgB,KAAK,CAAA,CAAA;AAAA,GACvB,CAAA;AAEA,EAAM,MAAA,iBAAA,GAAoB,CAAC,KAAA,EAAuB,KAAuB,KAAA;AACvE,IAAY,WAAA,CAAA,KAAA,EAAO,MAAM,CAAE,CAAA,CAAA,CAAA;AAAA,GAC7B,CAAA;AAEA,EAAM,MAAA,gBAAA,GAAmB,CAAC,KAAA,EAAuB,IAAsB,KAAA;AACrE,IAAY,WAAA,CAAA,KAAA,EAAO,KAAK,CAAE,CAAA,CAAA,CAAA;AAAA,GAC5B,CAAA;AAEA,EAAM,MAAA,WAAA,GAAc,CAAC,IAAqB,KAAA;AACxC,IAAO,OAAA,CAAC,IACJ,GAAA,EAAA,GACAC,gBAAW,CAAA,IAAA,EAAM,EAAE,KAAO,EAAA,gBAAA,GAAmB,MAAS,GAAA,OAAA,EAAS,CAAA,CAAA;AAAA,GACrE,CAAA;AAEA,EAAM,MAAA,UAAA,GAAa,CAAC,IAAqB,KAAA;AACvC,IAAO,OAAA,CAAC,OAAO,EAAK,GAAAA,gBAAA,CAAW,MAAM,EAAE,IAAA,EAAM,WAAW,CAAA,CAAA;AAAA,GAC1D,CAAA;AAEA,EAAA,uBACGC,eAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAW,EAAAC,SAAA;AAAA,MACT,YAAa,EAAA;AAAA,MACb,EAAE,CAAC,YAAa,CAAA,kBAAkB,IAAI,gBAAiB,EAAA;AAAA,MACvD,SAAA;AAAA,KACF;AAAA,IACA,GAAA;AAAA,IACC,GAAG,IAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,sBAACV,cAAA,CAAAC,YAAA,EAAA;AAAA,QACC,SAAU,EAAA,KAAA;AAAA,QACV,QAAU,EAAA,mBAAA;AAAA,QACV,OAAQ,EAAA,6BAAA;AAAA,QACR,UAAY,EAAA,CAAA;AAAA,QACZ,UAAY,EAAA,CAAA;AAAA,QAEZ,QAAC,kBAAAD,cAAA,CAAAW,WAAA,EAAA;AAAA,UACC,UAAU,CAAC,mBAAA;AAAA,UACX,OAAQ,EAAA,WAAA;AAAA,UACR,OAAS,EAAA,sBAAA;AAAA,UACT,qBAAuB,EAAA,IAAA;AAAA,UAEvB,QAAC,kBAAAX,cAAA,CAAAY,qBAAA,EAAA;AAAA,YACC,cAAY,CAAmB,gBAAA,EAAAJ,gBAAA;AAAA,cAC7B,YAAa,CAAA,QAAA,CAAS,EAAE,MAAA,EAAQ,GAAG,CAAA;AAAA,aACrC,CAAA,CAAA;AAAA,WACF,CAAA;AAAA,SACF,CAAA;AAAA,OACF,CAAA;AAAA,sBACCC,eAAA,CAAA,KAAA,EAAA;AAAA,QAAI,SAAA,EAAW,aAAa,WAAW,CAAA;AAAA,QACtC,QAAA,EAAA;AAAA,0BAACT,cAAA,CAAAa,aAAA,EAAA;AAAA,YACC,YAAW,EAAA,gBAAA;AAAA,YACX,QAAU,EAAA,aAAA,GAAgB,CAAC,aAAa,IAAI,EAAC;AAAA,YAC7C,KAAA,EAAO,YAAY,aAAa,CAAA;AAAA,YAChC,iBAAmB,EAAA,iBAAA;AAAA,YAClB,GAAG,kBAAA;AAAA,YAEH,QAAO,EAAA,MAAA,CAAA,GAAA,CAAI,CAAC,KAAA,qBACVb,cAAA,CAAA,iBAAA,EAAA;AAAA,cAEC,KAAO,EAAA,KAAA;AAAA,cACP,QAAA,EAAU,uBAAuB,KAAK,CAAA;AAAA,cACtC,cAAe,EAAA,4BAAA;AAAA,cAEd,sBAAY,KAAK,CAAA;AAAA,aALb,EAAA,WAAA,CAAY,KAAK,CAMxB,CACD,CAAA;AAAA,WACH,CAAA;AAAA,UACC,CAAC,oCACCA,cAAA,CAAAa,aAAA,EAAA;AAAA,YACC,YAAW,EAAA,eAAA;AAAA,YACX,QAAU,EAAA,YAAA,GAAe,CAAC,YAAY,IAAI,EAAC;AAAA,YAC3C,KAAA,EAAO,WAAW,YAAY,CAAA;AAAA,YAC9B,iBAAmB,EAAA,gBAAA;AAAA,YAClB,GAAG,iBAAA;AAAA,YAEH,QAAM,EAAA,KAAA,CAAA,GAAA,CAAI,CAAC,IAAA,qBACTb,cAAA,CAAA,iBAAA,EAAA;AAAA,cAEC,KAAO,EAAA,IAAA;AAAA,cACP,cAAe,EAAA,2BAAA;AAAA,cAEd,qBAAW,IAAI,CAAA;AAAA,aAJX,EAAA,UAAA,CAAW,IAAI,CAKtB,CACD,CAAA;AAAA,WACH,CAAA;AAAA,SAAA;AAAA,OAEJ,CAAA;AAAA,sBACCA,cAAA,CAAAC,YAAA,EAAA;AAAA,QACC,SAAU,EAAA,KAAA;AAAA,QACV,QAAU,EAAA,eAAA;AAAA,QACV,OAAQ,EAAA,+BAAA;AAAA,QACR,UAAY,EAAA,CAAA;AAAA,QACZ,UAAY,EAAA,CAAA;AAAA,QAEZ,QAAC,kBAAAD,cAAA,CAAAW,WAAA,EAAA;AAAA,UACC,UAAU,CAAC,eAAA;AAAA,UACX,OAAQ,EAAA,WAAA;AAAA,UACR,OAAS,EAAA,kBAAA;AAAA,UACT,qBAAuB,EAAA,IAAA;AAAA,UAEvB,QAAC,kBAAAX,cAAA,CAAAc,sBAAA,EAAA;AAAA,YACC,cAAY,CAAe,YAAA,EAAAN,gBAAA;AAAA,cACzB,YAAa,CAAA,GAAA,CAAI,EAAE,MAAA,EAAQ,GAAG,CAAA;AAAA,aAChC,CAAA,CAAA;AAAA,WACF,CAAA;AAAA,SACF,CAAA;AAAA,OACF,CAAA;AAAA,KAAA;AAAA,GACF,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCombobox.js","sources":["../src/combo-box/useCombobox.ts"],"sourcesContent":["import { useControlled } from \"@salt-ds/core\";\nimport {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { ListHookProps, ListHookResult, useList } from \"../list\";\nimport { DropdownHookResult, DropdownHookProps } from \"../dropdown\";\nimport {\n CollectionItem,\n itemToString as defaultItemToString,\n SelectionChangeHandler,\n SelectionStrategy,\n SingleSelectionStrategy,\n} from \"../common-hooks\";\nimport { InputLegacyProps as InputProps } from \"../input-legacy\";\n\nconst NULL_REF = { current: null };\nconst EnterOnly = [\"Enter\"];\n\nexport interface ComboboxHookProps<Item, Strategy extends SelectionStrategy>\n extends Partial<Omit<DropdownHookProps, \"id\" | \"onKeyDown\">>,\n Pick<InputProps, \"onBlur\" | \"onChange\" | \"onFocus\" | \"onSelect\">,\n Omit<\n ListHookProps<Item, Strategy>,\n \"containerRef\" | \"defaultSelected\" | \"selected\" | \"onSelect\"\n > {\n InputProps?: InputProps;\n allowFreeText?: boolean;\n ariaLabel?: string;\n defaultValue?: string;\n id: string;\n itemToString?: (item: Item) => string;\n stringToItem?: (value?: string) => Item | null | undefined;\n value?: string;\n}\n\nexport interface ComboboxHookResult<Item, Selection extends SelectionStrategy>\n extends Pick<\n ListHookResult<Item, Selection>,\n | \"focusVisible\"\n | \"highlightedIndex\"\n | \"listControlProps\"\n | \"listHandlers\"\n | \"selected\"\n >,\n Partial<DropdownHookResult> {\n inputProps: InputProps;\n onOpenChange: (isOpen: boolean) => void;\n}\n\nexport const useCombobox = <\n Item,\n Selection extends SelectionStrategy = \"default\"\n>({\n allowFreeText,\n ariaLabel,\n collectionHook,\n defaultIsOpen,\n defaultValue,\n disabled,\n onBlur,\n onFocus,\n onChange,\n onSelect,\n id,\n isOpen: isOpenProp,\n itemToString = defaultItemToString as (item: Item) => string,\n onOpenChange,\n onSelectionChange,\n selectionStrategy,\n stringToItem,\n value: valueProp,\n InputProps: inputProps = {\n onBlur,\n onFocus,\n onChange,\n onSelect,\n },\n}: ComboboxHookProps<Item, Selection>): ComboboxHookResult<Item, Selection> => {\n type selectedCollectionType = Selection extends SingleSelectionStrategy\n ? CollectionItem<Item> | null\n : CollectionItem<Item>[];\n const isMultiSelect =\n selectionStrategy === \"multiple\" || selectionStrategy === \"extended\";\n\n const selectedValue = collectionHook.stringToCollectionItem<Selection>(\n valueProp ?? defaultValue ?? null\n );\n\n const {\n data: indexPositions,\n itemToCollectionItem,\n setFilterPattern,\n stringToCollectionItem,\n } = collectionHook;\n const setHighlightedIndexRef = useRef<null | ((i: number) => void)>(null);\n const setSelectedRef = useRef<\n null | ListHookResult<Item, Selection>[\"setSelected\"]\n >(null);\n // Input select events are used to identify user navigation within the input text.\n // The initial select event fired on focus is an exception that we ignore.\n const ignoreSelectOnFocus = useRef(true);\n const selectedRef = useRef<selectedCollectionType>(selectedValue);\n\n const [isOpen, setIsOpen] = useControlled<boolean>({\n controlled: isOpenProp,\n default: defaultIsOpen ?? false,\n name: \"useDropdownList\",\n });\n\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue ?? \"\",\n name: \"ComboBox\",\n state: \"value\",\n });\n\n // TODO repeated in ComboboxNext, move to utils\n const collectionItemsToItem = useCallback(\n (\n sel: CollectionItem<Item> | null | CollectionItem<Item>[]\n ): Selection extends SingleSelectionStrategy ? Item | null : Item[] => {\n type returnType = Selection extends SingleSelectionStrategy\n ? Item | null\n : Item[];\n if (Array.isArray(sel)) {\n return sel.map((i) => i.value) as returnType;\n } else if (sel) {\n return sel.value as returnType;\n } else {\n return sel as returnType;\n }\n },\n []\n );\n\n const [disableAriaActiveDescendant, setDisableAriaActiveDescendant] =\n useState(true);\n const [quickSelection, setQuickSelection] = useState(false);\n\n const highlightSelectedItem = useCallback(\n (selected: selectedCollectionType = selectedRef.current) => {\n if (Array.isArray(selected)) {\n console.log(\"TODO multi selection\");\n } else if (selected == null) {\n setHighlightedIndexRef.current?.(-1);\n } else {\n const indexOfSelectedItem = indexPositions.indexOf(selected);\n setHighlightedIndexRef.current?.(indexOfSelectedItem);\n }\n },\n [indexPositions]\n );\n\n const setTextValue = useCallback(\n (value: string) => {\n setValue(value);\n setFilterPattern(value === \"\" ? undefined : value);\n },\n [setFilterPattern, setValue]\n );\n\n const reconcileInput = useCallback(\n (selected: selectedCollectionType = selectedRef.current) => {\n let value = \"\";\n if (Array.isArray(selected)) {\n console.log(\"TODO multi selection\");\n } else if (selected != null && selected.value !== null) {\n value = itemToString(selected.value);\n }\n setTextValue(value);\n if (value === \"\") {\n setHighlightedIndexRef.current?.(-1);\n } else {\n highlightSelectedItem(selected);\n }\n },\n [highlightSelectedItem, itemToString, setTextValue]\n );\n\n const applySelection = useCallback(\n (evt: any, selected: selectedCollectionType) => {\n if (!isMultiSelect) {\n setIsOpen(false);\n }\n selectedRef.current = selected;\n reconcileInput(selected);\n onSelectionChange?.(evt, collectionItemsToItem(selected ?? null));\n },\n [\n collectionItemsToItem,\n isMultiSelect,\n onSelectionChange,\n reconcileInput,\n setIsOpen,\n ]\n );\n\n const handleSelectionChange = useCallback<\n SelectionChangeHandler<Item, Selection>\n >(\n (evt, selected) => {\n if (!isMultiSelect) {\n const selectedCollectionItem = itemToCollectionItem<\n Selection,\n typeof selected\n >(selected);\n applySelection(evt, selectedCollectionItem);\n }\n },\n [applySelection, isMultiSelect, itemToCollectionItem]\n );\n\n const handleFirstItemSelection = useCallback(\n (evt: KeyboardEvent | ChangeEvent) => {\n if (\n !allowFreeText &&\n (evt as KeyboardEvent).key === \"Enter\" &&\n quickSelection\n ) {\n const [firstItem] = indexPositions;\n applySelection(evt, firstItem as selectedCollectionType);\n }\n },\n [allowFreeText, applySelection, indexPositions, quickSelection]\n );\n\n const {\n onKeyDown: inputOnKeyDown,\n onFocus: inputOnFocus,\n onChange: inputOnChange,\n onBlur: inputOnBlur,\n onSelect: inputOnSelect,\n } = inputProps;\n\n const handleInputKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n if (\"Escape\" === evt.key) {\n if (allowFreeText) {\n setTextValue(\"\");\n } else {\n reconcileInput();\n }\n } else if (\"Tab\" === evt.key) {\n if (!allowFreeText) {\n reconcileInput();\n }\n }\n\n handleFirstItemSelection(evt);\n\n inputOnKeyDown?.(evt as KeyboardEvent<HTMLInputElement>);\n },\n [\n allowFreeText,\n handleFirstItemSelection,\n inputOnKeyDown,\n reconcileInput,\n setTextValue,\n ]\n );\n\n const handleKeyboardNavigation = useCallback(() => {\n setDisableAriaActiveDescendant(false);\n }, []);\n\n const {\n focusVisible,\n setHighlightedIndex,\n highlightedIndex,\n listControlProps,\n listHandlers: listHookListHandlers,\n selected,\n setSelected,\n } = useList<Item, Selection>({\n collectionHook,\n defaultHighlightedIndex: -1,\n disableAriaActiveDescendant,\n disableHighlightOnFocus: true,\n disableTypeToSelect: true,\n onKeyboardNavigation: handleKeyboardNavigation,\n onKeyDown: handleInputKeyDown,\n onSelectionChange: handleSelectionChange,\n containerRef: NULL_REF,\n // we are controlling selection from a ref value - is this right ?\n selected: selectedRef.current,\n selectionKeys: EnterOnly,\n selectionStrategy,\n tabToSelect: !isMultiSelect,\n });\n\n setHighlightedIndexRef.current = setHighlightedIndex;\n setSelectedRef.current = setSelected;\n // selectedRef.current = selected;\n\n const handleOpenChange = useCallback(\n (open: boolean) => {\n setIsOpen(open);\n if (!open) {\n setQuickSelection(false);\n }\n onOpenChange?.(open);\n },\n [onOpenChange, setIsOpen]\n );\n\n const { onClick: listHandlersOnClick } = listHookListHandlers;\n const handleListClick = useCallback(\n (evt: MouseEvent) => {\n //TODO use ref\n document.getElementById(`${id}-input`)?.focus();\n // const inputEl = inputRef.current;\n console.log(\"handle list click\");\n listHandlersOnClick?.(evt);\n // if (inputEl != null) {\n // inputEl.focus();\n // }\n\n // if (restListProps.onClick) {\n // restListProps.onClick(event as MouseEvent<HTMLDivElement>);\n // }\n\n // notifyPopper(event);\n },\n [id, listHandlersOnClick]\n );\n\n const handleInputChange = useCallback(\n (evt: ChangeEvent<HTMLInputElement>) => {\n const newValue = evt.target.value;\n setValue(newValue);\n\n if (newValue?.trim().length) {\n setFilterPattern(newValue);\n } else {\n setFilterPattern(undefined);\n if (selectedRef.current !== null) {\n onSelectionChange?.(\n evt,\n null as Selection extends SingleSelectionStrategy\n ? Item | null\n : Item[]\n );\n }\n selectedRef.current = null as selectedCollectionType;\n }\n\n setIsOpen(true);\n\n setQuickSelection(newValue.length > 0 && !allowFreeText);\n\n inputOnChange?.(evt, newValue);\n },\n [allowFreeText, inputOnChange, setFilterPattern, setIsOpen, setValue]\n );\n\n const { onFocus: listOnFocus } = listControlProps;\n const handleInputFocus = useCallback(\n (evt: FocusEvent<HTMLInputElement>) => {\n setDisableAriaActiveDescendant(false);\n listOnFocus?.(evt);\n inputOnFocus?.(evt);\n },\n [inputOnFocus, listOnFocus]\n );\n\n const listFocused = useCallback(\n (evt: FocusEvent) => {\n const element = evt.relatedTarget as HTMLElement;\n return element?.id === `${id}-list`;\n return true;\n },\n [id]\n );\n\n // When focus leaves a free text combo, check to see if the entered text is\n // a valid selection, if so fire a change event\n const selectInputValue = useCallback(\n (evt: ChangeEvent) => {\n const text = value.trim();\n if (text) {\n const selectedCollectionItem = stringToCollectionItem<\"default\">(\n text\n ) as selectedCollectionType;\n if (selectedCollectionItem) {\n if (Array.isArray(selectedCollectionItem)) {\n // TODO multi select\n } else if (selectedCollectionItem !== selected) {\n setSelectedRef.current?.(selectedCollectionItem);\n onSelectionChange?.(\n evt,\n selectedCollectionItem.value as Selection extends SingleSelectionStrategy\n ? Item | null\n : Item[]\n );\n }\n } else if (stringToItem) {\n const item = stringToItem(text);\n if (item) {\n console.log(\"we have a new item\");\n }\n }\n // Hoiw do we check if string is Item\n }\n },\n [onSelectionChange, selected, stringToItem, stringToCollectionItem, value]\n );\n\n const { onBlur: listOnBlur } = listControlProps;\n const handleInputBlur = useCallback(\n (evt: FocusEvent<HTMLInputElement>) => {\n if (listFocused(evt)) {\n // nothing doing\n } else {\n listOnBlur?.(evt);\n inputOnBlur?.(evt);\n if (allowFreeText) {\n selectInputValue(evt as ChangeEvent);\n } else {\n reconcileInput();\n }\n setDisableAriaActiveDescendant(true);\n ignoreSelectOnFocus.current = true;\n }\n },\n [\n allowFreeText,\n listFocused,\n inputOnBlur,\n listOnBlur,\n reconcileInput,\n selectInputValue,\n ]\n );\n\n const handleInputSelect = useCallback(\n (event: SyntheticEvent<HTMLDivElement>) => {\n if (ignoreSelectOnFocus.current) {\n ignoreSelectOnFocus.current = false;\n } else {\n setDisableAriaActiveDescendant(true);\n }\n inputOnSelect?.(event);\n },\n [inputOnSelect]\n );\n\n // If we have selected item(s) and we filter down the list by typing,\n // the position of selected items within the list may be changing.\n // Relocate highlighted index to the selection whenever this happens,\n // so if we resume keyboard navigation, navigation begins from the selected\n // item.\n useEffect(() => {\n highlightSelectedItem();\n // TODO may need to scrollIntoView\n if (indexPositions.length === 0) {\n setIsOpen(false);\n }\n }, [highlightSelectedItem, indexPositions.length, setIsOpen]);\n\n // const activeDescendant: string | undefined = selectionChanged\n // ? \"\"\n // : undefined;\n\n const mergedInputProps = {\n ...inputProps.inputProps,\n // \"aria-owns\": listId,\n \"aria-label\": ariaLabel,\n };\n\n return {\n focusVisible,\n highlightedIndex,\n isOpen,\n onOpenChange: handleOpenChange,\n inputProps: {\n ...inputProps,\n // \"aria-activedescendant\": activeDescendant,\n id: `${id}-input`,\n inputProps: mergedInputProps,\n onChange: handleInputChange,\n onSelect: handleInputSelect,\n role: \"combobox\",\n value,\n },\n // listControlProps,\n listControlProps: {\n ...listControlProps,\n onBlur: handleInputBlur,\n onFocus: handleInputFocus,\n },\n listHandlers: {\n ...listHookListHandlers,\n onClick: handleListClick,\n },\n selected,\n };\n};\n"],"names":["itemToString","defaultItemToString","useRef","useControlled","useCallback","useState","selected","_a","value","useList","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"useCombobox.js","sources":["../src/combo-box/useCombobox.ts"],"sourcesContent":["import { useControlled } from \"@salt-ds/core\";\nimport {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n SyntheticEvent,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { ListHookProps, ListHookResult, useList } from \"../list\";\nimport { DropdownHookResult, DropdownHookProps } from \"../dropdown\";\nimport {\n CollectionItem,\n itemToString as defaultItemToString,\n SelectionChangeHandler,\n SelectionStrategy,\n SingleSelectionStrategy,\n} from \"../common-hooks\";\nimport { InputLegacyProps as InputProps } from \"../input-legacy\";\n\nconst NULL_REF = { current: null };\nconst EnterOnly = [\"Enter\"];\n\nexport interface ComboboxHookProps<Item, Strategy extends SelectionStrategy>\n extends Partial<Omit<DropdownHookProps, \"id\" | \"onKeyDown\">>,\n Pick<InputProps, \"onBlur\" | \"onChange\" | \"onFocus\" | \"onSelect\">,\n Omit<\n ListHookProps<Item, Strategy>,\n \"containerRef\" | \"defaultSelected\" | \"selected\" | \"onSelect\"\n > {\n InputProps?: InputProps;\n allowFreeText?: boolean;\n ariaLabel?: string;\n defaultValue?: string;\n id: string;\n itemToString?: (item: Item) => string;\n stringToItem?: (value?: string) => Item | null | undefined;\n value?: string;\n}\n\nexport interface ComboboxHookResult<Item, Selection extends SelectionStrategy>\n extends Pick<\n ListHookResult<Item, Selection>,\n | \"focusVisible\"\n | \"highlightedIndex\"\n | \"listControlProps\"\n | \"listHandlers\"\n | \"selected\"\n >,\n Partial<DropdownHookResult> {\n inputProps: InputProps;\n onOpenChange: (isOpen: boolean) => void;\n}\n\nexport const useCombobox = <\n Item,\n Selection extends SelectionStrategy = \"default\"\n>({\n allowFreeText,\n ariaLabel,\n collectionHook,\n defaultIsOpen,\n defaultValue,\n disabled,\n onBlur,\n onFocus,\n onChange,\n onSelect,\n id,\n isOpen: isOpenProp,\n itemToString = defaultItemToString as (item: Item) => string,\n onOpenChange,\n onSelectionChange,\n selectionStrategy,\n stringToItem,\n value: valueProp,\n InputProps: inputProps = {\n onBlur,\n onFocus,\n onChange,\n onSelect,\n },\n}: ComboboxHookProps<Item, Selection>): ComboboxHookResult<Item, Selection> => {\n type selectedCollectionType = Selection extends SingleSelectionStrategy\n ? CollectionItem<Item> | null\n : CollectionItem<Item>[];\n const isMultiSelect =\n selectionStrategy === \"multiple\" || selectionStrategy === \"extended\";\n\n const selectedValue = collectionHook.stringToCollectionItem<Selection>(\n valueProp ?? defaultValue ?? null\n );\n\n const {\n data: indexPositions,\n itemToCollectionItem,\n setFilterPattern,\n stringToCollectionItem,\n } = collectionHook;\n const setHighlightedIndexRef = useRef<null | ((i: number) => void)>(null);\n const setSelectedRef = useRef<\n null | ListHookResult<Item, Selection>[\"setSelected\"]\n >(null);\n // Input select events are used to identify user navigation within the input text.\n // The initial select event fired on focus is an exception that we ignore.\n const ignoreSelectOnFocus = useRef(true);\n const selectedRef = useRef<selectedCollectionType>(selectedValue);\n\n const [isOpen, setIsOpen] = useControlled<boolean>({\n controlled: isOpenProp,\n default: defaultIsOpen ?? false,\n name: \"useDropdownList\",\n });\n\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValue ?? \"\",\n name: \"ComboBox\",\n state: \"value\",\n });\n\n const collectionItemsToItem = useCallback(\n (\n sel: CollectionItem<Item> | null | CollectionItem<Item>[]\n ): Selection extends SingleSelectionStrategy ? Item | null : Item[] => {\n type returnType = Selection extends SingleSelectionStrategy\n ? Item | null\n : Item[];\n if (Array.isArray(sel)) {\n return sel.map((i) => i.value) as returnType;\n } else if (sel) {\n return sel.value as returnType;\n } else {\n return sel as returnType;\n }\n },\n []\n );\n\n const [disableAriaActiveDescendant, setDisableAriaActiveDescendant] =\n useState(true);\n const [quickSelection, setQuickSelection] = useState(false);\n\n const highlightSelectedItem = useCallback(\n (selected: selectedCollectionType = selectedRef.current) => {\n if (Array.isArray(selected)) {\n console.log(\"TODO multi selection\");\n } else if (selected == null) {\n setHighlightedIndexRef.current?.(-1);\n } else {\n const indexOfSelectedItem = indexPositions.indexOf(selected);\n setHighlightedIndexRef.current?.(indexOfSelectedItem);\n }\n },\n [indexPositions]\n );\n\n const setTextValue = useCallback(\n (value: string) => {\n setValue(value);\n setFilterPattern(value === \"\" ? undefined : value);\n },\n [setFilterPattern, setValue]\n );\n\n const reconcileInput = useCallback(\n (selected: selectedCollectionType = selectedRef.current) => {\n let value = \"\";\n if (Array.isArray(selected)) {\n console.log(\"TODO multi selection\");\n } else if (selected != null && selected.value !== null) {\n value = itemToString(selected.value);\n }\n setTextValue(value);\n if (value === \"\") {\n setHighlightedIndexRef.current?.(-1);\n } else {\n highlightSelectedItem(selected);\n }\n },\n [highlightSelectedItem, itemToString, setTextValue]\n );\n\n const applySelection = useCallback(\n (evt: any, selected: selectedCollectionType) => {\n if (!isMultiSelect) {\n setIsOpen(false);\n }\n selectedRef.current = selected;\n reconcileInput(selected);\n onSelectionChange?.(evt, collectionItemsToItem(selected ?? null));\n },\n [\n collectionItemsToItem,\n isMultiSelect,\n onSelectionChange,\n reconcileInput,\n setIsOpen,\n ]\n );\n\n const handleSelectionChange = useCallback<\n SelectionChangeHandler<Item, Selection>\n >(\n (evt, selected) => {\n if (!isMultiSelect) {\n const selectedCollectionItem = itemToCollectionItem<\n Selection,\n typeof selected\n >(selected);\n applySelection(evt, selectedCollectionItem);\n }\n },\n [applySelection, isMultiSelect, itemToCollectionItem]\n );\n\n const handleFirstItemSelection = useCallback(\n (evt: KeyboardEvent | ChangeEvent) => {\n if (\n !allowFreeText &&\n (evt as KeyboardEvent).key === \"Enter\" &&\n quickSelection\n ) {\n const [firstItem] = indexPositions;\n applySelection(evt, firstItem as selectedCollectionType);\n }\n },\n [allowFreeText, applySelection, indexPositions, quickSelection]\n );\n\n const {\n onKeyDown: inputOnKeyDown,\n onFocus: inputOnFocus,\n onChange: inputOnChange,\n onBlur: inputOnBlur,\n onSelect: inputOnSelect,\n } = inputProps;\n\n const handleInputKeyDown = useCallback(\n (evt: KeyboardEvent) => {\n if (\"Escape\" === evt.key) {\n if (allowFreeText) {\n setTextValue(\"\");\n } else {\n reconcileInput();\n }\n } else if (\"Tab\" === evt.key) {\n if (!allowFreeText) {\n reconcileInput();\n }\n }\n\n handleFirstItemSelection(evt);\n\n inputOnKeyDown?.(evt as KeyboardEvent<HTMLInputElement>);\n },\n [\n allowFreeText,\n handleFirstItemSelection,\n inputOnKeyDown,\n reconcileInput,\n setTextValue,\n ]\n );\n\n const handleKeyboardNavigation = useCallback(() => {\n setDisableAriaActiveDescendant(false);\n }, []);\n\n const {\n focusVisible,\n setHighlightedIndex,\n highlightedIndex,\n listControlProps,\n listHandlers: listHookListHandlers,\n selected,\n setSelected,\n } = useList<Item, Selection>({\n collectionHook,\n defaultHighlightedIndex: -1,\n disableAriaActiveDescendant,\n disableHighlightOnFocus: true,\n disableTypeToSelect: true,\n onKeyboardNavigation: handleKeyboardNavigation,\n onKeyDown: handleInputKeyDown,\n onSelectionChange: handleSelectionChange,\n containerRef: NULL_REF,\n // we are controlling selection from a ref value - is this right ?\n selected: selectedRef.current,\n selectionKeys: EnterOnly,\n selectionStrategy,\n tabToSelect: !isMultiSelect,\n });\n\n setHighlightedIndexRef.current = setHighlightedIndex;\n setSelectedRef.current = setSelected;\n // selectedRef.current = selected;\n\n const handleOpenChange = useCallback(\n (open: boolean) => {\n setIsOpen(open);\n if (!open) {\n setQuickSelection(false);\n }\n onOpenChange?.(open);\n },\n [onOpenChange, setIsOpen]\n );\n\n const { onClick: listHandlersOnClick } = listHookListHandlers;\n const handleListClick = useCallback(\n (evt: MouseEvent) => {\n //TODO use ref\n document.getElementById(`${id}-input`)?.focus();\n // const inputEl = inputRef.current;\n console.log(\"handle list click\");\n listHandlersOnClick?.(evt);\n // if (inputEl != null) {\n // inputEl.focus();\n // }\n\n // if (restListProps.onClick) {\n // restListProps.onClick(event as MouseEvent<HTMLDivElement>);\n // }\n\n // notifyPopper(event);\n },\n [id, listHandlersOnClick]\n );\n\n const handleInputChange = useCallback(\n (evt: ChangeEvent<HTMLInputElement>) => {\n const newValue = evt.target.value;\n setValue(newValue);\n\n if (newValue?.trim().length) {\n setFilterPattern(newValue);\n } else {\n setFilterPattern(undefined);\n if (selectedRef.current !== null) {\n onSelectionChange?.(\n evt,\n null as Selection extends SingleSelectionStrategy\n ? Item | null\n : Item[]\n );\n }\n selectedRef.current = null as selectedCollectionType;\n }\n\n setIsOpen(true);\n\n setQuickSelection(newValue.length > 0 && !allowFreeText);\n\n inputOnChange?.(evt, newValue);\n },\n [allowFreeText, inputOnChange, setFilterPattern, setIsOpen, setValue]\n );\n\n const { onFocus: listOnFocus } = listControlProps;\n const handleInputFocus = useCallback(\n (evt: FocusEvent<HTMLInputElement>) => {\n setDisableAriaActiveDescendant(false);\n listOnFocus?.(evt);\n inputOnFocus?.(evt);\n },\n [inputOnFocus, listOnFocus]\n );\n\n const listFocused = useCallback(\n (evt: FocusEvent) => {\n const element = evt.relatedTarget as HTMLElement;\n return element?.id === `${id}-list`;\n return true;\n },\n [id]\n );\n\n // When focus leaves a free text combo, check to see if the entered text is\n // a valid selection, if so fire a change event\n const selectInputValue = useCallback(\n (evt: ChangeEvent) => {\n const text = value.trim();\n if (text) {\n const selectedCollectionItem = stringToCollectionItem<\"default\">(\n text\n ) as selectedCollectionType;\n if (selectedCollectionItem) {\n if (Array.isArray(selectedCollectionItem)) {\n // TODO multi select\n } else if (selectedCollectionItem !== selected) {\n setSelectedRef.current?.(selectedCollectionItem);\n onSelectionChange?.(\n evt,\n selectedCollectionItem.value as Selection extends SingleSelectionStrategy\n ? Item | null\n : Item[]\n );\n }\n } else if (stringToItem) {\n const item = stringToItem(text);\n if (item) {\n console.log(\"we have a new item\");\n }\n }\n // Hoiw do we check if string is Item\n }\n },\n [onSelectionChange, selected, stringToItem, stringToCollectionItem, value]\n );\n\n const { onBlur: listOnBlur } = listControlProps;\n const handleInputBlur = useCallback(\n (evt: FocusEvent<HTMLInputElement>) => {\n if (listFocused(evt)) {\n // nothing doing\n } else {\n listOnBlur?.(evt);\n inputOnBlur?.(evt);\n if (allowFreeText) {\n selectInputValue(evt as ChangeEvent);\n } else {\n reconcileInput();\n }\n setDisableAriaActiveDescendant(true);\n ignoreSelectOnFocus.current = true;\n }\n },\n [\n allowFreeText,\n listFocused,\n inputOnBlur,\n listOnBlur,\n reconcileInput,\n selectInputValue,\n ]\n );\n\n const handleInputSelect = useCallback(\n (event: SyntheticEvent<HTMLDivElement>) => {\n if (ignoreSelectOnFocus.current) {\n ignoreSelectOnFocus.current = false;\n } else {\n setDisableAriaActiveDescendant(true);\n }\n inputOnSelect?.(event);\n },\n [inputOnSelect]\n );\n\n // If we have selected item(s) and we filter down the list by typing,\n // the position of selected items within the list may be changing.\n // Relocate highlighted index to the selection whenever this happens,\n // so if we resume keyboard navigation, navigation begins from the selected\n // item.\n useEffect(() => {\n highlightSelectedItem();\n // TODO may need to scrollIntoView\n if (indexPositions.length === 0) {\n setIsOpen(false);\n }\n }, [highlightSelectedItem, indexPositions.length, setIsOpen]);\n\n // const activeDescendant: string | undefined = selectionChanged\n // ? \"\"\n // : undefined;\n\n const mergedInputProps = {\n ...inputProps.inputProps,\n // \"aria-owns\": listId,\n \"aria-label\": ariaLabel,\n };\n\n return {\n focusVisible,\n highlightedIndex,\n isOpen,\n onOpenChange: handleOpenChange,\n inputProps: {\n ...inputProps,\n // \"aria-activedescendant\": activeDescendant,\n id: `${id}-input`,\n inputProps: mergedInputProps,\n onChange: handleInputChange,\n onSelect: handleInputSelect,\n role: \"combobox\",\n value,\n },\n // listControlProps,\n listControlProps: {\n ...listControlProps,\n onBlur: handleInputBlur,\n onFocus: handleInputFocus,\n },\n listHandlers: {\n ...listHookListHandlers,\n onClick: handleListClick,\n },\n selected,\n };\n};\n"],"names":["itemToString","defaultItemToString","useRef","useControlled","useCallback","useState","selected","_a","value","useList","useEffect"],"mappings":"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"}
package/dist-cjs/index.js CHANGED
@@ -44,7 +44,6 @@ var SwatchesPicker = require('./color-chooser/SwatchesPicker.js');
44
44
  var Swatch = require('./color-chooser/Swatch.js');
45
45
  var colorMap = require('./color-chooser/colorMap.js');
46
46
  var ComboBox = require('./combo-box/ComboBox.js');
47
- var ComboBoxNext = require('./combo-box-next/ComboBoxNext.js');
48
47
  var ComboBoxDeprecated = require('./combo-box-deprecated/ComboBoxDeprecated.js');
49
48
  var filterHelpers = require('./combo-box-deprecated/filterHelpers.js');
50
49
  var ContactAction = require('./contact-details/ContactAction.js');
@@ -65,7 +64,6 @@ var DropdownBase = require('./dropdown/DropdownBase.js');
65
64
  var DropdownButton = require('./dropdown/DropdownButton.js');
66
65
  var Dropdown = require('./dropdown/Dropdown.js');
67
66
  var useDropdownBase = require('./dropdown/useDropdownBase.js');
68
- var DropdownNext = require('./dropdown-next/DropdownNext.js');
69
67
  var EditableLabel = require('./editable-label/EditableLabel.js');
70
68
  var FormFieldLegacy = require('./form-field-legacy/FormFieldLegacy.js');
71
69
  var FormLabel = require('./form-field-legacy/FormLabel.js');
@@ -92,8 +90,6 @@ var MenuButton = require('./menu-button/MenuButton.js');
92
90
  var Metric = require('./metric/Metric.js');
93
91
  var MetricHeader = require('./metric/MetricHeader.js');
94
92
  var MetricContent = require('./metric/MetricContent.js');
95
- var Option = require('./option/Option.js');
96
- var OptionGroup = require('./option/OptionGroup.js');
97
93
  var Overlay = require('./overlay/Overlay.js');
98
94
  var OverlayTrigger = require('./overlay/OverlayTrigger.js');
99
95
  var OverlayPanel = require('./overlay/OverlayPanel.js');
@@ -112,6 +108,7 @@ var useWidth = require('./responsive/useWidth.js');
112
108
  var overflowUtils = require('./responsive/overflowUtils.js');
113
109
  var utils = require('./responsive/utils.js');
114
110
  var SearchInput = require('./search-input/SearchInput.js');
111
+ var SegmentedButtonGroup = require('./segmented-button-group/SegmentedButtonGroup.js');
115
112
  var SkipLink = require('./skip-link/SkipLink.js');
116
113
  var SkipLinks = require('./skip-link/SkipLinks.js');
117
114
  var Slider = require('./slider/Slider.js');
@@ -186,7 +183,6 @@ exports.Swatch = Swatch.Swatch;
186
183
  exports.saltColorMap = colorMap.saltColorMap;
187
184
  exports.saltlight = colorMap.saltlight;
188
185
  exports.ComboBox = ComboBox.ComboBox;
189
- exports.ComboBoxNext = ComboBoxNext.ComboBoxNext;
190
186
  exports.ComboBoxDeprecated = ComboBoxDeprecated.ComboBoxDeprecated;
191
187
  exports.getDefaultFilter = filterHelpers.getDefaultFilter;
192
188
  exports.getDefaultFilterRegex = filterHelpers.getDefaultFilterRegex;
@@ -208,7 +204,6 @@ exports.DropdownBase = DropdownBase.DropdownBase;
208
204
  exports.DropdownButton = DropdownButton.DropdownButton;
209
205
  exports.Dropdown = Dropdown.Dropdown;
210
206
  exports.useDropdownBase = useDropdownBase.useDropdownBase;
211
- exports.DropdownNext = DropdownNext.DropdownNext;
212
207
  exports.EditableLabel = EditableLabel.EditableLabel;
213
208
  exports.FormField = FormFieldLegacy.FormFieldLegacy;
214
209
  exports.FormLabel = FormLabel.FormLabel;
@@ -237,8 +232,6 @@ exports.MenuButton = MenuButton.MenuButton;
237
232
  exports.Metric = Metric.Metric;
238
233
  exports.MetricHeader = MetricHeader.MetricHeader;
239
234
  exports.MetricContent = MetricContent.MetricContent;
240
- exports.Option = Option.Option;
241
- exports.OptionGroup = OptionGroup.OptionGroup;
242
235
  exports.Overlay = Overlay.Overlay;
243
236
  exports.OverlayTrigger = OverlayTrigger.OverlayTrigger;
244
237
  exports.OverlayPanel = OverlayPanel.OverlayPanel;
@@ -282,6 +275,7 @@ exports.popNextItemByPriority = overflowUtils.popNextItemByPriority;
282
275
  exports.isResponsiveAttribute = utils.isResponsiveAttribute;
283
276
  exports.liftResponsivePropsToFormField = utils.liftResponsivePropsToFormField;
284
277
  exports.SearchInput = SearchInput.SearchInput;
278
+ exports.SegmentedButtonGroup = SegmentedButtonGroup.SegmentedButtonGroup;
285
279
  exports.SkipLink = SkipLink.SkipLink;
286
280
  exports.SkipLinks = SkipLinks.SkipLinks;
287
281
  exports.Slider = Slider.Slider;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltSegmentedButtonGroup {\n display: flex;\n flex-direction: row;\n background: var(--button-background);\n gap: var(--salt-size-border);\n}\n\n.saltSegmentedButtonGroup > *:not(:last-child)::after {\n content: \"\";\n width: var(--salt-size-border);\n position: absolute;\n background: var(--button-background);\n right: calc(var(--salt-size-border) * -1);\n height: 100%;\n}\n\n.saltSegmentedButtonGroup > *:not(:first-child)::before {\n content: \"\";\n width: var(--salt-size-border);\n position: absolute;\n background: var(--salt-separable-primary-borderColor);\n left: calc(var(--salt-size-border) * -1);\n height: 100%;\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=SegmentedButtonGroup.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SegmentedButtonGroup.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
7
+ var clsx = require('clsx');
8
+ var core = require('@salt-ds/core');
9
+ var window = require('@salt-ds/window');
10
+ var styles = require('@salt-ds/styles');
11
+ var SegmentedButtonGroup$1 = require('./SegmentedButtonGroup.css.js');
12
+
13
+ const withBaseName = core.makePrefixer("saltSegmentedButtonGroup");
14
+ const SegmentedButtonGroup = React.forwardRef(function SegmentedButton({ className, children, ref, ...rest }) {
15
+ const targetWindow = window.useWindow();
16
+ styles.useComponentCssInjection({
17
+ testId: "salt-segmented-button-group",
18
+ css: SegmentedButtonGroup$1,
19
+ window: targetWindow
20
+ });
21
+ return /* @__PURE__ */ jsxRuntime.jsx("div", {
22
+ className: clsx.clsx(withBaseName(), className),
23
+ ref,
24
+ ...rest,
25
+ children
26
+ });
27
+ });
28
+
29
+ exports.SegmentedButtonGroup = SegmentedButtonGroup;
30
+ //# sourceMappingURL=SegmentedButtonGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SegmentedButtonGroup.js","sources":["../src/segmented-button-group/SegmentedButtonGroup.tsx"],"sourcesContent":["import { forwardRef, ComponentPropsWithRef } from \"react\";\nimport { clsx } from \"clsx\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\n\nimport segmentedButtonGroupCss from \"./SegmentedButtonGroup.css\";\n\nexport interface SegmentedButtonGroupProps\n extends ComponentPropsWithRef<\"div\"> {}\n\nconst withBaseName = makePrefixer(\"saltSegmentedButtonGroup\");\n\nexport const SegmentedButtonGroup = forwardRef<\n HTMLDivElement,\n SegmentedButtonGroupProps\n>(function SegmentedButton({ className, children, ref, ...rest }) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-segmented-button-group\",\n css: segmentedButtonGroupCss,\n window: targetWindow,\n });\n\n return (\n <div className={clsx(withBaseName(), className)} ref={ref} {...rest}>\n {children}\n </div>\n );\n});\n"],"names":["makePrefixer","forwardRef","useWindow","useComponentCssInjection","segmentedButtonGroupCss","jsx","clsx"],"mappings":";;;;;;;;;;;;AAWA,MAAM,YAAA,GAAeA,kBAAa,0BAA0B,CAAA,CAAA;AAE/C,MAAA,oBAAA,GAAuBC,iBAGlC,SAAS,eAAA,CAAgB,EAAE,SAAW,EAAA,QAAA,EAAU,GAAQ,EAAA,GAAA,IAAA,EAAQ,EAAA;AAChE,EAAA,MAAM,eAAeC,gBAAU,EAAA,CAAA;AAC/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,6BAAA;AAAA,IACR,GAAK,EAAAC,sBAAA;AAAA,IACL,MAAQ,EAAA,YAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,IAAI,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,IAAG,GAAA;AAAA,IAAW,GAAG,IAAA;AAAA,IAC5D,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ,CAAC;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = "/* Component class applied to the root element */\n.saltTabstripNext {\n display: flex;\n flex-wrap: nowrap;\n justify-content: var(--tabstripNext-justifyContent);\n align-items: center;\n position: relative;\n background: transparent;\n width: 100%;\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n}\n.saltTabstripNext-container {\n display: inherit;\n width: 100%;\n position: relative;\n}\n\n.saltTabstripNext-main {\n padding-left: var(--salt-spacing-300);\n padding-right: var(--salt-spacing-300);\n box-sizing: border-box;\n}\n\n.saltTabstripNext-main::before {\n content: \"\";\n position: absolute;\n inset: auto 0 0 0;\n height: var(--salt-size-border);\n border-bottom: var(--salt-size-border) var(--salt-separable-borderStyle) var(--salt-separable-secondary-borderColor);\n}\n\n.saltTabstripNext .saltTabNext-wrapper:not(:last-child) {\n padding-right: var(--salt-spacing-100);\n box-sizing: border-box;\n}\n";
3
+ var css_248z = "/* Component class applied to the root element */\n.saltTabstripNext {\n display: flex;\n flex-wrap: nowrap;\n justify-content: var(--tabstripNext-justifyContent);\n align-items: center;\n position: relative;\n background: transparent;\n width: 100%;\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n line-height: var(--salt-text-lineHeight);\n}\n.saltTabstripNext-container {\n display: block;\n width: 100%;\n height: fit-content;\n position: relative;\n}\n\n.saltTabstripNext-main {\n padding-left: var(--salt-spacing-300);\n padding-right: var(--salt-spacing-300);\n box-sizing: border-box;\n}\n\n.saltTabstripNext-main::before {\n content: \"\";\n position: absolute;\n inset: auto 0 0 0;\n height: var(--salt-size-border);\n border-bottom: var(--salt-size-border) var(--salt-separable-borderStyle) var(--salt-separable-secondary-borderColor);\n}\n\n.saltTabstripNext .saltTabNext-wrapper:not(:last-child) {\n padding-right: var(--salt-spacing-100);\n box-sizing: border-box;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=TabstripNext.css.js.map