@economic/taco 1.1.11 → 1.1.13-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. package/README.md +82 -82
  2. package/dist/esm/components/Accordion/Accordion.js.map +1 -1
  3. package/dist/esm/components/Backdrop/Backdrop.js.map +1 -1
  4. package/dist/esm/components/Badge/Badge.js.map +1 -1
  5. package/dist/esm/components/Banner/Banner.js.map +1 -1
  6. package/dist/esm/components/Banner/util.js +1 -1
  7. package/dist/esm/components/Banner/util.js.map +1 -1
  8. package/dist/esm/components/Button/Button.js.map +1 -1
  9. package/dist/esm/components/Button/util.js +23 -18
  10. package/dist/esm/components/Button/util.js.map +1 -1
  11. package/dist/esm/components/Calendar/Calendar.js.map +1 -1
  12. package/dist/esm/components/Card/Card.js +3 -0
  13. package/dist/esm/components/Card/Card.js.map +1 -1
  14. package/dist/esm/components/Checkbox/Checkbox.js +18 -15
  15. package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
  16. package/dist/esm/components/Combobox/Combobox.js +25 -23
  17. package/dist/esm/components/Combobox/Combobox.js.map +1 -1
  18. package/dist/esm/components/Combobox/useCombobox.js +87 -67
  19. package/dist/esm/components/Combobox/useCombobox.js.map +1 -1
  20. package/dist/esm/components/Datepicker/Datepicker.js +52 -48
  21. package/dist/esm/components/Datepicker/Datepicker.js.map +1 -1
  22. package/dist/esm/components/Datepicker/useDatepicker.js +34 -27
  23. package/dist/esm/components/Datepicker/useDatepicker.js.map +1 -1
  24. package/dist/esm/components/Dialog/Context.js +4 -4
  25. package/dist/esm/components/Dialog/Context.js.map +1 -1
  26. package/dist/esm/components/Dialog/Dialog.js +58 -39
  27. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  28. package/dist/esm/components/Dialog/components/Content.js +44 -39
  29. package/dist/esm/components/Dialog/components/Content.js.map +1 -1
  30. package/dist/esm/components/Dialog/components/Drawer.js +3 -3
  31. package/dist/esm/components/Dialog/components/Drawer.js.map +1 -1
  32. package/dist/esm/components/Dialog/components/Extra.js +2 -2
  33. package/dist/esm/components/Dialog/components/Extra.js.map +1 -1
  34. package/dist/esm/components/Dialog/components/Trigger.js +3 -3
  35. package/dist/esm/components/Dialog/components/Trigger.js.map +1 -1
  36. package/dist/esm/components/Field/Field.js +12 -10
  37. package/dist/esm/components/Field/Field.js.map +1 -1
  38. package/dist/esm/components/Form/Form.js +8 -6
  39. package/dist/esm/components/Form/Form.js.map +1 -1
  40. package/dist/esm/components/Group/Group.js +8 -6
  41. package/dist/esm/components/Group/Group.js.map +1 -1
  42. package/dist/esm/components/Hanger/Hanger.js +36 -28
  43. package/dist/esm/components/Hanger/Hanger.js.map +1 -1
  44. package/dist/esm/components/HoverCard/HoverCard.js +9 -8
  45. package/dist/esm/components/HoverCard/HoverCard.js.map +1 -1
  46. package/dist/esm/components/Icon/Icon.js +8 -7
  47. package/dist/esm/components/Icon/Icon.js.map +1 -1
  48. package/dist/esm/components/Icon/components/AccountPreview.js.map +1 -1
  49. package/dist/esm/components/Icon/components/Accounting.js.map +1 -1
  50. package/dist/esm/components/Icon/components/AccountingYear.js.map +1 -1
  51. package/dist/esm/components/Icon/components/AccountingYearCancel.js.map +1 -1
  52. package/dist/esm/components/Icon/components/ArrowBottom.js.map +1 -1
  53. package/dist/esm/components/Icon/components/ArrowDown.js.map +1 -1
  54. package/dist/esm/components/Icon/components/ArrowEnd.js.map +1 -1
  55. package/dist/esm/components/Icon/components/ArrowLeft.js.map +1 -1
  56. package/dist/esm/components/Icon/components/ArrowRight.js.map +1 -1
  57. package/dist/esm/components/Icon/components/ArrowStart.js.map +1 -1
  58. package/dist/esm/components/Icon/components/ArrowTop.js.map +1 -1
  59. package/dist/esm/components/Icon/components/ArrowUp.js.map +1 -1
  60. package/dist/esm/components/Icon/components/Attach.js.map +1 -1
  61. package/dist/esm/components/Icon/components/AttachAuto.js.map +1 -1
  62. package/dist/esm/components/Icon/components/AttachCancel.js.map +1 -1
  63. package/dist/esm/components/Icon/components/Autotext.js.map +1 -1
  64. package/dist/esm/components/Icon/components/AutotextInsert.js.map +1 -1
  65. package/dist/esm/components/Icon/components/Basic.js.map +1 -1
  66. package/dist/esm/components/Icon/components/BasicTabs.js.map +1 -1
  67. package/dist/esm/components/Icon/components/BellSolid.js.map +1 -1
  68. package/dist/esm/components/Icon/components/Book.js.map +1 -1
  69. package/dist/esm/components/Icon/components/Booking.js.map +1 -1
  70. package/dist/esm/components/Icon/components/Budget.js.map +1 -1
  71. package/dist/esm/components/Icon/components/Calendar.js.map +1 -1
  72. package/dist/esm/components/Icon/components/CashAccount.js.map +1 -1
  73. package/dist/esm/components/Icon/components/CashReports.js.map +1 -1
  74. package/dist/esm/components/Icon/components/Chat.js.map +1 -1
  75. package/dist/esm/components/Icon/components/ChatSolid.js.map +1 -1
  76. package/dist/esm/components/Icon/components/ChevronDown.js.map +1 -1
  77. package/dist/esm/components/Icon/components/ChevronDownDouble.js.map +1 -1
  78. package/dist/esm/components/Icon/components/ChevronDownSolid.js.map +1 -1
  79. package/dist/esm/components/Icon/components/ChevronLeft.js.map +1 -1
  80. package/dist/esm/components/Icon/components/ChevronLeftDouble.js.map +1 -1
  81. package/dist/esm/components/Icon/components/ChevronRight.js.map +1 -1
  82. package/dist/esm/components/Icon/components/ChevronRightDouble.js.map +1 -1
  83. package/dist/esm/components/Icon/components/ChevronUp.js.map +1 -1
  84. package/dist/esm/components/Icon/components/ChevronUpDouble.js.map +1 -1
  85. package/dist/esm/components/Icon/components/ChevronUpSolid.js.map +1 -1
  86. package/dist/esm/components/Icon/components/CircleClose.js.map +1 -1
  87. package/dist/esm/components/Icon/components/CircleMinus.js.map +1 -1
  88. package/dist/esm/components/Icon/components/CirclePlus.js.map +1 -1
  89. package/dist/esm/components/Icon/components/CircleTick.js.map +1 -1
  90. package/dist/esm/components/Icon/components/Clamp.js.map +1 -1
  91. package/dist/esm/components/Icon/components/ClampOpen.js.map +1 -1
  92. package/dist/esm/components/Icon/components/Close.js.map +1 -1
  93. package/dist/esm/components/Icon/components/ConnectionEnable.js.map +1 -1
  94. package/dist/esm/components/Icon/components/ConnectionRevoke.js.map +1 -1
  95. package/dist/esm/components/Icon/components/Contacts.js.map +1 -1
  96. package/dist/esm/components/Icon/components/Copy.js.map +1 -1
  97. package/dist/esm/components/Icon/components/Courses.js.map +1 -1
  98. package/dist/esm/components/Icon/components/Credit.js.map +1 -1
  99. package/dist/esm/components/Icon/components/Delete.js.map +1 -1
  100. package/dist/esm/components/Icon/components/DeletePermanently.js.map +1 -1
  101. package/dist/esm/components/Icon/components/Depecriate.js.map +1 -1
  102. package/dist/esm/components/Icon/components/Developer.js.map +1 -1
  103. package/dist/esm/components/Icon/components/DistributionTemplate.js.map +1 -1
  104. package/dist/esm/components/Icon/components/Document.js.map +1 -1
  105. package/dist/esm/components/Icon/components/DocumentApprove.js.map +1 -1
  106. package/dist/esm/components/Icon/components/DocumentCreateEntry.js.map +1 -1
  107. package/dist/esm/components/Icon/components/DocumentCut.js.map +1 -1
  108. package/dist/esm/components/Icon/components/DocumentError.js.map +1 -1
  109. package/dist/esm/components/Icon/components/DocumentIsolatePage.js.map +1 -1
  110. package/dist/esm/components/Icon/components/DocumentMerge.js.map +1 -1
  111. package/dist/esm/components/Icon/components/DocumentMove.js.map +1 -1
  112. package/dist/esm/components/Icon/components/DocumentPreview.js.map +1 -1
  113. package/dist/esm/components/Icon/components/DocumentReceived.js.map +1 -1
  114. package/dist/esm/components/Icon/components/DocumentRejectedRequest.js.map +1 -1
  115. package/dist/esm/components/Icon/components/DocumentSplit.js.map +1 -1
  116. package/dist/esm/components/Icon/components/DocumentTime.js.map +1 -1
  117. package/dist/esm/components/Icon/components/Download.js.map +1 -1
  118. package/dist/esm/components/Icon/components/Drag.js.map +1 -1
  119. package/dist/esm/components/Icon/components/ECopedia.js.map +1 -1
  120. package/dist/esm/components/Icon/components/ESignature.js.map +1 -1
  121. package/dist/esm/components/Icon/components/Edit.js.map +1 -1
  122. package/dist/esm/components/Icon/components/EllipsisHorizontal.js.map +1 -1
  123. package/dist/esm/components/Icon/components/EllipsisVertical.js.map +1 -1
  124. package/dist/esm/components/Icon/components/EntriesOnAccount.js.map +1 -1
  125. package/dist/esm/components/Icon/components/EntriesOpen.js.map +1 -1
  126. package/dist/esm/components/Icon/components/EntriesWarning.js.map +1 -1
  127. package/dist/esm/components/Icon/components/EntryTypeCustomerInvoice.js.map +1 -1
  128. package/dist/esm/components/Icon/components/EntryTypeCustomerPayment.js.map +1 -1
  129. package/dist/esm/components/Icon/components/EntryTypeJournalEntry.js.map +1 -1
  130. package/dist/esm/components/Icon/components/EntryTypeManualCustomerInvoice.js.map +1 -1
  131. package/dist/esm/components/Icon/components/EntryTypeSupplierInvoice.js.map +1 -1
  132. package/dist/esm/components/Icon/components/EntryTypeSupplierPayment.js.map +1 -1
  133. package/dist/esm/components/Icon/components/Envelope.js.map +1 -1
  134. package/dist/esm/components/Icon/components/EnvelopeApproved.js.map +1 -1
  135. package/dist/esm/components/Icon/components/ExpandView.js.map +1 -1
  136. package/dist/esm/components/Icon/components/Expenses.js.map +1 -1
  137. package/dist/esm/components/Icon/components/Export.js.map +1 -1
  138. package/dist/esm/components/Icon/components/ExportToExcel.js.map +1 -1
  139. package/dist/esm/components/Icon/components/ExportToPdf.js.map +1 -1
  140. package/dist/esm/components/Icon/components/Filter.js.map +1 -1
  141. package/dist/esm/components/Icon/components/FilterSolid.js.map +1 -1
  142. package/dist/esm/components/Icon/components/GraphSolid.js.map +1 -1
  143. package/dist/esm/components/Icon/components/Hash.js.map +1 -1
  144. package/dist/esm/components/Icon/components/Home.js.map +1 -1
  145. package/dist/esm/components/Icon/components/Images.js.map +1 -1
  146. package/dist/esm/components/Icon/components/Import.js.map +1 -1
  147. package/dist/esm/components/Icon/components/Inbox.js.map +1 -1
  148. package/dist/esm/components/Icon/components/InboxEinvoicing.js.map +1 -1
  149. package/dist/esm/components/Icon/components/InboxScanning.js.map +1 -1
  150. package/dist/esm/components/Icon/components/InboxSmart.js.map +1 -1
  151. package/dist/esm/components/Icon/components/Info.js.map +1 -1
  152. package/dist/esm/components/Icon/components/Inventory.js.map +1 -1
  153. package/dist/esm/components/Icon/components/InventoryMatrix.js.map +1 -1
  154. package/dist/esm/components/Icon/components/JournalPro.js.map +1 -1
  155. package/dist/esm/components/Icon/components/Layout.js.map +1 -1
  156. package/dist/esm/components/Icon/components/LayoutBoth.js.map +1 -1
  157. package/dist/esm/components/Icon/components/LayoutFirst.js.map +1 -1
  158. package/dist/esm/components/Icon/components/LayoutLast.js.map +1 -1
  159. package/dist/esm/components/Icon/components/LayoutNone.js.map +1 -1
  160. package/dist/esm/components/Icon/components/LedgerCard.js.map +1 -1
  161. package/dist/esm/components/Icon/components/LedgerCardCustomerReminder.js.map +1 -1
  162. package/dist/esm/components/Icon/components/LedgerCardManualCustomerInvoice.js.map +1 -1
  163. package/dist/esm/components/Icon/components/LedgerCardObsoleteStock.js.map +1 -1
  164. package/dist/esm/components/Icon/components/LedgerCardOpeningEntry.js.map +1 -1
  165. package/dist/esm/components/Icon/components/LedgerCardReservedEntry.js.map +1 -1
  166. package/dist/esm/components/Icon/components/LedgerCardShrinkagePilferage.js.map +1 -1
  167. package/dist/esm/components/Icon/components/LedgerCardStockAdjustment.js.map +1 -1
  168. package/dist/esm/components/Icon/components/LedgerCardTransferredOpeningEntry.js.map +1 -1
  169. package/dist/esm/components/Icon/components/Lightbulb.js.map +1 -1
  170. package/dist/esm/components/Icon/components/Line.js.map +1 -1
  171. package/dist/esm/components/Icon/components/List.js.map +1 -1
  172. package/dist/esm/components/Icon/components/ListBulleted.js.map +1 -1
  173. package/dist/esm/components/Icon/components/ListSearch.js.map +1 -1
  174. package/dist/esm/components/Icon/components/LockOpen.js.map +1 -1
  175. package/dist/esm/components/Icon/components/Log.js.map +1 -1
  176. package/dist/esm/components/Icon/components/LogOut.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/Menu.js.map +1 -1
  181. package/dist/esm/components/Icon/components/Mileage.js.map +1 -1
  182. package/dist/esm/components/Icon/components/ModalResize.js.map +1 -1
  183. package/dist/esm/components/Icon/components/ModalShrink.js.map +1 -1
  184. package/dist/esm/components/Icon/components/More.js.map +1 -1
  185. package/dist/esm/components/Icon/components/MoreSolid.js.map +1 -1
  186. package/dist/esm/components/Icon/components/Move.js.map +1 -1
  187. package/dist/esm/components/Icon/components/NavigationList.js.map +1 -1
  188. package/dist/esm/components/Icon/components/Note.js.map +1 -1
  189. package/dist/esm/components/Icon/components/NoteFollowUp.js.map +1 -1
  190. package/dist/esm/components/Icon/components/NoteRead.js.map +1 -1
  191. package/dist/esm/components/Icon/components/Numbers.js.map +1 -1
  192. package/dist/esm/components/Icon/components/PartnerApi.js.map +1 -1
  193. package/dist/esm/components/Icon/components/Period.js.map +1 -1
  194. package/dist/esm/components/Icon/components/PersonChange.js.map +1 -1
  195. package/dist/esm/components/Icon/components/PersonMinus.js.map +1 -1
  196. package/dist/esm/components/Icon/components/PersonPlus.js.map +1 -1
  197. package/dist/esm/components/Icon/components/PersonTick.js.map +1 -1
  198. package/dist/esm/components/Icon/components/Play.js.map +1 -1
  199. package/dist/esm/components/Icon/components/PlusMinus.js.map +1 -1
  200. package/dist/esm/components/Icon/components/Print.js.map +1 -1
  201. package/dist/esm/components/Icon/components/ProcessPayment.js.map +1 -1
  202. package/dist/esm/components/Icon/components/ProductLedgerCard.js.map +1 -1
  203. package/dist/esm/components/Icon/components/Profile.js.map +1 -1
  204. package/dist/esm/components/Icon/components/ProjectCards.js.map +1 -1
  205. package/dist/esm/components/Icon/components/Projects.js.map +1 -1
  206. package/dist/esm/components/Icon/components/Quicklinks.js.map +1 -1
  207. package/dist/esm/components/Icon/components/RatingBankruptcy.js.map +1 -1
  208. package/dist/esm/components/Icon/components/RatingPaymentProblems.js.map +1 -1
  209. package/dist/esm/components/Icon/components/Reconciled.js.map +1 -1
  210. package/dist/esm/components/Icon/components/Refresh.js.map +1 -1
  211. package/dist/esm/components/Icon/components/Report.js.map +1 -1
  212. package/dist/esm/components/Icon/components/ReportSolid.js.map +1 -1
  213. package/dist/esm/components/Icon/components/Restore.js.map +1 -1
  214. package/dist/esm/components/Icon/components/RotateLeft.js.map +1 -1
  215. package/dist/esm/components/Icon/components/RotateRight.js.map +1 -1
  216. package/dist/esm/components/Icon/components/Sales.js.map +1 -1
  217. package/dist/esm/components/Icon/components/Search.js.map +1 -1
  218. package/dist/esm/components/Icon/components/SearchBold.js.map +1 -1
  219. package/dist/esm/components/Icon/components/Secure.js.map +1 -1
  220. package/dist/esm/components/Icon/components/SecureTick.js.map +1 -1
  221. package/dist/esm/components/Icon/components/Settings.js.map +1 -1
  222. package/dist/esm/components/Icon/components/SettingsSolid.js.map +1 -1
  223. package/dist/esm/components/Icon/components/Shortcuts.js.map +1 -1
  224. package/dist/esm/components/Icon/components/ShowAll.js.map +1 -1
  225. package/dist/esm/components/Icon/components/ShowLess.js.map +1 -1
  226. package/dist/esm/components/Icon/components/ShowMore.js.map +1 -1
  227. package/dist/esm/components/Icon/components/ShowTemplate.js.map +1 -1
  228. package/dist/esm/components/Icon/components/Sliders.js.map +1 -1
  229. package/dist/esm/components/Icon/components/Smartpay.js.map +1 -1
  230. package/dist/esm/components/Icon/components/SortBy.js.map +1 -1
  231. package/dist/esm/components/Icon/components/Spinner.js.map +1 -1
  232. package/dist/esm/components/Icon/components/Star.js.map +1 -1
  233. package/dist/esm/components/Icon/components/StarSolid.js.map +1 -1
  234. package/dist/esm/components/Icon/components/Subscriptions.js.map +1 -1
  235. package/dist/esm/components/Icon/components/SystemEntries.js.map +1 -1
  236. package/dist/esm/components/Icon/components/Tag.js.map +1 -1
  237. package/dist/esm/components/Icon/components/TemplateOverride.js.map +1 -1
  238. package/dist/esm/components/Icon/components/Templates.js.map +1 -1
  239. package/dist/esm/components/Icon/components/ThumbBoth.js.map +1 -1
  240. package/dist/esm/components/Icon/components/ThumbDown.js.map +1 -1
  241. package/dist/esm/components/Icon/components/ThumbDownSolid.js.map +1 -1
  242. package/dist/esm/components/Icon/components/ThumbUp.js.map +1 -1
  243. package/dist/esm/components/Icon/components/ThumbUpSolid.js.map +1 -1
  244. package/dist/esm/components/Icon/components/Tick.js.map +1 -1
  245. package/dist/esm/components/Icon/components/Time.js.map +1 -1
  246. package/dist/esm/components/Icon/components/Transfer.js.map +1 -1
  247. package/dist/esm/components/Icon/components/TransferCancel.js.map +1 -1
  248. package/dist/esm/components/Icon/components/TransferLocked.js.map +1 -1
  249. package/dist/esm/components/Icon/components/Undock.js.map +1 -1
  250. package/dist/esm/components/Icon/components/Unreconciled.js.map +1 -1
  251. package/dist/esm/components/Icon/components/Warning.js.map +1 -1
  252. package/dist/esm/components/Icon/components/Webshop.js.map +1 -1
  253. package/dist/esm/components/Icon/components/Website.js.map +1 -1
  254. package/dist/esm/components/Icon/components/Workflow.js.map +1 -1
  255. package/dist/esm/components/Icon/components/Zoom.js.map +1 -1
  256. package/dist/esm/components/Icon/components/index.js +4 -4
  257. package/dist/esm/components/Icon/components/index.js.map +1 -1
  258. package/dist/esm/components/IconButton/IconButton.js +11 -9
  259. package/dist/esm/components/IconButton/IconButton.js.map +1 -1
  260. package/dist/esm/components/Input/Input.js +25 -25
  261. package/dist/esm/components/Input/Input.js.map +1 -1
  262. package/dist/esm/components/Input/util.js +2 -2
  263. package/dist/esm/components/Input/util.js.map +1 -1
  264. package/dist/esm/components/Listbox/Listbox.js +25 -24
  265. package/dist/esm/components/Listbox/Listbox.js.map +1 -1
  266. package/dist/esm/components/Listbox/ScrollableList.js +83 -64
  267. package/dist/esm/components/Listbox/ScrollableList.js.map +1 -1
  268. package/dist/esm/components/Listbox/useListbox.js +60 -51
  269. package/dist/esm/components/Listbox/useListbox.js.map +1 -1
  270. package/dist/esm/components/Listbox/useMultiListbox.js +91 -64
  271. package/dist/esm/components/Listbox/useMultiListbox.js.map +1 -1
  272. package/dist/esm/components/Listbox/useTypeahead.js +9 -10
  273. package/dist/esm/components/Listbox/useTypeahead.js.map +1 -1
  274. package/dist/esm/components/Listbox/util.js +85 -48
  275. package/dist/esm/components/Listbox/util.js.map +1 -1
  276. package/dist/esm/components/Menu/Context.js +2 -2
  277. package/dist/esm/components/Menu/Context.js.map +1 -1
  278. package/dist/esm/components/Menu/Menu.js +34 -16
  279. package/dist/esm/components/Menu/Menu.js.map +1 -1
  280. package/dist/esm/components/Menu/components/Checkbox.js +9 -8
  281. package/dist/esm/components/Menu/components/Checkbox.js.map +1 -1
  282. package/dist/esm/components/Menu/components/Content.js +11 -9
  283. package/dist/esm/components/Menu/components/Content.js.map +1 -1
  284. package/dist/esm/components/Menu/components/Header.js +3 -3
  285. package/dist/esm/components/Menu/components/Header.js.map +1 -1
  286. package/dist/esm/components/Menu/components/Item.js +31 -30
  287. package/dist/esm/components/Menu/components/Item.js.map +1 -1
  288. package/dist/esm/components/Menu/components/Link.js +11 -10
  289. package/dist/esm/components/Menu/components/Link.js.map +1 -1
  290. package/dist/esm/components/Menu/components/RadioGroup.js +18 -16
  291. package/dist/esm/components/Menu/components/RadioGroup.js.map +1 -1
  292. package/dist/esm/components/Menu/components/Separator.js +1 -1
  293. package/dist/esm/components/Menu/components/Separator.js.map +1 -1
  294. package/dist/esm/components/Menu/components/Trigger.js +4 -4
  295. package/dist/esm/components/Menu/components/Trigger.js.map +1 -1
  296. package/dist/esm/components/Navigation/Navigation.js +44 -35
  297. package/dist/esm/components/Navigation/Navigation.js.map +1 -1
  298. package/dist/esm/components/Pagination/PageNumbers.js +28 -23
  299. package/dist/esm/components/Pagination/PageNumbers.js.map +1 -1
  300. package/dist/esm/components/Pagination/Pagination.js +56 -39
  301. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  302. package/dist/esm/components/Pagination/usePagination.js +21 -7
  303. package/dist/esm/components/Pagination/usePagination.js.map +1 -1
  304. package/dist/esm/components/Pagination/usePaginationShortcuts.js +9 -9
  305. package/dist/esm/components/Pagination/usePaginationShortcuts.js.map +1 -1
  306. package/dist/esm/components/Popover/Popover.js +35 -30
  307. package/dist/esm/components/Popover/Popover.js.map +1 -1
  308. package/dist/esm/components/Popover/Primitives.js +8 -7
  309. package/dist/esm/components/Popover/Primitives.js.map +1 -1
  310. package/dist/esm/components/Progress/Progress.js +15 -11
  311. package/dist/esm/components/Progress/Progress.js.map +1 -1
  312. package/dist/esm/components/Provider/Provider.js +18 -13
  313. package/dist/esm/components/Provider/Provider.js.map +1 -1
  314. package/dist/esm/components/RadioGroup/RadioGroup.js +57 -45
  315. package/dist/esm/components/RadioGroup/RadioGroup.js.map +1 -1
  316. package/dist/esm/components/SearchInput/SearchInput.js +15 -11
  317. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  318. package/dist/esm/components/Select/Select.js +31 -30
  319. package/dist/esm/components/Select/Select.js.map +1 -1
  320. package/dist/esm/components/Select/useSelect.js +81 -63
  321. package/dist/esm/components/Select/useSelect.js.map +1 -1
  322. package/dist/esm/components/Spinner/Spinner.js +19 -12
  323. package/dist/esm/components/Spinner/Spinner.js.map +1 -1
  324. package/dist/esm/components/Switch/Switch.js +10 -9
  325. package/dist/esm/components/Switch/Switch.js.map +1 -1
  326. package/dist/esm/components/Table/components/BaseTable.js +30 -23
  327. package/dist/esm/components/Table/components/BaseTable.js.map +1 -1
  328. package/dist/esm/components/Table/components/PaginatedTable.js +7 -3
  329. package/dist/esm/components/Table/components/PaginatedTable.js.map +1 -1
  330. package/dist/esm/components/Table/components/Table.js +25 -18
  331. package/dist/esm/components/Table/components/Table.js.map +1 -1
  332. package/dist/esm/components/Table/components/WindowedTable.js +109 -89
  333. package/dist/esm/components/Table/components/WindowedTable.js.map +1 -1
  334. package/dist/esm/components/Table/hooks/plugins/useRowActions.js +146 -122
  335. package/dist/esm/components/Table/hooks/plugins/useRowActions.js.map +1 -1
  336. package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js +61 -57
  337. package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js.map +1 -1
  338. package/dist/esm/components/Table/hooks/plugins/useRowEditing.js +36 -39
  339. package/dist/esm/components/Table/hooks/plugins/useRowEditing.js.map +1 -1
  340. package/dist/esm/components/Table/hooks/plugins/useRowSelect.js +89 -79
  341. package/dist/esm/components/Table/hooks/plugins/useRowSelect.js.map +1 -1
  342. package/dist/esm/components/Table/hooks/useRowCreation.js +64 -29
  343. package/dist/esm/components/Table/hooks/useRowCreation.js.map +1 -1
  344. package/dist/esm/components/Table/hooks/useTable.js +141 -119
  345. package/dist/esm/components/Table/hooks/useTable.js.map +1 -1
  346. package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js +16 -13
  347. package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js.map +1 -1
  348. package/dist/esm/components/Table/util/renderColumn.js +10 -10
  349. package/dist/esm/components/Table/util/renderColumn.js.map +1 -1
  350. package/dist/esm/components/Table/util/renderRow.js +46 -37
  351. package/dist/esm/components/Table/util/renderRow.js.map +1 -1
  352. package/dist/esm/components/Table/util/rowIndexPath.js +16 -14
  353. package/dist/esm/components/Table/util/rowIndexPath.js.map +1 -1
  354. package/dist/esm/components/Table/util/sortTypes.js +31 -23
  355. package/dist/esm/components/Table/util/sortTypes.js.map +1 -1
  356. package/dist/esm/components/Table/util.js +41 -29
  357. package/dist/esm/components/Table/util.js.map +1 -1
  358. package/dist/esm/components/Tabs/Tabs.js +27 -25
  359. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  360. package/dist/esm/components/Textarea/Textarea.js +9 -11
  361. package/dist/esm/components/Textarea/Textarea.js.map +1 -1
  362. package/dist/esm/components/Toast/Toast.js +21 -20
  363. package/dist/esm/components/Toast/Toast.js.map +1 -1
  364. package/dist/esm/components/Toast/Toaster.js +118 -88
  365. package/dist/esm/components/Toast/Toaster.js.map +1 -1
  366. package/dist/esm/components/Toast/util.js +2 -2
  367. package/dist/esm/components/Toast/util.js.map +1 -1
  368. package/dist/esm/components/Tooltip/Tooltip.js +8 -7
  369. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  370. package/dist/esm/components/Tour/Tour.js +51 -45
  371. package/dist/esm/components/Tour/Tour.js.map +1 -1
  372. package/dist/esm/components/Treeview/Treeview.js +36 -26
  373. package/dist/esm/components/Treeview/Treeview.js.map +1 -1
  374. package/dist/esm/components/VisuallyHidden/VisuallyHidden.js +1 -1
  375. package/dist/esm/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  376. package/dist/esm/index.css +661 -661
  377. package/dist/esm/index.js +4 -1
  378. package/dist/esm/index.js.map +1 -1
  379. package/dist/esm/primitives/Button.js +13 -9
  380. package/dist/esm/primitives/Button.js.map +1 -1
  381. package/dist/esm/utils/date.js.map +1 -1
  382. package/dist/esm/utils/hooks/useBoundingClientRectListener.js.map +1 -1
  383. package/dist/esm/utils/hooks/useDraggable.js +17 -16
  384. package/dist/esm/utils/hooks/useDraggable.js.map +1 -1
  385. package/dist/esm/utils/hooks/useDropTarget.js +10 -7
  386. package/dist/esm/utils/hooks/useDropTarget.js.map +1 -1
  387. package/dist/esm/utils/hooks/useListKeyboardNavigation.js.map +1 -1
  388. package/dist/esm/utils/hooks/useListScrollTo.js.map +1 -1
  389. package/dist/esm/utils/hooks/useOnClickOutside.js.map +1 -1
  390. package/dist/esm/utils/hooks/useProxiedRef.js +3 -3
  391. package/dist/esm/utils/hooks/useProxiedRef.js.map +1 -1
  392. package/dist/esm/utils/hooks/useTimer.js +17 -9
  393. package/dist/esm/utils/hooks/useTimer.js.map +1 -1
  394. package/dist/esm/utils/input.js +11 -7
  395. package/dist/esm/utils/input.js.map +1 -1
  396. package/dist/esm/utils/mergeRefs.js +3 -3
  397. package/dist/esm/utils/mergeRefs.js.map +1 -1
  398. package/dist/esm/utils/taillwind.js +2 -2
  399. package/dist/esm/utils/taillwind.js.map +1 -1
  400. package/dist/index.css +661 -661
  401. package/dist/index.d.ts +4 -1
  402. package/dist/taco.cjs.development.js +2675 -2185
  403. package/dist/taco.cjs.development.js.map +1 -1
  404. package/dist/taco.cjs.production.min.js +1 -1
  405. package/dist/taco.cjs.production.min.js.map +1 -1
  406. package/dist/utils/mergeRefs.d.ts +1 -1
  407. package/dist/utils/tailwind.d.ts +1 -1
  408. package/package.json +3 -3
  409. package/plugins/tailwindcss-aria-attributes.js +73 -73
  410. package/tailwind.config.js +264 -255
@@ -1,3 +1,4 @@
1
+ import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose } from '../../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import { forwardRef, useRef, createElement } from 'react';
2
3
  import cn from 'classnames';
3
4
  import { IconButton } from '../IconButton/IconButton.js';
@@ -8,26 +9,27 @@ import { ScrollableList } from '../Listbox/ScrollableList.js';
8
9
  import { useCombobox } from './useCombobox.js';
9
10
  import { useBoundingClientRectListener } from '../../utils/hooks/useBoundingClientRectListener.js';
10
11
 
11
- const Combobox = /*#__PURE__*/forwardRef(function Combobox(props, ref) {
12
- const {
13
- className: externalClassName,
14
- dialog,
15
- style,
16
- ...otherProps
17
- } = props;
18
- const {
19
- combobox,
20
- button,
21
- input,
22
- popover,
23
- list
24
- } = useCombobox(otherProps, ref);
25
- const internalRef = useRef(null);
26
- const {
27
- texts
28
- } = useLocalization();
29
- const selectDimensions = useBoundingClientRectListener(internalRef);
30
- const className = cn('inline-flex relative', {
12
+ var _excluded = ["className", "dialog", "style"];
13
+ var Combobox = /*#__PURE__*/forwardRef(function Combobox(props, ref) {
14
+ var externalClassName = props.className,
15
+ dialog = props.dialog,
16
+ style = props.style,
17
+ otherProps = _objectWithoutPropertiesLoose(props, _excluded);
18
+
19
+ var _useCombobox = useCombobox(otherProps, ref),
20
+ combobox = _useCombobox.combobox,
21
+ button = _useCombobox.button,
22
+ input = _useCombobox.input,
23
+ popover = _useCombobox.popover,
24
+ list = _useCombobox.list;
25
+
26
+ var internalRef = useRef(null);
27
+
28
+ var _useLocalization = useLocalization(),
29
+ texts = _useLocalization.texts;
30
+
31
+ var selectDimensions = useBoundingClientRectListener(internalRef);
32
+ var className = cn('inline-flex relative', {
31
33
  'yt-combobox--inline': props.inline
32
34
  }, externalClassName);
33
35
  return createElement("span", {
@@ -46,7 +48,7 @@ const Combobox = /*#__PURE__*/forwardRef(function Combobox(props, ref) {
46
48
  appearance: "discrete",
47
49
  className: "!border-l-0 focus:!border-none focus:!shadow-none active:!border-none",
48
50
  icon: popover.open ? 'chevron-up' : 'chevron-down',
49
- onClick: () => {
51
+ onClick: function onClick() {
50
52
  var _input$ref$current;
51
53
 
52
54
  popover.onOpenChange(true);
@@ -58,7 +60,7 @@ const Combobox = /*#__PURE__*/forwardRef(function Combobox(props, ref) {
58
60
  icon: "list-search",
59
61
  disabled: props.readOnly || props.disabled,
60
62
  dialog: dialog,
61
- onFocus: event => {
63
+ onFocus: function onFocus(event) {
62
64
  var _input$ref$current2;
63
65
 
64
66
  // Prevents the default focus behaviour of showing the tooltip, on parent tooltip element
@@ -71,7 +73,7 @@ const Combobox = /*#__PURE__*/forwardRef(function Combobox(props, ref) {
71
73
  }) : undefined
72
74
  })))), createElement(Content, {
73
75
  align: "start",
74
- onOpenAutoFocus: event => {
76
+ onOpenAutoFocus: function onOpenAutoFocus(event) {
75
77
  event.preventDefault();
76
78
  },
77
79
  sideOffset: 4
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.js","sources":["../../../../src/components/Combobox/Combobox.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport cn from 'classnames';\r\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\r\nimport { Input, InputProps } from '../Input/Input';\r\nimport { useCombobox } from './useCombobox';\r\nimport { ScrollableList, ScrollableListItem, ScrollableListItemValue } from '../Listbox/ScrollableList';\r\nimport { useBoundingClientRectListener } from '../../utils/hooks/useBoundingClientRectListener';\r\nimport { IconButton } from '../IconButton/IconButton';\r\nimport './Combobox.css';\r\nimport { DialogProps } from '../Dialog/Dialog';\r\nimport { useLocalization } from '../Provider/Provider';\r\n\r\nexport type ComboboxTexts = {\r\n /* Tooltip shown for the dialog button */\r\n tooltip: string;\r\n};\r\n\r\nexport type ComboboxItem = ScrollableListItem;\r\nexport type ComboboxValue = ScrollableListItemValue;\r\n\r\ntype ComboboxBaseProps = Omit<InputProps, 'defaultValue' | 'button' | 'onChange' | 'value'> & {\r\n /** Array of options in combobox */\r\n data?: ComboboxItem[];\r\n /**\r\n * Initial value of the input in combobox.\r\n * This is used when combobox is mounted, if no value is provided.\r\n * *Note* that combobox is a controlled component, setting this will also trigger the `onChange` event\r\n */\r\n defaultValue?: ComboboxValue;\r\n /** Set what value should have an empty option in combobox */\r\n emptyValue?: ComboboxValue;\r\n /** Draws attention to the combobox by changing its style and making it visually prominent */\r\n highlighted?: boolean;\r\n /** Displays loading state in listbox */\r\n loading?: boolean;\r\n /**\r\n * Handler called when user chooses an option from the provided suggestions.\r\n * Suggestions will be calculated based on the input value.\r\n * There are two ways to choose an option: either click on it, or navigate using keyboard and press `enter`\r\n */\r\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\r\n /** Handler called when the user enters a query **/\r\n onSearch?: (query: string) => void | Promise<void>;\r\n /** Value of the input in combobox */\r\n value?: ComboboxValue;\r\n};\r\n\r\ninterface InlineComboboxProps extends ComboboxBaseProps {\r\n dialog?: never;\r\n /**\r\n * Combobox will display its data when input is clicked/focused, even if the input is empty.\r\n * *Note* that default combobox will display matching data only when user starts typing in input.\r\n */\r\n inline: boolean; // Example 3 on https://www.w3.org/TR/wai-aria-practices/examples/combobox/aria1.1pattern/listbox-combo.html\r\n}\r\n\r\ninterface DialogComboboxProps extends ComboboxBaseProps {\r\n dialog: (props: Partial<DialogProps>) => JSX.Element;\r\n inline?: never;\r\n}\r\n\r\nexport type ComboboxProps = InlineComboboxProps | DialogComboboxProps;\r\n\r\nexport const Combobox = React.forwardRef(function Combobox(props: ComboboxProps, ref: React.Ref<HTMLInputElement>) {\r\n const { className: externalClassName, dialog, style, ...otherProps } = props;\r\n const { combobox, button, input, popover, list } = useCombobox(otherProps, ref);\r\n const internalRef = React.useRef<HTMLDivElement>(null);\r\n const { texts } = useLocalization();\r\n const selectDimensions = useBoundingClientRectListener(internalRef);\r\n const className = cn(\r\n 'inline-flex relative',\r\n {\r\n 'yt-combobox--inline': props.inline,\r\n },\r\n externalClassName\r\n );\r\n\r\n return (\r\n <span className={className} data-taco=\"combobox\" style={style}>\r\n <PopoverPrimitive.Root {...popover}>\r\n <PopoverPrimitive.Anchor asChild ref={internalRef}>\r\n <div {...combobox} className=\"inline w-full\" ref={ref}>\r\n <Input\r\n {...input}\r\n autoComplete=\"off\"\r\n button={\r\n props.inline ? (\r\n <IconButton\r\n appearance=\"discrete\"\r\n className=\"!border-l-0 focus:!border-none focus:!shadow-none active:!border-none\"\r\n icon={popover.open ? 'chevron-up' : 'chevron-down'}\r\n onClick={() => {\r\n popover.onOpenChange(true);\r\n input.ref.current?.focus();\r\n }}\r\n tabIndex={-1}\r\n />\r\n ) : dialog ? (\r\n <IconButton\r\n aria-label={texts.combobox.tooltip}\r\n icon=\"list-search\"\r\n disabled={props.readOnly || props.disabled}\r\n dialog={dialog}\r\n onFocus={(event: React.FocusEvent<HTMLButtonElement>) => {\r\n // Prevents the default focus behaviour of showing the tooltip, on parent tooltip element\r\n event.preventDefault();\r\n input.ref.current?.focus();\r\n }}\r\n ref={button.ref}\r\n tabIndex={-1}\r\n tooltip={texts.combobox.tooltip}\r\n />\r\n ) : undefined\r\n }\r\n />\r\n </div>\r\n </PopoverPrimitive.Anchor>\r\n <PopoverPrimitive.Content\r\n align=\"start\"\r\n onOpenAutoFocus={event => {\r\n event.preventDefault();\r\n }}\r\n sideOffset={4}>\r\n <ScrollableList\r\n {...list}\r\n className={cn('!border-blue max-h-[calc(12rem+2px)] w-auto max-w-[theme(spacing.96)]')}\r\n style={{ minWidth: selectDimensions?.width }}\r\n tabIndex={popover.open ? 0 : -1}\r\n />\r\n </PopoverPrimitive.Content>\r\n </PopoverPrimitive.Root>\r\n </span>\r\n );\r\n});\r\n"],"names":["Combobox","React","props","ref","className","externalClassName","dialog","style","otherProps","combobox","button","input","popover","list","useCombobox","internalRef","texts","useLocalization","selectDimensions","useBoundingClientRectListener","cn","inline","PopoverPrimitive","asChild","Input","autoComplete","IconButton","appearance","icon","open","onClick","onOpenChange","current","focus","tabIndex","tooltip","disabled","readOnly","onFocus","event","preventDefault","undefined","align","onOpenAutoFocus","sideOffset","ScrollableList","minWidth","width"],"mappings":";;;;;;;;;;MA+DaA,QAAQ,gBAAGC,UAAA,CAAiB,SAASD,QAAT,CAAkBE,KAAlB,EAAwCC,GAAxC;EACrC,MAAM;IAAEC,SAAS,EAAEC,iBAAb;IAAgCC,MAAhC;IAAwCC,KAAxC;IAA+C,GAAGC;MAAeN,KAAvE;EACA,MAAM;IAAEO,QAAF;IAAYC,MAAZ;IAAoBC,KAApB;IAA2BC,OAA3B;IAAoCC;MAASC,WAAW,CAACN,UAAD,EAAaL,GAAb,CAA9D;EACA,MAAMY,WAAW,GAAGd,MAAA,CAA6B,IAA7B,CAApB;EACA,MAAM;IAAEe;MAAUC,eAAe,EAAjC;EACA,MAAMC,gBAAgB,GAAGC,6BAA6B,CAACJ,WAAD,CAAtD;EACA,MAAMX,SAAS,GAAGgB,EAAE,CAChB,sBADgB,EAEhB;IACI,uBAAuBlB,KAAK,CAACmB;GAHjB,EAKhBhB,iBALgB,CAApB;EAQA,OACIJ,aAAA,OAAA;IAAMG,SAAS,EAAEA;iBAAqB;IAAWG,KAAK,EAAEA;GAAxD,EACIN,aAAA,CAACqB,IAAD,oBAA2BV,QAA3B,EACIX,aAAA,CAACqB,MAAD;IAAyBC,OAAO;IAACpB,GAAG,EAAEY;GAAtC,EACId,aAAA,MAAA,oBAASQ;IAAUL,SAAS,EAAC;IAAgBD,GAAG,EAAEA;IAAlD,EACIF,aAAA,CAACuB,KAAD,oBACQb;IACJc,YAAY,EAAC;IACbf,MAAM,EACFR,KAAK,CAACmB,MAAN,GACIpB,aAAA,CAACyB,UAAD;MACIC,UAAU,EAAC;MACXvB,SAAS,EAAC;MACVwB,IAAI,EAAEhB,OAAO,CAACiB,IAAR,GAAe,YAAf,GAA8B;MACpCC,OAAO,EAAE;;;QACLlB,OAAO,CAACmB,YAAR,CAAqB,IAArB;QACA,sBAAApB,KAAK,CAACR,GAAN,CAAU6B,OAAV,0EAAmBC,KAAnB;;MAEJC,QAAQ,EAAE,CAAC;KARf,CADJ,GAWI5B,MAAM,GACNL,aAAA,CAACyB,UAAD;oBACgBV,KAAK,CAACP,QAAN,CAAe0B;MAC3BP,IAAI,EAAC;MACLQ,QAAQ,EAAElC,KAAK,CAACmC,QAAN,IAAkBnC,KAAK,CAACkC;MAClC9B,MAAM,EAAEA;MACRgC,OAAO,EAAGC,KAAD;;;;QAELA,KAAK,CAACC,cAAN;QACA,uBAAA7B,KAAK,CAACR,GAAN,CAAU6B,OAAV,4EAAmBC,KAAnB;;MAEJ9B,GAAG,EAAEO,MAAM,CAACP;MACZ+B,QAAQ,EAAE,CAAC;MACXC,OAAO,EAAEnB,KAAK,CAACP,QAAN,CAAe0B;KAZ5B,CADM,GAeNM;IA9BZ,CADJ,CADJ,CADJ,EAsCIxC,aAAA,CAACqB,OAAD;IACIoB,KAAK,EAAC;IACNC,eAAe,EAAEJ,KAAK;MAClBA,KAAK,CAACC,cAAN;;IAEJI,UAAU,EAAE;GALhB,EAMI3C,aAAA,CAAC4C,cAAD,oBACQhC;IACJT,SAAS,EAAEgB,EAAE,CAAC,uEAAD;IACbb,KAAK,EAAE;MAAEuC,QAAQ,EAAE5B,gBAAF,aAAEA,gBAAF,uBAAEA,gBAAgB,CAAE6B;;IACrCb,QAAQ,EAAEtB,OAAO,CAACiB,IAAR,GAAe,CAAf,GAAmB,CAAC;IAJlC,CANJ,CAtCJ,CADJ,CADJ;AAwDH,CAtEuB;;;;"}
1
+ {"version":3,"file":"Combobox.js","sources":["../../../../src/components/Combobox/Combobox.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport * as PopoverPrimitive from '@radix-ui/react-popover';\nimport { Input, InputProps } from '../Input/Input';\nimport { useCombobox } from './useCombobox';\nimport { ScrollableList, ScrollableListItem, ScrollableListItemValue } from '../Listbox/ScrollableList';\nimport { useBoundingClientRectListener } from '../../utils/hooks/useBoundingClientRectListener';\nimport { IconButton } from '../IconButton/IconButton';\nimport './Combobox.css';\nimport { DialogProps } from '../Dialog/Dialog';\nimport { useLocalization } from '../Provider/Provider';\n\nexport type ComboboxTexts = {\n /* Tooltip shown for the dialog button */\n tooltip: string;\n};\n\nexport type ComboboxItem = ScrollableListItem;\nexport type ComboboxValue = ScrollableListItemValue;\n\ntype ComboboxBaseProps = Omit<InputProps, 'defaultValue' | 'button' | 'onChange' | 'value'> & {\n /** Array of options in combobox */\n data?: ComboboxItem[];\n /**\n * Initial value of the input in combobox.\n * This is used when combobox is mounted, if no value is provided.\n * *Note* that combobox is a controlled component, setting this will also trigger the `onChange` event\n */\n defaultValue?: ComboboxValue;\n /** Set what value should have an empty option in combobox */\n emptyValue?: ComboboxValue;\n /** Draws attention to the combobox by changing its style and making it visually prominent */\n highlighted?: boolean;\n /** Displays loading state in listbox */\n loading?: boolean;\n /**\n * Handler called when user chooses an option from the provided suggestions.\n * Suggestions will be calculated based on the input value.\n * There are two ways to choose an option: either click on it, or navigate using keyboard and press `enter`\n */\n onChange?: React.ChangeEventHandler<HTMLInputElement>;\n /** Handler called when the user enters a query **/\n onSearch?: (query: string) => void | Promise<void>;\n /** Value of the input in combobox */\n value?: ComboboxValue;\n};\n\ninterface InlineComboboxProps extends ComboboxBaseProps {\n dialog?: never;\n /**\n * Combobox will display its data when input is clicked/focused, even if the input is empty.\n * *Note* that default combobox will display matching data only when user starts typing in input.\n */\n inline: boolean; // Example 3 on https://www.w3.org/TR/wai-aria-practices/examples/combobox/aria1.1pattern/listbox-combo.html\n}\n\ninterface DialogComboboxProps extends ComboboxBaseProps {\n dialog: (props: Partial<DialogProps>) => JSX.Element;\n inline?: never;\n}\n\nexport type ComboboxProps = InlineComboboxProps | DialogComboboxProps;\n\nexport const Combobox = React.forwardRef(function Combobox(props: ComboboxProps, ref: React.Ref<HTMLInputElement>) {\n const { className: externalClassName, dialog, style, ...otherProps } = props;\n const { combobox, button, input, popover, list } = useCombobox(otherProps, ref);\n const internalRef = React.useRef<HTMLDivElement>(null);\n const { texts } = useLocalization();\n const selectDimensions = useBoundingClientRectListener(internalRef);\n const className = cn(\n 'inline-flex relative',\n {\n 'yt-combobox--inline': props.inline,\n },\n externalClassName\n );\n\n return (\n <span className={className} data-taco=\"combobox\" style={style}>\n <PopoverPrimitive.Root {...popover}>\n <PopoverPrimitive.Anchor asChild ref={internalRef}>\n <div {...combobox} className=\"inline w-full\" ref={ref}>\n <Input\n {...input}\n autoComplete=\"off\"\n button={\n props.inline ? (\n <IconButton\n appearance=\"discrete\"\n className=\"!border-l-0 focus:!border-none focus:!shadow-none active:!border-none\"\n icon={popover.open ? 'chevron-up' : 'chevron-down'}\n onClick={() => {\n popover.onOpenChange(true);\n input.ref.current?.focus();\n }}\n tabIndex={-1}\n />\n ) : dialog ? (\n <IconButton\n aria-label={texts.combobox.tooltip}\n icon=\"list-search\"\n disabled={props.readOnly || props.disabled}\n dialog={dialog}\n onFocus={(event: React.FocusEvent<HTMLButtonElement>) => {\n // Prevents the default focus behaviour of showing the tooltip, on parent tooltip element\n event.preventDefault();\n input.ref.current?.focus();\n }}\n ref={button.ref}\n tabIndex={-1}\n tooltip={texts.combobox.tooltip}\n />\n ) : undefined\n }\n />\n </div>\n </PopoverPrimitive.Anchor>\n <PopoverPrimitive.Content\n align=\"start\"\n onOpenAutoFocus={event => {\n event.preventDefault();\n }}\n sideOffset={4}\n >\n <ScrollableList\n {...list}\n className={cn('!border-blue max-h-[calc(12rem+2px)] w-auto max-w-[theme(spacing.96)]')}\n style={{ minWidth: selectDimensions?.width }}\n tabIndex={popover.open ? 0 : -1}\n />\n </PopoverPrimitive.Content>\n </PopoverPrimitive.Root>\n </span>\n );\n});\n"],"names":["Combobox","React","props","ref","externalClassName","className","dialog","style","otherProps","useCombobox","combobox","button","input","popover","list","internalRef","useLocalization","texts","selectDimensions","useBoundingClientRectListener","cn","inline","PopoverPrimitive","asChild","Input","autoComplete","IconButton","appearance","icon","open","onClick","onOpenChange","current","focus","tabIndex","tooltip","disabled","readOnly","onFocus","event","preventDefault","undefined","align","onOpenAutoFocus","sideOffset","ScrollableList","minWidth","width"],"mappings":";;;;;;;;;;;;IA+DaA,QAAQ,gBAAGC,UAAA,CAAiB,SAASD,QAAT,CAAkBE,KAAlB,EAAwCC,GAAxC;EACrC,IAAmBC,iBAAnB,GAAuEF,KAAvE,CAAQG,SAAR;MAAsCC,MAAtC,GAAuEJ,KAAvE,CAAsCI,MAAtC;MAA8CC,KAA9C,GAAuEL,KAAvE,CAA8CK,KAA9C;MAAwDC,UAAxD,iCAAuEN,KAAvE;;EACA,mBAAmDO,WAAW,CAACD,UAAD,EAAaL,GAAb,CAA9D;MAAQO,QAAR,gBAAQA,QAAR;MAAkBC,MAAlB,gBAAkBA,MAAlB;MAA0BC,KAA1B,gBAA0BA,KAA1B;MAAiCC,OAAjC,gBAAiCA,OAAjC;MAA0CC,IAA1C,gBAA0CA,IAA1C;;EACA,IAAMC,WAAW,GAAGd,MAAA,CAA6B,IAA7B,CAApB;;EACA,uBAAkBe,eAAe,EAAjC;MAAQC,KAAR,oBAAQA,KAAR;;EACA,IAAMC,gBAAgB,GAAGC,6BAA6B,CAACJ,WAAD,CAAtD;EACA,IAAMV,SAAS,GAAGe,EAAE,CAChB,sBADgB,EAEhB;IACI,uBAAuBlB,KAAK,CAACmB;GAHjB,EAKhBjB,iBALgB,CAApB;EAQA,OACIH,aAAA,OAAA;IAAMI,SAAS,EAAEA;iBAAqB;IAAWE,KAAK,EAAEA;GAAxD,EACIN,aAAA,CAACqB,IAAD,oBAA2BT,QAA3B,EACIZ,aAAA,CAACqB,MAAD;IAAyBC,OAAO;IAACpB,GAAG,EAAEY;GAAtC,EACId,aAAA,MAAA,oBAASS;IAAUL,SAAS,EAAC;IAAgBF,GAAG,EAAEA;IAAlD,EACIF,aAAA,CAACuB,KAAD,oBACQZ;IACJa,YAAY,EAAC;IACbd,MAAM,EACFT,KAAK,CAACmB,MAAN,GACIpB,aAAA,CAACyB,UAAD;MACIC,UAAU,EAAC;MACXtB,SAAS,EAAC;MACVuB,IAAI,EAAEf,OAAO,CAACgB,IAAR,GAAe,YAAf,GAA8B;MACpCC,OAAO,EAAE;;;QACLjB,OAAO,CAACkB,YAAR,CAAqB,IAArB;QACA,sBAAAnB,KAAK,CAACT,GAAN,CAAU6B,OAAV,0EAAmBC,KAAnB;;MAEJC,QAAQ,EAAE,CAAC;KARf,CADJ,GAWI5B,MAAM,GACNL,aAAA,CAACyB,UAAD;oBACgBT,KAAK,CAACP,QAAN,CAAeyB;MAC3BP,IAAI,EAAC;MACLQ,QAAQ,EAAElC,KAAK,CAACmC,QAAN,IAAkBnC,KAAK,CAACkC;MAClC9B,MAAM,EAAEA;MACRgC,OAAO,EAAE,iBAACC,KAAD;;;;QAELA,KAAK,CAACC,cAAN;QACA,uBAAA5B,KAAK,CAACT,GAAN,CAAU6B,OAAV,4EAAmBC,KAAnB;;MAEJ9B,GAAG,EAAEQ,MAAM,CAACR;MACZ+B,QAAQ,EAAE,CAAC;MACXC,OAAO,EAAElB,KAAK,CAACP,QAAN,CAAeyB;KAZ5B,CADM,GAeNM;IA9BZ,CADJ,CADJ,CADJ,EAsCIxC,aAAA,CAACqB,OAAD;IACIoB,KAAK,EAAC;IACNC,eAAe,EAAE,yBAAAJ,KAAK;MAClBA,KAAK,CAACC,cAAN;;IAEJI,UAAU,EAAE;GALhB,EAOI3C,aAAA,CAAC4C,cAAD,oBACQ/B;IACJT,SAAS,EAAEe,EAAE,CAAC,uEAAD;IACbb,KAAK,EAAE;MAAEuC,QAAQ,EAAE5B,gBAAF,aAAEA,gBAAF,uBAAEA,gBAAgB,CAAE6B;;IACrCb,QAAQ,EAAErB,OAAO,CAACgB,IAAR,GAAe,CAAf,GAAmB,CAAC;IAJlC,CAPJ,CAtCJ,CADJ,CADJ;AAyDH,CAvEuB;;;;"}
@@ -1,3 +1,4 @@
1
+ import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import { useRef, useState, useMemo, useEffect } from 'react';
2
3
  import { v4 } from 'uuid';
3
4
  import { useProxiedRef } from '../../utils/hooks/useProxiedRef.js';
@@ -7,42 +8,59 @@ import { getId } from '../Listbox/ScrollableList.js';
7
8
  import { createCustomKeyboardEvent } from '../../utils/input.js';
8
9
  import { useFlattenedData, filterData, getIndexFromValue, setInputValueByRef, findByValue, sanitizeItem, getOptionParents } from '../Listbox/util.js';
9
10
 
10
- const debouncer = /*#__PURE__*/debounce(f => f(), 200);
11
-
12
- const convertToInputValue = value => String(value !== null && value !== void 0 ? value : '');
13
-
14
- const useCombobox = ({
15
- 'aria-label': ariaLabel,
16
- 'aria-labelledby': ariaLabelledBy,
17
- data: unfilteredData = [],
18
- defaultValue,
19
- disabled,
20
- id: nativeId,
21
- inline,
22
- loading: __,
23
- onChange,
24
- onClick,
25
- onKeyDown,
26
- onSearch,
27
- readOnly,
28
- value,
29
- ...props
30
- }, ref) => {
31
- const inputRef = useProxiedRef(ref);
32
- const buttonRef = useRef(null);
33
- const listRef = useRef(null);
34
- const [open, setOpen] = useState(false);
35
- const listId = useMemo(() => v4(), []);
36
- const [inputValue, setInputValue] = useState(convertToInputValue(value));
37
- const shouldFilterData = !onSearch && (!inline || inline && inputValue !== convertToInputValue(value));
38
- const flattenedData = useFlattenedData(unfilteredData);
39
- const data = useMemo(() => shouldFilterData ? filterData(flattenedData, inputValue) : flattenedData, [shouldFilterData, inputValue, flattenedData]); // listbox/select change value _with_ the index, but combobox changes on select of an index (click/enter), so we need state
40
-
41
- const [currentIndex, setCurrentIndex] = useState(inputValue !== undefined ? getIndexFromValue(data, inputValue) : undefined);
42
-
43
- const setInputValueByIndex = index => {
11
+ var _excluded = ["aria-label", "aria-labelledby", "data", "defaultValue", "disabled", "id", "inline", "loading", "onChange", "onClick", "onKeyDown", "onSearch", "readOnly", "value"];
12
+ var debouncer = /*#__PURE__*/debounce(function (f) {
13
+ return f();
14
+ }, 200);
15
+
16
+ var convertToInputValue = function convertToInputValue(value) {
17
+ return String(value !== null && value !== void 0 ? value : '');
18
+ };
19
+
20
+ var useCombobox = function useCombobox(_ref, ref) {
21
+ var ariaLabelledBy = _ref['aria-labelledby'],
22
+ _ref$data = _ref.data,
23
+ unfilteredData = _ref$data === void 0 ? [] : _ref$data,
24
+ defaultValue = _ref.defaultValue,
25
+ disabled = _ref.disabled,
26
+ inline = _ref.inline,
27
+ onChange = _ref.onChange,
28
+ onClick = _ref.onClick,
29
+ onKeyDown = _ref.onKeyDown,
30
+ onSearch = _ref.onSearch,
31
+ readOnly = _ref.readOnly,
32
+ value = _ref.value,
33
+ props = _objectWithoutPropertiesLoose(_ref, _excluded);
34
+
35
+ var inputRef = useProxiedRef(ref);
36
+ var buttonRef = useRef(null);
37
+ var listRef = useRef(null);
38
+
39
+ var _React$useState = useState(false),
40
+ open = _React$useState[0],
41
+ setOpen = _React$useState[1];
42
+
43
+ var listId = useMemo(function () {
44
+ return v4();
45
+ }, []);
46
+
47
+ var _React$useState2 = useState(convertToInputValue(value)),
48
+ inputValue = _React$useState2[0],
49
+ setInputValue = _React$useState2[1];
50
+
51
+ var shouldFilterData = !onSearch && (!inline || inline && inputValue !== convertToInputValue(value));
52
+ var flattenedData = useFlattenedData(unfilteredData);
53
+ var data = useMemo(function () {
54
+ return shouldFilterData ? filterData(flattenedData, inputValue) : flattenedData;
55
+ }, [shouldFilterData, inputValue, flattenedData]); // listbox/select change value _with_ the index, but combobox changes on select of an index (click/enter), so we need state
56
+
57
+ var _React$useState3 = useState(inputValue !== undefined ? getIndexFromValue(data, inputValue) : undefined),
58
+ currentIndex = _React$useState3[0],
59
+ setCurrentIndex = _React$useState3[1];
60
+
61
+ var setInputValueByIndex = function setInputValueByIndex(index) {
44
62
  if (index !== undefined) {
45
- const option = data[index];
63
+ var option = data[index];
46
64
 
47
65
  if (option && !option.disabled) {
48
66
  setInputValueByRef(inputRef.current, option.value, 'focusout');
@@ -50,12 +68,12 @@ const useCombobox = ({
50
68
  }
51
69
  };
52
70
 
53
- const setCurrentValue = index => {
71
+ var setCurrentValue = function setCurrentValue(index) {
54
72
  if (index === undefined) {
55
73
  return;
56
74
  }
57
75
 
58
- const option = data[index]; // if the selected option is not already selected, trigger blur event
76
+ var option = data[index]; // if the selected option is not already selected, trigger blur event
59
77
 
60
78
  if (option.value !== value) {
61
79
  setInputValueByIndex(index);
@@ -66,29 +84,29 @@ const useCombobox = ({
66
84
  }; // ensure the external value is synced with the internal value when mounting, e.g. incase a default value was set
67
85
 
68
86
 
69
- useEffect(() => {
87
+ useEffect(function () {
70
88
  if (defaultValue && !value) {
71
89
  setInputValueByIndex(getIndexFromValue(data, defaultValue));
72
90
  }
73
91
  }, [data]); // update input value if it changed 'externally', e.g. clicking/entering an item in the listbox, from a modal etc
74
92
 
75
- useEffect(() => {
93
+ useEffect(function () {
76
94
  if (value !== undefined && value !== inputValue) {
77
95
  setInputValue(convertToInputValue(value));
78
96
  }
79
97
  }, [value]);
80
- useEffect(() => {
98
+ useEffect(function () {
81
99
  if (onSearch) {
82
- debouncer(() => {
100
+ debouncer(function () {
83
101
  onSearch(inputValue);
84
102
  });
85
103
  }
86
104
  }, [inputValue]); // show listbox based on input value
87
105
 
88
- useEffect(() => {
106
+ useEffect(function () {
89
107
  // don't show the popover if the internal (input) value already is the current value
90
108
  // this prevents the popover showing after selecting a value or pressing escape
91
- const isCurrentValue = value !== undefined && value !== null && inputValue === String(value);
109
+ var isCurrentValue = value !== undefined && value !== null && inputValue === String(value);
92
110
 
93
111
  if (inputValue && data.length && !isCurrentValue) {
94
112
  setCurrentIndex(0);
@@ -100,7 +118,7 @@ const useCombobox = ({
100
118
  setOpen(false);
101
119
  }
102
120
  }, [inputValue, data]);
103
- useEffect(() => {
121
+ useEffect(function () {
104
122
  if (open) {
105
123
  setCurrentIndex(getIndexFromValue(data, inputValue) || 0);
106
124
  } else {
@@ -108,7 +126,7 @@ const useCombobox = ({
108
126
  }
109
127
  }, [open]); // event handlers
110
128
 
111
- const handleInputBlur = event => {
129
+ var handleInputBlur = function handleInputBlur(event) {
112
130
  event.persist();
113
131
 
114
132
  if (event.relatedTarget === listRef.current) {
@@ -117,9 +135,9 @@ const useCombobox = ({
117
135
  }
118
136
 
119
137
  if (onChange && event.target.value !== value) {
120
- const item = findByValue(flattenedData, event.target.value);
138
+ var item = findByValue(flattenedData, event.target.value);
121
139
  event.detail = sanitizeItem(item);
122
- const parents = getOptionParents(flattenedData, item === null || item === void 0 ? void 0 : item.path);
140
+ var parents = getOptionParents(flattenedData, item === null || item === void 0 ? void 0 : item.path);
123
141
 
124
142
  if (parents !== null && parents.length > 0) {
125
143
  event.detail.parents = parents;
@@ -133,11 +151,11 @@ const useCombobox = ({
133
151
  }
134
152
  };
135
153
 
136
- const handleInputChange = event => {
154
+ var handleInputChange = function handleInputChange(event) {
137
155
  setInputValue(event.target.value);
138
156
  };
139
157
 
140
- const handleInputClick = event => {
158
+ var handleInputClick = function handleInputClick(event) {
141
159
  if (inline || !open && inputValue && data.length) {
142
160
  setOpen(true);
143
161
  }
@@ -148,7 +166,7 @@ const useCombobox = ({
148
166
  }
149
167
  };
150
168
 
151
- const handleInputKeyDown = event => {
169
+ var handleInputKeyDown = function handleInputKeyDown(event) {
152
170
  event.persist();
153
171
 
154
172
  switch (event.keyCode) {
@@ -208,7 +226,7 @@ const useCombobox = ({
208
226
  if (inline && !open) {
209
227
  if (event.keyCode === keycode('up') || event.keyCode === keycode('down')) {
210
228
  event.preventDefault();
211
- const initialIndex = event.keyCode === keycode('up') ? data.length - 1 : 0;
229
+ var initialIndex = event.keyCode === keycode('up') ? data.length - 1 : 0;
212
230
  setCurrentIndex(currentIndex !== undefined ? currentIndex : initialIndex);
213
231
  setOpen(true);
214
232
  }
@@ -220,23 +238,24 @@ const useCombobox = ({
220
238
  }
221
239
  };
222
240
 
223
- const handleListboxChange = index => {
241
+ var handleListboxChange = function handleListboxChange(index) {
224
242
  setCurrentIndex(index);
225
243
  };
226
244
 
227
- const handleListboxClick = (event, index) => {
245
+ var handleListboxClick = function handleListboxClick(event, index) {
228
246
  event.preventDefault();
229
247
  setCurrentValue(index);
230
248
  setOpen(false);
231
249
  };
232
250
 
233
- const combobox = {
251
+ var combobox = {
234
252
  'aria-expanded': open,
235
253
  'aria-owns': listId,
236
254
  'aria-haspopup': 'listbox',
237
255
  role: 'combobox'
238
256
  };
239
- const input = { ...props,
257
+
258
+ var input = _extends({}, props, {
240
259
  'aria-controls': listId,
241
260
  // Indicates that the autocomplete behavior of the text input is to suggest a list of possible values in a popup and that the suggestions
242
261
  // are related to the string that is present in the textbox
@@ -244,20 +263,21 @@ const useCombobox = ({
244
263
  // Enables assistive technologies to know which element the application regards as focused while DOM focus remains on the input element
245
264
  'aria-activedescendant': currentIndex !== undefined && data[currentIndex] ? getId(listId, String(data[currentIndex].value)) : undefined,
246
265
  'aria-labelledby': ariaLabelledBy,
247
- disabled,
266
+ disabled: disabled,
248
267
  onBlur: !disabled && !readOnly ? handleInputBlur : undefined,
249
268
  onChange: !disabled && !readOnly ? handleInputChange : undefined,
250
269
  onClick: !disabled && !readOnly ? handleInputClick : undefined,
251
270
  onKeyDown: !disabled && !readOnly ? handleInputKeyDown : undefined,
252
- readOnly,
271
+ readOnly: readOnly,
253
272
  ref: inputRef,
254
273
  type: 'text',
255
274
  value: inputValue !== null && inputValue !== void 0 ? inputValue : ''
256
- };
257
- const list = {
275
+ });
276
+
277
+ var list = {
258
278
  'aria-labelledby': ariaLabelledBy,
259
- data,
260
- disabled,
279
+ data: data,
280
+ disabled: disabled,
261
281
  id: listId,
262
282
  onChange: handleListboxChange,
263
283
  onClick: handleListboxClick,
@@ -266,16 +286,16 @@ const useCombobox = ({
266
286
  tabIndex: -1,
267
287
  value: currentIndex
268
288
  };
269
- const button = {
289
+ var button = {
270
290
  ref: buttonRef
271
291
  };
272
292
  return {
273
- combobox,
274
- input,
275
- list,
276
- button,
293
+ combobox: combobox,
294
+ input: input,
295
+ list: list,
296
+ button: button,
277
297
  popover: {
278
- open,
298
+ open: open,
279
299
  onOpenChange: setOpen
280
300
  }
281
301
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useCombobox.js","sources":["../../../../src/components/Combobox/useCombobox.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport keycode from 'keycode';\r\nimport { v4 as uuid } from 'uuid';\r\nimport debounce from 'lodash/debounce';\r\nimport { ComboboxProps } from './Combobox';\r\nimport {\r\n setInputValueByRef,\r\n getIndexFromValue,\r\n findByValue,\r\n useFlattenedData,\r\n sanitizeItem,\r\n getOptionParents,\r\n filterData,\r\n} from '../Listbox/util';\r\nimport { createCustomKeyboardEvent } from '../../utils/input';\r\nimport { useProxiedRef } from '../../utils/hooks/useProxiedRef';\r\nimport { getId, ScrollableListItemValue, ScrollableListPropsWithRef } from '../Listbox/ScrollableList';\r\n\r\nconst debouncer = debounce(f => f(), 200);\r\n\r\nconst convertToInputValue = (value: ScrollableListItemValue | undefined) => String(value ?? '');\r\n\r\ntype useCombobox = React.HTMLAttributes<HTMLDivElement> & {\r\n combobox: React.HTMLAttributes<HTMLSpanElement>;\r\n input: Omit<React.InputHTMLAttributes<HTMLInputElement>, 'defaultValue'> & { ref: React.RefObject<HTMLInputElement> };\r\n list: ScrollableListPropsWithRef;\r\n button: { ref: any };\r\n popover: { open: boolean; onOpenChange: (open: boolean) => void };\r\n};\r\n\r\nexport const useCombobox = (\r\n {\r\n 'aria-label': ariaLabel,\r\n 'aria-labelledby': ariaLabelledBy,\r\n data: unfilteredData = [],\r\n defaultValue,\r\n disabled,\r\n id: nativeId,\r\n inline,\r\n loading: __,\r\n onChange,\r\n onClick,\r\n onKeyDown,\r\n onSearch,\r\n readOnly,\r\n value,\r\n ...props\r\n }: Omit<ComboboxProps, 'dialog'>,\r\n ref: React.Ref<HTMLInputElement>\r\n): useCombobox => {\r\n const inputRef = useProxiedRef<HTMLInputElement>(ref);\r\n const buttonRef = React.useRef<HTMLButtonElement>(null);\r\n const listRef = React.useRef<HTMLUListElement>(null);\r\n const [open, setOpen] = React.useState(false);\r\n const listId = React.useMemo(() => uuid(), []);\r\n const [inputValue, setInputValue] = React.useState<string>(convertToInputValue(value));\r\n const shouldFilterData = !onSearch && (!inline || (inline && inputValue !== convertToInputValue(value)));\r\n const flattenedData = useFlattenedData(unfilteredData);\r\n const data = React.useMemo(\r\n () => (shouldFilterData ? filterData(flattenedData, inputValue) : flattenedData),\r\n [shouldFilterData, inputValue, flattenedData]\r\n );\r\n // listbox/select change value _with_ the index, but combobox changes on select of an index (click/enter), so we need state\r\n const [currentIndex, setCurrentIndex] = React.useState<number | undefined>(\r\n inputValue !== undefined ? getIndexFromValue(data, inputValue) : undefined\r\n );\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, 'focusout');\r\n }\r\n }\r\n };\r\n\r\n const setCurrentValue = (index: number | undefined) => {\r\n if (index === undefined) {\r\n return;\r\n }\r\n\r\n const option = data[index];\r\n\r\n // if the selected option is not already selected, trigger blur event\r\n if (option.value !== value) {\r\n setInputValueByIndex(index);\r\n } else {\r\n // if the selected option is already selected, refill input with its value\r\n setInputValue(convertToInputValue(value));\r\n }\r\n };\r\n\r\n // ensure the external value is synced with the internal value when mounting, e.g. incase a default value was set\r\n React.useEffect(() => {\r\n if (defaultValue && !value) {\r\n setInputValueByIndex(getIndexFromValue(data, defaultValue));\r\n }\r\n }, [data]);\r\n\r\n // update input value if it changed 'externally', e.g. clicking/entering an item in the listbox, from a modal etc\r\n React.useEffect(() => {\r\n if (value !== undefined && value !== inputValue) {\r\n setInputValue(convertToInputValue(value));\r\n }\r\n }, [value]);\r\n\r\n React.useEffect(() => {\r\n if (onSearch) {\r\n debouncer(() => {\r\n onSearch(inputValue);\r\n });\r\n }\r\n }, [inputValue]);\r\n\r\n // show listbox based on input value\r\n React.useEffect(() => {\r\n // don't show the popover if the internal (input) value already is the current value\r\n // this prevents the popover showing after selecting a value or pressing escape\r\n const isCurrentValue = value !== undefined && value !== null && inputValue === String(value);\r\n\r\n if (inputValue && data.length && !isCurrentValue) {\r\n setCurrentIndex(0);\r\n\r\n if (!open) {\r\n setOpen(true);\r\n }\r\n } else {\r\n setOpen(false);\r\n }\r\n }, [inputValue, data]);\r\n\r\n React.useEffect(() => {\r\n if (open) {\r\n setCurrentIndex(getIndexFromValue(data, inputValue) || 0);\r\n } else {\r\n setCurrentIndex(undefined);\r\n }\r\n }, [open]);\r\n\r\n // event handlers\r\n const handleInputBlur = (event: React.FocusEvent<HTMLInputElement>): void => {\r\n event.persist();\r\n\r\n if (event.relatedTarget === listRef.current) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (onChange && event.target.value !== value) {\r\n const item = findByValue(flattenedData, event.target.value);\r\n (event as any).detail = sanitizeItem(item);\r\n\r\n const parents = getOptionParents(flattenedData, item?.path);\r\n\r\n if (parents !== null && parents.length > 0) {\r\n (event as any).detail.parents = parents;\r\n }\r\n\r\n onChange(event);\r\n }\r\n\r\n if (props.onBlur) {\r\n props.onBlur(event);\r\n }\r\n };\r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\r\n setInputValue(event.target.value);\r\n };\r\n\r\n const handleInputClick = (event: React.MouseEvent<HTMLInputElement>): void => {\r\n if (inline || (!open && inputValue && data.length)) {\r\n setOpen(true);\r\n }\r\n\r\n if (onClick) {\r\n event.persist();\r\n onClick(event);\r\n }\r\n };\r\n\r\n const handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>): void => {\r\n event.persist();\r\n\r\n switch (event.keyCode) {\r\n case keycode('backspace'): {\r\n return;\r\n }\r\n\r\n case keycode('escape'): {\r\n event.preventDefault();\r\n setInputValue(convertToInputValue(value));\r\n setOpen(false);\r\n return;\r\n }\r\n\r\n case keycode('tab'):\r\n case keycode('enter'): {\r\n if (event.keyCode !== keycode('tab')) {\r\n event.preventDefault();\r\n }\r\n\r\n setCurrentValue(currentIndex);\r\n setOpen(false);\r\n return;\r\n }\r\n\r\n case keycode('down'):\r\n if (open) {\r\n event.preventDefault();\r\n } else {\r\n if (!inline && buttonRef.current) {\r\n buttonRef.current.click();\r\n }\r\n }\r\n break;\r\n\r\n case keycode('up'):\r\n case keycode('home'):\r\n case keycode('end'): {\r\n if (open) {\r\n event.preventDefault();\r\n }\r\n break;\r\n }\r\n\r\n default:\r\n }\r\n\r\n // we aren't focused on the list, so manually forward the keydown event to it\r\n if (listRef.current) {\r\n listRef.current.dispatchEvent(createCustomKeyboardEvent(event));\r\n }\r\n\r\n if (inline && !open) {\r\n if (event.keyCode === keycode('up') || event.keyCode === keycode('down')) {\r\n event.preventDefault();\r\n const initialIndex = event.keyCode === keycode('up') ? data.length - 1 : 0;\r\n setCurrentIndex(currentIndex !== undefined ? currentIndex : initialIndex);\r\n setOpen(true);\r\n }\r\n }\r\n\r\n if (!event.isDefaultPrevented() && onKeyDown) {\r\n event.persist();\r\n onKeyDown(event);\r\n }\r\n };\r\n\r\n const handleListboxChange = (index: number): void => {\r\n setCurrentIndex(index);\r\n };\r\n\r\n const handleListboxClick = (event: React.MouseEvent<HTMLLIElement>, index: number): void => {\r\n event.preventDefault();\r\n setCurrentValue(index);\r\n setOpen(false);\r\n };\r\n\r\n const combobox = {\r\n 'aria-expanded': open,\r\n 'aria-owns': listId,\r\n 'aria-haspopup': 'listbox' as const,\r\n role: 'combobox',\r\n };\r\n\r\n const input = {\r\n ...props,\r\n 'aria-controls': listId,\r\n // Indicates that the autocomplete behavior of the text input is to suggest a list of possible values in a popup and that the suggestions\r\n // are related to the string that is present in the textbox\r\n 'aria-autocomplete': 'list' as const,\r\n // Enables assistive technologies to know which element the application regards as focused while DOM focus remains on the input element\r\n 'aria-activedescendant':\r\n currentIndex !== undefined && data[currentIndex] ? getId(listId, String(data[currentIndex].value)) : undefined,\r\n 'aria-labelledby': ariaLabelledBy,\r\n disabled,\r\n onBlur: !disabled && !readOnly ? handleInputBlur : undefined,\r\n onChange: !disabled && !readOnly ? handleInputChange : undefined,\r\n onClick: !disabled && !readOnly ? handleInputClick : undefined,\r\n onKeyDown: !disabled && !readOnly ? handleInputKeyDown : undefined,\r\n readOnly,\r\n ref: inputRef,\r\n type: 'text',\r\n value: inputValue ?? '',\r\n };\r\n\r\n const list: ScrollableListPropsWithRef = {\r\n 'aria-labelledby': ariaLabelledBy,\r\n data,\r\n disabled,\r\n id: listId,\r\n onChange: handleListboxChange,\r\n onClick: handleListboxClick,\r\n ref: listRef,\r\n scrollOnFocus: false,\r\n tabIndex: -1,\r\n value: currentIndex,\r\n };\r\n\r\n const button = {\r\n ref: buttonRef,\r\n };\r\n\r\n return {\r\n combobox,\r\n input,\r\n list,\r\n button,\r\n popover: {\r\n open,\r\n onOpenChange: setOpen,\r\n //visible: !data.length ? false : open,\r\n },\r\n };\r\n};\r\n"],"names":["debouncer","debounce","f","convertToInputValue","value","String","useCombobox","ariaLabel","ariaLabelledBy","data","unfilteredData","defaultValue","disabled","id","nativeId","inline","loading","__","onChange","onClick","onKeyDown","onSearch","readOnly","props","ref","inputRef","useProxiedRef","buttonRef","React","listRef","open","setOpen","listId","uuid","inputValue","setInputValue","shouldFilterData","flattenedData","useFlattenedData","filterData","currentIndex","setCurrentIndex","undefined","getIndexFromValue","setInputValueByIndex","index","option","setInputValueByRef","current","setCurrentValue","isCurrentValue","length","handleInputBlur","event","persist","relatedTarget","preventDefault","target","item","findByValue","detail","sanitizeItem","parents","getOptionParents","path","onBlur","handleInputChange","handleInputClick","handleInputKeyDown","keyCode","keycode","click","dispatchEvent","createCustomKeyboardEvent","initialIndex","isDefaultPrevented","handleListboxChange","handleListboxClick","combobox","role","input","getId","type","list","scrollOnFocus","tabIndex","button","popover","onOpenChange"],"mappings":"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"}
1
+ {"version":3,"file":"useCombobox.js","sources":["../../../../src/components/Combobox/useCombobox.tsx"],"sourcesContent":["import * as React from 'react';\nimport keycode from 'keycode';\nimport { v4 as uuid } from 'uuid';\nimport debounce from 'lodash/debounce';\nimport { ComboboxProps } from './Combobox';\nimport {\n setInputValueByRef,\n getIndexFromValue,\n findByValue,\n useFlattenedData,\n sanitizeItem,\n getOptionParents,\n filterData,\n} from '../Listbox/util';\nimport { createCustomKeyboardEvent } from '../../utils/input';\nimport { useProxiedRef } from '../../utils/hooks/useProxiedRef';\nimport { getId, ScrollableListItemValue, ScrollableListPropsWithRef } from '../Listbox/ScrollableList';\n\nconst debouncer = debounce(f => f(), 200);\n\nconst convertToInputValue = (value: ScrollableListItemValue | undefined) => String(value ?? '');\n\ntype useCombobox = React.HTMLAttributes<HTMLDivElement> & {\n combobox: React.HTMLAttributes<HTMLSpanElement>;\n input: Omit<React.InputHTMLAttributes<HTMLInputElement>, 'defaultValue'> & { ref: React.RefObject<HTMLInputElement> };\n list: ScrollableListPropsWithRef;\n button: { ref: any };\n popover: { open: boolean; onOpenChange: (open: boolean) => void };\n};\n\nexport const useCombobox = (\n {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n data: unfilteredData = [],\n defaultValue,\n disabled,\n id: nativeId,\n inline,\n loading: __,\n onChange,\n onClick,\n onKeyDown,\n onSearch,\n readOnly,\n value,\n ...props\n }: Omit<ComboboxProps, 'dialog'>,\n ref: React.Ref<HTMLInputElement>\n): useCombobox => {\n const inputRef = useProxiedRef<HTMLInputElement>(ref);\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n const listRef = React.useRef<HTMLUListElement>(null);\n const [open, setOpen] = React.useState(false);\n const listId = React.useMemo(() => uuid(), []);\n const [inputValue, setInputValue] = React.useState<string>(convertToInputValue(value));\n const shouldFilterData = !onSearch && (!inline || (inline && inputValue !== convertToInputValue(value)));\n const flattenedData = useFlattenedData(unfilteredData);\n const data = React.useMemo(\n () => (shouldFilterData ? filterData(flattenedData, inputValue) : flattenedData),\n [shouldFilterData, inputValue, flattenedData]\n );\n // listbox/select change value _with_ the index, but combobox changes on select of an index (click/enter), so we need state\n const [currentIndex, setCurrentIndex] = React.useState<number | undefined>(\n inputValue !== undefined ? getIndexFromValue(data, inputValue) : undefined\n );\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, 'focusout');\n }\n }\n };\n\n const setCurrentValue = (index: number | undefined) => {\n if (index === undefined) {\n return;\n }\n\n const option = data[index];\n\n // if the selected option is not already selected, trigger blur event\n if (option.value !== value) {\n setInputValueByIndex(index);\n } else {\n // if the selected option is already selected, refill input with its value\n setInputValue(convertToInputValue(value));\n }\n };\n\n // ensure the external value is synced with the internal value when mounting, e.g. incase a default value was set\n React.useEffect(() => {\n if (defaultValue && !value) {\n setInputValueByIndex(getIndexFromValue(data, defaultValue));\n }\n }, [data]);\n\n // update input value if it changed 'externally', e.g. clicking/entering an item in the listbox, from a modal etc\n React.useEffect(() => {\n if (value !== undefined && value !== inputValue) {\n setInputValue(convertToInputValue(value));\n }\n }, [value]);\n\n React.useEffect(() => {\n if (onSearch) {\n debouncer(() => {\n onSearch(inputValue);\n });\n }\n }, [inputValue]);\n\n // show listbox based on input value\n React.useEffect(() => {\n // don't show the popover if the internal (input) value already is the current value\n // this prevents the popover showing after selecting a value or pressing escape\n const isCurrentValue = value !== undefined && value !== null && inputValue === String(value);\n\n if (inputValue && data.length && !isCurrentValue) {\n setCurrentIndex(0);\n\n if (!open) {\n setOpen(true);\n }\n } else {\n setOpen(false);\n }\n }, [inputValue, data]);\n\n React.useEffect(() => {\n if (open) {\n setCurrentIndex(getIndexFromValue(data, inputValue) || 0);\n } else {\n setCurrentIndex(undefined);\n }\n }, [open]);\n\n // event handlers\n const handleInputBlur = (event: React.FocusEvent<HTMLInputElement>): void => {\n event.persist();\n\n if (event.relatedTarget === listRef.current) {\n event.preventDefault();\n return;\n }\n\n if (onChange && event.target.value !== value) {\n const item = findByValue(flattenedData, event.target.value);\n (event as any).detail = sanitizeItem(item);\n\n const parents = getOptionParents(flattenedData, item?.path);\n\n if (parents !== null && parents.length > 0) {\n (event as any).detail.parents = parents;\n }\n\n onChange(event);\n }\n\n if (props.onBlur) {\n props.onBlur(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n setInputValue(event.target.value);\n };\n\n const handleInputClick = (event: React.MouseEvent<HTMLInputElement>): void => {\n if (inline || (!open && inputValue && data.length)) {\n setOpen(true);\n }\n\n if (onClick) {\n event.persist();\n onClick(event);\n }\n };\n\n const handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>): void => {\n event.persist();\n\n switch (event.keyCode) {\n case keycode('backspace'): {\n return;\n }\n\n case keycode('escape'): {\n event.preventDefault();\n setInputValue(convertToInputValue(value));\n setOpen(false);\n return;\n }\n\n case keycode('tab'):\n case keycode('enter'): {\n if (event.keyCode !== keycode('tab')) {\n event.preventDefault();\n }\n\n setCurrentValue(currentIndex);\n setOpen(false);\n return;\n }\n\n case keycode('down'):\n if (open) {\n event.preventDefault();\n } else {\n if (!inline && buttonRef.current) {\n buttonRef.current.click();\n }\n }\n break;\n\n case keycode('up'):\n case keycode('home'):\n case keycode('end'): {\n if (open) {\n event.preventDefault();\n }\n break;\n }\n\n default:\n }\n\n // we aren't focused on the list, so manually forward the keydown event to it\n if (listRef.current) {\n listRef.current.dispatchEvent(createCustomKeyboardEvent(event));\n }\n\n if (inline && !open) {\n if (event.keyCode === keycode('up') || event.keyCode === keycode('down')) {\n event.preventDefault();\n const initialIndex = event.keyCode === keycode('up') ? data.length - 1 : 0;\n setCurrentIndex(currentIndex !== undefined ? currentIndex : initialIndex);\n setOpen(true);\n }\n }\n\n if (!event.isDefaultPrevented() && onKeyDown) {\n event.persist();\n onKeyDown(event);\n }\n };\n\n const handleListboxChange = (index: number): void => {\n setCurrentIndex(index);\n };\n\n const handleListboxClick = (event: React.MouseEvent<HTMLLIElement>, index: number): void => {\n event.preventDefault();\n setCurrentValue(index);\n setOpen(false);\n };\n\n const combobox = {\n 'aria-expanded': open,\n 'aria-owns': listId,\n 'aria-haspopup': 'listbox' as const,\n role: 'combobox',\n };\n\n const input = {\n ...props,\n 'aria-controls': listId,\n // Indicates that the autocomplete behavior of the text input is to suggest a list of possible values in a popup and that the suggestions\n // are related to the string that is present in the textbox\n 'aria-autocomplete': 'list' as const,\n // Enables assistive technologies to know which element the application regards as focused while DOM focus remains on the input element\n 'aria-activedescendant':\n currentIndex !== undefined && data[currentIndex] ? getId(listId, String(data[currentIndex].value)) : undefined,\n 'aria-labelledby': ariaLabelledBy,\n disabled,\n onBlur: !disabled && !readOnly ? handleInputBlur : undefined,\n onChange: !disabled && !readOnly ? handleInputChange : undefined,\n onClick: !disabled && !readOnly ? handleInputClick : undefined,\n onKeyDown: !disabled && !readOnly ? handleInputKeyDown : undefined,\n readOnly,\n ref: inputRef,\n type: 'text',\n value: inputValue ?? '',\n };\n\n const list: ScrollableListPropsWithRef = {\n 'aria-labelledby': ariaLabelledBy,\n data,\n disabled,\n id: listId,\n onChange: handleListboxChange,\n onClick: handleListboxClick,\n ref: listRef,\n scrollOnFocus: false,\n tabIndex: -1,\n value: currentIndex,\n };\n\n const button = {\n ref: buttonRef,\n };\n\n return {\n combobox,\n input,\n list,\n button,\n popover: {\n open,\n onOpenChange: setOpen,\n //visible: !data.length ? false : open,\n },\n };\n};\n"],"names":["debouncer","debounce","f","convertToInputValue","value","String","useCombobox","ref","ariaLabelledBy","data","unfilteredData","defaultValue","disabled","inline","onChange","onClick","onKeyDown","onSearch","readOnly","props","inputRef","useProxiedRef","buttonRef","React","listRef","open","setOpen","listId","uuid","inputValue","setInputValue","shouldFilterData","flattenedData","useFlattenedData","filterData","undefined","getIndexFromValue","currentIndex","setCurrentIndex","setInputValueByIndex","index","option","setInputValueByRef","current","setCurrentValue","isCurrentValue","length","handleInputBlur","event","persist","relatedTarget","preventDefault","target","item","findByValue","detail","sanitizeItem","parents","getOptionParents","path","onBlur","handleInputChange","handleInputClick","handleInputKeyDown","keyCode","keycode","click","dispatchEvent","createCustomKeyboardEvent","initialIndex","isDefaultPrevented","handleListboxChange","handleListboxClick","combobox","role","input","getId","type","list","id","scrollOnFocus","tabIndex","button","popover","onOpenChange"],"mappings":";;;;;;;;;;;AAkBA,IAAMA,SAAS,gBAAGC,QAAQ,CAAC,UAAAC,CAAC;EAAA,OAAIA,CAAC,EAAL;AAAA,CAAF,EAAW,GAAX,CAA1B;;AAEA,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,KAAD;EAAA,OAAgDC,MAAM,CAACD,KAAD,aAACA,KAAD,cAACA,KAAD,GAAU,EAAV,CAAtD;AAAA,CAA5B;;IAUaE,WAAW,GAAG,SAAdA,WAAc,OAkBvBC,GAlBuB;MAGAC,sBAAnB;uBACAC;MAAMC,wCAAiB;MACvBC,oBAAAA;MACAC,gBAAAA;MAEAC,cAAAA;MAEAC,gBAAAA;MACAC,eAAAA;MACAC,iBAAAA;MACAC,gBAAAA;MACAC,gBAAAA;MACAd,aAAAA;MACGe;;EAIP,IAAMC,QAAQ,GAAGC,aAAa,CAAmBd,GAAnB,CAA9B;EACA,IAAMe,SAAS,GAAGC,MAAA,CAAgC,IAAhC,CAAlB;EACA,IAAMC,OAAO,GAAGD,MAAA,CAA+B,IAA/B,CAAhB;;EACA,sBAAwBA,QAAA,CAAe,KAAf,CAAxB;MAAOE,IAAP;MAAaC,OAAb;;EACA,IAAMC,MAAM,GAAGJ,OAAA,CAAc;IAAA,OAAMK,EAAI,EAAV;GAAd,EAA4B,EAA5B,CAAf;;EACA,uBAAoCL,QAAA,CAAuBpB,mBAAmB,CAACC,KAAD,CAA1C,CAApC;MAAOyB,UAAP;MAAmBC,aAAnB;;EACA,IAAMC,gBAAgB,GAAG,CAACd,QAAD,KAAc,CAACJ,MAAD,IAAYA,MAAM,IAAIgB,UAAU,KAAK1B,mBAAmB,CAACC,KAAD,CAAtE,CAAzB;EACA,IAAM4B,aAAa,GAAGC,gBAAgB,CAACvB,cAAD,CAAtC;EACA,IAAMD,IAAI,GAAGc,OAAA,CACT;IAAA,OAAOQ,gBAAgB,GAAGG,UAAU,CAACF,aAAD,EAAgBH,UAAhB,CAAb,GAA2CG,aAAlE;GADS,EAET,CAACD,gBAAD,EAAmBF,UAAnB,EAA+BG,aAA/B,CAFS,CAAb;;EAKA,uBAAwCT,QAAA,CACpCM,UAAU,KAAKM,SAAf,GAA2BC,iBAAiB,CAAC3B,IAAD,EAAOoB,UAAP,CAA5C,GAAiEM,SAD7B,CAAxC;MAAOE,YAAP;MAAqBC,eAArB;;EAIA,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,KAAD;IACzB,IAAIA,KAAK,KAAKL,SAAd,EAAyB;MACrB,IAAMM,MAAM,GAAGhC,IAAI,CAAC+B,KAAD,CAAnB;;MAEA,IAAIC,MAAM,IAAI,CAACA,MAAM,CAAC7B,QAAtB,EAAgC;QAC5B8B,kBAAkB,CAACtB,QAAQ,CAACuB,OAAV,EAAmBF,MAAM,CAACrC,KAA1B,EAAiC,UAAjC,CAAlB;;;GALZ;;EAUA,IAAMwC,eAAe,GAAG,SAAlBA,eAAkB,CAACJ,KAAD;IACpB,IAAIA,KAAK,KAAKL,SAAd,EAAyB;MACrB;;;IAGJ,IAAMM,MAAM,GAAGhC,IAAI,CAAC+B,KAAD,CAAnB;;IAGA,IAAIC,MAAM,CAACrC,KAAP,KAAiBA,KAArB,EAA4B;MACxBmC,oBAAoB,CAACC,KAAD,CAApB;KADJ,MAEO;;MAEHV,aAAa,CAAC3B,mBAAmB,CAACC,KAAD,CAApB,CAAb;;GAZR;;;EAiBAmB,SAAA,CAAgB;IACZ,IAAIZ,YAAY,IAAI,CAACP,KAArB,EAA4B;MACxBmC,oBAAoB,CAACH,iBAAiB,CAAC3B,IAAD,EAAOE,YAAP,CAAlB,CAApB;;GAFR,EAIG,CAACF,IAAD,CAJH;;EAOAc,SAAA,CAAgB;IACZ,IAAInB,KAAK,KAAK+B,SAAV,IAAuB/B,KAAK,KAAKyB,UAArC,EAAiD;MAC7CC,aAAa,CAAC3B,mBAAmB,CAACC,KAAD,CAApB,CAAb;;GAFR,EAIG,CAACA,KAAD,CAJH;EAMAmB,SAAA,CAAgB;IACZ,IAAIN,QAAJ,EAAc;MACVjB,SAAS,CAAC;QACNiB,QAAQ,CAACY,UAAD,CAAR;OADK,CAAT;;GAFR,EAMG,CAACA,UAAD,CANH;;EASAN,SAAA,CAAgB;;;IAGZ,IAAMsB,cAAc,GAAGzC,KAAK,KAAK+B,SAAV,IAAuB/B,KAAK,KAAK,IAAjC,IAAyCyB,UAAU,KAAKxB,MAAM,CAACD,KAAD,CAArF;;IAEA,IAAIyB,UAAU,IAAIpB,IAAI,CAACqC,MAAnB,IAA6B,CAACD,cAAlC,EAAkD;MAC9CP,eAAe,CAAC,CAAD,CAAf;;MAEA,IAAI,CAACb,IAAL,EAAW;QACPC,OAAO,CAAC,IAAD,CAAP;;KAJR,MAMO;MACHA,OAAO,CAAC,KAAD,CAAP;;GAZR,EAcG,CAACG,UAAD,EAAapB,IAAb,CAdH;EAgBAc,SAAA,CAAgB;IACZ,IAAIE,IAAJ,EAAU;MACNa,eAAe,CAACF,iBAAiB,CAAC3B,IAAD,EAAOoB,UAAP,CAAjB,IAAuC,CAAxC,CAAf;KADJ,MAEO;MACHS,eAAe,CAACH,SAAD,CAAf;;GAJR,EAMG,CAACV,IAAD,CANH;;EASA,IAAMsB,eAAe,GAAG,SAAlBA,eAAkB,CAACC,KAAD;IACpBA,KAAK,CAACC,OAAN;;IAEA,IAAID,KAAK,CAACE,aAAN,KAAwB1B,OAAO,CAACmB,OAApC,EAA6C;MACzCK,KAAK,CAACG,cAAN;MACA;;;IAGJ,IAAIrC,QAAQ,IAAIkC,KAAK,CAACI,MAAN,CAAahD,KAAb,KAAuBA,KAAvC,EAA8C;MAC1C,IAAMiD,IAAI,GAAGC,WAAW,CAACtB,aAAD,EAAgBgB,KAAK,CAACI,MAAN,CAAahD,KAA7B,CAAxB;MACC4C,KAAa,CAACO,MAAd,GAAuBC,YAAY,CAACH,IAAD,CAAnC;MAED,IAAMI,OAAO,GAAGC,gBAAgB,CAAC1B,aAAD,EAAgBqB,IAAhB,aAAgBA,IAAhB,uBAAgBA,IAAI,CAAEM,IAAtB,CAAhC;;MAEA,IAAIF,OAAO,KAAK,IAAZ,IAAoBA,OAAO,CAACX,MAAR,GAAiB,CAAzC,EAA4C;QACvCE,KAAa,CAACO,MAAd,CAAqBE,OAArB,GAA+BA,OAA/B;;;MAGL3C,QAAQ,CAACkC,KAAD,CAAR;;;IAGJ,IAAI7B,KAAK,CAACyC,MAAV,EAAkB;MACdzC,KAAK,CAACyC,MAAN,CAAaZ,KAAb;;GAtBR;;EA0BA,IAAMa,iBAAiB,GAAG,SAApBA,iBAAoB,CAACb,KAAD;IACtBlB,aAAa,CAACkB,KAAK,CAACI,MAAN,CAAahD,KAAd,CAAb;GADJ;;EAIA,IAAM0D,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACd,KAAD;IACrB,IAAInC,MAAM,IAAK,CAACY,IAAD,IAASI,UAAT,IAAuBpB,IAAI,CAACqC,MAA3C,EAAoD;MAChDpB,OAAO,CAAC,IAAD,CAAP;;;IAGJ,IAAIX,OAAJ,EAAa;MACTiC,KAAK,CAACC,OAAN;MACAlC,OAAO,CAACiC,KAAD,CAAP;;GAPR;;EAWA,IAAMe,kBAAkB,GAAG,SAArBA,kBAAqB,CAACf,KAAD;IACvBA,KAAK,CAACC,OAAN;;IAEA,QAAQD,KAAK,CAACgB,OAAd;MACI,KAAKC,OAAO,CAAC,WAAD,CAAZ;QAA2B;UACvB;;;MAGJ,KAAKA,OAAO,CAAC,QAAD,CAAZ;QAAwB;UACpBjB,KAAK,CAACG,cAAN;UACArB,aAAa,CAAC3B,mBAAmB,CAACC,KAAD,CAApB,CAAb;UACAsB,OAAO,CAAC,KAAD,CAAP;UACA;;;MAGJ,KAAKuC,OAAO,CAAC,KAAD,CAAZ;MACA,KAAKA,OAAO,CAAC,OAAD,CAAZ;QAAuB;UACnB,IAAIjB,KAAK,CAACgB,OAAN,KAAkBC,OAAO,CAAC,KAAD,CAA7B,EAAsC;YAClCjB,KAAK,CAACG,cAAN;;;UAGJP,eAAe,CAACP,YAAD,CAAf;UACAX,OAAO,CAAC,KAAD,CAAP;UACA;;;MAGJ,KAAKuC,OAAO,CAAC,MAAD,CAAZ;QACI,IAAIxC,IAAJ,EAAU;UACNuB,KAAK,CAACG,cAAN;SADJ,MAEO;UACH,IAAI,CAACtC,MAAD,IAAWS,SAAS,CAACqB,OAAzB,EAAkC;YAC9BrB,SAAS,CAACqB,OAAV,CAAkBuB,KAAlB;;;;QAGR;;MAEJ,KAAKD,OAAO,CAAC,IAAD,CAAZ;MACA,KAAKA,OAAO,CAAC,MAAD,CAAZ;MACA,KAAKA,OAAO,CAAC,KAAD,CAAZ;QAAqB;UACjB,IAAIxC,IAAJ,EAAU;YACNuB,KAAK,CAACG,cAAN;;;UAEJ;;;;;IAOR,IAAI3B,OAAO,CAACmB,OAAZ,EAAqB;MACjBnB,OAAO,CAACmB,OAAR,CAAgBwB,aAAhB,CAA8BC,yBAAyB,CAACpB,KAAD,CAAvD;;;IAGJ,IAAInC,MAAM,IAAI,CAACY,IAAf,EAAqB;MACjB,IAAIuB,KAAK,CAACgB,OAAN,KAAkBC,OAAO,CAAC,IAAD,CAAzB,IAAmCjB,KAAK,CAACgB,OAAN,KAAkBC,OAAO,CAAC,MAAD,CAAhE,EAA0E;QACtEjB,KAAK,CAACG,cAAN;QACA,IAAMkB,YAAY,GAAGrB,KAAK,CAACgB,OAAN,KAAkBC,OAAO,CAAC,IAAD,CAAzB,GAAkCxD,IAAI,CAACqC,MAAL,GAAc,CAAhD,GAAoD,CAAzE;QACAR,eAAe,CAACD,YAAY,KAAKF,SAAjB,GAA6BE,YAA7B,GAA4CgC,YAA7C,CAAf;QACA3C,OAAO,CAAC,IAAD,CAAP;;;;IAIR,IAAI,CAACsB,KAAK,CAACsB,kBAAN,EAAD,IAA+BtD,SAAnC,EAA8C;MAC1CgC,KAAK,CAACC,OAAN;MACAjC,SAAS,CAACgC,KAAD,CAAT;;GAhER;;EAoEA,IAAMuB,mBAAmB,GAAG,SAAtBA,mBAAsB,CAAC/B,KAAD;IACxBF,eAAe,CAACE,KAAD,CAAf;GADJ;;EAIA,IAAMgC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACxB,KAAD,EAAyCR,KAAzC;IACvBQ,KAAK,CAACG,cAAN;IACAP,eAAe,CAACJ,KAAD,CAAf;IACAd,OAAO,CAAC,KAAD,CAAP;GAHJ;;EAMA,IAAM+C,QAAQ,GAAG;IACb,iBAAiBhD,IADJ;IAEb,aAAaE,MAFA;IAGb,iBAAiB,SAHJ;IAIb+C,IAAI,EAAE;GAJV;;EAOA,IAAMC,KAAK,gBACJxD,KADI;IAEP,iBAAiBQ,MAFV;;;IAKP,qBAAqB,MALd;;IAOP,yBACIU,YAAY,KAAKF,SAAjB,IAA8B1B,IAAI,CAAC4B,YAAD,CAAlC,GAAmDuC,KAAK,CAACjD,MAAD,EAAStB,MAAM,CAACI,IAAI,CAAC4B,YAAD,CAAJ,CAAmBjC,KAApB,CAAf,CAAxD,GAAqG+B,SARlG;IASP,mBAAmB3B,cATZ;IAUPI,QAAQ,EAARA,QAVO;IAWPgD,MAAM,EAAE,CAAChD,QAAD,IAAa,CAACM,QAAd,GAAyB6B,eAAzB,GAA2CZ,SAX5C;IAYPrB,QAAQ,EAAE,CAACF,QAAD,IAAa,CAACM,QAAd,GAAyB2C,iBAAzB,GAA6C1B,SAZhD;IAaPpB,OAAO,EAAE,CAACH,QAAD,IAAa,CAACM,QAAd,GAAyB4C,gBAAzB,GAA4C3B,SAb9C;IAcPnB,SAAS,EAAE,CAACJ,QAAD,IAAa,CAACM,QAAd,GAAyB6C,kBAAzB,GAA8C5B,SAdlD;IAePjB,QAAQ,EAARA,QAfO;IAgBPX,GAAG,EAAEa,QAhBE;IAiBPyD,IAAI,EAAE,MAjBC;IAkBPzE,KAAK,EAAEyB,UAAF,aAAEA,UAAF,cAAEA,UAAF,GAAgB;IAlBzB;;EAqBA,IAAMiD,IAAI,GAA+B;IACrC,mBAAmBtE,cADkB;IAErCC,IAAI,EAAJA,IAFqC;IAGrCG,QAAQ,EAARA,QAHqC;IAIrCmE,EAAE,EAAEpD,MAJiC;IAKrCb,QAAQ,EAAEyD,mBAL2B;IAMrCxD,OAAO,EAAEyD,kBAN4B;IAOrCjE,GAAG,EAAEiB,OAPgC;IAQrCwD,aAAa,EAAE,KARsB;IASrCC,QAAQ,EAAE,CAAC,CAT0B;IAUrC7E,KAAK,EAAEiC;GAVX;EAaA,IAAM6C,MAAM,GAAG;IACX3E,GAAG,EAAEe;GADT;EAIA,OAAO;IACHmD,QAAQ,EAARA,QADG;IAEHE,KAAK,EAALA,KAFG;IAGHG,IAAI,EAAJA,IAHG;IAIHI,MAAM,EAANA,MAJG;IAKHC,OAAO,EAAE;MACL1D,IAAI,EAAJA,IADK;MAEL2D,YAAY,EAAE1D;;GAPtB;AAWH;;;;"}
@@ -1,3 +1,4 @@
1
+ import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose } from '../../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import { forwardRef, createElement } from 'react';
2
3
  import cn from 'classnames';
3
4
  import { IconButton } from '../IconButton/IconButton.js';
@@ -7,23 +8,23 @@ import { Input } from '../Input/Input.js';
7
8
  import { useDatepicker } from './useDatepicker.js';
8
9
  import { Popover } from '../Popover/Popover.js';
9
10
 
10
- const Datepicker = /*#__PURE__*/forwardRef(function Datepicker(props, ref) {
11
- const {
12
- className: externalClassName,
13
- onReset: handleReset,
14
- style,
15
- shortcuts,
16
- shortcutsText,
17
- ...otherProps
18
- } = props;
19
- const {
20
- calendar,
21
- input
22
- } = useDatepicker(otherProps, ref);
23
- const {
24
- texts
25
- } = useLocalization();
26
- const className = cn('inline-flex w-full text-black font-normal', externalClassName);
11
+ var _excluded = ["className", "onReset", "style", "shortcuts", "shortcutsText"];
12
+ var Datepicker = /*#__PURE__*/forwardRef(function Datepicker(props, ref) {
13
+ var externalClassName = props.className,
14
+ handleReset = props.onReset,
15
+ style = props.style,
16
+ shortcuts = props.shortcuts,
17
+ shortcutsText = props.shortcutsText,
18
+ otherProps = _objectWithoutPropertiesLoose(props, _excluded);
19
+
20
+ var _useDatepicker = useDatepicker(otherProps, ref),
21
+ calendar = _useDatepicker.calendar,
22
+ input = _useDatepicker.input;
23
+
24
+ var _useLocalization = useLocalization(),
25
+ texts = _useLocalization.texts;
26
+
27
+ var className = cn('inline-flex w-full text-black font-normal', externalClassName);
27
28
  return createElement("span", {
28
29
  className: className,
29
30
  "data-taco": "datepicker",
@@ -33,37 +34,40 @@ const Datepicker = /*#__PURE__*/forwardRef(function Datepicker(props, ref) {
33
34
  "aria-label": texts.datepicker.expand,
34
35
  disabled: input.disabled || input.readOnly,
35
36
  icon: "calendar"
36
- })), createElement(Popover.Content, null, ({
37
- close
38
- }) => createElement("div", {
39
- className: "-m-3 flex"
40
- }, createElement(Calendar, Object.assign({}, calendar, {
41
- onChange: (date, event) => {
42
- calendar.onChange(date, event);
43
- close();
44
- },
45
- tabIndex: -1
46
- })), shortcuts && createElement("div", {
47
- className: "border-grey-dark flex flex-col border-l"
48
- }, createElement("span", {
49
- className: "m-4 mb-3 flex h-8 w-32 items-center text-xs font-semibold"
50
- }, shortcutsText !== null && shortcutsText !== void 0 ? shortcutsText : texts.datepicker.shortcuts), createElement("ul", null, shortcuts.map((shortcut, i) => createElement("li", {
51
- key: i
52
- }, createElement("button", {
53
- className: "hover:bg-grey-light flex w-full items-start px-4 py-1 text-xs",
54
- onClick: event => {
55
- event.persist();
56
- shortcut.onClick(event);
57
- close();
58
- }
59
- }, shortcut.text)))), handleReset && createElement("button", {
60
- className: "text-blue hover:text-blue-light my-4 mx-auto mt-auto inline-flex cursor-pointer border-none bg-transparent text-xs",
61
- onClick: event => {
62
- event.persist();
63
- handleReset(event);
64
- close();
65
- }
66
- }, texts.datepicker.clear)))))
37
+ })), createElement(Popover.Content, null, function (_ref) {
38
+ var close = _ref.close;
39
+ return createElement("div", {
40
+ className: "-m-3 flex"
41
+ }, createElement(Calendar, Object.assign({}, calendar, {
42
+ onChange: function onChange(date, event) {
43
+ calendar.onChange(date, event);
44
+ close();
45
+ },
46
+ tabIndex: -1
47
+ })), shortcuts && createElement("div", {
48
+ className: "border-grey-dark flex flex-col border-l"
49
+ }, createElement("span", {
50
+ className: "m-4 mb-3 flex h-8 w-32 items-center text-xs font-semibold"
51
+ }, shortcutsText !== null && shortcutsText !== void 0 ? shortcutsText : texts.datepicker.shortcuts), createElement("ul", null, shortcuts.map(function (shortcut, i) {
52
+ return createElement("li", {
53
+ key: i
54
+ }, createElement("button", {
55
+ className: "hover:bg-grey-light flex w-full items-start px-4 py-1 text-xs",
56
+ onClick: function onClick(event) {
57
+ event.persist();
58
+ shortcut.onClick(event);
59
+ close();
60
+ }
61
+ }, shortcut.text));
62
+ })), handleReset && createElement("button", {
63
+ className: "text-blue hover:text-blue-light my-4 mx-auto mt-auto inline-flex cursor-pointer border-none bg-transparent text-xs",
64
+ onClick: function onClick(event) {
65
+ event.persist();
66
+ handleReset(event);
67
+ close();
68
+ }
69
+ }, texts.datepicker.clear)));
70
+ }))
67
71
  })));
68
72
  });
69
73