@economic/taco 0.0.17-alpha.0 → 0.0.18-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 (371) hide show
  1. package/README.md +84 -84
  2. package/dist/esm/components/Accordion/Accordion.js +3 -3
  3. package/dist/esm/components/Accordion/Accordion.js.map +1 -1
  4. package/dist/esm/components/Backdrop/Backdrop.js.map +1 -1
  5. package/dist/esm/components/Badge/Badge.js.map +1 -1
  6. package/dist/esm/components/Banner/Banner.js.map +1 -1
  7. package/dist/esm/components/Banner/util.js +1 -1
  8. package/dist/esm/components/Banner/util.js.map +1 -1
  9. package/dist/esm/components/Button/Button.js.map +1 -1
  10. package/dist/esm/components/Button/util.js +18 -23
  11. package/dist/esm/components/Button/util.js.map +1 -1
  12. package/dist/esm/components/Calendar/Calendar.js.map +1 -1
  13. package/dist/esm/components/Checkbox/Checkbox.js.map +1 -1
  14. package/dist/esm/components/Combobox/Combobox.js.map +1 -1
  15. package/dist/esm/components/Combobox/useCombobox.js +64 -84
  16. package/dist/esm/components/Combobox/useCombobox.js.map +1 -1
  17. package/dist/esm/components/Datepicker/Datepicker.js.map +1 -1
  18. package/dist/esm/components/Datepicker/useDatepicker.js +27 -34
  19. package/dist/esm/components/Datepicker/useDatepicker.js.map +1 -1
  20. package/dist/esm/components/Dialog/Context.js +3 -3
  21. package/dist/esm/components/Dialog/Context.js.map +1 -1
  22. package/dist/esm/components/Dialog/Dialog.js +1 -1
  23. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  24. package/dist/esm/components/Dialog/components/Content.js +39 -44
  25. package/dist/esm/components/Dialog/components/Content.js.map +1 -1
  26. package/dist/esm/components/Dialog/components/Drawer.js +3 -3
  27. package/dist/esm/components/Dialog/components/Drawer.js.map +1 -1
  28. package/dist/esm/components/Dialog/components/Extra.js +2 -2
  29. package/dist/esm/components/Dialog/components/Extra.js.map +1 -1
  30. package/dist/esm/components/Dialog/components/Trigger.js +2 -2
  31. package/dist/esm/components/Dialog/components/Trigger.js.map +1 -1
  32. package/dist/esm/components/Field/Field.js.map +1 -1
  33. package/dist/esm/components/Form/Form.js.map +1 -1
  34. package/dist/esm/components/Group/Group.js.map +1 -1
  35. package/dist/esm/components/Hanger/Hanger.js +3 -3
  36. package/dist/esm/components/Hanger/Hanger.js.map +1 -1
  37. package/dist/esm/components/Icon/Icon.js.map +1 -1
  38. package/dist/esm/components/Icon/components/AccountPreview.js.map +1 -1
  39. package/dist/esm/components/Icon/components/Accounting.js.map +1 -1
  40. package/dist/esm/components/Icon/components/AccountingYear.js.map +1 -1
  41. package/dist/esm/components/Icon/components/AccountingYearCancel.js.map +1 -1
  42. package/dist/esm/components/Icon/components/ArrowBottom.js.map +1 -1
  43. package/dist/esm/components/Icon/components/ArrowDown.js.map +1 -1
  44. package/dist/esm/components/Icon/components/ArrowEnd.js.map +1 -1
  45. package/dist/esm/components/Icon/components/ArrowLeft.js.map +1 -1
  46. package/dist/esm/components/Icon/components/ArrowRight.js.map +1 -1
  47. package/dist/esm/components/Icon/components/ArrowStart.js.map +1 -1
  48. package/dist/esm/components/Icon/components/ArrowTop.js.map +1 -1
  49. package/dist/esm/components/Icon/components/ArrowUp.js.map +1 -1
  50. package/dist/esm/components/Icon/components/Attach.js.map +1 -1
  51. package/dist/esm/components/Icon/components/AttachAuto.js.map +1 -1
  52. package/dist/esm/components/Icon/components/AttachCancel.js.map +1 -1
  53. package/dist/esm/components/Icon/components/Autotext.js.map +1 -1
  54. package/dist/esm/components/Icon/components/AutotextInsert.js.map +1 -1
  55. package/dist/esm/components/Icon/components/Basic.js.map +1 -1
  56. package/dist/esm/components/Icon/components/BasicTabs.js.map +1 -1
  57. package/dist/esm/components/Icon/components/BellSolid.js.map +1 -1
  58. package/dist/esm/components/Icon/components/Book.js.map +1 -1
  59. package/dist/esm/components/Icon/components/Booking.js.map +1 -1
  60. package/dist/esm/components/Icon/components/Budget.js.map +1 -1
  61. package/dist/esm/components/Icon/components/Calendar.js.map +1 -1
  62. package/dist/esm/components/Icon/components/CashAccount.js.map +1 -1
  63. package/dist/esm/components/Icon/components/CashReports.js.map +1 -1
  64. package/dist/esm/components/Icon/components/Chat.js.map +1 -1
  65. package/dist/esm/components/Icon/components/ChatSolid.js.map +1 -1
  66. package/dist/esm/components/Icon/components/ChevronDown.js.map +1 -1
  67. package/dist/esm/components/Icon/components/ChevronDownDouble.js.map +1 -1
  68. package/dist/esm/components/Icon/components/ChevronDownSolid.js.map +1 -1
  69. package/dist/esm/components/Icon/components/ChevronLeft.js.map +1 -1
  70. package/dist/esm/components/Icon/components/ChevronLeftDouble.js.map +1 -1
  71. package/dist/esm/components/Icon/components/ChevronRight.js.map +1 -1
  72. package/dist/esm/components/Icon/components/ChevronRightDouble.js.map +1 -1
  73. package/dist/esm/components/Icon/components/ChevronUp.js.map +1 -1
  74. package/dist/esm/components/Icon/components/ChevronUpDouble.js.map +1 -1
  75. package/dist/esm/components/Icon/components/ChevronUpSolid.js.map +1 -1
  76. package/dist/esm/components/Icon/components/Clamp.js.map +1 -1
  77. package/dist/esm/components/Icon/components/ClampOpen.js.map +1 -1
  78. package/dist/esm/components/Icon/components/Close.js.map +1 -1
  79. package/dist/esm/components/Icon/components/ConnectionEnable.js.map +1 -1
  80. package/dist/esm/components/Icon/components/ConnectionRevoke.js.map +1 -1
  81. package/dist/esm/components/Icon/components/Contacts.js.map +1 -1
  82. package/dist/esm/components/Icon/components/Copy.js.map +1 -1
  83. package/dist/esm/components/Icon/components/Courses.js.map +1 -1
  84. package/dist/esm/components/Icon/components/Credit.js.map +1 -1
  85. package/dist/esm/components/Icon/components/Delete.js.map +1 -1
  86. package/dist/esm/components/Icon/components/DeletePermanently.js.map +1 -1
  87. package/dist/esm/components/Icon/components/Depecriate.js.map +1 -1
  88. package/dist/esm/components/Icon/components/Developer.js.map +1 -1
  89. package/dist/esm/components/Icon/components/DistributionTemplate.js.map +1 -1
  90. package/dist/esm/components/Icon/components/Document.js.map +1 -1
  91. package/dist/esm/components/Icon/components/DocumentApprove.js.map +1 -1
  92. package/dist/esm/components/Icon/components/DocumentCreateEntry.js.map +1 -1
  93. package/dist/esm/components/Icon/components/DocumentCut.js.map +1 -1
  94. package/dist/esm/components/Icon/components/DocumentError.js.map +1 -1
  95. package/dist/esm/components/Icon/components/DocumentIsolatePage.js.map +1 -1
  96. package/dist/esm/components/Icon/components/DocumentMerge.js.map +1 -1
  97. package/dist/esm/components/Icon/components/DocumentMove.js.map +1 -1
  98. package/dist/esm/components/Icon/components/DocumentPreview.js.map +1 -1
  99. package/dist/esm/components/Icon/components/DocumentReceived.js.map +1 -1
  100. package/dist/esm/components/Icon/components/DocumentRejectedRequest.js.map +1 -1
  101. package/dist/esm/components/Icon/components/DocumentSplit.js.map +1 -1
  102. package/dist/esm/components/Icon/components/DocumentTime.js.map +1 -1
  103. package/dist/esm/components/Icon/components/Download.js.map +1 -1
  104. package/dist/esm/components/Icon/components/Drag.js.map +1 -1
  105. package/dist/esm/components/Icon/components/ECopedia.js.map +1 -1
  106. package/dist/esm/components/Icon/components/ESignature.js.map +1 -1
  107. package/dist/esm/components/Icon/components/Edit.js.map +1 -1
  108. package/dist/esm/components/Icon/components/EllipsisHorizontal.js.map +1 -1
  109. package/dist/esm/components/Icon/components/EllipsisVertical.js.map +1 -1
  110. package/dist/esm/components/Icon/components/EntriesOnAccount.js.map +1 -1
  111. package/dist/esm/components/Icon/components/EntriesOpen.js.map +1 -1
  112. package/dist/esm/components/Icon/components/EntriesWarning.js.map +1 -1
  113. package/dist/esm/components/Icon/components/EntryTypeCustomerInvoice.js.map +1 -1
  114. package/dist/esm/components/Icon/components/EntryTypeCustomerPayment.js.map +1 -1
  115. package/dist/esm/components/Icon/components/EntryTypeJournalEntry.js.map +1 -1
  116. package/dist/esm/components/Icon/components/EntryTypeManualCustomerInvoice.js.map +1 -1
  117. package/dist/esm/components/Icon/components/EntryTypeSupplierInvoice.js.map +1 -1
  118. package/dist/esm/components/Icon/components/EntryTypeSupplierPayment.js.map +1 -1
  119. package/dist/esm/components/Icon/components/Envelope.js.map +1 -1
  120. package/dist/esm/components/Icon/components/EnvelopeApproved.js.map +1 -1
  121. package/dist/esm/components/Icon/components/ExpandView.js.map +1 -1
  122. package/dist/esm/components/Icon/components/Expenses.js.map +1 -1
  123. package/dist/esm/components/Icon/components/Export.js.map +1 -1
  124. package/dist/esm/components/Icon/components/ExportToExcel.js.map +1 -1
  125. package/dist/esm/components/Icon/components/ExportToExcelCopy.js.map +1 -1
  126. package/dist/esm/components/Icon/components/Filter.js.map +1 -1
  127. package/dist/esm/components/Icon/components/FilterSolid.js.map +1 -1
  128. package/dist/esm/components/Icon/components/GraphSolid.js.map +1 -1
  129. package/dist/esm/components/Icon/components/Hash.js.map +1 -1
  130. package/dist/esm/components/Icon/components/Home.js.map +1 -1
  131. package/dist/esm/components/Icon/components/Images.js.map +1 -1
  132. package/dist/esm/components/Icon/components/Import.js.map +1 -1
  133. package/dist/esm/components/Icon/components/Inbox.js.map +1 -1
  134. package/dist/esm/components/Icon/components/InboxSmart.js.map +1 -1
  135. package/dist/esm/components/Icon/components/Info.js.map +1 -1
  136. package/dist/esm/components/Icon/components/Inventory.js.map +1 -1
  137. package/dist/esm/components/Icon/components/InventoryMatrix.js.map +1 -1
  138. package/dist/esm/components/Icon/components/JournalPro.js.map +1 -1
  139. package/dist/esm/components/Icon/components/Layout.js.map +1 -1
  140. package/dist/esm/components/Icon/components/LayoutBoth.js.map +1 -1
  141. package/dist/esm/components/Icon/components/LayoutFirst.js.map +1 -1
  142. package/dist/esm/components/Icon/components/LayoutLast.js.map +1 -1
  143. package/dist/esm/components/Icon/components/LayoutNone.js.map +1 -1
  144. package/dist/esm/components/Icon/components/LedgerCard.js.map +1 -1
  145. package/dist/esm/components/Icon/components/LedgerCardCustomerReminder.js.map +1 -1
  146. package/dist/esm/components/Icon/components/LedgerCardManualCustomerInvoice.js.map +1 -1
  147. package/dist/esm/components/Icon/components/LedgerCardObsoleteStock.js.map +1 -1
  148. package/dist/esm/components/Icon/components/LedgerCardOpeningEntry.js.map +1 -1
  149. package/dist/esm/components/Icon/components/LedgerCardReservedEntry.js.map +1 -1
  150. package/dist/esm/components/Icon/components/LedgerCardShrinkagePilferage.js.map +1 -1
  151. package/dist/esm/components/Icon/components/LedgerCardStockAdjustment.js.map +1 -1
  152. package/dist/esm/components/Icon/components/LedgerCardTransferredOpeningEntry.js.map +1 -1
  153. package/dist/esm/components/Icon/components/Lightbulb.js.map +1 -1
  154. package/dist/esm/components/Icon/components/Line.js.map +1 -1
  155. package/dist/esm/components/Icon/components/List.js.map +1 -1
  156. package/dist/esm/components/Icon/components/ListBulleted.js.map +1 -1
  157. package/dist/esm/components/Icon/components/ListSearch.js.map +1 -1
  158. package/dist/esm/components/Icon/components/LockOpen.js.map +1 -1
  159. package/dist/esm/components/Icon/components/Log.js.map +1 -1
  160. package/dist/esm/components/Icon/components/Market.js.map +1 -1
  161. package/dist/esm/components/Icon/components/MatchAmount.js.map +1 -1
  162. package/dist/esm/components/Icon/components/MatchEntries.js.map +1 -1
  163. package/dist/esm/components/Icon/components/Mileage.js.map +1 -1
  164. package/dist/esm/components/Icon/components/Minus.js.map +1 -1
  165. package/dist/esm/components/Icon/components/ModalResize.js.map +1 -1
  166. package/dist/esm/components/Icon/components/ModalShrink.js.map +1 -1
  167. package/dist/esm/components/Icon/components/More.js.map +1 -1
  168. package/dist/esm/components/Icon/components/MoreSolid.js.map +1 -1
  169. package/dist/esm/components/Icon/components/Move.js.map +1 -1
  170. package/dist/esm/components/Icon/components/NavigationList.js.map +1 -1
  171. package/dist/esm/components/Icon/components/Note.js.map +1 -1
  172. package/dist/esm/components/Icon/components/NoteFollowUp.js.map +1 -1
  173. package/dist/esm/components/Icon/components/NoteRead.js.map +1 -1
  174. package/dist/esm/components/Icon/components/PartnerApi.js.map +1 -1
  175. package/dist/esm/components/Icon/components/Period.js.map +1 -1
  176. package/dist/esm/components/Icon/components/PersonChange.js.map +1 -1
  177. package/dist/esm/components/Icon/components/PersonMinus.js.map +1 -1
  178. package/dist/esm/components/Icon/components/PersonPlus.js.map +1 -1
  179. package/dist/esm/components/Icon/components/PersonTick.js.map +1 -1
  180. package/dist/esm/components/Icon/components/Play.js.map +1 -1
  181. package/dist/esm/components/Icon/components/PlusCircle.js.map +1 -1
  182. package/dist/esm/components/Icon/components/PlusMinus.js.map +1 -1
  183. package/dist/esm/components/Icon/components/Print.js.map +1 -1
  184. package/dist/esm/components/Icon/components/ProcessPayment.js.map +1 -1
  185. package/dist/esm/components/Icon/components/ProductLedgerCard.js.map +1 -1
  186. package/dist/esm/components/Icon/components/ProjectCards.js.map +1 -1
  187. package/dist/esm/components/Icon/components/Projects.js.map +1 -1
  188. package/dist/esm/components/Icon/components/Quicklinks.js.map +1 -1
  189. package/dist/esm/components/Icon/components/RatingBankruptcy.js.map +1 -1
  190. package/dist/esm/components/Icon/components/RatingPaymentProblems.js.map +1 -1
  191. package/dist/esm/components/Icon/components/Reconciled.js.map +1 -1
  192. package/dist/esm/components/Icon/components/Refresh.js.map +1 -1
  193. package/dist/esm/components/Icon/components/Report.js.map +1 -1
  194. package/dist/esm/components/Icon/components/ReportSolid.js.map +1 -1
  195. package/dist/esm/components/Icon/components/Restore.js.map +1 -1
  196. package/dist/esm/components/Icon/components/RotateLeft.js.map +1 -1
  197. package/dist/esm/components/Icon/components/RotateRight.js.map +1 -1
  198. package/dist/esm/components/Icon/components/Sales.js.map +1 -1
  199. package/dist/esm/components/Icon/components/Search.js.map +1 -1
  200. package/dist/esm/components/Icon/components/SearchBold.js.map +1 -1
  201. package/dist/esm/components/Icon/components/Secure.js.map +1 -1
  202. package/dist/esm/components/Icon/components/SecureTick.js.map +1 -1
  203. package/dist/esm/components/Icon/components/Settings.js.map +1 -1
  204. package/dist/esm/components/Icon/components/SettingsSolid.js.map +1 -1
  205. package/dist/esm/components/Icon/components/Shortcuts.js.map +1 -1
  206. package/dist/esm/components/Icon/components/ShowAll.js.map +1 -1
  207. package/dist/esm/components/Icon/components/ShowLess.js.map +1 -1
  208. package/dist/esm/components/Icon/components/ShowMore.js.map +1 -1
  209. package/dist/esm/components/Icon/components/ShowTemplate.js.map +1 -1
  210. package/dist/esm/components/Icon/components/Sliders.js.map +1 -1
  211. package/dist/esm/components/Icon/components/Smartpay.js.map +1 -1
  212. package/dist/esm/components/Icon/components/SortBy.js.map +1 -1
  213. package/dist/esm/components/Icon/components/Spinner.js.map +1 -1
  214. package/dist/esm/components/Icon/components/Star.js.map +1 -1
  215. package/dist/esm/components/Icon/components/StarSolid.js.map +1 -1
  216. package/dist/esm/components/Icon/components/Subscriptions.js.map +1 -1
  217. package/dist/esm/components/Icon/components/SystemEntries.js.map +1 -1
  218. package/dist/esm/components/Icon/components/Tag.js.map +1 -1
  219. package/dist/esm/components/Icon/components/TemplateOverride.js.map +1 -1
  220. package/dist/esm/components/Icon/components/Templates.js.map +1 -1
  221. package/dist/esm/components/Icon/components/Thumb.js.map +1 -1
  222. package/dist/esm/components/Icon/components/ThumbBoth.js.map +1 -1
  223. package/dist/esm/components/Icon/components/ThumbDown.js.map +1 -1
  224. package/dist/esm/components/Icon/components/ThumbDownSolid.js.map +1 -1
  225. package/dist/esm/components/Icon/components/ThumbUpSolid.js.map +1 -1
  226. package/dist/esm/components/Icon/components/Tick.js.map +1 -1
  227. package/dist/esm/components/Icon/components/TickCircle.js.map +1 -1
  228. package/dist/esm/components/Icon/components/Time.js.map +1 -1
  229. package/dist/esm/components/Icon/components/Transfer.js.map +1 -1
  230. package/dist/esm/components/Icon/components/TransferCancel.js.map +1 -1
  231. package/dist/esm/components/Icon/components/TransferLocked.js.map +1 -1
  232. package/dist/esm/components/Icon/components/Undock.js.map +1 -1
  233. package/dist/esm/components/Icon/components/Unreconciled.js.map +1 -1
  234. package/dist/esm/components/Icon/components/Warning.js.map +1 -1
  235. package/dist/esm/components/Icon/components/Webshop.js.map +1 -1
  236. package/dist/esm/components/Icon/components/Website.js.map +1 -1
  237. package/dist/esm/components/Icon/components/Workflow.js.map +1 -1
  238. package/dist/esm/components/Icon/components/Zoom.js.map +1 -1
  239. package/dist/esm/components/Icon/components/index.js +4 -4
  240. package/dist/esm/components/Icon/components/index.js.map +1 -1
  241. package/dist/esm/components/IconButton/IconButton.js.map +1 -1
  242. package/dist/esm/components/Input/Input.js.map +1 -1
  243. package/dist/esm/components/Input/util.js +9 -8
  244. package/dist/esm/components/Input/util.js.map +1 -1
  245. package/dist/esm/components/Listbox/Listbox.js.map +1 -1
  246. package/dist/esm/components/Listbox/ScrollableList.js +63 -82
  247. package/dist/esm/components/Listbox/ScrollableList.js.map +1 -1
  248. package/dist/esm/components/Listbox/useListbox.js +49 -58
  249. package/dist/esm/components/Listbox/useListbox.js.map +1 -1
  250. package/dist/esm/components/Listbox/useMultiListbox.js +63 -91
  251. package/dist/esm/components/Listbox/useMultiListbox.js.map +1 -1
  252. package/dist/esm/components/Listbox/useTypeahead.js +10 -9
  253. package/dist/esm/components/Listbox/useTypeahead.js.map +1 -1
  254. package/dist/esm/components/Listbox/util.js +48 -84
  255. package/dist/esm/components/Listbox/util.js.map +1 -1
  256. package/dist/esm/components/Menu/Context.js +2 -2
  257. package/dist/esm/components/Menu/Context.js.map +1 -1
  258. package/dist/esm/components/Menu/Menu.js.map +1 -1
  259. package/dist/esm/components/Menu/components/Checkbox.js +8 -9
  260. package/dist/esm/components/Menu/components/Checkbox.js.map +1 -1
  261. package/dist/esm/components/Menu/components/Content.js +10 -13
  262. package/dist/esm/components/Menu/components/Content.js.map +1 -1
  263. package/dist/esm/components/Menu/components/Header.js +4 -4
  264. package/dist/esm/components/Menu/components/Header.js.map +1 -1
  265. package/dist/esm/components/Menu/components/Item.js +34 -35
  266. package/dist/esm/components/Menu/components/Item.js.map +1 -1
  267. package/dist/esm/components/Menu/components/Link.js +10 -11
  268. package/dist/esm/components/Menu/components/Link.js.map +1 -1
  269. package/dist/esm/components/Menu/components/RadioGroup.js +16 -18
  270. package/dist/esm/components/Menu/components/RadioGroup.js.map +1 -1
  271. package/dist/esm/components/Menu/components/Separator.js +4 -4
  272. package/dist/esm/components/Menu/components/Separator.js.map +1 -1
  273. package/dist/esm/components/Menu/components/Trigger.js +5 -5
  274. package/dist/esm/components/Menu/components/Trigger.js.map +1 -1
  275. package/dist/esm/components/Navigation/Navigation.js.map +1 -1
  276. package/dist/esm/components/Pagination/PageNumbers.js +23 -28
  277. package/dist/esm/components/Pagination/PageNumbers.js.map +1 -1
  278. package/dist/esm/components/Pagination/Pagination.js.map +1 -1
  279. package/dist/esm/components/Pagination/usePagination.js +7 -21
  280. package/dist/esm/components/Pagination/usePagination.js.map +1 -1
  281. package/dist/esm/components/Pagination/usePaginationShortcuts.js +9 -9
  282. package/dist/esm/components/Pagination/usePaginationShortcuts.js.map +1 -1
  283. package/dist/esm/components/Popover/Popover.js +4 -4
  284. package/dist/esm/components/Popover/Popover.js.map +1 -1
  285. package/dist/esm/components/Popover/Primitives.js +9 -10
  286. package/dist/esm/components/Popover/Primitives.js.map +1 -1
  287. package/dist/esm/components/Progress/Progress.js.map +1 -1
  288. package/dist/esm/components/Provider/Provider.js.map +1 -1
  289. package/dist/esm/components/RadioGroup/RadioGroup.js.map +1 -1
  290. package/dist/esm/components/SearchInput/SearchInput.js.map +1 -1
  291. package/dist/esm/components/Select/Select.js.map +1 -1
  292. package/dist/esm/components/Select/useSelect.js +63 -82
  293. package/dist/esm/components/Select/useSelect.js.map +1 -1
  294. package/dist/esm/components/Spinner/Spinner.js.map +1 -1
  295. package/dist/esm/components/Switch/Switch.js.map +1 -1
  296. package/dist/esm/components/Table/components/BaseTable.js +23 -30
  297. package/dist/esm/components/Table/components/BaseTable.js.map +1 -1
  298. package/dist/esm/components/Table/components/PaginatedTable.js +3 -7
  299. package/dist/esm/components/Table/components/PaginatedTable.js.map +1 -1
  300. package/dist/esm/components/Table/components/Table.js +18 -25
  301. package/dist/esm/components/Table/components/Table.js.map +1 -1
  302. package/dist/esm/components/Table/components/WindowedTable.js +88 -104
  303. package/dist/esm/components/Table/components/WindowedTable.js.map +1 -1
  304. package/dist/esm/components/Table/hooks/plugins/useRowActions.js +122 -146
  305. package/dist/esm/components/Table/hooks/plugins/useRowActions.js.map +1 -1
  306. package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js +57 -61
  307. package/dist/esm/components/Table/hooks/plugins/useRowDraggable.js.map +1 -1
  308. package/dist/esm/components/Table/hooks/plugins/useRowEditing.js +39 -36
  309. package/dist/esm/components/Table/hooks/plugins/useRowEditing.js.map +1 -1
  310. package/dist/esm/components/Table/hooks/plugins/useRowSelect.js +80 -90
  311. package/dist/esm/components/Table/hooks/plugins/useRowSelect.js.map +1 -1
  312. package/dist/esm/components/Table/hooks/useRowCreation.js +29 -64
  313. package/dist/esm/components/Table/hooks/useRowCreation.js.map +1 -1
  314. package/dist/esm/components/Table/hooks/useTable.js +119 -141
  315. package/dist/esm/components/Table/hooks/useTable.js.map +1 -1
  316. package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js +12 -15
  317. package/dist/esm/components/Table/hooks/useTableKeyboardNavigation.js.map +1 -1
  318. package/dist/esm/components/Table/util/renderColumn.js +10 -10
  319. package/dist/esm/components/Table/util/renderColumn.js.map +1 -1
  320. package/dist/esm/components/Table/util/renderRow.js +37 -46
  321. package/dist/esm/components/Table/util/renderRow.js.map +1 -1
  322. package/dist/esm/components/Table/util/rowIndexPath.js +14 -16
  323. package/dist/esm/components/Table/util/rowIndexPath.js.map +1 -1
  324. package/dist/esm/components/Table/util/sortTypes.js +23 -31
  325. package/dist/esm/components/Table/util/sortTypes.js.map +1 -1
  326. package/dist/esm/components/Table/util.js +29 -41
  327. package/dist/esm/components/Table/util.js.map +1 -1
  328. package/dist/esm/components/Tabs/Tabs.js.map +1 -1
  329. package/dist/esm/components/Textarea/Textarea.js.map +1 -1
  330. package/dist/esm/components/Toast/Toast.js +20 -21
  331. package/dist/esm/components/Toast/Toast.js.map +1 -1
  332. package/dist/esm/components/Toast/Toaster.js.map +1 -1
  333. package/dist/esm/components/Toast/util.js +2 -2
  334. package/dist/esm/components/Toast/util.js.map +1 -1
  335. package/dist/esm/components/Tooltip/Tooltip.js +1 -1
  336. package/dist/esm/components/Tooltip/Tooltip.js.map +1 -1
  337. package/dist/esm/components/Tour/Tour.js.map +1 -1
  338. package/dist/esm/components/Treeview/Treeview.js +3 -3
  339. package/dist/esm/components/Treeview/Treeview.js.map +1 -1
  340. package/dist/esm/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  341. package/dist/esm/index.css +642 -642
  342. package/dist/esm/index.js +1 -1
  343. package/dist/esm/primitives/Button.js +9 -13
  344. package/dist/esm/primitives/Button.js.map +1 -1
  345. package/dist/esm/utils/date.js.map +1 -1
  346. package/dist/esm/utils/hooks/useBoundingClientRectListener.js.map +1 -1
  347. package/dist/esm/utils/hooks/useDraggable.js +16 -18
  348. package/dist/esm/utils/hooks/useDraggable.js.map +1 -1
  349. package/dist/esm/utils/hooks/useDropTarget.js +7 -10
  350. package/dist/esm/utils/hooks/useDropTarget.js.map +1 -1
  351. package/dist/esm/utils/hooks/useListKeyboardNavigation.js.map +1 -1
  352. package/dist/esm/utils/hooks/useListScrollTo.js.map +1 -1
  353. package/dist/esm/utils/hooks/useOnClickOutside.js.map +1 -1
  354. package/dist/esm/utils/hooks/useProxiedRef.js +3 -3
  355. package/dist/esm/utils/hooks/useProxiedRef.js.map +1 -1
  356. package/dist/esm/utils/hooks/useTimer.js +9 -17
  357. package/dist/esm/utils/hooks/useTimer.js.map +1 -1
  358. package/dist/esm/utils/input.js +7 -11
  359. package/dist/esm/utils/input.js.map +1 -1
  360. package/dist/esm/utils/mergeRefs.js +2 -2
  361. package/dist/esm/utils/mergeRefs.js.map +1 -1
  362. package/dist/esm/utils/taillwind.js +2 -2
  363. package/dist/esm/utils/taillwind.js.map +1 -1
  364. package/dist/index.css +642 -642
  365. package/dist/taco.cjs.development.js +1507 -1835
  366. package/dist/taco.cjs.development.js.map +1 -1
  367. package/dist/taco.cjs.production.min.js +1 -1
  368. package/dist/taco.cjs.production.min.js.map +1 -1
  369. package/package.json +2 -2
  370. package/plugins/tailwindcss-aria-attributes.js +73 -73
  371. package/tailwind.config.js +297 -297
@@ -1,4 +1,3 @@
1
- import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import { useRef, useState, useMemo, useEffect } from 'react';
3
2
  import { v4 } from 'uuid';
4
3
  import { useProxiedRef } from '../../utils/hooks/useProxiedRef.js';
@@ -8,58 +7,41 @@ import { getId } from '../Listbox/ScrollableList.js';
8
7
  import { createCustomKeyboardEvent } from '../../utils/input.js';
9
8
  import { useFlattenedData, filterData, getIndexFromValue, setInputValueByRef, findByValue, sanitizeItem, getOptionParents } from '../Listbox/util.js';
10
9
 
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) {
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 => {
61
43
  if (index !== undefined) {
62
- var option = data[index];
44
+ const option = data[index];
63
45
 
64
46
  if (option && !option.disabled) {
65
47
  setInputValueByRef(inputRef.current, option.value, 'focusout');
@@ -67,12 +49,12 @@ var useCombobox = function useCombobox(_ref, ref) {
67
49
  }
68
50
  };
69
51
 
70
- var setCurrentValue = function setCurrentValue(index) {
52
+ const setCurrentValue = index => {
71
53
  if (index === undefined) {
72
54
  return;
73
55
  }
74
56
 
75
- var option = data[index]; // if the selected option is not already selected, trigger blur event
57
+ const option = data[index]; // if the selected option is not already selected, trigger blur event
76
58
 
77
59
  if (option.value !== value) {
78
60
  setInputValueByIndex(index);
@@ -83,29 +65,29 @@ var useCombobox = function useCombobox(_ref, ref) {
83
65
  }; // ensure the external value is synced with the internal value when mounting, e.g. incase a default value was set
84
66
 
85
67
 
86
- useEffect(function () {
68
+ useEffect(() => {
87
69
  if (defaultValue && !value) {
88
70
  setInputValueByIndex(getIndexFromValue(data, defaultValue));
89
71
  }
90
72
  }, [data]); // update input value if it changed 'externally', e.g. clicking/entering an item in the listbox, from a modal etc
91
73
 
92
- useEffect(function () {
74
+ useEffect(() => {
93
75
  if (value !== undefined && value !== inputValue) {
94
76
  setInputValue(convertToInputValue(value));
95
77
  }
96
78
  }, [value]);
97
- useEffect(function () {
79
+ useEffect(() => {
98
80
  if (onSearch) {
99
- debouncer(function () {
81
+ debouncer(() => {
100
82
  onSearch(inputValue);
101
83
  });
102
84
  }
103
85
  }, [inputValue]); // show listbox based on input value
104
86
 
105
- useEffect(function () {
87
+ useEffect(() => {
106
88
  // don't show the popover if the internal (input) value already is the current value
107
89
  // this prevents the popover showing after selecting a value or pressing escape
108
- var isCurrentValue = value !== undefined && value !== null && inputValue === String(value);
90
+ const isCurrentValue = value !== undefined && value !== null && inputValue === String(value);
109
91
 
110
92
  if (inputValue && data.length && !isCurrentValue) {
111
93
  setCurrentIndex(0);
@@ -117,7 +99,7 @@ var useCombobox = function useCombobox(_ref, ref) {
117
99
  setOpen(false);
118
100
  }
119
101
  }, [inputValue, data]);
120
- useEffect(function () {
102
+ useEffect(() => {
121
103
  if (open) {
122
104
  setCurrentIndex(getIndexFromValue(data, inputValue) || 0);
123
105
  } else {
@@ -125,7 +107,7 @@ var useCombobox = function useCombobox(_ref, ref) {
125
107
  }
126
108
  }, [open]); // event handlers
127
109
 
128
- var handleInputBlur = function handleInputBlur(event) {
110
+ const handleInputBlur = event => {
129
111
  event.persist();
130
112
 
131
113
  if (event.relatedTarget === listRef.current) {
@@ -134,9 +116,9 @@ var useCombobox = function useCombobox(_ref, ref) {
134
116
  }
135
117
 
136
118
  if (onChange && event.target.value !== value) {
137
- var item = findByValue(flattenedData, event.target.value);
119
+ const item = findByValue(flattenedData, event.target.value);
138
120
  event.detail = sanitizeItem(item);
139
- var parents = getOptionParents(flattenedData, item === null || item === void 0 ? void 0 : item.path);
121
+ const parents = getOptionParents(flattenedData, item === null || item === void 0 ? void 0 : item.path);
140
122
 
141
123
  if (parents !== null && parents.length > 0) {
142
124
  event.detail.parents = parents;
@@ -150,11 +132,11 @@ var useCombobox = function useCombobox(_ref, ref) {
150
132
  }
151
133
  };
152
134
 
153
- var handleInputChange = function handleInputChange(event) {
135
+ const handleInputChange = event => {
154
136
  setInputValue(event.target.value);
155
137
  };
156
138
 
157
- var handleInputClick = function handleInputClick(event) {
139
+ const handleInputClick = event => {
158
140
  if (inline || !open && inputValue && data.length) {
159
141
  setOpen(true);
160
142
  }
@@ -165,7 +147,7 @@ var useCombobox = function useCombobox(_ref, ref) {
165
147
  }
166
148
  };
167
149
 
168
- var handleInputKeyDown = function handleInputKeyDown(event) {
150
+ const handleInputKeyDown = event => {
169
151
  event.persist();
170
152
 
171
153
  switch (event.keyCode) {
@@ -215,7 +197,7 @@ var useCombobox = function useCombobox(_ref, ref) {
215
197
  if (inline && !open) {
216
198
  if (event.keyCode === keycode('up') || event.keyCode === keycode('down')) {
217
199
  event.preventDefault();
218
- var initialIndex = event.keyCode === keycode('up') ? data.length - 1 : 0;
200
+ const initialIndex = event.keyCode === keycode('up') ? data.length - 1 : 0;
219
201
  setCurrentIndex(currentIndex !== undefined ? currentIndex : initialIndex);
220
202
  setOpen(true);
221
203
  }
@@ -227,24 +209,23 @@ var useCombobox = function useCombobox(_ref, ref) {
227
209
  }
228
210
  };
229
211
 
230
- var handleListboxChange = function handleListboxChange(index) {
212
+ const handleListboxChange = index => {
231
213
  setCurrentIndex(index);
232
214
  };
233
215
 
234
- var handleListboxClick = function handleListboxClick(event, index) {
216
+ const handleListboxClick = (event, index) => {
235
217
  event.preventDefault();
236
218
  setCurrentValue(index);
237
219
  setOpen(false);
238
220
  };
239
221
 
240
- var combobox = {
222
+ const combobox = {
241
223
  'aria-expanded': open,
242
224
  'aria-owns': listId,
243
225
  'aria-haspopup': 'listbox',
244
226
  role: 'combobox'
245
227
  };
246
-
247
- var input = _extends({}, props, {
228
+ const input = { ...props,
248
229
  'aria-controls': listId,
249
230
  // Indicates that the autocomplete behavior of the text input is to suggest a list of possible values in a popup and that the suggestions
250
231
  // are related to the string that is present in the textbox
@@ -252,21 +233,20 @@ var useCombobox = function useCombobox(_ref, ref) {
252
233
  // Enables assistive technologies to know which element the application regards as focused while DOM focus remains on the input element
253
234
  'aria-activedescendant': currentIndex !== undefined && data[currentIndex] ? getId(listId, String(data[currentIndex].value)) : undefined,
254
235
  'aria-labelledby': ariaLabelledBy,
255
- disabled: disabled,
236
+ disabled,
256
237
  onBlur: !disabled && !readOnly ? handleInputBlur : undefined,
257
238
  onChange: !disabled && !readOnly ? handleInputChange : undefined,
258
239
  onClick: !disabled && !readOnly ? handleInputClick : undefined,
259
240
  onKeyDown: !disabled && !readOnly ? handleInputKeyDown : undefined,
260
- readOnly: readOnly,
241
+ readOnly,
261
242
  ref: inputRef,
262
243
  type: 'text',
263
244
  value: inputValue || ''
264
- });
265
-
266
- var list = {
245
+ };
246
+ const list = {
267
247
  'aria-labelledby': ariaLabelledBy,
268
- data: data,
269
- disabled: disabled,
248
+ data,
249
+ disabled,
270
250
  id: listId,
271
251
  onChange: handleListboxChange,
272
252
  onClick: handleListboxClick,
@@ -276,11 +256,11 @@ var useCombobox = function useCombobox(_ref, ref) {
276
256
  value: currentIndex
277
257
  };
278
258
  return {
279
- combobox: combobox,
280
- input: input,
281
- list: list,
259
+ combobox,
260
+ input,
261
+ list,
282
262
  popover: {
283
- open: open,
263
+ open,
284
264
  onOpenChange: setOpen
285
265
  }
286
266
  };
@@ -1 +1 @@
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
+ {"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 +1 @@
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
+ {"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,31 +1,26 @@
1
- import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../../_virtual/_rollupPluginBabelHelpers.js';
2
1
  import { useState, useEffect } from 'react';
3
2
  import { useLocalization } from '../Provider/Provider.js';
4
3
  import { useProxiedRef } from '../../utils/hooks/useProxiedRef.js';
5
4
  import { setInputValueByRef } from '../../utils/input.js';
6
5
  import { format, parseFromCustomString } from '../../utils/date.js';
7
6
 
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 () {
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(() => {
27
22
  if (value) {
28
- var formattedValue = format(value, formatting.date);
23
+ const formattedValue = format(value, formatting.date);
29
24
 
30
25
  if (formattedValue !== internalValue) {
31
26
  setInternalValue(formattedValue);
@@ -35,10 +30,10 @@ var useDatepicker = function useDatepicker(_ref, ref) {
35
30
  }
36
31
  }, [value]); // event handlers
37
32
 
38
- var handleInputBlur = function handleInputBlur(event) {
33
+ const handleInputBlur = event => {
39
34
  event.persist();
40
- var valueAsDate = parseFromCustomString(event.target.value);
41
- var formattedValue = valueAsDate ? format(valueAsDate) || '' : '';
35
+ const valueAsDate = parseFromCustomString(event.target.value);
36
+ const formattedValue = valueAsDate ? format(valueAsDate) || '' : '';
42
37
  event.target.value = formattedValue;
43
38
 
44
39
  if (onChange) {
@@ -54,15 +49,15 @@ var useDatepicker = function useDatepicker(_ref, ref) {
54
49
  }
55
50
  };
56
51
 
57
- var handleInputChange = function handleInputChange(event) {
52
+ const handleInputChange = event => {
58
53
  setInternalValue(event.target.value);
59
54
  };
60
55
 
61
- var handleChange = function handleChange(date) {
56
+ const handleChange = date => {
62
57
  setInputValueByRef(inputRef.current, format(date, formatting.date), 'focusout');
63
58
  };
64
59
 
65
- var handleKeyDown = function handleKeyDown(event) {
60
+ const handleKeyDown = event => {
66
61
  if (event.key === 'Enter') {
67
62
  event.target.dispatchEvent(new Event('focusout', {
68
63
  bubbles: true
@@ -70,7 +65,7 @@ var useDatepicker = function useDatepicker(_ref, ref) {
70
65
  }
71
66
  };
72
67
 
73
- var inputProps = _extends({}, props, {
68
+ const inputProps = { ...props,
74
69
  autoComplete: 'off',
75
70
  onBlur: handleInputBlur,
76
71
  onChange: handleInputChange,
@@ -78,13 +73,11 @@ var useDatepicker = function useDatepicker(_ref, ref) {
78
73
  ref: inputRef,
79
74
  type: 'text',
80
75
  value: internalValue
81
- });
82
-
83
- var calendarProps = _extends({}, calendar, {
76
+ };
77
+ const calendarProps = { ...calendar,
84
78
  onChange: handleChange,
85
- value: value
86
- });
87
-
79
+ value
80
+ };
88
81
  return {
89
82
  input: inputProps,
90
83
  calendar: calendarProps
@@ -1 +1 @@
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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"}
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,7 +1,7 @@
1
1
  import { createContext, useContext } from 'react';
2
2
 
3
3
  /* eslint-disable @typescript-eslint/no-empty-function */
4
- var DialogContext = /*#__PURE__*/createContext({
4
+ const DialogContext = /*#__PURE__*/createContext({
5
5
  closeOnEscape: true,
6
6
  draggable: false,
7
7
  drawer: undefined,
@@ -9,13 +9,13 @@ var DialogContext = /*#__PURE__*/createContext({
9
9
  drawer: undefined,
10
10
  extra: undefined
11
11
  },
12
- onClose: function onClose() {},
12
+ onClose: () => {},
13
13
  props: {},
14
14
  ref: null,
15
15
  showCloseButton: true,
16
16
  size: 'sm'
17
17
  });
18
- var useCurrentDialog = function useCurrentDialog() {
18
+ const useCurrentDialog = () => {
19
19
  return useContext(DialogContext);
20
20
  };
21
21
 
@@ -1 +1 @@
1
- {"version":3,"file":"Context.js","sources":["../../../../src/components/Dialog/Context.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport * as React from 'react';\nimport { DialogSize } from './types';\n\nexport type DialogContext = {\n closeOnEscape: boolean;\n draggable: boolean;\n drawer?: {\n open: boolean;\n toggle: () => void;\n };\n elements: {\n drawer?: React.ReactNode;\n extra?: React.ReactNode;\n };\n onClose?: () => void;\n props: {};\n ref: React.Ref<HTMLElement>;\n showCloseButton: boolean;\n size: DialogSize;\n};\n\nexport const DialogContext = React.createContext<DialogContext>({\n closeOnEscape: true,\n draggable: false,\n drawer: undefined,\n elements: {\n drawer: undefined,\n extra: undefined,\n },\n onClose: () => {},\n props: {},\n ref: null,\n showCloseButton: true,\n size: 'sm',\n});\n\nexport const useCurrentDialog = () => {\n return React.useContext(DialogContext);\n};\n"],"names":["DialogContext","React","closeOnEscape","draggable","drawer","undefined","elements","extra","onClose","props","ref","showCloseButton","size","useCurrentDialog"],"mappings":";;AAAA;IAsBaA,aAAa,gBAAGC,aAAA,CAAmC;AAC5DC,EAAAA,aAAa,EAAE,IAD6C;AAE5DC,EAAAA,SAAS,EAAE,KAFiD;AAG5DC,EAAAA,MAAM,EAAEC,SAHoD;AAI5DC,EAAAA,QAAQ,EAAE;AACNF,IAAAA,MAAM,EAAEC,SADF;AAENE,IAAAA,KAAK,EAAEF;AAFD,GAJkD;AAQ5DG,EAAAA,OAAO,EAAE,qBARmD;AAS5DC,EAAAA,KAAK,EAAE,EATqD;AAU5DC,EAAAA,GAAG,EAAE,IAVuD;AAW5DC,EAAAA,eAAe,EAAE,IAX2C;AAY5DC,EAAAA,IAAI,EAAE;AAZsD,CAAnC;IAehBC,gBAAgB,GAAG,SAAnBA,gBAAmB;AAC5B,SAAOZ,UAAA,CAAiBD,aAAjB,CAAP;AACH;;;;"}
1
+ {"version":3,"file":"Context.js","sources":["../../../../src/components/Dialog/Context.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\r\nimport * as React from 'react';\r\nimport { DialogSize } from './types';\r\n\r\nexport type DialogContext = {\r\n closeOnEscape: boolean;\r\n draggable: boolean;\r\n drawer?: {\r\n open: boolean;\r\n toggle: () => void;\r\n };\r\n elements: {\r\n drawer?: React.ReactNode;\r\n extra?: React.ReactNode;\r\n };\r\n onClose?: () => void;\r\n props: {};\r\n ref: React.Ref<HTMLElement>;\r\n showCloseButton: boolean;\r\n size: DialogSize;\r\n};\r\n\r\nexport const DialogContext = React.createContext<DialogContext>({\r\n closeOnEscape: true,\r\n draggable: false,\r\n drawer: undefined,\r\n elements: {\r\n drawer: undefined,\r\n extra: undefined,\r\n },\r\n onClose: () => {},\r\n props: {},\r\n ref: null,\r\n showCloseButton: true,\r\n size: 'sm',\r\n});\r\n\r\nexport const useCurrentDialog = () => {\r\n return React.useContext(DialogContext);\r\n};\r\n"],"names":["DialogContext","React","closeOnEscape","draggable","drawer","undefined","elements","extra","onClose","props","ref","showCloseButton","size","useCurrentDialog"],"mappings":";;AAAA;MAsBaA,aAAa,gBAAGC,aAAA,CAAmC;AAC5DC,EAAAA,aAAa,EAAE,IAD6C;AAE5DC,EAAAA,SAAS,EAAE,KAFiD;AAG5DC,EAAAA,MAAM,EAAEC,SAHoD;AAI5DC,EAAAA,QAAQ,EAAE;AACNF,IAAAA,MAAM,EAAEC,SADF;AAENE,IAAAA,KAAK,EAAEF;AAFD,GAJkD;AAQ5DG,EAAAA,OAAO,EAAE,QARmD;AAS5DC,EAAAA,KAAK,EAAE,EATqD;AAU5DC,EAAAA,GAAG,EAAE,IAVuD;AAW5DC,EAAAA,eAAe,EAAE,IAX2C;AAY5DC,EAAAA,IAAI,EAAE;AAZsD,CAAnC;MAehBC,gBAAgB,GAAG;AAC5B,SAAOZ,UAAA,CAAiBD,aAAjB,CAAP;AACH;;;;"}
@@ -29,7 +29,7 @@ var useSeparatedChildren = function useSeparatedChildren(initialChildren) {
29
29
  }, [initialChildren]);
30
30
  };
31
31
 
32
- var Dialog = /*#__PURE__*/forwardRef(function (props, ref) {
32
+ var Dialog = /*#__PURE__*/forwardRef(function Dialog(props, ref) {
33
33
  var initialChildren = props.children,
34
34
  _props$closeOnEscape = props.closeOnEscape,
35
35
  closeOnEscape = _props$closeOnEscape === void 0 ? true : _props$closeOnEscape,