@cube-dev/ui-kit 0.195.0 → 0.197.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 (705) hide show
  1. package/dist/CHANGELOG.md +180 -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-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.d.ts +6 -0
  16. package/dist/components/Root.js +125 -102
  17. package/dist/components/Root.js.map +1 -1
  18. package/dist/components/actions/Action/Action.js +1 -1
  19. package/dist/components/actions/Banner/Banner.js +1 -1
  20. package/dist/components/actions/Button/Button.js +11 -5
  21. package/dist/components/actions/Button/Button.js.map +1 -1
  22. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  23. package/dist/components/actions/ButtonSplit/ButtonSplit.d.ts +9 -4
  24. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  25. package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
  26. package/dist/components/actions/ButtonSplit/context.js +1 -1
  27. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  28. package/dist/components/actions/CommandMenu/styled.js +1 -1
  29. package/dist/components/actions/ItemAction/ItemAction.js +27 -25
  30. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  31. package/dist/components/actions/ItemActionContext.js +1 -1
  32. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  33. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  34. package/dist/components/actions/Link/Link.js +1 -1
  35. package/dist/components/actions/Menu/Menu.js +1 -1
  36. package/dist/components/actions/Menu/MenuCollectionItem.js +7 -4
  37. package/dist/components/actions/Menu/MenuCollectionItem.js.map +1 -1
  38. package/dist/components/actions/Menu/MenuItem.js +69 -60
  39. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  40. package/dist/components/actions/Menu/MenuSection.js +1 -1
  41. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  42. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  43. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  44. package/dist/components/actions/Menu/context.js +1 -1
  45. package/dist/components/actions/Menu/styled.js +1 -4
  46. package/dist/components/actions/Menu/styled.js.map +1 -1
  47. package/dist/components/actions/actions-run.js +1 -1
  48. package/dist/components/actions/index.js +1 -1
  49. package/dist/components/actions/use-action.js +15 -14
  50. package/dist/components/actions/use-action.js.map +1 -1
  51. package/dist/components/actions/use-anchored-menu.js +1 -1
  52. package/dist/components/actions/use-context-menu.js +1 -1
  53. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  54. package/dist/components/content/Alert/Alert.js +1 -1
  55. package/dist/components/content/Alert/use-alert.js +1 -1
  56. package/dist/components/content/Avatar/Avatar.js +1 -1
  57. package/dist/components/content/Badge/Badge.js +1 -1
  58. package/dist/components/content/Card/Card.js +1 -1
  59. package/dist/components/content/Content.js +1 -1
  60. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  61. package/dist/components/content/CopySnippet/CopySnippet.d.ts +16 -16
  62. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  63. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  64. package/dist/components/content/Divider.js +1 -1
  65. package/dist/components/content/Footer.js +1 -1
  66. package/dist/components/content/Header.js +1 -1
  67. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  68. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  69. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  70. package/dist/components/content/Item/Item.js +16 -4
  71. package/dist/components/content/Item/Item.js.map +1 -1
  72. package/dist/components/content/Item/ItemWithNativeLinks.js +1 -1
  73. package/dist/components/content/ItemBadge/ItemBadge.js +7 -3
  74. package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
  75. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  76. package/dist/components/content/Layout/GridLayout.js +1 -1
  77. package/dist/components/content/Layout/Layout.js +29 -15
  78. package/dist/components/content/Layout/Layout.js.map +1 -1
  79. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  80. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  81. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  82. package/dist/components/content/Layout/LayoutContent.js +1 -1
  83. package/dist/components/content/Layout/LayoutContext.js +20 -10
  84. package/dist/components/content/Layout/LayoutContext.js.map +1 -1
  85. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  86. package/dist/components/content/Layout/LayoutFooter.js +12 -9
  87. package/dist/components/content/Layout/LayoutFooter.js.map +1 -1
  88. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  89. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  90. package/dist/components/content/Layout/LayoutPane.js +1 -1
  91. package/dist/components/content/Layout/LayoutPanel.d.ts +7 -3
  92. package/dist/components/content/Layout/LayoutPanel.js +75 -3
  93. package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
  94. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  95. package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
  96. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  97. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  98. package/dist/components/content/Layout/index.js +1 -1
  99. package/dist/components/content/Layout/utils.js +1 -1
  100. package/dist/components/content/Paragraph.js +1 -1
  101. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  102. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  103. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  104. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  105. package/dist/components/content/Result/Result.js +1 -1
  106. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  107. package/dist/components/content/Tag/Tag.js +1 -1
  108. package/dist/components/content/Text.js +1 -1
  109. package/dist/components/content/TextItem/TextItem.js +1 -1
  110. package/dist/components/content/Title.js +1 -1
  111. package/dist/components/content/Tree/Tree.js +1 -1
  112. package/dist/components/content/Tree/TreeNode.js +2 -1
  113. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  114. package/dist/components/content/Tree/styled.js +1 -1
  115. package/dist/components/content/Tree/tree-index.js +1 -1
  116. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  117. package/dist/components/content/Tree/use-load-data.js +1 -1
  118. package/dist/components/content/highlightText.js +1 -1
  119. package/dist/components/content/use-auto-tooltip.js +3 -3
  120. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  121. package/dist/components/data/DataTable/DataTable.js +1 -1
  122. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  123. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  124. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  125. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  126. package/dist/components/data/ItemTable/ItemTableToolbar.js +2 -1
  127. package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
  128. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  129. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  130. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  131. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  132. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  133. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  134. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  135. package/dist/components/data/TableBase/RowCollection.js +1 -1
  136. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  137. package/dist/components/data/TableBase/TableRow.js +1 -1
  138. package/dist/components/data/TableBase/TableView.js +3 -1
  139. package/dist/components/data/TableBase/TableView.js.map +1 -1
  140. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  141. package/dist/components/data/TableBase/column-header.js +1 -1
  142. package/dist/components/data/TableBase/column-menu.js +1 -1
  143. package/dist/components/data/TableBase/column-styles.js +1 -1
  144. package/dist/components/data/TableBase/column-tint.js +1 -1
  145. package/dist/components/data/TableBase/row-menu.js +1 -1
  146. package/dist/components/data/TableBase/styled.js +1 -1
  147. package/dist/components/data/TableBase/table-tree.js +1 -1
  148. package/dist/components/data/TableBase/types.js +1 -1
  149. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  150. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  151. package/dist/components/data/TableBase/use-column-order.js +1 -1
  152. package/dist/components/data/TableBase/use-column-window.js +1 -1
  153. package/dist/components/data/TableBase/use-container-width.js +1 -1
  154. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  155. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  156. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  157. package/dist/components/data/TableBase/use-table-search.js +1 -1
  158. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  159. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  160. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  161. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  162. package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
  163. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  164. package/dist/components/fields/Checkbox/Checkbox.js +2 -2
  165. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  166. package/dist/components/fields/Checkbox/CheckboxGroup.js +5 -5
  167. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  168. package/dist/components/fields/Checkbox/context.js +1 -1
  169. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  170. package/dist/components/fields/ColorPicker/ColorPicker.js +3 -1
  171. package/dist/components/fields/ColorPicker/ColorPicker.js.map +1 -1
  172. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  173. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +2 -1
  174. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
  175. package/dist/components/fields/ComboBox/ComboBox.d.ts +27 -7
  176. package/dist/components/fields/ComboBox/ComboBox.js +1095 -619
  177. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  178. package/dist/components/fields/ComboBox/comboBoxOptions.js +84 -0
  179. package/dist/components/fields/ComboBox/comboBoxOptions.js.map +1 -0
  180. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  181. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  182. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  183. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  184. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  185. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  186. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  187. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  188. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  189. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  190. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  191. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  192. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  193. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  194. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  195. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  196. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  197. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  198. package/dist/components/fields/DatePicker/parseDate.d.ts +7 -0
  199. package/dist/components/fields/DatePicker/parseDate.js +17 -3
  200. package/dist/components/fields/DatePicker/parseDate.js.map +1 -1
  201. package/dist/components/fields/DatePicker/period.js +1 -1
  202. package/dist/components/fields/DatePicker/props.js +1 -1
  203. package/dist/components/fields/DatePicker/utils.js +1 -1
  204. package/dist/components/fields/FileInput/FileInput.js +1 -1
  205. package/dist/components/fields/FilterListBox/FilterListBox.js +2 -1
  206. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  207. package/dist/components/fields/FilterPicker/FilterPicker.js +15 -6
  208. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  209. package/dist/components/fields/Input/Input.d.ts +2 -2
  210. package/dist/components/fields/Input/Input.js +2 -2
  211. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  212. package/dist/components/fields/ListBox/ListBox.d.ts +10 -4
  213. package/dist/components/fields/ListBox/ListBox.js +298 -146
  214. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  215. package/dist/components/fields/ListBox/optionId.js +1 -1
  216. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +150 -139
  217. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  218. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  219. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  220. package/dist/components/fields/NumberInput/NumberInput.d.ts +6 -1
  221. package/dist/components/fields/NumberInput/NumberInput.js +136 -128
  222. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  223. package/dist/components/fields/NumberInput/StepButton.js +38 -48
  224. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  225. package/dist/components/fields/PasswordInput/PasswordInput.d.ts +1 -2
  226. package/dist/components/fields/PasswordInput/PasswordInput.js +77 -111
  227. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  228. package/dist/components/fields/Picker/Picker.d.ts +1 -1
  229. package/dist/components/fields/Picker/Picker.js +22 -8
  230. package/dist/components/fields/Picker/Picker.js.map +1 -1
  231. package/dist/components/fields/RadioGroup/Radio.d.ts +12 -12
  232. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  233. package/dist/components/fields/RadioGroup/RadioGroup.js +2 -2
  234. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  235. package/dist/components/fields/RadioGroup/context.js +1 -1
  236. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -6
  237. package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
  238. package/dist/components/fields/SearchInput/SearchInput.d.ts +8 -3
  239. package/dist/components/fields/SearchInput/SearchInput.js +22 -34
  240. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  241. package/dist/components/fields/Select/Select.d.ts +12 -1
  242. package/dist/components/fields/Select/Select.js +365 -207
  243. package/dist/components/fields/Select/Select.js.map +1 -1
  244. package/dist/components/fields/Slider/Gradation.js +1 -1
  245. package/dist/components/fields/Slider/HueSlider.js +1 -1
  246. package/dist/components/fields/Slider/RangeSlider.js +3 -4
  247. package/dist/components/fields/Slider/RangeSlider.js.map +1 -1
  248. package/dist/components/fields/Slider/Slider.js +1 -1
  249. package/dist/components/fields/Slider/SliderBase.js +1 -1
  250. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  251. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  252. package/dist/components/fields/Slider/elements.js +1 -1
  253. package/dist/components/fields/Slider/index.js +1 -1
  254. package/dist/components/fields/Switch/Switch.js +1 -1
  255. package/dist/components/fields/TagInput/TagInput.js +2 -2
  256. package/dist/components/fields/TagInput/TagInput.js.map +1 -1
  257. package/dist/components/fields/TagInput/TagList.js +1 -1
  258. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  259. package/dist/components/fields/TagInput/useTagError.js +1 -1
  260. package/dist/components/fields/TextArea/TextArea.d.ts +0 -1
  261. package/dist/components/fields/TextArea/TextArea.js +49 -63
  262. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  263. package/dist/components/fields/TextInput/TextInput.d.ts +1 -1
  264. package/dist/components/fields/TextInput/TextInput.js +42 -46
  265. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  266. package/dist/components/fields/TextInput/TextInputBase.d.ts +6 -2
  267. package/dist/components/fields/TextInput/TextInputBase.js +32 -10
  268. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  269. package/dist/components/fields/TextInput/displayed-validation.js +50 -0
  270. package/dist/components/fields/TextInput/displayed-validation.js.map +1 -0
  271. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  272. package/dist/components/fields/TextInputMapper/TextInputMapper.js +20 -17
  273. package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
  274. package/dist/components/fields/TriggerActions.js +1 -1
  275. package/dist/components/fields/color/ColorPanel.js +3 -1
  276. package/dist/components/fields/color/ColorPanel.js.map +1 -1
  277. package/dist/components/fields/color/channels.js +1 -1
  278. package/dist/components/fields/color/color.js +1 -1
  279. package/dist/components/fields/color/context.js +1 -1
  280. package/dist/components/fields/index.d.ts +2 -2
  281. package/dist/components/fields/option-origin-press.js +78 -0
  282. package/dist/components/fields/option-origin-press.js.map +1 -0
  283. package/dist/components/form/FieldWrapper/FieldWrapper.d.ts +10 -8
  284. package/dist/components/form/FieldWrapper/FieldWrapper.js +214 -159
  285. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  286. package/dist/components/form/FieldWrapper/field-description.js +3 -3
  287. package/dist/components/form/FieldWrapper/field-description.js.map +1 -1
  288. package/dist/components/form/FieldWrapper/types.d.ts +4 -3
  289. package/dist/components/form/Form/Field.js +1 -1
  290. package/dist/components/form/Form/Form.js +1 -1
  291. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  292. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  293. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  294. package/dist/components/form/Form/SubmitError.js +1 -1
  295. package/dist/components/form/Form/backend.js +1 -1
  296. package/dist/components/form/Form/index.js +1 -1
  297. package/dist/components/form/Form/modern/actions.js +1 -1
  298. package/dist/components/form/Form/modern/context.js +1 -1
  299. package/dist/components/form/Form/modern/controller.js +1 -1
  300. package/dist/components/form/Form/modern/field-binding.js +1 -1
  301. package/dist/components/form/Form/modern/field.js +1 -1
  302. package/dist/components/form/Form/modern/react.js +1 -1
  303. package/dist/components/form/Form/modern/store.js +1 -1
  304. package/dist/components/form/Form/modern/validation.js +1 -1
  305. package/dist/components/form/Form/modern/values.js +1 -1
  306. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  307. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  308. package/dist/components/form/Form/use-field/use-field-props.js +21 -33
  309. package/dist/components/form/Form/use-field/use-field-props.js.map +1 -1
  310. package/dist/components/form/Form/use-field/use-field.js +1 -1
  311. package/dist/components/form/Form/use-form.js +1 -1
  312. package/dist/components/form/Form/validation.js +1 -1
  313. package/dist/components/form/Label.js +1 -1
  314. package/dist/components/form/field-chrome.js +4 -34
  315. package/dist/components/form/field-chrome.js.map +1 -1
  316. package/dist/components/form/legacy-tooltip.js +1 -1
  317. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  318. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  319. package/dist/components/form/validation/use-validation-props.js +1 -1
  320. package/dist/components/form/wrapper.d.ts +6 -17
  321. package/dist/components/form/wrapper.js +6 -14
  322. package/dist/components/form/wrapper.js.map +1 -1
  323. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  324. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  325. package/dist/components/layout/Flex.js +1 -1
  326. package/dist/components/layout/Flow.js +1 -1
  327. package/dist/components/layout/Grid.js +1 -1
  328. package/dist/components/layout/Panel.js +1 -1
  329. package/dist/components/layout/Prefix.js +1 -1
  330. package/dist/components/layout/ResizablePanel.js +1 -1
  331. package/dist/components/layout/Space.js +1 -1
  332. package/dist/components/layout/Suffix.js +1 -1
  333. package/dist/components/navigation/Pagination/Pagination.js +3 -1
  334. package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
  335. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  336. package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
  337. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  338. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  339. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  340. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  341. package/dist/components/navigation/Tabs/TabPicker.js +2 -1
  342. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  343. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  344. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  345. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  346. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  347. package/dist/components/navigation/Tabs/styled.js +1 -1
  348. package/dist/components/navigation/Tabs/types.js +1 -1
  349. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  350. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  351. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  352. package/dist/components/other/Calendar/Calendar.js +1 -1
  353. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  354. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  355. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  356. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  357. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  358. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  359. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  360. package/dist/components/other/Calendar/styled.js +1 -1
  361. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  362. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  363. package/dist/components/overlays/AlertDialog/AlertDialog.d.ts +6 -1
  364. package/dist/components/overlays/AlertDialog/AlertDialog.js +3 -2
  365. package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
  366. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +3 -2
  367. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js.map +1 -1
  368. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  369. package/dist/components/overlays/Dialog/Dialog.js +28 -14
  370. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  371. package/dist/components/overlays/Dialog/DialogContainer.d.ts +4 -2
  372. package/dist/components/overlays/Dialog/DialogContainer.js +40 -34
  373. package/dist/components/overlays/Dialog/DialogContainer.js.map +1 -1
  374. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  375. package/dist/components/overlays/Dialog/DialogTrigger.d.ts +7 -3
  376. package/dist/components/overlays/Dialog/DialogTrigger.js +149 -132
  377. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  378. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  379. package/dist/components/overlays/Dialog/context.js +1 -1
  380. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  381. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  382. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  383. package/dist/components/overlays/Dialog/use-dialog-open-sync.js +83 -0
  384. package/dist/components/overlays/Dialog/use-dialog-open-sync.js.map +1 -0
  385. package/dist/components/overlays/Modal/Modal.js +1 -1
  386. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  387. package/dist/components/overlays/Modal/Overlay.js +9 -3
  388. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  389. package/dist/components/overlays/Modal/Popover.d.ts +1 -1
  390. package/dist/components/overlays/Modal/Popover.js +31 -29
  391. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  392. package/dist/components/overlays/Modal/Tray.js +69 -60
  393. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  394. package/dist/components/overlays/Modal/Underlay.js +1 -1
  395. package/dist/components/overlays/Modal/index.d.ts +1 -1
  396. package/dist/components/overlays/Modal/modal-containment.js +1 -1
  397. package/dist/components/overlays/Notifications/Notification.js +1 -1
  398. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  399. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  400. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  401. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  402. package/dist/components/overlays/Notifications/OverlayContainer.js +18 -32
  403. package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
  404. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  405. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  406. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  407. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  408. package/dist/components/overlays/Notifications/index.js +1 -1
  409. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  410. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  411. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  412. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  413. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  414. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  415. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  416. package/dist/components/overlays/Toast/index.js +1 -1
  417. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  418. package/dist/components/overlays/Toast/useToast.js +1 -1
  419. package/dist/components/overlays/Tooltip/Tooltip.d.ts +8 -0
  420. package/dist/components/overlays/Tooltip/Tooltip.js +16 -22
  421. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  422. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  423. package/dist/components/overlays/Tooltip/TooltipTrigger.d.ts +1 -1
  424. package/dist/components/overlays/Tooltip/TooltipTrigger.js +163 -113
  425. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  426. package/dist/components/overlays/Tooltip/context.js +1 -1
  427. package/dist/components/overlays/Tooltip/context.js.map +1 -1
  428. package/dist/components/overlays/Tooltip/split-trigger-props.js +6 -5
  429. package/dist/components/overlays/Tooltip/split-trigger-props.js.map +1 -1
  430. package/dist/components/portal/Portal.js +1 -1
  431. package/dist/components/portal/PortalProvider.js +1 -1
  432. package/dist/components/portal/usePortal.js +1 -1
  433. package/dist/components/shared/DraggableCollection.js +1 -1
  434. package/dist/components/shared/InvalidIcon.js +1 -1
  435. package/dist/components/shared/ValidIcon.js +1 -1
  436. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  437. package/dist/components/status/Spin/Cube.js +1 -1
  438. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  439. package/dist/components/status/Spin/Spin.js +1 -1
  440. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  441. package/dist/data/item-themes.js +1 -1
  442. package/dist/data/themes.js +1 -1
  443. package/dist/eslint-plugin/defaults.generated.js +11 -17
  444. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  445. package/dist/eslint-plugin/index.js +1 -1
  446. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  447. package/dist/i18n/I18nProvider.js +1 -1
  448. package/dist/i18n/createFormatter.js +1 -1
  449. package/dist/i18n/index.js +1 -1
  450. package/dist/i18n/instance.js +1 -1
  451. package/dist/i18n/locales/de-DE/uikit.js +6 -4
  452. package/dist/i18n/locales/en-US/uikit.js +6 -4
  453. package/dist/i18n/locales/en-US/uikit.json.d.ts +3 -1
  454. package/dist/i18n/locales/es-ES/uikit.js +6 -4
  455. package/dist/i18n/locales/es-MX/uikit.js +6 -4
  456. package/dist/i18n/locales/fr-FR/uikit.js +6 -4
  457. package/dist/i18n/locales/it-IT/uikit.js +6 -4
  458. package/dist/i18n/locales/ja-JP/uikit.js +6 -4
  459. package/dist/i18n/locales/nb-NO/uikit.js +6 -4
  460. package/dist/i18n/locales/pt-BR/uikit.js +6 -4
  461. package/dist/i18n/locales/pt-PT/uikit.js +6 -4
  462. package/dist/i18n/locales/sv-SE/uikit.js +6 -4
  463. package/dist/i18n/locales/vi-VN/uikit.js +6 -4
  464. package/dist/i18n/locales.js +1 -1
  465. package/dist/i18n/namespace.js +1 -1
  466. package/dist/i18n/useFormatter.js +1 -1
  467. package/dist/i18n/useI18n.js +1 -1
  468. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  469. package/dist/icons/AdjustmentsIcon.js +1 -1
  470. package/dist/icons/AiIcon.js +1 -1
  471. package/dist/icons/AreaChartIcon.js +1 -1
  472. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  473. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  474. package/dist/icons/BackwardIcon.js +1 -1
  475. package/dist/icons/BarChartIcon.js +1 -1
  476. package/dist/icons/BellFilledIcon.js +1 -1
  477. package/dist/icons/BellIcon.js +1 -1
  478. package/dist/icons/BooleanIcon.js +1 -1
  479. package/dist/icons/CalendarEditIcon.js +1 -1
  480. package/dist/icons/CalendarIcon.js +1 -1
  481. package/dist/icons/CaretDownIcon.js +1 -1
  482. package/dist/icons/CaretUpIcon.js +1 -1
  483. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  484. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  485. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  486. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  487. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  488. package/dist/icons/ChartBarLineIcon.js +1 -1
  489. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  490. package/dist/icons/ChartBarStackedIcon.js +1 -1
  491. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  492. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  493. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  494. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  495. package/dist/icons/ChartBubbleIcon.js +1 -1
  496. package/dist/icons/ChartDonut2Icon.js +1 -1
  497. package/dist/icons/ChartFunnelIcon.js +1 -1
  498. package/dist/icons/ChartHeatmapIcon.js +1 -1
  499. package/dist/icons/ChartKPIIcon.js +1 -1
  500. package/dist/icons/ChartPie2Icon.js +1 -1
  501. package/dist/icons/ChartScatterIcon.js +1 -1
  502. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  503. package/dist/icons/CheckCircleIcon.js +1 -1
  504. package/dist/icons/CheckIcon.js +1 -1
  505. package/dist/icons/CircleFilledIcon.js +1 -1
  506. package/dist/icons/ClearIcon.js +1 -1
  507. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  508. package/dist/icons/CloseCircleIcon.js +1 -1
  509. package/dist/icons/CloseIcon.js +1 -1
  510. package/dist/icons/CodeIcon.js +1 -1
  511. package/dist/icons/ColumnTotalIcon.js +1 -1
  512. package/dist/icons/CopyIcon.js +1 -1
  513. package/dist/icons/CountIcon.js +1 -1
  514. package/dist/icons/CubeIcon.js +1 -1
  515. package/dist/icons/CubePauseIcon.js +1 -1
  516. package/dist/icons/CubePlayIcon.js +1 -1
  517. package/dist/icons/CurrencyDollarIcon.js +1 -1
  518. package/dist/icons/DangerIcon.js +1 -1
  519. package/dist/icons/DashboardIcon.js +1 -1
  520. package/dist/icons/DatabaseIcon.js +1 -1
  521. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  522. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  523. package/dist/icons/DirectionIcon.js +1 -1
  524. package/dist/icons/DonutIcon.js +1 -1
  525. package/dist/icons/DownIcon.js +1 -1
  526. package/dist/icons/EditIcon.js +1 -1
  527. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  528. package/dist/icons/ExclamationCircleIcon.js +1 -1
  529. package/dist/icons/ExclamationIcon.js +1 -1
  530. package/dist/icons/EyeIcon.js +1 -1
  531. package/dist/icons/EyeInvisibleIcon.js +1 -1
  532. package/dist/icons/FilterIcon.js +1 -1
  533. package/dist/icons/FolderFilledIcon.js +1 -1
  534. package/dist/icons/FolderIcon.js +1 -1
  535. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  536. package/dist/icons/FolderOpenIcon.js +1 -1
  537. package/dist/icons/ForwardIcon.js +1 -1
  538. package/dist/icons/GripVerticalIcon.js +1 -1
  539. package/dist/icons/HierarchyIcon.js +1 -1
  540. package/dist/icons/HierarchyOpenIcon.js +1 -1
  541. package/dist/icons/Icon.js +1 -1
  542. package/dist/icons/InfoCircleIcon.js +1 -1
  543. package/dist/icons/InfoIcon.js +1 -1
  544. package/dist/icons/KeyIcon.js +1 -1
  545. package/dist/icons/LeftIcon.js +1 -1
  546. package/dist/icons/LineChartIcon.js +1 -1
  547. package/dist/icons/LoadingIcon.js +1 -1
  548. package/dist/icons/LockFilledIcon.js +1 -1
  549. package/dist/icons/LockIcon.js +1 -1
  550. package/dist/icons/MoreIcon.js +1 -1
  551. package/dist/icons/NotAllowedIcon.js +1 -1
  552. package/dist/icons/Number123Icon.js +1 -1
  553. package/dist/icons/NumberIcon.js +1 -1
  554. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  555. package/dist/icons/PauseCircleIcon.js +1 -1
  556. package/dist/icons/PauseIcon.js +1 -1
  557. package/dist/icons/PercentageIcon.js +1 -1
  558. package/dist/icons/PieChartIcon.js +1 -1
  559. package/dist/icons/PipetteIcon.js +1 -1
  560. package/dist/icons/PlayCircleIcon.js +1 -1
  561. package/dist/icons/PlayIcon.js +1 -1
  562. package/dist/icons/PlusIcon.js +1 -1
  563. package/dist/icons/ProgressBarIcon.js +1 -1
  564. package/dist/icons/ReloadIcon.js +1 -1
  565. package/dist/icons/ReportIcon.js +1 -1
  566. package/dist/icons/ReturnIcon.js +1 -1
  567. package/dist/icons/RightIcon.js +1 -1
  568. package/dist/icons/RowTotalsIcon.js +1 -1
  569. package/dist/icons/SchemeIcon.js +1 -1
  570. package/dist/icons/SearchIcon.js +1 -1
  571. package/dist/icons/SemanticQueryIcon.js +1 -1
  572. package/dist/icons/SettingsIcon.js +1 -1
  573. package/dist/icons/ShieldFilledIcon.js +1 -1
  574. package/dist/icons/ShieldIcon.js +1 -1
  575. package/dist/icons/SlashIcon.js +1 -1
  576. package/dist/icons/SparklesIcon.js +1 -1
  577. package/dist/icons/SqlIcon.js +1 -1
  578. package/dist/icons/StatsIcon.js +1 -1
  579. package/dist/icons/StopIcon.js +1 -1
  580. package/dist/icons/StringIcon.js +1 -1
  581. package/dist/icons/SubtotalsIcon.js +1 -1
  582. package/dist/icons/SwitchIcon.js +1 -1
  583. package/dist/icons/TableIcon.js +1 -1
  584. package/dist/icons/ThumbsDownIcon.js +1 -1
  585. package/dist/icons/ThumbsUpIcon.js +1 -1
  586. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  587. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  588. package/dist/icons/ThunderboltIcon.js +1 -1
  589. package/dist/icons/TimeIcon.js +1 -1
  590. package/dist/icons/TrashIcon.js +1 -1
  591. package/dist/icons/UnlockIcon.js +1 -1
  592. package/dist/icons/UpIcon.js +1 -1
  593. package/dist/icons/UserGroupIcon.js +1 -1
  594. package/dist/icons/UserIcon.js +1 -1
  595. package/dist/icons/UserLockIcon.js +1 -1
  596. package/dist/icons/ViewIcon.js +1 -1
  597. package/dist/icons/WarningFilledIcon.js +1 -1
  598. package/dist/icons/WarningIcon.js +1 -1
  599. package/dist/icons/wrap-icon.js +1 -1
  600. package/dist/index.d.ts +1 -1
  601. package/dist/index.js +2 -2
  602. package/dist/probe/canonicalize.js +1 -1
  603. package/dist/probe/css.js +1 -1
  604. package/dist/probe/index.js +1 -1
  605. package/dist/provider.js +1 -1
  606. package/dist/providers/TrackingProvider.js +1 -1
  607. package/dist/providers/navigation-url.js +15 -3
  608. package/dist/providers/navigation-url.js.map +1 -1
  609. package/dist/providers/navigationAdapter.default.js +1 -1
  610. package/dist/providers/use-navigation.js +1 -1
  611. package/dist/shared/form.d.ts +11 -12
  612. package/dist/tokens/all-tokens.js +1 -1
  613. package/dist/tokens/base.js +1 -1
  614. package/dist/tokens/color-seed.js +1 -1
  615. package/dist/tokens/color-theme.js +1 -1
  616. package/dist/tokens/colors.js +1 -1
  617. package/dist/tokens/layout.js +1 -1
  618. package/dist/tokens/lazy-styles.js +1 -1
  619. package/dist/tokens/legacy-color.js +1 -1
  620. package/dist/tokens/palette-config.js +1 -1
  621. package/dist/tokens/palette.js +1 -1
  622. package/dist/tokens/resolve.js +1 -1
  623. package/dist/tokens/shadows.js +1 -1
  624. package/dist/tokens/sizes.js +1 -1
  625. package/dist/tokens/spacing.js +1 -1
  626. package/dist/tokens/typography.js +1 -1
  627. package/dist/utils/ResizeSensor.js +1 -1
  628. package/dist/utils/colors.js +1 -1
  629. package/dist/utils/dotize.js +1 -1
  630. package/dist/utils/is-dev-env.js +1 -1
  631. package/dist/utils/modules.js +1 -1
  632. package/dist/utils/promise.js +1 -1
  633. package/dist/utils/raf.js +1 -1
  634. package/dist/utils/random.js +1 -1
  635. package/dist/utils/range.js +1 -1
  636. package/dist/utils/react/RenderCache.js +1 -1
  637. package/dist/utils/react/Slots.js +1 -1
  638. package/dist/utils/react/chain.js +1 -1
  639. package/dist/utils/react/disabledProps.js +1 -1
  640. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  641. package/dist/utils/react/index.js +1 -1
  642. package/dist/utils/react/interactions.js +1 -1
  643. package/dist/utils/react/isTextOnly.js +1 -1
  644. package/dist/utils/react/mapProps.js +1 -1
  645. package/dist/utils/react/mergeProps.js +1 -1
  646. package/dist/utils/react/nullableValue.js +18 -9
  647. package/dist/utils/react/nullableValue.js.map +1 -1
  648. package/dist/utils/react/overlayKeyPropagation.js +1 -1
  649. package/dist/utils/react/programmaticFocus.js +1 -1
  650. package/dist/utils/react/resolveIcon.js +1 -1
  651. package/dist/utils/react/sharedStore.js +1 -1
  652. package/dist/utils/react/useBufferedValue.js +1 -1
  653. package/dist/utils/react/useCombinedRefs.js +1 -1
  654. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  655. package/dist/utils/react/useEventBus.js +1 -1
  656. package/dist/utils/react/useId.js +1 -1
  657. package/dist/utils/react/useIsDarwin.js +1 -1
  658. package/dist/utils/react/useKeySymbols.js +1 -1
  659. package/dist/utils/react/useLayoutEffect.js +1 -1
  660. package/dist/utils/react/useLocalStorage.js +1 -1
  661. package/dist/utils/react/useMergeStyles.js +1 -1
  662. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  663. package/dist/utils/react/usePopoverSync.js +1 -1
  664. package/dist/utils/react/useQaProps.js +1 -1
  665. package/dist/utils/react/useScheme.js +1 -1
  666. package/dist/utils/react/useViewportSize.js +1 -1
  667. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  668. package/dist/utils/selection.js +1 -1
  669. package/dist/utils/styles.js +1 -1
  670. package/dist/utils/tree.js +1 -1
  671. package/dist/utils/warnings.js +1 -1
  672. package/dist/version.js +2 -2
  673. package/docs/ComplexLayout.md +1 -1
  674. package/docs/CreateComponent.md +6 -0
  675. package/docs/FieldProperties.md +31 -6
  676. package/docs/Theming.md +2 -1
  677. package/docs/Usage.md +6 -0
  678. package/docs/components/Root.md +1 -1
  679. package/docs/components/actions/Button.md +8 -2
  680. package/docs/components/actions/ButtonSplit.md +27 -1
  681. package/docs/components/actions/Link.md +1 -1
  682. package/docs/components/actions/Menu.md +4 -2
  683. package/docs/components/content/InfoBadge.md +2 -0
  684. package/docs/components/content/ItemBadge.md +4 -0
  685. package/docs/components/content/Layout.md +41 -6
  686. package/docs/components/fields/ComboBox.md +30 -19
  687. package/docs/components/fields/FilterListBox.md +2 -2
  688. package/docs/components/fields/FilterPicker.md +2 -2
  689. package/docs/components/fields/ListBox.md +14 -10
  690. package/docs/components/fields/NumberInput.md +20 -11
  691. package/docs/components/fields/PasswordInput.md +6 -7
  692. package/docs/components/fields/Picker.md +6 -5
  693. package/docs/components/fields/RadioGroup.md +1 -1
  694. package/docs/components/fields/SearchInput.md +7 -6
  695. package/docs/components/fields/Select.md +14 -8
  696. package/docs/components/fields/TagInput.md +8 -1
  697. package/docs/components/fields/TextArea.md +4 -3
  698. package/docs/components/fields/TextInput.md +13 -6
  699. package/docs/components/overlays/AlertDialog.md +7 -1
  700. package/docs/components/overlays/Dialog.md +5 -5
  701. package/docs/components/overlays/DialogContainer.md +26 -10
  702. package/docs/components/overlays/DialogTrigger.md +6 -6
  703. package/docs/components/overlays/Tooltip.md +17 -6
  704. package/docs/components/overlays/TooltipTrigger.md +2 -0
  705. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","names":["useControlledState","filterBaseProps","OUTER_STYLES","tasty","forwardRef","useEvent","useFormatter","useI18n","BackwardIcon","ForwardIcon","LeftIcon","RightIcon","extractStyles","Button","Select","clampPage","getPageInfo","getPaginationRange","ForwardedRef","ReactElement","CubePaginationProps","CubeTablePageInfo","PaginationElement","qa","as","styles","display","flow","gap","placeItems","placeContent","Summary","preset","color","whiteSpace","Controls","Gap","width","height","userSelect","Pages","styleProps","NavButton","type","border","PageButton","formatRange","info","start","page","pageSize","end","total","Math","min","Pagination","props","ref","$","_c","pageProp","defaultPage","onPageChange","totalPages","totalPagesProp","pageSizeProp","defaultPageSize","pageSizeOptions","onPageSizeChange","t0","siblingCount","t1","boundaryCount","t2","size","t3","isDisabled","hasNextPage","isCompact","t4","summary","t5","labelFormatter","ariaLabel","pageSizeSelectStyles","mods","rest","undefined","t","formatNumber","setPageSize","v","setPage","isCountable","Number","MAX_SAFE_INTEGER","from","to","goTo","next","clamped","max","t6","value","onPageSizeSelectionChange","t7","value_0","onPageSelectionChange","pageItems","selectEntries","Array","length","_temp","isFirst","isLast","t8","summaryNode","renderPageControl","String","map","entry","entryInfo","label","entry_0","index","showEdgeButtons","t9","eventProps","t10","t11","t12","option","label_0","t13","t14","Symbol","for","t15","t16","t17","t18","t19","t20","t21","t22","_","i","_Pagination","displayName"],"sources":["../../../../src/components/navigation/Pagination/Pagination.tsx"],"sourcesContent":["import { useControlledState } from '@react-stately/utils';\nimport { filterBaseProps, OUTER_STYLES, tasty } from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useFormatter, useI18n } from '../../../i18n';\nimport { BackwardIcon } from '../../../icons/BackwardIcon';\nimport { ForwardIcon } from '../../../icons/ForwardIcon';\nimport { LeftIcon } from '../../../icons/LeftIcon';\nimport { RightIcon } from '../../../icons/RightIcon';\nimport { extractStyles } from '../../../utils/styles';\nimport { Button } from '../../actions';\nimport { Select } from '../../fields/Select';\n\nimport { clampPage, getPageInfo, getPaginationRange } from './use-pagination';\n\nimport type { ForwardedRef, ReactElement } from 'react';\nimport type { CubePaginationProps, CubeTablePageInfo } from './types';\n\nconst PaginationElement = tasty({\n qa: 'Pagination',\n as: 'nav',\n styles: {\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n placeContent: 'start',\n\n Summary: {\n // Follows the control's size rather than being fixed, so the summary\n // matches whatever the buttons beside it are.\n preset: { '': 't3', 'size=xsmall': 't4' },\n color: '#dark-03',\n whiteSpace: 'nowrap',\n },\n\n Controls: {\n display: 'flex',\n flow: 'row',\n gap: '.5x',\n placeItems: 'center',\n },\n\n Gap: {\n display: 'grid',\n placeItems: 'center',\n width: 'min $gap-size',\n height: '$gap-size',\n preset: 't3',\n color: '#dark-04',\n userSelect: 'none',\n },\n\n /**\n * The page numbers sit tighter than the nav buttons around them: they read\n * as one run of pages, not as separate controls, and a hairline is enough\n * to keep the current page's outline off its neighbours.\n */\n Pages: {\n display: 'flex',\n flow: 'row',\n gap: '1bw',\n placeItems: 'center',\n },\n\n '$gap-size': {\n '': '$size-sm',\n 'size=xsmall': '$size-xs',\n 'size=medium': '$size-md',\n },\n },\n styleProps: OUTER_STYLES,\n});\n\nconst NavButton = tasty(Button, {\n type: 'clear',\n styles: { border: true },\n});\n\n// Page buttons are borderless so the current page — which renders as `outline`\n// and therefore draws its own border — is the only bordered one in the run.\nconst PageButton = tasty(Button, {\n type: 'clear',\n});\n\nfunction formatRange(info: CubeTablePageInfo): string {\n const start = (info.page - 1) * info.pageSize + 1;\n const end =\n info.total > 0\n ? Math.min(info.page * info.pageSize, info.total)\n : info.page * info.pageSize;\n\n return `${start}–${end}`;\n}\n\nfunction Pagination(\n props: CubePaginationProps,\n ref: ForwardedRef<HTMLElement>,\n): ReactElement {\n const {\n page: pageProp,\n defaultPage,\n onPageChange,\n totalPages: totalPagesProp,\n total,\n pageSize: pageSizeProp,\n defaultPageSize,\n pageSizeOptions,\n onPageSizeChange,\n type = 'numbers',\n siblingCount = 1,\n boundaryCount = 1,\n size = 'small',\n isDisabled,\n hasNextPage,\n isCompact = false,\n summary = false,\n labelFormatter,\n ariaLabel,\n pageSizeSelectStyles,\n qa,\n mods,\n ...rest\n } = props;\n\n const { t } = useI18n();\n const { formatNumber } = useFormatter();\n\n const [pageSize, setPageSize] = useControlledState<number>(\n pageSizeProp as number,\n defaultPageSize ?? 50,\n onPageSizeChange as (v: number) => void,\n );\n const [page, setPage] = useControlledState<number>(\n pageProp as number,\n defaultPage ?? 1,\n onPageChange as (v: number) => void,\n );\n\n // Unknown total: prev/next only, with `hasNextPage` driving the next button.\n // The page must NOT be clamped in that mode — there is nothing to clamp to.\n const isCountable = totalPagesProp != null || total != null;\n\n const info: CubeTablePageInfo = isCountable\n ? getPageInfo({\n page,\n pageSize,\n total: total ?? 0,\n totalPages: totalPagesProp,\n })\n : {\n page: clampPage(page, Number.MAX_SAFE_INTEGER),\n pageSize,\n totalPages: 0,\n total: 0,\n from: 0,\n to: 0,\n };\n\n const { totalPages } = info;\n\n const goTo = useEvent((next: number) => {\n const clamped = isCountable\n ? clampPage(next, totalPages)\n : Math.max(next, 1);\n\n if (clamped !== info.page) setPage(clamped);\n });\n\n const onPageSizeSelectionChange = useEvent((value: any) => {\n setPageSize(Number(value));\n setPage(1);\n });\n\n const onPageSelectionChange = useEvent((value: any) => {\n goTo(Number(value));\n });\n\n const pageItems =\n type === 'numbers' && isCountable\n ? getPaginationRange({\n page: info.page,\n totalPages,\n siblingCount,\n boundaryCount,\n })\n : [];\n\n // `type=\"select\"` materializes one entry per page, so it is only safe for\n // small page counts. Above the cap we fall back to `compact`, which reads the\n // same but renders a single label.\n const selectEntries =\n type === 'select' && isCountable && totalPages <= 200\n ? Array.from({ length: totalPages }, (_, i) => i + 1)\n : null;\n\n const isFirst = info.page <= 1;\n const isLast = isCountable ? info.page >= totalPages : !hasNextPage;\n\n const styles = extractStyles(props, OUTER_STYLES);\n\n const summaryNode =\n summary === false\n ? null\n : typeof summary === 'function'\n ? summary(info)\n : info.total > 0\n ? // Numbers are formatted here rather than left to i18next, which\n // interpolates them raw (\"1204\", not \"1,204\").\n t('pagination.summary', '{{from}}–{{to}} of {{total}}', {\n from: formatNumber(info.from),\n to: formatNumber(info.to),\n total: formatNumber(info.total),\n })\n : null;\n\n function renderPageControl() {\n if (selectEntries) {\n return (\n <Select\n qa=\"PaginationPageSelect\"\n size={size}\n isDisabled={isDisabled}\n aria-label={t('pagination.selectPage', 'Select page')}\n selectedKey={String(info.page)}\n width=\"min 15x\"\n styles={pageSizeSelectStyles}\n onSelectionChange={onPageSelectionChange}\n >\n {selectEntries.map((entry) => {\n const entryInfo = { ...info, page: entry };\n const label =\n labelFormatter?.(entryInfo) ??\n (info.total > 0\n ? formatRange(entryInfo)\n : t('pagination.page', 'Page {{page}}', { page: entry }));\n\n return (\n <Select.Item key={entry} textValue={String(label)}>\n {label}\n </Select.Item>\n );\n })}\n </Select>\n );\n }\n\n if (type === 'numbers' && pageItems.length > 0) {\n return (\n <div data-element=\"Pages\">\n {pageItems.map((entry, index) =>\n entry === 'gap' ? (\n <div key={`gap-${index}`} data-element=\"Gap\" aria-hidden=\"true\">\n {'…'}\n </div>\n ) : (\n <PageButton\n key={entry}\n qa={`PaginationPage_${entry}`}\n size={size}\n type={entry === info.page ? 'outline' : 'clear'}\n isDisabled={isDisabled}\n aria-label={t('pagination.page', 'Page {{page}}', {\n page: entry,\n })}\n aria-current={entry === info.page ? 'page' : undefined}\n onPress={() => goTo(entry)}\n >\n {entry}\n </PageButton>\n ),\n )}\n </div>\n );\n }\n\n if (!isCountable) return null;\n\n return (\n <div data-element=\"Summary\" data-qa=\"PaginationPageLabel\">\n {t('pagination.pageOf', '{{page}} of {{totalPages}}', {\n page: info.page,\n totalPages,\n })}\n </div>\n );\n }\n\n const showEdgeButtons = !isCompact && isCountable;\n\n return (\n <PaginationElement\n {...filterBaseProps(rest, { eventProps: true })}\n ref={ref}\n qa={qa || 'Pagination'}\n styles={styles}\n mods={{ size, ...mods }}\n aria-label={ariaLabel ?? t('pagination.ariaLabel', 'Pagination')}\n >\n {summaryNode ? <div data-element=\"Summary\">{summaryNode}</div> : null}\n\n {pageSizeOptions && onPageSizeChange ? (\n <Select\n qa=\"PaginationPageSizeSelect\"\n size={size}\n isDisabled={isDisabled}\n aria-label={t('pagination.itemsPerPage', 'Items per page')}\n selectedKey={String(pageSize)}\n styles={pageSizeSelectStyles}\n onSelectionChange={onPageSizeSelectionChange}\n >\n {pageSizeOptions.map((option) => {\n const label = t(\n 'pagination.itemsPerPageOption',\n '{{size}} / page',\n {\n size: option,\n },\n );\n\n return (\n <Select.Item key={option} textValue={label}>\n {label}\n </Select.Item>\n );\n })}\n </Select>\n ) : null}\n\n <div data-element=\"Controls\">\n {showEdgeButtons ? (\n <NavButton\n qa=\"PaginationFirstButton\"\n size={size}\n icon={<BackwardIcon />}\n isDisabled={isFirst || isDisabled}\n aria-label={t('pagination.firstPage', 'First page')}\n onPress={() => goTo(1)}\n />\n ) : null}\n\n <NavButton\n qa=\"PaginationPrevButton\"\n size={size}\n icon={<LeftIcon />}\n isDisabled={isFirst || isDisabled}\n aria-label={t('pagination.previousPage', 'Previous page')}\n onPress={() => goTo(info.page - 1)}\n />\n\n {renderPageControl()}\n\n <NavButton\n qa=\"PaginationNextButton\"\n size={size}\n icon={<RightIcon />}\n isDisabled={isLast || isDisabled}\n aria-label={t('pagination.nextPage', 'Next page')}\n onPress={() => goTo(info.page + 1)}\n />\n\n {showEdgeButtons ? (\n <NavButton\n qa=\"PaginationLastButton\"\n size={size}\n icon={<ForwardIcon />}\n isDisabled={isLast || isDisabled}\n aria-label={t('pagination.lastPage', 'Last page')}\n onPress={() => goTo(totalPages)}\n />\n ) : null}\n </div>\n </PaginationElement>\n );\n}\n\nconst _Pagination = forwardRef(Pagination);\n\n_Pagination.displayName = 'Pagination';\n\nexport { _Pagination as Pagination };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Pagination.js","names":["useControlledState","filterBaseProps","OUTER_STYLES","tasty","forwardRef","useEvent","useFormatter","useI18n","BackwardIcon","ForwardIcon","LeftIcon","RightIcon","extractStyles","Button","Select","clampPage","getPageInfo","getPaginationRange","ForwardedRef","ReactElement","CubePaginationProps","CubeTablePageInfo","PaginationElement","qa","as","styles","display","flow","gap","placeItems","placeContent","Summary","preset","color","whiteSpace","Controls","Gap","width","height","userSelect","Pages","styleProps","NavButton","type","border","PageButton","formatRange","info","start","page","pageSize","end","total","Math","min","Pagination","props","ref","$","_c","pageProp","defaultPage","onPageChange","totalPages","totalPagesProp","pageSizeProp","defaultPageSize","pageSizeOptions","onPageSizeChange","t0","siblingCount","t1","boundaryCount","t2","size","t3","isDisabled","hasNextPage","isCompact","t4","summary","t5","labelFormatter","ariaLabel","pageSizeSelectStyles","mods","rest","undefined","t","formatNumber","setPageSize","v","setPage","isCountable","Number","MAX_SAFE_INTEGER","from","to","goTo","next","clamped","max","t6","value","onPageSizeSelectionChange","t7","value_0","onPageSelectionChange","pageItems","selectEntries","Array","length","_temp","isFirst","isLast","t8","summaryNode","renderPageControl","String","map","entry","entryInfo","label","entry_0","index","showEdgeButtons","t9","eventProps","t10","t11","t12","option","label_0","t13","t14","Symbol","for","t15","t16","t17","t18","t19","t20","t21","t22","_","i","_Pagination","displayName"],"sources":["../../../../src/components/navigation/Pagination/Pagination.tsx"],"sourcesContent":["import { useControlledState } from '@react-stately/utils';\nimport { filterBaseProps, OUTER_STYLES, tasty } from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useFormatter, useI18n } from '../../../i18n';\nimport { BackwardIcon } from '../../../icons/BackwardIcon';\nimport { ForwardIcon } from '../../../icons/ForwardIcon';\nimport { LeftIcon } from '../../../icons/LeftIcon';\nimport { RightIcon } from '../../../icons/RightIcon';\nimport { extractStyles } from '../../../utils/styles';\nimport { Button } from '../../actions';\nimport { Select } from '../../fields/Select';\n\nimport { clampPage, getPageInfo, getPaginationRange } from './use-pagination';\n\nimport type { ForwardedRef, ReactElement } from 'react';\nimport type { CubePaginationProps, CubeTablePageInfo } from './types';\n\nconst PaginationElement = tasty({\n qa: 'Pagination',\n as: 'nav',\n styles: {\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n placeContent: 'start',\n\n Summary: {\n // Follows the control's size rather than being fixed, so the summary\n // matches whatever the buttons beside it are.\n preset: { '': 't3', 'size=xsmall': 't4' },\n color: '#dark-03',\n whiteSpace: 'nowrap',\n },\n\n Controls: {\n display: 'flex',\n flow: 'row',\n gap: '.5x',\n placeItems: 'center',\n },\n\n Gap: {\n display: 'grid',\n placeItems: 'center',\n width: 'min $gap-size',\n height: '$gap-size',\n preset: 't3',\n color: '#dark-04',\n userSelect: 'none',\n },\n\n /**\n * The page numbers sit tighter than the nav buttons around them: they read\n * as one run of pages, not as separate controls, and a hairline is enough\n * to keep the current page's outline off its neighbours.\n */\n Pages: {\n display: 'flex',\n flow: 'row',\n gap: '1bw',\n placeItems: 'center',\n },\n\n '$gap-size': {\n '': '$size-sm',\n 'size=xsmall': '$size-xs',\n 'size=medium': '$size-md',\n },\n },\n styleProps: OUTER_STYLES,\n});\n\nconst NavButton = tasty(Button, {\n type: 'clear',\n styles: { border: true },\n});\n\n// Page buttons are borderless so the current page — which renders as `outline`\n// and therefore draws its own border — is the only bordered one in the run.\nconst PageButton = tasty(Button, {\n type: 'clear',\n});\n\nfunction formatRange(info: CubeTablePageInfo): string {\n const start = (info.page - 1) * info.pageSize + 1;\n const end =\n info.total > 0\n ? Math.min(info.page * info.pageSize, info.total)\n : info.page * info.pageSize;\n\n return `${start}–${end}`;\n}\n\nfunction Pagination(\n props: CubePaginationProps,\n ref: ForwardedRef<HTMLElement>,\n): ReactElement {\n const {\n page: pageProp,\n defaultPage,\n onPageChange,\n totalPages: totalPagesProp,\n total,\n pageSize: pageSizeProp,\n defaultPageSize,\n pageSizeOptions,\n onPageSizeChange,\n type = 'numbers',\n siblingCount = 1,\n boundaryCount = 1,\n size = 'small',\n isDisabled,\n hasNextPage,\n isCompact = false,\n summary = false,\n labelFormatter,\n ariaLabel,\n pageSizeSelectStyles,\n qa,\n mods,\n ...rest\n } = props;\n\n const { t } = useI18n();\n const { formatNumber } = useFormatter();\n\n const [pageSize, setPageSize] = useControlledState<number>(\n pageSizeProp as number,\n defaultPageSize ?? 50,\n onPageSizeChange as (v: number) => void,\n );\n const [page, setPage] = useControlledState<number>(\n pageProp as number,\n defaultPage ?? 1,\n onPageChange as (v: number) => void,\n );\n\n // Unknown total: prev/next only, with `hasNextPage` driving the next button.\n // The page must NOT be clamped in that mode — there is nothing to clamp to.\n const isCountable = totalPagesProp != null || total != null;\n\n const info: CubeTablePageInfo = isCountable\n ? getPageInfo({\n page,\n pageSize,\n total: total ?? 0,\n totalPages: totalPagesProp,\n })\n : {\n page: clampPage(page, Number.MAX_SAFE_INTEGER),\n pageSize,\n totalPages: 0,\n total: 0,\n from: 0,\n to: 0,\n };\n\n const { totalPages } = info;\n\n const goTo = useEvent((next: number) => {\n const clamped = isCountable\n ? clampPage(next, totalPages)\n : Math.max(next, 1);\n\n if (clamped !== info.page) setPage(clamped);\n });\n\n const onPageSizeSelectionChange = useEvent((value: any) => {\n setPageSize(Number(value));\n setPage(1);\n });\n\n const onPageSelectionChange = useEvent((value: any) => {\n goTo(Number(value));\n });\n\n const pageItems =\n type === 'numbers' && isCountable\n ? getPaginationRange({\n page: info.page,\n totalPages,\n siblingCount,\n boundaryCount,\n })\n : [];\n\n // `type=\"select\"` materializes one entry per page, so it is only safe for\n // small page counts. Above the cap we fall back to `compact`, which reads the\n // same but renders a single label.\n const selectEntries =\n type === 'select' && isCountable && totalPages <= 200\n ? Array.from({ length: totalPages }, (_, i) => i + 1)\n : null;\n\n const isFirst = info.page <= 1;\n const isLast = isCountable ? info.page >= totalPages : !hasNextPage;\n\n const styles = extractStyles(props, OUTER_STYLES);\n\n const summaryNode =\n summary === false\n ? null\n : typeof summary === 'function'\n ? summary(info)\n : info.total > 0\n ? // Numbers are formatted here rather than left to i18next, which\n // interpolates them raw (\"1204\", not \"1,204\").\n t('pagination.summary', '{{from}}–{{to}} of {{total}}', {\n from: formatNumber(info.from),\n to: formatNumber(info.to),\n total: formatNumber(info.total),\n })\n : null;\n\n function renderPageControl() {\n if (selectEntries) {\n return (\n <Select\n isBare\n qa=\"PaginationPageSelect\"\n size={size}\n isDisabled={isDisabled}\n aria-label={t('pagination.selectPage', 'Select page')}\n selectedKey={String(info.page)}\n width=\"min 15x\"\n styles={pageSizeSelectStyles}\n onSelectionChange={onPageSelectionChange}\n >\n {selectEntries.map((entry) => {\n const entryInfo = { ...info, page: entry };\n const label =\n labelFormatter?.(entryInfo) ??\n (info.total > 0\n ? formatRange(entryInfo)\n : t('pagination.page', 'Page {{page}}', { page: entry }));\n\n return (\n <Select.Item key={entry} textValue={String(label)}>\n {label}\n </Select.Item>\n );\n })}\n </Select>\n );\n }\n\n if (type === 'numbers' && pageItems.length > 0) {\n return (\n <div data-element=\"Pages\">\n {pageItems.map((entry, index) =>\n entry === 'gap' ? (\n <div key={`gap-${index}`} data-element=\"Gap\" aria-hidden=\"true\">\n {'…'}\n </div>\n ) : (\n <PageButton\n key={entry}\n qa={`PaginationPage_${entry}`}\n size={size}\n type={entry === info.page ? 'outline' : 'clear'}\n isDisabled={isDisabled}\n aria-label={t('pagination.page', 'Page {{page}}', {\n page: entry,\n })}\n aria-current={entry === info.page ? 'page' : undefined}\n onPress={() => goTo(entry)}\n >\n {entry}\n </PageButton>\n ),\n )}\n </div>\n );\n }\n\n if (!isCountable) return null;\n\n return (\n <div data-element=\"Summary\" data-qa=\"PaginationPageLabel\">\n {t('pagination.pageOf', '{{page}} of {{totalPages}}', {\n page: info.page,\n totalPages,\n })}\n </div>\n );\n }\n\n const showEdgeButtons = !isCompact && isCountable;\n\n return (\n <PaginationElement\n {...filterBaseProps(rest, { eventProps: true })}\n ref={ref}\n qa={qa || 'Pagination'}\n styles={styles}\n mods={{ size, ...mods }}\n aria-label={ariaLabel ?? t('pagination.ariaLabel', 'Pagination')}\n >\n {summaryNode ? <div data-element=\"Summary\">{summaryNode}</div> : null}\n\n {pageSizeOptions && onPageSizeChange ? (\n <Select\n isBare\n qa=\"PaginationPageSizeSelect\"\n size={size}\n isDisabled={isDisabled}\n aria-label={t('pagination.itemsPerPage', 'Items per page')}\n selectedKey={String(pageSize)}\n styles={pageSizeSelectStyles}\n onSelectionChange={onPageSizeSelectionChange}\n >\n {pageSizeOptions.map((option) => {\n const label = t(\n 'pagination.itemsPerPageOption',\n '{{size}} / page',\n {\n size: option,\n },\n );\n\n return (\n <Select.Item key={option} textValue={label}>\n {label}\n </Select.Item>\n );\n })}\n </Select>\n ) : null}\n\n <div data-element=\"Controls\">\n {showEdgeButtons ? (\n <NavButton\n qa=\"PaginationFirstButton\"\n size={size}\n icon={<BackwardIcon />}\n isDisabled={isFirst || isDisabled}\n aria-label={t('pagination.firstPage', 'First page')}\n onPress={() => goTo(1)}\n />\n ) : null}\n\n <NavButton\n qa=\"PaginationPrevButton\"\n size={size}\n icon={<LeftIcon />}\n isDisabled={isFirst || isDisabled}\n aria-label={t('pagination.previousPage', 'Previous page')}\n onPress={() => goTo(info.page - 1)}\n />\n\n {renderPageControl()}\n\n <NavButton\n qa=\"PaginationNextButton\"\n size={size}\n icon={<RightIcon />}\n isDisabled={isLast || isDisabled}\n aria-label={t('pagination.nextPage', 'Next page')}\n onPress={() => goTo(info.page + 1)}\n />\n\n {showEdgeButtons ? (\n <NavButton\n qa=\"PaginationLastButton\"\n size={size}\n icon={<ForwardIcon />}\n isDisabled={isLast || isDisabled}\n aria-label={t('pagination.lastPage', 'Last page')}\n onPress={() => goTo(totalPages)}\n />\n ) : null}\n </div>\n </PaginationElement>\n );\n}\n\nconst _Pagination = forwardRef(Pagination);\n\n_Pagination.displayName = 'Pagination';\n\nexport { _Pagination as Pagination };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.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 { useControlledState } from "@react-stately/utils";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { createContext, useContext } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { DraggableCollection } from "../../shared/DraggableCollection.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { DropIndicatorElement } from "./styled.js";
3
3
  import { useTabsContext } from "./TabsContext.js";
4
4
  import { c } from "react/compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { TabPanelElement } from "./styled.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { useEffect, useMemo, useRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
3
3
  import { useI18n } from "../../../i18n/useI18n.js";
4
4
  import { CloseIcon } from "../../../icons/CloseIcon.js";
@@ -99,6 +99,7 @@ function TabPicker(t0) {
99
99
  let t11;
100
100
  if ($[20] !== isReorderable || $[21] !== onReorder || $[22] !== pickerSize || $[23] !== selectedKey || $[24] !== t10 || $[25] !== t4 || $[26] !== t6 || $[27] !== t8 || $[28] !== t9) {
101
101
  t11 = /* @__PURE__ */ jsx(FilterPicker, {
102
+ isBare: true,
102
103
  selectedKey,
103
104
  renderSummary: false,
104
105
  icon: t3,
@@ -1 +1 @@
1
- {"version":3,"file":"TabPicker.js","names":["useI18n","CloseIcon","MoreIcon","ItemAction","FilterPicker","POPOVER_PLACEMENT_BY_TABS_PLACEMENT","ParsedTab","TabPlacement","TabSize","TabType","TabPickerProps","tabs","selectedKey","onSelect","key","onDelete","size","type","placement","isReorderable","onReorder","newOrder","TabPicker","t0","$","_c","t1","t2","undefined","t","isDeletable","pickerSize","showBorderDivider","isVertical","t3","Symbol","for","t4","t5","t6","border","t7","t8","t9","String","t10","t11","tab","icon","tooltip","title","map"],"sources":["../../../../src/components/navigation/Tabs/TabPicker.tsx"],"sourcesContent":["import { useI18n } from '../../../i18n';\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { MoreIcon } from '../../../icons/MoreIcon';\nimport { ItemAction } from '../../actions/ItemAction';\nimport { FilterPicker } from '../../fields/FilterPicker/FilterPicker';\n\nimport { POPOVER_PLACEMENT_BY_TABS_PLACEMENT } from './popover-placement';\n\nimport type { ParsedTab, TabPlacement, TabSize, TabType } from './types';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface TabPickerProps {\n /** Ordered list of parsed tabs to display in the picker */\n tabs: ParsedTab[];\n /** Currently selected tab key */\n selectedKey: string | null;\n /** Callback when a tab is selected from the picker */\n onSelect: (key: string) => void;\n /** Callback when a tab should be deleted. When provided, shows delete action on items. */\n onDelete?: (key: string) => void;\n /** Size of the picker trigger button */\n size?: TabSize;\n /** Type of the parent Tabs component (for border styling) */\n type?: TabType;\n /** Placement of the parent Tabs component (controls divider + popover placement) */\n placement?: TabPlacement;\n /** Enable drag-and-drop reordering of items in the picker dropdown */\n isReorderable?: boolean;\n /** Callback when items are reordered via drag-and-drop */\n onReorder?: (newOrder: string[]) => void;\n}\n\n// =============================================================================\n// Component\n// =============================================================================\n\n/**\n * Tab picker component that displays a dropdown menu of all tabs.\n *\n * Used in the Tabs suffix area when tabs overflow to provide quick navigation\n * to any tab without scrolling.\n */\nexport function TabPicker({\n tabs,\n selectedKey,\n onSelect,\n onDelete,\n size,\n type = 'default',\n placement = 'top',\n isReorderable,\n onReorder,\n}: TabPickerProps) {\n const { t } = useI18n();\n const isDeletable = !!onDelete;\n\n // Map TabSize to FilterPicker size (xsmall -> small)\n const pickerSize = size === 'xsmall' ? 'small' : size;\n\n // Only show border divider for file type\n const showBorderDivider = type === 'file';\n const isVertical = placement === 'left' || placement === 'right';\n\n return (\n <FilterPicker\n selectedKey={selectedKey}\n renderSummary={false}\n icon={<MoreIcon />}\n rightIcon={null}\n shape=\"sharp\"\n type=\"clear\"\n size={pickerSize}\n placement={POPOVER_PLACEMENT_BY_TABS_PLACEMENT[placement]}\n // Apply border to wrapper (FilterPickerWrapper) so :first-child evaluates\n // relative to Suffix container, not the internal DialogTrigger. The\n // divider side flips with the bar's orientation.\n styles={{\n border: showBorderDivider\n ? {\n '': 0,\n '!:first-child': isVertical ? 'top' : 'left',\n }\n : 0,\n }}\n triggerStyles={{ border: 0 }}\n aria-label={t('tabs.selectTab', 'Select tab')}\n isReorderable={isReorderable}\n onReorder={onReorder}\n onSelectionChange={(key) => {\n if (key != null) {\n onSelect(String(key));\n }\n }}\n >\n {tabs.map((tab) => (\n <FilterPicker.Item\n key={tab.key}\n icon={tab.icon}\n tooltip={tab.tooltip}\n textValue={\n typeof tab.title === 'string' ? tab.title : String(tab.key)\n }\n autoHideActions={isDeletable}\n actions={\n isDeletable ? (\n <ItemAction\n icon={<CloseIcon />}\n aria-label={t('tabs.close', 'Close')}\n onPress={() => {\n onDelete(tab.key);\n }}\n />\n ) : undefined\n }\n >\n {tab.title}\n </FilterPicker.Item>\n ))}\n </FilterPicker>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TabPicker.js","names":["useI18n","CloseIcon","MoreIcon","ItemAction","FilterPicker","POPOVER_PLACEMENT_BY_TABS_PLACEMENT","ParsedTab","TabPlacement","TabSize","TabType","TabPickerProps","tabs","selectedKey","onSelect","key","onDelete","size","type","placement","isReorderable","onReorder","newOrder","TabPicker","t0","$","_c","t1","t2","undefined","t","isDeletable","pickerSize","showBorderDivider","isVertical","t3","Symbol","for","t4","t5","t6","border","t7","t8","t9","String","t10","t11","tab","icon","tooltip","title","map"],"sources":["../../../../src/components/navigation/Tabs/TabPicker.tsx"],"sourcesContent":["import { useI18n } from '../../../i18n';\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { MoreIcon } from '../../../icons/MoreIcon';\nimport { ItemAction } from '../../actions/ItemAction';\nimport { FilterPicker } from '../../fields/FilterPicker/FilterPicker';\n\nimport { POPOVER_PLACEMENT_BY_TABS_PLACEMENT } from './popover-placement';\n\nimport type { ParsedTab, TabPlacement, TabSize, TabType } from './types';\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface TabPickerProps {\n /** Ordered list of parsed tabs to display in the picker */\n tabs: ParsedTab[];\n /** Currently selected tab key */\n selectedKey: string | null;\n /** Callback when a tab is selected from the picker */\n onSelect: (key: string) => void;\n /** Callback when a tab should be deleted. When provided, shows delete action on items. */\n onDelete?: (key: string) => void;\n /** Size of the picker trigger button */\n size?: TabSize;\n /** Type of the parent Tabs component (for border styling) */\n type?: TabType;\n /** Placement of the parent Tabs component (controls divider + popover placement) */\n placement?: TabPlacement;\n /** Enable drag-and-drop reordering of items in the picker dropdown */\n isReorderable?: boolean;\n /** Callback when items are reordered via drag-and-drop */\n onReorder?: (newOrder: string[]) => void;\n}\n\n// =============================================================================\n// Component\n// =============================================================================\n\n/**\n * Tab picker component that displays a dropdown menu of all tabs.\n *\n * Used in the Tabs suffix area when tabs overflow to provide quick navigation\n * to any tab without scrolling.\n */\nexport function TabPicker({\n tabs,\n selectedKey,\n onSelect,\n onDelete,\n size,\n type = 'default',\n placement = 'top',\n isReorderable,\n onReorder,\n}: TabPickerProps) {\n const { t } = useI18n();\n const isDeletable = !!onDelete;\n\n // Map TabSize to FilterPicker size (xsmall -> small)\n const pickerSize = size === 'xsmall' ? 'small' : size;\n\n // Only show border divider for file type\n const showBorderDivider = type === 'file';\n const isVertical = placement === 'left' || placement === 'right';\n\n return (\n <FilterPicker\n isBare\n selectedKey={selectedKey}\n renderSummary={false}\n icon={<MoreIcon />}\n rightIcon={null}\n shape=\"sharp\"\n type=\"clear\"\n size={pickerSize}\n placement={POPOVER_PLACEMENT_BY_TABS_PLACEMENT[placement]}\n // Apply border to wrapper (FilterPickerWrapper) so :first-child evaluates\n // relative to Suffix container, not the internal DialogTrigger. The\n // divider side flips with the bar's orientation.\n styles={{\n border: showBorderDivider\n ? {\n '': 0,\n '!:first-child': isVertical ? 'top' : 'left',\n }\n : 0,\n }}\n triggerStyles={{ border: 0 }}\n aria-label={t('tabs.selectTab', 'Select tab')}\n isReorderable={isReorderable}\n onReorder={onReorder}\n onSelectionChange={(key) => {\n if (key != null) {\n onSelect(String(key));\n }\n }}\n >\n {tabs.map((tab) => (\n <FilterPicker.Item\n key={tab.key}\n icon={tab.icon}\n tooltip={tab.tooltip}\n textValue={\n typeof tab.title === 'string' ? tab.title : String(tab.key)\n }\n autoHideActions={isDeletable}\n actions={\n isDeletable ? (\n <ItemAction\n icon={<CloseIcon />}\n aria-label={t('tabs.close', 'Close')}\n onPress={() => {\n onDelete(tab.key);\n }}\n />\n ) : undefined\n }\n >\n {tab.title}\n </FilterPicker.Item>\n ))}\n </FilterPicker>\n );\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { _ItemButton } from "../../actions/ItemButton/ItemButton.js";
3
3
  import { useOptionalTabsContext } from "./TabsContext.js";
4
4
  import { c } from "react/compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { createContext, useContext } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  //#region src/components/navigation/Tabs/popover-placement.ts
3
3
  /**
4
4
  * Maps the parent Tabs `placement` to the popover placement for menus and
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { _Item } from "../../content/Item/Item.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  //#region src/components/navigation/Tabs/types.ts
3
3
  /**
4
4
  * Size mapping for radio type tabs.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { c } from "react/compiler-runtime";
3
3
  import { useState } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { chainRaf } from "../../../utils/raf.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { useEffect, useLayoutEffect, useRef, useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { _Text } from "../../content/Text.js";
3
3
  import { _Title } from "../../content/Title.js";
4
4
  import { Card } from "../../content/Card/Card.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { useProviderProps } from "../../../provider.js";
3
3
  import { CalendarPanel } from "./CalendarPanel.js";
4
4
  import { c } from "react/compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { CALENDAR_CELL_STYLES } from "./styled.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { getWeekNumber } from "../../fields/DatePicker/period.js";
3
3
  import { CalendarCell } from "./CalendarCell.js";
4
4
  import { c } from "react/compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { _Title } from "../../content/Title.js";
3
3
  import { Space } from "../../layout/Space.js";
4
4
  import { RightIcon } from "../../../icons/RightIcon.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.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 { CalendarElement } from "./styled.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { useProviderProps } from "../../../provider.js";
3
3
  import { useI18n } from "../../../i18n/useI18n.js";
4
4
  import { getQuarter } from "../../fields/DatePicker/period.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { CALENDAR_CELL_STYLES } from "./styled.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { useLayoutEffect, useRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { useProviderProps } from "../../../provider.js";
3
3
  import { CalendarPanel } from "./CalendarPanel.js";
4
4
  import { c } from "react/compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { tasty } from "@tenphi/tasty";
3
3
 
4
4
  //#region src/components/other/Calendar/styled.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { Icon } from "../../../icons/Icon.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { mergeStyles, tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { wrapIcon } from "../../../icons/wrap-icon.js";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
 
@@ -12,7 +12,12 @@ interface CubeAlertDialogActionsProps {
12
12
  }
13
13
  interface CubeAlertDialogProps extends Omit<CubeDialogProps, 'children'> {
14
14
  content?: ReactNode;
15
- /** Whether the dialog is an important prompt */
15
+ /**
16
+ * Whether the confirm action is destructive. It is styled as such, and the
17
+ * dialog opens with focus on Cancel, or on the dialog itself when there is
18
+ * no Cancel, so a reflexive Enter does not run it. An explicit `autoFocus`
19
+ * on `actions.confirm` still puts focus there.
20
+ */
16
21
  danger?: boolean;
17
22
  actions?: CubeAlertDialogActionsProps;
18
23
  title?: string;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { chain } from "../../../utils/react/chain.js";
3
3
  import { Paragraph } from "../../content/Paragraph.js";
4
4
  import { _Title } from "../../content/Title.js";
@@ -91,7 +91,7 @@ function AlertDialog(props, ref) {
91
91
  if ($[16] !== cancelProps || $[17] !== confirmProps || $[18] !== danger || $[19] !== noActions || $[20] !== onClose || $[21] !== secondaryProps) {
92
92
  t2 = !noActions && (confirmProps || secondaryProps || cancelProps) ? /* @__PURE__ */ jsx(Footer, { children: /* @__PURE__ */ jsxs(ButtonGroup, { children: [
93
93
  confirmProps && /* @__PURE__ */ jsx(Button, {
94
- autoFocus: true,
94
+ autoFocus: !danger,
95
95
  theme: danger ? "danger" : void 0,
96
96
  ...confirmProps,
97
97
  onPress: (e) => chain(confirmProps?.onPress?.(e), onClose?.("confirm"))
@@ -101,6 +101,7 @@ function AlertDialog(props, ref) {
101
101
  onPress: (e_0) => chain(secondaryProps?.onPress?.(e_0), onClose?.("secondary"))
102
102
  }),
103
103
  cancelProps && /* @__PURE__ */ jsx(Button, {
104
+ autoFocus: danger && !confirmProps?.autoFocus,
104
105
  ...cancelProps,
105
106
  onPress: (e_1) => chain(cancelProps?.onPress?.(e_1), onClose?.("cancel"))
106
107
  })
@@ -1 +1 @@
1
- {"version":3,"file":"AlertDialog.js","names":["forwardRef","ReactNode","useI18n","chain","Button","ButtonGroup","Content","Footer","Header","Paragraph","Title","useDialogContext","withDefaultButtonText","CubeDialogProps","Dialog","CubeButtonProps","CubeAlertDialogActionsProps","confirm","secondary","cancel","CubeAlertDialogProps","Omit","content","danger","actions","title","noActions","AlertDialog","props","ref","$","_c","onClose","t","otherProps","t0","t1","t2","styles","t3","t4","t5","cancelProps","confirmProps","secondaryProps","type","undefined","e","onPress","e_0","e_1","_AlertDialog","displayName"],"sources":["../../../../src/components/overlays/AlertDialog/AlertDialog.tsx"],"sourcesContent":["import { forwardRef, ReactNode } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { chain } from '../../../utils/react';\nimport { Button } from '../../actions/Button/Button';\nimport { ButtonGroup } from '../../actions/ButtonGroup/ButtonGroup';\nimport { Content } from '../../content/Content';\nimport { Footer } from '../../content/Footer';\nimport { Header } from '../../content/Header';\nimport { Paragraph } from '../../content/Paragraph';\nimport { Title } from '../../content/Title';\nimport { useDialogContext } from '../Dialog/context';\nimport { withDefaultButtonText } from '../Dialog/default-button-text';\nimport { CubeDialogProps, Dialog } from '../Dialog/Dialog';\n\nimport type { CubeButtonProps } from '../../actions/Button/Button';\n\nexport interface CubeAlertDialogActionsProps {\n confirm?: CubeButtonProps | boolean;\n secondary?: CubeButtonProps;\n cancel?: CubeButtonProps | boolean;\n}\n\nexport interface CubeAlertDialogProps\n extends Omit<CubeDialogProps, 'children'> {\n content?: ReactNode;\n /** Whether the dialog is an important prompt */\n danger?: boolean;\n actions?: CubeAlertDialogActionsProps;\n title?: string;\n noActions?: boolean;\n}\n\n/**\n * AlertDialogs are a specific type of Dialog. They display important information that users need to acknowledge.\n */\nfunction AlertDialog(props: CubeAlertDialogProps, ref) {\n const { onClose } = useDialogContext();\n const { t } = useI18n();\n\n const { danger, actions, title, styles, noActions, content, ...otherProps } =\n props;\n\n let {\n confirm: confirmProps,\n secondary: secondaryProps,\n cancel: cancelProps,\n } = actions ?? {};\n\n // the confirm button is present by default\n confirmProps =\n confirmProps !== false\n ? withDefaultButtonText(\n {\n type: 'primary',\n ...(typeof confirmProps === 'object' ? confirmProps : null),\n },\n t('alertDialog.confirm', 'Ok'),\n )\n : undefined;\n\n // the cancel button is hidden by default\n cancelProps = cancelProps\n ? withDefaultButtonText(\n typeof cancelProps === 'object' ? cancelProps : undefined,\n t('alertDialog.cancel', 'Cancel'),\n )\n : undefined;\n\n return (\n <Dialog ref={ref} role=\"alertdialog\" isDismissable={false} {...otherProps}>\n {title ? (\n <Header>\n <Title>{title}</Title>\n </Header>\n ) : null}\n {content ? (\n <Content>\n {typeof content === 'string' ? (\n <Paragraph>{content}</Paragraph>\n ) : (\n content\n )}\n </Content>\n ) : null}\n {!noActions && (confirmProps || secondaryProps || cancelProps) ? (\n <Footer>\n <ButtonGroup>\n {confirmProps && (\n <Button\n autoFocus\n theme={danger ? 'danger' : undefined}\n {...confirmProps}\n onPress={(e) =>\n chain(\n (confirmProps as CubeButtonProps)?.onPress?.(e),\n onClose?.('confirm'),\n )\n }\n />\n )}\n {secondaryProps && (\n <Button\n {...secondaryProps}\n onPress={(e) =>\n chain(secondaryProps?.onPress?.(e), onClose?.('secondary'))\n }\n />\n )}\n {cancelProps && (\n <Button\n {...cancelProps}\n onPress={(e) =>\n chain(\n (cancelProps as CubeButtonProps)?.onPress?.(e),\n onClose?.('cancel'),\n )\n }\n />\n )}\n </ButtonGroup>\n </Footer>\n ) : null}\n </Dialog>\n );\n}\n\n/**\n * AlertDialogs are a specific type of Dialog. They display important information that users need to acknowledge.\n */\nconst _AlertDialog = forwardRef(AlertDialog);\n\n_AlertDialog.displayName = 'AlertDialog';\n\nexport { _AlertDialog as AlertDialog };\n"],"mappings":"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"}
1
+ {"version":3,"file":"AlertDialog.js","names":["forwardRef","ReactNode","useI18n","chain","Button","ButtonGroup","Content","Footer","Header","Paragraph","Title","useDialogContext","withDefaultButtonText","CubeDialogProps","Dialog","CubeButtonProps","CubeAlertDialogActionsProps","confirm","secondary","cancel","CubeAlertDialogProps","Omit","content","danger","actions","title","noActions","AlertDialog","props","ref","$","_c","onClose","t","otherProps","t0","t1","t2","styles","t3","t4","t5","cancelProps","confirmProps","secondaryProps","type","undefined","e","onPress","e_0","autoFocus","e_1","_AlertDialog","displayName"],"sources":["../../../../src/components/overlays/AlertDialog/AlertDialog.tsx"],"sourcesContent":["import { forwardRef, ReactNode } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { chain } from '../../../utils/react';\nimport { Button } from '../../actions/Button/Button';\nimport { ButtonGroup } from '../../actions/ButtonGroup/ButtonGroup';\nimport { Content } from '../../content/Content';\nimport { Footer } from '../../content/Footer';\nimport { Header } from '../../content/Header';\nimport { Paragraph } from '../../content/Paragraph';\nimport { Title } from '../../content/Title';\nimport { useDialogContext } from '../Dialog/context';\nimport { withDefaultButtonText } from '../Dialog/default-button-text';\nimport { CubeDialogProps, Dialog } from '../Dialog/Dialog';\n\nimport type { CubeButtonProps } from '../../actions/Button/Button';\n\nexport interface CubeAlertDialogActionsProps {\n confirm?: CubeButtonProps | boolean;\n secondary?: CubeButtonProps;\n cancel?: CubeButtonProps | boolean;\n}\n\nexport interface CubeAlertDialogProps\n extends Omit<CubeDialogProps, 'children'> {\n content?: ReactNode;\n /**\n * Whether the confirm action is destructive. It is styled as such, and the\n * dialog opens with focus on Cancel, or on the dialog itself when there is\n * no Cancel, so a reflexive Enter does not run it. An explicit `autoFocus`\n * on `actions.confirm` still puts focus there.\n */\n danger?: boolean;\n actions?: CubeAlertDialogActionsProps;\n title?: string;\n noActions?: boolean;\n}\n\n/**\n * AlertDialogs are a specific type of Dialog. They display important information that users need to acknowledge.\n */\nfunction AlertDialog(props: CubeAlertDialogProps, ref) {\n const { onClose } = useDialogContext();\n const { t } = useI18n();\n\n const { danger, actions, title, styles, noActions, content, ...otherProps } =\n props;\n\n let {\n confirm: confirmProps,\n secondary: secondaryProps,\n cancel: cancelProps,\n } = actions ?? {};\n\n // the confirm button is present by default\n confirmProps =\n confirmProps !== false\n ? withDefaultButtonText(\n {\n type: 'primary',\n ...(typeof confirmProps === 'object' ? confirmProps : null),\n },\n t('alertDialog.confirm', 'Ok'),\n )\n : undefined;\n\n // the cancel button is hidden by default\n cancelProps = cancelProps\n ? withDefaultButtonText(\n typeof cancelProps === 'object' ? cancelProps : undefined,\n t('alertDialog.cancel', 'Cancel'),\n )\n : undefined;\n\n return (\n <Dialog ref={ref} role=\"alertdialog\" isDismissable={false} {...otherProps}>\n {title ? (\n <Header>\n <Title>{title}</Title>\n </Header>\n ) : null}\n {content ? (\n <Content>\n {typeof content === 'string' ? (\n <Paragraph>{content}</Paragraph>\n ) : (\n content\n )}\n </Content>\n ) : null}\n {!noActions && (confirmProps || secondaryProps || cancelProps) ? (\n <Footer>\n <ButtonGroup>\n {confirmProps && (\n <Button\n // A destructive action never takes focus on open, where a\n // reflexive Enter would run it: Cancel takes it instead, or\n // the dialog itself when there is no Cancel.\n autoFocus={!danger}\n theme={danger ? 'danger' : undefined}\n {...confirmProps}\n onPress={(e) =>\n chain(\n (confirmProps as CubeButtonProps)?.onPress?.(e),\n onClose?.('confirm'),\n )\n }\n />\n )}\n {secondaryProps && (\n <Button\n {...secondaryProps}\n onPress={(e) =>\n chain(secondaryProps?.onPress?.(e), onClose?.('secondary'))\n }\n />\n )}\n {cancelProps && (\n <Button\n // Unless the confirm button asks for focus explicitly.\n autoFocus={danger && !confirmProps?.autoFocus}\n {...cancelProps}\n onPress={(e) =>\n chain(\n (cancelProps as CubeButtonProps)?.onPress?.(e),\n onClose?.('cancel'),\n )\n }\n />\n )}\n </ButtonGroup>\n </Footer>\n ) : null}\n </Dialog>\n );\n}\n\n/**\n * AlertDialogs are a specific type of Dialog. They display important information that users need to acknowledge.\n */\nconst _AlertDialog = forwardRef(AlertDialog);\n\n_AlertDialog.displayName = 'AlertDialog';\n\nexport { _AlertDialog as AlertDialog };\n"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
+ import { EXIT_DURATION } from "../Modal/Overlay.js";
2
3
  import { AlertDialogZone } from "./AlertDialogZone.js";
3
4
  import { c } from "react/compiler-runtime";
4
5
  import { createContext, useContext, useLayoutEffect, useRef, useState } from "react";
@@ -91,7 +92,7 @@ function AlertDialogApiProvider(props) {
91
92
  isVisible: false
92
93
  }
93
94
  });
94
- setTimeout(() => setOpenedDialog((currentState_0) => currentState_0?.meta.id !== currentId ? currentState_0 : null), 300);
95
+ setTimeout(() => setOpenedDialog((currentState_0) => currentState_0?.meta.id !== currentId ? currentState_0 : null), EXIT_DURATION);
95
96
  return true;
96
97
  };
97
98
  let resolvePromise;
@@ -1 +1 @@
1
- {"version":3,"file":"AlertDialogApiProvider.js","names":["createContext","useContext","useLayoutEffect","useMemo","useRef","useState","invariant","AlertDialogZone","AlertDialogResolveStatus","Dialog","DialogProps","AlertDialogOpener","open","dialogProps","signals","AbortSignal","Promise","DialogApiContext","AlertDialogApi","params","AlertDialogApiParams","cancelToken","isThenable","value","PromiseLike","then","runHandler","handler","undefined","error","reject","runActionHandlers","handlers","pending","map","filter","length","all","ignoreUnhandled","promise","T","catch","reportActionError","globalThis","reportError","setTimeout","PendingAction","id","status","AlertDialogApiProvider","props","$","_c","openedDialog","setOpenedDialog","pendingAction","setPendingAction","t0","Symbol","for","onDismiss","onConfirm","onSecondary","onCancel","restProps","some","_temp","currentId","current","currentDialog","meta","isClosed","isVisible","setPending","isAbortedWhilePending","onAbort","close","signal_0","signal","removeEventListener","currentState","currentState_0","resolvePromise","rejectPromise","resolve","status_0","reason","act","status_1","onPress","result","signal_1","addEventListener","once","action","openedDialog_0","Error","opener","t1","t2","children","aborted","useAlertDialogAPI","createDialogOwner","owner","attach","api","lifetime","AbortController","isUnmounted","abort"],"sources":["../../../../src/components/overlays/AlertDialog/AlertDialogApiProvider.tsx"],"sourcesContent":["import {\n createContext,\n useContext,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport invariant from 'tiny-invariant';\n\nimport { AlertDialogZone } from './AlertDialogZone';\nimport { AlertDialogResolveStatus, Dialog, DialogProps } from './types';\n\n/**\n * The provider's own `open`. A dialog closes, as a cancel, when any of its\n * signals aborts: the caller's `cancelToken`, and the one that ends with the\n * component that opened it.\n */\ninterface AlertDialogOpener {\n open: (\n dialogProps: DialogProps,\n signals: AbortSignal[],\n ) => Promise<AlertDialogResolveStatus>;\n}\n\nconst DialogApiContext = createContext<AlertDialogOpener | null>(null);\n\nexport interface AlertDialogApi {\n /**\n * Opens the dialog. Resolves with the action the user picked. Rejects with\n * `undefined` when the dialog closes without one (Cancel, dismissal, an\n * aborted `cancelToken` or the unmount of the component that opened it),\n * and with an `Error` when it cannot open. A cancel is not reported as an\n * unhandled rejection when the promise is ignored.\n */\n open: (\n dialogProps: DialogProps,\n params?: AlertDialogApiParams,\n ) => Promise<AlertDialogResolveStatus>;\n}\n\nexport interface AlertDialogApiParams {\n /**\n * Closes the dialog when aborted, which settles it as a cancel. A confirm or\n * secondary action that is running finishes first.\n */\n cancelToken?: AbortSignal;\n}\n\nfunction isThenable(value: unknown): value is PromiseLike<unknown> {\n return !!value && typeof (value as PromiseLike<unknown>).then === 'function';\n}\n\n/** Runs an action handler, turning a throw into a rejected promise. */\nfunction runHandler(handler: (() => unknown) | undefined): unknown {\n if (!handler) return undefined;\n\n try {\n return handler();\n } catch (error) {\n return Promise.reject(error);\n }\n}\n\n/**\n * Runs the button's `onPress` and the dialog's callback for the same action.\n * Returns a promise when either does, so the dialog waits for both.\n */\nfunction runActionHandlers(handlers: ((() => unknown) | undefined)[]) {\n const pending = handlers.map(runHandler).filter(isThenable);\n\n return pending.length ? Promise.all(pending) : undefined;\n}\n\n/** A cancel rejection nobody listens to is not an error worth reporting. */\nfunction ignoreUnhandled<T>(promise: Promise<T>) {\n promise.catch(() => {});\n\n return promise;\n}\n\n/** Reports a failed action handler without throwing into the press. */\nfunction reportActionError(error: unknown) {\n if (typeof globalThis.reportError === 'function') {\n globalThis.reportError(error);\n } else {\n setTimeout(() => {\n throw error;\n });\n }\n}\n\n/**\n * The dialog whose action handler is still running, and which action.\n * @internal\n */\nexport interface PendingAction {\n id: number;\n status: AlertDialogResolveStatus;\n}\n\n/**\n * @internal Do not use it in your code!\n */\nexport function AlertDialogApiProvider(props) {\n const [openedDialog, setOpenedDialog] = useState<Dialog | null>(null);\n const [pendingAction, setPendingAction] = useState<PendingAction | null>(\n null,\n );\n const id = useRef(0);\n\n // A context value that never changes: each `useAlertDialogAPI` caller\n // keeps the one it first saw.\n const opener = useMemo<AlertDialogOpener>(\n () => ({\n open: (dialogProps, signals) => {\n const { onDismiss, onConfirm, onSecondary, onCancel, ...restProps } =\n dialogProps;\n\n // An aborted signal is a cancel: it settles before anything opens.\n if (signals.some((signal) => signal.aborted)) {\n onCancel?.();\n\n return ignoreUnhandled(Promise.reject(undefined));\n }\n\n const currentId = ++id.current;\n const currentDialog = {\n props: null,\n meta: { id: currentId, isClosed: false, isVisible: true },\n } as unknown as Dialog;\n // Set while an action handler's promise runs: the dialog stays open.\n let pending: AlertDialogResolveStatus | null = null;\n\n const setPending = (status: AlertDialogResolveStatus | null) => {\n pending = status;\n setPendingAction((current) =>\n status\n ? { id: currentId, status }\n : current?.id === currentId\n ? null\n : current,\n );\n };\n\n // Set by an abort that came while an action ran.\n let isAbortedWhilePending = false;\n\n // Aborting is a cancel, so it settles the promise the way Cancel does.\n // A running action finishes first, as it does on Escape: cut short, a\n // delete that went through would be reported as cancelled.\n const onAbort = () => {\n if (pending) {\n isAbortedWhilePending = true;\n\n return;\n }\n\n currentDialog.meta.reject(undefined);\n };\n\n const close = () => {\n if (currentDialog.meta.isClosed) return false;\n\n currentDialog.meta.isClosed = true;\n\n for (const signal of signals) {\n signal.removeEventListener('abort', onAbort);\n }\n\n setOpenedDialog((currentState) =>\n currentState?.meta.id !== currentId\n ? currentState\n : {\n props: currentState.props,\n meta: { ...currentState.meta, isVisible: false },\n },\n );\n\n setTimeout(\n () =>\n setOpenedDialog((currentState) =>\n currentState?.meta.id !== currentId ? currentState : null,\n ),\n 300,\n );\n\n return true;\n };\n\n let resolvePromise!: (status: AlertDialogResolveStatus) => void;\n let rejectPromise!: (reason: unknown) => void;\n\n currentDialog.meta.promise = new Promise((resolve, reject) => {\n resolvePromise = resolve;\n rejectPromise = reject;\n });\n\n currentDialog.meta.resolve = (status) => {\n if (close()) resolvePromise(status);\n };\n\n // A rejection without a reason is a cancel: the Cancel button, a\n // dismissal, an aborted signal or `content` calling `reject()`.\n // Anything else is a failure.\n currentDialog.meta.reject = (reason) => {\n if (!close()) return;\n\n if (reason !== undefined) {\n rejectPromise(reason);\n\n return;\n }\n\n ignoreUnhandled(currentDialog.meta.promise);\n rejectPromise(undefined);\n onCancel?.();\n };\n\n // The confirm and secondary buttons: run the handlers, and settle\n // once they have finished. A handler that throws or rejects keeps the\n // dialog open for another try, unless it was aborted meanwhile.\n currentDialog.meta.act = (status, onPress) => {\n const result = runActionHandlers([\n onPress,\n status === 'confirm' ? onConfirm : onSecondary,\n ]);\n\n if (!isThenable(result)) {\n currentDialog.meta.resolve(status);\n\n return;\n }\n\n setPending(status);\n\n result.then(\n () => {\n setPending(null);\n\n if (currentDialog.meta.isClosed) return;\n\n currentDialog.meta.resolve(status);\n // The press's own dismissal was held back while it ran.\n onDismiss?.(status);\n },\n (error) => {\n setPending(null);\n reportActionError(error);\n\n if (isAbortedWhilePending) currentDialog.meta.reject(undefined);\n },\n );\n };\n\n for (const signal of signals) {\n signal.addEventListener('abort', onAbort, { once: true });\n }\n\n currentDialog.props = {\n ...restProps,\n // Called with the action's name by the action buttons, and without\n // one by Escape and a click outside.\n onDismiss: (action) => {\n if (pending) return;\n\n onDismiss?.(action);\n currentDialog.meta.reject(undefined);\n },\n };\n\n setOpenedDialog((openedDialog) => {\n // Another dialog is open, so this one can't be. One that is only\n // animating out gives way: its cleanup checks the id, so it leaves\n // the new dialog alone.\n if (openedDialog !== null && !openedDialog.meta.isClosed) {\n currentDialog.meta.reject(\n new Error(\n \"Another dialog is already opened. It's a bad practice to open more than one <AlertDialog /> at the same time\",\n ),\n );\n\n return openedDialog;\n }\n\n return currentDialog;\n });\n\n return currentDialog.meta.promise;\n },\n }),\n [],\n );\n\n return (\n <DialogApiContext.Provider value={opener}>\n <AlertDialogZone\n openedDialog={openedDialog}\n pendingAction={pendingAction}\n />\n {props.children}\n </DialogApiContext.Provider>\n );\n}\n\n/**\n * Hook gives the ability to open `<AlertDialog />` imperatively.\n *\n * Pass the action as `onConfirm`. If it returns a promise, the dialog waits\n * for it with the button loading, and stays open if it fails.\n *\n * The returned promise resolves with the action the user picked and rejects\n * with `undefined` on a cancel. A caller that runs everything in the callbacks\n * can ignore it: an ignored cancel is not reported as an unhandled rejection.\n *\n * A dialog belongs to the component that calls this hook: when that component\n * unmounts, its dialog closes as a cancel, so no callback runs against a\n * component that is gone. Call the hook in a component that stays mounted\n * while the dialog is open, such as the one that renders a menu, not in the\n * menu item that closes it. A confirm or secondary action that is running\n * finishes first.\n *\n * ***Important*** only one alert dialog can be open at a time: `open` rejects\n * with an `Error` while another one is open. A dialog that is already closing\n * gives way.\n *\n * @example running the action from the dialog.\n * const { open } = useAlertDialogAPI();\n *\n * const onPress = () => {\n * open({\n * title: 'Delete the item?',\n * danger: true,\n * actions: { confirm: { children: 'Delete' }, cancel: true },\n * onConfirm: () => deleteItem(),\n * });\n * };\n *\n * return <Button onPress={onPress}>Delete</Button>\n *\n * @example closing the dialog from code with a cancel token.\n * const { open } = useAlertDialogAPI();\n * const controllerRef = useRef<AbortController | null>(null);\n *\n * const onPress = () => {\n * // A signal stays aborted, so every dialog needs a fresh controller.\n * controllerRef.current = new AbortController();\n *\n * open(\n * { title: 'Waiting for approval', actions: { confirm: { children: 'Hide' } } },\n * { cancelToken: controllerRef.current.signal },\n * );\n * };\n *\n * // Later, e.g. when the approval arrives:\n * controllerRef.current?.abort();\n */\nexport function useAlertDialogAPI(): AlertDialogApi {\n const opener = useContext(DialogApiContext);\n\n invariant(\n opener !== null,\n \"You can't use DialogApi outside of <Root /> component. Please, check if your component is descendant of <Root/> component\",\n );\n\n const [owner] = useState(() => createDialogOwner(opener));\n\n // A layout effect, so it is in place before any passive effect calls `open`.\n useLayoutEffect(() => owner.attach(), [owner]);\n\n return owner.api;\n}\n\n/**\n * One `useAlertDialogAPI` caller's `open`, whose dialogs close when the\n * caller unmounts. Its identity is the caller's for good: callers put `open`\n * in effect dependencies.\n */\nfunction createDialogOwner(opener: AlertDialogOpener) {\n // Aborted on unmount. Made on first use, so a StrictMode remount, which\n // runs the cleanup once, gets a fresh one.\n let lifetime: AbortController | null = null;\n let isUnmounted = false;\n\n const api: AlertDialogApi = {\n open: (dialogProps, params = {}) => {\n let owner: AbortSignal;\n\n if (isUnmounted) {\n // A late call, after an `await`, from a caller that is gone.\n owner = AbortSignal.abort();\n } else {\n lifetime ??= new AbortController();\n owner = lifetime.signal;\n }\n\n const { cancelToken } = params;\n\n return opener.open(\n dialogProps,\n cancelToken ? [owner, cancelToken] : [owner],\n );\n },\n };\n\n /** The effect setup. Its cleanup closes the dialogs the caller opened. */\n const attach = () => {\n isUnmounted = false;\n\n return () => {\n isUnmounted = true;\n lifetime?.abort();\n lifetime = null;\n };\n };\n\n return { api, attach };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"AlertDialogApiProvider.js","names":["createContext","useContext","useLayoutEffect","useMemo","useRef","useState","invariant","EXIT_DURATION","AlertDialogZone","AlertDialogResolveStatus","Dialog","DialogProps","AlertDialogOpener","open","dialogProps","signals","AbortSignal","Promise","DialogApiContext","AlertDialogApi","params","AlertDialogApiParams","cancelToken","isThenable","value","PromiseLike","then","runHandler","handler","undefined","error","reject","runActionHandlers","handlers","pending","map","filter","length","all","ignoreUnhandled","promise","T","catch","reportActionError","globalThis","reportError","setTimeout","PendingAction","id","status","AlertDialogApiProvider","props","$","_c","openedDialog","setOpenedDialog","pendingAction","setPendingAction","t0","Symbol","for","onDismiss","onConfirm","onSecondary","onCancel","restProps","some","_temp","currentId","current","currentDialog","meta","isClosed","isVisible","setPending","isAbortedWhilePending","onAbort","close","signal_0","signal","removeEventListener","currentState","currentState_0","resolvePromise","rejectPromise","resolve","status_0","reason","act","status_1","onPress","result","signal_1","addEventListener","once","action","openedDialog_0","Error","opener","t1","t2","children","aborted","useAlertDialogAPI","createDialogOwner","owner","attach","api","lifetime","AbortController","isUnmounted","abort"],"sources":["../../../../src/components/overlays/AlertDialog/AlertDialogApiProvider.tsx"],"sourcesContent":["import {\n createContext,\n useContext,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport invariant from 'tiny-invariant';\n\nimport { EXIT_DURATION } from '../Modal/Overlay';\n\nimport { AlertDialogZone } from './AlertDialogZone';\nimport { AlertDialogResolveStatus, Dialog, DialogProps } from './types';\n\n/**\n * The provider's own `open`. A dialog closes, as a cancel, when any of its\n * signals aborts: the caller's `cancelToken`, and the one that ends with the\n * component that opened it.\n */\ninterface AlertDialogOpener {\n open: (\n dialogProps: DialogProps,\n signals: AbortSignal[],\n ) => Promise<AlertDialogResolveStatus>;\n}\n\nconst DialogApiContext = createContext<AlertDialogOpener | null>(null);\n\nexport interface AlertDialogApi {\n /**\n * Opens the dialog. Resolves with the action the user picked. Rejects with\n * `undefined` when the dialog closes without one (Cancel, dismissal, an\n * aborted `cancelToken` or the unmount of the component that opened it),\n * and with an `Error` when it cannot open. A cancel is not reported as an\n * unhandled rejection when the promise is ignored.\n */\n open: (\n dialogProps: DialogProps,\n params?: AlertDialogApiParams,\n ) => Promise<AlertDialogResolveStatus>;\n}\n\nexport interface AlertDialogApiParams {\n /**\n * Closes the dialog when aborted, which settles it as a cancel. A confirm or\n * secondary action that is running finishes first.\n */\n cancelToken?: AbortSignal;\n}\n\nfunction isThenable(value: unknown): value is PromiseLike<unknown> {\n return !!value && typeof (value as PromiseLike<unknown>).then === 'function';\n}\n\n/** Runs an action handler, turning a throw into a rejected promise. */\nfunction runHandler(handler: (() => unknown) | undefined): unknown {\n if (!handler) return undefined;\n\n try {\n return handler();\n } catch (error) {\n return Promise.reject(error);\n }\n}\n\n/**\n * Runs the button's `onPress` and the dialog's callback for the same action.\n * Returns a promise when either does, so the dialog waits for both.\n */\nfunction runActionHandlers(handlers: ((() => unknown) | undefined)[]) {\n const pending = handlers.map(runHandler).filter(isThenable);\n\n return pending.length ? Promise.all(pending) : undefined;\n}\n\n/** A cancel rejection nobody listens to is not an error worth reporting. */\nfunction ignoreUnhandled<T>(promise: Promise<T>) {\n promise.catch(() => {});\n\n return promise;\n}\n\n/** Reports a failed action handler without throwing into the press. */\nfunction reportActionError(error: unknown) {\n if (typeof globalThis.reportError === 'function') {\n globalThis.reportError(error);\n } else {\n setTimeout(() => {\n throw error;\n });\n }\n}\n\n/**\n * The dialog whose action handler is still running, and which action.\n * @internal\n */\nexport interface PendingAction {\n id: number;\n status: AlertDialogResolveStatus;\n}\n\n/**\n * @internal Do not use it in your code!\n */\nexport function AlertDialogApiProvider(props) {\n const [openedDialog, setOpenedDialog] = useState<Dialog | null>(null);\n const [pendingAction, setPendingAction] = useState<PendingAction | null>(\n null,\n );\n const id = useRef(0);\n\n // A context value that never changes: each `useAlertDialogAPI` caller\n // keeps the one it first saw.\n const opener = useMemo<AlertDialogOpener>(\n () => ({\n open: (dialogProps, signals) => {\n const { onDismiss, onConfirm, onSecondary, onCancel, ...restProps } =\n dialogProps;\n\n // An aborted signal is a cancel: it settles before anything opens.\n if (signals.some((signal) => signal.aborted)) {\n onCancel?.();\n\n return ignoreUnhandled(Promise.reject(undefined));\n }\n\n const currentId = ++id.current;\n const currentDialog = {\n props: null,\n meta: { id: currentId, isClosed: false, isVisible: true },\n } as unknown as Dialog;\n // Set while an action handler's promise runs: the dialog stays open.\n let pending: AlertDialogResolveStatus | null = null;\n\n const setPending = (status: AlertDialogResolveStatus | null) => {\n pending = status;\n setPendingAction((current) =>\n status\n ? { id: currentId, status }\n : current?.id === currentId\n ? null\n : current,\n );\n };\n\n // Set by an abort that came while an action ran.\n let isAbortedWhilePending = false;\n\n // Aborting is a cancel, so it settles the promise the way Cancel does.\n // A running action finishes first, as it does on Escape: cut short, a\n // delete that went through would be reported as cancelled.\n const onAbort = () => {\n if (pending) {\n isAbortedWhilePending = true;\n\n return;\n }\n\n currentDialog.meta.reject(undefined);\n };\n\n const close = () => {\n if (currentDialog.meta.isClosed) return false;\n\n currentDialog.meta.isClosed = true;\n\n for (const signal of signals) {\n signal.removeEventListener('abort', onAbort);\n }\n\n setOpenedDialog((currentState) =>\n currentState?.meta.id !== currentId\n ? currentState\n : {\n props: currentState.props,\n meta: { ...currentState.meta, isVisible: false },\n },\n );\n\n // Dropped once the overlay has played its exit, not before: removing\n // it sooner unmounts the dialog mid-animation.\n setTimeout(\n () =>\n setOpenedDialog((currentState) =>\n currentState?.meta.id !== currentId ? currentState : null,\n ),\n EXIT_DURATION,\n );\n\n return true;\n };\n\n let resolvePromise!: (status: AlertDialogResolveStatus) => void;\n let rejectPromise!: (reason: unknown) => void;\n\n currentDialog.meta.promise = new Promise((resolve, reject) => {\n resolvePromise = resolve;\n rejectPromise = reject;\n });\n\n currentDialog.meta.resolve = (status) => {\n if (close()) resolvePromise(status);\n };\n\n // A rejection without a reason is a cancel: the Cancel button, a\n // dismissal, an aborted signal or `content` calling `reject()`.\n // Anything else is a failure.\n currentDialog.meta.reject = (reason) => {\n if (!close()) return;\n\n if (reason !== undefined) {\n rejectPromise(reason);\n\n return;\n }\n\n ignoreUnhandled(currentDialog.meta.promise);\n rejectPromise(undefined);\n onCancel?.();\n };\n\n // The confirm and secondary buttons: run the handlers, and settle\n // once they have finished. A handler that throws or rejects keeps the\n // dialog open for another try, unless it was aborted meanwhile.\n currentDialog.meta.act = (status, onPress) => {\n const result = runActionHandlers([\n onPress,\n status === 'confirm' ? onConfirm : onSecondary,\n ]);\n\n if (!isThenable(result)) {\n currentDialog.meta.resolve(status);\n\n return;\n }\n\n setPending(status);\n\n result.then(\n () => {\n setPending(null);\n\n if (currentDialog.meta.isClosed) return;\n\n currentDialog.meta.resolve(status);\n // The press's own dismissal was held back while it ran.\n onDismiss?.(status);\n },\n (error) => {\n setPending(null);\n reportActionError(error);\n\n if (isAbortedWhilePending) currentDialog.meta.reject(undefined);\n },\n );\n };\n\n for (const signal of signals) {\n signal.addEventListener('abort', onAbort, { once: true });\n }\n\n currentDialog.props = {\n ...restProps,\n // Called with the action's name by the action buttons, and without\n // one by Escape and a click outside.\n onDismiss: (action) => {\n if (pending) return;\n\n onDismiss?.(action);\n currentDialog.meta.reject(undefined);\n },\n };\n\n setOpenedDialog((openedDialog) => {\n // Another dialog is open, so this one can't be. One that is only\n // animating out gives way: its cleanup checks the id, so it leaves\n // the new dialog alone.\n if (openedDialog !== null && !openedDialog.meta.isClosed) {\n currentDialog.meta.reject(\n new Error(\n \"Another dialog is already opened. It's a bad practice to open more than one <AlertDialog /> at the same time\",\n ),\n );\n\n return openedDialog;\n }\n\n return currentDialog;\n });\n\n return currentDialog.meta.promise;\n },\n }),\n [],\n );\n\n return (\n <DialogApiContext.Provider value={opener}>\n <AlertDialogZone\n openedDialog={openedDialog}\n pendingAction={pendingAction}\n />\n {props.children}\n </DialogApiContext.Provider>\n );\n}\n\n/**\n * Hook gives the ability to open `<AlertDialog />` imperatively.\n *\n * Pass the action as `onConfirm`. If it returns a promise, the dialog waits\n * for it with the button loading, and stays open if it fails.\n *\n * The returned promise resolves with the action the user picked and rejects\n * with `undefined` on a cancel. A caller that runs everything in the callbacks\n * can ignore it: an ignored cancel is not reported as an unhandled rejection.\n *\n * A dialog belongs to the component that calls this hook: when that component\n * unmounts, its dialog closes as a cancel, so no callback runs against a\n * component that is gone. Call the hook in a component that stays mounted\n * while the dialog is open, such as the one that renders a menu, not in the\n * menu item that closes it. A confirm or secondary action that is running\n * finishes first.\n *\n * ***Important*** only one alert dialog can be open at a time: `open` rejects\n * with an `Error` while another one is open. A dialog that is already closing\n * gives way.\n *\n * @example running the action from the dialog.\n * const { open } = useAlertDialogAPI();\n *\n * const onPress = () => {\n * open({\n * title: 'Delete the item?',\n * danger: true,\n * actions: { confirm: { children: 'Delete' }, cancel: true },\n * onConfirm: () => deleteItem(),\n * });\n * };\n *\n * return <Button onPress={onPress}>Delete</Button>\n *\n * @example closing the dialog from code with a cancel token.\n * const { open } = useAlertDialogAPI();\n * const controllerRef = useRef<AbortController | null>(null);\n *\n * const onPress = () => {\n * // A signal stays aborted, so every dialog needs a fresh controller.\n * controllerRef.current = new AbortController();\n *\n * open(\n * { title: 'Waiting for approval', actions: { confirm: { children: 'Hide' } } },\n * { cancelToken: controllerRef.current.signal },\n * );\n * };\n *\n * // Later, e.g. when the approval arrives:\n * controllerRef.current?.abort();\n */\nexport function useAlertDialogAPI(): AlertDialogApi {\n const opener = useContext(DialogApiContext);\n\n invariant(\n opener !== null,\n \"You can't use DialogApi outside of <Root /> component. Please, check if your component is descendant of <Root/> component\",\n );\n\n const [owner] = useState(() => createDialogOwner(opener));\n\n // A layout effect, so it is in place before any passive effect calls `open`.\n useLayoutEffect(() => owner.attach(), [owner]);\n\n return owner.api;\n}\n\n/**\n * One `useAlertDialogAPI` caller's `open`, whose dialogs close when the\n * caller unmounts. Its identity is the caller's for good: callers put `open`\n * in effect dependencies.\n */\nfunction createDialogOwner(opener: AlertDialogOpener) {\n // Aborted on unmount. Made on first use, so a StrictMode remount, which\n // runs the cleanup once, gets a fresh one.\n let lifetime: AbortController | null = null;\n let isUnmounted = false;\n\n const api: AlertDialogApi = {\n open: (dialogProps, params = {}) => {\n let owner: AbortSignal;\n\n if (isUnmounted) {\n // A late call, after an `await`, from a caller that is gone.\n owner = AbortSignal.abort();\n } else {\n lifetime ??= new AbortController();\n owner = lifetime.signal;\n }\n\n const { cancelToken } = params;\n\n return opener.open(\n dialogProps,\n cancelToken ? [owner, cancelToken] : [owner],\n );\n },\n };\n\n /** The effect setup. Its cleanup closes the dialogs the caller opened. */\n const attach = () => {\n isUnmounted = false;\n\n return () => {\n isUnmounted = true;\n lifetime?.abort();\n lifetime = null;\n };\n };\n\n return { api, attach };\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.195.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.197.0 | Cube Dev Team */
2
2
  import { Portal } from "../../portal/Portal.js";
3
3
  import { DialogContainer } from "../Dialog/DialogContainer.js";
4
4
  import { _AlertDialog } from "./AlertDialog.js";