@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,138 @@
1
+ import { noNaN } from '@apia/util';
2
+ import { makeCellKey } from './keysMaker.js';
3
+
4
+ function assignSelectedIndexId(state) {
5
+ const element = document.querySelector(
6
+ `#${state.storeId} [aria-rowindex="${state.focusedRow}"] [aria-colindex="${state.focusedColumn}"]`
7
+ );
8
+ if (element instanceof HTMLElement) {
9
+ state.focusedId = element.dataset.id;
10
+ }
11
+ }
12
+ const arrowDown = (state, _, keys) => {
13
+ if (!document.querySelector(
14
+ `#${state.storeId} [aria-rowindex="${state.focusedRow + 1}"] [aria-colindex="${state.focusedColumn}"]`
15
+ ))
16
+ return;
17
+ keys.set([
18
+ makeCellKey({
19
+ columnIndex: state.focusedColumn,
20
+ rowIndex: state.focusedRow
21
+ }),
22
+ makeCellKey({
23
+ columnIndex: state.focusedColumn,
24
+ rowIndex: state.focusedRow + 1
25
+ }),
26
+ "grid"
27
+ ]);
28
+ state.focusedRow++;
29
+ assignSelectedIndexId(state);
30
+ };
31
+ const arrowUp = (state, _, keys) => {
32
+ if (state.focusedRow > 1) {
33
+ keys.set([
34
+ makeCellKey({
35
+ columnIndex: state.focusedColumn,
36
+ rowIndex: state.focusedRow
37
+ }),
38
+ makeCellKey({
39
+ columnIndex: state.focusedColumn,
40
+ rowIndex: state.focusedRow - 1
41
+ }),
42
+ "grid"
43
+ ]);
44
+ state.focusedRow--;
45
+ assignSelectedIndexId(state);
46
+ }
47
+ };
48
+ const arrowLeft = (state, _, keys) => {
49
+ if (state.focusedColumn > 1) {
50
+ keys.set([
51
+ makeCellKey({
52
+ columnIndex: state.focusedColumn,
53
+ rowIndex: state.focusedRow
54
+ }),
55
+ makeCellKey({
56
+ columnIndex: state.focusedColumn - 1,
57
+ rowIndex: state.focusedRow
58
+ }),
59
+ "grid"
60
+ ]);
61
+ state.focusedColumn--;
62
+ assignSelectedIndexId(state);
63
+ }
64
+ };
65
+ const arrowRight = (state, _, keys) => {
66
+ if (!document.querySelector(
67
+ `#${state.storeId} [aria-rowindex="${state.focusedRow}"] [aria-colindex="${state.focusedColumn + 1}"]`
68
+ )) {
69
+ return;
70
+ }
71
+ keys.set([
72
+ makeCellKey({
73
+ columnIndex: state.focusedColumn,
74
+ rowIndex: state.focusedRow
75
+ }),
76
+ makeCellKey({
77
+ columnIndex: state.focusedColumn + 1,
78
+ rowIndex: state.focusedRow
79
+ }),
80
+ "grid"
81
+ ]);
82
+ state.focusedColumn++;
83
+ assignSelectedIndexId(state);
84
+ };
85
+ const setFocused = (state, payload, keys) => {
86
+ if (!document.querySelector(
87
+ `#${state.storeId} [aria-rowindex="${payload.rowIndex}"] [aria-colindex="${payload.colIndex}"]`
88
+ ))
89
+ return;
90
+ keys.set([
91
+ makeCellKey({ columnIndex: payload.colIndex, rowIndex: payload.rowIndex }),
92
+ makeCellKey({
93
+ columnIndex: state.focusedColumn,
94
+ rowIndex: state.focusedRow
95
+ }),
96
+ "grid"
97
+ ]);
98
+ state.focusedColumn = payload.colIndex;
99
+ state.focusedRow = payload.rowIndex;
100
+ assignSelectedIndexId(state);
101
+ };
102
+ const recalculateIndexByResize = (state, _, keys) => {
103
+ const element = document.querySelector(
104
+ `#${state.storeId} [data-id="${state.focusedId}"]`
105
+ );
106
+ if (element instanceof HTMLElement) {
107
+ const rowIndex = noNaN(
108
+ element.closest("[aria-rowindex]")?.ariaRowIndex,
109
+ -1
110
+ );
111
+ const colIndex = noNaN(
112
+ element.closest("[aria-colindex]")?.ariaColIndex,
113
+ -1
114
+ );
115
+ if (rowIndex !== -1 && colIndex !== -1) {
116
+ keys.set([
117
+ makeCellKey({
118
+ columnIndex: state.focusedColumn,
119
+ rowIndex: state.focusedRow
120
+ }),
121
+ makeCellKey({ columnIndex: colIndex, rowIndex })
122
+ ]);
123
+ state.focusedColumn = colIndex;
124
+ state.focusedRow = rowIndex;
125
+ }
126
+ }
127
+ };
128
+ const operations = {
129
+ arrowDown,
130
+ arrowLeft,
131
+ arrowRight,
132
+ arrowUp,
133
+ setFocused,
134
+ recalculateIndexByResize
135
+ };
136
+
137
+ export { operations };
138
+ //# sourceMappingURL=operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operations.js","sources":["../../../../src/components/IconsList/store/operations.ts"],"sourcesContent":["import { noNaN } from '@apia/util';\nimport { makeCellKey } from './keysMaker';\nimport { TIconsListOperation, TState } from './types';\n\nfunction assignSelectedIndexId(state: TState) {\n const element = document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${state.focusedRow}\"] [aria-colindex=\"${state.focusedColumn}\"]`,\n );\n\n if (element instanceof HTMLElement) {\n state.focusedId = element.dataset.id as string;\n }\n}\n\nconst arrowDown: TIconsListOperation<void> = (state: TState, _: void, keys) => {\n if (\n !document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${\n state.focusedRow + 1\n }\"] [aria-colindex=\"${state.focusedColumn}\"]`,\n )\n )\n return;\n\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow + 1,\n }),\n 'grid',\n ]);\n state.focusedRow++;\n\n assignSelectedIndexId(state);\n};\nconst arrowUp: TIconsListOperation<void> = (state, _: void, keys) => {\n if (state.focusedRow > 1) {\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow - 1,\n }),\n 'grid',\n ]);\n state.focusedRow--;\n\n assignSelectedIndexId(state);\n }\n};\nconst arrowLeft: TIconsListOperation<void> = (state, _: void, keys) => {\n if (state.focusedColumn > 1) {\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: state.focusedColumn - 1,\n rowIndex: state.focusedRow,\n }),\n 'grid',\n ]);\n state.focusedColumn--;\n\n assignSelectedIndexId(state);\n }\n /**\n * Este bloque agrega el comportamiento de que, al presionar la flecha\n * derecha estando en el último ícono de una fila, salta a la fila\n * siguiente. El problema es que solamente funciona cuando las ids son\n * secuenciales, lo cual no siempre es cierto. Habría que agregar un sistema\n * de doble id para garantizar la secuencialidad de las ids usadas por este\n * método, independientemente de las ids provistas por el usuario del\n * componente.\n */\n /* else if (state.focusedRow > 1) {\n const focusedRow = document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${state.focusedRow - 1}\"]`,\n );\n\n if (focusedRow instanceof HTMLElement) {\n const colIndex = noNaN(\n focusedRow.querySelector('[aria-colIndex]:last-of-type')?.ariaColIndex,\n -1,\n );\n\n if (colIndex !== -1) {\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: colIndex,\n rowIndex: state.focusedRow - 1,\n }),\n 'grid',\n ]);\n\n state.focusedRow--;\n state.focusedColumn = colIndex;\n\n assignSelectedIndexId(state);\n }\n }\n } */\n};\nconst arrowRight: TIconsListOperation<void> = (state, _: void, keys) => {\n if (\n !document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${\n state.focusedRow\n }\"] [aria-colindex=\"${state.focusedColumn + 1}\"]`,\n )\n ) {\n /**\n * Este bloque agrega el comportamiento de que, al presionar la flecha\n * derecha estando en el último ícono de una fila, salta a la fila\n * siguiente. El problema es que solamente funciona cuando las ids son\n * secuenciales, lo cual no siempre es cierto. Habría que agregar un sistema\n * de doble id para garantizar la secuencialidad de las ids usadas por este\n * método, independientemente de las ids provistas por el usuario del\n * componente.\n */\n /* const newFocusedId = noNaN(state.focusedId) + 1;\n const element = document.querySelector(\n `#${state.storeId} [data-id=\"${newFocusedId}\"]`,\n );\n\n if (element instanceof HTMLElement) {\n const rowIndex = noNaN(\n element.closest('[aria-rowindex]')?.ariaRowIndex,\n -1,\n );\n const colIndex = noNaN(\n element.closest('[aria-colindex]')?.ariaColIndex,\n -1,\n );\n\n if (rowIndex !== -1 && colIndex !== -1) {\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: colIndex,\n rowIndex: rowIndex,\n }),\n 'grid',\n ]);\n\n state.focusedColumn = colIndex;\n state.focusedRow = rowIndex;\n\n assignSelectedIndexId(state);\n }\n } */\n\n return;\n }\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({\n columnIndex: state.focusedColumn + 1,\n rowIndex: state.focusedRow,\n }),\n 'grid',\n ]);\n state.focusedColumn++;\n assignSelectedIndexId(state);\n};\nconst setFocused: TIconsListOperation<{\n rowIndex: number;\n colIndex: number;\n}> = (state, payload, keys) => {\n if (\n !document.querySelector(\n `#${state.storeId} [aria-rowindex=\"${payload.rowIndex}\"] [aria-colindex=\"${payload.colIndex}\"]`,\n )\n )\n return;\n\n keys.set([\n makeCellKey({ columnIndex: payload.colIndex, rowIndex: payload.rowIndex }),\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n 'grid',\n ]);\n\n state.focusedColumn = payload.colIndex;\n state.focusedRow = payload.rowIndex;\n\n assignSelectedIndexId(state);\n};\n\nconst recalculateIndexByResize: TIconsListOperation<void> = (\n state: TState,\n _: void,\n keys,\n) => {\n const element = document.querySelector(\n `#${state.storeId} [data-id=\"${state.focusedId}\"]`,\n );\n\n if (element instanceof HTMLElement) {\n const rowIndex = noNaN(\n element.closest('[aria-rowindex]')?.ariaRowIndex,\n -1,\n );\n const colIndex = noNaN(\n element.closest('[aria-colindex]')?.ariaColIndex,\n -1,\n );\n\n if (rowIndex !== -1 && colIndex !== -1) {\n keys.set([\n makeCellKey({\n columnIndex: state.focusedColumn,\n rowIndex: state.focusedRow,\n }),\n makeCellKey({ columnIndex: colIndex, rowIndex }),\n ]);\n\n state.focusedColumn = colIndex;\n state.focusedRow = rowIndex;\n }\n }\n};\n\nexport const operations = {\n arrowDown,\n arrowLeft,\n arrowRight,\n arrowUp,\n setFocused,\n recalculateIndexByResize,\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ const getInitialState = (props) => ({
2
+ focusedColumn: 1,
3
+ focusedRow: 1,
4
+ focusedId: 0,
5
+ ...props
6
+ });
7
+
8
+ export { getInitialState };
9
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sources":["../../../../src/components/IconsList/store/state.ts"],"sourcesContent":["import { TState } from './types';\n\nexport const getInitialState = (props: Pick<TState, 'storeId'>): TState => ({\n focusedColumn: 1,\n focusedRow: 1,\n focusedId: 0,\n ...props,\n});\n"],"names":[],"mappings":"AAEa,MAAA,eAAA,GAAkB,CAAC,KAA4C,MAAA;AAAA,EAC1E,aAAe,EAAA,CAAA;AAAA,EACf,UAAY,EAAA,CAAA;AAAA,EACZ,SAAW,EAAA,CAAA;AAAA,EACX,GAAG,KAAA;AACL,CAAA;;;;"}
@@ -0,0 +1,52 @@
1
+ import { jsx } from '@apia/theme/jsx-runtime';
2
+ import { createFAsomeStore } from '@apia/dom-store';
3
+ import { useMemo, useCallback } from 'react';
4
+ import { distinctors } from './distinctors.js';
5
+ import { operations } from './operations.js';
6
+ import { keysMakers } from './keysMaker.js';
7
+ import { getInitialState } from './state.js';
8
+ import { StoreContext } from './context.js';
9
+
10
+ const useStore = ({
11
+ storeId
12
+ }) => {
13
+ const [actions, useProps, getState, registerStateChangeListener] = useMemo(
14
+ () => createFAsomeStore({
15
+ initialState: getInitialState({
16
+ storeId
17
+ }),
18
+ distinctors,
19
+ keysMakers,
20
+ operations
21
+ }),
22
+ // eslint-disable-next-line react-hooks/exhaustive-deps
23
+ []
24
+ );
25
+ const ContextProvider = useCallback(
26
+ ({ children }) => {
27
+ return /* @__PURE__ */ jsx(
28
+ StoreContext.Provider,
29
+ {
30
+ value: {
31
+ actions,
32
+ useProps,
33
+ getState,
34
+ registerStateChangeListener
35
+ },
36
+ children
37
+ }
38
+ );
39
+ },
40
+ [actions, getState, registerStateChangeListener, useProps]
41
+ );
42
+ return [
43
+ actions,
44
+ useProps,
45
+ getState,
46
+ registerStateChangeListener,
47
+ ContextProvider
48
+ ];
49
+ };
50
+
51
+ export { useStore };
52
+ //# sourceMappingURL=useStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useStore.js","sources":["../../../../src/components/IconsList/store/useStore.tsx"],"sourcesContent":["import { createFAsomeStore } from '@apia/dom-store';\nimport { ReactNode, useCallback, useMemo } from 'react';\nimport { distinctors } from './distinctors';\nimport { operations } from './operations';\nimport { keysMakers } from './keysMaker';\nimport { getInitialState } from './state';\nimport { StoreContext, TStoreContext } from './context';\nimport { TState } from './types';\n\nexport const useStore = ({\n storeId,\n}: Pick<TState, 'storeId'>): [\n TStoreContext['actions'],\n TStoreContext['useProps'],\n TStoreContext['getState'],\n TStoreContext['registerStateChangeListener'],\n ({ children }: { children: ReactNode }) => JSX.Element,\n] => {\n const [actions, useProps, getState, registerStateChangeListener] = useMemo(\n () =>\n createFAsomeStore({\n initialState: getInitialState({\n storeId,\n }),\n distinctors,\n keysMakers,\n operations,\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [],\n );\n\n const ContextProvider = useCallback(\n ({ children }: { children: ReactNode }) => {\n return (\n <StoreContext.Provider\n value={{\n actions,\n useProps,\n getState,\n registerStateChangeListener,\n }}\n >\n {children}\n </StoreContext.Provider>\n );\n },\n [actions, getState, registerStateChangeListener, useProps],\n );\n\n return [\n actions,\n useProps,\n getState,\n registerStateChangeListener,\n ContextProvider,\n ];\n};\n"],"names":[],"mappings":";;;;;;;;;AASO,MAAM,WAAW,CAAC;AAAA,EACvB,OAAA;AACF,CAMK,KAAA;AACH,EAAA,MAAM,CAAC,OAAA,EAAS,QAAU,EAAA,QAAA,EAAU,2BAA2B,CAAI,GAAA,OAAA;AAAA,IACjE,MACE,iBAAkB,CAAA;AAAA,MAChB,cAAc,eAAgB,CAAA;AAAA,QAC5B,OAAA;AAAA,OACD,CAAA;AAAA,MACD,WAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,KACD,CAAA;AAAA;AAAA,IAEH,EAAC;AAAA,GACH,CAAA;AAEA,EAAA,MAAM,eAAkB,GAAA,WAAA;AAAA,IACtB,CAAC,EAAE,QAAA,EAAwC,KAAA;AACzC,MACE,uBAAA,GAAA;AAAA,QAAC,YAAa,CAAA,QAAA;AAAA,QAAb;AAAA,UACC,KAAO,EAAA;AAAA,YACL,OAAA;AAAA,YACA,QAAA;AAAA,YACA,QAAA;AAAA,YACA,2BAAA;AAAA,WACF;AAAA,UAEC,QAAA;AAAA,SAAA;AAAA,OACH,CAAA;AAAA,KAEJ;AAAA,IACA,CAAC,OAAA,EAAS,QAAU,EAAA,2BAAA,EAA6B,QAAQ,CAAA;AAAA,GAC3D,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,OAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,2BAAA;AAAA,IACA,eAAA;AAAA,GACF,CAAA;AACF;;;;"}
@@ -0,0 +1,48 @@
1
+ import { focusOutline } from '@apia/theme';
2
+
3
+ const styles = {
4
+ "&, *": {
5
+ textAlign: "center"
6
+ },
7
+ ".iconsList__icon__image__wrapper": {
8
+ boxShadow: "1px 1px 3px #0001",
9
+ display: "flex",
10
+ alignItems: "center",
11
+ justifyContent: "center"
12
+ },
13
+ ".iconsList__icon__image": {
14
+ maxWidth: "calc(100% - 4px)"
15
+ },
16
+ ".iconsList__icon__wrapper": {
17
+ p: 2,
18
+ display: "flex",
19
+ flexDirection: "column",
20
+ gap: 3,
21
+ "&:hover": (theme) => {
22
+ return {
23
+ ...theme.palette.getOneState(
24
+ { backgroundColor: "palette.background.paper" },
25
+ "hover"
26
+ )
27
+ };
28
+ }
29
+ },
30
+ ".iconsList__icon__label": {
31
+ wordBreak: "break-word",
32
+ display: "-webkit-box",
33
+ WebkitLineClamp: "3",
34
+ WebkitBoxOrient: "vertical",
35
+ overflow: "hidden",
36
+ textOverflow: "ellipsis",
37
+ lineHeight: "20px"
38
+ },
39
+ ".iconsList__keyHandler:focus": {
40
+ outline: "none",
41
+ ".focused .iconsList__icon__wrapper": {
42
+ ...focusOutline
43
+ }
44
+ }
45
+ };
46
+
47
+ export { styles };
48
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sources":["../../../src/components/IconsList/styles.ts"],"sourcesContent":["import { focusOutline } from '@apia/theme';\nimport { ThemeUICSSObject } from '@apia/theme';\n\nexport const styles: ThemeUICSSObject = {\n '&, *': {\n textAlign: 'center',\n },\n\n '.iconsList__icon__image__wrapper': {\n boxShadow: '1px 1px 3px #0001',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n\n '.iconsList__icon__image': {\n maxWidth: 'calc(100% - 4px)',\n },\n\n '.iconsList__icon__wrapper': {\n p: 2,\n display: 'flex',\n flexDirection: 'column',\n gap: 3,\n\n '&:hover': (theme) => {\n return {\n ...theme.palette.getOneState(\n { backgroundColor: 'palette.background.paper' },\n 'hover',\n ),\n };\n },\n },\n\n '.iconsList__icon__label': {\n wordBreak: 'break-word',\n display: '-webkit-box',\n WebkitLineClamp: '3',\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n lineHeight: '20px',\n },\n\n '.iconsList__keyHandler:focus': {\n outline: 'none',\n\n '.focused .iconsList__icon__wrapper': {\n ...focusOutline,\n },\n },\n};\n"],"names":[],"mappings":";;AAGO,MAAM,MAA2B,GAAA;AAAA,EACtC,MAAQ,EAAA;AAAA,IACN,SAAW,EAAA,QAAA;AAAA,GACb;AAAA,EAEA,kCAAoC,EAAA;AAAA,IAClC,SAAW,EAAA,mBAAA;AAAA,IACX,OAAS,EAAA,MAAA;AAAA,IACT,UAAY,EAAA,QAAA;AAAA,IACZ,cAAgB,EAAA,QAAA;AAAA,GAClB;AAAA,EAEA,yBAA2B,EAAA;AAAA,IACzB,QAAU,EAAA,kBAAA;AAAA,GACZ;AAAA,EAEA,2BAA6B,EAAA;AAAA,IAC3B,CAAG,EAAA,CAAA;AAAA,IACH,OAAS,EAAA,MAAA;AAAA,IACT,aAAe,EAAA,QAAA;AAAA,IACf,GAAK,EAAA,CAAA;AAAA,IAEL,SAAA,EAAW,CAAC,KAAU,KAAA;AACpB,MAAO,OAAA;AAAA,QACL,GAAG,MAAM,OAAQ,CAAA,WAAA;AAAA,UACf,EAAE,iBAAiB,0BAA2B,EAAA;AAAA,UAC9C,OAAA;AAAA,SACF;AAAA,OACF,CAAA;AAAA,KACF;AAAA,GACF;AAAA,EAEA,yBAA2B,EAAA;AAAA,IACzB,SAAW,EAAA,YAAA;AAAA,IACX,OAAS,EAAA,aAAA;AAAA,IACT,eAAiB,EAAA,GAAA;AAAA,IACjB,eAAiB,EAAA,UAAA;AAAA,IACjB,QAAU,EAAA,QAAA;AAAA,IACV,YAAc,EAAA,UAAA;AAAA,IACd,UAAY,EAAA,MAAA;AAAA,GACd;AAAA,EAEA,8BAAgC,EAAA;AAAA,IAC9B,OAAS,EAAA,MAAA;AAAA,IAET,oCAAsC,EAAA;AAAA,MACpC,GAAG,YAAA;AAAA,KACL;AAAA,GACF;AACF;;;;"}
@@ -0,0 +1,98 @@
1
+ import { TIconName, TIconType } from '@apia/icons';
2
+ import { TId } from '@apia/util';
3
+ import { MouseEvent, ReactNode, KeyboardEvent, FunctionComponent } from 'react';
4
+
5
+ type TIcon<P = Record<string, unknown>> = {
6
+ /**
7
+ * Permite el pasaje de propoiedades arbitrarias a cada nodo. Se podría usar
8
+ * por ejemplo para almacenar la url que debe ser llamada cuando se hace doble
9
+ * click en un ícono.
10
+ */
11
+ additionalProps?: P;
12
+ /**
13
+ * Se pide un ariaLabel como requerido por motivos de accesibilidad.
14
+ */
15
+ ariaLabel: string;
16
+ /**
17
+ * Permite el pasaje de clases arbitrarias a cada ícono.
18
+ */
19
+ className?: string;
20
+ id: TId;
21
+ icon?: TIconName | TIconType;
22
+ imageUrl?: string;
23
+ /**
24
+ * Es el texto que se mostrará debajo de la imagen.
25
+ */
26
+ label: string;
27
+ /**
28
+ * Permite modificar el color individual de un ícono.
29
+ */
30
+ textColor?: string;
31
+ };
32
+ type TIconsList<P = Record<string, unknown>> = {
33
+ /**
34
+ * Listado de íconos
35
+ */
36
+ icons: TIcon<P>[];
37
+ iconRenderer?: TIconRenderer<P>;
38
+ /**
39
+ * Por defecto se usa iconWidth=100.
40
+ *
41
+ * El iconSize indica el ancho del contenedor del ícono.
42
+ */
43
+ iconWidth?: number;
44
+ /**
45
+ * Si bien el gap horizontal es calculado automáticamente, es posible
46
+ * especificar cuál es el mínimo gap que debe mostrarse. *Por defecto se usará
47
+ * 30*
48
+ */
49
+ minHorizontalGap?: number;
50
+ /**
51
+ * Este callback es llamado cuando se hace click en un ícono
52
+ */
53
+ onIconClick?: (ev: MouseEvent<HTMLElement>, icon: TIcon<P>) => unknown;
54
+ /**
55
+ * Este callback es llamado cuando se hace doble click en un ícono
56
+ */
57
+ onIconDoubleClick?: (ev: MouseEvent<HTMLElement>, icon: TIcon<P>) => unknown;
58
+ /**
59
+ * Este método se usa para obtener detalles de un ícono. Es llamado cuando se
60
+ * hace foco o cuando se posiciona el mouse en un ícono. Si no está declarado
61
+ * los íconos no mostrarán detalles. Si está declarado deberá devolver un
62
+ *
63
+ * Record<string, ReactNode> y cada entrada será mostrada como una fila de
64
+ * detalle.
65
+ */
66
+ onIconGetDetails?: (icon: TIcon<P>) => ReactNode;
67
+ /**
68
+ * Permite agregar comportamiento personalizado a los eventos de teclado.
69
+ */
70
+ onIconKeyDown?: (ev: KeyboardEvent<HTMLElement>, icon: TIcon<P>) => unknown;
71
+ /**
72
+ * Normalmente el listado coloca padding horizontal para distribuir
73
+ * uniformemente los íconos, de forma que la distancia entre ellos sea la
74
+ * misma que la existente en la izquierda y derecha. Si se pasa esta
75
+ * propiedad, el primer y úlitmo ícono estarán colocados sobre los bordes y el
76
+ * espacio restante se distribuirá entre los gaps existnetes
77
+ */
78
+ removeHorizontalPadding?: boolean;
79
+ /**
80
+ * El espaciado horizontal se calcula automáticamente, sin embargo si es
81
+ * posible definir el vertical. Por defecto se usa 0.
82
+ */
83
+ verticalGap?: number;
84
+ };
85
+ /**
86
+ * Por defecto se usa DefaultIconRenderer. El pasaje de un nuevo IconRenderer
87
+ * permite modificar la forma en que se distribuyen en pantalla los distintos
88
+ * atributos de cada ícono.
89
+ *
90
+ * Una particularidad es cómo se definen los estilos cuando el ícono está en
91
+ * foco: Se usa el selector **'.iconsList__keyHandler:focus .focused
92
+ * .iconsList__icon__wrapper'**, que es donde se aplican los estilos
93
+ * correspondientes al foco.
94
+ */
95
+ type TIconRenderer<P = Record<string, unknown>> = FunctionComponent<TIcon<P>>;
96
+
97
+ export type { TIcon, TIconRenderer, TIconsList };
98
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,46 @@
1
+ import { useMemo } from 'react';
2
+
3
+ function getBreakpoints(blockWidth) {
4
+ return Array(Math.floor(4e3 / blockWidth)).fill(1).map((_, i) => (i + 1) * blockWidth);
5
+ }
6
+ function useStyles({
7
+ containerWidth,
8
+ iconWidth,
9
+ breakPoint,
10
+ verticalGap,
11
+ removeHorizontalPadding
12
+ }) {
13
+ const gap = (containerWidth - iconWidth * breakPoint) / (breakPoint + (removeHorizontalPadding ? -1 : 1));
14
+ const sx = useMemo(
15
+ () => ({
16
+ justifyContent: "space-evenly",
17
+ gridTemplateColumns: `repeat(${breakPoint}, 1fr)`,
18
+ rowGap: verticalGap ?? 0,
19
+ columnGap: `${gap}px`,
20
+ px: removeHorizontalPadding ? 0 : `${gap}px`
21
+ }),
22
+ [removeHorizontalPadding, breakPoint, gap, verticalGap]
23
+ );
24
+ return sx;
25
+ }
26
+ const justToFillTheRow = "JUST TO FILL THE ROW";
27
+ function getRowIcons({
28
+ breakPoint,
29
+ icons,
30
+ i
31
+ }) {
32
+ const actualIcons = icons.slice(
33
+ i * breakPoint,
34
+ (i + 1) * breakPoint
35
+ );
36
+ if (actualIcons.length < breakPoint)
37
+ actualIcons.push(
38
+ ...Array(breakPoint - actualIcons.length).fill(
39
+ justToFillTheRow
40
+ )
41
+ );
42
+ return actualIcons;
43
+ }
44
+
45
+ export { getBreakpoints, getRowIcons, justToFillTheRow, useStyles };
46
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sources":["../../../src/components/IconsList/util.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { TIcon } from './types';\n\nexport function getBreakpoints(blockWidth: number) {\n return Array(Math.floor(4000 / blockWidth))\n .fill(1)\n .map((_, i) => (i + 1) * blockWidth);\n}\n\nexport function useStyles({\n containerWidth,\n iconWidth,\n breakPoint,\n verticalGap,\n removeHorizontalPadding,\n}: {\n containerWidth: number;\n iconWidth: number;\n breakPoint: number;\n verticalGap?: number;\n removeHorizontalPadding?: boolean;\n}) {\n const gap =\n (containerWidth - iconWidth * breakPoint) /\n (breakPoint + (removeHorizontalPadding ? -1 : 1));\n const sx = useMemo(\n () => ({\n justifyContent: 'space-evenly',\n gridTemplateColumns: `repeat(${breakPoint}, 1fr)`,\n rowGap: verticalGap ?? 0,\n columnGap: `${gap}px`,\n px: removeHorizontalPadding ? 0 : `${gap}px`,\n }),\n [removeHorizontalPadding, breakPoint, gap, verticalGap],\n );\n\n return sx;\n}\n\nexport const justToFillTheRow = 'JUST TO FILL THE ROW';\n\nexport function getRowIcons<P>({\n breakPoint,\n icons,\n i,\n}: {\n breakPoint: number;\n icons: TIcon<P>[];\n i: number;\n}) {\n const actualIcons: (string | TIcon<P>)[] = icons.slice(\n i * breakPoint,\n (i + 1) * breakPoint,\n );\n if (actualIcons.length < breakPoint)\n actualIcons.push(\n ...(Array(breakPoint - actualIcons.length).fill(\n justToFillTheRow,\n ) as string[]),\n );\n\n return actualIcons;\n}\n"],"names":[],"mappings":";;AAGO,SAAS,eAAe,UAAoB,EAAA;AACjD,EAAA,OAAO,MAAM,IAAK,CAAA,KAAA,CAAM,GAAO,GAAA,UAAU,CAAC,CACvC,CAAA,IAAA,CAAK,CAAC,CAAA,CACN,IAAI,CAAC,CAAA,EAAG,CAAO,KAAA,CAAA,CAAA,GAAI,KAAK,UAAU,CAAA,CAAA;AACvC,CAAA;AAEO,SAAS,SAAU,CAAA;AAAA,EACxB,cAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,uBAAA;AACF,CAMG,EAAA;AACD,EAAA,MAAM,OACH,cAAiB,GAAA,SAAA,GAAY,UAC7B,KAAA,UAAA,IAAc,0BAA0B,CAAK,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA;AAChD,EAAA,MAAM,EAAK,GAAA,OAAA;AAAA,IACT,OAAO;AAAA,MACL,cAAgB,EAAA,cAAA;AAAA,MAChB,mBAAA,EAAqB,UAAU,UAAU,CAAA,MAAA,CAAA;AAAA,MACzC,QAAQ,WAAe,IAAA,CAAA;AAAA,MACvB,SAAA,EAAW,GAAG,GAAG,CAAA,EAAA,CAAA;AAAA,MACjB,EAAI,EAAA,uBAAA,GAA0B,CAAI,GAAA,CAAA,EAAG,GAAG,CAAA,EAAA,CAAA;AAAA,KAC1C,CAAA;AAAA,IACA,CAAC,uBAAA,EAAyB,UAAY,EAAA,GAAA,EAAK,WAAW,CAAA;AAAA,GACxD,CAAA;AAEA,EAAO,OAAA,EAAA,CAAA;AACT,CAAA;AAEO,MAAM,gBAAmB,GAAA,uBAAA;AAEzB,SAAS,WAAe,CAAA;AAAA,EAC7B,UAAA;AAAA,EACA,KAAA;AAAA,EACA,CAAA;AACF,CAIG,EAAA;AACD,EAAA,MAAM,cAAqC,KAAM,CAAA,KAAA;AAAA,IAC/C,CAAI,GAAA,UAAA;AAAA,IAAA,CACH,IAAI,CAAK,IAAA,UAAA;AAAA,GACZ,CAAA;AACA,EAAA,IAAI,YAAY,MAAS,GAAA,UAAA;AACvB,IAAY,WAAA,CAAA,IAAA;AAAA,MACV,GAAI,KAAA,CAAM,UAAa,GAAA,WAAA,CAAY,MAAM,CAAE,CAAA,IAAA;AAAA,QACzC,gBAAA;AAAA,OACF;AAAA,KACF,CAAA;AAEF,EAAO,OAAA,WAAA,CAAA;AACT;;;;"}
@@ -0,0 +1,52 @@
1
+ import { jsxs, Fragment, jsx } from '@apia/theme/jsx-runtime';
2
+ import { useContext, useCallback } from 'react';
3
+ import { ListboxContext } from './ListboxContext.js';
4
+ import { useDebouncedCallback } from '@apia/util';
5
+ import { Input, Box } from '@apia/theme';
6
+
7
+ const Combobox = ({
8
+ children,
9
+ ...props
10
+ }) => {
11
+ const { id, listboxActions, useListbox } = useContext(ListboxContext);
12
+ const run = useDebouncedCallback((ev) => {
13
+ listboxActions.filter({ searchString: ev.target.value });
14
+ });
15
+ const ref = useListbox("searchbox", null);
16
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
17
+ /* @__PURE__ */ jsx(
18
+ Input,
19
+ {
20
+ ref,
21
+ type: "text",
22
+ id: `${id}__searchbox`,
23
+ placeholder: "Search...",
24
+ "aria-autocomplete": "list",
25
+ "aria-controls": `${id}__list__container`,
26
+ role: "combobox",
27
+ "aria-expanded": true,
28
+ "aria-haspopup": "listbox",
29
+ onChange: run,
30
+ autoComplete: "off"
31
+ }
32
+ ),
33
+ /* @__PURE__ */ jsx(
34
+ Box,
35
+ {
36
+ as: "ul",
37
+ id: `${id}__list__container`,
38
+ role: "listbox",
39
+ className: "listbox__list",
40
+ ...props,
41
+ onClick: useCallback(() => {
42
+ if (document.activeElement !== document.getElementById(`${id}__searchbox`))
43
+ document.getElementById(`${id}__searchbox`)?.focus();
44
+ }, [id]),
45
+ children
46
+ }
47
+ )
48
+ ] });
49
+ };
50
+
51
+ export { Combobox };
52
+ //# sourceMappingURL=Combobox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Combobox.js","sources":["../../../src/components/ListBox/Combobox.tsx"],"sourcesContent":["import { ChangeEvent, FC, ReactNode, useCallback, useContext } from 'react';\nimport { ListboxContext } from './ListboxContext';\nimport { useDebouncedCallback } from '@apia/util';\nimport { Box, BoxProps, Input } from '@apia/theme';\n\nconst Combobox: FC<{ children: ReactNode } & BoxProps> = ({\n children,\n ...props\n}) => {\n const { id, listboxActions, useListbox } = useContext(ListboxContext);\n const run = useDebouncedCallback((ev: ChangeEvent<HTMLInputElement>) => {\n listboxActions.filter({ searchString: ev.target.value });\n });\n\n const ref = useListbox<HTMLInputElement>('searchbox', null);\n\n return (\n <>\n <Input\n ref={ref}\n type=\"text\"\n id={`${id}__searchbox`}\n placeholder=\"Search...\"\n aria-autocomplete=\"list\"\n aria-controls={`${id}__list__container`}\n role=\"combobox\"\n aria-expanded\n aria-haspopup=\"listbox\"\n onChange={run}\n autoComplete=\"off\"\n />\n <Box\n as=\"ul\"\n id={`${id}__list__container`}\n role=\"listbox\"\n className=\"listbox__list\"\n {...props}\n onClick={useCallback(() => {\n if (\n document.activeElement !==\n document.getElementById(`${id}__searchbox`)\n )\n document.getElementById(`${id}__searchbox`)?.focus();\n }, [id])}\n >\n {children}\n </Box>\n </>\n );\n};\n\nexport { Combobox };\n"],"names":[],"mappings":";;;;;;AAKA,MAAM,WAAmD,CAAC;AAAA,EACxD,QAAA;AAAA,EACA,GAAG,KAAA;AACL,CAAM,KAAA;AACJ,EAAA,MAAM,EAAE,EAAI,EAAA,cAAA,EAAgB,UAAW,EAAA,GAAI,WAAW,cAAc,CAAA,CAAA;AACpE,EAAM,MAAA,GAAA,GAAM,oBAAqB,CAAA,CAAC,EAAsC,KAAA;AACtE,IAAA,cAAA,CAAe,OAAO,EAAE,YAAA,EAAc,EAAG,CAAA,MAAA,CAAO,OAAO,CAAA,CAAA;AAAA,GACxD,CAAA,CAAA;AAED,EAAM,MAAA,GAAA,GAAM,UAA6B,CAAA,WAAA,EAAa,IAAI,CAAA,CAAA;AAE1D,EAAA,uBAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,IAAK,EAAA,MAAA;AAAA,QACL,EAAA,EAAI,GAAG,EAAE,CAAA,WAAA,CAAA;AAAA,QACT,WAAY,EAAA,WAAA;AAAA,QACZ,mBAAkB,EAAA,MAAA;AAAA,QAClB,eAAA,EAAe,GAAG,EAAE,CAAA,iBAAA,CAAA;AAAA,QACpB,IAAK,EAAA,UAAA;AAAA,QACL,eAAa,EAAA,IAAA;AAAA,QACb,eAAc,EAAA,SAAA;AAAA,QACd,QAAU,EAAA,GAAA;AAAA,QACV,YAAa,EAAA,KAAA;AAAA,OAAA;AAAA,KACf;AAAA,oBACA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,EAAG,EAAA,IAAA;AAAA,QACH,EAAA,EAAI,GAAG,EAAE,CAAA,iBAAA,CAAA;AAAA,QACT,IAAK,EAAA,SAAA;AAAA,QACL,SAAU,EAAA,eAAA;AAAA,QACT,GAAG,KAAA;AAAA,QACJ,OAAA,EAAS,YAAY,MAAM;AACzB,UAAA,IACE,SAAS,aACT,KAAA,QAAA,CAAS,cAAe,CAAA,CAAA,EAAG,EAAE,CAAa,WAAA,CAAA,CAAA;AAE1C,YAAA,QAAA,CAAS,cAAe,CAAA,CAAA,EAAG,EAAE,CAAA,WAAA,CAAa,GAAG,KAAM,EAAA,CAAA;AAAA,SACvD,EAAG,CAAC,EAAE,CAAC,CAAA;AAAA,QAEN,QAAA;AAAA,OAAA;AAAA,KACH;AAAA,GACF,EAAA,CAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,35 @@
1
+ import { ReactNode, MouseEvent, KeyboardEvent } from 'react';
2
+ import { TListboxState } from './common.js';
3
+ import { TOnConfirmSelection, TOnSelectionChange } from './index.js';
4
+ import { BoxProps } from '@apia/theme';
5
+
6
+ type TListbox = {
7
+ children: ReactNode | ReactNode[];
8
+ className?: string;
9
+ /**
10
+ * Permite remover los estilos por defecto de la lista a fin de personalizar
11
+ * su aspecto
12
+ */
13
+ unstyled?: boolean;
14
+ onClickNode?: (ev: MouseEvent<HTMLElement>) => unknown;
15
+ onDoubleClickNode?: (ev: MouseEvent<HTMLElement>) => unknown;
16
+ /**
17
+ * Este evento es lanzado cuando el usuario estando en foco en la lista
18
+ * presiona:
19
+ *
20
+ * - Enter si la selección múltiple está deshabilitada
21
+ * - ctrl+Enter si la selección múltiple está habilitada
22
+ */
23
+ onConfirmSelection?: (ev: TOnConfirmSelection) => unknown;
24
+ onPressEnterOnNode?: (ev: KeyboardEvent<HTMLElement>) => unknown;
25
+ onPressKeyOnNode?: (ev: KeyboardEvent<HTMLElement>) => unknown;
26
+ onSelectionChange?: (ev: TOnSelectionChange) => unknown;
27
+ /**
28
+ * onKeyDown e id no son permitidas dado que se usan para generar el
29
+ * comportamiento correcto del componente
30
+ */
31
+ ulProps?: Omit<BoxProps, 'id' | 'onKeyDown' | 'sx'>;
32
+ } & Partial<Pick<TListboxState, 'allowMultipleCharacterSearch' | 'allowSelection' | 'allowSingleCharacterSearch' | 'isMultipleSelection' | 'searchFunction' | 'startsWithFunction' | 'showSearchbox'>>;
33
+
34
+ export type { TListbox };
35
+ //# sourceMappingURL=ListboxContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListboxContext.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import { createContext } from 'react';
2
+
3
+ const ListboxContext = createContext({});
4
+
5
+ export { ListboxContext };
6
+ //# sourceMappingURL=ListboxContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListboxContext.js","sources":["../../../src/components/ListBox/ListboxContext.tsx"],"sourcesContent":["import { KeyboardEvent, MouseEvent, ReactNode, createContext } from 'react';\r\nimport {\r\n TActionsMap,\r\n TUseProperties,\r\n TDistinctorProperties,\r\n} from '@apia/dom-store';\r\nimport { TListboxState, TRowDistinctions } from './common';\r\nimport { operations } from './operations';\r\nimport { TOnConfirmSelection, TOnSelectionChange } from '.';\r\nimport { BoxProps } from '@apia/theme';\r\n\r\nexport type TListbox = {\r\n children: ReactNode | ReactNode[];\r\n className?: string;\r\n /**\r\n * Permite remover los estilos por defecto de la lista a fin de personalizar\r\n * su aspecto\r\n */\r\n unstyled?: boolean;\r\n onClickNode?: (ev: MouseEvent<HTMLElement>) => unknown;\r\n onDoubleClickNode?: (ev: MouseEvent<HTMLElement>) => unknown;\r\n /**\r\n * Este evento es lanzado cuando el usuario estando en foco en la lista\r\n * presiona:\r\n *\r\n * - Enter si la selección múltiple está deshabilitada\r\n * - ctrl+Enter si la selección múltiple está habilitada\r\n */\r\n onConfirmSelection?: (ev: TOnConfirmSelection) => unknown;\r\n onPressEnterOnNode?: (ev: KeyboardEvent<HTMLElement>) => unknown;\r\n onPressKeyOnNode?: (ev: KeyboardEvent<HTMLElement>) => unknown;\r\n onSelectionChange?: (ev: TOnSelectionChange) => unknown;\r\n /**\r\n * onKeyDown e id no son permitidas dado que se usan para generar el\r\n * comportamiento correcto del componente\r\n */\r\n ulProps?: Omit<BoxProps, 'id' | 'onKeyDown' | 'sx'>;\r\n} & Partial<\r\n Pick<\r\n TListboxState,\r\n | 'allowMultipleCharacterSearch'\r\n | 'allowSelection'\r\n | 'allowSingleCharacterSearch'\r\n | 'isMultipleSelection'\r\n | 'searchFunction'\r\n | 'startsWithFunction'\r\n | 'showSearchbox'\r\n >\r\n>;\r\n\r\nexport type TListboxContext = {\r\n getState: () => TListboxState;\r\n id: string;\r\n listboxActions: TActionsMap<TListboxState, typeof operations>;\r\n useListbox: TUseProperties<\r\n TListboxState,\r\n {\r\n row: [\r\n (\r\n distinctions: TRowDistinctions,\r\n state: TListboxState,\r\n ) => TDistinctorProperties,\r\n ];\r\n searchbox: [\r\n (distinctions: null, state: TListboxState) => TDistinctorProperties,\r\n ];\r\n listbox: [\r\n (distinctions: null, state: TListboxState) => TDistinctorProperties,\r\n ];\r\n }\r\n >;\r\n variant: string;\r\n} & Pick<\r\n TListbox,\r\n | 'onClickNode'\r\n | 'onConfirmSelection'\r\n | 'onDoubleClickNode'\r\n | 'onPressEnterOnNode'\r\n | 'onPressKeyOnNode'\r\n>;\r\n\r\nconst ListboxContext = createContext<TListboxContext>({} as TListboxContext);\r\n\r\nexport { ListboxContext };\r\n"],"names":[],"mappings":";;AAiFM,MAAA,cAAA,GAAiB,aAA+B,CAAA,EAAqB;;;;"}
@@ -0,0 +1,17 @@
1
+ import { FC, ReactNode } from 'react';
2
+ import { BoxProps } from '@apia/theme';
3
+
4
+ type TListboxItem = {
5
+ children?: ReactNode;
6
+ rowIndex?: number;
7
+ } & BoxProps & {
8
+ /**
9
+ * El label se usa en aria-label por motivos de accesibilidad y además en
10
+ * la funcionalidad de búsqueda.
11
+ */
12
+ label: string;
13
+ };
14
+ declare const ListboxItem: FC<TListboxItem>;
15
+
16
+ export { ListboxItem, type TListboxItem };
17
+ //# sourceMappingURL=ListboxItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListboxItem.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,67 @@
1
+ import { jsxs, Fragment, jsx } from '@apia/theme/jsx-runtime';
2
+ import { memo, useContext, useMemo, useCallback } from 'react';
3
+ import { ListboxContext } from './ListboxContext.js';
4
+ import { decodeHTMLEntities } from '@apia/util';
5
+
6
+ const ListboxItem = memo(
7
+ ({ children, rowIndex: outerRowIndex, label, ...domProps }) => {
8
+ const {
9
+ getState,
10
+ listboxActions,
11
+ onDoubleClickNode,
12
+ onClickNode,
13
+ useListbox
14
+ } = useContext(ListboxContext);
15
+ const rowIndex = useMemo(() => outerRowIndex ?? -1, [outerRowIndex]);
16
+ const ref = useListbox("row", { rowIndex });
17
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
18
+ domProps.className?.includes("separator") && /* @__PURE__ */ jsx("li", { className: "separator" }),
19
+ /* @__PURE__ */ jsx(
20
+ "li",
21
+ {
22
+ ...domProps,
23
+ className: `${domProps.className?.split(" ").filter((current) => current !== "separator").join(" ") ?? ""} listbox__row`,
24
+ ref,
25
+ role: "option",
26
+ onDoubleClick: useCallback(
27
+ (ev) => {
28
+ ev.preventDefault();
29
+ onDoubleClickNode?.({
30
+ ...ev,
31
+ target: ev.target.closest(
32
+ '[role="option"]'
33
+ )
34
+ });
35
+ },
36
+ [onDoubleClickNode]
37
+ ),
38
+ onMouseDown: useCallback(
39
+ (ev) => {
40
+ onClickNode?.({
41
+ ...ev,
42
+ target: ev.target.closest(
43
+ '[role="option"]'
44
+ )
45
+ });
46
+ if (getState().isMultipleSelection && ev.shiftKey || ev.detail > 1)
47
+ ev.preventDefault();
48
+ listboxActions.updateFocusByClickEvent({
49
+ rowIndex,
50
+ isCtrlKey: ev.ctrlKey,
51
+ isShiftKey: ev.shiftKey
52
+ });
53
+ },
54
+ [getState, listboxActions, onClickNode, rowIndex]
55
+ ),
56
+ "aria-label": label,
57
+ title: useMemo(() => decodeHTMLEntities(label), [label]),
58
+ children
59
+ }
60
+ )
61
+ ] });
62
+ }
63
+ );
64
+ ListboxItem.displayName = "ListboxItem";
65
+
66
+ export { ListboxItem };
67
+ //# sourceMappingURL=ListboxItem.js.map