@limonify/zest-ui 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/README.md +3 -0
  2. package/lib/alert-dialog/index.parts.d.ts +1 -1
  3. package/lib/alert-dialog/index.parts.d.ts.map +1 -1
  4. package/lib/alert-dialog/index.parts.js.map +1 -1
  5. package/lib/autocomplete/handle.d.ts +15 -0
  6. package/lib/autocomplete/handle.d.ts.map +1 -0
  7. package/lib/autocomplete/handle.js +12 -0
  8. package/lib/autocomplete/handle.js.map +1 -0
  9. package/lib/autocomplete/index.d.ts +1 -0
  10. package/lib/autocomplete/index.d.ts.map +1 -1
  11. package/lib/autocomplete/index.parts.d.ts +1 -0
  12. package/lib/autocomplete/index.parts.d.ts.map +1 -1
  13. package/lib/autocomplete/index.parts.js +3 -1
  14. package/lib/autocomplete/index.parts.js.map +1 -1
  15. package/lib/autocomplete/root/AutocompleteRoot.d.ts +55 -16
  16. package/lib/autocomplete/root/AutocompleteRoot.d.ts.map +1 -1
  17. package/lib/autocomplete/root/AutocompleteRoot.js +2 -18
  18. package/lib/autocomplete/root/AutocompleteRoot.js.map +1 -1
  19. package/lib/avatar/fallback/AvatarFallback.d.ts.map +1 -1
  20. package/lib/avatar/fallback/AvatarFallback.js +3 -1
  21. package/lib/avatar/fallback/AvatarFallback.js.map +1 -1
  22. package/lib/avatar/image/AvatarImage.d.ts.map +1 -1
  23. package/lib/avatar/image/AvatarImage.js +5 -0
  24. package/lib/avatar/image/AvatarImage.js.map +1 -1
  25. package/lib/checkbox/root/CheckboxRoot.d.ts.map +1 -1
  26. package/lib/checkbox/root/CheckboxRoot.js +9 -4
  27. package/lib/checkbox/root/CheckboxRoot.js.map +1 -1
  28. package/lib/combobox/backdrop/ComboboxBackdrop.d.ts.map +1 -1
  29. package/lib/combobox/backdrop/ComboboxBackdrop.js +10 -2
  30. package/lib/combobox/backdrop/ComboboxBackdrop.js.map +1 -1
  31. package/lib/combobox/empty/ComboboxEmpty.d.ts.map +1 -1
  32. package/lib/combobox/empty/ComboboxEmpty.js +4 -1
  33. package/lib/combobox/empty/ComboboxEmpty.js.map +1 -1
  34. package/lib/combobox/index.d.ts +2 -0
  35. package/lib/combobox/index.d.ts.map +1 -1
  36. package/lib/combobox/index.js +3 -1
  37. package/lib/combobox/index.js.map +1 -1
  38. package/lib/combobox/index.parts.d.ts +1 -0
  39. package/lib/combobox/index.parts.d.ts.map +1 -1
  40. package/lib/combobox/index.parts.js +4 -1
  41. package/lib/combobox/index.parts.js.map +1 -1
  42. package/lib/combobox/input/ComboboxInput.d.ts +24 -3
  43. package/lib/combobox/input/ComboboxInput.d.ts.map +1 -1
  44. package/lib/combobox/input/ComboboxInput.js +68 -8
  45. package/lib/combobox/input/ComboboxInput.js.map +1 -1
  46. package/lib/combobox/item/ComboboxItem.d.ts +11 -1
  47. package/lib/combobox/item/ComboboxItem.d.ts.map +1 -1
  48. package/lib/combobox/item/ComboboxItem.js +9 -4
  49. package/lib/combobox/item/ComboboxItem.js.map +1 -1
  50. package/lib/combobox/list/ComboboxList.d.ts +1 -1
  51. package/lib/combobox/list/ComboboxList.d.ts.map +1 -1
  52. package/lib/combobox/list/ComboboxList.js +4 -1
  53. package/lib/combobox/list/ComboboxList.js.map +1 -1
  54. package/lib/combobox/popup/ComboboxPopup.d.ts +26 -0
  55. package/lib/combobox/popup/ComboboxPopup.d.ts.map +1 -1
  56. package/lib/combobox/popup/ComboboxPopup.js +18 -2
  57. package/lib/combobox/popup/ComboboxPopup.js.map +1 -1
  58. package/lib/combobox/portal/ComboboxPortal.d.ts.map +1 -1
  59. package/lib/combobox/portal/ComboboxPortal.js +8 -4
  60. package/lib/combobox/portal/ComboboxPortal.js.map +1 -1
  61. package/lib/combobox/portal/ComboboxPortalContext.d.ts +4 -0
  62. package/lib/combobox/portal/ComboboxPortalContext.d.ts.map +1 -0
  63. package/lib/combobox/portal/ComboboxPortalContext.js +48 -0
  64. package/lib/combobox/portal/ComboboxPortalContext.js.map +1 -0
  65. package/lib/combobox/positioner/ComboboxPositioner.d.ts +11 -1
  66. package/lib/combobox/positioner/ComboboxPositioner.d.ts.map +1 -1
  67. package/lib/combobox/positioner/ComboboxPositioner.js +67 -7
  68. package/lib/combobox/positioner/ComboboxPositioner.js.map +1 -1
  69. package/lib/combobox/positioner/ComboboxPositionerContext.d.ts +9 -0
  70. package/lib/combobox/positioner/ComboboxPositionerContext.d.ts.map +1 -0
  71. package/lib/combobox/positioner/ComboboxPositionerContext.js +48 -0
  72. package/lib/combobox/positioner/ComboboxPositionerContext.js.map +1 -0
  73. package/lib/combobox/root/ComboboxItemsContext.d.ts +18 -0
  74. package/lib/combobox/root/ComboboxItemsContext.d.ts.map +1 -0
  75. package/lib/combobox/root/ComboboxItemsContext.js +55 -0
  76. package/lib/combobox/root/ComboboxItemsContext.js.map +1 -0
  77. package/lib/combobox/root/ComboboxRoot.d.ts +77 -21
  78. package/lib/combobox/root/ComboboxRoot.d.ts.map +1 -1
  79. package/lib/combobox/root/ComboboxRoot.js +4 -23
  80. package/lib/combobox/root/ComboboxRoot.js.map +1 -1
  81. package/lib/combobox/root/ComboboxRootContext.d.ts +4 -43
  82. package/lib/combobox/root/ComboboxRootContext.d.ts.map +1 -1
  83. package/lib/combobox/root/ComboboxRootContext.js.map +1 -1
  84. package/lib/combobox/root/ComboboxTransitionContext.d.ts +8 -0
  85. package/lib/combobox/root/ComboboxTransitionContext.d.ts.map +1 -0
  86. package/lib/combobox/root/ComboboxTransitionContext.js +44 -0
  87. package/lib/combobox/root/ComboboxTransitionContext.js.map +1 -0
  88. package/lib/combobox/root/useRenderComboboxRoot.d.ts +39 -0
  89. package/lib/combobox/root/useRenderComboboxRoot.d.ts.map +1 -0
  90. package/lib/combobox/root/useRenderComboboxRoot.js +136 -0
  91. package/lib/combobox/root/useRenderComboboxRoot.js.map +1 -0
  92. package/lib/combobox/store/ComboboxHandle.d.ts +42 -0
  93. package/lib/combobox/store/ComboboxHandle.d.ts.map +1 -0
  94. package/lib/combobox/store/ComboboxHandle.js +65 -0
  95. package/lib/combobox/store/ComboboxHandle.js.map +1 -0
  96. package/lib/combobox/store/ComboboxStore.d.ts +147 -0
  97. package/lib/combobox/store/ComboboxStore.d.ts.map +1 -0
  98. package/lib/combobox/store/ComboboxStore.js +127 -0
  99. package/lib/combobox/store/ComboboxStore.js.map +1 -0
  100. package/lib/combobox/value/ComboboxValue.d.ts.map +1 -1
  101. package/lib/combobox/value/ComboboxValue.js +2 -1
  102. package/lib/combobox/value/ComboboxValue.js.map +1 -1
  103. package/lib/context-menu/positioner/ContextMenuPositioner.d.ts +19 -3
  104. package/lib/context-menu/positioner/ContextMenuPositioner.d.ts.map +1 -1
  105. package/lib/context-menu/positioner/ContextMenuPositioner.js +56 -7
  106. package/lib/context-menu/positioner/ContextMenuPositioner.js.map +1 -1
  107. package/lib/context-menu/root/ContextMenuRoot.d.ts +8 -0
  108. package/lib/context-menu/root/ContextMenuRoot.d.ts.map +1 -1
  109. package/lib/dialog/backdrop/DialogBackdrop.d.ts +9 -0
  110. package/lib/dialog/backdrop/DialogBackdrop.d.ts.map +1 -1
  111. package/lib/dialog/backdrop/DialogBackdrop.js +3 -1
  112. package/lib/dialog/backdrop/DialogBackdrop.js.map +1 -1
  113. package/lib/dialog/popup/DialogPopup.d.ts +9 -0
  114. package/lib/dialog/popup/DialogPopup.d.ts.map +1 -1
  115. package/lib/dialog/popup/DialogPopup.js +2 -2
  116. package/lib/dialog/popup/DialogPopup.js.map +1 -1
  117. package/lib/dialog/popup/useDialogPopupProps.d.ts +2 -0
  118. package/lib/dialog/popup/useDialogPopupProps.d.ts.map +1 -1
  119. package/lib/dialog/popup/useDialogPopupProps.js +4 -0
  120. package/lib/dialog/popup/useDialogPopupProps.js.map +1 -1
  121. package/lib/dialog/root/DialogNestingContext.d.ts +20 -0
  122. package/lib/dialog/root/DialogNestingContext.d.ts.map +1 -0
  123. package/lib/dialog/root/DialogNestingContext.js +53 -0
  124. package/lib/dialog/root/DialogNestingContext.js.map +1 -0
  125. package/lib/dialog/root/useRenderDialogRoot.d.ts.map +1 -1
  126. package/lib/dialog/root/useRenderDialogRoot.js +26 -2
  127. package/lib/dialog/root/useRenderDialogRoot.js.map +1 -1
  128. package/lib/dialog/store/DialogStore.d.ts +19 -2
  129. package/lib/dialog/store/DialogStore.d.ts.map +1 -1
  130. package/lib/dialog/store/DialogStore.js +14 -2
  131. package/lib/dialog/store/DialogStore.js.map +1 -1
  132. package/lib/drawer/index.parts.d.ts +1 -1
  133. package/lib/drawer/index.parts.d.ts.map +1 -1
  134. package/lib/drawer/index.parts.js.map +1 -1
  135. package/lib/drawer/popup/DrawerPopup.d.ts +9 -0
  136. package/lib/drawer/popup/DrawerPopup.d.ts.map +1 -1
  137. package/lib/drawer/popup/DrawerPopup.js +3 -1
  138. package/lib/drawer/popup/DrawerPopup.js.map +1 -1
  139. package/lib/filter/index.d.ts +2 -0
  140. package/lib/filter/index.d.ts.map +1 -0
  141. package/lib/filter/index.js +6 -0
  142. package/lib/filter/index.js.map +1 -0
  143. package/lib/filter/useFilter.d.ts +45 -0
  144. package/lib/filter/useFilter.d.ts.map +1 -0
  145. package/lib/filter/useFilter.js +96 -0
  146. package/lib/filter/useFilter.js.map +1 -0
  147. package/lib/index.d.ts +1 -0
  148. package/lib/index.d.ts.map +1 -1
  149. package/lib/index.js +1 -0
  150. package/lib/index.js.map +1 -1
  151. package/lib/internals/field/useFieldControlRegistration.d.ts +25 -6
  152. package/lib/internals/field/useFieldControlRegistration.d.ts.map +1 -1
  153. package/lib/internals/field/useFieldControlRegistration.js +93 -6
  154. package/lib/internals/field/useFieldControlRegistration.js.map +1 -1
  155. package/lib/menu/popup/MenuPopup.d.ts +10 -0
  156. package/lib/menu/popup/MenuPopup.d.ts.map +1 -1
  157. package/lib/menu/popup/MenuPopup.js +10 -1
  158. package/lib/menu/popup/MenuPopup.js.map +1 -1
  159. package/lib/menu/positioner/MenuPositioner.d.ts +10 -0
  160. package/lib/menu/positioner/MenuPositioner.d.ts.map +1 -1
  161. package/lib/menu/positioner/MenuPositioner.js +9 -1
  162. package/lib/menu/positioner/MenuPositioner.js.map +1 -1
  163. package/lib/menu/store/MenuStore.d.ts +11 -0
  164. package/lib/menu/store/MenuStore.d.ts.map +1 -1
  165. package/lib/menu/store/MenuStore.js +4 -0
  166. package/lib/menu/store/MenuStore.js.map +1 -1
  167. package/lib/menu/submenu-trigger/MenuSubmenuTrigger.d.ts.map +1 -1
  168. package/lib/menu/submenu-trigger/MenuSubmenuTrigger.js +3 -0
  169. package/lib/menu/submenu-trigger/MenuSubmenuTrigger.js.map +1 -1
  170. package/lib/menu/trigger/MenuTrigger.d.ts.map +1 -1
  171. package/lib/menu/trigger/MenuTrigger.js +4 -1
  172. package/lib/menu/trigger/MenuTrigger.js.map +1 -1
  173. package/lib/meter/indicator/MeterIndicator.d.ts +2 -1
  174. package/lib/meter/indicator/MeterIndicator.d.ts.map +1 -1
  175. package/lib/meter/indicator/MeterIndicator.js +1 -2
  176. package/lib/meter/indicator/MeterIndicator.js.map +1 -1
  177. package/lib/meter/label/MeterLabel.d.ts +2 -1
  178. package/lib/meter/label/MeterLabel.d.ts.map +1 -1
  179. package/lib/meter/label/MeterLabel.js +1 -2
  180. package/lib/meter/label/MeterLabel.js.map +1 -1
  181. package/lib/meter/root/MeterRoot.d.ts +21 -0
  182. package/lib/meter/root/MeterRoot.d.ts.map +1 -1
  183. package/lib/meter/root/MeterRoot.js +2 -2
  184. package/lib/meter/root/MeterRoot.js.map +1 -1
  185. package/lib/meter/root/MeterRootContext.d.ts +5 -0
  186. package/lib/meter/root/MeterRootContext.d.ts.map +1 -1
  187. package/lib/meter/root/MeterRootContext.js.map +1 -1
  188. package/lib/meter/track/MeterTrack.d.ts +2 -1
  189. package/lib/meter/track/MeterTrack.d.ts.map +1 -1
  190. package/lib/meter/track/MeterTrack.js +1 -2
  191. package/lib/meter/track/MeterTrack.js.map +1 -1
  192. package/lib/meter/value/MeterValue.d.ts +2 -1
  193. package/lib/meter/value/MeterValue.d.ts.map +1 -1
  194. package/lib/meter/value/MeterValue.js +1 -2
  195. package/lib/meter/value/MeterValue.js.map +1 -1
  196. package/lib/number-field/input/NumberFieldInput.d.ts.map +1 -1
  197. package/lib/number-field/input/NumberFieldInput.js +11 -2
  198. package/lib/number-field/input/NumberFieldInput.js.map +1 -1
  199. package/lib/number-field/root/NumberFieldRoot.d.ts.map +1 -1
  200. package/lib/number-field/root/NumberFieldRoot.js +5 -2
  201. package/lib/number-field/root/NumberFieldRoot.js.map +1 -1
  202. package/lib/otp-field/input/OTPFieldInput.d.ts.map +1 -1
  203. package/lib/otp-field/input/OTPFieldInput.js +4 -0
  204. package/lib/otp-field/input/OTPFieldInput.js.map +1 -1
  205. package/lib/otp-field/root/OTPFieldRoot.d.ts.map +1 -1
  206. package/lib/otp-field/root/OTPFieldRoot.js +20 -2
  207. package/lib/otp-field/root/OTPFieldRoot.js.map +1 -1
  208. package/lib/popover/popup/PopoverPopup.d.ts +10 -0
  209. package/lib/popover/popup/PopoverPopup.d.ts.map +1 -1
  210. package/lib/popover/popup/PopoverPopup.js +10 -1
  211. package/lib/popover/popup/PopoverPopup.js.map +1 -1
  212. package/lib/popover/positioner/PopoverPositioner.d.ts +10 -0
  213. package/lib/popover/positioner/PopoverPositioner.d.ts.map +1 -1
  214. package/lib/popover/positioner/PopoverPositioner.js +4 -0
  215. package/lib/popover/positioner/PopoverPositioner.js.map +1 -1
  216. package/lib/popover/store/PopoverStore.d.ts +11 -0
  217. package/lib/popover/store/PopoverStore.d.ts.map +1 -1
  218. package/lib/popover/store/PopoverStore.js +4 -0
  219. package/lib/popover/store/PopoverStore.js.map +1 -1
  220. package/lib/popover/trigger/PopoverTrigger.d.ts.map +1 -1
  221. package/lib/popover/trigger/PopoverTrigger.js +4 -1
  222. package/lib/popover/trigger/PopoverTrigger.js.map +1 -1
  223. package/lib/progress/root/ProgressRoot.d.ts +21 -0
  224. package/lib/progress/root/ProgressRoot.d.ts.map +1 -1
  225. package/lib/progress/root/ProgressRoot.js +1 -1
  226. package/lib/progress/root/ProgressRoot.js.map +1 -1
  227. package/lib/radio-group/RadioGroup.d.ts.map +1 -1
  228. package/lib/radio-group/RadioGroup.js +5 -2
  229. package/lib/radio-group/RadioGroup.js.map +1 -1
  230. package/lib/select/backdrop/SelectBackdrop.d.ts.map +1 -1
  231. package/lib/select/backdrop/SelectBackdrop.js +3 -0
  232. package/lib/select/backdrop/SelectBackdrop.js.map +1 -1
  233. package/lib/select/index.parts.d.ts +1 -0
  234. package/lib/select/index.parts.d.ts.map +1 -1
  235. package/lib/select/index.parts.js +4 -1
  236. package/lib/select/index.parts.js.map +1 -1
  237. package/lib/select/popup/SelectPopup.d.ts +8 -0
  238. package/lib/select/popup/SelectPopup.d.ts.map +1 -1
  239. package/lib/select/popup/SelectPopup.js +10 -1
  240. package/lib/select/popup/SelectPopup.js.map +1 -1
  241. package/lib/select/positioner/SelectPositioner.d.ts +9 -0
  242. package/lib/select/positioner/SelectPositioner.d.ts.map +1 -1
  243. package/lib/select/positioner/SelectPositioner.js +9 -1
  244. package/lib/select/positioner/SelectPositioner.js.map +1 -1
  245. package/lib/select/root/SelectRoot.d.ts +45 -4
  246. package/lib/select/root/SelectRoot.d.ts.map +1 -1
  247. package/lib/select/root/SelectRoot.js +43 -5
  248. package/lib/select/root/SelectRoot.js.map +1 -1
  249. package/lib/select/store/SelectHandle.d.ts +42 -0
  250. package/lib/select/store/SelectHandle.d.ts.map +1 -0
  251. package/lib/select/store/SelectHandle.js +69 -0
  252. package/lib/select/store/SelectHandle.js.map +1 -0
  253. package/lib/select/store/SelectStore.d.ts +33 -0
  254. package/lib/select/store/SelectStore.d.ts.map +1 -1
  255. package/lib/select/store/SelectStore.js +17 -1
  256. package/lib/select/store/SelectStore.js.map +1 -1
  257. package/lib/select/trigger/SelectTrigger.d.ts +18 -3
  258. package/lib/select/trigger/SelectTrigger.d.ts.map +1 -1
  259. package/lib/select/trigger/SelectTrigger.js +51 -4
  260. package/lib/select/trigger/SelectTrigger.js.map +1 -1
  261. package/lib/slider/root/SliderRoot.d.ts.map +1 -1
  262. package/lib/slider/root/SliderRoot.js +9 -1
  263. package/lib/slider/root/SliderRoot.js.map +1 -1
  264. package/lib/slider/thumb/SliderThumb.d.ts.map +1 -1
  265. package/lib/slider/thumb/SliderThumb.js +10 -2
  266. package/lib/slider/thumb/SliderThumb.js.map +1 -1
  267. package/lib/switch/root/SwitchRoot.d.ts.map +1 -1
  268. package/lib/switch/root/SwitchRoot.js +6 -2
  269. package/lib/switch/root/SwitchRoot.js.map +1 -1
  270. package/lib/tabs/tab/TabsTab.d.ts +2 -10
  271. package/lib/tabs/tab/TabsTab.d.ts.map +1 -1
  272. package/lib/tooltip/popup/TooltipPopup.d.ts +10 -0
  273. package/lib/tooltip/popup/TooltipPopup.d.ts.map +1 -1
  274. package/lib/tooltip/popup/TooltipPopup.js +10 -1
  275. package/lib/tooltip/popup/TooltipPopup.js.map +1 -1
  276. package/lib/tooltip/positioner/TooltipPositioner.d.ts +10 -0
  277. package/lib/tooltip/positioner/TooltipPositioner.d.ts.map +1 -1
  278. package/lib/tooltip/positioner/TooltipPositioner.js +4 -0
  279. package/lib/tooltip/positioner/TooltipPositioner.js.map +1 -1
  280. package/lib/tooltip/store/TooltipStore.d.ts +11 -0
  281. package/lib/tooltip/store/TooltipStore.d.ts.map +1 -1
  282. package/lib/tooltip/store/TooltipStore.js +11 -1
  283. package/lib/tooltip/store/TooltipStore.js.map +1 -1
  284. package/lib/tooltip/trigger/TooltipTrigger.d.ts.map +1 -1
  285. package/lib/tooltip/trigger/TooltipTrigger.js +4 -1
  286. package/lib/tooltip/trigger/TooltipTrigger.js.map +1 -1
  287. package/package.json +1 -1
  288. package/src/alert-dialog/index.parts.ts +1 -1
  289. package/src/autocomplete/handle.ts +18 -0
  290. package/src/autocomplete/index.parts.ts +1 -0
  291. package/src/autocomplete/index.ts +1 -0
  292. package/src/autocomplete/root/AutocompleteRoot.tsx +65 -50
  293. package/src/avatar/fallback/AvatarFallback.tsx +3 -1
  294. package/src/avatar/image/AvatarImage.tsx +5 -0
  295. package/src/checkbox/root/CheckboxRoot.tsx +7 -2
  296. package/src/combobox/backdrop/ComboboxBackdrop.tsx +10 -2
  297. package/src/combobox/empty/ComboboxEmpty.tsx +5 -1
  298. package/src/combobox/index.parts.ts +1 -0
  299. package/src/combobox/index.ts +2 -0
  300. package/src/combobox/input/ComboboxInput.tsx +118 -23
  301. package/src/combobox/item/ComboboxItem.tsx +24 -5
  302. package/src/combobox/list/ComboboxList.tsx +7 -2
  303. package/src/combobox/popup/ComboboxPopup.tsx +44 -2
  304. package/src/combobox/portal/ComboboxPortal.tsx +19 -13
  305. package/src/combobox/portal/ComboboxPortalContext.ts +15 -0
  306. package/src/combobox/positioner/ComboboxPositioner.tsx +52 -7
  307. package/src/combobox/positioner/ComboboxPositionerContext.ts +23 -0
  308. package/src/combobox/root/ComboboxItemsContext.ts +32 -0
  309. package/src/combobox/root/ComboboxRoot.tsx +94 -56
  310. package/src/combobox/root/ComboboxRootContext.ts +3 -43
  311. package/src/combobox/root/ComboboxTransitionContext.ts +15 -0
  312. package/src/combobox/root/useRenderComboboxRoot.tsx +189 -0
  313. package/src/combobox/store/ComboboxHandle.ts +64 -0
  314. package/src/combobox/store/ComboboxStore.ts +249 -0
  315. package/src/combobox/value/ComboboxValue.tsx +2 -1
  316. package/src/context-menu/positioner/ContextMenuPositioner.tsx +90 -10
  317. package/src/context-menu/root/ContextMenuRoot.tsx +8 -0
  318. package/src/dialog/backdrop/DialogBackdrop.tsx +12 -1
  319. package/src/dialog/popup/DialogPopup.tsx +11 -2
  320. package/src/dialog/popup/useDialogPopupProps.ts +4 -0
  321. package/src/dialog/root/DialogNestingContext.ts +27 -0
  322. package/src/dialog/root/useRenderDialogRoot.tsx +37 -2
  323. package/src/dialog/store/DialogStore.ts +24 -2
  324. package/src/drawer/index.parts.ts +1 -1
  325. package/src/drawer/popup/DrawerPopup.tsx +12 -1
  326. package/src/filter/index.ts +5 -0
  327. package/src/filter/useFilter.ts +95 -0
  328. package/src/index.ts +1 -0
  329. package/src/internals/field/useFieldControlRegistration.ts +86 -6
  330. package/src/menu/popup/MenuPopup.tsx +20 -1
  331. package/src/menu/positioner/MenuPositioner.tsx +19 -1
  332. package/src/menu/store/MenuStore.ts +13 -0
  333. package/src/menu/submenu-trigger/MenuSubmenuTrigger.tsx +3 -0
  334. package/src/menu/trigger/MenuTrigger.tsx +5 -2
  335. package/src/meter/indicator/MeterIndicator.tsx +3 -4
  336. package/src/meter/label/MeterLabel.tsx +3 -4
  337. package/src/meter/root/MeterRoot.tsx +29 -4
  338. package/src/meter/root/MeterRootContext.ts +5 -0
  339. package/src/meter/track/MeterTrack.tsx +3 -4
  340. package/src/meter/value/MeterValue.tsx +3 -4
  341. package/src/number-field/input/NumberFieldInput.tsx +11 -2
  342. package/src/number-field/root/NumberFieldRoot.tsx +4 -2
  343. package/src/otp-field/input/OTPFieldInput.tsx +4 -0
  344. package/src/otp-field/root/OTPFieldRoot.tsx +22 -2
  345. package/src/popover/popup/PopoverPopup.tsx +20 -1
  346. package/src/popover/positioner/PopoverPositioner.tsx +14 -0
  347. package/src/popover/store/PopoverStore.ts +13 -0
  348. package/src/popover/trigger/PopoverTrigger.tsx +5 -2
  349. package/src/progress/root/ProgressRoot.tsx +25 -1
  350. package/src/radio-group/RadioGroup.tsx +5 -2
  351. package/src/select/backdrop/SelectBackdrop.tsx +4 -0
  352. package/src/select/index.parts.ts +1 -0
  353. package/src/select/popup/SelectPopup.tsx +18 -1
  354. package/src/select/positioner/SelectPositioner.tsx +18 -1
  355. package/src/select/root/SelectRoot.tsx +109 -9
  356. package/src/select/store/SelectHandle.ts +68 -0
  357. package/src/select/store/SelectStore.ts +44 -1
  358. package/src/select/trigger/SelectTrigger.tsx +81 -8
  359. package/src/slider/root/SliderRoot.tsx +11 -1
  360. package/src/slider/thumb/SliderThumb.tsx +10 -1
  361. package/src/switch/root/SwitchRoot.tsx +5 -2
  362. package/src/tabs/tab/TabsTab.tsx +2 -10
  363. package/src/tooltip/popup/TooltipPopup.tsx +20 -1
  364. package/src/tooltip/positioner/TooltipPositioner.tsx +14 -0
  365. package/src/tooltip/store/TooltipStore.ts +20 -1
  366. package/src/tooltip/trigger/TooltipTrigger.tsx +5 -2
  367. package/lib/combobox/root/useComboboxRoot.d.ts +0 -29
  368. package/lib/combobox/root/useComboboxRoot.d.ts.map +0 -1
  369. package/lib/combobox/root/useComboboxRoot.js +0 -168
  370. package/lib/combobox/root/useComboboxRoot.js.map +0 -1
  371. package/lib/utils/fastObjectShallowCompare.d.ts +0 -2
  372. package/lib/utils/fastObjectShallowCompare.d.ts.map +0 -1
  373. package/lib/utils/fastObjectShallowCompare.js +0 -29
  374. package/lib/utils/fastObjectShallowCompare.js.map +0 -1
  375. package/lib/utils/mergeObjects.d.ts +0 -2
  376. package/lib/utils/mergeObjects.d.ts.map +0 -1
  377. package/lib/utils/mergeObjects.js +0 -16
  378. package/lib/utils/mergeObjects.js.map +0 -1
  379. package/src/combobox/root/useComboboxRoot.ts +0 -190
  380. package/src/utils/fastObjectShallowCompare.ts +0 -30
  381. package/src/utils/mergeObjects.ts +0 -15
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.useRenderComboboxRoot = useRenderComboboxRoot;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ const React = __importStar(require("react"));
40
+ const useIsoLayoutEffect_1 = require("../../hooks/useIsoLayoutEffect");
41
+ const useRefWithInit_1 = require("../../hooks/useRefWithInit");
42
+ const useTransitionStatus_1 = require("../../internals/useTransitionStatus");
43
+ const usePopupRootHandle_1 = require("../../utils/popups/usePopupRootHandle");
44
+ const useFilter_1 = require("../../filter/useFilter");
45
+ const ComboboxStore_1 = require("../store/ComboboxStore");
46
+ const ComboboxItemsContext_1 = require("./ComboboxItemsContext");
47
+ const ComboboxRootContext_1 = require("./ComboboxRootContext");
48
+ const ComboboxTransitionContext_1 = require("./ComboboxTransitionContext");
49
+ /**
50
+ * The shared Root implementation behind `Combobox.Root` and `Autocomplete.Root`.
51
+ *
52
+ * The two differ only in whether choosing an item records a separate value:
53
+ * a combobox selects `item.value` and shows its label, an autocomplete puts the
54
+ * typed text itself forward and treats the list as suggestions.
55
+ */
56
+ function useRenderComboboxRoot(props, mode) {
57
+ var _a, _b, _c, _d;
58
+ const { actionsRef, children, defaultInputValue, defaultOpen = false, defaultTriggerId = null, defaultValue, disablePointerDismissal = false, disabled = false, filter, handle, inputValue, items, onInputValueChange, onOpenChange, onValueChange, open, openOnFocus = true, triggerId, value, } = props;
59
+ const normalizedItems = React.useMemo(() => (0, ComboboxStore_1.normalizeComboboxItems)(items), [items]);
60
+ const { contains } = (0, useFilter_1.useFilter)();
61
+ const filterItem = React.useMemo(() => filter !== null && filter !== void 0 ? filter : ((item, query) => contains(item.label, query)), [filter, contains]);
62
+ // The initial input text is only read on the first render; compute it once so
63
+ // it stays stable, or a later selection changing the controlled `value` (and
64
+ // with it the derived label) would look like a controlled/uncontrolled switch.
65
+ const initialInputRef = React.useRef(undefined);
66
+ if (initialInputRef.current === undefined) {
67
+ initialInputRef.current =
68
+ defaultInputValue !== null && defaultInputValue !== void 0 ? defaultInputValue : (mode === 'combobox'
69
+ ? ((_b = (_a = normalizedItems.find((item) => item.value === (value !== null && value !== void 0 ? value : defaultValue))) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : '')
70
+ : '');
71
+ }
72
+ const store = (0, useRefWithInit_1.useRefWithInit)(() => new ComboboxStore_1.ComboboxStore({
73
+ open: defaultOpen,
74
+ openProp: open,
75
+ value: defaultValue !== null && defaultValue !== void 0 ? defaultValue : null,
76
+ valueProp: value,
77
+ inputValue: initialInputRef.current,
78
+ inputValueProp: inputValue,
79
+ items: normalizedItems,
80
+ mode,
81
+ disabled,
82
+ disablePointerDismissal,
83
+ openOnFocus,
84
+ triggerId: defaultTriggerId,
85
+ triggerIdProp: triggerId,
86
+ })).current;
87
+ store.useControlledProp('openProp', open);
88
+ store.useControlledProp('valueProp', value);
89
+ store.useControlledProp('inputValueProp', inputValue);
90
+ store.useControlledProp('triggerIdProp', triggerId);
91
+ store.useContextCallback('onOpenChange', onOpenChange);
92
+ store.useContextCallback('onValueChange', onValueChange);
93
+ store.useContextCallback('onInputValueChange', onInputValueChange);
94
+ store.useSyncedValues({
95
+ mode,
96
+ disabled,
97
+ disablePointerDismissal,
98
+ openOnFocus,
99
+ items: normalizedItems,
100
+ });
101
+ (0, usePopupRootHandle_1.usePopupRootHandle)({ store, handle, actionsRef });
102
+ const resolvedOpen = store.useState('open');
103
+ const selectedValue = store.useState('value');
104
+ const currentInputValue = store.useState('inputValue');
105
+ // The label of the currently selected value (combobox mode only).
106
+ const selectedLabel = mode === 'combobox'
107
+ ? ((_d = (_c = normalizedItems.find((item) => item.value === selectedValue)) === null || _c === void 0 ? void 0 : _c.label) !== null && _d !== void 0 ? _d : '')
108
+ : '';
109
+ // Reflect a controlled `value` that changed from outside into the input text.
110
+ // `selectItem` already sets both, so the ref guard makes that a no-op and stops
111
+ // this from fighting the user's typing (typing never changes the selection).
112
+ const lastReflectedValueRef = React.useRef(selectedValue);
113
+ (0, useIsoLayoutEffect_1.useIsoLayoutEffect)(() => {
114
+ if (mode !== 'combobox' || selectedValue === lastReflectedValueRef.current) {
115
+ return;
116
+ }
117
+ lastReflectedValueRef.current = selectedValue;
118
+ store.reflectInputValue(selectedLabel);
119
+ }, [mode, selectedValue, selectedLabel, store]);
120
+ const filteredItems = React.useMemo(() => {
121
+ // When the input still shows the current selection, the user has not started
122
+ // filtering — show every item so a fresh focus reveals the whole list rather
123
+ // than the single selected row.
124
+ const query = mode === 'combobox' && currentInputValue === selectedLabel ? '' : currentInputValue.trim();
125
+ if (query.length === 0) {
126
+ return normalizedItems;
127
+ }
128
+ return normalizedItems.filter((item) => filterItem(item, query));
129
+ }, [normalizedItems, currentInputValue, selectedLabel, mode, filterItem]);
130
+ const { transitionStatus } = (0, useTransitionStatus_1.useTransitionStatus)(resolvedOpen, false, true);
131
+ const itemsContextValue = React.useMemo(() => ({ filteredItems }), [filteredItems]);
132
+ const transitionContextValue = React.useMemo(() => ({ transitionStatus }), [transitionStatus]);
133
+ const payload = store.useState('payload');
134
+ return ((0, jsx_runtime_1.jsx)(ComboboxRootContext_1.ComboboxRootContext.Provider, { value: store, children: (0, jsx_runtime_1.jsx)(ComboboxItemsContext_1.ComboboxItemsContext.Provider, { value: itemsContextValue, children: (0, jsx_runtime_1.jsx)(ComboboxTransitionContext_1.ComboboxTransitionContext.Provider, { value: transitionContextValue, children: typeof children === 'function' ? children(payload) : children }) }) }));
135
+ }
136
+ //# sourceMappingURL=useRenderComboboxRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRenderComboboxRoot.js","sourceRoot":"","sources":["../../../src/combobox/root/useRenderComboboxRoot.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { ComboboxStore } from './ComboboxStore';
2
+ import { BasePopupHandle } from '../../utils/popups/BasePopupHandle';
3
+ /**
4
+ * Controls a combobox imperatively, and associates a `Combobox.Input` rendered
5
+ * outside the root with it. Create one with `Combobox.createHandle()` and pass
6
+ * it to the root's and the input's `handle` prop.
7
+ *
8
+ * The imperative methods only take effect while a root using this handle is
9
+ * mounted; calls made before one attaches (or after it unmounts) are ignored.
10
+ */
11
+ export declare class ComboboxHandle extends BasePopupHandle<ComboboxStore, ComboboxStore> {
12
+ constructor(componentName?: string);
13
+ /**
14
+ * Points the positioner at the input the list was opened from. Without this an
15
+ * imperative open would anchor to whatever was last measured.
16
+ */
17
+ protected associateTrigger(store: ComboboxStore, triggerNode: unknown): void;
18
+ /**
19
+ * Opens the list, anchored to the input with the given id.
20
+ *
21
+ * Call this from an event handler or an effect, never during rendering.
22
+ *
23
+ * @param triggerId The `nativeID` of a mounted `Combobox.Input` carrying this handle.
24
+ */
25
+ open(triggerId: string): void;
26
+ /**
27
+ * Closes the list.
28
+ *
29
+ * Call this from an event handler or an effect, never during rendering.
30
+ */
31
+ close(): void;
32
+ /**
33
+ * Whether the list is open. `false` while no root is attached.
34
+ */
35
+ get isOpen(): boolean;
36
+ }
37
+ /**
38
+ * Creates a handle that connects a `Combobox.Root` to a `Combobox.Input`
39
+ * rendered outside it, and controls it imperatively.
40
+ */
41
+ export declare function createComboboxHandle(): ComboboxHandle;
42
+ //# sourceMappingURL=ComboboxHandle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComboboxHandle.d.ts","sourceRoot":"","sources":["../../../src/combobox/store/ComboboxHandle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE;;;;;;;GAOG;AACH,qBAAa,cAAe,SAAQ,eAAe,CAAC,aAAa,EAAE,aAAa,CAAC;gBACnE,aAAa,GAAE,MAAmB;IAO9C;;;OAGG;cACgB,gBAAgB,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO;IAM9E;;;;;;OAMG;IACH,IAAI,CAAC,SAAS,EAAE,MAAM;IAItB;;;;OAIG;IACH,KAAK;IAIL;;OAEG;IACH,IAAI,MAAM,YAET;CACF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAErD"}
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ComboboxHandle = void 0;
4
+ exports.createComboboxHandle = createComboboxHandle;
5
+ const ComboboxStore_1 = require("./ComboboxStore");
6
+ const BasePopupHandle_1 = require("../../utils/popups/BasePopupHandle");
7
+ /**
8
+ * Controls a combobox imperatively, and associates a `Combobox.Input` rendered
9
+ * outside the root with it. Create one with `Combobox.createHandle()` and pass
10
+ * it to the root's and the input's `handle` prop.
11
+ *
12
+ * The imperative methods only take effect while a root using this handle is
13
+ * mounted; calls made before one attaches (or after it unmounts) are ignored.
14
+ */
15
+ class ComboboxHandle extends BasePopupHandle_1.BasePopupHandle {
16
+ constructor(componentName = 'Combobox') {
17
+ // `true`: the list is anchored to the input, so opening it by an unknown
18
+ // trigger id is an error rather than a warning — there would be nothing to
19
+ // anchor to.
20
+ super(new ComboboxStore_1.ComboboxStore(), componentName, true);
21
+ }
22
+ /**
23
+ * Points the positioner at the input the list was opened from. Without this an
24
+ * imperative open would anchor to whatever was last measured.
25
+ */
26
+ associateTrigger(store, triggerNode) {
27
+ if (triggerNode !== undefined) {
28
+ store.set('triggerNode', triggerNode);
29
+ }
30
+ }
31
+ /**
32
+ * Opens the list, anchored to the input with the given id.
33
+ *
34
+ * Call this from an event handler or an effect, never during rendering.
35
+ *
36
+ * @param triggerId The `nativeID` of a mounted `Combobox.Input` carrying this handle.
37
+ */
38
+ open(triggerId) {
39
+ this.openByTrigger(triggerId);
40
+ }
41
+ /**
42
+ * Closes the list.
43
+ *
44
+ * Call this from an event handler or an effect, never during rendering.
45
+ */
46
+ close() {
47
+ this.closePopup();
48
+ }
49
+ /**
50
+ * Whether the list is open. `false` while no root is attached.
51
+ */
52
+ get isOpen() {
53
+ var _a, _b;
54
+ return (_b = (_a = this.attachedStore) === null || _a === void 0 ? void 0 : _a.select('open')) !== null && _b !== void 0 ? _b : false;
55
+ }
56
+ }
57
+ exports.ComboboxHandle = ComboboxHandle;
58
+ /**
59
+ * Creates a handle that connects a `Combobox.Root` to a `Combobox.Input`
60
+ * rendered outside it, and controls it imperatively.
61
+ */
62
+ function createComboboxHandle() {
63
+ return new ComboboxHandle();
64
+ }
65
+ //# sourceMappingURL=ComboboxHandle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComboboxHandle.js","sourceRoot":"","sources":["../../../src/combobox/store/ComboboxHandle.ts"],"names":[],"mappings":";;;AA6DA,oDAEC;AA/DD,mDAAgD;AAChD,wEAAqE;AAErE;;;;;;;GAOG;AACH,MAAa,cAAe,SAAQ,iCAA6C;IAC/E,YAAY,gBAAwB,UAAU;QAC5C,yEAAyE;QACzE,2EAA2E;QAC3E,aAAa;QACb,KAAK,CAAC,IAAI,6BAAa,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACgB,gBAAgB,CAAC,KAAoB,EAAE,WAAoB;QAC5E,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,IAAI,CAAC,SAAiB;QACpB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;;QACR,OAAO,MAAA,MAAA,IAAI,CAAC,aAAa,0CAAE,MAAM,CAAC,MAAM,CAAC,mCAAI,KAAK,CAAC;IACrD,CAAC;CACF;AA5CD,wCA4CC;AAED;;;GAGG;AACH,SAAgB,oBAAoB;IAClC,OAAO,IAAI,cAAc,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,147 @@
1
+ import type { TextInput } from 'react-native';
2
+ import { ReactStore } from '../../store/ReactStore';
3
+ import { PopupTriggerMap } from '../../utils/popups/PopupTriggerMap';
4
+ import type { ComboboxRoot } from '../root/ComboboxRoot';
5
+ /**
6
+ * The items to filter and choose from: strings, or `{ value, label }` records
7
+ * for non-string values.
8
+ */
9
+ export type ComboboxItems = ReadonlyArray<string | {
10
+ value: unknown;
11
+ label: string;
12
+ }>;
13
+ export interface ComboboxItem {
14
+ value: unknown;
15
+ label: string;
16
+ }
17
+ /** Normalizes the `items` prop into `{ value, label }` records. */
18
+ export declare function normalizeComboboxItems(items: ComboboxItems | undefined): ComboboxItem[];
19
+ export type State = {
20
+ /**
21
+ * The uncontrolled open state. Read through the `open` selector, which
22
+ * resolves the controlled prop first.
23
+ */
24
+ open: boolean;
25
+ /**
26
+ * The controlled `open` prop, when provided.
27
+ */
28
+ openProp: boolean | undefined;
29
+ /**
30
+ * The uncontrolled selected value. Read through the `value` selector.
31
+ */
32
+ value: unknown;
33
+ /**
34
+ * The controlled `value` prop, when provided.
35
+ */
36
+ valueProp: unknown;
37
+ /**
38
+ * The uncontrolled input text. Read through the `inputValue` selector.
39
+ */
40
+ inputValue: string;
41
+ /**
42
+ * The controlled `inputValue` prop, when provided.
43
+ */
44
+ inputValueProp: string | undefined;
45
+ /**
46
+ * Every item, normalized.
47
+ */
48
+ items: ComboboxItem[];
49
+ /**
50
+ * `'combobox'` selects a value and shows its label; `'autocomplete'` is free
51
+ * text with suggestions, where the typed string is the value.
52
+ */
53
+ mode: 'combobox' | 'autocomplete';
54
+ disabled: boolean;
55
+ disablePointerDismissal: boolean;
56
+ /**
57
+ * Whether focusing the input opens the list.
58
+ */
59
+ openOnFocus: boolean;
60
+ /**
61
+ * The anchor's native node, carried across the portal boundary.
62
+ */
63
+ triggerNode: unknown;
64
+ /**
65
+ * The input's measured width, used to size the popup.
66
+ */
67
+ triggerWidth: number | undefined;
68
+ /**
69
+ * The input's measured height.
70
+ */
71
+ triggerHeight: number | undefined;
72
+ update: (() => void) | undefined;
73
+ /**
74
+ * Ref to the input element, for programmatic blur.
75
+ */
76
+ inputRef: React.RefObject<TextInput | null> | undefined;
77
+ /**
78
+ * The payload of the trigger the popup was opened by, handed to the root's
79
+ * children when they are a function.
80
+ */
81
+ payload: unknown;
82
+ /**
83
+ * The id of the trigger the popup is associated with, or `null` for none.
84
+ */
85
+ triggerId: string | null;
86
+ /**
87
+ * The controlled `triggerId` prop, when provided.
88
+ */
89
+ triggerIdProp: string | null | undefined;
90
+ };
91
+ type Context = {
92
+ onOpenChange: ((open: boolean, eventDetails: ComboboxRoot.ChangeEventDetails) => void) | undefined;
93
+ onValueChange: ((value: any, eventDetails: ComboboxRoot.ChangeEventDetails) => void) | undefined;
94
+ onInputValueChange: ((value: string, eventDetails: ComboboxRoot.ChangeEventDetails) => void) | undefined;
95
+ /**
96
+ * Every trigger bound to this root, by id. A handle resolves `open(id)`
97
+ * through this, which is what lets an input rendered outside the root open it.
98
+ */
99
+ triggerNodes: PopupTriggerMap;
100
+ };
101
+ declare const selectors: {
102
+ open: (state: State) => boolean;
103
+ value: (state: State) => unknown;
104
+ inputValue: (state: State) => string;
105
+ items: (state: State) => ComboboxItem[];
106
+ mode: (state: State) => "combobox" | "autocomplete";
107
+ disabled: (state: State) => boolean;
108
+ disablePointerDismissal: (state: State) => boolean;
109
+ openOnFocus: (state: State) => boolean;
110
+ triggerNode: (state: State) => unknown;
111
+ triggerWidth: (state: State) => number | undefined;
112
+ triggerHeight: (state: State) => number | undefined;
113
+ update: (state: State) => (() => void) | undefined;
114
+ inputRef: (state: State) => import("react").RefObject<TextInput | null> | undefined;
115
+ payload: (state: State) => unknown;
116
+ triggerId: (state: State) => string | null;
117
+ };
118
+ /**
119
+ * The store behind `Combobox.Root` and `Autocomplete.Root`.
120
+ *
121
+ * It follows the same controlled-prop and cancelable-event contract as the other
122
+ * popup families: every change fires its callback first and only commits the
123
+ * uncontrolled key when the consumer has not called `eventDetails.cancel()`.
124
+ */
125
+ export declare class ComboboxStore extends ReactStore<Readonly<State>, Context, typeof selectors> {
126
+ constructor(initialState?: Partial<State>);
127
+ setOpen: (nextOpen: boolean, eventDetails: ComboboxRoot.ChangeEventDetails) => void;
128
+ setValue: (nextValue: unknown, eventDetails: ComboboxRoot.ChangeEventDetails) => void;
129
+ setInputValue: (nextValue: string, eventDetails: ComboboxRoot.ChangeEventDetails) => void;
130
+ /**
131
+ * Reflects a value the consumer changed from outside into the input text.
132
+ *
133
+ * This is not a change the consumer made through the combobox, so it fires no
134
+ * callback — it writes the uncontrolled key directly.
135
+ */
136
+ reflectInputValue: (nextValue: string) => void;
137
+ /**
138
+ * Selects an item: records the value, fills the input with its label, and
139
+ * closes the popup.
140
+ *
141
+ * One `eventDetails` object is shared by all three, so canceling in any
142
+ * handler stops the rest — the same contract the group components use.
143
+ */
144
+ selectItem: (item: ComboboxItem, eventDetails: ComboboxRoot.ChangeEventDetails) => void;
145
+ }
146
+ export {};
147
+ //# sourceMappingURL=ComboboxStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComboboxStore.d.ts","sourceRoot":"","sources":["../../../src/combobox/store/ComboboxStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ComboboxStore = void 0;
4
+ exports.normalizeComboboxItems = normalizeComboboxItems;
5
+ const createSelector_1 = require("../../store/createSelector");
6
+ const ReactStore_1 = require("../../store/ReactStore");
7
+ const PopupTriggerMap_1 = require("../../utils/popups/PopupTriggerMap");
8
+ /** Normalizes the `items` prop into `{ value, label }` records. */
9
+ function normalizeComboboxItems(items) {
10
+ if (!items) {
11
+ return [];
12
+ }
13
+ return items.map((item) => typeof item === 'string' ? { value: item, label: item } : { value: item.value, label: item.label });
14
+ }
15
+ const selectors = {
16
+ open: (0, createSelector_1.createSelector)((state) => { var _a; return (_a = state.openProp) !== null && _a !== void 0 ? _a : state.open; }),
17
+ value: (0, createSelector_1.createSelector)((state) => state.valueProp !== undefined ? state.valueProp : state.value),
18
+ inputValue: (0, createSelector_1.createSelector)((state) => { var _a; return (_a = state.inputValueProp) !== null && _a !== void 0 ? _a : state.inputValue; }),
19
+ items: (0, createSelector_1.createSelector)((state) => state.items),
20
+ mode: (0, createSelector_1.createSelector)((state) => state.mode),
21
+ disabled: (0, createSelector_1.createSelector)((state) => state.disabled),
22
+ disablePointerDismissal: (0, createSelector_1.createSelector)((state) => state.disablePointerDismissal),
23
+ openOnFocus: (0, createSelector_1.createSelector)((state) => state.openOnFocus),
24
+ triggerNode: (0, createSelector_1.createSelector)((state) => state.triggerNode),
25
+ triggerWidth: (0, createSelector_1.createSelector)((state) => state.triggerWidth),
26
+ triggerHeight: (0, createSelector_1.createSelector)((state) => state.triggerHeight),
27
+ update: (0, createSelector_1.createSelector)((state) => state.update),
28
+ inputRef: (0, createSelector_1.createSelector)((state) => state.inputRef),
29
+ payload: (0, createSelector_1.createSelector)((state) => state.payload),
30
+ triggerId: (0, createSelector_1.createSelector)((state) => { var _a; return (_a = state.triggerIdProp) !== null && _a !== void 0 ? _a : state.triggerId; }),
31
+ };
32
+ /**
33
+ * The store behind `Combobox.Root` and `Autocomplete.Root`.
34
+ *
35
+ * It follows the same controlled-prop and cancelable-event contract as the other
36
+ * popup families: every change fires its callback first and only commits the
37
+ * uncontrolled key when the consumer has not called `eventDetails.cancel()`.
38
+ */
39
+ class ComboboxStore extends ReactStore_1.ReactStore {
40
+ constructor(initialState) {
41
+ super({
42
+ open: false,
43
+ openProp: undefined,
44
+ value: null,
45
+ valueProp: undefined,
46
+ inputValue: '',
47
+ inputValueProp: undefined,
48
+ items: [],
49
+ mode: 'combobox',
50
+ disabled: false,
51
+ disablePointerDismissal: false,
52
+ openOnFocus: true,
53
+ triggerNode: null,
54
+ triggerWidth: undefined,
55
+ triggerHeight: undefined,
56
+ update: undefined,
57
+ inputRef: undefined,
58
+ payload: undefined,
59
+ triggerId: null,
60
+ triggerIdProp: undefined,
61
+ ...initialState,
62
+ }, {
63
+ onOpenChange: undefined,
64
+ onValueChange: undefined,
65
+ onInputValueChange: undefined,
66
+ triggerNodes: new PopupTriggerMap_1.PopupTriggerMap(),
67
+ }, selectors);
68
+ this.setOpen = (nextOpen, eventDetails) => {
69
+ var _a, _b;
70
+ if (nextOpen === this.select('open')) {
71
+ return;
72
+ }
73
+ (_b = (_a = this.context).onOpenChange) === null || _b === void 0 ? void 0 : _b.call(_a, nextOpen, eventDetails);
74
+ if (eventDetails.isCanceled) {
75
+ return;
76
+ }
77
+ this.set('open', nextOpen);
78
+ };
79
+ this.setValue = (nextValue, eventDetails) => {
80
+ var _a, _b;
81
+ (_b = (_a = this.context).onValueChange) === null || _b === void 0 ? void 0 : _b.call(_a, nextValue, eventDetails);
82
+ if (eventDetails.isCanceled) {
83
+ return;
84
+ }
85
+ this.set('value', nextValue);
86
+ };
87
+ this.setInputValue = (nextValue, eventDetails) => {
88
+ var _a, _b;
89
+ (_b = (_a = this.context).onInputValueChange) === null || _b === void 0 ? void 0 : _b.call(_a, nextValue, eventDetails);
90
+ if (eventDetails.isCanceled) {
91
+ return;
92
+ }
93
+ this.set('inputValue', nextValue);
94
+ };
95
+ /**
96
+ * Reflects a value the consumer changed from outside into the input text.
97
+ *
98
+ * This is not a change the consumer made through the combobox, so it fires no
99
+ * callback — it writes the uncontrolled key directly.
100
+ */
101
+ this.reflectInputValue = (nextValue) => {
102
+ this.set('inputValue', nextValue);
103
+ };
104
+ /**
105
+ * Selects an item: records the value, fills the input with its label, and
106
+ * closes the popup.
107
+ *
108
+ * One `eventDetails` object is shared by all three, so canceling in any
109
+ * handler stops the rest — the same contract the group components use.
110
+ */
111
+ this.selectItem = (item, eventDetails) => {
112
+ if (this.select('mode') === 'combobox') {
113
+ this.setValue(item.value, eventDetails);
114
+ if (eventDetails.isCanceled) {
115
+ return;
116
+ }
117
+ }
118
+ this.setInputValue(item.label, eventDetails);
119
+ if (eventDetails.isCanceled) {
120
+ return;
121
+ }
122
+ this.setOpen(false, eventDetails);
123
+ };
124
+ }
125
+ }
126
+ exports.ComboboxStore = ComboboxStore;
127
+ //# sourceMappingURL=ComboboxStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ComboboxStore.js","sourceRoot":"","sources":["../../../src/combobox/store/ComboboxStore.ts"],"names":[],"mappings":";;;AAkBA,wDAQC;AAzBD,+DAA4D;AAC5D,uDAAoD;AACpD,wEAAqE;AAcrE,mEAAmE;AACnE,SAAgB,sBAAsB,CAAC,KAAgC;IACrE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACxB,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CACnG,CAAC;AACJ,CAAC;AA4FD,MAAM,SAAS,GAAG;IAChB,IAAI,EAAE,IAAA,+BAAc,EAAC,CAAC,KAAY,EAAE,EAAE,WAAC,OAAA,MAAA,KAAK,CAAC,QAAQ,mCAAI,KAAK,CAAC,IAAI,CAAA,EAAA,CAAC;IACpE,KAAK,EAAE,IAAA,+BAAc,EAAC,CAAC,KAAY,EAAE,EAAE,CACrC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAC9D;IACD,UAAU,EAAE,IAAA,+BAAc,EAAC,CAAC,KAAY,EAAE,EAAE,WAAC,OAAA,MAAA,KAAK,CAAC,cAAc,mCAAI,KAAK,CAAC,UAAU,CAAA,EAAA,CAAC;IACtF,KAAK,EAAE,IAAA,+BAAc,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;IACpD,IAAI,EAAE,IAAA,+BAAc,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;IAClD,QAAQ,EAAE,IAAA,+BAAc,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC1D,uBAAuB,EAAE,IAAA,+BAAc,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC;IACxF,WAAW,EAAE,IAAA,+BAAc,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;IAChE,WAAW,EAAE,IAAA,+BAAc,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC;IAChE,YAAY,EAAE,IAAA,+BAAc,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC;IAClE,aAAa,EAAE,IAAA,+BAAc,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC;IACpE,MAAM,EAAE,IAAA,+BAAc,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IACtD,QAAQ,EAAE,IAAA,+BAAc,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC1D,OAAO,EAAE,IAAA,+BAAc,EAAC,CAAC,KAAY,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;IACxD,SAAS,EAAE,IAAA,+BAAc,EAAC,CAAC,KAAY,EAAE,EAAE,WAAC,OAAA,MAAA,KAAK,CAAC,aAAa,mCAAI,KAAK,CAAC,SAAS,CAAA,EAAA,CAAC;CACpF,CAAC;AAEF;;;;;;GAMG;AACH,MAAa,aAAc,SAAQ,uBAAsD;IACvF,YAAY,YAA6B;QACvC,KAAK,CACH;YACE,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,IAAI;YACX,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,EAAE;YACd,cAAc,EAAE,SAAS;YACzB,KAAK,EAAE,EAAE;YACT,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,KAAK;YACf,uBAAuB,EAAE,KAAK;YAC9B,WAAW,EAAE,IAAI;YACjB,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,SAAS;YACvB,aAAa,EAAE,SAAS;YACxB,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,SAAS;YAClB,SAAS,EAAE,IAAI;YACf,aAAa,EAAE,SAAS;YACxB,GAAG,YAAY;SAChB,EACD;YACE,YAAY,EAAE,SAAS;YACvB,aAAa,EAAE,SAAS;YACxB,kBAAkB,EAAE,SAAS;YAC7B,YAAY,EAAE,IAAI,iCAAe,EAAE;SACpC,EACD,SAAS,CACV,CAAC;QAGG,YAAO,GAAG,CAAC,QAAiB,EAAE,YAA6C,EAAE,EAAE;;YACpF,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrC,OAAO;YACT,CAAC;YAED,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,YAAY,mDAAG,QAAQ,EAAE,YAAY,CAAC,CAAC;YAEpD,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC7B,CAAC,CAAC;QAEK,aAAQ,GAAG,CAAC,SAAkB,EAAE,YAA6C,EAAE,EAAE;;YACtF,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,aAAa,mDAAG,SAAS,EAAE,YAAY,CAAC,CAAC;YAEtD,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC/B,CAAC,CAAC;QAEK,kBAAa,GAAG,CAAC,SAAiB,EAAE,YAA6C,EAAE,EAAE;;YAC1F,MAAA,MAAA,IAAI,CAAC,OAAO,EAAC,kBAAkB,mDAAG,SAAS,EAAE,YAAY,CAAC,CAAC;YAE3D,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF;;;;;WAKG;QACI,sBAAiB,GAAG,CAAC,SAAiB,EAAE,EAAE;YAC/C,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACpC,CAAC,CAAC;QAEF;;;;;;WAMG;QACI,eAAU,GAAG,CAAC,IAAkB,EAAE,YAA6C,EAAE,EAAE;YACxF,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,UAAU,EAAE,CAAC;gBACvC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;gBAExC,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;oBAC5B,OAAO;gBACT,CAAC;YACH,CAAC;YAED,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAE7C,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QACpC,CAAC,CAAC;IArEF,CAAC;CAsEF;AAvGD,sCAuGC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ComboboxValue.d.ts","sourceRoot":"","sources":["../../../src/combobox/value/ComboboxValue.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,KAAK,0EAYhE;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,OAAO,IAAI,EAAE,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAC/E,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,yBAAiB,aAAa,CAAC;IAC7B,KAAY,KAAK,GAAG,kBAAkB,CAAC;IACvC,KAAY,KAAK,GAAG,kBAAkB,CAAC;CACxC"}
1
+ {"version":3,"file":"ComboboxValue.d.ts","sourceRoot":"","sources":["../../../src/combobox/value/ComboboxValue.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGpC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAExD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,cAAc,EAAE,aAAa,CAAC,KAAK,0EAahE;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,OAAO,IAAI,EAAE,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAC/E,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B;AAED,yBAAiB,aAAa,CAAC;IAC7B,KAAY,KAAK,GAAG,kBAAkB,CAAC;IACvC,KAAY,KAAK,GAAG,kBAAkB,CAAC;CACxC"}
@@ -12,7 +12,8 @@ const useRenderElement_1 = require("../../use-render/useRenderElement");
12
12
  */
13
13
  function ComboboxValue(componentProps) {
14
14
  const { render, className, style, children, ref, ...elementProps } = componentProps;
15
- const { inputValue } = (0, ComboboxRootContext_1.useComboboxRootContext)();
15
+ const store = (0, ComboboxRootContext_1.useComboboxRootContext)();
16
+ const inputValue = store.useState('inputValue');
16
17
  const state = { value: inputValue };
17
18
  return (0, useRenderElement_1.useRenderElement)(react_native_1.Text, componentProps, {
18
19
  state,
@@ -1 +1 @@
1
- {"version":3,"file":"ComboboxValue.js","sourceRoot":"","sources":["../../../src/combobox/value/ComboboxValue.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAYb,sCAYC;AAtBD,+CAAoC;AACpC,qEAAqE;AACrE,wEAAqE;AAGrE;;;;GAIG;AACH,SAAgB,aAAa,CAAC,cAAmC;IAC/D,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,cAAc,CAAC;IAEpF,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,4CAAsB,GAAE,CAAC;IAEhD,MAAM,KAAK,GAAuB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAExD,OAAO,IAAA,mCAAgB,EAAC,mBAAI,EAAE,cAAc,EAAE;QAC5C,KAAK;QACL,GAAG;QACH,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,UAAU,EAAE,EAAE,YAAY,CAAC;KAC5D,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"ComboboxValue.js","sourceRoot":"","sources":["../../../src/combobox/value/ComboboxValue.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;AAYb,sCAaC;AAvBD,+CAAoC;AACpC,qEAAqE;AACrE,wEAAqE;AAGrE;;;;GAIG;AACH,SAAgB,aAAa,CAAC,cAAmC;IAC/D,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,YAAY,EAAE,GAAG,cAAc,CAAC;IAEpF,MAAM,KAAK,GAAG,IAAA,4CAAsB,GAAE,CAAC;IACvC,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEhD,MAAM,KAAK,GAAuB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAExD,OAAO,IAAA,mCAAgB,EAAC,mBAAI,EAAE,cAAc,EAAE;QAC5C,KAAK;QACL,GAAG;QACH,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,UAAU,EAAE,EAAE,YAAY,CAAC;KAC5D,CAAC,CAAC;AACL,CAAC"}
@@ -6,17 +6,33 @@ import type { ZestUIComponentProps } from '../../types';
6
6
  * Positions the context menu popup at the point the long press landed.
7
7
  * Renders a `<View>`.
8
8
  *
9
- * Unlike `Menu.Positioner`, it anchors to a screen point rather than a trigger
10
- * element, so there is no collision-aware floating-ui pass — the popup is placed
11
- * directly at the press coordinates.
9
+ * Unlike `Menu.Positioner` it anchors to a screen point rather than a trigger
10
+ * element, so it does not go through `useAnchorPositioning`: floating-ui
11
+ * measures a real node, and there is no node here. Collision handling is
12
+ * therefore its own — the popup flips to the other side of the press point when
13
+ * it would otherwise run off the screen, and is kept `collisionPadding` inside
14
+ * the edges. `side` and `align` on state report where it actually landed.
12
15
  */
13
16
  export declare function ContextMenuPositioner(componentProps: ContextMenuPositioner.Props): React.JSX.Element;
14
17
  export interface ContextMenuPositionerState {
15
18
  open: boolean;
19
+ /**
20
+ * `'bottom'` when the popup hangs below the press point, `'top'` when it was
21
+ * flipped above it to stay on screen.
22
+ */
16
23
  side: Side;
24
+ /**
25
+ * `'start'` when the popup extends right of the press point, `'end'` when it
26
+ * was flipped to its left.
27
+ */
17
28
  align: Align;
18
29
  }
19
30
  export interface ContextMenuPositionerProps extends ZestUIComponentProps<typeof View, ContextMenuPositionerState> {
31
+ /**
32
+ * How much space to keep between the popup and the edges of the screen.
33
+ * @default 5
34
+ */
35
+ collisionPadding?: number | undefined;
20
36
  }
21
37
  export declare namespace ContextMenuPositioner {
22
38
  type State = ContextMenuPositionerState;
@@ -1 +1 @@
1
- {"version":3,"file":"ContextMenuPositioner.d.ts","sourceRoot":"","sources":["../../../src/context-menu/positioner/ContextMenuPositioner.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAMpC,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAIxD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,qBAAqB,CAAC,KAAK,qBA8BhF;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,0BACf,SAAQ,oBAAoB,CAAC,OAAO,IAAI,EAAE,0BAA0B,CAAC;CAAG;AAE1E,yBAAiB,qBAAqB,CAAC;IACrC,KAAY,KAAK,GAAG,0BAA0B,CAAC;IAC/C,KAAY,KAAK,GAAG,0BAA0B,CAAC;CAChD"}
1
+ {"version":3,"file":"ContextMenuPositioner.d.ts","sourceRoot":"","sources":["../../../src/context-menu/positioner/ContextMenuPositioner.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,IAAI,EAA+C,MAAM,cAAc,CAAC;AAMjF,OAAO,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAIxD;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,qBAAqB,CAAC,KAAK,qBA6FhF;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,OAAO,CAAC;IACd;;;OAGG;IACH,IAAI,EAAE,IAAI,CAAC;IACX;;;OAGG;IACH,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,0BACf,SAAQ,oBAAoB,CAAC,OAAO,IAAI,EAAE,0BAA0B,CAAC;IACrE;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED,yBAAiB,qBAAqB,CAAC;IACrC,KAAY,KAAK,GAAG,0BAA0B,CAAC;IAC/C,KAAY,KAAK,GAAG,0BAA0B,CAAC;CAChD"}