@economic/taco 0.0.27-alpha.0 → 0.0.28-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 (406) hide show
  1. package/README.md +84 -84
  2. package/dist/components/Menu/Menu.d.ts +3 -0
  3. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +1 -19
  4. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js.map +1 -1
  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 +14 -14
  8. package/dist/esm/components/Badge/Badge.js.map +1 -1
  9. package/dist/esm/components/Banner/Banner.js +7 -5
  10. package/dist/esm/components/Banner/Banner.js.map +1 -1
  11. package/dist/esm/components/Banner/util.js +1 -1
  12. package/dist/esm/components/Banner/util.js.map +1 -1
  13. package/dist/esm/components/Button/Button.js +12 -14
  14. package/dist/esm/components/Button/Button.js.map +1 -1
  15. package/dist/esm/components/Button/util.js +21 -25
  16. package/dist/esm/components/Button/util.js.map +1 -1
  17. package/dist/esm/components/Calendar/Calendar.js +56 -71
  18. package/dist/esm/components/Calendar/Calendar.js.map +1 -1
  19. package/dist/esm/components/Checkbox/Checkbox.js +15 -18
  20. package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
  21. package/dist/esm/components/Combobox/Combobox.js +32 -29
  22. package/dist/esm/components/Combobox/Combobox.js.map +1 -1
  23. package/dist/esm/components/Combobox/useCombobox.js +67 -87
  24. package/dist/esm/components/Combobox/useCombobox.js.map +1 -1
  25. package/dist/esm/components/Datepicker/Datepicker.js +48 -52
  26. package/dist/esm/components/Datepicker/Datepicker.js.map +1 -1
  27. package/dist/esm/components/Datepicker/useDatepicker.js +27 -34
  28. package/dist/esm/components/Datepicker/useDatepicker.js.map +1 -1
  29. package/dist/esm/components/Dialog/Context.js +4 -4
  30. package/dist/esm/components/Dialog/Context.js.map +1 -1
  31. package/dist/esm/components/Dialog/Dialog.js +39 -58
  32. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  33. package/dist/esm/components/Dialog/components/Content.js +39 -44
  34. package/dist/esm/components/Dialog/components/Content.js.map +1 -1
  35. package/dist/esm/components/Dialog/components/Drawer.js +3 -3
  36. package/dist/esm/components/Dialog/components/Drawer.js.map +1 -1
  37. package/dist/esm/components/Dialog/components/Extra.js +2 -2
  38. package/dist/esm/components/Dialog/components/Extra.js.map +1 -1
  39. package/dist/esm/components/Dialog/components/Trigger.js +2 -2
  40. package/dist/esm/components/Dialog/components/Trigger.js.map +1 -1
  41. package/dist/esm/components/Field/Field.js +10 -11
  42. package/dist/esm/components/Field/Field.js.map +1 -1
  43. package/dist/esm/components/Form/Form.js +6 -8
  44. package/dist/esm/components/Form/Form.js.map +1 -1
  45. package/dist/esm/components/Group/Group.js +6 -8
  46. package/dist/esm/components/Group/Group.js.map +1 -1
  47. package/dist/esm/components/Hanger/Hanger.js +32 -29
  48. package/dist/esm/components/Hanger/Hanger.js.map +1 -1
  49. package/dist/esm/components/Icon/Icon.js +7 -8
  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/ExportToPdf.js.map +1 -1
  139. package/dist/esm/components/Icon/components/Filter.js.map +1 -1
  140. package/dist/esm/components/Icon/components/FilterSolid.js.map +1 -1
  141. package/dist/esm/components/Icon/components/GraphSolid.js.map +1 -1
  142. package/dist/esm/components/Icon/components/Hash.js.map +1 -1
  143. package/dist/esm/components/Icon/components/Home.js.map +1 -1
  144. package/dist/esm/components/Icon/components/Images.js.map +1 -1
  145. package/dist/esm/components/Icon/components/Import.js.map +1 -1
  146. package/dist/esm/components/Icon/components/Inbox.js.map +1 -1
  147. package/dist/esm/components/Icon/components/InboxEinvoicing.js.map +1 -1
  148. package/dist/esm/components/Icon/components/InboxScanning.js.map +1 -1
  149. package/dist/esm/components/Icon/components/InboxSmart.js.map +1 -1
  150. package/dist/esm/components/Icon/components/Info.js.map +1 -1
  151. package/dist/esm/components/Icon/components/Inventory.js.map +1 -1
  152. package/dist/esm/components/Icon/components/InventoryMatrix.js.map +1 -1
  153. package/dist/esm/components/Icon/components/JournalPro.js.map +1 -1
  154. package/dist/esm/components/Icon/components/Layout.js.map +1 -1
  155. package/dist/esm/components/Icon/components/LayoutBoth.js.map +1 -1
  156. package/dist/esm/components/Icon/components/LayoutFirst.js.map +1 -1
  157. package/dist/esm/components/Icon/components/LayoutLast.js.map +1 -1
  158. package/dist/esm/components/Icon/components/LayoutNone.js.map +1 -1
  159. package/dist/esm/components/Icon/components/LedgerCard.js.map +1 -1
  160. package/dist/esm/components/Icon/components/LedgerCardCustomerReminder.js.map +1 -1
  161. package/dist/esm/components/Icon/components/LedgerCardManualCustomerInvoice.js.map +1 -1
  162. package/dist/esm/components/Icon/components/LedgerCardObsoleteStock.js.map +1 -1
  163. package/dist/esm/components/Icon/components/LedgerCardOpeningEntry.js.map +1 -1
  164. package/dist/esm/components/Icon/components/LedgerCardReservedEntry.js.map +1 -1
  165. package/dist/esm/components/Icon/components/LedgerCardShrinkagePilferage.js.map +1 -1
  166. package/dist/esm/components/Icon/components/LedgerCardStockAdjustment.js.map +1 -1
  167. package/dist/esm/components/Icon/components/LedgerCardTransferredOpeningEntry.js.map +1 -1
  168. package/dist/esm/components/Icon/components/Lightbulb.js.map +1 -1
  169. package/dist/esm/components/Icon/components/Line.js.map +1 -1
  170. package/dist/esm/components/Icon/components/List.js.map +1 -1
  171. package/dist/esm/components/Icon/components/ListBulleted.js.map +1 -1
  172. package/dist/esm/components/Icon/components/ListSearch.js.map +1 -1
  173. package/dist/esm/components/Icon/components/LockOpen.js.map +1 -1
  174. package/dist/esm/components/Icon/components/Log.js.map +1 -1
  175. package/dist/esm/components/Icon/components/Market.js.map +1 -1
  176. package/dist/esm/components/Icon/components/MatchAmount.js.map +1 -1
  177. package/dist/esm/components/Icon/components/MatchEntries.js.map +1 -1
  178. package/dist/esm/components/Icon/components/Mileage.js.map +1 -1
  179. package/dist/esm/components/Icon/components/Minus.js.map +1 -1
  180. package/dist/esm/components/Icon/components/ModalResize.js.map +1 -1
  181. package/dist/esm/components/Icon/components/ModalShrink.js.map +1 -1
  182. package/dist/esm/components/Icon/components/More.js.map +1 -1
  183. package/dist/esm/components/Icon/components/MoreSolid.js.map +1 -1
  184. package/dist/esm/components/Icon/components/Move.js.map +1 -1
  185. package/dist/esm/components/Icon/components/NavigationList.js.map +1 -1
  186. package/dist/esm/components/Icon/components/Note.js.map +1 -1
  187. package/dist/esm/components/Icon/components/NoteFollowUp.js.map +1 -1
  188. package/dist/esm/components/Icon/components/NoteRead.js.map +1 -1
  189. package/dist/esm/components/Icon/components/PartnerApi.js.map +1 -1
  190. package/dist/esm/components/Icon/components/Period.js.map +1 -1
  191. package/dist/esm/components/Icon/components/PersonChange.js.map +1 -1
  192. package/dist/esm/components/Icon/components/PersonMinus.js.map +1 -1
  193. package/dist/esm/components/Icon/components/PersonPlus.js.map +1 -1
  194. package/dist/esm/components/Icon/components/PersonTick.js.map +1 -1
  195. package/dist/esm/components/Icon/components/Play.js.map +1 -1
  196. package/dist/esm/components/Icon/components/PlusCircle.js.map +1 -1
  197. package/dist/esm/components/Icon/components/PlusMinus.js.map +1 -1
  198. package/dist/esm/components/Icon/components/Print.js.map +1 -1
  199. package/dist/esm/components/Icon/components/ProcessPayment.js.map +1 -1
  200. package/dist/esm/components/Icon/components/ProductLedgerCard.js.map +1 -1
  201. package/dist/esm/components/Icon/components/ProjectCards.js.map +1 -1
  202. package/dist/esm/components/Icon/components/Projects.js.map +1 -1
  203. package/dist/esm/components/Icon/components/Quicklinks.js.map +1 -1
  204. package/dist/esm/components/Icon/components/RatingBankruptcy.js.map +1 -1
  205. package/dist/esm/components/Icon/components/RatingPaymentProblems.js.map +1 -1
  206. package/dist/esm/components/Icon/components/Reconciled.js.map +1 -1
  207. package/dist/esm/components/Icon/components/Refresh.js.map +1 -1
  208. package/dist/esm/components/Icon/components/Report.js.map +1 -1
  209. package/dist/esm/components/Icon/components/ReportSolid.js.map +1 -1
  210. package/dist/esm/components/Icon/components/Restore.js.map +1 -1
  211. package/dist/esm/components/Icon/components/RotateLeft.js.map +1 -1
  212. package/dist/esm/components/Icon/components/RotateRight.js.map +1 -1
  213. package/dist/esm/components/Icon/components/Sales.js.map +1 -1
  214. package/dist/esm/components/Icon/components/Search.js.map +1 -1
  215. package/dist/esm/components/Icon/components/SearchBold.js.map +1 -1
  216. package/dist/esm/components/Icon/components/Secure.js.map +1 -1
  217. package/dist/esm/components/Icon/components/SecureTick.js.map +1 -1
  218. package/dist/esm/components/Icon/components/Settings.js.map +1 -1
  219. package/dist/esm/components/Icon/components/SettingsSolid.js.map +1 -1
  220. package/dist/esm/components/Icon/components/Shortcuts.js.map +1 -1
  221. package/dist/esm/components/Icon/components/ShowAll.js.map +1 -1
  222. package/dist/esm/components/Icon/components/ShowLess.js.map +1 -1
  223. package/dist/esm/components/Icon/components/ShowMore.js.map +1 -1
  224. package/dist/esm/components/Icon/components/ShowTemplate.js.map +1 -1
  225. package/dist/esm/components/Icon/components/Sliders.js.map +1 -1
  226. package/dist/esm/components/Icon/components/Smartpay.js.map +1 -1
  227. package/dist/esm/components/Icon/components/SortBy.js.map +1 -1
  228. package/dist/esm/components/Icon/components/Spinner.js.map +1 -1
  229. package/dist/esm/components/Icon/components/Star.js.map +1 -1
  230. package/dist/esm/components/Icon/components/StarSolid.js.map +1 -1
  231. package/dist/esm/components/Icon/components/Subscriptions.js.map +1 -1
  232. package/dist/esm/components/Icon/components/SystemEntries.js.map +1 -1
  233. package/dist/esm/components/Icon/components/Tag.js.map +1 -1
  234. package/dist/esm/components/Icon/components/TemplateOverride.js.map +1 -1
  235. package/dist/esm/components/Icon/components/Templates.js.map +1 -1
  236. package/dist/esm/components/Icon/components/ThumbBoth.js.map +1 -1
  237. package/dist/esm/components/Icon/components/ThumbDown.js.map +1 -1
  238. package/dist/esm/components/Icon/components/ThumbDownSolid.js.map +1 -1
  239. package/dist/esm/components/Icon/components/ThumbUp.js.map +1 -1
  240. package/dist/esm/components/Icon/components/ThumbUpSolid.js.map +1 -1
  241. package/dist/esm/components/Icon/components/Tick.js.map +1 -1
  242. package/dist/esm/components/Icon/components/TickCircle.js.map +1 -1
  243. package/dist/esm/components/Icon/components/Time.js.map +1 -1
  244. package/dist/esm/components/Icon/components/Transfer.js.map +1 -1
  245. package/dist/esm/components/Icon/components/TransferCancel.js.map +1 -1
  246. package/dist/esm/components/Icon/components/TransferLocked.js.map +1 -1
  247. package/dist/esm/components/Icon/components/Undock.js.map +1 -1
  248. package/dist/esm/components/Icon/components/Unreconciled.js.map +1 -1
  249. package/dist/esm/components/Icon/components/Warning.js.map +1 -1
  250. package/dist/esm/components/Icon/components/Webshop.js.map +1 -1
  251. package/dist/esm/components/Icon/components/Website.js.map +1 -1
  252. package/dist/esm/components/Icon/components/Workflow.js.map +1 -1
  253. package/dist/esm/components/Icon/components/Zoom.js.map +1 -1
  254. package/dist/esm/components/Icon/components/index.js +4 -4
  255. package/dist/esm/components/Icon/components/index.js.map +1 -1
  256. package/dist/esm/components/IconButton/IconButton.js +9 -12
  257. package/dist/esm/components/IconButton/IconButton.js.map +1 -1
  258. package/dist/esm/components/Input/Input.js +26 -24
  259. package/dist/esm/components/Input/Input.js.map +1 -1
  260. package/dist/esm/components/Input/util.js +9 -8
  261. package/dist/esm/components/Input/util.js.map +1 -1
  262. package/dist/esm/components/Listbox/Listbox.js +24 -25
  263. package/dist/esm/components/Listbox/Listbox.js.map +1 -1
  264. package/dist/esm/components/Listbox/ScrollableList.js +74 -82
  265. package/dist/esm/components/Listbox/ScrollableList.js.map +1 -1
  266. package/dist/esm/components/Listbox/useListbox.js +49 -58
  267. package/dist/esm/components/Listbox/useListbox.js.map +1 -1
  268. package/dist/esm/components/Listbox/useMultiListbox.js +63 -91
  269. package/dist/esm/components/Listbox/useMultiListbox.js.map +1 -1
  270. package/dist/esm/components/Listbox/useTypeahead.js +10 -9
  271. package/dist/esm/components/Listbox/useTypeahead.js.map +1 -1
  272. package/dist/esm/components/Listbox/util.js +48 -84
  273. package/dist/esm/components/Listbox/util.js.map +1 -1
  274. package/dist/esm/components/Menu/Context.js +2 -2
  275. package/dist/esm/components/Menu/Context.js.map +1 -1
  276. package/dist/esm/components/Menu/Menu.js +20 -42
  277. package/dist/esm/components/Menu/Menu.js.map +1 -1
  278. package/dist/esm/components/Menu/components/Checkbox.js +8 -9
  279. package/dist/esm/components/Menu/components/Checkbox.js.map +1 -1
  280. package/dist/esm/components/Menu/components/Content.js +10 -13
  281. package/dist/esm/components/Menu/components/Content.js.map +1 -1
  282. package/dist/esm/components/Menu/components/Header.js +4 -4
  283. package/dist/esm/components/Menu/components/Header.js.map +1 -1
  284. package/dist/esm/components/Menu/components/Item.js +34 -35
  285. package/dist/esm/components/Menu/components/Item.js.map +1 -1
  286. package/dist/esm/components/Menu/components/Link.js +10 -11
  287. package/dist/esm/components/Menu/components/Link.js.map +1 -1
  288. package/dist/esm/components/Menu/components/RadioGroup.js +16 -18
  289. package/dist/esm/components/Menu/components/RadioGroup.js.map +1 -1
  290. package/dist/esm/components/Menu/components/Separator.js +4 -4
  291. package/dist/esm/components/Menu/components/Separator.js.map +1 -1
  292. package/dist/esm/components/Menu/components/Trigger.js +5 -5
  293. package/dist/esm/components/Menu/components/Trigger.js.map +1 -1
  294. package/dist/esm/components/Navigation/Navigation.js +35 -44
  295. package/dist/esm/components/Navigation/Navigation.js.map +1 -1
  296. package/dist/esm/components/Pagination/PageNumbers.js +23 -28
  297. package/dist/esm/components/Pagination/PageNumbers.js.map +1 -1
  298. package/dist/esm/components/Pagination/Pagination.js +39 -56
  299. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  300. package/dist/esm/components/Pagination/usePagination.js +7 -21
  301. package/dist/esm/components/Pagination/usePagination.js.map +1 -1
  302. package/dist/esm/components/Pagination/usePaginationShortcuts.js +9 -9
  303. package/dist/esm/components/Pagination/usePaginationShortcuts.js.map +1 -1
  304. package/dist/esm/components/Popover/Popover.js +29 -34
  305. package/dist/esm/components/Popover/Popover.js.map +1 -1
  306. package/dist/esm/components/Popover/Primitives.js +7 -8
  307. package/dist/esm/components/Popover/Primitives.js.map +1 -1
  308. package/dist/esm/components/Progress/Progress.js +11 -15
  309. package/dist/esm/components/Progress/Progress.js.map +1 -1
  310. package/dist/esm/components/Provider/Provider.js +13 -18
  311. package/dist/esm/components/Provider/Provider.js.map +1 -1
  312. package/dist/esm/components/RadioGroup/RadioGroup.js +45 -57
  313. package/dist/esm/components/RadioGroup/RadioGroup.js.map +1 -1
  314. package/dist/esm/components/SearchInput/SearchInput.js +11 -12
  315. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  316. package/dist/esm/components/Select/Select.js +30 -31
  317. package/dist/esm/components/Select/Select.js.map +1 -1
  318. package/dist/esm/components/Select/useSelect.js +63 -82
  319. package/dist/esm/components/Select/useSelect.js.map +1 -1
  320. package/dist/esm/components/Spinner/Spinner.js +12 -19
  321. package/dist/esm/components/Spinner/Spinner.js.map +1 -1
  322. package/dist/esm/components/Switch/Switch.js +9 -10
  323. package/dist/esm/components/Switch/Switch.js.map +1 -1
  324. package/dist/esm/components/Table/components/BaseTable.js +23 -30
  325. package/dist/esm/components/Table/components/BaseTable.js.map +1 -1
  326. package/dist/esm/components/Table/components/PaginatedTable.js +3 -7
  327. package/dist/esm/components/Table/components/PaginatedTable.js.map +1 -1
  328. package/dist/esm/components/Table/components/Table.js +18 -25
  329. package/dist/esm/components/Table/components/Table.js.map +1 -1
  330. package/dist/esm/components/Table/components/WindowedTable.js +88 -104
  331. package/dist/esm/components/Table/components/WindowedTable.js.map +1 -1
  332. package/dist/esm/components/Table/hooks/plugins/useRowActions.js +122 -146
  333. package/dist/esm/components/Table/hooks/plugins/useRowActions.js.map +1 -1
  334. package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js +57 -61
  335. package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js.map +1 -1
  336. package/dist/esm/components/Table/hooks/plugins/useRowEditing.js +39 -36
  337. package/dist/esm/components/Table/hooks/plugins/useRowEditing.js.map +1 -1
  338. package/dist/esm/components/Table/hooks/plugins/useRowSelect.js +80 -90
  339. package/dist/esm/components/Table/hooks/plugins/useRowSelect.js.map +1 -1
  340. package/dist/esm/components/Table/hooks/useRowCreation.js +29 -64
  341. package/dist/esm/components/Table/hooks/useRowCreation.js.map +1 -1
  342. package/dist/esm/components/Table/hooks/useTable.js +119 -141
  343. package/dist/esm/components/Table/hooks/useTable.js.map +1 -1
  344. package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js +12 -15
  345. package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js.map +1 -1
  346. package/dist/esm/components/Table/util/renderColumn.js +10 -10
  347. package/dist/esm/components/Table/util/renderColumn.js.map +1 -1
  348. package/dist/esm/components/Table/util/renderRow.js +37 -46
  349. package/dist/esm/components/Table/util/renderRow.js.map +1 -1
  350. package/dist/esm/components/Table/util/rowIndexPath.js +14 -16
  351. package/dist/esm/components/Table/util/rowIndexPath.js.map +1 -1
  352. package/dist/esm/components/Table/util/sortTypes.js +23 -31
  353. package/dist/esm/components/Table/util/sortTypes.js.map +1 -1
  354. package/dist/esm/components/Table/util.js +29 -41
  355. package/dist/esm/components/Table/util.js.map +1 -1
  356. package/dist/esm/components/Tabs/Tabs.js +25 -27
  357. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  358. package/dist/esm/components/Textarea/Textarea.js +11 -9
  359. package/dist/esm/components/Textarea/Textarea.js.map +1 -1
  360. package/dist/esm/components/Toast/Toast.js +20 -21
  361. package/dist/esm/components/Toast/Toast.js.map +1 -1
  362. package/dist/esm/components/Toast/Toaster.js +88 -118
  363. package/dist/esm/components/Toast/Toaster.js.map +1 -1
  364. package/dist/esm/components/Toast/util.js +2 -2
  365. package/dist/esm/components/Toast/util.js.map +1 -1
  366. package/dist/esm/components/Tooltip/Tooltip.js +7 -8
  367. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  368. package/dist/esm/components/Tour/Tour.js +44 -50
  369. package/dist/esm/components/Tour/Tour.js.map +1 -1
  370. package/dist/esm/components/Treeview/Treeview.js +26 -36
  371. package/dist/esm/components/Treeview/Treeview.js.map +1 -1
  372. package/dist/esm/components/VisuallyHidden/VisuallyHidden.js +1 -1
  373. package/dist/esm/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  374. package/dist/esm/index.css +643 -642
  375. package/dist/esm/index.js +1 -1
  376. package/dist/esm/primitives/Button.js +9 -13
  377. package/dist/esm/primitives/Button.js.map +1 -1
  378. package/dist/esm/utils/date.js.map +1 -1
  379. package/dist/esm/utils/hooks/useBoundingClientRectListener.js.map +1 -1
  380. package/dist/esm/utils/hooks/useDraggable.js +16 -18
  381. package/dist/esm/utils/hooks/useDraggable.js.map +1 -1
  382. package/dist/esm/utils/hooks/useDropTarget.js +7 -10
  383. package/dist/esm/utils/hooks/useDropTarget.js.map +1 -1
  384. package/dist/esm/utils/hooks/useListKeyboardNavigation.js.map +1 -1
  385. package/dist/esm/utils/hooks/useListScrollTo.js.map +1 -1
  386. package/dist/esm/utils/hooks/useOnClickOutside.js.map +1 -1
  387. package/dist/esm/utils/hooks/useProxiedRef.js +3 -3
  388. package/dist/esm/utils/hooks/useProxiedRef.js.map +1 -1
  389. package/dist/esm/utils/hooks/useTimer.js +9 -17
  390. package/dist/esm/utils/hooks/useTimer.js.map +1 -1
  391. package/dist/esm/utils/input.js +7 -11
  392. package/dist/esm/utils/input.js.map +1 -1
  393. package/dist/esm/utils/mergeRefs.js +2 -2
  394. package/dist/esm/utils/mergeRefs.js.map +1 -1
  395. package/dist/esm/utils/taillwind.js +2 -2
  396. package/dist/esm/utils/taillwind.js.map +1 -1
  397. package/dist/index.css +643 -642
  398. package/dist/taco.cjs.development.js +2237 -2714
  399. package/dist/taco.cjs.development.js.map +1 -1
  400. package/dist/taco.cjs.production.min.js +1 -1
  401. package/dist/taco.cjs.production.min.js.map +1 -1
  402. package/dist/utils/tailwind.d.ts +1 -1
  403. package/package.json +31 -31
  404. package/plugins/tailwindcss-aria-attributes.js +73 -73
  405. package/tailwind.config.js +297 -297
  406. package/types.json +346 -329
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sources":["../../../../src/components/Input/util.ts"],"sourcesContent":["import cn from 'classnames';\nimport { State } from '../../types';\n\nexport const getInputClasses = props => {\n return cn(\n 'peer bg-white text-black text-sm border font-normal not-italic no-underline rounded inline-flex leading-6 px-2 relative w-full text-ellipsis transition-all delay-100 ease-in flex items-center',\n {\n 'cursor-not-allowed text-black bg-grey': props.readOnly,\n 'border-grey text-opacity-25 cursor-not-allowed': props.disabled,\n [getStateClasses(props.state)]: !props.disabled,\n 'bg-[rgba(255,255,0,0.075)]': props.highlighted && props.disabled,\n 'bg-[rgba(255,255,0,0.2)]': props.highlighted && !props.disabled,\n }\n );\n};\n\nexport const getStateClasses = (value: State | undefined): string => {\n switch (value) {\n case 'success':\n return 'border-green hover:shadow-[0_0_0.15rem_theme(colors.green.DEFAULT)] focus:border-green-light focus:yt-focus-green active:border-green-dark';\n\n case 'error':\n return 'border-red hover:shadow-[0_0_0.15rem_theme(colors.red.DEFAULT)] focus:border-red-light focus:yt-focus-red active:border-red-dark';\n\n case 'warning':\n return 'border-yellow-dark hover:shadow-[0_0_0.15rem_theme(colors.yellow.dark)] focus:yt-focus-yellow active:border-yellow-dark';\n\n case 'information':\n return 'border-blue hover:shadow-[0_0_0.15rem_theme(colors.blue.dark)] focus:border-blue-light focus:yt-focus active:border-blue-dark';\n\n default:\n return 'border-grey-dark hover:shadow-[0_0_0.1rem_theme(colors.grey.darker)] focus:border-blue-light focus:yt-focus active:border-blue-dark';\n }\n};\n\nexport const getButtonStateClasses = (value: State | undefined): string => {\n switch (value) {\n case 'success':\n return '!border-green focus:!border-green-light focus:yt-focus-green peer-focus:!border-green-light peer-focus:peer-active:!border-green-dark';\n\n case 'error':\n return '!border-red focus:!border-red-light focus:yt-focus-red peer-focus:!border-red-light peer-focus:peer-active:!border-red-dark';\n\n case 'warning':\n return '!border-yellow-dark focus:!border-yellow-dark focus:yt-focus-yellow peer-focus:peer-active:!border-yellow-dark';\n\n case 'information':\n return '!border-blue focus:!border-blue-light peer-focus:!border-blue-light peer-focus:peer-active:!border-blue-dark';\n\n default:\n return '!border-grey-dark focus:!border-blue-light peer-focus:!border-blue-light peer-focus:peer-active:!border-blue-dark';\n }\n};\n"],"names":["getInputClasses","props","cn","readOnly","disabled","getStateClasses","state","highlighted","value","getButtonStateClasses"],"mappings":";;IAGaA,eAAe,GAAG,SAAlBA,eAAkB,CAAAC,KAAK;;;AAChC,SAAOC,EAAE,CACL,iMADK;AAGD,6CAAyCD,KAAK,CAACE,QAH9C;AAID,sDAAkDF,KAAK,CAACG;AAJvD,SAKAC,eAAe,CAACJ,KAAK,CAACK,KAAP,CALf,IAK+B,CAACL,KAAK,CAACG,QALtC,MAMD,4BANC,IAM6BH,KAAK,CAACM,WAAN,IAAqBN,KAAK,CAACG,QANxD,MAOD,0BAPC,IAO2BH,KAAK,CAACM,WAAN,IAAqB,CAACN,KAAK,CAACG,QAPvD,OAAT;AAUH;IAEYC,eAAe,GAAG,SAAlBA,eAAkB,CAACG,KAAD;AAC3B,UAAQA,KAAR;AACI,SAAK,SAAL;AACI,aAAO,4IAAP;;AAEJ,SAAK,OAAL;AACI,aAAO,kIAAP;;AAEJ,SAAK,SAAL;AACI,aAAO,yHAAP;;AAEJ,SAAK,aAAL;AACI,aAAO,+HAAP;;AAEJ;AACI,aAAO,qIAAP;AAdR;AAgBH;IAEYC,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACD,KAAD;AACjC,UAAQA,KAAR;AACI,SAAK,SAAL;AACI,aAAO,uIAAP;;AAEJ,SAAK,OAAL;AACI,aAAO,6HAAP;;AAEJ,SAAK,SAAL;AACI,aAAO,gHAAP;;AAEJ,SAAK,aAAL;AACI,aAAO,8GAAP;;AAEJ;AACI,aAAO,mHAAP;AAdR;AAgBH;;;;"}
1
+ {"version":3,"file":"util.js","sources":["../../../../src/components/Input/util.ts"],"sourcesContent":["import cn from 'classnames';\r\nimport { State } from '../../types';\r\n\r\nexport const getInputClasses = props => {\r\n return cn(\r\n 'peer bg-white text-black text-sm border font-normal not-italic no-underline rounded inline-flex leading-6 px-2 relative w-full text-ellipsis flex items-center',\r\n {\r\n 'cursor-not-allowed text-black bg-grey': props.readOnly,\r\n 'border-grey text-opacity-25 cursor-not-allowed': props.disabled,\r\n [getStateClasses(props.state)]: !props.disabled,\r\n 'bg-[rgba(255,255,0,0.075)]': props.highlighted && props.disabled,\r\n 'bg-[rgba(255,255,0,0.2)]': props.highlighted && !props.disabled,\r\n }\r\n );\r\n};\r\n\r\nexport const getStateClasses = (value: State | undefined): string => {\r\n switch (value) {\r\n case 'success':\r\n return 'border-green hover:shadow-[0_0_0.15rem_theme(colors.green.DEFAULT)] focus:border-green-light focus:yt-focus-green active:border-green-dark';\r\n\r\n case 'error':\r\n return 'border-red hover:shadow-[0_0_0.15rem_theme(colors.red.DEFAULT)] focus:border-red-light focus:yt-focus-red active:border-red-dark';\r\n\r\n case 'warning':\r\n return 'border-yellow-dark hover:shadow-[0_0_0.15rem_theme(colors.yellow.dark)] focus:yt-focus-yellow active:border-yellow-dark';\r\n\r\n case 'information':\r\n return 'border-blue hover:shadow-[0_0_0.15rem_theme(colors.blue.dark)] focus:border-blue-light focus:yt-focus active:border-blue-dark';\r\n\r\n default:\r\n return 'border-grey-dark hover:shadow-[0_0_0.1rem_theme(colors.grey.darker)] focus:border-blue-light focus:yt-focus active:border-blue-dark';\r\n }\r\n};\r\n\r\nexport const getButtonStateClasses = (value: State | undefined): string => {\r\n switch (value) {\r\n case 'success':\r\n return '!border-green focus:!border-green-light focus:yt-focus-green peer-focus:!border-green-light peer-focus:peer-active:!border-green-dark';\r\n\r\n case 'error':\r\n return '!border-red focus:!border-red-light focus:yt-focus-red peer-focus:!border-red-light peer-focus:peer-active:!border-red-dark';\r\n\r\n case 'warning':\r\n return '!border-yellow-dark focus:!border-yellow-dark focus:yt-focus-yellow peer-focus:peer-active:!border-yellow-dark';\r\n\r\n case 'information':\r\n return '!border-blue focus:!border-blue-light peer-focus:!border-blue-light peer-focus:peer-active:!border-blue-dark';\r\n\r\n default:\r\n return '!border-grey-dark focus:!border-blue-light peer-focus:!border-blue-light peer-focus:peer-active:!border-blue-dark';\r\n }\r\n};\r\n"],"names":["getInputClasses","props","cn","readOnly","disabled","getStateClasses","state","highlighted","value","getButtonStateClasses"],"mappings":";;MAGaA,eAAe,GAAGC,KAAK;AAChC,SAAOC,EAAE,CACL,gKADK,EAEL;AACI,6CAAyCD,KAAK,CAACE,QADnD;AAEI,sDAAkDF,KAAK,CAACG,QAF5D;AAGI,KAACC,eAAe,CAACJ,KAAK,CAACK,KAAP,CAAhB,GAAgC,CAACL,KAAK,CAACG,QAH3C;AAII,kCAA8BH,KAAK,CAACM,WAAN,IAAqBN,KAAK,CAACG,QAJ7D;AAKI,gCAA4BH,KAAK,CAACM,WAAN,IAAqB,CAACN,KAAK,CAACG;AAL5D,GAFK,CAAT;AAUH;MAEYC,eAAe,GAAIG,KAAD;AAC3B,UAAQA,KAAR;AACI,SAAK,SAAL;AACI,aAAO,4IAAP;;AAEJ,SAAK,OAAL;AACI,aAAO,kIAAP;;AAEJ,SAAK,SAAL;AACI,aAAO,yHAAP;;AAEJ,SAAK,aAAL;AACI,aAAO,+HAAP;;AAEJ;AACI,aAAO,qIAAP;AAdR;AAgBH;MAEYC,qBAAqB,GAAID,KAAD;AACjC,UAAQA,KAAR;AACI,SAAK,SAAL;AACI,aAAO,uIAAP;;AAEJ,SAAK,OAAL;AACI,aAAO,6HAAP;;AAEJ,SAAK,SAAL;AACI,aAAO,gHAAP;;AAEJ,SAAK,aAAL;AACI,aAAO,8GAAP;;AAEJ;AACI,aAAO,mHAAP;AAdR;AAgBH;;;;"}
@@ -1,53 +1,52 @@
1
- import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import { forwardRef, createElement } from 'react';
3
2
  import cn from 'classnames';
4
3
  import { ScrollableList } from './ScrollableList.js';
5
4
  import { useListbox } from './useListbox.js';
6
5
  import { useMultiListbox } from './useMultiListbox.js';
7
6
 
8
- var _excluded = ["className"],
9
- _excluded2 = ["className"];
10
- var Listbox = /*#__PURE__*/forwardRef(function Listbox(props, ref) {
11
- var externalClassName = props.className,
12
- otherProps = _objectWithoutPropertiesLoose(props, _excluded);
13
-
14
- var _useListbox = useListbox(otherProps, ref),
15
- list = _useListbox.list,
16
- input = _useListbox.input;
17
-
18
- var className = cn('bg-white inline-flex relative w-full', externalClassName);
7
+ const Listbox = /*#__PURE__*/forwardRef(function Listbox(props, ref) {
8
+ const {
9
+ className: externalClassName,
10
+ ...otherProps
11
+ } = props;
12
+ const {
13
+ list,
14
+ input
15
+ } = useListbox(otherProps, ref);
16
+ const className = cn('bg-white inline-flex relative w-full', externalClassName);
19
17
  return createElement("span", {
20
18
  "data-taco": "listbox",
21
19
  className: className
22
20
  }, createElement(ScrollableList, Object.assign({}, list, {
23
- style: _extends({}, list.style, {
21
+ style: { ...list.style,
24
22
  maxHeight: 'calc(12rem + 2px)'
25
23
  /* (6 * option height) + listbox border */
26
24
 
27
- })
25
+ }
28
26
  })), createElement("input", Object.assign({}, input, {
29
27
  className: "hidden",
30
28
  type: "text"
31
29
  })));
32
30
  });
33
- var MultiListbox = /*#__PURE__*/forwardRef(function Listbox(props, ref) {
34
- var externalClassName = props.className,
35
- otherProps = _objectWithoutPropertiesLoose(props, _excluded2);
36
-
37
- var _useMultiListbox = useMultiListbox(otherProps, ref),
38
- list = _useMultiListbox.list,
39
- input = _useMultiListbox.input;
40
-
41
- var className = cn('bg-white inline-flex relative w-full', externalClassName);
31
+ const MultiListbox = /*#__PURE__*/forwardRef(function Listbox(props, ref) {
32
+ const {
33
+ className: externalClassName,
34
+ ...otherProps
35
+ } = props;
36
+ const {
37
+ list,
38
+ input
39
+ } = useMultiListbox(otherProps, ref);
40
+ const className = cn('bg-white inline-flex relative w-full', externalClassName);
42
41
  return createElement("span", {
43
42
  "data-taco": "listbox",
44
43
  className: className
45
44
  }, createElement(ScrollableList, Object.assign({}, list, {
46
- style: _extends({}, list.style, {
45
+ style: { ...list.style,
47
46
  maxHeight: 'calc(12rem + 2px + 2px)'
48
47
  /* (6 * option height) + listbox border + ALL_OPTIONS bottom border */
49
48
 
50
- })
49
+ }
51
50
  })), createElement("input", Object.assign({}, input, {
52
51
  className: "hidden",
53
52
  type: "text"
@@ -1 +1 @@
1
- {"version":3,"file":"Listbox.js","sources":["../../../../src/components/Listbox/Listbox.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport { useListbox } from './useListbox';\nimport { useMultiListbox } from './useMultiListbox';\nimport { ScrollableList, ScrollableListItemValue, ScrollableListItem } from './ScrollableList';\nimport { State } from '../../types';\n\nexport type ListboxItem = ScrollableListItem;\nexport type ListboxValue = ScrollableListItemValue;\n\nexport type ListboxTexts = {\n /**\n * Text displayed in the listbox if no data provided.\n * To read more about how to provide the text, see [Provider](component:provider) component\n */\n empty: string;\n /**\n * Text displayed in the listbox to indicate the data is loading.\n * Read more about how to provide the text in [Provider](component:provider) component\n */\n loading: string;\n /**\n * The first option displayed in a multiselect listbox that selects all available options.\n * Read more about how to provide the text in [Provider](component:provider) component\n */\n allOption: string;\n};\n\nexport type ListboxProps = Pick<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'onFocus'> &\n Omit<React.InputHTMLAttributes<HTMLElement>, 'defaultValue' | 'onChange' | 'value'> & {\n /** Data indicating the options in listbox */\n data?: ListboxItem[];\n /**\n * Initial value of the listbox.\n * This is used when listbox is mounted, if no value is provided.\n * *Note* that listbox is a controlled component, setting this will also trigger the `onChange` event\n */\n defaultValue?: ListboxValue;\n /** Set what value should have an empty option in listbox */\n emptyValue?: ListboxValue;\n /** Draws attention to the listbox by changing its style and making it visually prominent */\n highlighted?: boolean;\n /**\n * Shows a loading indicator with a text next to it.\n * Read more about how to provide the text in [Provider](component:provider) component\n */\n loading?: boolean;\n /** State will change the style of the listbox */\n state?: State;\n /**\n * Value of the listbox representing the selected item.\n * It needs to be an existing value from the provided data\n */\n value?: ListboxValue;\n };\n\nexport const Listbox = React.forwardRef(function Listbox(props: ListboxProps, ref: React.Ref<HTMLInputElement>) {\n const { className: externalClassName, ...otherProps } = props;\n const { list, input } = useListbox(otherProps, ref);\n const className = cn('bg-white inline-flex relative w-full', externalClassName);\n\n return (\n <span data-taco=\"listbox\" className={className}>\n <ScrollableList\n {...list}\n style={{ ...list.style, maxHeight: 'calc(12rem + 2px)' /* (6 * option height) + listbox border */ }}\n />\n <input {...input} className=\"hidden\" type=\"text\" />\n </span>\n );\n});\n\nexport const MultiListbox = React.forwardRef(function Listbox(props: ListboxProps, ref: React.Ref<HTMLInputElement>) {\n const { className: externalClassName, ...otherProps } = props;\n const { list, input } = useMultiListbox(otherProps, ref);\n const className = cn('bg-white inline-flex relative w-full', externalClassName);\n\n return (\n <span data-taco=\"listbox\" className={className}>\n <ScrollableList\n {...list}\n style={{\n ...list.style,\n maxHeight: 'calc(12rem + 2px + 2px)' /* (6 * option height) + listbox border + ALL_OPTIONS bottom border */,\n }}\n />\n <input {...input} className=\"hidden\" type=\"text\" />\n </span>\n );\n});\n"],"names":["Listbox","React","props","ref","externalClassName","className","otherProps","useListbox","list","input","cn","ScrollableList","style","maxHeight","type","MultiListbox","useMultiListbox"],"mappings":";;;;;;;;;IAwDaA,OAAO,gBAAGC,UAAA,CAAiB,SAASD,OAAT,CAAiBE,KAAjB,EAAsCC,GAAtC;AACpC,MAAmBC,iBAAnB,GAAwDF,KAAxD,CAAQG,SAAR;AAAA,MAAyCC,UAAzC,iCAAwDJ,KAAxD;;AACA,oBAAwBK,UAAU,CAACD,UAAD,EAAaH,GAAb,CAAlC;AAAA,MAAQK,IAAR,eAAQA,IAAR;AAAA,MAAcC,KAAd,eAAcA,KAAd;;AACA,MAAMJ,SAAS,GAAGK,EAAE,CAAC,sCAAD,EAAyCN,iBAAzC,CAApB;AAEA,SACIH,aAAA,OAAA;iBAAgB;AAAUI,IAAAA,SAAS,EAAEA;GAArC,EACIJ,aAAA,CAACU,cAAD,oBACQH;AACJI,IAAAA,KAAK,eAAOJ,IAAI,CAACI,KAAZ;AAAmBC,MAAAA,SAAS,EAAE;AAAoB;;AAAlD;IAFT,CADJ,EAKIZ,aAAA,QAAA,oBAAWQ;AAAOJ,IAAAA,SAAS,EAAC;AAASS,IAAAA,IAAI,EAAC;IAA1C,CALJ,CADJ;AASH,CAdsB;IAgBVC,YAAY,gBAAGd,UAAA,CAAiB,SAASD,OAAT,CAAiBE,KAAjB,EAAsCC,GAAtC;AACzC,MAAmBC,iBAAnB,GAAwDF,KAAxD,CAAQG,SAAR;AAAA,MAAyCC,UAAzC,iCAAwDJ,KAAxD;;AACA,yBAAwBc,eAAe,CAACV,UAAD,EAAaH,GAAb,CAAvC;AAAA,MAAQK,IAAR,oBAAQA,IAAR;AAAA,MAAcC,KAAd,oBAAcA,KAAd;;AACA,MAAMJ,SAAS,GAAGK,EAAE,CAAC,sCAAD,EAAyCN,iBAAzC,CAApB;AAEA,SACIH,aAAA,OAAA;iBAAgB;AAAUI,IAAAA,SAAS,EAAEA;GAArC,EACIJ,aAAA,CAACU,cAAD,oBACQH;AACJI,IAAAA,KAAK,eACEJ,IAAI,CAACI,KADP;AAEDC,MAAAA,SAAS,EAAE;AAA0B;;AAFpC;IAFT,CADJ,EAQIZ,aAAA,QAAA,oBAAWQ;AAAOJ,IAAAA,SAAS,EAAC;AAASS,IAAAA,IAAI,EAAC;IAA1C,CARJ,CADJ;AAYH,CAjB2B;;;;"}
1
+ {"version":3,"file":"Listbox.js","sources":["../../../../src/components/Listbox/Listbox.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport cn from 'classnames';\r\nimport { useListbox } from './useListbox';\r\nimport { useMultiListbox } from './useMultiListbox';\r\nimport { ScrollableList, ScrollableListItemValue, ScrollableListItem } from './ScrollableList';\r\nimport { State } from '../../types';\r\n\r\nexport type ListboxItem = ScrollableListItem;\r\nexport type ListboxValue = ScrollableListItemValue;\r\n\r\nexport type ListboxTexts = {\r\n /**\r\n * Text displayed in the listbox if no data provided.\r\n * To read more about how to provide the text, see [Provider](component:provider) component\r\n */\r\n empty: string;\r\n /**\r\n * Text displayed in the listbox to indicate the data is loading.\r\n * Read more about how to provide the text in [Provider](component:provider) component\r\n */\r\n loading: string;\r\n /**\r\n * The first option displayed in a multiselect listbox that selects all available options.\r\n * Read more about how to provide the text in [Provider](component:provider) component\r\n */\r\n allOption: string;\r\n};\r\n\r\nexport type ListboxProps = Pick<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'onFocus'> &\r\n Omit<React.InputHTMLAttributes<HTMLElement>, 'defaultValue' | 'onChange' | 'value'> & {\r\n /** Data indicating the options in listbox */\r\n data?: ListboxItem[];\r\n /**\r\n * Initial value of the listbox.\r\n * This is used when listbox is mounted, if no value is provided.\r\n * *Note* that listbox is a controlled component, setting this will also trigger the `onChange` event\r\n */\r\n defaultValue?: ListboxValue;\r\n /** Set what value should have an empty option in listbox */\r\n emptyValue?: ListboxValue;\r\n /** Draws attention to the listbox by changing its style and making it visually prominent */\r\n highlighted?: boolean;\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:provider) component\r\n */\r\n loading?: boolean;\r\n /** State will change the style of the listbox */\r\n state?: State;\r\n /**\r\n * Value of the listbox representing the selected item.\r\n * It needs to be an existing value from the provided data\r\n */\r\n value?: ListboxValue;\r\n };\r\n\r\nexport const Listbox = React.forwardRef(function Listbox(props: ListboxProps, ref: React.Ref<HTMLInputElement>) {\r\n const { className: externalClassName, ...otherProps } = props;\r\n const { list, input } = useListbox(otherProps, ref);\r\n const className = cn('bg-white inline-flex relative w-full', externalClassName);\r\n\r\n return (\r\n <span data-taco=\"listbox\" className={className}>\r\n <ScrollableList\r\n {...list}\r\n style={{ ...list.style, maxHeight: 'calc(12rem + 2px)' /* (6 * option height) + listbox border */ }}\r\n />\r\n <input {...input} className=\"hidden\" type=\"text\" />\r\n </span>\r\n );\r\n});\r\n\r\nexport const MultiListbox = React.forwardRef(function Listbox(props: ListboxProps, ref: React.Ref<HTMLInputElement>) {\r\n const { className: externalClassName, ...otherProps } = props;\r\n const { list, input } = useMultiListbox(otherProps, ref);\r\n const className = cn('bg-white inline-flex relative w-full', externalClassName);\r\n\r\n return (\r\n <span data-taco=\"listbox\" className={className}>\r\n <ScrollableList\r\n {...list}\r\n style={{\r\n ...list.style,\r\n maxHeight: 'calc(12rem + 2px + 2px)' /* (6 * option height) + listbox border + ALL_OPTIONS bottom border */,\r\n }}\r\n />\r\n <input {...input} className=\"hidden\" type=\"text\" />\r\n </span>\r\n );\r\n});\r\n"],"names":["Listbox","React","props","ref","className","externalClassName","otherProps","list","input","useListbox","cn","ScrollableList","style","maxHeight","type","MultiListbox","useMultiListbox"],"mappings":";;;;;;MAwDaA,OAAO,gBAAGC,UAAA,CAAiB,SAASD,OAAT,CAAiBE,KAAjB,EAAsCC,GAAtC;AACpC,QAAM;AAAEC,IAAAA,SAAS,EAAEC,iBAAb;AAAgC,OAAGC;AAAnC,MAAkDJ,KAAxD;AACA,QAAM;AAAEK,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAkBC,UAAU,CAACH,UAAD,EAAaH,GAAb,CAAlC;AACA,QAAMC,SAAS,GAAGM,EAAE,CAAC,sCAAD,EAAyCL,iBAAzC,CAApB;AAEA,SACIJ,aAAA,OAAA;iBAAgB;AAAUG,IAAAA,SAAS,EAAEA;GAArC,EACIH,aAAA,CAACU,cAAD,oBACQJ;AACJK,IAAAA,KAAK,EAAE,EAAE,GAAGL,IAAI,CAACK,KAAV;AAAiBC,MAAAA,SAAS,EAAE;AAAoB;;AAAhD;IAFX,CADJ,EAKIZ,aAAA,QAAA,oBAAWO;AAAOJ,IAAAA,SAAS,EAAC;AAASU,IAAAA,IAAI,EAAC;IAA1C,CALJ,CADJ;AASH,CAdsB;MAgBVC,YAAY,gBAAGd,UAAA,CAAiB,SAASD,OAAT,CAAiBE,KAAjB,EAAsCC,GAAtC;AACzC,QAAM;AAAEC,IAAAA,SAAS,EAAEC,iBAAb;AAAgC,OAAGC;AAAnC,MAAkDJ,KAAxD;AACA,QAAM;AAAEK,IAAAA,IAAF;AAAQC,IAAAA;AAAR,MAAkBQ,eAAe,CAACV,UAAD,EAAaH,GAAb,CAAvC;AACA,QAAMC,SAAS,GAAGM,EAAE,CAAC,sCAAD,EAAyCL,iBAAzC,CAApB;AAEA,SACIJ,aAAA,OAAA;iBAAgB;AAAUG,IAAAA,SAAS,EAAEA;GAArC,EACIH,aAAA,CAACU,cAAD,oBACQJ;AACJK,IAAAA,KAAK,EAAE,EACH,GAAGL,IAAI,CAACK,KADL;AAEHC,MAAAA,SAAS,EAAE;AAA0B;;AAFlC;IAFX,CADJ,EAQIZ,aAAA,QAAA,oBAAWO;AAAOJ,IAAAA,SAAS,EAAC;AAASU,IAAAA,IAAI,EAAC;IAA1C,CARJ,CADJ;AAYH,CAjB2B;;;;"}
@@ -1,4 +1,3 @@
1
- import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import { forwardRef, useMemo, createRef, useEffect, createElement } from 'react';
3
2
  import cn from 'classnames';
4
3
  import { Spinner } from '../Spinner/Spinner.js';
@@ -9,14 +8,10 @@ import { getInputClasses } from '../Input/util.js';
9
8
  import { getNextIndexFromKeycode } from '../../utils/hooks/useListKeyboardNavigation.js';
10
9
  import { useListScrollTo } from '../../utils/hooks/useListScrollTo.js';
11
10
 
12
- var _excluded = ["data", "disabled", "highlighted", "id", "loading", "onChange", "onClick", "onFocus", "onKeyDown", "readOnly", "scrollOnFocus", "state", "value", "multiselect", "selectedIndexes", "allOptionsSelected"],
13
- _excluded2 = ["children", "icon"];
14
- var getId = function getId(id, value) {
15
- return id + "_" + value;
16
- };
11
+ const getId = (id, value) => `${id}_${value}`;
17
12
 
18
- var getNextEnabledItem = function getNextEnabledItem(event, data, index) {
19
- var nextIndex = getNextIndexFromKeycode(event.keyCode, data.length, index);
13
+ const getNextEnabledItem = (event, data, index) => {
14
+ const nextIndex = getNextIndexFromKeycode(event.keyCode, data.length, index);
20
15
 
21
16
  if (nextIndex) {
22
17
  if (nextIndex === index) {
@@ -29,45 +24,51 @@ var getNextEnabledItem = function getNextEnabledItem(event, data, index) {
29
24
  return nextIndex;
30
25
  };
31
26
 
32
- var ScrollableList = /*#__PURE__*/forwardRef(function ScrollableList(props, ref) {
33
- var data = props.data,
34
- disabled = props.disabled,
35
- id = props.id,
36
- loading = props.loading,
37
- setCurrentIndex = props.onChange,
38
- onClick = props.onClick,
39
- onFocus = props.onFocus,
40
- onKeyDown = props.onKeyDown,
41
- readOnly = props.readOnly,
42
- _props$scrollOnFocus = props.scrollOnFocus,
43
- scrollOnFocus = _props$scrollOnFocus === void 0 ? false : _props$scrollOnFocus,
44
- currentIndex = props.value,
45
- multiselect = props.multiselect,
46
- _props$selectedIndexe = props.selectedIndexes,
47
- selectedIndexes = _props$selectedIndexe === void 0 ? [] : _props$selectedIndexe,
48
- _props$allOptionsSele = props.allOptionsSelected,
49
- allOptionsSelected = _props$allOptionsSele === void 0 ? false : _props$allOptionsSele,
50
- otherProps = _objectWithoutPropertiesLoose(props, _excluded);
51
-
52
- var listRef = useProxiedRef(ref);
53
- var itemRefs = useMemo(function () {
54
- return data.map(function () {
55
- return createRef();
56
- });
57
- }, [data]);
58
-
59
- var _useLocalization = useLocalization(),
60
- texts = _useLocalization.texts;
61
-
62
- var _useListScrollTo = useListScrollTo(listRef, itemRefs),
63
- scrollTo = _useListScrollTo.scrollTo;
64
-
65
- useEffect(function () {
27
+ const ScrollableList = /*#__PURE__*/forwardRef(function ScrollableList(props, ref) {
28
+ const {
29
+ data,
30
+ disabled,
31
+ highlighted,
32
+ id,
33
+ loading,
34
+ onChange: setCurrentIndex,
35
+ onClick,
36
+ onFocus,
37
+ onKeyDown,
38
+ readOnly,
39
+ scrollOnFocus = false,
40
+ state,
41
+ value: currentIndex,
42
+ multiselect,
43
+ selectedIndexes = [],
44
+ allOptionsSelected = false,
45
+ ...otherProps
46
+ } = props;
47
+ const listRef = useProxiedRef(ref);
48
+ const itemRefs = useMemo(() => data.map(() => createRef()), [data]);
49
+ const {
50
+ texts
51
+ } = useLocalization();
52
+ const {
53
+ scrollTo
54
+ } = useListScrollTo(listRef, itemRefs);
55
+ useEffect(() => {
56
+ var _itemRefs$currentInde;
57
+
58
+ if (currentIndex && (_itemRefs$currentInde = itemRefs[currentIndex]) !== null && _itemRefs$currentInde !== void 0 && _itemRefs$currentInde.current) {
59
+ var _itemRefs$currentInde2;
60
+
61
+ (_itemRefs$currentInde2 = itemRefs[currentIndex].current) === null || _itemRefs$currentInde2 === void 0 ? void 0 : _itemRefs$currentInde2.scrollIntoView({
62
+ block: 'center'
63
+ });
64
+ }
65
+ }, []);
66
+ useEffect(() => {
66
67
  scrollTo(currentIndex);
67
68
  }, [currentIndex]);
68
69
 
69
- var handleKeyDown = function handleKeyDown(event) {
70
- var nextIndex = getNextEnabledItem(event, data, currentIndex);
70
+ const handleKeyDown = event => {
71
+ const nextIndex = getNextEnabledItem(event, data, currentIndex);
71
72
 
72
73
  if (nextIndex !== undefined && nextIndex !== currentIndex) {
73
74
  event.preventDefault();
@@ -77,23 +78,21 @@ var ScrollableList = /*#__PURE__*/forwardRef(function ScrollableList(props, ref)
77
78
 
78
79
  if (onKeyDown) {
79
80
  event.persist();
80
- var index = nextIndex !== undefined ? nextIndex : currentIndex;
81
+ const index = nextIndex !== undefined ? nextIndex : currentIndex;
81
82
  onKeyDown(event, index);
82
83
  }
83
84
  };
84
85
 
85
- var handleClick = function handleClick(index) {
86
- return function (event) {
87
- setCurrentIndex(index);
86
+ const handleClick = index => event => {
87
+ setCurrentIndex(index);
88
88
 
89
- if (onClick) {
90
- event.persist();
91
- onClick(event, index);
92
- }
93
- };
89
+ if (onClick) {
90
+ event.persist();
91
+ onClick(event, index);
92
+ }
94
93
  };
95
94
 
96
- var handleFocus = function handleFocus(event) {
95
+ const handleFocus = event => {
97
96
  if (scrollOnFocus) {
98
97
  scrollTo(currentIndex);
99
98
  }
@@ -104,36 +103,33 @@ var ScrollableList = /*#__PURE__*/forwardRef(function ScrollableList(props, ref)
104
103
  }
105
104
  };
106
105
 
107
- var getOptionCheckedState = function getOptionCheckedState(optionValue, index) {
106
+ const getOptionCheckedState = (optionValue, index) => {
108
107
  if (optionValue === '#ALL-OPTIONS#') {
109
108
  return allOptionsSelected;
110
109
  } else if (!optionValue || !selectedIndexes) {
111
110
  return false;
112
111
  } else {
113
- return selectedIndexes.findIndex(function (i) {
114
- return i === index;
115
- }) !== -1;
112
+ return selectedIndexes.findIndex(i => i === index) !== -1;
116
113
  }
117
114
  };
118
115
 
119
- var list = _extends({}, otherProps, {
116
+ const list = { ...otherProps,
120
117
  className: cn('inline-flex flex-col list-none !p-0 m-0 overflow-y-auto h-auto', getInputClasses(props), {
121
118
  'yt-list--multiselect': multiselect,
122
119
  'pointer-events-none': disabled,
123
120
  'cursor-not-allowed': disabled || readOnly
124
121
  }, otherProps.className),
125
- disabled: disabled,
126
- id: id,
122
+ disabled,
123
+ id,
127
124
  onFocus: !disabled && !readOnly ? handleFocus : undefined,
128
125
  onKeyDown: !disabled && !readOnly ? handleKeyDown : undefined,
129
- readOnly: readOnly,
126
+ readOnly,
130
127
  ref: listRef,
131
128
  role: 'listbox',
132
129
  tabIndex: otherProps.tabIndex || 0
133
- });
134
-
135
- var options = data.map(function (option, index) {
136
- var depth = option.path ? option.path.split('.').length - 1 : 0;
130
+ };
131
+ const options = data.map((option, index) => {
132
+ const depth = option.path ? option.path.split('.').length - 1 : 0;
137
133
  return {
138
134
  'aria-selected': multiselect ? getOptionCheckedState(String(option.value), index) : currentIndex === index,
139
135
  'data-focused': currentIndex === index,
@@ -149,7 +145,7 @@ var ScrollableList = /*#__PURE__*/forwardRef(function ScrollableList(props, ref)
149
145
  ref: itemRefs[index],
150
146
  role: 'option',
151
147
  style: depth > 0 ? {
152
- paddingLeft: depth + 1 + "rem"
148
+ paddingLeft: `${depth + 1}rem`
153
149
  } : undefined
154
150
  };
155
151
  });
@@ -159,21 +155,17 @@ var ScrollableList = /*#__PURE__*/forwardRef(function ScrollableList(props, ref)
159
155
  className: "yt-list__empty"
160
156
  }, createElement("span", null, createElement(Spinner, {
161
157
  delay: 0
162
- })), createElement("span", null, texts.listbox.loading)) : options.length ? options.map(function (_ref) {
163
- var children = _ref.children,
164
- icon = _ref.icon,
165
- optionProps = _objectWithoutPropertiesLoose(_ref, _excluded2);
166
-
167
- return createElement("li", Object.assign({}, optionProps), icon, createElement("span", {
168
- className: "flex-grow truncate text-left"
169
- }, children), multiselect && createElement(Checkbox, {
170
- checked: optionProps['aria-selected'],
171
- onChange: function onChange() {
172
- return null;
173
- },
174
- className: "pointer-events-none ml-2 flex items-center justify-end overflow-visible p-px"
175
- }));
176
- }) : createElement("li", {
158
+ })), createElement("span", null, texts.listbox.loading)) : options.length ? options.map(({
159
+ children,
160
+ icon,
161
+ ...optionProps
162
+ }) => createElement("li", Object.assign({}, optionProps), icon, createElement("span", {
163
+ className: "flex-grow truncate text-left"
164
+ }, children), multiselect && createElement(Checkbox, {
165
+ checked: optionProps['aria-selected'],
166
+ onChange: () => null,
167
+ className: "pointer-events-none ml-2 flex items-center justify-end overflow-visible p-px"
168
+ }))) : createElement("li", {
177
169
  className: "yt-list__empty"
178
170
  }, createElement("span", null, texts.listbox.empty)));
179
171
  });
@@ -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":"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"}
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 if (currentIndex && itemRefs[currentIndex]?.current) {\r\n itemRefs[currentIndex].current?.scrollIntoView({\r\n block: 'center',\r\n });\r\n }\r\n }, []);\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","current","scrollIntoView","block","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;;;AACZ,QAAIa,YAAY,6BAAIO,QAAQ,CAACP,YAAD,CAAZ,kDAAI,sBAAwBa,OAA5C,EAAqD;AAAA;;AACjD,gCAAAN,QAAQ,CAACP,YAAD,CAAR,CAAuBa,OAAvB,kFAAgCC,cAAhC,CAA+C;AAC3CC,QAAAA,KAAK,EAAE;AADoC,OAA/C;AAGH;AACJ,GAND,EAMG,EANH;AAQA5B,EAAAA,SAAA,CAAgB;AACZwB,IAAAA,QAAQ,CAACX,YAAD,CAAR;AACH,GAFD,EAEG,CAACA,YAAD,CAFH;;AAIA,QAAMgB,aAAa,GAAItC,KAAD;AAClB,UAAMG,SAAS,GAAGJ,kBAAkB,CAACC,KAAD,EAAQC,IAAR,EAAcqB,YAAd,CAApC;;AAEA,QAAInB,SAAS,KAAKoC,SAAd,IAA2BpC,SAAS,KAAKmB,YAA7C,EAA2D;AACvDtB,MAAAA,KAAK,CAACwC,cAAN;AACAP,MAAAA,QAAQ,CAAC9B,SAAD,CAAR;AACAY,MAAAA,eAAe,CAACZ,SAAD,CAAf;AACH;;AAED,QAAIe,SAAJ,EAAe;AACXlB,MAAAA,KAAK,CAACyC,OAAN;AACA,YAAMvC,KAAK,GAAGC,SAAS,KAAKoC,SAAd,GAA0BpC,SAA1B,GAAsCmB,YAApD;AACAJ,MAAAA,SAAS,CAAClB,KAAD,EAAQE,KAAR,CAAT;AACH;AACJ,GAdD;;AAgBA,QAAMwC,WAAW,GAAIxC,KAAD,IAAoBF,KAAD;AACnCe,IAAAA,eAAe,CAACb,KAAD,CAAf;;AAEA,QAAIc,OAAJ,EAAa;AACThB,MAAAA,KAAK,CAACyC,OAAN;AACAzB,MAAAA,OAAO,CAAChB,KAAD,EAAQE,KAAR,CAAP;AACH;AACJ,GAPD;;AASA,QAAMyC,WAAW,GAAI3C,KAAD;AAChB,QAAIoB,aAAJ,EAAmB;AACfa,MAAAA,QAAQ,CAACX,YAAD,CAAR;AACH;;AAED,QAAIL,OAAJ,EAAa;AACTjB,MAAAA,KAAK,CAACyC,OAAN;AACAxB,MAAAA,OAAO,CAACjB,KAAD,CAAP;AACH;AACJ,GATD;;AAWA,QAAM4C,qBAAqB,GAAG,CAACC,WAAD,EAAsB3C,KAAtB;AAC1B,QAAI2C,WAAW,KAAK,eAApB,EAAqC;AACjC,aAAOpB,kBAAP;AACH,KAFD,MAEO,IAAI,CAACoB,WAAD,IAAgB,CAACrB,eAArB,EAAsC;AACzC,aAAO,KAAP;AACH,KAFM,MAEA;AACH,aAAOA,eAAe,CAACsB,SAAhB,CAA0BC,CAAC,IAAIA,CAAC,KAAK7C,KAArC,MAAgD,CAAC,CAAxD;AACH;AACJ,GARD;;AAUA,QAAM8C,IAAI,GAC+E,EACrF,GAAGtB,UADkF;AAErFuB,IAAAA,SAAS,EAAEC,EAAE,CACT,gEADS,EAETC,eAAe,CAACzC,KAAD,CAFN,EAGT;AACI,8BAAwBa,WAD5B;AAEI,6BAAuBhB,QAF3B;AAGI,4BAAsBA,QAAQ,IAAIY;AAHtC,KAHS,EAQTO,UAAU,CAACuB,SARF,CAFwE;AAYrF1C,IAAAA,QAZqF;AAarFV,IAAAA,EAbqF;AAcrFoB,IAAAA,OAAO,EAAE,CAACV,QAAD,IAAa,CAACY,QAAd,GAAyBwB,WAAzB,GAAuCJ,SAdqC;AAerFrB,IAAAA,SAAS,EAAE,CAACX,QAAD,IAAa,CAACY,QAAd,GAAyBmB,aAAzB,GAAyCC,SAfiC;AAgBrFpB,IAAAA,QAhBqF;AAiBrFR,IAAAA,GAAG,EAAEgB,OAjBgF;AAkBrFyB,IAAAA,IAAI,EAAE,SAlB+E;AAmBrFC,IAAAA,QAAQ,EAAE3B,UAAU,CAAC2B,QAAX,IAAuB;AAnBoD,GADzF;AAuBA,QAAMC,OAAO,GAAGrD,IAAI,CAAC6B,GAAL,CAAS,CAACyB,MAAD,EAASrD,KAAT;AACrB,UAAMsD,KAAK,GAAGD,MAAM,CAACE,IAAP,GAAcF,MAAM,CAACE,IAAP,CAAYC,KAAZ,CAAkB,GAAlB,EAAuBpD,MAAvB,GAAgC,CAA9C,GAAkD,CAAhE;AAEA,WAAO;AACH,uBAAiBiB,WAAW,GAAGqB,qBAAqB,CAACe,MAAM,CAACJ,MAAM,CAACzD,KAAR,CAAP,EAAuBI,KAAvB,CAAxB,GAAwDoB,YAAY,KAAKpB,KADlG;AAEH,sBAAgBoB,YAAY,KAAKpB,KAF9B;AAGH0D,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;AAUHvD,MAAAA,QAAQ,EAAEgD,MAAM,CAAChD,QAVd;AAWHwD,MAAAA,IAAI,EAAER,MAAM,CAACQ,IAXV;AAYHlE,MAAAA,EAAE,EAAED,KAAK,CAACC,EAAD,EAAK0D,MAAM,CAACzD,KAAZ,CAZN;AAaHkE,MAAAA,GAAG,EAAEpE,KAAK,CAACC,EAAD,EAAK0D,MAAM,CAACzD,KAAZ,CAbP;AAcHkB,MAAAA,OAAO,EAAE,CAACT,QAAD,IAAa,CAACY,QAAd,GAAyBuB,WAAW,CAACxC,KAAD,CAApC,GAA8CqC,SAdpD;AAeH5B,MAAAA,GAAG,EAAEkB,QAAQ,CAAC3B,KAAD,CAfV;AAgBHkD,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,SACI9B,aAAA,KAAA,oBAAQuC;iBAAgB;IAAxB,EACKnC,OAAO,GACJJ,aAAA,KAAA;AAAIwC,IAAAA,SAAS,EAAC;GAAd,EACIxC,aAAA,OAAA,MAAA,EACIA,aAAA,CAAC0D,OAAD;AAASC,IAAAA,KAAK,EAAE;GAAhB,CADJ,CADJ,EAII3D,aAAA,OAAA,MAAA,EAAOsB,KAAK,CAACsC,OAAN,CAAcxD,OAArB,CAJJ,CADI,GAOJyC,OAAO,CAAChD,MAAR,GACAgD,OAAO,CAACxB,GAAR,CAAY,CAAC;AAAE8B,IAAAA,QAAF;AAAYG,IAAAA,IAAZ;AAAkB,OAAGO;AAArB,GAAD,KACR7D,aAAA,KAAA,oBAAQ6D,YAAR,EACKP,IADL,EAEItD,aAAA,OAAA;AAAMwC,IAAAA,SAAS,EAAC;GAAhB,EAAgDW,QAAhD,CAFJ,EAGKrC,WAAW,IACRd,aAAA,CAAC8D,QAAD;AACIC,IAAAA,OAAO,EAAEF,WAAW,CAAC,eAAD;AACpBxD,IAAAA,QAAQ,EAAE,MAAM;AAChBmC,IAAAA,SAAS,EAAC;GAHd,CAJR,CADJ,CADA,GAeAxC,aAAA,KAAA;AAAIwC,IAAAA,SAAS,EAAC;GAAd,EACIxC,aAAA,OAAA,MAAA,EAAOsB,KAAK,CAACsC,OAAN,CAAcI,KAArB,CADJ,CAvBR,CADJ;AA8BH,CAxK6B;;;;"}
@@ -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