@apia/components 1.0.2 → 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,175 @@
1
+ import { jsx, jsxs } from '@apia/theme/jsx-runtime';
2
+ import React__default, { forwardRef, useRef, useState, useEffect, useCallback } from 'react';
3
+ import { CSSTransition } from 'react-transition-group';
4
+ import { Box, getVariant } from '@apia/theme';
5
+ import uniqueId from 'lodash-es/uniqueId';
6
+ import { useCombinedRefs } from '@apia/util';
7
+ import { Overlay } from './Overlay.js';
8
+ import DialogHeader from './layout/DialogHeader.js';
9
+ import { ModalContext } from './ModalContext.js';
10
+ import { useEscapeKey } from './hooks/useEscapeKey.js';
11
+ import { useInitialFocus } from './hooks/useInitialFocus.js';
12
+
13
+ const StaticModal = forwardRef(
14
+ ({
15
+ animationDuration = 150,
16
+ children = null,
17
+ className,
18
+ hideCloseButton,
19
+ id,
20
+ initialFocusConfiguration,
21
+ initialFocusGetter,
22
+ initialFocusRef,
23
+ isOpen = false,
24
+ maxWidth,
25
+ NavBar,
26
+ noFocus,
27
+ noHeader = false,
28
+ onClose = () => {
29
+ },
30
+ onExited = () => {
31
+ },
32
+ Portal,
33
+ shouldCloseOnEsc = true,
34
+ shouldCloseOnOverlayClick = true,
35
+ size = "md",
36
+ stretch,
37
+ title = "",
38
+ variant
39
+ }, ref) => {
40
+ const lastTitle = useRef(title);
41
+ const [innerTitle, setInnerTitle] = useState(title);
42
+ if (lastTitle.current !== title && innerTitle !== title) {
43
+ setInnerTitle(title);
44
+ }
45
+ const [isOpenInner, setIsOpen] = useState(isOpen);
46
+ const innerId = React__default.useMemo(() => {
47
+ return `Modal${uniqueId()}`;
48
+ }, []);
49
+ useEffect(() => {
50
+ setIsOpen(isOpen);
51
+ }, [isOpen]);
52
+ const closeHandler = useCallback(() => {
53
+ setIsOpen(false);
54
+ onClose();
55
+ }, [onClose]);
56
+ const [overlayElement, setInnerRef] = React__default.useState();
57
+ const assignRefs = useCombinedRefs(
58
+ setInnerRef,
59
+ ref
60
+ );
61
+ const overlayClickedHandle = (event) => {
62
+ if (shouldCloseOnOverlayClick) {
63
+ if (event.target.getAttribute("data-type") === "overlay") {
64
+ closeHandler();
65
+ }
66
+ }
67
+ };
68
+ useEscapeKey({ closeHandler, id: innerId, isOpenInner, shouldCloseOnEsc });
69
+ useInitialFocus({
70
+ isOpenInner,
71
+ initialFocusConfiguration,
72
+ initialFocusGetter,
73
+ initialFocusRef,
74
+ noFocus,
75
+ parentElement: overlayElement
76
+ });
77
+ const Wrapper = React__default.useMemo(() => {
78
+ return Portal ?? React__default.Fragment;
79
+ }, []);
80
+ const nodeRef = useRef(null);
81
+ return /* @__PURE__ */ jsx(
82
+ ModalContext.Provider,
83
+ {
84
+ value: React__default.useMemo(() => {
85
+ return {
86
+ changeTitle: (newTitle) => {
87
+ setInnerTitle(newTitle);
88
+ },
89
+ close: () => {
90
+ closeHandler();
91
+ },
92
+ descriptionId: `${innerId}_Description`
93
+ };
94
+ }, [closeHandler, innerId]),
95
+ children: /* @__PURE__ */ jsx(Wrapper, { children: /* @__PURE__ */ jsx(
96
+ Overlay,
97
+ {
98
+ onOverlayClicked: overlayClickedHandle,
99
+ isOpen,
100
+ className,
101
+ stretch,
102
+ ref: assignRefs,
103
+ onExited,
104
+ id: innerId,
105
+ shouldAvoidInitialFocusTrap: noFocus,
106
+ children: /* @__PURE__ */ jsx(
107
+ CSSTransition,
108
+ {
109
+ in: isOpen,
110
+ timeout: animationDuration,
111
+ classNames: "modal",
112
+ appear: true,
113
+ unmountOnExit: true,
114
+ nodeRef,
115
+ children: /* @__PURE__ */ jsx(
116
+ Box,
117
+ {
118
+ ref: nodeRef,
119
+ className: "modal__variantWrapper",
120
+ ...variant ? getVariant(variant) : {},
121
+ children: /* @__PURE__ */ jsxs(
122
+ Box,
123
+ {
124
+ id,
125
+ role: "dialog",
126
+ "aria-modal": "true",
127
+ "aria-label": title,
128
+ "aria-describedby": `${innerId}_Description`,
129
+ "aria-hidden": "false",
130
+ className: "modal__main",
131
+ "data-scroll-lock-scrollable": true,
132
+ sx: React__default.useMemo(() => {
133
+ return {
134
+ variant: `layout.common.modals.${size}`,
135
+ ...maxWidth !== void 0 ? { maxWidth } : {}
136
+ };
137
+ }, [maxWidth, size]),
138
+ "data-variant": `layout.common.modals.${size}`,
139
+ children: [
140
+ !noHeader && /* @__PURE__ */ jsx(
141
+ DialogHeader,
142
+ {
143
+ className: "modal__header",
144
+ NavBar,
145
+ title: innerTitle,
146
+ close: closeHandler,
147
+ hideCloseButton,
148
+ id: `${innerId}_Header`
149
+ }
150
+ ),
151
+ /* @__PURE__ */ jsx(
152
+ Box,
153
+ {
154
+ className: "modal__content",
155
+ id: typeof children === "string" ? `${innerId}_Description` : void 0,
156
+ children
157
+ }
158
+ )
159
+ ]
160
+ }
161
+ )
162
+ }
163
+ )
164
+ }
165
+ )
166
+ }
167
+ ) })
168
+ }
169
+ );
170
+ }
171
+ );
172
+ StaticModal.displayName = "StaticModal";
173
+
174
+ export { StaticModal };
175
+ //# sourceMappingURL=StaticModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StaticModal.js","sources":["../../../src/components/modals/StaticModal.tsx"],"sourcesContent":["import React, {\n useEffect,\n useState,\n useCallback,\n forwardRef,\n useRef,\n} from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport { Box } from '@apia/theme';\nimport uniqueId from 'lodash-es/uniqueId';\nimport { useCombinedRefs } from '@apia/util';\nimport { getVariant } from '@apia/theme';\nimport { Overlay } from './Overlay';\nimport DialogHeader from './layout/DialogHeader';\nimport { ModalContext } from './ModalContext';\nimport { TModal } from './Modal';\nimport { useEscapeKey } from './hooks/useEscapeKey';\nimport { useInitialFocus } from './hooks/useInitialFocus';\n\nexport const StaticModal = forwardRef(\n (\n {\n animationDuration = 150,\n children = null,\n className,\n hideCloseButton,\n id,\n initialFocusConfiguration,\n initialFocusGetter,\n initialFocusRef,\n isOpen = false,\n maxWidth,\n NavBar,\n noFocus,\n noHeader = false,\n onClose = () => {},\n onExited = () => {},\n Portal,\n shouldCloseOnEsc = true,\n shouldCloseOnOverlayClick = true,\n size = 'md',\n stretch,\n title = '',\n variant,\n }: Omit<TModal, 'asWindow'>,\n ref: React.Ref<HTMLDivElement>,\n ) => {\n const lastTitle = useRef(title);\n const [innerTitle, setInnerTitle] = useState(title);\n if (lastTitle.current !== title && innerTitle !== title) {\n setInnerTitle(title);\n }\n const [isOpenInner, setIsOpen] = useState(isOpen);\n const innerId = React.useMemo(() => {\n return `Modal${uniqueId()}`;\n }, []);\n\n useEffect(() => {\n setIsOpen(isOpen);\n }, [isOpen]);\n\n const closeHandler = useCallback(() => {\n setIsOpen(false);\n onClose();\n }, [onClose]);\n const [overlayElement, setInnerRef] = React.useState<HTMLElement>();\n const assignRefs = useCombinedRefs(\n setInnerRef as unknown as React.ForwardedRef<unknown>,\n ref as unknown as React.Ref<unknown>,\n );\n\n const overlayClickedHandle = (event: React.MouseEvent<HTMLDivElement>) => {\n if (shouldCloseOnOverlayClick) {\n if (\n (event.target as HTMLDivElement).getAttribute('data-type') ===\n 'overlay'\n ) {\n closeHandler();\n }\n }\n };\n\n useEscapeKey({ closeHandler, id: innerId, isOpenInner, shouldCloseOnEsc });\n useInitialFocus({\n isOpenInner,\n initialFocusConfiguration,\n initialFocusGetter,\n initialFocusRef,\n noFocus,\n parentElement: overlayElement,\n });\n\n const Wrapper = React.useMemo(() => {\n return Portal ?? React.Fragment;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const nodeRef = useRef<HTMLElement | null>(null);\n\n return (\n <ModalContext.Provider\n value={React.useMemo(() => {\n return {\n changeTitle: (newTitle) => {\n setInnerTitle(newTitle);\n },\n close: () => {\n closeHandler();\n },\n descriptionId: `${innerId}_Description`,\n };\n }, [closeHandler, innerId])}\n >\n <Wrapper>\n <Overlay\n onOverlayClicked={overlayClickedHandle}\n isOpen={isOpen}\n className={className}\n stretch={stretch}\n ref={assignRefs}\n onExited={onExited}\n id={innerId}\n shouldAvoidInitialFocusTrap={noFocus}\n >\n <CSSTransition\n in={isOpen}\n timeout={animationDuration}\n classNames=\"modal\"\n appear\n unmountOnExit\n nodeRef={nodeRef}\n >\n <Box\n ref={nodeRef}\n className=\"modal__variantWrapper\"\n {...(variant ? getVariant(variant) : {})}\n >\n <Box\n id={id}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n aria-describedby={`${innerId}_Description`}\n aria-hidden=\"false\"\n className=\"modal__main\"\n // allows scrolling within element, despite body lock\n data-scroll-lock-scrollable\n sx={React.useMemo(() => {\n return {\n variant: `layout.common.modals.${size}`,\n ...(maxWidth !== undefined ? { maxWidth } : {}),\n };\n }, [maxWidth, size])}\n data-variant={`layout.common.modals.${size}`}\n >\n {!noHeader && (\n <DialogHeader\n className=\"modal__header\"\n NavBar={NavBar}\n title={innerTitle}\n close={closeHandler}\n hideCloseButton={hideCloseButton}\n id={`${innerId}_Header`}\n />\n )}\n <Box\n className=\"modal__content\"\n id={\n typeof children === 'string'\n ? `${innerId}_Description`\n : undefined\n }\n >\n {children}\n </Box>\n </Box>\n </Box>\n </CSSTransition>\n </Overlay>\n </Wrapper>\n </ModalContext.Provider>\n );\n },\n);\n\nStaticModal.displayName = 'StaticModal';\n"],"names":["React"],"mappings":"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"}
@@ -0,0 +1,214 @@
1
+ import { jsx, jsxs } from '@apia/theme/jsx-runtime';
2
+ import { forwardRef, useMemo, useRef, useState, useEffect, useCallback, Fragment } from 'react';
3
+ import { CSSTransition } from 'react-transition-group';
4
+ import { Box, getVariant } from '@apia/theme';
5
+ import DialogHeader from './layout/DialogHeader.js';
6
+ import { ModalContext } from './ModalContext.js';
7
+ import { useEscapeKey } from './hooks/useEscapeKey.js';
8
+ import { useInitialFocus } from './hooks/useInitialFocus.js';
9
+ import { useCombinedRefs } from '@apia/util';
10
+ import { useStyleState } from './hooks/useStyleState.js';
11
+ import { uniqueId } from '@apia/notifications';
12
+
13
+ const WindowModal = forwardRef(
14
+ ({
15
+ animationDuration = 150,
16
+ children = null,
17
+ className,
18
+ hideCloseButton,
19
+ id,
20
+ initialFocusConfiguration,
21
+ initialFocusGetter,
22
+ initialFocusRef,
23
+ isOpen = false,
24
+ maxWidth,
25
+ NavBar,
26
+ noFocus,
27
+ noHeader = false,
28
+ onClose = () => {
29
+ },
30
+ onDragStart = () => {
31
+ },
32
+ onExited = () => {
33
+ },
34
+ Portal,
35
+ shouldCloseOnEsc = true,
36
+ size = "md",
37
+ title = "",
38
+ variant
39
+ }, ref) => {
40
+ const innerId = useMemo(() => {
41
+ return `Modal${uniqueId()}`;
42
+ }, []);
43
+ const nodeRef = useRef(null);
44
+ const lastTitle = useRef(title);
45
+ const [innerTitle, setInnerTitle] = useState(title);
46
+ if (lastTitle.current !== title && innerTitle !== title) {
47
+ setInnerTitle(title);
48
+ }
49
+ const [isOpenInner, setIsOpen] = useState(isOpen);
50
+ useEffect(() => {
51
+ setIsOpen(isOpen);
52
+ }, [isOpen]);
53
+ const closeHandler = useCallback(() => {
54
+ setIsOpen(false);
55
+ onClose();
56
+ }, [onClose]);
57
+ useEscapeKey({ closeHandler, id: innerId, isOpenInner, shouldCloseOnEsc });
58
+ useInitialFocus({
59
+ isOpenInner,
60
+ initialFocusConfiguration,
61
+ initialFocusGetter,
62
+ initialFocusRef,
63
+ noFocus,
64
+ parentElement: nodeRef.current
65
+ });
66
+ const Wrapper = useMemo(() => {
67
+ return Portal ?? Fragment;
68
+ }, []);
69
+ const { ref: stylesRef, setState: setStyle } = useStyleState((el) => {
70
+ const box = el.getBoundingClientRect();
71
+ return {
72
+ left: `${window.innerWidth - box.width / 2}`,
73
+ top: `${window.innerHeight - box.height / 2}`,
74
+ position: "fixed",
75
+ zIndex: "1201"
76
+ };
77
+ });
78
+ const unSubscribe = useRef(() => {
79
+ });
80
+ const initialPosition = useRef(null);
81
+ const initialMousePosition = useRef(null);
82
+ const assignRefs = useCombinedRefs(
83
+ nodeRef,
84
+ ref,
85
+ stylesRef
86
+ );
87
+ return /* @__PURE__ */ jsx(Wrapper, { children: /* @__PURE__ */ jsx(
88
+ ModalContext.Provider,
89
+ {
90
+ value: useMemo(() => {
91
+ return {
92
+ changeTitle: (newTitle) => {
93
+ setInnerTitle(newTitle);
94
+ },
95
+ close: () => {
96
+ closeHandler();
97
+ },
98
+ descriptionId: `${innerId}_Description`
99
+ };
100
+ }, [closeHandler, innerId]),
101
+ children: /* @__PURE__ */ jsx(
102
+ CSSTransition,
103
+ {
104
+ in: isOpen,
105
+ timeout: animationDuration,
106
+ classNames: "modal",
107
+ appear: true,
108
+ unmountOnExit: true,
109
+ nodeRef,
110
+ onExited,
111
+ children: /* @__PURE__ */ jsx(
112
+ Box,
113
+ {
114
+ ref: assignRefs,
115
+ className: `modal__variantWrapper ${className ?? ""}`,
116
+ id: `modal__${innerId}`,
117
+ ...variant ? getVariant(variant) : {},
118
+ children: /* @__PURE__ */ jsxs(
119
+ Box,
120
+ {
121
+ id,
122
+ role: "dialog",
123
+ "aria-modal": "true",
124
+ "aria-label": title,
125
+ "aria-describedby": `${innerId}_Description`,
126
+ "aria-hidden": "false",
127
+ className: "modal__main",
128
+ "data-scroll-lock-scrollable": true,
129
+ sx: useMemo(() => {
130
+ return {
131
+ variant: `layout.common.modals.${size}`,
132
+ ...maxWidth !== void 0 ? { maxWidth } : {}
133
+ };
134
+ }, [maxWidth, size]),
135
+ "data-variant": `layout.common.modals.${size}`,
136
+ ref: useCallback(
137
+ (el) => {
138
+ unSubscribe.current();
139
+ unSubscribe.current = () => {
140
+ };
141
+ if (el) {
142
+ const handleMouseDown = (ev) => {
143
+ const res = onDragStart?.(ev);
144
+ if (res === false)
145
+ return;
146
+ const rect = el.getBoundingClientRect();
147
+ initialPosition.current = rect;
148
+ initialMousePosition.current = {
149
+ x: ev.clientX,
150
+ y: ev.clientY
151
+ };
152
+ };
153
+ const handleMouseMove = (ev) => {
154
+ if (initialPosition.current) {
155
+ const diffX = ev.clientX - initialMousePosition.current.x;
156
+ const diffY = ev.clientY - initialMousePosition.current.y;
157
+ setStyle({
158
+ left: `${initialPosition.current.left + diffX}px`,
159
+ top: `${initialPosition.current.top + diffY}px`
160
+ });
161
+ }
162
+ };
163
+ const handleMouseUp = () => {
164
+ initialPosition.current = null;
165
+ };
166
+ el.addEventListener("mousedown", handleMouseDown);
167
+ document.addEventListener("mousemove", handleMouseMove);
168
+ document.addEventListener("mouseup", handleMouseUp);
169
+ unSubscribe.current = () => {
170
+ el.removeEventListener("mousedown", handleMouseDown);
171
+ document.removeEventListener(
172
+ "mousemove",
173
+ handleMouseMove
174
+ );
175
+ document.removeEventListener("mouseup", handleMouseUp);
176
+ };
177
+ }
178
+ },
179
+ [onDragStart, setStyle]
180
+ ),
181
+ children: [
182
+ !noHeader && /* @__PURE__ */ jsx(
183
+ DialogHeader,
184
+ {
185
+ className: "modal__header",
186
+ NavBar,
187
+ title: innerTitle,
188
+ close: closeHandler,
189
+ hideCloseButton,
190
+ id: `${innerId}_Header`
191
+ }
192
+ ),
193
+ /* @__PURE__ */ jsx(
194
+ Box,
195
+ {
196
+ className: "modal__content",
197
+ id: typeof children === "string" ? `${innerId}_Description` : void 0,
198
+ children
199
+ }
200
+ )
201
+ ]
202
+ }
203
+ )
204
+ }
205
+ )
206
+ }
207
+ )
208
+ }
209
+ ) });
210
+ }
211
+ );
212
+
213
+ export { WindowModal };
214
+ //# sourceMappingURL=WindowModal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WindowModal.js","sources":["../../../src/components/modals/WindowModal.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n Fragment,\n} from 'react';\nimport { TModal } from './Modal';\nimport { CSSTransition } from 'react-transition-group';\nimport { Box, getVariant } from '@apia/theme';\nimport DialogHeader from './layout/DialogHeader';\nimport { ModalContext } from './ModalContext';\nimport { useEscapeKey } from './hooks/useEscapeKey';\nimport { useInitialFocus } from './hooks/useInitialFocus';\nimport { useCombinedRefs } from '@apia/util';\nimport { useStyleState } from './hooks/useStyleState';\nimport { uniqueId } from '@apia/notifications';\n\nexport const WindowModal = forwardRef<HTMLDivElement, TModal>(\n (\n {\n animationDuration = 150,\n children = null,\n className,\n hideCloseButton,\n id,\n initialFocusConfiguration,\n initialFocusGetter,\n initialFocusRef,\n isOpen = false,\n maxWidth,\n NavBar,\n noFocus,\n noHeader = false,\n onClose = () => {},\n onDragStart = () => {},\n onExited = () => {},\n Portal,\n shouldCloseOnEsc = true,\n size = 'md',\n title = '',\n variant,\n },\n ref,\n ) => {\n const innerId = useMemo(() => {\n return `Modal${uniqueId()}`;\n }, []);\n const nodeRef = useRef<HTMLElement | null>(null);\n\n const lastTitle = useRef(title);\n const [innerTitle, setInnerTitle] = useState(title);\n if (lastTitle.current !== title && innerTitle !== title) {\n setInnerTitle(title);\n }\n const [isOpenInner, setIsOpen] = useState(isOpen);\n useEffect(() => {\n setIsOpen(isOpen);\n }, [isOpen]);\n\n const closeHandler = useCallback(() => {\n setIsOpen(false);\n onClose();\n }, [onClose]);\n\n useEscapeKey({ closeHandler, id: innerId, isOpenInner, shouldCloseOnEsc });\n useInitialFocus({\n isOpenInner,\n initialFocusConfiguration,\n initialFocusGetter,\n initialFocusRef,\n noFocus,\n parentElement: nodeRef.current,\n });\n\n const Wrapper = useMemo(() => {\n return Portal ?? Fragment;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const { ref: stylesRef, setState: setStyle } = useStyleState((el) => {\n const box = el.getBoundingClientRect();\n return {\n left: `${window.innerWidth - box.width / 2}`,\n top: `${window.innerHeight - box.height / 2}`,\n position: 'fixed',\n zIndex: '1201',\n };\n });\n\n const unSubscribe = useRef(() => {});\n const initialPosition = useRef<null | DOMRect>(null);\n const initialMousePosition = useRef<null | { x: number; y: number }>(null);\n const assignRefs = useCombinedRefs(\n nodeRef as unknown as React.ForwardedRef<unknown>,\n ref as unknown as React.Ref<unknown>,\n stylesRef as unknown as React.Ref<unknown>,\n );\n\n return (\n <Wrapper>\n <ModalContext.Provider\n value={useMemo(() => {\n return {\n changeTitle: (newTitle) => {\n setInnerTitle(newTitle);\n },\n close: () => {\n closeHandler();\n },\n descriptionId: `${innerId}_Description`,\n };\n }, [closeHandler, innerId])}\n >\n <CSSTransition\n in={isOpen}\n timeout={animationDuration}\n classNames=\"modal\"\n appear\n unmountOnExit\n nodeRef={nodeRef}\n onExited={onExited}\n >\n <Box\n ref={assignRefs}\n className={`modal__variantWrapper ${className ?? ''}`}\n id={`modal__${innerId}`}\n {...(variant ? getVariant(variant) : {})}\n >\n <Box\n id={id}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title}\n aria-describedby={`${innerId}_Description`}\n aria-hidden=\"false\"\n className=\"modal__main\"\n // allows scrolling within element, despite body lock\n data-scroll-lock-scrollable\n sx={useMemo(() => {\n return {\n variant: `layout.common.modals.${size}`,\n ...(maxWidth !== undefined ? { maxWidth } : {}),\n };\n }, [maxWidth, size])}\n data-variant={`layout.common.modals.${size}`}\n ref={useCallback(\n (el: null | HTMLElement) => {\n unSubscribe.current();\n unSubscribe.current = () => {};\n\n if (el) {\n const handleMouseDown = (ev: MouseEvent) => {\n const res = onDragStart?.(ev);\n if (res === false) return;\n\n const rect = el.getBoundingClientRect();\n initialPosition.current = rect;\n initialMousePosition.current = {\n x: ev.clientX,\n y: ev.clientY,\n };\n };\n const handleMouseMove = (ev: MouseEvent) => {\n if (initialPosition.current) {\n const diffX =\n ev.clientX - initialMousePosition.current!.x;\n const diffY =\n ev.clientY - initialMousePosition.current!.y;\n\n setStyle({\n left: `${initialPosition.current.left + diffX}px`,\n top: `${initialPosition.current.top + diffY}px`,\n });\n }\n };\n\n const handleMouseUp = () => {\n initialPosition.current = null;\n };\n\n el.addEventListener('mousedown', handleMouseDown);\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n\n unSubscribe.current = () => {\n el.removeEventListener('mousedown', handleMouseDown);\n document.removeEventListener(\n 'mousemove',\n handleMouseMove,\n );\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }\n },\n [onDragStart, setStyle],\n )}\n >\n {!noHeader && (\n <DialogHeader\n className=\"modal__header\"\n NavBar={NavBar}\n title={innerTitle}\n close={closeHandler}\n hideCloseButton={hideCloseButton}\n id={`${innerId}_Header`}\n />\n )}\n <Box\n className=\"modal__content\"\n id={\n typeof children === 'string'\n ? `${innerId}_Description`\n : undefined\n }\n >\n {children}\n </Box>\n </Box>\n </Box>\n </CSSTransition>\n </ModalContext.Provider>\n </Wrapper>\n );\n },\n);\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { useEffect } from 'react';
2
+
3
+ function useEscapeKey({
4
+ closeHandler,
5
+ id,
6
+ isOpenInner,
7
+ shouldCloseOnEsc
8
+ }) {
9
+ useEffect(() => {
10
+ function handleEscape(event) {
11
+ const overlays = [...document.querySelectorAll(".overlay")];
12
+ const modal = event.target.closest(`#modal__${id}`);
13
+ if (modal && event.key === "Escape") {
14
+ event.preventDefault();
15
+ event.stopPropagation();
16
+ closeHandler();
17
+ } else if (overlays.length > 0 && overlays[overlays.length - 1]?.id === id && event.key === "Escape") {
18
+ event.preventDefault();
19
+ event.stopPropagation();
20
+ closeHandler();
21
+ }
22
+ }
23
+ if (isOpenInner && shouldCloseOnEsc)
24
+ document.addEventListener("keydown", handleEscape, false);
25
+ return () => {
26
+ document.removeEventListener("keydown", handleEscape, false);
27
+ };
28
+ }, [shouldCloseOnEsc, isOpenInner, closeHandler, id]);
29
+ }
30
+
31
+ export { useEscapeKey };
32
+ //# sourceMappingURL=useEscapeKey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEscapeKey.js","sources":["../../../../src/components/modals/hooks/useEscapeKey.ts"],"sourcesContent":["import { useEffect } from 'react';\r\n\r\n/**\r\n * Contorla la lógica encargada de cerrar el modal al presionar la tecla escape.\r\n */\r\nexport function useEscapeKey({\r\n closeHandler,\r\n id,\r\n isOpenInner,\r\n shouldCloseOnEsc,\r\n}: {\r\n id: string;\r\n closeHandler: () => void;\r\n isOpenInner: boolean;\r\n shouldCloseOnEsc?: boolean;\r\n}) {\r\n useEffect(() => {\r\n function handleEscape(event: KeyboardEvent) {\r\n const overlays = [...document.querySelectorAll('.overlay')];\r\n\r\n const modal = (event.target as HTMLElement).closest(`#modal__${id}`);\r\n if (modal && event.key === 'Escape') {\r\n /**\r\n * Funcionamiento para el WindowModal\r\n */\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n closeHandler();\r\n } else if (\r\n overlays.length > 0 &&\r\n overlays[overlays.length - 1]?.id === id &&\r\n event.key === 'Escape'\r\n ) {\r\n /**\r\n * Legacy, para el StaticModal\r\n */\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n closeHandler();\r\n }\r\n }\r\n if (isOpenInner && shouldCloseOnEsc)\r\n document.addEventListener('keydown', handleEscape, false);\r\n return () => {\r\n document.removeEventListener('keydown', handleEscape, false);\r\n };\r\n }, [shouldCloseOnEsc, isOpenInner, closeHandler, id]);\r\n}\r\n"],"names":[],"mappings":";;AAKO,SAAS,YAAa,CAAA;AAAA,EAC3B,YAAA;AAAA,EACA,EAAA;AAAA,EACA,WAAA;AAAA,EACA,gBAAA;AACF,CAKG,EAAA;AACD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,SAAS,aAAa,KAAsB,EAAA;AAC1C,MAAA,MAAM,WAAW,CAAC,GAAG,QAAS,CAAA,gBAAA,CAAiB,UAAU,CAAC,CAAA,CAAA;AAE1D,MAAA,MAAM,QAAS,KAAM,CAAA,MAAA,CAAuB,OAAQ,CAAA,CAAA,QAAA,EAAW,EAAE,CAAE,CAAA,CAAA,CAAA;AACnE,MAAI,IAAA,KAAA,IAAS,KAAM,CAAA,GAAA,KAAQ,QAAU,EAAA;AAInC,QAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AACrB,QAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AAEtB,QAAa,YAAA,EAAA,CAAA;AAAA,OAEb,MAAA,IAAA,QAAA,CAAS,MAAS,GAAA,CAAA,IAClB,QAAS,CAAA,QAAA,CAAS,MAAS,GAAA,CAAC,CAAG,EAAA,EAAA,KAAO,EACtC,IAAA,KAAA,CAAM,QAAQ,QACd,EAAA;AAIA,QAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AACrB,QAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AAEtB,QAAa,YAAA,EAAA,CAAA;AAAA,OACf;AAAA,KACF;AACA,IAAA,IAAI,WAAe,IAAA,gBAAA;AACjB,MAAS,QAAA,CAAA,gBAAA,CAAiB,SAAW,EAAA,YAAA,EAAc,KAAK,CAAA,CAAA;AAC1D,IAAA,OAAO,MAAM;AACX,MAAS,QAAA,CAAA,mBAAA,CAAoB,SAAW,EAAA,YAAA,EAAc,KAAK,CAAA,CAAA;AAAA,KAC7D,CAAA;AAAA,KACC,CAAC,gBAAA,EAAkB,WAAa,EAAA,YAAA,EAAc,EAAE,CAAC,CAAA,CAAA;AACtD;;;;"}
@@ -0,0 +1,37 @@
1
+ import { useEffect } from 'react';
2
+ import { focus, focusSelector, getFocusSelector } from '@apia/util';
3
+
4
+ function useInitialFocus({
5
+ isOpenInner,
6
+ initialFocusConfiguration,
7
+ initialFocusGetter,
8
+ initialFocusRef,
9
+ noFocus,
10
+ parentElement
11
+ }) {
12
+ useEffect(
13
+ () => {
14
+ if (!noFocus && isOpenInner) {
15
+ if (parentElement) {
16
+ void focus.on(
17
+ () => {
18
+ if (initialFocusGetter)
19
+ return initialFocusGetter(parentElement);
20
+ if (initialFocusRef?.current)
21
+ return (initialFocusRef?.current || parentElement).querySelector(focusSelector);
22
+ return parentElement.querySelector(
23
+ getFocusSelector(":not(.modal__closeButton)")
24
+ );
25
+ },
26
+ { ...initialFocusConfiguration, focusEvenWhenScreenLocked: true }
27
+ );
28
+ }
29
+ }
30
+ },
31
+ // eslint-disable-next-line react-hooks/exhaustive-deps
32
+ [parentElement]
33
+ );
34
+ }
35
+
36
+ export { useInitialFocus };
37
+ //# sourceMappingURL=useInitialFocus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInitialFocus.js","sources":["../../../../src/components/modals/hooks/useInitialFocus.ts"],"sourcesContent":["import { useEffect } from 'react';\r\nimport { TModal } from '../Modal';\r\nimport { focus, focusSelector, getFocusSelector } from '@apia/util';\r\n\r\nexport function useInitialFocus({\r\n isOpenInner,\r\n initialFocusConfiguration,\r\n initialFocusGetter,\r\n initialFocusRef,\r\n noFocus,\r\n parentElement,\r\n}: { isOpenInner: boolean; parentElement?: HTMLElement | null } & Pick<\r\n TModal,\r\n | 'noFocus'\r\n | 'initialFocusGetter'\r\n | 'initialFocusRef'\r\n | 'initialFocusConfiguration'\r\n>) {\r\n useEffect(\r\n () => {\r\n if (!noFocus && isOpenInner) {\r\n if (parentElement) {\r\n void focus.on(\r\n () => {\r\n if (initialFocusGetter) return initialFocusGetter(parentElement);\r\n if (initialFocusRef?.current)\r\n return (\r\n (initialFocusRef?.current || parentElement) as HTMLElement\r\n ).querySelector(focusSelector) as HTMLElement;\r\n return parentElement.querySelector(\r\n getFocusSelector(':not(.modal__closeButton)'),\r\n ) as HTMLElement;\r\n },\r\n { ...initialFocusConfiguration, focusEvenWhenScreenLocked: true },\r\n );\r\n }\r\n }\r\n },\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n [parentElement],\r\n );\r\n}\r\n"],"names":[],"mappings":";;;AAIO,SAAS,eAAgB,CAAA;AAAA,EAC9B,WAAA;AAAA,EACA,yBAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,OAAA;AAAA,EACA,aAAA;AACF,CAMG,EAAA;AACD,EAAA,SAAA;AAAA,IACE,MAAM;AACJ,MAAI,IAAA,CAAC,WAAW,WAAa,EAAA;AAC3B,QAAA,IAAI,aAAe,EAAA;AACjB,UAAA,KAAK,KAAM,CAAA,EAAA;AAAA,YACT,MAAM;AACJ,cAAI,IAAA,kBAAA;AAAoB,gBAAA,OAAO,mBAAmB,aAAa,CAAA,CAAA;AAC/D,cAAA,IAAI,eAAiB,EAAA,OAAA;AACnB,gBAAA,OAAA,CACG,eAAiB,EAAA,OAAA,IAAW,aAC7B,EAAA,aAAA,CAAc,aAAa,CAAA,CAAA;AAC/B,cAAA,OAAO,aAAc,CAAA,aAAA;AAAA,gBACnB,iBAAiB,2BAA2B,CAAA;AAAA,eAC9C,CAAA;AAAA,aACF;AAAA,YACA,EAAE,GAAG,yBAA2B,EAAA,yBAAA,EAA2B,IAAK,EAAA;AAAA,WAClE,CAAA;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAAA;AAAA,IAEA,CAAC,aAAa,CAAA;AAAA,GAChB,CAAA;AACF;;;;"}
@@ -0,0 +1,97 @@
1
+ import React__default from 'react';
2
+ import { Args } from 'react-cool-portal';
3
+ import { TModal } from '../Modal.js';
4
+
5
+ type TUseModalConfiguration = Pick<TModal, 'onClose' | 'onExited'> & {
6
+ debugPerformanceName?: string;
7
+ isDefaultOpen?: boolean;
8
+ onOpen?: () => unknown;
9
+ portalArgs?: Omit<Args, 'containerId'>;
10
+ preFetcher?: () => Promise<void>;
11
+ };
12
+ /**
13
+ * Este hook provee una forma muy sencilla de utilizar nuestro modal. Provee
14
+ * varias funcionalidades interesantes para poder manipular el modal en
15
+ * distintas circunstancias:
16
+ *
17
+ * Objeto parámetro:
18
+ *
19
+ * - **defaultOpen**, Boolean, si es true el modal aparecerá abierto al montar
20
+ * y sino aparecerá cerrado.
21
+ * - **onOpen**: Event listener que será llamado en el momento exacto en que la
22
+ * orden de apertura del modal fue dada.
23
+ * - **onClose**: Event listener que será llamado en el momento exacto en que
24
+ * el modal es cerrado, ya sea por un click en el overlay o porque la tecla
25
+ * escape fue presionada.
26
+ * - **onExited**, Event listener que será llamado luego de que la animación de
27
+ * cierre del modal terminó.
28
+ * - **preFetcher**, este método deberá devolver una promesa y en dicha promesa
29
+ * deberá realizar cualquier operación que fuera necesaria antes de abrir el
30
+ * modal, ejemplo: cargar la información que el modal debe mostrar. Si este
31
+ * método es pasado, será llamado antes de abrir el modal y la vista se pondrá
32
+ * en modo de carga (la propiedad isLoading devuelta y la propiedad isLoading
33
+ * del OpenModalContextProvider estarán en true), hasta que la promesa sea
34
+ * resuelta, momento en que se abrirá el modal e isLoading será puesto en false.
35
+ * - **portalArgs**, objeto de configuración aceptado por el hook usePortal de
36
+ * **react-cool-portal**.
37
+ *
38
+ * Objeto devuelto:
39
+ *
40
+ * - Para un modal en donde el botón de abrir el modal esté inserto dentro del
41
+ * componente que lo utiliza, se devuelven los métodos **show** y **hide**.
42
+ * - Para un modal en donde el botón de abrir el modal esté fuera del
43
+ * componente, se devuelve **openModalContextValue**, que es el valor que debe
44
+ * pasarse al contexto de tipo OpenModalContextProvider, un contexto que
45
+ * puede ser utilizado para renderizar el botón encargado de abrir el modal,
46
+ * fuera del alcance del componente que define el modal en sí. Se muestra un
47
+ * ejemplo más abajo.
48
+ * - Todos los demás elementos devueltos son para pasar directamente al modal,
49
+ * entre ellos se encuentran las propiedades que el modal utiliza para saber si
50
+ * debe estar abierto, los event listeners correspondientes y un portal, que el
51
+ * modal usará para mostrarse dentro del área de modales, lo cual es sumamente
52
+ * importante para que el focusController funcione correctamente.
53
+ *
54
+ * @see OpenModalContextProvider
55
+ * @see usePortal
56
+ *
57
+ * @example
58
+ *
59
+ const { openModalContextValue, ...modalProps } = useModal(
60
+ React.useMemo(() => ({
61
+ onClose: () => console.log("Al presionar en cerrar."),
62
+ onExited: () => console.log("Al terminar la animación de cierre."),
63
+ onOpen: () => console.log("Al abrir."),
64
+ }), [])
65
+ );
66
+
67
+ return (
68
+ <OpenModalContext.Provider value={openModalContextValue}>
69
+ <OpenModalContext.Consumer>
70
+ {({ isLoading, show }) => (
71
+ <Button isLoading={isLoading} onClick={show}>Open modal</Button>
72
+ )}
73
+ </OpenModalContext.Consumer>
74
+ <Modal shouldCloseOnEsc shouldCloseOnOverlayClick {...modalProps}>
75
+ Hello world
76
+ </Modal>
77
+ </OpenModalContext.Provider>
78
+ );
79
+ */
80
+ declare function useModal(configuration?: TUseModalConfiguration): {
81
+ hide: () => void;
82
+ isLoading: boolean;
83
+ isOpen: boolean;
84
+ onClose: () => void;
85
+ onExited: () => void;
86
+ openModalContextValue: {
87
+ isLoading: boolean;
88
+ show: () => void;
89
+ };
90
+ Portal: React__default.FC<{
91
+ children: React__default.ReactNode;
92
+ }>;
93
+ show: () => void;
94
+ };
95
+
96
+ export { type TUseModalConfiguration, useModal };
97
+ //# sourceMappingURL=useModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useModal.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}