@economic/taco 1.0.7 → 1.0.8

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 (407) hide show
  1. package/README.md +84 -84
  2. package/dist/components/Card/Card.d.ts +14 -0
  3. package/dist/esm/components/Accordion/Accordion.js.map +1 -1
  4. package/dist/esm/components/Backdrop/Backdrop.js.map +1 -1
  5. package/dist/esm/components/Badge/Badge.js.map +1 -1
  6. package/dist/esm/components/Banner/Banner.js.map +1 -1
  7. package/dist/esm/components/Banner/util.js +1 -1
  8. package/dist/esm/components/Banner/util.js.map +1 -1
  9. package/dist/esm/components/Button/Button.js.map +1 -1
  10. package/dist/esm/components/Button/util.js +23 -18
  11. package/dist/esm/components/Button/util.js.map +1 -1
  12. package/dist/esm/components/Calendar/Calendar.js.map +1 -1
  13. package/dist/esm/components/Card/Card.js +75 -0
  14. package/dist/esm/components/Card/Card.js.map +1 -0
  15. package/dist/esm/components/Checkbox/Checkbox.js +18 -15
  16. package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
  17. package/dist/esm/components/Combobox/Combobox.js +25 -23
  18. package/dist/esm/components/Combobox/Combobox.js.map +1 -1
  19. package/dist/esm/components/Combobox/useCombobox.js +87 -67
  20. package/dist/esm/components/Combobox/useCombobox.js.map +1 -1
  21. package/dist/esm/components/Datepicker/Datepicker.js +52 -48
  22. package/dist/esm/components/Datepicker/Datepicker.js.map +1 -1
  23. package/dist/esm/components/Datepicker/useDatepicker.js +34 -27
  24. package/dist/esm/components/Datepicker/useDatepicker.js.map +1 -1
  25. package/dist/esm/components/Dialog/Context.js +4 -4
  26. package/dist/esm/components/Dialog/Context.js.map +1 -1
  27. package/dist/esm/components/Dialog/Dialog.js +58 -39
  28. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  29. package/dist/esm/components/Dialog/components/Content.js +44 -39
  30. package/dist/esm/components/Dialog/components/Content.js.map +1 -1
  31. package/dist/esm/components/Dialog/components/Drawer.js +3 -3
  32. package/dist/esm/components/Dialog/components/Drawer.js.map +1 -1
  33. package/dist/esm/components/Dialog/components/Extra.js +2 -2
  34. package/dist/esm/components/Dialog/components/Extra.js.map +1 -1
  35. package/dist/esm/components/Dialog/components/Trigger.js +2 -2
  36. package/dist/esm/components/Dialog/components/Trigger.js.map +1 -1
  37. package/dist/esm/components/Field/Field.js +12 -10
  38. package/dist/esm/components/Field/Field.js.map +1 -1
  39. package/dist/esm/components/Form/Form.js +8 -6
  40. package/dist/esm/components/Form/Form.js.map +1 -1
  41. package/dist/esm/components/Group/Group.js +8 -6
  42. package/dist/esm/components/Group/Group.js.map +1 -1
  43. package/dist/esm/components/Hanger/Hanger.js +35 -27
  44. package/dist/esm/components/Hanger/Hanger.js.map +1 -1
  45. package/dist/esm/components/HoverCard/HoverCard.js +9 -8
  46. package/dist/esm/components/HoverCard/HoverCard.js.map +1 -1
  47. package/dist/esm/components/Icon/Icon.js +8 -7
  48. package/dist/esm/components/Icon/Icon.js.map +1 -1
  49. package/dist/esm/components/Icon/components/AccountPreview.js.map +1 -1
  50. package/dist/esm/components/Icon/components/Accounting.js.map +1 -1
  51. package/dist/esm/components/Icon/components/AccountingYear.js.map +1 -1
  52. package/dist/esm/components/Icon/components/AccountingYearCancel.js.map +1 -1
  53. package/dist/esm/components/Icon/components/ArrowBottom.js.map +1 -1
  54. package/dist/esm/components/Icon/components/ArrowDown.js.map +1 -1
  55. package/dist/esm/components/Icon/components/ArrowEnd.js.map +1 -1
  56. package/dist/esm/components/Icon/components/ArrowLeft.js.map +1 -1
  57. package/dist/esm/components/Icon/components/ArrowRight.js.map +1 -1
  58. package/dist/esm/components/Icon/components/ArrowStart.js.map +1 -1
  59. package/dist/esm/components/Icon/components/ArrowTop.js.map +1 -1
  60. package/dist/esm/components/Icon/components/ArrowUp.js.map +1 -1
  61. package/dist/esm/components/Icon/components/Attach.js.map +1 -1
  62. package/dist/esm/components/Icon/components/AttachAuto.js.map +1 -1
  63. package/dist/esm/components/Icon/components/AttachCancel.js.map +1 -1
  64. package/dist/esm/components/Icon/components/Autotext.js.map +1 -1
  65. package/dist/esm/components/Icon/components/AutotextInsert.js.map +1 -1
  66. package/dist/esm/components/Icon/components/Basic.js.map +1 -1
  67. package/dist/esm/components/Icon/components/BasicTabs.js.map +1 -1
  68. package/dist/esm/components/Icon/components/BellSolid.js.map +1 -1
  69. package/dist/esm/components/Icon/components/Book.js.map +1 -1
  70. package/dist/esm/components/Icon/components/Booking.js.map +1 -1
  71. package/dist/esm/components/Icon/components/Budget.js.map +1 -1
  72. package/dist/esm/components/Icon/components/Calendar.js.map +1 -1
  73. package/dist/esm/components/Icon/components/CashAccount.js.map +1 -1
  74. package/dist/esm/components/Icon/components/CashReports.js.map +1 -1
  75. package/dist/esm/components/Icon/components/Chat.js.map +1 -1
  76. package/dist/esm/components/Icon/components/ChatSolid.js.map +1 -1
  77. package/dist/esm/components/Icon/components/ChevronDown.js.map +1 -1
  78. package/dist/esm/components/Icon/components/ChevronDownDouble.js.map +1 -1
  79. package/dist/esm/components/Icon/components/ChevronDownSolid.js.map +1 -1
  80. package/dist/esm/components/Icon/components/ChevronLeft.js.map +1 -1
  81. package/dist/esm/components/Icon/components/ChevronLeftDouble.js.map +1 -1
  82. package/dist/esm/components/Icon/components/ChevronRight.js.map +1 -1
  83. package/dist/esm/components/Icon/components/ChevronRightDouble.js.map +1 -1
  84. package/dist/esm/components/Icon/components/ChevronUp.js.map +1 -1
  85. package/dist/esm/components/Icon/components/ChevronUpDouble.js.map +1 -1
  86. package/dist/esm/components/Icon/components/ChevronUpSolid.js.map +1 -1
  87. package/dist/esm/components/Icon/components/CircleClose.js.map +1 -1
  88. package/dist/esm/components/Icon/components/CircleMinus.js.map +1 -1
  89. package/dist/esm/components/Icon/components/CirclePlus.js.map +1 -1
  90. package/dist/esm/components/Icon/components/CircleTick.js.map +1 -1
  91. package/dist/esm/components/Icon/components/Clamp.js.map +1 -1
  92. package/dist/esm/components/Icon/components/ClampOpen.js.map +1 -1
  93. package/dist/esm/components/Icon/components/Close.js.map +1 -1
  94. package/dist/esm/components/Icon/components/ConnectionEnable.js.map +1 -1
  95. package/dist/esm/components/Icon/components/ConnectionRevoke.js.map +1 -1
  96. package/dist/esm/components/Icon/components/Contacts.js.map +1 -1
  97. package/dist/esm/components/Icon/components/Copy.js.map +1 -1
  98. package/dist/esm/components/Icon/components/Courses.js.map +1 -1
  99. package/dist/esm/components/Icon/components/Credit.js.map +1 -1
  100. package/dist/esm/components/Icon/components/Delete.js.map +1 -1
  101. package/dist/esm/components/Icon/components/DeletePermanently.js.map +1 -1
  102. package/dist/esm/components/Icon/components/Depecriate.js.map +1 -1
  103. package/dist/esm/components/Icon/components/Developer.js.map +1 -1
  104. package/dist/esm/components/Icon/components/DistributionTemplate.js.map +1 -1
  105. package/dist/esm/components/Icon/components/Document.js.map +1 -1
  106. package/dist/esm/components/Icon/components/DocumentApprove.js.map +1 -1
  107. package/dist/esm/components/Icon/components/DocumentCreateEntry.js.map +1 -1
  108. package/dist/esm/components/Icon/components/DocumentCut.js.map +1 -1
  109. package/dist/esm/components/Icon/components/DocumentError.js.map +1 -1
  110. package/dist/esm/components/Icon/components/DocumentIsolatePage.js.map +1 -1
  111. package/dist/esm/components/Icon/components/DocumentMerge.js.map +1 -1
  112. package/dist/esm/components/Icon/components/DocumentMove.js.map +1 -1
  113. package/dist/esm/components/Icon/components/DocumentPreview.js.map +1 -1
  114. package/dist/esm/components/Icon/components/DocumentReceived.js.map +1 -1
  115. package/dist/esm/components/Icon/components/DocumentRejectedRequest.js.map +1 -1
  116. package/dist/esm/components/Icon/components/DocumentSplit.js.map +1 -1
  117. package/dist/esm/components/Icon/components/DocumentTime.js.map +1 -1
  118. package/dist/esm/components/Icon/components/Download.js.map +1 -1
  119. package/dist/esm/components/Icon/components/Drag.js.map +1 -1
  120. package/dist/esm/components/Icon/components/ECopedia.js.map +1 -1
  121. package/dist/esm/components/Icon/components/ESignature.js.map +1 -1
  122. package/dist/esm/components/Icon/components/Edit.js.map +1 -1
  123. package/dist/esm/components/Icon/components/EllipsisHorizontal.js.map +1 -1
  124. package/dist/esm/components/Icon/components/EllipsisVertical.js.map +1 -1
  125. package/dist/esm/components/Icon/components/EntriesOnAccount.js.map +1 -1
  126. package/dist/esm/components/Icon/components/EntriesOpen.js.map +1 -1
  127. package/dist/esm/components/Icon/components/EntriesWarning.js.map +1 -1
  128. package/dist/esm/components/Icon/components/EntryTypeCustomerInvoice.js.map +1 -1
  129. package/dist/esm/components/Icon/components/EntryTypeCustomerPayment.js.map +1 -1
  130. package/dist/esm/components/Icon/components/EntryTypeJournalEntry.js.map +1 -1
  131. package/dist/esm/components/Icon/components/EntryTypeManualCustomerInvoice.js.map +1 -1
  132. package/dist/esm/components/Icon/components/EntryTypeSupplierInvoice.js.map +1 -1
  133. package/dist/esm/components/Icon/components/EntryTypeSupplierPayment.js.map +1 -1
  134. package/dist/esm/components/Icon/components/Envelope.js.map +1 -1
  135. package/dist/esm/components/Icon/components/EnvelopeApproved.js.map +1 -1
  136. package/dist/esm/components/Icon/components/ExpandView.js.map +1 -1
  137. package/dist/esm/components/Icon/components/Expenses.js.map +1 -1
  138. package/dist/esm/components/Icon/components/Export.js.map +1 -1
  139. package/dist/esm/components/Icon/components/ExportToExcel.js.map +1 -1
  140. package/dist/esm/components/Icon/components/ExportToPdf.js.map +1 -1
  141. package/dist/esm/components/Icon/components/Filter.js.map +1 -1
  142. package/dist/esm/components/Icon/components/FilterSolid.js.map +1 -1
  143. package/dist/esm/components/Icon/components/GraphSolid.js.map +1 -1
  144. package/dist/esm/components/Icon/components/Hash.js.map +1 -1
  145. package/dist/esm/components/Icon/components/Home.js.map +1 -1
  146. package/dist/esm/components/Icon/components/Images.js.map +1 -1
  147. package/dist/esm/components/Icon/components/Import.js.map +1 -1
  148. package/dist/esm/components/Icon/components/Inbox.js.map +1 -1
  149. package/dist/esm/components/Icon/components/InboxEinvoicing.js.map +1 -1
  150. package/dist/esm/components/Icon/components/InboxScanning.js.map +1 -1
  151. package/dist/esm/components/Icon/components/InboxSmart.js.map +1 -1
  152. package/dist/esm/components/Icon/components/Info.js.map +1 -1
  153. package/dist/esm/components/Icon/components/Inventory.js.map +1 -1
  154. package/dist/esm/components/Icon/components/InventoryMatrix.js.map +1 -1
  155. package/dist/esm/components/Icon/components/JournalPro.js.map +1 -1
  156. package/dist/esm/components/Icon/components/Layout.js.map +1 -1
  157. package/dist/esm/components/Icon/components/LayoutBoth.js.map +1 -1
  158. package/dist/esm/components/Icon/components/LayoutFirst.js.map +1 -1
  159. package/dist/esm/components/Icon/components/LayoutLast.js.map +1 -1
  160. package/dist/esm/components/Icon/components/LayoutNone.js.map +1 -1
  161. package/dist/esm/components/Icon/components/LedgerCard.js.map +1 -1
  162. package/dist/esm/components/Icon/components/LedgerCardCustomerReminder.js.map +1 -1
  163. package/dist/esm/components/Icon/components/LedgerCardManualCustomerInvoice.js.map +1 -1
  164. package/dist/esm/components/Icon/components/LedgerCardObsoleteStock.js.map +1 -1
  165. package/dist/esm/components/Icon/components/LedgerCardOpeningEntry.js.map +1 -1
  166. package/dist/esm/components/Icon/components/LedgerCardReservedEntry.js.map +1 -1
  167. package/dist/esm/components/Icon/components/LedgerCardShrinkagePilferage.js.map +1 -1
  168. package/dist/esm/components/Icon/components/LedgerCardStockAdjustment.js.map +1 -1
  169. package/dist/esm/components/Icon/components/LedgerCardTransferredOpeningEntry.js.map +1 -1
  170. package/dist/esm/components/Icon/components/Lightbulb.js.map +1 -1
  171. package/dist/esm/components/Icon/components/Line.js.map +1 -1
  172. package/dist/esm/components/Icon/components/List.js.map +1 -1
  173. package/dist/esm/components/Icon/components/ListBulleted.js.map +1 -1
  174. package/dist/esm/components/Icon/components/ListSearch.js.map +1 -1
  175. package/dist/esm/components/Icon/components/LockOpen.js.map +1 -1
  176. package/dist/esm/components/Icon/components/Log.js.map +1 -1
  177. package/dist/esm/components/Icon/components/Market.js.map +1 -1
  178. package/dist/esm/components/Icon/components/MatchAmount.js.map +1 -1
  179. package/dist/esm/components/Icon/components/MatchEntries.js.map +1 -1
  180. package/dist/esm/components/Icon/components/Mileage.js.map +1 -1
  181. package/dist/esm/components/Icon/components/ModalResize.js.map +1 -1
  182. package/dist/esm/components/Icon/components/ModalShrink.js.map +1 -1
  183. package/dist/esm/components/Icon/components/More.js.map +1 -1
  184. package/dist/esm/components/Icon/components/MoreSolid.js.map +1 -1
  185. package/dist/esm/components/Icon/components/Move.js.map +1 -1
  186. package/dist/esm/components/Icon/components/NavigationList.js.map +1 -1
  187. package/dist/esm/components/Icon/components/Note.js.map +1 -1
  188. package/dist/esm/components/Icon/components/NoteFollowUp.js.map +1 -1
  189. package/dist/esm/components/Icon/components/NoteRead.js.map +1 -1
  190. package/dist/esm/components/Icon/components/PartnerApi.js.map +1 -1
  191. package/dist/esm/components/Icon/components/Period.js.map +1 -1
  192. package/dist/esm/components/Icon/components/PersonChange.js.map +1 -1
  193. package/dist/esm/components/Icon/components/PersonMinus.js.map +1 -1
  194. package/dist/esm/components/Icon/components/PersonPlus.js.map +1 -1
  195. package/dist/esm/components/Icon/components/PersonTick.js.map +1 -1
  196. package/dist/esm/components/Icon/components/Play.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/Time.js.map +1 -1
  243. package/dist/esm/components/Icon/components/Transfer.js.map +1 -1
  244. package/dist/esm/components/Icon/components/TransferCancel.js.map +1 -1
  245. package/dist/esm/components/Icon/components/TransferLocked.js.map +1 -1
  246. package/dist/esm/components/Icon/components/Undock.js.map +1 -1
  247. package/dist/esm/components/Icon/components/Unreconciled.js.map +1 -1
  248. package/dist/esm/components/Icon/components/Warning.js.map +1 -1
  249. package/dist/esm/components/Icon/components/Webshop.js.map +1 -1
  250. package/dist/esm/components/Icon/components/Website.js.map +1 -1
  251. package/dist/esm/components/Icon/components/Workflow.js.map +1 -1
  252. package/dist/esm/components/Icon/components/Zoom.js.map +1 -1
  253. package/dist/esm/components/Icon/components/index.js +4 -4
  254. package/dist/esm/components/Icon/components/index.js.map +1 -1
  255. package/dist/esm/components/IconButton/IconButton.js +11 -9
  256. package/dist/esm/components/IconButton/IconButton.js.map +1 -1
  257. package/dist/esm/components/Input/Input.js +25 -25
  258. package/dist/esm/components/Input/Input.js.map +1 -1
  259. package/dist/esm/components/Input/util.js +2 -2
  260. package/dist/esm/components/Input/util.js.map +1 -1
  261. package/dist/esm/components/Listbox/Listbox.js +25 -24
  262. package/dist/esm/components/Listbox/Listbox.js.map +1 -1
  263. package/dist/esm/components/Listbox/ScrollableList.js +83 -64
  264. package/dist/esm/components/Listbox/ScrollableList.js.map +1 -1
  265. package/dist/esm/components/Listbox/useListbox.js +60 -51
  266. package/dist/esm/components/Listbox/useListbox.js.map +1 -1
  267. package/dist/esm/components/Listbox/useMultiListbox.js +91 -64
  268. package/dist/esm/components/Listbox/useMultiListbox.js.map +1 -1
  269. package/dist/esm/components/Listbox/useTypeahead.js +9 -10
  270. package/dist/esm/components/Listbox/useTypeahead.js.map +1 -1
  271. package/dist/esm/components/Listbox/util.js +85 -48
  272. package/dist/esm/components/Listbox/util.js.map +1 -1
  273. package/dist/esm/components/Menu/Context.js +2 -2
  274. package/dist/esm/components/Menu/Context.js.map +1 -1
  275. package/dist/esm/components/Menu/Menu.js +43 -20
  276. package/dist/esm/components/Menu/Menu.js.map +1 -1
  277. package/dist/esm/components/Menu/components/Checkbox.js +9 -8
  278. package/dist/esm/components/Menu/components/Checkbox.js.map +1 -1
  279. package/dist/esm/components/Menu/components/Content.js +13 -10
  280. package/dist/esm/components/Menu/components/Content.js.map +1 -1
  281. package/dist/esm/components/Menu/components/Header.js +4 -4
  282. package/dist/esm/components/Menu/components/Header.js.map +1 -1
  283. package/dist/esm/components/Menu/components/Item.js +35 -34
  284. package/dist/esm/components/Menu/components/Item.js.map +1 -1
  285. package/dist/esm/components/Menu/components/Link.js +11 -10
  286. package/dist/esm/components/Menu/components/Link.js.map +1 -1
  287. package/dist/esm/components/Menu/components/RadioGroup.js +18 -16
  288. package/dist/esm/components/Menu/components/RadioGroup.js.map +1 -1
  289. package/dist/esm/components/Menu/components/Separator.js +4 -4
  290. package/dist/esm/components/Menu/components/Separator.js.map +1 -1
  291. package/dist/esm/components/Menu/components/Trigger.js +5 -5
  292. package/dist/esm/components/Menu/components/Trigger.js.map +1 -1
  293. package/dist/esm/components/Navigation/Navigation.js +44 -35
  294. package/dist/esm/components/Navigation/Navigation.js.map +1 -1
  295. package/dist/esm/components/Pagination/PageNumbers.js +28 -23
  296. package/dist/esm/components/Pagination/PageNumbers.js.map +1 -1
  297. package/dist/esm/components/Pagination/Pagination.js +56 -39
  298. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  299. package/dist/esm/components/Pagination/usePagination.js +21 -7
  300. package/dist/esm/components/Pagination/usePagination.js.map +1 -1
  301. package/dist/esm/components/Pagination/usePaginationShortcuts.js +9 -9
  302. package/dist/esm/components/Pagination/usePaginationShortcuts.js.map +1 -1
  303. package/dist/esm/components/Popover/Popover.js +34 -29
  304. package/dist/esm/components/Popover/Popover.js.map +1 -1
  305. package/dist/esm/components/Popover/Primitives.js +8 -7
  306. package/dist/esm/components/Popover/Primitives.js.map +1 -1
  307. package/dist/esm/components/Progress/Progress.js +15 -11
  308. package/dist/esm/components/Progress/Progress.js.map +1 -1
  309. package/dist/esm/components/Provider/Provider.js +18 -13
  310. package/dist/esm/components/Provider/Provider.js.map +1 -1
  311. package/dist/esm/components/RadioGroup/RadioGroup.js +57 -45
  312. package/dist/esm/components/RadioGroup/RadioGroup.js.map +1 -1
  313. package/dist/esm/components/SearchInput/SearchInput.js +12 -10
  314. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  315. package/dist/esm/components/Select/Select.js +31 -30
  316. package/dist/esm/components/Select/Select.js.map +1 -1
  317. package/dist/esm/components/Select/useSelect.js +81 -63
  318. package/dist/esm/components/Select/useSelect.js.map +1 -1
  319. package/dist/esm/components/Spinner/Spinner.js +19 -12
  320. package/dist/esm/components/Spinner/Spinner.js.map +1 -1
  321. package/dist/esm/components/Switch/Switch.js +10 -9
  322. package/dist/esm/components/Switch/Switch.js.map +1 -1
  323. package/dist/esm/components/Table/components/BaseTable.js +30 -23
  324. package/dist/esm/components/Table/components/BaseTable.js.map +1 -1
  325. package/dist/esm/components/Table/components/PaginatedTable.js +7 -3
  326. package/dist/esm/components/Table/components/PaginatedTable.js.map +1 -1
  327. package/dist/esm/components/Table/components/Table.js +25 -18
  328. package/dist/esm/components/Table/components/Table.js.map +1 -1
  329. package/dist/esm/components/Table/components/WindowedTable.js +104 -88
  330. package/dist/esm/components/Table/components/WindowedTable.js.map +1 -1
  331. package/dist/esm/components/Table/hooks/plugins/useRowActions.js +146 -122
  332. package/dist/esm/components/Table/hooks/plugins/useRowActions.js.map +1 -1
  333. package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js +61 -57
  334. package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js.map +1 -1
  335. package/dist/esm/components/Table/hooks/plugins/useRowEditing.js +36 -39
  336. package/dist/esm/components/Table/hooks/plugins/useRowEditing.js.map +1 -1
  337. package/dist/esm/components/Table/hooks/plugins/useRowSelect.js +89 -79
  338. package/dist/esm/components/Table/hooks/plugins/useRowSelect.js.map +1 -1
  339. package/dist/esm/components/Table/hooks/useRowCreation.js +64 -29
  340. package/dist/esm/components/Table/hooks/useRowCreation.js.map +1 -1
  341. package/dist/esm/components/Table/hooks/useTable.js +141 -119
  342. package/dist/esm/components/Table/hooks/useTable.js.map +1 -1
  343. package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js +15 -12
  344. package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js.map +1 -1
  345. package/dist/esm/components/Table/util/renderColumn.js +10 -10
  346. package/dist/esm/components/Table/util/renderColumn.js.map +1 -1
  347. package/dist/esm/components/Table/util/renderRow.js +46 -37
  348. package/dist/esm/components/Table/util/renderRow.js.map +1 -1
  349. package/dist/esm/components/Table/util/rowIndexPath.js +16 -14
  350. package/dist/esm/components/Table/util/rowIndexPath.js.map +1 -1
  351. package/dist/esm/components/Table/util/sortTypes.js +31 -23
  352. package/dist/esm/components/Table/util/sortTypes.js.map +1 -1
  353. package/dist/esm/components/Table/util.js +41 -29
  354. package/dist/esm/components/Table/util.js.map +1 -1
  355. package/dist/esm/components/Tabs/Tabs.js +27 -25
  356. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  357. package/dist/esm/components/Textarea/Textarea.js +9 -11
  358. package/dist/esm/components/Textarea/Textarea.js.map +1 -1
  359. package/dist/esm/components/Toast/Toast.js +21 -20
  360. package/dist/esm/components/Toast/Toast.js.map +1 -1
  361. package/dist/esm/components/Toast/Toaster.js +118 -88
  362. package/dist/esm/components/Toast/Toaster.js.map +1 -1
  363. package/dist/esm/components/Toast/util.js +2 -2
  364. package/dist/esm/components/Toast/util.js.map +1 -1
  365. package/dist/esm/components/Tooltip/Tooltip.js +8 -7
  366. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  367. package/dist/esm/components/Tour/Tour.js +50 -44
  368. package/dist/esm/components/Tour/Tour.js.map +1 -1
  369. package/dist/esm/components/Treeview/Treeview.js +36 -26
  370. package/dist/esm/components/Treeview/Treeview.js.map +1 -1
  371. package/dist/esm/components/VisuallyHidden/VisuallyHidden.js +1 -1
  372. package/dist/esm/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  373. package/dist/esm/index.css +661 -661
  374. package/dist/esm/index.js +2 -1
  375. package/dist/esm/index.js.map +1 -1
  376. package/dist/esm/primitives/Button.js +13 -9
  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 +18 -16
  381. package/dist/esm/utils/hooks/useDraggable.js.map +1 -1
  382. package/dist/esm/utils/hooks/useDropTarget.js +10 -7
  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 +17 -9
  390. package/dist/esm/utils/hooks/useTimer.js.map +1 -1
  391. package/dist/esm/utils/input.js +11 -7
  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 +661 -661
  398. package/dist/index.d.ts +1 -0
  399. package/dist/taco.cjs.development.js +2636 -2136
  400. package/dist/taco.cjs.development.js.map +1 -1
  401. package/dist/taco.cjs.production.min.js +1 -1
  402. package/dist/taco.cjs.production.min.js.map +1 -1
  403. package/dist/utils/tailwind.d.ts +1 -1
  404. package/package.json +2 -2
  405. package/plugins/tailwindcss-aria-attributes.js +73 -73
  406. package/tailwind.config.js +297 -297
  407. package/types.json +531 -459
@@ -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 self-center 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 self-center 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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"}
@@ -1,40 +1,46 @@
1
+ import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import { useMemo, useEffect } from 'react';
2
3
  import { v4 } from 'uuid';
3
4
  import { useProxiedRef } from '../../utils/hooks/useProxiedRef.js';
4
5
  import { useFlattenedData, getIndexFromValue, getActiveDescendant, setInputValueByRef, findByValue, sanitizeItem } from './util.js';
5
6
  import { useTypeahead } from './useTypeahead.js';
6
7
 
7
- const useListbox = ({
8
- data: externalData = [],
9
- defaultValue,
10
- disabled,
11
- emptyValue,
12
- id: nativeId,
13
- invalid,
14
- name,
15
- onChange,
16
- onFocus,
17
- onKeyDown,
18
- value = emptyValue,
19
- ...otherProps
20
- }, ref) => {
21
- const data = useFlattenedData(emptyValue !== undefined ? [{
8
+ var _excluded = ["data", "defaultValue", "disabled", "emptyValue", "id", "invalid", "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
+ invalid = _ref.invalid,
17
+ name = _ref.name,
18
+ onChange = _ref.onChange,
19
+ onFocus = _ref.onFocus,
20
+ onKeyDown = _ref.onKeyDown,
21
+ _ref$value = _ref.value,
22
+ value = _ref$value === void 0 ? emptyValue : _ref$value,
23
+ otherProps = _objectWithoutPropertiesLoose(_ref, _excluded);
24
+
25
+ var data = useFlattenedData(emptyValue !== undefined ? [{
22
26
  text: '',
23
27
  value: emptyValue
24
- }, ...externalData] : externalData);
25
- const id = useMemo(() => nativeId || v4(), [nativeId]);
26
- const inputRef = useProxiedRef(ref);
27
- const currentIndex = value !== undefined ? getIndexFromValue(data, value) : undefined;
28
- const {
29
- getNextIndex
30
- } = useTypeahead({
31
- data,
32
- currentIndex
33
- });
34
-
35
- const setInputValueByIndex = index => {
28
+ }].concat(externalData) : externalData);
29
+ var id = useMemo(function () {
30
+ return nativeId || v4();
31
+ }, [nativeId]);
32
+ var inputRef = useProxiedRef(ref);
33
+ var currentIndex = value !== undefined ? getIndexFromValue(data, value) : undefined;
34
+
35
+ var _useTypeahead = useTypeahead({
36
+ data: data,
37
+ currentIndex: currentIndex
38
+ }),
39
+ getNextIndex = _useTypeahead.getNextIndex;
40
+
41
+ var setInputValueByIndex = function setInputValueByIndex(index) {
36
42
  if (index !== undefined) {
37
- const option = data[index];
43
+ var option = data[index];
38
44
 
39
45
  if (option && !option.disabled) {
40
46
  setInputValueByRef(inputRef.current, option.value);
@@ -42,14 +48,14 @@ const useListbox = ({
42
48
  }
43
49
  };
44
50
 
45
- const handleListboxChange = index => {
51
+ var handleListboxChange = function handleListboxChange(index) {
46
52
  setInputValueByIndex(index);
47
53
  };
48
54
 
49
- useEffect(() => {
55
+ useEffect(function () {
50
56
  if (data.length && currentIndex === undefined) {
51
57
  if (defaultValue !== undefined) {
52
- const defaultValueIndex = getIndexFromValue(data, defaultValue);
58
+ var defaultValueIndex = getIndexFromValue(data, defaultValue);
53
59
 
54
60
  if (defaultValueIndex !== undefined) {
55
61
  setInputValueByIndex(defaultValueIndex);
@@ -60,11 +66,11 @@ const useListbox = ({
60
66
  }
61
67
  }, [data]);
62
68
 
63
- const handleListboxKeyDown = event => {
64
- const charKey = String.fromCharCode(event.keyCode);
69
+ var handleListboxKeyDown = function handleListboxKeyDown(event) {
70
+ var charKey = String.fromCharCode(event.keyCode);
65
71
 
66
72
  if (charKey.match(/(\w)/g)) {
67
- const nextIndex = getNextIndex(charKey);
73
+ var nextIndex = getNextIndex(charKey);
68
74
 
69
75
  if (nextIndex > -1 && nextIndex !== currentIndex) {
70
76
  setInputValueByIndex(nextIndex);
@@ -79,7 +85,7 @@ const useListbox = ({
79
85
  }
80
86
  };
81
87
 
82
- const handleListboxFocus = event => {
88
+ var handleListboxFocus = function handleListboxFocus(event) {
83
89
  if (currentIndex === undefined && data.length) {
84
90
  setInputValueByIndex(0);
85
91
  }
@@ -90,24 +96,26 @@ const useListbox = ({
90
96
  }
91
97
  };
92
98
 
93
- const handleInputChange = event => {
99
+ var handleInputChange = function handleInputChange(event) {
94
100
  event.persist();
95
101
 
96
102
  if (onChange) {
97
103
  var _item$path$split, _item$path;
98
104
 
99
- const item = findByValue(data, event.target.value);
105
+ var item = findByValue(data, event.target.value);
100
106
  event.detail = sanitizeItem(item);
101
- 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
+ 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 : [];
102
108
 
103
109
  if (indexes.length > 1) {
104
110
  // we don't want to map the current item
105
111
  indexes.pop(); // we need to rebuild the path as we map
106
112
 
107
- let lastPath;
108
- event.detail.parents = indexes.map(i => {
113
+ var lastPath;
114
+ event.detail.parents = indexes.map(function (i) {
109
115
  lastPath = lastPath ? [lastPath, i].join('.') : i;
110
- return sanitizeItem(data.find(i => i.path === lastPath));
116
+ return sanitizeItem(data.find(function (i) {
117
+ return i.path === lastPath;
118
+ }));
111
119
  });
112
120
  }
113
121
 
@@ -115,29 +123,30 @@ const useListbox = ({
115
123
  }
116
124
  };
117
125
 
118
- const list = { ...otherProps,
126
+ var list = _extends({}, otherProps, {
119
127
  'aria-activedescendant': getActiveDescendant(data, currentIndex, id),
120
- data,
121
- disabled,
122
- id,
123
- invalid,
128
+ data: data,
129
+ disabled: disabled,
130
+ id: id,
131
+ invalid: invalid,
124
132
  onChange: handleListboxChange,
125
133
  onFocus: handleListboxFocus,
126
134
  onKeyDown: handleListboxKeyDown,
127
135
  scrollOnFocus: true,
128
136
  tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,
129
137
  value: currentIndex
130
- };
131
- const input = {
132
- name,
138
+ });
139
+
140
+ var input = {
141
+ name: name,
133
142
  onChange: handleInputChange,
134
143
  ref: inputRef,
135
144
  tabIndex: -1,
136
145
  value: value !== null && value !== void 0 ? value : ''
137
146
  };
138
147
  return {
139
- list,
140
- input
148
+ list: list,
149
+ input: input
141
150
  };
142
151
  };
143
152
 
@@ -1 +1 @@
1
- {"version":3,"file":"useListbox.js","sources":["../../../../src/components/Listbox/useListbox.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport { v4 as uuid } from 'uuid';\r\nimport { ListboxProps } from './Listbox';\r\nimport { useProxiedRef } from '../../utils/hooks/useProxiedRef';\r\nimport { setInputValueByRef, getIndexFromValue, findByValue, getActiveDescendant, useFlattenedData, sanitizeItem } from './util';\r\nimport { ScrollableListProps } from './ScrollableList';\r\nimport { useTypeahead } from './useTypeahead';\r\n\r\ntype useListbox = {\r\n list: ScrollableListProps;\r\n input: Omit<React.HTMLAttributes<HTMLInputElement>, 'defaultValue'>;\r\n};\r\n\r\nexport const useListbox = (\r\n {\r\n data: externalData = [],\r\n defaultValue,\r\n disabled,\r\n emptyValue,\r\n id: nativeId,\r\n invalid,\r\n name,\r\n onChange,\r\n onFocus,\r\n onKeyDown,\r\n value = emptyValue,\r\n ...otherProps\r\n }: ListboxProps,\r\n ref: React.Ref<HTMLInputElement>\r\n): useListbox => {\r\n const data = useFlattenedData(emptyValue !== undefined ? [{ text: '', value: emptyValue }, ...externalData] : externalData);\r\n const id = React.useMemo(() => nativeId || uuid(), [nativeId]);\r\n const inputRef = useProxiedRef<HTMLInputElement>(ref);\r\n const currentIndex = value !== undefined ? getIndexFromValue(data, value) : undefined;\r\n const { getNextIndex } = useTypeahead({ data, currentIndex });\r\n\r\n const setInputValueByIndex = (index: number | undefined): void => {\r\n if (index !== undefined) {\r\n const option = data[index];\r\n\r\n if (option && !option.disabled) {\r\n setInputValueByRef(inputRef.current, option.value);\r\n }\r\n }\r\n };\r\n\r\n const handleListboxChange = (index: number): void => {\r\n setInputValueByIndex(index);\r\n };\r\n\r\n React.useEffect(() => {\r\n if (data.length && currentIndex === undefined) {\r\n if (defaultValue !== undefined) {\r\n const defaultValueIndex = getIndexFromValue(data, defaultValue);\r\n\r\n if (defaultValueIndex !== undefined) {\r\n setInputValueByIndex(defaultValueIndex);\r\n }\r\n } else {\r\n setInputValueByIndex(0);\r\n }\r\n }\r\n }, [data]);\r\n\r\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>): void => {\r\n const charKey = String.fromCharCode(event.keyCode);\r\n\r\n if (charKey.match(/(\\w)/g)) {\r\n const nextIndex = getNextIndex(charKey);\r\n\r\n if (nextIndex > -1 && nextIndex !== currentIndex) {\r\n setInputValueByIndex(nextIndex);\r\n }\r\n return;\r\n }\r\n\r\n if (onKeyDown) {\r\n event.persist();\r\n onKeyDown(event);\r\n }\r\n };\r\n\r\n const handleListboxFocus = (event: React.FocusEvent<HTMLElement>): void => {\r\n if (currentIndex === undefined && data.length) {\r\n setInputValueByIndex(0);\r\n }\r\n\r\n if (onFocus) {\r\n event.persist();\r\n onFocus(event);\r\n }\r\n };\r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\r\n event.persist();\r\n\r\n if (onChange) {\r\n const item = findByValue(data, event.target.value);\r\n (event as any).detail = sanitizeItem(item);\r\n\r\n const indexes = item?.path?.split('.') ?? [];\r\n\r\n if (indexes.length > 1) {\r\n // we don't want to map the current item\r\n indexes.pop();\r\n // we need to rebuild the path as we map\r\n let lastPath: string;\r\n\r\n (event as any).detail.parents = indexes.map(i => {\r\n lastPath = lastPath ? [lastPath, i].join('.') : i;\r\n return sanitizeItem(data.find(i => i.path === lastPath));\r\n });\r\n }\r\n\r\n onChange(event);\r\n }\r\n };\r\n\r\n const list: ScrollableListProps = {\r\n ...otherProps,\r\n 'aria-activedescendant': getActiveDescendant(data, currentIndex, id),\r\n data,\r\n disabled,\r\n id,\r\n invalid,\r\n onChange: handleListboxChange,\r\n onFocus: handleListboxFocus,\r\n onKeyDown: handleListboxKeyDown,\r\n scrollOnFocus: true,\r\n tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,\r\n value: currentIndex,\r\n };\r\n\r\n const input = {\r\n name,\r\n onChange: handleInputChange,\r\n ref: inputRef,\r\n tabIndex: -1,\r\n value: value ?? '',\r\n };\r\n\r\n return { list, input };\r\n};\r\n"],"names":["useListbox","data","externalData","defaultValue","disabled","emptyValue","id","nativeId","invalid","name","onChange","onFocus","onKeyDown","value","otherProps","ref","useFlattenedData","undefined","text","React","uuid","inputRef","useProxiedRef","currentIndex","getIndexFromValue","getNextIndex","useTypeahead","setInputValueByIndex","index","option","setInputValueByRef","current","handleListboxChange","length","defaultValueIndex","handleListboxKeyDown","event","charKey","String","fromCharCode","keyCode","match","nextIndex","persist","handleListboxFocus","handleInputChange","item","findByValue","target","detail","sanitizeItem","indexes","path","split","pop","lastPath","parents","map","i","join","find","list","getActiveDescendant","scrollOnFocus","tabIndex","input"],"mappings":"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"}
1
+ {"version":3,"file":"useListbox.js","sources":["../../../../src/components/Listbox/useListbox.tsx"],"sourcesContent":["import * as React from 'react';\nimport { v4 as uuid } from 'uuid';\nimport { ListboxProps } from './Listbox';\nimport { useProxiedRef } from '../../utils/hooks/useProxiedRef';\nimport { setInputValueByRef, getIndexFromValue, findByValue, getActiveDescendant, useFlattenedData, sanitizeItem } from './util';\nimport { ScrollableListProps } from './ScrollableList';\nimport { useTypeahead } from './useTypeahead';\n\ntype useListbox = {\n list: ScrollableListProps;\n input: Omit<React.HTMLAttributes<HTMLInputElement>, 'defaultValue'>;\n};\n\nexport const useListbox = (\n {\n data: externalData = [],\n defaultValue,\n disabled,\n emptyValue,\n id: nativeId,\n invalid,\n name,\n onChange,\n onFocus,\n onKeyDown,\n value = emptyValue,\n ...otherProps\n }: ListboxProps,\n ref: React.Ref<HTMLInputElement>\n): useListbox => {\n const data = useFlattenedData(emptyValue !== undefined ? [{ text: '', value: emptyValue }, ...externalData] : externalData);\n const id = React.useMemo(() => nativeId || uuid(), [nativeId]);\n const inputRef = useProxiedRef<HTMLInputElement>(ref);\n const currentIndex = value !== undefined ? getIndexFromValue(data, value) : undefined;\n const { getNextIndex } = useTypeahead({ data, currentIndex });\n\n const setInputValueByIndex = (index: number | undefined): void => {\n if (index !== undefined) {\n const option = data[index];\n\n if (option && !option.disabled) {\n setInputValueByRef(inputRef.current, option.value);\n }\n }\n };\n\n const handleListboxChange = (index: number): void => {\n setInputValueByIndex(index);\n };\n\n React.useEffect(() => {\n if (data.length && currentIndex === undefined) {\n if (defaultValue !== undefined) {\n const defaultValueIndex = getIndexFromValue(data, defaultValue);\n\n if (defaultValueIndex !== undefined) {\n setInputValueByIndex(defaultValueIndex);\n }\n } else {\n setInputValueByIndex(0);\n }\n }\n }, [data]);\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>): void => {\n const charKey = String.fromCharCode(event.keyCode);\n\n if (charKey.match(/(\\w)/g)) {\n const nextIndex = getNextIndex(charKey);\n\n if (nextIndex > -1 && nextIndex !== currentIndex) {\n setInputValueByIndex(nextIndex);\n }\n return;\n }\n\n if (onKeyDown) {\n event.persist();\n onKeyDown(event);\n }\n };\n\n const handleListboxFocus = (event: React.FocusEvent<HTMLElement>): void => {\n if (currentIndex === undefined && data.length) {\n setInputValueByIndex(0);\n }\n\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n event.persist();\n\n if (onChange) {\n const item = findByValue(data, event.target.value);\n (event as any).detail = sanitizeItem(item);\n\n const indexes = item?.path?.split('.') ?? [];\n\n if (indexes.length > 1) {\n // we don't want to map the current item\n indexes.pop();\n // we need to rebuild the path as we map\n let lastPath: string;\n\n (event as any).detail.parents = indexes.map(i => {\n lastPath = lastPath ? [lastPath, i].join('.') : i;\n return sanitizeItem(data.find(i => i.path === lastPath));\n });\n }\n\n onChange(event);\n }\n };\n\n const list: ScrollableListProps = {\n ...otherProps,\n 'aria-activedescendant': getActiveDescendant(data, currentIndex, id),\n data,\n disabled,\n id,\n invalid,\n onChange: handleListboxChange,\n onFocus: handleListboxFocus,\n onKeyDown: handleListboxKeyDown,\n scrollOnFocus: true,\n tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,\n value: currentIndex,\n };\n\n const input = {\n name,\n onChange: handleInputChange,\n ref: inputRef,\n tabIndex: -1,\n value: value ?? '',\n };\n\n return { list, input };\n};\n"],"names":["useListbox","ref","data","externalData","defaultValue","disabled","emptyValue","nativeId","id","invalid","name","onChange","onFocus","onKeyDown","value","otherProps","useFlattenedData","undefined","text","React","uuid","inputRef","useProxiedRef","currentIndex","getIndexFromValue","useTypeahead","getNextIndex","setInputValueByIndex","index","option","setInputValueByRef","current","handleListboxChange","length","defaultValueIndex","handleListboxKeyDown","event","charKey","String","fromCharCode","keyCode","match","nextIndex","persist","handleListboxFocus","handleInputChange","item","findByValue","target","detail","sanitizeItem","indexes","path","split","pop","lastPath","parents","map","i","join","find","list","getActiveDescendant","scrollOnFocus","tabIndex","input"],"mappings":"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"}