@apia/components 2.0.9 → 2.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/dist/components/IconsList/Icon.js +42 -0
  2. package/dist/components/IconsList/Icon.js.map +1 -0
  3. package/dist/components/IconsList/IconWrapper.js +24 -0
  4. package/dist/components/IconsList/IconWrapper.js.map +1 -0
  5. package/dist/components/IconsList/KeyHandler.js +147 -0
  6. package/dist/components/IconsList/KeyHandler.js.map +1 -0
  7. package/dist/components/IconsList/context.js +14 -0
  8. package/dist/components/IconsList/context.js.map +1 -0
  9. package/dist/components/IconsList/index.d.ts +12 -0
  10. package/dist/components/IconsList/index.d.ts.map +1 -0
  11. package/dist/components/IconsList/index.js +119 -0
  12. package/dist/components/IconsList/index.js.map +1 -0
  13. package/dist/components/IconsList/renderers/DefaultIconRenderer.d.ts +7 -0
  14. package/dist/components/IconsList/renderers/DefaultIconRenderer.d.ts.map +1 -0
  15. package/dist/components/IconsList/renderers/DefaultIconRenderer.js +30 -0
  16. package/dist/components/IconsList/renderers/DefaultIconRenderer.js.map +1 -0
  17. package/dist/components/IconsList/store/context.js +9 -0
  18. package/dist/components/IconsList/store/context.js.map +1 -0
  19. package/dist/components/IconsList/store/distinctors.js +42 -0
  20. package/dist/components/IconsList/store/distinctors.js.map +1 -0
  21. package/dist/components/IconsList/store/keysMaker.js +8 -0
  22. package/dist/components/IconsList/store/keysMaker.js.map +1 -0
  23. package/dist/components/IconsList/store/operations.js +138 -0
  24. package/dist/components/IconsList/store/operations.js.map +1 -0
  25. package/dist/components/IconsList/store/state.js +9 -0
  26. package/dist/components/IconsList/store/state.js.map +1 -0
  27. package/dist/components/IconsList/store/useStore.js +52 -0
  28. package/dist/components/IconsList/store/useStore.js.map +1 -0
  29. package/dist/components/IconsList/styles.js +48 -0
  30. package/dist/components/IconsList/styles.js.map +1 -0
  31. package/dist/components/IconsList/types.d.ts +98 -0
  32. package/dist/components/IconsList/types.d.ts.map +1 -0
  33. package/dist/components/IconsList/util.js +46 -0
  34. package/dist/components/IconsList/util.js.map +1 -0
  35. package/dist/components/ListBox/Combobox.js +52 -0
  36. package/dist/components/ListBox/Combobox.js.map +1 -0
  37. package/dist/components/ListBox/ListboxContext.d.ts +35 -0
  38. package/dist/components/ListBox/ListboxContext.d.ts.map +1 -0
  39. package/dist/components/ListBox/ListboxContext.js +6 -0
  40. package/dist/components/ListBox/ListboxContext.js.map +1 -0
  41. package/dist/components/ListBox/ListboxItem.d.ts +17 -0
  42. package/dist/components/ListBox/ListboxItem.d.ts.map +1 -0
  43. package/dist/components/ListBox/ListboxItem.js +67 -0
  44. package/dist/components/ListBox/ListboxItem.js.map +1 -0
  45. package/dist/components/ListBox/ListboxKeyhandler.js +154 -0
  46. package/dist/components/ListBox/ListboxKeyhandler.js.map +1 -0
  47. package/dist/components/ListBox/common.d.ts +46 -0
  48. package/dist/components/ListBox/common.d.ts.map +1 -0
  49. package/dist/components/ListBox/common.js +118 -0
  50. package/dist/components/ListBox/common.js.map +1 -0
  51. package/dist/components/ListBox/index.d.ts +21 -0
  52. package/dist/components/ListBox/index.d.ts.map +1 -0
  53. package/dist/components/ListBox/index.js +71 -0
  54. package/dist/components/ListBox/index.js.map +1 -0
  55. package/dist/components/ListBox/listbox.js +46 -0
  56. package/dist/components/ListBox/listbox.js.map +1 -0
  57. package/dist/components/ListBox/operations.js +330 -0
  58. package/dist/components/ListBox/operations.js.map +1 -0
  59. package/dist/components/ListBox/useIndexedChildren.js +25 -0
  60. package/dist/components/ListBox/useIndexedChildren.js.map +1 -0
  61. package/dist/components/ListBox/useListboxAutofocus.js +48 -0
  62. package/dist/components/ListBox/useListboxAutofocus.js.map +1 -0
  63. package/dist/components/ListBox/useListboxContextValue.js +8 -0
  64. package/dist/components/ListBox/useListboxContextValue.js.map +1 -0
  65. package/dist/components/ListBox/useShoutSelectionChange.js +26 -0
  66. package/dist/components/ListBox/useShoutSelectionChange.js.map +1 -0
  67. package/dist/components/ListBox/useStore.js +36 -0
  68. package/dist/components/ListBox/useStore.js.map +1 -0
  69. package/dist/components/ListBox/useUpdateRowCount.js +19 -0
  70. package/dist/components/ListBox/useUpdateRowCount.js.map +1 -0
  71. package/dist/components/SortableList/SortableListHandler.js +161 -0
  72. package/dist/components/SortableList/SortableListHandler.js.map +1 -0
  73. package/dist/components/SortableList/SortableListItem.d.ts +14 -0
  74. package/dist/components/SortableList/SortableListItem.d.ts.map +1 -0
  75. package/dist/components/SortableList/SortableListItem.js +24 -0
  76. package/dist/components/SortableList/SortableListItem.js.map +1 -0
  77. package/dist/components/SortableList/index.d.ts +21 -0
  78. package/dist/components/SortableList/index.d.ts.map +1 -0
  79. package/dist/components/SortableList/index.js +53 -0
  80. package/dist/components/SortableList/index.js.map +1 -0
  81. package/dist/components/Toolbar/ToolbarController.d.ts +24 -0
  82. package/dist/components/Toolbar/ToolbarController.d.ts.map +1 -0
  83. package/dist/components/Toolbar/ToolbarController.js +50 -0
  84. package/dist/components/Toolbar/ToolbarController.js.map +1 -0
  85. package/dist/components/Toolbar/ToolbarIconButton.d.ts +7 -0
  86. package/dist/components/Toolbar/ToolbarIconButton.d.ts.map +1 -0
  87. package/dist/components/Toolbar/ToolbarIconButton.js +108 -0
  88. package/dist/components/Toolbar/ToolbarIconButton.js.map +1 -0
  89. package/dist/components/Toolbar/ToolbarInput.d.ts +7 -0
  90. package/dist/components/Toolbar/ToolbarInput.d.ts.map +1 -0
  91. package/dist/components/Toolbar/ToolbarInput.js +13 -0
  92. package/dist/components/Toolbar/ToolbarInput.js.map +1 -0
  93. package/dist/components/Toolbar/ToolbarSelect.d.ts +7 -0
  94. package/dist/components/Toolbar/ToolbarSelect.d.ts.map +1 -0
  95. package/dist/components/Toolbar/ToolbarSelect.js +17 -0
  96. package/dist/components/Toolbar/ToolbarSelect.js.map +1 -0
  97. package/dist/components/Toolbar/ToolbarSeparator.d.ts +6 -0
  98. package/dist/components/Toolbar/ToolbarSeparator.d.ts.map +1 -0
  99. package/dist/components/Toolbar/ToolbarSeparator.js +9 -0
  100. package/dist/components/Toolbar/ToolbarSeparator.js.map +1 -0
  101. package/dist/components/Toolbar/ToolbarTextButton.d.ts +9 -0
  102. package/dist/components/Toolbar/ToolbarTextButton.d.ts.map +1 -0
  103. package/dist/components/Toolbar/ToolbarTextButton.js +18 -0
  104. package/dist/components/Toolbar/ToolbarTextButton.js.map +1 -0
  105. package/dist/components/Toolbar/index.d.ts +19 -0
  106. package/dist/components/Toolbar/index.d.ts.map +1 -0
  107. package/dist/components/Toolbar/index.js +23 -0
  108. package/dist/components/Toolbar/index.js.map +1 -0
  109. package/dist/components/Toolbar/styles.js +84 -0
  110. package/dist/components/Toolbar/styles.js.map +1 -0
  111. package/dist/components/Toolbar/types.d.ts +39 -0
  112. package/dist/components/Toolbar/types.d.ts.map +1 -0
  113. package/dist/components/accordion/Accordion.d.ts +21 -0
  114. package/dist/components/accordion/Accordion.d.ts.map +1 -0
  115. package/dist/components/accordion/Accordion.js +66 -0
  116. package/dist/components/accordion/Accordion.js.map +1 -0
  117. package/dist/components/accordion/AccordionItem.d.ts +20 -0
  118. package/dist/components/accordion/AccordionItem.d.ts.map +1 -0
  119. package/dist/components/accordion/AccordionItem.js +26 -0
  120. package/dist/components/accordion/AccordionItem.js.map +1 -0
  121. package/dist/components/accordion/AccordionItemButton.d.ts +10 -0
  122. package/dist/components/accordion/AccordionItemButton.d.ts.map +1 -0
  123. package/dist/components/accordion/AccordionItemButton.js +8 -0
  124. package/dist/components/accordion/AccordionItemButton.js.map +1 -0
  125. package/dist/components/accordion/AccordionItemContent.d.ts +7 -0
  126. package/dist/components/accordion/AccordionItemContent.d.ts.map +1 -0
  127. package/dist/components/accordion/AccordionItemContent.js +50 -0
  128. package/dist/components/accordion/AccordionItemContent.js.map +1 -0
  129. package/dist/components/accordion/KeyHandler.js +82 -0
  130. package/dist/components/accordion/KeyHandler.js.map +1 -0
  131. package/dist/components/accordion/context.d.ts +10 -0
  132. package/dist/components/accordion/context.d.ts.map +1 -0
  133. package/dist/components/accordion/context.js +13 -0
  134. package/dist/components/accordion/context.js.map +1 -0
  135. package/dist/components/accordion/defaultElements/Checkbox.js +22 -0
  136. package/dist/components/accordion/defaultElements/Checkbox.js.map +1 -0
  137. package/dist/components/accordion/defaultElements/DefaultAccordionItemButton.d.ts +40 -0
  138. package/dist/components/accordion/defaultElements/DefaultAccordionItemButton.d.ts.map +1 -0
  139. package/dist/components/accordion/defaultElements/DefaultAccordionItemButton.js +77 -0
  140. package/dist/components/accordion/defaultElements/DefaultAccordionItemButton.js.map +1 -0
  141. package/dist/components/accordion/defaultElements/useIsChecked.js +25 -0
  142. package/dist/components/accordion/defaultElements/useIsChecked.js.map +1 -0
  143. package/dist/components/accordion/handler.d.ts +40 -0
  144. package/dist/components/accordion/handler.d.ts.map +1 -0
  145. package/dist/components/accordion/handler.js +126 -0
  146. package/dist/components/accordion/handler.js.map +1 -0
  147. package/dist/components/accordion/index.d.ts +8 -0
  148. package/dist/components/accordion/index.d.ts.map +1 -0
  149. package/dist/components/accordion/types.d.ts +11 -0
  150. package/dist/components/accordion/types.d.ts.map +1 -0
  151. package/dist/components/apia/ApiaDateFilter.js +57 -0
  152. package/dist/components/apia/ApiaDateFilter.js.map +1 -0
  153. package/dist/components/apia/ApiaFilter.d.ts +13 -0
  154. package/dist/components/apia/ApiaFilter.d.ts.map +1 -0
  155. package/dist/components/apia/ApiaFilter.js +128 -0
  156. package/dist/components/apia/ApiaFilter.js.map +1 -0
  157. package/dist/components/buttons/useOtherTagButton.d.ts +28 -0
  158. package/dist/components/buttons/useOtherTagButton.d.ts.map +1 -0
  159. package/dist/components/buttons/useOtherTagButton.js +38 -0
  160. package/dist/components/buttons/useOtherTagButton.js.map +1 -0
  161. package/dist/components/collapsiblePanel/index.d.ts +7 -0
  162. package/dist/components/collapsiblePanel/index.d.ts.map +1 -0
  163. package/dist/components/collapsiblePanel/index.js +130 -0
  164. package/dist/components/collapsiblePanel/index.js.map +1 -0
  165. package/dist/components/collapsiblePanel/styles.js +4 -0
  166. package/dist/components/collapsiblePanel/styles.js.map +1 -0
  167. package/dist/components/collapsiblePanel/types.d.ts +23 -0
  168. package/dist/components/collapsiblePanel/types.d.ts.map +1 -0
  169. package/dist/components/dialogs/AlertModal.d.ts +11 -0
  170. package/dist/components/dialogs/AlertModal.d.ts.map +1 -0
  171. package/dist/components/dialogs/AlertModal.js +42 -0
  172. package/dist/components/dialogs/AlertModal.js.map +1 -0
  173. package/dist/components/dialogs/ConfirmModal.d.ts +25 -0
  174. package/dist/components/dialogs/ConfirmModal.d.ts.map +1 -0
  175. package/dist/components/dialogs/ConfirmModal.js +45 -0
  176. package/dist/components/dialogs/ConfirmModal.js.map +1 -0
  177. package/dist/components/forms/Captcha.d.ts +12 -0
  178. package/dist/components/forms/Captcha.d.ts.map +1 -0
  179. package/dist/components/forms/Captcha.js +66 -0
  180. package/dist/components/forms/Captcha.js.map +1 -0
  181. package/dist/components/forms/Checkbox.d.ts +21 -0
  182. package/dist/components/forms/Checkbox.d.ts.map +1 -0
  183. package/dist/components/forms/Checkbox.js +124 -0
  184. package/dist/components/forms/Checkbox.js.map +1 -0
  185. package/dist/components/forms/DateInput.d.ts +44 -0
  186. package/dist/components/forms/DateInput.d.ts.map +1 -0
  187. package/dist/components/forms/DateInput.js +246 -0
  188. package/dist/components/forms/DateInput.js.map +1 -0
  189. package/dist/components/forms/FieldErrorMessage.d.ts +10 -0
  190. package/dist/components/forms/FieldErrorMessage.d.ts.map +1 -0
  191. package/dist/components/forms/FieldErrorMessage.js +34 -0
  192. package/dist/components/forms/FieldErrorMessage.js.map +1 -0
  193. package/dist/components/forms/FieldLabel.d.ts +40 -0
  194. package/dist/components/forms/FieldLabel.d.ts.map +1 -0
  195. package/dist/components/forms/FieldLabel.js +66 -0
  196. package/dist/components/forms/FieldLabel.js.map +1 -0
  197. package/dist/components/forms/IconInput.d.ts +28 -0
  198. package/dist/components/forms/IconInput.d.ts.map +1 -0
  199. package/dist/components/forms/IconInput.js +80 -0
  200. package/dist/components/forms/IconInput.js.map +1 -0
  201. package/dist/components/forms/NumberInput.d.ts +37 -0
  202. package/dist/components/forms/NumberInput.d.ts.map +1 -0
  203. package/dist/components/forms/NumberInput.js +149 -0
  204. package/dist/components/forms/NumberInput.js.map +1 -0
  205. package/dist/components/forms/RequiredMark.d.ts +14 -0
  206. package/dist/components/forms/RequiredMark.d.ts.map +1 -0
  207. package/dist/components/forms/RequiredMark.js +13 -0
  208. package/dist/components/forms/RequiredMark.js.map +1 -0
  209. package/dist/components/forms/buttons/BaseButton.d.ts +24 -0
  210. package/dist/components/forms/buttons/BaseButton.d.ts.map +1 -0
  211. package/dist/components/forms/buttons/BaseButton.js +58 -0
  212. package/dist/components/forms/buttons/BaseButton.js.map +1 -0
  213. package/dist/components/forms/buttons/IconButton.d.ts +37 -0
  214. package/dist/components/forms/buttons/IconButton.d.ts.map +1 -0
  215. package/dist/components/forms/buttons/IconButton.js +79 -0
  216. package/dist/components/forms/buttons/IconButton.js.map +1 -0
  217. package/dist/components/forms/buttons/SimpleButton.d.ts +21 -0
  218. package/dist/components/forms/buttons/SimpleButton.d.ts.map +1 -0
  219. package/dist/components/forms/buttons/SimpleButton.js +94 -0
  220. package/dist/components/forms/buttons/SimpleButton.js.map +1 -0
  221. package/dist/components/forms/util/style.d.ts +7 -0
  222. package/dist/components/forms/util/style.d.ts.map +1 -0
  223. package/dist/components/forms/util/style.js +17 -0
  224. package/dist/components/forms/util/style.js.map +1 -0
  225. package/dist/components/importComponent.d.ts +11 -0
  226. package/dist/components/importComponent.d.ts.map +1 -0
  227. package/dist/components/importComponent.js +25 -0
  228. package/dist/components/importComponent.js.map +1 -0
  229. package/dist/components/loaders/LinearLoader.d.ts +6 -0
  230. package/dist/components/loaders/LinearLoader.d.ts.map +1 -0
  231. package/dist/components/loaders/LinearLoader.js +33 -0
  232. package/dist/components/loaders/LinearLoader.js.map +1 -0
  233. package/dist/components/loaders/LoaderSpinner.d.ts +10 -0
  234. package/dist/components/loaders/LoaderSpinner.d.ts.map +1 -0
  235. package/dist/components/loaders/LoaderSpinner.js +26 -0
  236. package/dist/components/loaders/LoaderSpinner.js.map +1 -0
  237. package/dist/components/loaders/ProgressBar.d.ts +11 -0
  238. package/dist/components/loaders/ProgressBar.d.ts.map +1 -0
  239. package/dist/components/loaders/ProgressBar.js +39 -0
  240. package/dist/components/loaders/ProgressBar.js.map +1 -0
  241. package/dist/components/modals/CalendarModal.d.ts +13 -0
  242. package/dist/components/modals/CalendarModal.d.ts.map +1 -0
  243. package/dist/components/modals/CalendarModal.js +43 -0
  244. package/dist/components/modals/CalendarModal.js.map +1 -0
  245. package/dist/components/modals/Modal.d.ts +178 -0
  246. package/dist/components/modals/Modal.d.ts.map +1 -0
  247. package/dist/components/modals/Modal.js +19 -0
  248. package/dist/components/modals/Modal.js.map +1 -0
  249. package/dist/components/modals/ModalContext.d.ts +9 -0
  250. package/dist/components/modals/ModalContext.d.ts.map +1 -0
  251. package/dist/components/modals/ModalContext.js +12 -0
  252. package/dist/components/modals/ModalContext.js.map +1 -0
  253. package/dist/components/modals/Overlay.d.ts +21 -0
  254. package/dist/components/modals/Overlay.d.ts.map +1 -0
  255. package/dist/components/modals/Overlay.js +70 -0
  256. package/dist/components/modals/Overlay.js.map +1 -0
  257. package/dist/components/modals/StaticModal.js +203 -0
  258. package/dist/components/modals/StaticModal.js.map +1 -0
  259. package/dist/components/modals/WindowModal.js +229 -0
  260. package/dist/components/modals/WindowModal.js.map +1 -0
  261. package/dist/components/modals/hooks/useEscapeKey.js +36 -0
  262. package/dist/components/modals/hooks/useEscapeKey.js.map +1 -0
  263. package/dist/components/modals/hooks/useInitialFocus.js +37 -0
  264. package/dist/components/modals/hooks/useInitialFocus.js.map +1 -0
  265. package/dist/components/modals/hooks/useModal.d.ts +97 -0
  266. package/dist/components/modals/hooks/useModal.d.ts.map +1 -0
  267. package/dist/components/modals/hooks/useModal.js +73 -0
  268. package/dist/components/modals/hooks/useModal.js.map +1 -0
  269. package/dist/components/modals/hooks/useStyleState.js +44 -0
  270. package/dist/components/modals/hooks/useStyleState.js.map +1 -0
  271. package/dist/components/modals/layout/Confirm.d.ts +7 -0
  272. package/dist/components/modals/layout/Confirm.d.ts.map +1 -0
  273. package/dist/components/modals/layout/Confirm.js +96 -0
  274. package/dist/components/modals/layout/Confirm.js.map +1 -0
  275. package/dist/components/modals/layout/DialogButtonBar.d.ts +10 -0
  276. package/dist/components/modals/layout/DialogButtonBar.d.ts.map +1 -0
  277. package/dist/components/modals/layout/DialogButtonBar.js +19 -0
  278. package/dist/components/modals/layout/DialogButtonBar.js.map +1 -0
  279. package/dist/components/modals/layout/DialogHeader.d.ts +18 -0
  280. package/dist/components/modals/layout/DialogHeader.d.ts.map +1 -0
  281. package/dist/components/modals/layout/DialogHeader.js +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 -1658
  302. package/dist/index.js +58 -7198
  303. package/dist/index.js.map +1 -1
  304. package/dist/objects/ApiaUtil/dialogs/ApiaUtilDialogs.d.ts +18 -0
  305. package/dist/objects/ApiaUtil/dialogs/ApiaUtilDialogs.d.ts.map +1 -0
  306. package/dist/objects/ApiaUtil/dialogs/ApiaUtilDialogs.js +116 -0
  307. package/dist/objects/ApiaUtil/dialogs/ApiaUtilDialogs.js.map +1 -0
  308. package/dist/objects/ApiaUtil/index.d.ts +27 -0
  309. package/dist/objects/ApiaUtil/index.d.ts.map +1 -0
  310. package/dist/objects/ApiaUtil/index.js +89 -0
  311. package/dist/objects/ApiaUtil/index.js.map +1 -0
  312. package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.d.ts +23 -0
  313. package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.d.ts.map +1 -0
  314. package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.js +108 -0
  315. package/dist/objects/ApiaUtil/menu/ApiaUtilMenu.js.map +1 -0
  316. package/dist/objects/ApiaUtil/modals/ApiaUtilModals.d.ts +17 -0
  317. package/dist/objects/ApiaUtil/modals/ApiaUtilModals.d.ts.map +1 -0
  318. package/dist/objects/ApiaUtil/modals/ApiaUtilModals.js +111 -0
  319. package/dist/objects/ApiaUtil/modals/ApiaUtilModals.js.map +1 -0
  320. package/dist/objects/ApiaUtil/modals/OpenModal.d.ts +38 -0
  321. package/dist/objects/ApiaUtil/modals/OpenModal.d.ts.map +1 -0
  322. package/dist/objects/ApiaUtil/modals/OpenModal.js +37 -0
  323. package/dist/objects/ApiaUtil/modals/OpenModal.js.map +1 -0
  324. package/dist/objects/ApiaUtil/mouse/ApiaUtilMouse.d.ts +19 -0
  325. package/dist/objects/ApiaUtil/mouse/ApiaUtilMouse.d.ts.map +1 -0
  326. package/dist/objects/ApiaUtil/mouse/ApiaUtilMouse.js +26 -0
  327. package/dist/objects/ApiaUtil/mouse/ApiaUtilMouse.js.map +1 -0
  328. package/dist/objects/ApiaUtil/notifications/ApiaUtilNotifications.d.ts +14 -0
  329. package/dist/objects/ApiaUtil/notifications/ApiaUtilNotifications.d.ts.map +1 -0
  330. package/dist/objects/ApiaUtil/notifications/ApiaUtilNotifications.js +33 -0
  331. package/dist/objects/ApiaUtil/notifications/ApiaUtilNotifications.js.map +1 -0
  332. package/dist/objects/ApiaUtil/parsers/ApiaUtilParsers.d.ts +23 -0
  333. package/dist/objects/ApiaUtil/parsers/ApiaUtilParsers.d.ts.map +1 -0
  334. package/dist/objects/ApiaUtil/parsers/ApiaUtilParsers.js +79 -0
  335. package/dist/objects/ApiaUtil/parsers/ApiaUtilParsers.js.map +1 -0
  336. package/dist/objects/ApiaUtil/tabs/ApiaUtilCurrentTab.d.ts +33 -0
  337. package/dist/objects/ApiaUtil/tabs/ApiaUtilCurrentTab.d.ts.map +1 -0
  338. package/dist/objects/ApiaUtil/tabs/ApiaUtilCurrentTab.js +50 -0
  339. package/dist/objects/ApiaUtil/tabs/ApiaUtilCurrentTab.js.map +1 -0
  340. package/dist/objects/ApiaUtil/tabs/ApiaUtilTabsController.d.ts +20 -0
  341. package/dist/objects/ApiaUtil/tabs/ApiaUtilTabsController.d.ts.map +1 -0
  342. package/dist/objects/ApiaUtil/tabs/ApiaUtilTabsController.js +37 -0
  343. package/dist/objects/ApiaUtil/tabs/ApiaUtilTabsController.js.map +1 -0
  344. package/dist/objects/ApiaUtil/tabs/util.js +17 -0
  345. package/dist/objects/ApiaUtil/tabs/util.js.map +1 -0
  346. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltip.d.ts +11 -0
  347. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltip.d.ts.map +1 -0
  348. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltip.js +17 -0
  349. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltip.js.map +1 -0
  350. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltips.d.ts +22 -0
  351. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltips.d.ts.map +1 -0
  352. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltips.js +104 -0
  353. package/dist/objects/ApiaUtil/tooltips/ApiaUtilTooltips.js.map +1 -0
  354. package/dist/objects/ApiaUtil/tooltips/AutomaticTooltip.d.ts +13 -0
  355. package/dist/objects/ApiaUtil/tooltips/AutomaticTooltip.d.ts.map +1 -0
  356. package/dist/objects/ApiaUtil/tooltips/AutomaticTooltip.js +79 -0
  357. package/dist/objects/ApiaUtil/tooltips/AutomaticTooltip.js.map +1 -0
  358. package/dist/objects/ApiaUtil/tooltips/tooltip/Tooltip.js +62 -0
  359. package/dist/objects/ApiaUtil/tooltips/tooltip/Tooltip.js.map +1 -0
  360. package/dist/objects/ApiaUtil/tooltips/tooltip/types.d.ts +117 -0
  361. package/dist/objects/ApiaUtil/tooltips/tooltip/types.d.ts.map +1 -0
  362. package/dist/objects/ApiaUtil/tooltips/tooltip/util.js +273 -0
  363. package/dist/objects/ApiaUtil/tooltips/tooltip/util.js.map +1 -0
  364. package/dist/objects/ScreenLocker/index.d.ts +37 -0
  365. package/dist/objects/ScreenLocker/index.d.ts.map +1 -0
  366. package/dist/objects/ScreenLocker/index.js +92 -0
  367. package/dist/objects/ScreenLocker/index.js.map +1 -0
  368. package/dist/tabs/Content.d.ts +7 -0
  369. package/dist/tabs/Content.d.ts.map +1 -0
  370. package/dist/tabs/Content.js +52 -0
  371. package/dist/tabs/Content.js.map +1 -0
  372. package/dist/tabs/ContextMenu.js +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 +8 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListboxItem.js","sources":["../../../src/components/ListBox/ListboxItem.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport {\r\n FC,\r\n MouseEvent,\r\n ReactNode,\r\n memo,\r\n useCallback,\r\n useContext,\r\n useMemo,\r\n} from 'react';\r\nimport { ListboxContext } from './ListboxContext';\r\nimport { BoxProps } from '@apia/theme';\r\nimport { decodeHTMLEntities } from '@apia/util';\r\n\r\nexport type TListboxItem = {\r\n children?: ReactNode;\r\n rowIndex?: number;\r\n} & BoxProps & {\r\n /**\r\n * El label se usa en aria-label por motivos de accesibilidad y además en\r\n * la funcionalidad de búsqueda.\r\n */\r\n label: string;\r\n };\r\n\r\nexport const ListboxItem: FC<TListboxItem> = memo(\r\n ({ children, rowIndex: outerRowIndex, label, ...domProps }) => {\r\n const {\r\n getState,\r\n listboxActions,\r\n onDoubleClickNode,\r\n onClickNode,\r\n useListbox,\r\n } = useContext(ListboxContext);\r\n const rowIndex = useMemo(() => outerRowIndex ?? -1, [outerRowIndex]);\r\n const ref = useListbox<HTMLLIElement>('row', { rowIndex });\r\n\r\n return (\r\n <>\r\n {domProps.className?.includes('separator') && (\r\n <li className=\"separator\"></li>\r\n )}\r\n <li\r\n {...(domProps as any)}\r\n className={`${\r\n domProps.className\r\n ?.split(' ')\r\n .filter((current) => current !== 'separator')\r\n .join(' ') ?? ''\r\n } listbox__row`}\r\n ref={ref}\r\n role=\"option\"\r\n onDoubleClick={useCallback(\r\n (ev: MouseEvent<HTMLElement>) => {\r\n ev.preventDefault();\r\n onDoubleClickNode?.({\r\n ...ev,\r\n target: (ev.target as HTMLElement).closest(\r\n '[role=\"option\"]',\r\n ) as HTMLElement,\r\n });\r\n },\r\n [onDoubleClickNode],\r\n )}\r\n onMouseDown={useCallback(\r\n (ev: MouseEvent<HTMLElement>) => {\r\n onClickNode?.({\r\n ...ev,\r\n target: (ev.target as HTMLElement).closest(\r\n '[role=\"option\"]',\r\n ) as HTMLElement,\r\n });\r\n if (\r\n (getState().isMultipleSelection && ev.shiftKey) ||\r\n ev.detail > 1\r\n )\r\n ev.preventDefault();\r\n listboxActions.updateFocusByClickEvent({\r\n rowIndex,\r\n isCtrlKey: ev.ctrlKey,\r\n isShiftKey: ev.shiftKey,\r\n });\r\n },\r\n [getState, listboxActions, onClickNode, rowIndex],\r\n )}\r\n aria-label={label}\r\n title={useMemo(() => decodeHTMLEntities(label), [label])}\r\n >\r\n {children}\r\n </li>\r\n </>\r\n );\r\n },\r\n);\r\n\r\nListboxItem.displayName = 'ListboxItem';\r\n"],"names":[],"mappings":";;;;;AAyBO,MAAM,WAAgC,GAAA,IAAA;AAAA,EAC3C,CAAC,EAAE,QAAU,EAAA,QAAA,EAAU,eAAe,KAAO,EAAA,GAAG,UAAe,KAAA;AAC7D,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,cAAA;AAAA,MACA,iBAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,KACF,GAAI,WAAW,cAAc,CAAA,CAAA;AAC7B,IAAA,MAAM,WAAW,OAAQ,CAAA,MAAM,iBAAiB,CAAI,CAAA,EAAA,CAAC,aAAa,CAAC,CAAA,CAAA;AACnE,IAAA,MAAM,GAAM,GAAA,UAAA,CAA0B,KAAO,EAAA,EAAE,UAAU,CAAA,CAAA;AAEzD,IAAA,uBAEK,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,MAAA,QAAA,CAAS,WAAW,QAAS,CAAA,WAAW,qBACtC,GAAA,CAAA,IAAA,EAAA,EAAG,WAAU,WAAY,EAAA,CAAA;AAAA,sBAE5B,GAAA;AAAA,QAAC,IAAA;AAAA,QAAA;AAAA,UACE,GAAI,QAAA;AAAA,UACL,WAAW,CACT,EAAA,QAAA,CAAS,SACL,EAAA,KAAA,CAAM,GAAG,CACV,CAAA,MAAA,CAAO,CAAC,OAAA,KAAY,YAAY,WAAW,CAAA,CAC3C,IAAK,CAAA,GAAG,KAAK,EAClB,CAAA,aAAA,CAAA;AAAA,UACA,GAAA;AAAA,UACA,IAAK,EAAA,QAAA;AAAA,UACL,aAAe,EAAA,WAAA;AAAA,YACb,CAAC,EAAgC,KAAA;AAC/B,cAAA,EAAA,CAAG,cAAe,EAAA,CAAA;AAClB,cAAoB,iBAAA,GAAA;AAAA,gBAClB,GAAG,EAAA;AAAA,gBACH,MAAA,EAAS,GAAG,MAAuB,CAAA,OAAA;AAAA,kBACjC,iBAAA;AAAA,iBACF;AAAA,eACD,CAAA,CAAA;AAAA,aACH;AAAA,YACA,CAAC,iBAAiB,CAAA;AAAA,WACpB;AAAA,UACA,WAAa,EAAA,WAAA;AAAA,YACX,CAAC,EAAgC,KAAA;AAC/B,cAAc,WAAA,GAAA;AAAA,gBACZ,GAAG,EAAA;AAAA,gBACH,MAAA,EAAS,GAAG,MAAuB,CAAA,OAAA;AAAA,kBACjC,iBAAA;AAAA,iBACF;AAAA,eACD,CAAA,CAAA;AACD,cAAA,IACG,UAAW,CAAA,mBAAA,IAAuB,EAAG,CAAA,QAAA,IACtC,GAAG,MAAS,GAAA,CAAA;AAEZ,gBAAA,EAAA,CAAG,cAAe,EAAA,CAAA;AACpB,cAAA,cAAA,CAAe,uBAAwB,CAAA;AAAA,gBACrC,QAAA;AAAA,gBACA,WAAW,EAAG,CAAA,OAAA;AAAA,gBACd,YAAY,EAAG,CAAA,QAAA;AAAA,eAChB,CAAA,CAAA;AAAA,aACH;AAAA,YACA,CAAC,QAAA,EAAU,cAAgB,EAAA,WAAA,EAAa,QAAQ,CAAA;AAAA,WAClD;AAAA,UACA,YAAY,EAAA,KAAA;AAAA,UACZ,KAAA,EAAO,QAAQ,MAAM,kBAAA,CAAmB,KAAK,CAAG,EAAA,CAAC,KAAK,CAAC,CAAA;AAAA,UAEtD,QAAA;AAAA,SAAA;AAAA,OACH;AAAA,KACF,EAAA,CAAA,CAAA;AAAA,GAEJ;AACF,EAAA;AAEA,WAAA,CAAY,WAAc,GAAA,aAAA;;;;"}
@@ -0,0 +1,154 @@
1
+ import { jsx } from '@apia/theme/jsx-runtime';
2
+ import { useContext, useMemo, useCallback } from 'react';
3
+ import { ListboxContext } from './ListboxContext.js';
4
+ import { Box, getVariant } from '@apia/theme';
5
+ import { WaiTypeAhead } from '../waiAriaHelpers/typeAhead.js';
6
+
7
+ const ListboxKeyhandler = ({ children, className }) => {
8
+ const {
9
+ listboxActions,
10
+ id,
11
+ getState,
12
+ onConfirmSelection,
13
+ onPressEnterOnNode,
14
+ onPressKeyOnNode,
15
+ variant
16
+ } = useContext(ListboxContext);
17
+ const typer = useMemo(
18
+ () => getState().showSearchbox ? null : new WaiTypeAhead({
19
+ onMultipleKeys(characters) {
20
+ listboxActions.searchElementsByStartingCharacters({
21
+ characters
22
+ });
23
+ },
24
+ onSingleKey(characters) {
25
+ listboxActions.searchElementsByStartingCharacters({
26
+ characters
27
+ });
28
+ }
29
+ }),
30
+ [getState, listboxActions]
31
+ );
32
+ const shoutConfirmSelection = useCallback(
33
+ (ev) => {
34
+ onConfirmSelection?.({
35
+ originalEvent: ev,
36
+ selectedElements: !getState().allowSelection ? [] : getState().selectedRows.map(
37
+ (current) => document.querySelector(
38
+ `#${id}__row__${current}`
39
+ )
40
+ ),
41
+ focusedElement: document.querySelector(
42
+ `#${id}__row__${getState().focusedRow}`
43
+ )
44
+ });
45
+ },
46
+ [getState, id, onConfirmSelection]
47
+ );
48
+ return /* @__PURE__ */ jsx(
49
+ Box,
50
+ {
51
+ ...getVariant(variant),
52
+ className,
53
+ id,
54
+ onKeyDown: useCallback(
55
+ (ev) => {
56
+ const cell = ev.target.closest(".listbox__list")?.querySelector(".listbox__row.focused");
57
+ if (!cell)
58
+ throw new Error(
59
+ "There is no cell on keydown event, it must be an error."
60
+ );
61
+ const state = getState();
62
+ onPressKeyOnNode?.({ ...ev, target: cell, currentTarget: cell });
63
+ if (ev.code === "Enter") {
64
+ onPressEnterOnNode?.({ ...ev, target: cell, currentTarget: cell });
65
+ }
66
+ if (ev.isDefaultPrevented() || ev.isPropagationStopped())
67
+ return;
68
+ if ([
69
+ "ArrowRight",
70
+ "ArrowLeft",
71
+ "ArrowDown",
72
+ "ArrowUp",
73
+ "PageUp",
74
+ "PageDown"
75
+ ].includes(ev.code) || ["Home", "End"].includes(ev.code) && ev.ctrlKey || // La selección múltiple cuando no se muestra el searchbox se hace
76
+ // con espacio
77
+ ["Space"].includes(ev.code) && state.isMultipleSelection && !state.showSearchbox || // La selección múltiple siempre puede hacerse con Enter
78
+ ["Enter"].includes(ev.code) && state.isMultipleSelection || ["KeyA"].includes(ev.code) && state.isMultipleSelection && ev.ctrlKey) {
79
+ ev.preventDefault();
80
+ switch (ev.code) {
81
+ case "KeyA":
82
+ listboxActions.selectAll();
83
+ break;
84
+ case "ArrowRight":
85
+ case "ArrowDown":
86
+ listboxActions.moveFocusAndToggleSelection({
87
+ which: "next",
88
+ isShiftKey: ev.shiftKey
89
+ });
90
+ break;
91
+ case "ArrowLeft":
92
+ case "ArrowUp":
93
+ listboxActions.moveFocusAndToggleSelection({
94
+ which: "previous",
95
+ isShiftKey: ev.shiftKey
96
+ });
97
+ break;
98
+ case "Home":
99
+ listboxActions.moveFocusAndToggleSelection({
100
+ which: "first",
101
+ isShiftKey: ev.shiftKey
102
+ });
103
+ break;
104
+ case "End":
105
+ listboxActions.moveFocusAndToggleSelection({
106
+ which: "last",
107
+ isShiftKey: ev.shiftKey
108
+ });
109
+ break;
110
+ case "Enter":
111
+ if (ev.ctrlKey) {
112
+ shoutConfirmSelection(ev);
113
+ break;
114
+ }
115
+ case "Space":
116
+ listboxActions.updateFocusBySpaceEvent({
117
+ isShiftKey: ev.shiftKey
118
+ });
119
+ break;
120
+ case "PageUp":
121
+ listboxActions.moveFocusAndToggleSelection({
122
+ which: "pageUp",
123
+ isShiftKey: ev.shiftKey
124
+ });
125
+ break;
126
+ case "PageDown":
127
+ listboxActions.moveFocusAndToggleSelection({
128
+ which: "pageDown",
129
+ isShiftKey: ev.shiftKey
130
+ });
131
+ break;
132
+ }
133
+ } else if (ev.code === "Enter" && (!state.allowSelection || !state.isMultipleSelection)) {
134
+ shoutConfirmSelection(ev);
135
+ } else if (typer) {
136
+ typer.type(ev);
137
+ }
138
+ },
139
+ [
140
+ getState,
141
+ listboxActions,
142
+ onPressEnterOnNode,
143
+ onPressKeyOnNode,
144
+ shoutConfirmSelection,
145
+ typer
146
+ ]
147
+ ),
148
+ children
149
+ }
150
+ );
151
+ };
152
+
153
+ export { ListboxKeyhandler };
154
+ //# sourceMappingURL=ListboxKeyhandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListboxKeyhandler.js","sources":["../../../src/components/ListBox/ListboxKeyhandler.tsx"],"sourcesContent":["import {\r\n FC,\r\n KeyboardEvent,\r\n ReactNode,\r\n useCallback,\r\n useContext,\r\n useMemo,\r\n} from 'react';\r\nimport { ListboxContext, TListbox } from './ListboxContext';\r\nimport { Box } from '@apia/theme';\r\nimport { getVariant } from '@apia/theme';\r\nimport { WaiTypeAhead } from '../waiAriaHelpers';\r\n\r\nconst ListboxKeyhandler: FC<\r\n {\r\n children: ReactNode;\r\n className: string;\r\n } & TListbox['ulProps']\r\n> = ({ children, className }) => {\r\n const {\r\n listboxActions,\r\n id,\r\n getState,\r\n onConfirmSelection,\r\n onPressEnterOnNode,\r\n onPressKeyOnNode,\r\n variant,\r\n } = useContext(ListboxContext);\r\n\r\n const typer = useMemo(\r\n () =>\r\n getState().showSearchbox\r\n ? null\r\n : new WaiTypeAhead({\r\n onMultipleKeys(characters) {\r\n listboxActions.searchElementsByStartingCharacters({\r\n characters,\r\n });\r\n },\r\n onSingleKey(characters) {\r\n listboxActions.searchElementsByStartingCharacters({\r\n characters,\r\n });\r\n },\r\n }),\r\n [getState, listboxActions],\r\n );\r\n\r\n const shoutConfirmSelection = useCallback(\r\n (ev: KeyboardEvent) => {\r\n onConfirmSelection?.({\r\n originalEvent: ev,\r\n selectedElements: !getState().allowSelection\r\n ? []\r\n : getState().selectedRows.map(\r\n (current) =>\r\n document.querySelector<HTMLElement>(\r\n `#${id}__row__${current}`,\r\n ) as HTMLElement,\r\n ),\r\n focusedElement: document.querySelector<HTMLElement>(\r\n `#${id}__row__${getState().focusedRow}`,\r\n ) as HTMLElement,\r\n });\r\n },\r\n [getState, id, onConfirmSelection],\r\n );\r\n\r\n return (\r\n <Box\r\n {...getVariant(variant)}\r\n className={className}\r\n id={id}\r\n onKeyDown={useCallback(\r\n (ev: KeyboardEvent) => {\r\n const cell = (ev.target as HTMLElement)\r\n .closest<HTMLElement>('.listbox__list')\r\n ?.querySelector<HTMLElement>('.listbox__row.focused');\r\n if (!cell)\r\n throw new Error(\r\n 'There is no cell on keydown event, it must be an error.',\r\n );\r\n\r\n const state = getState();\r\n onPressKeyOnNode?.({ ...ev, target: cell, currentTarget: cell });\r\n\r\n if (ev.code === 'Enter') {\r\n onPressEnterOnNode?.({ ...ev, target: cell, currentTarget: cell });\r\n }\r\n\r\n if (ev.isDefaultPrevented() || ev.isPropagationStopped()) return;\r\n\r\n if (\r\n [\r\n 'ArrowRight',\r\n 'ArrowLeft',\r\n 'ArrowDown',\r\n 'ArrowUp',\r\n 'PageUp',\r\n 'PageDown',\r\n ].includes(ev.code) ||\r\n (['Home', 'End'].includes(ev.code) && ev.ctrlKey) ||\r\n // La selección múltiple cuando no se muestra el searchbox se hace\r\n // con espacio\r\n (['Space'].includes(ev.code) &&\r\n state.isMultipleSelection &&\r\n !state.showSearchbox) ||\r\n // La selección múltiple siempre puede hacerse con Enter\r\n (['Enter'].includes(ev.code) && state.isMultipleSelection) ||\r\n (['KeyA'].includes(ev.code) &&\r\n state.isMultipleSelection &&\r\n ev.ctrlKey)\r\n ) {\r\n ev.preventDefault();\r\n\r\n switch (ev.code) {\r\n case 'KeyA':\r\n listboxActions.selectAll();\r\n break;\r\n case 'ArrowRight':\r\n case 'ArrowDown':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'next',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'ArrowLeft':\r\n case 'ArrowUp':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'previous',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'Home':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'first',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'End':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'last',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'Enter':\r\n if (ev.ctrlKey) {\r\n shoutConfirmSelection(ev);\r\n break;\r\n }\r\n case 'Space':\r\n listboxActions.updateFocusBySpaceEvent({\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'PageUp':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'pageUp',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n case 'PageDown':\r\n listboxActions.moveFocusAndToggleSelection({\r\n which: 'pageDown',\r\n isShiftKey: ev.shiftKey,\r\n });\r\n break;\r\n }\r\n } else if (\r\n ev.code === 'Enter' &&\r\n (!state.allowSelection || !state.isMultipleSelection)\r\n ) {\r\n shoutConfirmSelection(ev);\r\n } else if (typer) {\r\n typer.type(ev);\r\n }\r\n },\r\n [\r\n getState,\r\n listboxActions,\r\n onPressEnterOnNode,\r\n onPressKeyOnNode,\r\n shoutConfirmSelection,\r\n typer,\r\n ],\r\n )}\r\n >\r\n {children}\r\n </Box>\r\n );\r\n};\r\n\r\nexport { ListboxKeyhandler };\r\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ type TListboxState = {
2
+ /**
3
+ * El múltipleSearch está de acuerdo a la especificación de wai-aria. Está
4
+ * habilitado por defecto e implica que si el usuario presiona una "rápida
5
+ * sucesión" (según palabras de wai-aria) de caracteres, se irá
6
+ * alternando el foco entre los elementos que comiencen con la cadena
7
+ * introducida.
8
+ */
9
+ allowMultipleCharacterSearch?: boolean;
10
+ allowSelection: boolean;
11
+ /**
12
+ * El singleCharacterSearch está de acuerdo a la especificación de wai-aria.
13
+ * Está habilitado por defecto e implica que si el usuario presiona una
14
+ * "lenta sucesión" (según palabras de wai-aria) de caracteres, se irá
15
+ * alternando el foco entre los elementos que comiencen con la letra
16
+ * introducida.
17
+ */
18
+ allowSingleCharacterSearch?: boolean;
19
+ focusedRow: number;
20
+ hiddenRows: number[];
21
+ id: string;
22
+ isEverythingSelected: boolean;
23
+ isMultipleSelection: boolean;
24
+ lastSelectedRow: number;
25
+ rowsCount: number;
26
+ /**
27
+ * La función de búsqueda debe tomar el label de un campo y el texto
28
+ * introducido en el campo de búsqueda y determinar si el mismo debe ser
29
+ * mostrado o no. Por defecto, se usa una función de matcheo estricto.
30
+ */
31
+ searchFunction: (label: string, searchString: string) => boolean;
32
+ selectedRows: number[];
33
+ shownRows: number[];
34
+ showSearchbox: boolean;
35
+ /**
36
+ * Este método permite determinar si un elemento comienza con una cadena de
37
+ * texto en particular. Por defecto se usa String.startsWith, sin embargo se
38
+ * permite el pasaje de este método para situaciones particulares, ejemplo
39
+ * si se deseara incluir elementos sin tomar en cuenta los espacios.
40
+ */
41
+ startsWithFunction: (label: string, searchString: string) => boolean;
42
+ typing: string | null;
43
+ };
44
+
45
+ export type { TListboxState };
46
+ //# sourceMappingURL=common.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,118 @@
1
+ import { findScrollContainer } from '@apia/util';
2
+
3
+ function makeRowKey(rowIndex) {
4
+ return `row_${typeof rowIndex === "number" ? rowIndex : rowIndex.rowIndex}`;
5
+ }
6
+ let uniqueidIndex = 0;
7
+ function uniqueId(prefix) {
8
+ return `${prefix ?? ""}${uniqueidIndex++}`;
9
+ }
10
+ function getDistinctors(storeId) {
11
+ return {
12
+ listbox: [
13
+ (distinctions, state) => {
14
+ return {
15
+ etc: {
16
+ "aria-activedescendant": state.shownRows.length > 0 ? `${storeId}__row__${state.focusedRow}` : void 0
17
+ }
18
+ };
19
+ }
20
+ ],
21
+ row: [
22
+ (distinctions, state) => {
23
+ return {
24
+ classList: {
25
+ add: [
26
+ "listbox__row",
27
+ state.focusedRow === distinctions.rowIndex ? "focused" : "",
28
+ state.allowSelection && state.selectedRows.includes(distinctions.rowIndex) ? "selected" : ""
29
+ ],
30
+ remove: [
31
+ state.focusedRow === distinctions.rowIndex ? "" : "focused",
32
+ state.allowSelection && state.selectedRows.includes(distinctions.rowIndex) ? "" : "selected"
33
+ ]
34
+ },
35
+ dataset: {
36
+ add: {
37
+ focused: state.focusedRow === distinctions.rowIndex
38
+ }
39
+ },
40
+ etc: {
41
+ ...state.allowSelection ? {
42
+ "aria-selected": state.selectedRows.includes(
43
+ distinctions.rowIndex
44
+ )
45
+ } : null,
46
+ id: `${storeId}__row__${distinctions.rowIndex}`
47
+ }
48
+ };
49
+ },
50
+ (prevState, nextState) => {
51
+ const element = document.querySelector(
52
+ `#${storeId} .listbox__row[data-focused="true"]`
53
+ );
54
+ if (element) {
55
+ element.scrollIntoView({
56
+ behavior: "auto",
57
+ block: "nearest",
58
+ inline: "nearest"
59
+ });
60
+ if (prevState.focusedRow > nextState.focusedRow) {
61
+ const scrollContainer = findScrollContainer(element);
62
+ if (scrollContainer && scrollContainer !== document.body) {
63
+ scrollContainer.scrollIntoView({
64
+ behavior: "auto",
65
+ block: "nearest",
66
+ inline: "nearest"
67
+ });
68
+ const elRect = element.getBoundingClientRect();
69
+ const contRect = scrollContainer.getBoundingClientRect();
70
+ if (elRect.top - contRect.top < elRect.height)
71
+ scrollContainer.scrollTop -= elRect.height;
72
+ }
73
+ }
74
+ }
75
+ }
76
+ ],
77
+ searchbox: [
78
+ (distinctions, state) => {
79
+ return {
80
+ classList: { add: ["listbox__searchbox"] },
81
+ etc: {
82
+ "aria-activedescendant": state.shownRows.length > 0 ? `${storeId}__row__${state.focusedRow}` : void 0
83
+ }
84
+ };
85
+ }
86
+ ]
87
+ };
88
+ }
89
+ const defaultState = {
90
+ allowSelection: true,
91
+ focusedRow: 0,
92
+ hiddenRows: [],
93
+ isEverythingSelected: false,
94
+ isMultipleSelection: false,
95
+ lastSelectedRow: -1,
96
+ rowsCount: 0,
97
+ selectedRows: [],
98
+ typing: null
99
+ };
100
+ const keysMakers = {
101
+ row: makeRowKey,
102
+ listbox: () => "listbox",
103
+ searchbox: () => "searchbox"
104
+ };
105
+ function getInitialState(initialState) {
106
+ return {
107
+ ...defaultState,
108
+ ...initialState,
109
+ searchFunction: initialState.searchFunction ?? ((label, searchString) => !!label.match(new RegExp(searchString))),
110
+ startsWithFunction: initialState.startsWithFunction ?? ((label, searchString) => {
111
+ return label.startsWith(searchString);
112
+ }),
113
+ shownRows: new Array(initialState.rowsCount ?? 0).fill(1).map((_, i) => i)
114
+ };
115
+ }
116
+
117
+ export { getDistinctors, getInitialState, keysMakers, makeRowKey, uniqueId };
118
+ //# sourceMappingURL=common.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common.js","sources":["../../../src/components/ListBox/common.ts"],"sourcesContent":["import { findScrollContainer } from '@apia/util';\r\nimport { TDistinctors } from '@apia/dom-store';\r\n\r\nexport type TRowDistinctions = {\r\n rowIndex: number;\r\n};\r\n\r\nexport type TListboxState = {\r\n /**\r\n * El múltipleSearch está de acuerdo a la especificación de wai-aria. Está\r\n * habilitado por defecto e implica que si el usuario presiona una \"rápida\r\n * sucesión\" (según palabras de wai-aria) de caracteres, se irá\r\n * alternando el foco entre los elementos que comiencen con la cadena\r\n * introducida.\r\n */\r\n allowMultipleCharacterSearch?: boolean;\r\n allowSelection: boolean;\r\n /**\r\n * El singleCharacterSearch está de acuerdo a la especificación de wai-aria.\r\n * Está habilitado por defecto e implica que si el usuario presiona una\r\n * \"lenta sucesión\" (según palabras de wai-aria) de caracteres, se irá\r\n * alternando el foco entre los elementos que comiencen con la letra\r\n * introducida.\r\n */\r\n allowSingleCharacterSearch?: boolean;\r\n focusedRow: number;\r\n hiddenRows: number[];\r\n id: string;\r\n isEverythingSelected: boolean;\r\n isMultipleSelection: boolean;\r\n lastSelectedRow: number;\r\n rowsCount: number;\r\n /**\r\n * La función de búsqueda debe tomar el label de un campo y el texto\r\n * introducido en el campo de búsqueda y determinar si el mismo debe ser\r\n * mostrado o no. Por defecto, se usa una función de matcheo estricto.\r\n */\r\n searchFunction: (label: string, searchString: string) => boolean;\r\n selectedRows: number[];\r\n shownRows: number[];\r\n showSearchbox: boolean;\r\n /**\r\n * Este método permite determinar si un elemento comienza con una cadena de\r\n * texto en particular. Por defecto se usa String.startsWith, sin embargo se\r\n * permite el pasaje de este método para situaciones particulares, ejemplo\r\n * si se deseara incluir elementos sin tomar en cuenta los espacios.\r\n */\r\n startsWithFunction: (label: string, searchString: string) => boolean;\r\n typing: string | null;\r\n};\r\n\r\nexport function makeRowKey(rowIndex: TRowDistinctions | number) {\r\n return `row_${typeof rowIndex === 'number' ? rowIndex : rowIndex.rowIndex}`;\r\n}\r\n\r\nlet uniqueidIndex = 0;\r\nexport function uniqueId(prefix?: string) {\r\n return `${prefix ?? ''}${uniqueidIndex++}`;\r\n}\r\n\r\nfunction getDistinctors(storeId: string): TDistinctors<TListboxState> {\r\n return {\r\n listbox: [\r\n (distinctions: void, state) => {\r\n return {\r\n etc: {\r\n 'aria-activedescendant':\r\n state.shownRows.length > 0\r\n ? `${storeId}__row__${state.focusedRow}`\r\n : undefined,\r\n },\r\n };\r\n },\r\n ],\r\n row: [\r\n (distinctions: TRowDistinctions, state) => {\r\n return {\r\n classList: {\r\n add: [\r\n 'listbox__row',\r\n state.focusedRow === distinctions.rowIndex ? 'focused' : '',\r\n state.allowSelection &&\r\n state.selectedRows.includes(distinctions.rowIndex)\r\n ? 'selected'\r\n : '',\r\n ],\r\n remove: [\r\n state.focusedRow === distinctions.rowIndex ? '' : 'focused',\r\n state.allowSelection &&\r\n state.selectedRows.includes(distinctions.rowIndex)\r\n ? ''\r\n : 'selected',\r\n ],\r\n },\r\n dataset: {\r\n add: {\r\n focused: state.focusedRow === distinctions.rowIndex,\r\n },\r\n },\r\n etc: {\r\n ...(state.allowSelection\r\n ? {\r\n 'aria-selected': state.selectedRows.includes(\r\n distinctions.rowIndex,\r\n ),\r\n }\r\n : null),\r\n id: `${storeId}__row__${distinctions.rowIndex}`,\r\n },\r\n };\r\n },\r\n (prevState: TListboxState, nextState: TListboxState) => {\r\n const element = document.querySelector<HTMLElement>(\r\n `#${storeId} .listbox__row[data-focused=\"true\"]`,\r\n );\r\n\r\n if (element) {\r\n element.scrollIntoView({\r\n behavior: 'auto',\r\n block: 'nearest',\r\n inline: 'nearest',\r\n });\r\n\r\n if (prevState.focusedRow > nextState.focusedRow) {\r\n const scrollContainer = findScrollContainer(element);\r\n\r\n if (scrollContainer && scrollContainer !== document.body) {\r\n scrollContainer.scrollIntoView({\r\n behavior: 'auto',\r\n block: 'nearest',\r\n inline: 'nearest',\r\n });\r\n const elRect = element.getBoundingClientRect();\r\n const contRect = scrollContainer.getBoundingClientRect();\r\n\r\n if (elRect.top - contRect.top < elRect.height)\r\n scrollContainer.scrollTop -= elRect.height;\r\n }\r\n }\r\n }\r\n },\r\n ],\r\n searchbox: [\r\n (distinctions: void, state) => {\r\n return {\r\n classList: { add: ['listbox__searchbox'] },\r\n etc: {\r\n 'aria-activedescendant':\r\n state.shownRows.length > 0\r\n ? `${storeId}__row__${state.focusedRow}`\r\n : undefined,\r\n },\r\n };\r\n },\r\n ],\r\n };\r\n}\r\nconst defaultState: Omit<\r\n TListboxState,\r\n 'id' | 'showSearchbox' | 'shownRows' | 'searchFunction' | 'startsWithFunction'\r\n> = {\r\n allowSelection: true,\r\n focusedRow: 0,\r\n hiddenRows: [],\r\n isEverythingSelected: false,\r\n isMultipleSelection: false,\r\n lastSelectedRow: -1,\r\n rowsCount: 0,\r\n selectedRows: [],\r\n typing: null,\r\n};\r\n\r\nconst keysMakers = {\r\n row: makeRowKey,\r\n listbox: () => 'listbox',\r\n searchbox: () => 'searchbox',\r\n};\r\n\r\nfunction getInitialState(\r\n initialState: Partial<TListboxState> &\r\n Pick<TListboxState, 'id' | 'showSearchbox'>,\r\n): TListboxState {\r\n return {\r\n ...defaultState,\r\n ...initialState,\r\n\r\n searchFunction:\r\n initialState.searchFunction ??\r\n ((label, searchString) => !!label.match(new RegExp(searchString))),\r\n\r\n startsWithFunction:\r\n initialState.startsWithFunction ??\r\n ((label, searchString) => {\r\n return label.startsWith(searchString);\r\n }),\r\n\r\n shownRows: new Array(initialState.rowsCount ?? 0).fill(1).map((_, i) => i),\r\n };\r\n}\r\n\r\nexport { getDistinctors, getInitialState, keysMakers };\r\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import * as React from 'react';
2
+ import { KeyboardEvent, MouseEvent } from 'react';
3
+ import { TListbox } from './ListboxContext.js';
4
+
5
+ type TOnConfirmSelection = {
6
+ originalEvent: KeyboardEvent;
7
+ selectedElements: HTMLElement[];
8
+ focusedElement: HTMLElement;
9
+ };
10
+ type TOnSelectionChange = {
11
+ focusedElement: HTMLElement;
12
+ selectedElements: HTMLElement[];
13
+ };
14
+ type TOnClickNode = MouseEvent;
15
+
16
+ declare const Listbox: React.MemoExoticComponent<((props: TListbox) => React.JSX.Element) & {
17
+ displayName: string;
18
+ }>;
19
+
20
+ export { Listbox, TListbox, type TOnClickNode, type TOnConfirmSelection, type TOnSelectionChange };
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
1
+ import { jsx } from '@apia/theme/jsx-runtime';
2
+ import { useMemo, memo } from 'react';
3
+ import { uniqueId } from './common.js';
4
+ import { ListboxContext } from './ListboxContext.js';
5
+ import { ListboxKeyhandler } from './ListboxKeyhandler.js';
6
+ import { Combobox } from './Combobox.js';
7
+ import { makeStyledComponent, Box } from '@apia/theme';
8
+ import { styles } from './listbox.js';
9
+ import { useStore } from './useStore.js';
10
+ import { useShoutSelectionChange } from './useShoutSelectionChange.js';
11
+ import { useIndexedChildren } from './useIndexedChildren.js';
12
+ import { useListboxAutofocus } from './useListboxAutofocus.js';
13
+ import { useUpdateRowCount } from './useUpdateRowCount.js';
14
+ import { useListboxContextValue } from './useListboxContextValue.js';
15
+
16
+ const NoMemoListbox = makeStyledComponent(
17
+ "Listbox",
18
+ "layout.components.listbox",
19
+ styles,
20
+ (props) => {
21
+ const storeId = useMemo(() => uniqueId("Listbox"), []);
22
+ const [listboxActions, useListbox, getState, registerCallback] = useStore(
23
+ storeId,
24
+ props
25
+ );
26
+ useShoutSelectionChange(props.onSelectionChange, registerCallback);
27
+ useUpdateRowCount(props.children, listboxActions);
28
+ const indexedChildren = useIndexedChildren(props.children, listboxActions);
29
+ const { onClick, onFocus } = useListboxAutofocus(storeId, getState);
30
+ const ref = useListbox("listbox", null);
31
+ const variant = props.unstyled ? "" : "layout.components.listbox";
32
+ const contextValue = useListboxContextValue({
33
+ getState,
34
+ id: storeId,
35
+ listboxActions,
36
+ onClickNode: props.onClickNode,
37
+ onConfirmSelection: props.onConfirmSelection,
38
+ onDoubleClickNode: props.onDoubleClickNode,
39
+ onPressEnterOnNode: props.onPressEnterOnNode,
40
+ onPressKeyOnNode: props.onPressKeyOnNode,
41
+ useListbox,
42
+ variant
43
+ });
44
+ return /* @__PURE__ */ jsx(ListboxContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(
45
+ ListboxKeyhandler,
46
+ {
47
+ className: `listbox ${props.showSearchbox ? "withSearchbox" : ""} ${props.className ?? ""}`,
48
+ ...props.ulProps,
49
+ children: props.showSearchbox ? /* @__PURE__ */ jsx(Combobox, { ...props.ulProps, children: indexedChildren }) : /* @__PURE__ */ jsx(
50
+ Box,
51
+ {
52
+ ref,
53
+ as: "ul",
54
+ role: "listbox",
55
+ tabIndex: 0,
56
+ onClick,
57
+ onFocus,
58
+ ...props.ulProps,
59
+ className: `listbox__list ${props?.ulProps?.className ?? ""}`,
60
+ children: indexedChildren
61
+ }
62
+ )
63
+ }
64
+ ) });
65
+ },
66
+ true
67
+ );
68
+ const Listbox = memo(NoMemoListbox);
69
+
70
+ export { Listbox };
71
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/ListBox/index.tsx"],"sourcesContent":["import { KeyboardEvent, memo, MouseEvent, useMemo } from 'react';\r\nimport { uniqueId } from './common';\r\nimport { ListboxItem } from './ListboxItem';\r\nimport { ListboxContext, TListbox } from './ListboxContext';\r\nimport { ListboxKeyhandler } from './ListboxKeyhandler';\r\nimport { Combobox } from './Combobox';\r\nimport { makeStyledComponent } from '@apia/theme';\r\nimport { Box } from '@apia/theme';\r\nimport { styles } from './listbox';\r\nimport { useStore } from './useStore';\r\nimport { useShoutSelectionChange } from './useShoutSelectionChange';\r\nimport { useIndexedChildren } from './useIndexedChildren';\r\nimport { useListboxAutofocus } from './useListboxAutofocus';\r\nimport { useUpdateRowCount } from './useUpdateRowCount';\r\nimport { useListboxContextValue } from './useListboxContextValue';\r\n\r\nexport type TOnConfirmSelection = {\r\n originalEvent: KeyboardEvent;\r\n\r\n selectedElements: HTMLElement[];\r\n focusedElement: HTMLElement;\r\n};\r\n\r\nexport type TOnSelectionChange = {\r\n focusedElement: HTMLElement;\r\n selectedElements: HTMLElement[];\r\n};\r\n\r\nexport type TOnClickNode = MouseEvent;\r\n\r\nexport type { TListbox };\r\n\r\nconst NoMemoListbox = makeStyledComponent<TListbox>(\r\n 'Listbox',\r\n 'layout.components.listbox',\r\n styles,\r\n (props: TListbox) => {\r\n const storeId = useMemo(() => uniqueId('Listbox'), []);\r\n const [listboxActions, useListbox, getState, registerCallback] = useStore(\r\n storeId,\r\n props,\r\n );\r\n\r\n useShoutSelectionChange(props.onSelectionChange, registerCallback);\r\n useUpdateRowCount(props.children, listboxActions);\r\n\r\n const indexedChildren = useIndexedChildren(props.children, listboxActions);\r\n const { onClick, onFocus } = useListboxAutofocus(storeId, getState);\r\n const ref = useListbox<HTMLElement>('listbox', null);\r\n const variant = props.unstyled ? '' : 'layout.components.listbox';\r\n const contextValue = useListboxContextValue({\r\n getState,\r\n id: storeId,\r\n listboxActions,\r\n onClickNode: props.onClickNode,\r\n onConfirmSelection: props.onConfirmSelection,\r\n onDoubleClickNode: props.onDoubleClickNode,\r\n onPressEnterOnNode: props.onPressEnterOnNode,\r\n onPressKeyOnNode: props.onPressKeyOnNode,\r\n useListbox,\r\n variant,\r\n });\r\n\r\n return (\r\n <ListboxContext.Provider value={contextValue}>\r\n <ListboxKeyhandler\r\n className={`listbox ${props.showSearchbox ? 'withSearchbox' : ''} ${\r\n props.className ?? ''\r\n }`}\r\n {...props.ulProps}\r\n >\r\n {props.showSearchbox ? (\r\n <Combobox {...props.ulProps}>{indexedChildren}</Combobox>\r\n ) : (\r\n <Box\r\n ref={ref}\r\n as=\"ul\"\r\n role=\"listbox\"\r\n tabIndex={0}\r\n onClick={onClick}\r\n onFocus={onFocus}\r\n {...props.ulProps}\r\n className={`listbox__list ${props?.ulProps?.className ?? ''}`}\r\n >\r\n {indexedChildren}\r\n </Box>\r\n )}\r\n </ListboxKeyhandler>\r\n </ListboxContext.Provider>\r\n );\r\n },\r\n true,\r\n);\r\n\r\nconst Listbox = memo(NoMemoListbox);\r\n\r\nexport { Listbox, ListboxItem };\r\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAgCA,MAAM,aAAgB,GAAA,mBAAA;AAAA,EACpB,SAAA;AAAA,EACA,2BAAA;AAAA,EACA,MAAA;AAAA,EACA,CAAC,KAAoB,KAAA;AACnB,IAAA,MAAM,UAAU,OAAQ,CAAA,MAAM,SAAS,SAAS,CAAA,EAAG,EAAE,CAAA,CAAA;AACrD,IAAA,MAAM,CAAC,cAAA,EAAgB,UAAY,EAAA,QAAA,EAAU,gBAAgB,CAAI,GAAA,QAAA;AAAA,MAC/D,OAAA;AAAA,MACA,KAAA;AAAA,KACF,CAAA;AAEA,IAAwB,uBAAA,CAAA,KAAA,CAAM,mBAAmB,gBAAgB,CAAA,CAAA;AACjE,IAAkB,iBAAA,CAAA,KAAA,CAAM,UAAU,cAAc,CAAA,CAAA;AAEhD,IAAA,MAAM,eAAkB,GAAA,kBAAA,CAAmB,KAAM,CAAA,QAAA,EAAU,cAAc,CAAA,CAAA;AACzE,IAAA,MAAM,EAAE,OAAS,EAAA,OAAA,EAAY,GAAA,mBAAA,CAAoB,SAAS,QAAQ,CAAA,CAAA;AAClE,IAAM,MAAA,GAAA,GAAM,UAAwB,CAAA,SAAA,EAAW,IAAI,CAAA,CAAA;AACnD,IAAM,MAAA,OAAA,GAAU,KAAM,CAAA,QAAA,GAAW,EAAK,GAAA,2BAAA,CAAA;AACtC,IAAA,MAAM,eAAe,sBAAuB,CAAA;AAAA,MAC1C,QAAA;AAAA,MACA,EAAI,EAAA,OAAA;AAAA,MACJ,cAAA;AAAA,MACA,aAAa,KAAM,CAAA,WAAA;AAAA,MACnB,oBAAoB,KAAM,CAAA,kBAAA;AAAA,MAC1B,mBAAmB,KAAM,CAAA,iBAAA;AAAA,MACzB,oBAAoB,KAAM,CAAA,kBAAA;AAAA,MAC1B,kBAAkB,KAAM,CAAA,gBAAA;AAAA,MACxB,UAAA;AAAA,MACA,OAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,uBACG,GAAA,CAAA,cAAA,CAAe,QAAf,EAAA,EAAwB,OAAO,YAC9B,EAAA,QAAA,kBAAA,GAAA;AAAA,MAAC,iBAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,WAAW,KAAM,CAAA,aAAA,GAAgB,kBAAkB,EAAE,CAAA,CAAA,EAC9D,KAAM,CAAA,SAAA,IAAa,EACrB,CAAA,CAAA;AAAA,QACC,GAAG,KAAM,CAAA,OAAA;AAAA,QAET,QAAA,EAAA,KAAA,CAAM,gCACJ,GAAA,CAAA,QAAA,EAAA,EAAU,GAAG,KAAM,CAAA,OAAA,EAAU,2BAAgB,CAE9C,mBAAA,GAAA;AAAA,UAAC,GAAA;AAAA,UAAA;AAAA,YACC,GAAA;AAAA,YACA,EAAG,EAAA,IAAA;AAAA,YACH,IAAK,EAAA,SAAA;AAAA,YACL,QAAU,EAAA,CAAA;AAAA,YACV,OAAA;AAAA,YACA,OAAA;AAAA,YACC,GAAG,KAAM,CAAA,OAAA;AAAA,YACV,SAAW,EAAA,CAAA,cAAA,EAAiB,KAAO,EAAA,OAAA,EAAS,aAAa,EAAE,CAAA,CAAA;AAAA,YAE1D,QAAA,EAAA,eAAA;AAAA,WAAA;AAAA,SACH;AAAA,OAAA;AAAA,KAGN,EAAA,CAAA,CAAA;AAAA,GAEJ;AAAA,EACA,IAAA;AACF,CAAA,CAAA;AAEM,MAAA,OAAA,GAAU,KAAK,aAAa;;;;"}
@@ -0,0 +1,46 @@
1
+ import { focusOutline } from '@apia/theme';
2
+
3
+ const styles = {
4
+ "&:focus-within": {
5
+ ".listbox__list": {
6
+ outline: "none"
7
+ },
8
+ ".focused": focusOutline,
9
+ "&.withSearchbox": {
10
+ ".focused": {
11
+ outline: "1px solid",
12
+ outlineColor: "palette.border.field",
13
+ outlineOffset: 0
14
+ },
15
+ ".listbox__searchbox": focusOutline
16
+ }
17
+ },
18
+ ".listbox__list": {
19
+ listStyle: "none",
20
+ m: 0,
21
+ p: 0
22
+ },
23
+ "&.withSearchbox": {
24
+ ".listbox__list": {
25
+ maxHeight: "calc(100vh - 80px)",
26
+ overflow: "auto"
27
+ }
28
+ },
29
+ ".listbox__row": {
30
+ overflow: "hidden",
31
+ whiteSpace: "nowrap",
32
+ textOverflow: "ellipsis",
33
+ "&:hover": (theme) => {
34
+ return {
35
+ ...theme.palette.getOneState(
36
+ { backgroundColor: "palette.background.paper" },
37
+ "hover"
38
+ ),
39
+ cursor: "pointer"
40
+ };
41
+ }
42
+ }
43
+ };
44
+
45
+ export { styles };
46
+ //# sourceMappingURL=listbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listbox.js","sources":["../../../src/components/ListBox/listbox.ts"],"sourcesContent":["import { focusOutline } from '@apia/theme';\r\nimport { ThemeUICSSObject } from '@apia/theme';\r\n\r\nexport const styles: ThemeUICSSObject = {\r\n '&:focus-within': {\r\n '.listbox__list': {\r\n outline: 'none',\r\n },\r\n\r\n '.focused': focusOutline,\r\n\r\n '&.withSearchbox': {\r\n '.focused': {\r\n outline: '1px solid',\r\n outlineColor: 'palette.border.field',\r\n outlineOffset: 0,\r\n },\r\n '.listbox__searchbox': focusOutline,\r\n },\r\n },\r\n\r\n '.listbox__list': {\r\n listStyle: 'none',\r\n m: 0,\r\n p: 0,\r\n },\r\n\r\n '&.withSearchbox': {\r\n '.listbox__list': {\r\n maxHeight: 'calc(100vh - 80px)',\r\n overflow: 'auto',\r\n },\r\n },\r\n\r\n '.listbox__row': {\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n\r\n '&:hover': (theme) => {\r\n return {\r\n ...theme.palette.getOneState(\r\n { backgroundColor: 'palette.background.paper' },\r\n 'hover',\r\n ),\r\n cursor: 'pointer',\r\n };\r\n },\r\n },\r\n};\r\n"],"names":[],"mappings":";;AAGO,MAAM,MAA2B,GAAA;AAAA,EACtC,gBAAkB,EAAA;AAAA,IAChB,gBAAkB,EAAA;AAAA,MAChB,OAAS,EAAA,MAAA;AAAA,KACX;AAAA,IAEA,UAAY,EAAA,YAAA;AAAA,IAEZ,iBAAmB,EAAA;AAAA,MACjB,UAAY,EAAA;AAAA,QACV,OAAS,EAAA,WAAA;AAAA,QACT,YAAc,EAAA,sBAAA;AAAA,QACd,aAAe,EAAA,CAAA;AAAA,OACjB;AAAA,MACA,qBAAuB,EAAA,YAAA;AAAA,KACzB;AAAA,GACF;AAAA,EAEA,gBAAkB,EAAA;AAAA,IAChB,SAAW,EAAA,MAAA;AAAA,IACX,CAAG,EAAA,CAAA;AAAA,IACH,CAAG,EAAA,CAAA;AAAA,GACL;AAAA,EAEA,iBAAmB,EAAA;AAAA,IACjB,gBAAkB,EAAA;AAAA,MAChB,SAAW,EAAA,oBAAA;AAAA,MACX,QAAU,EAAA,MAAA;AAAA,KACZ;AAAA,GACF;AAAA,EAEA,eAAiB,EAAA;AAAA,IACf,QAAU,EAAA,QAAA;AAAA,IACV,UAAY,EAAA,QAAA;AAAA,IACZ,YAAc,EAAA,UAAA;AAAA,IAEd,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,QACA,MAAQ,EAAA,SAAA;AAAA,OACV,CAAA;AAAA,KACF;AAAA,GACF;AACF;;;;"}