@economic/taco 0.0.33-alpha.6 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/README.md +84 -84
  2. package/dist/components/Hanger/Hanger.d.ts +3 -0
  3. package/dist/components/Icon/components/{Minus.d.ts → CircleClose.d.ts} +0 -0
  4. package/dist/components/Icon/components/{PlusCircle.d.ts → CircleMinus.d.ts} +0 -0
  5. package/dist/components/Icon/components/{TickCircle.d.ts → CirclePlus.d.ts} +0 -0
  6. package/dist/components/Icon/components/CircleTick.d.ts +3 -0
  7. package/dist/components/Icon/components/index.d.ts +1 -1
  8. package/dist/components/Input/Input.d.ts +1 -1
  9. package/dist/components/Menu/Menu.d.ts +2 -2
  10. package/dist/components/Menu/components/Item.d.ts +1 -1
  11. package/dist/components/Menu/components/Link.d.ts +1 -1
  12. package/dist/esm/components/Accordion/Accordion.js.map +1 -1
  13. package/dist/esm/components/Backdrop/Backdrop.js.map +1 -1
  14. package/dist/esm/components/Badge/Badge.js +1 -1
  15. package/dist/esm/components/Badge/Badge.js.map +1 -1
  16. package/dist/esm/components/Banner/Banner.js +6 -8
  17. package/dist/esm/components/Banner/Banner.js.map +1 -1
  18. package/dist/esm/components/Banner/util.js +5 -5
  19. package/dist/esm/components/Banner/util.js.map +1 -1
  20. package/dist/esm/components/Button/Button.js.map +1 -1
  21. package/dist/esm/components/Button/util.js +24 -19
  22. package/dist/esm/components/Button/util.js.map +1 -1
  23. package/dist/esm/components/Calendar/Calendar.js.map +1 -1
  24. package/dist/esm/components/Checkbox/Checkbox.js +21 -18
  25. package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
  26. package/dist/esm/components/Combobox/Combobox.js.map +1 -1
  27. package/dist/esm/components/Combobox/useCombobox.js +87 -67
  28. package/dist/esm/components/Combobox/useCombobox.js.map +1 -1
  29. package/dist/esm/components/Datepicker/Datepicker.js +52 -50
  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 +4 -4
  34. package/dist/esm/components/Dialog/Context.js.map +1 -1
  35. package/dist/esm/components/Dialog/Dialog.js +58 -39
  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 +3 -3
  40. package/dist/esm/components/Dialog/components/Drawer.js.map +1 -1
  41. package/dist/esm/components/Dialog/components/Extra.js +2 -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 +12 -10
  46. package/dist/esm/components/Field/Field.js.map +1 -1
  47. package/dist/esm/components/Form/Form.js +8 -6
  48. package/dist/esm/components/Form/Form.js.map +1 -1
  49. package/dist/esm/components/Group/Group.js +8 -6
  50. package/dist/esm/components/Group/Group.js.map +1 -1
  51. package/dist/esm/components/Hanger/Hanger.js +43 -27
  52. package/dist/esm/components/Hanger/Hanger.js.map +1 -1
  53. package/dist/esm/components/Icon/Icon.js +8 -7
  54. package/dist/esm/components/Icon/Icon.js.map +1 -1
  55. package/dist/esm/components/Icon/components/AccountPreview.js.map +1 -1
  56. package/dist/esm/components/Icon/components/Accounting.js.map +1 -1
  57. package/dist/esm/components/Icon/components/AccountingYear.js.map +1 -1
  58. package/dist/esm/components/Icon/components/AccountingYearCancel.js.map +1 -1
  59. package/dist/esm/components/Icon/components/ArrowBottom.js.map +1 -1
  60. package/dist/esm/components/Icon/components/ArrowDown.js.map +1 -1
  61. package/dist/esm/components/Icon/components/ArrowEnd.js.map +1 -1
  62. package/dist/esm/components/Icon/components/ArrowLeft.js.map +1 -1
  63. package/dist/esm/components/Icon/components/ArrowRight.js.map +1 -1
  64. package/dist/esm/components/Icon/components/ArrowStart.js.map +1 -1
  65. package/dist/esm/components/Icon/components/ArrowTop.js.map +1 -1
  66. package/dist/esm/components/Icon/components/ArrowUp.js.map +1 -1
  67. package/dist/esm/components/Icon/components/Attach.js.map +1 -1
  68. package/dist/esm/components/Icon/components/AttachAuto.js.map +1 -1
  69. package/dist/esm/components/Icon/components/AttachCancel.js.map +1 -1
  70. package/dist/esm/components/Icon/components/Autotext.js.map +1 -1
  71. package/dist/esm/components/Icon/components/AutotextInsert.js.map +1 -1
  72. package/dist/esm/components/Icon/components/Basic.js.map +1 -1
  73. package/dist/esm/components/Icon/components/BasicTabs.js.map +1 -1
  74. package/dist/esm/components/Icon/components/BellSolid.js.map +1 -1
  75. package/dist/esm/components/Icon/components/Book.js.map +1 -1
  76. package/dist/esm/components/Icon/components/Booking.js.map +1 -1
  77. package/dist/esm/components/Icon/components/Budget.js.map +1 -1
  78. package/dist/esm/components/Icon/components/Calendar.js.map +1 -1
  79. package/dist/esm/components/Icon/components/CashAccount.js.map +1 -1
  80. package/dist/esm/components/Icon/components/CashReports.js.map +1 -1
  81. package/dist/esm/components/Icon/components/Chat.js.map +1 -1
  82. package/dist/esm/components/Icon/components/ChatSolid.js.map +1 -1
  83. package/dist/esm/components/Icon/components/ChevronDown.js.map +1 -1
  84. package/dist/esm/components/Icon/components/ChevronDownDouble.js.map +1 -1
  85. package/dist/esm/components/Icon/components/ChevronDownSolid.js.map +1 -1
  86. package/dist/esm/components/Icon/components/ChevronLeft.js.map +1 -1
  87. package/dist/esm/components/Icon/components/ChevronLeftDouble.js.map +1 -1
  88. package/dist/esm/components/Icon/components/ChevronRight.js.map +1 -1
  89. package/dist/esm/components/Icon/components/ChevronRightDouble.js.map +1 -1
  90. package/dist/esm/components/Icon/components/ChevronUp.js.map +1 -1
  91. package/dist/esm/components/Icon/components/ChevronUpDouble.js.map +1 -1
  92. package/dist/esm/components/Icon/components/ChevronUpSolid.js.map +1 -1
  93. package/dist/esm/components/Icon/components/CircleClose.js +19 -0
  94. package/dist/esm/components/Icon/components/CircleClose.js.map +1 -0
  95. package/dist/esm/components/Icon/components/{Minus.js → CircleMinus.js} +4 -4
  96. package/dist/esm/components/Icon/components/CircleMinus.js.map +1 -0
  97. package/dist/esm/components/Icon/components/{PlusCircle.js → CirclePlus.js} +4 -4
  98. package/dist/esm/components/Icon/components/CirclePlus.js.map +1 -0
  99. package/dist/esm/components/Icon/components/{TickCircle.js → CircleTick.js} +4 -4
  100. package/dist/esm/components/Icon/components/CircleTick.js.map +1 -0
  101. package/dist/esm/components/Icon/components/Clamp.js.map +1 -1
  102. package/dist/esm/components/Icon/components/ClampOpen.js.map +1 -1
  103. package/dist/esm/components/Icon/components/Close.js.map +1 -1
  104. package/dist/esm/components/Icon/components/ConnectionEnable.js.map +1 -1
  105. package/dist/esm/components/Icon/components/ConnectionRevoke.js.map +1 -1
  106. package/dist/esm/components/Icon/components/Contacts.js.map +1 -1
  107. package/dist/esm/components/Icon/components/Copy.js.map +1 -1
  108. package/dist/esm/components/Icon/components/Courses.js.map +1 -1
  109. package/dist/esm/components/Icon/components/Credit.js.map +1 -1
  110. package/dist/esm/components/Icon/components/Delete.js.map +1 -1
  111. package/dist/esm/components/Icon/components/DeletePermanently.js.map +1 -1
  112. package/dist/esm/components/Icon/components/Depecriate.js.map +1 -1
  113. package/dist/esm/components/Icon/components/Developer.js.map +1 -1
  114. package/dist/esm/components/Icon/components/DistributionTemplate.js.map +1 -1
  115. package/dist/esm/components/Icon/components/Document.js.map +1 -1
  116. package/dist/esm/components/Icon/components/DocumentApprove.js.map +1 -1
  117. package/dist/esm/components/Icon/components/DocumentCreateEntry.js.map +1 -1
  118. package/dist/esm/components/Icon/components/DocumentCut.js.map +1 -1
  119. package/dist/esm/components/Icon/components/DocumentError.js.map +1 -1
  120. package/dist/esm/components/Icon/components/DocumentIsolatePage.js.map +1 -1
  121. package/dist/esm/components/Icon/components/DocumentMerge.js.map +1 -1
  122. package/dist/esm/components/Icon/components/DocumentMove.js.map +1 -1
  123. package/dist/esm/components/Icon/components/DocumentPreview.js.map +1 -1
  124. package/dist/esm/components/Icon/components/DocumentReceived.js.map +1 -1
  125. package/dist/esm/components/Icon/components/DocumentRejectedRequest.js.map +1 -1
  126. package/dist/esm/components/Icon/components/DocumentSplit.js.map +1 -1
  127. package/dist/esm/components/Icon/components/DocumentTime.js.map +1 -1
  128. package/dist/esm/components/Icon/components/Download.js.map +1 -1
  129. package/dist/esm/components/Icon/components/Drag.js.map +1 -1
  130. package/dist/esm/components/Icon/components/ECopedia.js.map +1 -1
  131. package/dist/esm/components/Icon/components/ESignature.js.map +1 -1
  132. package/dist/esm/components/Icon/components/Edit.js.map +1 -1
  133. package/dist/esm/components/Icon/components/EllipsisHorizontal.js.map +1 -1
  134. package/dist/esm/components/Icon/components/EllipsisVertical.js.map +1 -1
  135. package/dist/esm/components/Icon/components/EntriesOnAccount.js.map +1 -1
  136. package/dist/esm/components/Icon/components/EntriesOpen.js.map +1 -1
  137. package/dist/esm/components/Icon/components/EntriesWarning.js.map +1 -1
  138. package/dist/esm/components/Icon/components/EntryTypeCustomerInvoice.js.map +1 -1
  139. package/dist/esm/components/Icon/components/EntryTypeCustomerPayment.js.map +1 -1
  140. package/dist/esm/components/Icon/components/EntryTypeJournalEntry.js.map +1 -1
  141. package/dist/esm/components/Icon/components/EntryTypeManualCustomerInvoice.js.map +1 -1
  142. package/dist/esm/components/Icon/components/EntryTypeSupplierInvoice.js.map +1 -1
  143. package/dist/esm/components/Icon/components/EntryTypeSupplierPayment.js.map +1 -1
  144. package/dist/esm/components/Icon/components/Envelope.js.map +1 -1
  145. package/dist/esm/components/Icon/components/EnvelopeApproved.js.map +1 -1
  146. package/dist/esm/components/Icon/components/ExpandView.js.map +1 -1
  147. package/dist/esm/components/Icon/components/Expenses.js.map +1 -1
  148. package/dist/esm/components/Icon/components/Export.js.map +1 -1
  149. package/dist/esm/components/Icon/components/ExportToExcel.js.map +1 -1
  150. package/dist/esm/components/Icon/components/ExportToPdf.js.map +1 -1
  151. package/dist/esm/components/Icon/components/Filter.js.map +1 -1
  152. package/dist/esm/components/Icon/components/FilterSolid.js.map +1 -1
  153. package/dist/esm/components/Icon/components/GraphSolid.js.map +1 -1
  154. package/dist/esm/components/Icon/components/Hash.js.map +1 -1
  155. package/dist/esm/components/Icon/components/Home.js.map +1 -1
  156. package/dist/esm/components/Icon/components/Images.js.map +1 -1
  157. package/dist/esm/components/Icon/components/Import.js.map +1 -1
  158. package/dist/esm/components/Icon/components/Inbox.js.map +1 -1
  159. package/dist/esm/components/Icon/components/InboxEinvoicing.js.map +1 -1
  160. package/dist/esm/components/Icon/components/InboxScanning.js.map +1 -1
  161. package/dist/esm/components/Icon/components/InboxSmart.js.map +1 -1
  162. package/dist/esm/components/Icon/components/Info.js.map +1 -1
  163. package/dist/esm/components/Icon/components/Inventory.js.map +1 -1
  164. package/dist/esm/components/Icon/components/InventoryMatrix.js.map +1 -1
  165. package/dist/esm/components/Icon/components/JournalPro.js.map +1 -1
  166. package/dist/esm/components/Icon/components/Layout.js.map +1 -1
  167. package/dist/esm/components/Icon/components/LayoutBoth.js.map +1 -1
  168. package/dist/esm/components/Icon/components/LayoutFirst.js.map +1 -1
  169. package/dist/esm/components/Icon/components/LayoutLast.js.map +1 -1
  170. package/dist/esm/components/Icon/components/LayoutNone.js.map +1 -1
  171. package/dist/esm/components/Icon/components/LedgerCard.js.map +1 -1
  172. package/dist/esm/components/Icon/components/LedgerCardCustomerReminder.js.map +1 -1
  173. package/dist/esm/components/Icon/components/LedgerCardManualCustomerInvoice.js.map +1 -1
  174. package/dist/esm/components/Icon/components/LedgerCardObsoleteStock.js.map +1 -1
  175. package/dist/esm/components/Icon/components/LedgerCardOpeningEntry.js.map +1 -1
  176. package/dist/esm/components/Icon/components/LedgerCardReservedEntry.js.map +1 -1
  177. package/dist/esm/components/Icon/components/LedgerCardShrinkagePilferage.js.map +1 -1
  178. package/dist/esm/components/Icon/components/LedgerCardStockAdjustment.js.map +1 -1
  179. package/dist/esm/components/Icon/components/LedgerCardTransferredOpeningEntry.js.map +1 -1
  180. package/dist/esm/components/Icon/components/Lightbulb.js.map +1 -1
  181. package/dist/esm/components/Icon/components/Line.js.map +1 -1
  182. package/dist/esm/components/Icon/components/List.js.map +1 -1
  183. package/dist/esm/components/Icon/components/ListBulleted.js.map +1 -1
  184. package/dist/esm/components/Icon/components/ListSearch.js.map +1 -1
  185. package/dist/esm/components/Icon/components/LockOpen.js.map +1 -1
  186. package/dist/esm/components/Icon/components/Log.js.map +1 -1
  187. package/dist/esm/components/Icon/components/Market.js.map +1 -1
  188. package/dist/esm/components/Icon/components/MatchAmount.js.map +1 -1
  189. package/dist/esm/components/Icon/components/MatchEntries.js.map +1 -1
  190. package/dist/esm/components/Icon/components/Mileage.js.map +1 -1
  191. package/dist/esm/components/Icon/components/ModalResize.js.map +1 -1
  192. package/dist/esm/components/Icon/components/ModalShrink.js.map +1 -1
  193. package/dist/esm/components/Icon/components/More.js.map +1 -1
  194. package/dist/esm/components/Icon/components/MoreSolid.js.map +1 -1
  195. package/dist/esm/components/Icon/components/Move.js.map +1 -1
  196. package/dist/esm/components/Icon/components/NavigationList.js.map +1 -1
  197. package/dist/esm/components/Icon/components/Note.js.map +1 -1
  198. package/dist/esm/components/Icon/components/NoteFollowUp.js.map +1 -1
  199. package/dist/esm/components/Icon/components/NoteRead.js.map +1 -1
  200. package/dist/esm/components/Icon/components/PartnerApi.js.map +1 -1
  201. package/dist/esm/components/Icon/components/Period.js.map +1 -1
  202. package/dist/esm/components/Icon/components/PersonChange.js.map +1 -1
  203. package/dist/esm/components/Icon/components/PersonMinus.js.map +1 -1
  204. package/dist/esm/components/Icon/components/PersonPlus.js.map +1 -1
  205. package/dist/esm/components/Icon/components/PersonTick.js.map +1 -1
  206. package/dist/esm/components/Icon/components/Play.js.map +1 -1
  207. package/dist/esm/components/Icon/components/PlusMinus.js.map +1 -1
  208. package/dist/esm/components/Icon/components/Print.js.map +1 -1
  209. package/dist/esm/components/Icon/components/ProcessPayment.js.map +1 -1
  210. package/dist/esm/components/Icon/components/ProductLedgerCard.js.map +1 -1
  211. package/dist/esm/components/Icon/components/ProjectCards.js.map +1 -1
  212. package/dist/esm/components/Icon/components/Projects.js.map +1 -1
  213. package/dist/esm/components/Icon/components/Quicklinks.js.map +1 -1
  214. package/dist/esm/components/Icon/components/RatingBankruptcy.js.map +1 -1
  215. package/dist/esm/components/Icon/components/RatingPaymentProblems.js.map +1 -1
  216. package/dist/esm/components/Icon/components/Reconciled.js.map +1 -1
  217. package/dist/esm/components/Icon/components/Refresh.js.map +1 -1
  218. package/dist/esm/components/Icon/components/Report.js.map +1 -1
  219. package/dist/esm/components/Icon/components/ReportSolid.js.map +1 -1
  220. package/dist/esm/components/Icon/components/Restore.js.map +1 -1
  221. package/dist/esm/components/Icon/components/RotateLeft.js.map +1 -1
  222. package/dist/esm/components/Icon/components/RotateRight.js.map +1 -1
  223. package/dist/esm/components/Icon/components/Sales.js.map +1 -1
  224. package/dist/esm/components/Icon/components/Search.js.map +1 -1
  225. package/dist/esm/components/Icon/components/SearchBold.js.map +1 -1
  226. package/dist/esm/components/Icon/components/Secure.js.map +1 -1
  227. package/dist/esm/components/Icon/components/SecureTick.js.map +1 -1
  228. package/dist/esm/components/Icon/components/Settings.js.map +1 -1
  229. package/dist/esm/components/Icon/components/SettingsSolid.js.map +1 -1
  230. package/dist/esm/components/Icon/components/Shortcuts.js.map +1 -1
  231. package/dist/esm/components/Icon/components/ShowAll.js.map +1 -1
  232. package/dist/esm/components/Icon/components/ShowLess.js.map +1 -1
  233. package/dist/esm/components/Icon/components/ShowMore.js.map +1 -1
  234. package/dist/esm/components/Icon/components/ShowTemplate.js.map +1 -1
  235. package/dist/esm/components/Icon/components/Sliders.js.map +1 -1
  236. package/dist/esm/components/Icon/components/Smartpay.js.map +1 -1
  237. package/dist/esm/components/Icon/components/SortBy.js.map +1 -1
  238. package/dist/esm/components/Icon/components/Spinner.js.map +1 -1
  239. package/dist/esm/components/Icon/components/Star.js.map +1 -1
  240. package/dist/esm/components/Icon/components/StarSolid.js.map +1 -1
  241. package/dist/esm/components/Icon/components/Subscriptions.js.map +1 -1
  242. package/dist/esm/components/Icon/components/SystemEntries.js.map +1 -1
  243. package/dist/esm/components/Icon/components/Tag.js.map +1 -1
  244. package/dist/esm/components/Icon/components/TemplateOverride.js.map +1 -1
  245. package/dist/esm/components/Icon/components/Templates.js.map +1 -1
  246. package/dist/esm/components/Icon/components/ThumbBoth.js.map +1 -1
  247. package/dist/esm/components/Icon/components/ThumbDown.js.map +1 -1
  248. package/dist/esm/components/Icon/components/ThumbDownSolid.js.map +1 -1
  249. package/dist/esm/components/Icon/components/ThumbUp.js.map +1 -1
  250. package/dist/esm/components/Icon/components/ThumbUpSolid.js.map +1 -1
  251. package/dist/esm/components/Icon/components/Tick.js.map +1 -1
  252. package/dist/esm/components/Icon/components/Time.js.map +1 -1
  253. package/dist/esm/components/Icon/components/Transfer.js.map +1 -1
  254. package/dist/esm/components/Icon/components/TransferCancel.js.map +1 -1
  255. package/dist/esm/components/Icon/components/TransferLocked.js.map +1 -1
  256. package/dist/esm/components/Icon/components/Undock.js.map +1 -1
  257. package/dist/esm/components/Icon/components/Unreconciled.js.map +1 -1
  258. package/dist/esm/components/Icon/components/Warning.js.map +1 -1
  259. package/dist/esm/components/Icon/components/Webshop.js.map +1 -1
  260. package/dist/esm/components/Icon/components/Website.js.map +1 -1
  261. package/dist/esm/components/Icon/components/Workflow.js.map +1 -1
  262. package/dist/esm/components/Icon/components/Zoom.js.map +1 -1
  263. package/dist/esm/components/Icon/components/index.js +12 -10
  264. package/dist/esm/components/Icon/components/index.js.map +1 -1
  265. package/dist/esm/components/IconButton/IconButton.js +11 -9
  266. package/dist/esm/components/IconButton/IconButton.js.map +1 -1
  267. package/dist/esm/components/Input/Input.js +25 -27
  268. package/dist/esm/components/Input/Input.js.map +1 -1
  269. package/dist/esm/components/Input/util.js +2 -2
  270. package/dist/esm/components/Input/util.js.map +1 -1
  271. package/dist/esm/components/Listbox/Listbox.js +25 -24
  272. package/dist/esm/components/Listbox/Listbox.js.map +1 -1
  273. package/dist/esm/components/Listbox/ScrollableList.js +83 -64
  274. package/dist/esm/components/Listbox/ScrollableList.js.map +1 -1
  275. package/dist/esm/components/Listbox/useListbox.js +60 -51
  276. package/dist/esm/components/Listbox/useListbox.js.map +1 -1
  277. package/dist/esm/components/Listbox/useMultiListbox.js +91 -64
  278. package/dist/esm/components/Listbox/useMultiListbox.js.map +1 -1
  279. package/dist/esm/components/Listbox/useTypeahead.js +9 -10
  280. package/dist/esm/components/Listbox/useTypeahead.js.map +1 -1
  281. package/dist/esm/components/Listbox/util.js +85 -48
  282. package/dist/esm/components/Listbox/util.js.map +1 -1
  283. package/dist/esm/components/Menu/Context.js +2 -2
  284. package/dist/esm/components/Menu/Context.js.map +1 -1
  285. package/dist/esm/components/Menu/Menu.js +43 -20
  286. package/dist/esm/components/Menu/Menu.js.map +1 -1
  287. package/dist/esm/components/Menu/components/Checkbox.js +9 -8
  288. package/dist/esm/components/Menu/components/Checkbox.js.map +1 -1
  289. package/dist/esm/components/Menu/components/Content.js +13 -10
  290. package/dist/esm/components/Menu/components/Content.js.map +1 -1
  291. package/dist/esm/components/Menu/components/Header.js +4 -4
  292. package/dist/esm/components/Menu/components/Header.js.map +1 -1
  293. package/dist/esm/components/Menu/components/Item.js +35 -34
  294. package/dist/esm/components/Menu/components/Item.js.map +1 -1
  295. package/dist/esm/components/Menu/components/Link.js +11 -10
  296. package/dist/esm/components/Menu/components/Link.js.map +1 -1
  297. package/dist/esm/components/Menu/components/RadioGroup.js +18 -16
  298. package/dist/esm/components/Menu/components/RadioGroup.js.map +1 -1
  299. package/dist/esm/components/Menu/components/Separator.js +4 -4
  300. package/dist/esm/components/Menu/components/Separator.js.map +1 -1
  301. package/dist/esm/components/Menu/components/Trigger.js +5 -5
  302. package/dist/esm/components/Menu/components/Trigger.js.map +1 -1
  303. package/dist/esm/components/Navigation/Navigation.js +44 -35
  304. package/dist/esm/components/Navigation/Navigation.js.map +1 -1
  305. package/dist/esm/components/Pagination/PageNumbers.js +28 -23
  306. package/dist/esm/components/Pagination/PageNumbers.js.map +1 -1
  307. package/dist/esm/components/Pagination/Pagination.js +56 -39
  308. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  309. package/dist/esm/components/Pagination/usePagination.js +21 -7
  310. package/dist/esm/components/Pagination/usePagination.js.map +1 -1
  311. package/dist/esm/components/Pagination/usePaginationShortcuts.js +9 -9
  312. package/dist/esm/components/Pagination/usePaginationShortcuts.js.map +1 -1
  313. package/dist/esm/components/Popover/Popover.js +34 -29
  314. package/dist/esm/components/Popover/Popover.js.map +1 -1
  315. package/dist/esm/components/Popover/Primitives.js +8 -7
  316. package/dist/esm/components/Popover/Primitives.js.map +1 -1
  317. package/dist/esm/components/Progress/Progress.js +15 -11
  318. package/dist/esm/components/Progress/Progress.js.map +1 -1
  319. package/dist/esm/components/Provider/Provider.js +18 -13
  320. package/dist/esm/components/Provider/Provider.js.map +1 -1
  321. package/dist/esm/components/RadioGroup/RadioGroup.js +64 -52
  322. package/dist/esm/components/RadioGroup/RadioGroup.js.map +1 -1
  323. package/dist/esm/components/SearchInput/SearchInput.js +11 -10
  324. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  325. package/dist/esm/components/Select/Select.js +31 -30
  326. package/dist/esm/components/Select/Select.js.map +1 -1
  327. package/dist/esm/components/Select/useSelect.js +82 -64
  328. package/dist/esm/components/Select/useSelect.js.map +1 -1
  329. package/dist/esm/components/Spinner/Spinner.js +19 -12
  330. package/dist/esm/components/Spinner/Spinner.js.map +1 -1
  331. package/dist/esm/components/Switch/Switch.js +12 -11
  332. package/dist/esm/components/Switch/Switch.js.map +1 -1
  333. package/dist/esm/components/Table/components/BaseTable.js +30 -23
  334. package/dist/esm/components/Table/components/BaseTable.js.map +1 -1
  335. package/dist/esm/components/Table/components/PaginatedTable.js +7 -3
  336. package/dist/esm/components/Table/components/PaginatedTable.js.map +1 -1
  337. package/dist/esm/components/Table/components/Table.js +25 -18
  338. package/dist/esm/components/Table/components/Table.js.map +1 -1
  339. package/dist/esm/components/Table/components/WindowedTable.js +104 -88
  340. package/dist/esm/components/Table/components/WindowedTable.js.map +1 -1
  341. package/dist/esm/components/Table/hooks/plugins/useRowActions.js +146 -122
  342. package/dist/esm/components/Table/hooks/plugins/useRowActions.js.map +1 -1
  343. package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js +61 -57
  344. package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js.map +1 -1
  345. package/dist/esm/components/Table/hooks/plugins/useRowEditing.js +36 -39
  346. package/dist/esm/components/Table/hooks/plugins/useRowEditing.js.map +1 -1
  347. package/dist/esm/components/Table/hooks/plugins/useRowSelect.js +90 -80
  348. package/dist/esm/components/Table/hooks/plugins/useRowSelect.js.map +1 -1
  349. package/dist/esm/components/Table/hooks/useRowCreation.js +64 -29
  350. package/dist/esm/components/Table/hooks/useRowCreation.js.map +1 -1
  351. package/dist/esm/components/Table/hooks/useTable.js +141 -119
  352. package/dist/esm/components/Table/hooks/useTable.js.map +1 -1
  353. package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js +15 -12
  354. package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js.map +1 -1
  355. package/dist/esm/components/Table/util/renderColumn.js +10 -10
  356. package/dist/esm/components/Table/util/renderColumn.js.map +1 -1
  357. package/dist/esm/components/Table/util/renderRow.js +46 -37
  358. package/dist/esm/components/Table/util/renderRow.js.map +1 -1
  359. package/dist/esm/components/Table/util/rowIndexPath.js +16 -14
  360. package/dist/esm/components/Table/util/rowIndexPath.js.map +1 -1
  361. package/dist/esm/components/Table/util/sortTypes.js +31 -23
  362. package/dist/esm/components/Table/util/sortTypes.js.map +1 -1
  363. package/dist/esm/components/Table/util.js +41 -29
  364. package/dist/esm/components/Table/util.js.map +1 -1
  365. package/dist/esm/components/Tabs/Tabs.js +27 -25
  366. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  367. package/dist/esm/components/Textarea/Textarea.js +9 -11
  368. package/dist/esm/components/Textarea/Textarea.js.map +1 -1
  369. package/dist/esm/components/Toast/Toast.js +21 -20
  370. package/dist/esm/components/Toast/Toast.js.map +1 -1
  371. package/dist/esm/components/Toast/Toaster.js +118 -88
  372. package/dist/esm/components/Toast/Toaster.js.map +1 -1
  373. package/dist/esm/components/Toast/util.js +2 -2
  374. package/dist/esm/components/Toast/util.js.map +1 -1
  375. package/dist/esm/components/Tooltip/Tooltip.js +9 -8
  376. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  377. package/dist/esm/components/Tour/Tour.js +50 -44
  378. package/dist/esm/components/Tour/Tour.js.map +1 -1
  379. package/dist/esm/components/Treeview/Treeview.js +36 -26
  380. package/dist/esm/components/Treeview/Treeview.js.map +1 -1
  381. package/dist/esm/components/VisuallyHidden/VisuallyHidden.js +1 -1
  382. package/dist/esm/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  383. package/dist/esm/index.css +661 -665
  384. package/dist/esm/index.js +2 -2
  385. package/dist/esm/primitives/Button.js +13 -9
  386. package/dist/esm/primitives/Button.js.map +1 -1
  387. package/dist/esm/utils/date.js.map +1 -1
  388. package/dist/esm/utils/hooks/useBoundingClientRectListener.js.map +1 -1
  389. package/dist/esm/utils/hooks/useDraggable.js +18 -16
  390. package/dist/esm/utils/hooks/useDraggable.js.map +1 -1
  391. package/dist/esm/utils/hooks/useDropTarget.js +10 -7
  392. package/dist/esm/utils/hooks/useDropTarget.js.map +1 -1
  393. package/dist/esm/utils/hooks/useListKeyboardNavigation.js.map +1 -1
  394. package/dist/esm/utils/hooks/useListScrollTo.js.map +1 -1
  395. package/dist/esm/utils/hooks/useOnClickOutside.js.map +1 -1
  396. package/dist/esm/utils/hooks/useProxiedRef.js +3 -3
  397. package/dist/esm/utils/hooks/useProxiedRef.js.map +1 -1
  398. package/dist/esm/utils/hooks/useTimer.js +17 -9
  399. package/dist/esm/utils/hooks/useTimer.js.map +1 -1
  400. package/dist/esm/utils/input.js +11 -7
  401. package/dist/esm/utils/input.js.map +1 -1
  402. package/dist/esm/utils/mergeRefs.js +2 -2
  403. package/dist/esm/utils/mergeRefs.js.map +1 -1
  404. package/dist/esm/utils/taillwind.js +2 -2
  405. package/dist/esm/utils/taillwind.js.map +1 -1
  406. package/dist/index.css +661 -665
  407. package/dist/taco.cjs.development.js +2746 -2236
  408. package/dist/taco.cjs.development.js.map +1 -1
  409. package/dist/taco.cjs.production.min.js +1 -1
  410. package/dist/taco.cjs.production.min.js.map +1 -1
  411. package/dist/utils/tailwind.d.ts +1 -1
  412. package/package.json +2 -2
  413. package/plugins/tailwindcss-aria-attributes.js +73 -73
  414. package/tailwind.config.js +297 -297
  415. package/types.json +420 -395
  416. package/dist/esm/components/Icon/components/Minus.js.map +0 -1
  417. package/dist/esm/components/Icon/components/PlusCircle.js.map +0 -1
  418. package/dist/esm/components/Icon/components/TickCircle.js.map +0 -1
@@ -1,25 +1,25 @@
1
+ import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose } from '../../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import { forwardRef, useEffect, createElement, cloneElement } from 'react';
2
3
  import cn from 'classnames';
3
4
  import { Icon } from '../Icon/Icon.js';
4
5
  import { useProxiedRef } from '../../utils/hooks/useProxiedRef.js';
5
6
  import { getInputClasses, getButtonStateClasses } from './util.js';
6
7
 
7
- const Input = /*#__PURE__*/forwardRef(function Input(props, ref) {
8
- const {
9
- button,
10
- icon,
11
- highlighted,
12
- invalid,
13
- onKeyDown,
14
- autoFocus,
15
- ...otherProps
16
- } = props;
17
- const inputRef = useProxiedRef(ref);
18
- const hasContainer = button || icon;
19
- const className = cn(getInputClasses(props), 'min-h-[theme(spacing.8)] pointer-events-all', {
8
+ var _excluded = ["button", "icon", "highlighted", "invalid", "onKeyDown", "autoFocus"];
9
+ var Input = /*#__PURE__*/forwardRef(function Input(props, ref) {
10
+ var button = props.button,
11
+ icon = props.icon,
12
+ invalid = props.invalid,
13
+ onKeyDown = props.onKeyDown,
14
+ autoFocus = props.autoFocus,
15
+ otherProps = _objectWithoutPropertiesLoose(props, _excluded);
16
+
17
+ var inputRef = useProxiedRef(ref);
18
+ var hasContainer = button || icon;
19
+ var className = cn(getInputClasses(props), 'min-h-[theme(spacing.8)] pointer-events-all', {
20
20
  'pr-8': !!hasContainer
21
21
  }, !hasContainer && otherProps.className);
22
- useEffect(() => {
22
+ useEffect(function () {
23
23
  if (autoFocus && inputRef.current) {
24
24
  inputRef.current.focus();
25
25
  }
@@ -27,10 +27,10 @@ const Input = /*#__PURE__*/forwardRef(function Input(props, ref) {
27
27
  // if it has scroll height then the browser reverts to native scrolling behaviour only
28
28
  // so we manually override it to ensure _our_ desired behaviour remains intact
29
29
 
30
- const handleKeyDown = event => {
31
- if (event.key === 'Home' || event.key === 'End') {
30
+ var handleKeyDown = function handleKeyDown(event) {
31
+ if (!event.shiftKey && (event.key === 'Home' || event.key === 'End')) {
32
32
  event.preventDefault();
33
- const position = event.key === 'End' ? event.currentTarget.value.length : 0;
33
+ var position = event.key === 'End' ? event.currentTarget.value.length : 0;
34
34
  event.currentTarget.setSelectionRange(position, position);
35
35
  }
36
36
 
@@ -39,7 +39,7 @@ const Input = /*#__PURE__*/forwardRef(function Input(props, ref) {
39
39
  }
40
40
  };
41
41
 
42
- const input = createElement("input", Object.assign({}, otherProps, {
42
+ var input = createElement("input", Object.assign({}, otherProps, {
43
43
  className: className,
44
44
  "data-taco": "input",
45
45
  onKeyDown: handleKeyDown,
@@ -47,21 +47,19 @@ const Input = /*#__PURE__*/forwardRef(function Input(props, ref) {
47
47
  }));
48
48
 
49
49
  if (hasContainer) {
50
- let extra;
50
+ var extra;
51
51
 
52
52
  if (button) {
53
- var _button$props$disable;
53
+ var _cn;
54
54
 
55
- const disabled = (_button$props$disable = button.props.disabled) !== null && _button$props$disable !== void 0 ? _button$props$disable : otherProps.disabled;
56
- const buttonClassName = cn('items-center flex justify-center border absolute rounded-l-none rounded-r right-0 h-full focus:rounded focus:outline-none', {
57
- [getButtonStateClasses(invalid)]: !props.disabled
58
- }, button.props.className);
55
+ var disabled = button.props.disabled || otherProps.disabled;
56
+ var buttonClassName = cn('items-center flex justify-center border absolute rounded-l-none rounded-r right-0 h-full focus:rounded focus:outline-none', (_cn = {}, _cn[getButtonStateClasses(invalid)] = !props.disabled, _cn), button.props.className);
59
57
  extra = cloneElement(button, {
60
58
  className: buttonClassName,
61
- disabled
59
+ disabled: disabled
62
60
  });
63
61
  } else if (icon) {
64
- const iconClassName = cn('items-center flex justify-center absolute pointer-events-none mr-1 p-px right-0 w-5 top-1/2 -translate-y-1/2', {
62
+ var iconClassName = cn('items-center flex justify-center absolute pointer-events-none mr-1 p-px right-0 w-5 top-1/2 -translate-y-1/2', {
65
63
  'text-grey-dark': props.disabled,
66
64
  'text-grey-darkest': !props.disabled
67
65
  });
@@ -73,7 +71,7 @@ const Input = /*#__PURE__*/forwardRef(function Input(props, ref) {
73
71
  });
74
72
  }
75
73
 
76
- const containerClassName = cn('bg-white inline-flex relative rounded w-full', otherProps.className);
74
+ var containerClassName = cn('bg-white inline-flex relative rounded w-full', otherProps.className);
77
75
  return createElement("div", {
78
76
  className: containerClassName,
79
77
  "data-taco": "input-container"
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sources":["../../../../src/components/Input/Input.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport cn from 'classnames';\r\nimport { Icon, IconName } from '../Icon/Icon';\r\nimport { useProxiedRef } from '../../utils/hooks/useProxiedRef';\r\nimport { getButtonStateClasses, getInputClasses } from './util';\r\n\r\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement> & {\r\n /** Shows a button within the input field */\r\n button?: React.ReactElement;\r\n /** Shows an icon within the input field */\r\n icon?: IconName | JSX.Element;\r\n /** Draws attention to the input by changing its style and making it visually prominent */\r\n highlighted?: boolean;\r\n /* Whether the input is in an invalid state */\r\n invalid?: boolean;\r\n};\r\n\r\nexport const Input = React.forwardRef(function Input(props: InputProps, ref: React.Ref<HTMLInputElement>) {\r\n const { button, icon, highlighted, invalid, onKeyDown, autoFocus, ...otherProps } = props;\r\n const inputRef = useProxiedRef<HTMLInputElement>(ref);\r\n const hasContainer = button || icon;\r\n const className = cn(\r\n getInputClasses(props),\r\n 'min-h-[theme(spacing.8)] pointer-events-all',\r\n {\r\n 'pr-8': !!hasContainer,\r\n },\r\n !hasContainer && otherProps.className\r\n );\r\n\r\n React.useEffect(() => {\r\n if (autoFocus && inputRef.current) {\r\n inputRef.current.focus();\r\n }\r\n }, []);\r\n\r\n // home and end keys only navigate to the start/end of input value if the input container does not scroll\r\n // if it has scroll height then the browser reverts to native scrolling behaviour only\r\n // so we manually override it to ensure _our_ desired behaviour remains intact\r\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (event.key === 'Home' || event.key === 'End') {\r\n event.preventDefault();\r\n const position = event.key === 'End' ? event.currentTarget.value.length : 0;\r\n event.currentTarget.setSelectionRange(position, position);\r\n }\r\n\r\n if (onKeyDown) {\r\n onKeyDown(event);\r\n }\r\n };\r\n\r\n const input = <input {...otherProps} className={className} data-taco=\"input\" onKeyDown={handleKeyDown} ref={inputRef} />;\r\n\r\n if (hasContainer) {\r\n let extra: any;\r\n\r\n if (button) {\r\n const disabled = button.props.disabled ?? otherProps.disabled;\r\n const buttonClassName = cn(\r\n 'items-center flex justify-center border absolute rounded-l-none rounded-r right-0 h-full focus:rounded focus:outline-none',\r\n {\r\n [getButtonStateClasses(invalid)]: !props.disabled,\r\n },\r\n button.props.className\r\n );\r\n extra = React.cloneElement(button, {\r\n className: buttonClassName,\r\n disabled,\r\n });\r\n } else if (icon) {\r\n const iconClassName = cn(\r\n 'items-center flex justify-center absolute pointer-events-none mr-1 p-px right-0 w-5 top-1/2 -translate-y-1/2',\r\n {\r\n 'text-grey-dark': props.disabled,\r\n 'text-grey-darkest': !props.disabled,\r\n }\r\n );\r\n extra =\r\n typeof icon === 'string' ? (\r\n <Icon className={iconClassName} name={icon} />\r\n ) : (\r\n React.cloneElement(icon, { className: cn(iconClassName, icon.props.className) })\r\n );\r\n }\r\n\r\n const containerClassName = cn('bg-white inline-flex relative rounded w-full', otherProps.className);\r\n\r\n return (\r\n <div className={containerClassName} data-taco=\"input-container\">\r\n {input}\r\n {extra}\r\n </div>\r\n );\r\n }\r\n\r\n return input;\r\n});\r\n"],"names":["Input","React","props","ref","button","icon","highlighted","invalid","onKeyDown","autoFocus","otherProps","inputRef","useProxiedRef","hasContainer","className","cn","getInputClasses","current","focus","handleKeyDown","event","key","preventDefault","position","currentTarget","value","length","setSelectionRange","input","extra","disabled","buttonClassName","getButtonStateClasses","iconClassName","Icon","name","containerClassName"],"mappings":"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"}
1
+ {"version":3,"file":"Input.js","sources":["../../../../src/components/Input/Input.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport { Icon, IconName } from '../Icon/Icon';\nimport { useProxiedRef } from '../../utils/hooks/useProxiedRef';\nimport { getButtonStateClasses, getInputClasses } from './util';\n\nexport type InputProps = React.InputHTMLAttributes<HTMLInputElement> & {\n /** Shows a button within the input field */\n button?: React.ReactElement;\n /** Shows an icon within the input field */\n icon?: IconName | JSX.Element;\n /** Draws attention to the input by changing its style and making it visually prominent */\n highlighted?: boolean;\n /* Whether the input is in an invalid state */\n invalid?: boolean;\n};\n\nexport const Input = React.forwardRef(function Input(props: InputProps, ref: React.Ref<HTMLInputElement>) {\n const { button, icon, highlighted, invalid, onKeyDown, autoFocus, ...otherProps } = props;\n const inputRef = useProxiedRef<HTMLInputElement>(ref);\n const hasContainer = button || icon;\n const className = cn(\n getInputClasses(props),\n 'min-h-[theme(spacing.8)] pointer-events-all',\n {\n 'pr-8': !!hasContainer,\n },\n !hasContainer && otherProps.className\n );\n\n React.useEffect(() => {\n if (autoFocus && inputRef.current) {\n inputRef.current.focus();\n }\n }, []);\n\n // home and end keys only navigate to the start/end of input value if the input container does not scroll\n // if it has scroll height then the browser reverts to native scrolling behaviour only\n // so we manually override it to ensure _our_ desired behaviour remains intact\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (!event.shiftKey && (event.key === 'Home' || event.key === 'End')) {\n event.preventDefault();\n const position = event.key === 'End' ? event.currentTarget.value.length : 0;\n event.currentTarget.setSelectionRange(position, position);\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n\n const input = <input {...otherProps} className={className} data-taco=\"input\" onKeyDown={handleKeyDown} ref={inputRef} />;\n\n if (hasContainer) {\n let extra: any;\n\n if (button) {\n const disabled = button.props.disabled || otherProps.disabled;\n const buttonClassName = cn(\n 'items-center flex justify-center border absolute rounded-l-none rounded-r right-0 h-full focus:rounded focus:outline-none',\n {\n [getButtonStateClasses(invalid)]: !props.disabled,\n },\n button.props.className\n );\n extra = React.cloneElement(button, {\n className: buttonClassName,\n disabled,\n });\n } else if (icon) {\n const iconClassName = cn(\n 'items-center flex justify-center absolute pointer-events-none mr-1 p-px right-0 w-5 top-1/2 -translate-y-1/2',\n {\n 'text-grey-dark': props.disabled,\n 'text-grey-darkest': !props.disabled,\n }\n );\n extra =\n typeof icon === 'string' ? (\n <Icon className={iconClassName} name={icon} />\n ) : (\n React.cloneElement(icon, { className: cn(iconClassName, icon.props.className) })\n );\n }\n\n const containerClassName = cn('bg-white inline-flex relative rounded w-full', otherProps.className);\n\n return (\n <div className={containerClassName} data-taco=\"input-container\">\n {input}\n {extra}\n </div>\n );\n }\n\n return input;\n});\n"],"names":["Input","React","props","ref","button","icon","invalid","onKeyDown","autoFocus","otherProps","inputRef","useProxiedRef","hasContainer","className","cn","getInputClasses","current","focus","handleKeyDown","event","shiftKey","key","preventDefault","position","currentTarget","value","length","setSelectionRange","input","extra","disabled","buttonClassName","getButtonStateClasses","iconClassName","Icon","name","containerClassName"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import cn from 'classnames';
2
2
 
3
- const getInputClasses = props => {
3
+ var getInputClasses = function getInputClasses(props) {
4
4
  return cn('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', {
5
5
  'cursor-not-allowed text-black bg-grey': props.readOnly,
6
6
  'border-grey text-opacity-25 cursor-not-allowed': props.disabled,
@@ -10,7 +10,7 @@ const getInputClasses = props => {
10
10
  'border-red hover:shadow-[0_0_0.15rem_theme(colors.red.DEFAULT)] focus:border-red-light focus:yt-focus-red active:border-red-dark': props.invalid
11
11
  });
12
12
  };
13
- const getButtonStateClasses = invalid => {
13
+ var getButtonStateClasses = function getButtonStateClasses(invalid) {
14
14
  if (invalid) {
15
15
  return '!border-red focus:!border-red-light focus:yt-focus-red peer-focus:!border-red-light peer-focus:peer-active:!border-red-dark';
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"util.js","sources":["../../../../src/components/Input/util.ts"],"sourcesContent":["import cn from 'classnames';\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 '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 '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 !props.invalid,\r\n '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 props.invalid,\r\n }\r\n );\r\n};\r\n\r\nexport const getButtonStateClasses = (invalid: boolean | undefined): string => {\r\n if (invalid) {\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\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"],"names":["getInputClasses","props","cn","readOnly","disabled","highlighted","invalid","getButtonStateClasses"],"mappings":";;MAEaA,eAAe,GAAGC,KAAK;AAChC,SAAOC,EAAE,CACL,gKADK,EAEL;AACI,6CAAyCD,KAAK,CAACE,QADnD;AAEI,sDAAkDF,KAAK,CAACG,QAF5D;AAGI,kCAA8BH,KAAK,CAACI,WAAN,IAAqBJ,KAAK,CAACG,QAH7D;AAII,gCAA4BH,KAAK,CAACI,WAAN,IAAqB,CAACJ,KAAK,CAACG,QAJ5D;AAKI,2IACI,CAACH,KAAK,CAACK,OANf;AAOI,wIACIL,KAAK,CAACK;AARd,GAFK,CAAT;AAaH;MAEYC,qBAAqB,GAAID,OAAD;AACjC,MAAIA,OAAJ,EAAa;AACT,WAAO,6HAAP;AACH;;AAED,SAAO,mHAAP;AACH;;;;"}
1
+ {"version":3,"file":"util.js","sources":["../../../../src/components/Input/util.ts"],"sourcesContent":["import cn from 'classnames';\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 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 'bg-[rgba(255,255,0,0.075)]': props.highlighted && props.disabled,\n 'bg-[rgba(255,255,0,0.2)]': props.highlighted && !props.disabled,\n '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 !props.invalid,\n '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 props.invalid,\n }\n );\n};\n\nexport const getButtonStateClasses = (invalid: boolean | undefined): string => {\n if (invalid) {\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\n return '!border-grey-dark focus:!border-blue-light peer-focus:!border-blue-light peer-focus:peer-active:!border-blue-dark';\n};\n"],"names":["getInputClasses","props","cn","readOnly","disabled","highlighted","invalid","getButtonStateClasses"],"mappings":";;IAEaA,eAAe,GAAG,SAAlBA,eAAkB,CAAAC,KAAK;AAChC,SAAOC,EAAE,CACL,gKADK,EAEL;AACI,6CAAyCD,KAAK,CAACE,QADnD;AAEI,sDAAkDF,KAAK,CAACG,QAF5D;AAGI,kCAA8BH,KAAK,CAACI,WAAN,IAAqBJ,KAAK,CAACG,QAH7D;AAII,gCAA4BH,KAAK,CAACI,WAAN,IAAqB,CAACJ,KAAK,CAACG,QAJ5D;AAKI,2IACI,CAACH,KAAK,CAACK,OANf;AAOI,wIACIL,KAAK,CAACK;AARd,GAFK,CAAT;AAaH;IAEYC,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACD,OAAD;AACjC,MAAIA,OAAJ,EAAa;AACT,WAAO,6HAAP;AACH;;AAED,SAAO,mHAAP;AACH;;;;"}
@@ -1,52 +1,53 @@
1
+ import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import { forwardRef, createElement } from 'react';
2
3
  import cn from 'classnames';
3
4
  import { ScrollableList } from './ScrollableList.js';
4
5
  import { useListbox } from './useListbox.js';
5
6
  import { useMultiListbox } from './useMultiListbox.js';
6
7
 
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);
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);
17
19
  return createElement("span", {
18
20
  "data-taco": "listbox",
19
21
  className: className
20
22
  }, createElement(ScrollableList, Object.assign({}, list, {
21
- style: { ...list.style,
23
+ style: _extends({}, list.style, {
22
24
  maxHeight: 'calc(12rem + 2px)'
23
25
  /* (6 * option height) + listbox border */
24
26
 
25
- }
27
+ })
26
28
  })), createElement("input", Object.assign({}, input, {
27
29
  className: "hidden",
28
30
  type: "text"
29
31
  })));
30
32
  });
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);
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);
41
42
  return createElement("span", {
42
43
  "data-taco": "listbox",
43
44
  className: className
44
45
  }, createElement(ScrollableList, Object.assign({}, list, {
45
- style: { ...list.style,
46
+ style: _extends({}, list.style, {
46
47
  maxHeight: 'calc(12rem + 2px + 2px)'
47
48
  /* (6 * option height) + listbox border + ALL_OPTIONS bottom border */
48
49
 
49
- }
50
+ })
50
51
  })), createElement("input", Object.assign({}, input, {
51
52
  className: "hidden",
52
53
  type: "text"
@@ -1 +1 @@
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\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 /* Whether the input is in an invalid state */\r\n invalid?: 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 /**\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":";;;;;;MAuDaA,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
+ {"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';\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 /* Whether the input is in an invalid state */\n invalid?: 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 /**\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":";;;;;;;;;IAuDaA,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,3 +1,4 @@
1
+ import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import { forwardRef, useMemo, createRef, useEffect, createElement } from 'react';
2
3
  import cn from 'classnames';
3
4
  import { Spinner } from '../Spinner/Spinner.js';
@@ -8,10 +9,14 @@ import { getInputClasses } from '../Input/util.js';
8
9
  import { getNextIndexFromKeycode } from '../../utils/hooks/useListKeyboardNavigation.js';
9
10
  import { useListScrollTo } from '../../utils/hooks/useListScrollTo.js';
10
11
 
11
- const getId = (id, value) => `${id}_${value}`;
12
+ var _excluded = ["data", "disabled", "highlighted", "id", "invalid", "loading", "onChange", "onClick", "onFocus", "onKeyDown", "readOnly", "scrollOnFocus", "value", "multiselect", "selectedIndexes", "allOptionsSelected"],
13
+ _excluded2 = ["children", "icon"];
14
+ var getId = function getId(id, value) {
15
+ return id + "_" + value;
16
+ };
12
17
 
13
- const getNextEnabledItem = (event, data, index) => {
14
- const nextIndex = getNextIndexFromKeycode(event.keyCode, data.length, index);
18
+ var getNextEnabledItem = function getNextEnabledItem(event, data, index) {
19
+ var nextIndex = getNextIndexFromKeycode(event.keyCode, data.length, index);
15
20
 
16
21
  if (nextIndex) {
17
22
  if (nextIndex === index) {
@@ -24,35 +29,40 @@ const getNextEnabledItem = (event, data, index) => {
24
29
  return nextIndex;
25
30
  };
26
31
 
27
- const ScrollableList = /*#__PURE__*/forwardRef(function ScrollableList(props, ref) {
28
- const {
29
- data,
30
- disabled,
31
- highlighted,
32
- id,
33
- invalid: _,
34
- loading,
35
- onChange: setCurrentIndex,
36
- onClick,
37
- onFocus,
38
- onKeyDown,
39
- readOnly,
40
- scrollOnFocus = false,
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(() => {
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 () {
56
66
  var _itemRefs$currentInde;
57
67
 
58
68
  if (currentIndex && (_itemRefs$currentInde = itemRefs[currentIndex]) !== null && _itemRefs$currentInde !== void 0 && _itemRefs$currentInde.current) {
@@ -63,12 +73,12 @@ const ScrollableList = /*#__PURE__*/forwardRef(function ScrollableList(props, re
63
73
  });
64
74
  }
65
75
  }, []);
66
- useEffect(() => {
76
+ useEffect(function () {
67
77
  scrollTo(currentIndex);
68
78
  }, [currentIndex]);
69
79
 
70
- const handleKeyDown = event => {
71
- const nextIndex = getNextEnabledItem(event, data, currentIndex);
80
+ var handleKeyDown = function handleKeyDown(event) {
81
+ var nextIndex = getNextEnabledItem(event, data, currentIndex);
72
82
 
73
83
  if (nextIndex !== undefined && nextIndex !== currentIndex) {
74
84
  event.preventDefault();
@@ -78,21 +88,23 @@ const ScrollableList = /*#__PURE__*/forwardRef(function ScrollableList(props, re
78
88
 
79
89
  if (onKeyDown) {
80
90
  event.persist();
81
- const index = nextIndex !== undefined ? nextIndex : currentIndex;
91
+ var index = nextIndex !== undefined ? nextIndex : currentIndex;
82
92
  onKeyDown(event, index);
83
93
  }
84
94
  };
85
95
 
86
- const handleClick = index => event => {
87
- setCurrentIndex(index);
96
+ var handleClick = function handleClick(index) {
97
+ return function (event) {
98
+ setCurrentIndex(index);
88
99
 
89
- if (onClick) {
90
- event.persist();
91
- onClick(event, index);
92
- }
100
+ if (onClick) {
101
+ event.persist();
102
+ onClick(event, index);
103
+ }
104
+ };
93
105
  };
94
106
 
95
- const handleFocus = event => {
107
+ var handleFocus = function handleFocus(event) {
96
108
  if (scrollOnFocus) {
97
109
  scrollTo(currentIndex);
98
110
  }
@@ -103,33 +115,36 @@ const ScrollableList = /*#__PURE__*/forwardRef(function ScrollableList(props, re
103
115
  }
104
116
  };
105
117
 
106
- const getOptionCheckedState = (optionValue, index) => {
118
+ var getOptionCheckedState = function getOptionCheckedState(optionValue, index) {
107
119
  if (optionValue === '#ALL-OPTIONS#') {
108
120
  return allOptionsSelected;
109
121
  } else if (!optionValue || !selectedIndexes) {
110
122
  return false;
111
123
  } else {
112
- return selectedIndexes.findIndex(i => i === index) !== -1;
124
+ return selectedIndexes.findIndex(function (i) {
125
+ return i === index;
126
+ }) !== -1;
113
127
  }
114
128
  };
115
129
 
116
- const list = { ...otherProps,
130
+ var list = _extends({}, otherProps, {
117
131
  className: cn('inline-flex flex-col list-none !p-0 m-0 overflow-y-auto h-auto', getInputClasses(props), {
118
132
  'yt-list--multiselect': multiselect,
119
133
  'pointer-events-none': disabled,
120
134
  'cursor-not-allowed': disabled || readOnly
121
135
  }, otherProps.className),
122
- disabled,
123
- id,
136
+ disabled: disabled,
137
+ id: id,
124
138
  onFocus: !disabled && !readOnly ? handleFocus : undefined,
125
139
  onKeyDown: !disabled && !readOnly ? handleKeyDown : undefined,
126
- readOnly,
140
+ readOnly: readOnly,
127
141
  ref: listRef,
128
142
  role: 'listbox',
129
143
  tabIndex: otherProps.tabIndex || 0
130
- };
131
- const options = data.map((option, index) => {
132
- const depth = option.path ? option.path.split('.').length - 1 : 0;
144
+ });
145
+
146
+ var options = data.map(function (option, index) {
147
+ var depth = option.path ? option.path.split('.').length - 1 : 0;
133
148
  return {
134
149
  'aria-selected': multiselect ? getOptionCheckedState(String(option.value), index) : currentIndex === index,
135
150
  'data-focused': currentIndex === index,
@@ -145,7 +160,7 @@ const ScrollableList = /*#__PURE__*/forwardRef(function ScrollableList(props, re
145
160
  ref: itemRefs[index],
146
161
  role: 'option',
147
162
  style: depth > 0 ? {
148
- paddingLeft: `${depth + 1}rem`
163
+ paddingLeft: depth + 1 + "rem"
149
164
  } : undefined
150
165
  };
151
166
  });
@@ -155,17 +170,21 @@ const ScrollableList = /*#__PURE__*/forwardRef(function ScrollableList(props, re
155
170
  className: "yt-list__empty"
156
171
  }, createElement("span", null, createElement(Spinner, {
157
172
  delay: 0
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", {
173
+ })), createElement("span", null, texts.listbox.loading)) : options.length ? options.map(function (_ref) {
174
+ var children = _ref.children,
175
+ icon = _ref.icon,
176
+ optionProps = _objectWithoutPropertiesLoose(_ref, _excluded2);
177
+
178
+ return createElement("li", Object.assign({}, optionProps), icon, createElement("span", {
179
+ className: "flex-grow truncate text-left"
180
+ }, children), multiselect && createElement(Checkbox, {
181
+ checked: optionProps['aria-selected'],
182
+ onChange: function onChange() {
183
+ return null;
184
+ },
185
+ className: "pointer-events-none ml-2 self-center p-px"
186
+ }));
187
+ }) : createElement("li", {
169
188
  className: "yt-list__empty"
170
189
  }, createElement("span", null, texts.listbox.empty)));
171
190
  });
@@ -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 { 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 /* Whether the input is in an invalid state */\r\n invalid?: 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.\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 /**\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 invalid: _,\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 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","invalid","_","loading","onChange","setCurrentIndex","onClick","onFocus","onKeyDown","readOnly","scrollOnFocus","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":"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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 { 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 /* Whether the input is in an invalid state */\n invalid?: 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.\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 /**\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 invalid: _,\n loading,\n onChange: setCurrentIndex,\n onClick,\n onFocus,\n onKeyDown,\n readOnly,\n scrollOnFocus = false,\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 if (currentIndex && itemRefs[currentIndex]?.current) {\n itemRefs[currentIndex].current?.scrollIntoView({\n block: 'center',\n });\n }\n }, []);\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 self-center 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","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":"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"}