@cube-dev/ui-kit 0.0.0-canary-bef9600 → 0.0.0-canary-e3f8a1a

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 (654) hide show
  1. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  2. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  3. package/dist/_internal/hooks/use-event.js +1 -1
  4. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  5. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  6. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  7. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  8. package/dist/_internal/hooks/use-warn.js +1 -1
  9. package/dist/components/Block.js +1 -1
  10. package/dist/components/CollectionItem.js +1 -1
  11. package/dist/components/GlobalStyles.js +1 -1
  12. package/dist/components/GridProvider.js +1 -1
  13. package/dist/components/HiddenInput.js +1 -1
  14. package/dist/components/Root.js +1 -1
  15. package/dist/components/actions/Action/Action.js +1 -1
  16. package/dist/components/actions/Banner/Banner.js +1 -1
  17. package/dist/components/actions/Button/Button.js +11 -5
  18. package/dist/components/actions/Button/Button.js.map +1 -1
  19. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  20. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  21. package/dist/components/actions/ButtonSplit/context.js +1 -1
  22. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  23. package/dist/components/actions/CommandMenu/styled.js +1 -1
  24. package/dist/components/actions/ItemAction/ItemAction.js +27 -25
  25. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  26. package/dist/components/actions/ItemActionContext.js +1 -1
  27. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  28. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  29. package/dist/components/actions/Link/Link.js +1 -1
  30. package/dist/components/actions/Menu/Menu.js +1 -1
  31. package/dist/components/actions/Menu/MenuCollectionItem.js +1 -1
  32. package/dist/components/actions/Menu/MenuItem.js +1 -1
  33. package/dist/components/actions/Menu/MenuSection.js +1 -1
  34. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  35. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  36. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  37. package/dist/components/actions/Menu/context.js +1 -1
  38. package/dist/components/actions/Menu/styled.js +1 -4
  39. package/dist/components/actions/Menu/styled.js.map +1 -1
  40. package/dist/components/actions/actions-run.js +1 -1
  41. package/dist/components/actions/index.js +1 -1
  42. package/dist/components/actions/use-action.js +1 -1
  43. package/dist/components/actions/use-anchored-menu.js +1 -1
  44. package/dist/components/actions/use-context-menu.js +1 -1
  45. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  46. package/dist/components/content/Alert/Alert.js +1 -1
  47. package/dist/components/content/Alert/use-alert.js +1 -1
  48. package/dist/components/content/Avatar/Avatar.js +1 -1
  49. package/dist/components/content/Badge/Badge.js +1 -1
  50. package/dist/components/content/Card/Card.js +1 -1
  51. package/dist/components/content/Content.js +1 -1
  52. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  53. package/dist/components/content/CopySnippet/CopySnippet.d.ts +4 -4
  54. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  55. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  56. package/dist/components/content/Divider.js +1 -1
  57. package/dist/components/content/Footer.js +1 -1
  58. package/dist/components/content/Header.js +1 -1
  59. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  60. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  61. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  62. package/dist/components/content/Item/Item.js +3 -3
  63. package/dist/components/content/Item/Item.js.map +1 -1
  64. package/dist/components/content/Item/ItemWithNativeLinks.js +1 -1
  65. package/dist/components/content/ItemBadge/ItemBadge.js +7 -3
  66. package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
  67. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  68. package/dist/components/content/Layout/GridLayout.js +1 -1
  69. package/dist/components/content/Layout/Layout.js +28 -15
  70. package/dist/components/content/Layout/Layout.js.map +1 -1
  71. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  72. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  73. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  74. package/dist/components/content/Layout/LayoutContent.js +1 -1
  75. package/dist/components/content/Layout/LayoutContext.js +20 -10
  76. package/dist/components/content/Layout/LayoutContext.js.map +1 -1
  77. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  78. package/dist/components/content/Layout/LayoutFooter.js +12 -9
  79. package/dist/components/content/Layout/LayoutFooter.js.map +1 -1
  80. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  81. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  82. package/dist/components/content/Layout/LayoutPane.js +1 -1
  83. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  84. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  85. package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
  86. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  87. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  88. package/dist/components/content/Layout/index.js +1 -1
  89. package/dist/components/content/Layout/utils.js +1 -1
  90. package/dist/components/content/Paragraph.js +1 -1
  91. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  92. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  93. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  94. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  95. package/dist/components/content/Result/Result.js +1 -1
  96. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  97. package/dist/components/content/Tag/Tag.js +1 -1
  98. package/dist/components/content/Text.d.ts +14 -14
  99. package/dist/components/content/Text.js +1 -1
  100. package/dist/components/content/TextItem/TextItem.js +1 -1
  101. package/dist/components/content/Title.js +1 -1
  102. package/dist/components/content/Tree/Tree.js +1 -1
  103. package/dist/components/content/Tree/TreeNode.js +1 -1
  104. package/dist/components/content/Tree/styled.js +1 -1
  105. package/dist/components/content/Tree/tree-index.js +1 -1
  106. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  107. package/dist/components/content/Tree/use-load-data.js +1 -1
  108. package/dist/components/content/highlightText.js +1 -1
  109. package/dist/components/content/use-auto-tooltip.js +3 -3
  110. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  111. package/dist/components/data/DataTable/DataTable.js +1 -1
  112. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  113. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  114. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  115. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  116. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  117. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  118. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  119. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  120. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  121. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  122. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  123. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  124. package/dist/components/data/TableBase/RowCollection.js +1 -1
  125. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  126. package/dist/components/data/TableBase/TableRow.js +1 -1
  127. package/dist/components/data/TableBase/TableView.js +1 -1
  128. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  129. package/dist/components/data/TableBase/column-header.js +1 -1
  130. package/dist/components/data/TableBase/column-menu.js +1 -1
  131. package/dist/components/data/TableBase/column-styles.js +1 -1
  132. package/dist/components/data/TableBase/column-tint.js +1 -1
  133. package/dist/components/data/TableBase/row-menu.js +1 -1
  134. package/dist/components/data/TableBase/styled.js +1 -1
  135. package/dist/components/data/TableBase/table-tree.js +1 -1
  136. package/dist/components/data/TableBase/types.js +1 -1
  137. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  138. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  139. package/dist/components/data/TableBase/use-column-order.js +1 -1
  140. package/dist/components/data/TableBase/use-column-window.js +1 -1
  141. package/dist/components/data/TableBase/use-container-width.js +1 -1
  142. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  143. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  144. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  145. package/dist/components/data/TableBase/use-table-search.js +1 -1
  146. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  147. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  148. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  149. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  150. package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
  151. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  152. package/dist/components/fields/Checkbox/Checkbox.js +2 -2
  153. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  154. package/dist/components/fields/Checkbox/CheckboxGroup.js +5 -5
  155. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  156. package/dist/components/fields/Checkbox/context.js +1 -1
  157. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  158. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  159. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  160. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  161. package/dist/components/fields/ComboBox/ComboBox.d.ts +26 -6
  162. package/dist/components/fields/ComboBox/ComboBox.js +1095 -619
  163. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  164. package/dist/components/fields/ComboBox/comboBoxOptions.js +84 -0
  165. package/dist/components/fields/ComboBox/comboBoxOptions.js.map +1 -0
  166. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  167. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  168. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  169. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  170. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  171. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  172. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  173. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  174. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  175. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  176. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  177. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  178. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  179. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  180. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  181. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  182. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  183. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  184. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  185. package/dist/components/fields/DatePicker/period.js +1 -1
  186. package/dist/components/fields/DatePicker/props.js +1 -1
  187. package/dist/components/fields/DatePicker/utils.js +1 -1
  188. package/dist/components/fields/FileInput/FileInput.js +1 -1
  189. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  190. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  191. package/dist/components/fields/Input/Input.d.ts +2 -2
  192. package/dist/components/fields/Input/Input.js +2 -2
  193. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  194. package/dist/components/fields/ListBox/ListBox.d.ts +10 -4
  195. package/dist/components/fields/ListBox/ListBox.js +293 -143
  196. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  197. package/dist/components/fields/ListBox/optionId.js +1 -1
  198. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +15 -12
  199. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  200. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  201. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  202. package/dist/components/fields/NumberInput/NumberInput.d.ts +0 -1
  203. package/dist/components/fields/NumberInput/NumberInput.js +136 -128
  204. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  205. package/dist/components/fields/NumberInput/StepButton.js +38 -48
  206. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  207. package/dist/components/fields/PasswordInput/PasswordInput.d.ts +1 -2
  208. package/dist/components/fields/PasswordInput/PasswordInput.js +77 -111
  209. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  210. package/dist/components/fields/Picker/Picker.d.ts +1 -1
  211. package/dist/components/fields/Picker/Picker.js +8 -3
  212. package/dist/components/fields/Picker/Picker.js.map +1 -1
  213. package/dist/components/fields/RadioGroup/Radio.d.ts +8 -8
  214. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  215. package/dist/components/fields/RadioGroup/RadioGroup.js +2 -2
  216. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  217. package/dist/components/fields/RadioGroup/context.js +1 -1
  218. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  219. package/dist/components/fields/SearchInput/SearchInput.d.ts +8 -3
  220. package/dist/components/fields/SearchInput/SearchInput.js +22 -29
  221. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  222. package/dist/components/fields/Select/Select.d.ts +12 -1
  223. package/dist/components/fields/Select/Select.js +365 -207
  224. package/dist/components/fields/Select/Select.js.map +1 -1
  225. package/dist/components/fields/Slider/Gradation.js +1 -1
  226. package/dist/components/fields/Slider/HueSlider.js +1 -1
  227. package/dist/components/fields/Slider/RangeSlider.js +3 -4
  228. package/dist/components/fields/Slider/RangeSlider.js.map +1 -1
  229. package/dist/components/fields/Slider/Slider.js +1 -1
  230. package/dist/components/fields/Slider/SliderBase.js +1 -1
  231. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  232. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  233. package/dist/components/fields/Slider/elements.js +1 -1
  234. package/dist/components/fields/Slider/index.js +1 -1
  235. package/dist/components/fields/Switch/Switch.js +1 -1
  236. package/dist/components/fields/TagInput/TagInput.js +1 -1
  237. package/dist/components/fields/TagInput/TagList.js +1 -1
  238. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  239. package/dist/components/fields/TagInput/useTagError.js +1 -1
  240. package/dist/components/fields/TextArea/TextArea.d.ts +0 -1
  241. package/dist/components/fields/TextArea/TextArea.js +49 -63
  242. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  243. package/dist/components/fields/TextInput/TextInput.d.ts +1 -1
  244. package/dist/components/fields/TextInput/TextInput.js +42 -46
  245. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  246. package/dist/components/fields/TextInput/TextInputBase.d.ts +6 -2
  247. package/dist/components/fields/TextInput/TextInputBase.js +32 -10
  248. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  249. package/dist/components/fields/TextInput/displayed-validation.js +50 -0
  250. package/dist/components/fields/TextInput/displayed-validation.js.map +1 -0
  251. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  252. package/dist/components/fields/TextInputMapper/TextInputMapper.js +2 -2
  253. package/dist/components/fields/TriggerActions.js +1 -1
  254. package/dist/components/fields/color/ColorPanel.js +1 -1
  255. package/dist/components/fields/color/channels.js +1 -1
  256. package/dist/components/fields/color/color.js +1 -1
  257. package/dist/components/fields/color/context.js +1 -1
  258. package/dist/components/fields/index.d.ts +2 -2
  259. package/dist/components/fields/option-origin-press.js +78 -0
  260. package/dist/components/fields/option-origin-press.js.map +1 -0
  261. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  262. package/dist/components/form/FieldWrapper/field-description.js +1 -1
  263. package/dist/components/form/Form/Field.js +1 -1
  264. package/dist/components/form/Form/Form.js +1 -1
  265. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  266. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  267. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  268. package/dist/components/form/Form/SubmitError.js +1 -1
  269. package/dist/components/form/Form/backend.js +1 -1
  270. package/dist/components/form/Form/index.js +1 -1
  271. package/dist/components/form/Form/modern/actions.js +1 -1
  272. package/dist/components/form/Form/modern/context.js +1 -1
  273. package/dist/components/form/Form/modern/controller.js +1 -1
  274. package/dist/components/form/Form/modern/field-binding.js +1 -1
  275. package/dist/components/form/Form/modern/field.js +1 -1
  276. package/dist/components/form/Form/modern/react.js +1 -1
  277. package/dist/components/form/Form/modern/store.js +1 -1
  278. package/dist/components/form/Form/modern/validation.js +1 -1
  279. package/dist/components/form/Form/modern/values.js +1 -1
  280. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  281. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  282. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  283. package/dist/components/form/Form/use-field/use-field.js +1 -1
  284. package/dist/components/form/Form/use-form.js +1 -1
  285. package/dist/components/form/Form/validation.js +1 -1
  286. package/dist/components/form/Label.js +1 -1
  287. package/dist/components/form/field-chrome.js +1 -1
  288. package/dist/components/form/legacy-tooltip.js +1 -1
  289. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  290. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  291. package/dist/components/form/validation/use-validation-props.js +1 -1
  292. package/dist/components/form/wrapper.js +1 -1
  293. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  294. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  295. package/dist/components/layout/Flex.js +1 -1
  296. package/dist/components/layout/Flow.js +1 -1
  297. package/dist/components/layout/Grid.js +1 -1
  298. package/dist/components/layout/Panel.js +1 -1
  299. package/dist/components/layout/Prefix.js +1 -1
  300. package/dist/components/layout/ResizablePanel.js +1 -1
  301. package/dist/components/layout/Space.js +1 -1
  302. package/dist/components/layout/Suffix.js +1 -1
  303. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  304. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  305. package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
  306. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  307. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  308. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  309. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  310. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  311. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  312. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  313. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  314. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  315. package/dist/components/navigation/Tabs/styled.js +1 -1
  316. package/dist/components/navigation/Tabs/types.js +1 -1
  317. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  318. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  319. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  320. package/dist/components/other/Calendar/Calendar.js +1 -1
  321. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  322. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  323. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  324. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  325. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  326. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  327. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  328. package/dist/components/other/Calendar/styled.js +1 -1
  329. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  330. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  331. package/dist/components/overlays/AlertDialog/AlertDialog.d.ts +6 -1
  332. package/dist/components/overlays/AlertDialog/AlertDialog.js +3 -2
  333. package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
  334. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +3 -2
  335. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js.map +1 -1
  336. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  337. package/dist/components/overlays/Dialog/Dialog.js +28 -14
  338. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  339. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  340. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  341. package/dist/components/overlays/Dialog/DialogTrigger.d.ts +7 -3
  342. package/dist/components/overlays/Dialog/DialogTrigger.js +149 -132
  343. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  344. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  345. package/dist/components/overlays/Dialog/context.js +1 -1
  346. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  347. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  348. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  349. package/dist/components/overlays/Dialog/use-dialog-open-sync.js +83 -0
  350. package/dist/components/overlays/Dialog/use-dialog-open-sync.js.map +1 -0
  351. package/dist/components/overlays/Modal/Modal.js +1 -1
  352. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  353. package/dist/components/overlays/Modal/Overlay.js +3 -2
  354. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  355. package/dist/components/overlays/Modal/Popover.js +1 -1
  356. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  357. package/dist/components/overlays/Modal/Tray.js +1 -1
  358. package/dist/components/overlays/Modal/Underlay.js +1 -1
  359. package/dist/components/overlays/Modal/modal-containment.js +1 -1
  360. package/dist/components/overlays/Notifications/Notification.js +1 -1
  361. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  362. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  363. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  364. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  365. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  366. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  367. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  368. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  369. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  370. package/dist/components/overlays/Notifications/index.js +1 -1
  371. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  372. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  373. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  374. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  375. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  376. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  377. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  378. package/dist/components/overlays/Toast/index.js +1 -1
  379. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  380. package/dist/components/overlays/Toast/useToast.js +1 -1
  381. package/dist/components/overlays/Tooltip/Tooltip.d.ts +8 -0
  382. package/dist/components/overlays/Tooltip/Tooltip.js +16 -22
  383. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  384. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  385. package/dist/components/overlays/Tooltip/TooltipTrigger.d.ts +1 -1
  386. package/dist/components/overlays/Tooltip/TooltipTrigger.js +163 -113
  387. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  388. package/dist/components/overlays/Tooltip/context.js +1 -1
  389. package/dist/components/overlays/Tooltip/context.js.map +1 -1
  390. package/dist/components/overlays/Tooltip/split-trigger-props.js +6 -5
  391. package/dist/components/overlays/Tooltip/split-trigger-props.js.map +1 -1
  392. package/dist/components/portal/Portal.js +1 -1
  393. package/dist/components/portal/PortalProvider.js +1 -1
  394. package/dist/components/portal/usePortal.js +1 -1
  395. package/dist/components/shared/DraggableCollection.js +1 -1
  396. package/dist/components/shared/InvalidIcon.js +1 -1
  397. package/dist/components/shared/ValidIcon.js +1 -1
  398. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  399. package/dist/components/status/Spin/Cube.js +1 -1
  400. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  401. package/dist/components/status/Spin/Spin.js +1 -1
  402. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  403. package/dist/data/item-themes.js +1 -1
  404. package/dist/data/themes.js +1 -1
  405. package/dist/eslint-plugin/defaults.generated.js +11 -17
  406. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  407. package/dist/eslint-plugin/index.js +1 -1
  408. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  409. package/dist/i18n/I18nProvider.js +1 -1
  410. package/dist/i18n/createFormatter.js +1 -1
  411. package/dist/i18n/index.js +1 -1
  412. package/dist/i18n/instance.js +1 -1
  413. package/dist/i18n/locales/de-DE/uikit.js +6 -4
  414. package/dist/i18n/locales/en-US/uikit.js +6 -4
  415. package/dist/i18n/locales/en-US/uikit.json.d.ts +3 -1
  416. package/dist/i18n/locales/es-ES/uikit.js +6 -4
  417. package/dist/i18n/locales/es-MX/uikit.js +6 -4
  418. package/dist/i18n/locales/fr-FR/uikit.js +6 -4
  419. package/dist/i18n/locales/it-IT/uikit.js +6 -4
  420. package/dist/i18n/locales/ja-JP/uikit.js +6 -4
  421. package/dist/i18n/locales/nb-NO/uikit.js +6 -4
  422. package/dist/i18n/locales/pt-BR/uikit.js +6 -4
  423. package/dist/i18n/locales/pt-PT/uikit.js +6 -4
  424. package/dist/i18n/locales/sv-SE/uikit.js +6 -4
  425. package/dist/i18n/locales/vi-VN/uikit.js +6 -4
  426. package/dist/i18n/locales.js +1 -1
  427. package/dist/i18n/namespace.js +1 -1
  428. package/dist/i18n/useFormatter.js +1 -1
  429. package/dist/i18n/useI18n.js +1 -1
  430. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  431. package/dist/icons/AdjustmentsIcon.js +1 -1
  432. package/dist/icons/AiIcon.js +1 -1
  433. package/dist/icons/AreaChartIcon.js +1 -1
  434. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  435. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  436. package/dist/icons/BackwardIcon.js +1 -1
  437. package/dist/icons/BarChartIcon.js +1 -1
  438. package/dist/icons/BellFilledIcon.js +1 -1
  439. package/dist/icons/BellIcon.js +1 -1
  440. package/dist/icons/BooleanIcon.js +1 -1
  441. package/dist/icons/CalendarEditIcon.js +1 -1
  442. package/dist/icons/CalendarIcon.js +1 -1
  443. package/dist/icons/CaretDownIcon.js +1 -1
  444. package/dist/icons/CaretUpIcon.js +1 -1
  445. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  446. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  447. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  448. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  449. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  450. package/dist/icons/ChartBarLineIcon.js +1 -1
  451. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  452. package/dist/icons/ChartBarStackedIcon.js +1 -1
  453. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  454. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  455. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  456. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  457. package/dist/icons/ChartBubbleIcon.js +1 -1
  458. package/dist/icons/ChartDonut2Icon.js +1 -1
  459. package/dist/icons/ChartFunnelIcon.js +1 -1
  460. package/dist/icons/ChartHeatmapIcon.js +1 -1
  461. package/dist/icons/ChartKPIIcon.js +1 -1
  462. package/dist/icons/ChartPie2Icon.js +1 -1
  463. package/dist/icons/ChartScatterIcon.js +1 -1
  464. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  465. package/dist/icons/CheckCircleIcon.js +1 -1
  466. package/dist/icons/CheckIcon.js +1 -1
  467. package/dist/icons/CircleFilledIcon.js +1 -1
  468. package/dist/icons/ClearIcon.js +1 -1
  469. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  470. package/dist/icons/CloseCircleIcon.js +1 -1
  471. package/dist/icons/CloseIcon.js +1 -1
  472. package/dist/icons/CodeIcon.js +1 -1
  473. package/dist/icons/ColumnTotalIcon.js +1 -1
  474. package/dist/icons/CopyIcon.js +1 -1
  475. package/dist/icons/CountIcon.js +1 -1
  476. package/dist/icons/CubeIcon.js +1 -1
  477. package/dist/icons/CubePauseIcon.js +1 -1
  478. package/dist/icons/CubePlayIcon.js +1 -1
  479. package/dist/icons/CurrencyDollarIcon.js +1 -1
  480. package/dist/icons/DangerIcon.js +1 -1
  481. package/dist/icons/DashboardIcon.js +1 -1
  482. package/dist/icons/DatabaseIcon.js +1 -1
  483. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  484. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  485. package/dist/icons/DirectionIcon.js +1 -1
  486. package/dist/icons/DonutIcon.js +1 -1
  487. package/dist/icons/DownIcon.js +1 -1
  488. package/dist/icons/EditIcon.js +1 -1
  489. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  490. package/dist/icons/ExclamationCircleIcon.js +1 -1
  491. package/dist/icons/ExclamationIcon.js +1 -1
  492. package/dist/icons/EyeIcon.js +1 -1
  493. package/dist/icons/EyeInvisibleIcon.js +1 -1
  494. package/dist/icons/FilterIcon.js +1 -1
  495. package/dist/icons/FolderFilledIcon.js +1 -1
  496. package/dist/icons/FolderIcon.js +1 -1
  497. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  498. package/dist/icons/FolderOpenIcon.js +1 -1
  499. package/dist/icons/ForwardIcon.js +1 -1
  500. package/dist/icons/GripVerticalIcon.js +1 -1
  501. package/dist/icons/HierarchyIcon.js +1 -1
  502. package/dist/icons/HierarchyOpenIcon.js +1 -1
  503. package/dist/icons/Icon.js +1 -1
  504. package/dist/icons/InfoCircleIcon.js +1 -1
  505. package/dist/icons/InfoIcon.js +1 -1
  506. package/dist/icons/KeyIcon.js +1 -1
  507. package/dist/icons/LeftIcon.js +1 -1
  508. package/dist/icons/LineChartIcon.js +1 -1
  509. package/dist/icons/LoadingIcon.js +1 -1
  510. package/dist/icons/LockFilledIcon.js +1 -1
  511. package/dist/icons/LockIcon.js +1 -1
  512. package/dist/icons/MoreIcon.js +1 -1
  513. package/dist/icons/NotAllowedIcon.js +1 -1
  514. package/dist/icons/Number123Icon.js +1 -1
  515. package/dist/icons/NumberIcon.js +1 -1
  516. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  517. package/dist/icons/PauseCircleIcon.js +1 -1
  518. package/dist/icons/PauseIcon.js +1 -1
  519. package/dist/icons/PercentageIcon.js +1 -1
  520. package/dist/icons/PieChartIcon.js +1 -1
  521. package/dist/icons/PipetteIcon.js +1 -1
  522. package/dist/icons/PlayCircleIcon.js +1 -1
  523. package/dist/icons/PlayIcon.js +1 -1
  524. package/dist/icons/PlusIcon.js +1 -1
  525. package/dist/icons/ProgressBarIcon.js +1 -1
  526. package/dist/icons/ReloadIcon.js +1 -1
  527. package/dist/icons/ReportIcon.js +1 -1
  528. package/dist/icons/ReturnIcon.js +1 -1
  529. package/dist/icons/RightIcon.js +1 -1
  530. package/dist/icons/RowTotalsIcon.js +1 -1
  531. package/dist/icons/SchemeIcon.js +1 -1
  532. package/dist/icons/SearchIcon.js +1 -1
  533. package/dist/icons/SemanticQueryIcon.js +1 -1
  534. package/dist/icons/SettingsIcon.js +1 -1
  535. package/dist/icons/ShieldFilledIcon.js +1 -1
  536. package/dist/icons/ShieldIcon.js +1 -1
  537. package/dist/icons/SlashIcon.js +1 -1
  538. package/dist/icons/SparklesIcon.js +1 -1
  539. package/dist/icons/SqlIcon.js +1 -1
  540. package/dist/icons/StatsIcon.js +1 -1
  541. package/dist/icons/StopIcon.js +1 -1
  542. package/dist/icons/StringIcon.js +1 -1
  543. package/dist/icons/SubtotalsIcon.js +1 -1
  544. package/dist/icons/SwitchIcon.js +1 -1
  545. package/dist/icons/TableIcon.js +1 -1
  546. package/dist/icons/ThumbsDownIcon.js +1 -1
  547. package/dist/icons/ThumbsUpIcon.js +1 -1
  548. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  549. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  550. package/dist/icons/ThunderboltIcon.js +1 -1
  551. package/dist/icons/TimeIcon.js +1 -1
  552. package/dist/icons/TrashIcon.js +1 -1
  553. package/dist/icons/UnlockIcon.js +1 -1
  554. package/dist/icons/UpIcon.js +1 -1
  555. package/dist/icons/UserGroupIcon.js +1 -1
  556. package/dist/icons/UserIcon.js +1 -1
  557. package/dist/icons/UserLockIcon.js +1 -1
  558. package/dist/icons/ViewIcon.js +1 -1
  559. package/dist/icons/WarningFilledIcon.js +1 -1
  560. package/dist/icons/WarningIcon.js +1 -1
  561. package/dist/icons/wrap-icon.js +1 -1
  562. package/dist/index.d.ts +1 -1
  563. package/dist/index.js +2 -2
  564. package/dist/probe/canonicalize.js +1 -1
  565. package/dist/probe/css.js +1 -1
  566. package/dist/probe/index.js +1 -1
  567. package/dist/provider.js +1 -1
  568. package/dist/providers/TrackingProvider.js +1 -1
  569. package/dist/providers/navigation-url.js +1 -1
  570. package/dist/providers/navigationAdapter.default.js +1 -1
  571. package/dist/providers/use-navigation.js +1 -1
  572. package/dist/tokens/all-tokens.js +1 -1
  573. package/dist/tokens/base.js +1 -1
  574. package/dist/tokens/color-seed.js +1 -1
  575. package/dist/tokens/color-theme.js +1 -1
  576. package/dist/tokens/colors.js +1 -1
  577. package/dist/tokens/layout.js +1 -1
  578. package/dist/tokens/lazy-styles.js +1 -1
  579. package/dist/tokens/legacy-color.js +1 -1
  580. package/dist/tokens/palette-config.js +1 -1
  581. package/dist/tokens/palette.js +1 -1
  582. package/dist/tokens/resolve.js +1 -1
  583. package/dist/tokens/shadows.js +1 -1
  584. package/dist/tokens/sizes.js +1 -1
  585. package/dist/tokens/spacing.js +1 -1
  586. package/dist/tokens/typography.js +1 -1
  587. package/dist/utils/ResizeSensor.js +1 -1
  588. package/dist/utils/colors.js +1 -1
  589. package/dist/utils/dotize.js +1 -1
  590. package/dist/utils/is-dev-env.js +1 -1
  591. package/dist/utils/modules.js +1 -1
  592. package/dist/utils/promise.js +1 -1
  593. package/dist/utils/raf.js +1 -1
  594. package/dist/utils/random.js +1 -1
  595. package/dist/utils/range.js +1 -1
  596. package/dist/utils/react/RenderCache.js +1 -1
  597. package/dist/utils/react/Slots.js +1 -1
  598. package/dist/utils/react/chain.js +1 -1
  599. package/dist/utils/react/disabledProps.js +1 -1
  600. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  601. package/dist/utils/react/index.js +1 -1
  602. package/dist/utils/react/interactions.js +1 -1
  603. package/dist/utils/react/isTextOnly.js +1 -1
  604. package/dist/utils/react/mapProps.js +1 -1
  605. package/dist/utils/react/mergeProps.js +1 -1
  606. package/dist/utils/react/nullableValue.js +18 -9
  607. package/dist/utils/react/nullableValue.js.map +1 -1
  608. package/dist/utils/react/overlayKeyPropagation.js +1 -1
  609. package/dist/utils/react/programmaticFocus.js +1 -1
  610. package/dist/utils/react/resolveIcon.js +1 -1
  611. package/dist/utils/react/sharedStore.js +1 -1
  612. package/dist/utils/react/useBufferedValue.js +1 -1
  613. package/dist/utils/react/useCombinedRefs.js +1 -1
  614. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  615. package/dist/utils/react/useEventBus.js +1 -1
  616. package/dist/utils/react/useId.js +1 -1
  617. package/dist/utils/react/useIsDarwin.js +1 -1
  618. package/dist/utils/react/useKeySymbols.js +1 -1
  619. package/dist/utils/react/useLayoutEffect.js +1 -1
  620. package/dist/utils/react/useLocalStorage.js +1 -1
  621. package/dist/utils/react/useMergeStyles.js +1 -1
  622. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  623. package/dist/utils/react/usePopoverSync.js +1 -1
  624. package/dist/utils/react/useQaProps.js +1 -1
  625. package/dist/utils/react/useScheme.js +1 -1
  626. package/dist/utils/react/useViewportSize.js +1 -1
  627. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  628. package/dist/utils/selection.js +1 -1
  629. package/dist/utils/styles.js +1 -1
  630. package/dist/utils/tree.js +1 -1
  631. package/dist/utils/warnings.js +1 -1
  632. package/dist/version.js +2 -2
  633. package/docs/components/actions/Button.md +8 -2
  634. package/docs/components/content/InfoBadge.md +2 -0
  635. package/docs/components/content/ItemBadge.md +4 -0
  636. package/docs/components/content/Layout.md +2 -1
  637. package/docs/components/fields/ComboBox.md +25 -18
  638. package/docs/components/fields/FilterListBox.md +2 -2
  639. package/docs/components/fields/FilterPicker.md +2 -2
  640. package/docs/components/fields/ListBox.md +14 -10
  641. package/docs/components/fields/NumberInput.md +10 -10
  642. package/docs/components/fields/PasswordInput.md +6 -7
  643. package/docs/components/fields/Picker.md +6 -5
  644. package/docs/components/fields/RadioGroup.md +1 -1
  645. package/docs/components/fields/SearchInput.md +7 -6
  646. package/docs/components/fields/Select.md +14 -8
  647. package/docs/components/fields/TextArea.md +4 -3
  648. package/docs/components/fields/TextInput.md +13 -6
  649. package/docs/components/overlays/AlertDialog.md +7 -1
  650. package/docs/components/overlays/Dialog.md +5 -5
  651. package/docs/components/overlays/DialogTrigger.md +6 -6
  652. package/docs/components/overlays/Tooltip.md +17 -6
  653. package/docs/components/overlays/TooltipTrigger.md +2 -0
  654. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ListBoxPopover.js","names":["getEventTarget","isFocusWithin","Key","Styles","tasty","React","CSSProperties","ReactNode","RefObject","useCallback","useEffect","useRef","useInteractOutside","useOverlay","useOverlayPosition","useEvent","useI18n","mergeProps","mergeRefs","DisplayTransition","useModalLayerRef","Portal","ListBox","ListBoxPopoverProps","isOpen","triggerRef","HTMLElement","popoverRef","HTMLDivElement","listBoxRef","direction","shouldFlip","overlayOffset","containerPadding","comboBoxWidth","listBoxId","overlayStyles","listBoxStyles","optionStyles","optionHighlight","sectionStyles","headingStyles","listGap","selectedKey","selectionMode","selectedKeys","isCheckable","shouldCloseOnTriggerInteraction","isDisabled","disabledKeys","Iterable","items","children","listStateRef","onSelectionChange","selection","onClose","label","ariaLabel","ariaLabelledby","compositeFocusProps","onFocus","e","FocusEvent","onBlur","filter","nodes","size","emptyLabel","positionTargetRef","Element","positionApiRef","updatePosition","CONTROL_SELECTOR","LAYER_SELECTOR","DISABLED_SELECTOR","isOutsideControl","el","trigger","control","closest","contains","matches","layer","ListBoxPopoverWrapper","qa","styles","position","zIndex","ListBoxPopoverElement","display","gridRows","gridColumns","width","height","overflow","fill","radius","shadow","padding","border","hide","hidden","boxSizing","transition","translate","transformOrigin","scale","opacity","ListBoxPopover","props","$","_c","t","t0","t1","t2","undefined","mergedPopoverRef","layerRef","overlayScrollRef","t3","t4","t5","t6","targetRef","overlayRef","scrollRef","placement","offset","overlayProps","overlayPositionProps","t7","style","t8","maxHeight","maxWidth","positionStyle","t10","t9","current","t11","menuTriggerEl","dismissEl","getOutsidePressBehavior","t12","el_0","behavior","setTimeout","t13","shouldCloseOnBlur","isDismissable","shouldCloseOnInteractOutside","overlayBehaviorProps","t14","event","preventDefault","preserveOutsidePressFocus","t15","t16","ref","onInteractOutsideStart","onInteractOutside","t17","split","placementDirection","transitionRefHolder","t18","Symbol","for","node","setScrollRef","t19","t20","phase","isShown","isExiting","transitionRef","open","overlayContent"],"sources":["../../../../src/components/fields/ListBoxPopover/ListBoxPopover.tsx"],"sourcesContent":["import { getEventTarget, isFocusWithin } from '@react-aria/utils';\nimport { Key } from '@react-types/shared';\nimport { Styles, tasty } from '@tenphi/tasty';\nimport React, {\n CSSProperties,\n ReactNode,\n RefObject,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\nimport { useInteractOutside, useOverlay, useOverlayPosition } from 'react-aria';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\nimport { useI18n } from '../../../i18n';\nimport { mergeProps } from '../../../utils/react';\nimport { mergeRefs } from '../../../utils/react/useCombinedRefs';\nimport { DisplayTransition } from '../../helpers';\nimport { useModalLayerRef } from '../../overlays/Modal/modal-containment';\nimport { Portal } from '../../portal';\nimport { ListBox } from '../ListBox/ListBox';\n\nexport interface ListBoxPopoverProps {\n isOpen: boolean;\n triggerRef: RefObject<HTMLElement>;\n popoverRef: RefObject<HTMLDivElement>;\n listBoxRef: RefObject<HTMLDivElement>;\n direction: 'bottom' | 'top';\n shouldFlip: boolean;\n overlayOffset: number;\n containerPadding: number;\n /** Min width (px) for the overlay; usually the trigger's width. */\n comboBoxWidth?: number;\n /** Stable id used for the ListBox element and aria-controls wiring. */\n listBoxId: string;\n overlayStyles?: Styles;\n listBoxStyles?: Styles;\n optionStyles?: Styles;\n /** Substring to highlight within each option's (text) children. */\n optionHighlight?: string;\n sectionStyles?: Styles;\n headingStyles?: Styles;\n /** Space between options, in pixels. Defaults to a hairline (`1bw`). */\n listGap?: number;\n selectedKey?: Key | null;\n /**\n * `'multiple'` lets the list hold several selected options. The list then\n * reports the whole new selection on every toggle and never closes itself;\n * the caller decides what a toggle means. Defaults to `'single'`.\n */\n selectionMode?: 'single' | 'multiple';\n /** The selected keys in `'multiple'` mode. Ignored in `'single'` mode. */\n selectedKeys?: Key[];\n /** Whether options show a checkbox. Only applies in `'multiple'` mode. */\n isCheckable?: boolean;\n /**\n * Whether a click inside the element `triggerRef` points at closes the\n * popover, like any other outside click. Pass `false` when that element is\n * where the user keeps working with the list open, such as an input that\n * picks several options in a row. Only this popover is affected; others\n * still close. Defaults to `true`.\n */\n shouldCloseOnTriggerInteraction?: boolean;\n isDisabled?: boolean;\n disabledKeys?: Iterable<Key>;\n items?: Iterable<any>;\n children: ReactNode;\n /** Ref through which the ListBox exposes its internal list state. */\n listStateRef: RefObject<any>;\n onSelectionChange: (selection: Key | Key[] | null) => void;\n onClose: () => void;\n label?: ReactNode;\n ariaLabel?: string;\n /**\n * Ids of the elements that name the field, read after `label` or\n * `ariaLabel`. Without either, they alone name the list, in place of the\n * generic \"Options\".\n */\n ariaLabelledby?: string;\n compositeFocusProps: {\n onFocus: (e: React.FocusEvent) => void;\n onBlur: (e: React.FocusEvent) => void;\n };\n /** Collection node filter applied to the ListBox. */\n filter?: (nodes: Iterable<any>) => Iterable<any>;\n size?: 'small' | 'medium' | 'large' | (string & {});\n /**\n * Label shown when the list is empty (no items / no filter results).\n * Forwarded to the inner ListBox.\n */\n emptyLabel?: ReactNode;\n /**\n * Element to anchor the overlay to geometrically. Defaults to `triggerRef`.\n * Use this to anchor to something other than the trigger (e.g. the caret in\n * a textarea) while keeping `triggerRef` for outside-click/dismiss logic.\n */\n positionTargetRef?: RefObject<Element | null>;\n /**\n * Receives an imperative handle exposing `updatePosition()` so the caller can\n * force the overlay to re-anchor (e.g. when the caret moves).\n */\n positionApiRef?: RefObject<{ updatePosition: () => void } | null>;\n}\n\n// The controls an outside press reaches: a button, a link, a form control,\n// anything with `tabindex`, or something inside one.\nconst CONTROL_SELECTOR =\n 'button, a[href], input, select, textarea, [tabindex], [contenteditable]:not([contenteditable=\"false\"])';\n\n// The layer a field sits in: a dialog, popover or tray, otherwise the page.\nconst LAYER_SELECTOR =\n '[role=\"dialog\"], [role=\"alertdialog\"], [data-overlay-layer]';\n\nconst DISABLED_SELECTOR = ':disabled, [aria-disabled=\"true\"]';\n\n// An enabled control apart from the field, in the field's own layer. A press\n// anywhere else counts as blank space and keeps the field's focus and draft:\n// on the field itself, on a dialog's surface, on a disabled control, or\n// outside the field's layer, which stays open.\nfunction isOutsideControl(el: Element, trigger: HTMLElement | null) {\n const control = el.closest(CONTROL_SELECTOR);\n\n if (\n control == null ||\n trigger == null ||\n control.contains(trigger) ||\n trigger.contains(control) ||\n control.matches(`${LAYER_SELECTOR}, ${DISABLED_SELECTOR}`)\n ) {\n return false;\n }\n\n const layer = trigger.closest(LAYER_SELECTOR);\n\n return layer == null || layer.contains(control);\n}\n\nconst ListBoxPopoverWrapper = tasty({\n qa: 'ComboBoxOverlayWrapper',\n styles: {\n position: 'absolute',\n zIndex: 1000,\n },\n});\n\nconst ListBoxPopoverElement = tasty({\n qa: 'ComboBoxOverlay',\n styles: {\n display: 'grid',\n gridRows: '1sf',\n gridColumns: '1sf',\n width: '$overlay-min-width max-content 50vw',\n height: 'initial max-content (50vh - 5x)',\n overflow: 'auto',\n fill: '#surface',\n radius: '1cr',\n shadow: true,\n padding: '0',\n border: '#border',\n hide: {\n '': false,\n hidden: true,\n },\n boxSizing: 'border-box',\n transition:\n 'translate $transition ease-out, scale $transition ease-out, theme $transition ease-out',\n translate: {\n '': '0 0',\n 'open & [data-placement=\"top\"]': '0 0',\n '!open & [data-placement=\"top\"]': '0 1x',\n 'open & ([data-placement=\"bottom\"] | ![data-placement])': '0 0',\n '!open & ([data-placement=\"bottom\"] | ![data-placement])': '0 -1x',\n },\n transformOrigin: {\n '': 'top center',\n '[data-placement=\"top\"]': 'bottom center',\n },\n scale: {\n '': '1 1',\n '!open': '1 .9',\n },\n opacity: {\n '': 1,\n '!open': 0.001,\n },\n\n '$overlay-min-width': 'min 30x',\n },\n});\n\nexport const ListBoxPopover = function ListBoxPopover(\n props: ListBoxPopoverProps,\n) {\n const { t } = useI18n();\n const {\n isOpen,\n triggerRef,\n popoverRef,\n listBoxRef,\n direction,\n shouldFlip,\n overlayOffset,\n containerPadding,\n comboBoxWidth,\n listBoxId,\n overlayStyles,\n listBoxStyles,\n optionStyles,\n optionHighlight,\n sectionStyles,\n headingStyles,\n listGap,\n selectedKey,\n selectionMode = 'single',\n selectedKeys,\n isCheckable,\n shouldCloseOnTriggerInteraction = true,\n isDisabled,\n disabledKeys,\n items,\n children,\n listStateRef,\n onSelectionChange,\n onClose,\n label,\n ariaLabel,\n ariaLabelledby,\n compositeFocusProps,\n filter,\n size = 'medium',\n emptyLabel,\n positionTargetRef,\n positionApiRef,\n } = props;\n\n const mergedPopoverRef = popoverRef;\n\n // Opened inside a modal, the list stays readable while the modal hides the\n // page.\n const layerRef = useModalLayerRef();\n\n // Ref to the inner scrollable element (the visible popover). react-aria\n // measures this for its flip/shrink math and writes maxHeight onto the\n // overlay (positioning wrapper); we forward that maxHeight to this element\n // below so the scroll container actually shrinks instead of overflowing.\n const overlayScrollRef = useRef<HTMLDivElement | null>(null);\n\n // Overlay positioning — anchor to the explicit position target when given\n // (e.g. a caret anchor), otherwise to the trigger. `triggerRef` is still\n // used below for outside-click/dismiss behavior.\n const {\n overlayProps: overlayPositionProps,\n placement,\n updatePosition,\n } = useOverlayPosition({\n targetRef: (positionTargetRef ?? triggerRef) as any,\n overlayRef: mergedPopoverRef as any,\n scrollRef: overlayScrollRef as any,\n placement: `${direction} start` as any,\n shouldFlip,\n isOpen,\n offset: overlayOffset,\n containerPadding: containerPadding,\n });\n\n // Keep positioning (top/left/zIndex) on the wrapper, but split out the\n // available-space cap so it can be applied to the inner scroll element.\n const { maxHeight, maxWidth, ...positionStyle } =\n (overlayPositionProps.style ?? {}) as CSSProperties;\n\n // Expose updatePosition so callers can re-anchor on demand (e.g. caret move).\n useEffect(() => {\n if (positionApiRef) {\n positionApiRef.current = { updatePosition };\n }\n return () => {\n if (positionApiRef) {\n positionApiRef.current = null;\n }\n };\n }, [positionApiRef, updatePosition]);\n\n const getOutsidePressBehavior = (el: Element) => {\n const menuTriggerEl = el.closest('[data-popover-trigger]');\n if (menuTriggerEl) {\n return menuTriggerEl === triggerRef.current ? 'consume' : 'ignore';\n }\n if (\n (!shouldCloseOnTriggerInteraction && triggerRef.current?.contains(el)) ||\n el.closest('[data-popover-keep]')\n ) {\n return 'ignore';\n }\n // The press reaches an outside control, so a checkbox toggles, a text\n // field takes focus and a native Save button saves on the first click.\n // A UI Kit Button passes from any layer, unless it is disabled.\n const dismissEl = el.closest('[data-popover-dismiss]');\n\n if (\n isOutsideControl(el, triggerRef.current) ||\n (dismissEl != null && !dismissEl.matches(DISABLED_SELECTOR))\n ) {\n return 'pass';\n }\n return 'consume';\n };\n\n // Overlay behavior (dismiss on outside click, escape)\n const { overlayProps: overlayBehaviorProps } = useOverlay(\n {\n onClose,\n shouldCloseOnBlur: true,\n isOpen,\n isDismissable: true,\n shouldCloseOnInteractOutside: (el) => {\n const behavior = getOutsidePressBehavior(el);\n if (behavior === 'pass') {\n // Leave the control's press intact and close after its action.\n setTimeout(onClose, 0);\n }\n return behavior === 'consume';\n },\n },\n mergedPopoverRef as any,\n );\n\n const preserveOutsidePressFocus = useEvent((event: PointerEvent) => {\n if (\n (isFocusWithin(triggerRef.current) ||\n isFocusWithin(mergedPopoverRef.current)) &&\n getOutsidePressBehavior(getEventTarget(event) as Element) === 'consume'\n ) {\n event.preventDefault();\n }\n });\n\n // Aria now permits outside presses to move focus. A passed press moves it\n // to its control, and the field settles its draft on blur, as on Tab. A\n // consumed press, such as one on blank space or a dialog's backdrop, must\n // only dismiss this list: the field keeps focus and its draft.\n useInteractOutside({\n ref: mergedPopoverRef,\n isDisabled: !isOpen,\n onInteractOutsideStart: preserveOutsidePressFocus,\n onInteractOutside: preserveOutsidePressFocus,\n });\n\n // Extract primary placement direction for consistent styling\n const placementDirection = placement?.split(' ')[0] || direction;\n\n // Hold the DisplayTransition ref so we can bind the same node to both the\n // transition listener and our scroll ref via a single stable callback.\n const transitionRefHolder = useRef<\n ((node: HTMLElement | null) => void) | null\n >(null);\n const setScrollRef = useCallback((node: HTMLElement | null) => {\n overlayScrollRef.current = node as HTMLDivElement | null;\n transitionRefHolder.current?.(node);\n }, []);\n\n const overlayContent = (\n <DisplayTransition isShown={isOpen}>\n {({ phase, isShown, isExiting, ref: transitionRef }) => {\n transitionRefHolder.current = transitionRef;\n return (\n <ListBoxPopoverWrapper\n {...mergeProps(\n { ...overlayPositionProps, style: positionStyle },\n overlayBehaviorProps,\n compositeFocusProps,\n )}\n ref={mergeRefs(mergedPopoverRef, layerRef)}\n style={positionStyle}\n // A press on the list while it fades out must not close the\n // overlay under it (CUB-5293) — see `Overlay`.\n data-react-aria-top-layer={isExiting || undefined}\n >\n <ListBoxPopoverElement\n ref={setScrollRef}\n data-placement={placementDirection}\n data-phase={phase}\n mods={{\n open: isShown,\n hidden: phase === 'unmounted',\n }}\n styles={overlayStyles}\n style={{\n '--overlay-min-width': comboBoxWidth\n ? `${comboBoxWidth}px`\n : undefined,\n maxHeight,\n maxWidth,\n }}\n >\n <ListBox\n isBare\n ref={listBoxRef}\n disableSelectionToggle\n id={listBoxId}\n aria-label={\n ariaLabel ||\n (typeof label === 'string'\n ? label\n : ariaLabelledby\n ? undefined\n : t('listBoxPopover.options', 'Options'))\n }\n aria-labelledby={ariaLabelledby}\n // Left unset in single mode, as before this prop existed: an\n // explicit `'single'` switches on ListBox's no-toggle branch,\n // which changes what re-picking the selected option does.\n selectionMode={\n selectionMode === 'multiple' ? 'multiple' : undefined\n }\n selectedKey={\n selectionMode === 'single' ? selectedKey : undefined\n }\n selectedKeys={\n selectionMode === 'multiple' ? selectedKeys : undefined\n }\n isCheckable={\n selectionMode === 'multiple' ? isCheckable : undefined\n }\n isDisabled={isDisabled}\n disabledKeys={disabledKeys}\n shouldUseVirtualFocus={true}\n items={items as any}\n filter={filter}\n styles={listBoxStyles}\n optionStyles={optionStyles}\n optionHighlight={optionHighlight}\n sectionStyles={sectionStyles}\n headingStyles={headingStyles}\n listGap={listGap}\n stateRef={listStateRef}\n shape=\"popover\"\n emptyLabel={emptyLabel}\n onSelectionChange={onSelectionChange}\n >\n {children as any}\n </ListBox>\n </ListBoxPopoverElement>\n </ListBoxPopoverWrapper>\n );\n }}\n </DisplayTransition>\n );\n\n return <Portal>{overlayContent}</Portal>;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AA0GA,MAAMyE,mBACJ;AAGF,MAAMC,iBACJ;AAEF,MAAMC,oBAAoB;AAM1B,SAASC,iBAAiBC,IAAaC,SAA6B;CAClE,MAAMC,UAAUF,GAAGG,QAAQP,iBAAiB;AAE5C,KACEM,WAAW,QACXD,WAAW,QACXC,QAAQE,SAASH,QAAQ,IACzBA,QAAQG,SAASF,QAAQ,IACzBA,QAAQG,QAAQ,GAAGR,eAAc,IAAKC,oBAAoB,CAE1D,QAAO;CAGT,MAAMQ,QAAQL,QAAQE,QAAQN,eAAe;AAE7C,QAAOS,SAAS,QAAQA,MAAMF,SAASF,QAAQ;;AAGjD,MAAMK,wBAAwBhF,MAAM;CAClCiF,IAAI;CACJC,QAAQ;EACNC,UAAU;EACVC,QAAQ;EACV;CACD,CAAC;AAEF,MAAMC,wBAAwBrF,MAAM;CAClCiF,IAAI;CACJC,QAAQ;EACNI,SAAS;EACTC,UAAU;EACVC,aAAa;EACbC,OAAO;EACPC,QAAQ;EACRC,UAAU;EACVC,MAAM;EACNC,QAAQ;EACRC,QAAQ;EACRC,SAAS;EACTC,QAAQ;EACRC,MAAM;GACJ,IAAI;GACJC,QAAQ;GACT;EACDC,WAAW;EACXC,YACE;EACFC,WAAW;GACT,IAAI;GACJ,mCAAiC;GACjC,oCAAkC;GAClC,4DAA0D;GAC1D,6DAA2D;GAC5D;EACDC,iBAAiB;GACf,IAAI;GACJ,4BAA0B;GAC3B;EACDC,OAAO;GACL,IAAI;GACJ,SAAS;GACV;EACDC,SAAS;GACP,IAAI;GACJ,SAAS;GACV;EAED,sBAAsB;EACxB;CACD,CAAC;AAEF,MAAaC,iBAAiB,SAAAA,eAAAC,OAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAG5B,MAAA,EAAAC,MAAcjG,SAAS;CACvB,MAAA,EAAAQ,QAAAC,YAAAE,YAAAE,YAAAC,WAAAC,YAAAC,eAAAC,kBAAAC,eAAAC,WAAAC,eAAAC,eAAAC,cAAAC,iBAAAC,eAAAC,eAAAC,SAAAC,aAAAC,eAAAsE,IAAArE,cAAAC,aAAAC,iCAAAoE,IAAAnE,YAAAC,cAAAE,OAAAC,UAAAC,cAAAC,mBAAAE,SAAAC,OAAAC,WAAAC,gBAAAC,qBAAAK,QAAAE,MAAAiD,IAAAhD,YAAAC,mBAAAE,mBAuCIuC;CApBF,MAAAlE,gBAAAsE,OAAAG,SAAA,WAAAH;CAGA,MAAAnE,kCAAAoE,OAAAE,SAAA,OAAAF;CAmBF,MAAAG,mBAAyB3F;CAIzB,MAAA4F,WAAiBnG,kBAAkB;CAMnC,MAAAoG,mBAAyB7G,OAA8B,KAAK;CAU/C,MAAA8G,KAACpD,qBAAA5C;CACA,MAAAiG,KAAAJ;CAED,MAAAK,KAAA,GAAG7F,UAAS;CAAe,IAAA8F;AAAA,KAAAb,EAAA,OAAA9E,oBAAA8E,EAAA,OAAAvF,UAAAuF,EAAA,OAAA/E,iBAAA+E,EAAA,OAAAhF,cAAAgF,EAAA,OAAAU,MAAAV,EAAA,OAAAW,MAAAX,EAAA,OAAAY,IAAA;AAJjBC,OAAA;GAAAC,WACVJ;GAAwCK,YACvCJ;GAAuBK,WACxBP;GAAuBQ,WACvBL;GAA2B5F;GAAAP;GAAAyG,QAG9BjG;GAAaC;GAEtB;AAAA8E,IAAA,KAAA9E;AAAA8E,IAAA,KAAAvF;AAAAuF,IAAA,KAAA/E;AAAA+E,IAAA,KAAAhF;AAAAgF,IAAA,KAAAU;AAAAV,IAAA,KAAAW;AAAAX,IAAA,KAAAY;AAAAZ,IAAA,KAAAa;OAAAA,MAAAb,EAAA;CAbD,MAAA,EAAAmB,cAAAC,sBAAAH,WAAAxD,mBAII1D,mBAAmB8G,GASrB;CAAC,IAAAQ;AAAA,KAAArB,EAAA,OAAAoB,qBAAAE,OAAA;AAKAD,OAAAD,qBAAoBE,SAApB,EAAgC;AAAAtB,IAAA,KAAAoB,qBAAAE;AAAAtB,IAAA,KAAAqB;OAAAA,MAAArB,EAAA;CAAjC,MAAAuB,KAACF;CAAkD,IAAAG;CAAA,IAAAC;CAAA,IAAAC;AAAA,KAAA1B,EAAA,QAAAuB,IAAA;AADrD,GAAA,CAAAC,WAAAC,aAAAC,iBACEH;AAAoDvB,IAAA,MAAAuB;AAAAvB,IAAA,MAAAwB;AAAAxB,IAAA,MAAAyB;AAAAzB,IAAA,MAAA0B;QAAA;AAAAF,cAAAxB,EAAA;AAAAyB,aAAAzB,EAAA;AAAA0B,kBAAA1B,EAAA;;CAAA,IAAA2B;CAAA,IAAAC;AAAA,KAAA5B,EAAA,QAAAxC,kBAAAwC,EAAA,QAAAvC,gBAAA;AAG5CmE,aAAA;AACR,OAAIpE,eACFA,gBAAcqE,UAAW,EAAApE,gBAAH;AACvB,gBACM;AACL,QAAID,eACFA,gBAAcqE,UAAW;;;AAG5BF,QAAA,CAACnE,gBAAgBC,eAAe;AAAAuC,IAAA,MAAAxC;AAAAwC,IAAA,MAAAvC;AAAAuC,IAAA,MAAA2B;AAAA3B,IAAA,MAAA4B;QAAA;AAAAD,QAAA3B,EAAA;AAAA4B,OAAA5B,EAAA;;AATnCrG,WAAUiI,IASPD,IAAiC;CAAA,IAAAG;AAAA,KAAA9B,EAAA,QAAAhE,mCAAAgE,EAAA,QAAAtF,YAAA;AAEJoH,SAAAhE,OAAA;GAC9B,MAAAiE,gBAAsBjE,GAAEG,QAAS,yBAAyB;AAC1D,OAAI8D,cAAa,QACRA,kBAAkBrH,WAAUmH,UAA5B,YAAA;AAET,OACG,CAAC7F,mCAAmCtB,WAAUmH,SAAkB3D,SAACJ,GACjC,IAAjCA,GAAEG,QAAS,sBAAsB,CAAA,QAE1B;GAKT,MAAA+D,YAAkBlE,GAAEG,QAAS,yBAAyB;AAEtD,OACEJ,iBAAiBC,IAAIpD,WAAUmH,QAC6B,IAA3DG,aAAa,QAAb,CAAsBA,UAAS7D,QAASP,kBAAmB,CAAA,QAErD;AACR,UACM;;AACRoC,IAAA,MAAAhE;AAAAgE,IAAA,MAAAtF;AAAAsF,IAAA,MAAA8B;OAAAA,OAAA9B,EAAA;CAvBD,MAAAiC,0BAAgCH;CAuB9B,IAAAI;AAAA,KAAAlC,EAAA,QAAAiC,2BAAAjC,EAAA,QAAAvD,SAAA;AASgCyF,SAAAC,SAAA;GAC5B,MAAAC,WAAiBH,wBAAwBnE,KAAG;AAC5C,OAAIsE,aAAa,OAEfC,YAAW5F,SAAS,EAAE;AACvB,UACM2F,aAAa;;AACrBpC,IAAA,MAAAiC;AAAAjC,IAAA,MAAAvD;AAAAuD,IAAA,MAAAkC;OAAAA,OAAAlC,EAAA;CAAA,IAAAsC;AAAA,KAAAtC,EAAA,QAAAvF,UAAAuF,EAAA,QAAAvD,WAAAuD,EAAA,QAAAkC,KAAA;AAZHI,QAAA;GAAA7F;GAAA8F,mBAEqB;GAAI9H;GAAA+H,eAER;GAAIC,8BACWP;GAQ/B;AAAAlC,IAAA,MAAAvF;AAAAuF,IAAA,MAAAvD;AAAAuD,IAAA,MAAAkC;AAAAlC,IAAA,MAAAsC;OAAAA,OAAAtC,EAAA;CAdH,MAAA,EAAAmB,cAAAuB,yBAA+C5I,WAC7CwI,KAcA/B,iBACD;CAAC,IAAAoC;AAAA,KAAA3C,EAAA,QAAAiC,2BAAAjC,EAAA,QAAAO,oBAAAP,EAAA,QAAAtF,YAAA;AAEyCiI,SAAAC,UAAA;AACzC,QACG1J,cAAcwB,WAAUmH,QACgB,IAAvC3I,cAAcqH,iBAAgBsB,QACuC,KAAvEI,wBAAwBhJ,eAAe2J,MAAM,CAAY,KAAK,UAE9DA,OAAKC,gBAAiB;;AAEzB7C,IAAA,MAAAiC;AAAAjC,IAAA,MAAAO;AAAAP,IAAA,MAAAtF;AAAAsF,IAAA,MAAA2C;OAAAA,OAAA3C,EAAA;CARD,MAAA8C,4BAAkC9I,SAAS2I,IAQzC;CAQY,MAAAI,MAAA,CAACtI;CAAM,IAAAuI;AAAA,KAAAhD,EAAA,QAAAO,oBAAAP,EAAA,QAAA8C,6BAAA9C,EAAA,QAAA+C,KAAA;AAFFC,QAAA;GAAAC,KACZ1C;GAAgBtE,YACT8G;GAAOG,wBACKJ;GAAyBK,mBAC9BL;GACpB;AAAA9C,IAAA,MAAAO;AAAAP,IAAA,MAAA8C;AAAA9C,IAAA,MAAA+C;AAAA/C,IAAA,MAAAgD;OAAAA,OAAAhD,EAAA;AALDnG,oBAAmBmJ,IAKjB;CAAA,IAAAI;AAAA,KAAApD,EAAA,QAAAjF,aAAAiF,EAAA,QAAAiB,WAAA;AAGyBmC,QAAAnC,WAASoC,MAAQ,IAAO,CAAA,MAAxBtI;AAAqCiF,IAAA,MAAAjF;AAAAiF,IAAA,MAAAiB;AAAAjB,IAAA,MAAAoD;OAAAA,OAAApD,EAAA;CAAhE,MAAAsD,qBAA2BF;CAI3B,MAAAG,sBAA4B3J,OAE1B,KAAK;CAAC,IAAA4J;AAAA,KAAAxD,EAAA,QAAAyD,OAAAC,IAAA,4BAAA,EAAA;AACyBF,SAAAG,SAAA;AAC/BlD,oBAAgBoB,UAAW8B;AAC3BJ,uBAAmB1B,UAAW8B,KAAK;;AACpC3D,IAAA,MAAAwD;OAAAA,OAAAxD,EAAA;CAHD,MAAA4D,eAAqBJ;CAGd,IAAAK;AAAA,KAAA7D,EAAA,QAAArD,aAAAqD,EAAA,QAAApD,kBAAAoD,EAAA,QAAA3D,YAAA2D,EAAA,QAAA7E,iBAAA6E,EAAA,QAAAnD,uBAAAmD,EAAA,QAAA9D,gBAAA8D,EAAA,QAAA3C,cAAA2C,EAAA,QAAA9C,UAAA8C,EAAA,QAAAtE,iBAAAsE,EAAA,QAAAjE,eAAAiE,EAAA,QAAA/D,cAAA+D,EAAA,QAAA5D,SAAA4D,EAAA,QAAAtD,SAAAsD,EAAA,QAAAQ,YAAAR,EAAA,QAAA5E,aAAA4E,EAAA,QAAAlF,cAAAkF,EAAA,QAAA1E,iBAAA0E,EAAA,QAAArE,WAAAqE,EAAA,QAAA1D,gBAAA0D,EAAA,QAAAwB,aAAAxB,EAAA,QAAAyB,YAAAzB,EAAA,QAAAO,oBAAAP,EAAA,QAAAzD,qBAAAyD,EAAA,QAAAxE,mBAAAwE,EAAA,QAAAzE,gBAAAyE,EAAA,QAAA0C,wBAAA1C,EAAA,QAAAoB,wBAAApB,EAAA,QAAA3E,iBAAA2E,EAAA,QAAAsD,sBAAAtD,EAAA,QAAA0B,iBAAA1B,EAAA,QAAAvE,iBAAAuE,EAAA,QAAApE,eAAAoE,EAAA,QAAAlE,gBAAAkE,EAAA,QAAAnE,iBAAAmE,EAAA,QAAAE,GAAA;AAIF2D,SAAAC,QAAA;GAAC,MAAA,EAAAC,OAAAC,SAAAC,WAAAhB,KAAAiB,kBAAAJ;AACAP,uBAAmB1B,UAAWqC;AAAH,UAEzB,oBAAC;IAAqB,GAChBhK,aACF;KAAA,GAAKkH;KAAoBE,OAASI;KAAe,EACjDgB,sBACA7F,oBACD;IACI,KAAA1C,YAAUoG,kBAAkBC,SAAQ;IAClCkB,OAAAA;IAGoB,6BAAAuC,aAAA3D;cAE3B,oBAAC;KACMsD,KAAAA;KACWN,kBAAAA;KACJS,cAAAA;KACN,MAAA;MAAAI,MACEH;MAAOzE,QACLwE,UAAU;MACpB;KACQ1I,QAAAA;KACD,OAAA;MAAA,uBACkBF,gBAAA,GAChBA,cAAa,MADGmF;MAEVkB;MAAAC;MAGf;eAEA,oBAAC;MACC,QAAA;MACK3G,KAAAA;MACL,wBAAA;MACIM,IAAAA;MAEF,cAAAuB,cACC,OAAOD,UAAU,WAAjBA,QAEGE,iBAAA0D,SAEEJ,EAAE,0BAA0B,UAAW;MAE9BtD,mBAAAA;MAKf,eAAAf,kBAAkB,aAAlB,aAAAyE;MAGA,aAAAzE,kBAAkB,WAAlBD,cAAA0E;MAGA,cAAAzE,kBAAkB,aAAlBC,eAAAwE;MAGA,aAAAzE,kBAAkB,aAAlBE,cAAAuE;MAEUrE;MACEC;MACS,uBAAA;MAChBE;MACCc;MACA5B,QAAAA;MACMC;MACGC;MACFC;MACAC;MACNC;MACCW,UAAAA;MACJ,OAAA;MACMe;MACOd;MAElBF;OAEL;MACF;KAAwB;;AAE3B2D,IAAA,MAAArD;AAAAqD,IAAA,MAAApD;AAAAoD,IAAA,MAAA3D;AAAA2D,IAAA,MAAA7E;AAAA6E,IAAA,MAAAnD;AAAAmD,IAAA,MAAA9D;AAAA8D,IAAA,MAAA3C;AAAA2C,IAAA,MAAA9C;AAAA8C,IAAA,MAAAtE;AAAAsE,IAAA,MAAAjE;AAAAiE,IAAA,MAAA/D;AAAA+D,IAAA,MAAA5D;AAAA4D,IAAA,MAAAtD;AAAAsD,IAAA,MAAAQ;AAAAR,IAAA,MAAA5E;AAAA4E,IAAA,MAAAlF;AAAAkF,IAAA,MAAA1E;AAAA0E,IAAA,MAAArE;AAAAqE,IAAA,MAAA1D;AAAA0D,IAAA,MAAAwB;AAAAxB,IAAA,MAAAyB;AAAAzB,IAAA,MAAAO;AAAAP,IAAA,MAAAzD;AAAAyD,IAAA,MAAAxE;AAAAwE,IAAA,MAAAzE;AAAAyE,IAAA,MAAA0C;AAAA1C,IAAA,MAAAoB;AAAApB,IAAA,MAAA3E;AAAA2E,IAAA,MAAAsD;AAAAtD,IAAA,MAAA0B;AAAA1B,IAAA,MAAAvE;AAAAuE,IAAA,MAAApE;AAAAoE,IAAA,MAAAlE;AAAAkE,IAAA,MAAAnE;AAAAmE,IAAA,MAAAE;AAAAF,IAAA,MAAA6D;OAAAA,OAAA7D,EAAA;CAAA,IAAA8D;AAAA,KAAA9D,EAAA,QAAAvF,UAAAuF,EAAA,QAAA6D,KAAA;AAIEC,QAAA,oBAAC,oBAvFN,oBAAC;GAA2BrJ,SAAAA;aACzBoJ;IAmFiB,GAGkB;AAAA7D,IAAA,MAAAvF;AAAAuF,IAAA,MAAA6D;AAAA7D,IAAA,MAAA8D;OAAAA,OAAA9D,EAAA;AAAA,QAAjC8D"}
1
+ {"version":3,"file":"ListBoxPopover.js","names":["getEventTarget","isFocusWithin","Key","Styles","tasty","React","CSSProperties","ReactNode","RefObject","useCallback","useEffect","useRef","useInteractOutside","useOverlay","useOverlayPosition","useEvent","useI18n","mergeProps","mergeRefs","DisplayTransition","useModalLayerRef","Portal","ListBox","ListBoxPopoverProps","isOpen","triggerRef","HTMLElement","popoverRef","HTMLDivElement","listBoxRef","direction","shouldFlip","overlayOffset","containerPadding","comboBoxWidth","listBoxId","overlayStyles","listBoxStyles","optionStyles","optionHighlight","sectionStyles","headingStyles","listGap","selectedKey","selectionMode","selectedKeys","isCheckable","shouldCloseOnTriggerInteraction","isDisabled","disabledKeys","Iterable","items","children","listStateRef","onSelectionChange","selection","onClose","label","ariaLabel","ariaLabelledby","compositeFocusProps","onFocus","e","FocusEvent","onBlur","filter","nodes","size","emptyLabel","positionTargetRef","Element","positionApiRef","updatePosition","CONTROL_SELECTOR","LAYER_SELECTOR","DISABLED_SELECTOR","isOutsideControl","el","trigger","control","closest","contains","matches","layer","ListBoxPopoverWrapper","qa","styles","position","zIndex","ListBoxPopoverElement","display","gridRows","gridColumns","width","height","overflow","fill","radius","shadow","padding","border","hide","hidden","boxSizing","transition","translate","transformOrigin","scale","opacity","ListBoxPopover","props","$","_c","t","t0","t1","t2","undefined","mergedPopoverRef","layerRef","overlayScrollRef","t3","t4","t5","t6","targetRef","overlayRef","scrollRef","placement","offset","overlayProps","overlayPositionProps","t7","style","t8","maxHeight","maxWidth","positionStyle","t10","t9","current","t11","menuTriggerEl","dismissEl","getOutsidePressBehavior","t12","el_0","behavior","setTimeout","t13","shouldCloseOnBlur","isDismissable","shouldCloseOnInteractOutside","overlayBehaviorProps","t14","event","preventDefault","preserveOutsidePressFocus","t15","t16","ref","onInteractOutsideStart","onInteractOutside","t17","split","placementDirection","transitionRefHolder","t18","Symbol","for","node","setScrollRef","t19","t20","phase","isShown","isExiting","transitionRef","open","overlayContent"],"sources":["../../../../src/components/fields/ListBoxPopover/ListBoxPopover.tsx"],"sourcesContent":["import { getEventTarget, isFocusWithin } from '@react-aria/utils';\nimport { Key } from '@react-types/shared';\nimport { Styles, tasty } from '@tenphi/tasty';\nimport React, {\n CSSProperties,\n ReactNode,\n RefObject,\n useCallback,\n useEffect,\n useRef,\n} from 'react';\nimport { useInteractOutside, useOverlay, useOverlayPosition } from 'react-aria';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\nimport { useI18n } from '../../../i18n';\nimport { mergeProps } from '../../../utils/react';\nimport { mergeRefs } from '../../../utils/react/useCombinedRefs';\nimport { DisplayTransition } from '../../helpers';\nimport { useModalLayerRef } from '../../overlays/Modal/modal-containment';\nimport { Portal } from '../../portal';\nimport { ListBox } from '../ListBox/ListBox';\n\nexport interface ListBoxPopoverProps {\n isOpen: boolean;\n triggerRef: RefObject<HTMLElement>;\n popoverRef: RefObject<HTMLDivElement>;\n listBoxRef: RefObject<HTMLDivElement>;\n direction: 'bottom' | 'top';\n shouldFlip: boolean;\n overlayOffset: number;\n containerPadding: number;\n /** Min width (px) for the overlay; usually the trigger's width. */\n comboBoxWidth?: number;\n /** Stable id used for the ListBox element and aria-controls wiring. */\n listBoxId: string;\n overlayStyles?: Styles;\n listBoxStyles?: Styles;\n optionStyles?: Styles;\n /** Substring to highlight within each option's (text) children. */\n optionHighlight?: string;\n sectionStyles?: Styles;\n headingStyles?: Styles;\n /** Space between options, in pixels. Defaults to a hairline (`1bw`). */\n listGap?: number;\n selectedKey?: Key | null;\n /**\n * `'multiple'` lets the list hold several selected options. The list then\n * reports the whole new selection on every toggle and never closes itself;\n * the caller decides what a toggle means. Defaults to `'single'`.\n */\n selectionMode?: 'single' | 'multiple';\n /** The selected keys in `'multiple'` mode. Ignored in `'single'` mode. */\n selectedKeys?: Key[];\n /** Whether options show a checkbox. Only applies in `'multiple'` mode. */\n isCheckable?: boolean;\n /**\n * Whether a click inside the element `triggerRef` points at closes the\n * popover, like any other outside click. Pass `false` when that element is\n * where the user keeps working with the list open, such as an input that\n * picks several options in a row. Only this popover is affected; others\n * still close. Defaults to `true`.\n */\n shouldCloseOnTriggerInteraction?: boolean;\n isDisabled?: boolean;\n disabledKeys?: Iterable<Key>;\n items?: Iterable<any>;\n children: ReactNode;\n /** Ref through which the ListBox exposes its internal list state. */\n listStateRef: RefObject<any>;\n onSelectionChange: (selection: Key | Key[] | null) => void;\n onClose: () => void;\n label?: ReactNode;\n ariaLabel?: string;\n /**\n * Ids of the elements that name the field, read after `label` or\n * `ariaLabel`. Without either, they alone name the list, in place of the\n * generic \"Options\".\n */\n ariaLabelledby?: string;\n compositeFocusProps: {\n onFocus: (e: React.FocusEvent) => void;\n onBlur: (e: React.FocusEvent) => void;\n };\n /** Collection node filter applied to the ListBox. */\n filter?: (nodes: Iterable<any>) => Iterable<any>;\n size?: 'small' | 'medium' | 'large' | (string & {});\n /**\n * Label shown when the list is empty (no items / no filter results).\n * Forwarded to the inner ListBox.\n */\n emptyLabel?: ReactNode;\n /**\n * Element to anchor the overlay to geometrically. Defaults to `triggerRef`.\n * Use this to anchor to something other than the trigger (e.g. the caret in\n * a textarea) while keeping `triggerRef` for outside-click/dismiss logic.\n */\n positionTargetRef?: RefObject<Element | null>;\n /**\n * Receives an imperative handle exposing `updatePosition()` so the caller can\n * force the overlay to re-anchor (e.g. when the caret moves).\n */\n positionApiRef?: RefObject<{ updatePosition: () => void } | null>;\n}\n\n// The controls an outside press reaches: a button, a link, a form control,\n// anything with `tabindex`, or something inside one.\nconst CONTROL_SELECTOR =\n 'button, a[href], input, select, textarea, [tabindex], [contenteditable]:not([contenteditable=\"false\"])';\n\n// The layer a field sits in: a dialog, popover or tray, otherwise the page.\nconst LAYER_SELECTOR =\n '[role=\"dialog\"], [role=\"alertdialog\"], [data-overlay-layer]';\n\nconst DISABLED_SELECTOR = ':disabled, [aria-disabled=\"true\"]';\n\n// An enabled control apart from the field, in the field's own layer. A press\n// anywhere else counts as blank space and keeps the field's focus and draft:\n// on the field itself, on a dialog's surface, on a disabled control, or\n// outside the field's layer, which stays open.\nfunction isOutsideControl(el: Element, trigger: HTMLElement | null) {\n const control = el.closest(CONTROL_SELECTOR);\n\n if (\n control == null ||\n trigger == null ||\n control.contains(trigger) ||\n trigger.contains(control) ||\n control.matches(`${LAYER_SELECTOR}, ${DISABLED_SELECTOR}`)\n ) {\n return false;\n }\n\n const layer = trigger.closest(LAYER_SELECTOR);\n\n return layer == null || layer.contains(control);\n}\n\nconst ListBoxPopoverWrapper = tasty({\n qa: 'ComboBoxOverlayWrapper',\n styles: {\n position: 'absolute',\n zIndex: 1000,\n },\n});\n\nconst ListBoxPopoverElement = tasty({\n qa: 'ComboBoxOverlay',\n styles: {\n display: 'grid',\n gridRows: '1sf',\n gridColumns: '1sf',\n width: '$overlay-min-width max-content 50vw',\n height: 'initial max-content (50vh - 5x)',\n overflow: 'auto',\n fill: '#surface',\n radius: '1cr',\n shadow: true,\n padding: '0',\n border: '#border',\n hide: {\n '': false,\n hidden: true,\n },\n boxSizing: 'border-box',\n transition:\n 'translate $transition ease-out, scale $transition ease-out, theme $transition ease-out',\n translate: {\n '': '0 0',\n 'open & [data-placement=\"top\"]': '0 0',\n '!open & [data-placement=\"top\"]': '0 1x',\n 'open & ([data-placement=\"bottom\"] | ![data-placement])': '0 0',\n '!open & ([data-placement=\"bottom\"] | ![data-placement])': '0 -1x',\n },\n transformOrigin: {\n '': 'top center',\n '[data-placement=\"top\"]': 'bottom center',\n },\n scale: {\n '': '1 1',\n '!open': '1 .9',\n },\n opacity: {\n '': 1,\n '!open': 0.001,\n },\n\n '$overlay-min-width': 'min 30x',\n },\n});\n\nexport const ListBoxPopover = function ListBoxPopover(\n props: ListBoxPopoverProps,\n) {\n const { t } = useI18n();\n const {\n isOpen,\n triggerRef,\n popoverRef,\n listBoxRef,\n direction,\n shouldFlip,\n overlayOffset,\n containerPadding,\n comboBoxWidth,\n listBoxId,\n overlayStyles,\n listBoxStyles,\n optionStyles,\n optionHighlight,\n sectionStyles,\n headingStyles,\n listGap,\n selectedKey,\n selectionMode = 'single',\n selectedKeys,\n isCheckable,\n shouldCloseOnTriggerInteraction = true,\n isDisabled,\n disabledKeys,\n items,\n children,\n listStateRef,\n onSelectionChange,\n onClose,\n label,\n ariaLabel,\n ariaLabelledby,\n compositeFocusProps,\n filter,\n size = 'medium',\n emptyLabel,\n positionTargetRef,\n positionApiRef,\n } = props;\n\n const mergedPopoverRef = popoverRef;\n\n // Opened inside a modal, the list stays readable while the modal hides the\n // page.\n const layerRef = useModalLayerRef();\n\n // Ref to the inner scrollable element (the visible popover). react-aria\n // measures this for its flip/shrink math and writes maxHeight onto the\n // overlay (positioning wrapper); we forward that maxHeight to this element\n // below so the scroll container actually shrinks instead of overflowing.\n const overlayScrollRef = useRef<HTMLDivElement | null>(null);\n\n // Overlay positioning — anchor to the explicit position target when given\n // (e.g. a caret anchor), otherwise to the trigger. `triggerRef` is still\n // used below for outside-click/dismiss behavior.\n const {\n overlayProps: overlayPositionProps,\n placement,\n updatePosition,\n } = useOverlayPosition({\n targetRef: (positionTargetRef ?? triggerRef) as any,\n overlayRef: mergedPopoverRef as any,\n scrollRef: overlayScrollRef as any,\n placement: `${direction} start` as any,\n shouldFlip,\n isOpen,\n offset: overlayOffset,\n containerPadding: containerPadding,\n });\n\n // Keep positioning (top/left/zIndex) on the wrapper, but split out the\n // available-space cap so it can be applied to the inner scroll element.\n const { maxHeight, maxWidth, ...positionStyle } =\n (overlayPositionProps.style ?? {}) as CSSProperties;\n\n // Expose updatePosition so callers can re-anchor on demand (e.g. caret move).\n useEffect(() => {\n if (positionApiRef) {\n positionApiRef.current = { updatePosition };\n }\n return () => {\n if (positionApiRef) {\n positionApiRef.current = null;\n }\n };\n }, [positionApiRef, updatePosition]);\n\n const getOutsidePressBehavior = (el: Element) => {\n const menuTriggerEl = el.closest('[data-popover-trigger]');\n if (menuTriggerEl) {\n return menuTriggerEl === triggerRef.current ? 'consume' : 'ignore';\n }\n if (\n (!shouldCloseOnTriggerInteraction && triggerRef.current?.contains(el)) ||\n el.closest('[data-popover-keep]')\n ) {\n return 'ignore';\n }\n // The press reaches an outside control, so a checkbox toggles, a text\n // field takes focus and a native Save button saves on the first click.\n // A UI Kit Button passes from any layer, unless it is disabled.\n const dismissEl = el.closest('[data-popover-dismiss]');\n\n if (\n isOutsideControl(el, triggerRef.current) ||\n (dismissEl != null && !dismissEl.matches(DISABLED_SELECTOR))\n ) {\n return 'pass';\n }\n return 'consume';\n };\n\n // Overlay behavior (dismiss on outside click, escape)\n const { overlayProps: overlayBehaviorProps } = useOverlay(\n {\n onClose,\n shouldCloseOnBlur: true,\n isOpen,\n isDismissable: true,\n shouldCloseOnInteractOutside: (el) => {\n const behavior = getOutsidePressBehavior(el);\n if (behavior === 'pass') {\n // Leave the control's press intact and close after its action.\n setTimeout(onClose, 0);\n }\n return behavior === 'consume';\n },\n },\n mergedPopoverRef as any,\n );\n\n const preserveOutsidePressFocus = useEvent((event: PointerEvent) => {\n if (\n (isFocusWithin(triggerRef.current) ||\n isFocusWithin(mergedPopoverRef.current)) &&\n getOutsidePressBehavior(getEventTarget(event) as Element) === 'consume'\n ) {\n event.preventDefault();\n }\n });\n\n // Aria now permits outside presses to move focus. A passed press moves it\n // to its control, and the field settles its draft on blur, as on Tab. A\n // consumed press, such as one on blank space or a dialog's backdrop, must\n // only dismiss this list: the field keeps focus and its draft.\n useInteractOutside({\n ref: mergedPopoverRef,\n isDisabled: !isOpen,\n onInteractOutsideStart: preserveOutsidePressFocus,\n onInteractOutside: preserveOutsidePressFocus,\n });\n\n // Extract primary placement direction for consistent styling\n const placementDirection = placement?.split(' ')[0] || direction;\n\n // Hold the DisplayTransition ref so we can bind the same node to both the\n // transition listener and our scroll ref via a single stable callback.\n const transitionRefHolder = useRef<\n ((node: HTMLElement | null) => void) | null\n >(null);\n const setScrollRef = useCallback((node: HTMLElement | null) => {\n overlayScrollRef.current = node as HTMLDivElement | null;\n transitionRefHolder.current?.(node);\n }, []);\n\n const overlayContent = (\n <DisplayTransition isShown={isOpen}>\n {({ phase, isShown, isExiting, ref: transitionRef }) => {\n transitionRefHolder.current = transitionRef;\n return (\n <ListBoxPopoverWrapper\n {...mergeProps(\n { ...overlayPositionProps, style: positionStyle },\n overlayBehaviorProps,\n compositeFocusProps,\n )}\n ref={mergeRefs(mergedPopoverRef, layerRef)}\n style={positionStyle}\n // A press on the list while it fades out must not close the\n // overlay under it (CUB-5293) — see `Overlay`.\n data-react-aria-top-layer={isExiting || undefined}\n >\n <ListBoxPopoverElement\n ref={setScrollRef}\n data-placement={placementDirection}\n data-phase={phase}\n mods={{\n open: isShown,\n hidden: phase === 'unmounted',\n }}\n styles={overlayStyles}\n style={{\n '--overlay-min-width': comboBoxWidth\n ? `${comboBoxWidth}px`\n : undefined,\n maxHeight,\n maxWidth,\n }}\n >\n <ListBox\n isBare\n ref={listBoxRef}\n disableSelectionToggle\n id={listBoxId}\n aria-label={\n ariaLabel ||\n (typeof label === 'string'\n ? label\n : ariaLabelledby\n ? undefined\n : t('listBoxPopover.options', 'Options'))\n }\n aria-labelledby={ariaLabelledby}\n selectionMode={selectionMode}\n selectedKey={\n selectionMode === 'single' ? selectedKey : undefined\n }\n selectedKeys={\n selectionMode === 'multiple' ? selectedKeys : undefined\n }\n isCheckable={\n selectionMode === 'multiple' ? isCheckable : undefined\n }\n isDisabled={isDisabled}\n disabledKeys={disabledKeys}\n // As in Select: a large field opens large options, a small\n // one medium options, which stay easy to pick.\n size={size === 'large' ? 'large' : 'medium'}\n shouldUseVirtualFocus={true}\n items={items as any}\n filter={filter}\n styles={listBoxStyles}\n optionStyles={optionStyles}\n optionHighlight={optionHighlight}\n sectionStyles={sectionStyles}\n headingStyles={headingStyles}\n listGap={listGap}\n stateRef={listStateRef}\n shape=\"popover\"\n emptyLabel={emptyLabel}\n onSelectionChange={onSelectionChange}\n >\n {children as any}\n </ListBox>\n </ListBoxPopoverElement>\n </ListBoxPopoverWrapper>\n );\n }}\n </DisplayTransition>\n );\n\n return <Portal>{overlayContent}</Portal>;\n};\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  //#region src/components/fields/ListBoxPopover/listNavigation.ts
3
3
  /**
4
4
  * Walks a collection (possibly nested under sections) and collects the keys of
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { useEffect, useRef } from "react";
@@ -1,7 +1,6 @@
1
1
 
2
2
  import { FieldBaseProps, TextFieldKeyboardProps } from "../../../shared/form.js";
3
3
  import { CubeTextInputBaseProps } from "../TextInput/TextInputBase.js";
4
- import "../TextInput/index.js";
5
4
  import * as react from "react";
6
5
  import { AriaNumberFieldProps as AriaNumberFieldProps$1 } from "react-aria";
7
6
  import { TextInputDOMEvents } from "@react-types/shared";
@@ -1,8 +1,10 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-bef9600 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-e3f8a1a | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
+ import { useI18n } from "../../../i18n/useI18n.js";
3
4
  import { castNullableNumberValue } from "../../../utils/react/nullableValue.js";
4
5
  import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
5
6
  import { TextInputBase } from "../TextInput/TextInputBase.js";
7
+ import { useDisplayedValidation } from "../TextInput/displayed-validation.js";
6
8
  import { StepButton } from "./StepButton.js";
7
9
  import { c } from "react/compiler-runtime";
8
10
  import { tasty } from "@tenphi/tasty";
@@ -22,7 +24,8 @@ const StepperContainer = tasty({ styles: {
22
24
  margin: "(.5x - 1bw) left"
23
25
  } });
24
26
  function NumberInput(rawProps, ref) {
25
- const $ = c(48);
27
+ const $ = c(51);
28
+ const { t } = useI18n();
26
29
  let t0;
27
30
  if ($[0] !== rawProps) {
28
31
  t0 = castNullableNumberValue(rawProps);
@@ -31,159 +34,164 @@ function NumberInput(rawProps, ref) {
31
34
  } else t0 = $[1];
32
35
  rawProps = t0;
33
36
  const props = useFieldProps(rawProps);
34
- let hideStepper;
35
- let inputRef;
36
- let otherProps;
37
- let suffix;
38
- let userInputProps;
39
- let userLabelProps;
40
- if ($[2] !== props) {
41
- let { hideStepper: t1, suffix: t2, value, defaultValue, onChange, inputRef: t3, labelProps: t4, inputProps: t5, ...t6 } = props;
42
- hideStepper = t1;
43
- suffix = t2;
44
- inputRef = t3;
45
- userLabelProps = t4;
46
- userInputProps = t5;
47
- otherProps = t6;
48
- $[2] = props;
49
- $[3] = hideStepper;
50
- $[4] = inputRef;
51
- $[5] = otherProps;
52
- $[6] = suffix;
53
- $[7] = userInputProps;
54
- $[8] = userLabelProps;
55
- } else {
56
- hideStepper = $[3];
57
- inputRef = $[4];
58
- otherProps = $[5];
59
- suffix = $[6];
60
- userInputProps = $[7];
61
- userLabelProps = $[8];
62
- }
37
+ let { hideStepper, suffix, value, defaultValue, onChange, inputRef, labelProps: userLabelProps, inputProps: userInputProps, wrapperProps, ...otherProps } = props;
63
38
  const showStepper = !hideStepper;
64
39
  const { locale } = useLocale();
40
+ const displayedValidation = useDisplayedValidation();
65
41
  let t1;
66
- if ($[9] !== locale || $[10] !== props) {
67
- t1 = {
68
- ...props,
42
+ if ($[2] !== displayedValidation || $[3] !== props) {
43
+ t1 = displayedValidation.trackTouched(props);
44
+ $[2] = displayedValidation;
45
+ $[3] = props;
46
+ $[4] = t1;
47
+ } else t1 = $[4];
48
+ const ariaProps = t1;
49
+ let t2;
50
+ if ($[5] !== ariaProps || $[6] !== locale) {
51
+ t2 = {
52
+ ...ariaProps,
69
53
  locale
70
54
  };
71
- $[9] = locale;
72
- $[10] = props;
73
- $[11] = t1;
74
- } else t1 = $[11];
75
- const state = useNumberFieldState(t1);
55
+ $[5] = ariaProps;
56
+ $[6] = locale;
57
+ $[7] = t2;
58
+ } else t2 = $[7];
59
+ const state = useNumberFieldState(t2);
76
60
  const localInputRef = useRef(null);
77
61
  inputRef = inputRef ?? localInputRef;
78
- let t2;
79
- if ($[12] !== props) {
80
- t2 = {
81
- ...props,
62
+ let t3;
63
+ if ($[8] !== ariaProps) {
64
+ t3 = {
65
+ ...ariaProps,
82
66
  onKeyDown: void 0,
83
67
  onKeyUp: void 0
84
68
  };
85
- $[12] = props;
86
- $[13] = t2;
87
- } else t2 = $[13];
88
- const { groupProps, labelProps, inputProps, incrementButtonProps, decrementButtonProps } = useNumberField(t2, state, inputRef);
89
- let t3;
90
- if ($[14] !== inputProps || $[15] !== props) {
91
- t3 = (event) => {
69
+ $[8] = ariaProps;
70
+ $[9] = t3;
71
+ } else t3 = $[9];
72
+ const { groupProps: ariaGroupProps, labelProps, inputProps, incrementButtonProps, decrementButtonProps, ...validation } = useNumberField(t3, state, inputRef);
73
+ let t4;
74
+ if ($[10] !== ariaGroupProps || $[11] !== wrapperProps) {
75
+ t4 = mergeProps$1(ariaGroupProps, wrapperProps);
76
+ $[10] = ariaGroupProps;
77
+ $[11] = wrapperProps;
78
+ $[12] = t4;
79
+ } else t4 = $[12];
80
+ const groupProps = t4;
81
+ const fieldLabel = props["aria-label"] || (typeof props.label === "string" ? props.label : "");
82
+ let t5;
83
+ if ($[13] !== fieldLabel || $[14] !== props.incrementAriaLabel || $[15] !== t) {
84
+ t5 = props.incrementAriaLabel ?? (fieldLabel ? t("numberInput.stepUp", "Increase {{label}}", { label: fieldLabel }) : t("numberInput.increase", "Increase"));
85
+ $[13] = fieldLabel;
86
+ $[14] = props.incrementAriaLabel;
87
+ $[15] = t;
88
+ $[16] = t5;
89
+ } else t5 = $[16];
90
+ const stepUpLabel = t5;
91
+ let t6;
92
+ if ($[17] !== fieldLabel || $[18] !== props.decrementAriaLabel || $[19] !== t) {
93
+ t6 = props.decrementAriaLabel ?? (fieldLabel ? t("numberInput.stepDown", "Decrease {{label}}", { label: fieldLabel }) : t("numberInput.decrease", "Decrease"));
94
+ $[17] = fieldLabel;
95
+ $[18] = props.decrementAriaLabel;
96
+ $[19] = t;
97
+ $[20] = t6;
98
+ } else t6 = $[20];
99
+ const stepDownLabel = t6;
100
+ let t7;
101
+ if ($[21] !== inputProps || $[22] !== props) {
102
+ t7 = (event) => {
92
103
  inputProps.onKeyDown?.(event);
93
104
  event.defaultPrevented = event.isDefaultPrevented();
94
105
  if (event.key !== "Enter") event.continuePropagation();
95
106
  props.onKeyDown?.(event);
96
107
  };
97
- $[14] = inputProps;
98
- $[15] = props;
99
- $[16] = t3;
100
- } else t3 = $[16];
101
- let t4;
102
- if ($[17] !== props.isDisabled || $[18] !== props.onKeyUp || $[19] !== t3) {
103
- t4 = {
108
+ $[21] = inputProps;
109
+ $[22] = props;
110
+ $[23] = t7;
111
+ } else t7 = $[23];
112
+ let t8;
113
+ if ($[24] !== props.isDisabled || $[25] !== props.onKeyUp || $[26] !== t7) {
114
+ t8 = {
104
115
  isDisabled: props.isDisabled,
105
- onKeyDown: t3,
116
+ onKeyDown: t7,
106
117
  onKeyUp: props.onKeyUp
107
118
  };
108
- $[17] = props.isDisabled;
109
- $[18] = props.onKeyUp;
110
- $[19] = t3;
111
- $[20] = t4;
112
- } else t4 = $[20];
113
- const { keyboardProps } = useKeyboard(t4);
114
- let t5;
115
- if ($[21] !== labelProps || $[22] !== userLabelProps) {
116
- t5 = mergeProps$1(labelProps, userLabelProps);
117
- $[21] = labelProps;
118
- $[22] = userLabelProps;
119
- $[23] = t5;
120
- } else t5 = $[23];
121
- const mergedLabelProps = t5;
122
- let t6;
123
- if ($[24] !== decrementButtonProps || $[25] !== incrementButtonProps || $[26] !== otherProps || $[27] !== props.isDisabled || $[28] !== showStepper) {
124
- t6 = showStepper ? /* @__PURE__ */ jsxs(StepperContainer, { children: [/* @__PURE__ */ jsx(StepButton, {
125
- isDisabled: props.isDisabled,
126
- direction: "up",
127
- ...incrementButtonProps,
128
- size: otherProps.size
129
- }), /* @__PURE__ */ jsx(StepButton, {
130
- isDisabled: props.isDisabled,
131
- direction: "down",
132
- ...decrementButtonProps,
133
- size: otherProps.size
134
- })] }) : void 0;
135
- $[24] = decrementButtonProps;
136
- $[25] = incrementButtonProps;
137
- $[26] = otherProps;
138
- $[27] = props.isDisabled;
139
- $[28] = showStepper;
140
- $[29] = t6;
141
- } else t6 = $[29];
142
- const steppers = t6;
143
- const t7 = otherProps;
144
- let t8;
145
- if ($[30] !== inputProps || $[31] !== keyboardProps || $[32] !== props.id || $[33] !== userInputProps) {
146
- t8 = mergeProps$1(mergeProps({
119
+ $[24] = props.isDisabled;
120
+ $[25] = props.onKeyUp;
121
+ $[26] = t7;
122
+ $[27] = t8;
123
+ } else t8 = $[27];
124
+ const { keyboardProps } = useKeyboard(t8);
125
+ let t9;
126
+ if ($[28] !== labelProps || $[29] !== userLabelProps) {
127
+ t9 = mergeProps$1(labelProps, userLabelProps);
128
+ $[28] = labelProps;
129
+ $[29] = userLabelProps;
130
+ $[30] = t9;
131
+ } else t9 = $[30];
132
+ const mergedLabelProps = t9;
133
+ const steppers = showStepper ? /* @__PURE__ */ jsxs(StepperContainer, { children: [/* @__PURE__ */ jsx(StepButton, {
134
+ isDisabled: props.isDisabled,
135
+ direction: "up",
136
+ ...incrementButtonProps,
137
+ "aria-label": stepUpLabel,
138
+ size: otherProps.size
139
+ }), /* @__PURE__ */ jsx(StepButton, {
140
+ isDisabled: props.isDisabled,
141
+ direction: "down",
142
+ ...decrementButtonProps,
143
+ "aria-label": stepDownLabel,
144
+ size: otherProps.size
145
+ })] }) : void 0;
146
+ const T0 = StyledTextInputBase;
147
+ const t10 = otherProps;
148
+ const t11 = displayedValidation.getDisplayedValidation(otherProps, validation);
149
+ let t12;
150
+ if ($[31] !== inputProps || $[32] !== keyboardProps || $[33] !== props.id || $[34] !== userInputProps) {
151
+ t12 = mergeProps$1(mergeProps({
147
152
  ...inputProps,
148
153
  ...keyboardProps
149
154
  }, { id: props.id }), { "data-input-type": "numberinput" }, userInputProps);
150
- $[30] = inputProps;
151
- $[31] = keyboardProps;
152
- $[32] = props.id;
153
- $[33] = userInputProps;
154
- $[34] = t8;
155
- } else t8 = $[34];
156
- let t9;
157
- if ($[35] !== props.suffixPosition || $[36] !== showStepper || $[37] !== steppers || $[38] !== suffix) {
158
- t9 = showStepper ? props.suffixPosition === "after" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [steppers, suffix] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [suffix, steppers] }) : suffix;
159
- $[35] = props.suffixPosition;
160
- $[36] = showStepper;
161
- $[37] = steppers;
162
- $[38] = suffix;
163
- $[39] = t9;
164
- } else t9 = $[39];
165
- let t10;
166
- if ($[40] !== groupProps || $[41] !== inputRef || $[42] !== mergedLabelProps || $[43] !== otherProps || $[44] !== ref || $[45] !== t8 || $[46] !== t9) {
167
- t10 = /* @__PURE__ */ jsx(StyledTextInputBase, {
168
- ...t7,
155
+ $[31] = inputProps;
156
+ $[32] = keyboardProps;
157
+ $[33] = props.id;
158
+ $[34] = userInputProps;
159
+ $[35] = t12;
160
+ } else t12 = $[35];
161
+ let t13;
162
+ if ($[36] !== props.suffixPosition || $[37] !== showStepper || $[38] !== steppers || $[39] !== suffix) {
163
+ t13 = showStepper ? props.suffixPosition === "after" ? /* @__PURE__ */ jsxs(Fragment$1, { children: [steppers, suffix] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [suffix, steppers] }) : suffix;
164
+ $[36] = props.suffixPosition;
165
+ $[37] = showStepper;
166
+ $[38] = steppers;
167
+ $[39] = suffix;
168
+ $[40] = t13;
169
+ } else t13 = $[40];
170
+ let t14;
171
+ if ($[41] !== T0 || $[42] !== groupProps || $[43] !== inputRef || $[44] !== mergedLabelProps || $[45] !== otherProps || $[46] !== ref || $[47] !== t11 || $[48] !== t12 || $[49] !== t13) {
172
+ t14 = /* @__PURE__ */ jsx(T0, {
173
+ ...t10,
174
+ ...t11,
169
175
  ref,
170
176
  labelProps: mergedLabelProps,
171
- inputProps: t8,
177
+ inputProps: t12,
172
178
  inputRef,
173
179
  wrapperProps: groupProps,
174
180
  suffixPosition: "after",
175
- suffix: t9
181
+ suffix: t13
176
182
  });
177
- $[40] = groupProps;
178
- $[41] = inputRef;
179
- $[42] = mergedLabelProps;
180
- $[43] = otherProps;
181
- $[44] = ref;
182
- $[45] = t8;
183
- $[46] = t9;
184
- $[47] = t10;
185
- } else t10 = $[47];
186
- return t10;
183
+ $[41] = T0;
184
+ $[42] = groupProps;
185
+ $[43] = inputRef;
186
+ $[44] = mergedLabelProps;
187
+ $[45] = otherProps;
188
+ $[46] = ref;
189
+ $[47] = t11;
190
+ $[48] = t12;
191
+ $[49] = t13;
192
+ $[50] = t14;
193
+ } else t14 = $[50];
194
+ return t14;
187
195
  }
188
196
  /**
189
197
  * NumberFields allow users to enter a number and increment or decrement the value using stepper buttons.
@@ -1 +1 @@
1
- {"version":3,"file":"NumberInput.js","names":["tasty","ForwardedRef","forwardRef","KeyboardEvent","RefObject","useRef","AriaNumberFieldProps","mergeProps","mergeAriaProps","useKeyboard","useLocale","useNumberField","useNumberFieldState","castNullableNumberValue","WithNullableValue","useFieldProps","CubeTextInputBaseProps","TextInputBase","StepButton","TextInputDOMEvents","FieldBaseProps","TextFieldKeyboardProps","CubeNumberInputProps","Omit","field","hideStepper","suffixPosition","StyledTextInputBase","inputStyles","textAlign","StepperContainer","styles","display","gridColumns","gridRows","flow","placeSelf","margin","NumberInput","rawProps","ref","$","_c","t0","props","inputRef","otherProps","suffix","userInputProps","userLabelProps","t1","t2","value","defaultValue","onChange","t3","labelProps","t4","inputProps","t5","t6","showStepper","locale","state","localInputRef","onKeyDown","undefined","onKeyUp","groupProps","incrementButtonProps","decrementButtonProps","HTMLInputElement","event","defaultPrevented","isDefaultPrevented","key","continuePropagation","isDisabled","keyboardProps","mergedLabelProps","size","steppers","t8","id","t9","t10","_NumberInput","cubeInputType","displayName"],"sources":["../../../../src/components/fields/NumberInput/NumberInput.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n KeyboardEvent,\n RefObject,\n useRef,\n} from 'react';\nimport {\n AriaNumberFieldProps,\n mergeProps as mergeAriaProps,\n useKeyboard,\n useLocale,\n useNumberField,\n} from 'react-aria';\nimport { useNumberFieldState } from 'react-stately';\n\nimport { mergeProps } from '../../../utils/react';\nimport {\n castNullableNumberValue,\n WithNullableValue,\n} from '../../../utils/react/nullableValue';\nimport { useFieldProps } from '../../form';\nimport { CubeTextInputBaseProps, TextInputBase } from '../TextInput';\n\nimport { StepButton } from './StepButton';\n\nimport type { TextInputDOMEvents } from '@react-types/shared';\nimport type {\n FieldBaseProps,\n TextFieldKeyboardProps,\n} from '../../../shared/form';\n\nexport interface CubeNumberInputProps\n extends Omit<\n CubeTextInputBaseProps,\n | 'defaultValue'\n | 'value'\n | 'onChange'\n | 'field'\n | 'validate'\n | 'onFocus'\n | 'onBlur'\n | keyof TextInputDOMEvents\n >,\n Omit<\n AriaNumberFieldProps,\n 'form' | 'name' | 'errorMessage' | 'onKeyDown' | 'onKeyUp'\n >,\n TextFieldKeyboardProps {\n field?: FieldBaseProps<number | null | undefined>['field'];\n /** Whether or to hide stepper */\n hideStepper?: boolean;\n /**\n * Whether the suffix goes before or after the stepper buttons. Defaults to\n * `before`, so a unit sits next to the number. The validation and loading\n * icons always come before both.\n */\n suffixPosition?: 'before' | 'after';\n}\n\nconst StyledTextInputBase = tasty(TextInputBase, {\n inputStyles: {\n textAlign: 'right',\n },\n});\n\nconst StepperContainer = tasty({\n styles: {\n display: 'grid',\n gridColumns: '1sf',\n gridRows: '1sf 1sf',\n flow: 'column',\n placeSelf: 'stretch',\n margin: '(.5x - 1bw) left',\n },\n});\n\nfunction NumberInput(\n rawProps: WithNullableValue<CubeNumberInputProps>,\n ref: ForwardedRef<HTMLElement>,\n) {\n rawProps = castNullableNumberValue(rawProps);\n let props = useFieldProps(rawProps);\n\n let {\n hideStepper,\n suffix,\n value,\n defaultValue,\n onChange,\n inputRef,\n labelProps: userLabelProps,\n inputProps: userInputProps,\n ...otherProps\n } = props;\n let showStepper = !hideStepper;\n let { locale } = useLocale();\n let state = useNumberFieldState({ ...props, locale });\n let localInputRef = useRef<HTMLInputElement>(null);\n\n inputRef = inputRef ?? localInputRef;\n\n let {\n groupProps,\n labelProps,\n inputProps,\n incrementButtonProps,\n decrementButtonProps,\n } = useNumberField(\n { ...props, onKeyDown: undefined, onKeyUp: undefined },\n state,\n inputRef as RefObject<HTMLInputElement>,\n );\n // Keep native commits and user callbacks inside one Aria event wrapper so\n // continuePropagation can still undo the native shortcut's propagation stop.\n let { keyboardProps } = useKeyboard({\n isDisabled: props.isDisabled,\n onKeyDown: (event) => {\n inputProps.onKeyDown?.(event as KeyboardEvent<HTMLInputElement>);\n event.defaultPrevented = event.isDefaultPrevented();\n // NumberInput historically lets every key except Enter reach ancestors.\n if (event.key !== 'Enter') event.continuePropagation();\n props.onKeyDown?.(event);\n },\n onKeyUp: props.onKeyUp,\n });\n\n // Merge user-provided labelProps with aria labelProps\n const mergedLabelProps = mergeProps(labelProps, userLabelProps);\n\n const steppers = showStepper ? (\n <StepperContainer>\n <StepButton\n isDisabled={props.isDisabled}\n direction=\"up\"\n {...incrementButtonProps}\n size={otherProps.size}\n />\n <StepButton\n isDisabled={props.isDisabled}\n direction=\"down\"\n {...decrementButtonProps}\n size={otherProps.size}\n />\n </StepperContainer>\n ) : undefined;\n\n return (\n <StyledTextInputBase\n {...otherProps}\n ref={ref}\n labelProps={mergedLabelProps}\n inputProps={mergeProps(\n // `useNumberField` seeds its input id once. Merging the current id\n // through react-aria's own `mergeProps` updates that seed, so the\n // input, its label and the steppers' `aria-controls` follow the id\n // when the form binding changes after mount.\n mergeAriaProps({ ...inputProps, ...keyboardProps }, { id: props.id }),\n { 'data-input-type': 'numberinput' },\n userInputProps,\n )}\n inputRef={inputRef}\n wrapperProps={groupProps}\n // The validation/loading icon always comes first; `suffixPosition`\n // places the suffix against the steppers instead.\n suffixPosition=\"after\"\n suffix={\n showStepper ? (\n props.suffixPosition === 'after' ? (\n <>\n {steppers}\n {suffix}\n </>\n ) : (\n <>\n {suffix}\n {steppers}\n </>\n )\n ) : (\n suffix\n )\n }\n />\n );\n}\n\n/**\n * NumberFields allow users to enter a number and increment or decrement the value using stepper buttons.\n */\nconst _NumberInput = forwardRef(NumberInput);\n\n(_NumberInput as any).cubeInputType = 'Number';\n\n_NumberInput.displayName = 'NumberInput';\n\nexport { _NumberInput as NumberInput };\nexport type { AriaNumberFieldProps };\n"],"mappings":"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"}
1
+ {"version":3,"file":"NumberInput.js","names":["tasty","ForwardedRef","forwardRef","KeyboardEvent","RefObject","useRef","AriaNumberFieldProps","mergeProps","mergeAriaProps","useKeyboard","useLocale","useNumberField","useNumberFieldState","useI18n","castNullableNumberValue","WithNullableValue","useFieldProps","useDisplayedValidation","CubeTextInputBaseProps","TextInputBase","StepButton","TextInputDOMEvents","FieldBaseProps","TextFieldKeyboardProps","CubeNumberInputProps","Omit","field","hideStepper","suffixPosition","StyledTextInputBase","inputStyles","textAlign","StepperContainer","styles","display","gridColumns","gridRows","flow","placeSelf","margin","NumberInput","rawProps","ref","$","_c","t","t0","props","suffix","value","defaultValue","onChange","inputRef","labelProps","userLabelProps","inputProps","userInputProps","wrapperProps","otherProps","showStepper","locale","displayedValidation","t1","trackTouched","ariaProps","t2","state","localInputRef","t3","onKeyDown","undefined","onKeyUp","groupProps","ariaGroupProps","incrementButtonProps","decrementButtonProps","validation","HTMLInputElement","t4","fieldLabel","label","t5","incrementAriaLabel","stepUpLabel","t6","decrementAriaLabel","stepDownLabel","t7","event","defaultPrevented","isDefaultPrevented","key","continuePropagation","t8","isDisabled","keyboardProps","t9","mergedLabelProps","steppers","size","T0","t11","getDisplayedValidation","t12","id","t13","t14","_NumberInput","cubeInputType","displayName"],"sources":["../../../../src/components/fields/NumberInput/NumberInput.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport {\n ForwardedRef,\n forwardRef,\n KeyboardEvent,\n RefObject,\n useRef,\n} from 'react';\nimport {\n AriaNumberFieldProps,\n mergeProps as mergeAriaProps,\n useKeyboard,\n useLocale,\n useNumberField,\n} from 'react-aria';\nimport { useNumberFieldState } from 'react-stately';\n\nimport { useI18n } from '../../../i18n';\nimport { mergeProps } from '../../../utils/react';\nimport {\n castNullableNumberValue,\n WithNullableValue,\n} from '../../../utils/react/nullableValue';\nimport { useFieldProps } from '../../form';\nimport { useDisplayedValidation } from '../TextInput/displayed-validation';\nimport {\n CubeTextInputBaseProps,\n TextInputBase,\n} from '../TextInput/TextInputBase';\n\nimport { StepButton } from './StepButton';\n\nimport type { TextInputDOMEvents } from '@react-types/shared';\nimport type {\n FieldBaseProps,\n TextFieldKeyboardProps,\n} from '../../../shared/form';\n\nexport interface CubeNumberInputProps\n extends Omit<\n CubeTextInputBaseProps,\n | 'defaultValue'\n | 'value'\n | 'onChange'\n | 'field'\n | 'validate'\n | 'onFocus'\n | 'onBlur'\n | keyof TextInputDOMEvents\n >,\n Omit<\n AriaNumberFieldProps,\n 'form' | 'name' | 'errorMessage' | 'onKeyDown' | 'onKeyUp'\n >,\n TextFieldKeyboardProps {\n field?: FieldBaseProps<number | null | undefined>['field'];\n /** Whether or to hide stepper */\n hideStepper?: boolean;\n /**\n * Whether the suffix goes before or after the stepper buttons. Defaults to\n * `before`, so a unit sits next to the number. The validation and loading\n * icons always come before both.\n */\n suffixPosition?: 'before' | 'after';\n}\n\nconst StyledTextInputBase = tasty(TextInputBase, {\n inputStyles: {\n textAlign: 'right',\n },\n});\n\nconst StepperContainer = tasty({\n styles: {\n display: 'grid',\n gridColumns: '1sf',\n gridRows: '1sf 1sf',\n flow: 'column',\n placeSelf: 'stretch',\n margin: '(.5x - 1bw) left',\n },\n});\n\nfunction NumberInput(\n rawProps: WithNullableValue<CubeNumberInputProps>,\n ref: ForwardedRef<HTMLElement>,\n) {\n const { t } = useI18n();\n\n // `NaN` is the number field's own empty value.\n rawProps = castNullableNumberValue(rawProps);\n let props = useFieldProps(rawProps);\n\n let {\n hideStepper,\n suffix,\n value,\n defaultValue,\n onChange,\n inputRef,\n labelProps: userLabelProps,\n inputProps: userInputProps,\n wrapperProps,\n ...otherProps\n } = props;\n let showStepper = !hideStepper;\n let { locale } = useLocale();\n // The state commits typed text on blur and Enter, so its `onChange` is the\n // change `validate` sees.\n let displayedValidation = useDisplayedValidation();\n let ariaProps = displayedValidation.trackTouched(props);\n let state = useNumberFieldState({ ...ariaProps, locale });\n let localInputRef = useRef<HTMLInputElement>(null);\n\n inputRef = inputRef ?? localInputRef;\n\n let {\n groupProps: ariaGroupProps,\n labelProps,\n inputProps,\n incrementButtonProps,\n decrementButtonProps,\n ...validation\n } = useNumberField(\n { ...ariaProps, onKeyDown: undefined, onKeyUp: undefined },\n state,\n inputRef as RefObject<HTMLInputElement>,\n );\n let groupProps = mergeProps(ariaGroupProps, wrapperProps);\n\n // React Aria names each stepper after the field: a text label goes into the\n // name, any other label is composed in through the `aria-labelledby` it sets.\n // The UI Kit strings take the label the same way, so they replace React\n // Aria's own without losing the field name. Without a text label the name\n // has to read on its own, so it has strings of its own rather than an\n // empty `{{label}}` slot.\n let fieldLabel =\n props['aria-label'] || (typeof props.label === 'string' ? props.label : '');\n let stepUpLabel =\n props.incrementAriaLabel ??\n (fieldLabel\n ? t('numberInput.stepUp', 'Increase {{label}}', { label: fieldLabel })\n : t('numberInput.increase', 'Increase'));\n let stepDownLabel =\n props.decrementAriaLabel ??\n (fieldLabel\n ? t('numberInput.stepDown', 'Decrease {{label}}', { label: fieldLabel })\n : t('numberInput.decrease', 'Decrease'));\n // Keep native commits and user callbacks inside one Aria event wrapper so\n // continuePropagation can still undo the native shortcut's propagation stop.\n let { keyboardProps } = useKeyboard({\n isDisabled: props.isDisabled,\n onKeyDown: (event) => {\n inputProps.onKeyDown?.(event as KeyboardEvent<HTMLInputElement>);\n event.defaultPrevented = event.isDefaultPrevented();\n // NumberInput historically lets every key except Enter reach ancestors.\n if (event.key !== 'Enter') event.continuePropagation();\n props.onKeyDown?.(event);\n },\n onKeyUp: props.onKeyUp,\n });\n\n // Merge user-provided labelProps with aria labelProps\n const mergedLabelProps = mergeProps(labelProps, userLabelProps);\n\n const steppers = showStepper ? (\n <StepperContainer>\n <StepButton\n isDisabled={props.isDisabled}\n direction=\"up\"\n {...incrementButtonProps}\n aria-label={stepUpLabel}\n size={otherProps.size}\n />\n <StepButton\n isDisabled={props.isDisabled}\n direction=\"down\"\n {...decrementButtonProps}\n aria-label={stepDownLabel}\n size={otherProps.size}\n />\n </StepperContainer>\n ) : undefined;\n\n return (\n <StyledTextInputBase\n {...otherProps}\n {...displayedValidation.getDisplayedValidation(otherProps, validation)}\n ref={ref}\n labelProps={mergedLabelProps}\n inputProps={mergeProps(\n // `useNumberField` seeds its input id once. Merging the current id\n // through react-aria's own `mergeProps` updates that seed, so the\n // input, its label and the steppers' `aria-controls` follow the id\n // when the form binding changes after mount.\n mergeAriaProps({ ...inputProps, ...keyboardProps }, { id: props.id }),\n { 'data-input-type': 'numberinput' },\n userInputProps,\n )}\n inputRef={inputRef}\n wrapperProps={groupProps}\n // The validation/loading icon always comes first; `suffixPosition`\n // places the suffix against the steppers instead.\n suffixPosition=\"after\"\n suffix={\n showStepper ? (\n props.suffixPosition === 'after' ? (\n <>\n {steppers}\n {suffix}\n </>\n ) : (\n <>\n {suffix}\n {steppers}\n </>\n )\n ) : (\n suffix\n )\n }\n />\n );\n}\n\n/**\n * NumberFields allow users to enter a number and increment or decrement the value using stepper buttons.\n */\nconst _NumberInput = forwardRef(NumberInput);\n\n(_NumberInput as any).cubeInputType = 'Number';\n\n_NumberInput.displayName = 'NumberInput';\n\nexport { _NumberInput as NumberInput };\nexport type { AriaNumberFieldProps };\n"],"mappings":"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"}