@cube-dev/ui-kit 0.188.0 → 0.190.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 (622) hide show
  1. package/README.md +4 -0
  2. package/dist/CHANGELOG.md +20 -0
  3. package/dist/README.md +4 -0
  4. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  5. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  6. package/dist/_internal/hooks/use-event.js +1 -1
  7. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  8. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  9. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  10. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  11. package/dist/_internal/hooks/use-warn.js +1 -1
  12. package/dist/components/Block.js +1 -1
  13. package/dist/components/CollectionItem.js +1 -1
  14. package/dist/components/GlobalStyles.js +3 -6
  15. package/dist/components/GlobalStyles.js.map +1 -1
  16. package/dist/components/GridProvider.js +1 -1
  17. package/dist/components/HiddenInput.js +1 -1
  18. package/dist/components/Root.js +1 -1
  19. package/dist/components/actions/Action/Action.js +1 -1
  20. package/dist/components/actions/Banner/Banner.js +1 -1
  21. package/dist/components/actions/Button/Button.js +1 -1
  22. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  23. package/dist/components/actions/ButtonSplit/ButtonSplit.js +40 -19
  24. package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
  25. package/dist/components/actions/ButtonSplit/context.js +1 -1
  26. package/dist/components/actions/CommandMenu/CommandMenu.js +4 -7
  27. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  28. package/dist/components/actions/CommandMenu/styled.js +1 -1
  29. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  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/ItemActionsWrapper.js.map +1 -1
  34. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  35. package/dist/components/actions/Link/Link.js +1 -1
  36. package/dist/components/actions/Menu/Menu.js +1 -1
  37. package/dist/components/actions/Menu/MenuItem.js +1 -1
  38. package/dist/components/actions/Menu/MenuSection.js +1 -1
  39. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  40. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  41. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  42. package/dist/components/actions/Menu/context.js +1 -1
  43. package/dist/components/actions/Menu/styled.js +4 -6
  44. package/dist/components/actions/Menu/styled.js.map +1 -1
  45. package/dist/components/actions/actions-run.js +1 -1
  46. package/dist/components/actions/index.js +1 -1
  47. package/dist/components/actions/use-action.js +1 -1
  48. package/dist/components/actions/use-anchored-menu.js +1 -1
  49. package/dist/components/actions/use-context-menu.js +1 -1
  50. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  51. package/dist/components/content/Alert/Alert.js +1 -1
  52. package/dist/components/content/Alert/Alert.js.map +1 -1
  53. package/dist/components/content/Alert/use-alert.js +1 -1
  54. package/dist/components/content/Avatar/Avatar.js +1 -1
  55. package/dist/components/content/Badge/Badge.js +1 -1
  56. package/dist/components/content/Badge/Badge.js.map +1 -1
  57. package/dist/components/content/Card/Card.js +1 -1
  58. package/dist/components/content/Content.js +1 -1
  59. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  60. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  61. package/dist/components/content/Disclosure/Disclosure.js +53 -78
  62. package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
  63. package/dist/components/content/Divider.js +1 -1
  64. package/dist/components/content/Footer.js +1 -1
  65. package/dist/components/content/Header.js +1 -1
  66. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  67. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  68. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  69. package/dist/components/content/Item/Item.js +11 -10
  70. package/dist/components/content/Item/Item.js.map +1 -1
  71. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  72. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  73. package/dist/components/content/Layout/GridLayout.js +1 -1
  74. package/dist/components/content/Layout/Layout.js +1 -1
  75. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  76. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  77. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  78. package/dist/components/content/Layout/LayoutContent.js +1 -1
  79. package/dist/components/content/Layout/LayoutContext.js +1 -1
  80. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  81. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  82. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  83. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  84. package/dist/components/content/Layout/LayoutPane.js +1 -1
  85. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  86. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  87. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  88. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  89. package/dist/components/content/Layout/index.js +1 -1
  90. package/dist/components/content/Layout/utils.js +1 -1
  91. package/dist/components/content/Paragraph.js +1 -1
  92. package/dist/components/content/Placeholder/Placeholder.js +13 -22
  93. package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
  94. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  95. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  96. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  97. package/dist/components/content/Result/Result.d.ts +34 -4
  98. package/dist/components/content/Result/Result.js +199 -95
  99. package/dist/components/content/Result/Result.js.map +1 -1
  100. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  101. package/dist/components/content/Tag/Tag.js +3 -5
  102. package/dist/components/content/Tag/Tag.js.map +1 -1
  103. package/dist/components/content/Text.js +1 -1
  104. package/dist/components/content/TextItem/TextItem.js +1 -1
  105. package/dist/components/content/Title.d.ts +2 -0
  106. package/dist/components/content/Title.js +1 -1
  107. package/dist/components/content/Title.js.map +1 -1
  108. package/dist/components/content/Tree/Tree.js +1 -1
  109. package/dist/components/content/Tree/TreeNode.js +1 -1
  110. package/dist/components/content/Tree/styled.js +1 -1
  111. package/dist/components/content/Tree/styled.js.map +1 -1
  112. package/dist/components/content/Tree/tree-index.js +1 -1
  113. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  114. package/dist/components/content/Tree/use-load-data.js +1 -1
  115. package/dist/components/content/highlightText.js +1 -1
  116. package/dist/components/content/use-auto-tooltip.js +1 -1
  117. package/dist/components/data/DataTable/DataTable.js +3 -6
  118. package/dist/components/data/DataTable/DataTable.js.map +1 -1
  119. package/dist/components/data/ItemTable/ItemTable.js +3 -6
  120. package/dist/components/data/ItemTable/ItemTable.js.map +1 -1
  121. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  122. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  123. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  124. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  125. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  126. package/dist/components/data/TableBase/RowCollection.js +1 -1
  127. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  128. package/dist/components/data/TableBase/TableRow.js +1 -1
  129. package/dist/components/data/TableBase/TableView.js +1 -1
  130. package/dist/components/data/TableBase/column-menu.js +1 -1
  131. package/dist/components/data/TableBase/column-styles.js +1 -1
  132. package/dist/components/data/TableBase/column-tint.js +1 -1
  133. package/dist/components/data/TableBase/row-menu.js +1 -1
  134. package/dist/components/data/TableBase/styled.js +8 -10
  135. package/dist/components/data/TableBase/styled.js.map +1 -1
  136. package/dist/components/data/TableBase/table-tree.js +1 -1
  137. package/dist/components/data/TableBase/types.js +1 -1
  138. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  139. package/dist/components/data/TableBase/use-column-order.js +1 -1
  140. package/dist/components/data/TableBase/use-container-width.js +1 -1
  141. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  142. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  143. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  144. package/dist/components/data/TableBase/use-table-search.js +1 -1
  145. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  146. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  147. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  148. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  149. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  150. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  151. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  152. package/dist/components/fields/Checkbox/context.js +1 -1
  153. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  154. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  155. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  156. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  157. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  158. package/dist/components/fields/CommandTextArea/CommandTextArea.js +3 -5
  159. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  160. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  161. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  162. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  163. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  164. package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
  165. package/dist/components/fields/DatePicker/DatePicker.js +119 -129
  166. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  167. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  168. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  169. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  170. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  171. package/dist/components/fields/DatePicker/DateRangePicker.js +128 -138
  172. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  173. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +321 -331
  174. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  175. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  176. package/dist/components/fields/DatePicker/PeriodPicker.js +163 -179
  177. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  178. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  179. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  180. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  181. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  182. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  183. package/dist/components/fields/DatePicker/period.js +1 -1
  184. package/dist/components/fields/DatePicker/props.js +1 -1
  185. package/dist/components/fields/DatePicker/utils.js +1 -1
  186. package/dist/components/fields/FileInput/FileInput.js +1 -1
  187. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  188. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  189. package/dist/components/fields/FilterPicker/FilterPicker.js +5 -6
  190. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  191. package/dist/components/fields/Input/Input.js +1 -1
  192. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  193. package/dist/components/fields/ListBox/ListBox.js +1 -1
  194. package/dist/components/fields/ListBox/optionId.js +1 -1
  195. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  196. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  197. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  198. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  199. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  200. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  201. package/dist/components/fields/Picker/Picker.js +5 -6
  202. package/dist/components/fields/Picker/Picker.js.map +1 -1
  203. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  204. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  205. package/dist/components/fields/RadioGroup/context.js +1 -1
  206. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  207. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  208. package/dist/components/fields/Select/Select.js +68 -66
  209. package/dist/components/fields/Select/Select.js.map +1 -1
  210. package/dist/components/fields/Slider/Gradation.js +1 -1
  211. package/dist/components/fields/Slider/HueSlider.js +33 -43
  212. package/dist/components/fields/Slider/HueSlider.js.map +1 -1
  213. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  214. package/dist/components/fields/Slider/Slider.js +1 -1
  215. package/dist/components/fields/Slider/SliderBase.js +1 -1
  216. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  217. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  218. package/dist/components/fields/Slider/elements.js +1 -1
  219. package/dist/components/fields/Slider/index.js +1 -1
  220. package/dist/components/fields/Switch/Switch.js +1 -1
  221. package/dist/components/fields/TagInput/TagInput.js +1 -1
  222. package/dist/components/fields/TagInput/TagList.js +1 -1
  223. package/dist/components/fields/TextArea/TextArea.js +1 -1
  224. package/dist/components/fields/TextInput/TextInput.js +1 -1
  225. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  226. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  227. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  228. package/dist/components/fields/TriggerActions.js +1 -1
  229. package/dist/components/fields/color/ColorPanel.js +1 -1
  230. package/dist/components/fields/color/channels.js +1 -1
  231. package/dist/components/fields/color/color.js +1 -1
  232. package/dist/components/fields/color/context.js +1 -1
  233. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  234. package/dist/components/form/Form/Field.js +1 -1
  235. package/dist/components/form/Form/Form.js +1 -1
  236. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  237. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  238. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  239. package/dist/components/form/Form/SubmitError.js +1 -1
  240. package/dist/components/form/Form/backend.js +1 -1
  241. package/dist/components/form/Form/index.js +1 -1
  242. package/dist/components/form/Form/modern/actions.js +1 -1
  243. package/dist/components/form/Form/modern/context.js +1 -1
  244. package/dist/components/form/Form/modern/controller.js +1 -1
  245. package/dist/components/form/Form/modern/field-binding.js +1 -1
  246. package/dist/components/form/Form/modern/field.js +1 -1
  247. package/dist/components/form/Form/modern/react.js +1 -1
  248. package/dist/components/form/Form/modern/store.js +1 -1
  249. package/dist/components/form/Form/modern/validation.js +1 -1
  250. package/dist/components/form/Form/modern/values.js +1 -1
  251. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  252. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  253. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  254. package/dist/components/form/Form/use-field/use-field.js +1 -1
  255. package/dist/components/form/Form/use-form.js +1 -1
  256. package/dist/components/form/Form/validation.js +1 -1
  257. package/dist/components/form/Label.js +1 -1
  258. package/dist/components/form/legacy-tooltip.js +1 -1
  259. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  260. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  261. package/dist/components/form/validation/use-validation-props.js +1 -1
  262. package/dist/components/form/wrapper.js +1 -1
  263. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  264. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  265. package/dist/components/layout/Board/Board.js +2 -2
  266. package/dist/components/layout/Board/Board.js.map +1 -1
  267. package/dist/components/layout/Board/BoardProvider.js +1 -1
  268. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  269. package/dist/components/layout/Board/Widget.js +1 -1
  270. package/dist/components/layout/Board/WidgetHost.js +4 -4
  271. package/dist/components/layout/Board/WidgetHost.js.map +1 -1
  272. package/dist/components/layout/Board/board-context.js +1 -1
  273. package/dist/components/layout/Board/board-store.js +1 -1
  274. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  275. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  276. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  277. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  278. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  279. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  280. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  281. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  282. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  283. package/dist/components/layout/Board/index.js +1 -1
  284. package/dist/components/layout/Board/responsive-utils.js +1 -1
  285. package/dist/components/layout/Board/use-board-layout.js +1 -1
  286. package/dist/components/layout/Board/use-board-registry.js +1 -1
  287. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  288. package/dist/components/layout/Board/use-board-selection.js +1 -1
  289. package/dist/components/layout/Flex.js +1 -1
  290. package/dist/components/layout/Flow.js +1 -1
  291. package/dist/components/layout/Grid.js +1 -1
  292. package/dist/components/layout/Panel.js +1 -1
  293. package/dist/components/layout/Prefix.js +1 -1
  294. package/dist/components/layout/ResizablePanel.js +1 -1
  295. package/dist/components/layout/Space.js +1 -1
  296. package/dist/components/layout/Suffix.js +1 -1
  297. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  298. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  299. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  300. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  301. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  302. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  303. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  304. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  305. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  306. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  307. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  308. package/dist/components/navigation/Tabs/styled.js +1 -1
  309. package/dist/components/navigation/Tabs/types.js +1 -1
  310. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  311. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  312. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  313. package/dist/components/other/Calendar/Calendar.js +1 -1
  314. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  315. package/dist/components/other/Calendar/CalendarCell.js.map +1 -1
  316. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  317. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  318. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  319. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  320. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  321. package/dist/components/other/Calendar/PeriodGrid.js.map +1 -1
  322. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  323. package/dist/components/other/Calendar/styled.js +1 -1
  324. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  325. package/dist/components/other/CubeLogo/CubeLogo.js.map +1 -1
  326. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  327. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  328. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.d.ts +45 -50
  329. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +137 -70
  330. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js.map +1 -1
  331. package/dist/components/overlays/AlertDialog/AlertDialogZone.d.ts +1 -0
  332. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +123 -109
  333. package/dist/components/overlays/AlertDialog/AlertDialogZone.js.map +1 -1
  334. package/dist/components/overlays/AlertDialog/index.d.ts +2 -1
  335. package/dist/components/overlays/AlertDialog/types.d.ts +30 -1
  336. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  337. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  338. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  339. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  340. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  341. package/dist/components/overlays/Dialog/context.js +1 -1
  342. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  343. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  344. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  345. package/dist/components/overlays/Modal/Modal.js +1 -1
  346. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  347. package/dist/components/overlays/Modal/Overlay.js +1 -1
  348. package/dist/components/overlays/Modal/Popover.js +2 -2
  349. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  350. package/dist/components/overlays/Modal/Tray.js +1 -1
  351. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  352. package/dist/components/overlays/Modal/Underlay.js +1 -1
  353. package/dist/components/overlays/Notifications/Notification.js +1 -1
  354. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  355. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  356. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  357. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  358. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  359. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  360. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  361. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  362. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  363. package/dist/components/overlays/Notifications/index.js +1 -1
  364. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  365. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  366. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  367. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  368. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  369. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  370. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  371. package/dist/components/overlays/Toast/index.js +1 -1
  372. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  373. package/dist/components/overlays/Toast/useToast.js +1 -1
  374. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  375. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  376. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  377. package/dist/components/overlays/Tooltip/context.js +1 -1
  378. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  379. package/dist/components/portal/Portal.js +1 -1
  380. package/dist/components/portal/PortalProvider.js +1 -1
  381. package/dist/components/portal/usePortal.js +1 -1
  382. package/dist/components/shared/DraggableCollection.js +1 -1
  383. package/dist/components/shared/InvalidIcon.js +1 -1
  384. package/dist/components/shared/ValidIcon.js +1 -1
  385. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  386. package/dist/components/status/Spin/Cube.js +1 -1
  387. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  388. package/dist/components/status/Spin/Spin.js +1 -1
  389. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  390. package/dist/data/item-themes.js +1 -1
  391. package/dist/data/themes.js +1 -1
  392. package/dist/eslint-plugin/defaults.generated.js +17 -1
  393. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  394. package/dist/eslint-plugin/index.js +1 -1
  395. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  396. package/dist/i18n/I18nProvider.js +1 -1
  397. package/dist/i18n/createFormatter.js +1 -1
  398. package/dist/i18n/index.js +1 -1
  399. package/dist/i18n/instance.js +1 -1
  400. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  401. package/dist/i18n/locales/en-US/uikit.js +1 -1
  402. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  403. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  404. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  405. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  406. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  407. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  408. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  409. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  410. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  411. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  412. package/dist/i18n/locales.js +1 -1
  413. package/dist/i18n/useFormatter.js +1 -1
  414. package/dist/i18n/useI18n.js +1 -1
  415. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  416. package/dist/icons/AdjustmentsIcon.js +1 -1
  417. package/dist/icons/AiIcon.js +1 -1
  418. package/dist/icons/AreaChartIcon.js +1 -1
  419. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  420. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  421. package/dist/icons/BackwardIcon.js +1 -1
  422. package/dist/icons/BarChartIcon.js +1 -1
  423. package/dist/icons/BellFilledIcon.js +1 -1
  424. package/dist/icons/BellIcon.js +1 -1
  425. package/dist/icons/BooleanIcon.js +1 -1
  426. package/dist/icons/CalendarEditIcon.js +1 -1
  427. package/dist/icons/CalendarIcon.js +1 -1
  428. package/dist/icons/CaretDownIcon.js +1 -1
  429. package/dist/icons/CaretUpIcon.js +1 -1
  430. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  431. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  432. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  433. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  434. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  435. package/dist/icons/ChartBarLineIcon.js +1 -1
  436. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  437. package/dist/icons/ChartBarStackedIcon.js +1 -1
  438. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  439. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  440. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  441. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  442. package/dist/icons/ChartBubbleIcon.js +1 -1
  443. package/dist/icons/ChartDonut2Icon.js +1 -1
  444. package/dist/icons/ChartFunnelIcon.js +1 -1
  445. package/dist/icons/ChartHeatmapIcon.js +1 -1
  446. package/dist/icons/ChartKPIIcon.js +1 -1
  447. package/dist/icons/ChartPie2Icon.js +1 -1
  448. package/dist/icons/ChartScatterIcon.js +1 -1
  449. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  450. package/dist/icons/CheckCircleIcon.js +1 -1
  451. package/dist/icons/CheckIcon.js +1 -1
  452. package/dist/icons/CircleFilledIcon.js +1 -1
  453. package/dist/icons/ClearIcon.js +1 -1
  454. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  455. package/dist/icons/CloseCircleIcon.js +1 -1
  456. package/dist/icons/CloseIcon.js +1 -1
  457. package/dist/icons/CodeIcon.js +1 -1
  458. package/dist/icons/ColumnTotalIcon.js +1 -1
  459. package/dist/icons/CopyIcon.js +1 -1
  460. package/dist/icons/CountIcon.js +1 -1
  461. package/dist/icons/CubeIcon.js +1 -1
  462. package/dist/icons/CubePauseIcon.js +1 -1
  463. package/dist/icons/CubePlayIcon.js +1 -1
  464. package/dist/icons/CurrencyDollarIcon.js +1 -1
  465. package/dist/icons/DangerIcon.js +1 -1
  466. package/dist/icons/DashboardIcon.js +1 -1
  467. package/dist/icons/DatabaseIcon.js +1 -1
  468. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  469. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  470. package/dist/icons/DirectionIcon.js +1 -1
  471. package/dist/icons/DonutIcon.js +1 -1
  472. package/dist/icons/DownIcon.js +1 -1
  473. package/dist/icons/EditIcon.js +1 -1
  474. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  475. package/dist/icons/ExclamationCircleIcon.js +1 -1
  476. package/dist/icons/ExclamationIcon.js +1 -1
  477. package/dist/icons/EyeIcon.js +1 -1
  478. package/dist/icons/EyeInvisibleIcon.js +1 -1
  479. package/dist/icons/FilterIcon.js +1 -1
  480. package/dist/icons/FolderFilledIcon.js +1 -1
  481. package/dist/icons/FolderIcon.js +1 -1
  482. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  483. package/dist/icons/FolderOpenIcon.js +1 -1
  484. package/dist/icons/ForwardIcon.js +1 -1
  485. package/dist/icons/GripVerticalIcon.js +1 -1
  486. package/dist/icons/HierarchyIcon.js +1 -1
  487. package/dist/icons/HierarchyOpenIcon.js +1 -1
  488. package/dist/icons/Icon.js +1 -1
  489. package/dist/icons/InfoCircleIcon.js +1 -1
  490. package/dist/icons/InfoIcon.js +1 -1
  491. package/dist/icons/KeyIcon.js +1 -1
  492. package/dist/icons/LeftIcon.js +1 -1
  493. package/dist/icons/LineChartIcon.js +1 -1
  494. package/dist/icons/LoadingIcon.js +1 -1
  495. package/dist/icons/LockFilledIcon.js +1 -1
  496. package/dist/icons/LockIcon.js +1 -1
  497. package/dist/icons/MoreIcon.js +1 -1
  498. package/dist/icons/NotAllowedIcon.js +1 -1
  499. package/dist/icons/Number123Icon.js +1 -1
  500. package/dist/icons/NumberIcon.js +1 -1
  501. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  502. package/dist/icons/PauseCircleIcon.js +1 -1
  503. package/dist/icons/PauseIcon.js +1 -1
  504. package/dist/icons/PercentageIcon.js +1 -1
  505. package/dist/icons/PieChartIcon.js +1 -1
  506. package/dist/icons/PipetteIcon.js +1 -1
  507. package/dist/icons/PlayCircleIcon.js +1 -1
  508. package/dist/icons/PlayIcon.js +1 -1
  509. package/dist/icons/PlusIcon.js +1 -1
  510. package/dist/icons/ProgressBarIcon.js +1 -1
  511. package/dist/icons/ReloadIcon.js +1 -1
  512. package/dist/icons/ReportIcon.js +1 -1
  513. package/dist/icons/ReturnIcon.js +1 -1
  514. package/dist/icons/RightIcon.js +1 -1
  515. package/dist/icons/RowTotalsIcon.js +1 -1
  516. package/dist/icons/SchemeIcon.js +1 -1
  517. package/dist/icons/SearchIcon.js +1 -1
  518. package/dist/icons/SemanticQueryIcon.js +1 -1
  519. package/dist/icons/SettingsIcon.js +1 -1
  520. package/dist/icons/ShieldFilledIcon.js +1 -1
  521. package/dist/icons/ShieldIcon.js +1 -1
  522. package/dist/icons/SlashIcon.js +1 -1
  523. package/dist/icons/SparklesIcon.js +1 -1
  524. package/dist/icons/SqlIcon.js +1 -1
  525. package/dist/icons/StatsIcon.js +1 -1
  526. package/dist/icons/StopIcon.js +1 -1
  527. package/dist/icons/StringIcon.js +1 -1
  528. package/dist/icons/SubtotalsIcon.js +1 -1
  529. package/dist/icons/SwitchIcon.js +1 -1
  530. package/dist/icons/TableIcon.js +1 -1
  531. package/dist/icons/ThumbsDownIcon.js +1 -1
  532. package/dist/icons/ThumbsUpIcon.js +1 -1
  533. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  534. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  535. package/dist/icons/ThunderboltIcon.js +1 -1
  536. package/dist/icons/TimeIcon.js +1 -1
  537. package/dist/icons/TrashIcon.js +1 -1
  538. package/dist/icons/UnlockIcon.js +1 -1
  539. package/dist/icons/UpIcon.js +1 -1
  540. package/dist/icons/UserGroupIcon.js +1 -1
  541. package/dist/icons/UserIcon.js +1 -1
  542. package/dist/icons/UserLockIcon.js +1 -1
  543. package/dist/icons/ViewIcon.js +1 -1
  544. package/dist/icons/WarningFilledIcon.js +1 -1
  545. package/dist/icons/WarningIcon.js +1 -1
  546. package/dist/icons/wrap-icon.js +1 -1
  547. package/dist/index.d.ts +4 -3
  548. package/dist/index.js +3 -3
  549. package/dist/index.js.map +1 -1
  550. package/dist/probe/canonicalize.js +1 -1
  551. package/dist/probe/css.js +1 -1
  552. package/dist/probe/index.js +1 -1
  553. package/dist/provider.js +1 -1
  554. package/dist/providers/TrackingProvider.js +1 -1
  555. package/dist/providers/navigationAdapter.default.js +1 -1
  556. package/dist/tokens/all-tokens.js +1 -1
  557. package/dist/tokens/base.js +1 -1
  558. package/dist/tokens/color-seed.js +1 -1
  559. package/dist/tokens/color-theme.js +1 -1
  560. package/dist/tokens/colors.js +1 -1
  561. package/dist/tokens/layout.js +1 -1
  562. package/dist/tokens/lazy-styles.js +1 -1
  563. package/dist/tokens/legacy-color.js +1 -1
  564. package/dist/tokens/palette-config.js +1 -1
  565. package/dist/tokens/palette.js +1 -1
  566. package/dist/tokens/resolve.js +1 -1
  567. package/dist/tokens/shadows.js +1 -1
  568. package/dist/tokens/sizes.js +1 -1
  569. package/dist/tokens/spacing.js +1 -1
  570. package/dist/tokens/typography.js +1 -1
  571. package/dist/utils/ResizeSensor.js +1 -1
  572. package/dist/utils/colors.js +1 -1
  573. package/dist/utils/dotize.js +1 -1
  574. package/dist/utils/is-dev-env.js +1 -1
  575. package/dist/utils/modules.js +1 -1
  576. package/dist/utils/promise.js +1 -1
  577. package/dist/utils/raf.js +1 -1
  578. package/dist/utils/random.js +1 -1
  579. package/dist/utils/range.js +1 -1
  580. package/dist/utils/react/RenderCache.js +1 -1
  581. package/dist/utils/react/Slots.js +1 -1
  582. package/dist/utils/react/chain.js +1 -1
  583. package/dist/utils/react/disabledProps.js +1 -1
  584. package/dist/utils/react/escapePropagation.js +1 -1
  585. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  586. package/dist/utils/react/index.js +1 -1
  587. package/dist/utils/react/interactions.js +1 -1
  588. package/dist/utils/react/isTextOnly.js +1 -1
  589. package/dist/utils/react/mapProps.js +1 -1
  590. package/dist/utils/react/mergeProps.js +1 -1
  591. package/dist/utils/react/nullableValue.js +1 -1
  592. package/dist/utils/react/programmaticFocus.js +1 -1
  593. package/dist/utils/react/resolveIcon.js +1 -1
  594. package/dist/utils/react/sharedStore.js +1 -1
  595. package/dist/utils/react/useBufferedValue.js +1 -1
  596. package/dist/utils/react/useCombinedRefs.js +1 -1
  597. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  598. package/dist/utils/react/useEventBus.js +1 -1
  599. package/dist/utils/react/useId.js +1 -1
  600. package/dist/utils/react/useIsDarwin.js +1 -1
  601. package/dist/utils/react/useKeySymbols.js +1 -1
  602. package/dist/utils/react/useLayoutEffect.js +1 -1
  603. package/dist/utils/react/useLocalStorage.js +1 -1
  604. package/dist/utils/react/useMergeStyles.js +1 -1
  605. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  606. package/dist/utils/react/usePopoverSync.js +1 -1
  607. package/dist/utils/react/useQaProps.js +1 -1
  608. package/dist/utils/react/useScheme.js +1 -1
  609. package/dist/utils/react/useViewportSize.js +1 -1
  610. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  611. package/dist/utils/selection.js +1 -1
  612. package/dist/utils/styles.js +51 -6
  613. package/dist/utils/styles.js.map +1 -1
  614. package/dist/utils/tree.js +1 -1
  615. package/dist/utils/warnings.js +1 -1
  616. package/dist/version.js +3 -3
  617. package/docs/components/content/Result.md +202 -12
  618. package/docs/components/content/Title.md +1 -0
  619. package/docs/components/overlays/AlertDialog.md +130 -0
  620. package/docs/tasty/dsl.md +28 -6
  621. package/docs/tasty/styles.md +20 -0
  622. package/package.json +3 -3
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.0 | Cube Dev Team */
2
2
  import { AlertDialogZone } from "./AlertDialogZone.js";
3
3
  import { c } from "react-compiler-runtime";
4
4
  import { createContext, useContext, useRef, useState } from "react";
@@ -7,19 +7,56 @@ import invariant from "tiny-invariant";
7
7
 
8
8
  //#region src/components/overlays/AlertDialog/AlertDialogApiProvider.tsx
9
9
  const DialogApiContext = createContext(null);
10
+ function isThenable(value) {
11
+ return !!value && typeof value.then === "function";
12
+ }
13
+ /** Runs an action handler, turning a throw into a rejected promise. */
14
+ function runHandler(handler) {
15
+ if (!handler) return void 0;
16
+ try {
17
+ return handler();
18
+ } catch (error) {
19
+ return Promise.reject(error);
20
+ }
21
+ }
22
+ /**
23
+ * Runs the button's `onPress` and the dialog's callback for the same action.
24
+ * Returns a promise when either does, so the dialog waits for both.
25
+ */
26
+ function runActionHandlers(handlers) {
27
+ const pending = handlers.map(runHandler).filter(isThenable);
28
+ return pending.length ? Promise.all(pending) : void 0;
29
+ }
30
+ /** A cancel rejection nobody listens to is not an error worth reporting. */
31
+ function ignoreUnhandled(promise) {
32
+ promise.catch(() => {});
33
+ return promise;
34
+ }
35
+ /** Reports a failed action handler without throwing into the press. */
36
+ function reportActionError(error) {
37
+ if (typeof globalThis.reportError === "function") globalThis.reportError(error);
38
+ else setTimeout(() => {
39
+ throw error;
40
+ });
41
+ }
10
42
  /**
11
43
  * @internal Do not use it in your code!
12
44
  */
13
45
  function AlertDialogApiProvider(props) {
14
- const $ = c(6);
46
+ const $ = c(7);
15
47
  const [openedDialog, setOpenedDialog] = useState(null);
48
+ const [pendingAction, setPendingAction] = useState(null);
16
49
  const id = useRef(0);
17
50
  let t0;
18
51
  if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
19
52
  t0 = { open: (dialogProps, t1) => {
20
53
  const params = t1 === void 0 ? {} : t1;
21
- const { onDismiss, ...restProps } = dialogProps;
54
+ const { onDismiss, onConfirm, onSecondary, onCancel, ...restProps } = dialogProps;
22
55
  const { cancelToken } = params;
56
+ if (cancelToken?.aborted) {
57
+ onCancel?.();
58
+ return ignoreUnhandled(Promise.reject(void 0));
59
+ }
23
60
  const currentId = id.current = id.current + 1;
24
61
  const currentDialog = {
25
62
  props: null,
@@ -29,10 +66,19 @@ function AlertDialogApiProvider(props) {
29
66
  isVisible: true
30
67
  }
31
68
  };
69
+ let pending = null;
70
+ const setPending = (status) => {
71
+ pending = status;
72
+ setPendingAction((current) => status ? {
73
+ id: currentId,
74
+ status
75
+ } : current?.id === currentId ? null : current);
76
+ };
77
+ const onAbort = () => currentDialog.meta.reject(void 0);
32
78
  const close = () => {
33
- if (currentDialog.meta.isClosed) return;
79
+ if (currentDialog.meta.isClosed) return false;
34
80
  currentDialog.meta.isClosed = true;
35
- params.cancelToken?.removeEventListener("abort", close);
81
+ cancelToken?.removeEventListener("abort", onAbort);
36
82
  setOpenedDialog((currentState) => currentState?.meta.id !== currentId ? currentState : {
37
83
  props: currentState.props,
38
84
  meta: {
@@ -41,28 +87,55 @@ function AlertDialogApiProvider(props) {
41
87
  }
42
88
  });
43
89
  setTimeout(() => setOpenedDialog((currentState_0) => currentState_0?.meta.id !== currentId ? currentState_0 : null), 300);
90
+ return true;
44
91
  };
45
- if (cancelToken?.aborted) return new Promise(_temp);
46
- cancelToken?.addEventListener("abort", close, { once: true });
92
+ let resolvePromise;
93
+ let rejectPromise;
47
94
  currentDialog.meta.promise = new Promise((resolve, reject) => {
48
- currentDialog.meta.resolve = (status) => {
49
- close();
50
- resolve(status);
51
- };
52
- currentDialog.meta.reject = (reason) => {
53
- close();
54
- reject(reason);
55
- };
95
+ resolvePromise = resolve;
96
+ rejectPromise = reject;
56
97
  });
98
+ currentDialog.meta.resolve = (status_0) => {
99
+ if (close()) resolvePromise(status_0);
100
+ };
101
+ currentDialog.meta.reject = (reason) => {
102
+ if (!close()) return;
103
+ if (reason !== void 0) {
104
+ rejectPromise(reason);
105
+ return;
106
+ }
107
+ ignoreUnhandled(currentDialog.meta.promise);
108
+ rejectPromise(void 0);
109
+ onCancel?.();
110
+ };
111
+ currentDialog.meta.act = (status_1, onPress) => {
112
+ const result = runActionHandlers([onPress, status_1 === "confirm" ? onConfirm : onSecondary]);
113
+ if (!isThenable(result)) {
114
+ currentDialog.meta.resolve(status_1);
115
+ return;
116
+ }
117
+ setPending(status_1);
118
+ result.then(() => {
119
+ setPending(null);
120
+ if (currentDialog.meta.isClosed) return;
121
+ currentDialog.meta.resolve(status_1);
122
+ onDismiss?.(status_1);
123
+ }, (error) => {
124
+ setPending(null);
125
+ reportActionError(error);
126
+ });
127
+ };
128
+ cancelToken?.addEventListener("abort", onAbort, { once: true });
57
129
  currentDialog.props = {
58
130
  ...restProps,
59
- onDismiss: (e) => {
60
- onDismiss?.(e);
131
+ onDismiss: (action) => {
132
+ if (pending) return;
133
+ onDismiss?.(action);
61
134
  currentDialog.meta.reject(void 0);
62
135
  }
63
136
  };
64
137
  setOpenedDialog((openedDialog_0) => {
65
- if (openedDialog_0 !== null) {
138
+ if (openedDialog_0 !== null && !openedDialog_0.meta.isClosed) {
66
139
  currentDialog.meta.reject(/* @__PURE__ */ new Error("Another dialog is already opened. It's a bad practice to open more than one <AlertDialog /> at the same time"));
67
140
  return openedDialog_0;
68
141
  }
@@ -74,78 +147,72 @@ function AlertDialogApiProvider(props) {
74
147
  } else t0 = $[0];
75
148
  const api = t0;
76
149
  let t1;
77
- if ($[1] !== openedDialog) {
78
- t1 = /* @__PURE__ */ jsx(AlertDialogZone, { openedDialog });
150
+ if ($[1] !== openedDialog || $[2] !== pendingAction) {
151
+ t1 = /* @__PURE__ */ jsx(AlertDialogZone, {
152
+ openedDialog,
153
+ pendingAction
154
+ });
79
155
  $[1] = openedDialog;
80
- $[2] = t1;
81
- } else t1 = $[2];
156
+ $[2] = pendingAction;
157
+ $[3] = t1;
158
+ } else t1 = $[3];
82
159
  let t2;
83
- if ($[3] !== props.children || $[4] !== t1) {
160
+ if ($[4] !== props.children || $[5] !== t1) {
84
161
  t2 = /* @__PURE__ */ jsxs(DialogApiContext.Provider, {
85
162
  value: api,
86
163
  children: [t1, props.children]
87
164
  });
88
- $[3] = props.children;
89
- $[4] = t1;
90
- $[5] = t2;
91
- } else t2 = $[5];
165
+ $[4] = props.children;
166
+ $[5] = t1;
167
+ $[6] = t2;
168
+ } else t2 = $[6];
92
169
  return t2;
93
170
  }
94
171
  /**
95
172
  * Hook gives the ability to open `<AlertDialog />` imperatively.
96
173
  *
97
- * ***Important*** it's commonly a bad practice when you open multiple dialogs in a row;
98
- * that means this api will reject all dialogs when there is already open one
174
+ * Pass the action as `onConfirm`. If it returns a promise, the dialog waits
175
+ * for it with the button loading, and stays open if it fails.
176
+ *
177
+ * The returned promise resolves with the action the user picked and rejects
178
+ * with `undefined` on a cancel. A caller that runs everything in the callbacks
179
+ * can ignore it: an ignored cancel is not reported as an unhandled rejection.
180
+ *
181
+ * ***Important*** only one alert dialog can be open at a time: `open` rejects
182
+ * with an `Error` while another one is open. A dialog that is already closing
183
+ * gives way.
99
184
  *
100
- * @example calling in a side effect
101
- * const alertDialogAPI = useAlertDialogAPI();
185
+ * @example running the action from the dialog.
186
+ * const { open } = useAlertDialogAPI();
102
187
  *
103
- * useEffect(() => {
104
- * const abortDialog = new AbortController();
105
- * const openedDialog = alertDialogAPI.open({
106
- * title: 'Are you sure?',
107
- * content: <Paragraph>Test content</Paragraph>
108
- * }, {
109
- * cancelToken: abortDialog.signal
188
+ * const onPress = () => {
189
+ * open({
190
+ * title: 'Delete the item?',
191
+ * danger: true,
192
+ * actions: { confirm: { children: 'Delete' }, cancel: true },
193
+ * onConfirm: () => deleteItem(),
110
194
  * });
195
+ * };
111
196
  *
112
- * openedDialog
113
- * .then((status) => {
114
- * // User confirmed or used secondary action
115
- * if (status === 'confirm') {
116
- * // Handle confirm
117
- * } else if (status === 'secondary') {
118
- * // Handle secondary action
119
- * }
120
- * })
121
- * .catch(() => {
122
- * // User cancelled or dismissed the dialog
123
- * // Handle cancel/dismiss
124
- * })
197
+ * return <Button onPress={onPress}>Delete</Button>
125
198
  *
126
- * return () => {
127
- * abortDialog.abort();
128
- * }
129
- * }, [])
199
+ * @example closing the dialog from code with a cancel token.
200
+ * const { open } = useAlertDialogAPI();
201
+ * const controllerRef = useRef<AbortController | null>(null);
130
202
  *
131
- * @example opening dialog on Button click.
132
- * const alertDialogAPI = useAlertDialogAPI();
203
+ * const onPress = () => {
204
+ * // A signal stays aborted, so every dialog needs a fresh controller.
205
+ * controllerRef.current = new AbortController();
133
206
  *
134
- * const onPress = useCallback(() => {
135
- * alertDialogAPI.open({...})
136
- * .then((status) => {
137
- * if (status === 'confirm') {
138
- * // Handle confirm
139
- * }
140
- * })
141
- * .catch(() => {
142
- * // Handle cancel/dismiss
143
- * })
144
- * }, [])
207
+ * open(
208
+ * { title: 'Waiting for approval', actions: { confirm: { children: 'Hide' } } },
209
+ * { cancelToken: controllerRef.current.signal },
210
+ * );
211
+ * };
145
212
  *
146
- * return <Button onPress={onPress}>New issue</Button>
213
+ * // Later, e.g. when the approval arrives:
214
+ * controllerRef.current?.abort();
147
215
  */
148
- function _temp() {}
149
216
  function useAlertDialogAPI() {
150
217
  const api = useContext(DialogApiContext);
151
218
  invariant(api !== null, "You can't use DialogApi outside of <Root /> component. Please, check if your component is descendant of <Root/> component");
@@ -1 +1 @@
1
- {"version":3,"file":"AlertDialogApiProvider.js","names":["createContext","useContext","useMemo","useRef","useState","invariant","AlertDialogZone","AlertDialogResolveStatus","Dialog","DialogProps","DialogApiContext","DialogApi","open","dialogProps","params","DialogApiParams","Promise","cancelToken","AbortSignal","AlertDialogApiProvider","props","$","_c","openedDialog","setOpenedDialog","id","t0","Symbol","for","t1","undefined","onDismiss","restProps","currentId","current","currentDialog","meta","isClosed","isVisible","close","removeEventListener","currentState","setTimeout","currentState_0","aborted","_temp","addEventListener","once","promise","resolve","reject","status","reason","e","openedDialog_0","Error","api","t2","children","useAlertDialogAPI"],"sources":["../../../../src/components/overlays/AlertDialog/AlertDialogApiProvider.tsx"],"sourcesContent":["import { createContext, useContext, useMemo, useRef, useState } from 'react';\nimport invariant from 'tiny-invariant';\n\nimport { AlertDialogZone } from './AlertDialogZone';\nimport { AlertDialogResolveStatus, Dialog, DialogProps } from './types';\n\nconst DialogApiContext = createContext<DialogApi | null>(null);\n\ninterface DialogApi {\n open: (\n dialogProps: DialogProps,\n params?: DialogApiParams,\n ) => Promise<AlertDialogResolveStatus>;\n}\n\ninterface DialogApiParams {\n cancelToken?: AbortSignal;\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 id = useRef(0);\n\n const api = useMemo<DialogApi>(\n () => ({\n open: (dialogProps, params = {}) => {\n const { onDismiss, ...restProps } = dialogProps;\n const { cancelToken } = params;\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\n const close = () => {\n if (currentDialog.meta.isClosed) return;\n\n currentDialog.meta.isClosed = true;\n params.cancelToken?.removeEventListener('abort', close);\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\n if (cancelToken?.aborted)\n return new Promise<AlertDialogResolveStatus>(() => {});\n cancelToken?.addEventListener('abort', close, { once: true });\n\n currentDialog.meta.promise = new Promise((resolve, reject) => {\n currentDialog.meta.resolve = (status: AlertDialogResolveStatus) => {\n close();\n resolve(status);\n };\n currentDialog.meta.reject = (reason) => {\n close();\n reject(reason);\n };\n });\n\n currentDialog.props = {\n ...restProps,\n onDismiss: (e) => {\n onDismiss?.(e);\n currentDialog.meta.reject(undefined);\n },\n };\n\n setOpenedDialog((openedDialog) => {\n // we already have opened dialog, so we reject opening another\n if (openedDialog !== null) {\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={api}>\n <AlertDialogZone openedDialog={openedDialog} />\n {props.children}\n </DialogApiContext.Provider>\n );\n}\n\n/**\n * Hook gives the ability to open `<AlertDialog />` imperatively.\n *\n * ***Important*** it's commonly a bad practice when you open multiple dialogs in a row;\n * that means this api will reject all dialogs when there is already open one\n *\n * @example calling in a side effect\n * const alertDialogAPI = useAlertDialogAPI();\n *\n * useEffect(() => {\n * const abortDialog = new AbortController();\n * const openedDialog = alertDialogAPI.open({\n * title: 'Are you sure?',\n * content: <Paragraph>Test content</Paragraph>\n * }, {\n * cancelToken: abortDialog.signal\n * });\n *\n * openedDialog\n * .then((status) => {\n * // User confirmed or used secondary action\n * if (status === 'confirm') {\n * // Handle confirm\n * } else if (status === 'secondary') {\n * // Handle secondary action\n * }\n * })\n * .catch(() => {\n * // User cancelled or dismissed the dialog\n * // Handle cancel/dismiss\n * })\n *\n * return () => {\n * abortDialog.abort();\n * }\n * }, [])\n *\n * @example opening dialog on Button click.\n * const alertDialogAPI = useAlertDialogAPI();\n *\n * const onPress = useCallback(() => {\n * alertDialogAPI.open({...})\n * .then((status) => {\n * if (status === 'confirm') {\n * // Handle confirm\n * }\n * })\n * .catch(() => {\n * // Handle cancel/dismiss\n * })\n * }, [])\n *\n * return <Button onPress={onPress}>New issue</Button>\n */\nexport function useAlertDialogAPI(): DialogApi {\n const api = useContext(DialogApiContext);\n\n invariant(\n api !== null,\n \"You can't use DialogApi outside of <Root /> component. Please, check if your component is descendant of <Root/> component\",\n );\n\n return api;\n}\n"],"mappings":";;;;;;;;AAMA,MAAMU,mBAAmBV,cAAgC,KAAK;;;;AAgB9D,SAAOmB,uBAAAC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CACL,MAAA,CAAAC,cAAAC,mBAAwCpB,SAAwB,KAAK;CACrE,MAAAqB,KAAWtB,OAAO,EAAE;CAAC,IAAAuB;AAAA,KAAAL,EAAA,OAAAM,OAAAC,IAAA,4BAAA,EAAA;AAGZF,OAAA,EAAAd,OACCC,aAAAgB,OAAA;GAAc,MAAAf,SAAAe,OAAAC,SAAA,EAAW,GAAXD;GAClB,MAAA,EAAAE,WAAA,GAAAC,cAAoCnB;GACpC,MAAA,EAAAI,gBAAwBH;GACxB,MAAAmB,YAAoBR,GAAES,UAAFT,GAAES,UAAQ;GAC9B,MAAAC,gBAAsB;IAAAf,OACb;IAAIgB,MACL;KAAAX,IAAMQ;KAASI,UAAY;KAAKC,WAAa;KAAK;IACzD;GAED,MAAAC,cAAc;AACZ,QAAIJ,cAAaC,KAAKC,SAAS;AAE/BF,kBAAaC,KAAKC,WAAY;AAC9BvB,WAAMG,aAAiCuB,oBAAC,SAASD,MAAM;AAEvDf,qBAAgBiB,iBACdA,cAAYL,KAASX,OAAKQ,YAA1BQ,eAAA;KAAArB,OAGaqB,aAAYrB;KAAMgB,MACnB;MAAA,GAAKK,aAAYL;MAAKE,WAAa;MAAM;KAEvD,CAAC;AAEDI,qBAEIlB,iBAAgBmB,mBACdF,gBAAYL,KAASX,OAAKQ,YAA1BU,iBAAA,KACD,EACH,IACD;;AAGH,OAAI1B,aAAW2B,QAAS,QACf,IAAI5B,QAAkC6B,MAAS;AACxD5B,gBAAW6B,iBAAmB,SAASP,OAAO,EAAAQ,MAAQ,MAAM,CAAC;AAE7DZ,iBAAaC,KAAKY,UAAW,IAAIhC,SAAQiC,SAAAC,WAAA;AACvCf,kBAAaC,KAAKa,WAAWE,WAAA;AAC3BZ,YAAO;AACPU,aAAQE,OAAO;;AAEjBhB,kBAAaC,KAAKc,UAAUE,WAAA;AAC1Bb,YAAO;AACPW,YAAOE,OAAO;;KAPQ;AAW1BjB,iBAAaf,QAAS;IAAA,GACjBY;IAASD,YACDsB,MAAA;AACTtB,iBAAYsB,EAAE;AACdlB,mBAAaC,KAAKc,OAAQpB,OAAU;;IAJrB;AAQnBN,oBAAgB8B,mBAAA;AAEd,QAAI/B,mBAAiB,MAAI;AACvBY,mBAAaC,KAAKc,uBAChB,IAAIK,MACF,+GAEJ,CAAC;AAAA,YAEMhC;;AACR,WAEMY;KACP;AAAA,UAEKA,cAAaC,KAAKY;KAE5B;AAAA3B,IAAA,KAAAK;OAAAA,MAAAL,EAAA;CA3EH,MAAAmC,MACS9B;CA4EP,IAAAG;AAAA,KAAAR,EAAA,OAAAE,cAAA;AAIEM,OAAA,oBAAC,mBAA8BN,eAAgB;AAAAF,IAAA,KAAAE;AAAAF,IAAA,KAAAQ;OAAAA,MAAAR,EAAA;CAAA,IAAAoC;AAAA,KAAApC,EAAA,OAAAD,MAAAsC,YAAArC,EAAA,OAAAQ,IAAA;AADjD4B,OAAA,qBAAA,iBAAA;GAAkCD,OAAAA;cAChC3B,IACCT,MAAKsC;IACoB;AAAArC,IAAA,KAAAD,MAAAsC;AAAArC,IAAA,KAAAQ;AAAAR,IAAA,KAAAoC;OAAAA,MAAApC,EAAA;AAAA,QAH5BoC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AApFG,SAAAZ,QAAA;AAiJP,SAAOc,oBAAA;CACL,MAAAH,MAAYvD,WAAWS,iBAAiB;AAExCL,WACEmD,QAAQ,MACR,4HACD;AAAA,QAEMA"}
1
+ {"version":3,"file":"AlertDialogApiProvider.js","names":["createContext","useContext","useMemo","useRef","useState","invariant","AlertDialogZone","AlertDialogResolveStatus","Dialog","DialogProps","DialogApiContext","AlertDialogApi","open","dialogProps","params","AlertDialogApiParams","Promise","cancelToken","AbortSignal","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","t1","onDismiss","onConfirm","onSecondary","onCancel","restProps","aborted","currentId","current","currentDialog","meta","isClosed","isVisible","setPending","onAbort","close","removeEventListener","currentState","currentState_0","resolvePromise","rejectPromise","resolve","status_0","reason","act","status_1","onPress","result","addEventListener","once","action","openedDialog_0","Error","api","t2","children","useAlertDialogAPI"],"sources":["../../../../src/components/overlays/AlertDialog/AlertDialogApiProvider.tsx"],"sourcesContent":["import { createContext, useContext, useMemo, useRef, useState } from 'react';\nimport invariant from 'tiny-invariant';\n\nimport { AlertDialogZone } from './AlertDialogZone';\nimport { AlertDialogResolveStatus, Dialog, DialogProps } from './types';\n\nconst DialogApiContext = createContext<AlertDialogApi | 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 or an\n * aborted `cancelToken`), and with an `Error` when it cannot open. A cancel\n * is not reported as an 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 /** Closes the dialog when aborted, which settles it as a cancel. */\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: callers put `open` in effect dependencies, so its\n // identity has to stay the same.\n const api = useMemo<AlertDialogApi>(\n () => ({\n open: (dialogProps, params = {}) => {\n const { onDismiss, onConfirm, onSecondary, onCancel, ...restProps } =\n dialogProps;\n const { cancelToken } = params;\n\n // An aborted signal is a cancel: it settles before anything opens.\n if (cancelToken?.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 // Aborting is a cancel, so it settles the promise the way Cancel does.\n const onAbort = () => currentDialog.meta.reject(undefined);\n\n const close = () => {\n if (currentDialog.meta.isClosed) return false;\n\n currentDialog.meta.isClosed = true;\n cancelToken?.removeEventListener('abort', onAbort);\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 `cancelToken` 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.\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 );\n };\n\n cancelToken?.addEventListener('abort', onAbort, { once: true });\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={api}>\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 * ***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 api = useContext(DialogApiContext);\n\n invariant(\n api !== null,\n \"You can't use DialogApi outside of <Root /> component. Please, check if your component is descendant of <Root/> component\",\n );\n\n return api;\n}\n"],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
 
2
2
  import "./types.js";
3
+ import "./AlertDialogApiProvider.js";
3
4
  import "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.188.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.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";
@@ -11,8 +11,8 @@ const PORTAL_KEY = "AlertDialogZone";
11
11
  * @internal Do not use it
12
12
  */
13
13
  function AlertDialogZone(props) {
14
- const $ = c(40);
15
- const { openedDialog } = props;
14
+ const $ = c(45);
15
+ const { openedDialog, pendingAction } = props;
16
16
  if (openedDialog === null) {
17
17
  let t0;
18
18
  if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
@@ -45,124 +45,138 @@ function AlertDialogZone(props) {
45
45
  type = $[7];
46
46
  }
47
47
  const isDismissable = t0 === void 0 ? true : t0;
48
- const { resolve, reject, isVisible, dialogType } = openedDialog.meta;
48
+ const { id, resolve, reject, act, isVisible, dialogType } = openedDialog.meta;
49
+ const pending = pendingAction?.id === id ? pendingAction.status : null;
49
50
  let t1;
50
- bb0: {
51
- let t2;
52
- if ($[8] !== resolve) {
53
- t2 = (action, status) => {
54
- if (typeof action === "undefined") return;
55
- if (typeof action === "boolean") return action ? { onPress: () => resolve(status) } : false;
56
- const onPress = action.onPress;
57
- return {
58
- ...action,
59
- onPress: (e) => {
60
- onPress?.(e);
61
- resolve(status);
62
- }
63
- };
51
+ if ($[8] !== pending) {
52
+ t1 = (status) => pending ? {
53
+ isLoading: pending === status,
54
+ isDisabled: true
55
+ } : null;
56
+ $[8] = pending;
57
+ $[9] = t1;
58
+ } else t1 = $[9];
59
+ const lock = t1;
60
+ let t2;
61
+ if ($[10] !== act || $[11] !== lock) {
62
+ t2 = (action, status_0) => {
63
+ if (typeof action === "undefined") return;
64
+ if (typeof action === "boolean") return action ? {
65
+ ...lock(status_0),
66
+ onPress: () => act(status_0)
67
+ } : false;
68
+ const { onPress } = action;
69
+ return {
70
+ ...action,
71
+ ...lock(status_0),
72
+ onPress: (e) => act(status_0, onPress && (() => onPress(e)))
64
73
  };
65
- $[8] = resolve;
66
- $[9] = t2;
67
- } else t2 = $[9];
68
- const mergeActionProps = t2;
69
- if (typeof actions === "undefined") {
70
- let t3;
71
- if ($[10] === Symbol.for("react.memo_cache_sentinel")) {
72
- t3 = {};
73
- $[10] = t3;
74
- } else t3 = $[10];
75
- t1 = t3;
76
- break bb0;
77
- }
78
- let t3;
79
- if ($[11] !== actions.confirm || $[12] !== mergeActionProps) {
80
- t3 = mergeActionProps(actions.confirm, "confirm");
81
- $[11] = actions.confirm;
82
- $[12] = mergeActionProps;
83
- $[13] = t3;
84
- } else t3 = $[13];
85
- let t4;
86
- if ($[14] !== actions.secondary || $[15] !== mergeActionProps) {
87
- t4 = mergeActionProps(actions.secondary, "secondary");
88
- $[14] = actions.secondary;
89
- $[15] = mergeActionProps;
90
- $[16] = t4;
91
- } else t4 = $[16];
92
- let t5;
93
- if ($[17] !== actions.cancel || $[18] !== reject) {
94
- t5 = typeof actions.cancel === "undefined" ? void 0 : typeof actions.cancel === "boolean" ? actions.cancel ? { onPress: () => reject(void 0) } : false : {
95
- ...actions.cancel,
96
- onPress: (e_0) => {
97
- actions.cancel.onPress?.(e_0);
98
- reject(void 0);
99
- }
100
- };
101
- $[17] = actions.cancel;
102
- $[18] = reject;
103
- $[19] = t5;
104
- } else t5 = $[19];
105
- let t6;
106
- if ($[20] !== t3 || $[21] !== t4 || $[22] !== t5) {
107
- t6 = {
108
- confirm: t3,
109
- secondary: t4,
110
- cancel: t5
111
- };
112
- $[20] = t3;
113
- $[21] = t4;
114
- $[22] = t5;
115
- $[23] = t6;
116
- } else t6 = $[23];
117
- t1 = t6;
118
- }
119
- const _actions = t1;
120
- const t2 = dialogType === "form";
121
- const t3 = !isVisible;
122
- let t4;
123
- if ($[24] !== content || $[25] !== reject || $[26] !== resolve) {
124
- t4 = typeof content === "function" ? content({
74
+ };
75
+ $[10] = act;
76
+ $[11] = lock;
77
+ $[12] = t2;
78
+ } else t2 = $[12];
79
+ const mergeActionProps = t2;
80
+ let t3;
81
+ if ($[13] !== actions) {
82
+ t3 = actions ?? {};
83
+ $[13] = actions;
84
+ $[14] = t3;
85
+ } else t3 = $[14];
86
+ const { confirm: t4, secondary, cancel } = t3;
87
+ const confirm = t4 === void 0 ? true : t4;
88
+ let t5;
89
+ if ($[15] !== confirm || $[16] !== mergeActionProps) {
90
+ t5 = mergeActionProps(confirm, "confirm");
91
+ $[15] = confirm;
92
+ $[16] = mergeActionProps;
93
+ $[17] = t5;
94
+ } else t5 = $[17];
95
+ let t6;
96
+ if ($[18] !== mergeActionProps || $[19] !== secondary) {
97
+ t6 = mergeActionProps(secondary, "secondary");
98
+ $[18] = mergeActionProps;
99
+ $[19] = secondary;
100
+ $[20] = t6;
101
+ } else t6 = $[20];
102
+ let t7;
103
+ if ($[21] !== cancel || $[22] !== lock || $[23] !== reject) {
104
+ t7 = typeof cancel === "undefined" ? void 0 : typeof cancel === "boolean" ? cancel ? {
105
+ ...lock(),
106
+ onPress: () => reject(void 0)
107
+ } : false : {
108
+ ...cancel,
109
+ ...lock(),
110
+ onPress: (e_0) => {
111
+ cancel.onPress?.(e_0);
112
+ reject(void 0);
113
+ }
114
+ };
115
+ $[21] = cancel;
116
+ $[22] = lock;
117
+ $[23] = reject;
118
+ $[24] = t7;
119
+ } else t7 = $[24];
120
+ let t8;
121
+ if ($[25] !== t5 || $[26] !== t6 || $[27] !== t7) {
122
+ t8 = {
123
+ confirm: t5,
124
+ secondary: t6,
125
+ cancel: t7
126
+ };
127
+ $[25] = t5;
128
+ $[26] = t6;
129
+ $[27] = t7;
130
+ $[28] = t8;
131
+ } else t8 = $[28];
132
+ const _actions = t8;
133
+ const t9 = isDismissable && !pending;
134
+ const t10 = dialogType === "form";
135
+ const t11 = !isVisible;
136
+ let t12;
137
+ if ($[29] !== content || $[30] !== reject || $[31] !== resolve) {
138
+ t12 = typeof content === "function" ? content({
125
139
  resolve,
126
140
  reject
127
141
  }) : content;
128
- $[24] = content;
129
- $[25] = reject;
130
- $[26] = resolve;
131
- $[27] = t4;
132
- } else t4 = $[27];
133
- let t5;
134
- if ($[28] !== _actions || $[29] !== options || $[30] !== t2 || $[31] !== t3 || $[32] !== t4) {
135
- t5 = /* @__PURE__ */ jsx(_AlertDialog, {
136
- noActions: t2,
142
+ $[29] = content;
143
+ $[30] = reject;
144
+ $[31] = resolve;
145
+ $[32] = t12;
146
+ } else t12 = $[32];
147
+ let t13;
148
+ if ($[33] !== _actions || $[34] !== options || $[35] !== t10 || $[36] !== t11 || $[37] !== t12) {
149
+ t13 = /* @__PURE__ */ jsx(_AlertDialog, {
150
+ noActions: t10,
137
151
  actions: _actions,
138
- isHidden: t3,
139
- content: t4,
152
+ isHidden: t11,
153
+ content: t12,
140
154
  ...options
141
155
  });
142
- $[28] = _actions;
143
- $[29] = options;
144
- $[30] = t2;
145
- $[31] = t3;
146
- $[32] = t4;
147
- $[33] = t5;
148
- } else t5 = $[33];
149
- let t6;
150
- if ($[34] !== isDismissable || $[35] !== isVisible || $[36] !== onDismiss || $[37] !== t5 || $[38] !== type) {
151
- t6 = /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(DialogContainer, {
156
+ $[33] = _actions;
157
+ $[34] = options;
158
+ $[35] = t10;
159
+ $[36] = t11;
160
+ $[37] = t12;
161
+ $[38] = t13;
162
+ } else t13 = $[38];
163
+ let t14;
164
+ if ($[39] !== isVisible || $[40] !== onDismiss || $[41] !== t13 || $[42] !== t9 || $[43] !== type) {
165
+ t14 = /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(DialogContainer, {
152
166
  isOpen: isVisible,
153
- isDismissable,
167
+ isDismissable: t9,
154
168
  type,
155
169
  onDismiss,
156
- children: t5
170
+ children: t13
157
171
  }) }, PORTAL_KEY);
158
- $[34] = isDismissable;
159
- $[35] = isVisible;
160
- $[36] = onDismiss;
161
- $[37] = t5;
162
- $[38] = type;
163
- $[39] = t6;
164
- } else t6 = $[39];
165
- return t6;
172
+ $[39] = isVisible;
173
+ $[40] = onDismiss;
174
+ $[41] = t13;
175
+ $[42] = t9;
176
+ $[43] = type;
177
+ $[44] = t14;
178
+ } else t14 = $[44];
179
+ return t14;
166
180
  }
167
181
 
168
182
  //#endregion