@economic/taco 0.0.11-alpha.0 → 0.0.14-alpha.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 (376) hide show
  1. package/README.md +84 -84
  2. package/dist/components/{Label/Label.d.ts → Field/Field.d.ts} +9 -9
  3. package/dist/components/Menu/Menu.d.ts +1 -0
  4. package/dist/components/Menu/components/Item.d.ts +3 -0
  5. package/dist/esm/components/Accordion/Accordion.js.map +1 -1
  6. package/dist/esm/components/Backdrop/Backdrop.js.map +1 -1
  7. package/dist/esm/components/Badge/Badge.js.map +1 -1
  8. package/dist/esm/components/Banner/Banner.js +1 -1
  9. package/dist/esm/components/Banner/Banner.js.map +1 -1
  10. package/dist/esm/components/Banner/util.js +1 -1
  11. package/dist/esm/components/Banner/util.js.map +1 -1
  12. package/dist/esm/components/Button/Button.js.map +1 -1
  13. package/dist/esm/components/Button/util.js +49 -24
  14. package/dist/esm/components/Button/util.js.map +1 -1
  15. package/dist/esm/components/Calendar/Calendar.js.map +1 -1
  16. package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
  17. package/dist/esm/components/Combobox/Combobox.js.map +1 -1
  18. package/dist/esm/components/Combobox/useCombobox.js +64 -84
  19. package/dist/esm/components/Combobox/useCombobox.js.map +1 -1
  20. package/dist/esm/components/Datepicker/Datepicker.js.map +1 -1
  21. package/dist/esm/components/Datepicker/useDatepicker.js +35 -33
  22. package/dist/esm/components/Datepicker/useDatepicker.js.map +1 -1
  23. package/dist/esm/components/Dialog/Context.js +3 -3
  24. package/dist/esm/components/Dialog/Context.js.map +1 -1
  25. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  26. package/dist/esm/components/Dialog/components/Content.js +39 -44
  27. package/dist/esm/components/Dialog/components/Content.js.map +1 -1
  28. package/dist/esm/components/Dialog/components/Drawer.js +3 -3
  29. package/dist/esm/components/Dialog/components/Drawer.js.map +1 -1
  30. package/dist/esm/components/Dialog/components/Extra.js +2 -2
  31. package/dist/esm/components/Dialog/components/Extra.js.map +1 -1
  32. package/dist/esm/components/Dialog/components/Trigger.js +2 -2
  33. package/dist/esm/components/Dialog/components/Trigger.js.map +1 -1
  34. package/dist/esm/components/{Label/Label.js → Field/Field.js} +3 -3
  35. package/dist/esm/components/Field/Field.js.map +1 -0
  36. package/dist/esm/components/Form/Form.js.map +1 -1
  37. package/dist/esm/components/Group/Group.js.map +1 -1
  38. package/dist/esm/components/Hanger/Hanger.js.map +1 -1
  39. package/dist/esm/components/Icon/Icon.js.map +1 -1
  40. package/dist/esm/components/Icon/components/AccountPreview.js.map +1 -1
  41. package/dist/esm/components/Icon/components/Accounting.js.map +1 -1
  42. package/dist/esm/components/Icon/components/AccountingYear.js.map +1 -1
  43. package/dist/esm/components/Icon/components/AccountingYearCancel.js.map +1 -1
  44. package/dist/esm/components/Icon/components/ArrowBottom.js.map +1 -1
  45. package/dist/esm/components/Icon/components/ArrowDown.js.map +1 -1
  46. package/dist/esm/components/Icon/components/ArrowEnd.js.map +1 -1
  47. package/dist/esm/components/Icon/components/ArrowLeft.js.map +1 -1
  48. package/dist/esm/components/Icon/components/ArrowRight.js.map +1 -1
  49. package/dist/esm/components/Icon/components/ArrowStart.js.map +1 -1
  50. package/dist/esm/components/Icon/components/ArrowTop.js.map +1 -1
  51. package/dist/esm/components/Icon/components/ArrowUp.js.map +1 -1
  52. package/dist/esm/components/Icon/components/Attach.js.map +1 -1
  53. package/dist/esm/components/Icon/components/AttachAuto.js.map +1 -1
  54. package/dist/esm/components/Icon/components/AttachCancel.js.map +1 -1
  55. package/dist/esm/components/Icon/components/Autotext.js.map +1 -1
  56. package/dist/esm/components/Icon/components/AutotextInsert.js.map +1 -1
  57. package/dist/esm/components/Icon/components/Basic.js.map +1 -1
  58. package/dist/esm/components/Icon/components/BasicTabs.js.map +1 -1
  59. package/dist/esm/components/Icon/components/BellSolid.js.map +1 -1
  60. package/dist/esm/components/Icon/components/Book.js.map +1 -1
  61. package/dist/esm/components/Icon/components/Booking.js.map +1 -1
  62. package/dist/esm/components/Icon/components/Budget.js.map +1 -1
  63. package/dist/esm/components/Icon/components/Calendar.js.map +1 -1
  64. package/dist/esm/components/Icon/components/CashAccount.js.map +1 -1
  65. package/dist/esm/components/Icon/components/CashReports.js.map +1 -1
  66. package/dist/esm/components/Icon/components/Chat.js.map +1 -1
  67. package/dist/esm/components/Icon/components/ChatSolid.js.map +1 -1
  68. package/dist/esm/components/Icon/components/ChevronDown.js.map +1 -1
  69. package/dist/esm/components/Icon/components/ChevronDownDouble.js.map +1 -1
  70. package/dist/esm/components/Icon/components/ChevronDownSolid.js.map +1 -1
  71. package/dist/esm/components/Icon/components/ChevronLeft.js.map +1 -1
  72. package/dist/esm/components/Icon/components/ChevronLeftDouble.js.map +1 -1
  73. package/dist/esm/components/Icon/components/ChevronRight.js.map +1 -1
  74. package/dist/esm/components/Icon/components/ChevronRightDouble.js.map +1 -1
  75. package/dist/esm/components/Icon/components/ChevronUp.js.map +1 -1
  76. package/dist/esm/components/Icon/components/ChevronUpDouble.js.map +1 -1
  77. package/dist/esm/components/Icon/components/ChevronUpSolid.js.map +1 -1
  78. package/dist/esm/components/Icon/components/Clamp.js.map +1 -1
  79. package/dist/esm/components/Icon/components/ClampOpen.js.map +1 -1
  80. package/dist/esm/components/Icon/components/Close.js.map +1 -1
  81. package/dist/esm/components/Icon/components/ConnectionEnable.js.map +1 -1
  82. package/dist/esm/components/Icon/components/ConnectionRevoke.js.map +1 -1
  83. package/dist/esm/components/Icon/components/Contacts.js.map +1 -1
  84. package/dist/esm/components/Icon/components/Copy.js.map +1 -1
  85. package/dist/esm/components/Icon/components/Courses.js.map +1 -1
  86. package/dist/esm/components/Icon/components/Credit.js.map +1 -1
  87. package/dist/esm/components/Icon/components/Delete.js.map +1 -1
  88. package/dist/esm/components/Icon/components/DeletePermanently.js.map +1 -1
  89. package/dist/esm/components/Icon/components/Depecriate.js.map +1 -1
  90. package/dist/esm/components/Icon/components/Developer.js.map +1 -1
  91. package/dist/esm/components/Icon/components/DistributionTemplate.js.map +1 -1
  92. package/dist/esm/components/Icon/components/Document.js.map +1 -1
  93. package/dist/esm/components/Icon/components/DocumentApprove.js.map +1 -1
  94. package/dist/esm/components/Icon/components/DocumentCreateEntry.js.map +1 -1
  95. package/dist/esm/components/Icon/components/DocumentCut.js.map +1 -1
  96. package/dist/esm/components/Icon/components/DocumentError.js.map +1 -1
  97. package/dist/esm/components/Icon/components/DocumentIsolatePage.js.map +1 -1
  98. package/dist/esm/components/Icon/components/DocumentMerge.js.map +1 -1
  99. package/dist/esm/components/Icon/components/DocumentMove.js.map +1 -1
  100. package/dist/esm/components/Icon/components/DocumentPreview.js.map +1 -1
  101. package/dist/esm/components/Icon/components/DocumentReceived.js.map +1 -1
  102. package/dist/esm/components/Icon/components/DocumentRejectedRequest.js.map +1 -1
  103. package/dist/esm/components/Icon/components/DocumentSplit.js.map +1 -1
  104. package/dist/esm/components/Icon/components/DocumentTime.js.map +1 -1
  105. package/dist/esm/components/Icon/components/Download.js.map +1 -1
  106. package/dist/esm/components/Icon/components/Drag.js.map +1 -1
  107. package/dist/esm/components/Icon/components/ECopedia.js.map +1 -1
  108. package/dist/esm/components/Icon/components/ESignature.js.map +1 -1
  109. package/dist/esm/components/Icon/components/Edit.js.map +1 -1
  110. package/dist/esm/components/Icon/components/EllipsisHorizontal.js.map +1 -1
  111. package/dist/esm/components/Icon/components/EllipsisVertical.js.map +1 -1
  112. package/dist/esm/components/Icon/components/EntriesOnAccount.js.map +1 -1
  113. package/dist/esm/components/Icon/components/EntriesOpen.js.map +1 -1
  114. package/dist/esm/components/Icon/components/EntriesWarning.js.map +1 -1
  115. package/dist/esm/components/Icon/components/EntryTypeCustomerInvoice.js.map +1 -1
  116. package/dist/esm/components/Icon/components/EntryTypeCustomerPayment.js.map +1 -1
  117. package/dist/esm/components/Icon/components/EntryTypeJournalEntry.js.map +1 -1
  118. package/dist/esm/components/Icon/components/EntryTypeManualCustomerInvoice.js.map +1 -1
  119. package/dist/esm/components/Icon/components/EntryTypeSupplierInvoice.js.map +1 -1
  120. package/dist/esm/components/Icon/components/EntryTypeSupplierPayment.js.map +1 -1
  121. package/dist/esm/components/Icon/components/Envelope.js.map +1 -1
  122. package/dist/esm/components/Icon/components/EnvelopeApproved.js.map +1 -1
  123. package/dist/esm/components/Icon/components/ExpandView.js.map +1 -1
  124. package/dist/esm/components/Icon/components/Expenses.js.map +1 -1
  125. package/dist/esm/components/Icon/components/Export.js.map +1 -1
  126. package/dist/esm/components/Icon/components/ExportToExcel.js.map +1 -1
  127. package/dist/esm/components/Icon/components/ExportToExcelCopy.js.map +1 -1
  128. package/dist/esm/components/Icon/components/Filter.js.map +1 -1
  129. package/dist/esm/components/Icon/components/FilterSolid.js.map +1 -1
  130. package/dist/esm/components/Icon/components/GraphSolid.js.map +1 -1
  131. package/dist/esm/components/Icon/components/Hash.js.map +1 -1
  132. package/dist/esm/components/Icon/components/Home.js.map +1 -1
  133. package/dist/esm/components/Icon/components/Images.js.map +1 -1
  134. package/dist/esm/components/Icon/components/Import.js.map +1 -1
  135. package/dist/esm/components/Icon/components/Inbox.js.map +1 -1
  136. package/dist/esm/components/Icon/components/InboxSmart.js.map +1 -1
  137. package/dist/esm/components/Icon/components/Info.js.map +1 -1
  138. package/dist/esm/components/Icon/components/Inventory.js.map +1 -1
  139. package/dist/esm/components/Icon/components/InventoryMatrix.js.map +1 -1
  140. package/dist/esm/components/Icon/components/JournalPro.js.map +1 -1
  141. package/dist/esm/components/Icon/components/Layout.js.map +1 -1
  142. package/dist/esm/components/Icon/components/LayoutBoth.js.map +1 -1
  143. package/dist/esm/components/Icon/components/LayoutFirst.js.map +1 -1
  144. package/dist/esm/components/Icon/components/LayoutLast.js.map +1 -1
  145. package/dist/esm/components/Icon/components/LayoutNone.js.map +1 -1
  146. package/dist/esm/components/Icon/components/LedgerCard.js.map +1 -1
  147. package/dist/esm/components/Icon/components/LedgerCardCustomerReminder.js.map +1 -1
  148. package/dist/esm/components/Icon/components/LedgerCardManualCustomerInvoice.js.map +1 -1
  149. package/dist/esm/components/Icon/components/LedgerCardObsoleteStock.js.map +1 -1
  150. package/dist/esm/components/Icon/components/LedgerCardOpeningEntry.js.map +1 -1
  151. package/dist/esm/components/Icon/components/LedgerCardReservedEntry.js.map +1 -1
  152. package/dist/esm/components/Icon/components/LedgerCardShrinkagePilferage.js.map +1 -1
  153. package/dist/esm/components/Icon/components/LedgerCardStockAdjustment.js.map +1 -1
  154. package/dist/esm/components/Icon/components/LedgerCardTransferredOpeningEntry.js.map +1 -1
  155. package/dist/esm/components/Icon/components/Lightbulb.js.map +1 -1
  156. package/dist/esm/components/Icon/components/Line.js.map +1 -1
  157. package/dist/esm/components/Icon/components/List.js.map +1 -1
  158. package/dist/esm/components/Icon/components/ListBulleted.js.map +1 -1
  159. package/dist/esm/components/Icon/components/ListSearch.js.map +1 -1
  160. package/dist/esm/components/Icon/components/LockOpen.js.map +1 -1
  161. package/dist/esm/components/Icon/components/Log.js.map +1 -1
  162. package/dist/esm/components/Icon/components/Market.js.map +1 -1
  163. package/dist/esm/components/Icon/components/MatchAmount.js.map +1 -1
  164. package/dist/esm/components/Icon/components/MatchEntries.js.map +1 -1
  165. package/dist/esm/components/Icon/components/Mileage.js.map +1 -1
  166. package/dist/esm/components/Icon/components/Minus.js.map +1 -1
  167. package/dist/esm/components/Icon/components/ModalResize.js.map +1 -1
  168. package/dist/esm/components/Icon/components/ModalShrink.js.map +1 -1
  169. package/dist/esm/components/Icon/components/More.js.map +1 -1
  170. package/dist/esm/components/Icon/components/MoreSolid.js.map +1 -1
  171. package/dist/esm/components/Icon/components/Move.js.map +1 -1
  172. package/dist/esm/components/Icon/components/NavigationList.js.map +1 -1
  173. package/dist/esm/components/Icon/components/Note.js.map +1 -1
  174. package/dist/esm/components/Icon/components/NoteFollowUp.js.map +1 -1
  175. package/dist/esm/components/Icon/components/NoteRead.js.map +1 -1
  176. package/dist/esm/components/Icon/components/PartnerApi.js.map +1 -1
  177. package/dist/esm/components/Icon/components/Period.js.map +1 -1
  178. package/dist/esm/components/Icon/components/PersonChange.js.map +1 -1
  179. package/dist/esm/components/Icon/components/PersonMinus.js.map +1 -1
  180. package/dist/esm/components/Icon/components/PersonPlus.js.map +1 -1
  181. package/dist/esm/components/Icon/components/PersonTick.js.map +1 -1
  182. package/dist/esm/components/Icon/components/Play.js.map +1 -1
  183. package/dist/esm/components/Icon/components/PlusCircle.js.map +1 -1
  184. package/dist/esm/components/Icon/components/PlusMinus.js.map +1 -1
  185. package/dist/esm/components/Icon/components/Print.js.map +1 -1
  186. package/dist/esm/components/Icon/components/ProcessPayment.js.map +1 -1
  187. package/dist/esm/components/Icon/components/ProductLedgerCard.js.map +1 -1
  188. package/dist/esm/components/Icon/components/ProjectCards.js.map +1 -1
  189. package/dist/esm/components/Icon/components/Projects.js.map +1 -1
  190. package/dist/esm/components/Icon/components/Quicklinks.js.map +1 -1
  191. package/dist/esm/components/Icon/components/RatingBankruptcy.js.map +1 -1
  192. package/dist/esm/components/Icon/components/RatingPaymentProblems.js.map +1 -1
  193. package/dist/esm/components/Icon/components/Reconciled.js.map +1 -1
  194. package/dist/esm/components/Icon/components/Refresh.js.map +1 -1
  195. package/dist/esm/components/Icon/components/Report.js.map +1 -1
  196. package/dist/esm/components/Icon/components/ReportSolid.js.map +1 -1
  197. package/dist/esm/components/Icon/components/Restore.js.map +1 -1
  198. package/dist/esm/components/Icon/components/RotateLeft.js.map +1 -1
  199. package/dist/esm/components/Icon/components/RotateRight.js.map +1 -1
  200. package/dist/esm/components/Icon/components/Sales.js.map +1 -1
  201. package/dist/esm/components/Icon/components/Search.js.map +1 -1
  202. package/dist/esm/components/Icon/components/SearchBold.js.map +1 -1
  203. package/dist/esm/components/Icon/components/Secure.js.map +1 -1
  204. package/dist/esm/components/Icon/components/SecureTick.js.map +1 -1
  205. package/dist/esm/components/Icon/components/Settings.js.map +1 -1
  206. package/dist/esm/components/Icon/components/SettingsSolid.js.map +1 -1
  207. package/dist/esm/components/Icon/components/Shortcuts.js.map +1 -1
  208. package/dist/esm/components/Icon/components/ShowAll.js.map +1 -1
  209. package/dist/esm/components/Icon/components/ShowLess.js.map +1 -1
  210. package/dist/esm/components/Icon/components/ShowMore.js.map +1 -1
  211. package/dist/esm/components/Icon/components/ShowTemplate.js.map +1 -1
  212. package/dist/esm/components/Icon/components/Sliders.js.map +1 -1
  213. package/dist/esm/components/Icon/components/Smartpay.js.map +1 -1
  214. package/dist/esm/components/Icon/components/SortBy.js.map +1 -1
  215. package/dist/esm/components/Icon/components/Spinner.js.map +1 -1
  216. package/dist/esm/components/Icon/components/Star.js.map +1 -1
  217. package/dist/esm/components/Icon/components/StarSolid.js.map +1 -1
  218. package/dist/esm/components/Icon/components/Subscriptions.js.map +1 -1
  219. package/dist/esm/components/Icon/components/SystemEntries.js.map +1 -1
  220. package/dist/esm/components/Icon/components/Tag.js.map +1 -1
  221. package/dist/esm/components/Icon/components/TemplateOverride.js.map +1 -1
  222. package/dist/esm/components/Icon/components/Templates.js.map +1 -1
  223. package/dist/esm/components/Icon/components/Thumb.js.map +1 -1
  224. package/dist/esm/components/Icon/components/ThumbBoth.js.map +1 -1
  225. package/dist/esm/components/Icon/components/ThumbDown.js.map +1 -1
  226. package/dist/esm/components/Icon/components/ThumbDownSolid.js.map +1 -1
  227. package/dist/esm/components/Icon/components/ThumbUpSolid.js.map +1 -1
  228. package/dist/esm/components/Icon/components/Tick.js.map +1 -1
  229. package/dist/esm/components/Icon/components/TickCircle.js.map +1 -1
  230. package/dist/esm/components/Icon/components/Time.js.map +1 -1
  231. package/dist/esm/components/Icon/components/Transfer.js.map +1 -1
  232. package/dist/esm/components/Icon/components/TransferCancel.js.map +1 -1
  233. package/dist/esm/components/Icon/components/TransferLocked.js.map +1 -1
  234. package/dist/esm/components/Icon/components/Undock.js.map +1 -1
  235. package/dist/esm/components/Icon/components/Unreconciled.js.map +1 -1
  236. package/dist/esm/components/Icon/components/Warning.js.map +1 -1
  237. package/dist/esm/components/Icon/components/Webshop.js.map +1 -1
  238. package/dist/esm/components/Icon/components/Website.js.map +1 -1
  239. package/dist/esm/components/Icon/components/Workflow.js.map +1 -1
  240. package/dist/esm/components/Icon/components/Zoom.js.map +1 -1
  241. package/dist/esm/components/Icon/components/index.js +4 -4
  242. package/dist/esm/components/Icon/components/index.js.map +1 -1
  243. package/dist/esm/components/IconButton/IconButton.js.map +1 -1
  244. package/dist/esm/components/Input/Input.js.map +1 -1
  245. package/dist/esm/components/Input/util.js +9 -8
  246. package/dist/esm/components/Input/util.js.map +1 -1
  247. package/dist/esm/components/Listbox/Listbox.js.map +1 -1
  248. package/dist/esm/components/Listbox/ScrollableList.js +63 -82
  249. package/dist/esm/components/Listbox/ScrollableList.js.map +1 -1
  250. package/dist/esm/components/Listbox/useListbox.js +49 -58
  251. package/dist/esm/components/Listbox/useListbox.js.map +1 -1
  252. package/dist/esm/components/Listbox/useMultiListbox.js +63 -91
  253. package/dist/esm/components/Listbox/useMultiListbox.js.map +1 -1
  254. package/dist/esm/components/Listbox/useTypeahead.js +10 -9
  255. package/dist/esm/components/Listbox/useTypeahead.js.map +1 -1
  256. package/dist/esm/components/Listbox/util.js +48 -84
  257. package/dist/esm/components/Listbox/util.js.map +1 -1
  258. package/dist/esm/components/Menu/Context.js +2 -2
  259. package/dist/esm/components/Menu/Context.js.map +1 -1
  260. package/dist/esm/components/Menu/Menu.js.map +1 -1
  261. package/dist/esm/components/Menu/components/Checkbox.js +8 -9
  262. package/dist/esm/components/Menu/components/Checkbox.js.map +1 -1
  263. package/dist/esm/components/Menu/components/Content.js +10 -13
  264. package/dist/esm/components/Menu/components/Content.js.map +1 -1
  265. package/dist/esm/components/Menu/components/Header.js +4 -4
  266. package/dist/esm/components/Menu/components/Header.js.map +1 -1
  267. package/dist/esm/components/Menu/components/Item.js +59 -43
  268. package/dist/esm/components/Menu/components/Item.js.map +1 -1
  269. package/dist/esm/components/Menu/components/Link.js +7 -8
  270. package/dist/esm/components/Menu/components/Link.js.map +1 -1
  271. package/dist/esm/components/Menu/components/RadioGroup.js +16 -18
  272. package/dist/esm/components/Menu/components/RadioGroup.js.map +1 -1
  273. package/dist/esm/components/Menu/components/Separator.js +4 -4
  274. package/dist/esm/components/Menu/components/Separator.js.map +1 -1
  275. package/dist/esm/components/Menu/components/Trigger.js +5 -5
  276. package/dist/esm/components/Menu/components/Trigger.js.map +1 -1
  277. package/dist/esm/components/Navigation/Navigation.js.map +1 -1
  278. package/dist/esm/components/Pagination/PageNumbers.js +23 -28
  279. package/dist/esm/components/Pagination/PageNumbers.js.map +1 -1
  280. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  281. package/dist/esm/components/Pagination/usePagination.js +7 -21
  282. package/dist/esm/components/Pagination/usePagination.js.map +1 -1
  283. package/dist/esm/components/Pagination/usePaginationShortcuts.js +9 -9
  284. package/dist/esm/components/Pagination/usePaginationShortcuts.js.map +1 -1
  285. package/dist/esm/components/Popover/Popover.js.map +1 -1
  286. package/dist/esm/components/Popover/Primitives.js +27 -30
  287. package/dist/esm/components/Popover/Primitives.js.map +1 -1
  288. package/dist/esm/components/Progress/Progress.js.map +1 -1
  289. package/dist/esm/components/Provider/Provider.js +1 -1
  290. package/dist/esm/components/Provider/Provider.js.map +1 -1
  291. package/dist/esm/components/RadioGroup/RadioGroup.js.map +1 -1
  292. package/dist/esm/components/SearchInput/SearchInput.js +1 -1
  293. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  294. package/dist/esm/components/Select/Select.js.map +1 -1
  295. package/dist/esm/components/Select/useSelect.js +63 -82
  296. package/dist/esm/components/Select/useSelect.js.map +1 -1
  297. package/dist/esm/components/Spinner/Spinner.js.map +1 -1
  298. package/dist/esm/components/Switch/Switch.js.map +1 -1
  299. package/dist/esm/components/Table/components/BaseTable.js +23 -30
  300. package/dist/esm/components/Table/components/BaseTable.js.map +1 -1
  301. package/dist/esm/components/Table/components/PaginatedTable.js +3 -7
  302. package/dist/esm/components/Table/components/PaginatedTable.js.map +1 -1
  303. package/dist/esm/components/Table/components/Table.js +18 -25
  304. package/dist/esm/components/Table/components/Table.js.map +1 -1
  305. package/dist/esm/components/Table/components/WindowedTable.js +88 -104
  306. package/dist/esm/components/Table/components/WindowedTable.js.map +1 -1
  307. package/dist/esm/components/Table/hooks/plugins/useRowActions.js +122 -146
  308. package/dist/esm/components/Table/hooks/plugins/useRowActions.js.map +1 -1
  309. package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js +57 -61
  310. package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js.map +1 -1
  311. package/dist/esm/components/Table/hooks/plugins/useRowEditing.js +39 -36
  312. package/dist/esm/components/Table/hooks/plugins/useRowEditing.js.map +1 -1
  313. package/dist/esm/components/Table/hooks/plugins/useRowSelect.js +80 -90
  314. package/dist/esm/components/Table/hooks/plugins/useRowSelect.js.map +1 -1
  315. package/dist/esm/components/Table/hooks/useRowCreation.js +29 -64
  316. package/dist/esm/components/Table/hooks/useRowCreation.js.map +1 -1
  317. package/dist/esm/components/Table/hooks/useTable.js +119 -141
  318. package/dist/esm/components/Table/hooks/useTable.js.map +1 -1
  319. package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js +12 -15
  320. package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js.map +1 -1
  321. package/dist/esm/components/Table/util/renderColumn.js +10 -10
  322. package/dist/esm/components/Table/util/renderColumn.js.map +1 -1
  323. package/dist/esm/components/Table/util/renderRow.js +37 -46
  324. package/dist/esm/components/Table/util/renderRow.js.map +1 -1
  325. package/dist/esm/components/Table/util/rowIndexPath.js +14 -16
  326. package/dist/esm/components/Table/util/rowIndexPath.js.map +1 -1
  327. package/dist/esm/components/Table/util/sortTypes.js +23 -31
  328. package/dist/esm/components/Table/util/sortTypes.js.map +1 -1
  329. package/dist/esm/components/Table/util.js +29 -41
  330. package/dist/esm/components/Table/util.js.map +1 -1
  331. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  332. package/dist/esm/components/Textarea/Textarea.js.map +1 -1
  333. package/dist/esm/components/Toast/Toast.js +20 -21
  334. package/dist/esm/components/Toast/Toast.js.map +1 -1
  335. package/dist/esm/components/Toast/Toaster.js.map +1 -1
  336. package/dist/esm/components/Toast/util.js +2 -2
  337. package/dist/esm/components/Toast/util.js.map +1 -1
  338. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  339. package/dist/esm/components/Tour/Tour.js.map +1 -1
  340. package/dist/esm/components/Treeview/Treeview.js.map +1 -1
  341. package/dist/esm/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  342. package/dist/esm/index.css +634 -638
  343. package/dist/esm/index.js +2 -2
  344. package/dist/esm/primitives/Button.js +9 -13
  345. package/dist/esm/primitives/Button.js.map +1 -1
  346. package/dist/esm/utils/date.js.map +1 -1
  347. package/dist/esm/utils/hooks/useBoundingClientRectListener.js +12 -20
  348. package/dist/esm/utils/hooks/useBoundingClientRectListener.js.map +1 -1
  349. package/dist/esm/utils/hooks/useDraggable.js +16 -18
  350. package/dist/esm/utils/hooks/useDraggable.js.map +1 -1
  351. package/dist/esm/utils/hooks/useDropTarget.js +7 -10
  352. package/dist/esm/utils/hooks/useDropTarget.js.map +1 -1
  353. package/dist/esm/utils/hooks/useListKeyboardNavigation.js.map +1 -1
  354. package/dist/esm/utils/hooks/useListScrollTo.js.map +1 -1
  355. package/dist/esm/utils/hooks/useOnClickOutside.js.map +1 -1
  356. package/dist/esm/utils/hooks/useProxiedRef.js +3 -3
  357. package/dist/esm/utils/hooks/useProxiedRef.js.map +1 -1
  358. package/dist/esm/utils/hooks/useTimer.js +9 -17
  359. package/dist/esm/utils/hooks/useTimer.js.map +1 -1
  360. package/dist/esm/utils/input.js +7 -11
  361. package/dist/esm/utils/input.js.map +1 -1
  362. package/dist/esm/utils/mergeRefs.js +2 -2
  363. package/dist/esm/utils/mergeRefs.js.map +1 -1
  364. package/dist/esm/utils/taillwind.js +2 -2
  365. package/dist/esm/utils/taillwind.js.map +1 -1
  366. package/dist/index.css +634 -638
  367. package/dist/index.d.ts +1 -1
  368. package/dist/taco.cjs.development.js +1624 -1906
  369. package/dist/taco.cjs.development.js.map +1 -1
  370. package/dist/taco.cjs.production.min.js +1 -1
  371. package/dist/taco.cjs.production.min.js.map +1 -1
  372. package/package.json +2 -2
  373. package/plugins/tailwindcss-aria-attributes.js +73 -73
  374. package/tailwind.config.js +297 -297
  375. package/types.json +443 -443
  376. package/dist/esm/components/Label/Label.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollableList.js","sources":["../../../../src/components/Listbox/ScrollableList.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport { useProxiedRef } from '../../utils/hooks/useProxiedRef';\nimport { getNextIndexFromKeycode } from '../../utils/hooks/useListKeyboardNavigation';\nimport { useListScrollTo } from '../../utils/hooks/useListScrollTo';\nimport './ScrollableList.css';\nimport { Spinner } from '../Spinner/Spinner';\nimport { useLocalization } from '../Provider/Provider';\nimport { State } from '../../types';\nimport { Checkbox } from '../Checkbox/Checkbox';\nimport { getInputClasses } from '../Input/util';\n\nexport type ScrollableListItemValue = string | number | boolean | null;\n\nexport type ScrollableListItem = {\n /**\n * Set whether the item is disabled.\n * This will both change the style and make the item unselectable\n */\n disabled?: boolean;\n /* Specifies whether the item has child items -- intended for internal use only */\n hasChildren?: boolean;\n /** Place an icon before the item's text */\n icon?: React.ReactElement;\n /* The index path to the item -- intended for internal use only */\n path?: string;\n /** Text describing the item */\n text: string | JSX.Element;\n /** Value of the item */\n value: ScrollableListItemValue;\n /** Child items to show hierarchical data */\n children?: ScrollableListItem[];\n};\n\n/** @internal */\nexport type ScrollableListProps = Omit<\n React.HTMLAttributes<HTMLUListElement>,\n 'defaultValue' | 'id' | 'onChange' | 'onClick' | 'onKeyDown'\n> & {\n /** Data indicating the options in scrollable list */\n data: ScrollableListItem[];\n /** Sets the list to be disabled */\n disabled?: boolean;\n /** Draws attention to the scrollable list by changing its style and making it visually prominent */\n highlighted?: boolean;\n /** Set an id for the scrollable list */\n id: string;\n /**\n * Shows a loading indicator with a text next to it.\n * Read more about how to provide the text in `Provider` component.\n */\n loading?: boolean;\n /**\n * Handler called when current active/selected option changes in a scrollable list.\n * @param index indicates the index of the current active option\n */\n onChange: (index: number) => void;\n /** Handler called when option is clicked */\n onClick?: (event: React.MouseEvent<HTMLLIElement>, index: number) => void;\n /**\n * Set whether the selected item should be scrolled into view when listbox is focused.\n * Default value is `false`\n */\n scrollOnFocus?: boolean;\n /** Handler called when a key is pressed */\n onKeyDown?: (event: React.KeyboardEvent<HTMLUListElement>, index: number | undefined) => void;\n /* Sets the list to read only mode */\n readOnly?: boolean;\n /** State will change the style of the scrollable list */\n state?: State;\n /**\n * Value of the scrollable list representing the selected item.\n * It needs to be an existing value from the provided data.\n */\n value: number | undefined;\n /**\n * Allows to select multiple items from the list\n */\n multiselect?: boolean;\n /**\n * Contains the currently selected values when multiselect mode is ON.\n */\n selectedIndexes?: number[];\n /**\n * True when all available (not disabled) options are selected\n */\n allOptionsSelected?: boolean;\n};\n\n/** @internal */\nexport type ScrollableListPropsWithRef = ScrollableListProps & React.RefAttributes<HTMLUListElement>;\n\nexport const getId = (id: string, value: ScrollableListItemValue): string => `${id}_${value}`;\n\nconst getNextEnabledItem = (\n event: React.KeyboardEvent<HTMLElement>,\n data: ScrollableListItem[],\n index: number | undefined\n): number | undefined => {\n const nextIndex = getNextIndexFromKeycode(event.keyCode, data.length, index);\n\n if (nextIndex) {\n if (nextIndex === index) {\n return index;\n } else if (data[nextIndex] && data[nextIndex].disabled) {\n return getNextEnabledItem(event, data, nextIndex);\n }\n }\n\n return nextIndex;\n};\n\nexport const ScrollableList = React.forwardRef(function ScrollableList(\n props: ScrollableListProps,\n ref: React.Ref<HTMLUListElement>\n) {\n const {\n data,\n disabled,\n highlighted,\n id,\n loading,\n onChange: setCurrentIndex,\n onClick,\n onFocus,\n onKeyDown,\n readOnly,\n scrollOnFocus = false,\n state,\n value: currentIndex,\n multiselect,\n selectedIndexes = [],\n allOptionsSelected = false,\n ...otherProps\n } = props;\n const listRef = useProxiedRef<HTMLUListElement>(ref);\n const itemRefs = React.useMemo(() => data.map(() => React.createRef<HTMLLIElement>()), [data]);\n const { texts } = useLocalization();\n const { scrollTo } = useListScrollTo(listRef, itemRefs);\n\n React.useEffect(() => {\n scrollTo(currentIndex);\n }, [currentIndex]);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLUListElement>): void => {\n const nextIndex = getNextEnabledItem(event, data, currentIndex);\n\n if (nextIndex !== undefined && nextIndex !== currentIndex) {\n event.preventDefault();\n scrollTo(nextIndex);\n setCurrentIndex(nextIndex);\n }\n\n if (onKeyDown) {\n event.persist();\n const index = nextIndex !== undefined ? nextIndex : currentIndex;\n onKeyDown(event, index);\n }\n };\n\n const handleClick = (index: number) => (event: React.MouseEvent<HTMLLIElement>) => {\n setCurrentIndex(index);\n\n if (onClick) {\n event.persist();\n onClick(event, index);\n }\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLUListElement>): void => {\n if (scrollOnFocus) {\n scrollTo(currentIndex);\n }\n\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const getOptionCheckedState = (optionValue: string, index: number): boolean => {\n if (optionValue === '#ALL-OPTIONS#') {\n return allOptionsSelected;\n } else if (!optionValue || !selectedIndexes) {\n return false;\n } else {\n return selectedIndexes.findIndex(i => i === index) !== -1;\n }\n };\n\n const list: React.HTMLAttributes<HTMLUListElement> &\n React.RefAttributes<HTMLUListElement> & { disabled?: boolean; readOnly?: boolean } = {\n ...otherProps,\n className: cn(\n 'inline-flex flex-col list-none !p-0 m-0 overflow-y-auto h-auto',\n getInputClasses(props),\n {\n 'yt-list--multiselect': multiselect,\n 'pointer-events-none': disabled,\n 'cursor-not-allowed': disabled || readOnly,\n },\n otherProps.className\n ),\n disabled,\n id,\n onFocus: !disabled && !readOnly ? handleFocus : undefined,\n onKeyDown: !disabled && !readOnly ? handleKeyDown : undefined,\n readOnly,\n ref: listRef,\n role: 'listbox',\n tabIndex: otherProps.tabIndex || 0,\n };\n\n const options = data.map((option, index) => {\n const depth = option.path ? option.path.split('.').length - 1 : 0;\n\n return {\n 'aria-selected': multiselect ? getOptionCheckedState(String(option.value), index) : currentIndex === index,\n 'data-focused': currentIndex === index,\n children: option.text,\n className: cn(\n 'flex items-center px-3 w-full cursor-pointer bg-white flex-[0_0_2rem] focus:wcag-blue focus:border-blue',\n {\n 'sticky top-0 font-bold': depth === 0 && !!option.hasChildren,\n }\n ),\n disabled: option.disabled,\n icon: option.icon,\n id: getId(id, option.value),\n key: getId(id, option.value),\n onClick: !disabled && !readOnly ? handleClick(index) : undefined,\n ref: itemRefs[index],\n role: 'option',\n style:\n depth > 0\n ? {\n paddingLeft: `${depth + 1}rem`,\n }\n : undefined,\n };\n });\n\n return (\n <ul {...list} data-taco=\"scrollable-list\">\n {loading ? (\n <li className=\"yt-list__empty\">\n <span>\n <Spinner delay={0} />\n </span>\n <span>{texts.listbox.loading}</span>\n </li>\n ) : options.length ? (\n options.map(({ children, icon, ...optionProps }) => (\n <li {...optionProps}>\n {icon}\n <span className=\"flex-grow truncate text-left\">{children}</span>\n {multiselect && (\n <Checkbox\n checked={optionProps['aria-selected']}\n onChange={() => null}\n className=\"pointer-events-none ml-2 flex items-center justify-end overflow-visible p-px\"\n />\n )}\n </li>\n ))\n ) : (\n <li className=\"yt-list__empty\">\n <span>{texts.listbox.empty}</span>\n </li>\n )}\n </ul>\n );\n});\n"],"names":["getId","id","value","getNextEnabledItem","event","data","index","nextIndex","getNextIndexFromKeycode","keyCode","length","disabled","ScrollableList","React","props","ref","loading","setCurrentIndex","onChange","onClick","onFocus","onKeyDown","readOnly","scrollOnFocus","currentIndex","multiselect","selectedIndexes","allOptionsSelected","otherProps","listRef","useProxiedRef","itemRefs","map","useLocalization","texts","useListScrollTo","scrollTo","handleKeyDown","undefined","preventDefault","persist","handleClick","handleFocus","getOptionCheckedState","optionValue","findIndex","i","list","className","cn","getInputClasses","role","tabIndex","options","option","depth","path","split","String","children","text","hasChildren","icon","key","style","paddingLeft","Spinner","delay","listbox","optionProps","Checkbox","checked","empty"],"mappings":";;;;;;;;;;;;;IA4FaA,KAAK,GAAG,SAARA,KAAQ,CAACC,EAAD,EAAaC,KAAb;AAAA,SAA2DD,EAA3D,SAAiEC,KAAjE;AAAA;;AAErB,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CACvBC,KADuB,EAEvBC,IAFuB,EAGvBC,KAHuB;AAKvB,MAAMC,SAAS,GAAGC,uBAAuB,CAACJ,KAAK,CAACK,OAAP,EAAgBJ,IAAI,CAACK,MAArB,EAA6BJ,KAA7B,CAAzC;;AAEA,MAAIC,SAAJ,EAAe;AACX,QAAIA,SAAS,KAAKD,KAAlB,EAAyB;AACrB,aAAOA,KAAP;AACH,KAFD,MAEO,IAAID,IAAI,CAACE,SAAD,CAAJ,IAAmBF,IAAI,CAACE,SAAD,CAAJ,CAAgBI,QAAvC,EAAiD;AACpD,aAAOR,kBAAkB,CAACC,KAAD,EAAQC,IAAR,EAAcE,SAAd,CAAzB;AACH;AACJ;;AAED,SAAOA,SAAP;AACH,CAhBD;;IAkBaK,cAAc,gBAAGC,UAAA,CAAiB,SAASD,cAAT,CAC3CE,KAD2C,EAE3CC,GAF2C;AAI3C,MACIV,IADJ,GAkBIS,KAlBJ,CACIT,IADJ;AAAA,MAEIM,QAFJ,GAkBIG,KAlBJ,CAEIH,QAFJ;AAAA,MAIIV,EAJJ,GAkBIa,KAlBJ,CAIIb,EAJJ;AAAA,MAKIe,OALJ,GAkBIF,KAlBJ,CAKIE,OALJ;AAAA,MAMcC,eANd,GAkBIH,KAlBJ,CAMII,QANJ;AAAA,MAOIC,OAPJ,GAkBIL,KAlBJ,CAOIK,OAPJ;AAAA,MAQIC,OARJ,GAkBIN,KAlBJ,CAQIM,OARJ;AAAA,MASIC,SATJ,GAkBIP,KAlBJ,CASIO,SATJ;AAAA,MAUIC,QAVJ,GAkBIR,KAlBJ,CAUIQ,QAVJ;AAAA,6BAkBIR,KAlBJ,CAWIS,aAXJ;AAAA,MAWIA,aAXJ,qCAWoB,KAXpB;AAAA,MAaWC,YAbX,GAkBIV,KAlBJ,CAaIZ,KAbJ;AAAA,MAcIuB,WAdJ,GAkBIX,KAlBJ,CAcIW,WAdJ;AAAA,8BAkBIX,KAlBJ,CAeIY,eAfJ;AAAA,MAeIA,eAfJ,sCAesB,EAftB;AAAA,8BAkBIZ,KAlBJ,CAgBIa,kBAhBJ;AAAA,MAgBIA,kBAhBJ,sCAgByB,KAhBzB;AAAA,MAiBOC,UAjBP,iCAkBId,KAlBJ;;AAmBA,MAAMe,OAAO,GAAGC,aAAa,CAAmBf,GAAnB,CAA7B;AACA,MAAMgB,QAAQ,GAAGlB,OAAA,CAAc;AAAA,WAAMR,IAAI,CAAC2B,GAAL,CAAS;AAAA,aAAMnB,SAAA,EAAN;AAAA,KAAT,CAAN;AAAA,GAAd,EAAsE,CAACR,IAAD,CAAtE,CAAjB;;AACA,yBAAkB4B,eAAe,EAAjC;AAAA,MAAQC,KAAR,oBAAQA,KAAR;;AACA,yBAAqBC,eAAe,CAACN,OAAD,EAAUE,QAAV,CAApC;AAAA,MAAQK,QAAR,oBAAQA,QAAR;;AAEAvB,EAAAA,SAAA,CAAgB;AACZuB,IAAAA,QAAQ,CAACZ,YAAD,CAAR;AACH,GAFD,EAEG,CAACA,YAAD,CAFH;;AAIA,MAAMa,aAAa,GAAG,SAAhBA,aAAgB,CAACjC,KAAD;AAClB,QAAMG,SAAS,GAAGJ,kBAAkB,CAACC,KAAD,EAAQC,IAAR,EAAcmB,YAAd,CAApC;;AAEA,QAAIjB,SAAS,KAAK+B,SAAd,IAA2B/B,SAAS,KAAKiB,YAA7C,EAA2D;AACvDpB,MAAAA,KAAK,CAACmC,cAAN;AACAH,MAAAA,QAAQ,CAAC7B,SAAD,CAAR;AACAU,MAAAA,eAAe,CAACV,SAAD,CAAf;AACH;;AAED,QAAIc,SAAJ,EAAe;AACXjB,MAAAA,KAAK,CAACoC,OAAN;AACA,UAAMlC,KAAK,GAAGC,SAAS,KAAK+B,SAAd,GAA0B/B,SAA1B,GAAsCiB,YAApD;AACAH,MAAAA,SAAS,CAACjB,KAAD,EAAQE,KAAR,CAAT;AACH;AACJ,GAdD;;AAgBA,MAAMmC,WAAW,GAAG,SAAdA,WAAc,CAACnC,KAAD;AAAA,WAAmB,UAACF,KAAD;AACnCa,MAAAA,eAAe,CAACX,KAAD,CAAf;;AAEA,UAAIa,OAAJ,EAAa;AACTf,QAAAA,KAAK,CAACoC,OAAN;AACArB,QAAAA,OAAO,CAACf,KAAD,EAAQE,KAAR,CAAP;AACH;AACJ,KAPmB;AAAA,GAApB;;AASA,MAAMoC,WAAW,GAAG,SAAdA,WAAc,CAACtC,KAAD;AAChB,QAAImB,aAAJ,EAAmB;AACfa,MAAAA,QAAQ,CAACZ,YAAD,CAAR;AACH;;AAED,QAAIJ,OAAJ,EAAa;AACThB,MAAAA,KAAK,CAACoC,OAAN;AACApB,MAAAA,OAAO,CAAChB,KAAD,CAAP;AACH;AACJ,GATD;;AAWA,MAAMuC,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACC,WAAD,EAAsBtC,KAAtB;AAC1B,QAAIsC,WAAW,KAAK,eAApB,EAAqC;AACjC,aAAOjB,kBAAP;AACH,KAFD,MAEO,IAAI,CAACiB,WAAD,IAAgB,CAAClB,eAArB,EAAsC;AACzC,aAAO,KAAP;AACH,KAFM,MAEA;AACH,aAAOA,eAAe,CAACmB,SAAhB,CAA0B,UAAAC,CAAC;AAAA,eAAIA,CAAC,KAAKxC,KAAV;AAAA,OAA3B,MAAgD,CAAC,CAAxD;AACH;AACJ,GARD;;AAUA,MAAMyC,IAAI,gBAEHnB,UAFG;AAGNoB,IAAAA,SAAS,EAAEC,EAAE,CACT,gEADS,EAETC,eAAe,CAACpC,KAAD,CAFN,EAGT;AACI,8BAAwBW,WAD5B;AAEI,6BAAuBd,QAF3B;AAGI,4BAAsBA,QAAQ,IAAIW;AAHtC,KAHS,EAQTM,UAAU,CAACoB,SARF,CAHP;AAaNrC,IAAAA,QAAQ,EAARA,QAbM;AAcNV,IAAAA,EAAE,EAAFA,EAdM;AAeNmB,IAAAA,OAAO,EAAE,CAACT,QAAD,IAAa,CAACW,QAAd,GAAyBoB,WAAzB,GAAuCJ,SAf1C;AAgBNjB,IAAAA,SAAS,EAAE,CAACV,QAAD,IAAa,CAACW,QAAd,GAAyBe,aAAzB,GAAyCC,SAhB9C;AAiBNhB,IAAAA,QAAQ,EAARA,QAjBM;AAkBNP,IAAAA,GAAG,EAAEc,OAlBC;AAmBNsB,IAAAA,IAAI,EAAE,SAnBA;AAoBNC,IAAAA,QAAQ,EAAExB,UAAU,CAACwB,QAAX,IAAuB;AApB3B,IAAV;;AAuBA,MAAMC,OAAO,GAAGhD,IAAI,CAAC2B,GAAL,CAAS,UAACsB,MAAD,EAAShD,KAAT;AACrB,QAAMiD,KAAK,GAAGD,MAAM,CAACE,IAAP,GAAcF,MAAM,CAACE,IAAP,CAAYC,KAAZ,CAAkB,GAAlB,EAAuB/C,MAAvB,GAAgC,CAA9C,GAAkD,CAAhE;AAEA,WAAO;AACH,uBAAiBe,WAAW,GAAGkB,qBAAqB,CAACe,MAAM,CAACJ,MAAM,CAACpD,KAAR,CAAP,EAAuBI,KAAvB,CAAxB,GAAwDkB,YAAY,KAAKlB,KADlG;AAEH,sBAAgBkB,YAAY,KAAKlB,KAF9B;AAGHqD,MAAAA,QAAQ,EAAEL,MAAM,CAACM,IAHd;AAIHZ,MAAAA,SAAS,EAAEC,EAAE,CACT,yGADS,EAET;AACI,kCAA0BM,KAAK,KAAK,CAAV,IAAe,CAAC,CAACD,MAAM,CAACO;AADtD,OAFS,CAJV;AAUHlD,MAAAA,QAAQ,EAAE2C,MAAM,CAAC3C,QAVd;AAWHmD,MAAAA,IAAI,EAAER,MAAM,CAACQ,IAXV;AAYH7D,MAAAA,EAAE,EAAED,KAAK,CAACC,EAAD,EAAKqD,MAAM,CAACpD,KAAZ,CAZN;AAaH6D,MAAAA,GAAG,EAAE/D,KAAK,CAACC,EAAD,EAAKqD,MAAM,CAACpD,KAAZ,CAbP;AAcHiB,MAAAA,OAAO,EAAE,CAACR,QAAD,IAAa,CAACW,QAAd,GAAyBmB,WAAW,CAACnC,KAAD,CAApC,GAA8CgC,SAdpD;AAeHvB,MAAAA,GAAG,EAAEgB,QAAQ,CAACzB,KAAD,CAfV;AAgBH6C,MAAAA,IAAI,EAAE,QAhBH;AAiBHa,MAAAA,KAAK,EACDT,KAAK,GAAG,CAAR,GACM;AACIU,QAAAA,WAAW,EAAKV,KAAK,GAAG,CAAb;AADf,OADN,GAIMjB;AAtBP,KAAP;AAwBH,GA3Be,CAAhB;AA6BA,SACIzB,aAAA,KAAA,oBAAQkC;iBAAgB;IAAxB,EACK/B,OAAO,GACJH,aAAA,KAAA;AAAImC,IAAAA,SAAS,EAAC;GAAd,EACInC,aAAA,OAAA,MAAA,EACIA,aAAA,CAACqD,OAAD;AAASC,IAAAA,KAAK,EAAE;GAAhB,CADJ,CADJ,EAIItD,aAAA,OAAA,MAAA,EAAOqB,KAAK,CAACkC,OAAN,CAAcpD,OAArB,CAJJ,CADI,GAOJqC,OAAO,CAAC3C,MAAR,GACA2C,OAAO,CAACrB,GAAR,CAAY;AAAA,QAAG2B,QAAH,QAAGA,QAAH;AAAA,QAAaG,IAAb,QAAaA,IAAb;AAAA,QAAsBO,WAAtB;;AAAA,WACRxD,aAAA,KAAA,oBAAQwD,YAAR,EACKP,IADL,EAEIjD,aAAA,OAAA;AAAMmC,MAAAA,SAAS,EAAC;KAAhB,EAAgDW,QAAhD,CAFJ,EAGKlC,WAAW,IACRZ,aAAA,CAACyD,QAAD;AACIC,MAAAA,OAAO,EAAEF,WAAW,CAAC,eAAD;AACpBnD,MAAAA,QAAQ,EAAE;AAAA,eAAM,IAAN;AAAA;AACV8B,MAAAA,SAAS,EAAC;KAHd,CAJR,CADQ;AAAA,GAAZ,CADA,GAeAnC,aAAA,KAAA;AAAImC,IAAAA,SAAS,EAAC;GAAd,EACInC,aAAA,OAAA,MAAA,EAAOqB,KAAK,CAACkC,OAAN,CAAcI,KAArB,CADJ,CAvBR,CADJ;AA8BH,CAhK6B;;;;"}
1
+ {"version":3,"file":"ScrollableList.js","sources":["../../../../src/components/Listbox/ScrollableList.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport cn from 'classnames';\r\nimport { useProxiedRef } from '../../utils/hooks/useProxiedRef';\r\nimport { getNextIndexFromKeycode } from '../../utils/hooks/useListKeyboardNavigation';\r\nimport { useListScrollTo } from '../../utils/hooks/useListScrollTo';\r\nimport './ScrollableList.css';\r\nimport { Spinner } from '../Spinner/Spinner';\r\nimport { useLocalization } from '../Provider/Provider';\r\nimport { State } from '../../types';\r\nimport { Checkbox } from '../Checkbox/Checkbox';\r\nimport { getInputClasses } from '../Input/util';\r\n\r\nexport type ScrollableListItemValue = string | number | boolean | null;\r\n\r\nexport type ScrollableListItem = {\r\n /**\r\n * Set whether the item is disabled.\r\n * This will both change the style and make the item unselectable\r\n */\r\n disabled?: boolean;\r\n /* Specifies whether the item has child items -- intended for internal use only */\r\n hasChildren?: boolean;\r\n /** Place an icon before the item's text */\r\n icon?: React.ReactElement;\r\n /* The index path to the item -- intended for internal use only */\r\n path?: string;\r\n /** Text describing the item */\r\n text: string | JSX.Element;\r\n /** Value of the item */\r\n value: ScrollableListItemValue;\r\n /** Child items to show hierarchical data */\r\n children?: ScrollableListItem[];\r\n};\r\n\r\n/** @internal */\r\nexport type ScrollableListProps = Omit<\r\n React.HTMLAttributes<HTMLUListElement>,\r\n 'defaultValue' | 'id' | 'onChange' | 'onClick' | 'onKeyDown'\r\n> & {\r\n /** Data indicating the options in scrollable list */\r\n data: ScrollableListItem[];\r\n /** Sets the list to be disabled */\r\n disabled?: boolean;\r\n /** Draws attention to the scrollable list by changing its style and making it visually prominent */\r\n highlighted?: boolean;\r\n /** Set an id for the scrollable list */\r\n id: string;\r\n /**\r\n * Shows a loading indicator with a text next to it.\r\n * Read more about how to provide the text in `Provider` component.\r\n */\r\n loading?: boolean;\r\n /**\r\n * Handler called when current active/selected option changes in a scrollable list.\r\n * @param index indicates the index of the current active option\r\n */\r\n onChange: (index: number) => void;\r\n /** Handler called when option is clicked */\r\n onClick?: (event: React.MouseEvent<HTMLLIElement>, index: number) => void;\r\n /**\r\n * Set whether the selected item should be scrolled into view when listbox is focused.\r\n * Default value is `false`\r\n */\r\n scrollOnFocus?: boolean;\r\n /** Handler called when a key is pressed */\r\n onKeyDown?: (event: React.KeyboardEvent<HTMLUListElement>, index: number | undefined) => void;\r\n /* Sets the list to read only mode */\r\n readOnly?: boolean;\r\n /** State will change the style of the scrollable list */\r\n state?: State;\r\n /**\r\n * Value of the scrollable list representing the selected item.\r\n * It needs to be an existing value from the provided data.\r\n */\r\n value: number | undefined;\r\n /**\r\n * Allows to select multiple items from the list\r\n */\r\n multiselect?: boolean;\r\n /**\r\n * Contains the currently selected values when multiselect mode is ON.\r\n */\r\n selectedIndexes?: number[];\r\n /**\r\n * True when all available (not disabled) options are selected\r\n */\r\n allOptionsSelected?: boolean;\r\n};\r\n\r\n/** @internal */\r\nexport type ScrollableListPropsWithRef = ScrollableListProps & React.RefAttributes<HTMLUListElement>;\r\n\r\nexport const getId = (id: string, value: ScrollableListItemValue): string => `${id}_${value}`;\r\n\r\nconst getNextEnabledItem = (\r\n event: React.KeyboardEvent<HTMLElement>,\r\n data: ScrollableListItem[],\r\n index: number | undefined\r\n): number | undefined => {\r\n const nextIndex = getNextIndexFromKeycode(event.keyCode, data.length, index);\r\n\r\n if (nextIndex) {\r\n if (nextIndex === index) {\r\n return index;\r\n } else if (data[nextIndex] && data[nextIndex].disabled) {\r\n return getNextEnabledItem(event, data, nextIndex);\r\n }\r\n }\r\n\r\n return nextIndex;\r\n};\r\n\r\nexport const ScrollableList = React.forwardRef(function ScrollableList(\r\n props: ScrollableListProps,\r\n ref: React.Ref<HTMLUListElement>\r\n) {\r\n const {\r\n data,\r\n disabled,\r\n highlighted,\r\n id,\r\n loading,\r\n onChange: setCurrentIndex,\r\n onClick,\r\n onFocus,\r\n onKeyDown,\r\n readOnly,\r\n scrollOnFocus = false,\r\n state,\r\n value: currentIndex,\r\n multiselect,\r\n selectedIndexes = [],\r\n allOptionsSelected = false,\r\n ...otherProps\r\n } = props;\r\n const listRef = useProxiedRef<HTMLUListElement>(ref);\r\n const itemRefs = React.useMemo(() => data.map(() => React.createRef<HTMLLIElement>()), [data]);\r\n const { texts } = useLocalization();\r\n const { scrollTo } = useListScrollTo(listRef, itemRefs);\r\n\r\n React.useEffect(() => {\r\n scrollTo(currentIndex);\r\n }, [currentIndex]);\r\n\r\n const handleKeyDown = (event: React.KeyboardEvent<HTMLUListElement>): void => {\r\n const nextIndex = getNextEnabledItem(event, data, currentIndex);\r\n\r\n if (nextIndex !== undefined && nextIndex !== currentIndex) {\r\n event.preventDefault();\r\n scrollTo(nextIndex);\r\n setCurrentIndex(nextIndex);\r\n }\r\n\r\n if (onKeyDown) {\r\n event.persist();\r\n const index = nextIndex !== undefined ? nextIndex : currentIndex;\r\n onKeyDown(event, index);\r\n }\r\n };\r\n\r\n const handleClick = (index: number) => (event: React.MouseEvent<HTMLLIElement>) => {\r\n setCurrentIndex(index);\r\n\r\n if (onClick) {\r\n event.persist();\r\n onClick(event, index);\r\n }\r\n };\r\n\r\n const handleFocus = (event: React.FocusEvent<HTMLUListElement>): void => {\r\n if (scrollOnFocus) {\r\n scrollTo(currentIndex);\r\n }\r\n\r\n if (onFocus) {\r\n event.persist();\r\n onFocus(event);\r\n }\r\n };\r\n\r\n const getOptionCheckedState = (optionValue: string, index: number): boolean => {\r\n if (optionValue === '#ALL-OPTIONS#') {\r\n return allOptionsSelected;\r\n } else if (!optionValue || !selectedIndexes) {\r\n return false;\r\n } else {\r\n return selectedIndexes.findIndex(i => i === index) !== -1;\r\n }\r\n };\r\n\r\n const list: React.HTMLAttributes<HTMLUListElement> &\r\n React.RefAttributes<HTMLUListElement> & { disabled?: boolean; readOnly?: boolean } = {\r\n ...otherProps,\r\n className: cn(\r\n 'inline-flex flex-col list-none !p-0 m-0 overflow-y-auto h-auto',\r\n getInputClasses(props),\r\n {\r\n 'yt-list--multiselect': multiselect,\r\n 'pointer-events-none': disabled,\r\n 'cursor-not-allowed': disabled || readOnly,\r\n },\r\n otherProps.className\r\n ),\r\n disabled,\r\n id,\r\n onFocus: !disabled && !readOnly ? handleFocus : undefined,\r\n onKeyDown: !disabled && !readOnly ? handleKeyDown : undefined,\r\n readOnly,\r\n ref: listRef,\r\n role: 'listbox',\r\n tabIndex: otherProps.tabIndex || 0,\r\n };\r\n\r\n const options = data.map((option, index) => {\r\n const depth = option.path ? option.path.split('.').length - 1 : 0;\r\n\r\n return {\r\n 'aria-selected': multiselect ? getOptionCheckedState(String(option.value), index) : currentIndex === index,\r\n 'data-focused': currentIndex === index,\r\n children: option.text,\r\n className: cn(\r\n 'flex items-center px-3 w-full cursor-pointer bg-white flex-[0_0_2rem] focus:wcag-blue focus:border-blue',\r\n {\r\n 'sticky top-0 font-bold': depth === 0 && !!option.hasChildren,\r\n }\r\n ),\r\n disabled: option.disabled,\r\n icon: option.icon,\r\n id: getId(id, option.value),\r\n key: getId(id, option.value),\r\n onClick: !disabled && !readOnly ? handleClick(index) : undefined,\r\n ref: itemRefs[index],\r\n role: 'option',\r\n style:\r\n depth > 0\r\n ? {\r\n paddingLeft: `${depth + 1}rem`,\r\n }\r\n : undefined,\r\n };\r\n });\r\n\r\n return (\r\n <ul {...list} data-taco=\"scrollable-list\">\r\n {loading ? (\r\n <li className=\"yt-list__empty\">\r\n <span>\r\n <Spinner delay={0} />\r\n </span>\r\n <span>{texts.listbox.loading}</span>\r\n </li>\r\n ) : options.length ? (\r\n options.map(({ children, icon, ...optionProps }) => (\r\n <li {...optionProps}>\r\n {icon}\r\n <span className=\"flex-grow truncate text-left\">{children}</span>\r\n {multiselect && (\r\n <Checkbox\r\n checked={optionProps['aria-selected']}\r\n onChange={() => null}\r\n className=\"pointer-events-none ml-2 flex items-center justify-end overflow-visible p-px\"\r\n />\r\n )}\r\n </li>\r\n ))\r\n ) : (\r\n <li className=\"yt-list__empty\">\r\n <span>{texts.listbox.empty}</span>\r\n </li>\r\n )}\r\n </ul>\r\n );\r\n});\r\n"],"names":["getId","id","value","getNextEnabledItem","event","data","index","nextIndex","getNextIndexFromKeycode","keyCode","length","disabled","ScrollableList","React","props","ref","highlighted","loading","onChange","setCurrentIndex","onClick","onFocus","onKeyDown","readOnly","scrollOnFocus","state","currentIndex","multiselect","selectedIndexes","allOptionsSelected","otherProps","listRef","useProxiedRef","itemRefs","map","texts","useLocalization","scrollTo","useListScrollTo","handleKeyDown","undefined","preventDefault","persist","handleClick","handleFocus","getOptionCheckedState","optionValue","findIndex","i","list","className","cn","getInputClasses","role","tabIndex","options","option","depth","path","split","String","children","text","hasChildren","icon","key","style","paddingLeft","Spinner","delay","listbox","optionProps","Checkbox","checked","empty"],"mappings":";;;;;;;;;;MA4FaA,KAAK,GAAG,CAACC,EAAD,EAAaC,KAAb,QAA2DD,MAAMC;;AAEtF,MAAMC,kBAAkB,GAAG,CACvBC,KADuB,EAEvBC,IAFuB,EAGvBC,KAHuB;AAKvB,QAAMC,SAAS,GAAGC,uBAAuB,CAACJ,KAAK,CAACK,OAAP,EAAgBJ,IAAI,CAACK,MAArB,EAA6BJ,KAA7B,CAAzC;;AAEA,MAAIC,SAAJ,EAAe;AACX,QAAIA,SAAS,KAAKD,KAAlB,EAAyB;AACrB,aAAOA,KAAP;AACH,KAFD,MAEO,IAAID,IAAI,CAACE,SAAD,CAAJ,IAAmBF,IAAI,CAACE,SAAD,CAAJ,CAAgBI,QAAvC,EAAiD;AACpD,aAAOR,kBAAkB,CAACC,KAAD,EAAQC,IAAR,EAAcE,SAAd,CAAzB;AACH;AACJ;;AAED,SAAOA,SAAP;AACH,CAhBD;;MAkBaK,cAAc,gBAAGC,UAAA,CAAiB,SAASD,cAAT,CAC3CE,KAD2C,EAE3CC,GAF2C;AAI3C,QAAM;AACFV,IAAAA,IADE;AAEFM,IAAAA,QAFE;AAGFK,IAAAA,WAHE;AAIFf,IAAAA,EAJE;AAKFgB,IAAAA,OALE;AAMFC,IAAAA,QAAQ,EAAEC,eANR;AAOFC,IAAAA,OAPE;AAQFC,IAAAA,OARE;AASFC,IAAAA,SATE;AAUFC,IAAAA,QAVE;AAWFC,IAAAA,aAAa,GAAG,KAXd;AAYFC,IAAAA,KAZE;AAaFvB,IAAAA,KAAK,EAAEwB,YAbL;AAcFC,IAAAA,WAdE;AAeFC,IAAAA,eAAe,GAAG,EAfhB;AAgBFC,IAAAA,kBAAkB,GAAG,KAhBnB;AAiBF,OAAGC;AAjBD,MAkBFhB,KAlBJ;AAmBA,QAAMiB,OAAO,GAAGC,aAAa,CAAmBjB,GAAnB,CAA7B;AACA,QAAMkB,QAAQ,GAAGpB,OAAA,CAAc,MAAMR,IAAI,CAAC6B,GAAL,CAAS,MAAMrB,SAAA,EAAf,CAApB,EAAsE,CAACR,IAAD,CAAtE,CAAjB;AACA,QAAM;AAAE8B,IAAAA;AAAF,MAAYC,eAAe,EAAjC;AACA,QAAM;AAAEC,IAAAA;AAAF,MAAeC,eAAe,CAACP,OAAD,EAAUE,QAAV,CAApC;AAEApB,EAAAA,SAAA,CAAgB;AACZwB,IAAAA,QAAQ,CAACX,YAAD,CAAR;AACH,GAFD,EAEG,CAACA,YAAD,CAFH;;AAIA,QAAMa,aAAa,GAAInC,KAAD;AAClB,UAAMG,SAAS,GAAGJ,kBAAkB,CAACC,KAAD,EAAQC,IAAR,EAAcqB,YAAd,CAApC;;AAEA,QAAInB,SAAS,KAAKiC,SAAd,IAA2BjC,SAAS,KAAKmB,YAA7C,EAA2D;AACvDtB,MAAAA,KAAK,CAACqC,cAAN;AACAJ,MAAAA,QAAQ,CAAC9B,SAAD,CAAR;AACAY,MAAAA,eAAe,CAACZ,SAAD,CAAf;AACH;;AAED,QAAIe,SAAJ,EAAe;AACXlB,MAAAA,KAAK,CAACsC,OAAN;AACA,YAAMpC,KAAK,GAAGC,SAAS,KAAKiC,SAAd,GAA0BjC,SAA1B,GAAsCmB,YAApD;AACAJ,MAAAA,SAAS,CAAClB,KAAD,EAAQE,KAAR,CAAT;AACH;AACJ,GAdD;;AAgBA,QAAMqC,WAAW,GAAIrC,KAAD,IAAoBF,KAAD;AACnCe,IAAAA,eAAe,CAACb,KAAD,CAAf;;AAEA,QAAIc,OAAJ,EAAa;AACThB,MAAAA,KAAK,CAACsC,OAAN;AACAtB,MAAAA,OAAO,CAAChB,KAAD,EAAQE,KAAR,CAAP;AACH;AACJ,GAPD;;AASA,QAAMsC,WAAW,GAAIxC,KAAD;AAChB,QAAIoB,aAAJ,EAAmB;AACfa,MAAAA,QAAQ,CAACX,YAAD,CAAR;AACH;;AAED,QAAIL,OAAJ,EAAa;AACTjB,MAAAA,KAAK,CAACsC,OAAN;AACArB,MAAAA,OAAO,CAACjB,KAAD,CAAP;AACH;AACJ,GATD;;AAWA,QAAMyC,qBAAqB,GAAG,CAACC,WAAD,EAAsBxC,KAAtB;AAC1B,QAAIwC,WAAW,KAAK,eAApB,EAAqC;AACjC,aAAOjB,kBAAP;AACH,KAFD,MAEO,IAAI,CAACiB,WAAD,IAAgB,CAAClB,eAArB,EAAsC;AACzC,aAAO,KAAP;AACH,KAFM,MAEA;AACH,aAAOA,eAAe,CAACmB,SAAhB,CAA0BC,CAAC,IAAIA,CAAC,KAAK1C,KAArC,MAAgD,CAAC,CAAxD;AACH;AACJ,GARD;;AAUA,QAAM2C,IAAI,GAC+E,EACrF,GAAGnB,UADkF;AAErFoB,IAAAA,SAAS,EAAEC,EAAE,CACT,gEADS,EAETC,eAAe,CAACtC,KAAD,CAFN,EAGT;AACI,8BAAwBa,WAD5B;AAEI,6BAAuBhB,QAF3B;AAGI,4BAAsBA,QAAQ,IAAIY;AAHtC,KAHS,EAQTO,UAAU,CAACoB,SARF,CAFwE;AAYrFvC,IAAAA,QAZqF;AAarFV,IAAAA,EAbqF;AAcrFoB,IAAAA,OAAO,EAAE,CAACV,QAAD,IAAa,CAACY,QAAd,GAAyBqB,WAAzB,GAAuCJ,SAdqC;AAerFlB,IAAAA,SAAS,EAAE,CAACX,QAAD,IAAa,CAACY,QAAd,GAAyBgB,aAAzB,GAAyCC,SAfiC;AAgBrFjB,IAAAA,QAhBqF;AAiBrFR,IAAAA,GAAG,EAAEgB,OAjBgF;AAkBrFsB,IAAAA,IAAI,EAAE,SAlB+E;AAmBrFC,IAAAA,QAAQ,EAAExB,UAAU,CAACwB,QAAX,IAAuB;AAnBoD,GADzF;AAuBA,QAAMC,OAAO,GAAGlD,IAAI,CAAC6B,GAAL,CAAS,CAACsB,MAAD,EAASlD,KAAT;AACrB,UAAMmD,KAAK,GAAGD,MAAM,CAACE,IAAP,GAAcF,MAAM,CAACE,IAAP,CAAYC,KAAZ,CAAkB,GAAlB,EAAuBjD,MAAvB,GAAgC,CAA9C,GAAkD,CAAhE;AAEA,WAAO;AACH,uBAAiBiB,WAAW,GAAGkB,qBAAqB,CAACe,MAAM,CAACJ,MAAM,CAACtD,KAAR,CAAP,EAAuBI,KAAvB,CAAxB,GAAwDoB,YAAY,KAAKpB,KADlG;AAEH,sBAAgBoB,YAAY,KAAKpB,KAF9B;AAGHuD,MAAAA,QAAQ,EAAEL,MAAM,CAACM,IAHd;AAIHZ,MAAAA,SAAS,EAAEC,EAAE,CACT,yGADS,EAET;AACI,kCAA0BM,KAAK,KAAK,CAAV,IAAe,CAAC,CAACD,MAAM,CAACO;AADtD,OAFS,CAJV;AAUHpD,MAAAA,QAAQ,EAAE6C,MAAM,CAAC7C,QAVd;AAWHqD,MAAAA,IAAI,EAAER,MAAM,CAACQ,IAXV;AAYH/D,MAAAA,EAAE,EAAED,KAAK,CAACC,EAAD,EAAKuD,MAAM,CAACtD,KAAZ,CAZN;AAaH+D,MAAAA,GAAG,EAAEjE,KAAK,CAACC,EAAD,EAAKuD,MAAM,CAACtD,KAAZ,CAbP;AAcHkB,MAAAA,OAAO,EAAE,CAACT,QAAD,IAAa,CAACY,QAAd,GAAyBoB,WAAW,CAACrC,KAAD,CAApC,GAA8CkC,SAdpD;AAeHzB,MAAAA,GAAG,EAAEkB,QAAQ,CAAC3B,KAAD,CAfV;AAgBH+C,MAAAA,IAAI,EAAE,QAhBH;AAiBHa,MAAAA,KAAK,EACDT,KAAK,GAAG,CAAR,GACM;AACIU,QAAAA,WAAW,KAAKV,KAAK,GAAG;AAD5B,OADN,GAIMjB;AAtBP,KAAP;AAwBH,GA3Be,CAAhB;AA6BA,SACI3B,aAAA,KAAA,oBAAQoC;iBAAgB;IAAxB,EACKhC,OAAO,GACJJ,aAAA,KAAA;AAAIqC,IAAAA,SAAS,EAAC;GAAd,EACIrC,aAAA,OAAA,MAAA,EACIA,aAAA,CAACuD,OAAD;AAASC,IAAAA,KAAK,EAAE;GAAhB,CADJ,CADJ,EAIIxD,aAAA,OAAA,MAAA,EAAOsB,KAAK,CAACmC,OAAN,CAAcrD,OAArB,CAJJ,CADI,GAOJsC,OAAO,CAAC7C,MAAR,GACA6C,OAAO,CAACrB,GAAR,CAAY,CAAC;AAAE2B,IAAAA,QAAF;AAAYG,IAAAA,IAAZ;AAAkB,OAAGO;AAArB,GAAD,KACR1D,aAAA,KAAA,oBAAQ0D,YAAR,EACKP,IADL,EAEInD,aAAA,OAAA;AAAMqC,IAAAA,SAAS,EAAC;GAAhB,EAAgDW,QAAhD,CAFJ,EAGKlC,WAAW,IACRd,aAAA,CAAC2D,QAAD;AACIC,IAAAA,OAAO,EAAEF,WAAW,CAAC,eAAD;AACpBrD,IAAAA,QAAQ,EAAE,MAAM;AAChBgC,IAAAA,SAAS,EAAC;GAHd,CAJR,CADJ,CADA,GAeArC,aAAA,KAAA;AAAIqC,IAAAA,SAAS,EAAC;GAAd,EACIrC,aAAA,OAAA,MAAA,EAAOsB,KAAK,CAACmC,OAAN,CAAcI,KAArB,CADJ,CAvBR,CADJ;AA8BH,CAhK6B;;;;"}
@@ -1,45 +1,39 @@
1
- import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import { useMemo, useEffect } from 'react';
3
2
  import { v4 } from 'uuid';
4
3
  import { useProxiedRef } from '../../utils/hooks/useProxiedRef.js';
5
4
  import { useFlattenedData, getIndexFromValue, getActiveDescendant, setInputValueByRef, findByValue, sanitizeItem } from './util.js';
6
5
  import { useTypeahead } from './useTypeahead.js';
7
6
 
8
- var _excluded = ["data", "defaultValue", "disabled", "emptyValue", "id", "name", "onChange", "onFocus", "onKeyDown", "value"];
9
- var useListbox = function useListbox(_ref, ref) {
10
- var _ref$data = _ref.data,
11
- externalData = _ref$data === void 0 ? [] : _ref$data,
12
- defaultValue = _ref.defaultValue,
13
- disabled = _ref.disabled,
14
- emptyValue = _ref.emptyValue,
15
- nativeId = _ref.id,
16
- name = _ref.name,
17
- onChange = _ref.onChange,
18
- onFocus = _ref.onFocus,
19
- onKeyDown = _ref.onKeyDown,
20
- _ref$value = _ref.value,
21
- value = _ref$value === void 0 ? emptyValue : _ref$value,
22
- otherProps = _objectWithoutPropertiesLoose(_ref, _excluded);
23
-
24
- var data = useFlattenedData(emptyValue !== undefined ? [{
7
+ const useListbox = ({
8
+ data: externalData = [],
9
+ defaultValue,
10
+ disabled,
11
+ emptyValue,
12
+ id: nativeId,
13
+ name,
14
+ onChange,
15
+ onFocus,
16
+ onKeyDown,
17
+ value = emptyValue,
18
+ ...otherProps
19
+ }, ref) => {
20
+ const data = useFlattenedData(emptyValue !== undefined ? [{
25
21
  text: '',
26
22
  value: emptyValue
27
- }].concat(externalData) : externalData);
28
- var id = useMemo(function () {
29
- return nativeId || v4();
30
- }, [nativeId]);
31
- var inputRef = useProxiedRef(ref);
32
- var currentIndex = value !== undefined ? getIndexFromValue(data, value) : undefined;
33
-
34
- var _useTypeahead = useTypeahead({
35
- data: data,
36
- currentIndex: currentIndex
37
- }),
38
- getNextIndex = _useTypeahead.getNextIndex;
39
-
40
- var setInputValueByIndex = function setInputValueByIndex(index) {
23
+ }, ...externalData] : externalData);
24
+ const id = useMemo(() => nativeId || v4(), [nativeId]);
25
+ const inputRef = useProxiedRef(ref);
26
+ const currentIndex = value !== undefined ? getIndexFromValue(data, value) : undefined;
27
+ const {
28
+ getNextIndex
29
+ } = useTypeahead({
30
+ data,
31
+ currentIndex
32
+ });
33
+
34
+ const setInputValueByIndex = index => {
41
35
  if (index !== undefined) {
42
- var option = data[index];
36
+ const option = data[index];
43
37
 
44
38
  if (option && !option.disabled) {
45
39
  setInputValueByRef(inputRef.current, option.value);
@@ -47,14 +41,14 @@ var useListbox = function useListbox(_ref, ref) {
47
41
  }
48
42
  };
49
43
 
50
- var handleListboxChange = function handleListboxChange(index) {
44
+ const handleListboxChange = index => {
51
45
  setInputValueByIndex(index);
52
46
  };
53
47
 
54
- useEffect(function () {
48
+ useEffect(() => {
55
49
  if (data.length && currentIndex === undefined) {
56
50
  if (defaultValue !== undefined) {
57
- var defaultValueIndex = getIndexFromValue(data, defaultValue);
51
+ const defaultValueIndex = getIndexFromValue(data, defaultValue);
58
52
 
59
53
  if (defaultValueIndex !== undefined) {
60
54
  setInputValueByIndex(defaultValueIndex);
@@ -65,11 +59,11 @@ var useListbox = function useListbox(_ref, ref) {
65
59
  }
66
60
  }, [data]);
67
61
 
68
- var handleListboxKeyDown = function handleListboxKeyDown(event) {
69
- var charKey = String.fromCharCode(event.keyCode);
62
+ const handleListboxKeyDown = event => {
63
+ const charKey = String.fromCharCode(event.keyCode);
70
64
 
71
65
  if (charKey.match(/(\w)/g)) {
72
- var nextIndex = getNextIndex(charKey);
66
+ const nextIndex = getNextIndex(charKey);
73
67
 
74
68
  if (nextIndex > -1 && nextIndex !== currentIndex) {
75
69
  setInputValueByIndex(nextIndex);
@@ -84,7 +78,7 @@ var useListbox = function useListbox(_ref, ref) {
84
78
  }
85
79
  };
86
80
 
87
- var handleListboxFocus = function handleListboxFocus(event) {
81
+ const handleListboxFocus = event => {
88
82
  if (currentIndex === undefined && data.length) {
89
83
  setInputValueByIndex(0);
90
84
  }
@@ -95,26 +89,24 @@ var useListbox = function useListbox(_ref, ref) {
95
89
  }
96
90
  };
97
91
 
98
- var handleInputChange = function handleInputChange(event) {
92
+ const handleInputChange = event => {
99
93
  event.persist();
100
94
 
101
95
  if (onChange) {
102
96
  var _item$path$split, _item$path;
103
97
 
104
- var item = findByValue(data, event.target.value);
98
+ const item = findByValue(data, event.target.value);
105
99
  event.detail = sanitizeItem(item);
106
- var indexes = (_item$path$split = item === null || item === void 0 ? void 0 : (_item$path = item.path) === null || _item$path === void 0 ? void 0 : _item$path.split('.')) !== null && _item$path$split !== void 0 ? _item$path$split : [];
100
+ const indexes = (_item$path$split = item === null || item === void 0 ? void 0 : (_item$path = item.path) === null || _item$path === void 0 ? void 0 : _item$path.split('.')) !== null && _item$path$split !== void 0 ? _item$path$split : [];
107
101
 
108
102
  if (indexes.length > 1) {
109
103
  // we don't want to map the current item
110
104
  indexes.pop(); // we need to rebuild the path as we map
111
105
 
112
- var lastPath;
113
- event.detail.parents = indexes.map(function (i) {
106
+ let lastPath;
107
+ event.detail.parents = indexes.map(i => {
114
108
  lastPath = lastPath ? [lastPath, i].join('.') : i;
115
- return sanitizeItem(data.find(function (i) {
116
- return i.path === lastPath;
117
- }));
109
+ return sanitizeItem(data.find(i => i.path === lastPath));
118
110
  });
119
111
  }
120
112
 
@@ -122,29 +114,28 @@ var useListbox = function useListbox(_ref, ref) {
122
114
  }
123
115
  };
124
116
 
125
- var list = _extends({}, otherProps, {
117
+ const list = { ...otherProps,
126
118
  'aria-activedescendant': getActiveDescendant(data, currentIndex, id),
127
- data: data,
128
- disabled: disabled,
129
- id: id,
119
+ data,
120
+ disabled,
121
+ id,
130
122
  onChange: handleListboxChange,
131
123
  onFocus: handleListboxFocus,
132
124
  onKeyDown: handleListboxKeyDown,
133
125
  scrollOnFocus: true,
134
126
  tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,
135
127
  value: currentIndex
136
- });
137
-
138
- var input = {
139
- name: name,
128
+ };
129
+ const input = {
130
+ name,
140
131
  onChange: handleInputChange,
141
132
  ref: inputRef,
142
133
  tabIndex: -1,
143
134
  value: value === undefined || value === null ? '' : value
144
135
  };
145
136
  return {
146
- list: list,
147
- input: input
137
+ list,
138
+ input
148
139
  };
149
140
  };
150
141
 
@@ -1 +1 @@
1
- {"version":3,"file":"useListbox.js","sources":["../../../../src/components/Listbox/useListbox.tsx"],"sourcesContent":["import * as React from 'react';\nimport { v4 as uuid } from 'uuid';\nimport { ListboxProps } from './Listbox';\nimport { useProxiedRef } from '../../utils/hooks/useProxiedRef';\nimport { setInputValueByRef, getIndexFromValue, findByValue, getActiveDescendant, useFlattenedData, sanitizeItem } from './util';\nimport { ScrollableListProps } from './ScrollableList';\nimport { useTypeahead } from './useTypeahead';\n\ntype useListbox = {\n list: ScrollableListProps;\n input: Omit<React.HTMLAttributes<HTMLInputElement>, 'defaultValue'>;\n};\n\nexport const useListbox = (\n {\n data: externalData = [],\n defaultValue,\n disabled,\n emptyValue,\n id: nativeId,\n name,\n onChange,\n onFocus,\n onKeyDown,\n value = emptyValue,\n ...otherProps\n }: ListboxProps,\n ref: React.Ref<HTMLInputElement>\n): useListbox => {\n const data = useFlattenedData(emptyValue !== undefined ? [{ text: '', value: emptyValue }, ...externalData] : externalData);\n const id = React.useMemo(() => nativeId || uuid(), [nativeId]);\n const inputRef = useProxiedRef<HTMLInputElement>(ref);\n const currentIndex = value !== undefined ? getIndexFromValue(data, value) : undefined;\n const { getNextIndex } = useTypeahead({ data, currentIndex });\n\n const setInputValueByIndex = (index: number | undefined): void => {\n if (index !== undefined) {\n const option = data[index];\n\n if (option && !option.disabled) {\n setInputValueByRef(inputRef.current, option.value);\n }\n }\n };\n\n const handleListboxChange = (index: number): void => {\n setInputValueByIndex(index);\n };\n\n React.useEffect(() => {\n if (data.length && currentIndex === undefined) {\n if (defaultValue !== undefined) {\n const defaultValueIndex = getIndexFromValue(data, defaultValue);\n\n if (defaultValueIndex !== undefined) {\n setInputValueByIndex(defaultValueIndex);\n }\n } else {\n setInputValueByIndex(0);\n }\n }\n }, [data]);\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>): void => {\n const charKey = String.fromCharCode(event.keyCode);\n\n if (charKey.match(/(\\w)/g)) {\n const nextIndex = getNextIndex(charKey);\n\n if (nextIndex > -1 && nextIndex !== currentIndex) {\n setInputValueByIndex(nextIndex);\n }\n return;\n }\n\n if (onKeyDown) {\n event.persist();\n onKeyDown(event);\n }\n };\n\n const handleListboxFocus = (event: React.FocusEvent<HTMLElement>): void => {\n if (currentIndex === undefined && data.length) {\n setInputValueByIndex(0);\n }\n\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n event.persist();\n\n if (onChange) {\n const item = findByValue(data, event.target.value);\n (event as any).detail = sanitizeItem(item);\n\n const indexes = item?.path?.split('.') ?? [];\n\n if (indexes.length > 1) {\n // we don't want to map the current item\n indexes.pop();\n // we need to rebuild the path as we map\n let lastPath: string;\n\n (event as any).detail.parents = indexes.map(i => {\n lastPath = lastPath ? [lastPath, i].join('.') : i;\n return sanitizeItem(data.find(i => i.path === lastPath));\n });\n }\n\n onChange(event);\n }\n };\n\n const list: ScrollableListProps = {\n ...otherProps,\n 'aria-activedescendant': getActiveDescendant(data, currentIndex, id),\n data,\n disabled,\n id,\n onChange: handleListboxChange,\n onFocus: handleListboxFocus,\n onKeyDown: handleListboxKeyDown,\n scrollOnFocus: true,\n tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,\n value: currentIndex,\n };\n\n const input = {\n name,\n onChange: handleInputChange,\n ref: inputRef,\n tabIndex: -1,\n value: value === undefined || value === null ? '' : value,\n };\n\n return { list, input };\n};\n"],"names":["useListbox","ref","data","externalData","defaultValue","disabled","emptyValue","nativeId","id","name","onChange","onFocus","onKeyDown","value","otherProps","useFlattenedData","undefined","text","React","uuid","inputRef","useProxiedRef","currentIndex","getIndexFromValue","useTypeahead","getNextIndex","setInputValueByIndex","index","option","setInputValueByRef","current","handleListboxChange","length","defaultValueIndex","handleListboxKeyDown","event","charKey","String","fromCharCode","keyCode","match","nextIndex","persist","handleListboxFocus","handleInputChange","item","findByValue","target","detail","sanitizeItem","indexes","path","split","pop","lastPath","parents","map","i","join","find","list","getActiveDescendant","scrollOnFocus","tabIndex","input"],"mappings":"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"}
1
+ {"version":3,"file":"useListbox.js","sources":["../../../../src/components/Listbox/useListbox.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { ListboxProps } from './Listbox';\r\nimport { useProxiedRef } from '../../utils/hooks/useProxiedRef';\r\nimport { setInputValueByRef, getIndexFromValue, findByValue, getActiveDescendant, useFlattenedData, sanitizeItem } from './util';\r\nimport { ScrollableListProps } from './ScrollableList';\r\nimport { useTypeahead } from './useTypeahead';\r\n\r\ntype useListbox = {\r\n list: ScrollableListProps;\r\n input: Omit<React.HTMLAttributes<HTMLInputElement>, 'defaultValue'>;\r\n};\r\n\r\nexport const useListbox = (\r\n {\r\n data: externalData = [],\r\n defaultValue,\r\n disabled,\r\n emptyValue,\r\n id: nativeId,\r\n name,\r\n onChange,\r\n onFocus,\r\n onKeyDown,\r\n value = emptyValue,\r\n ...otherProps\r\n }: ListboxProps,\r\n ref: React.Ref<HTMLInputElement>\r\n): useListbox => {\r\n const data = useFlattenedData(emptyValue !== undefined ? [{ text: '', value: emptyValue }, ...externalData] : externalData);\r\n const id = React.useMemo(() => nativeId || uuid(), [nativeId]);\r\n const inputRef = useProxiedRef<HTMLInputElement>(ref);\r\n const currentIndex = value !== undefined ? getIndexFromValue(data, value) : undefined;\r\n const { getNextIndex } = useTypeahead({ data, currentIndex });\r\n\r\n const setInputValueByIndex = (index: number | undefined): void => {\r\n if (index !== undefined) {\r\n const option = data[index];\r\n\r\n if (option && !option.disabled) {\r\n setInputValueByRef(inputRef.current, option.value);\r\n }\r\n }\r\n };\r\n\r\n const handleListboxChange = (index: number): void => {\r\n setInputValueByIndex(index);\r\n };\r\n\r\n React.useEffect(() => {\r\n if (data.length && currentIndex === undefined) {\r\n if (defaultValue !== undefined) {\r\n const defaultValueIndex = getIndexFromValue(data, defaultValue);\r\n\r\n if (defaultValueIndex !== undefined) {\r\n setInputValueByIndex(defaultValueIndex);\r\n }\r\n } else {\r\n setInputValueByIndex(0);\r\n }\r\n }\r\n }, [data]);\r\n\r\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>): void => {\r\n const charKey = String.fromCharCode(event.keyCode);\r\n\r\n if (charKey.match(/(\\w)/g)) {\r\n const nextIndex = getNextIndex(charKey);\r\n\r\n if (nextIndex > -1 && nextIndex !== currentIndex) {\r\n setInputValueByIndex(nextIndex);\r\n }\r\n return;\r\n }\r\n\r\n if (onKeyDown) {\r\n event.persist();\r\n onKeyDown(event);\r\n }\r\n };\r\n\r\n const handleListboxFocus = (event: React.FocusEvent<HTMLElement>): void => {\r\n if (currentIndex === undefined && data.length) {\r\n setInputValueByIndex(0);\r\n }\r\n\r\n if (onFocus) {\r\n event.persist();\r\n onFocus(event);\r\n }\r\n };\r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\r\n event.persist();\r\n\r\n if (onChange) {\r\n const item = findByValue(data, event.target.value);\r\n (event as any).detail = sanitizeItem(item);\r\n\r\n const indexes = item?.path?.split('.') ?? [];\r\n\r\n if (indexes.length > 1) {\r\n // we don't want to map the current item\r\n indexes.pop();\r\n // we need to rebuild the path as we map\r\n let lastPath: string;\r\n\r\n (event as any).detail.parents = indexes.map(i => {\r\n lastPath = lastPath ? [lastPath, i].join('.') : i;\r\n return sanitizeItem(data.find(i => i.path === lastPath));\r\n });\r\n }\r\n\r\n onChange(event);\r\n }\r\n };\r\n\r\n const list: ScrollableListProps = {\r\n ...otherProps,\r\n 'aria-activedescendant': getActiveDescendant(data, currentIndex, id),\r\n data,\r\n disabled,\r\n id,\r\n onChange: handleListboxChange,\r\n onFocus: handleListboxFocus,\r\n onKeyDown: handleListboxKeyDown,\r\n scrollOnFocus: true,\r\n tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,\r\n value: currentIndex,\r\n };\r\n\r\n const input = {\r\n name,\r\n onChange: handleInputChange,\r\n ref: inputRef,\r\n tabIndex: -1,\r\n value: value === undefined || value === null ? '' : value,\r\n };\r\n\r\n return { list, input };\r\n};\r\n"],"names":["useListbox","data","externalData","defaultValue","disabled","emptyValue","id","nativeId","name","onChange","onFocus","onKeyDown","value","otherProps","ref","useFlattenedData","undefined","text","React","uuid","inputRef","useProxiedRef","currentIndex","getIndexFromValue","getNextIndex","useTypeahead","setInputValueByIndex","index","option","setInputValueByRef","current","handleListboxChange","length","defaultValueIndex","handleListboxKeyDown","event","charKey","String","fromCharCode","keyCode","match","nextIndex","persist","handleListboxFocus","handleInputChange","item","findByValue","target","detail","sanitizeItem","indexes","path","split","pop","lastPath","parents","map","i","join","find","list","getActiveDescendant","scrollOnFocus","tabIndex","input"],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import { useMemo, useState, useEffect } from 'react';
3
2
  import { v4 } from 'uuid';
4
3
  import { useLocalization } from '../Provider/Provider.js';
@@ -7,62 +6,46 @@ import keycode from 'keycode';
7
6
  import { getIndexFromValue, getSelectedIndexesFromValue, setInputValueByRef, getActiveDescendant, findByValue } from './util.js';
8
7
  import { useTypeahead } from './useTypeahead.js';
9
8
 
10
- var _excluded = ["data", "defaultValue", "disabled", "id", "name", "onClick", "onChange", "onFocus", "onKeyDown", "value"];
11
- var useMultiListbox = function useMultiListbox(_ref, ref) {
12
- var _ref$data = _ref.data,
13
- externalData = _ref$data === void 0 ? [] : _ref$data,
14
- defaultValue = _ref.defaultValue,
15
- disabled = _ref.disabled,
16
- nativeId = _ref.id,
17
- name = _ref.name,
18
- onClick = _ref.onClick,
19
- onChange = _ref.onChange,
20
- onFocus = _ref.onFocus,
21
- onKeyDown = _ref.onKeyDown,
22
- value = _ref.value,
23
- otherProps = _objectWithoutPropertiesLoose(_ref, _excluded);
24
-
25
- var _useLocalization = useLocalization(),
26
- texts = _useLocalization.texts;
27
-
28
- var id = useMemo(function () {
29
- return nativeId || v4();
30
- }, [nativeId]);
31
- var inputRef = useProxiedRef(ref);
32
- var data = useMemo(function () {
9
+ const useMultiListbox = ({
10
+ data: externalData = [],
11
+ defaultValue,
12
+ disabled,
13
+ id: nativeId,
14
+ name,
15
+ onClick,
16
+ onChange,
17
+ onFocus,
18
+ onKeyDown,
19
+ value,
20
+ ...otherProps
21
+ }, ref) => {
22
+ const {
23
+ texts
24
+ } = useLocalization();
25
+ const id = useMemo(() => nativeId || v4(), [nativeId]);
26
+ const inputRef = useProxiedRef(ref);
27
+ const data = useMemo(() => {
33
28
  return [{
34
29
  text: texts.listbox.allOption,
35
30
  value: '#ALL-OPTIONS#'
36
- }].concat(externalData);
31
+ }, ...externalData];
37
32
  }, [externalData]);
38
-
39
- var _React$useState = useState(getIndexFromValue(data, value) || 0),
40
- currentIndex = _React$useState[0],
41
- setCurrentIndex = _React$useState[1];
42
-
43
- var _React$useState2 = useState(false),
44
- allOptionsSelected = _React$useState2[0],
45
- setAllOptionsSelected = _React$useState2[1];
46
-
47
- var _useTypeahead = useTypeahead({
48
- data: data,
49
- currentIndex: currentIndex
50
- }),
51
- getNextIndex = _useTypeahead.getNextIndex;
52
-
53
- var _React$useState3 = useState(getSelectedIndexesFromValue(data, value)),
54
- selectedIndexes = _React$useState3[0],
55
- setSelectedIndexes = _React$useState3[1];
56
-
57
- useEffect(function () {
33
+ const [currentIndex, setCurrentIndex] = useState(getIndexFromValue(data, value) || 0);
34
+ const [allOptionsSelected, setAllOptionsSelected] = useState(false);
35
+ const {
36
+ getNextIndex
37
+ } = useTypeahead({
38
+ data,
39
+ currentIndex
40
+ });
41
+ const [selectedIndexes, setSelectedIndexes] = useState(getSelectedIndexesFromValue(data, value));
42
+ useEffect(() => {
58
43
  if (defaultValue && !value) {
59
44
  setInputValueByRef(inputRef.current, defaultValue.toString());
60
45
  }
61
46
  }, []);
62
- useEffect(function () {
63
- var selectableItemsCount = data.filter(function (item) {
64
- return !item.disabled;
65
- }).length - 1;
47
+ useEffect(() => {
48
+ const selectableItemsCount = data.filter(item => !item.disabled).length - 1;
66
49
 
67
50
  if (selectableItemsCount === selectedIndexes.length) {
68
51
  setAllOptionsSelected(true);
@@ -71,38 +54,30 @@ var useMultiListbox = function useMultiListbox(_ref, ref) {
71
54
  }
72
55
  }, [selectedIndexes, data]);
73
56
 
74
- var setInputValueByIndex = function setInputValueByIndex(index) {
57
+ const setInputValueByIndex = index => {
75
58
  if (index !== undefined) {
76
- var option = data[index];
59
+ const option = data[index];
77
60
 
78
61
  if (option && !option.disabled) {
79
62
  var _inputRef$current;
80
63
 
81
- var newInputValue = '';
82
- var currentInputValue = (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.value;
83
- var currentValuesArray = (currentInputValue === null || currentInputValue === void 0 ? void 0 : currentInputValue.split(',')) || [];
84
- var optionAlreadySelected = currentValuesArray.findIndex(function (val) {
85
- return val === String(option.value);
86
- }) !== -1; // Handling the select_all option
64
+ let newInputValue = '';
65
+ const currentInputValue = (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.value;
66
+ const currentValuesArray = (currentInputValue === null || currentInputValue === void 0 ? void 0 : currentInputValue.split(',')) || [];
67
+ const optionAlreadySelected = currentValuesArray.findIndex(val => val === String(option.value)) !== -1; // Handling the select_all option
87
68
 
88
69
  if (option.value === '#ALL-OPTIONS#') {
89
70
  if (!allOptionsSelected) {
90
- newInputValue = data.filter(function (option, index) {
91
- return index !== 0 && !option.disabled;
92
- }).map(function (option) {
93
- return option.value;
94
- }).join(',');
71
+ newInputValue = data.filter((option, index) => index !== 0 && !option.disabled).map(option => option.value).join(',');
95
72
  } else {
96
73
  newInputValue = '';
97
74
  }
98
75
  } else {
99
76
  // Handling rest options
100
77
  if (optionAlreadySelected) {
101
- newInputValue = currentValuesArray.filter(function (val) {
102
- return val !== String(option.value);
103
- }).join(',');
78
+ newInputValue = currentValuesArray.filter(val => val !== String(option.value)).join(',');
104
79
  } else {
105
- newInputValue = currentInputValue ? currentInputValue + "," + option.value : option.value;
80
+ newInputValue = currentInputValue ? `${currentInputValue},${option.value}` : option.value;
106
81
  }
107
82
  }
108
83
 
@@ -111,7 +86,7 @@ var useMultiListbox = function useMultiListbox(_ref, ref) {
111
86
  }
112
87
  };
113
88
 
114
- var handleListboxClick = function handleListboxClick(event, index) {
89
+ const handleListboxClick = (event, index) => {
115
90
  event.preventDefault();
116
91
 
117
92
  if (!data[index].disabled) {
@@ -124,11 +99,11 @@ var useMultiListbox = function useMultiListbox(_ref, ref) {
124
99
  }
125
100
  };
126
101
 
127
- var handleListboxKeyDown = function handleListboxKeyDown(event, index) {
128
- var charKey = String.fromCharCode(event.keyCode);
102
+ const handleListboxKeyDown = (event, index) => {
103
+ const charKey = String.fromCharCode(event.keyCode);
129
104
 
130
105
  if (charKey.match(/(\w)/g)) {
131
- var nextIndex = getNextIndex(charKey);
106
+ const nextIndex = getNextIndex(charKey);
132
107
 
133
108
  if (nextIndex > -1 && nextIndex !== currentIndex) {
134
109
  setCurrentIndex(nextIndex);
@@ -160,22 +135,22 @@ var useMultiListbox = function useMultiListbox(_ref, ref) {
160
135
  }
161
136
  };
162
137
 
163
- var handleListboxFocus = function handleListboxFocus(event) {
138
+ const handleListboxFocus = event => {
164
139
  if (onFocus) {
165
140
  event.persist();
166
141
  onFocus(event);
167
142
  }
168
143
  };
169
144
 
170
- var handleInputChange = function handleInputChange(event) {
145
+ const handleInputChange = event => {
171
146
  event.persist();
172
147
  setSelectedIndexes(getSelectedIndexesFromValue(data, event.target.value));
173
148
 
174
149
  if (onChange) {
175
- var detail = [];
176
- var valuesArray = event.target.value.split(',');
177
- valuesArray.forEach(function (val) {
178
- var item = findByValue(data, val);
150
+ const detail = [];
151
+ const valuesArray = event.target.value.split(',');
152
+ valuesArray.forEach(val => {
153
+ const item = findByValue(data, val);
179
154
 
180
155
  if (item) {
181
156
  detail.push(item);
@@ -186,36 +161,33 @@ var useMultiListbox = function useMultiListbox(_ref, ref) {
186
161
  }
187
162
  };
188
163
 
189
- var list = _extends({}, otherProps, {
164
+ const list = { ...otherProps,
190
165
  'aria-activedescendant': getActiveDescendant(data, currentIndex, id),
191
166
  'aria-multiselectable': true,
192
- data: data,
193
- disabled: disabled,
194
- id: id,
195
- onChange: function onChange() {
196
- return null;
197
- },
167
+ data,
168
+ disabled,
169
+ id,
170
+ onChange: () => null,
198
171
  onClick: handleListboxClick,
199
172
  onFocus: handleListboxFocus,
200
173
  onKeyDown: handleListboxKeyDown,
201
174
  scrollOnFocus: false,
202
175
  tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,
203
176
  value: currentIndex,
204
- selectedIndexes: selectedIndexes,
177
+ selectedIndexes,
205
178
  multiselect: true,
206
- allOptionsSelected: allOptionsSelected
207
- });
208
-
209
- var input = {
210
- name: name,
179
+ allOptionsSelected
180
+ };
181
+ const input = {
182
+ name,
211
183
  onChange: handleInputChange,
212
184
  ref: inputRef,
213
185
  tabIndex: -1,
214
186
  value: value !== null && value !== void 0 ? value : ''
215
187
  };
216
188
  return {
217
- list: list,
218
- input: input
189
+ list,
190
+ input
219
191
  };
220
192
  };
221
193