@apia/components 2.0.9 → 2.0.10

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 (398) 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 +108 -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 +19 -0
  106. package/dist/components/Toolbar/index.d.ts.map +1 -0
  107. package/dist/components/Toolbar/index.js +23 -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 +39 -0
  112. package/dist/components/Toolbar/types.d.ts.map +1 -0
  113. package/dist/components/accordion/Accordion.d.ts +21 -0
  114. package/dist/components/accordion/Accordion.d.ts.map +1 -0
  115. package/dist/components/accordion/Accordion.js +66 -0
  116. package/dist/components/accordion/Accordion.js.map +1 -0
  117. package/dist/components/accordion/AccordionItem.d.ts +20 -0
  118. package/dist/components/accordion/AccordionItem.d.ts.map +1 -0
  119. package/dist/components/accordion/AccordionItem.js +26 -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 +82 -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 +77 -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 +126 -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 +178 -0
  246. package/dist/components/modals/Modal.d.ts.map +1 -0
  247. package/dist/components/modals/Modal.js +19 -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 +74 -0
  256. package/dist/components/modals/Overlay.js.map +1 -0
  257. package/dist/components/modals/StaticModal.js +203 -0
  258. package/dist/components/modals/StaticModal.js.map +1 -0
  259. package/dist/components/modals/WindowModal.js +229 -0
  260. package/dist/components/modals/WindowModal.js.map +1 -0
  261. package/dist/components/modals/hooks/useEscapeKey.js +36 -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 +116 -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 -1658
  302. package/dist/index.js +58 -7198
  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 +89 -0
  311. package/dist/objects/ApiaUtil/index.js.map +1 -0
  312. package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.d.ts +23 -0
  313. package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.d.ts.map +1 -0
  314. package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.js +108 -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 +38 -0
  321. package/dist/objects/ApiaUtil/modals/OpenModal.d.ts.map +1 -0
  322. package/dist/objects/ApiaUtil/modals/OpenModal.js +37 -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 +76 -0
  373. package/dist/tabs/ContextMenu.js.map +1 -0
  374. package/dist/tabs/Item.js +63 -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 +2 -2
@@ -0,0 +1,273 @@
1
+ import { isChild } from '@apia/util';
2
+ import { useRef, useCallback, useEffect } from 'react';
3
+
4
+ function isAttachToElementAFunction(attachToElement) {
5
+ return attachToElement instanceof Function && getParamNames(attachToElement).length === 0;
6
+ }
7
+ const STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm;
8
+ const ARGUMENT_NAMES = /([^\s,]+)/g;
9
+ function getParamNames(func) {
10
+ const fnStr = func.toString().replace(STRIP_COMMENTS, "");
11
+ let result = fnStr.slice(fnStr.indexOf("(") + 1, fnStr.indexOf(")")).match(ARGUMENT_NAMES);
12
+ if (result === null)
13
+ result = [];
14
+ return result;
15
+ }
16
+ function determineAnchorPoint({
17
+ attachToElement,
18
+ attachToElementAnchorPoint
19
+ }) {
20
+ let actualAnchorPoint = { left: 0, top: 0 };
21
+ const element = isAttachToElementAFunction(attachToElement) ? attachToElement() : attachToElement.current;
22
+ if (element) {
23
+ const rect = element.getBoundingClientRect();
24
+ const point = attachToElementAnchorPoint ?? "topRight";
25
+ switch (point) {
26
+ case "bottomLeft":
27
+ actualAnchorPoint = {
28
+ left: rect.left,
29
+ top: rect.bottom
30
+ };
31
+ break;
32
+ case "bottomRight":
33
+ actualAnchorPoint = {
34
+ left: rect.right,
35
+ top: rect.bottom
36
+ };
37
+ break;
38
+ case "center":
39
+ actualAnchorPoint = {
40
+ left: (rect.left + rect.right) / 2,
41
+ top: (rect.bottom + rect.top) / 2
42
+ };
43
+ break;
44
+ case "topLeft":
45
+ actualAnchorPoint = {
46
+ left: rect.left,
47
+ top: rect.top
48
+ };
49
+ break;
50
+ case "topRight":
51
+ actualAnchorPoint = {
52
+ left: rect.right,
53
+ top: rect.top
54
+ };
55
+ break;
56
+ }
57
+ } else {
58
+ console.warn(
59
+ "Cannot resolve element, will use default positioning ",
60
+ attachToElement
61
+ );
62
+ }
63
+ return actualAnchorPoint;
64
+ }
65
+ let x = 0;
66
+ let y = 0;
67
+ document.addEventListener("mousemove", (ev) => {
68
+ x = ev.clientX;
69
+ y = ev.clientY;
70
+ });
71
+ function calculateTooltipPosition({
72
+ anchorPoint,
73
+ attachToElement,
74
+ attachToElementAnchorPoint,
75
+ attachToMousePosition,
76
+ minSize,
77
+ preferredOrientationX,
78
+ preferredOrientationY,
79
+ preferredSize = { height: "auto", width: "auto" }
80
+ }) {
81
+ let actualAnchorPoint = anchorPoint;
82
+ if (attachToMousePosition) {
83
+ actualAnchorPoint = {
84
+ left: x + 3,
85
+ top: y + 3
86
+ };
87
+ }
88
+ if (attachToElement) {
89
+ actualAnchorPoint = determineAnchorPoint({
90
+ attachToElement,
91
+ attachToElementAnchorPoint
92
+ });
93
+ }
94
+ if (actualAnchorPoint) {
95
+ const availableBottomSpace = window.innerHeight - actualAnchorPoint.top;
96
+ const availableTopSpace = actualAnchorPoint.top;
97
+ const availableLeftSpace = actualAnchorPoint.left;
98
+ const availableRightSpace = window.innerWidth - actualAnchorPoint.left;
99
+ const isEnoughToRight = (minSize?.width ?? 0) <= availableRightSpace;
100
+ const isEnoughToLeft = (minSize?.width ?? 0) <= availableLeftSpace;
101
+ const isEnoughToBottom = (minSize?.height ?? 0) <= availableBottomSpace;
102
+ const isEnoughToTop = (minSize?.height ?? 0) <= availableTopSpace;
103
+ const preferredWidth = preferredSize.width === "auto" ? Infinity : preferredSize.width;
104
+ const preferredHeight = preferredSize.height === "auto" ? Infinity : preferredSize.height;
105
+ const position = {
106
+ "& > *": {
107
+ width: "100%",
108
+ height: "100%"
109
+ },
110
+ width: preferredSize.width === "auto" ? "auto" : "100%",
111
+ height: preferredSize.height === "auto" ? "auto" : "100%"
112
+ };
113
+ if (preferredOrientationX === "left") {
114
+ if (isEnoughToLeft) {
115
+ position.maxWidth = Math.min(preferredWidth, availableLeftSpace);
116
+ position.right = window.innerWidth - actualAnchorPoint.left;
117
+ } else if (isEnoughToRight) {
118
+ position.maxWidth = Math.min(preferredWidth, availableRightSpace);
119
+ position.left = actualAnchorPoint.left;
120
+ } else {
121
+ position.left = 0;
122
+ position.maxWidth = "100vw";
123
+ }
124
+ } else {
125
+ if (isEnoughToRight) {
126
+ position.maxWidth = Math.min(preferredWidth, availableRightSpace);
127
+ position.left = actualAnchorPoint.left;
128
+ } else if (isEnoughToLeft) {
129
+ position.maxWidth = Math.min(preferredWidth, availableLeftSpace);
130
+ position.right = window.innerWidth - actualAnchorPoint.left;
131
+ } else {
132
+ position.left = 0;
133
+ position.maxWidth = "100vw";
134
+ }
135
+ }
136
+ if (preferredOrientationY === "top") {
137
+ if (isEnoughToTop) {
138
+ position.maxHeight = Math.min(preferredHeight, availableTopSpace);
139
+ position.bottom = window.innerHeight - actualAnchorPoint.top;
140
+ } else if (isEnoughToBottom) {
141
+ position.maxHeight = Math.min(preferredHeight, availableBottomSpace);
142
+ position.top = actualAnchorPoint.top;
143
+ } else {
144
+ position.maxHeight = "100vh";
145
+ position.top = 0;
146
+ }
147
+ } else {
148
+ if (isEnoughToBottom) {
149
+ position.maxHeight = Math.min(preferredHeight, availableBottomSpace);
150
+ position.top = actualAnchorPoint.top;
151
+ } else if (isEnoughToTop) {
152
+ position.maxHeight = Math.min(preferredHeight, availableTopSpace);
153
+ position.bottom = window.innerHeight - actualAnchorPoint.top;
154
+ } else {
155
+ position.maxHeight = "100vh";
156
+ position.top = 0;
157
+ }
158
+ }
159
+ position.minHeight = typeof position.maxHeight === "number" ? Math.min(position.maxHeight, minSize?.height ?? 0) : minSize?.height ?? 0;
160
+ position.minWidth = typeof position.minWidth === "number" ? Math.min(position.minWidth, minSize?.width ?? 0) : minSize?.width ?? 0;
161
+ return position;
162
+ }
163
+ return { left: 0, top: 0, width: "auto", height: "auto" };
164
+ }
165
+ function useHandlers({
166
+ attachToElement,
167
+ closeOnClick,
168
+ closeOnClickOut,
169
+ closeOnEscape,
170
+ closeOnMouseLeaveTooltip,
171
+ closeOnMouseLeaveAttachedElement,
172
+ closeOnScrollOut,
173
+ onClose
174
+ }) {
175
+ const hasInited = useRef(false);
176
+ const close = useCallback(() => {
177
+ onClose?.();
178
+ }, [onClose]);
179
+ useEffect(() => {
180
+ function handleEscape(ev) {
181
+ if (ev.code === "Escape" && closeOnEscape !== false) {
182
+ close();
183
+ }
184
+ }
185
+ function handleMouseDownOut(ev) {
186
+ if (!hasInited.current)
187
+ return;
188
+ const actuallyCloseOnClickOut = (closeOnClickOut instanceof Function ? closeOnClickOut(ev) : closeOnClickOut) === true;
189
+ if (actuallyCloseOnClickOut && !isChild(
190
+ ev.target,
191
+ (current) => current.classList?.contains("tooltip__wrapper")
192
+ )) {
193
+ close();
194
+ }
195
+ }
196
+ function handleScroll(ev) {
197
+ if (!hasInited.current)
198
+ return;
199
+ if (closeOnScrollOut && !isChild(
200
+ ev.target,
201
+ (current) => current.classList?.contains("tooltip__wrapper")
202
+ )) {
203
+ close();
204
+ }
205
+ }
206
+ function handleMouseLeave(event) {
207
+ const actuallyCloseOnMouseLeaveTooltip = closeOnMouseLeaveTooltip instanceof Function ? closeOnMouseLeaveTooltip(event) : closeOnMouseLeaveTooltip;
208
+ const actuallyCloseOnMouseLeaveAttachedElement = closeOnMouseLeaveAttachedElement instanceof Function ? closeOnMouseLeaveAttachedElement(event) : closeOnMouseLeaveAttachedElement;
209
+ if (!hasInited.current || !actuallyCloseOnMouseLeaveAttachedElement && !actuallyCloseOnMouseLeaveTooltip)
210
+ return;
211
+ const resolvedAttachToElement = attachToElement ? isAttachToElementAFunction(attachToElement) ? attachToElement() : attachToElement.current : null;
212
+ const isTooltipTheTarget = isChild(
213
+ event.target,
214
+ (current) => current.classList.contains("tooltip__wrapper")
215
+ );
216
+ const isAttachedTheTarget = isChild(
217
+ event.target,
218
+ (current) => current === resolvedAttachToElement
219
+ );
220
+ const isTooltipRelated = isChild(
221
+ event.relatedTarget,
222
+ (current) => current.classList.contains("tooltip__wrapper")
223
+ );
224
+ const isAttachedRelated = isChild(
225
+ event.relatedTarget,
226
+ (current) => current === resolvedAttachToElement
227
+ );
228
+ if (isTooltipRelated || isAttachedRelated)
229
+ return;
230
+ if (isAttachedTheTarget && !actuallyCloseOnMouseLeaveAttachedElement)
231
+ return;
232
+ if (isTooltipTheTarget && !actuallyCloseOnMouseLeaveTooltip)
233
+ return;
234
+ if (isTooltipTheTarget || isAttachedTheTarget)
235
+ close();
236
+ }
237
+ document.addEventListener("keydown", handleEscape);
238
+ document.addEventListener("mousedown", handleMouseDownOut);
239
+ document.addEventListener("scroll", handleScroll);
240
+ document.addEventListener("mouseout", handleMouseLeave);
241
+ setTimeout(() => {
242
+ hasInited.current = true;
243
+ }, 0);
244
+ return () => {
245
+ document.removeEventListener("keydown", handleEscape);
246
+ document.removeEventListener("mousedown", handleMouseDownOut);
247
+ document.removeEventListener("scroll", handleScroll);
248
+ document.removeEventListener("mouseout", handleMouseLeave);
249
+ };
250
+ }, [
251
+ attachToElement,
252
+ close,
253
+ closeOnClickOut,
254
+ closeOnEscape,
255
+ closeOnMouseLeaveAttachedElement,
256
+ closeOnMouseLeaveTooltip,
257
+ closeOnScrollOut
258
+ ]);
259
+ return {
260
+ handleOnClick: useCallback(
261
+ (ev) => {
262
+ ev.stopPropagation();
263
+ if (closeOnClick) {
264
+ close();
265
+ }
266
+ },
267
+ [close, closeOnClick]
268
+ )
269
+ };
270
+ }
271
+
272
+ export { calculateTooltipPosition, getParamNames, isAttachToElementAFunction, useHandlers };
273
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sources":["../../../../../src/objects/ApiaUtil/tooltips/tooltip/util.ts"],"sourcesContent":["import { isChild } from '@apia/util';\r\nimport { TAttachToElement, TPosition, TTooltip } from './types';\r\nimport { ThemeUICSSObject } from '@apia/theme';\r\nimport React, { useCallback, useEffect, useRef } from 'react';\r\n\r\nexport function isAttachToElementAFunction(\r\n attachToElement: TAttachToElement,\r\n): attachToElement is () => HTMLElement {\r\n return (\r\n attachToElement instanceof Function &&\r\n getParamNames(attachToElement).length === 0\r\n );\r\n}\r\n\r\nconst STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/gm;\r\nconst ARGUMENT_NAMES = /([^\\s,]+)/g;\r\n\r\nexport function getParamNames(func: object) {\r\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\r\n const fnStr = func.toString().replace(STRIP_COMMENTS, '');\r\n let result: string[] | RegExpMatchArray | null = fnStr\r\n .slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')'))\r\n .match(ARGUMENT_NAMES);\r\n if (result === null) result = [];\r\n\r\n return result;\r\n}\r\n\r\nfunction determineAnchorPoint({\r\n attachToElement,\r\n attachToElementAnchorPoint,\r\n}: Pick<TTooltip, 'attachToElementAnchorPoint'> &\r\n Required<Pick<TTooltip, 'attachToElement'>>) {\r\n let actualAnchorPoint: TPosition = { left: 0, top: 0 };\r\n\r\n const element = isAttachToElementAFunction(attachToElement)\r\n ? attachToElement()\r\n : attachToElement.current;\r\n\r\n if (element) {\r\n const rect = element.getBoundingClientRect();\r\n\r\n const point = attachToElementAnchorPoint ?? 'topRight';\r\n\r\n switch (point) {\r\n case 'bottomLeft':\r\n actualAnchorPoint = {\r\n left: rect.left,\r\n top: rect.bottom,\r\n };\r\n break;\r\n case 'bottomRight':\r\n actualAnchorPoint = {\r\n left: rect.right,\r\n top: rect.bottom,\r\n };\r\n break;\r\n case 'center':\r\n actualAnchorPoint = {\r\n left: (rect.left + rect.right) / 2,\r\n top: (rect.bottom + rect.top) / 2,\r\n };\r\n break;\r\n case 'topLeft':\r\n actualAnchorPoint = {\r\n left: rect.left,\r\n top: rect.top,\r\n };\r\n break;\r\n case 'topRight':\r\n actualAnchorPoint = {\r\n left: rect.right,\r\n top: rect.top,\r\n };\r\n break;\r\n }\r\n } else {\r\n console.warn(\r\n 'Cannot resolve element, will use default positioning ',\r\n attachToElement,\r\n );\r\n }\r\n\r\n return actualAnchorPoint;\r\n}\r\n\r\nlet x = 0;\r\nlet y = 0;\r\ndocument.addEventListener('mousemove', (ev) => {\r\n x = ev.clientX;\r\n y = ev.clientY;\r\n});\r\n\r\nexport function calculateTooltipPosition({\r\n anchorPoint,\r\n attachToElement,\r\n attachToElementAnchorPoint,\r\n attachToMousePosition,\r\n minSize,\r\n preferredOrientationX,\r\n preferredOrientationY,\r\n preferredSize = { height: 'auto', width: 'auto' },\r\n}: Pick<\r\n TTooltip,\r\n | 'anchorPoint'\r\n | 'attachToElement'\r\n | 'attachToElementAnchorPoint'\r\n | 'attachToMousePosition'\r\n | 'minSize'\r\n | 'preferredOrientationX'\r\n | 'preferredOrientationY'\r\n | 'preferredSize'\r\n>): ThemeUICSSObject {\r\n let actualAnchorPoint = anchorPoint;\r\n\r\n if (attachToMousePosition) {\r\n actualAnchorPoint = {\r\n left: x + 3,\r\n top: y + 3,\r\n };\r\n }\r\n\r\n if (attachToElement) {\r\n actualAnchorPoint = determineAnchorPoint({\r\n attachToElement,\r\n attachToElementAnchorPoint,\r\n });\r\n }\r\n\r\n if (actualAnchorPoint) {\r\n const availableBottomSpace = window.innerHeight - actualAnchorPoint.top;\r\n const availableTopSpace = actualAnchorPoint.top;\r\n const availableLeftSpace = actualAnchorPoint.left;\r\n const availableRightSpace = window.innerWidth - actualAnchorPoint.left;\r\n\r\n const isEnoughToRight = (minSize?.width ?? 0) <= availableRightSpace;\r\n const isEnoughToLeft = (minSize?.width ?? 0) <= availableLeftSpace;\r\n const isEnoughToBottom = (minSize?.height ?? 0) <= availableBottomSpace;\r\n const isEnoughToTop = (minSize?.height ?? 0) <= availableTopSpace;\r\n\r\n const preferredWidth =\r\n preferredSize.width === 'auto' ? Infinity : preferredSize.width;\r\n const preferredHeight =\r\n preferredSize.height === 'auto' ? Infinity : preferredSize.height;\r\n\r\n const position: ThemeUICSSObject = {\r\n '& > *': {\r\n width: '100%',\r\n height: '100%',\r\n },\r\n width: preferredSize.width === 'auto' ? 'auto' : '100%',\r\n height: preferredSize.height === 'auto' ? 'auto' : '100%',\r\n };\r\n\r\n if (preferredOrientationX === 'left') {\r\n if (isEnoughToLeft) {\r\n position.maxWidth = Math.min(preferredWidth, availableLeftSpace);\r\n position.right = window.innerWidth - actualAnchorPoint.left;\r\n } else if (isEnoughToRight) {\r\n position.maxWidth = Math.min(preferredWidth, availableRightSpace);\r\n position.left = actualAnchorPoint.left;\r\n } else {\r\n position.left = 0;\r\n position.maxWidth = '100vw';\r\n }\r\n } else {\r\n if (isEnoughToRight) {\r\n position.maxWidth = Math.min(preferredWidth, availableRightSpace);\r\n position.left = actualAnchorPoint.left;\r\n } else if (isEnoughToLeft) {\r\n position.maxWidth = Math.min(preferredWidth, availableLeftSpace);\r\n position.right = window.innerWidth - actualAnchorPoint.left;\r\n } else {\r\n position.left = 0;\r\n position.maxWidth = '100vw';\r\n }\r\n }\r\n\r\n if (preferredOrientationY === 'top') {\r\n if (isEnoughToTop) {\r\n position.maxHeight = Math.min(preferredHeight, availableTopSpace);\r\n position.bottom = window.innerHeight - actualAnchorPoint.top;\r\n } else if (isEnoughToBottom) {\r\n position.maxHeight = Math.min(preferredHeight, availableBottomSpace);\r\n position.top = actualAnchorPoint.top;\r\n } else {\r\n position.maxHeight = '100vh';\r\n position.top = 0;\r\n }\r\n } else {\r\n if (isEnoughToBottom) {\r\n position.maxHeight = Math.min(preferredHeight, availableBottomSpace);\r\n position.top = actualAnchorPoint.top;\r\n } else if (isEnoughToTop) {\r\n position.maxHeight = Math.min(preferredHeight, availableTopSpace);\r\n position.bottom = window.innerHeight - actualAnchorPoint.top;\r\n } else {\r\n position.maxHeight = '100vh';\r\n position.top = 0;\r\n }\r\n }\r\n\r\n position.minHeight =\r\n typeof position.maxHeight === 'number'\r\n ? Math.min(position.maxHeight, minSize?.height ?? 0)\r\n : minSize?.height ?? 0;\r\n position.minWidth =\r\n typeof position.minWidth === 'number'\r\n ? Math.min(position.minWidth, minSize?.width ?? 0)\r\n : minSize?.width ?? 0;\r\n\r\n return position;\r\n }\r\n\r\n return { left: 0, top: 0, width: 'auto', height: 'auto' };\r\n}\r\n\r\nexport function useHandlers({\r\n attachToElement,\r\n closeOnClick,\r\n closeOnClickOut,\r\n closeOnEscape,\r\n closeOnMouseLeaveTooltip,\r\n closeOnMouseLeaveAttachedElement,\r\n closeOnScrollOut,\r\n onClose,\r\n}: Pick<\r\n TTooltip,\r\n | 'attachToElement'\r\n | 'closeOnClick'\r\n | 'closeOnClickOut'\r\n | 'closeOnEscape'\r\n | 'closeOnMouseLeaveTooltip'\r\n | 'closeOnMouseLeaveAttachedElement'\r\n | 'closeOnScrollOut'\r\n | 'onClose'\r\n>) {\r\n const hasInited = useRef(false);\r\n const close = useCallback(() => {\r\n onClose?.();\r\n }, [onClose]);\r\n\r\n useEffect(() => {\r\n function handleEscape(ev: KeyboardEvent) {\r\n if (ev.code === 'Escape' && closeOnEscape !== false) {\r\n close();\r\n }\r\n }\r\n function handleMouseDownOut(ev: MouseEvent) {\r\n if (!hasInited.current) return;\r\n\r\n const actuallyCloseOnClickOut =\r\n (closeOnClickOut instanceof Function\r\n ? closeOnClickOut(ev)\r\n : closeOnClickOut) === true;\r\n\r\n if (\r\n actuallyCloseOnClickOut &&\r\n !isChild(ev.target as HTMLElement, (current) =>\r\n current.classList?.contains('tooltip__wrapper'),\r\n )\r\n ) {\r\n close();\r\n }\r\n }\r\n function handleScroll(ev: Event) {\r\n if (!hasInited.current) return;\r\n if (\r\n closeOnScrollOut &&\r\n !isChild(ev.target as HTMLElement, (current) =>\r\n current.classList?.contains('tooltip__wrapper'),\r\n )\r\n ) {\r\n close();\r\n }\r\n }\r\n\r\n function handleMouseLeave(event: MouseEvent) {\r\n const actuallyCloseOnMouseLeaveTooltip =\r\n closeOnMouseLeaveTooltip instanceof Function\r\n ? closeOnMouseLeaveTooltip(event)\r\n : closeOnMouseLeaveTooltip;\r\n\r\n const actuallyCloseOnMouseLeaveAttachedElement =\r\n closeOnMouseLeaveAttachedElement instanceof Function\r\n ? closeOnMouseLeaveAttachedElement(event)\r\n : closeOnMouseLeaveAttachedElement;\r\n\r\n if (\r\n !hasInited.current ||\r\n (!actuallyCloseOnMouseLeaveAttachedElement &&\r\n !actuallyCloseOnMouseLeaveTooltip)\r\n )\r\n return;\r\n\r\n const resolvedAttachToElement = attachToElement\r\n ? isAttachToElementAFunction(attachToElement)\r\n ? attachToElement()\r\n : attachToElement.current\r\n : null;\r\n\r\n const isTooltipTheTarget = isChild(\r\n event.target as HTMLElement,\r\n (current) => current.classList.contains('tooltip__wrapper'),\r\n );\r\n const isAttachedTheTarget = isChild(\r\n event.target as HTMLElement,\r\n (current) => current === resolvedAttachToElement,\r\n );\r\n\r\n const isTooltipRelated = isChild(\r\n event.relatedTarget as HTMLElement,\r\n (current) => current.classList.contains('tooltip__wrapper'),\r\n );\r\n\r\n const isAttachedRelated = isChild(\r\n event.relatedTarget as HTMLElement,\r\n (current) => current === resolvedAttachToElement,\r\n );\r\n\r\n if (isTooltipRelated || isAttachedRelated) return;\r\n if (isAttachedTheTarget && !actuallyCloseOnMouseLeaveAttachedElement)\r\n return;\r\n if (isTooltipTheTarget && !actuallyCloseOnMouseLeaveTooltip) return;\r\n\r\n if (isTooltipTheTarget || isAttachedTheTarget) close();\r\n }\r\n\r\n document.addEventListener('keydown', handleEscape);\r\n document.addEventListener('mousedown', handleMouseDownOut);\r\n document.addEventListener('scroll', handleScroll);\r\n document.addEventListener('mouseout', handleMouseLeave);\r\n\r\n setTimeout(() => {\r\n hasInited.current = true;\r\n }, 0);\r\n\r\n return () => {\r\n document.removeEventListener('keydown', handleEscape);\r\n document.removeEventListener('mousedown', handleMouseDownOut);\r\n document.removeEventListener('scroll', handleScroll);\r\n document.removeEventListener('mouseout', handleMouseLeave);\r\n };\r\n }, [\r\n attachToElement,\r\n close,\r\n closeOnClickOut,\r\n closeOnEscape,\r\n closeOnMouseLeaveAttachedElement,\r\n closeOnMouseLeaveTooltip,\r\n closeOnScrollOut,\r\n ]);\r\n\r\n return {\r\n handleOnClick: useCallback(\r\n (ev: React.MouseEvent) => {\r\n ev.stopPropagation();\r\n if (closeOnClick) {\r\n close();\r\n }\r\n },\r\n [close, closeOnClick],\r\n ),\r\n };\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import * as React from 'react';
2
+ import * as _apia_util from '@apia/util';
3
+ import { StatefulEmitter } from '@apia/util';
4
+
5
+ type LockTypes = 'linear' | 'white' | 'common';
6
+ type Lock = {
7
+ count: number;
8
+ };
9
+ type LockOptions = Partial<{
10
+ type: LockTypes;
11
+ }>;
12
+ declare class ScreenLocker {
13
+ protected emitter: StatefulEmitter<{
14
+ locks: Record<LockTypes, Lock>;
15
+ release: true;
16
+ }>;
17
+ lock: (options?: LockOptions) => () => void;
18
+ protected hasReleased: boolean;
19
+ /**
20
+ * This method will work once, then, the action will be ignored. The ScreenLocker starts always locked on white, when this method is called, all listeners of onRelease will be called and the lock will be released.
21
+ */
22
+ release: () => void;
23
+ /**
24
+ * This method notifies when the screenLock is released by the first time.
25
+ */
26
+ onRelease: (cb: _apia_util.Callback<{
27
+ locks: Record<LockTypes, Lock>;
28
+ release: true;
29
+ }, "locks" | "release">) => _apia_util.UnSubscriber;
30
+ /**
31
+ * This component is the responsible for putting the lock courtain in the browser when it's required. It must be used once per application.
32
+ */
33
+ Component: () => React.JSX.Element | null;
34
+ }
35
+
36
+ export { ScreenLocker };
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,92 @@
1
+ import { jsx } from '@apia/theme/jsx-runtime';
2
+ import { StatefulEmitter } from '@apia/util';
3
+
4
+ var __defProp = Object.defineProperty;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __publicField = (obj, key, value) => {
7
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
+ return value;
9
+ };
10
+ class ScreenLocker {
11
+ constructor() {
12
+ __publicField(this, "emitter", new StatefulEmitter({
13
+ locks: {
14
+ common: { count: 0 },
15
+ linear: { count: 0 },
16
+ white: { count: 1 }
17
+ }
18
+ }));
19
+ __publicField(this, "lock", (options) => {
20
+ this.emitter.setState("locks", (s) => {
21
+ const key = options?.type ?? "common";
22
+ return {
23
+ ...s,
24
+ [key]: { count: (s[key].count ?? 0) + 1 }
25
+ };
26
+ });
27
+ return () => this.emitter.setState("locks", (s) => {
28
+ const key = options?.type ?? "common";
29
+ return {
30
+ ...s,
31
+ [key]: { count: (s[key].count ?? 0) - 1 }
32
+ };
33
+ });
34
+ });
35
+ __publicField(this, "hasReleased", false);
36
+ /**
37
+ * This method will work once, then, the action will be ignored. The ScreenLocker starts always locked on white, when this method is called, all listeners of onRelease will be called and the lock will be released.
38
+ */
39
+ __publicField(this, "release", () => {
40
+ if (this.hasReleased)
41
+ return;
42
+ this.hasReleased = true;
43
+ this.emitter.setState("locks", (s) => {
44
+ const key = "white";
45
+ return {
46
+ ...s,
47
+ [key]: { count: (s[key].count ?? 0) - 1 }
48
+ };
49
+ });
50
+ this.emitter.emit("release", true);
51
+ });
52
+ /**
53
+ * This method notifies when the screenLock is released by the first time.
54
+ */
55
+ __publicField(this, "onRelease", this.emitter.on.bind(this.emitter, "release"));
56
+ /**
57
+ * This component is the responsible for putting the lock courtain in the browser when it's required. It must be used once per application.
58
+ */
59
+ __publicField(this, "Component", () => {
60
+ const locks = this.emitter.useState("locks");
61
+ const style = {
62
+ alignItems: "center",
63
+ display: "flex",
64
+ inset: 0,
65
+ justifyContent: "center",
66
+ position: "fixed"
67
+ };
68
+ if (locks.white.count) {
69
+ return /* @__PURE__ */ jsx(
70
+ "div",
71
+ {
72
+ style: {
73
+ ...style,
74
+ background: "white"
75
+ },
76
+ children: "White"
77
+ }
78
+ );
79
+ }
80
+ if (locks.linear.count) {
81
+ return /* @__PURE__ */ jsx("div", { style, children: "Linear" });
82
+ }
83
+ if (locks.common.count) {
84
+ return /* @__PURE__ */ jsx("div", { style, children: "Common" });
85
+ }
86
+ return null;
87
+ });
88
+ }
89
+ }
90
+
91
+ export { ScreenLocker };
92
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/objects/ScreenLocker/index.tsx"],"sourcesContent":["import { CSSProperties } from '@apia/theme';\r\nimport { StatefulEmitter } from '@apia/util';\r\n\r\ntype LockTypes = 'linear' | 'white' | 'common';\r\ntype Lock = {\r\n count: number;\r\n};\r\ntype LockOptions = Partial<{\r\n type: LockTypes;\r\n}>;\r\n\r\nexport class ScreenLocker {\r\n protected emitter = new StatefulEmitter<{\r\n locks: Record<LockTypes, Lock>;\r\n release: true;\r\n }>({\r\n locks: {\r\n common: { count: 0 },\r\n linear: { count: 0 },\r\n white: { count: 1 },\r\n },\r\n });\r\n\r\n lock = (options?: LockOptions) => {\r\n this.emitter.setState('locks', (s) => {\r\n const key = options?.type ?? 'common';\r\n\r\n return {\r\n ...s,\r\n [key]: { count: (s[key].count ?? 0) + 1 },\r\n };\r\n });\r\n\r\n return () =>\r\n this.emitter.setState('locks', (s) => {\r\n const key = options?.type ?? 'common';\r\n\r\n return {\r\n ...s,\r\n [key]: { count: (s[key].count ?? 0) - 1 },\r\n };\r\n });\r\n };\r\n\r\n protected hasReleased = false;\r\n /**\r\n * This method will work once, then, the action will be ignored. The ScreenLocker starts always locked on white, when this method is called, all listeners of onRelease will be called and the lock will be released.\r\n */\r\n release = () => {\r\n if (this.hasReleased) return;\r\n this.hasReleased = true;\r\n\r\n this.emitter.setState('locks', (s) => {\r\n const key = 'white';\r\n\r\n return {\r\n ...s,\r\n [key]: { count: (s[key].count ?? 0) - 1 },\r\n };\r\n });\r\n this.emitter.emit('release', true);\r\n };\r\n\r\n /**\r\n * This method notifies when the screenLock is released by the first time.\r\n */\r\n onRelease = this.emitter.on.bind(this.emitter, 'release');\r\n\r\n /**\r\n * This component is the responsible for putting the lock courtain in the browser when it's required. It must be used once per application.\r\n */\r\n Component = () => {\r\n const locks = this.emitter.useState('locks');\r\n\r\n const style: CSSProperties = {\r\n alignItems: 'center',\r\n display: 'flex',\r\n inset: 0,\r\n justifyContent: 'center',\r\n position: 'fixed',\r\n };\r\n\r\n if (locks.white.count) {\r\n return (\r\n <div\r\n style={{\r\n ...style,\r\n background: 'white',\r\n }}\r\n >\r\n White\r\n </div>\r\n );\r\n }\r\n\r\n if (locks.linear.count) {\r\n return <div style={style}>Linear</div>;\r\n }\r\n\r\n if (locks.common.count) {\r\n return <div style={style}>Common</div>;\r\n }\r\n\r\n return null;\r\n };\r\n}\r\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import React__default from 'react';
2
+ import { BoxProps } from '@apia/theme';
3
+
4
+ declare const TabsContent: (props: Omit<BoxProps, 'children'>) => React__default.JSX.Element;
5
+
6
+ export { TabsContent };
7
+ //# sourceMappingURL=Content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Content.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ import { jsx, jsxs } from '@apia/theme/jsx-runtime';
2
+ import React__default from 'react';
3
+ import { Box, getVariant, Spinner } from '@apia/theme';
4
+ import { useTabsContext } from './util.js';
5
+ import { usePropsSelector } from '@apia/util';
6
+
7
+ const TabsContent = (props) => {
8
+ const { handler, id } = useTabsContext();
9
+ const handlerRef = React__default.useRef(handler);
10
+ handlerRef.current = handler;
11
+ const tabs = usePropsSelector(handler.stateKey, {
12
+ propsStore: handler.stateStore,
13
+ selector: (current) => {
14
+ return (current.tabs ?? []).map(
15
+ (tabId) => handlerRef.current?.propsStore.getFieldProps(tabId)
16
+ );
17
+ },
18
+ comparator() {
19
+ return false;
20
+ }
21
+ });
22
+ return /* @__PURE__ */ jsx(
23
+ Box,
24
+ {
25
+ className: "tabs__content__wrapper",
26
+ ...getVariant("layout.common.tabs.primary.content"),
27
+ ...props,
28
+ children: tabs?.map((current) => {
29
+ const Render = current.content;
30
+ return /* @__PURE__ */ jsxs(
31
+ Box,
32
+ {
33
+ "aria-hidden": !current.isOpen,
34
+ "aria-labelledby": `tab-${id}-${current.id}`,
35
+ className: `tabs__content ${current.isOpen ? "open" : ""}`,
36
+ "data-id": current.id,
37
+ id: `tabpanel-${id}-${current.id}`,
38
+ role: "tabpanel",
39
+ children: [
40
+ /* @__PURE__ */ jsx(Render, { tab: current }),
41
+ current.isLoading && /* @__PURE__ */ jsx(Box, { className: "tabs__content__spinner__wrapper", children: /* @__PURE__ */ jsx(Spinner, {}) })
42
+ ]
43
+ },
44
+ current.id
45
+ );
46
+ })
47
+ }
48
+ );
49
+ };
50
+
51
+ export { TabsContent };
52
+ //# sourceMappingURL=Content.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Content.js","sources":["../../src/tabs/Content.tsx"],"sourcesContent":["import React from 'react';\r\nimport { Box, BoxProps, Spinner, getVariant } from '@apia/theme';\r\nimport { useTabsContext } from './util';\r\nimport { usePropsSelector } from '@apia/util';\r\n\r\nexport const TabsContent = (props: Omit<BoxProps, 'children'>) => {\r\n const { handler, id } = useTabsContext();\r\n const handlerRef = React.useRef(handler);\r\n handlerRef.current = handler;\r\n const tabs = usePropsSelector(handler.stateKey, {\r\n propsStore: handler.stateStore,\r\n selector: (current) => {\r\n return (current.tabs ?? []).map((tabId) =>\r\n handlerRef.current?.propsStore.getFieldProps(tabId),\r\n );\r\n },\r\n comparator() {\r\n return false;\r\n },\r\n });\r\n\r\n return (\r\n <Box\r\n className=\"tabs__content__wrapper\"\r\n {...getVariant('layout.common.tabs.primary.content')}\r\n {...props}\r\n >\r\n {tabs?.map((current) => {\r\n const Render = current.content;\r\n\r\n return (\r\n <Box\r\n aria-hidden={!current.isOpen}\r\n aria-labelledby={`tab-${id}-${current.id}`}\r\n className={`tabs__content ${current.isOpen ? 'open' : ''}`}\r\n data-id={current.id}\r\n id={`tabpanel-${id}-${current.id}`}\r\n key={current.id}\r\n role=\"tabpanel\"\r\n >\r\n <Render tab={current} />\r\n {current.isLoading && (\r\n <Box className=\"tabs__content__spinner__wrapper\">\r\n <Spinner />\r\n </Box>\r\n )}\r\n </Box>\r\n );\r\n })}\r\n </Box>\r\n );\r\n};\r\n"],"names":["React"],"mappings":";;;;;;AAKa,MAAA,WAAA,GAAc,CAAC,KAAsC,KAAA;AAChE,EAAA,MAAM,EAAE,OAAA,EAAS,EAAG,EAAA,GAAI,cAAe,EAAA,CAAA;AACvC,EAAM,MAAA,UAAA,GAAaA,cAAM,CAAA,MAAA,CAAO,OAAO,CAAA,CAAA;AACvC,EAAA,UAAA,CAAW,OAAU,GAAA,OAAA,CAAA;AACrB,EAAM,MAAA,IAAA,GAAO,gBAAiB,CAAA,OAAA,CAAQ,QAAU,EAAA;AAAA,IAC9C,YAAY,OAAQ,CAAA,UAAA;AAAA,IACpB,QAAA,EAAU,CAAC,OAAY,KAAA;AACrB,MAAQ,OAAA,CAAA,OAAA,CAAQ,IAAQ,IAAA,EAAI,EAAA,GAAA;AAAA,QAAI,CAAC,KAC/B,KAAA,UAAA,CAAW,OAAS,EAAA,UAAA,CAAW,cAAc,KAAK,CAAA;AAAA,OACpD,CAAA;AAAA,KACF;AAAA,IACA,UAAa,GAAA;AACX,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAAA,GACD,CAAA,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,SAAU,EAAA,wBAAA;AAAA,MACT,GAAG,WAAW,oCAAoC,CAAA;AAAA,MAClD,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,IAAA,EAAM,GAAI,CAAA,CAAC,OAAY,KAAA;AACtB,QAAA,MAAM,SAAS,OAAQ,CAAA,OAAA,CAAA;AAEvB,QACE,uBAAA,IAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAa,CAAC,OAAQ,CAAA,MAAA;AAAA,YACtB,iBAAiB,EAAA,CAAA,IAAA,EAAO,EAAE,CAAA,CAAA,EAAI,QAAQ,EAAE,CAAA,CAAA;AAAA,YACxC,SAAW,EAAA,CAAA,cAAA,EAAiB,OAAQ,CAAA,MAAA,GAAS,SAAS,EAAE,CAAA,CAAA;AAAA,YACxD,WAAS,OAAQ,CAAA,EAAA;AAAA,YACjB,EAAI,EAAA,CAAA,SAAA,EAAY,EAAE,CAAA,CAAA,EAAI,QAAQ,EAAE,CAAA,CAAA;AAAA,YAEhC,IAAK,EAAA,UAAA;AAAA,YAEL,QAAA,EAAA;AAAA,8BAAC,GAAA,CAAA,MAAA,EAAA,EAAO,KAAK,OAAS,EAAA,CAAA;AAAA,cACrB,OAAA,CAAQ,6BACN,GAAA,CAAA,GAAA,EAAA,EAAI,WAAU,iCACb,EAAA,QAAA,kBAAA,GAAA,CAAC,WAAQ,CACX,EAAA,CAAA;AAAA,aAAA;AAAA,WAAA;AAAA,UAPG,OAAQ,CAAA,EAAA;AAAA,SASf,CAAA;AAAA,OAEH,CAAA;AAAA,KAAA;AAAA,GACH,CAAA;AAEJ;;;;"}
@@ -0,0 +1,76 @@
1
+ import { jsxs, jsx } from '@apia/theme/jsx-runtime';
2
+ import { useMenuState, ControlledMenu, MenuItem } from '@szhsin/react-menu';
3
+ import React__default from 'react';
4
+ import { useTabsContext } from './util.js';
5
+ import { getLabel } from '@apia/util';
6
+
7
+ const ContextMenu = ({
8
+ anchorPoint,
9
+ isOpen,
10
+ onClose,
11
+ targetId
12
+ }) => {
13
+ const [menuProps, toggleMenu] = useMenuState();
14
+ React__default.useEffect(() => {
15
+ toggleMenu(isOpen);
16
+ }, [isOpen]);
17
+ const { handler } = useTabsContext();
18
+ const closeOthers = React__default.useCallback(() => {
19
+ void handler.closeOthers(targetId);
20
+ }, [handler, targetId]);
21
+ const closeToLeft = React__default.useCallback(() => {
22
+ void handler.closeToLeft(targetId);
23
+ }, [handler, targetId]);
24
+ const closeToRight = React__default.useCallback(() => {
25
+ void handler.closeToRight(targetId);
26
+ }, [handler, targetId]);
27
+ const firstNonFixedTab = handler.tabsList?.find(
28
+ (current) => !handler.propsStore.getFieldProps(current).isFixed
29
+ );
30
+ let lastNonFixedTab = null;
31
+ if (handler.tabsList)
32
+ for (let i = handler.tabsList.length - 1; i >= 0; i--) {
33
+ if (!handler.propsStore.getFieldProps(handler.tabsList[i]).isFixed) {
34
+ lastNonFixedTab = handler.tabsList[i];
35
+ break;
36
+ }
37
+ }
38
+ const nonFixedTabsLength = handler.tabsList?.filter(
39
+ (current) => !handler.propsStore.getFieldProps(current).isFixed
40
+ ).length ?? 0;
41
+ return /* @__PURE__ */ jsxs(
42
+ ControlledMenu,
43
+ {
44
+ ...menuProps,
45
+ anchorPoint,
46
+ onClose,
47
+ portal: { target: document.getElementById("AppModals") },
48
+ children: [
49
+ /* @__PURE__ */ jsx(
50
+ MenuItem,
51
+ {
52
+ onClick: React__default.useCallback(() => {
53
+ void handler.closeTab(targetId);
54
+ }, [handler, targetId]),
55
+ children: window.BTN_CLOSE
56
+ }
57
+ ),
58
+ /* @__PURE__ */ jsx(
59
+ MenuItem,
60
+ {
61
+ onClick: React__default.useCallback(() => {
62
+ void handler.closeAll();
63
+ }, [handler]),
64
+ children: getLabel("lblCloseAll").text
65
+ }
66
+ ),
67
+ firstNonFixedTab !== targetId && /* @__PURE__ */ jsx(MenuItem, { onClick: closeToLeft, children: getLabel("lblCloseToLeft").text }),
68
+ lastNonFixedTab !== targetId && /* @__PURE__ */ jsx(MenuItem, { onClick: closeToRight, children: getLabel("lblCloseToRight").text }),
69
+ nonFixedTabsLength > 1 && /* @__PURE__ */ jsx(MenuItem, { onClick: closeOthers, children: getLabel("lblCloseOthers").text })
70
+ ]
71
+ }
72
+ );
73
+ };
74
+
75
+ export { ContextMenu as default };
76
+ //# sourceMappingURL=ContextMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextMenu.js","sources":["../../src/tabs/ContextMenu.tsx"],"sourcesContent":["import { ControlledMenu, MenuItem, useMenuState } from '@szhsin/react-menu';\r\nimport React from 'react';\r\nimport { useTabsContext } from './util';\r\nimport { TId, getLabel } from '@apia/util';\r\n\r\nconst ContextMenu = ({\r\n anchorPoint,\r\n isOpen,\r\n onClose,\r\n targetId,\r\n}: {\r\n anchorPoint: {\r\n x: number;\r\n y: number;\r\n };\r\n isOpen: boolean;\r\n onClose: () => unknown;\r\n targetId: TId;\r\n}) => {\r\n const [menuProps, toggleMenu] = useMenuState();\r\n React.useEffect(() => {\r\n toggleMenu(isOpen);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [isOpen]);\r\n\r\n const { handler } = useTabsContext();\r\n\r\n const closeOthers = React.useCallback(() => {\r\n void handler.closeOthers(targetId);\r\n }, [handler, targetId]);\r\n\r\n const closeToLeft = React.useCallback(() => {\r\n void handler.closeToLeft(targetId);\r\n }, [handler, targetId]);\r\n\r\n const closeToRight = React.useCallback(() => {\r\n void handler.closeToRight(targetId);\r\n }, [handler, targetId]);\r\n\r\n const firstNonFixedTab = handler.tabsList?.find(\r\n (current) => !handler.propsStore.getFieldProps(current).isFixed,\r\n );\r\n\r\n let lastNonFixedTab: TId | null = null;\r\n if (handler.tabsList)\r\n for (let i = handler.tabsList.length - 1; i >= 0; i--) {\r\n if (!handler.propsStore.getFieldProps(handler.tabsList[i]).isFixed) {\r\n lastNonFixedTab = handler.tabsList[i];\r\n break;\r\n }\r\n }\r\n\r\n const nonFixedTabsLength =\r\n handler.tabsList?.filter(\r\n (current) => !handler.propsStore.getFieldProps(current).isFixed,\r\n ).length ?? 0;\r\n\r\n return (\r\n <ControlledMenu\r\n {...menuProps}\r\n anchorPoint={anchorPoint}\r\n onClose={onClose}\r\n portal={{ target: document.getElementById('AppModals') as Element }}\r\n >\r\n {/* // No está bien implementado todavía\r\n <MenuItem\r\n onClick={React.useCallback(() => {\r\n handler.propsStore.updateField(targetId, { isFixed: true });\r\n }, [handler.propsStore, targetId])}\r\n >\r\n {window.LBL_FIX_TAB}\r\n </MenuItem> */}\r\n <MenuItem\r\n onClick={React.useCallback(() => {\r\n void handler.closeTab(targetId);\r\n }, [handler, targetId])}\r\n >\r\n {window.BTN_CLOSE}\r\n </MenuItem>\r\n <MenuItem\r\n onClick={React.useCallback(() => {\r\n void handler.closeAll();\r\n }, [handler])}\r\n >\r\n {getLabel('lblCloseAll').text}\r\n </MenuItem>\r\n {firstNonFixedTab !== targetId && (\r\n <MenuItem onClick={closeToLeft}>\r\n {getLabel('lblCloseToLeft').text}\r\n </MenuItem>\r\n )}\r\n {lastNonFixedTab !== targetId && (\r\n <MenuItem onClick={closeToRight}>\r\n {getLabel('lblCloseToRight').text}\r\n </MenuItem>\r\n )}\r\n {nonFixedTabsLength > 1 && (\r\n <MenuItem onClick={closeOthers}>\r\n {getLabel('lblCloseOthers').text}\r\n </MenuItem>\r\n )}\r\n </ControlledMenu>\r\n );\r\n};\r\n\r\nexport default ContextMenu;\r\n"],"names":["React"],"mappings":"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"}