@economic/taco 0.0.18-alpha.0 → 0.0.21-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 (395) hide show
  1. package/README.md +84 -84
  2. package/dist/components/Dialog/components/Drawer.d.ts +2 -1
  3. package/dist/components/Dialog/components/Extra.d.ts +2 -1
  4. package/dist/components/Hanger/Hanger.d.ts +7 -3
  5. package/dist/components/Icon/components/{ExportToExcelCopy.d.ts → ExportToPdf.d.ts} +0 -0
  6. package/dist/components/Icon/components/{Thumb.d.ts → InboxEinvoicing.d.ts} +0 -0
  7. package/dist/components/Icon/components/InboxScanning.d.ts +3 -0
  8. package/dist/components/Icon/components/ThumbUp.d.ts +3 -0
  9. package/dist/components/Icon/components/index.d.ts +1 -1
  10. package/dist/components/Input/Input.d.ts +1 -1
  11. package/dist/components/Menu/Menu.d.ts +2 -2
  12. package/dist/components/Menu/components/Item.d.ts +1 -1
  13. package/dist/components/Menu/components/Link.d.ts +1 -1
  14. package/dist/esm/components/Accordion/Accordion.js.map +1 -1
  15. package/dist/esm/components/Backdrop/Backdrop.js +1 -1
  16. package/dist/esm/components/Backdrop/Backdrop.js.map +1 -1
  17. package/dist/esm/components/Badge/Badge.js.map +1 -1
  18. package/dist/esm/components/Banner/Banner.js.map +1 -1
  19. package/dist/esm/components/Banner/util.js +1 -1
  20. package/dist/esm/components/Banner/util.js.map +1 -1
  21. package/dist/esm/components/Button/Button.js.map +1 -1
  22. package/dist/esm/components/Button/util.js +23 -18
  23. package/dist/esm/components/Button/util.js.map +1 -1
  24. package/dist/esm/components/Calendar/Calendar.js.map +1 -1
  25. package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
  26. package/dist/esm/components/Combobox/Combobox.js +1 -1
  27. package/dist/esm/components/Combobox/Combobox.js.map +1 -1
  28. package/dist/esm/components/Combobox/useCombobox.js +84 -64
  29. package/dist/esm/components/Combobox/useCombobox.js.map +1 -1
  30. package/dist/esm/components/Datepicker/Datepicker.js.map +1 -1
  31. package/dist/esm/components/Datepicker/useDatepicker.js +34 -27
  32. package/dist/esm/components/Datepicker/useDatepicker.js.map +1 -1
  33. package/dist/esm/components/Dialog/Context.js +3 -3
  34. package/dist/esm/components/Dialog/Context.js.map +1 -1
  35. package/dist/esm/components/Dialog/Dialog.js +3 -3
  36. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  37. package/dist/esm/components/Dialog/components/Content.js +44 -39
  38. package/dist/esm/components/Dialog/components/Content.js.map +1 -1
  39. package/dist/esm/components/Dialog/components/Drawer.js +4 -3
  40. package/dist/esm/components/Dialog/components/Drawer.js.map +1 -1
  41. package/dist/esm/components/Dialog/components/Extra.js +3 -2
  42. package/dist/esm/components/Dialog/components/Extra.js.map +1 -1
  43. package/dist/esm/components/Dialog/components/Trigger.js +2 -2
  44. package/dist/esm/components/Dialog/components/Trigger.js.map +1 -1
  45. package/dist/esm/components/Field/Field.js.map +1 -1
  46. package/dist/esm/components/Form/Form.js.map +1 -1
  47. package/dist/esm/components/Group/Group.js.map +1 -1
  48. package/dist/esm/components/Hanger/Hanger.js +7 -3
  49. package/dist/esm/components/Hanger/Hanger.js.map +1 -1
  50. package/dist/esm/components/Icon/Icon.js.map +1 -1
  51. package/dist/esm/components/Icon/components/AccountPreview.js.map +1 -1
  52. package/dist/esm/components/Icon/components/Accounting.js.map +1 -1
  53. package/dist/esm/components/Icon/components/AccountingYear.js.map +1 -1
  54. package/dist/esm/components/Icon/components/AccountingYearCancel.js.map +1 -1
  55. package/dist/esm/components/Icon/components/ArrowBottom.js.map +1 -1
  56. package/dist/esm/components/Icon/components/ArrowDown.js.map +1 -1
  57. package/dist/esm/components/Icon/components/ArrowEnd.js.map +1 -1
  58. package/dist/esm/components/Icon/components/ArrowLeft.js.map +1 -1
  59. package/dist/esm/components/Icon/components/ArrowRight.js.map +1 -1
  60. package/dist/esm/components/Icon/components/ArrowStart.js.map +1 -1
  61. package/dist/esm/components/Icon/components/ArrowTop.js.map +1 -1
  62. package/dist/esm/components/Icon/components/ArrowUp.js.map +1 -1
  63. package/dist/esm/components/Icon/components/Attach.js.map +1 -1
  64. package/dist/esm/components/Icon/components/AttachAuto.js.map +1 -1
  65. package/dist/esm/components/Icon/components/AttachCancel.js.map +1 -1
  66. package/dist/esm/components/Icon/components/Autotext.js.map +1 -1
  67. package/dist/esm/components/Icon/components/AutotextInsert.js.map +1 -1
  68. package/dist/esm/components/Icon/components/Basic.js.map +1 -1
  69. package/dist/esm/components/Icon/components/BasicTabs.js.map +1 -1
  70. package/dist/esm/components/Icon/components/BellSolid.js.map +1 -1
  71. package/dist/esm/components/Icon/components/Book.js.map +1 -1
  72. package/dist/esm/components/Icon/components/Booking.js.map +1 -1
  73. package/dist/esm/components/Icon/components/Budget.js.map +1 -1
  74. package/dist/esm/components/Icon/components/Calendar.js.map +1 -1
  75. package/dist/esm/components/Icon/components/CashAccount.js.map +1 -1
  76. package/dist/esm/components/Icon/components/CashReports.js.map +1 -1
  77. package/dist/esm/components/Icon/components/Chat.js.map +1 -1
  78. package/dist/esm/components/Icon/components/ChatSolid.js.map +1 -1
  79. package/dist/esm/components/Icon/components/ChevronDown.js.map +1 -1
  80. package/dist/esm/components/Icon/components/ChevronDownDouble.js.map +1 -1
  81. package/dist/esm/components/Icon/components/ChevronDownSolid.js.map +1 -1
  82. package/dist/esm/components/Icon/components/ChevronLeft.js.map +1 -1
  83. package/dist/esm/components/Icon/components/ChevronLeftDouble.js.map +1 -1
  84. package/dist/esm/components/Icon/components/ChevronRight.js.map +1 -1
  85. package/dist/esm/components/Icon/components/ChevronRightDouble.js.map +1 -1
  86. package/dist/esm/components/Icon/components/ChevronUp.js.map +1 -1
  87. package/dist/esm/components/Icon/components/ChevronUpDouble.js.map +1 -1
  88. package/dist/esm/components/Icon/components/ChevronUpSolid.js.map +1 -1
  89. package/dist/esm/components/Icon/components/Clamp.js.map +1 -1
  90. package/dist/esm/components/Icon/components/ClampOpen.js.map +1 -1
  91. package/dist/esm/components/Icon/components/Close.js.map +1 -1
  92. package/dist/esm/components/Icon/components/ConnectionEnable.js.map +1 -1
  93. package/dist/esm/components/Icon/components/ConnectionRevoke.js.map +1 -1
  94. package/dist/esm/components/Icon/components/Contacts.js.map +1 -1
  95. package/dist/esm/components/Icon/components/Copy.js.map +1 -1
  96. package/dist/esm/components/Icon/components/Courses.js.map +1 -1
  97. package/dist/esm/components/Icon/components/Credit.js.map +1 -1
  98. package/dist/esm/components/Icon/components/Delete.js.map +1 -1
  99. package/dist/esm/components/Icon/components/DeletePermanently.js.map +1 -1
  100. package/dist/esm/components/Icon/components/Depecriate.js.map +1 -1
  101. package/dist/esm/components/Icon/components/Developer.js.map +1 -1
  102. package/dist/esm/components/Icon/components/DistributionTemplate.js.map +1 -1
  103. package/dist/esm/components/Icon/components/Document.js.map +1 -1
  104. package/dist/esm/components/Icon/components/DocumentApprove.js.map +1 -1
  105. package/dist/esm/components/Icon/components/DocumentCreateEntry.js.map +1 -1
  106. package/dist/esm/components/Icon/components/DocumentCut.js.map +1 -1
  107. package/dist/esm/components/Icon/components/DocumentError.js.map +1 -1
  108. package/dist/esm/components/Icon/components/DocumentIsolatePage.js.map +1 -1
  109. package/dist/esm/components/Icon/components/DocumentMerge.js.map +1 -1
  110. package/dist/esm/components/Icon/components/DocumentMove.js.map +1 -1
  111. package/dist/esm/components/Icon/components/DocumentPreview.js.map +1 -1
  112. package/dist/esm/components/Icon/components/DocumentReceived.js.map +1 -1
  113. package/dist/esm/components/Icon/components/DocumentRejectedRequest.js.map +1 -1
  114. package/dist/esm/components/Icon/components/DocumentSplit.js.map +1 -1
  115. package/dist/esm/components/Icon/components/DocumentTime.js.map +1 -1
  116. package/dist/esm/components/Icon/components/Download.js.map +1 -1
  117. package/dist/esm/components/Icon/components/Drag.js.map +1 -1
  118. package/dist/esm/components/Icon/components/ECopedia.js.map +1 -1
  119. package/dist/esm/components/Icon/components/ESignature.js.map +1 -1
  120. package/dist/esm/components/Icon/components/Edit.js.map +1 -1
  121. package/dist/esm/components/Icon/components/EllipsisHorizontal.js.map +1 -1
  122. package/dist/esm/components/Icon/components/EllipsisVertical.js.map +1 -1
  123. package/dist/esm/components/Icon/components/EntriesOnAccount.js.map +1 -1
  124. package/dist/esm/components/Icon/components/EntriesOpen.js.map +1 -1
  125. package/dist/esm/components/Icon/components/EntriesWarning.js.map +1 -1
  126. package/dist/esm/components/Icon/components/EntryTypeCustomerInvoice.js.map +1 -1
  127. package/dist/esm/components/Icon/components/EntryTypeCustomerPayment.js.map +1 -1
  128. package/dist/esm/components/Icon/components/EntryTypeJournalEntry.js.map +1 -1
  129. package/dist/esm/components/Icon/components/EntryTypeManualCustomerInvoice.js.map +1 -1
  130. package/dist/esm/components/Icon/components/EntryTypeSupplierInvoice.js.map +1 -1
  131. package/dist/esm/components/Icon/components/EntryTypeSupplierPayment.js.map +1 -1
  132. package/dist/esm/components/Icon/components/Envelope.js.map +1 -1
  133. package/dist/esm/components/Icon/components/EnvelopeApproved.js.map +1 -1
  134. package/dist/esm/components/Icon/components/ExpandView.js.map +1 -1
  135. package/dist/esm/components/Icon/components/Expenses.js.map +1 -1
  136. package/dist/esm/components/Icon/components/Export.js.map +1 -1
  137. package/dist/esm/components/Icon/components/ExportToExcel.js.map +1 -1
  138. package/dist/esm/components/Icon/components/{ExportToExcelCopy.js → ExportToPdf.js} +4 -4
  139. package/dist/esm/components/Icon/components/ExportToPdf.js.map +1 -0
  140. package/dist/esm/components/Icon/components/Filter.js.map +1 -1
  141. package/dist/esm/components/Icon/components/FilterSolid.js.map +1 -1
  142. package/dist/esm/components/Icon/components/GraphSolid.js.map +1 -1
  143. package/dist/esm/components/Icon/components/Hash.js.map +1 -1
  144. package/dist/esm/components/Icon/components/Home.js.map +1 -1
  145. package/dist/esm/components/Icon/components/Images.js.map +1 -1
  146. package/dist/esm/components/Icon/components/Import.js.map +1 -1
  147. package/dist/esm/components/Icon/components/Inbox.js +5 -3
  148. package/dist/esm/components/Icon/components/Inbox.js.map +1 -1
  149. package/dist/esm/components/Icon/components/InboxEinvoicing.js +20 -0
  150. package/dist/esm/components/Icon/components/InboxEinvoicing.js.map +1 -0
  151. package/dist/esm/components/Icon/components/InboxScanning.js +20 -0
  152. package/dist/esm/components/Icon/components/InboxScanning.js.map +1 -0
  153. package/dist/esm/components/Icon/components/InboxSmart.js +5 -3
  154. package/dist/esm/components/Icon/components/InboxSmart.js.map +1 -1
  155. package/dist/esm/components/Icon/components/Info.js.map +1 -1
  156. package/dist/esm/components/Icon/components/Inventory.js.map +1 -1
  157. package/dist/esm/components/Icon/components/InventoryMatrix.js.map +1 -1
  158. package/dist/esm/components/Icon/components/JournalPro.js.map +1 -1
  159. package/dist/esm/components/Icon/components/Layout.js.map +1 -1
  160. package/dist/esm/components/Icon/components/LayoutBoth.js.map +1 -1
  161. package/dist/esm/components/Icon/components/LayoutFirst.js.map +1 -1
  162. package/dist/esm/components/Icon/components/LayoutLast.js.map +1 -1
  163. package/dist/esm/components/Icon/components/LayoutNone.js.map +1 -1
  164. package/dist/esm/components/Icon/components/LedgerCard.js.map +1 -1
  165. package/dist/esm/components/Icon/components/LedgerCardCustomerReminder.js.map +1 -1
  166. package/dist/esm/components/Icon/components/LedgerCardManualCustomerInvoice.js.map +1 -1
  167. package/dist/esm/components/Icon/components/LedgerCardObsoleteStock.js.map +1 -1
  168. package/dist/esm/components/Icon/components/LedgerCardOpeningEntry.js.map +1 -1
  169. package/dist/esm/components/Icon/components/LedgerCardReservedEntry.js.map +1 -1
  170. package/dist/esm/components/Icon/components/LedgerCardShrinkagePilferage.js.map +1 -1
  171. package/dist/esm/components/Icon/components/LedgerCardStockAdjustment.js.map +1 -1
  172. package/dist/esm/components/Icon/components/LedgerCardTransferredOpeningEntry.js.map +1 -1
  173. package/dist/esm/components/Icon/components/Lightbulb.js.map +1 -1
  174. package/dist/esm/components/Icon/components/Line.js.map +1 -1
  175. package/dist/esm/components/Icon/components/List.js.map +1 -1
  176. package/dist/esm/components/Icon/components/ListBulleted.js.map +1 -1
  177. package/dist/esm/components/Icon/components/ListSearch.js.map +1 -1
  178. package/dist/esm/components/Icon/components/LockOpen.js.map +1 -1
  179. package/dist/esm/components/Icon/components/Log.js.map +1 -1
  180. package/dist/esm/components/Icon/components/Market.js.map +1 -1
  181. package/dist/esm/components/Icon/components/MatchAmount.js.map +1 -1
  182. package/dist/esm/components/Icon/components/MatchEntries.js.map +1 -1
  183. package/dist/esm/components/Icon/components/Mileage.js.map +1 -1
  184. package/dist/esm/components/Icon/components/Minus.js.map +1 -1
  185. package/dist/esm/components/Icon/components/ModalResize.js.map +1 -1
  186. package/dist/esm/components/Icon/components/ModalShrink.js.map +1 -1
  187. package/dist/esm/components/Icon/components/More.js.map +1 -1
  188. package/dist/esm/components/Icon/components/MoreSolid.js.map +1 -1
  189. package/dist/esm/components/Icon/components/Move.js.map +1 -1
  190. package/dist/esm/components/Icon/components/NavigationList.js.map +1 -1
  191. package/dist/esm/components/Icon/components/Note.js.map +1 -1
  192. package/dist/esm/components/Icon/components/NoteFollowUp.js.map +1 -1
  193. package/dist/esm/components/Icon/components/NoteRead.js.map +1 -1
  194. package/dist/esm/components/Icon/components/PartnerApi.js.map +1 -1
  195. package/dist/esm/components/Icon/components/Period.js.map +1 -1
  196. package/dist/esm/components/Icon/components/PersonChange.js.map +1 -1
  197. package/dist/esm/components/Icon/components/PersonMinus.js.map +1 -1
  198. package/dist/esm/components/Icon/components/PersonPlus.js.map +1 -1
  199. package/dist/esm/components/Icon/components/PersonTick.js.map +1 -1
  200. package/dist/esm/components/Icon/components/Play.js.map +1 -1
  201. package/dist/esm/components/Icon/components/PlusCircle.js.map +1 -1
  202. package/dist/esm/components/Icon/components/PlusMinus.js.map +1 -1
  203. package/dist/esm/components/Icon/components/Print.js.map +1 -1
  204. package/dist/esm/components/Icon/components/ProcessPayment.js.map +1 -1
  205. package/dist/esm/components/Icon/components/ProductLedgerCard.js.map +1 -1
  206. package/dist/esm/components/Icon/components/ProjectCards.js.map +1 -1
  207. package/dist/esm/components/Icon/components/Projects.js.map +1 -1
  208. package/dist/esm/components/Icon/components/Quicklinks.js.map +1 -1
  209. package/dist/esm/components/Icon/components/RatingBankruptcy.js.map +1 -1
  210. package/dist/esm/components/Icon/components/RatingPaymentProblems.js.map +1 -1
  211. package/dist/esm/components/Icon/components/Reconciled.js.map +1 -1
  212. package/dist/esm/components/Icon/components/Refresh.js.map +1 -1
  213. package/dist/esm/components/Icon/components/Report.js.map +1 -1
  214. package/dist/esm/components/Icon/components/ReportSolid.js.map +1 -1
  215. package/dist/esm/components/Icon/components/Restore.js.map +1 -1
  216. package/dist/esm/components/Icon/components/RotateLeft.js.map +1 -1
  217. package/dist/esm/components/Icon/components/RotateRight.js.map +1 -1
  218. package/dist/esm/components/Icon/components/Sales.js.map +1 -1
  219. package/dist/esm/components/Icon/components/Search.js.map +1 -1
  220. package/dist/esm/components/Icon/components/SearchBold.js.map +1 -1
  221. package/dist/esm/components/Icon/components/Secure.js.map +1 -1
  222. package/dist/esm/components/Icon/components/SecureTick.js.map +1 -1
  223. package/dist/esm/components/Icon/components/Settings.js.map +1 -1
  224. package/dist/esm/components/Icon/components/SettingsSolid.js.map +1 -1
  225. package/dist/esm/components/Icon/components/Shortcuts.js.map +1 -1
  226. package/dist/esm/components/Icon/components/ShowAll.js.map +1 -1
  227. package/dist/esm/components/Icon/components/ShowLess.js.map +1 -1
  228. package/dist/esm/components/Icon/components/ShowMore.js.map +1 -1
  229. package/dist/esm/components/Icon/components/ShowTemplate.js.map +1 -1
  230. package/dist/esm/components/Icon/components/Sliders.js.map +1 -1
  231. package/dist/esm/components/Icon/components/Smartpay.js.map +1 -1
  232. package/dist/esm/components/Icon/components/SortBy.js.map +1 -1
  233. package/dist/esm/components/Icon/components/Spinner.js.map +1 -1
  234. package/dist/esm/components/Icon/components/Star.js.map +1 -1
  235. package/dist/esm/components/Icon/components/StarSolid.js.map +1 -1
  236. package/dist/esm/components/Icon/components/Subscriptions.js.map +1 -1
  237. package/dist/esm/components/Icon/components/SystemEntries.js.map +1 -1
  238. package/dist/esm/components/Icon/components/Tag.js.map +1 -1
  239. package/dist/esm/components/Icon/components/TemplateOverride.js.map +1 -1
  240. package/dist/esm/components/Icon/components/Templates.js.map +1 -1
  241. package/dist/esm/components/Icon/components/ThumbBoth.js.map +1 -1
  242. package/dist/esm/components/Icon/components/ThumbDown.js.map +1 -1
  243. package/dist/esm/components/Icon/components/ThumbDownSolid.js.map +1 -1
  244. package/dist/esm/components/Icon/components/{Thumb.js → ThumbUp.js} +4 -4
  245. package/dist/esm/components/Icon/components/ThumbUp.js.map +1 -0
  246. package/dist/esm/components/Icon/components/ThumbUpSolid.js.map +1 -1
  247. package/dist/esm/components/Icon/components/Tick.js.map +1 -1
  248. package/dist/esm/components/Icon/components/TickCircle.js.map +1 -1
  249. package/dist/esm/components/Icon/components/Time.js.map +1 -1
  250. package/dist/esm/components/Icon/components/Transfer.js.map +1 -1
  251. package/dist/esm/components/Icon/components/TransferCancel.js.map +1 -1
  252. package/dist/esm/components/Icon/components/TransferLocked.js.map +1 -1
  253. package/dist/esm/components/Icon/components/Undock.js.map +1 -1
  254. package/dist/esm/components/Icon/components/Unreconciled.js.map +1 -1
  255. package/dist/esm/components/Icon/components/Warning.js.map +1 -1
  256. package/dist/esm/components/Icon/components/Webshop.js.map +1 -1
  257. package/dist/esm/components/Icon/components/Website.js.map +1 -1
  258. package/dist/esm/components/Icon/components/Workflow.js.map +1 -1
  259. package/dist/esm/components/Icon/components/Zoom.js.map +1 -1
  260. package/dist/esm/components/Icon/components/index.js +12 -8
  261. package/dist/esm/components/Icon/components/index.js.map +1 -1
  262. package/dist/esm/components/IconButton/IconButton.js.map +1 -1
  263. package/dist/esm/components/Input/Input.js.map +1 -1
  264. package/dist/esm/components/Input/util.js +8 -9
  265. package/dist/esm/components/Input/util.js.map +1 -1
  266. package/dist/esm/components/Listbox/Listbox.js.map +1 -1
  267. package/dist/esm/components/Listbox/ScrollableList.js +82 -63
  268. package/dist/esm/components/Listbox/ScrollableList.js.map +1 -1
  269. package/dist/esm/components/Listbox/useListbox.js +58 -49
  270. package/dist/esm/components/Listbox/useListbox.js.map +1 -1
  271. package/dist/esm/components/Listbox/useMultiListbox.js +91 -63
  272. package/dist/esm/components/Listbox/useMultiListbox.js.map +1 -1
  273. package/dist/esm/components/Listbox/useTypeahead.js +9 -10
  274. package/dist/esm/components/Listbox/useTypeahead.js.map +1 -1
  275. package/dist/esm/components/Listbox/util.js +84 -48
  276. package/dist/esm/components/Listbox/util.js.map +1 -1
  277. package/dist/esm/components/Menu/Context.js +2 -2
  278. package/dist/esm/components/Menu/Context.js.map +1 -1
  279. package/dist/esm/components/Menu/Menu.js +1 -0
  280. package/dist/esm/components/Menu/Menu.js.map +1 -1
  281. package/dist/esm/components/Menu/components/Checkbox.js +9 -8
  282. package/dist/esm/components/Menu/components/Checkbox.js.map +1 -1
  283. package/dist/esm/components/Menu/components/Content.js +13 -10
  284. package/dist/esm/components/Menu/components/Content.js.map +1 -1
  285. package/dist/esm/components/Menu/components/Header.js +4 -4
  286. package/dist/esm/components/Menu/components/Header.js.map +1 -1
  287. package/dist/esm/components/Menu/components/Item.js +35 -34
  288. package/dist/esm/components/Menu/components/Item.js.map +1 -1
  289. package/dist/esm/components/Menu/components/Link.js +11 -10
  290. package/dist/esm/components/Menu/components/Link.js.map +1 -1
  291. package/dist/esm/components/Menu/components/RadioGroup.js +18 -16
  292. package/dist/esm/components/Menu/components/RadioGroup.js.map +1 -1
  293. package/dist/esm/components/Menu/components/Separator.js +4 -4
  294. package/dist/esm/components/Menu/components/Separator.js.map +1 -1
  295. package/dist/esm/components/Menu/components/Trigger.js +5 -5
  296. package/dist/esm/components/Menu/components/Trigger.js.map +1 -1
  297. package/dist/esm/components/Navigation/Navigation.js.map +1 -1
  298. package/dist/esm/components/Pagination/PageNumbers.js +28 -23
  299. package/dist/esm/components/Pagination/PageNumbers.js.map +1 -1
  300. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  301. package/dist/esm/components/Pagination/usePagination.js +21 -7
  302. package/dist/esm/components/Pagination/usePagination.js.map +1 -1
  303. package/dist/esm/components/Pagination/usePaginationShortcuts.js +9 -9
  304. package/dist/esm/components/Pagination/usePaginationShortcuts.js.map +1 -1
  305. package/dist/esm/components/Popover/Popover.js.map +1 -1
  306. package/dist/esm/components/Popover/Primitives.js +8 -10
  307. package/dist/esm/components/Popover/Primitives.js.map +1 -1
  308. package/dist/esm/components/Progress/Progress.js.map +1 -1
  309. package/dist/esm/components/Provider/Provider.js.map +1 -1
  310. package/dist/esm/components/RadioGroup/RadioGroup.js.map +1 -1
  311. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  312. package/dist/esm/components/Select/Select.js.map +1 -1
  313. package/dist/esm/components/Select/useSelect.js +82 -63
  314. package/dist/esm/components/Select/useSelect.js.map +1 -1
  315. package/dist/esm/components/Spinner/Spinner.js.map +1 -1
  316. package/dist/esm/components/Switch/Switch.js.map +1 -1
  317. package/dist/esm/components/Table/components/BaseTable.js +30 -23
  318. package/dist/esm/components/Table/components/BaseTable.js.map +1 -1
  319. package/dist/esm/components/Table/components/PaginatedTable.js +7 -3
  320. package/dist/esm/components/Table/components/PaginatedTable.js.map +1 -1
  321. package/dist/esm/components/Table/components/Table.js +25 -18
  322. package/dist/esm/components/Table/components/Table.js.map +1 -1
  323. package/dist/esm/components/Table/components/WindowedTable.js +104 -88
  324. package/dist/esm/components/Table/components/WindowedTable.js.map +1 -1
  325. package/dist/esm/components/Table/hooks/plugins/useRowActions.js +146 -122
  326. package/dist/esm/components/Table/hooks/plugins/useRowActions.js.map +1 -1
  327. package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js +61 -57
  328. package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js.map +1 -1
  329. package/dist/esm/components/Table/hooks/plugins/useRowEditing.js +36 -39
  330. package/dist/esm/components/Table/hooks/plugins/useRowEditing.js.map +1 -1
  331. package/dist/esm/components/Table/hooks/plugins/useRowSelect.js +90 -80
  332. package/dist/esm/components/Table/hooks/plugins/useRowSelect.js.map +1 -1
  333. package/dist/esm/components/Table/hooks/useRowCreation.js +64 -29
  334. package/dist/esm/components/Table/hooks/useRowCreation.js.map +1 -1
  335. package/dist/esm/components/Table/hooks/useTable.js +141 -119
  336. package/dist/esm/components/Table/hooks/useTable.js.map +1 -1
  337. package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js +15 -12
  338. package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js.map +1 -1
  339. package/dist/esm/components/Table/util/renderColumn.js +10 -10
  340. package/dist/esm/components/Table/util/renderColumn.js.map +1 -1
  341. package/dist/esm/components/Table/util/renderRow.js +46 -37
  342. package/dist/esm/components/Table/util/renderRow.js.map +1 -1
  343. package/dist/esm/components/Table/util/rowIndexPath.js +16 -14
  344. package/dist/esm/components/Table/util/rowIndexPath.js.map +1 -1
  345. package/dist/esm/components/Table/util/sortTypes.js +31 -23
  346. package/dist/esm/components/Table/util/sortTypes.js.map +1 -1
  347. package/dist/esm/components/Table/util.js +41 -29
  348. package/dist/esm/components/Table/util.js.map +1 -1
  349. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  350. package/dist/esm/components/Textarea/Textarea.js +1 -0
  351. package/dist/esm/components/Textarea/Textarea.js.map +1 -1
  352. package/dist/esm/components/Toast/Toast.js +21 -20
  353. package/dist/esm/components/Toast/Toast.js.map +1 -1
  354. package/dist/esm/components/Toast/Toaster.js +3 -2
  355. package/dist/esm/components/Toast/Toaster.js.map +1 -1
  356. package/dist/esm/components/Toast/util.js +2 -2
  357. package/dist/esm/components/Toast/util.js.map +1 -1
  358. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  359. package/dist/esm/components/Tour/Tour.js.map +1 -1
  360. package/dist/esm/components/Treeview/Treeview.js.map +1 -1
  361. package/dist/esm/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  362. package/dist/esm/index.css +642 -642
  363. package/dist/esm/index.js +1 -1
  364. package/dist/esm/primitives/Button.js +13 -9
  365. package/dist/esm/primitives/Button.js.map +1 -1
  366. package/dist/esm/utils/date.js.map +1 -1
  367. package/dist/esm/utils/hooks/useBoundingClientRectListener.js.map +1 -1
  368. package/dist/esm/utils/hooks/useDraggable.js +18 -16
  369. package/dist/esm/utils/hooks/useDraggable.js.map +1 -1
  370. package/dist/esm/utils/hooks/useDropTarget.js +10 -7
  371. package/dist/esm/utils/hooks/useDropTarget.js.map +1 -1
  372. package/dist/esm/utils/hooks/useListKeyboardNavigation.js.map +1 -1
  373. package/dist/esm/utils/hooks/useListScrollTo.js.map +1 -1
  374. package/dist/esm/utils/hooks/useOnClickOutside.js.map +1 -1
  375. package/dist/esm/utils/hooks/useProxiedRef.js +3 -3
  376. package/dist/esm/utils/hooks/useProxiedRef.js.map +1 -1
  377. package/dist/esm/utils/hooks/useTimer.js +17 -9
  378. package/dist/esm/utils/hooks/useTimer.js.map +1 -1
  379. package/dist/esm/utils/input.js +11 -7
  380. package/dist/esm/utils/input.js.map +1 -1
  381. package/dist/esm/utils/mergeRefs.js +2 -2
  382. package/dist/esm/utils/mergeRefs.js.map +1 -1
  383. package/dist/esm/utils/taillwind.js +2 -2
  384. package/dist/esm/utils/taillwind.js.map +1 -1
  385. package/dist/index.css +642 -642
  386. package/dist/taco.cjs.development.js +1891 -1519
  387. package/dist/taco.cjs.development.js.map +1 -1
  388. package/dist/taco.cjs.production.min.js +1 -1
  389. package/dist/taco.cjs.production.min.js.map +1 -1
  390. package/package.json +2 -2
  391. package/plugins/tailwindcss-aria-attributes.js +73 -73
  392. package/tailwind.config.js +297 -297
  393. package/types.json +390 -408
  394. package/dist/esm/components/Icon/components/ExportToExcelCopy.js.map +0 -1
  395. package/dist/esm/components/Icon/components/Thumb.js.map +0 -1
@@ -1 +1 @@
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":"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"}
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,39 +1,45 @@
1
+ import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import { useMemo, useEffect } from 'react';
2
3
  import { v4 } from 'uuid';
3
4
  import { useProxiedRef } from '../../utils/hooks/useProxiedRef.js';
4
5
  import { useFlattenedData, getIndexFromValue, getActiveDescendant, setInputValueByRef, findByValue, sanitizeItem } from './util.js';
5
6
  import { useTypeahead } from './useTypeahead.js';
6
7
 
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 ? [{
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 ? [{
21
25
  text: '',
22
26
  value: emptyValue
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 => {
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) {
35
41
  if (index !== undefined) {
36
- const option = data[index];
42
+ var option = data[index];
37
43
 
38
44
  if (option && !option.disabled) {
39
45
  setInputValueByRef(inputRef.current, option.value);
@@ -41,14 +47,14 @@ const useListbox = ({
41
47
  }
42
48
  };
43
49
 
44
- const handleListboxChange = index => {
50
+ var handleListboxChange = function handleListboxChange(index) {
45
51
  setInputValueByIndex(index);
46
52
  };
47
53
 
48
- useEffect(() => {
54
+ useEffect(function () {
49
55
  if (data.length && currentIndex === undefined) {
50
56
  if (defaultValue !== undefined) {
51
- const defaultValueIndex = getIndexFromValue(data, defaultValue);
57
+ var defaultValueIndex = getIndexFromValue(data, defaultValue);
52
58
 
53
59
  if (defaultValueIndex !== undefined) {
54
60
  setInputValueByIndex(defaultValueIndex);
@@ -59,11 +65,11 @@ const useListbox = ({
59
65
  }
60
66
  }, [data]);
61
67
 
62
- const handleListboxKeyDown = event => {
63
- const charKey = String.fromCharCode(event.keyCode);
68
+ var handleListboxKeyDown = function handleListboxKeyDown(event) {
69
+ var charKey = String.fromCharCode(event.keyCode);
64
70
 
65
71
  if (charKey.match(/(\w)/g)) {
66
- const nextIndex = getNextIndex(charKey);
72
+ var nextIndex = getNextIndex(charKey);
67
73
 
68
74
  if (nextIndex > -1 && nextIndex !== currentIndex) {
69
75
  setInputValueByIndex(nextIndex);
@@ -78,7 +84,7 @@ const useListbox = ({
78
84
  }
79
85
  };
80
86
 
81
- const handleListboxFocus = event => {
87
+ var handleListboxFocus = function handleListboxFocus(event) {
82
88
  if (currentIndex === undefined && data.length) {
83
89
  setInputValueByIndex(0);
84
90
  }
@@ -89,24 +95,26 @@ const useListbox = ({
89
95
  }
90
96
  };
91
97
 
92
- const handleInputChange = event => {
98
+ var handleInputChange = function handleInputChange(event) {
93
99
  event.persist();
94
100
 
95
101
  if (onChange) {
96
102
  var _item$path$split, _item$path;
97
103
 
98
- const item = findByValue(data, event.target.value);
104
+ var item = findByValue(data, event.target.value);
99
105
  event.detail = sanitizeItem(item);
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 : [];
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 : [];
101
107
 
102
108
  if (indexes.length > 1) {
103
109
  // we don't want to map the current item
104
110
  indexes.pop(); // we need to rebuild the path as we map
105
111
 
106
- let lastPath;
107
- event.detail.parents = indexes.map(i => {
112
+ var lastPath;
113
+ event.detail.parents = indexes.map(function (i) {
108
114
  lastPath = lastPath ? [lastPath, i].join('.') : i;
109
- return sanitizeItem(data.find(i => i.path === lastPath));
115
+ return sanitizeItem(data.find(function (i) {
116
+ return i.path === lastPath;
117
+ }));
110
118
  });
111
119
  }
112
120
 
@@ -114,28 +122,29 @@ const useListbox = ({
114
122
  }
115
123
  };
116
124
 
117
- const list = { ...otherProps,
125
+ var list = _extends({}, otherProps, {
118
126
  'aria-activedescendant': getActiveDescendant(data, currentIndex, id),
119
- data,
120
- disabled,
121
- id,
127
+ data: data,
128
+ disabled: disabled,
129
+ id: id,
122
130
  onChange: handleListboxChange,
123
131
  onFocus: handleListboxFocus,
124
132
  onKeyDown: handleListboxKeyDown,
125
133
  scrollOnFocus: true,
126
134
  tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,
127
135
  value: currentIndex
128
- };
129
- const input = {
130
- name,
136
+ });
137
+
138
+ var input = {
139
+ name: name,
131
140
  onChange: handleInputChange,
132
141
  ref: inputRef,
133
142
  tabIndex: -1,
134
143
  value: value === undefined || value === null ? '' : value
135
144
  };
136
145
  return {
137
- list,
138
- input
146
+ list: list,
147
+ input: input
139
148
  };
140
149
  };
141
150
 
@@ -1 +1 @@
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
+ {"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,3 +1,4 @@
1
+ import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import { useMemo, useState, useEffect } from 'react';
2
3
  import { v4 } from 'uuid';
3
4
  import { useLocalization } from '../Provider/Provider.js';
@@ -6,46 +7,62 @@ import keycode from 'keycode';
6
7
  import { getIndexFromValue, getSelectedIndexesFromValue, setInputValueByRef, getActiveDescendant, findByValue } from './util.js';
7
8
  import { useTypeahead } from './useTypeahead.js';
8
9
 
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(() => {
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 () {
28
33
  return [{
29
34
  text: texts.listbox.allOption,
30
35
  value: '#ALL-OPTIONS#'
31
- }, ...externalData];
36
+ }].concat(externalData);
32
37
  }, [externalData]);
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(() => {
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 () {
43
58
  if (defaultValue && !value) {
44
59
  setInputValueByRef(inputRef.current, defaultValue.toString());
45
60
  }
46
61
  }, []);
47
- useEffect(() => {
48
- const selectableItemsCount = data.filter(item => !item.disabled).length - 1;
62
+ useEffect(function () {
63
+ var selectableItemsCount = data.filter(function (item) {
64
+ return !item.disabled;
65
+ }).length - 1;
49
66
 
50
67
  if (selectableItemsCount === selectedIndexes.length) {
51
68
  setAllOptionsSelected(true);
@@ -54,30 +71,38 @@ const useMultiListbox = ({
54
71
  }
55
72
  }, [selectedIndexes, data]);
56
73
 
57
- const setInputValueByIndex = index => {
74
+ var setInputValueByIndex = function setInputValueByIndex(index) {
58
75
  if (index !== undefined) {
59
- const option = data[index];
76
+ var option = data[index];
60
77
 
61
78
  if (option && !option.disabled) {
62
79
  var _inputRef$current;
63
80
 
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
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
68
87
 
69
88
  if (option.value === '#ALL-OPTIONS#') {
70
89
  if (!allOptionsSelected) {
71
- newInputValue = data.filter((option, index) => index !== 0 && !option.disabled).map(option => option.value).join(',');
90
+ newInputValue = data.filter(function (option, index) {
91
+ return index !== 0 && !option.disabled;
92
+ }).map(function (option) {
93
+ return option.value;
94
+ }).join(',');
72
95
  } else {
73
96
  newInputValue = '';
74
97
  }
75
98
  } else {
76
99
  // Handling rest options
77
100
  if (optionAlreadySelected) {
78
- newInputValue = currentValuesArray.filter(val => val !== String(option.value)).join(',');
101
+ newInputValue = currentValuesArray.filter(function (val) {
102
+ return val !== String(option.value);
103
+ }).join(',');
79
104
  } else {
80
- newInputValue = currentInputValue ? `${currentInputValue},${option.value}` : option.value;
105
+ newInputValue = currentInputValue ? currentInputValue + "," + option.value : option.value;
81
106
  }
82
107
  }
83
108
 
@@ -86,7 +111,7 @@ const useMultiListbox = ({
86
111
  }
87
112
  };
88
113
 
89
- const handleListboxClick = (event, index) => {
114
+ var handleListboxClick = function handleListboxClick(event, index) {
90
115
  event.preventDefault();
91
116
 
92
117
  if (!data[index].disabled) {
@@ -99,11 +124,11 @@ const useMultiListbox = ({
99
124
  }
100
125
  };
101
126
 
102
- const handleListboxKeyDown = (event, index) => {
103
- const charKey = String.fromCharCode(event.keyCode);
127
+ var handleListboxKeyDown = function handleListboxKeyDown(event, index) {
128
+ var charKey = String.fromCharCode(event.keyCode);
104
129
 
105
130
  if (charKey.match(/(\w)/g)) {
106
- const nextIndex = getNextIndex(charKey);
131
+ var nextIndex = getNextIndex(charKey);
107
132
 
108
133
  if (nextIndex > -1 && nextIndex !== currentIndex) {
109
134
  setCurrentIndex(nextIndex);
@@ -135,22 +160,22 @@ const useMultiListbox = ({
135
160
  }
136
161
  };
137
162
 
138
- const handleListboxFocus = event => {
163
+ var handleListboxFocus = function handleListboxFocus(event) {
139
164
  if (onFocus) {
140
165
  event.persist();
141
166
  onFocus(event);
142
167
  }
143
168
  };
144
169
 
145
- const handleInputChange = event => {
170
+ var handleInputChange = function handleInputChange(event) {
146
171
  event.persist();
147
172
  setSelectedIndexes(getSelectedIndexesFromValue(data, event.target.value));
148
173
 
149
174
  if (onChange) {
150
- const detail = [];
151
- const valuesArray = event.target.value.split(',');
152
- valuesArray.forEach(val => {
153
- const item = findByValue(data, val);
175
+ var detail = [];
176
+ var valuesArray = event.target.value.split(',');
177
+ valuesArray.forEach(function (val) {
178
+ var item = findByValue(data, val);
154
179
 
155
180
  if (item) {
156
181
  detail.push(item);
@@ -161,33 +186,36 @@ const useMultiListbox = ({
161
186
  }
162
187
  };
163
188
 
164
- const list = { ...otherProps,
189
+ var list = _extends({}, otherProps, {
165
190
  'aria-activedescendant': getActiveDescendant(data, currentIndex, id),
166
191
  'aria-multiselectable': true,
167
- data,
168
- disabled,
169
- id,
170
- onChange: () => null,
192
+ data: data,
193
+ disabled: disabled,
194
+ id: id,
195
+ onChange: function onChange() {
196
+ return null;
197
+ },
171
198
  onClick: handleListboxClick,
172
199
  onFocus: handleListboxFocus,
173
200
  onKeyDown: handleListboxKeyDown,
174
201
  scrollOnFocus: false,
175
202
  tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,
176
203
  value: currentIndex,
177
- selectedIndexes,
204
+ selectedIndexes: selectedIndexes,
178
205
  multiselect: true,
179
- allOptionsSelected
180
- };
181
- const input = {
182
- name,
206
+ allOptionsSelected: allOptionsSelected
207
+ });
208
+
209
+ var input = {
210
+ name: name,
183
211
  onChange: handleInputChange,
184
212
  ref: inputRef,
185
213
  tabIndex: -1,
186
214
  value: value !== null && value !== void 0 ? value : ''
187
215
  };
188
216
  return {
189
- list,
190
- input
217
+ list: list,
218
+ input: input
191
219
  };
192
220
  };
193
221