@apia/components 1.0.4 → 2.0.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 (402) hide show
  1. package/dist/components/IconsList/Icon.js +42 -0
  2. package/dist/components/IconsList/Icon.js.map +1 -0
  3. package/dist/components/IconsList/IconWrapper.js +24 -0
  4. package/dist/components/IconsList/IconWrapper.js.map +1 -0
  5. package/dist/components/IconsList/KeyHandler.js +147 -0
  6. package/dist/components/IconsList/KeyHandler.js.map +1 -0
  7. package/dist/components/IconsList/context.js +14 -0
  8. package/dist/components/IconsList/context.js.map +1 -0
  9. package/dist/components/IconsList/index.d.ts +12 -0
  10. package/dist/components/IconsList/index.d.ts.map +1 -0
  11. package/dist/components/IconsList/index.js +119 -0
  12. package/dist/components/IconsList/index.js.map +1 -0
  13. package/dist/components/IconsList/renderers/DefaultIconRenderer.d.ts +7 -0
  14. package/dist/components/IconsList/renderers/DefaultIconRenderer.d.ts.map +1 -0
  15. package/dist/components/IconsList/renderers/DefaultIconRenderer.js +30 -0
  16. package/dist/components/IconsList/renderers/DefaultIconRenderer.js.map +1 -0
  17. package/dist/components/IconsList/store/context.js +9 -0
  18. package/dist/components/IconsList/store/context.js.map +1 -0
  19. package/dist/components/IconsList/store/distinctors.js +42 -0
  20. package/dist/components/IconsList/store/distinctors.js.map +1 -0
  21. package/dist/components/IconsList/store/keysMaker.js +8 -0
  22. package/dist/components/IconsList/store/keysMaker.js.map +1 -0
  23. package/dist/components/IconsList/store/operations.js +138 -0
  24. package/dist/components/IconsList/store/operations.js.map +1 -0
  25. package/dist/components/IconsList/store/state.js +9 -0
  26. package/dist/components/IconsList/store/state.js.map +1 -0
  27. package/dist/components/IconsList/store/useStore.js +52 -0
  28. package/dist/components/IconsList/store/useStore.js.map +1 -0
  29. package/dist/components/IconsList/styles.js +48 -0
  30. package/dist/components/IconsList/styles.js.map +1 -0
  31. package/dist/components/IconsList/types.d.ts +98 -0
  32. package/dist/components/IconsList/types.d.ts.map +1 -0
  33. package/dist/components/IconsList/util.js +46 -0
  34. package/dist/components/IconsList/util.js.map +1 -0
  35. package/dist/components/ListBox/Combobox.js +52 -0
  36. package/dist/components/ListBox/Combobox.js.map +1 -0
  37. package/dist/components/ListBox/ListboxContext.d.ts +35 -0
  38. package/dist/components/ListBox/ListboxContext.d.ts.map +1 -0
  39. package/dist/components/ListBox/ListboxContext.js +6 -0
  40. package/dist/components/ListBox/ListboxContext.js.map +1 -0
  41. package/dist/components/ListBox/ListboxItem.d.ts +17 -0
  42. package/dist/components/ListBox/ListboxItem.d.ts.map +1 -0
  43. package/dist/components/ListBox/ListboxItem.js +67 -0
  44. package/dist/components/ListBox/ListboxItem.js.map +1 -0
  45. package/dist/components/ListBox/ListboxKeyhandler.js +154 -0
  46. package/dist/components/ListBox/ListboxKeyhandler.js.map +1 -0
  47. package/dist/components/ListBox/common.d.ts +46 -0
  48. package/dist/components/ListBox/common.d.ts.map +1 -0
  49. package/dist/components/ListBox/common.js +118 -0
  50. package/dist/components/ListBox/common.js.map +1 -0
  51. package/dist/components/ListBox/index.d.ts +21 -0
  52. package/dist/components/ListBox/index.d.ts.map +1 -0
  53. package/dist/components/ListBox/index.js +71 -0
  54. package/dist/components/ListBox/index.js.map +1 -0
  55. package/dist/components/ListBox/listbox.js +46 -0
  56. package/dist/components/ListBox/listbox.js.map +1 -0
  57. package/dist/components/ListBox/operations.js +330 -0
  58. package/dist/components/ListBox/operations.js.map +1 -0
  59. package/dist/components/ListBox/useIndexedChildren.js +25 -0
  60. package/dist/components/ListBox/useIndexedChildren.js.map +1 -0
  61. package/dist/components/ListBox/useListboxAutofocus.js +48 -0
  62. package/dist/components/ListBox/useListboxAutofocus.js.map +1 -0
  63. package/dist/components/ListBox/useListboxContextValue.js +8 -0
  64. package/dist/components/ListBox/useListboxContextValue.js.map +1 -0
  65. package/dist/components/ListBox/useShoutSelectionChange.js +26 -0
  66. package/dist/components/ListBox/useShoutSelectionChange.js.map +1 -0
  67. package/dist/components/ListBox/useStore.js +36 -0
  68. package/dist/components/ListBox/useStore.js.map +1 -0
  69. package/dist/components/ListBox/useUpdateRowCount.js +19 -0
  70. package/dist/components/ListBox/useUpdateRowCount.js.map +1 -0
  71. package/dist/components/SortableList/SortableListHandler.js +161 -0
  72. package/dist/components/SortableList/SortableListHandler.js.map +1 -0
  73. package/dist/components/SortableList/SortableListItem.d.ts +14 -0
  74. package/dist/components/SortableList/SortableListItem.d.ts.map +1 -0
  75. package/dist/components/SortableList/SortableListItem.js +24 -0
  76. package/dist/components/SortableList/SortableListItem.js.map +1 -0
  77. package/dist/components/SortableList/index.d.ts +21 -0
  78. package/dist/components/SortableList/index.d.ts.map +1 -0
  79. package/dist/components/SortableList/index.js +53 -0
  80. package/dist/components/SortableList/index.js.map +1 -0
  81. package/dist/components/Toolbar/ToolbarController.d.ts +24 -0
  82. package/dist/components/Toolbar/ToolbarController.d.ts.map +1 -0
  83. package/dist/components/Toolbar/ToolbarController.js +50 -0
  84. package/dist/components/Toolbar/ToolbarController.js.map +1 -0
  85. package/dist/components/Toolbar/ToolbarIconButton.d.ts +7 -0
  86. package/dist/components/Toolbar/ToolbarIconButton.d.ts.map +1 -0
  87. package/dist/components/Toolbar/ToolbarIconButton.js +110 -0
  88. package/dist/components/Toolbar/ToolbarIconButton.js.map +1 -0
  89. package/dist/components/Toolbar/ToolbarInput.d.ts +7 -0
  90. package/dist/components/Toolbar/ToolbarInput.d.ts.map +1 -0
  91. package/dist/components/Toolbar/ToolbarInput.js +13 -0
  92. package/dist/components/Toolbar/ToolbarInput.js.map +1 -0
  93. package/dist/components/Toolbar/ToolbarSelect.d.ts +7 -0
  94. package/dist/components/Toolbar/ToolbarSelect.d.ts.map +1 -0
  95. package/dist/components/Toolbar/ToolbarSelect.js +17 -0
  96. package/dist/components/Toolbar/ToolbarSelect.js.map +1 -0
  97. package/dist/components/Toolbar/ToolbarSeparator.d.ts +6 -0
  98. package/dist/components/Toolbar/ToolbarSeparator.d.ts.map +1 -0
  99. package/dist/components/Toolbar/ToolbarSeparator.js +9 -0
  100. package/dist/components/Toolbar/ToolbarSeparator.js.map +1 -0
  101. package/dist/components/Toolbar/ToolbarTextButton.d.ts +9 -0
  102. package/dist/components/Toolbar/ToolbarTextButton.d.ts.map +1 -0
  103. package/dist/components/Toolbar/ToolbarTextButton.js +18 -0
  104. package/dist/components/Toolbar/ToolbarTextButton.js.map +1 -0
  105. package/dist/components/Toolbar/index.d.ts +17 -0
  106. package/dist/components/Toolbar/index.d.ts.map +1 -0
  107. package/dist/components/Toolbar/index.js +26 -0
  108. package/dist/components/Toolbar/index.js.map +1 -0
  109. package/dist/components/Toolbar/styles.js +84 -0
  110. package/dist/components/Toolbar/styles.js.map +1 -0
  111. package/dist/components/Toolbar/types.d.ts +40 -0
  112. package/dist/components/Toolbar/types.d.ts.map +1 -0
  113. package/dist/components/accordion/Accordion.d.ts +20 -0
  114. package/dist/components/accordion/Accordion.d.ts.map +1 -0
  115. package/dist/components/accordion/Accordion.js +60 -0
  116. package/dist/components/accordion/Accordion.js.map +1 -0
  117. package/dist/components/accordion/AccordionItem.d.ts +19 -0
  118. package/dist/components/accordion/AccordionItem.d.ts.map +1 -0
  119. package/dist/components/accordion/AccordionItem.js +22 -0
  120. package/dist/components/accordion/AccordionItem.js.map +1 -0
  121. package/dist/components/accordion/AccordionItemButton.d.ts +10 -0
  122. package/dist/components/accordion/AccordionItemButton.d.ts.map +1 -0
  123. package/dist/components/accordion/AccordionItemButton.js +8 -0
  124. package/dist/components/accordion/AccordionItemButton.js.map +1 -0
  125. package/dist/components/accordion/AccordionItemContent.d.ts +7 -0
  126. package/dist/components/accordion/AccordionItemContent.d.ts.map +1 -0
  127. package/dist/components/accordion/AccordionItemContent.js +50 -0
  128. package/dist/components/accordion/AccordionItemContent.js.map +1 -0
  129. package/dist/components/accordion/KeyHandler.js +77 -0
  130. package/dist/components/accordion/KeyHandler.js.map +1 -0
  131. package/dist/components/accordion/context.d.ts +10 -0
  132. package/dist/components/accordion/context.d.ts.map +1 -0
  133. package/dist/components/accordion/context.js +13 -0
  134. package/dist/components/accordion/context.js.map +1 -0
  135. package/dist/components/accordion/defaultElements/Checkbox.js +22 -0
  136. package/dist/components/accordion/defaultElements/Checkbox.js.map +1 -0
  137. package/dist/components/accordion/defaultElements/DefaultAccordionItemButton.d.ts +40 -0
  138. package/dist/components/accordion/defaultElements/DefaultAccordionItemButton.d.ts.map +1 -0
  139. package/dist/components/accordion/defaultElements/DefaultAccordionItemButton.js +79 -0
  140. package/dist/components/accordion/defaultElements/DefaultAccordionItemButton.js.map +1 -0
  141. package/dist/components/accordion/defaultElements/useIsChecked.js +25 -0
  142. package/dist/components/accordion/defaultElements/useIsChecked.js.map +1 -0
  143. package/dist/components/accordion/handler.d.ts +40 -0
  144. package/dist/components/accordion/handler.d.ts.map +1 -0
  145. package/dist/components/accordion/handler.js +118 -0
  146. package/dist/components/accordion/handler.js.map +1 -0
  147. package/dist/components/accordion/index.d.ts +8 -0
  148. package/dist/components/accordion/index.d.ts.map +1 -0
  149. package/dist/components/accordion/types.d.ts +11 -0
  150. package/dist/components/accordion/types.d.ts.map +1 -0
  151. package/dist/components/apia/ApiaDateFilter.js +57 -0
  152. package/dist/components/apia/ApiaDateFilter.js.map +1 -0
  153. package/dist/components/apia/ApiaFilter.d.ts +13 -0
  154. package/dist/components/apia/ApiaFilter.d.ts.map +1 -0
  155. package/dist/components/apia/ApiaFilter.js +128 -0
  156. package/dist/components/apia/ApiaFilter.js.map +1 -0
  157. package/dist/components/buttons/useOtherTagButton.d.ts +28 -0
  158. package/dist/components/buttons/useOtherTagButton.d.ts.map +1 -0
  159. package/dist/components/buttons/useOtherTagButton.js +38 -0
  160. package/dist/components/buttons/useOtherTagButton.js.map +1 -0
  161. package/dist/components/collapsiblePanel/index.d.ts +7 -0
  162. package/dist/components/collapsiblePanel/index.d.ts.map +1 -0
  163. package/dist/components/collapsiblePanel/index.js +130 -0
  164. package/dist/components/collapsiblePanel/index.js.map +1 -0
  165. package/dist/components/collapsiblePanel/styles.js +4 -0
  166. package/dist/components/collapsiblePanel/styles.js.map +1 -0
  167. package/dist/components/collapsiblePanel/types.d.ts +23 -0
  168. package/dist/components/collapsiblePanel/types.d.ts.map +1 -0
  169. package/dist/components/dialogs/AlertModal.d.ts +11 -0
  170. package/dist/components/dialogs/AlertModal.d.ts.map +1 -0
  171. package/dist/components/dialogs/AlertModal.js +42 -0
  172. package/dist/components/dialogs/AlertModal.js.map +1 -0
  173. package/dist/components/dialogs/ConfirmModal.d.ts +25 -0
  174. package/dist/components/dialogs/ConfirmModal.d.ts.map +1 -0
  175. package/dist/components/dialogs/ConfirmModal.js +45 -0
  176. package/dist/components/dialogs/ConfirmModal.js.map +1 -0
  177. package/dist/components/forms/Captcha.d.ts +12 -0
  178. package/dist/components/forms/Captcha.d.ts.map +1 -0
  179. package/dist/components/forms/Captcha.js +66 -0
  180. package/dist/components/forms/Captcha.js.map +1 -0
  181. package/dist/components/forms/Checkbox.d.ts +21 -0
  182. package/dist/components/forms/Checkbox.d.ts.map +1 -0
  183. package/dist/components/forms/Checkbox.js +124 -0
  184. package/dist/components/forms/Checkbox.js.map +1 -0
  185. package/dist/components/forms/DateInput.d.ts +44 -0
  186. package/dist/components/forms/DateInput.d.ts.map +1 -0
  187. package/dist/components/forms/DateInput.js +246 -0
  188. package/dist/components/forms/DateInput.js.map +1 -0
  189. package/dist/components/forms/FieldErrorMessage.d.ts +10 -0
  190. package/dist/components/forms/FieldErrorMessage.d.ts.map +1 -0
  191. package/dist/components/forms/FieldErrorMessage.js +34 -0
  192. package/dist/components/forms/FieldErrorMessage.js.map +1 -0
  193. package/dist/components/forms/FieldLabel.d.ts +40 -0
  194. package/dist/components/forms/FieldLabel.d.ts.map +1 -0
  195. package/dist/components/forms/FieldLabel.js +66 -0
  196. package/dist/components/forms/FieldLabel.js.map +1 -0
  197. package/dist/components/forms/IconInput.d.ts +28 -0
  198. package/dist/components/forms/IconInput.d.ts.map +1 -0
  199. package/dist/components/forms/IconInput.js +80 -0
  200. package/dist/components/forms/IconInput.js.map +1 -0
  201. package/dist/components/forms/NumberInput.d.ts +37 -0
  202. package/dist/components/forms/NumberInput.d.ts.map +1 -0
  203. package/dist/components/forms/NumberInput.js +149 -0
  204. package/dist/components/forms/NumberInput.js.map +1 -0
  205. package/dist/components/forms/RequiredMark.d.ts +14 -0
  206. package/dist/components/forms/RequiredMark.d.ts.map +1 -0
  207. package/dist/components/forms/RequiredMark.js +13 -0
  208. package/dist/components/forms/RequiredMark.js.map +1 -0
  209. package/dist/components/forms/buttons/BaseButton.d.ts +24 -0
  210. package/dist/components/forms/buttons/BaseButton.d.ts.map +1 -0
  211. package/dist/components/forms/buttons/BaseButton.js +58 -0
  212. package/dist/components/forms/buttons/BaseButton.js.map +1 -0
  213. package/dist/components/forms/buttons/IconButton.d.ts +37 -0
  214. package/dist/components/forms/buttons/IconButton.d.ts.map +1 -0
  215. package/dist/components/forms/buttons/IconButton.js +79 -0
  216. package/dist/components/forms/buttons/IconButton.js.map +1 -0
  217. package/dist/components/forms/buttons/SimpleButton.d.ts +21 -0
  218. package/dist/components/forms/buttons/SimpleButton.d.ts.map +1 -0
  219. package/dist/components/forms/buttons/SimpleButton.js +94 -0
  220. package/dist/components/forms/buttons/SimpleButton.js.map +1 -0
  221. package/dist/components/forms/util/style.d.ts +7 -0
  222. package/dist/components/forms/util/style.d.ts.map +1 -0
  223. package/dist/components/forms/util/style.js +17 -0
  224. package/dist/components/forms/util/style.js.map +1 -0
  225. package/dist/components/importComponent.d.ts +11 -0
  226. package/dist/components/importComponent.d.ts.map +1 -0
  227. package/dist/components/importComponent.js +25 -0
  228. package/dist/components/importComponent.js.map +1 -0
  229. package/dist/components/loaders/LinearLoader.d.ts +6 -0
  230. package/dist/components/loaders/LinearLoader.d.ts.map +1 -0
  231. package/dist/components/loaders/LinearLoader.js +33 -0
  232. package/dist/components/loaders/LinearLoader.js.map +1 -0
  233. package/dist/components/loaders/LoaderSpinner.d.ts +10 -0
  234. package/dist/components/loaders/LoaderSpinner.d.ts.map +1 -0
  235. package/dist/components/loaders/LoaderSpinner.js +26 -0
  236. package/dist/components/loaders/LoaderSpinner.js.map +1 -0
  237. package/dist/components/loaders/ProgressBar.d.ts +11 -0
  238. package/dist/components/loaders/ProgressBar.d.ts.map +1 -0
  239. package/dist/components/loaders/ProgressBar.js +39 -0
  240. package/dist/components/loaders/ProgressBar.js.map +1 -0
  241. package/dist/components/modals/CalendarModal.d.ts +13 -0
  242. package/dist/components/modals/CalendarModal.d.ts.map +1 -0
  243. package/dist/components/modals/CalendarModal.js +43 -0
  244. package/dist/components/modals/CalendarModal.js.map +1 -0
  245. package/dist/components/modals/Modal.d.ts +160 -0
  246. package/dist/components/modals/Modal.d.ts.map +1 -0
  247. package/dist/components/modals/Modal.js +17 -0
  248. package/dist/components/modals/Modal.js.map +1 -0
  249. package/dist/components/modals/ModalContext.d.ts +9 -0
  250. package/dist/components/modals/ModalContext.d.ts.map +1 -0
  251. package/dist/components/modals/ModalContext.js +12 -0
  252. package/dist/components/modals/ModalContext.js.map +1 -0
  253. package/dist/components/modals/Overlay.d.ts +21 -0
  254. package/dist/components/modals/Overlay.d.ts.map +1 -0
  255. package/dist/components/modals/Overlay.js +75 -0
  256. package/dist/components/modals/Overlay.js.map +1 -0
  257. package/dist/components/modals/StaticModal.js +175 -0
  258. package/dist/components/modals/StaticModal.js.map +1 -0
  259. package/dist/components/modals/WindowModal.js +214 -0
  260. package/dist/components/modals/WindowModal.js.map +1 -0
  261. package/dist/components/modals/hooks/useEscapeKey.js +32 -0
  262. package/dist/components/modals/hooks/useEscapeKey.js.map +1 -0
  263. package/dist/components/modals/hooks/useInitialFocus.js +37 -0
  264. package/dist/components/modals/hooks/useInitialFocus.js.map +1 -0
  265. package/dist/components/modals/hooks/useModal.d.ts +97 -0
  266. package/dist/components/modals/hooks/useModal.d.ts.map +1 -0
  267. package/dist/components/modals/hooks/useModal.js +73 -0
  268. package/dist/components/modals/hooks/useModal.js.map +1 -0
  269. package/dist/components/modals/hooks/useStyleState.js +44 -0
  270. package/dist/components/modals/hooks/useStyleState.js.map +1 -0
  271. package/dist/components/modals/layout/Confirm.d.ts +7 -0
  272. package/dist/components/modals/layout/Confirm.d.ts.map +1 -0
  273. package/dist/components/modals/layout/Confirm.js +96 -0
  274. package/dist/components/modals/layout/Confirm.js.map +1 -0
  275. package/dist/components/modals/layout/DialogButtonBar.d.ts +10 -0
  276. package/dist/components/modals/layout/DialogButtonBar.d.ts.map +1 -0
  277. package/dist/components/modals/layout/DialogButtonBar.js +19 -0
  278. package/dist/components/modals/layout/DialogButtonBar.js.map +1 -0
  279. package/dist/components/modals/layout/DialogHeader.d.ts +18 -0
  280. package/dist/components/modals/layout/DialogHeader.d.ts.map +1 -0
  281. package/dist/components/modals/layout/DialogHeader.js +117 -0
  282. package/dist/components/modals/layout/DialogHeader.js.map +1 -0
  283. package/dist/components/responsive/AutoEllipsis.d.ts +21 -0
  284. package/dist/components/responsive/AutoEllipsis.d.ts.map +1 -0
  285. package/dist/components/responsive/AutoEllipsis.js +128 -0
  286. package/dist/components/responsive/AutoEllipsis.js.map +1 -0
  287. package/dist/components/responsive/makeResponsiveComponent.d.ts +38 -0
  288. package/dist/components/responsive/makeResponsiveComponent.d.ts.map +1 -0
  289. package/dist/components/responsive/makeResponsiveComponent.js +88 -0
  290. package/dist/components/responsive/makeResponsiveComponent.js.map +1 -0
  291. package/dist/components/types.d.ts +5 -0
  292. package/dist/components/types.d.ts.map +1 -0
  293. package/dist/components/waiAriaHelpers/typeAhead.d.ts +44 -0
  294. package/dist/components/waiAriaHelpers/typeAhead.d.ts.map +1 -0
  295. package/dist/components/waiAriaHelpers/typeAhead.js +75 -0
  296. package/dist/components/waiAriaHelpers/typeAhead.js.map +1 -0
  297. package/dist/globalFocus.js +95 -0
  298. package/dist/globalFocus.js.map +1 -0
  299. package/dist/hooks/useBodyScrollLock.js +106 -0
  300. package/dist/hooks/useBodyScrollLock.js.map +1 -0
  301. package/dist/index.d.ts +69 -1531
  302. package/dist/index.js +59 -7898
  303. package/dist/index.js.map +1 -1
  304. package/dist/objects/ApiaUtil/dialogs/ApiaUtilDialogs.d.ts +18 -0
  305. package/dist/objects/ApiaUtil/dialogs/ApiaUtilDialogs.d.ts.map +1 -0
  306. package/dist/objects/ApiaUtil/dialogs/ApiaUtilDialogs.js +116 -0
  307. package/dist/objects/ApiaUtil/dialogs/ApiaUtilDialogs.js.map +1 -0
  308. package/dist/objects/ApiaUtil/index.d.ts +27 -0
  309. package/dist/objects/ApiaUtil/index.d.ts.map +1 -0
  310. package/dist/objects/ApiaUtil/index.js +76 -0
  311. package/dist/objects/ApiaUtil/index.js.map +1 -0
  312. package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.d.ts +24 -0
  313. package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.d.ts.map +1 -0
  314. package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.js +110 -0
  315. package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.js.map +1 -0
  316. package/dist/objects/ApiaUtil/modals/ApiaUtilModals.d.ts +17 -0
  317. package/dist/objects/ApiaUtil/modals/ApiaUtilModals.d.ts.map +1 -0
  318. package/dist/objects/ApiaUtil/modals/ApiaUtilModals.js +111 -0
  319. package/dist/objects/ApiaUtil/modals/ApiaUtilModals.js.map +1 -0
  320. package/dist/objects/ApiaUtil/modals/OpenModal.d.ts +8 -0
  321. package/dist/objects/ApiaUtil/modals/OpenModal.d.ts.map +1 -0
  322. package/dist/objects/ApiaUtil/modals/OpenModal.js +19 -0
  323. package/dist/objects/ApiaUtil/modals/OpenModal.js.map +1 -0
  324. package/dist/objects/ApiaUtil/mouse/ApiaUtilMouse.d.ts +19 -0
  325. package/dist/objects/ApiaUtil/mouse/ApiaUtilMouse.d.ts.map +1 -0
  326. package/dist/objects/ApiaUtil/mouse/ApiaUtilMouse.js +26 -0
  327. package/dist/objects/ApiaUtil/mouse/ApiaUtilMouse.js.map +1 -0
  328. package/dist/objects/ApiaUtil/notifications/ApiaUtilNotifications.d.ts +14 -0
  329. package/dist/objects/ApiaUtil/notifications/ApiaUtilNotifications.d.ts.map +1 -0
  330. package/dist/objects/ApiaUtil/notifications/ApiaUtilNotifications.js +33 -0
  331. package/dist/objects/ApiaUtil/notifications/ApiaUtilNotifications.js.map +1 -0
  332. package/dist/objects/ApiaUtil/parsers/ApiaUtilParsers.d.ts +23 -0
  333. package/dist/objects/ApiaUtil/parsers/ApiaUtilParsers.d.ts.map +1 -0
  334. package/dist/objects/ApiaUtil/parsers/ApiaUtilParsers.js +79 -0
  335. package/dist/objects/ApiaUtil/parsers/ApiaUtilParsers.js.map +1 -0
  336. package/dist/objects/ApiaUtil/tabs/ApiaUtilCurrentTab.d.ts +33 -0
  337. package/dist/objects/ApiaUtil/tabs/ApiaUtilCurrentTab.d.ts.map +1 -0
  338. package/dist/objects/ApiaUtil/tabs/ApiaUtilCurrentTab.js +50 -0
  339. package/dist/objects/ApiaUtil/tabs/ApiaUtilCurrentTab.js.map +1 -0
  340. package/dist/objects/ApiaUtil/tabs/ApiaUtilTabsController.d.ts +20 -0
  341. package/dist/objects/ApiaUtil/tabs/ApiaUtilTabsController.d.ts.map +1 -0
  342. package/dist/objects/ApiaUtil/tabs/ApiaUtilTabsController.js +37 -0
  343. package/dist/objects/ApiaUtil/tabs/ApiaUtilTabsController.js.map +1 -0
  344. package/dist/objects/ApiaUtil/tabs/util.js +17 -0
  345. package/dist/objects/ApiaUtil/tabs/util.js.map +1 -0
  346. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltip.d.ts +11 -0
  347. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltip.d.ts.map +1 -0
  348. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltip.js +17 -0
  349. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltip.js.map +1 -0
  350. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltips.d.ts +22 -0
  351. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltips.d.ts.map +1 -0
  352. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltips.js +104 -0
  353. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltips.js.map +1 -0
  354. package/dist/objects/ApiaUtil/tooltips/AutomaticTooltip.d.ts +13 -0
  355. package/dist/objects/ApiaUtil/tooltips/AutomaticTooltip.d.ts.map +1 -0
  356. package/dist/objects/ApiaUtil/tooltips/AutomaticTooltip.js +79 -0
  357. package/dist/objects/ApiaUtil/tooltips/AutomaticTooltip.js.map +1 -0
  358. package/dist/objects/ApiaUtil/tooltips/tooltip/Tooltip.js +62 -0
  359. package/dist/objects/ApiaUtil/tooltips/tooltip/Tooltip.js.map +1 -0
  360. package/dist/objects/ApiaUtil/tooltips/tooltip/types.d.ts +117 -0
  361. package/dist/objects/ApiaUtil/tooltips/tooltip/types.d.ts.map +1 -0
  362. package/dist/objects/ApiaUtil/tooltips/tooltip/util.js +273 -0
  363. package/dist/objects/ApiaUtil/tooltips/tooltip/util.js.map +1 -0
  364. package/dist/objects/ScreenLocker/index.d.ts +37 -0
  365. package/dist/objects/ScreenLocker/index.d.ts.map +1 -0
  366. package/dist/objects/ScreenLocker/index.js +92 -0
  367. package/dist/objects/ScreenLocker/index.js.map +1 -0
  368. package/dist/tabs/Content.d.ts +7 -0
  369. package/dist/tabs/Content.d.ts.map +1 -0
  370. package/dist/tabs/Content.js +52 -0
  371. package/dist/tabs/Content.js.map +1 -0
  372. package/dist/tabs/ContextMenu.js +77 -0
  373. package/dist/tabs/ContextMenu.js.map +1 -0
  374. package/dist/tabs/Item.js +64 -0
  375. package/dist/tabs/Item.js.map +1 -0
  376. package/dist/tabs/Tabs.d.ts +8 -0
  377. package/dist/tabs/Tabs.d.ts.map +1 -0
  378. package/dist/tabs/Tabs.js +78 -0
  379. package/dist/tabs/Tabs.js.map +1 -0
  380. package/dist/tabs/TabsList.d.ts +8 -0
  381. package/dist/tabs/TabsList.d.ts.map +1 -0
  382. package/dist/tabs/TabsList.js +138 -0
  383. package/dist/tabs/TabsList.js.map +1 -0
  384. package/dist/tabs/renderers/DefaultTabsLabelRenderer.d.ts +6 -0
  385. package/dist/tabs/renderers/DefaultTabsLabelRenderer.d.ts.map +1 -0
  386. package/dist/tabs/renderers/DefaultTabsLabelRenderer.js +71 -0
  387. package/dist/tabs/renderers/DefaultTabsLabelRenderer.js.map +1 -0
  388. package/dist/tabs/tabsController.d.ts +41 -0
  389. package/dist/tabs/tabsController.d.ts.map +1 -0
  390. package/dist/tabs/tabsController.js +303 -0
  391. package/dist/tabs/tabsController.js.map +1 -0
  392. package/dist/tabs/types.d.ts +115 -0
  393. package/dist/tabs/types.d.ts.map +1 -0
  394. package/dist/tabs/useTabsList.js +20 -0
  395. package/dist/tabs/useTabsList.js.map +1 -0
  396. package/dist/tabs/util.js +11 -0
  397. package/dist/tabs/util.js.map +1 -0
  398. package/package.json +29 -39
  399. package/LICENSE.md +0 -21
  400. package/README.md +0 -3
  401. package/cleanDist.json +0 -3
  402. package/entries.json +0 -1
@@ -0,0 +1,71 @@
1
+ import { jsxs, Fragment, jsx } from '@apia/theme/jsx-runtime';
2
+ import React__default from 'react';
3
+ import { useTabsContext } from '../util.js';
4
+ import { isIconName, Icon } from '@apia/icons';
5
+ import { getLabel } from '@apia/util';
6
+ import { IconButton } from '../../components/forms/buttons/IconButton.js';
7
+ import { SimpleButton } from '../../components/forms/buttons/SimpleButton.js';
8
+
9
+ function makeIcon(name) {
10
+ return function IconComponent() {
11
+ return /* @__PURE__ */ jsx(Icon, { title: "", name });
12
+ };
13
+ }
14
+ const DefaultTabsLabelRenderer = ({ tab }) => {
15
+ const { onCloseTab } = useTabsContext();
16
+ const ActualIcon = React__default.useMemo(() => {
17
+ if (tab.icon) {
18
+ if (isIconName(tab.icon)) {
19
+ return makeIcon(tab.icon);
20
+ }
21
+ return tab.icon;
22
+ }
23
+ return function C() {
24
+ return null;
25
+ };
26
+ }, [tab.icon]);
27
+ const handleClose = React__default.useCallback(
28
+ (ev) => {
29
+ ev.preventDefault();
30
+ ev.stopPropagation();
31
+ onCloseTab(tab);
32
+ },
33
+ [onCloseTab, tab]
34
+ );
35
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
36
+ tab.isIconTab ? /* @__PURE__ */ jsx(
37
+ IconButton,
38
+ {
39
+ className: "tabs__item__button",
40
+ as: "div",
41
+ icon: tab.icon,
42
+ variant: "null",
43
+ iconSize: "Sm",
44
+ size: "Lg"
45
+ }
46
+ ) : /* @__PURE__ */ jsxs(SimpleButton, { className: "tabs__item__button", as: "div", variant: "null", children: [
47
+ /* @__PURE__ */ jsx(ActualIcon, {}),
48
+ tab.label
49
+ ] }),
50
+ tab.isClosable && /* @__PURE__ */ jsx(
51
+ IconButton,
52
+ {
53
+ as: "div",
54
+ onMouseDown: (e) => {
55
+ e.stopPropagation();
56
+ e.preventDefault();
57
+ },
58
+ onClick: handleClose,
59
+ className: "tabs__item__close",
60
+ icon: "Close",
61
+ variant: "null",
62
+ title: getLabel("lblCloseSpecificTab", { text: { TOK1: tab.label } }).text,
63
+ size: "Lg",
64
+ iconSize: "Sm"
65
+ }
66
+ )
67
+ ] });
68
+ };
69
+
70
+ export { DefaultTabsLabelRenderer };
71
+ //# sourceMappingURL=DefaultTabsLabelRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultTabsLabelRenderer.js","sources":["../../../src/tabs/renderers/DefaultTabsLabelRenderer.tsx"],"sourcesContent":["import React, { MouseEvent } from 'react';\nimport { TTabRenderer } from '../types';\nimport { useTabsContext } from '../util';\nimport { Icon, TIconName, isIconName } from '@apia/icons';\nimport { IconButton, SimpleButton } from '../../components';\nimport { getLabel } from '@apia/util';\n\nfunction makeIcon(name: TIconName) {\n return function IconComponent() {\n return <Icon title=\"\" name={name} />;\n };\n}\n\nexport const DefaultTabsLabelRenderer: TTabRenderer = ({ tab }) => {\n const { onCloseTab } = useTabsContext();\n const ActualIcon = React.useMemo(() => {\n if (tab.icon) {\n if (isIconName(tab.icon)) {\n return makeIcon(tab.icon);\n }\n return tab.icon;\n }\n return function C() {\n return null;\n };\n }, [tab.icon]);\n\n const handleClose = React.useCallback(\n (ev: MouseEvent) => {\n ev.preventDefault();\n ev.stopPropagation();\n onCloseTab(tab);\n },\n [onCloseTab, tab],\n );\n\n return (\n <>\n {tab.isIconTab ? (\n <IconButton\n className=\"tabs__item__button\"\n as=\"div\"\n icon={tab.icon as TIconName}\n variant=\"null\"\n iconSize=\"Sm\"\n size=\"Lg\"\n />\n ) : (\n <SimpleButton className=\"tabs__item__button\" as=\"div\" variant=\"null\">\n <ActualIcon />\n {tab.label}\n </SimpleButton>\n )}\n\n {tab.isClosable && (\n <IconButton\n as=\"div\"\n onMouseDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n }}\n onClick={handleClose}\n className=\"tabs__item__close\"\n icon=\"Close\"\n variant=\"null\"\n title={\n getLabel('lblCloseSpecificTab', { text: { TOK1: tab.label } }).text\n }\n size=\"Lg\"\n iconSize=\"Sm\"\n />\n )}\n </>\n );\n};\n"],"names":["React"],"mappings":";;;;;;;;AAOA,SAAS,SAAS,IAAiB,EAAA;AACjC,EAAA,OAAO,SAAS,aAAgB,GAAA;AAC9B,IAAA,uBAAQ,GAAA,CAAA,IAAA,EAAA,EAAK,KAAM,EAAA,EAAA,EAAG,IAAY,EAAA,CAAA,CAAA;AAAA,GACpC,CAAA;AACF,CAAA;AAEO,MAAM,wBAAyC,GAAA,CAAC,EAAE,GAAA,EAAU,KAAA;AACjE,EAAM,MAAA,EAAE,UAAW,EAAA,GAAI,cAAe,EAAA,CAAA;AACtC,EAAM,MAAA,UAAA,GAAaA,cAAM,CAAA,OAAA,CAAQ,MAAM;AACrC,IAAA,IAAI,IAAI,IAAM,EAAA;AACZ,MAAI,IAAA,UAAA,CAAW,GAAI,CAAA,IAAI,CAAG,EAAA;AACxB,QAAO,OAAA,QAAA,CAAS,IAAI,IAAI,CAAA,CAAA;AAAA,OAC1B;AACA,MAAA,OAAO,GAAI,CAAA,IAAA,CAAA;AAAA,KACb;AACA,IAAA,OAAO,SAAS,CAAI,GAAA;AAClB,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;AAAA,GACC,EAAA,CAAC,GAAI,CAAA,IAAI,CAAC,CAAA,CAAA;AAEb,EAAA,MAAM,cAAcA,cAAM,CAAA,WAAA;AAAA,IACxB,CAAC,EAAmB,KAAA;AAClB,MAAA,EAAA,CAAG,cAAe,EAAA,CAAA;AAClB,MAAA,EAAA,CAAG,eAAgB,EAAA,CAAA;AACnB,MAAA,UAAA,CAAW,GAAG,CAAA,CAAA;AAAA,KAChB;AAAA,IACA,CAAC,YAAY,GAAG,CAAA;AAAA,GAClB,CAAA;AAEA,EAAA,uBAEK,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,IAAA,GAAA,CAAI,SACH,mBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,SAAU,EAAA,oBAAA;AAAA,QACV,EAAG,EAAA,KAAA;AAAA,QACH,MAAM,GAAI,CAAA,IAAA;AAAA,QACV,OAAQ,EAAA,MAAA;AAAA,QACR,QAAS,EAAA,IAAA;AAAA,QACT,IAAK,EAAA,IAAA;AAAA,OAAA;AAAA,KACP,wBAEC,YAAa,EAAA,EAAA,SAAA,EAAU,sBAAqB,EAAG,EAAA,KAAA,EAAM,SAAQ,MAC5D,EAAA,QAAA,EAAA;AAAA,sBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,CAAA;AAAA,MACX,GAAI,CAAA,KAAA;AAAA,KACP,EAAA,CAAA;AAAA,IAGD,IAAI,UACH,oBAAA,GAAA;AAAA,MAAC,UAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,KAAA;AAAA,QACH,WAAA,EAAa,CAAC,CAAM,KAAA;AAClB,UAAA,CAAA,CAAE,eAAgB,EAAA,CAAA;AAClB,UAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AAAA,SACnB;AAAA,QACA,OAAS,EAAA,WAAA;AAAA,QACT,SAAU,EAAA,mBAAA;AAAA,QACV,IAAK,EAAA,OAAA;AAAA,QACL,OAAQ,EAAA,MAAA;AAAA,QACR,KAAA,EACE,QAAS,CAAA,qBAAA,EAAuB,EAAE,IAAA,EAAM,EAAE,IAAA,EAAM,GAAI,CAAA,KAAA,EAAQ,EAAC,CAAE,CAAA,IAAA;AAAA,QAEjE,IAAK,EAAA,IAAA;AAAA,QACL,QAAS,EAAA,IAAA;AAAA,OAAA;AAAA,KACX;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,41 @@
1
+ import React__default from 'react';
2
+ import { TTab, TTabsListState, TTabs } from './types.js';
3
+ import { PropsStore, TId } from '@apia/util';
4
+
5
+ declare class TabsController<AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>, TabType extends TTab<AdditionalPropsType> = TTab<AdditionalPropsType>> {
6
+ #private;
7
+ private props;
8
+ propsStore: PropsStore<TTab<AdditionalPropsType>>;
9
+ stateKey: string;
10
+ get stateStore(): PropsStore<TTabsListState>;
11
+ get activeTabs(): TId[];
12
+ get tabsList(): TId[];
13
+ constructor(name: string, props: TTabs<AdditionalPropsType>, initialTabs?: TabType[]);
14
+ /**
15
+ * Obviamente agrega un tab al listado de tabs
16
+ */
17
+ append(tab: Omit<TabType, 'tabAdditionalProps'> & Partial<Pick<TabType, 'tabAdditionalProps'>>): void;
18
+ closeAll(closeFixedTabsAsWell?: boolean, force?: boolean): Promise<void>;
19
+ closeToRight(targetId: TId): Promise<void>;
20
+ closeToLeft(targetId: TId): Promise<void>;
21
+ closeOthers(targetId: TId): Promise<void>;
22
+ closeTab(tabId: TId, force?: boolean): Promise<boolean>;
23
+ focusNextTab(): TId | null;
24
+ focusPreviousTab(): TId | null;
25
+ focusTab(tabId: TId): void;
26
+ getTabById(tabId: TId): TTab<AdditionalPropsType>;
27
+ getTabElement(tabId: TId): Element | null;
28
+ handleKeyDown(ev: React__default.KeyboardEvent): void;
29
+ openNextTab(): TId | null;
30
+ openPreviousTab(): TId | null;
31
+ get state(): TTabsListState;
32
+ /**
33
+ * Se utiliza para hacer que el tab aparezca visible en el listado
34
+ *
35
+ * @param justThis Normalmente las tabs se abren de a una, pero si este parámetro se pasa en false, es posible abrir más de una a la vez.
36
+ */
37
+ openTab(tabId: TId, justThis?: boolean): void;
38
+ }
39
+
40
+ export { TabsController as default };
41
+ //# sourceMappingURL=tabsController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabsController.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,303 @@
1
+ import clone from 'lodash-es/clone';
2
+ import uniqueId from 'lodash-es/uniqueId';
3
+ import { PropsStore, getLabel, isChild, getSpecificParent } from '@apia/util';
4
+ import { ApiaUtil } from '../objects/ApiaUtil/index.js';
5
+
6
+ var __defProp = Object.defineProperty;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __publicField = (obj, key, value) => {
9
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
10
+ return value;
11
+ };
12
+ var __accessCheck = (obj, member, msg) => {
13
+ if (!member.has(obj))
14
+ throw TypeError("Cannot " + msg);
15
+ };
16
+ var __privateAdd = (obj, member, value) => {
17
+ if (member.has(obj))
18
+ throw TypeError("Cannot add the same private member more than once");
19
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
20
+ };
21
+ var __privateMethod = (obj, member, method) => {
22
+ __accessCheck(obj, member, "access private method");
23
+ return method;
24
+ };
25
+ var _innerAppend, innerAppend_fn, _setState, setState_fn;
26
+ class TabsController {
27
+ constructor(name, props, initialTabs) {
28
+ this.props = props;
29
+ __privateAdd(this, _innerAppend);
30
+ __privateAdd(this, _setState);
31
+ __publicField(this, "propsStore");
32
+ __publicField(this, "stateKey", "state");
33
+ this.propsStore = new PropsStore({
34
+ logCommands: { propsStore: `tabs_${name}` }
35
+ });
36
+ __privateMethod(this, _setState, setState_fn).call(this, {
37
+ focusedTab: null,
38
+ openTabs: [],
39
+ tabs: initialTabs?.map((current) => current.id) ?? []
40
+ });
41
+ if (initialTabs && initialTabs.length > 0)
42
+ this.focusTab(initialTabs[0].id);
43
+ }
44
+ get stateStore() {
45
+ return this.propsStore;
46
+ }
47
+ get activeTabs() {
48
+ return clone(this.state.openTabs);
49
+ }
50
+ get tabsList() {
51
+ return clone(this.state.tabs);
52
+ }
53
+ /**
54
+ * Obviamente agrega un tab al listado de tabs
55
+ */
56
+ append(tab) {
57
+ if (this.propsStore.getFieldProps(tab.id)) {
58
+ void ApiaUtil.instance.dialogs.confirm({
59
+ children: getLabel("msgTabIsOpen").text,
60
+ title: getLabel("titMsgWarning").text
61
+ }).then((hasConfirmed) => {
62
+ if (hasConfirmed)
63
+ __privateMethod(this, _innerAppend, innerAppend_fn).call(this, {
64
+ ...tab,
65
+ id: `${tab.id}_${uniqueId()}`,
66
+ tabAdditionalProps: tab.tabAdditionalProps ?? {}
67
+ });
68
+ });
69
+ } else
70
+ __privateMethod(this, _innerAppend, innerAppend_fn).call(this, {
71
+ ...tab,
72
+ tabAdditionalProps: tab.tabAdditionalProps ?? {}
73
+ });
74
+ }
75
+ async closeAll(closeFixedTabsAsWell = false, force = false) {
76
+ for (let i = this.tabsList.length - 1; i >= 0; i--) {
77
+ const current = this.tabsList[i];
78
+ if (!this.propsStore.getFieldProps(current).isFixed || closeFixedTabsAsWell)
79
+ await this.closeTab(current, force);
80
+ }
81
+ }
82
+ async closeToRight(targetId) {
83
+ const targetIndex = this.tabsList.indexOf(targetId);
84
+ for (let i = this.tabsList.length - 1; i > targetIndex; i--) {
85
+ const current = this.tabsList[i];
86
+ if (!this.propsStore.getFieldProps(current).isFixed && current !== targetId)
87
+ await this.closeTab(current);
88
+ }
89
+ }
90
+ async closeToLeft(targetId) {
91
+ const targetIndex = this.tabsList.indexOf(targetId);
92
+ if (targetIndex > -1) {
93
+ for (let i = targetIndex - 1; i >= 0; i--) {
94
+ const current = this.tabsList[i];
95
+ if (!this.propsStore.getFieldProps(current).isFixed) {
96
+ await this.closeTab(current);
97
+ }
98
+ }
99
+ }
100
+ }
101
+ async closeOthers(targetId) {
102
+ for (let i = this.tabsList.length - 1; i >= 0; i--) {
103
+ const current = this.tabsList[i];
104
+ if (!this.propsStore.getFieldProps(current).isFixed && current !== targetId)
105
+ await this.closeTab(current);
106
+ }
107
+ }
108
+ async closeTab(tabId, force = false) {
109
+ const tabProps = this.propsStore.getFieldProps(tabId);
110
+ if (!tabProps.isClosable || !force && this.props.onRequestClose && !await this.props.onRequestClose(tabProps))
111
+ return false;
112
+ const { onBeforeClose } = tabProps;
113
+ if (onBeforeClose) {
114
+ const canClose = await onBeforeClose();
115
+ const message = canClose === false ? getLabel("msgPerDatIng").text : canClose;
116
+ if (message !== true && !force) {
117
+ const hasConfirmed = await ApiaUtil.instance.dialogs.confirm({
118
+ children: message,
119
+ title: getLabel("lbl_atention").text
120
+ });
121
+ if (!hasConfirmed)
122
+ return false;
123
+ }
124
+ }
125
+ let newOpenTab = null;
126
+ if (this.state.openTabs.includes(tabId)) {
127
+ const tabIndex = this.tabsList.findIndex((current) => current === tabId);
128
+ newOpenTab = tabIndex > 0 ? this.tabsList[tabIndex - 1] : this.tabsList[1];
129
+ }
130
+ __privateMethod(this, _setState, setState_fn).call(this, {
131
+ tabs: this.state.tabs.filter((current) => current !== tabId)
132
+ });
133
+ this.props.onCloseTab?.(tabProps);
134
+ this.propsStore.removeField(tabId);
135
+ if (newOpenTab) {
136
+ this.openTab(newOpenTab);
137
+ this.focusTab(newOpenTab);
138
+ }
139
+ return true;
140
+ }
141
+ focusNextTab() {
142
+ const { tabs } = this.state;
143
+ const focusedIndex = tabs.findIndex(
144
+ (current) => current === this.state.focusedTab
145
+ );
146
+ if (focusedIndex === tabs.length - 1 || focusedIndex === -1)
147
+ return null;
148
+ const newFocusIndex = focusedIndex + 1;
149
+ this.focusTab(tabs[newFocusIndex]);
150
+ return tabs[newFocusIndex];
151
+ }
152
+ focusPreviousTab() {
153
+ const { tabs } = this.state;
154
+ const focusedIndex = tabs.findIndex(
155
+ (current) => current === this.state.focusedTab
156
+ );
157
+ if (focusedIndex <= 0)
158
+ return null;
159
+ const newFocusIndex = focusedIndex - 1;
160
+ this.focusTab(tabs[newFocusIndex]);
161
+ return tabs[newFocusIndex];
162
+ }
163
+ focusTab(tabId) {
164
+ if (this.state.focusedTab)
165
+ this.propsStore.updateField(this.state.focusedTab, { isFocused: false });
166
+ __privateMethod(this, _setState, setState_fn).call(this, { focusedTab: tabId });
167
+ this.propsStore.updateField(tabId, { isFocused: true });
168
+ const tabProps = this.propsStore.getFieldProps(tabId);
169
+ tabProps?.onFocus?.(tabProps);
170
+ }
171
+ getTabById(tabId) {
172
+ return this.propsStore.getFieldProps(tabId);
173
+ }
174
+ getTabElement(tabId) {
175
+ return document.querySelector(`#tabpanel-${this.props.id}-${tabId}`);
176
+ }
177
+ handleKeyDown(ev) {
178
+ if (!isChild(
179
+ ev.target,
180
+ (current) => current.id === `tabsList-${this.props.id}`
181
+ ))
182
+ return;
183
+ switch (ev.code) {
184
+ case "ArrowDown":
185
+ case "ArrowRight": {
186
+ if (this.props.orientation === "horizontal" && ev.code === "ArrowDown" || this.props.orientation === "vertical" && ev.code === "ArrowRight")
187
+ return;
188
+ this.focusNextTab();
189
+ break;
190
+ }
191
+ case "ArrowUp":
192
+ case "ArrowLeft": {
193
+ if (this.props.orientation === "horizontal" && ev.code === "ArrowUp" || this.props.orientation === "vertical" && ev.code === "ArrowLeft")
194
+ return;
195
+ this.focusPreviousTab();
196
+ break;
197
+ }
198
+ case "Delete": {
199
+ const tabId = getSpecificParent(
200
+ ev.target,
201
+ (current) => !!current.getAttribute("data-id")
202
+ )?.getAttribute("data-id");
203
+ if (tabId) {
204
+ if (!this.propsStore.getFieldProps(tabId).isClosable)
205
+ return;
206
+ void this.closeTab(tabId);
207
+ }
208
+ break;
209
+ }
210
+ case "Enter":
211
+ case "Space": {
212
+ const tabId = getSpecificParent(
213
+ ev.target,
214
+ (current) => !!current.getAttribute("data-id")
215
+ )?.getAttribute("data-id");
216
+ if (tabId) {
217
+ this.openTab(tabId);
218
+ }
219
+ break;
220
+ }
221
+ case "End": {
222
+ this.focusTab(this.state.tabs[this.state.tabs.length - 1]);
223
+ break;
224
+ }
225
+ case "Home": {
226
+ this.focusTab(this.state.tabs[0]);
227
+ break;
228
+ }
229
+ }
230
+ }
231
+ openNextTab() {
232
+ const { tabs } = this.state;
233
+ const openIndex = tabs.findIndex(
234
+ (current) => current === this.state.openTabs[0]
235
+ );
236
+ if (openIndex >= this.tabsList.length)
237
+ return null;
238
+ const newOpenIndex = openIndex + 1;
239
+ this.openTab(tabs[newOpenIndex]);
240
+ return tabs[newOpenIndex];
241
+ }
242
+ openPreviousTab() {
243
+ const { tabs } = this.state;
244
+ const openIndex = tabs.findIndex(
245
+ (current) => current === this.state.openTabs[0]
246
+ );
247
+ if (openIndex <= 0)
248
+ return null;
249
+ const newOpenIndex = openIndex - 1;
250
+ this.openTab(tabs[newOpenIndex]);
251
+ return tabs[newOpenIndex];
252
+ }
253
+ get state() {
254
+ return this.propsStore.getFieldProps(this.stateKey);
255
+ }
256
+ /**
257
+ * Se utiliza para hacer que el tab aparezca visible en el listado
258
+ *
259
+ * @param justThis Normalmente las tabs se abren de a una, pero si este parámetro se pasa en false, es posible abrir más de una a la vez.
260
+ */
261
+ openTab(tabId, justThis = true) {
262
+ const tabProps = this.propsStore.getFieldProps(tabId);
263
+ if (!tabProps) {
264
+ console.warn(`There is no tab with such id: ${tabId}`);
265
+ } else {
266
+ window.dispatchEvent(
267
+ new CustomEvent("tabOpen", {
268
+ detail: { tabId, justThis }
269
+ })
270
+ );
271
+ if (justThis) {
272
+ window.requestAnimationFrame(() => {
273
+ window.scrollTo(0, 0);
274
+ });
275
+ this.state.openTabs.forEach(
276
+ (current) => this.propsStore.updateField(current, { isOpen: false })
277
+ );
278
+ }
279
+ this.propsStore.updateField(tabId, { isOpen: true });
280
+ __privateMethod(this, _setState, setState_fn).call(this, {
281
+ openTabs: justThis ? [tabId] : [...this.state.openTabs, tabId]
282
+ });
283
+ this.focusTab(tabId);
284
+ this.props.onOpenTab?.(tabProps);
285
+ }
286
+ }
287
+ }
288
+ _innerAppend = new WeakSet();
289
+ innerAppend_fn = function(tab) {
290
+ __privateMethod(this, _setState, setState_fn).call(this, { tabs: [...this.state.tabs, tab.id] });
291
+ this.propsStore.updateField(tab.id, tab);
292
+ if (tab.isOpen) {
293
+ this.openTab(tab.id);
294
+ this.focusTab(tab.id);
295
+ }
296
+ };
297
+ _setState = new WeakSet();
298
+ setState_fn = function(state) {
299
+ this.propsStore.updateField(this.stateKey, state);
300
+ };
301
+
302
+ export { TabsController as default };
303
+ //# sourceMappingURL=tabsController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabsController.js","sources":["../../src/tabs/tabsController.ts"],"sourcesContent":["import clone from 'lodash-es/clone';\nimport uniqueId from 'lodash-es/uniqueId';\nimport React from 'react';\nimport { TTab, TTabs, TTabsListState } from './types';\nimport {\n PropsStore,\n TId,\n getLabel,\n getSpecificParent,\n isChild,\n} from '@apia/util';\nimport { ApiaUtil } from '../objects/ApiaUtil';\n\nexport default class TabsController<\n AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>,\n TabType extends TTab<AdditionalPropsType> = TTab<AdditionalPropsType>,\n> {\n propsStore: PropsStore<TTab<AdditionalPropsType>>;\n\n stateKey = 'state';\n\n get stateStore() {\n return this.propsStore as unknown as PropsStore<TTabsListState>;\n }\n\n get activeTabs() {\n return clone(this.state.openTabs);\n }\n\n get tabsList() {\n return clone(this.state.tabs);\n }\n\n constructor(\n name: string,\n private props: TTabs<AdditionalPropsType>,\n initialTabs?: TabType[],\n ) {\n this.propsStore = new PropsStore<TTab<AdditionalPropsType>>({\n logCommands: { propsStore: `tabs_${name}` },\n });\n this.#setState({\n focusedTab: null,\n openTabs: [],\n tabs: initialTabs?.map((current) => current.id) ?? [],\n });\n if (initialTabs && initialTabs.length > 0) this.focusTab(initialTabs[0].id);\n }\n\n #innerAppend(tab: TabType) {\n this.#setState({ tabs: [...this.state.tabs, tab.id] });\n this.propsStore.updateField(tab.id, tab);\n if (tab.isOpen) {\n this.openTab(tab.id);\n this.focusTab(tab.id);\n }\n }\n\n /**\n * Obviamente agrega un tab al listado de tabs\n */\n append(\n tab: Omit<TabType, 'tabAdditionalProps'> &\n Partial<Pick<TabType, 'tabAdditionalProps'>>,\n ) {\n if (this.propsStore.getFieldProps(tab.id)) {\n void ApiaUtil.instance.dialogs\n .confirm({\n children: getLabel('msgTabIsOpen').text,\n title: getLabel('titMsgWarning').text,\n })\n .then((hasConfirmed) => {\n if (hasConfirmed)\n this.#innerAppend({\n ...tab,\n id: `${tab.id}_${uniqueId()}`,\n tabAdditionalProps: tab.tabAdditionalProps ?? {},\n } as TabType);\n });\n } else\n this.#innerAppend({\n ...tab,\n tabAdditionalProps: tab.tabAdditionalProps ?? {},\n } as TabType);\n }\n\n async closeAll(closeFixedTabsAsWell = false, force = false) {\n for (let i = this.tabsList.length - 1; i >= 0; i--) {\n const current = this.tabsList[i];\n if (\n !this.propsStore.getFieldProps(current).isFixed ||\n closeFixedTabsAsWell\n )\n await this.closeTab(current, force);\n }\n }\n\n async closeToRight(targetId: TId) {\n const targetIndex = this.tabsList.indexOf(targetId);\n for (let i = this.tabsList.length - 1; i > targetIndex; i--) {\n const current = this.tabsList[i];\n if (\n !this.propsStore.getFieldProps(current).isFixed &&\n current !== targetId\n )\n await this.closeTab(current);\n }\n }\n\n async closeToLeft(targetId: TId) {\n const targetIndex = this.tabsList.indexOf(targetId);\n if (targetIndex > -1) {\n for (let i = targetIndex - 1; i >= 0; i--) {\n const current = this.tabsList[i];\n if (!this.propsStore.getFieldProps(current).isFixed) {\n await this.closeTab(current);\n }\n }\n }\n }\n\n async closeOthers(targetId: TId) {\n for (let i = this.tabsList.length - 1; i >= 0; i--) {\n const current = this.tabsList[i];\n if (\n !this.propsStore.getFieldProps(current).isFixed &&\n current !== targetId\n )\n await this.closeTab(current);\n }\n }\n\n async closeTab(tabId: TId, force = false) {\n const tabProps = this.propsStore.getFieldProps(tabId);\n if (\n !tabProps.isClosable ||\n (!force &&\n this.props.onRequestClose &&\n !(await this.props.onRequestClose(tabProps)))\n )\n return false;\n\n const { onBeforeClose } = tabProps;\n if (onBeforeClose) {\n const canClose = await onBeforeClose();\n const message =\n canClose === false ? getLabel('msgPerDatIng').text : canClose;\n if (message !== true && !force) {\n const hasConfirmed = await ApiaUtil.instance.dialogs.confirm({\n children: message,\n title: getLabel('lbl_atention').text,\n });\n if (!hasConfirmed) return false;\n }\n }\n\n let newOpenTab: null | TId = null;\n if (this.state.openTabs.includes(tabId)) {\n const tabIndex = this.tabsList.findIndex((current) => current === tabId);\n newOpenTab =\n tabIndex > 0 ? this.tabsList[tabIndex - 1] : this.tabsList[1];\n }\n\n this.#setState({\n tabs: this.state.tabs.filter((current) => current !== tabId),\n });\n this.props.onCloseTab?.(tabProps);\n this.propsStore.removeField(tabId);\n\n if (newOpenTab) {\n this.openTab(newOpenTab);\n this.focusTab(newOpenTab);\n }\n\n return true;\n }\n\n focusNextTab() {\n const { tabs } = this.state;\n const focusedIndex = tabs.findIndex(\n (current) => current === this.state.focusedTab,\n );\n\n if (focusedIndex === tabs.length - 1 || focusedIndex === -1) return null;\n\n const newFocusIndex: number = focusedIndex + 1;\n this.focusTab(tabs[newFocusIndex]);\n\n return tabs[newFocusIndex];\n }\n\n focusPreviousTab() {\n const { tabs } = this.state;\n const focusedIndex = tabs.findIndex(\n (current) => current === this.state.focusedTab,\n );\n\n if (focusedIndex <= 0) return null;\n\n const newFocusIndex: number = focusedIndex - 1;\n this.focusTab(tabs[newFocusIndex]);\n\n return tabs[newFocusIndex];\n }\n\n focusTab(tabId: TId) {\n if (this.state.focusedTab)\n this.propsStore.updateField(this.state.focusedTab, { isFocused: false });\n this.#setState({ focusedTab: tabId });\n this.propsStore.updateField(tabId, { isFocused: true });\n const tabProps = this.propsStore.getFieldProps(tabId);\n tabProps?.onFocus?.(tabProps);\n }\n\n getTabById(tabId: TId) {\n return this.propsStore.getFieldProps(tabId);\n }\n\n getTabElement(tabId: TId) {\n return document.querySelector(`#tabpanel-${this.props.id}-${tabId}`);\n }\n\n handleKeyDown(ev: React.KeyboardEvent) {\n if (\n !isChild(\n ev.target as HTMLElement,\n (current) => current.id === `tabsList-${this.props.id}`,\n )\n )\n return;\n\n switch (ev.code) {\n case 'ArrowDown':\n case 'ArrowRight': {\n if (\n (this.props.orientation === 'horizontal' &&\n ev.code === 'ArrowDown') ||\n (this.props.orientation === 'vertical' && ev.code === 'ArrowRight')\n )\n return;\n\n this.focusNextTab();\n\n break;\n }\n case 'ArrowUp':\n case 'ArrowLeft': {\n if (\n (this.props.orientation === 'horizontal' && ev.code === 'ArrowUp') ||\n (this.props.orientation === 'vertical' && ev.code === 'ArrowLeft')\n )\n return;\n\n this.focusPreviousTab();\n\n break;\n }\n case 'Delete': {\n const tabId = getSpecificParent(\n ev.target as HTMLElement,\n (current) => !!current.getAttribute('data-id'),\n )?.getAttribute('data-id');\n\n if (tabId) {\n if (!this.propsStore.getFieldProps(tabId).isClosable) return;\n\n void this.closeTab(tabId);\n }\n break;\n }\n case 'Enter':\n case 'Space': {\n const tabId = getSpecificParent(\n ev.target as HTMLElement,\n (current) => !!current.getAttribute('data-id'),\n )?.getAttribute('data-id');\n\n if (tabId) {\n this.openTab(tabId);\n }\n\n break;\n }\n case 'End': {\n this.focusTab(this.state.tabs[this.state.tabs.length - 1]);\n break;\n }\n case 'Home': {\n this.focusTab(this.state.tabs[0]);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n openNextTab() {\n const { tabs } = this.state;\n const openIndex = tabs.findIndex(\n (current) => current === this.state.openTabs[0],\n );\n\n if (openIndex >= this.tabsList.length) return null;\n\n const newOpenIndex: number = openIndex + 1;\n this.openTab(tabs[newOpenIndex]);\n\n return tabs[newOpenIndex];\n }\n\n openPreviousTab() {\n const { tabs } = this.state;\n const openIndex = tabs.findIndex(\n (current) => current === this.state.openTabs[0],\n );\n\n if (openIndex <= 0) return null;\n\n const newOpenIndex: number = openIndex - 1;\n this.openTab(tabs[newOpenIndex]);\n\n return tabs[newOpenIndex];\n }\n\n get state() {\n return this.propsStore.getFieldProps<TTabsListState>(this.stateKey);\n }\n\n #setState(state: Partial<TTabsListState>) {\n this.propsStore.updateField<TTabsListState>(this.stateKey, state);\n }\n\n /**\n * Se utiliza para hacer que el tab aparezca visible en el listado\n *\n * @param justThis Normalmente las tabs se abren de a una, pero si este parámetro se pasa en false, es posible abrir más de una a la vez.\n */\n openTab(tabId: TId, justThis = true) {\n const tabProps = this.propsStore.getFieldProps(tabId);\n if (!tabProps) {\n console.warn(`There is no tab with such id: ${tabId}`);\n } else {\n window.dispatchEvent(\n new CustomEvent('tabOpen', {\n detail: { tabId, justThis },\n }),\n );\n\n if (justThis) {\n window.requestAnimationFrame(() => {\n window.scrollTo(0, 0);\n });\n this.state.openTabs.forEach((current) =>\n this.propsStore.updateField(current, { isOpen: false }),\n );\n }\n this.propsStore.updateField(tabId, { isOpen: true });\n this.#setState({\n openTabs: justThis ? [tabId] : [...this.state.openTabs, tabId],\n });\n this.focusTab(tabId);\n this.props.onOpenTab?.(tabProps);\n }\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ import React__default from 'react';
2
+ import TabsController from './tabsController.js';
3
+ import { TIconName, TIconType } from '@apia/icons';
4
+ import { TId } from '@apia/util';
5
+
6
+ type TTab<AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>> = {
7
+ addEvent?: (ev: 'onFocusTab', cb: (ev: {
8
+ stop: () => void;
9
+ }) => unknown) => unknown;
10
+ content: React__default.FunctionComponent<{
11
+ tab: TTab<AdditionalPropsType>;
12
+ }>;
13
+ icon?: TIconName | TIconType;
14
+ /**
15
+ * El id es importante ya que se utiliza por temas de accesibilidad. Es
16
+ * importante asegurarse de que sea único.
17
+ */
18
+ id: TId;
19
+ isClosable?: boolean;
20
+ isDisabled?: boolean;
21
+ /**
22
+ * Los tabs que estén marcados como fixed aparecerán al inicio del listado.
23
+ */
24
+ isFixed?: boolean;
25
+ isFocused?: boolean;
26
+ /**
27
+ * Si se marca como iconTab, se oculta el label y solamente se muestra el
28
+ * ícono.
29
+ */
30
+ isIconTab?: boolean;
31
+ isLoading?: boolean;
32
+ isOpen?: boolean;
33
+ /**
34
+ * Si un tab se marca como lazy, el iframe no se inicializará hasta que no
35
+ * sea abierta por primera vez.
36
+ */
37
+ lazy?: boolean;
38
+ /**
39
+ * Cuando se cierra un tab que tiene un método onBeforeClose, el mismo será
40
+ * llamado y deberá devolver un boolean o un string. Si devuelve true, se
41
+ * cierra. Si devuelve false, se muestra un cartel de confirmación genérico y
42
+ * si se devuelve un string, se muestra un cartel de confirmación con el
43
+ * string devuelto. En caso de que el usuario confirme el cuadro de diálogo,
44
+ * el tab será cerrado de todas formas. Es decir, no hay forma de evitar que
45
+ * el tab sea cerrado si el usuario decide continuar con la acción. Para
46
+ * evitar que un tab sea cerrado, debe pasarse isClosable=false
47
+ */
48
+ onBeforeClose?: () => boolean | string | Promise<boolean | string>;
49
+ /**
50
+ * Este callback será llamado cada vez que el tab sea abierto
51
+ */
52
+ onFocus?: (ev: TTab<AdditionalPropsType>) => unknown;
53
+ /**
54
+ * Es el texto que se va a mostrar en el tab
55
+ */
56
+ label: string;
57
+ labelRenderer?: TTabRenderer;
58
+ /**
59
+ * Se pueden pasar propiedades adicionales que serán recibidas en cada
60
+ * evento, de forma de poder compartir piezas de información útiles en las
61
+ * distintas partes de la aplicación.
62
+ */
63
+ tabAdditionalProps: AdditionalPropsType;
64
+ tabId: TId;
65
+ title?: string;
66
+ };
67
+ type TTabs<AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>> = {
68
+ getHandler?: (handler: TabsController<AdditionalPropsType>) => unknown;
69
+ /**
70
+ * Este id se utiliza para asignar un prefijo a los ids de los distintos
71
+ * grupos de tabs, de forma que aún habiendo dos tabs con mismo id en
72
+ * distintos grupos, el id generado sea distinto.
73
+ */
74
+ id: TId;
75
+ /**
76
+ * Permite abrir varias tabs al mismo tiempo
77
+ */
78
+ isMultiple?: boolean;
79
+ /**
80
+ * Este evento es llamado cada vez que un tab fue cerrado. En caso de que el
81
+ * callback onRequestClose haya sido provisto, el orden de llamado es:
82
+ * onRequestClose === true ? onCloseTab : doNothing
83
+ */
84
+ onCloseTab?: (tab: TTab<AdditionalPropsType>) => unknown;
85
+ /**
86
+ * Este evento es llamado cada vez que un tab es abierto por acción del
87
+ * usuario, es decir, cuando se hace click en su label y éste es mostrado.
88
+ */
89
+ onOpenTab?: (tab: TTab<AdditionalPropsType>) => unknown;
90
+ /**
91
+ * Este callback es llamado cada vez que se hace click en el botón cerrar. Se
92
+ * utiliza para permitir o denegar el cierre del tab, por lo que debe
93
+ * retornar un boolean o una promesa de booleano. Es útil por ejemplo para
94
+ * abrir un cuadro de diálogo de confirmación antes de continuar.
95
+ */
96
+ onRequestClose?: (tab: TTab<AdditionalPropsType>) => boolean | Promise<boolean>;
97
+ orientation?: 'horizontal' | 'vertical';
98
+ /**
99
+ * Esta prop solo será tomada en cuenta al montar. Para agregar tabs luego,
100
+ * es necesario hacer uso de getHandler.
101
+ */
102
+ initialTabs?: TTab<AdditionalPropsType>[];
103
+ };
104
+ type TTabRenderer<AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>> = (props: {
105
+ tab: TTab<AdditionalPropsType>;
106
+ }) => React__default.ReactElement;
107
+ type TTabsListState = {
108
+ focusedTab: TId | null;
109
+ openTabs: TId[];
110
+ tabs: TId[];
111
+ timestamp: number;
112
+ };
113
+
114
+ export type { TTab, TTabRenderer, TTabs, TTabsListState };
115
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import React__default from 'react';
2
+ import { shallowEqual } from 'react-redux';
3
+ import { useTabsContext } from './util.js';
4
+ import { usePropsSelector } from '@apia/util';
5
+
6
+ function useTabsList() {
7
+ const { handler } = useTabsContext();
8
+ const tabsIds = usePropsSelector("state", {
9
+ propsStore: handler.stateStore,
10
+ selector: (props) => props.tabs,
11
+ comparator: shallowEqual
12
+ });
13
+ const tabs = React__default.useMemo(() => {
14
+ return handler.getTabById !== void 0 && tabsIds ? tabsIds.map((current) => handler.getTabById(current)) : [];
15
+ }, [handler, tabsIds]);
16
+ return tabs;
17
+ }
18
+
19
+ export { useTabsList as default };
20
+ //# sourceMappingURL=useTabsList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTabsList.js","sources":["../../src/tabs/useTabsList.ts"],"sourcesContent":["import React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { TTabsListState } from './types';\nimport { useTabsContext } from './util';\nimport { TId, usePropsSelector } from '@apia/util';\n\nexport default function useTabsList() {\n const { handler } = useTabsContext();\n\n const tabsIds = usePropsSelector<TId[], TTabsListState>('state', {\n propsStore: handler.stateStore,\n selector: (props) => props.tabs,\n comparator: shallowEqual,\n });\n\n const tabs = React.useMemo(() => {\n return handler.getTabById !== undefined && tabsIds\n ? tabsIds.map((current) => handler.getTabById(current))\n : [];\n }, [handler, tabsIds]);\n\n return tabs;\n}\n"],"names":["React"],"mappings":";;;;;AAMA,SAAwB,WAAc,GAAA;AACpC,EAAM,MAAA,EAAE,OAAQ,EAAA,GAAI,cAAe,EAAA,CAAA;AAEnC,EAAM,MAAA,OAAA,GAAU,iBAAwC,OAAS,EAAA;AAAA,IAC/D,YAAY,OAAQ,CAAA,UAAA;AAAA,IACpB,QAAA,EAAU,CAAC,KAAA,KAAU,KAAM,CAAA,IAAA;AAAA,IAC3B,UAAY,EAAA,YAAA;AAAA,GACb,CAAA,CAAA;AAED,EAAM,MAAA,IAAA,GAAOA,cAAM,CAAA,OAAA,CAAQ,MAAM;AAC/B,IAAA,OAAO,OAAQ,CAAA,UAAA,KAAe,KAAa,CAAA,IAAA,OAAA,GACvC,OAAQ,CAAA,GAAA,CAAI,CAAC,OAAA,KAAY,OAAQ,CAAA,UAAA,CAAW,OAAO,CAAC,IACpD,EAAC,CAAA;AAAA,GACJ,EAAA,CAAC,OAAS,EAAA,OAAO,CAAC,CAAA,CAAA;AAErB,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
@@ -0,0 +1,11 @@
1
+ import React__default from 'react';
2
+
3
+ const TabsContext = React__default.createContext(
4
+ {}
5
+ );
6
+ function useTabsContext() {
7
+ return React__default.useContext(TabsContext);
8
+ }
9
+
10
+ export { TabsContext, useTabsContext };
11
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sources":["../../src/tabs/util.ts"],"sourcesContent":["import React from 'react';\nimport { TTabsContext } from './types';\n\nexport const TabsContext = React.createContext<TTabsContext>(\n {} as TTabsContext,\n);\n\nexport function makeTabsContext<\n AdditionalPropsType extends Record<string, unknown> = Record<string, unknown>,\n>() {\n return React.createContext<TTabsContext<AdditionalPropsType>>(\n {} as TTabsContext<AdditionalPropsType>,\n );\n}\n\nexport function defaultOnRequestClose() {\n return new Promise((resolve) => {\n resolve(true);\n });\n}\n\nexport function useTabsContext() {\n return React.useContext(TabsContext);\n}\n"],"names":["React"],"mappings":";;AAGO,MAAM,cAAcA,cAAM,CAAA,aAAA;AAAA,EAC/B,EAAC;AACH,EAAA;AAgBO,SAAS,cAAiB,GAAA;AAC/B,EAAO,OAAAA,cAAA,CAAM,WAAW,WAAW,CAAA,CAAA;AACrC;;;;"}