@salt-ds/lab 1.0.0-alpha.26 → 1.0.0-alpha.27

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 (254) hide show
  1. package/css/salt-lab.css +378 -413
  2. package/dist-cjs/combo-box-next/ComboBoxNext.js +303 -166
  3. package/dist-cjs/combo-box-next/ComboBoxNext.js.map +1 -1
  4. package/dist-cjs/combo-box-next/useComboBoxNext.js +55 -0
  5. package/dist-cjs/combo-box-next/useComboBoxNext.js.map +1 -0
  6. package/dist-cjs/dropdown/DropdownBase.js +1 -1
  7. package/dist-cjs/dropdown/DropdownBase.js.map +1 -1
  8. package/dist-cjs/dropdown-next/DropdownNext.css.js +1 -1
  9. package/dist-cjs/dropdown-next/DropdownNext.js +333 -169
  10. package/dist-cjs/dropdown-next/DropdownNext.js.map +1 -1
  11. package/dist-cjs/editable-label/EditableLabel.js +1 -1
  12. package/dist-cjs/editable-label/EditableLabel.js.map +1 -1
  13. package/dist-cjs/index.js +8 -10
  14. package/dist-cjs/index.js.map +1 -1
  15. package/dist-cjs/layer-layout/LayerLayout.js +0 -1
  16. package/dist-cjs/layer-layout/LayerLayout.js.map +1 -1
  17. package/dist-cjs/list-control/ListControlContext.js +36 -0
  18. package/dist-cjs/list-control/ListControlContext.js.map +1 -0
  19. package/dist-cjs/list-control/ListControlState.js +193 -0
  20. package/dist-cjs/list-control/ListControlState.js.map +1 -0
  21. package/dist-cjs/navigation-item/ConditionalWrapper.js +2 -4
  22. package/dist-cjs/navigation-item/ConditionalWrapper.js.map +1 -1
  23. package/dist-cjs/navigation-item/ExpansionIcon.js +2 -4
  24. package/dist-cjs/navigation-item/ExpansionIcon.js.map +1 -1
  25. package/dist-cjs/navigation-item/NavigationItem.css.js +1 -1
  26. package/dist-cjs/navigation-item/NavigationItem.js +4 -7
  27. package/dist-cjs/navigation-item/NavigationItem.js.map +1 -1
  28. package/dist-cjs/option/Option.css.js +6 -0
  29. package/dist-cjs/option/Option.css.js.map +1 -0
  30. package/dist-cjs/option/Option.js +113 -0
  31. package/dist-cjs/option/Option.js.map +1 -0
  32. package/dist-cjs/option/OptionGroup.css.js +6 -0
  33. package/dist-cjs/option/OptionGroup.css.js.map +1 -0
  34. package/dist-cjs/option/OptionGroup.js +44 -0
  35. package/dist-cjs/option/OptionGroup.js.map +1 -0
  36. package/dist-cjs/option/OptionList.css.js +6 -0
  37. package/dist-cjs/option/OptionList.css.js.map +1 -0
  38. package/dist-cjs/option/OptionList.js +40 -0
  39. package/dist-cjs/option/OptionList.js.map +1 -0
  40. package/dist-cjs/scrim/Scrim.css.js +1 -1
  41. package/dist-cjs/scrim/Scrim.js +10 -140
  42. package/dist-cjs/scrim/Scrim.js.map +1 -1
  43. package/dist-cjs/tokenized-input/internal/InputPill.js +13 -9
  44. package/dist-cjs/tokenized-input/internal/InputPill.js.map +1 -1
  45. package/dist-cjs/tokenized-input-next/TokenizedInputNext.css.js +6 -0
  46. package/dist-cjs/tokenized-input-next/TokenizedInputNext.css.js.map +1 -0
  47. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js +244 -0
  48. package/dist-cjs/tokenized-input-next/TokenizedInputNext.js.map +1 -0
  49. package/dist-cjs/tokenized-input-next/internal/InputPill.css.js +6 -0
  50. package/dist-cjs/tokenized-input-next/internal/InputPill.css.js.map +1 -0
  51. package/dist-cjs/tokenized-input-next/internal/InputPill.js +83 -0
  52. package/dist-cjs/tokenized-input-next/internal/InputPill.js.map +1 -0
  53. package/dist-cjs/tokenized-input-next/internal/calcFirstHiddenIndex.js +22 -0
  54. package/dist-cjs/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -0
  55. package/dist-cjs/tokenized-input-next/internal/useResizeObserver.js +37 -0
  56. package/dist-cjs/tokenized-input-next/internal/useResizeObserver.js.map +1 -0
  57. package/dist-cjs/tokenized-input-next/internal/useWidth.js +48 -0
  58. package/dist-cjs/tokenized-input-next/internal/useWidth.js.map +1 -0
  59. package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js +479 -0
  60. package/dist-cjs/tokenized-input-next/useTokenizedInputNext.js.map +1 -0
  61. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js +1 -1
  62. package/dist-cjs/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  63. package/dist-cjs/tree/Tree.js +1 -2
  64. package/dist-cjs/tree/Tree.js.map +1 -1
  65. package/dist-es/combo-box-next/ComboBoxNext.js +306 -169
  66. package/dist-es/combo-box-next/ComboBoxNext.js.map +1 -1
  67. package/dist-es/combo-box-next/useComboBoxNext.js +51 -0
  68. package/dist-es/combo-box-next/useComboBoxNext.js.map +1 -0
  69. package/dist-es/dropdown/DropdownBase.js +1 -1
  70. package/dist-es/dropdown/DropdownBase.js.map +1 -1
  71. package/dist-es/dropdown-next/DropdownNext.css.js +1 -1
  72. package/dist-es/dropdown-next/DropdownNext.js +332 -168
  73. package/dist-es/dropdown-next/DropdownNext.js.map +1 -1
  74. package/dist-es/editable-label/EditableLabel.js +1 -1
  75. package/dist-es/editable-label/EditableLabel.js.map +1 -1
  76. package/dist-es/index.js +4 -5
  77. package/dist-es/index.js.map +1 -1
  78. package/dist-es/layer-layout/LayerLayout.js +0 -1
  79. package/dist-es/layer-layout/LayerLayout.js.map +1 -1
  80. package/dist-es/list-control/ListControlContext.js +31 -0
  81. package/dist-es/list-control/ListControlContext.js.map +1 -0
  82. package/dist-es/list-control/ListControlState.js +189 -0
  83. package/dist-es/list-control/ListControlState.js.map +1 -0
  84. package/dist-es/navigation-item/ConditionalWrapper.js +2 -4
  85. package/dist-es/navigation-item/ConditionalWrapper.js.map +1 -1
  86. package/dist-es/navigation-item/ExpansionIcon.js +2 -4
  87. package/dist-es/navigation-item/ExpansionIcon.js.map +1 -1
  88. package/dist-es/navigation-item/NavigationItem.css.js +1 -1
  89. package/dist-es/navigation-item/NavigationItem.js +4 -7
  90. package/dist-es/navigation-item/NavigationItem.js.map +1 -1
  91. package/dist-es/option/Option.css.js +4 -0
  92. package/dist-es/option/Option.css.js.map +1 -0
  93. package/dist-es/option/Option.js +109 -0
  94. package/dist-es/option/Option.js.map +1 -0
  95. package/dist-es/option/OptionGroup.css.js +4 -0
  96. package/dist-es/option/OptionGroup.css.js.map +1 -0
  97. package/dist-es/option/OptionGroup.js +40 -0
  98. package/dist-es/option/OptionGroup.js.map +1 -0
  99. package/dist-es/option/OptionList.css.js +4 -0
  100. package/dist-es/option/OptionList.css.js.map +1 -0
  101. package/dist-es/option/OptionList.js +36 -0
  102. package/dist-es/option/OptionList.js.map +1 -0
  103. package/dist-es/scrim/Scrim.css.js +1 -1
  104. package/dist-es/scrim/Scrim.js +12 -138
  105. package/dist-es/scrim/Scrim.js.map +1 -1
  106. package/dist-es/tokenized-input/internal/InputPill.js +15 -11
  107. package/dist-es/tokenized-input/internal/InputPill.js.map +1 -1
  108. package/dist-es/tokenized-input-next/TokenizedInputNext.css.js +4 -0
  109. package/dist-es/tokenized-input-next/TokenizedInputNext.css.js.map +1 -0
  110. package/dist-es/tokenized-input-next/TokenizedInputNext.js +240 -0
  111. package/dist-es/tokenized-input-next/TokenizedInputNext.js.map +1 -0
  112. package/dist-es/tokenized-input-next/internal/InputPill.css.js +4 -0
  113. package/dist-es/tokenized-input-next/internal/InputPill.css.js.map +1 -0
  114. package/dist-es/tokenized-input-next/internal/InputPill.js +79 -0
  115. package/dist-es/tokenized-input-next/internal/InputPill.js.map +1 -0
  116. package/dist-es/tokenized-input-next/internal/calcFirstHiddenIndex.js +18 -0
  117. package/dist-es/tokenized-input-next/internal/calcFirstHiddenIndex.js.map +1 -0
  118. package/dist-es/tokenized-input-next/internal/useResizeObserver.js +33 -0
  119. package/dist-es/tokenized-input-next/internal/useResizeObserver.js.map +1 -0
  120. package/dist-es/tokenized-input-next/internal/useWidth.js +42 -0
  121. package/dist-es/tokenized-input-next/internal/useWidth.js.map +1 -0
  122. package/dist-es/tokenized-input-next/useTokenizedInputNext.js +471 -0
  123. package/dist-es/tokenized-input-next/useTokenizedInputNext.js.map +1 -0
  124. package/dist-es/toolbar/overflow-panel/OverflowPanel.js +1 -1
  125. package/dist-es/toolbar/overflow-panel/OverflowPanel.js.map +1 -1
  126. package/dist-es/tree/Tree.js +1 -2
  127. package/dist-es/tree/Tree.js.map +1 -1
  128. package/dist-types/combo-box-next/ComboBoxNext.d.ts +7 -80
  129. package/dist-types/combo-box-next/useComboBoxNext.d.ts +31 -0
  130. package/dist-types/dropdown-next/DropdownNext.d.ts +25 -27
  131. package/dist-types/index.d.ts +2 -2
  132. package/dist-types/list-control/ListControlContext.d.ts +20 -0
  133. package/dist-types/list-control/ListControlState.d.ts +68 -0
  134. package/dist-types/navigation-item/ConditionalWrapper.d.ts +1 -1
  135. package/dist-types/navigation-item/ExpansionIcon.d.ts +1 -1
  136. package/dist-types/option/Option.d.ts +20 -0
  137. package/dist-types/option/OptionGroup.d.ts +12 -0
  138. package/dist-types/option/OptionList.d.ts +5 -0
  139. package/dist-types/option/index.d.ts +2 -0
  140. package/dist-types/scrim/Scrim.d.ts +6 -61
  141. package/dist-types/scrim/index.d.ts +0 -1
  142. package/dist-types/tokenized-input/internal/InputPill.d.ts +7 -5
  143. package/dist-types/tokenized-input-next/TokenizedInputNext.d.ts +51 -0
  144. package/dist-types/tokenized-input-next/index.d.ts +2 -0
  145. package/dist-types/tokenized-input-next/internal/InputPill.d.ts +29 -0
  146. package/dist-types/tokenized-input-next/internal/calcFirstHiddenIndex.d.ts +4 -0
  147. package/dist-types/tokenized-input-next/internal/useResizeObserver.d.ts +6 -0
  148. package/dist-types/tokenized-input-next/internal/useWidth.d.ts +7 -0
  149. package/dist-types/tokenized-input-next/useTokenizedInputNext.d.ts +47 -0
  150. package/package.json +2 -2
  151. package/dist-cjs/combo-box-next/ComboBoxNext.css.js +0 -6
  152. package/dist-cjs/combo-box-next/ComboBoxNext.css.js.map +0 -1
  153. package/dist-cjs/combo-box-next/useComboBox.js +0 -147
  154. package/dist-cjs/combo-box-next/useComboBox.js.map +0 -1
  155. package/dist-cjs/combo-box-next/useComboboxPortal.js +0 -75
  156. package/dist-cjs/combo-box-next/useComboboxPortal.js.map +0 -1
  157. package/dist-cjs/combo-box-next/utils.js +0 -36
  158. package/dist-cjs/combo-box-next/utils.js.map +0 -1
  159. package/dist-cjs/dropdown-next/useDropdownNext.js +0 -188
  160. package/dist-cjs/dropdown-next/useDropdownNext.js.map +0 -1
  161. package/dist-cjs/focus-manager/FocusManager.js +0 -158
  162. package/dist-cjs/focus-manager/FocusManager.js.map +0 -1
  163. package/dist-cjs/focus-manager/internal/findAllTabbableElements.js +0 -45
  164. package/dist-cjs/focus-manager/internal/findAllTabbableElements.js.map +0 -1
  165. package/dist-cjs/focus-manager/internal/useReturnFocus.js +0 -59
  166. package/dist-cjs/focus-manager/internal/useReturnFocus.js.map +0 -1
  167. package/dist-cjs/pill/ClosablePill.js +0 -61
  168. package/dist-cjs/pill/ClosablePill.js.map +0 -1
  169. package/dist-cjs/pill/Pill.css.js +0 -6
  170. package/dist-cjs/pill/Pill.css.js.map +0 -1
  171. package/dist-cjs/pill/Pill.js +0 -49
  172. package/dist-cjs/pill/Pill.js.map +0 -1
  173. package/dist-cjs/pill/PillBase.js +0 -133
  174. package/dist-cjs/pill/PillBase.js.map +0 -1
  175. package/dist-cjs/pill/SelectablePill.js +0 -55
  176. package/dist-cjs/pill/SelectablePill.js.map +0 -1
  177. package/dist-cjs/pill/constants.js +0 -8
  178. package/dist-cjs/pill/constants.js.map +0 -1
  179. package/dist-cjs/pill/internal/DeleteButton.js +0 -37
  180. package/dist-cjs/pill/internal/DeleteButton.js.map +0 -1
  181. package/dist-cjs/pill/internal/DivButton.js +0 -68
  182. package/dist-cjs/pill/internal/DivButton.js.map +0 -1
  183. package/dist-cjs/pill/internal/PillCheckbox.css.js +0 -6
  184. package/dist-cjs/pill/internal/PillCheckbox.css.js.map +0 -1
  185. package/dist-cjs/pill/internal/PillCheckbox.js +0 -27
  186. package/dist-cjs/pill/internal/PillCheckbox.js.map +0 -1
  187. package/dist-cjs/pill-next/PillNext.css.js +0 -6
  188. package/dist-cjs/pill-next/PillNext.css.js.map +0 -1
  189. package/dist-cjs/pill-next/PillNext.js +0 -60
  190. package/dist-cjs/pill-next/PillNext.js.map +0 -1
  191. package/dist-cjs/scrim/ScrimContext.js +0 -13
  192. package/dist-cjs/scrim/ScrimContext.js.map +0 -1
  193. package/dist-cjs/scrim/internal/PreventFocus.js +0 -39
  194. package/dist-cjs/scrim/internal/PreventFocus.js.map +0 -1
  195. package/dist-es/combo-box-next/ComboBoxNext.css.js +0 -4
  196. package/dist-es/combo-box-next/ComboBoxNext.css.js.map +0 -1
  197. package/dist-es/combo-box-next/useComboBox.js +0 -143
  198. package/dist-es/combo-box-next/useComboBox.js.map +0 -1
  199. package/dist-es/combo-box-next/useComboboxPortal.js +0 -71
  200. package/dist-es/combo-box-next/useComboboxPortal.js.map +0 -1
  201. package/dist-es/combo-box-next/utils.js +0 -31
  202. package/dist-es/combo-box-next/utils.js.map +0 -1
  203. package/dist-es/dropdown-next/useDropdownNext.js +0 -184
  204. package/dist-es/dropdown-next/useDropdownNext.js.map +0 -1
  205. package/dist-es/focus-manager/FocusManager.js +0 -154
  206. package/dist-es/focus-manager/FocusManager.js.map +0 -1
  207. package/dist-es/focus-manager/internal/findAllTabbableElements.js +0 -41
  208. package/dist-es/focus-manager/internal/findAllTabbableElements.js.map +0 -1
  209. package/dist-es/focus-manager/internal/useReturnFocus.js +0 -55
  210. package/dist-es/focus-manager/internal/useReturnFocus.js.map +0 -1
  211. package/dist-es/pill/ClosablePill.js +0 -57
  212. package/dist-es/pill/ClosablePill.js.map +0 -1
  213. package/dist-es/pill/Pill.css.js +0 -4
  214. package/dist-es/pill/Pill.css.js.map +0 -1
  215. package/dist-es/pill/Pill.js +0 -45
  216. package/dist-es/pill/Pill.js.map +0 -1
  217. package/dist-es/pill/PillBase.js +0 -129
  218. package/dist-es/pill/PillBase.js.map +0 -1
  219. package/dist-es/pill/SelectablePill.js +0 -51
  220. package/dist-es/pill/SelectablePill.js.map +0 -1
  221. package/dist-es/pill/constants.js +0 -4
  222. package/dist-es/pill/constants.js.map +0 -1
  223. package/dist-es/pill/internal/DeleteButton.js +0 -33
  224. package/dist-es/pill/internal/DeleteButton.js.map +0 -1
  225. package/dist-es/pill/internal/DivButton.js +0 -64
  226. package/dist-es/pill/internal/DivButton.js.map +0 -1
  227. package/dist-es/pill/internal/PillCheckbox.css.js +0 -4
  228. package/dist-es/pill/internal/PillCheckbox.css.js.map +0 -1
  229. package/dist-es/pill/internal/PillCheckbox.js +0 -23
  230. package/dist-es/pill/internal/PillCheckbox.js.map +0 -1
  231. package/dist-es/pill-next/PillNext.css.js +0 -4
  232. package/dist-es/pill-next/PillNext.css.js.map +0 -1
  233. package/dist-es/pill-next/PillNext.js +0 -52
  234. package/dist-es/pill-next/PillNext.js.map +0 -1
  235. package/dist-es/scrim/ScrimContext.js +0 -9
  236. package/dist-es/scrim/ScrimContext.js.map +0 -1
  237. package/dist-es/scrim/internal/PreventFocus.js +0 -35
  238. package/dist-es/scrim/internal/PreventFocus.js.map +0 -1
  239. package/dist-types/combo-box-next/useComboBox.d.ts +0 -44
  240. package/dist-types/combo-box-next/useComboboxPortal.d.ts +0 -22
  241. package/dist-types/combo-box-next/utils.d.ts +0 -7
  242. package/dist-types/dropdown-next/useDropdownNext.d.ts +0 -50
  243. package/dist-types/pill/ClosablePill.d.ts +0 -8
  244. package/dist-types/pill/Pill.d.ts +0 -15
  245. package/dist-types/pill/PillBase.d.ts +0 -52
  246. package/dist-types/pill/SelectablePill.d.ts +0 -17
  247. package/dist-types/pill/constants.d.ts +0 -1
  248. package/dist-types/pill/index.d.ts +0 -3
  249. package/dist-types/pill/internal/DeleteButton.d.ts +0 -8
  250. package/dist-types/pill/internal/DivButton.d.ts +0 -12
  251. package/dist-types/pill/internal/PillCheckbox.d.ts +0 -3
  252. package/dist-types/pill-next/PillNext.d.ts +0 -4
  253. package/dist-types/pill-next/index.d.ts +0 -1
  254. package/dist-types/scrim/ScrimContext.d.ts +0 -1
@@ -0,0 +1,4 @@
1
+ export declare function calcFirstHiddenIndex({ containerWidth, pillWidths, }?: {
2
+ containerWidth?: number;
3
+ pillWidths?: number[];
4
+ }): number | null;
@@ -0,0 +1,6 @@
1
+ import { Ref } from "react";
2
+ /**
3
+ * This monitors the size of a component and calls `onSizeChange` callback
4
+ * every time when size changes.
5
+ */
6
+ export declare function useResizeObserver<Element extends HTMLElement>(onSizeChange: (entries: ResizeObserverEntry[], observer?: ResizeObserver) => void): Ref<Element>;
@@ -0,0 +1,7 @@
1
+ import { Density } from "@salt-ds/core";
2
+ export declare const getPadding: (node: HTMLElement | null) => number;
3
+ export declare const getWidth: (node: HTMLElement | null) => number;
4
+ /**
5
+ * This records the width of a component when it's rendered
6
+ */
7
+ export declare const useWidth: (density: Density) => [(newNode: any) => void, number];
@@ -0,0 +1,47 @@
1
+ import { Ref, SyntheticEvent, MutableRefObject } from "react";
2
+ import { TokenizedInputNextProps } from "./TokenizedInputNext";
3
+ export interface TokenizedInputNextState<Item> {
4
+ activeIndices: number[];
5
+ expanded: boolean | undefined;
6
+ highlightedIndex: number | undefined;
7
+ selectedItems: Item[];
8
+ value: string | undefined;
9
+ }
10
+ export interface TokenizedInputNextHelpers<Item> {
11
+ setHighlightedIndex: (value?: number) => void;
12
+ setValue: (value: string) => void;
13
+ setSelectedItems: (selectedItems: Item[]) => void;
14
+ updateExpanded: (event: SyntheticEvent, expanded: boolean) => void;
15
+ }
16
+ export interface TokenizedInputNextRefs {
17
+ textAreaRef: Ref<HTMLTextAreaElement>;
18
+ pillsRef: MutableRefObject<Record<number, number | undefined>>;
19
+ clearButtonRef: (newNode: HTMLButtonElement) => void;
20
+ expandButtonRef: Ref<HTMLButtonElement>;
21
+ statusAdornmentRef: Ref<SVGSVGElement>;
22
+ containerRef: Ref<HTMLDivElement>;
23
+ }
24
+ interface useTokenizedInputNextResult<Item> {
25
+ /**
26
+ * The tokenized input state
27
+ */
28
+ state: TokenizedInputNextState<Item>;
29
+ /**
30
+ * First hidden element when collapsed
31
+ */
32
+ firstHiddenIndex: number | null;
33
+ /**
34
+ * Utility functions for modifying tokenized input state
35
+ */
36
+ helpers: TokenizedInputNextHelpers<Item>;
37
+ /**
38
+ * Refs for tokenized input items.
39
+ */
40
+ refs: TokenizedInputNextRefs;
41
+ /**
42
+ * Properties applied to a basic tokenized input component
43
+ */
44
+ inputProps: Omit<TokenizedInputNextProps<Item>, "helpers" | "onChange">;
45
+ }
46
+ export declare function useTokenizedInputNext<Item>(props: TokenizedInputNextProps<Item>): useTokenizedInputNextResult<Item>;
47
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@salt-ds/lab",
3
- "version": "1.0.0-alpha.26",
3
+ "version": "1.0.0-alpha.27",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,7 +26,7 @@
26
26
  "react-window": "^1.8.6",
27
27
  "rifm": "^0.12.0",
28
28
  "tinycolor2": "^1.4.2",
29
- "@salt-ds/core": "^1.13.4",
29
+ "@salt-ds/core": "^1.14.0",
30
30
  "@salt-ds/window": "^0.1.1",
31
31
  "@salt-ds/styles": "^0.2.1",
32
32
  "@salt-ds/icons": "^1.9.1"
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- var css_248z = ".saltComboBoxNext-highlight {\n font-weight: var(--salt-text-fontWeight-strong);\n}\n\n.saltComboBoxNext-input:hover {\n --saltInput-borderColor: var(--salt-focused-outlineColor);\n}\n\n.saltComboBoxNext-list.saltListNext {\n border-color: var(--salt-selectable-borderColor-selected);\n box-shadow: var(--salt-overlayable-shadow-popout);\n max-height: calc((var(--salt-size-base) + var(--salt-spacing-100)) * var(--comboBoxNext-itemCount, 5));\n z-index: calc(var(--salt-zIndex-modal) + 1);\n}\n";
4
-
5
- module.exports = css_248z;
6
- //# sourceMappingURL=ComboBoxNext.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ComboBoxNext.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,147 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var React = require('react');
6
- var useList = require('../list-next/useList.js');
7
- var useComboboxPortal = require('./useComboboxPortal.js');
8
- var core = require('@salt-ds/core');
9
-
10
- const useComboBox = ({
11
- defaultInputValue,
12
- onFocus,
13
- onMouseOver,
14
- onKeyDown,
15
- inputValue: inputValueProp,
16
- PortalProps,
17
- listProps
18
- }) => {
19
- const [inputValue, setInputValue] = core.useControlled({
20
- controlled: inputValueProp,
21
- default: defaultInputValue,
22
- name: "Combo Box",
23
- state: "inputValue"
24
- });
25
- const {
26
- open,
27
- setOpen,
28
- floating,
29
- reference,
30
- getPortalProps,
31
- getTriggerProps,
32
- getPosition
33
- } = useComboboxPortal.useComboboxPortal(PortalProps);
34
- const {
35
- keyDownHandler: listKeyDownHandler,
36
- focusHandler: listFocusHandler,
37
- activeDescendant,
38
- focusVisibleRef,
39
- selectedItem,
40
- setSelectedItem,
41
- setHighlightedItem,
42
- highlightedItem
43
- } = useList.useList({
44
- ...listProps
45
- });
46
- const setSelected = (value) => {
47
- setSelectedItem(value);
48
- setInputValue(value);
49
- };
50
- React.useEffect(() => {
51
- setInputValue(selectedItem);
52
- }, [selectedItem]);
53
- const focusHandler = (event) => {
54
- listFocusHandler(event);
55
- onFocus == null ? void 0 : onFocus(event);
56
- };
57
- const mouseDownHandler = () => {
58
- setOpen(!open);
59
- };
60
- const mouseOverHandler = (event) => {
61
- setHighlightedItem(event.currentTarget.dataset.value);
62
- onMouseOver == null ? void 0 : onMouseOver(event);
63
- };
64
- const listSelectHandler = () => {
65
- setOpen(false);
66
- };
67
- const keyDownHandler = (event) => {
68
- const { key, altKey } = event;
69
- switch (key) {
70
- case "ArrowDown":
71
- case "ArrowUp":
72
- if (altKey) {
73
- event.preventDefault();
74
- if (open && !selectedItem) {
75
- setSelected(void 0);
76
- }
77
- setOpen(!open);
78
- break;
79
- }
80
- if (!open) {
81
- setOpen(true);
82
- }
83
- listKeyDownHandler(event);
84
- break;
85
- case "PageDown":
86
- case "PageUp":
87
- case "Home":
88
- case "End":
89
- if (open) {
90
- listKeyDownHandler(event);
91
- }
92
- break;
93
- case "Enter":
94
- if (!open) {
95
- setOpen(true);
96
- } else {
97
- setSelected(highlightedItem);
98
- setOpen(false);
99
- }
100
- break;
101
- case "Escape":
102
- if (open) {
103
- setOpen(false);
104
- if (!selectedItem) {
105
- setSelected(void 0);
106
- }
107
- }
108
- break;
109
- case "Tab":
110
- setOpen(false);
111
- break;
112
- case "Backspace":
113
- if (!open) {
114
- setOpen(true);
115
- }
116
- break;
117
- }
118
- onKeyDown == null ? void 0 : onKeyDown(event);
119
- };
120
- return {
121
- inputValue,
122
- setInputValue,
123
- portalProps: {
124
- open,
125
- setOpen,
126
- floating,
127
- reference,
128
- getTriggerProps,
129
- getPortalProps,
130
- getPosition
131
- },
132
- selectedItem,
133
- setSelectedItem,
134
- highlightedItem,
135
- setHighlightedItem,
136
- activeDescendant,
137
- focusVisibleRef,
138
- keyDownHandler,
139
- focusHandler,
140
- mouseOverHandler,
141
- mouseDownHandler,
142
- listSelectHandler
143
- };
144
- };
145
-
146
- exports.useComboBox = useComboBox;
147
- //# sourceMappingURL=useComboBox.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useComboBox.js","sources":["../src/combo-box-next/useComboBox.tsx"],"sourcesContent":["import { FocusEvent, KeyboardEvent, SyntheticEvent, useEffect } from \"react\";\nimport { useList, UseListProps } from \"../list-next/useList\";\nimport { useComboboxPortal, UseComboBoxPortalProps } from \"./useComboboxPortal\";\nimport { useControlled } from \"@salt-ds/core\";\n\ninterface UseComboBoxProps {\n inputValue?: string;\n defaultInputValue?: string;\n onBlur?: (event: FocusEvent<HTMLInputElement>) => void;\n onFocus?: (event: FocusEvent<HTMLInputElement>) => void;\n onMouseOver?: (event: SyntheticEvent) => void;\n onKeyDown?: (event: KeyboardEvent<HTMLInputElement>) => void;\n PortalProps?: UseComboBoxPortalProps;\n listProps: UseListProps;\n}\n\nexport const useComboBox = ({\n defaultInputValue,\n onFocus,\n onMouseOver,\n onKeyDown,\n inputValue: inputValueProp,\n PortalProps,\n listProps,\n}: UseComboBoxProps) => {\n const [inputValue, setInputValue] = useControlled({\n controlled: inputValueProp,\n default: defaultInputValue,\n name: \"Combo Box\",\n state: \"inputValue\",\n });\n\n const {\n open,\n setOpen,\n floating,\n reference,\n getPortalProps,\n getTriggerProps,\n getPosition,\n } = useComboboxPortal(PortalProps);\n\n const {\n keyDownHandler: listKeyDownHandler,\n focusHandler: listFocusHandler,\n activeDescendant,\n focusVisibleRef,\n selectedItem,\n setSelectedItem,\n setHighlightedItem,\n highlightedItem,\n } = useList({\n ...listProps,\n });\n\n const setSelected = (value: string | undefined) => {\n setSelectedItem(value);\n setInputValue(value);\n };\n\n useEffect(() => {\n setInputValue(selectedItem);\n }, [selectedItem]);\n\n const focusHandler = (event: FocusEvent<HTMLInputElement>) => {\n listFocusHandler(event);\n onFocus?.(event);\n };\n\n const mouseDownHandler = () => {\n setOpen(!open);\n };\n\n const mouseOverHandler = (event: SyntheticEvent<HTMLElement>) => {\n setHighlightedItem(event.currentTarget.dataset.value);\n onMouseOver?.(event);\n };\n\n const listSelectHandler = () => {\n setOpen(false);\n };\n\n const keyDownHandler = (event: KeyboardEvent<HTMLInputElement>) => {\n const { key, altKey } = event;\n switch (key) {\n case \"ArrowDown\":\n case \"ArrowUp\":\n if (altKey) {\n event.preventDefault();\n if (open && !selectedItem) {\n setSelected(undefined);\n }\n setOpen(!open);\n break;\n }\n if (!open) {\n setOpen(true);\n }\n listKeyDownHandler(event);\n break;\n case \"PageDown\":\n case \"PageUp\":\n case \"Home\":\n case \"End\":\n if (open) {\n listKeyDownHandler(event);\n }\n break;\n case \"Enter\":\n if (!open) {\n setOpen(true);\n } else {\n setSelected(highlightedItem);\n setOpen(false);\n }\n break;\n case \"Escape\":\n if (open) {\n setOpen(false);\n if (!selectedItem) {\n setSelected(undefined);\n }\n }\n break;\n case \"Tab\":\n setOpen(false);\n break;\n case \"Backspace\":\n if (!open) {\n setOpen(true);\n }\n break;\n default:\n break;\n }\n onKeyDown?.(event);\n };\n\n return {\n inputValue,\n setInputValue,\n // portal\n portalProps: {\n open,\n setOpen,\n floating,\n reference,\n getTriggerProps,\n getPortalProps,\n getPosition,\n },\n // list\n selectedItem,\n setSelectedItem,\n highlightedItem,\n setHighlightedItem,\n activeDescendant,\n focusVisibleRef,\n keyDownHandler,\n focusHandler,\n mouseOverHandler,\n mouseDownHandler,\n listSelectHandler,\n };\n};\n"],"names":["useControlled","useComboboxPortal","useList","useEffect"],"mappings":"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"}
@@ -1,75 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var react = require('@floating-ui/react');
6
- var core = require('@salt-ds/core');
7
-
8
- function useComboboxPortal(props) {
9
- const {
10
- open: openProp,
11
- onOpenChange: onOpenChangeProp,
12
- placement: placementProp = "bottom"
13
- } = props != null ? props : {};
14
- const [open, setOpen] = core.useControlled({
15
- controlled: openProp,
16
- default: false,
17
- name: "Combo Box",
18
- state: "open"
19
- });
20
- const onOpenChange = (open2) => {
21
- setOpen(open2);
22
- onOpenChangeProp == null ? void 0 : onOpenChangeProp(open2);
23
- };
24
- const { floating, reference, x, y, strategy, context, elements } = core.useFloatingUI({
25
- open,
26
- onOpenChange,
27
- placement: placementProp,
28
- middleware: [
29
- react.offset(0),
30
- react.size({
31
- apply({ rects, elements: elements2 }) {
32
- Object.assign(elements2.floating.style, {
33
- width: `${rects.reference.width}px`
34
- });
35
- }
36
- }),
37
- react.flip(),
38
- react.shift({ limiter: react.limitShift() })
39
- ]
40
- });
41
- const { getReferenceProps, getFloatingProps } = react.useInteractions([
42
- react.useRole(context, { role: "listbox" }),
43
- react.useDismiss(context)
44
- ]);
45
- const getPortalProps = () => {
46
- return getFloatingProps({
47
- ref: floating
48
- });
49
- };
50
- const getTriggerProps = () => getReferenceProps({
51
- ref: reference
52
- });
53
- const getPosition = () => {
54
- var _a, _b;
55
- return {
56
- top: y != null ? y : 0,
57
- left: x != null ? x : 0,
58
- position: strategy,
59
- width: (_a = elements.floating) == null ? void 0 : _a.clientWidth,
60
- height: (_b = elements.floating) == null ? void 0 : _b.clientHeight
61
- };
62
- };
63
- return {
64
- open,
65
- setOpen,
66
- floating,
67
- reference,
68
- getPortalProps,
69
- getTriggerProps,
70
- getPosition
71
- };
72
- }
73
-
74
- exports.useComboboxPortal = useComboboxPortal;
75
- //# sourceMappingURL=useComboboxPortal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useComboboxPortal.js","sources":["../src/combo-box-next/useComboboxPortal.ts"],"sourcesContent":["import {\n flip,\n limitShift,\n offset,\n Placement,\n shift,\n size,\n useDismiss,\n useInteractions,\n useRole,\n} from \"@floating-ui/react\";\nimport { HTMLProps } from \"react\";\nimport { useControlled, useFloatingUI } from \"@salt-ds/core\";\n\nexport interface UseComboBoxPortalProps {\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n placement?: Placement;\n}\n\nexport function useComboboxPortal(props?: UseComboBoxPortalProps) {\n const {\n open: openProp,\n onOpenChange: onOpenChangeProp,\n placement: placementProp = \"bottom\",\n } = props ?? {};\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: false,\n name: \"Combo Box\",\n state: \"open\",\n });\n\n const onOpenChange = (open: boolean) => {\n setOpen(open);\n onOpenChangeProp?.(open);\n };\n\n const { floating, reference, x, y, strategy, context, elements } =\n useFloatingUI({\n open,\n onOpenChange: onOpenChange,\n placement: placementProp,\n middleware: [\n offset(0),\n size({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n });\n },\n }),\n flip(),\n shift({ limiter: limitShift() }),\n ],\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useRole(context, { role: \"listbox\" }),\n useDismiss(context),\n ]);\n\n const getPortalProps = (): HTMLProps<HTMLDivElement> => {\n return getFloatingProps({\n ref: floating,\n });\n };\n\n const getTriggerProps = () =>\n getReferenceProps({\n ref: reference,\n });\n\n const getPosition = () => ({\n top: y ?? 0,\n left: x ?? 0,\n position: strategy,\n width: elements.floating?.clientWidth,\n height: elements.floating?.clientHeight,\n });\n\n return {\n open,\n setOpen,\n floating,\n reference,\n getPortalProps,\n getTriggerProps,\n getPosition,\n };\n}\n"],"names":["useControlled","open","useFloatingUI","offset","size","elements","flip","shift","limitShift","useInteractions","useRole","useDismiss"],"mappings":"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"}
@@ -1,36 +0,0 @@
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 Highlighter = require('../list/Highlighter.js');
8
- require('../list/ListItem.js');
9
- require('../list/List.js');
10
- require('@salt-ds/core');
11
- require('../common-hooks/collectionProvider.js');
12
- require('../common-hooks/keyUtils.js');
13
- require('../responsive/useResizeObserver.js');
14
- require('../list/VirtualizedList.js');
15
- require('../list-next/ListNext.js');
16
- var ListItemNext = require('../list-next/ListItemNext.js');
17
-
18
- const defaultFilter = (source, filterValue) => source.filter(
19
- (item) => !filterValue ? item : item.toLowerCase().includes(filterValue.toLowerCase())
20
- );
21
- const DefaultListItem = React.forwardRef(function DefaultListItem2({ value, matchPattern, onMouseDown, ...rest }, ref) {
22
- return /* @__PURE__ */ jsxRuntime.jsx(ListItemNext.ListItemNext, {
23
- value,
24
- onMouseDown,
25
- ...rest,
26
- ref,
27
- children: /* @__PURE__ */ jsxRuntime.jsx(Highlighter.Highlighter, {
28
- matchPattern,
29
- text: value
30
- })
31
- });
32
- });
33
-
34
- exports.DefaultListItem = DefaultListItem;
35
- exports.defaultFilter = defaultFilter;
36
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sources":["../src/combo-box-next/utils.tsx"],"sourcesContent":["import { ForwardedRef, forwardRef } from \"react\";\nimport { Highlighter } from \"../list\";\nimport { ListItemNext, ListItemNextProps } from \"../list-next\";\n\nexport const defaultFilter = (source: string[], filterValue?: string) =>\n source.filter((item: string) =>\n !filterValue ? item : item.toLowerCase().includes(filterValue.toLowerCase())\n );\n\nexport interface ComboBoxItemProps<T> extends Omit<ListItemNextProps, \"value\"> {\n value: T;\n matchPattern?: RegExp | string;\n}\n\nexport const DefaultListItem = forwardRef(function DefaultListItem(\n { value, matchPattern, onMouseDown, ...rest }: ComboBoxItemProps<string>,\n ref: ForwardedRef<HTMLLIElement>\n) {\n return (\n <ListItemNext value={value} onMouseDown={onMouseDown} {...rest} ref={ref}>\n <Highlighter matchPattern={matchPattern} text={value} />\n </ListItemNext>\n );\n});\n"],"names":["forwardRef","DefaultListItem","jsx","ListItemNext","Highlighter"],"mappings":";;;;;;;;;;;;;;;;;AAIO,MAAM,aAAgB,GAAA,CAAC,MAAkB,EAAA,WAAA,KAC9C,MAAO,CAAA,MAAA;AAAA,EAAO,CAAC,IACb,KAAA,CAAC,WAAc,GAAA,IAAA,GAAO,IAAK,CAAA,WAAA,EAAc,CAAA,QAAA,CAAS,WAAY,CAAA,WAAA,EAAa,CAAA;AAC7E,EAAA;AAOW,MAAA,eAAA,GAAkBA,gBAAW,CAAA,SAASC,gBACjD,CAAA,EAAE,OAAO,YAAc,EAAA,WAAA,EAAA,GAAgB,IAAK,EAAA,EAC5C,GACA,EAAA;AACA,EAAA,uBACGC,cAAA,CAAAC,yBAAA,EAAA;AAAA,IAAa,KAAA;AAAA,IAAc,WAAA;AAAA,IAA2B,GAAG,IAAA;AAAA,IAAM,GAAA;AAAA,IAC9D,QAAC,kBAAAD,cAAA,CAAAE,uBAAA,EAAA;AAAA,MAAY,YAAA;AAAA,MAA4B,IAAM,EAAA,KAAA;AAAA,KAAO,CAAA;AAAA,GACxD,CAAA,CAAA;AAEJ,CAAC;;;;;"}
@@ -1,188 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var jsxRuntime = require('react/jsx-runtime');
6
- var react = require('@floating-ui/react');
7
- var core = require('@salt-ds/core');
8
- require('../list-next/ListNext.js');
9
- var ListItemNext = require('../list-next/ListItemNext.js');
10
- var useList = require('../list-next/useList.js');
11
-
12
- const useDropdownNext = ({
13
- listProps,
14
- openControlProp,
15
- onOpenChange: onOpenChangeProp,
16
- placement: placementProp
17
- }) => {
18
- const [open, setOpen] = core.useControlled({
19
- controlled: openControlProp,
20
- default: false,
21
- name: "DropdownNext",
22
- state: "open"
23
- });
24
- const {
25
- focusHandler: listFocusHandler,
26
- keyDownHandler: listKeyDownHandler,
27
- mouseOverHandler: listMouseOverHandler,
28
- activeDescendant,
29
- selectedItem,
30
- setSelectedItem,
31
- highlightedItem,
32
- setHighlightedItem,
33
- contextValue: listContextValue
34
- } = useList.useList({
35
- ...listProps
36
- });
37
- const { select, highlight } = listContextValue;
38
- const getListItems = (source) => {
39
- if (!source)
40
- return;
41
- return source.map((item, index) => {
42
- return /* @__PURE__ */ jsxRuntime.jsx(ListItemNext.ListItemNext, {
43
- value: item,
44
- onMouseDown: (event) => {
45
- select(event);
46
- },
47
- onMouseMove: (event) => {
48
- highlight(event);
49
- },
50
- children: item
51
- }, index);
52
- });
53
- };
54
- const onOpenChange = (open2) => {
55
- setOpen(open2);
56
- onOpenChangeProp == null ? void 0 : onOpenChangeProp(open2);
57
- };
58
- const {
59
- floating,
60
- reference,
61
- x,
62
- y,
63
- strategy,
64
- placement,
65
- context,
66
- elements,
67
- refs
68
- } = core.useFloatingUI({
69
- open,
70
- onOpenChange,
71
- placement: placementProp,
72
- middleware: [
73
- react.offset(0),
74
- react.size({
75
- apply({ rects, elements: elements2 }) {
76
- Object.assign(elements2.floating.style, {
77
- width: `${rects.reference.width}px`
78
- });
79
- }
80
- }),
81
- react.flip(),
82
- react.shift({ limiter: react.limitShift() })
83
- ]
84
- });
85
- const { getReferenceProps, getFloatingProps, getItemProps } = react.useInteractions(
86
- [react.useDismiss(context), react.useRole(context, { role: "listbox" })]
87
- );
88
- const getDropdownNextProps = () => {
89
- return getFloatingProps({
90
- "data-placement": placement,
91
- ref: floating
92
- });
93
- };
94
- const getPosition = () => {
95
- var _a, _b;
96
- return {
97
- top: y != null ? y : 0,
98
- left: x != null ? x : 0,
99
- position: strategy,
100
- width: (_a = elements.floating) == null ? void 0 : _a.clientWidth,
101
- height: (_b = elements.floating) == null ? void 0 : _b.clientHeight
102
- };
103
- };
104
- const focusHandler = (event) => {
105
- if (selectedItem) {
106
- listFocusHandler(event);
107
- }
108
- };
109
- const mouseDownHandler = () => {
110
- setOpen(!open);
111
- };
112
- const mouseOverHandler = () => {
113
- listMouseOverHandler();
114
- };
115
- const listSelectHandler = () => {
116
- setOpen(false);
117
- };
118
- const keyDownHandler = (event) => {
119
- const { key } = event;
120
- switch (key) {
121
- case "ArrowUp":
122
- listKeyDownHandler(event);
123
- break;
124
- case "ArrowDown":
125
- setOpen(true);
126
- listKeyDownHandler(event);
127
- break;
128
- case " ":
129
- case "Enter":
130
- if (!open) {
131
- setOpen(true);
132
- break;
133
- }
134
- if (open) {
135
- listKeyDownHandler(event);
136
- setOpen(false);
137
- break;
138
- }
139
- break;
140
- case "Escape":
141
- setOpen(false);
142
- break;
143
- case "Tab":
144
- setOpen(false);
145
- break;
146
- case "PageUp":
147
- case "PageDown":
148
- case "Home":
149
- case "End":
150
- if (open) {
151
- listKeyDownHandler(event);
152
- break;
153
- }
154
- break;
155
- }
156
- };
157
- return {
158
- handlers: {
159
- keyDownHandler,
160
- focusHandler,
161
- mouseOverHandler,
162
- mouseDownHandler,
163
- listSelectHandler
164
- },
165
- refs,
166
- open,
167
- getReferenceProps,
168
- getItemProps,
169
- activeDescendant,
170
- selectedItem,
171
- setSelectedItem,
172
- highlightedItem,
173
- setHighlightedItem,
174
- getListItems,
175
- portalProps: {
176
- open,
177
- setOpen,
178
- floating,
179
- reference,
180
- getFloatingProps,
181
- getDropdownNextProps,
182
- getPosition
183
- }
184
- };
185
- };
186
-
187
- exports.useDropdownNext = useDropdownNext;
188
- //# sourceMappingURL=useDropdownNext.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useDropdownNext.js","sources":["../src/dropdown-next/useDropdownNext.tsx"],"sourcesContent":["import {\n useInteractions,\n useDismiss,\n useRole,\n flip,\n shift,\n limitShift,\n offset,\n size,\n} from \"@floating-ui/react\";\nimport {\n useControlled,\n useFloatingUI,\n UseFloatingUIProps,\n} from \"@salt-ds/core\";\nimport { ListItemNext } from \"../list-next\";\nimport { HTMLProps, KeyboardEvent, FocusEvent } from \"react\";\nimport { useList, UseListProps } from \"../list-next/useList\";\n\ninterface UseDropdownNextProps\n extends Partial<\n Pick<UseFloatingUIProps, \"onOpenChange\" | \"open\" | \"placement\">\n > {\n listProps: UseListProps;\n // props for controlled dropdown\n openControlProp?: boolean;\n}\n\nexport const useDropdownNext = ({\n listProps,\n openControlProp,\n onOpenChange: onOpenChangeProp,\n placement: placementProp,\n}: UseDropdownNextProps) => {\n const [open, setOpen] = useControlled({\n controlled: openControlProp,\n default: false,\n name: \"DropdownNext\",\n state: \"open\",\n });\n\n // USELIST HOOK\n const {\n focusHandler: listFocusHandler,\n keyDownHandler: listKeyDownHandler,\n mouseOverHandler: listMouseOverHandler,\n activeDescendant,\n selectedItem,\n setSelectedItem,\n highlightedItem,\n setHighlightedItem,\n contextValue: listContextValue,\n } = useList({\n ...listProps,\n });\n\n const { select, highlight } = listContextValue;\n\n // LIST SOURCE\n const getListItems = (source: string[]) => {\n if (!source) return;\n\n return source.map((item, index) => {\n return (\n <ListItemNext\n key={index}\n value={item}\n onMouseDown={(event) => {\n select(event);\n }}\n onMouseMove={(event) => {\n highlight(event);\n }}\n >\n {item}\n </ListItemNext>\n );\n });\n };\n\n // FLOATING PORTAL\n const onOpenChange = (open: boolean) => {\n setOpen(open);\n onOpenChangeProp?.(open);\n };\n\n const {\n floating,\n reference,\n x,\n y,\n strategy,\n placement,\n context,\n elements,\n refs,\n } = useFloatingUI({\n open,\n onOpenChange,\n placement: placementProp,\n middleware: [\n offset(0),\n size({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n });\n },\n }),\n flip(),\n shift({ limiter: limitShift() }),\n ],\n });\n\n const { getReferenceProps, getFloatingProps, getItemProps } = useInteractions(\n [useDismiss(context), useRole(context, { role: \"listbox\" })]\n );\n\n const getDropdownNextProps = (): HTMLProps<HTMLDivElement> => {\n return getFloatingProps({\n // @ts-ignore\n \"data-placement\": placement,\n ref: floating,\n });\n };\n\n const getPosition = () => ({\n top: y ?? 0,\n left: x ?? 0,\n position: strategy,\n width: elements.floating?.clientWidth,\n height: elements.floating?.clientHeight,\n });\n\n // handles focus on mouse and keyboard\n const focusHandler = (event: FocusEvent<HTMLElement>) => {\n if (selectedItem) {\n listFocusHandler(event as FocusEvent<HTMLUListElement>);\n }\n };\n\n // handles mouse click on dropdown button\n const mouseDownHandler = () => {\n setOpen(!open);\n };\n\n // handles mouse hover on dropdown button\n const mouseOverHandler = () => {\n listMouseOverHandler();\n };\n\n const listSelectHandler = () => {\n setOpen(false);\n };\n\n const keyDownHandler = (event: KeyboardEvent<HTMLElement>) => {\n const { key } = event;\n switch (key) {\n case \"ArrowUp\":\n listKeyDownHandler(event);\n break;\n case \"ArrowDown\":\n setOpen(true);\n listKeyDownHandler(event);\n break;\n case \" \":\n case \"Enter\":\n if (!open) {\n setOpen(true);\n break;\n }\n if (open) {\n listKeyDownHandler(event);\n setOpen(false);\n break;\n }\n break;\n case \"Escape\":\n setOpen(false);\n break;\n case \"Tab\":\n setOpen(false);\n break;\n case \"PageUp\":\n case \"PageDown\":\n case \"Home\":\n case \"End\":\n if (open) {\n listKeyDownHandler(event);\n break;\n }\n break;\n default:\n break;\n }\n };\n\n return {\n handlers: {\n keyDownHandler,\n focusHandler,\n mouseOverHandler,\n mouseDownHandler,\n listSelectHandler,\n },\n refs,\n open,\n getReferenceProps,\n getItemProps,\n activeDescendant,\n selectedItem,\n setSelectedItem,\n highlightedItem,\n setHighlightedItem,\n getListItems,\n portalProps: {\n open,\n setOpen,\n floating,\n reference,\n getFloatingProps,\n getDropdownNextProps,\n getPosition,\n },\n };\n};\n"],"names":["useControlled","useList","jsx","ListItemNext","open","useFloatingUI","offset","size","elements","flip","shift","limitShift","useInteractions","useDismiss","useRole"],"mappings":"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"}