@cube-dev/ui-kit 0.207.0 → 0.208.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (856) hide show
  1. package/dist/CHANGELOG.md +12 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js.map +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.d.ts +0 -2
  13. package/dist/components/CollectionItem.js +1 -1
  14. package/dist/components/CollectionItem.js.map +1 -1
  15. package/dist/components/GlobalStyles.js +1 -1
  16. package/dist/components/GlobalStyles.js.map +1 -1
  17. package/dist/components/GridProvider.js +1 -1
  18. package/dist/components/GridProvider.js.map +1 -1
  19. package/dist/components/HiddenInput.js +1 -1
  20. package/dist/components/Root.js +3 -3
  21. package/dist/components/Root.js.map +1 -1
  22. package/dist/components/actions/Action/Action.js +1 -1
  23. package/dist/components/actions/Banner/Banner.js +1 -1
  24. package/dist/components/actions/Banner/Banner.js.map +1 -1
  25. package/dist/components/actions/Button/Button.d.ts +0 -1
  26. package/dist/components/actions/Button/Button.js +8 -7
  27. package/dist/components/actions/Button/Button.js.map +1 -1
  28. package/dist/components/actions/Button/index.d.ts +16 -1
  29. package/dist/components/actions/Button/index.js +13 -0
  30. package/dist/components/actions/Button/index.js.map +1 -0
  31. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  32. package/dist/components/actions/ButtonGroup/ButtonGroup.js.map +1 -1
  33. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  34. package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
  35. package/dist/components/actions/ButtonSplit/context.js +1 -1
  36. package/dist/components/actions/CommandMenu/CommandMenu.d.ts +1 -1
  37. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  38. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  39. package/dist/components/actions/CommandMenu/styled.js +1 -1
  40. package/dist/components/actions/ItemAction/ItemAction.js +2 -2
  41. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  42. package/dist/components/actions/ItemActionContext.js +1 -1
  43. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  44. package/dist/components/actions/ItemButton/ItemButton.d.ts +0 -2
  45. package/dist/components/actions/ItemButton/ItemButton.js +2 -2
  46. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  47. package/dist/components/actions/Link/Link.js +1 -1
  48. package/dist/components/actions/Menu/Menu.d.ts +1 -1
  49. package/dist/components/actions/Menu/Menu.js +1 -1
  50. package/dist/components/actions/Menu/Menu.js.map +1 -1
  51. package/dist/components/actions/Menu/MenuCollectionItem.js +1 -1
  52. package/dist/components/actions/Menu/MenuItem.js +2 -2
  53. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  54. package/dist/components/actions/Menu/MenuSection.js +1 -1
  55. package/dist/components/actions/Menu/MenuTrigger.js +3 -3
  56. package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
  57. package/dist/components/actions/Menu/SubMenuTrigger.js +2 -2
  58. package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
  59. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  60. package/dist/components/actions/Menu/context.js +1 -1
  61. package/dist/components/actions/Menu/index.d.ts +1 -1
  62. package/dist/components/actions/Menu/styled.js +1 -1
  63. package/dist/components/actions/actions-run.js +1 -1
  64. package/dist/components/actions/index.d.ts +6 -18
  65. package/dist/components/actions/use-action.js +2 -2
  66. package/dist/components/actions/use-action.js.map +1 -1
  67. package/dist/components/actions/use-anchored-menu.d.ts +0 -1
  68. package/dist/components/actions/use-anchored-menu.js +2 -2
  69. package/dist/components/actions/use-anchored-menu.js.map +1 -1
  70. package/dist/components/actions/use-context-menu.d.ts +0 -1
  71. package/dist/components/actions/use-context-menu.js +2 -2
  72. package/dist/components/actions/use-context-menu.js.map +1 -1
  73. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  74. package/dist/components/content/ActiveZone/ActiveZone.js.map +1 -1
  75. package/dist/components/content/Alert/Alert.js +1 -1
  76. package/dist/components/content/Alert/use-alert.js +1 -1
  77. package/dist/components/content/Alert/use-alert.js.map +1 -1
  78. package/dist/components/content/Avatar/Avatar.js +1 -1
  79. package/dist/components/content/Badge/Badge.d.ts +0 -1
  80. package/dist/components/content/Badge/Badge.js +1 -1
  81. package/dist/components/content/Badge/Badge.js.map +1 -1
  82. package/dist/components/content/Card/Card.js +1 -1
  83. package/dist/components/content/Content.js +1 -1
  84. package/dist/components/content/Content.js.map +1 -1
  85. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +3 -3
  86. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
  87. package/dist/components/content/CopySnippet/CopySnippet.d.ts +2 -18
  88. package/dist/components/content/CopySnippet/CopySnippet.js +2 -2
  89. package/dist/components/content/CopySnippet/CopySnippet.js.map +1 -1
  90. package/dist/components/content/Disclosure/Disclosure.d.ts +0 -1
  91. package/dist/components/content/Disclosure/Disclosure.js +2 -2
  92. package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
  93. package/dist/components/content/Divider/Divider.js +1 -1
  94. package/dist/components/content/Divider/Divider.js.map +1 -1
  95. package/dist/components/content/Footer.js +1 -1
  96. package/dist/components/content/Footer.js.map +1 -1
  97. package/dist/components/content/Header.js +1 -1
  98. package/dist/components/content/Header.js.map +1 -1
  99. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  100. package/dist/components/content/HotKeys/HotKeys.js.map +1 -1
  101. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  102. package/dist/components/content/InfoBadge/InfoBadge.js.map +1 -1
  103. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  104. package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
  105. package/dist/components/content/Item/Item.d.ts +1 -2
  106. package/dist/components/content/Item/Item.js +4 -4
  107. package/dist/components/content/Item/Item.js.map +1 -1
  108. package/dist/components/content/Item/ItemWithNativeLinks.js +2 -2
  109. package/dist/components/content/Item/index.d.ts +1 -1
  110. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  111. package/dist/components/content/ItemBadge/index.d.ts +1 -2
  112. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  113. package/dist/components/content/Layout/GridLayout.js +1 -1
  114. package/dist/components/content/Layout/Layout.js +1 -1
  115. package/dist/components/content/Layout/Layout.js.map +1 -1
  116. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  117. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  118. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  119. package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
  120. package/dist/components/content/Layout/LayoutContent.js +1 -1
  121. package/dist/components/content/Layout/LayoutContent.js.map +1 -1
  122. package/dist/components/content/Layout/LayoutContext.js +1 -1
  123. package/dist/components/content/Layout/LayoutContext.js.map +1 -1
  124. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  125. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  126. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  127. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  128. package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
  129. package/dist/components/content/Layout/LayoutPane.js +2 -2
  130. package/dist/components/content/Layout/LayoutPane.js.map +1 -1
  131. package/dist/components/content/Layout/LayoutPanel.js +3 -3
  132. package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
  133. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  134. package/dist/components/content/Layout/LayoutPanelHeader.js.map +1 -1
  135. package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
  136. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  137. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  138. package/dist/components/content/Layout/index.js +1 -1
  139. package/dist/components/content/Layout/utils.js +1 -1
  140. package/dist/components/content/Paragraph.js +1 -1
  141. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  142. package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
  143. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  144. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  145. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  146. package/dist/components/content/Result/Result.js +2 -2
  147. package/dist/components/content/Result/Result.js.map +1 -1
  148. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  149. package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
  150. package/dist/components/content/Tag/Tag.d.ts +0 -1
  151. package/dist/components/content/Tag/Tag.js +1 -1
  152. package/dist/components/content/Tag/Tag.js.map +1 -1
  153. package/dist/components/content/Text.js +1 -1
  154. package/dist/components/content/TextItem/TextItem.js +1 -1
  155. package/dist/components/content/Title.js +1 -1
  156. package/dist/components/content/Title.js.map +1 -1
  157. package/dist/components/content/Tree/Tree.js +1 -1
  158. package/dist/components/content/Tree/Tree.js.map +1 -1
  159. package/dist/components/content/Tree/TreeNode.js +5 -5
  160. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  161. package/dist/components/content/Tree/checked-keys.js +1 -1
  162. package/dist/components/content/Tree/rowId.js +1 -1
  163. package/dist/components/content/Tree/styled.js +1 -1
  164. package/dist/components/content/Tree/styled.js.map +1 -1
  165. package/dist/components/content/Tree/tree-index.js +1 -1
  166. package/dist/components/content/Tree/types.d.ts +1 -1
  167. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  168. package/dist/components/content/Tree/use-checkbox-tree.js.map +1 -1
  169. package/dist/components/content/Tree/use-load-data.js +1 -1
  170. package/dist/components/content/Tree/use-load-data.js.map +1 -1
  171. package/dist/components/content/highlightText.js +1 -1
  172. package/dist/components/content/use-auto-tooltip.js +1 -1
  173. package/dist/components/data/DataTable/DataTable.js +1 -1
  174. package/dist/components/data/DataTable/DataTable.js.map +1 -1
  175. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  176. package/dist/components/data/ItemTable/ItemTable.js.map +1 -1
  177. package/dist/components/data/ItemTable/ItemTableBulkBar.js +2 -2
  178. package/dist/components/data/ItemTable/ItemTableBulkBar.js.map +1 -1
  179. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  180. package/dist/components/data/ItemTable/ItemTableDragPreview.js.map +1 -1
  181. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  182. package/dist/components/data/ItemTable/ItemTableFooter.js.map +1 -1
  183. package/dist/components/data/ItemTable/ItemTableToolbar.js +2 -2
  184. package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
  185. package/dist/components/data/ItemTable/item-table-sections.js +1 -1
  186. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  187. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  188. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  189. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  190. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  191. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  192. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  193. package/dist/components/data/TableBase/ColumnResizer.js.map +1 -1
  194. package/dist/components/data/TableBase/RowCollection.js +1 -1
  195. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  196. package/dist/components/data/TableBase/TableHeaderCell.js.map +1 -1
  197. package/dist/components/data/TableBase/TableRow.js +1 -1
  198. package/dist/components/data/TableBase/TableRow.js.map +1 -1
  199. package/dist/components/data/TableBase/TableRowLink.js +1 -1
  200. package/dist/components/data/TableBase/TableView.js +6 -6
  201. package/dist/components/data/TableBase/TableView.js.map +1 -1
  202. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  203. package/dist/components/data/TableBase/column-header.js +1 -1
  204. package/dist/components/data/TableBase/column-menu.js +1 -1
  205. package/dist/components/data/TableBase/column-menu.js.map +1 -1
  206. package/dist/components/data/TableBase/column-styles.js +1 -1
  207. package/dist/components/data/TableBase/column-tint.js +1 -1
  208. package/dist/components/data/TableBase/row-menu.js +1 -1
  209. package/dist/components/data/TableBase/styled.js +1 -1
  210. package/dist/components/data/TableBase/styled.js.map +1 -1
  211. package/dist/components/data/TableBase/table-body-sections.js +1 -1
  212. package/dist/components/data/TableBase/table-tree.js +1 -1
  213. package/dist/components/data/TableBase/types.js +1 -1
  214. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  215. package/dist/components/data/TableBase/use-cell-selection.js.map +1 -1
  216. package/dist/components/data/TableBase/use-column-menu.js +2 -2
  217. package/dist/components/data/TableBase/use-column-order.js +1 -1
  218. package/dist/components/data/TableBase/use-column-order.js.map +1 -1
  219. package/dist/components/data/TableBase/use-column-window.js +1 -1
  220. package/dist/components/data/TableBase/use-container-width.js +1 -1
  221. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  222. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  223. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  224. package/dist/components/data/TableBase/use-table-search.js +1 -1
  225. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  226. package/dist/components/data/TableBase/use-table-selection.js.map +1 -1
  227. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  228. package/dist/components/data/TableBase/use-table-sort.js.map +1 -1
  229. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  230. package/dist/components/data/TableBase/use-table-sorts.js.map +1 -1
  231. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  232. package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
  233. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  234. package/dist/components/data/TableBase/use-table-tree-state.js.map +1 -1
  235. package/dist/components/fields/Checkbox/Checkbox.d.ts +0 -1
  236. package/dist/components/fields/Checkbox/Checkbox.js +3 -3
  237. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  238. package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +0 -1
  239. package/dist/components/fields/Checkbox/CheckboxGroup.js +3 -3
  240. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  241. package/dist/components/fields/Checkbox/context.js +1 -1
  242. package/dist/components/fields/ColorInput/ColorInput.d.ts +0 -1
  243. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  244. package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
  245. package/dist/components/fields/ColorPicker/ColorPicker.d.ts +0 -3
  246. package/dist/components/fields/ColorPicker/ColorPicker.js +3 -3
  247. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
  248. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  249. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.d.ts +0 -1
  250. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +2 -2
  251. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
  252. package/dist/components/fields/ComboBox/ComboBox.d.ts +0 -1
  253. package/dist/components/fields/ComboBox/ComboBox.js +6 -6
  254. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  255. package/dist/components/fields/ComboBox/comboBoxOptions.js +1 -1
  256. package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +1 -2
  257. package/dist/components/fields/CommandTextArea/CommandTextArea.js +2 -2
  258. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  259. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  260. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  261. package/dist/components/fields/DatePicker/CalendarPopover.js +1 -1
  262. package/dist/components/fields/DatePicker/DateInput.d.ts +0 -1
  263. package/dist/components/fields/DatePicker/DateInput.js +2 -2
  264. package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
  265. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  266. package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
  267. package/dist/components/fields/DatePicker/DatePicker.d.ts +0 -1
  268. package/dist/components/fields/DatePicker/DatePicker.js +2 -2
  269. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  270. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  271. package/dist/components/fields/DatePicker/DatePickerButton.js.map +1 -1
  272. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  273. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  274. package/dist/components/fields/DatePicker/DatePickerInput.js.map +1 -1
  275. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  276. package/dist/components/fields/DatePicker/DateRangePicker.d.ts +0 -1
  277. package/dist/components/fields/DatePicker/DateRangePicker.js +2 -2
  278. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  279. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +0 -1
  280. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +2 -2
  281. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  282. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  283. package/dist/components/fields/DatePicker/PeriodPicker.d.ts +0 -1
  284. package/dist/components/fields/DatePicker/PeriodPicker.js +2 -2
  285. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  286. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  287. package/dist/components/fields/DatePicker/TimeInput.d.ts +0 -1
  288. package/dist/components/fields/DatePicker/TimeInput.js +2 -2
  289. package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
  290. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  291. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  292. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  293. package/dist/components/fields/DatePicker/period.js +1 -1
  294. package/dist/components/fields/DatePicker/props.js +1 -1
  295. package/dist/components/fields/DatePicker/utils.js +1 -1
  296. package/dist/components/fields/FileInput/FileInput.d.ts +0 -1
  297. package/dist/components/fields/FileInput/FileInput.js +3 -3
  298. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  299. package/dist/components/fields/FilterListBox/FilterListBox.js +3 -3
  300. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  301. package/dist/components/fields/FilterListBox/styled.js +1 -1
  302. package/dist/components/fields/FilterPicker/FilterPicker.d.ts +0 -3
  303. package/dist/components/fields/FilterPicker/FilterPicker.js +8 -8
  304. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  305. package/dist/components/fields/FilterPicker/FilterTree.js +2 -2
  306. package/dist/components/fields/FilterPicker/FilterTree.js.map +1 -1
  307. package/dist/components/fields/Input/Input.d.ts +0 -1
  308. package/dist/components/fields/Input/Input.js +1 -1
  309. package/dist/components/fields/Input/Input.js.map +1 -1
  310. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  311. package/dist/components/fields/ListBox/ListBox.js +4 -4
  312. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  313. package/dist/components/fields/ListBox/optionId.js +1 -1
  314. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +2 -2
  315. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  316. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  317. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  318. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -1
  319. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  320. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  321. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  322. package/dist/components/fields/PasswordInput/PasswordInput.js +2 -2
  323. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  324. package/dist/components/fields/Picker/Picker.d.ts +0 -2
  325. package/dist/components/fields/Picker/Picker.js +8 -8
  326. package/dist/components/fields/Picker/Picker.js.map +1 -1
  327. package/dist/components/fields/RadioGroup/Radio.d.ts +0 -1
  328. package/dist/components/fields/RadioGroup/Radio.js +2 -2
  329. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  330. package/dist/components/fields/RadioGroup/RadioGroup.d.ts +0 -1
  331. package/dist/components/fields/RadioGroup/RadioGroup.js +3 -3
  332. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  333. package/dist/components/fields/RadioGroup/context.js +1 -1
  334. package/dist/components/fields/SearchComboBox/SearchComboBox.d.ts +0 -1
  335. package/dist/components/fields/SearchComboBox/SearchComboBox.js +6 -6
  336. package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
  337. package/dist/components/fields/SearchInput/SearchInput.js +2 -2
  338. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  339. package/dist/components/fields/Select/Select.d.ts +1 -2
  340. package/dist/components/fields/Select/Select.js +7 -7
  341. package/dist/components/fields/Select/Select.js.map +1 -1
  342. package/dist/components/fields/Slider/Gradation.js +1 -1
  343. package/dist/components/fields/Slider/HueSlider.js +1 -1
  344. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  345. package/dist/components/fields/Slider/Slider.js +1 -1
  346. package/dist/components/fields/Slider/Slider.js.map +1 -1
  347. package/dist/components/fields/Slider/SliderBase.js +2 -2
  348. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  349. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  350. package/dist/components/fields/Slider/SliderThumb.js.map +1 -1
  351. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  352. package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
  353. package/dist/components/fields/Slider/elements.js +1 -1
  354. package/dist/components/fields/Slider/index.js +2 -2
  355. package/dist/components/fields/Slider/types.d.ts +0 -1
  356. package/dist/components/fields/Switch/Switch.d.ts +0 -1
  357. package/dist/components/fields/Switch/Switch.js +3 -3
  358. package/dist/components/fields/Switch/Switch.js.map +1 -1
  359. package/dist/components/fields/TagInput/TagInput.js +5 -5
  360. package/dist/components/fields/TagInput/TagInput.js.map +1 -1
  361. package/dist/components/fields/TagInput/TagList.js +1 -1
  362. package/dist/components/fields/TagInput/TagList.js.map +1 -1
  363. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  364. package/dist/components/fields/TagInput/useTagError.js +1 -1
  365. package/dist/components/fields/TextArea/TextArea.js +2 -2
  366. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  367. package/dist/components/fields/TextInput/TextInput.js +2 -2
  368. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  369. package/dist/components/fields/TextInput/TextInputBase.d.ts +0 -1
  370. package/dist/components/fields/TextInput/TextInputBase.js +3 -3
  371. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  372. package/dist/components/fields/TextInput/displayed-validation.js +1 -1
  373. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  374. package/dist/components/fields/TextInput/useAutoSizeTextArea.js.map +1 -1
  375. package/dist/components/fields/TextInputMapper/TextInputMapper.d.ts +0 -1
  376. package/dist/components/fields/TextInputMapper/TextInputMapper.js +3 -3
  377. package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
  378. package/dist/components/fields/TriggerActions.js +1 -1
  379. package/dist/components/fields/color/ColorPanel.js +1 -1
  380. package/dist/components/fields/color/ColorPanel.js.map +1 -1
  381. package/dist/components/fields/color/channels.js +1 -1
  382. package/dist/components/fields/color/color.js +1 -1
  383. package/dist/components/fields/color/context.js +1 -1
  384. package/dist/components/fields/index.d.ts +2 -2
  385. package/dist/components/fields/option-origin-press.js +1 -1
  386. package/dist/components/form/FieldWrapper/FieldWrapper.js +2 -2
  387. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  388. package/dist/components/form/FieldWrapper/field-description.js +1 -1
  389. package/dist/components/form/FieldWrapper/types.d.ts +0 -1
  390. package/dist/components/form/Form/Field.d.ts +0 -1
  391. package/dist/components/form/Form/Field.js +3 -3
  392. package/dist/components/form/Form/Field.js.map +1 -1
  393. package/dist/components/form/Form/Form.d.ts +1 -26
  394. package/dist/components/form/Form/Form.js +7 -116
  395. package/dist/components/form/Form/Form.js.map +1 -1
  396. package/dist/components/form/Form/FormContext.d.ts +30 -0
  397. package/dist/components/form/Form/FormContext.js +79 -0
  398. package/dist/components/form/Form/FormContext.js.map +1 -0
  399. package/dist/components/form/Form/FormElement.js +49 -0
  400. package/dist/components/form/Form/FormElement.js.map +1 -0
  401. package/dist/components/form/Form/ModernFormRoot.js +3 -2
  402. package/dist/components/form/Form/ModernFormRoot.js.map +1 -1
  403. package/dist/components/form/Form/ResetButton/ResetButton.js +2 -2
  404. package/dist/components/form/Form/ResetButton/ResetButton.js.map +1 -1
  405. package/dist/components/form/Form/SubmitButton/SubmitButton.js +2 -2
  406. package/dist/components/form/Form/SubmitButton/SubmitButton.js.map +1 -1
  407. package/dist/components/form/Form/SubmitError.d.ts +0 -1
  408. package/dist/components/form/Form/SubmitError.js +3 -3
  409. package/dist/components/form/Form/SubmitError.js.map +1 -1
  410. package/dist/components/form/Form/backend.js +1 -1
  411. package/dist/components/form/Form/index.d.ts +2 -1
  412. package/dist/components/form/Form/index.js +6 -5
  413. package/dist/components/form/Form/index.js.map +1 -1
  414. package/dist/components/form/Form/modern/actions.js +1 -1
  415. package/dist/components/form/Form/modern/context.js +1 -1
  416. package/dist/components/form/Form/modern/controller.js +1 -1
  417. package/dist/components/form/Form/modern/field-binding.js +1 -1
  418. package/dist/components/form/Form/modern/field.js +1 -1
  419. package/dist/components/form/Form/modern/react.js +1 -1
  420. package/dist/components/form/Form/modern/store.js +1 -1
  421. package/dist/components/form/Form/modern/validation.js +1 -1
  422. package/dist/components/form/Form/modern/values.js +1 -1
  423. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  424. package/dist/components/form/Form/use-field/types.d.ts +0 -1
  425. package/dist/components/form/Form/use-field/use-field-binding.js +2 -2
  426. package/dist/components/form/Form/use-field/use-field-props.js +4 -4
  427. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  428. package/dist/components/form/Form/use-field/use-field.d.ts +0 -1
  429. package/dist/components/form/Form/use-field/use-field.js +2 -2
  430. package/dist/components/form/Form/use-field/use-field.js.map +1 -1
  431. package/dist/components/form/Form/use-form.js +1 -1
  432. package/dist/components/form/Form/validation.js +1 -1
  433. package/dist/components/form/Label.d.ts +0 -1
  434. package/dist/components/form/Label.js +1 -1
  435. package/dist/components/form/Label.js.map +1 -1
  436. package/dist/components/form/field-chrome.js +1 -1
  437. package/dist/components/form/field-layout.js +1 -1
  438. package/dist/components/form/field-layout.js.map +1 -1
  439. package/dist/components/form/index.d.ts +2 -1
  440. package/dist/components/form/legacy-tooltip.js +1 -1
  441. package/dist/components/form/validation/ValidationIndicator.d.ts +0 -1
  442. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  443. package/dist/components/form/validation/ValidationIndicator.js.map +1 -1
  444. package/dist/components/form/validation/resolve-validation-props.d.ts +0 -1
  445. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  446. package/dist/components/form/validation/resolve-validation-props.js.map +1 -1
  447. package/dist/components/form/validation/use-validation-props.js +1 -1
  448. package/dist/components/form/validation/use-validation-props.js.map +1 -1
  449. package/dist/components/form/wrapper.d.ts +0 -1
  450. package/dist/components/form/wrapper.js +1 -1
  451. package/dist/components/form/wrapper.js.map +1 -1
  452. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  453. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  454. package/dist/components/layout/Flex.js +1 -1
  455. package/dist/components/layout/Flow.js +1 -1
  456. package/dist/components/layout/Grid.js +1 -1
  457. package/dist/components/layout/Panel.js +1 -1
  458. package/dist/components/layout/Prefix.js +1 -1
  459. package/dist/components/layout/Prefix.js.map +1 -1
  460. package/dist/components/layout/ResizablePanel.js +2 -2
  461. package/dist/components/layout/Space.js +1 -1
  462. package/dist/components/layout/Suffix.js +1 -1
  463. package/dist/components/layout/Suffix.js.map +1 -1
  464. package/dist/components/navigation/Pagination/Pagination.js +3 -3
  465. package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
  466. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  467. package/dist/components/navigation/Pagination/use-pagination.js.map +1 -1
  468. package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
  469. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  470. package/dist/components/navigation/Tabs/TabButton.js +4 -4
  471. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  472. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  473. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  474. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  475. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  476. package/dist/components/navigation/Tabs/Tabs.js +2 -2
  477. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  478. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  479. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  480. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  481. package/dist/components/navigation/Tabs/segmented-styles.js +1 -1
  482. package/dist/components/navigation/Tabs/styled.js +1 -1
  483. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  484. package/dist/components/navigation/Tabs/types.d.ts +2 -2
  485. package/dist/components/navigation/Tabs/types.js +1 -1
  486. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  487. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  488. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  489. package/dist/components/other/Calendar/Calendar.js +1 -1
  490. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  491. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  492. package/dist/components/other/Calendar/CalendarHeader.js +2 -2
  493. package/dist/components/other/Calendar/CalendarHeader.js.map +1 -1
  494. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  495. package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
  496. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  497. package/dist/components/other/Calendar/PeriodCalendar.js.map +1 -1
  498. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  499. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  500. package/dist/components/other/Calendar/styled.js +1 -1
  501. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  502. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  503. package/dist/components/overlays/AlertDialog/AlertDialog.js +2 -2
  504. package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
  505. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  506. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  507. package/dist/components/overlays/AlertDialog/AlertDialogZone.js.map +1 -1
  508. package/dist/components/overlays/AlertDialog/types.d.ts +0 -1
  509. package/dist/components/overlays/Dialog/Dialog.js +2 -2
  510. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  511. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  512. package/dist/components/overlays/Dialog/DialogForm.js +2 -2
  513. package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
  514. package/dist/components/overlays/Dialog/DialogTrigger.d.ts +0 -1
  515. package/dist/components/overlays/Dialog/DialogTrigger.js +5 -5
  516. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  517. package/dist/components/overlays/Dialog/ModernDialogForm.js +2 -2
  518. package/dist/components/overlays/Dialog/ModernDialogForm.js.map +1 -1
  519. package/dist/components/overlays/Dialog/context.js +1 -1
  520. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  521. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  522. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  523. package/dist/components/overlays/Dialog/use-dialog-container.js.map +1 -1
  524. package/dist/components/overlays/Dialog/use-dialog-open-sync.js +1 -1
  525. package/dist/components/overlays/Dialog/use-dismiss-confirmation.js +1 -1
  526. package/dist/components/overlays/Dialog/use-dismiss-confirmation.js.map +1 -1
  527. package/dist/components/overlays/Dialog/use-retained-dialog-focus.js +1 -1
  528. package/dist/components/overlays/Modal/Modal.js +2 -2
  529. package/dist/components/overlays/Modal/Modal.js.map +1 -1
  530. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  531. package/dist/components/overlays/Modal/OpenTransitionContext.js.map +1 -1
  532. package/dist/components/overlays/Modal/Overlay.js +1 -1
  533. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  534. package/dist/components/overlays/Modal/Popover.js +2 -2
  535. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  536. package/dist/components/overlays/Modal/Tray.js +2 -2
  537. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  538. package/dist/components/overlays/Modal/Underlay.js +1 -1
  539. package/dist/components/overlays/Modal/modal-containment.js +1 -1
  540. package/dist/components/overlays/Notifications/Notification.js +1 -1
  541. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  542. package/dist/components/overlays/Notifications/NotificationAction.js.map +1 -1
  543. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  544. package/dist/components/overlays/Notifications/NotificationCard.js.map +1 -1
  545. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  546. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  547. package/dist/components/overlays/Notifications/NotificationItem.js.map +1 -1
  548. package/dist/components/overlays/Notifications/OverlayContainer.js +2 -2
  549. package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
  550. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  551. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  552. package/dist/components/overlays/Notifications/PersistentNotificationsList.js.map +1 -1
  553. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  554. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  555. package/dist/components/overlays/Notifications/index.js +1 -1
  556. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  557. package/dist/components/overlays/Notifications/use-notification-state.js.map +1 -1
  558. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  559. package/dist/components/overlays/Notifications/use-notifications.js.map +1 -1
  560. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  561. package/dist/components/overlays/Notifications/use-overlay-timers.js.map +1 -1
  562. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  563. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  564. package/dist/components/overlays/Notifications/use-persistent-state.js.map +1 -1
  565. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  566. package/dist/components/overlays/Notifications/use-toast-state.js.map +1 -1
  567. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  568. package/dist/components/overlays/Toast/index.js +2 -2
  569. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  570. package/dist/components/overlays/Toast/useProgressToast.js.map +1 -1
  571. package/dist/components/overlays/Toast/useToast.js +2 -2
  572. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  573. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  574. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  575. package/dist/components/overlays/Tooltip/TooltipTrigger.js +3 -3
  576. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  577. package/dist/components/overlays/Tooltip/context.js +1 -1
  578. package/dist/components/overlays/Tooltip/context.js.map +1 -1
  579. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  580. package/dist/components/portal/Portal.js +1 -1
  581. package/dist/components/portal/PortalProvider.js +1 -1
  582. package/dist/components/portal/usePortal.js +1 -1
  583. package/dist/components/shared/DraggableCollection.js +1 -1
  584. package/dist/components/shared/InvalidIcon.js +1 -1
  585. package/dist/components/shared/ValidIcon.js +1 -1
  586. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  587. package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +1 -1
  588. package/dist/components/status/Spin/Cube.js +1 -1
  589. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  590. package/dist/components/status/Spin/Spin.js +1 -1
  591. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  592. package/dist/data/item-themes.js +8 -32
  593. package/dist/data/item-themes.js.map +1 -1
  594. package/dist/data/themes.js +1 -1
  595. package/dist/eslint-plugin/defaults.generated.js +1 -1
  596. package/dist/eslint-plugin/index.js +1 -1
  597. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  598. package/dist/i18n/I18nProvider.js +1 -1
  599. package/dist/i18n/createFormatter.js +1 -1
  600. package/dist/i18n/index.js +4 -4
  601. package/dist/i18n/instance.js +3 -3
  602. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  603. package/dist/i18n/locales/en-US/uikit.js +1 -1
  604. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  605. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  606. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  607. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  608. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  609. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  610. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  611. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  612. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  613. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  614. package/dist/i18n/locales.js +1 -1
  615. package/dist/i18n/namespace.js +1 -1
  616. package/dist/i18n/useFormatter.js +1 -1
  617. package/dist/i18n/useI18n.js +1 -1
  618. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  619. package/dist/icons/AdjustmentsIcon.js +1 -1
  620. package/dist/icons/AiIcon.js +1 -1
  621. package/dist/icons/AreaChartIcon.js +1 -1
  622. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  623. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  624. package/dist/icons/BackwardIcon.js +1 -1
  625. package/dist/icons/BarChartIcon.js +1 -1
  626. package/dist/icons/BellFilledIcon.js +1 -1
  627. package/dist/icons/BellIcon.js +1 -1
  628. package/dist/icons/BooleanIcon.js +1 -1
  629. package/dist/icons/CalendarEditIcon.js +1 -1
  630. package/dist/icons/CalendarIcon.js +1 -1
  631. package/dist/icons/CaretDownIcon.js +1 -1
  632. package/dist/icons/CaretUpIcon.js +1 -1
  633. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  634. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  635. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  636. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  637. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  638. package/dist/icons/ChartBarLineIcon.js +1 -1
  639. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  640. package/dist/icons/ChartBarStackedIcon.js +1 -1
  641. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  642. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  643. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  644. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  645. package/dist/icons/ChartBubbleIcon.js +1 -1
  646. package/dist/icons/ChartDonut2Icon.js +1 -1
  647. package/dist/icons/ChartFunnelIcon.js +1 -1
  648. package/dist/icons/ChartHeatmapIcon.js +1 -1
  649. package/dist/icons/ChartKPIIcon.js +1 -1
  650. package/dist/icons/ChartPie2Icon.js +1 -1
  651. package/dist/icons/ChartScatterIcon.js +1 -1
  652. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  653. package/dist/icons/CheckCircleIcon.js +1 -1
  654. package/dist/icons/CheckIcon.js +1 -1
  655. package/dist/icons/CircleFilledIcon.js +1 -1
  656. package/dist/icons/ClearIcon.js +1 -1
  657. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  658. package/dist/icons/CloseCircleIcon.js +1 -1
  659. package/dist/icons/CloseIcon.js +1 -1
  660. package/dist/icons/CodeIcon.js +1 -1
  661. package/dist/icons/ColumnTotalIcon.js +1 -1
  662. package/dist/icons/CopyIcon.js +1 -1
  663. package/dist/icons/CountIcon.js +1 -1
  664. package/dist/icons/CubeIcon.js +1 -1
  665. package/dist/icons/CubePauseIcon.js +1 -1
  666. package/dist/icons/CubePlayIcon.js +1 -1
  667. package/dist/icons/CurrencyDollarIcon.js +1 -1
  668. package/dist/icons/DangerIcon.js +1 -1
  669. package/dist/icons/DashboardIcon.js +1 -1
  670. package/dist/icons/DatabaseIcon.js +1 -1
  671. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  672. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  673. package/dist/icons/DirectionIcon.js +1 -1
  674. package/dist/icons/DonutIcon.js +1 -1
  675. package/dist/icons/DownIcon.js +1 -1
  676. package/dist/icons/EditIcon.js +1 -1
  677. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  678. package/dist/icons/ExclamationCircleIcon.js +1 -1
  679. package/dist/icons/ExclamationIcon.js +1 -1
  680. package/dist/icons/EyeIcon.js +1 -1
  681. package/dist/icons/EyeInvisibleIcon.js +1 -1
  682. package/dist/icons/FilterIcon.js +1 -1
  683. package/dist/icons/FolderFilledIcon.js +1 -1
  684. package/dist/icons/FolderIcon.js +1 -1
  685. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  686. package/dist/icons/FolderOpenIcon.js +1 -1
  687. package/dist/icons/ForwardIcon.js +1 -1
  688. package/dist/icons/GripVerticalIcon.js +1 -1
  689. package/dist/icons/HierarchyIcon.js +1 -1
  690. package/dist/icons/HierarchyOpenIcon.js +1 -1
  691. package/dist/icons/Icon.js +1 -1
  692. package/dist/icons/InfoCircleIcon.js +1 -1
  693. package/dist/icons/InfoIcon.js +1 -1
  694. package/dist/icons/KeyIcon.js +1 -1
  695. package/dist/icons/LeftIcon.js +1 -1
  696. package/dist/icons/LineChartIcon.js +1 -1
  697. package/dist/icons/LoadingIcon.js +1 -1
  698. package/dist/icons/LockFilledIcon.js +1 -1
  699. package/dist/icons/LockIcon.js +1 -1
  700. package/dist/icons/MoreIcon.js +1 -1
  701. package/dist/icons/NotAllowedIcon.js +1 -1
  702. package/dist/icons/Number123Icon.js +1 -1
  703. package/dist/icons/NumberIcon.js +1 -1
  704. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  705. package/dist/icons/PauseCircleIcon.js +1 -1
  706. package/dist/icons/PauseIcon.js +1 -1
  707. package/dist/icons/PercentageIcon.js +1 -1
  708. package/dist/icons/PieChartIcon.js +1 -1
  709. package/dist/icons/PipetteIcon.js +1 -1
  710. package/dist/icons/PlayCircleIcon.js +1 -1
  711. package/dist/icons/PlayIcon.js +1 -1
  712. package/dist/icons/PlusIcon.js +1 -1
  713. package/dist/icons/ProgressBarIcon.js +1 -1
  714. package/dist/icons/ReloadIcon.js +1 -1
  715. package/dist/icons/ReportIcon.js +1 -1
  716. package/dist/icons/ReturnIcon.js +1 -1
  717. package/dist/icons/RightIcon.js +1 -1
  718. package/dist/icons/RowTotalsIcon.js +1 -1
  719. package/dist/icons/SchemeIcon.js +1 -1
  720. package/dist/icons/SearchIcon.js +1 -1
  721. package/dist/icons/SemanticQueryIcon.js +1 -1
  722. package/dist/icons/SettingsIcon.js +1 -1
  723. package/dist/icons/ShieldFilledIcon.js +1 -1
  724. package/dist/icons/ShieldIcon.js +1 -1
  725. package/dist/icons/SlashIcon.js +1 -1
  726. package/dist/icons/SparklesIcon.js +1 -1
  727. package/dist/icons/SqlIcon.js +1 -1
  728. package/dist/icons/StatsIcon.js +1 -1
  729. package/dist/icons/StopIcon.js +1 -1
  730. package/dist/icons/StringIcon.js +1 -1
  731. package/dist/icons/SubtotalsIcon.js +1 -1
  732. package/dist/icons/SwitchIcon.js +1 -1
  733. package/dist/icons/TableIcon.js +1 -1
  734. package/dist/icons/ThumbsDownIcon.js +1 -1
  735. package/dist/icons/ThumbsUpIcon.js +1 -1
  736. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  737. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  738. package/dist/icons/ThunderboltIcon.js +1 -1
  739. package/dist/icons/TimeIcon.js +1 -1
  740. package/dist/icons/TrashIcon.js +1 -1
  741. package/dist/icons/UnlockIcon.js +1 -1
  742. package/dist/icons/UpIcon.js +1 -1
  743. package/dist/icons/UserGroupIcon.js +1 -1
  744. package/dist/icons/UserIcon.js +1 -1
  745. package/dist/icons/UserLockIcon.js +1 -1
  746. package/dist/icons/ViewIcon.js +1 -1
  747. package/dist/icons/WarningFilledIcon.js +1 -1
  748. package/dist/icons/WarningIcon.js +1 -1
  749. package/dist/icons/wrap-icon.js +1 -1
  750. package/dist/index.d.ts +29 -27
  751. package/dist/index.js +69 -69
  752. package/dist/probe/canonicalize.js +1 -1
  753. package/dist/probe/css.js +1 -1
  754. package/dist/probe/index.js +1 -1
  755. package/dist/provider.js +2 -2
  756. package/dist/providers/TrackingProvider.js +1 -1
  757. package/dist/providers/navigation-url.js +1 -1
  758. package/dist/providers/navigationAdapter.default.js +1 -1
  759. package/dist/providers/use-navigation.js +1 -1
  760. package/dist/tokens/all-tokens.js +1 -1
  761. package/dist/tokens/base.js +1 -1
  762. package/dist/tokens/color-seed.js +1 -1
  763. package/dist/tokens/color-theme.js +1 -1
  764. package/dist/tokens/colors.js +1 -1
  765. package/dist/tokens/layout.js +1 -1
  766. package/dist/tokens/lazy-styles.js +1 -1
  767. package/dist/tokens/legacy-color.js +1 -1
  768. package/dist/tokens/palette-config.js +1 -1
  769. package/dist/tokens/palette.js +23 -11
  770. package/dist/tokens/palette.js.map +1 -1
  771. package/dist/tokens/resolve.js +2 -2
  772. package/dist/tokens/shadows.js +1 -1
  773. package/dist/tokens/sizes.js +1 -1
  774. package/dist/tokens/spacing.js +1 -1
  775. package/dist/tokens/typography.js +1 -1
  776. package/dist/utils/ResizeSensor.js +1 -1
  777. package/dist/utils/colors.js +1 -1
  778. package/dist/utils/dotize.js +1 -1
  779. package/dist/utils/index.d.ts +1 -1
  780. package/dist/utils/is-dev-env.js +1 -1
  781. package/dist/utils/modules.js +1 -1
  782. package/dist/utils/promise.js +1 -1
  783. package/dist/utils/raf.js +1 -1
  784. package/dist/utils/random.js +1 -1
  785. package/dist/utils/range.js +1 -1
  786. package/dist/utils/react/RenderCache.js +1 -1
  787. package/dist/utils/react/Slots.js +1 -1
  788. package/dist/utils/react/chain.js +1 -1
  789. package/dist/utils/react/disabledProps.js +1 -1
  790. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  791. package/dist/utils/react/index.d.ts +3 -3
  792. package/dist/utils/react/index.js +13 -13
  793. package/dist/utils/react/interactions.js +1 -1
  794. package/dist/utils/react/isTextOnly.js +1 -1
  795. package/dist/utils/react/mapProps.js +1 -1
  796. package/dist/utils/react/mergeProps.js +1 -1
  797. package/dist/utils/react/nullableValue.js +1 -1
  798. package/dist/utils/react/overlayKeyPropagation.js +1 -1
  799. package/dist/utils/react/programmaticFocus.js +1 -1
  800. package/dist/utils/react/resolveIcon.js +1 -1
  801. package/dist/utils/react/sharedStore.js +1 -1
  802. package/dist/utils/react/useBufferedValue.js +1 -1
  803. package/dist/utils/react/useCombinedRefs.js +1 -1
  804. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  805. package/dist/utils/react/useEventBus.js +1 -1
  806. package/dist/utils/react/useId.js +1 -1
  807. package/dist/utils/react/useIsDarwin.js +1 -1
  808. package/dist/utils/react/useKeySymbols.js +1 -1
  809. package/dist/utils/react/useLayoutEffect.js +1 -1
  810. package/dist/utils/react/useLocalStorage.js +1 -1
  811. package/dist/utils/react/useMergeStyles.js +1 -1
  812. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  813. package/dist/utils/react/useOverlayEscapeGuard.js.map +1 -1
  814. package/dist/utils/react/usePopoverSync.js +1 -1
  815. package/dist/utils/react/useQaProps.js +1 -1
  816. package/dist/utils/react/useScheme.js +1 -1
  817. package/dist/utils/react/useViewportSize.js +1 -1
  818. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  819. package/dist/utils/selection.js +1 -1
  820. package/dist/utils/styles.js +1 -1
  821. package/dist/utils/tree.js +1 -1
  822. package/dist/utils/warnings.js +1 -1
  823. package/dist/version.js +2 -2
  824. package/docs/components/actions/ButtonSplit.md +1 -1
  825. package/docs/glaze/contrast.mdx +751 -0
  826. package/docs/glaze/exporting.mdx +635 -0
  827. package/docs/glaze/getting-started.mdx +487 -0
  828. package/docs/glaze/hdr.mdx +523 -0
  829. package/docs/glaze/methodology.mdx +979 -0
  830. package/docs/glaze/migration.md +476 -285
  831. package/docs/glaze/mixes.mdx +348 -0
  832. package/docs/glaze/okhst.mdx +692 -0
  833. package/docs/glaze/reference/color-definitions.md +552 -0
  834. package/docs/glaze/reference/color-tokens.md +421 -0
  835. package/docs/glaze/reference/configuration.md +532 -0
  836. package/docs/glaze/reference/contrast.md +279 -0
  837. package/docs/glaze/reference/index.md +225 -0
  838. package/docs/glaze/reference/output.md +714 -0
  839. package/docs/glaze/reference/palette.md +435 -0
  840. package/docs/glaze/reference/theme.md +332 -0
  841. package/docs/glaze/reference/utilities.md +646 -0
  842. package/docs/glaze/schemes.mdx +644 -0
  843. package/docs/glaze/shadows-and-glows.mdx +550 -0
  844. package/package.json +4 -4
  845. package/dist/components/actions/index.js +0 -29
  846. package/dist/components/actions/index.js.map +0 -1
  847. package/dist/components/fields/ListBoxPopover/ListBoxPopover.d.ts +0 -4
  848. package/dist/components/fields/ListBoxPopover/index.d.ts +0 -5
  849. package/dist/components/overlays/Modal/Modal.d.ts +0 -3
  850. package/dist/components/overlays/Modal/Popover.d.ts +0 -7
  851. package/dist/components/overlays/Modal/Tray.d.ts +0 -5
  852. package/dist/components/overlays/Modal/Underlay.d.ts +0 -3
  853. package/dist/components/overlays/Modal/index.d.ts +0 -8
  854. package/docs/glaze/api.md +0 -2021
  855. package/docs/glaze/methodology.md +0 -686
  856. package/docs/glaze/okhst.md +0 -207
@@ -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","_c","mergeProps","mergeRefs"],"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 (`$item-gap`, `1px`). */\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 // oxlint-disable-next-line tasty/no-style-prop -- React Aria's overlay positioning computes these coordinates\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 tokens={{\n '$overlay-min-width': comboBoxWidth\n ? `${comboBoxWidth}px`\n : undefined,\n }}\n // oxlint-disable-next-line tasty/no-style-prop -- React Aria's overlay positioning computes the space left once it has measured; inline, it overrides whatever max size the merged styles give, without restating their defaults\n style={{ maxHeight, maxWidth }}\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
+ {"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","_c","mergeProps","mergeRefs"],"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/useI18n';\nimport { mergeProps } from '../../../utils/react/mergeProps';\nimport { mergeRefs } from '../../../utils/react/useCombinedRefs';\nimport { DisplayTransition } from '../../helpers/DisplayTransition/DisplayTransition';\nimport { useModalLayerRef } from '../../overlays/Modal/modal-containment';\nimport { Portal } from '../../portal/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 (`$item-gap`, `1px`). */\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 // oxlint-disable-next-line tasty/no-style-prop -- React Aria's overlay positioning computes these coordinates\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 tokens={{\n '$overlay-min-width': comboBoxWidth\n ? `${comboBoxWidth}px`\n : undefined,\n }}\n // oxlint-disable-next-line tasty/no-style-prop -- React Aria's overlay positioning computes the space left once it has measured; inline, it overrides whatever max size the merged styles give, without restating their defaults\n style={{ maxHeight, maxWidth }}\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":";;;;;;;;;;;;;;;;AA0GA,MAAMyE,mBACJ;AAGF,MAAMC,iBACJ;AAEF,MAAMC,oBAAoB;AAM1B,SAASC,iBAAiBC,IAAaC,SAA6B;CAClE,MAAMC,UAAUF,GAAGG,QAAQP,gBAAgB;CAE3C,IACEM,WAAW,QACXD,WAAW,QACXC,QAAQE,SAASH,OAAO,KACxBA,QAAQG,SAASF,OAAO,KACxBA,QAAQG,QAAQ,GAAGR,eAAc,IAAKC,mBAAmB,GAEzD,OAAO;CAGT,MAAMQ,QAAQL,QAAQE,QAAQN,cAAc;CAE5C,OAAOS,SAAS,QAAQA,MAAMF,SAASF,OAAO;AAChD;AAEA,MAAMK,wBAAwBhF,MAAM;CAClCiF,IAAI;CACJC,QAAQ;EACNC,UAAU;EACVC,QAAQ;CACV;AACF,CAAC;AAED,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;EACV;EACAC,WAAW;EACXC,YACE;EACFC,WAAW;GACT,IAAI;GACJ,mCAAiC;GACjC,oCAAkC;GAClC,4DAA0D;GAC1D,6DAA2D;EAC7D;EACAC,iBAAiB;GACf,IAAI;GACJ,4BAA0B;EAC5B;EACAC,OAAO;GACL,IAAI;GACJ,SAAS;EACX;EACAC,SAAS;GACP,IAAI;GACJ,SAAS;EACX;EAEA,sBAAsB;CACxB;AACF,CAAC;AAED,MAAaC,iBAAiB,SAAAA,eAAAC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAG5B,MAAA,EAAAC,MAAcjG,QAAQ;CACtB,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,KAAAA,IAAA,WAAAH;CAGA,MAAAnE,kCAAAoE,OAAAE,KAAAA,IAAA,OAAAF;CAaA,MAAAhD,OAAAiD,OAAAC,KAAAA,IAAA,WAAAD;CAMF,MAAAE,mBAAyB3F;CAIzB,MAAA4F,WAAiBnG,iBAAiB;CAMlC,MAAAoG,mBAAyB7G,OAA8B,IAAI;CAU9C,MAAA8G,KAACpD,qBAAA5C;CACA,MAAAiG,KAAAJ;CAED,MAAAK,KAAA,GAAG7F,UAAS;CAAe,IAAA8F;CAAA,IAAAb,EAAA,OAAA9E,oBAAA8E,EAAA,OAAAvF,UAAAuF,EAAA,OAAA/E,iBAAA+E,EAAA,OAAAhF,cAAAgF,EAAA,OAAAU,MAAAV,EAAA,OAAAW,MAAAX,EAAA,OAAAY,IAAA;EAJjBC,KAAA;GAAAC,WACVJ;GAAwCK,YACvCJ;GAAuBK,WACxBP;GAAuBQ,WACvBL;GAA2B5F;GAAAP;GAAAyG,QAG9BjG;GAAaC;EAEvB;EAAC8E,EAAA,KAAA9E;EAAA8E,EAAA,KAAAvF;EAAAuF,EAAA,KAAA/E;EAAA+E,EAAA,KAAAhF;EAAAgF,EAAA,KAAAU;EAAAV,EAAA,KAAAW;EAAAX,EAAA,KAAAY;EAAAZ,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAbD,MAAA,EAAAmB,cAAAC,sBAAAH,WAAAxD,mBAII1D,mBAAmB8G,EAStB;CAAE,IAAAQ;CAAA,IAAArB,EAAA,OAAAoB,qBAAAE,OAAA;EAKAD,KAAAD,qBAAoBE,SAApB,CAA+B;EAACtB,EAAA,KAAAoB,qBAAAE;EAAAtB,EAAA,KAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAAjC,MAAAuB,KAACF;CAAkD,IAAAG;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAA1B,EAAA,QAAAuB,IAAA;EADrD,CAAA,CAAAC,WAAAC,UAAA,GAAAC,iBACEH;EAAoDvB,EAAA,MAAAuB;EAAAvB,EAAA,MAAAwB;EAAAxB,EAAA,MAAAyB;EAAAzB,EAAA,MAAA0B;CAAA,OAAA;EAAAF,YAAAxB,EAAA;EAAAyB,WAAAzB,EAAA;EAAA0B,gBAAA1B,EAAA;CAAA;CAAA,IAAA2B;CAAA,IAAAC;CAAA,IAAA5B,EAAA,QAAAxC,kBAAAwC,EAAA,QAAAvC,gBAAA;EAG5CmE,WAAA;GACR,IAAIpE,gBACFA,eAAcqE,UAAW,EAAApE,eAAiB;GAC3C,aACM;IACL,IAAID,gBACFA,eAAcqE,UAAW;GAC1B;EACF;EACAF,MAAA,CAACnE,gBAAgBC,cAAc;EAACuC,EAAA,MAAAxC;EAAAwC,EAAA,MAAAvC;EAAAuC,EAAA,MAAA2B;EAAA3B,EAAA,MAAA4B;CAAA,OAAA;EAAAD,MAAA3B,EAAA;EAAA4B,KAAA5B,EAAA;CAAA;CATnCrG,UAAUiI,IASPD,GAAgC;CAAC,IAAAG;CAAA,IAAA9B,EAAA,QAAAhE,mCAAAgE,EAAA,QAAAtF,YAAA;EAEJoH,OAAAhE,OAAA;GAC9B,MAAAiE,gBAAsBjE,GAAEG,QAAS,wBAAwB;GACzD,IAAI8D,eAAa,OACRA,kBAAkBrH,WAAUmH,UAA5B,YAAA;GAET,IACG,CAAC7F,mCAAmCtB,WAAUmH,SAAkB3D,SAACJ,EAAE,KACpEA,GAAEG,QAAS,qBAAqB,GAAC,OAE1B;GAKT,MAAA+D,YAAkBlE,GAAEG,QAAS,wBAAwB;GAErD,IACEJ,iBAAiBC,IAAIpD,WAAUmH,OAC4B,KAA1DG,aAAa,QAAb,CAAsBA,UAAS7D,QAASP,iBAAiB,GAAE,OAErD;GACR,OACM;EAAS;EACjBoC,EAAA,MAAAhE;EAAAgE,EAAA,MAAAtF;EAAAsF,EAAA,MAAA8B;CAAA,OAAAA,MAAA9B,EAAA;CAvBD,MAAAiC,0BAAgCH;CAuB9B,IAAAI;CAAA,IAAAlC,EAAA,QAAAiC,2BAAAjC,EAAA,QAAAvD,SAAA;EASgCyF,OAAAC,SAAA;GAC5B,MAAAC,WAAiBH,wBAAwBnE,IAAE;GAC3C,IAAIsE,aAAa,QAEfC,WAAW5F,SAAS,CAAC;GACtB,OACM2F,aAAa;EAAS;EAC9BpC,EAAA,MAAAiC;EAAAjC,EAAA,MAAAvD;EAAAuD,EAAA,MAAAkC;CAAA,OAAAA,MAAAlC,EAAA;CAAA,IAAAsC;CAAA,IAAAtC,EAAA,QAAAvF,UAAAuF,EAAA,QAAAvD,WAAAuD,EAAA,QAAAkC,KAAA;EAZHI,MAAA;GAAA7F;GAAA8F,mBAEqB;GAAI9H;GAAA+H,eAER;GAAIC,8BACWP;EAQhC;EAAClC,EAAA,MAAAvF;EAAAuF,EAAA,MAAAvD;EAAAuD,EAAA,MAAAkC;EAAAlC,EAAA,MAAAsC;CAAA,OAAAA,MAAAtC,EAAA;CAdH,MAAA,EAAAmB,cAAAuB,yBAA+C5I,WAC7CwI,KAcA/B,gBACF;CAAE,IAAAoC;CAAA,IAAA3C,EAAA,QAAAiC,2BAAAjC,EAAA,QAAAO,oBAAAP,EAAA,QAAAtF,YAAA;EAEyCiI,OAAAC,UAAA;GACzC,KACG1J,cAAcwB,WAAUmH,OACe,KAAtC3I,cAAcqH,iBAAgBsB,OAAQ,MACxCI,wBAAwBhJ,eAAe2J,KAAK,CAAY,MAAM,WAE9DA,MAAKC,eAAgB;EACtB;EACF7C,EAAA,MAAAiC;EAAAjC,EAAA,MAAAO;EAAAP,EAAA,MAAAtF;EAAAsF,EAAA,MAAA2C;CAAA,OAAAA,MAAA3C,EAAA;CARD,MAAA8C,4BAAkC9I,SAAS2I,GAQ1C;CAQa,MAAAI,MAAA,CAACtI;CAAM,IAAAuI;CAAA,IAAAhD,EAAA,QAAAO,oBAAAP,EAAA,QAAA8C,6BAAA9C,EAAA,QAAA+C,KAAA;EAFFC,MAAA;GAAAC,KACZ1C;GAAgBtE,YACT8G;GAAOG,wBACKJ;GAAyBK,mBAC9BL;EACrB;EAAC9C,EAAA,MAAAO;EAAAP,EAAA,MAAA8C;EAAA9C,EAAA,MAAA+C;EAAA/C,EAAA,MAAAgD;CAAA,OAAAA,MAAAhD,EAAA;CALDnG,mBAAmBmJ,GAKlB;CAAC,IAAAI;CAAA,IAAApD,EAAA,QAAAjF,aAAAiF,EAAA,QAAAiB,WAAA;EAGyBmC,MAAAnC,WAASoC,MAAQ,GAAM,CAAC,CAAA,MAAxBtI;EAAqCiF,EAAA,MAAAjF;EAAAiF,EAAA,MAAAiB;EAAAjB,EAAA,MAAAoD;CAAA,OAAAA,MAAApD,EAAA;CAAhE,MAAAsD,qBAA2BF;CAI3B,MAAAG,sBAA4B3J,OAE1B,IAAI;CAAE,IAAA4J;CAAA,IAAAxD,EAAA,QAAAyD,OAAAC,IAAA,2BAAA,GAAA;EACyBF,OAAAG,SAAA;GAC/BlD,iBAAgBoB,UAAW8B;GAC3BJ,oBAAmB1B,UAAW8B,IAAI;EAAC;EACpC3D,EAAA,MAAAwD;CAAA,OAAAA,MAAAxD,EAAA;CAHD,MAAA4D,eAAqBJ;CAGd,IAAAK;CAAA,IAAA7D,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,QAAA5C,QAAA4C,EAAA,QAAAE,GAAA;EAIF2D,OAAAC,QAAA;GAAC,MAAA,EAAAC,OAAAC,SAAAC,WAAAhB,KAAAiB,kBAAAJ;GACAP,oBAAmB1B,UAAWqC;GAAH,OAEzB,oBAAC,uBAAD;IAAsB,GAChBhK,aACF;KAAA,GAAKkH;KAAoBE,OAASI;IAAc,GAChDgB,sBACA7F,mBACF;IACK,KAAA1C,YAAUoG,kBAAkBC,QAAQ;IAElCkB,OAAAA;IAGoB,6BAAAuC,aAAA3D,KAAAA;IAE3B,UAAA,oBAAC,uBAAD;KACOsD,KAAAA;KACWN,kBAAAA;KACJS,cAAAA;KACN,MAAA;MAAAI,MACEH;MAAOzE,QACLwE,UAAU;KACpB;KACQ1I,QAAAA;KACA,QAAA,EAAA,sBACgBF,gBAAA,GACfA,cAAa,MADEmF,KAAAA,EAGxB;KAEO,OAAA;MAAAkB;MAAAC;KAAsB;KAE7B,UAAA,oBAAC,SAAD;MACE,QAAA;MACK3G,KAAAA;MACL,wBAAA;MACIM,IAAAA;MAEF,cAAAuB,cACC,OAAOD,UAAU,WAAjBA,QAEGE,iBAAA0D,KAAAA,IAEEJ,EAAE,0BAA0B,SAAS;MAE5BtD,mBAAAA;MACFf;MAEb,aAAAA,kBAAkB,WAAlBD,cAAA0E,KAAAA;MAGA,cAAAzE,kBAAkB,aAAlBC,eAAAwE,KAAAA;MAGA,aAAAzE,kBAAkB,aAAlBE,cAAAuE,KAAAA;MAEUrE;MACEC;MAGR,MAAAkB,SAAS,UAAT,UAAA;MACiB,uBAAA;MAChBhB;MACCc;MACA5B,QAAAA;MACMC;MACGC;MACFC;MACAC;MACNC;MACCW,UAAAA;MACJ,OAAA;MACMe;MACOd;MAElBF;KA3CK,CAAA;IAjBY,CAAA;GAbF,CAAA;EA4EE;EAE3B2D,EAAA,MAAArD;EAAAqD,EAAA,MAAApD;EAAAoD,EAAA,MAAA3D;EAAA2D,EAAA,MAAA7E;EAAA6E,EAAA,MAAAnD;EAAAmD,EAAA,MAAA9D;EAAA8D,EAAA,MAAA3C;EAAA2C,EAAA,MAAA9C;EAAA8C,EAAA,MAAAtE;EAAAsE,EAAA,MAAAjE;EAAAiE,EAAA,MAAA/D;EAAA+D,EAAA,MAAA5D;EAAA4D,EAAA,MAAAtD;EAAAsD,EAAA,MAAAQ;EAAAR,EAAA,MAAA5E;EAAA4E,EAAA,MAAAlF;EAAAkF,EAAA,MAAA1E;EAAA0E,EAAA,MAAArE;EAAAqE,EAAA,MAAA1D;EAAA0D,EAAA,MAAAwB;EAAAxB,EAAA,MAAAyB;EAAAzB,EAAA,MAAAO;EAAAP,EAAA,MAAAzD;EAAAyD,EAAA,MAAAxE;EAAAwE,EAAA,MAAAzE;EAAAyE,EAAA,MAAA0C;EAAA1C,EAAA,MAAAoB;EAAApB,EAAA,MAAA3E;EAAA2E,EAAA,MAAAsD;EAAAtD,EAAA,MAAA0B;EAAA1B,EAAA,MAAAvE;EAAAuE,EAAA,MAAApE;EAAAoE,EAAA,MAAAlE;EAAAkE,EAAA,MAAAnE;EAAAmE,EAAA,MAAA5C;EAAA4C,EAAA,MAAAE;EAAAF,EAAA,MAAA6D;CAAA,OAAAA,MAAA7D,EAAA;CAAA,IAAA8D;CAAA,IAAA9D,EAAA,QAAAvF,UAAAuF,EAAA,QAAA6D,KAAA;EAIEC,MAAA,oBAAC,QAAD,EAAA,UAASM,oBAtFb,mBAAD;GAA4B3J,SAAAA;GACzBoJ,UAAAA;EADe,CAsFJO,EAAF,CAAA;EAA0BpE,EAAA,MAAAvF;EAAAuF,EAAA,MAAA6D;EAAA7D,EAAA,MAAA8D;CAAA,OAAAA,MAAA9D,EAAA;CAAA,OAAjC8D;AAAiC"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.207.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.208.0 | 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.207.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.208.0 | 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 +1 @@
1
- {"version":3,"file":"useCompositeFocus.js","names":["FocusEvent","RefObject","useEffect","useRef","useEvent","CompositeBlurInfo","isPressing","UseCompositeFocusProps","wrapperRef","HTMLElement","popoverRef","onFocus","onBlur","info","isDisabled","UseCompositeFocusReturn","compositeFocusProps","e","useCompositeFocus","t0","$","_c","wasInsideRef","rafRef","isPressingOutsideRef","t1","node","current","contains","Node","t2","Symbol","for","cancelAnimationFrame","cancelCheck","t3","target","setTimeout","handleDocumentMouseDown","t4","document","removeEventListener","leave","t5","addEventListener","handleFocus","t6","e_0","next","relatedTarget","requestAnimationFrame","activeElement","handleBlur","t7","t8","t9","_c"],"sources":["../../../../src/components/fields/ListBoxPopover/useCompositeFocus.ts"],"sourcesContent":["import { FocusEvent, RefObject, useEffect, useRef } from 'react';\n\nimport { useEvent } from '../../../_internal';\n\nexport interface CompositeBlurInfo {\n /**\n * Focus left for a mousedown outside, and that press has not ended yet. A\n * layout change made now moves the control under the pointer.\n */\n isPressing: boolean;\n}\n\nexport interface UseCompositeFocusProps {\n wrapperRef: RefObject<HTMLElement>;\n popoverRef: RefObject<HTMLElement>;\n onFocus?: () => void;\n onBlur?: (info: CompositeBlurInfo) => void;\n isDisabled?: boolean;\n}\n\nexport interface UseCompositeFocusReturn {\n compositeFocusProps: {\n onFocus: (e: FocusEvent) => void;\n onBlur: (e: FocusEvent) => void;\n };\n}\n\n/**\n * Tracks focus across a wrapper element and its (portaled) popover as a single\n * logical focus scope. Fires `onFocus` when focus enters either and `onBlur`\n * when it leaves both — essential for components whose overlay is portaled, so\n * that clicking an option does not look like a blur of the whole component.\n *\n * Focus entering is reported as it happens. Focus leaving is too when the blur\n * names where focus went (`relatedTarget`), so it runs before the click that\n * caused it: a Save button sees what leaving the field committed, and an\n * `onFocus` runs before a change made in the same press. A blur to nowhere\n * (a node removed under focus, a programmatic `blur()`, a hop through the\n * body) is checked a frame later, and focus that is back by then reports\n * nothing. One caused by a mousedown outside is final and reported at once:\n * Safari leaves focus nowhere when a button is clicked.\n */\nexport function useCompositeFocus({\n wrapperRef,\n popoverRef,\n onFocus,\n onBlur,\n isDisabled,\n}: UseCompositeFocusProps): UseCompositeFocusReturn {\n const wasInsideRef = useRef(false);\n const rafRef = useRef<number | null>(null);\n // Set from an outside mousedown until the task that handles it ends. The\n // focus change is that mousedown's default action, so a blur that sees the\n // flag was caused by it.\n const isPressingOutsideRef = useRef(false);\n\n const contains = (node: EventTarget | null) =>\n node != null &&\n ((wrapperRef.current?.contains(node as Node) ?? false) ||\n (popoverRef.current?.contains(node as Node) ?? false));\n\n const cancelCheck = () => {\n if (rafRef.current !== null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n };\n\n const handleDocumentMouseDown = useEvent((e: MouseEvent) => {\n if (contains(e.target)) return;\n\n isPressingOutsideRef.current = true;\n setTimeout(() => {\n isPressingOutsideRef.current = false;\n }, 0);\n });\n\n const leave = () => {\n cancelCheck();\n\n if (!wasInsideRef.current) return;\n\n wasInsideRef.current = false;\n document.removeEventListener('mousedown', handleDocumentMouseDown, true);\n onBlur?.({ isPressing: isPressingOutsideRef.current });\n };\n\n const handleFocus = () => {\n // A portaled popover's focus events also bubble to the wrapper through the\n // React tree, so each edge is reported once however many times it arrives.\n if (isDisabled || wasInsideRef.current) return;\n\n wasInsideRef.current = true;\n document.addEventListener('mousedown', handleDocumentMouseDown, true);\n onFocus?.();\n };\n\n const handleBlur = (e: FocusEvent) => {\n if (isDisabled) return;\n\n const next = e.relatedTarget;\n\n if (next != null || isPressingOutsideRef.current) {\n if (!contains(next)) leave();\n\n return;\n }\n\n cancelCheck();\n rafRef.current = requestAnimationFrame(() => {\n rafRef.current = null;\n\n if (!contains(document.activeElement)) leave();\n });\n };\n\n // StrictMode unmounts and remounts effects after an `autoFocus` has already\n // reported focus, so the listener focus added is put back here.\n useEffect(() => {\n if (wasInsideRef.current) {\n document.addEventListener('mousedown', handleDocumentMouseDown, true);\n }\n\n return () => {\n if (rafRef.current !== null) {\n cancelAnimationFrame(rafRef.current);\n }\n\n document.removeEventListener('mousedown', handleDocumentMouseDown, true);\n };\n }, [handleDocumentMouseDown]);\n\n return {\n compositeFocusProps: {\n onFocus: handleFocus,\n onBlur: handleBlur,\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA0CA,SAAOkB,kBAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAA2B,MAAA,EAAAb,YAAAE,YAAAC,SAAAC,QAAAE,eAAAK;CAOhC,MAAAG,eAAqBnB,OAAO,KAAK;CACjC,MAAAoB,SAAepB,OAAsB,IAAI;CAIzC,MAAAqB,uBAA6BrB,OAAO,KAAK;CAAE,IAAAsB;CAAA,IAAAL,EAAA,OAAAV,cAAAU,EAAA,OAAAZ,YAAA;EAE1BiB,MAAAC,SACfA,QAAQ,UACNlB,WAAUmB,SAAkBC,SAACF,IAAqB,KAAlD,WACChB,WAAUiB,SAAkBC,SAACF,IAAqB,KAAlD;EAAqDN,EAAA,KAAAV;EAAAU,EAAA,KAAAZ;EAAAY,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAH1D,MAAAQ,WAAiBH;CAG0C,IAAAK;CAAA,IAAAV,EAAA,OAAAW,OAAAC,IAAA,2BAAA,GAAA;EAEvCF,WAAA;GAClB,IAAIP,OAAMI,YAAa,MAAI;IACzBM,qBAAqBV,OAAMI,OAAQ;IACnCJ,OAAMI,UAAW;GAAH;EACf;EACFP,EAAA,KAAAU;CAAA,OAAAA,KAAAV,EAAA;CALD,MAAAc,cAAoBJ;CAKlB,IAAAK;CAAA,IAAAf,EAAA,OAAAQ,UAAA;EAEuCO,MAAAlB,MAAA;GACvC,IAAIW,SAASX,EAACmB,MAAO,GAAC;GAEtBZ,qBAAoBG,UAAW;GAC/BU,iBAAW;IACTb,qBAAoBG,UAAW;GAAH,GAC3B,CAAC;EAAC;EACNP,EAAA,KAAAQ;EAAAR,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAPD,MAAAkB,0BAAgClC,SAAS+B,EAOxC;CAAE,IAAAI;CAAA,IAAAnB,EAAA,OAAAkB,2BAAAlB,EAAA,OAAAR,QAAA;EAEW2B,WAAA;GACZL,YAAY;GAEZ,IAAI,CAACZ,aAAYK,SAAQ;GAEzBL,aAAYK,UAAW;GACvBa,SAAQC,oBAAqB,aAAaH,yBAAyB,IAAI;GACvE1B,SAAS,EAAAN,YAAckB,qBAAoBG,QAAS,CAAC;EAAC;EACvDP,EAAA,KAAAkB;EAAAlB,EAAA,KAAAR;EAAAQ,EAAA,KAAAmB;CAAA,OAAAA,KAAAnB,EAAA;CARD,MAAAsB,QAAcH;CAQZ,IAAAI;CAAA,IAAAvB,EAAA,OAAAkB,2BAAAlB,EAAA,QAAAN,cAAAM,EAAA,QAAAT,SAAA;EAEkBgC,WAAA;GAGlB,IAAI7B,cAAcQ,aAAYK,SAAQ;GAEtCL,aAAYK,UAAW;GACvBa,SAAQI,iBAAkB,aAAaN,yBAAyB,IAAI;GACpE3B,UAAU;EAAC;EACZS,EAAA,KAAAkB;EAAAlB,EAAA,MAAAN;EAAAM,EAAA,MAAAT;EAAAS,EAAA,MAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CARD,MAAAyB,cAAoBF;CAQlB,IAAAG;CAAA,IAAA1B,EAAA,QAAAQ,YAAAR,EAAA,QAAAN,cAAAM,EAAA,QAAAsB,OAAA;EAEiBI,MAAAC,QAAA;GACjB,IAAIjC,YAAU;GAEd,MAAAkC,OAAa/B,IAACgC;GAEd,IAAID,QAAQ,QAAQxB,qBAAoBG,SAAQ;IAC9C,IAAI,CAACC,SAASoB,IAAI,GAAGN,MAAM;IAAE;GAAA;GAK/BR,YAAY;GACZX,OAAMI,UAAWuB,4BAAsB;IACrC3B,OAAMI,UAAW;IAEjB,IAAI,CAACC,SAASY,SAAQW,aAAc,GAAGT,MAAM;GAAE,CAChD;EAJa;EAKftB,EAAA,MAAAQ;EAAAR,EAAA,MAAAN;EAAAM,EAAA,MAAAsB;EAAAtB,EAAA,MAAA0B;CAAA,OAAAA,KAAA1B,EAAA;CAjBD,MAAAgC,aAAmBN;CAiBjB,IAAAO;CAAA,IAAAC;CAAA,IAAAlC,EAAA,QAAAkB,yBAAA;EAIQe,WAAA;GACR,IAAI/B,aAAYK,SACda,SAAQI,iBAAkB,aAAaN,yBAAyB,IAAI;GACrE,aAEM;IACL,IAAIf,OAAMI,YAAa,MACrBM,qBAAqBV,OAAMI,OAAQ;IAGrCa,SAAQC,oBAAqB,aAAaH,yBAAyB,IAAI;GAAC;EACzE;EACAgB,KAAA,CAAChB,uBAAuB;EAAClB,EAAA,MAAAkB;EAAAlB,EAAA,MAAAiC;EAAAjC,EAAA,MAAAkC;CAAA,OAAA;EAAAD,KAAAjC,EAAA;EAAAkC,KAAAlC,EAAA;CAAA;CAZ5BlB,UAAUmD,IAYPC,EAAyB;CAAC,IAAAC;CAAA,IAAAnC,EAAA,QAAAgC,cAAAhC,EAAA,QAAAyB,aAAA;EAEtBU,KAAA,EAAAvC,qBACgB;GAAAL,SACVkC;GAAWjC,QACZwC;EACV,EACF;EAAChC,EAAA,MAAAgC;EAAAhC,EAAA,MAAAyB;EAAAzB,EAAA,MAAAmC;CAAA,OAAAA,KAAAnC,EAAA;CAAA,OALMmC;AAKN"}
1
+ {"version":3,"file":"useCompositeFocus.js","names":["FocusEvent","RefObject","useEffect","useRef","useEvent","CompositeBlurInfo","isPressing","UseCompositeFocusProps","wrapperRef","HTMLElement","popoverRef","onFocus","onBlur","info","isDisabled","UseCompositeFocusReturn","compositeFocusProps","e","useCompositeFocus","t0","$","_c","wasInsideRef","rafRef","isPressingOutsideRef","t1","node","current","contains","Node","t2","Symbol","for","cancelAnimationFrame","cancelCheck","t3","target","setTimeout","handleDocumentMouseDown","t4","document","removeEventListener","leave","t5","addEventListener","handleFocus","t6","e_0","next","relatedTarget","requestAnimationFrame","activeElement","handleBlur","t7","t8","t9","_c"],"sources":["../../../../src/components/fields/ListBoxPopover/useCompositeFocus.ts"],"sourcesContent":["import { FocusEvent, RefObject, useEffect, useRef } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\n\nexport interface CompositeBlurInfo {\n /**\n * Focus left for a mousedown outside, and that press has not ended yet. A\n * layout change made now moves the control under the pointer.\n */\n isPressing: boolean;\n}\n\nexport interface UseCompositeFocusProps {\n wrapperRef: RefObject<HTMLElement>;\n popoverRef: RefObject<HTMLElement>;\n onFocus?: () => void;\n onBlur?: (info: CompositeBlurInfo) => void;\n isDisabled?: boolean;\n}\n\nexport interface UseCompositeFocusReturn {\n compositeFocusProps: {\n onFocus: (e: FocusEvent) => void;\n onBlur: (e: FocusEvent) => void;\n };\n}\n\n/**\n * Tracks focus across a wrapper element and its (portaled) popover as a single\n * logical focus scope. Fires `onFocus` when focus enters either and `onBlur`\n * when it leaves both — essential for components whose overlay is portaled, so\n * that clicking an option does not look like a blur of the whole component.\n *\n * Focus entering is reported as it happens. Focus leaving is too when the blur\n * names where focus went (`relatedTarget`), so it runs before the click that\n * caused it: a Save button sees what leaving the field committed, and an\n * `onFocus` runs before a change made in the same press. A blur to nowhere\n * (a node removed under focus, a programmatic `blur()`, a hop through the\n * body) is checked a frame later, and focus that is back by then reports\n * nothing. One caused by a mousedown outside is final and reported at once:\n * Safari leaves focus nowhere when a button is clicked.\n */\nexport function useCompositeFocus({\n wrapperRef,\n popoverRef,\n onFocus,\n onBlur,\n isDisabled,\n}: UseCompositeFocusProps): UseCompositeFocusReturn {\n const wasInsideRef = useRef(false);\n const rafRef = useRef<number | null>(null);\n // Set from an outside mousedown until the task that handles it ends. The\n // focus change is that mousedown's default action, so a blur that sees the\n // flag was caused by it.\n const isPressingOutsideRef = useRef(false);\n\n const contains = (node: EventTarget | null) =>\n node != null &&\n ((wrapperRef.current?.contains(node as Node) ?? false) ||\n (popoverRef.current?.contains(node as Node) ?? false));\n\n const cancelCheck = () => {\n if (rafRef.current !== null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n };\n\n const handleDocumentMouseDown = useEvent((e: MouseEvent) => {\n if (contains(e.target)) return;\n\n isPressingOutsideRef.current = true;\n setTimeout(() => {\n isPressingOutsideRef.current = false;\n }, 0);\n });\n\n const leave = () => {\n cancelCheck();\n\n if (!wasInsideRef.current) return;\n\n wasInsideRef.current = false;\n document.removeEventListener('mousedown', handleDocumentMouseDown, true);\n onBlur?.({ isPressing: isPressingOutsideRef.current });\n };\n\n const handleFocus = () => {\n // A portaled popover's focus events also bubble to the wrapper through the\n // React tree, so each edge is reported once however many times it arrives.\n if (isDisabled || wasInsideRef.current) return;\n\n wasInsideRef.current = true;\n document.addEventListener('mousedown', handleDocumentMouseDown, true);\n onFocus?.();\n };\n\n const handleBlur = (e: FocusEvent) => {\n if (isDisabled) return;\n\n const next = e.relatedTarget;\n\n if (next != null || isPressingOutsideRef.current) {\n if (!contains(next)) leave();\n\n return;\n }\n\n cancelCheck();\n rafRef.current = requestAnimationFrame(() => {\n rafRef.current = null;\n\n if (!contains(document.activeElement)) leave();\n });\n };\n\n // StrictMode unmounts and remounts effects after an `autoFocus` has already\n // reported focus, so the listener focus added is put back here.\n useEffect(() => {\n if (wasInsideRef.current) {\n document.addEventListener('mousedown', handleDocumentMouseDown, true);\n }\n\n return () => {\n if (rafRef.current !== null) {\n cancelAnimationFrame(rafRef.current);\n }\n\n document.removeEventListener('mousedown', handleDocumentMouseDown, true);\n };\n }, [handleDocumentMouseDown]);\n\n return {\n compositeFocusProps: {\n onFocus: handleFocus,\n onBlur: handleBlur,\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA0CA,SAAOkB,kBAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAA2B,MAAA,EAAAb,YAAAE,YAAAC,SAAAC,QAAAE,eAAAK;CAOhC,MAAAG,eAAqBnB,OAAO,KAAK;CACjC,MAAAoB,SAAepB,OAAsB,IAAI;CAIzC,MAAAqB,uBAA6BrB,OAAO,KAAK;CAAE,IAAAsB;CAAA,IAAAL,EAAA,OAAAV,cAAAU,EAAA,OAAAZ,YAAA;EAE1BiB,MAAAC,SACfA,QAAQ,UACNlB,WAAUmB,SAAkBC,SAACF,IAAqB,KAAlD,WACChB,WAAUiB,SAAkBC,SAACF,IAAqB,KAAlD;EAAqDN,EAAA,KAAAV;EAAAU,EAAA,KAAAZ;EAAAY,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAH1D,MAAAQ,WAAiBH;CAG0C,IAAAK;CAAA,IAAAV,EAAA,OAAAW,OAAAC,IAAA,2BAAA,GAAA;EAEvCF,WAAA;GAClB,IAAIP,OAAMI,YAAa,MAAI;IACzBM,qBAAqBV,OAAMI,OAAQ;IACnCJ,OAAMI,UAAW;GAAH;EACf;EACFP,EAAA,KAAAU;CAAA,OAAAA,KAAAV,EAAA;CALD,MAAAc,cAAoBJ;CAKlB,IAAAK;CAAA,IAAAf,EAAA,OAAAQ,UAAA;EAEuCO,MAAAlB,MAAA;GACvC,IAAIW,SAASX,EAACmB,MAAO,GAAC;GAEtBZ,qBAAoBG,UAAW;GAC/BU,iBAAW;IACTb,qBAAoBG,UAAW;GAAH,GAC3B,CAAC;EAAC;EACNP,EAAA,KAAAQ;EAAAR,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAPD,MAAAkB,0BAAgClC,SAAS+B,EAOxC;CAAE,IAAAI;CAAA,IAAAnB,EAAA,OAAAkB,2BAAAlB,EAAA,OAAAR,QAAA;EAEW2B,WAAA;GACZL,YAAY;GAEZ,IAAI,CAACZ,aAAYK,SAAQ;GAEzBL,aAAYK,UAAW;GACvBa,SAAQC,oBAAqB,aAAaH,yBAAyB,IAAI;GACvE1B,SAAS,EAAAN,YAAckB,qBAAoBG,QAAS,CAAC;EAAC;EACvDP,EAAA,KAAAkB;EAAAlB,EAAA,KAAAR;EAAAQ,EAAA,KAAAmB;CAAA,OAAAA,KAAAnB,EAAA;CARD,MAAAsB,QAAcH;CAQZ,IAAAI;CAAA,IAAAvB,EAAA,OAAAkB,2BAAAlB,EAAA,QAAAN,cAAAM,EAAA,QAAAT,SAAA;EAEkBgC,WAAA;GAGlB,IAAI7B,cAAcQ,aAAYK,SAAQ;GAEtCL,aAAYK,UAAW;GACvBa,SAAQI,iBAAkB,aAAaN,yBAAyB,IAAI;GACpE3B,UAAU;EAAC;EACZS,EAAA,KAAAkB;EAAAlB,EAAA,MAAAN;EAAAM,EAAA,MAAAT;EAAAS,EAAA,MAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CARD,MAAAyB,cAAoBF;CAQlB,IAAAG;CAAA,IAAA1B,EAAA,QAAAQ,YAAAR,EAAA,QAAAN,cAAAM,EAAA,QAAAsB,OAAA;EAEiBI,MAAAC,QAAA;GACjB,IAAIjC,YAAU;GAEd,MAAAkC,OAAa/B,IAACgC;GAEd,IAAID,QAAQ,QAAQxB,qBAAoBG,SAAQ;IAC9C,IAAI,CAACC,SAASoB,IAAI,GAAGN,MAAM;IAAE;GAAA;GAK/BR,YAAY;GACZX,OAAMI,UAAWuB,4BAAsB;IACrC3B,OAAMI,UAAW;IAEjB,IAAI,CAACC,SAASY,SAAQW,aAAc,GAAGT,MAAM;GAAE,CAChD;EAJa;EAKftB,EAAA,MAAAQ;EAAAR,EAAA,MAAAN;EAAAM,EAAA,MAAAsB;EAAAtB,EAAA,MAAA0B;CAAA,OAAAA,KAAA1B,EAAA;CAjBD,MAAAgC,aAAmBN;CAiBjB,IAAAO;CAAA,IAAAC;CAAA,IAAAlC,EAAA,QAAAkB,yBAAA;EAIQe,WAAA;GACR,IAAI/B,aAAYK,SACda,SAAQI,iBAAkB,aAAaN,yBAAyB,IAAI;GACrE,aAEM;IACL,IAAIf,OAAMI,YAAa,MACrBM,qBAAqBV,OAAMI,OAAQ;IAGrCa,SAAQC,oBAAqB,aAAaH,yBAAyB,IAAI;GAAC;EACzE;EACAgB,KAAA,CAAChB,uBAAuB;EAAClB,EAAA,MAAAkB;EAAAlB,EAAA,MAAAiC;EAAAjC,EAAA,MAAAkC;CAAA,OAAA;EAAAD,KAAAjC,EAAA;EAAAkC,KAAAlC,EAAA;CAAA;CAZ5BlB,UAAUmD,IAYPC,EAAyB;CAAC,IAAAC;CAAA,IAAAnC,EAAA,QAAAgC,cAAAhC,EAAA,QAAAyB,aAAA;EAEtBU,KAAA,EAAAvC,qBACgB;GAAAL,SACVkC;GAAWjC,QACZwC;EACV,EACF;EAAChC,EAAA,MAAAgC;EAAAhC,EAAA,MAAAyB;EAAAzB,EAAA,MAAAmC;CAAA,OAAAA,KAAAnC,EAAA;CAAA,OALMmC;AAKN"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.207.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { useI18n } from "../../../i18n/useI18n.js";
4
4
  import { settleOverlayKey } from "../../../utils/react/overlayKeyPropagation.js";
@@ -1 +1 @@
1
- {"version":3,"file":"NumberInput.js","names":["tasty","ForwardedRef","forwardRef","KeyboardEvent","RefObject","useRef","AriaNumberFieldProps","mergeProps","mergeAriaProps","useKeyboard","useLocale","useNumberField","useNumberFieldState","useI18n","castNullableNumberValue","WithNullableValue","settleOverlayKey","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","t1","Symbol","for","showsValidateErrors","props","suffix","value","defaultValue","onChange","inputRef","labelProps","userLabelProps","inputProps","userInputProps","wrapperProps","otherProps","showStepper","locale","displayedValidation","t2","trackTouched","ariaProps","t3","state","localInputRef","t4","onKeyDown","undefined","onKeyUp","groupProps","ariaGroupProps","incrementButtonProps","decrementButtonProps","validation","HTMLInputElement","t5","fieldLabel","label","t6","incrementAriaLabel","stepUpLabel","t7","decrementAriaLabel","stepDownLabel","t8","event","defaultPrevented","isDefaultPrevented","key","continuePropagation","t9","isDisabled","keyboardProps","t10","mergedLabelProps","steppers","size","shape","T0","t12","getDisplayedValidation","t13","id","t14","t15","name","isNaN","numberValue","t16","_NumberInput","cubeInputType","displayName","TextInputBase","_c","mergeProps","mergeAriaProps"],"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 { settleOverlayKey } from '../../../utils/react/overlayKeyPropagation';\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\n 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, { showsValidateErrors: true });\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 // Number handling never prevents `Escape` or `Tab`, so a prevented one\n // is the caller's and stops here, as in every other field. An\n // unprevented one already goes on, unless the caller stopped it.\n if (event.isDefaultPrevented()) settleOverlayKey(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 isPlain={otherProps.shape === 'plain'}\n />\n <StepButton\n isDisabled={props.isDisabled}\n direction=\"down\"\n {...decrementButtonProps}\n aria-label={stepDownLabel}\n size={otherProps.size}\n isPlain={otherProps.shape === 'plain'}\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 {/* `useNumberField` keeps `name` off the input, whose text is formatted, so a native `<form>` submits the number from here. */}\n {props.name ? (\n <input\n type=\"hidden\"\n name={props.name}\n value={isNaN(state.numberValue) ? '' : state.numberValue}\n disabled={props.isDisabled}\n />\n ) : null}\n </StyledTextInputBase>\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","settleOverlayKey","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","t1","Symbol","for","showsValidateErrors","props","suffix","value","defaultValue","onChange","inputRef","labelProps","userLabelProps","inputProps","userInputProps","wrapperProps","otherProps","showStepper","locale","displayedValidation","t2","trackTouched","ariaProps","t3","state","localInputRef","t4","onKeyDown","undefined","onKeyUp","groupProps","ariaGroupProps","incrementButtonProps","decrementButtonProps","validation","HTMLInputElement","t5","fieldLabel","label","t6","incrementAriaLabel","stepUpLabel","t7","decrementAriaLabel","stepDownLabel","t8","event","defaultPrevented","isDefaultPrevented","key","continuePropagation","t9","isDisabled","keyboardProps","t10","mergedLabelProps","steppers","size","shape","T0","t12","getDisplayedValidation","t13","id","t14","t15","name","isNaN","numberValue","t16","_NumberInput","cubeInputType","displayName","TextInputBase","_c","mergeProps","mergeAriaProps"],"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/useI18n';\nimport { mergeProps } from '../../../utils/react/mergeProps';\nimport {\n castNullableNumberValue,\n WithNullableValue,\n} from '../../../utils/react/nullableValue';\nimport { settleOverlayKey } from '../../../utils/react/overlayKeyPropagation';\nimport { useFieldProps } from '../../form/Form/use-field/use-field-props';\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\n 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, { showsValidateErrors: true });\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 // Number handling never prevents `Escape` or `Tab`, so a prevented one\n // is the caller's and stops here, as in every other field. An\n // unprevented one already goes on, unless the caller stopped it.\n if (event.isDefaultPrevented()) settleOverlayKey(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 isPlain={otherProps.shape === 'plain'}\n />\n <StepButton\n isDisabled={props.isDisabled}\n direction=\"down\"\n {...decrementButtonProps}\n aria-label={stepDownLabel}\n size={otherProps.size}\n isPlain={otherProps.shape === 'plain'}\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 {/* `useNumberField` keeps `name` off the input, whose text is formatted, so a native `<form>` submits the number from here. */}\n {props.name ? (\n <input\n type=\"hidden\"\n name={props.name}\n value={isNaN(state.numberValue) ? '' : state.numberValue}\n disabled={props.isDisabled}\n />\n ) : null}\n </StyledTextInputBase>\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,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.207.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
2
2
  import { Button } from "../../actions/Button/Button.js";
3
3
  import { DirectionIcon } from "../../../icons/DirectionIcon.js";
4
4
  import { c } from "react/compiler-runtime";
@@ -1,7 +1,6 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.207.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
2
2
  import { chain } from "../../../utils/react/chain.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
- import { useBufferedValue } from "../../../utils/react/useBufferedValue.js";
5
4
  import { ItemActionProvider } from "../../actions/ItemActionContext.js";
6
5
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
7
6
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -11,6 +10,7 @@ import { withOverlayKeys } from "../../../utils/react/overlayKeyPropagation.js";
11
10
  import { castNullableStringValue } from "../../../utils/react/nullableValue.js";
12
11
  import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
13
12
  import { TextInputBase as _TextInputBase } from "../TextInput/TextInputBase.js";
13
+ import { useBufferedValue } from "../../../utils/react/useBufferedValue.js";
14
14
  import { useDisplayedValidation } from "../TextInput/displayed-validation.js";
15
15
  import { c } from "react/compiler-runtime";
16
16
  import { forwardRef, useRef, useState } from "react";
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordInput.js","names":["ForwardedRef","forwardRef","RefObject","useRef","useState","AriaTextFieldProps","useTextField","useI18n","EyeIcon","EyeInvisibleIcon","chain","mergeProps","useBufferedValue","castNullableStringValue","WithNullableValue","withOverlayKeys","ItemAction","ItemActionProvider","useFieldProps","useDisplayedValidation","CubeBufferedValueProps","CubeTextInputBaseProps","TextInputBase","TextFieldKeyboardProps","CubePasswordInputProps","Omit","validate","PasswordInput","rawProps","ref","$","_c","t","t0","t1","Symbol","for","defaultValidationTrigger","showsValidateErrors","valuePropsMapper","_temp","props","type","setType","labelProps","userLabelProps","inputProps","userInputProps","suffix","multiLine","inputRef","propsInputRef","form","isBuffered","rest","localInputRef","buffered","value","onChange","isDisabled","isReadOnly","displayedValidation","validation","trackTouched","onBlur","reset","onKeyDown","HTMLInputElement","t2","mergedLabelProps","t3","_temp2","toggleType","t4","t5","t6","t7","t8","wrappedSuffix","t9","t10","paddingRight","getDisplayedValidation","type_0","toString","_PasswordInput","cubeInputType","displayName","_c","mergeProps","TextInputBase"],"sources":["../../../../src/components/fields/PasswordInput/PasswordInput.tsx"],"sourcesContent":["import { ForwardedRef, forwardRef, RefObject, useRef, useState } from 'react';\nimport { AriaTextFieldProps, useTextField } from 'react-aria';\n\nimport { useI18n } from '../../../i18n';\nimport { EyeIcon } from '../../../icons/EyeIcon';\nimport { EyeInvisibleIcon } from '../../../icons/EyeInvisibleIcon';\nimport { chain, mergeProps, useBufferedValue } from '../../../utils/react';\nimport {\n castNullableStringValue,\n WithNullableValue,\n} from '../../../utils/react/nullableValue';\nimport { withOverlayKeys } from '../../../utils/react/overlayKeyPropagation';\nimport { ItemAction } from '../../actions/ItemAction/ItemAction';\nimport { ItemActionProvider } from '../../actions/ItemActionContext';\nimport { useFieldProps } from '../../form';\nimport { useDisplayedValidation } from '../TextInput/displayed-validation';\nimport {\n CubeBufferedValueProps,\n CubeTextInputBaseProps,\n TextInputBase,\n} from '../TextInput/TextInputBase';\n\nimport type { TextFieldKeyboardProps } from '../../../shared/form';\n\nexport interface CubePasswordInputProps\n extends\n WithNullableValue<Omit<CubeTextInputBaseProps, 'validate'>>,\n CubeBufferedValueProps,\n TextFieldKeyboardProps {\n validate?: AriaTextFieldProps['validate'];\n}\n\nfunction PasswordInput(\n rawProps: CubePasswordInputProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n const { t } = useI18n();\n\n rawProps = castNullableStringValue(rawProps);\n let props = useFieldProps(rawProps, {\n defaultValidationTrigger: 'onBlur',\n showsValidateErrors: true,\n valuePropsMapper: ({ value, onChange }) => ({\n value: value?.toString() ?? '',\n onChange,\n }),\n });\n\n let [type, setType] = useState('password');\n let {\n labelProps: userLabelProps,\n inputProps: userInputProps,\n suffix,\n multiLine,\n inputRef: propsInputRef,\n // The form instance, not the DOM `form` id `useTextField` forwards.\n form,\n isBuffered,\n ...rest\n } = props;\n let localInputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n let inputRef = propsInputRef ?? localInputRef;\n\n // Hold the typed text locally until the controlled value catches up — see `useBufferedValue`.\n let buffered = useBufferedValue(rest.value, rest.onChange, {\n isBuffered,\n isDisabled: rest.isDisabled,\n isReadOnly: rest.isReadOnly,\n });\n\n let displayedValidation = useDisplayedValidation();\n let { labelProps, inputProps, ...validation } = useTextField(\n displayedValidation.trackTouched({\n ...rest,\n value: buffered.value,\n onChange: buffered.onChange,\n onBlur: chain(rest.onBlur, buffered.reset),\n onKeyDown: withOverlayKeys(rest.onKeyDown),\n type,\n }),\n inputRef as RefObject<HTMLInputElement | null>,\n );\n\n // Merge user-provided labelProps with aria labelProps\n const mergedLabelProps = mergeProps(labelProps, userLabelProps);\n\n const toggleType = () => {\n setType((type) => (type === 'password' ? 'text' : 'password'));\n };\n\n const wrappedSuffix = (\n <>\n {suffix}\n {/*\n The disabled state travels through the provider rather than as a prop on\n the action. Both disable it, but the provider marks the state as\n INHERITED from the field, and `current` paints from the colour it\n inherits — which a disabled field has already faded — so a second fade\n would multiply the two down to roughly a tenth opacity. No `type` is\n passed, so the `context` mod stays off and the toggle keeps its margins.\n */}\n <ItemActionProvider isDisabled={rest.isDisabled}>\n <ItemAction\n // No `type` — the default `current` type inherits the input's own text\n // color, so the toggle follows the field's theme, validation state and\n // disabled state rather than staying opaque against faded text.\n // A toggle button keeps one name and reports its state with\n // `aria-pressed`: pressed means the password is shown.\n tooltip={t('passwordInput.showPassword', 'Show password')}\n aria-pressed={type === 'text'}\n icon={type === 'password' ? <EyeInvisibleIcon /> : <EyeIcon />}\n onPress={toggleType}\n />\n </ItemActionProvider>\n </>\n );\n\n return (\n <TextInputBase\n ref={ref}\n labelProps={mergedLabelProps}\n inputProps={mergeProps(\n inputProps,\n { 'data-input-type': 'passwordinput' },\n userInputProps,\n )}\n inputRef={inputRef}\n inputStyles={{ paddingRight: '4x' }}\n type={type}\n suffixPosition=\"after\"\n suffix={wrappedSuffix}\n multiLine={multiLine}\n {...rest}\n {...displayedValidation.getDisplayedValidation(rest, validation)}\n />\n );\n}\n\n/**\n * PasswordInputs are password inputs that allow users to input passwords or code entries\n * with a keyboard. Various decorations can be displayed around the field to\n * communicate the entry requirements.\n */\nconst _PasswordInput = forwardRef(PasswordInput);\n\n(_PasswordInput as any).cubeInputType = 'Text';\n_PasswordInput.displayName = 'PasswordInput';\n\nexport { _PasswordInput as PasswordInput };\n"],"mappings":"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"}
1
+ {"version":3,"file":"PasswordInput.js","names":["ForwardedRef","forwardRef","RefObject","useRef","useState","AriaTextFieldProps","useTextField","useI18n","EyeIcon","EyeInvisibleIcon","chain","mergeProps","castNullableStringValue","WithNullableValue","withOverlayKeys","useBufferedValue","ItemAction","ItemActionProvider","useFieldProps","useDisplayedValidation","CubeBufferedValueProps","CubeTextInputBaseProps","TextInputBase","TextFieldKeyboardProps","CubePasswordInputProps","Omit","validate","PasswordInput","rawProps","ref","$","_c","t","t0","t1","Symbol","for","defaultValidationTrigger","showsValidateErrors","valuePropsMapper","_temp","props","type","setType","labelProps","userLabelProps","inputProps","userInputProps","suffix","multiLine","inputRef","propsInputRef","form","isBuffered","rest","localInputRef","buffered","value","onChange","isDisabled","isReadOnly","displayedValidation","validation","trackTouched","onBlur","reset","onKeyDown","HTMLInputElement","t2","mergedLabelProps","t3","_temp2","toggleType","t4","t5","t6","t7","t8","wrappedSuffix","t9","t10","paddingRight","getDisplayedValidation","type_0","toString","_PasswordInput","cubeInputType","displayName","_c","mergeProps","TextInputBase"],"sources":["../../../../src/components/fields/PasswordInput/PasswordInput.tsx"],"sourcesContent":["import { ForwardedRef, forwardRef, RefObject, useRef, useState } from 'react';\nimport { AriaTextFieldProps, useTextField } from 'react-aria';\n\nimport { useI18n } from '../../../i18n/useI18n';\nimport { EyeIcon } from '../../../icons/EyeIcon';\nimport { EyeInvisibleIcon } from '../../../icons/EyeInvisibleIcon';\nimport { chain } from '../../../utils/react/chain';\nimport { mergeProps } from '../../../utils/react/mergeProps';\nimport {\n castNullableStringValue,\n WithNullableValue,\n} from '../../../utils/react/nullableValue';\nimport { withOverlayKeys } from '../../../utils/react/overlayKeyPropagation';\nimport { useBufferedValue } from '../../../utils/react/useBufferedValue';\nimport { ItemAction } from '../../actions/ItemAction/ItemAction';\nimport { ItemActionProvider } from '../../actions/ItemActionContext';\nimport { useFieldProps } from '../../form/Form/use-field/use-field-props';\nimport { useDisplayedValidation } from '../TextInput/displayed-validation';\nimport {\n CubeBufferedValueProps,\n CubeTextInputBaseProps,\n TextInputBase,\n} from '../TextInput/TextInputBase';\n\nimport type { TextFieldKeyboardProps } from '../../../shared/form';\n\nexport interface CubePasswordInputProps\n extends\n WithNullableValue<Omit<CubeTextInputBaseProps, 'validate'>>,\n CubeBufferedValueProps,\n TextFieldKeyboardProps {\n validate?: AriaTextFieldProps['validate'];\n}\n\nfunction PasswordInput(\n rawProps: CubePasswordInputProps,\n ref: ForwardedRef<HTMLElement>,\n) {\n const { t } = useI18n();\n\n rawProps = castNullableStringValue(rawProps);\n let props = useFieldProps(rawProps, {\n defaultValidationTrigger: 'onBlur',\n showsValidateErrors: true,\n valuePropsMapper: ({ value, onChange }) => ({\n value: value?.toString() ?? '',\n onChange,\n }),\n });\n\n let [type, setType] = useState('password');\n let {\n labelProps: userLabelProps,\n inputProps: userInputProps,\n suffix,\n multiLine,\n inputRef: propsInputRef,\n // The form instance, not the DOM `form` id `useTextField` forwards.\n form,\n isBuffered,\n ...rest\n } = props;\n let localInputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null);\n let inputRef = propsInputRef ?? localInputRef;\n\n // Hold the typed text locally until the controlled value catches up — see `useBufferedValue`.\n let buffered = useBufferedValue(rest.value, rest.onChange, {\n isBuffered,\n isDisabled: rest.isDisabled,\n isReadOnly: rest.isReadOnly,\n });\n\n let displayedValidation = useDisplayedValidation();\n let { labelProps, inputProps, ...validation } = useTextField(\n displayedValidation.trackTouched({\n ...rest,\n value: buffered.value,\n onChange: buffered.onChange,\n onBlur: chain(rest.onBlur, buffered.reset),\n onKeyDown: withOverlayKeys(rest.onKeyDown),\n type,\n }),\n inputRef as RefObject<HTMLInputElement | null>,\n );\n\n // Merge user-provided labelProps with aria labelProps\n const mergedLabelProps = mergeProps(labelProps, userLabelProps);\n\n const toggleType = () => {\n setType((type) => (type === 'password' ? 'text' : 'password'));\n };\n\n const wrappedSuffix = (\n <>\n {suffix}\n {/*\n The disabled state travels through the provider rather than as a prop on\n the action. Both disable it, but the provider marks the state as\n INHERITED from the field, and `current` paints from the colour it\n inherits — which a disabled field has already faded — so a second fade\n would multiply the two down to roughly a tenth opacity. No `type` is\n passed, so the `context` mod stays off and the toggle keeps its margins.\n */}\n <ItemActionProvider isDisabled={rest.isDisabled}>\n <ItemAction\n // No `type` — the default `current` type inherits the input's own text\n // color, so the toggle follows the field's theme, validation state and\n // disabled state rather than staying opaque against faded text.\n // A toggle button keeps one name and reports its state with\n // `aria-pressed`: pressed means the password is shown.\n tooltip={t('passwordInput.showPassword', 'Show password')}\n aria-pressed={type === 'text'}\n icon={type === 'password' ? <EyeInvisibleIcon /> : <EyeIcon />}\n onPress={toggleType}\n />\n </ItemActionProvider>\n </>\n );\n\n return (\n <TextInputBase\n ref={ref}\n labelProps={mergedLabelProps}\n inputProps={mergeProps(\n inputProps,\n { 'data-input-type': 'passwordinput' },\n userInputProps,\n )}\n inputRef={inputRef}\n inputStyles={{ paddingRight: '4x' }}\n type={type}\n suffixPosition=\"after\"\n suffix={wrappedSuffix}\n multiLine={multiLine}\n {...rest}\n {...displayedValidation.getDisplayedValidation(rest, validation)}\n />\n );\n}\n\n/**\n * PasswordInputs are password inputs that allow users to input passwords or code entries\n * with a keyboard. Various decorations can be displayed around the field to\n * communicate the entry requirements.\n */\nconst _PasswordInput = forwardRef(PasswordInput);\n\n(_PasswordInput as any).cubeInputType = 'Text';\n_PasswordInput.displayName = 'PasswordInput';\n\nexport { _PasswordInput as PasswordInput };\n"],"mappings":"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"}
@@ -2,9 +2,7 @@
2
2
  import { FieldBaseProps } from "../../../shared/form.js";
3
3
  import "../../../shared/index.js";
4
4
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
5
- import "../../content/Item/index.js";
6
5
  import { CubeItemButtonProps } from "../../actions/ItemButton/ItemButton.js";
7
- import "../../actions/index.js";
8
6
  import { CubeItemBaseProps as CubeItemProps } from "../../content/Item/Item.js";
9
7
  import { FieldLayoutStyleProps } from "../../form/field-layout.js";
10
8
  import { CubeListBoxProps, ListBox } from "../ListBox/ListBox.js";
@@ -1,27 +1,27 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.207.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.208.0 | Cube Dev Team */
2
2
  import { mergeStyleLayers } from "../../../utils/styles.js";
3
3
  import { Text as _Text } from "../../content/Text.js";
4
- import { isTextOnly } from "../../../utils/react/isTextOnly.js";
5
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
6
- import { useWarn } from "../../../_internal/hooks/use-warn.js";
7
5
  import { LoadingIcon } from "../../../icons/LoadingIcon.js";
6
+ import { useWarn } from "../../../_internal/hooks/use-warn.js";
8
7
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
9
8
  import { useI18n } from "../../../i18n/useI18n.js";
10
- import { DirectionIcon } from "../../../icons/DirectionIcon.js";
9
+ import { CloseIcon } from "../../../icons/CloseIcon.js";
11
10
  import { ItemActionIcon } from "../../actions/ItemActionsWrapper.js";
12
11
  import { ItemButton as _ItemButton } from "../../actions/ItemButton/ItemButton.js";
13
- import { CloseIcon } from "../../../icons/CloseIcon.js";
14
12
  import { Dialog } from "../../overlays/Dialog/Dialog.js";
13
+ import { DirectionIcon } from "../../../icons/DirectionIcon.js";
15
14
  import { allowOverlayKeysToPropagate } from "../../../utils/react/overlayKeyPropagation.js";
16
15
  import { getValidationTheme } from "../../form/validation/resolve-validation-props.js";
17
- import { getValidationIcon } from "../../form/validation/ValidationIndicator.js";
18
16
  import { TRIGGER_TOOLTIP_WARNING } from "../../form/legacy-tooltip.js";
19
- import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
20
17
  import { wrapWithField } from "../../form/wrapper.js";
21
18
  import { splitFieldLayout } from "../../form/field-layout.js";
22
- import { DialogTrigger } from "../../overlays/Dialog/DialogTrigger.js";
19
+ import { useFieldProps } from "../../form/Form/use-field/use-field-props.js";
23
20
  import { ListBox } from "../ListBox/ListBox.js";
21
+ import { getValidationIcon } from "../../form/validation/ValidationIndicator.js";
24
22
  import { TriggerActions } from "../TriggerActions.js";
23
+ import { DialogTrigger } from "../../overlays/Dialog/DialogTrigger.js";
24
+ import { isTextOnly } from "../../../utils/react/isTextOnly.js";
25
25
  import { processSelectionArray } from "../../../utils/selection.js";
26
26
  import { filterBaseProps, tasty } from "@tenphi/tasty";
27
27
  import { forwardRef, useEffect, useId, useMemo, useRef, useState } from "react";