@economic/taco 0.0.14-alpha.0 → 0.0.15-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 (376) hide show
  1. package/README.md +84 -84
  2. package/dist/esm/components/Accordion/Accordion.js.map +1 -1
  3. package/dist/esm/components/Backdrop/Backdrop.js +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 +15 -1
  10. package/dist/esm/components/Button/Button.js.map +1 -1
  11. package/dist/esm/components/Button/util.js +23 -48
  12. package/dist/esm/components/Button/util.js.map +1 -1
  13. package/dist/esm/components/Calendar/Calendar.js +3 -1
  14. package/dist/esm/components/Calendar/Calendar.js.map +1 -1
  15. package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
  16. package/dist/esm/components/Combobox/Combobox.js.map +1 -1
  17. package/dist/esm/components/Combobox/useCombobox.js +84 -64
  18. package/dist/esm/components/Combobox/useCombobox.js.map +1 -1
  19. package/dist/esm/components/Datepicker/Datepicker.js.map +1 -1
  20. package/dist/esm/components/Datepicker/useDatepicker.js +34 -27
  21. package/dist/esm/components/Datepicker/useDatepicker.js.map +1 -1
  22. package/dist/esm/components/Dialog/Context.js +3 -3
  23. package/dist/esm/components/Dialog/Context.js.map +1 -1
  24. package/dist/esm/components/Dialog/Dialog.js +4 -2
  25. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  26. package/dist/esm/components/Dialog/components/Content.js +44 -39
  27. package/dist/esm/components/Dialog/components/Content.js.map +1 -1
  28. package/dist/esm/components/Dialog/components/Drawer.js +3 -3
  29. package/dist/esm/components/Dialog/components/Drawer.js.map +1 -1
  30. package/dist/esm/components/Dialog/components/Extra.js +2 -2
  31. package/dist/esm/components/Dialog/components/Extra.js.map +1 -1
  32. package/dist/esm/components/Dialog/components/Trigger.js +2 -2
  33. package/dist/esm/components/Dialog/components/Trigger.js.map +1 -1
  34. package/dist/esm/components/Field/Field.js.map +1 -1
  35. package/dist/esm/components/Form/Form.js.map +1 -1
  36. package/dist/esm/components/Group/Group.js.map +1 -1
  37. package/dist/esm/components/Hanger/Hanger.js.map +1 -1
  38. package/dist/esm/components/Icon/Icon.js.map +1 -1
  39. package/dist/esm/components/Icon/components/AccountPreview.js.map +1 -1
  40. package/dist/esm/components/Icon/components/Accounting.js.map +1 -1
  41. package/dist/esm/components/Icon/components/AccountingYear.js.map +1 -1
  42. package/dist/esm/components/Icon/components/AccountingYearCancel.js.map +1 -1
  43. package/dist/esm/components/Icon/components/ArrowBottom.js.map +1 -1
  44. package/dist/esm/components/Icon/components/ArrowDown.js.map +1 -1
  45. package/dist/esm/components/Icon/components/ArrowEnd.js.map +1 -1
  46. package/dist/esm/components/Icon/components/ArrowLeft.js.map +1 -1
  47. package/dist/esm/components/Icon/components/ArrowRight.js.map +1 -1
  48. package/dist/esm/components/Icon/components/ArrowStart.js.map +1 -1
  49. package/dist/esm/components/Icon/components/ArrowTop.js.map +1 -1
  50. package/dist/esm/components/Icon/components/ArrowUp.js.map +1 -1
  51. package/dist/esm/components/Icon/components/Attach.js.map +1 -1
  52. package/dist/esm/components/Icon/components/AttachAuto.js.map +1 -1
  53. package/dist/esm/components/Icon/components/AttachCancel.js.map +1 -1
  54. package/dist/esm/components/Icon/components/Autotext.js.map +1 -1
  55. package/dist/esm/components/Icon/components/AutotextInsert.js.map +1 -1
  56. package/dist/esm/components/Icon/components/Basic.js.map +1 -1
  57. package/dist/esm/components/Icon/components/BasicTabs.js.map +1 -1
  58. package/dist/esm/components/Icon/components/BellSolid.js.map +1 -1
  59. package/dist/esm/components/Icon/components/Book.js.map +1 -1
  60. package/dist/esm/components/Icon/components/Booking.js.map +1 -1
  61. package/dist/esm/components/Icon/components/Budget.js.map +1 -1
  62. package/dist/esm/components/Icon/components/Calendar.js.map +1 -1
  63. package/dist/esm/components/Icon/components/CashAccount.js.map +1 -1
  64. package/dist/esm/components/Icon/components/CashReports.js.map +1 -1
  65. package/dist/esm/components/Icon/components/Chat.js.map +1 -1
  66. package/dist/esm/components/Icon/components/ChatSolid.js.map +1 -1
  67. package/dist/esm/components/Icon/components/ChevronDown.js.map +1 -1
  68. package/dist/esm/components/Icon/components/ChevronDownDouble.js.map +1 -1
  69. package/dist/esm/components/Icon/components/ChevronDownSolid.js.map +1 -1
  70. package/dist/esm/components/Icon/components/ChevronLeft.js.map +1 -1
  71. package/dist/esm/components/Icon/components/ChevronLeftDouble.js.map +1 -1
  72. package/dist/esm/components/Icon/components/ChevronRight.js.map +1 -1
  73. package/dist/esm/components/Icon/components/ChevronRightDouble.js.map +1 -1
  74. package/dist/esm/components/Icon/components/ChevronUp.js.map +1 -1
  75. package/dist/esm/components/Icon/components/ChevronUpDouble.js.map +1 -1
  76. package/dist/esm/components/Icon/components/ChevronUpSolid.js.map +1 -1
  77. package/dist/esm/components/Icon/components/Clamp.js.map +1 -1
  78. package/dist/esm/components/Icon/components/ClampOpen.js.map +1 -1
  79. package/dist/esm/components/Icon/components/Close.js.map +1 -1
  80. package/dist/esm/components/Icon/components/ConnectionEnable.js.map +1 -1
  81. package/dist/esm/components/Icon/components/ConnectionRevoke.js.map +1 -1
  82. package/dist/esm/components/Icon/components/Contacts.js.map +1 -1
  83. package/dist/esm/components/Icon/components/Copy.js.map +1 -1
  84. package/dist/esm/components/Icon/components/Courses.js.map +1 -1
  85. package/dist/esm/components/Icon/components/Credit.js.map +1 -1
  86. package/dist/esm/components/Icon/components/Delete.js.map +1 -1
  87. package/dist/esm/components/Icon/components/DeletePermanently.js.map +1 -1
  88. package/dist/esm/components/Icon/components/Depecriate.js.map +1 -1
  89. package/dist/esm/components/Icon/components/Developer.js.map +1 -1
  90. package/dist/esm/components/Icon/components/DistributionTemplate.js.map +1 -1
  91. package/dist/esm/components/Icon/components/Document.js.map +1 -1
  92. package/dist/esm/components/Icon/components/DocumentApprove.js.map +1 -1
  93. package/dist/esm/components/Icon/components/DocumentCreateEntry.js.map +1 -1
  94. package/dist/esm/components/Icon/components/DocumentCut.js.map +1 -1
  95. package/dist/esm/components/Icon/components/DocumentError.js.map +1 -1
  96. package/dist/esm/components/Icon/components/DocumentIsolatePage.js.map +1 -1
  97. package/dist/esm/components/Icon/components/DocumentMerge.js.map +1 -1
  98. package/dist/esm/components/Icon/components/DocumentMove.js.map +1 -1
  99. package/dist/esm/components/Icon/components/DocumentPreview.js.map +1 -1
  100. package/dist/esm/components/Icon/components/DocumentReceived.js.map +1 -1
  101. package/dist/esm/components/Icon/components/DocumentRejectedRequest.js.map +1 -1
  102. package/dist/esm/components/Icon/components/DocumentSplit.js.map +1 -1
  103. package/dist/esm/components/Icon/components/DocumentTime.js.map +1 -1
  104. package/dist/esm/components/Icon/components/Download.js.map +1 -1
  105. package/dist/esm/components/Icon/components/Drag.js.map +1 -1
  106. package/dist/esm/components/Icon/components/ECopedia.js.map +1 -1
  107. package/dist/esm/components/Icon/components/ESignature.js.map +1 -1
  108. package/dist/esm/components/Icon/components/Edit.js.map +1 -1
  109. package/dist/esm/components/Icon/components/EllipsisHorizontal.js.map +1 -1
  110. package/dist/esm/components/Icon/components/EllipsisVertical.js.map +1 -1
  111. package/dist/esm/components/Icon/components/EntriesOnAccount.js.map +1 -1
  112. package/dist/esm/components/Icon/components/EntriesOpen.js.map +1 -1
  113. package/dist/esm/components/Icon/components/EntriesWarning.js.map +1 -1
  114. package/dist/esm/components/Icon/components/EntryTypeCustomerInvoice.js.map +1 -1
  115. package/dist/esm/components/Icon/components/EntryTypeCustomerPayment.js.map +1 -1
  116. package/dist/esm/components/Icon/components/EntryTypeJournalEntry.js.map +1 -1
  117. package/dist/esm/components/Icon/components/EntryTypeManualCustomerInvoice.js.map +1 -1
  118. package/dist/esm/components/Icon/components/EntryTypeSupplierInvoice.js.map +1 -1
  119. package/dist/esm/components/Icon/components/EntryTypeSupplierPayment.js.map +1 -1
  120. package/dist/esm/components/Icon/components/Envelope.js.map +1 -1
  121. package/dist/esm/components/Icon/components/EnvelopeApproved.js.map +1 -1
  122. package/dist/esm/components/Icon/components/ExpandView.js.map +1 -1
  123. package/dist/esm/components/Icon/components/Expenses.js.map +1 -1
  124. package/dist/esm/components/Icon/components/Export.js.map +1 -1
  125. package/dist/esm/components/Icon/components/ExportToExcel.js.map +1 -1
  126. package/dist/esm/components/Icon/components/ExportToExcelCopy.js.map +1 -1
  127. package/dist/esm/components/Icon/components/Filter.js.map +1 -1
  128. package/dist/esm/components/Icon/components/FilterSolid.js.map +1 -1
  129. package/dist/esm/components/Icon/components/GraphSolid.js.map +1 -1
  130. package/dist/esm/components/Icon/components/Hash.js.map +1 -1
  131. package/dist/esm/components/Icon/components/Home.js.map +1 -1
  132. package/dist/esm/components/Icon/components/Images.js.map +1 -1
  133. package/dist/esm/components/Icon/components/Import.js.map +1 -1
  134. package/dist/esm/components/Icon/components/Inbox.js.map +1 -1
  135. package/dist/esm/components/Icon/components/InboxSmart.js.map +1 -1
  136. package/dist/esm/components/Icon/components/Info.js.map +1 -1
  137. package/dist/esm/components/Icon/components/Inventory.js.map +1 -1
  138. package/dist/esm/components/Icon/components/InventoryMatrix.js.map +1 -1
  139. package/dist/esm/components/Icon/components/JournalPro.js.map +1 -1
  140. package/dist/esm/components/Icon/components/Layout.js.map +1 -1
  141. package/dist/esm/components/Icon/components/LayoutBoth.js.map +1 -1
  142. package/dist/esm/components/Icon/components/LayoutFirst.js.map +1 -1
  143. package/dist/esm/components/Icon/components/LayoutLast.js.map +1 -1
  144. package/dist/esm/components/Icon/components/LayoutNone.js.map +1 -1
  145. package/dist/esm/components/Icon/components/LedgerCard.js.map +1 -1
  146. package/dist/esm/components/Icon/components/LedgerCardCustomerReminder.js.map +1 -1
  147. package/dist/esm/components/Icon/components/LedgerCardManualCustomerInvoice.js.map +1 -1
  148. package/dist/esm/components/Icon/components/LedgerCardObsoleteStock.js.map +1 -1
  149. package/dist/esm/components/Icon/components/LedgerCardOpeningEntry.js.map +1 -1
  150. package/dist/esm/components/Icon/components/LedgerCardReservedEntry.js.map +1 -1
  151. package/dist/esm/components/Icon/components/LedgerCardShrinkagePilferage.js.map +1 -1
  152. package/dist/esm/components/Icon/components/LedgerCardStockAdjustment.js.map +1 -1
  153. package/dist/esm/components/Icon/components/LedgerCardTransferredOpeningEntry.js.map +1 -1
  154. package/dist/esm/components/Icon/components/Lightbulb.js.map +1 -1
  155. package/dist/esm/components/Icon/components/Line.js.map +1 -1
  156. package/dist/esm/components/Icon/components/List.js.map +1 -1
  157. package/dist/esm/components/Icon/components/ListBulleted.js.map +1 -1
  158. package/dist/esm/components/Icon/components/ListSearch.js.map +1 -1
  159. package/dist/esm/components/Icon/components/LockOpen.js.map +1 -1
  160. package/dist/esm/components/Icon/components/Log.js.map +1 -1
  161. package/dist/esm/components/Icon/components/Market.js.map +1 -1
  162. package/dist/esm/components/Icon/components/MatchAmount.js.map +1 -1
  163. package/dist/esm/components/Icon/components/MatchEntries.js.map +1 -1
  164. package/dist/esm/components/Icon/components/Mileage.js.map +1 -1
  165. package/dist/esm/components/Icon/components/Minus.js.map +1 -1
  166. package/dist/esm/components/Icon/components/ModalResize.js.map +1 -1
  167. package/dist/esm/components/Icon/components/ModalShrink.js.map +1 -1
  168. package/dist/esm/components/Icon/components/More.js.map +1 -1
  169. package/dist/esm/components/Icon/components/MoreSolid.js.map +1 -1
  170. package/dist/esm/components/Icon/components/Move.js.map +1 -1
  171. package/dist/esm/components/Icon/components/NavigationList.js.map +1 -1
  172. package/dist/esm/components/Icon/components/Note.js.map +1 -1
  173. package/dist/esm/components/Icon/components/NoteFollowUp.js.map +1 -1
  174. package/dist/esm/components/Icon/components/NoteRead.js.map +1 -1
  175. package/dist/esm/components/Icon/components/PartnerApi.js.map +1 -1
  176. package/dist/esm/components/Icon/components/Period.js.map +1 -1
  177. package/dist/esm/components/Icon/components/PersonChange.js.map +1 -1
  178. package/dist/esm/components/Icon/components/PersonMinus.js.map +1 -1
  179. package/dist/esm/components/Icon/components/PersonPlus.js.map +1 -1
  180. package/dist/esm/components/Icon/components/PersonTick.js.map +1 -1
  181. package/dist/esm/components/Icon/components/Play.js.map +1 -1
  182. package/dist/esm/components/Icon/components/PlusCircle.js.map +1 -1
  183. package/dist/esm/components/Icon/components/PlusMinus.js.map +1 -1
  184. package/dist/esm/components/Icon/components/Print.js.map +1 -1
  185. package/dist/esm/components/Icon/components/ProcessPayment.js.map +1 -1
  186. package/dist/esm/components/Icon/components/ProductLedgerCard.js.map +1 -1
  187. package/dist/esm/components/Icon/components/ProjectCards.js.map +1 -1
  188. package/dist/esm/components/Icon/components/Projects.js.map +1 -1
  189. package/dist/esm/components/Icon/components/Quicklinks.js.map +1 -1
  190. package/dist/esm/components/Icon/components/RatingBankruptcy.js.map +1 -1
  191. package/dist/esm/components/Icon/components/RatingPaymentProblems.js.map +1 -1
  192. package/dist/esm/components/Icon/components/Reconciled.js.map +1 -1
  193. package/dist/esm/components/Icon/components/Refresh.js.map +1 -1
  194. package/dist/esm/components/Icon/components/Report.js.map +1 -1
  195. package/dist/esm/components/Icon/components/ReportSolid.js.map +1 -1
  196. package/dist/esm/components/Icon/components/Restore.js.map +1 -1
  197. package/dist/esm/components/Icon/components/RotateLeft.js.map +1 -1
  198. package/dist/esm/components/Icon/components/RotateRight.js.map +1 -1
  199. package/dist/esm/components/Icon/components/Sales.js.map +1 -1
  200. package/dist/esm/components/Icon/components/Search.js.map +1 -1
  201. package/dist/esm/components/Icon/components/SearchBold.js.map +1 -1
  202. package/dist/esm/components/Icon/components/Secure.js.map +1 -1
  203. package/dist/esm/components/Icon/components/SecureTick.js.map +1 -1
  204. package/dist/esm/components/Icon/components/Settings.js.map +1 -1
  205. package/dist/esm/components/Icon/components/SettingsSolid.js.map +1 -1
  206. package/dist/esm/components/Icon/components/Shortcuts.js.map +1 -1
  207. package/dist/esm/components/Icon/components/ShowAll.js.map +1 -1
  208. package/dist/esm/components/Icon/components/ShowLess.js.map +1 -1
  209. package/dist/esm/components/Icon/components/ShowMore.js.map +1 -1
  210. package/dist/esm/components/Icon/components/ShowTemplate.js.map +1 -1
  211. package/dist/esm/components/Icon/components/Sliders.js.map +1 -1
  212. package/dist/esm/components/Icon/components/Smartpay.js.map +1 -1
  213. package/dist/esm/components/Icon/components/SortBy.js.map +1 -1
  214. package/dist/esm/components/Icon/components/Spinner.js.map +1 -1
  215. package/dist/esm/components/Icon/components/Star.js.map +1 -1
  216. package/dist/esm/components/Icon/components/StarSolid.js.map +1 -1
  217. package/dist/esm/components/Icon/components/Subscriptions.js.map +1 -1
  218. package/dist/esm/components/Icon/components/SystemEntries.js.map +1 -1
  219. package/dist/esm/components/Icon/components/Tag.js.map +1 -1
  220. package/dist/esm/components/Icon/components/TemplateOverride.js.map +1 -1
  221. package/dist/esm/components/Icon/components/Templates.js.map +1 -1
  222. package/dist/esm/components/Icon/components/Thumb.js.map +1 -1
  223. package/dist/esm/components/Icon/components/ThumbBoth.js.map +1 -1
  224. package/dist/esm/components/Icon/components/ThumbDown.js.map +1 -1
  225. package/dist/esm/components/Icon/components/ThumbDownSolid.js.map +1 -1
  226. package/dist/esm/components/Icon/components/ThumbUpSolid.js.map +1 -1
  227. package/dist/esm/components/Icon/components/Tick.js.map +1 -1
  228. package/dist/esm/components/Icon/components/TickCircle.js.map +1 -1
  229. package/dist/esm/components/Icon/components/Time.js.map +1 -1
  230. package/dist/esm/components/Icon/components/Transfer.js.map +1 -1
  231. package/dist/esm/components/Icon/components/TransferCancel.js.map +1 -1
  232. package/dist/esm/components/Icon/components/TransferLocked.js.map +1 -1
  233. package/dist/esm/components/Icon/components/Undock.js.map +1 -1
  234. package/dist/esm/components/Icon/components/Unreconciled.js.map +1 -1
  235. package/dist/esm/components/Icon/components/Warning.js.map +1 -1
  236. package/dist/esm/components/Icon/components/Webshop.js.map +1 -1
  237. package/dist/esm/components/Icon/components/Website.js.map +1 -1
  238. package/dist/esm/components/Icon/components/Workflow.js.map +1 -1
  239. package/dist/esm/components/Icon/components/Zoom.js.map +1 -1
  240. package/dist/esm/components/Icon/components/index.js +4 -4
  241. package/dist/esm/components/Icon/components/index.js.map +1 -1
  242. package/dist/esm/components/IconButton/IconButton.js.map +1 -1
  243. package/dist/esm/components/Input/Input.js +19 -2
  244. package/dist/esm/components/Input/Input.js.map +1 -1
  245. package/dist/esm/components/Input/util.js +8 -9
  246. package/dist/esm/components/Input/util.js.map +1 -1
  247. package/dist/esm/components/Listbox/Listbox.js.map +1 -1
  248. package/dist/esm/components/Listbox/ScrollableList.js +82 -63
  249. package/dist/esm/components/Listbox/ScrollableList.js.map +1 -1
  250. package/dist/esm/components/Listbox/useListbox.js +58 -49
  251. package/dist/esm/components/Listbox/useListbox.js.map +1 -1
  252. package/dist/esm/components/Listbox/useMultiListbox.js +91 -63
  253. package/dist/esm/components/Listbox/useMultiListbox.js.map +1 -1
  254. package/dist/esm/components/Listbox/useTypeahead.js +9 -10
  255. package/dist/esm/components/Listbox/useTypeahead.js.map +1 -1
  256. package/dist/esm/components/Listbox/util.js +84 -48
  257. package/dist/esm/components/Listbox/util.js.map +1 -1
  258. package/dist/esm/components/Menu/Context.js +2 -2
  259. package/dist/esm/components/Menu/Context.js.map +1 -1
  260. package/dist/esm/components/Menu/Menu.js.map +1 -1
  261. package/dist/esm/components/Menu/components/Checkbox.js +9 -8
  262. package/dist/esm/components/Menu/components/Checkbox.js.map +1 -1
  263. package/dist/esm/components/Menu/components/Content.js +13 -10
  264. package/dist/esm/components/Menu/components/Content.js.map +1 -1
  265. package/dist/esm/components/Menu/components/Header.js +4 -4
  266. package/dist/esm/components/Menu/components/Header.js.map +1 -1
  267. package/dist/esm/components/Menu/components/Item.js +35 -34
  268. package/dist/esm/components/Menu/components/Item.js.map +1 -1
  269. package/dist/esm/components/Menu/components/Link.js +8 -7
  270. package/dist/esm/components/Menu/components/Link.js.map +1 -1
  271. package/dist/esm/components/Menu/components/RadioGroup.js +18 -16
  272. package/dist/esm/components/Menu/components/RadioGroup.js.map +1 -1
  273. package/dist/esm/components/Menu/components/Separator.js +4 -4
  274. package/dist/esm/components/Menu/components/Separator.js.map +1 -1
  275. package/dist/esm/components/Menu/components/Trigger.js +5 -5
  276. package/dist/esm/components/Menu/components/Trigger.js.map +1 -1
  277. package/dist/esm/components/Navigation/Navigation.js.map +1 -1
  278. package/dist/esm/components/Pagination/PageNumbers.js +28 -23
  279. package/dist/esm/components/Pagination/PageNumbers.js.map +1 -1
  280. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  281. package/dist/esm/components/Pagination/usePagination.js +21 -7
  282. package/dist/esm/components/Pagination/usePagination.js.map +1 -1
  283. package/dist/esm/components/Pagination/usePaginationShortcuts.js +9 -9
  284. package/dist/esm/components/Pagination/usePaginationShortcuts.js.map +1 -1
  285. package/dist/esm/components/Popover/Popover.js.map +1 -1
  286. package/dist/esm/components/Popover/Primitives.js +30 -27
  287. package/dist/esm/components/Popover/Primitives.js.map +1 -1
  288. package/dist/esm/components/Progress/Progress.js.map +1 -1
  289. package/dist/esm/components/Provider/Provider.js.map +1 -1
  290. package/dist/esm/components/RadioGroup/RadioGroup.js.map +1 -1
  291. package/dist/esm/components/SearchInput/SearchInput.js +4 -2
  292. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  293. package/dist/esm/components/Select/Select.js.map +1 -1
  294. package/dist/esm/components/Select/useSelect.js +82 -63
  295. package/dist/esm/components/Select/useSelect.js.map +1 -1
  296. package/dist/esm/components/Spinner/Spinner.js.map +1 -1
  297. package/dist/esm/components/Switch/Switch.js.map +1 -1
  298. package/dist/esm/components/Table/components/BaseTable.js +30 -23
  299. package/dist/esm/components/Table/components/BaseTable.js.map +1 -1
  300. package/dist/esm/components/Table/components/PaginatedTable.js +7 -3
  301. package/dist/esm/components/Table/components/PaginatedTable.js.map +1 -1
  302. package/dist/esm/components/Table/components/Table.js +25 -18
  303. package/dist/esm/components/Table/components/Table.js.map +1 -1
  304. package/dist/esm/components/Table/components/WindowedTable.js +104 -88
  305. package/dist/esm/components/Table/components/WindowedTable.js.map +1 -1
  306. package/dist/esm/components/Table/hooks/plugins/useRowActions.js +146 -122
  307. package/dist/esm/components/Table/hooks/plugins/useRowActions.js.map +1 -1
  308. package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js +61 -57
  309. package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js.map +1 -1
  310. package/dist/esm/components/Table/hooks/plugins/useRowEditing.js +36 -39
  311. package/dist/esm/components/Table/hooks/plugins/useRowEditing.js.map +1 -1
  312. package/dist/esm/components/Table/hooks/plugins/useRowSelect.js +90 -80
  313. package/dist/esm/components/Table/hooks/plugins/useRowSelect.js.map +1 -1
  314. package/dist/esm/components/Table/hooks/useRowCreation.js +64 -29
  315. package/dist/esm/components/Table/hooks/useRowCreation.js.map +1 -1
  316. package/dist/esm/components/Table/hooks/useTable.js +141 -119
  317. package/dist/esm/components/Table/hooks/useTable.js.map +1 -1
  318. package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js +18 -13
  319. package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js.map +1 -1
  320. package/dist/esm/components/Table/util/renderColumn.js +10 -10
  321. package/dist/esm/components/Table/util/renderColumn.js.map +1 -1
  322. package/dist/esm/components/Table/util/renderRow.js +46 -37
  323. package/dist/esm/components/Table/util/renderRow.js.map +1 -1
  324. package/dist/esm/components/Table/util/rowIndexPath.js +16 -14
  325. package/dist/esm/components/Table/util/rowIndexPath.js.map +1 -1
  326. package/dist/esm/components/Table/util/sortTypes.js +31 -23
  327. package/dist/esm/components/Table/util/sortTypes.js.map +1 -1
  328. package/dist/esm/components/Table/util.js +41 -29
  329. package/dist/esm/components/Table/util.js.map +1 -1
  330. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  331. package/dist/esm/components/Textarea/Textarea.js +21 -3
  332. package/dist/esm/components/Textarea/Textarea.js.map +1 -1
  333. package/dist/esm/components/Toast/Toast.js +21 -20
  334. package/dist/esm/components/Toast/Toast.js.map +1 -1
  335. package/dist/esm/components/Toast/Toaster.js.map +1 -1
  336. package/dist/esm/components/Toast/util.js +2 -2
  337. package/dist/esm/components/Toast/util.js.map +1 -1
  338. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  339. package/dist/esm/components/Tour/Tour.js.map +1 -1
  340. package/dist/esm/components/Treeview/Treeview.js.map +1 -1
  341. package/dist/esm/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  342. package/dist/esm/index.css +637 -634
  343. package/dist/esm/index.js +2 -1
  344. package/dist/esm/index.js.map +1 -1
  345. package/dist/esm/primitives/Button.js +13 -9
  346. package/dist/esm/primitives/Button.js.map +1 -1
  347. package/dist/esm/utils/date.js.map +1 -1
  348. package/dist/esm/utils/hooks/useBoundingClientRectListener.js +20 -12
  349. package/dist/esm/utils/hooks/useBoundingClientRectListener.js.map +1 -1
  350. package/dist/esm/utils/hooks/useDraggable.js +18 -16
  351. package/dist/esm/utils/hooks/useDraggable.js.map +1 -1
  352. package/dist/esm/utils/hooks/useDropTarget.js +10 -7
  353. package/dist/esm/utils/hooks/useDropTarget.js.map +1 -1
  354. package/dist/esm/utils/hooks/useListKeyboardNavigation.js.map +1 -1
  355. package/dist/esm/utils/hooks/useListScrollTo.js.map +1 -1
  356. package/dist/esm/utils/hooks/useOnClickOutside.js.map +1 -1
  357. package/dist/esm/utils/hooks/useProxiedRef.js +3 -3
  358. package/dist/esm/utils/hooks/useProxiedRef.js.map +1 -1
  359. package/dist/esm/utils/hooks/useTimer.js +17 -9
  360. package/dist/esm/utils/hooks/useTimer.js.map +1 -1
  361. package/dist/esm/utils/input.js +11 -7
  362. package/dist/esm/utils/input.js.map +1 -1
  363. package/dist/esm/utils/mergeRefs.js +2 -2
  364. package/dist/esm/utils/mergeRefs.js.map +1 -1
  365. package/dist/esm/utils/taillwind.js +2 -2
  366. package/dist/esm/utils/taillwind.js.map +1 -1
  367. package/dist/index.css +637 -634
  368. package/dist/index.d.ts +1 -0
  369. package/dist/taco.cjs.development.js +1923 -1559
  370. package/dist/taco.cjs.development.js.map +1 -1
  371. package/dist/taco.cjs.production.min.js +1 -1
  372. package/dist/taco.cjs.production.min.js.map +1 -1
  373. package/package.json +2 -2
  374. package/plugins/tailwindcss-aria-attributes.js +73 -73
  375. package/tailwind.config.js +297 -297
  376. package/types.json +2 -2
@@ -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 { State } from '../../types';\r\nimport './Combobox.css';\r\n\r\nexport type ComboboxItem = ScrollableListItem;\r\nexport type ComboboxValue = ScrollableListItemValue;\r\n\r\nexport type ComboboxProps = Omit<InputProps, 'defaultValue' | '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 /**\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 /** 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 /** State will change the style of the combobox **/\r\n state?: State;\r\n /** Value of the input in combobox */\r\n value?: ComboboxValue;\r\n};\r\n\r\nexport const Combobox = React.forwardRef(function Combobox(props: ComboboxProps, ref: React.Ref<HTMLInputElement>) {\r\n const { className: externalClassName, style, ...otherProps } = props;\r\n const { combobox, input, popover, list } = useCombobox(otherProps, ref);\r\n const internalRef = React.useRef<HTMLDivElement>(null);\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=\"focus:!border-none focus:!shadow-none active:!border-none\"\r\n icon={popover.open ? 'chevron-up' : 'chevron-down'}\r\n onClick={() => popover.onOpenChange(true)}\r\n tabIndex={-1}\r\n />\r\n ) : (\r\n props.button\r\n )\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 >\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","externalClassName","className","style","otherProps","useCombobox","combobox","input","popover","list","internalRef","selectDimensions","useBoundingClientRectListener","cn","inline","PopoverPrimitive","asChild","Input","autoComplete","button","IconButton","appearance","icon","open","onClick","onOpenChange","tabIndex","align","onOpenAutoFocus","event","preventDefault","sideOffset","ScrollableList","minWidth","width"],"mappings":";;;;;;;;;;;IAgDaA,QAAQ,gBAAGC,UAAA,CAAiB,SAASD,QAAT,CAAkBE,KAAlB,EAAwCC,GAAxC;AACrC,MAAmBC,iBAAnB,GAA+DF,KAA/D,CAAQG,SAAR;AAAA,MAAsCC,KAAtC,GAA+DJ,KAA/D,CAAsCI,KAAtC;AAAA,MAAgDC,UAAhD,iCAA+DL,KAA/D;;AACA,qBAA2CM,WAAW,CAACD,UAAD,EAAaJ,GAAb,CAAtD;AAAA,MAAQM,QAAR,gBAAQA,QAAR;AAAA,MAAkBC,KAAlB,gBAAkBA,KAAlB;AAAA,MAAyBC,OAAzB,gBAAyBA,OAAzB;AAAA,MAAkCC,IAAlC,gBAAkCA,IAAlC;;AACA,MAAMC,WAAW,GAAGZ,MAAA,CAA6B,IAA7B,CAApB;AACA,MAAMa,gBAAgB,GAAGC,6BAA6B,CAACF,WAAD,CAAtD;AACA,MAAMR,SAAS,GAAGW,EAAE,CAChB,sBADgB,EAEhB;AACI,2BAAuBd,KAAK,CAACe;AADjC,GAFgB,EAKhBb,iBALgB,CAApB;AAQA,SACIH,aAAA,OAAA;AAAMI,IAAAA,SAAS,EAAEA;iBAAqB;AAAWC,IAAAA,KAAK,EAAEA;GAAxD,EACIL,aAAA,CAACiB,IAAD,oBAA2BP,QAA3B,EACIV,aAAA,CAACiB,MAAD;AAAyBC,IAAAA,OAAO;AAAChB,IAAAA,GAAG,EAAEU;GAAtC,EACIZ,aAAA,MAAA,oBAASQ;AAAUJ,IAAAA,SAAS,EAAC;AAAgBF,IAAAA,GAAG,EAAEA;IAAlD,EACIF,aAAA,CAACmB,KAAD,oBACQV;AACJW,IAAAA,YAAY,EAAC;AACbC,IAAAA,MAAM,EACFpB,KAAK,CAACe,MAAN,GACIhB,aAAA,CAACsB,UAAD;AACIC,MAAAA,UAAU,EAAC;AACXnB,MAAAA,SAAS,EAAC;AACVoB,MAAAA,IAAI,EAAEd,OAAO,CAACe,IAAR,GAAe,YAAf,GAA8B;AACpCC,MAAAA,OAAO,EAAE;AAAA,eAAMhB,OAAO,CAACiB,YAAR,CAAqB,IAArB,CAAN;AAAA;AACTC,MAAAA,QAAQ,EAAE,CAAC;KALf,CADJ,GASI3B,KAAK,CAACoB;IAblB,CADJ,CADJ,CADJ,EAsBIrB,aAAA,CAACiB,OAAD;AACIY,IAAAA,KAAK,EAAC;AACNC,IAAAA,eAAe,EAAE,yBAAAC,KAAK;AAClBA,MAAAA,KAAK,CAACC,cAAN;AACH;AACDC,IAAAA,UAAU,EAAE;GALhB,EAOIjC,aAAA,CAACkC,cAAD,oBACQvB;AACJP,IAAAA,SAAS,EAAEW,EAAE,CAAC,sEAAD;AACbV,IAAAA,KAAK,EAAE;AAAE8B,MAAAA,QAAQ,EAAEtB,gBAAF,aAAEA,gBAAF,uBAAEA,gBAAgB,CAAEuB;AAA9B;AACPR,IAAAA,QAAQ,EAAElB,OAAO,CAACe,IAAR,GAAe,CAAf,GAAmB,CAAC;IAJlC,CAPJ,CAtBJ,CADJ,CADJ;AAyCH,CAtDuB;;;;"}
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 { State } from '../../types';\nimport './Combobox.css';\n\nexport type ComboboxItem = ScrollableListItem;\nexport type ComboboxValue = ScrollableListItemValue;\n\nexport type ComboboxProps = Omit<InputProps, 'defaultValue' | '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 /**\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 /** 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 /** State will change the style of the combobox **/\n state?: State;\n /** Value of the input in combobox */\n value?: ComboboxValue;\n};\n\nexport const Combobox = React.forwardRef(function Combobox(props: ComboboxProps, ref: React.Ref<HTMLInputElement>) {\n const { className: externalClassName, style, ...otherProps } = props;\n const { combobox, input, popover, list } = useCombobox(otherProps, ref);\n const internalRef = React.useRef<HTMLDivElement>(null);\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=\"focus:!border-none focus:!shadow-none active:!border-none\"\n icon={popover.open ? 'chevron-up' : 'chevron-down'}\n onClick={() => popover.onOpenChange(true)}\n tabIndex={-1}\n />\n ) : (\n props.button\n )\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","style","otherProps","useCombobox","combobox","input","popover","list","internalRef","selectDimensions","useBoundingClientRectListener","cn","inline","PopoverPrimitive","asChild","Input","autoComplete","button","IconButton","appearance","icon","open","onClick","onOpenChange","tabIndex","align","onOpenAutoFocus","event","preventDefault","sideOffset","ScrollableList","minWidth","width"],"mappings":";;;;;;;;;;;IAgDaA,QAAQ,gBAAGC,UAAA,CAAiB,SAASD,QAAT,CAAkBE,KAAlB,EAAwCC,GAAxC;AACrC,MAAmBC,iBAAnB,GAA+DF,KAA/D,CAAQG,SAAR;AAAA,MAAsCC,KAAtC,GAA+DJ,KAA/D,CAAsCI,KAAtC;AAAA,MAAgDC,UAAhD,iCAA+DL,KAA/D;;AACA,qBAA2CM,WAAW,CAACD,UAAD,EAAaJ,GAAb,CAAtD;AAAA,MAAQM,QAAR,gBAAQA,QAAR;AAAA,MAAkBC,KAAlB,gBAAkBA,KAAlB;AAAA,MAAyBC,OAAzB,gBAAyBA,OAAzB;AAAA,MAAkCC,IAAlC,gBAAkCA,IAAlC;;AACA,MAAMC,WAAW,GAAGZ,MAAA,CAA6B,IAA7B,CAApB;AACA,MAAMa,gBAAgB,GAAGC,6BAA6B,CAACF,WAAD,CAAtD;AACA,MAAMR,SAAS,GAAGW,EAAE,CAChB,sBADgB,EAEhB;AACI,2BAAuBd,KAAK,CAACe;AADjC,GAFgB,EAKhBb,iBALgB,CAApB;AAQA,SACIH,aAAA,OAAA;AAAMI,IAAAA,SAAS,EAAEA;iBAAqB;AAAWC,IAAAA,KAAK,EAAEA;GAAxD,EACIL,aAAA,CAACiB,IAAD,oBAA2BP,QAA3B,EACIV,aAAA,CAACiB,MAAD;AAAyBC,IAAAA,OAAO;AAAChB,IAAAA,GAAG,EAAEU;GAAtC,EACIZ,aAAA,MAAA,oBAASQ;AAAUJ,IAAAA,SAAS,EAAC;AAAgBF,IAAAA,GAAG,EAAEA;IAAlD,EACIF,aAAA,CAACmB,KAAD,oBACQV;AACJW,IAAAA,YAAY,EAAC;AACbC,IAAAA,MAAM,EACFpB,KAAK,CAACe,MAAN,GACIhB,aAAA,CAACsB,UAAD;AACIC,MAAAA,UAAU,EAAC;AACXnB,MAAAA,SAAS,EAAC;AACVoB,MAAAA,IAAI,EAAEd,OAAO,CAACe,IAAR,GAAe,YAAf,GAA8B;AACpCC,MAAAA,OAAO,EAAE;AAAA,eAAMhB,OAAO,CAACiB,YAAR,CAAqB,IAArB,CAAN;AAAA;AACTC,MAAAA,QAAQ,EAAE,CAAC;KALf,CADJ,GASI3B,KAAK,CAACoB;IAblB,CADJ,CADJ,CADJ,EAsBIrB,aAAA,CAACiB,OAAD;AACIY,IAAAA,KAAK,EAAC;AACNC,IAAAA,eAAe,EAAE,yBAAAC,KAAK;AAClBA,MAAAA,KAAK,CAACC,cAAN;AACH;AACDC,IAAAA,UAAU,EAAE;GALhB,EAOIjC,aAAA,CAACkC,cAAD,oBACQvB;AACJP,IAAAA,SAAS,EAAEW,EAAE,CAAC,sEAAD;AACbV,IAAAA,KAAK,EAAE;AAAE8B,MAAAA,QAAQ,EAAEtB,gBAAF,aAAEA,gBAAF,uBAAEA,gBAAgB,CAAEuB;AAA9B;AACPR,IAAAA,QAAQ,EAAElB,OAAO,CAACe,IAAR,GAAe,CAAf,GAAmB,CAAC;IAJlC,CAPJ,CAtBJ,CADJ,CADJ;AAyCH,CAtDuB;;;;"}
@@ -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,41 +8,58 @@ 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 listRef = useRef(null);
33
- const [open, setOpen] = useState(false);
34
- const listId = useMemo(() => v4(), []);
35
- const [inputValue, setInputValue] = useState(convertToInputValue(value));
36
- const shouldFilterData = !onSearch && (!inline || inline && inputValue !== convertToInputValue(value));
37
- const flattenedData = useFlattenedData(unfilteredData);
38
- 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
39
-
40
- const [currentIndex, setCurrentIndex] = useState(inputValue !== undefined ? getIndexFromValue(data, inputValue) : undefined);
41
-
42
- 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 listRef = useRef(null);
37
+
38
+ var _React$useState = useState(false),
39
+ open = _React$useState[0],
40
+ setOpen = _React$useState[1];
41
+
42
+ var listId = useMemo(function () {
43
+ return v4();
44
+ }, []);
45
+
46
+ var _React$useState2 = useState(convertToInputValue(value)),
47
+ inputValue = _React$useState2[0],
48
+ setInputValue = _React$useState2[1];
49
+
50
+ var shouldFilterData = !onSearch && (!inline || inline && inputValue !== convertToInputValue(value));
51
+ var flattenedData = useFlattenedData(unfilteredData);
52
+ var data = useMemo(function () {
53
+ return shouldFilterData ? filterData(flattenedData, inputValue) : flattenedData;
54
+ }, [shouldFilterData, inputValue, flattenedData]); // listbox/select change value _with_ the index, but combobox changes on select of an index (click/enter), so we need state
55
+
56
+ var _React$useState3 = useState(inputValue !== undefined ? getIndexFromValue(data, inputValue) : undefined),
57
+ currentIndex = _React$useState3[0],
58
+ setCurrentIndex = _React$useState3[1];
59
+
60
+ var setInputValueByIndex = function setInputValueByIndex(index) {
43
61
  if (index !== undefined) {
44
- const option = data[index];
62
+ var option = data[index];
45
63
 
46
64
  if (option && !option.disabled) {
47
65
  setInputValueByRef(inputRef.current, option.value, 'focusout');
@@ -49,12 +67,12 @@ const useCombobox = ({
49
67
  }
50
68
  };
51
69
 
52
- const setCurrentValue = index => {
70
+ var setCurrentValue = function setCurrentValue(index) {
53
71
  if (index === undefined) {
54
72
  return;
55
73
  }
56
74
 
57
- const option = data[index]; // if the selected option is not already selected, trigger blur event
75
+ var option = data[index]; // if the selected option is not already selected, trigger blur event
58
76
 
59
77
  if (option.value !== value) {
60
78
  setInputValueByIndex(index);
@@ -65,29 +83,29 @@ const useCombobox = ({
65
83
  }; // ensure the external value is synced with the internal value when mounting, e.g. incase a default value was set
66
84
 
67
85
 
68
- useEffect(() => {
86
+ useEffect(function () {
69
87
  if (defaultValue && !value) {
70
88
  setInputValueByIndex(getIndexFromValue(data, defaultValue));
71
89
  }
72
90
  }, [data]); // update input value if it changed 'externally', e.g. clicking/entering an item in the listbox, from a modal etc
73
91
 
74
- useEffect(() => {
92
+ useEffect(function () {
75
93
  if (value !== undefined && value !== inputValue) {
76
94
  setInputValue(convertToInputValue(value));
77
95
  }
78
96
  }, [value]);
79
- useEffect(() => {
97
+ useEffect(function () {
80
98
  if (onSearch) {
81
- debouncer(() => {
99
+ debouncer(function () {
82
100
  onSearch(inputValue);
83
101
  });
84
102
  }
85
103
  }, [inputValue]); // show listbox based on input value
86
104
 
87
- useEffect(() => {
105
+ useEffect(function () {
88
106
  // don't show the popover if the internal (input) value already is the current value
89
107
  // this prevents the popover showing after selecting a value or pressing escape
90
- const isCurrentValue = value !== undefined && value !== null && inputValue === String(value);
108
+ var isCurrentValue = value !== undefined && value !== null && inputValue === String(value);
91
109
 
92
110
  if (inputValue && data.length && !isCurrentValue) {
93
111
  setCurrentIndex(0);
@@ -99,7 +117,7 @@ const useCombobox = ({
99
117
  setOpen(false);
100
118
  }
101
119
  }, [inputValue, data]);
102
- useEffect(() => {
120
+ useEffect(function () {
103
121
  if (open) {
104
122
  setCurrentIndex(getIndexFromValue(data, inputValue) || 0);
105
123
  } else {
@@ -107,7 +125,7 @@ const useCombobox = ({
107
125
  }
108
126
  }, [open]); // event handlers
109
127
 
110
- const handleInputBlur = event => {
128
+ var handleInputBlur = function handleInputBlur(event) {
111
129
  event.persist();
112
130
 
113
131
  if (event.relatedTarget === listRef.current) {
@@ -116,9 +134,9 @@ const useCombobox = ({
116
134
  }
117
135
 
118
136
  if (onChange && event.target.value !== value) {
119
- const item = findByValue(flattenedData, event.target.value);
137
+ var item = findByValue(flattenedData, event.target.value);
120
138
  event.detail = sanitizeItem(item);
121
- const parents = getOptionParents(flattenedData, item === null || item === void 0 ? void 0 : item.path);
139
+ var parents = getOptionParents(flattenedData, item === null || item === void 0 ? void 0 : item.path);
122
140
 
123
141
  if (parents !== null && parents.length > 0) {
124
142
  event.detail.parents = parents;
@@ -132,11 +150,11 @@ const useCombobox = ({
132
150
  }
133
151
  };
134
152
 
135
- const handleInputChange = event => {
153
+ var handleInputChange = function handleInputChange(event) {
136
154
  setInputValue(event.target.value);
137
155
  };
138
156
 
139
- const handleInputClick = event => {
157
+ var handleInputClick = function handleInputClick(event) {
140
158
  if (inline || !open && inputValue && data.length) {
141
159
  setOpen(true);
142
160
  }
@@ -147,7 +165,7 @@ const useCombobox = ({
147
165
  }
148
166
  };
149
167
 
150
- const handleInputKeyDown = event => {
168
+ var handleInputKeyDown = function handleInputKeyDown(event) {
151
169
  event.persist();
152
170
 
153
171
  switch (event.keyCode) {
@@ -197,7 +215,7 @@ const useCombobox = ({
197
215
  if (inline && !open) {
198
216
  if (event.keyCode === keycode('up') || event.keyCode === keycode('down')) {
199
217
  event.preventDefault();
200
- const initialIndex = event.keyCode === keycode('up') ? data.length - 1 : 0;
218
+ var initialIndex = event.keyCode === keycode('up') ? data.length - 1 : 0;
201
219
  setCurrentIndex(currentIndex !== undefined ? currentIndex : initialIndex);
202
220
  setOpen(true);
203
221
  }
@@ -209,23 +227,24 @@ const useCombobox = ({
209
227
  }
210
228
  };
211
229
 
212
- const handleListboxChange = index => {
230
+ var handleListboxChange = function handleListboxChange(index) {
213
231
  setCurrentIndex(index);
214
232
  };
215
233
 
216
- const handleListboxClick = (event, index) => {
234
+ var handleListboxClick = function handleListboxClick(event, index) {
217
235
  event.preventDefault();
218
236
  setCurrentValue(index);
219
237
  setOpen(false);
220
238
  };
221
239
 
222
- const combobox = {
240
+ var combobox = {
223
241
  'aria-expanded': open,
224
242
  'aria-owns': listId,
225
243
  'aria-haspopup': 'listbox',
226
244
  role: 'combobox'
227
245
  };
228
- const input = { ...props,
246
+
247
+ var input = _extends({}, props, {
229
248
  'aria-controls': listId,
230
249
  // Indicates that the autocomplete behavior of the text input is to suggest a list of possible values in a popup and that the suggestions
231
250
  // are related to the string that is present in the textbox
@@ -233,20 +252,21 @@ const useCombobox = ({
233
252
  // Enables assistive technologies to know which element the application regards as focused while DOM focus remains on the input element
234
253
  'aria-activedescendant': currentIndex !== undefined && data[currentIndex] ? getId(listId, String(data[currentIndex].value)) : undefined,
235
254
  'aria-labelledby': ariaLabelledBy,
236
- disabled,
255
+ disabled: disabled,
237
256
  onBlur: !disabled && !readOnly ? handleInputBlur : undefined,
238
257
  onChange: !disabled && !readOnly ? handleInputChange : undefined,
239
258
  onClick: !disabled && !readOnly ? handleInputClick : undefined,
240
259
  onKeyDown: !disabled && !readOnly ? handleInputKeyDown : undefined,
241
- readOnly,
260
+ readOnly: readOnly,
242
261
  ref: inputRef,
243
262
  type: 'text',
244
263
  value: inputValue || ''
245
- };
246
- const list = {
264
+ });
265
+
266
+ var list = {
247
267
  'aria-labelledby': ariaLabelledBy,
248
- data,
249
- disabled,
268
+ data: data,
269
+ disabled: disabled,
250
270
  id: listId,
251
271
  onChange: handleListboxChange,
252
272
  onClick: handleListboxClick,
@@ -256,11 +276,11 @@ const useCombobox = ({
256
276
  value: currentIndex
257
277
  };
258
278
  return {
259
- combobox,
260
- input,
261
- list,
279
+ combobox: combobox,
280
+ input: input,
281
+ list: list,
262
282
  popover: {
263
- open,
283
+ open: open,
264
284
  onOpenChange: setOpen
265
285
  }
266
286
  };
@@ -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.HTMLAttributes<HTMLInputElement>, 'defaultValue'> & { ref: React.RefObject<HTMLInputElement> };\r\n list: ScrollableListPropsWithRef;\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 }: ComboboxProps,\r\n ref: React.Ref<HTMLInputElement>\r\n): useCombobox => {\r\n const inputRef = useProxiedRef<HTMLInputElement>(ref);\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('up'):\r\n case keycode('down'):\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 return {\r\n combobox,\r\n input,\r\n list,\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","listRef","React","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","dispatchEvent","createCustomKeyboardEvent","initialIndex","isDefaultPrevented","handleListboxChange","handleListboxClick","combobox","role","input","getId","type","list","scrollOnFocus","tabIndex","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.HTMLAttributes<HTMLInputElement>, 'defaultValue'> & { ref: React.RefObject<HTMLInputElement> };\n list: ScrollableListPropsWithRef;\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 }: ComboboxProps,\n ref: React.Ref<HTMLInputElement>\n): useCombobox => {\n const inputRef = useProxiedRef<HTMLInputElement>(ref);\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('up'):\n case keycode('down'):\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 return {\n combobox,\n input,\n list,\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","listRef","React","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","dispatchEvent","createCustomKeyboardEvent","initialIndex","isDefaultPrevented","handleListboxChange","handleListboxClick","combobox","role","input","getId","type","list","id","scrollOnFocus","tabIndex","popover","onOpenChange"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Datepicker.js","sources":["../../../../src/components/Datepicker/Datepicker.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport cn from 'classnames';\r\nimport { Calendar, CalendarProps } from '../Calendar/Calendar';\r\nimport { Input, InputProps } from '../Input/Input';\r\nimport { useLocalization } from '../Provider/Provider';\r\nimport { useDatepicker } from './useDatepicker';\r\nimport { IconButton } from '../IconButton/IconButton';\r\nimport { Popover } from '../Popover/Popover';\r\n\r\nexport type DatepickerTexts = {\r\n /** Aria-label for calendar */\r\n calendar: string;\r\n /** Clear button text */\r\n clear: string;\r\n /**\r\n * Aria-label for calendar icon button in the input.\r\n * Calendar will open when user clicks this icon button.\r\n */\r\n expand: string;\r\n /** Shortcut heading text */\r\n shortcuts: string;\r\n};\r\n\r\nexport type DatepickerProps = Omit<InputProps, 'value'> & {\r\n /** [Calendar](component:calendar) component associated with the DatePicker */\r\n calendar?: CalendarProps;\r\n /** List of shortcuts */\r\n shortcuts?: any;\r\n /** Title for the shortcuts panel */\r\n shortcutsText?: string;\r\n /** Handler to be called when the clear button is clicked */\r\n onReset?: (event: React.MouseEvent<HTMLButtonElement>) => void;\r\n /**\r\n * Date value of the calendar.\r\n * This will be displayed in DatePicker's input in the format given to the [Provider](component:provider) component\r\n */\r\n value?: Date;\r\n};\r\n\r\nexport const Datepicker = React.forwardRef(function Datepicker(props: DatepickerProps, ref: React.Ref<HTMLInputElement>) {\r\n const { className: externalClassName, onReset: handleReset, style, shortcuts, shortcutsText, ...otherProps } = props;\r\n const { calendar, input } = useDatepicker(otherProps, ref);\r\n const { texts } = useLocalization();\r\n const className = cn('inline-flex w-full text-black font-normal', externalClassName);\r\n\r\n return (\r\n <span className={className} data-taco=\"datepicker\" style={style}>\r\n <Input\r\n {...input}\r\n button={\r\n <Popover>\r\n <Popover.Trigger>\r\n <IconButton\r\n aria-label={texts.datepicker.expand}\r\n disabled={input.disabled ?? input.readOnly}\r\n icon=\"calendar\"\r\n />\r\n </Popover.Trigger>\r\n <Popover.Content>\r\n {({ close }) => (\r\n <div className=\"flex -m-3\">\r\n <Calendar\r\n {...calendar}\r\n onChange={(date: Date, event?: React.MouseEvent<HTMLDivElement>) => {\r\n calendar.onChange(date, event);\r\n close();\r\n }}\r\n tabIndex={-1}\r\n />\r\n {shortcuts && (\r\n <div className=\"border-l border-grey-dark flex flex-col\">\r\n <span className=\"font-semibold text-xs m-4 flex items-center h-8 w-32 mb-3\">\r\n {shortcutsText ?? texts.datepicker.shortcuts}\r\n </span>\r\n <ul>\r\n {shortcuts.map((shortcut, i) => (\r\n <li key={i}>\r\n <button\r\n className=\"w-full px-4 py-1 flex items-start hover:bg-grey-light text-xs\"\r\n onClick={event => {\r\n event.persist();\r\n shortcut.onClick(event);\r\n close();\r\n }}\r\n >\r\n {shortcut.text}\r\n </button>\r\n </li>\r\n ))}\r\n </ul>\r\n {handleReset && (\r\n <button\r\n className=\"text-blue hover:text-blue-light inline-flex border-none bg-transparent text-xs cursor-pointer mt-auto my-4 mx-auto\"\r\n onClick={event => {\r\n event.persist();\r\n handleReset(event);\r\n close();\r\n }}\r\n >\r\n {texts.datepicker.clear}\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n )}\r\n </Popover.Content>\r\n </Popover>\r\n }\r\n />\r\n </span>\r\n );\r\n});\r\n"],"names":["Datepicker","React","props","ref","externalClassName","className","handleReset","onReset","style","shortcuts","shortcutsText","otherProps","useDatepicker","calendar","input","useLocalization","texts","cn","Input","button","Popover","Trigger","IconButton","datepicker","expand","disabled","readOnly","icon","Content","close","Calendar","onChange","date","event","tabIndex","map","shortcut","i","key","onClick","persist","text","clear"],"mappings":"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"}
1
+ {"version":3,"file":"Datepicker.js","sources":["../../../../src/components/Datepicker/Datepicker.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'classnames';\nimport { Calendar, CalendarProps } from '../Calendar/Calendar';\nimport { Input, InputProps } from '../Input/Input';\nimport { useLocalization } from '../Provider/Provider';\nimport { useDatepicker } from './useDatepicker';\nimport { IconButton } from '../IconButton/IconButton';\nimport { Popover } from '../Popover/Popover';\n\nexport type DatepickerTexts = {\n /** Aria-label for calendar */\n calendar: string;\n /** Clear button text */\n clear: string;\n /**\n * Aria-label for calendar icon button in the input.\n * Calendar will open when user clicks this icon button.\n */\n expand: string;\n /** Shortcut heading text */\n shortcuts: string;\n};\n\nexport type DatepickerProps = Omit<InputProps, 'value'> & {\n /** [Calendar](component:calendar) component associated with the DatePicker */\n calendar?: CalendarProps;\n /** List of shortcuts */\n shortcuts?: any;\n /** Title for the shortcuts panel */\n shortcutsText?: string;\n /** Handler to be called when the clear button is clicked */\n onReset?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n /**\n * Date value of the calendar.\n * This will be displayed in DatePicker's input in the format given to the [Provider](component:provider) component\n */\n value?: Date;\n};\n\nexport const Datepicker = React.forwardRef(function Datepicker(props: DatepickerProps, ref: React.Ref<HTMLInputElement>) {\n const { className: externalClassName, onReset: handleReset, style, shortcuts, shortcutsText, ...otherProps } = props;\n const { calendar, input } = useDatepicker(otherProps, ref);\n const { texts } = useLocalization();\n const className = cn('inline-flex w-full text-black font-normal', externalClassName);\n\n return (\n <span className={className} data-taco=\"datepicker\" style={style}>\n <Input\n {...input}\n button={\n <Popover>\n <Popover.Trigger>\n <IconButton\n aria-label={texts.datepicker.expand}\n disabled={input.disabled ?? input.readOnly}\n icon=\"calendar\"\n />\n </Popover.Trigger>\n <Popover.Content>\n {({ close }) => (\n <div className=\"flex -m-3\">\n <Calendar\n {...calendar}\n onChange={(date: Date, event?: React.MouseEvent<HTMLDivElement>) => {\n calendar.onChange(date, event);\n close();\n }}\n tabIndex={-1}\n />\n {shortcuts && (\n <div className=\"border-l border-grey-dark flex flex-col\">\n <span className=\"font-semibold text-xs m-4 flex items-center h-8 w-32 mb-3\">\n {shortcutsText ?? texts.datepicker.shortcuts}\n </span>\n <ul>\n {shortcuts.map((shortcut, i) => (\n <li key={i}>\n <button\n className=\"w-full px-4 py-1 flex items-start hover:bg-grey-light text-xs\"\n onClick={event => {\n event.persist();\n shortcut.onClick(event);\n close();\n }}\n >\n {shortcut.text}\n </button>\n </li>\n ))}\n </ul>\n {handleReset && (\n <button\n className=\"text-blue hover:text-blue-light inline-flex border-none bg-transparent text-xs cursor-pointer mt-auto my-4 mx-auto\"\n onClick={event => {\n event.persist();\n handleReset(event);\n close();\n }}\n >\n {texts.datepicker.clear}\n </button>\n )}\n </div>\n )}\n </div>\n )}\n </Popover.Content>\n </Popover>\n }\n />\n </span>\n );\n});\n"],"names":["Datepicker","React","props","ref","externalClassName","className","handleReset","onReset","style","shortcuts","shortcutsText","otherProps","useDatepicker","calendar","input","useLocalization","texts","cn","Input","button","Popover","Trigger","IconButton","datepicker","expand","disabled","readOnly","icon","Content","close","Calendar","onChange","date","event","tabIndex","map","shortcut","i","key","onClick","persist","text","clear"],"mappings":"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"}
@@ -1,26 +1,31 @@
1
+ import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
1
2
  import { useState, useEffect } from 'react';
2
3
  import { useLocalization } from '../Provider/Provider.js';
3
4
  import { useProxiedRef } from '../../utils/hooks/useProxiedRef.js';
4
5
  import { setInputValueByRef } from '../../utils/input.js';
5
6
  import { format, parseFromCustomString } from '../../utils/date.js';
6
7
 
7
- const useDatepicker = ({
8
- defaultValue: _,
9
- calendar,
10
- onBlur,
11
- onChange,
12
- value,
13
- ...props
14
- }, ref) => {
15
- const inputRef = useProxiedRef(ref);
16
- const {
17
- formatting
18
- } = useLocalization();
19
- const [internalValue, setInternalValue] = useState(value ? format(value, formatting.date) : ''); // update internal value if it changed 'externally'
20
-
21
- useEffect(() => {
8
+ var _excluded = ["defaultValue", "calendar", "onBlur", "onChange", "value"];
9
+ var useDatepicker = function useDatepicker(_ref, ref) {
10
+ var calendar = _ref.calendar,
11
+ onBlur = _ref.onBlur,
12
+ onChange = _ref.onChange,
13
+ value = _ref.value,
14
+ props = _objectWithoutPropertiesLoose(_ref, _excluded);
15
+
16
+ var inputRef = useProxiedRef(ref);
17
+
18
+ var _useLocalization = useLocalization(),
19
+ formatting = _useLocalization.formatting;
20
+
21
+ var _React$useState = useState(value ? format(value, formatting.date) : ''),
22
+ internalValue = _React$useState[0],
23
+ setInternalValue = _React$useState[1]; // update internal value if it changed 'externally'
24
+
25
+
26
+ useEffect(function () {
22
27
  if (value) {
23
- const formattedValue = format(value, formatting.date);
28
+ var formattedValue = format(value, formatting.date);
24
29
 
25
30
  if (formattedValue !== internalValue) {
26
31
  setInternalValue(formattedValue);
@@ -30,10 +35,10 @@ const useDatepicker = ({
30
35
  }
31
36
  }, [value]); // event handlers
32
37
 
33
- const handleInputBlur = event => {
38
+ var handleInputBlur = function handleInputBlur(event) {
34
39
  event.persist();
35
- const valueAsDate = parseFromCustomString(event.target.value);
36
- const formattedValue = valueAsDate ? format(valueAsDate) || '' : '';
40
+ var valueAsDate = parseFromCustomString(event.target.value);
41
+ var formattedValue = valueAsDate ? format(valueAsDate) || '' : '';
37
42
  event.target.value = formattedValue;
38
43
 
39
44
  if (onChange) {
@@ -49,15 +54,15 @@ const useDatepicker = ({
49
54
  }
50
55
  };
51
56
 
52
- const handleInputChange = event => {
57
+ var handleInputChange = function handleInputChange(event) {
53
58
  setInternalValue(event.target.value);
54
59
  };
55
60
 
56
- const handleChange = date => {
61
+ var handleChange = function handleChange(date) {
57
62
  setInputValueByRef(inputRef.current, format(date, formatting.date), 'focusout');
58
63
  };
59
64
 
60
- const handleKeyDown = event => {
65
+ var handleKeyDown = function handleKeyDown(event) {
61
66
  if (event.key === 'Enter') {
62
67
  event.target.dispatchEvent(new Event('focusout', {
63
68
  bubbles: true
@@ -65,7 +70,7 @@ const useDatepicker = ({
65
70
  }
66
71
  };
67
72
 
68
- const inputProps = { ...props,
73
+ var inputProps = _extends({}, props, {
69
74
  autoComplete: 'off',
70
75
  onBlur: handleInputBlur,
71
76
  onChange: handleInputChange,
@@ -73,11 +78,13 @@ const useDatepicker = ({
73
78
  ref: inputRef,
74
79
  type: 'text',
75
80
  value: internalValue
76
- };
77
- const calendarProps = { ...calendar,
81
+ });
82
+
83
+ var calendarProps = _extends({}, calendar, {
78
84
  onChange: handleChange,
79
- value
80
- };
85
+ value: value
86
+ });
87
+
81
88
  return {
82
89
  input: inputProps,
83
90
  calendar: calendarProps
@@ -1 +1 @@
1
- {"version":3,"file":"useDatepicker.js","sources":["../../../../src/components/Datepicker/useDatepicker.tsx"],"sourcesContent":["import * as React from 'react';\r\nimport { parseFromCustomString, format } from '../../utils/date';\r\nimport { useLocalization } from '../Provider/Provider';\r\nimport { setInputValueByRef } from '../../utils/input';\r\nimport { useProxiedRef } from '../../utils/hooks/useProxiedRef';\r\nimport { DatepickerProps } from './Datepicker';\r\nimport { CalendarProps } from '../Calendar/Calendar';\r\n\r\ntype InputProps = React.InputHTMLAttributes<HTMLInputElement> & { ref: React.RefObject<HTMLInputElement> };\r\n\r\ntype useDatepicker = React.HTMLAttributes<HTMLDivElement> & {\r\n calendar: CalendarProps;\r\n input: InputProps;\r\n};\r\n\r\nexport const useDatepicker = (\r\n { defaultValue: _, calendar, onBlur, onChange, value, ...props }: DatepickerProps,\r\n ref: React.Ref<HTMLInputElement>\r\n): useDatepicker => {\r\n const inputRef = useProxiedRef<HTMLInputElement>(ref);\r\n const { formatting } = useLocalization();\r\n const [internalValue, setInternalValue] = React.useState(value ? format(value, formatting.date) : '');\r\n\r\n // update internal value if it changed 'externally'\r\n React.useEffect(() => {\r\n if (value) {\r\n const formattedValue = format(value, formatting.date);\r\n\r\n if (formattedValue !== internalValue) {\r\n setInternalValue(formattedValue);\r\n }\r\n } else {\r\n setInternalValue('');\r\n }\r\n }, [value]);\r\n\r\n // event handlers\r\n const handleInputBlur = (event: React.FocusEvent<HTMLInputElement>): void => {\r\n event.persist();\r\n\r\n const valueAsDate = parseFromCustomString(event.target.value);\r\n const formattedValue = valueAsDate ? format(valueAsDate) || '' : '';\r\n\r\n event.target.value = formattedValue;\r\n\r\n if (onChange) {\r\n (event as any).detail = valueAsDate;\r\n onChange(event);\r\n } else {\r\n // update the internal value to use the formatted date\r\n setInternalValue(formattedValue);\r\n }\r\n\r\n if (onBlur) {\r\n onBlur(event);\r\n }\r\n };\r\n\r\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\r\n setInternalValue(event.target.value);\r\n };\r\n\r\n const handleChange = date => {\r\n setInputValueByRef(inputRef.current, format(date, formatting.date), 'focusout');\r\n };\r\n\r\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (event.key === 'Enter') {\r\n event.target.dispatchEvent(new Event('focusout', { bubbles: true }));\r\n }\r\n };\r\n\r\n const inputProps: InputProps = {\r\n ...props,\r\n autoComplete: 'off',\r\n onBlur: handleInputBlur,\r\n onChange: handleInputChange,\r\n onKeyDown: handleKeyDown,\r\n ref: inputRef,\r\n type: 'text',\r\n value: internalValue,\r\n };\r\n\r\n const calendarProps: CalendarProps = {\r\n ...calendar,\r\n onChange: handleChange,\r\n value,\r\n };\r\n\r\n return {\r\n input: inputProps,\r\n calendar: calendarProps,\r\n };\r\n};\r\n"],"names":["useDatepicker","defaultValue","_","calendar","onBlur","onChange","value","props","ref","inputRef","useProxiedRef","formatting","useLocalization","internalValue","setInternalValue","React","format","date","formattedValue","handleInputBlur","event","persist","valueAsDate","parseFromCustomString","target","detail","handleInputChange","handleChange","setInputValueByRef","current","handleKeyDown","key","dispatchEvent","Event","bubbles","inputProps","autoComplete","onKeyDown","type","calendarProps","input"],"mappings":"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"}
1
+ {"version":3,"file":"useDatepicker.js","sources":["../../../../src/components/Datepicker/useDatepicker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { parseFromCustomString, format } from '../../utils/date';\nimport { useLocalization } from '../Provider/Provider';\nimport { setInputValueByRef } from '../../utils/input';\nimport { useProxiedRef } from '../../utils/hooks/useProxiedRef';\nimport { DatepickerProps } from './Datepicker';\nimport { CalendarProps } from '../Calendar/Calendar';\n\ntype InputProps = React.InputHTMLAttributes<HTMLInputElement> & { ref: React.RefObject<HTMLInputElement> };\n\ntype useDatepicker = React.HTMLAttributes<HTMLDivElement> & {\n calendar: CalendarProps;\n input: InputProps;\n};\n\nexport const useDatepicker = (\n { defaultValue: _, calendar, onBlur, onChange, value, ...props }: DatepickerProps,\n ref: React.Ref<HTMLInputElement>\n): useDatepicker => {\n const inputRef = useProxiedRef<HTMLInputElement>(ref);\n const { formatting } = useLocalization();\n const [internalValue, setInternalValue] = React.useState(value ? format(value, formatting.date) : '');\n\n // update internal value if it changed 'externally'\n React.useEffect(() => {\n if (value) {\n const formattedValue = format(value, formatting.date);\n\n if (formattedValue !== internalValue) {\n setInternalValue(formattedValue);\n }\n } else {\n setInternalValue('');\n }\n }, [value]);\n\n // event handlers\n const handleInputBlur = (event: React.FocusEvent<HTMLInputElement>): void => {\n event.persist();\n\n const valueAsDate = parseFromCustomString(event.target.value);\n const formattedValue = valueAsDate ? format(valueAsDate) || '' : '';\n\n event.target.value = formattedValue;\n\n if (onChange) {\n (event as any).detail = valueAsDate;\n onChange(event);\n } else {\n // update the internal value to use the formatted date\n setInternalValue(formattedValue);\n }\n\n if (onBlur) {\n onBlur(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n setInternalValue(event.target.value);\n };\n\n const handleChange = date => {\n setInputValueByRef(inputRef.current, format(date, formatting.date), 'focusout');\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.target.dispatchEvent(new Event('focusout', { bubbles: true }));\n }\n };\n\n const inputProps: InputProps = {\n ...props,\n autoComplete: 'off',\n onBlur: handleInputBlur,\n onChange: handleInputChange,\n onKeyDown: handleKeyDown,\n ref: inputRef,\n type: 'text',\n value: internalValue,\n };\n\n const calendarProps: CalendarProps = {\n ...calendar,\n onChange: handleChange,\n value,\n };\n\n return {\n input: inputProps,\n calendar: calendarProps,\n };\n};\n"],"names":["useDatepicker","ref","calendar","onBlur","onChange","value","props","inputRef","useProxiedRef","useLocalization","formatting","React","format","date","internalValue","setInternalValue","formattedValue","handleInputBlur","event","persist","valueAsDate","parseFromCustomString","target","detail","handleInputChange","handleChange","setInputValueByRef","current","handleKeyDown","key","dispatchEvent","Event","bubbles","inputProps","autoComplete","onKeyDown","type","calendarProps","input"],"mappings":"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"}