@leaflink/stash 49.4.1 → 50.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. package/assets/fonts/sofia/SofiaProMedium.otf +0 -0
  2. package/assets/fonts/sofia/SofiaProRegular.otf +0 -0
  3. package/assets/fonts/sofia/SofiaProSemiBold.otf +0 -0
  4. package/dist/Accordion.js +25 -28
  5. package/dist/Accordion.js.map +1 -1
  6. package/dist/Accordion.vue.d.ts +16 -16
  7. package/dist/ActionsDropdown.js +14 -26
  8. package/dist/ActionsDropdown.js.map +1 -1
  9. package/dist/ActionsDropdown.vue.d.ts +12 -12
  10. package/dist/AddressSelect.js +22 -47
  11. package/dist/AddressSelect.js.map +1 -1
  12. package/dist/AddressSelect.vue.d.ts +45 -45
  13. package/dist/Alert.js +4 -6
  14. package/dist/Alert.js.map +1 -1
  15. package/dist/Alert.vue.d.ts +18 -18
  16. package/dist/AppNavigationItem.js +16 -19
  17. package/dist/AppNavigationItem.js.map +1 -1
  18. package/dist/AppNavigationItem.vue.d.ts +4 -4
  19. package/dist/AppSidebar.js +27 -28
  20. package/dist/AppSidebar.js.map +1 -1
  21. package/dist/AppSidebar.vue.d.ts +7 -7
  22. package/dist/AppTopbar.js +12 -17
  23. package/dist/AppTopbar.js.map +1 -1
  24. package/dist/AppTopbar.vue.d.ts +8 -8
  25. package/dist/Avatar.js +1 -1
  26. package/dist/Avatar.vue.d.ts +22 -22
  27. package/dist/Backdrop.js +1 -1
  28. package/dist/Backdrop.vue.d.ts +1 -1
  29. package/dist/Badge.js +1 -1
  30. package/dist/Badge.js.map +1 -1
  31. package/dist/Badge.vue.d.ts +36 -36
  32. package/dist/Box.js +2 -3
  33. package/dist/Box.js.map +1 -1
  34. package/dist/Box.vue.d.ts +12 -12
  35. package/dist/{Box.vue_vue_type_script_setup_true_lang-69e5176b.js → Box.vue_vue_type_script_setup_true_lang-DgJHq-09.js} +1 -1
  36. package/dist/{Box.vue_vue_type_script_setup_true_lang-69e5176b.js.map → Box.vue_vue_type_script_setup_true_lang-DgJHq-09.js.map} +1 -1
  37. package/dist/Button.js +40 -27
  38. package/dist/Button.js.map +1 -1
  39. package/dist/Button.vue.d.ts +34 -27
  40. package/dist/ButtonGroup.js +1 -1
  41. package/dist/ButtonGroup.vue.d.ts +14 -14
  42. package/dist/Card.vue.d.ts +3 -3
  43. package/dist/CardContent.js +1 -1
  44. package/dist/CardContent.vue.d.ts +1 -1
  45. package/dist/CardFooter.js +1 -1
  46. package/dist/CardFooter.vue.d.ts +1 -1
  47. package/dist/CardMedia.js +11 -14
  48. package/dist/CardMedia.js.map +1 -1
  49. package/dist/Carousel.js +179 -180
  50. package/dist/Carousel.js.map +1 -1
  51. package/dist/Carousel.vue.d.ts +33 -11
  52. package/dist/Checkbox.js +38 -35
  53. package/dist/Checkbox.js.map +1 -1
  54. package/dist/Checkbox.vue.d.ts +31 -31
  55. package/dist/ChevronToggle.js +2 -10
  56. package/dist/ChevronToggle.js.map +1 -1
  57. package/dist/ChevronToggle.vue.d.ts +5 -5
  58. package/dist/{ChevronToggle.vue_vue_type_script_setup_true_lang-fcdf0c19.js → ChevronToggle.vue_vue_type_script_setup_true_lang-DuvluoTi.js} +1 -1
  59. package/dist/{ChevronToggle.vue_vue_type_script_setup_true_lang-fcdf0c19.js.map → ChevronToggle.vue_vue_type_script_setup_true_lang-DuvluoTi.js.map} +1 -1
  60. package/dist/Chip.js +17 -20
  61. package/dist/Chip.js.map +1 -1
  62. package/dist/Chip.vue.d.ts +32 -32
  63. package/dist/ConfirmationCodeInput.js +1 -1
  64. package/dist/ConfirmationCodeInput.js.map +1 -1
  65. package/dist/ConfirmationCodeInput.vue.d.ts +29 -29
  66. package/dist/ContextSwitcher.js +8 -14
  67. package/dist/ContextSwitcher.js.map +1 -1
  68. package/dist/ContextSwitcher.vue.d.ts +32 -32
  69. package/dist/Copy.js +23 -34
  70. package/dist/Copy.js.map +1 -1
  71. package/dist/Copy.vue.d.ts +9 -9
  72. package/dist/CurrencyInput.js +117 -128
  73. package/dist/CurrencyInput.js.map +1 -1
  74. package/dist/CurrencyInput.vue.d.ts +26 -21
  75. package/dist/CustomRender.vue.d.ts +12 -1
  76. package/dist/DataView.js +70 -73
  77. package/dist/DataView.js.map +1 -1
  78. package/dist/{DataView.vue_used_vue_type_style_index_0_lang.module-5c180dba.js → DataView.keys-C7eaZg2G.js} +5 -8
  79. package/dist/DataView.keys-C7eaZg2G.js.map +1 -0
  80. package/dist/DataView.vue.d.ts +51 -51
  81. package/dist/DataViewFilters.js +76 -90
  82. package/dist/DataViewFilters.js.map +1 -1
  83. package/dist/{DataViewFilters.keys-c80ffabe.js → DataViewFilters.keys-BLu07FiP.js} +1 -1
  84. package/dist/{DataViewFilters.keys-c80ffabe.js.map → DataViewFilters.keys-BLu07FiP.js.map} +1 -1
  85. package/dist/DataViewFilters.vue.d.ts +39 -39
  86. package/dist/DataViewSortButton.js +30 -43
  87. package/dist/DataViewSortButton.js.map +1 -1
  88. package/dist/DataViewSortButton.vue.d.ts +3 -3
  89. package/dist/DataViewToolbar.js +27 -36
  90. package/dist/DataViewToolbar.js.map +1 -1
  91. package/dist/DataViewToolbar.vue.d.ts +17 -17
  92. package/dist/DatePicker.js +649 -662
  93. package/dist/DatePicker.js.map +1 -1
  94. package/dist/DatePicker.vue.d.ts +73 -73
  95. package/dist/DescriptionList.js +1 -1
  96. package/dist/{DescriptionList.keys-c906ce05.js → DescriptionList.keys-BHlHYV6b.js} +1 -1
  97. package/dist/{DescriptionList.keys-c906ce05.js.map → DescriptionList.keys-BHlHYV6b.js.map} +1 -1
  98. package/dist/DescriptionList.vue.d.ts +6 -6
  99. package/dist/DescriptionListDetail.js +1 -1
  100. package/dist/DescriptionListDetail.vue.d.ts +1 -1
  101. package/dist/DescriptionListGroup.js +1 -1
  102. package/dist/DescriptionListGroup.vue.d.ts +1 -1
  103. package/dist/DescriptionListTerm.js +1 -1
  104. package/dist/DescriptionListTerm.vue.d.ts +1 -1
  105. package/dist/Dialog.js +26 -30
  106. package/dist/Dialog.js.map +1 -1
  107. package/dist/Dialog.vue.d.ts +34 -34
  108. package/dist/Divider.js +1 -1
  109. package/dist/Divider.js.map +1 -1
  110. package/dist/Divider.vue.d.ts +1 -1
  111. package/dist/Dropdown.js +21 -28
  112. package/dist/Dropdown.js.map +1 -1
  113. package/dist/Dropdown.vue.d.ts +28 -28
  114. package/dist/EmptyState.js +32 -33
  115. package/dist/EmptyState.js.map +1 -1
  116. package/dist/EmptyState.vue.d.ts +36 -36
  117. package/dist/Expand.js +2 -3
  118. package/dist/Expand.js.map +1 -1
  119. package/dist/Expand.vue.d.ts +14 -14
  120. package/dist/{Expand.vue_vue_type_script_setup_true_lang-0f236267.js → Expand.vue_vue_type_script_setup_true_lang-D0fSAtHr.js} +1 -1
  121. package/dist/{Expand.vue_vue_type_script_setup_true_lang-0f236267.js.map → Expand.vue_vue_type_script_setup_true_lang-D0fSAtHr.js.map} +1 -1
  122. package/dist/Field.js +2 -7
  123. package/dist/Field.js.map +1 -1
  124. package/dist/Field.vue.d.ts +30 -30
  125. package/dist/{Field.vue_vue_type_script_setup_true_lang-fded4f75.js → Field.vue_vue_type_script_setup_true_lang-DjxUvSRF.js} +2 -2
  126. package/dist/{Field.vue_vue_type_script_setup_true_lang-fded4f75.js.map → Field.vue_vue_type_script_setup_true_lang-DjxUvSRF.js.map} +1 -1
  127. package/dist/FileUpload.js +58 -57
  128. package/dist/FileUpload.js.map +1 -1
  129. package/dist/FileUpload.vue.d.ts +28 -28
  130. package/dist/FilterChip.js +12 -17
  131. package/dist/FilterChip.js.map +1 -1
  132. package/dist/FilterChip.vue.d.ts +19 -19
  133. package/dist/FilterDrawerItem.js +24 -30
  134. package/dist/FilterDrawerItem.js.map +1 -1
  135. package/dist/FilterDrawerItem.vue.d.ts +2 -2
  136. package/dist/FilterDropdown.js +41 -57
  137. package/dist/FilterDropdown.js.map +1 -1
  138. package/dist/FilterDropdown.vue.d.ts +9 -9
  139. package/dist/FilterSelect.js +36 -45
  140. package/dist/FilterSelect.js.map +1 -1
  141. package/dist/FilterSelect.vue.d.ts +5 -5
  142. package/dist/Filters.js +60 -96
  143. package/dist/Filters.js.map +1 -1
  144. package/dist/Filters.vue.d.ts +2005 -2294
  145. package/dist/HttpError.js +16 -23
  146. package/dist/HttpError.js.map +1 -1
  147. package/dist/HttpError.vue.d.ts +18 -18
  148. package/dist/Icon.js +27 -22
  149. package/dist/Icon.js.map +1 -1
  150. package/dist/Icon.vue.d.ts +13 -13
  151. package/dist/IconLabel.js +9 -12
  152. package/dist/IconLabel.js.map +1 -1
  153. package/dist/IconLabel.vue.d.ts +17 -17
  154. package/dist/Illustration.js +8 -11
  155. package/dist/Illustration.js.map +1 -1
  156. package/dist/Illustration.vue.d.ts +21 -21
  157. package/dist/{Illustration.vue_vue_type_script_setup_true_lang-e26c3841.js → Illustration.vue_vue_type_script_setup_true_lang-C3qG3Ty6.js} +2 -2
  158. package/dist/{Illustration.vue_vue_type_script_setup_true_lang-e26c3841.js.map → Illustration.vue_vue_type_script_setup_true_lang-C3qG3Ty6.js.map} +1 -1
  159. package/dist/Image.js.map +1 -1
  160. package/dist/Image.vue.d.ts +18 -18
  161. package/dist/InlineEdit.js +19 -30
  162. package/dist/InlineEdit.js.map +1 -1
  163. package/dist/InlineEdit.vue.d.ts +26 -26
  164. package/dist/Input.js +58 -64
  165. package/dist/Input.js.map +1 -1
  166. package/dist/Input.vue.d.ts +44 -36
  167. package/dist/InputOptions.js +66 -93
  168. package/dist/InputOptions.js.map +1 -1
  169. package/dist/InputOptions.vue.d.ts +66 -58
  170. package/dist/IntegrationIcon.js +2 -2
  171. package/dist/IntegrationIcon.js.map +1 -1
  172. package/dist/IntegrationIcon.vue.d.ts +12 -12
  173. package/dist/Label.js +2 -5
  174. package/dist/Label.js.map +1 -1
  175. package/dist/Label.vue.d.ts +17 -17
  176. package/dist/{Label.vue_vue_type_script_setup_true_lang-b6ba2f02.js → Label.vue_vue_type_script_setup_true_lang-C4JKdqvC.js} +1 -1
  177. package/dist/{Label.vue_vue_type_script_setup_true_lang-b6ba2f02.js.map → Label.vue_vue_type_script_setup_true_lang-C4JKdqvC.js.map} +1 -1
  178. package/dist/LicenseChip.js +10 -16
  179. package/dist/LicenseChip.js.map +1 -1
  180. package/dist/LicenseChip.vue.d.ts +3 -3
  181. package/dist/ListItem.js +5 -8
  182. package/dist/ListItem.js.map +1 -1
  183. package/dist/ListItem.vue.d.ts +275 -225
  184. package/dist/ListItemCell.js +1 -1
  185. package/dist/ListItemCell.js.map +1 -1
  186. package/dist/ListItemCell.vue.d.ts +13 -2
  187. package/dist/ListView.js +57 -101
  188. package/dist/ListView.js.map +1 -1
  189. package/dist/ListView.vue.d.ts +5185 -5430
  190. package/dist/Loading.js +12 -10
  191. package/dist/Loading.js.map +1 -1
  192. package/dist/Loading.vue.d.ts +1 -1
  193. package/dist/Logo.js +2 -4
  194. package/dist/Logo.js.map +1 -1
  195. package/dist/Logo.vue.d.ts +17 -17
  196. package/dist/{Logo.vue_vue_type_script_setup_true_lang-2a2597cb.js → Logo.vue_vue_type_script_setup_true_lang-BfUU9J9O.js} +1 -1
  197. package/dist/{Logo.vue_vue_type_script_setup_true_lang-2a2597cb.js.map → Logo.vue_vue_type_script_setup_true_lang-BfUU9J9O.js.map} +1 -1
  198. package/dist/Menu.js +1 -1
  199. package/dist/Menu.vue.d.ts +1 -1
  200. package/dist/MenuItem.js +1 -1
  201. package/dist/MenuItem.vue.d.ts +1 -1
  202. package/dist/{MenusPlugin-9288029a.js → MenusPlugin-Bk6UW6o9.js} +1 -1
  203. package/dist/{MenusPlugin-9288029a.js.map → MenusPlugin-Bk6UW6o9.js.map} +1 -1
  204. package/dist/Metric.vue.d.ts +10 -10
  205. package/dist/Modal.js +27 -32
  206. package/dist/Modal.js.map +1 -1
  207. package/dist/Modal.vue.d.ts +42 -42
  208. package/dist/Modals.js +14 -16
  209. package/dist/Modals.js.map +1 -1
  210. package/dist/Modals.vue.d.ts +1 -1
  211. package/dist/ModalsPlugin.js +9 -12
  212. package/dist/ModalsPlugin.js.map +1 -1
  213. package/dist/Module.js +3 -3
  214. package/dist/{Module.keys-2cc7d830.js → Module.keys-CEsrW2f0.js} +1 -1
  215. package/dist/{Module.keys-2cc7d830.js.map → Module.keys-CEsrW2f0.js.map} +1 -1
  216. package/dist/{Module.types-3f78f2a0.js → Module.types-B1FfGGac.js} +1 -1
  217. package/dist/{Module.types-3f78f2a0.js.map → Module.types-B1FfGGac.js.map} +1 -1
  218. package/dist/Module.vue.d.ts +3 -3
  219. package/dist/ModuleContent.js +2 -2
  220. package/dist/ModuleContent.vue.d.ts +1 -1
  221. package/dist/ModuleFooter.js +2 -2
  222. package/dist/ModuleFooter.vue.d.ts +1 -1
  223. package/dist/ModuleHeader.js +3 -3
  224. package/dist/ModuleHeader.vue.d.ts +15 -15
  225. package/dist/ObfuscateText.js +8 -13
  226. package/dist/ObfuscateText.js.map +1 -1
  227. package/dist/ObfuscateText.vue.d.ts +18 -18
  228. package/dist/PageContent.js +1 -1
  229. package/dist/PageContent.vue.d.ts +1 -1
  230. package/dist/PageHeader.js +26 -23
  231. package/dist/PageHeader.js.map +1 -1
  232. package/dist/PageHeader.vue.d.ts +7 -4
  233. package/dist/PageNavigation.js +41 -64
  234. package/dist/PageNavigation.js.map +1 -1
  235. package/dist/PageNavigation.vue.d.ts +10 -10
  236. package/dist/Paginate.js +36 -34
  237. package/dist/Paginate.js.map +1 -1
  238. package/dist/Paginate.vue.d.ts +11 -11
  239. package/dist/PlaidLink.js +3 -5
  240. package/dist/PlaidLink.js.map +1 -1
  241. package/dist/PlaidLink.vue.d.ts +29 -29
  242. package/dist/QuickAction.js +12 -15
  243. package/dist/QuickAction.js.map +1 -1
  244. package/dist/QuickAction.vue.d.ts +1 -1
  245. package/dist/Radio.js +1 -1
  246. package/dist/Radio.js.map +1 -1
  247. package/dist/Radio.vue.d.ts +83 -12
  248. package/dist/RadioGroup.js +41 -45
  249. package/dist/RadioGroup.js.map +1 -1
  250. package/dist/{RadioGroup.keys-974818d6.js → RadioGroup.keys-CqfiKkNz.js} +1 -1
  251. package/dist/{RadioGroup.keys-974818d6.js.map → RadioGroup.keys-CqfiKkNz.js.map} +1 -1
  252. package/dist/RadioGroup.vue.d.ts +30 -30
  253. package/dist/RadioNew.js +2 -2
  254. package/dist/RadioNew.js.map +1 -1
  255. package/dist/RadioNew.vue.d.ts +26 -26
  256. package/dist/RangeInput.js +10 -14
  257. package/dist/RangeInput.js.map +1 -1
  258. package/dist/RangeInput.vue.d.ts +1 -1
  259. package/dist/SearchBar.js +31 -41
  260. package/dist/SearchBar.js.map +1 -1
  261. package/dist/SearchBar.vue.d.ts +22 -22
  262. package/dist/Select.js +66 -78
  263. package/dist/Select.js.map +1 -1
  264. package/dist/Select.vue.d.ts +123 -123
  265. package/dist/SelectStatus.js +47 -69
  266. package/dist/SelectStatus.js.map +1 -1
  267. package/dist/SelectStatus.vue.d.ts +33 -26
  268. package/dist/Skeleton.js +1 -1
  269. package/dist/Skeleton.js.map +1 -1
  270. package/dist/Skeleton.vue.d.ts +9 -9
  271. package/dist/Step.js +10 -14
  272. package/dist/Step.js.map +1 -1
  273. package/dist/Step.vue.d.ts +21 -21
  274. package/dist/Stepper.js +37 -40
  275. package/dist/Stepper.js.map +1 -1
  276. package/dist/Stepper.vue.d.ts +34 -29
  277. package/dist/Switch.js +1 -1
  278. package/dist/Switch.vue.d.ts +23 -23
  279. package/dist/Tab.js +21 -36
  280. package/dist/Tab.js.map +1 -1
  281. package/dist/Table.js +38 -55
  282. package/dist/Table.js.map +1 -1
  283. package/dist/Table.keys-LHQf6FEH.js +7 -0
  284. package/dist/{Table.keys-83e4f09b.js.map → Table.keys-LHQf6FEH.js.map} +1 -1
  285. package/dist/Table.vue.d.ts +36 -36
  286. package/dist/TableCell.js +26 -26
  287. package/dist/TableCell.js.map +1 -1
  288. package/dist/TableCell.vue.d.ts +6 -6
  289. package/dist/TableHeaderCell.js +6 -13
  290. package/dist/TableHeaderCell.js.map +1 -1
  291. package/dist/TableHeaderCell.vue.d.ts +3 -3
  292. package/dist/TableHeaderRow.js +22 -32
  293. package/dist/TableHeaderRow.js.map +1 -1
  294. package/dist/TableHeaderRow.vue.d.ts +8 -8
  295. package/dist/TableRow.js +59 -59
  296. package/dist/TableRow.js.map +1 -1
  297. package/dist/TableRow.vue.d.ts +26 -26
  298. package/dist/Tabs.js +10 -24
  299. package/dist/Tabs.js.map +1 -1
  300. package/dist/Tabs.vue.d.ts +5 -5
  301. package/dist/{Tabs.vue_used_vue_type_style_index_0_lang.module-d7530989.js → Tabs.vue_vue_type_script_setup_true_lang-l41hWkV4.js} +31 -34
  302. package/dist/Tabs.vue_vue_type_script_setup_true_lang-l41hWkV4.js.map +1 -0
  303. package/dist/TextEditor.js +1269 -1364
  304. package/dist/TextEditor.js.map +1 -1
  305. package/dist/TextEditor.vue.d.ts +46 -46
  306. package/dist/Textarea.js +30 -31
  307. package/dist/Textarea.js.map +1 -1
  308. package/dist/Textarea.vue.d.ts +34 -26
  309. package/dist/Timeline.js +9 -10
  310. package/dist/Timeline.js.map +1 -1
  311. package/dist/Timeline.vue.d.ts +6 -6
  312. package/dist/TimelineItem.js +1 -1
  313. package/dist/TimelineItem.vue.d.ts +1 -1
  314. package/dist/Toast.js +5 -9
  315. package/dist/Toast.js.map +1 -1
  316. package/dist/Toast.vue.d.ts +3 -3
  317. package/dist/Toasts.js +15 -25
  318. package/dist/Toasts.js.map +1 -1
  319. package/dist/Toasts.vue.d.ts +1 -1
  320. package/dist/ToastsPlugin.js +11 -23
  321. package/dist/ToastsPlugin.js.map +1 -1
  322. package/dist/Tooltip.js +1 -1
  323. package/dist/Tooltip.js.map +1 -1
  324. package/dist/Tooltip.vue.d.ts +15 -15
  325. package/dist/{_commonjsHelpers-10dfc225.js → _commonjsHelpers-DaMA6jEr.js} +1 -1
  326. package/dist/_commonjsHelpers-DaMA6jEr.js.map +1 -0
  327. package/dist/{_plugin-vue_export-helper-dad06003.js → _plugin-vue_export-helper-CHgC5LLL.js} +1 -1
  328. package/dist/_plugin-vue_export-helper-CHgC5LLL.js.map +1 -0
  329. package/dist/{colors-8d9b9429.js → colors-DDDVvqfQ.js} +1 -1
  330. package/dist/{colors-8d9b9429.js.map → colors-DDDVvqfQ.js.map} +1 -1
  331. package/dist/components.css +2 -2
  332. package/dist/directives/observe.js.map +1 -1
  333. package/dist/directives/sticky.js.map +1 -1
  334. package/dist/directives/tooltip.js +21 -27
  335. package/dist/directives/tooltip.js.map +1 -1
  336. package/dist/directives/viewable.js +1 -1
  337. package/dist/directives/viewable.js.map +1 -1
  338. package/dist/{floating-ui.vue-8d7f7932.js → floating-ui.vue-BmfQDqE-.js} +2 -3
  339. package/dist/{floating-ui.vue-8d7f7932.js.map → floating-ui.vue-BmfQDqE-.js.map} +1 -1
  340. package/dist/{formatDateTime-a5e70901.js → formatDateTime-C8CYECpd.js} +8 -12
  341. package/dist/{formatDateTime-a5e70901.js.map → formatDateTime-C8CYECpd.js.map} +1 -1
  342. package/dist/{index-9e1095ef.js → index-D6bxWkZ1.js} +2 -3
  343. package/dist/{index-9e1095ef.js.map → index-D6bxWkZ1.js.map} +1 -1
  344. package/dist/index.d.ts +1 -1
  345. package/dist/index.js +90 -112
  346. package/dist/index.js.map +1 -1
  347. package/dist/{isDefined-2ce6cde4.js → isDefined-DzVx0B6k.js} +1 -1
  348. package/dist/{isDefined-2ce6cde4.js.map → isDefined-DzVx0B6k.js.map} +1 -1
  349. package/dist/{isValid-4b2b7a54.js → isValid-DN-HkCoi.js} +1 -1
  350. package/dist/{isValid-4b2b7a54.js.map → isValid-DN-HkCoi.js.map} +1 -1
  351. package/dist/{keys-241d03b7.js → keys-BEdEsanp.js} +1 -1
  352. package/dist/{keys-241d03b7.js.map → keys-BEdEsanp.js.map} +1 -1
  353. package/dist/{keys-7ecef029.js → keys-C8Zfr_By.js} +1 -1
  354. package/dist/{keys-7ecef029.js.map → keys-C8Zfr_By.js.map} +1 -1
  355. package/dist/{misc-76697f61.js → misc-CHQs-G03.js} +1 -1
  356. package/dist/{misc-76697f61.js.map → misc-CHQs-G03.js.map} +1 -1
  357. package/dist/{parseISO-ed4094c1.js → parseISO-wlfIB_QJ.js} +12 -18
  358. package/dist/{parseISO-ed4094c1.js.map → parseISO-wlfIB_QJ.js.map} +1 -1
  359. package/dist/{searchFuzzy-9b74ec4e.js → searchFuzzy-DKooyZM8.js} +110 -149
  360. package/dist/{searchFuzzy-9b74ec4e.js.map → searchFuzzy-DKooyZM8.js.map} +1 -1
  361. package/dist/{statusLevels-a8b041f4.js → statusLevels-D8EgtE_L.js} +1 -1
  362. package/dist/{statusLevels-a8b041f4.js.map → statusLevels-D8EgtE_L.js.map} +1 -1
  363. package/dist/storage.js +8 -15
  364. package/dist/storage.js.map +1 -1
  365. package/dist/tailwind-base.js.map +1 -1
  366. package/dist/{toTimeZone-a2ed6470.js → toTimeZone-CVE1ZmsS.js} +1 -1
  367. package/dist/{toTimeZone-a2ed6470.js.map → toTimeZone-CVE1ZmsS.js.map} +1 -1
  368. package/dist/useDialog.js +7 -7
  369. package/dist/useGoogleMaps.js +18 -28
  370. package/dist/useGoogleMaps.js.map +1 -1
  371. package/dist/useModals.js +1 -2
  372. package/dist/useModals.js.map +1 -1
  373. package/dist/useScriptTag.js.map +1 -1
  374. package/dist/useSearch.js +14 -19
  375. package/dist/useSearch.js.map +1 -1
  376. package/dist/useStepper.js.map +1 -1
  377. package/dist/useValidation.js +1 -1
  378. package/dist/useValidation.js.map +1 -1
  379. package/dist/utils/calculateElementOverflow.js +9 -13
  380. package/dist/utils/calculateElementOverflow.js.map +1 -1
  381. package/dist/utils/colorScheme.js.map +1 -1
  382. package/dist/utils/createQueryString.js +4 -5
  383. package/dist/utils/createQueryString.js.map +1 -1
  384. package/dist/utils/createValidDate.js +2 -2
  385. package/dist/utils/formatDateTime.js +4 -5
  386. package/dist/utils/formatDateTime.js.map +1 -1
  387. package/dist/utils/getContrastingTextColor.js +1 -1
  388. package/dist/utils/getContrastingTextColor.js.map +1 -1
  389. package/dist/utils/helpers.js.map +1 -1
  390. package/dist/utils/i18n.js +25 -26
  391. package/dist/utils/i18n.js.map +1 -1
  392. package/dist/utils/normalizeDate.js +1 -1
  393. package/dist/utils/searchFuzzy.js +3 -10
  394. package/dist/utils/searchFuzzy.js.map +1 -1
  395. package/dist/utils/storage.js +6 -11
  396. package/dist/utils/storage.js.map +1 -1
  397. package/dist/utils/toTimeZone.js +2 -3
  398. package/dist/utils/toTimeZone.js.map +1 -1
  399. package/package.json +13 -14
  400. package/dist/Button.vue_used_vue_type_style_index_0_lang.module-4dabc2a9.js +0 -17
  401. package/dist/Button.vue_used_vue_type_style_index_0_lang.module-4dabc2a9.js.map +0 -1
  402. package/dist/Carousel.types.d.ts +0 -33
  403. package/dist/Carousel.types.js +0 -2
  404. package/dist/Carousel.types.js.map +0 -1
  405. package/dist/Checkbox.vue_used_vue_type_style_index_0_lang.module-fa8d9c06.js +0 -9
  406. package/dist/Checkbox.vue_used_vue_type_style_index_0_lang.module-fa8d9c06.js.map +0 -1
  407. package/dist/DataView.vue_used_vue_type_style_index_0_lang.module-5c180dba.js.map +0 -1
  408. package/dist/EmptyState.vue_used_vue_type_style_index_0_lang.module-f5d89366.js +0 -8
  409. package/dist/EmptyState.vue_used_vue_type_style_index_0_lang.module-f5d89366.js.map +0 -1
  410. package/dist/Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js +0 -11
  411. package/dist/Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js.map +0 -1
  412. package/dist/Loading.vue_used_vue_type_style_index_0_lang.module-ef5a3bc6.js +0 -8
  413. package/dist/Loading.vue_used_vue_type_style_index_0_lang.module-ef5a3bc6.js.map +0 -1
  414. package/dist/Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js +0 -11
  415. package/dist/Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js.map +0 -1
  416. package/dist/Table.keys-83e4f09b.js +0 -27
  417. package/dist/Tabs.vue_used_vue_type_style_index_0_lang.module-d7530989.js.map +0 -1
  418. package/dist/_commonjsHelpers-10dfc225.js.map +0 -1
  419. package/dist/_plugin-vue_export-helper-dad06003.js.map +0 -1
@@ -1,43 +1,46 @@
1
- import { defineComponent as g, useCssModule as h, useSlots as u, computed as f, openBlock as a, createElementBlock as c, normalizeClass as n, unref as s, createElementVNode as l, renderSlot as t, createCommentVNode as i, toDisplayString as _ } from "vue";
2
- import { _ as w } from "./_plugin-vue_export-helper-dad06003.js";
3
- const y = { class: "tw-col-span-full tw-flex tw-items-center lg:tw-col-span-1" }, v = { class: "stash-page-header__title tw-my-0" }, $ = {
1
+ import { defineComponent as g, useCssModule as u, useSlots as h, computed as f, openBlock as t, createElementBlock as s, normalizeClass as n, unref as o, createElementVNode as p, renderSlot as a, createCommentVNode as i, toDisplayString as _ } from "vue";
2
+ import { _ as w } from "./_plugin-vue_export-helper-CHgC5LLL.js";
3
+ const y = { class: "tw-col-span-full tw-flex tw-items-center lg:tw-col-span-1" }, v = {
4
+ key: 0,
5
+ class: "stash-page-header__title tw-my-0"
6
+ }, k = {
4
7
  key: 0,
5
8
  class: "stash-page-header__description tw-mb-0 tw-mt-1.5"
6
- }, k = /* @__PURE__ */ g({
9
+ }, $ = /* @__PURE__ */ g({
7
10
  name: "ll-page-header",
8
11
  __name: "PageHeader",
9
12
  props: {
10
- title: {},
11
- description: { default: "" }
13
+ title: { default: void 0 },
14
+ description: { default: void 0 }
12
15
  },
13
16
  setup(m) {
14
- const d = m, o = h(), r = u(), p = f(() => !!(r["primary-action"] || r["secondary-action"]));
15
- return (e, H) => (a(), c("header", {
16
- class: n(["stash-page-header", [s(o).root, { [s(o).grid]: p.value }]]),
17
+ const c = m, r = u(), l = h(), d = f(() => !!(l["primary-action"] || l["secondary-action"]));
18
+ return (e, H) => (t(), s("header", {
19
+ class: n(["stash-page-header", [o(r).root, { [o(r).grid]: d.value }]]),
17
20
  "data-test": "stash-page-header"
18
21
  }, [
19
- l("div", y, [
20
- s(r).media ? (a(), c("div", {
22
+ p("div", y, [
23
+ o(l).media ? (t(), s("div", {
21
24
  key: 0,
22
- class: n(["stash-page-header__media tw-mr-3 tw-self-center", s(o).mediaTest])
25
+ class: n(["stash-page-header__media tw-mr-3 tw-self-center", o(r).mediaTest])
23
26
  }, [
24
- t(e.$slots, "media")
27
+ a(e.$slots, "media")
25
28
  ], 2)) : i("", !0),
26
- l("div", null, [
27
- t(e.$slots, "title", {}, () => [
28
- l("h1", v, _(d.title), 1)
29
+ p("div", null, [
30
+ a(e.$slots, "title", {}, () => [
31
+ c.title ? (t(), s("h1", v, _(c.title), 1)) : i("", !0)
29
32
  ]),
30
- t(e.$slots, "description", {}, () => [
31
- e.description ? (a(), c("p", $, _(d.description), 1)) : i("", !0)
33
+ a(e.$slots, "description", {}, () => [
34
+ c.description ? (t(), s("p", k, _(c.description), 1)) : i("", !0)
32
35
  ])
33
36
  ])
34
37
  ]),
35
- p.value ? (a(), c("div", {
38
+ d.value ? (t(), s("div", {
36
39
  key: 0,
37
- class: n(["stash-page-header__actions tw-col-span-full tw-flex lg:tw-col-span-1", s(o).actions])
40
+ class: n(["stash-page-header__actions tw-col-span-full tw-flex lg:tw-col-span-1", o(r).actions])
38
41
  }, [
39
- t(e.$slots, "secondary-action"),
40
- t(e.$slots, "primary-action")
42
+ a(e.$slots, "secondary-action"),
43
+ a(e.$slots, "primary-action")
41
44
  ], 2)) : i("", !0)
42
45
  ], 2));
43
46
  }
@@ -48,7 +51,7 @@ const y = { class: "tw-col-span-full tw-flex tw-items-center lg:tw-col-span-1" }
48
51
  "media-test": "_media-test_1gg6c_41"
49
52
  }, E = {
50
53
  $style: B
51
- }, V = /* @__PURE__ */ w(k, [["__cssModules", E]]);
54
+ }, V = /* @__PURE__ */ w($, [["__cssModules", E]]);
52
55
  export {
53
56
  V as default
54
57
  };
@@ -1 +1 @@
1
- {"version":3,"file":"PageHeader.js","sources":["../src/components/PageHeader/PageHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, useCssModule, useSlots } from 'vue';\n\n export interface PageHeaderProps {\n /**\n * The title of the page.\n */\n title: string;\n /**\n * The description of the page.\n */\n description?: string;\n }\n\n defineOptions({\n name: 'll-page-header',\n });\n\n const props = withDefaults(defineProps<PageHeaderProps>(), {\n description: '',\n });\n\n const classes = useCssModule();\n const slots = useSlots();\n\n const hasActions = computed<boolean>(() => !!(slots['primary-action'] || slots['secondary-action']));\n</script>\n\n<template>\n <header\n class=\"stash-page-header\"\n :class=\"[classes.root, { [classes.grid]: hasActions }]\"\n data-test=\"stash-page-header\"\n >\n <div class=\"tw-col-span-full tw-flex tw-items-center lg:tw-col-span-1\">\n <div v-if=\"slots.media\" class=\"stash-page-header__media tw-mr-3 tw-self-center\" :class=\"classes.mediaTest\">\n <!-- @slot Receives a custom media -->\n <slot name=\"media\"></slot>\n </div>\n\n <div>\n <!-- @slot Receives a custom title -->\n <slot name=\"title\">\n <h1 class=\"stash-page-header__title tw-my-0\">{{ props.title }}</h1>\n </slot>\n\n <!-- @slot Receives a custom description -->\n <slot name=\"description\">\n <p v-if=\"description\" class=\"stash-page-header__description tw-mb-0 tw-mt-1.5\">{{ props.description }}</p>\n </slot>\n </div>\n </div>\n\n <div\n v-if=\"hasActions\"\n class=\"stash-page-header__actions tw-col-span-full tw-flex lg:tw-col-span-1\"\n :class=\"classes.actions\"\n >\n <!-- @slot Receives a custom secondary action -->\n <slot name=\"secondary-action\"> </slot>\n <!-- @slot Receives a custom primary action -->\n <slot name=\"primary-action\"> </slot>\n </div>\n </header>\n</template>\n\n<style module>\n .root {\n border-bottom: 0;\n display: grid;\n gap: var(--grid-gutter);\n margin: 0 auto;\n max-width: theme('width.container');\n padding: theme('spacing.6') var(--grid-gutter) theme('spacing.12');\n width: 100%;\n }\n\n @media screen('lg') {\n .root.grid {\n grid-template-columns: repeat(2, 1fr);\n }\n }\n\n .actions {\n align-self: flex-end;\n flex-direction: column-reverse;\n row-gap: var(--grid-gutter);\n }\n\n @media screen('md') {\n .actions {\n column-gap: var(--grid-gutter);\n flex-direction: row;\n row-gap: 0;\n }\n }\n\n @media screen('lg') {\n .actions {\n align-items: flex-end;\n flex-direction: row;\n justify-content: flex-end;\n }\n }\n\n /* max size for media/marketing illustration icons we would be passing to the slot */\n .media-test {\n max-width: 58px;\n max-height: 58px;\n }\n</style>\n"],"names":["props","__props","classes","useCssModule","slots","useSlots","hasActions","computed"],"mappings":";;;;;;;;;;;;;AAkBE,UAAMA,IAAQC,GAIRC,IAAUC,KACVC,IAAQC,KAERC,IAAaC,EAAkB,MAAM,CAAC,EAAEH,EAAM,gBAAgB,KAAKA,EAAM,kBAAkB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PageHeader.js","sources":["../src/components/PageHeader/PageHeader.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, useCssModule, useSlots } from 'vue';\n\n export interface PageHeaderProps {\n /**\n * The title of the page.\n */\n title?: string;\n /**\n * The description of the page.\n */\n description?: string;\n }\n\n defineOptions({\n name: 'll-page-header',\n });\n\n const props = withDefaults(defineProps<PageHeaderProps>(), {\n title: undefined,\n description: undefined,\n });\n\n const classes = useCssModule();\n const slots = useSlots();\n\n const hasActions = computed<boolean>(() => !!(slots['primary-action'] || slots['secondary-action']));\n</script>\n\n<template>\n <header\n class=\"stash-page-header\"\n :class=\"[classes.root, { [classes.grid]: hasActions }]\"\n data-test=\"stash-page-header\"\n >\n <div class=\"tw-col-span-full tw-flex tw-items-center lg:tw-col-span-1\">\n <div v-if=\"slots.media\" class=\"stash-page-header__media tw-mr-3 tw-self-center\" :class=\"classes.mediaTest\">\n <!-- @slot Receives a custom media -->\n <slot name=\"media\"></slot>\n </div>\n\n <div>\n <!-- @slot Receives a custom title -->\n <slot name=\"title\">\n <h1 v-if=\"props.title\" class=\"stash-page-header__title tw-my-0\">{{ props.title }}</h1>\n </slot>\n\n <!-- @slot Receives a custom description -->\n <slot name=\"description\">\n <p v-if=\"props.description\" class=\"stash-page-header__description tw-mb-0 tw-mt-1.5\">\n {{ props.description }}\n </p>\n </slot>\n </div>\n </div>\n\n <div\n v-if=\"hasActions\"\n class=\"stash-page-header__actions tw-col-span-full tw-flex lg:tw-col-span-1\"\n :class=\"classes.actions\"\n >\n <!-- @slot Receives a custom secondary action -->\n <slot name=\"secondary-action\"> </slot>\n <!-- @slot Receives a custom primary action -->\n <slot name=\"primary-action\"> </slot>\n </div>\n </header>\n</template>\n\n<style module>\n .root {\n border-bottom: 0;\n display: grid;\n gap: var(--grid-gutter);\n margin: 0 auto;\n max-width: theme('width.container');\n padding: theme('spacing.6') var(--grid-gutter) theme('spacing.12');\n width: 100%;\n }\n\n @media screen('lg') {\n .root.grid {\n grid-template-columns: repeat(2, 1fr);\n }\n }\n\n .actions {\n align-self: flex-end;\n flex-direction: column-reverse;\n row-gap: var(--grid-gutter);\n }\n\n @media screen('md') {\n .actions {\n column-gap: var(--grid-gutter);\n flex-direction: row;\n row-gap: 0;\n }\n }\n\n @media screen('lg') {\n .actions {\n align-items: flex-end;\n flex-direction: row;\n justify-content: flex-end;\n }\n }\n\n /* max size for media/marketing illustration icons we would be passing to the slot */\n .media-test {\n max-width: 58px;\n max-height: 58px;\n }\n</style>\n"],"names":["props","__props","classes","useCssModule","slots","useSlots","hasActions","computed"],"mappings":";;;;;;;;;;;;;;;;AAkBE,UAAMA,IAAQC,GAKRC,IAAUC,KACVC,IAAQC,KAERC,IAAaC,EAAkB,MAAM,CAAC,EAAEH,EAAM,gBAAgB,KAAKA,EAAM,kBAAkB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -33,11 +33,14 @@ declare type __VLS_WithTemplateSlots<T, S> = T & {
33
33
  };
34
34
 
35
35
  declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PageHeaderProps>, {
36
- description: string;
36
+ title: undefined;
37
+ description: undefined;
37
38
  }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PageHeaderProps>, {
38
- description: string;
39
+ title: undefined;
40
+ description: undefined;
39
41
  }>>> & Readonly<{}>, {
40
- description: string;
42
+ title: string;
43
+ description: string;
41
44
  }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
42
45
  media?(_: {}): any;
43
46
  title?(_: {}): any;
@@ -51,7 +54,7 @@ export declare interface PageHeaderProps {
51
54
  /**
52
55
  * The title of the page.
53
56
  */
54
- title: string;
57
+ title?: string;
55
58
  /**
56
59
  * The description of the page.
57
60
  */
@@ -1,31 +1,13 @@
1
- import { defineComponent as g, ref as m, watch as x, onMounted as I, openBlock as i, createElementBlock as c, createVNode as _, withCtx as f, Fragment as T, renderList as V, createBlock as k, unref as N, createTextVNode as B, toDisplayString as C } from "vue";
2
- import U from "@leaflink/snitch";
1
+ import { defineComponent as g, ref as x, watch as I, onMounted as _, openBlock as u, createElementBlock as i, createVNode as T, withCtx as p, Fragment as V, renderList as k, createBlock as N, unref as B, createTextVNode as C, toDisplayString as U } from "vue";
2
+ import y from "@leaflink/snitch";
3
3
  import s from "lodash-es/kebabCase";
4
- import { useRoute as y, useRouter as P } from "vue-router";
5
- import D from "./Tab.js";
6
- import E from "./Tabs.js";
7
- import "./Badge.js";
8
- import "./_plugin-vue_export-helper-dad06003.js";
9
- import "./Tabs.vue_used_vue_type_style_index_0_lang.module-d7530989.js";
10
- import "lodash-es/debounce";
11
- import "lodash-es/uniqueId";
12
- import "./constants.js";
13
- import "./locale.js";
14
- import "lodash-es/get";
15
- import "./Dropdown.js";
16
- import "./directives/clickoutside.js";
17
- import "./utils/calculateElementOverflow.js";
18
- import "./utils/helpers.js";
19
- import "lodash-es/camelCase";
20
- import "lodash-es/isFinite";
21
- import "lodash-es/isPlainObject";
22
- import "./Icon.js";
23
- import "./index-9e1095ef.js";
24
- import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
25
- const F = {
4
+ import { useRoute as P, useRouter as D } from "vue-router";
5
+ import E from "./Tab.js";
6
+ import F from "./Tabs.js";
7
+ const L = {
26
8
  class: "stash-page-navigation container",
27
9
  "data-test": "stash-page-navigation"
28
- }, oe = /* @__PURE__ */ g({
10
+ }, z = /* @__PURE__ */ g({
29
11
  name: "ll-page-navigation",
30
12
  __name: "PageNavigation",
31
13
  props: {
@@ -35,63 +17,58 @@ const F = {
35
17
  },
36
18
  emits: ["update:modelValue", "change"],
37
19
  setup(v, { emit: h }) {
38
- const r = v, p = h;
39
- r.activeIndex && U.info("The `activeIndex` prop is deprecated. Use `v-model` instead.");
40
- const o = y(), u = P(), d = m("");
41
- function n(t) {
42
- t !== d.value && (d.value = t, p("update:modelValue", t));
20
+ const n = v, c = h;
21
+ n.activeIndex && y.info("The `activeIndex` prop is deprecated. Use `v-model` instead.");
22
+ const r = P(), f = D(), d = x("");
23
+ function o(t) {
24
+ t !== d.value && (d.value = t, c("update:modelValue", t));
43
25
  }
44
- return x(
45
- () => r.modelValue,
26
+ return I(
27
+ () => n.modelValue,
46
28
  (t, e) => {
47
- if (e === t)
48
- return;
49
- const a = r.items.findIndex((l) => s(l.label) === t);
50
- p("change", a), n(t);
29
+ if (e === t) return;
30
+ const a = n.items.findIndex((l) => s(l.label) === t);
31
+ c("change", a), o(t);
51
32
  }
52
- ), I(() => {
53
- if (!r.items.length)
54
- return;
55
- if (r.activeIndex !== void 0) {
56
- const e = r.items[r.activeIndex];
57
- n(s(e.label));
33
+ ), _(() => {
34
+ if (!n.items.length) return;
35
+ if (n.activeIndex !== void 0) {
36
+ const e = n.items[n.activeIndex];
37
+ o(s(e.label));
58
38
  return;
59
39
  }
60
- if (r.modelValue !== d.value) {
61
- n(r.modelValue);
40
+ if (n.modelValue !== d.value) {
41
+ o(n.modelValue);
62
42
  return;
63
43
  }
64
- if (!u)
65
- return;
66
- const t = r.items.find((e) => {
67
- if (e != null && e.disabled || !(e != null && e.to) && !(e != null && e.href))
68
- return;
69
- const { path: a } = u.resolve((e == null ? void 0 : e.to) || (e == null ? void 0 : e.href));
70
- if (a === o.path)
44
+ if (!f) return;
45
+ const t = n.items.find((e) => {
46
+ if (e != null && e.disabled || !(e != null && e.to) && !(e != null && e.href)) return;
47
+ const { path: a } = f.resolve((e == null ? void 0 : e.to) || (e == null ? void 0 : e.href));
48
+ if (a === r.path)
71
49
  return !0;
72
- if (!o.path.includes(a))
73
- return;
74
- const l = (o.path.length - o.path.lastIndexOf("/")) * -1, b = o.path.slice(0, l);
50
+ if (!r.path.includes(a)) return;
51
+ const l = (r.path.length - r.path.lastIndexOf("/")) * -1, b = r.path.slice(0, l);
75
52
  return a === b;
76
53
  });
77
- t && n((t == null ? void 0 : t.value) || s(t.label));
78
- }), (t, e) => (i(), c("nav", F, [
79
- _(E, {
54
+ t && o((t == null ? void 0 : t.value) || s(t.label));
55
+ }), (t, e) => (u(), i("nav", L, [
56
+ T(F, {
80
57
  "active-tab": d.value,
81
- "onUpdate:activeTab": n
58
+ "onUpdate:activeTab": o
82
59
  }, {
83
- default: f(() => [
84
- (i(!0), c(T, null, V(r.items, (a, l) => (i(), k(D, {
60
+ default: p(() => [
61
+ (u(!0), i(V, null, k(n.items, (a, l) => (u(), N(E, {
85
62
  key: a.label,
86
- value: (a == null ? void 0 : a.value) || N(s)(a.label),
63
+ value: (a == null ? void 0 : a.value) || B(s)(a.label),
87
64
  to: a.to,
88
65
  href: a.href,
89
66
  badge: a.badge,
90
67
  disabled: a.disabled,
91
68
  "data-id": l
92
69
  }, {
93
- default: f(() => [
94
- B(C(a.label), 1)
70
+ default: p(() => [
71
+ C(U(a.label), 1)
95
72
  ]),
96
73
  _: 2
97
74
  }, 1032, ["value", "to", "href", "badge", "disabled", "data-id"]))), 128))
@@ -102,6 +79,6 @@ const F = {
102
79
  }
103
80
  });
104
81
  export {
105
- oe as default
82
+ z as default
106
83
  };
107
84
  //# sourceMappingURL=PageNavigation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PageNavigation.js","sources":["../src/components/PageNavigation/PageNavigation.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import logger from '@leaflink/snitch';\n import kebabCase from 'lodash-es/kebabCase';\n import { onMounted, ref, watch } from 'vue';\n import { RouteLocationRaw, useRoute, useRouter } from 'vue-router';\n\n import Tab, { type TabProps } from '../Tab/Tab.vue';\n import Tabs from '../Tabs/Tabs.vue';\n\n defineOptions({\n name: 'll-page-navigation',\n });\n\n export interface NavItem extends Omit<TabProps, 'value'> {\n /**\n * The tab's label\n */\n label: string;\n\n /**\n * The tab's label\n */\n value?: string;\n }\n\n export interface PageNavigationProps {\n /**\n * Index of active tab (zero-based)\n * @deprecated Use v-model instead.\n */\n activeIndex?: number | string;\n\n /**\n * The currently active tab value\n */\n modelValue?: string;\n\n /**\n * Array of tabs. A `tab` is an object containing a `label` and either an `href` | `to`\n */\n items: NavItem[];\n }\n\n const props = withDefaults(defineProps<PageNavigationProps>(), {\n activeIndex: undefined,\n modelValue: '',\n });\n\n const emit = defineEmits<{\n /**\n * Emits the current active nav value\n */\n (e: 'update:modelValue', activeTab: string): void;\n\n /**\n * Emits the current active nav index\n * @deprecated - Use v-model instead.\n */\n (e: 'change', activeNavIndex: number): void;\n }>();\n\n if (props.activeIndex) {\n logger.info('The `activeIndex` prop is deprecated. Use `v-model` instead.');\n }\n\n const route = useRoute();\n const router = useRouter();\n\n // this ref is needed to keep track of the active tab even if v-model is not passed\n const activeTab = ref('');\n\n function onUpdateActiveTab(newActiveTab: string) {\n if (newActiveTab === activeTab.value) return;\n\n activeTab.value = newActiveTab;\n emit('update:modelValue', newActiveTab);\n }\n\n watch(\n () => props.modelValue,\n (newValue, oldValue) => {\n if (oldValue === newValue) return;\n\n // TODO: Remove this once activeIndex is removed\n const activeNavItemIndex = props.items.findIndex((item) => kebabCase(item.label) === newValue);\n emit('change', activeNavItemIndex);\n\n // Forcing updating activeTab when the component is in a keep alive state\n onUpdateActiveTab(newValue);\n },\n );\n\n onMounted(() => {\n if (!props.items.length) return;\n\n // TODO: Remove this once activeIndex is removed\n if (props.activeIndex !== undefined) {\n const activeTabItem = props.items[props.activeIndex];\n\n onUpdateActiveTab(kebabCase(activeTabItem.label));\n\n return;\n }\n\n if (props.modelValue !== activeTab.value) {\n onUpdateActiveTab(props.modelValue);\n return;\n }\n\n if (!router) return;\n\n const itemMatchingRoute = props.items.find((item) => {\n if (item?.disabled || (!item?.to && !item?.href)) return;\n\n const { path } = router.resolve((item?.to as RouteLocationRaw) || (item?.href as string));\n\n if (path === route.path) {\n return true;\n }\n\n if (!route.path.includes(path)) return;\n\n const sliceIndex = (route.path.length - route.path.lastIndexOf('/')) * -1;\n const parentPath = route.path.slice(0, sliceIndex);\n\n return path === parentPath;\n });\n\n if (!itemMatchingRoute) return;\n\n onUpdateActiveTab(itemMatchingRoute?.value || kebabCase(itemMatchingRoute.label));\n });\n</script>\n\n<template>\n <nav class=\"stash-page-navigation container\" data-test=\"stash-page-navigation\">\n <Tabs :active-tab=\"activeTab\" @update:active-tab=\"onUpdateActiveTab\">\n <Tab\n v-for=\"(item, index) in props.items\"\n :key=\"item.label\"\n :value=\"item?.value || kebabCase(item.label)\"\n :to=\"item.to\"\n :href=\"item.href\"\n :badge=\"item.badge\"\n :disabled=\"item.disabled\"\n :data-id=\"index\"\n >\n {{ item.label }}\n </Tab>\n </Tabs>\n </nav>\n</template>\n"],"names":["props","__props","emit","__emit","logger","route","useRoute","router","useRouter","activeTab","ref","onUpdateActiveTab","newActiveTab","watch","newValue","oldValue","activeNavItemIndex","item","kebabCase","onMounted","activeTabItem","itemMatchingRoute","path","sliceIndex","parentPath"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CE,UAAMA,IAAQC,GAKRC,IAAOC;AAab,IAAIH,EAAM,eACRI,EAAO,KAAK,8DAA8D;AAG5E,UAAMC,IAAQC,KACRC,IAASC,KAGTC,IAAYC,EAAI,EAAE;AAExB,aAASC,EAAkBC,GAAsB;AAC/C,MAAIA,MAAiBH,EAAU,UAE/BA,EAAU,QAAQG,GAClBV,EAAK,qBAAqBU,CAAY;AAAA,IACxC;AAEA,WAAAC;AAAA,MACE,MAAMb,EAAM;AAAA,MACZ,CAACc,GAAUC,MAAa;AACtB,YAAIA,MAAaD;AAAU;AAGrB,cAAAE,IAAqBhB,EAAM,MAAM,UAAU,CAACiB,MAASC,EAAUD,EAAK,KAAK,MAAMH,CAAQ;AAC7F,QAAAZ,EAAK,UAAUc,CAAkB,GAGjCL,EAAkBG,CAAQ;AAAA,MAC5B;AAAA,IAAA,GAGFK,EAAU,MAAM;AACV,UAAA,CAACnB,EAAM,MAAM;AAAQ;AAGrB,UAAAA,EAAM,gBAAgB,QAAW;AACnC,cAAMoB,IAAgBpB,EAAM,MAAMA,EAAM,WAAW;AAEjC,QAAAW,EAAAO,EAAUE,EAAc,KAAK,CAAC;AAEhD;AAAA;AAGE,UAAApB,EAAM,eAAeS,EAAU,OAAO;AACxC,QAAAE,EAAkBX,EAAM,UAAU;AAClC;AAAA;AAGF,UAAI,CAACO;AAAQ;AAEb,YAAMc,IAAoBrB,EAAM,MAAM,KAAK,CAACiB,MAAS;AACnD,YAAIA,KAAA,QAAAA,EAAM,YAAa,EAACA,KAAA,QAAAA,EAAM,OAAM,EAACA,KAAA,QAAAA,EAAM;AAAO;AAE5C,cAAA,EAAE,MAAAK,EAAS,IAAAf,EAAO,SAASU,KAAA,gBAAAA,EAAM,QAA4BA,KAAA,gBAAAA,EAAM,KAAe;AAEpF,YAAAK,MAASjB,EAAM;AACV,iBAAA;AAGT,YAAI,CAACA,EAAM,KAAK,SAASiB,CAAI;AAAG;AAE1B,cAAAC,KAAclB,EAAM,KAAK,SAASA,EAAM,KAAK,YAAY,GAAG,KAAK,IACjEmB,IAAanB,EAAM,KAAK,MAAM,GAAGkB,CAAU;AAEjD,eAAOD,MAASE;AAAA,MAAA,CACjB;AAED,MAAKH,KAELV,GAAkBU,KAAA,gBAAAA,EAAmB,UAASH,EAAUG,EAAkB,KAAK,CAAC;AAAA,IAAA,CACjF;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"PageNavigation.js","sources":["../src/components/PageNavigation/PageNavigation.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import logger from '@leaflink/snitch';\n import kebabCase from 'lodash-es/kebabCase';\n import { onMounted, ref, watch } from 'vue';\n import { RouteLocationRaw, useRoute, useRouter } from 'vue-router';\n\n import Tab, { type TabProps } from '../Tab/Tab.vue';\n import Tabs from '../Tabs/Tabs.vue';\n\n defineOptions({\n name: 'll-page-navigation',\n });\n\n export interface NavItem extends Omit<TabProps, 'value'> {\n /**\n * The tab's label\n */\n label: string;\n\n /**\n * The tab's label\n */\n value?: string;\n }\n\n export interface PageNavigationProps {\n /**\n * Index of active tab (zero-based)\n * @deprecated Use v-model instead.\n */\n activeIndex?: number | string;\n\n /**\n * The currently active tab value\n */\n modelValue?: string;\n\n /**\n * Array of tabs. A `tab` is an object containing a `label` and either an `href` | `to`\n */\n items: NavItem[];\n }\n\n const props = withDefaults(defineProps<PageNavigationProps>(), {\n activeIndex: undefined,\n modelValue: '',\n });\n\n const emit = defineEmits<{\n /**\n * Emits the current active nav value\n */\n (e: 'update:modelValue', activeTab: string): void;\n\n /**\n * Emits the current active nav index\n * @deprecated - Use v-model instead.\n */\n (e: 'change', activeNavIndex: number): void;\n }>();\n\n if (props.activeIndex) {\n logger.info('The `activeIndex` prop is deprecated. Use `v-model` instead.');\n }\n\n const route = useRoute();\n const router = useRouter();\n\n // this ref is needed to keep track of the active tab even if v-model is not passed\n const activeTab = ref('');\n\n function onUpdateActiveTab(newActiveTab: string) {\n if (newActiveTab === activeTab.value) return;\n\n activeTab.value = newActiveTab;\n emit('update:modelValue', newActiveTab);\n }\n\n watch(\n () => props.modelValue,\n (newValue, oldValue) => {\n if (oldValue === newValue) return;\n\n // TODO: Remove this once activeIndex is removed\n const activeNavItemIndex = props.items.findIndex((item) => kebabCase(item.label) === newValue);\n emit('change', activeNavItemIndex);\n\n // Forcing updating activeTab when the component is in a keep alive state\n onUpdateActiveTab(newValue);\n },\n );\n\n onMounted(() => {\n if (!props.items.length) return;\n\n // TODO: Remove this once activeIndex is removed\n if (props.activeIndex !== undefined) {\n const activeTabItem = props.items[props.activeIndex];\n\n onUpdateActiveTab(kebabCase(activeTabItem.label));\n\n return;\n }\n\n if (props.modelValue !== activeTab.value) {\n onUpdateActiveTab(props.modelValue);\n return;\n }\n\n if (!router) return;\n\n const itemMatchingRoute = props.items.find((item) => {\n if (item?.disabled || (!item?.to && !item?.href)) return;\n\n const { path } = router.resolve((item?.to as RouteLocationRaw) || (item?.href as string));\n\n if (path === route.path) {\n return true;\n }\n\n if (!route.path.includes(path)) return;\n\n const sliceIndex = (route.path.length - route.path.lastIndexOf('/')) * -1;\n const parentPath = route.path.slice(0, sliceIndex);\n\n return path === parentPath;\n });\n\n if (!itemMatchingRoute) return;\n\n onUpdateActiveTab(itemMatchingRoute?.value || kebabCase(itemMatchingRoute.label));\n });\n</script>\n\n<template>\n <nav class=\"stash-page-navigation container\" data-test=\"stash-page-navigation\">\n <Tabs :active-tab=\"activeTab\" @update:active-tab=\"onUpdateActiveTab\">\n <Tab\n v-for=\"(item, index) in props.items\"\n :key=\"item.label\"\n :value=\"item?.value || kebabCase(item.label)\"\n :to=\"item.to\"\n :href=\"item.href\"\n :badge=\"item.badge\"\n :disabled=\"item.disabled\"\n :data-id=\"index\"\n >\n {{ item.label }}\n </Tab>\n </Tabs>\n </nav>\n</template>\n"],"names":["props","__props","emit","__emit","logger","route","useRoute","router","useRouter","activeTab","ref","onUpdateActiveTab","newActiveTab","watch","newValue","oldValue","activeNavItemIndex","item","kebabCase","onMounted","activeTabItem","itemMatchingRoute","path","sliceIndex","parentPath"],"mappings":";;;;;;;;;;;;;;;;;;;AA2CE,UAAMA,IAAQC,GAKRC,IAAOC;AAab,IAAIH,EAAM,eACRI,EAAO,KAAK,8DAA8D;AAG5E,UAAMC,IAAQC,KACRC,IAASC,KAGTC,IAAYC,EAAI,EAAE;AAExB,aAASC,EAAkBC,GAAsB;AAC3C,MAAAA,MAAiBH,EAAU,UAE/BA,EAAU,QAAQG,GAClBV,EAAK,qBAAqBU,CAAY;AAAA,IACxC;AAEA,WAAAC;AAAA,MACE,MAAMb,EAAM;AAAA,MACZ,CAACc,GAAUC,MAAa;AACtB,YAAIA,MAAaD,EAAU;AAGrB,cAAAE,IAAqBhB,EAAM,MAAM,UAAU,CAACiB,MAASC,EAAUD,EAAK,KAAK,MAAMH,CAAQ;AAC7F,QAAAZ,EAAK,UAAUc,CAAkB,GAGjCL,EAAkBG,CAAQ;AAAA,MAC5B;AAAA,IAAA,GAGFK,EAAU,MAAM;AACV,UAAA,CAACnB,EAAM,MAAM,OAAQ;AAGrB,UAAAA,EAAM,gBAAgB,QAAW;AACnC,cAAMoB,IAAgBpB,EAAM,MAAMA,EAAM,WAAW;AAEjC,QAAAW,EAAAO,EAAUE,EAAc,KAAK,CAAC;AAEhD;AAAA,MACF;AAEI,UAAApB,EAAM,eAAeS,EAAU,OAAO;AACxC,QAAAE,EAAkBX,EAAM,UAAU;AAClC;AAAA,MACF;AAEA,UAAI,CAACO,EAAQ;AAEb,YAAMc,IAAoBrB,EAAM,MAAM,KAAK,CAACiB,MAAS;AACnD,YAAIA,KAAA,QAAAA,EAAM,YAAa,EAACA,KAAA,QAAAA,EAAM,OAAM,EAACA,KAAA,QAAAA,EAAM,MAAO;AAE5C,cAAA,EAAE,MAAAK,EAAS,IAAAf,EAAO,SAASU,KAAA,gBAAAA,EAAM,QAA4BA,KAAA,gBAAAA,EAAM,KAAe;AAEpF,YAAAK,MAASjB,EAAM;AACV,iBAAA;AAGT,YAAI,CAACA,EAAM,KAAK,SAASiB,CAAI,EAAG;AAE1B,cAAAC,KAAclB,EAAM,KAAK,SAASA,EAAM,KAAK,YAAY,GAAG,KAAK,IACjEmB,IAAanB,EAAM,KAAK,MAAM,GAAGkB,CAAU;AAEjD,eAAOD,MAASE;AAAA,MAAA,CACjB;AAED,MAAKH,KAELV,GAAkBU,KAAA,gBAAAA,EAAmB,UAASH,EAAUG,EAAkB,KAAK,CAAC;AAAA,IAAA,CACjF;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -34,20 +34,20 @@ declare type __VLS_WithDefaults<P, D> = {
34
34
  declare type AnchorAttrs = HTMLAnchorElement['download'] | HTMLAnchorElement['hreflang'] | HTMLAnchorElement['ping'] | HTMLAnchorElement['referrerPolicy'] | HTMLAnchorElement['rel'] | HTMLAnchorElement['target'] | HTMLAnchorElement['type'];
35
35
 
36
36
  declare const _default: DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PageNavigationProps>, {
37
- activeIndex: undefined;
38
- modelValue: string;
37
+ activeIndex: undefined;
38
+ modelValue: string;
39
39
  }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
40
- "update:modelValue": (activeTab: string) => void;
41
- change: (activeNavIndex: number) => void;
40
+ "update:modelValue": (activeTab: string) => void;
41
+ change: (activeNavIndex: number) => void;
42
42
  }, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PageNavigationProps>, {
43
- activeIndex: undefined;
44
- modelValue: string;
43
+ activeIndex: undefined;
44
+ modelValue: string;
45
45
  }>>> & Readonly<{
46
- onChange?: ((activeNavIndex: number) => any) | undefined;
47
- "onUpdate:modelValue"?: ((activeTab: string) => any) | undefined;
46
+ onChange?: ((activeNavIndex: number) => any) | undefined;
47
+ "onUpdate:modelValue"?: ((activeTab: string) => any) | undefined;
48
48
  }>, {
49
- modelValue: string;
50
- activeIndex: string | number;
49
+ modelValue: string;
50
+ activeIndex: string | number;
51
51
  }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
52
52
  export default _default;
53
53
 
package/dist/Paginate.js CHANGED
@@ -1,14 +1,10 @@
1
- import { defineComponent as y, useCssModule as S, computed as x, openBlock as r, createElementBlock as i, createElementVNode as c, normalizeClass as o, unref as l, createVNode as f, Fragment as m, renderList as z, createCommentVNode as p, toDisplayString as M } from "vue";
2
- import g from "./Icon.js";
3
- import { s as E } from "./Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js";
4
- import { _ as L } from "./_plugin-vue_export-helper-dad06003.js";
5
- import "lodash-es/uniqueId";
6
- import "./index-9e1095ef.js";
7
- import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
8
- const $ = {
1
+ import { defineComponent as C, useCssModule as w, computed as y, openBlock as i, createElementBlock as l, createElementVNode as c, normalizeClass as o, unref as r, createVNode as g, Fragment as f, renderList as S, createCommentVNode as p, toDisplayString as M } from "vue";
2
+ import h from "./Icon.js";
3
+ import { _ as E } from "./_plugin-vue_export-helper-CHgC5LLL.js";
4
+ const L = {
9
5
  class: "stash-paginate tw-flex tw-justify-center",
10
6
  "data-test": "stash-paginate"
11
- }, N = ["onClick"], V = /* @__PURE__ */ y({
7
+ }, $ = ["onClick"], N = /* @__PURE__ */ C({
12
8
  name: "ll-paginate",
13
9
  __name: "Paginate",
14
10
  props: {
@@ -17,64 +13,64 @@ const $ = {
17
13
  pageSize: { default: 50 }
18
14
  },
19
15
  emits: ["set-page"],
20
- setup(h, { emit: v }) {
21
- const t = h, P = v, n = S(), s = x(() => Math.ceil(t.listLength / t.pageSize));
16
+ setup(_, { emit: m }) {
17
+ const t = _, v = m, n = w(), s = y(() => Math.ceil(t.listLength / t.pageSize));
22
18
  function u(e) {
23
- P("set-page", e);
19
+ v("set-page", e);
24
20
  }
25
- function _() {
21
+ function P() {
26
22
  t.currentPage < s.value && u(t.currentPage + 1);
27
23
  }
28
24
  function b() {
29
25
  t.currentPage > 1 && u(t.currentPage - 1);
30
26
  }
31
- function k(e) {
27
+ function z(e) {
32
28
  const d = Math.abs(t.currentPage - e);
33
29
  return s.value < 10 || e === 1 || e === s.value || t.currentPage < 6 && e < 8 || s.value - t.currentPage < 5 && s.value - e < 7 || d < 3;
34
30
  }
35
- function C(e) {
31
+ function k(e) {
36
32
  return s.value > 9 && t.currentPage > 5 && e === 2;
37
33
  }
38
- function w(e) {
34
+ function x(e) {
39
35
  return s.value > 9 && s.value - t.currentPage > 4 && e === s.value - 1;
40
36
  }
41
- return (e, d) => (r(), i("div", $, [
37
+ return (e, d) => (i(), l("div", L, [
42
38
  c("ul", {
43
- class: o(["stash-paginate__list tw-flex", l(n).pagination]),
39
+ class: o(["stash-paginate__list tw-flex", r(n).pagination]),
44
40
  "data-test": "stash-paginate|list"
45
41
  }, [
46
42
  c("button", {
47
43
  "data-test": "stash-paginate|prev-page",
48
- class: o([l(n).prev, { [l(n)["is-disabled"]]: e.currentPage === 1 }]),
44
+ class: o([r(n).prev, { [r(n)["is-disabled"]]: e.currentPage === 1 }]),
49
45
  onClick: b
50
46
  }, [
51
- f(g, {
47
+ g(h, {
52
48
  size: "small",
53
49
  name: "chevron-left"
54
50
  })
55
51
  ], 2),
56
- (r(!0), i(m, null, z(s.value, (a) => (r(), i(m, null, [
57
- C(a) ? (r(), i("button", {
52
+ (i(!0), l(f, null, S(s.value, (a) => (i(), l(f, null, [
53
+ k(a) ? (i(), l("button", {
58
54
  key: `${a}-ellipsis`,
59
55
  "data-test": "stash-paginate|first-ellipsis"
60
56
  }, " … ")) : p("", !0),
61
- k(a) ? (r(), i("button", {
57
+ z(a) ? (i(), l("button", {
62
58
  key: a,
63
59
  "data-test": "stash-paginate|page-number",
64
- class: o({ [l(n)["is-active"]]: e.currentPage === a }),
65
- onClick: (D) => u(a)
66
- }, M(a), 11, N)) : p("", !0),
67
- w(a) ? (r(), i("button", {
60
+ class: o({ [r(n)["is-active"]]: e.currentPage === a }),
61
+ onClick: (I) => u(a)
62
+ }, M(a), 11, $)) : p("", !0),
63
+ x(a) ? (i(), l("button", {
68
64
  key: `${a}-ellipsis`,
69
65
  "data-test": "stash-paginate|last-ellipsis"
70
66
  }, " … ")) : p("", !0)
71
67
  ], 64))), 256)),
72
68
  c("button", {
73
69
  "data-test": "stash-paginate|next-page",
74
- class: o([l(n).next, { [l(n)["is-disabled"]]: e.currentPage === s.value }]),
75
- onClick: _
70
+ class: o([r(n).next, { [r(n)["is-disabled"]]: e.currentPage === s.value }]),
71
+ onClick: P
76
72
  }, [
77
- f(g, {
73
+ g(h, {
78
74
  size: "small",
79
75
  class: "tw-rotate-180",
80
76
  name: "chevron-left"
@@ -83,10 +79,16 @@ const $ = {
83
79
  ], 2)
84
80
  ]));
85
81
  }
86
- }), B = {
87
- $style: E
88
- }, J = /* @__PURE__ */ L(V, [["__cssModules", B]]);
82
+ }), V = "_pagination_14zhb_2", B = "_prev_14zhb_20", D = "_next_14zhb_25", F = {
83
+ pagination: V,
84
+ prev: B,
85
+ next: D,
86
+ "is-active": "_is-active_14zhb_38",
87
+ "is-disabled": "_is-disabled_14zhb_51"
88
+ }, j = {
89
+ $style: F
90
+ }, H = /* @__PURE__ */ E(N, [["__cssModules", j]]);
89
91
  export {
90
- J as default
92
+ H as default
91
93
  };
92
94
  //# sourceMappingURL=Paginate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Paginate.js","sources":["../src/components/Paginate/Paginate.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n import { computed, useCssModule } from 'vue';\n\n import Icon from '../Icon/Icon.vue';\n\n defineOptions({\n name: 'll-paginate',\n });\n\n export interface PaginateProps {\n /**\n * Current page number\n */\n currentPage?: number;\n /**\n * Total number of items in list\n */\n listLength?: number;\n /**\n * Number of items per page\n */\n pageSize?: number;\n }\n\n const props = withDefaults(defineProps<PaginateProps>(), {\n currentPage: 1,\n listLength: 1,\n pageSize: 50,\n });\n\n const emit = defineEmits<{\n /**\n * Emitted when the page number changes.\n */\n (e: 'set-page', pageNumber: number): void;\n }>();\n\n const classes = useCssModule();\n\n const pages = computed(() => Math.ceil(props.listLength / props.pageSize));\n\n /**\n * Emits current page to list view.\n */\n function updatePage(currentPage: number) {\n emit('set-page', currentPage);\n }\n\n /**\n * Sets current page to next page\n */\n function next() {\n if (props.currentPage < pages.value) {\n updatePage(props.currentPage + 1);\n }\n }\n\n /**\n * Sets current page to previous page\n */\n function prev() {\n if (props.currentPage > 1) {\n updatePage(props.currentPage - 1);\n }\n }\n\n /**\n * Determines whether to show page\n * @returns {boolean} - should show page in pagination component\n */\n function shouldShowPage(page: number): boolean {\n const pageDiff = Math.abs(props.currentPage - page);\n\n if (\n pages.value < 10 ||\n page === 1 ||\n page === pages.value ||\n (props.currentPage < 6 && page < 8) ||\n (pages.value - props.currentPage < 5 && pages.value - page < 7) ||\n pageDiff < 3\n ) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Determines whether to show the leading ellipsis\n * @returns {boolean} should show or not\n */\n function shouldShowFirstEllipsis(page: number): boolean {\n return pages.value > 9 && props.currentPage > 5 && page === 2;\n }\n\n /**\n * Determines whether to show the trailing ellipsis\n * @returns {boolean} should show or not\n */\n function shouldShowLastEllipsis(page: number): boolean {\n return pages.value > 9 && pages.value - props.currentPage > 4 && page === pages.value - 1;\n }\n</script>\n\n<template>\n <div class=\"stash-paginate tw-flex tw-justify-center\" data-test=\"stash-paginate\">\n <ul class=\"stash-paginate__list tw-flex\" :class=\"classes.pagination\" data-test=\"stash-paginate|list\">\n <button\n data-test=\"stash-paginate|prev-page\"\n :class=\"[classes.prev, { [classes['is-disabled']]: currentPage === 1 }]\"\n @click=\"prev\"\n >\n <Icon size=\"small\" name=\"chevron-left\" />\n </button>\n <template v-for=\"page in pages\">\n <button\n v-if=\"shouldShowFirstEllipsis(page)\"\n :key=\"`${page}-ellipsis`\"\n data-test=\"stash-paginate|first-ellipsis\"\n >\n &#x2026;\n </button>\n <button\n v-if=\"shouldShowPage(page)\"\n :key=\"page\"\n data-test=\"stash-paginate|page-number\"\n :class=\"{ [classes['is-active']]: currentPage === page }\"\n @click=\"updatePage(page)\"\n >\n {{ page }}\n </button>\n <button v-if=\"shouldShowLastEllipsis(page)\" :key=\"`${page}-ellipsis`\" data-test=\"stash-paginate|last-ellipsis\">\n &#x2026;\n </button>\n </template>\n <button\n data-test=\"stash-paginate|next-page\"\n :class=\"[classes.next, { [classes['is-disabled']]: currentPage === pages }]\"\n @click=\"next\"\n >\n <Icon size=\"small\" class=\"tw-rotate-180\" name=\"chevron-left\" />\n </button>\n </ul>\n </div>\n</template>\n\n<style module>\n .pagination {\n /* Todo: We shouldn't really be making assumptions about the outer spacing of the pagination component */\n margin-top: theme('spacing.12');\n z-index: 0;\n\n a,\n button {\n @apply tw-border tw-border-solid tw-border-ice-200;\n align-items: center;\n background-color: theme('colors.white');\n color: var(--color-blue-500);\n cursor: pointer;\n display: flex;\n height: theme('height.input');\n justify-content: center;\n margin: 0 0 0 -1px;\n width: theme('height.input');\n\n &.prev {\n border-bottom-left-radius: theme('borderRadius.DEFAULT');\n border-top-left-radius: theme('borderRadius.DEFAULT');\n }\n\n &.next {\n border-bottom-right-radius: theme('borderRadius.DEFAULT');\n border-top-right-radius: theme('borderRadius.DEFAULT');\n }\n\n &:focus {\n outline: none;\n }\n\n &:hover {\n text-decoration: none;\n }\n\n &.is-active {\n background-color: var(--color-blue-500);\n color: theme('colors.white');\n pointer-events: none;\n z-index: theme('zIndex.control');\n }\n\n &:hover,\n &.is-active {\n @apply tw-border tw-border-solid tw-border-blue-500;\n position: relative;\n }\n\n &.is-disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n }\n</style>\n"],"names":["props","__props","emit","__emit","classes","useCssModule","pages","computed","updatePage","currentPage","next","prev","shouldShowPage","page","pageDiff","shouldShowFirstEllipsis","shouldShowLastEllipsis"],"mappings":";;;;;;;;;;;;;;;;;;;;AAwBE,UAAMA,IAAQC,GAMRC,IAAOC,GAOPC,IAAUC,KAEVC,IAAQC,EAAS,MAAM,KAAK,KAAKP,EAAM,aAAaA,EAAM,QAAQ,CAAC;AAKzE,aAASQ,EAAWC,GAAqB;AACvC,MAAAP,EAAK,YAAYO,CAAW;AAAA,IAC9B;AAKA,aAASC,IAAO;AACV,MAAAV,EAAM,cAAcM,EAAM,SACjBE,EAAAR,EAAM,cAAc,CAAC;AAAA,IAEpC;AAKA,aAASW,IAAO;AACV,MAAAX,EAAM,cAAc,KACXQ,EAAAR,EAAM,cAAc,CAAC;AAAA,IAEpC;AAMA,aAASY,EAAeC,GAAuB;AAC7C,YAAMC,IAAW,KAAK,IAAId,EAAM,cAAca,CAAI;AAGhD,aAAAP,EAAM,QAAQ,MACdO,MAAS,KACTA,MAASP,EAAM,SACdN,EAAM,cAAc,KAAKa,IAAO,KAChCP,EAAM,QAAQN,EAAM,cAAc,KAAKM,EAAM,QAAQO,IAAO,KAC7DC,IAAW;AAAA,IAMf;AAMA,aAASC,EAAwBF,GAAuB;AACtD,aAAOP,EAAM,QAAQ,KAAKN,EAAM,cAAc,KAAKa,MAAS;AAAA,IAC9D;AAMA,aAASG,EAAuBH,GAAuB;AAC9C,aAAAP,EAAM,QAAQ,KAAKA,EAAM,QAAQN,EAAM,cAAc,KAAKa,MAASP,EAAM,QAAQ;AAAA,IAC1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Paginate.js","sources":["../src/components/Paginate/Paginate.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n import { computed, useCssModule } from 'vue';\n\n import Icon from '../Icon/Icon.vue';\n\n defineOptions({\n name: 'll-paginate',\n });\n\n export interface PaginateProps {\n /**\n * Current page number\n */\n currentPage?: number;\n /**\n * Total number of items in list\n */\n listLength?: number;\n /**\n * Number of items per page\n */\n pageSize?: number;\n }\n\n const props = withDefaults(defineProps<PaginateProps>(), {\n currentPage: 1,\n listLength: 1,\n pageSize: 50,\n });\n\n const emit = defineEmits<{\n /**\n * Emitted when the page number changes.\n */\n (e: 'set-page', pageNumber: number): void;\n }>();\n\n const classes = useCssModule();\n\n const pages = computed(() => Math.ceil(props.listLength / props.pageSize));\n\n /**\n * Emits current page to list view.\n */\n function updatePage(currentPage: number) {\n emit('set-page', currentPage);\n }\n\n /**\n * Sets current page to next page\n */\n function next() {\n if (props.currentPage < pages.value) {\n updatePage(props.currentPage + 1);\n }\n }\n\n /**\n * Sets current page to previous page\n */\n function prev() {\n if (props.currentPage > 1) {\n updatePage(props.currentPage - 1);\n }\n }\n\n /**\n * Determines whether to show page\n * @returns {boolean} - should show page in pagination component\n */\n function shouldShowPage(page: number): boolean {\n const pageDiff = Math.abs(props.currentPage - page);\n\n if (\n pages.value < 10 ||\n page === 1 ||\n page === pages.value ||\n (props.currentPage < 6 && page < 8) ||\n (pages.value - props.currentPage < 5 && pages.value - page < 7) ||\n pageDiff < 3\n ) {\n return true;\n }\n\n return false;\n }\n\n /**\n * Determines whether to show the leading ellipsis\n * @returns {boolean} should show or not\n */\n function shouldShowFirstEllipsis(page: number): boolean {\n return pages.value > 9 && props.currentPage > 5 && page === 2;\n }\n\n /**\n * Determines whether to show the trailing ellipsis\n * @returns {boolean} should show or not\n */\n function shouldShowLastEllipsis(page: number): boolean {\n return pages.value > 9 && pages.value - props.currentPage > 4 && page === pages.value - 1;\n }\n</script>\n\n<template>\n <div class=\"stash-paginate tw-flex tw-justify-center\" data-test=\"stash-paginate\">\n <ul class=\"stash-paginate__list tw-flex\" :class=\"classes.pagination\" data-test=\"stash-paginate|list\">\n <button\n data-test=\"stash-paginate|prev-page\"\n :class=\"[classes.prev, { [classes['is-disabled']]: currentPage === 1 }]\"\n @click=\"prev\"\n >\n <Icon size=\"small\" name=\"chevron-left\" />\n </button>\n <template v-for=\"page in pages\">\n <button\n v-if=\"shouldShowFirstEllipsis(page)\"\n :key=\"`${page}-ellipsis`\"\n data-test=\"stash-paginate|first-ellipsis\"\n >\n &#x2026;\n </button>\n <button\n v-if=\"shouldShowPage(page)\"\n :key=\"page\"\n data-test=\"stash-paginate|page-number\"\n :class=\"{ [classes['is-active']]: currentPage === page }\"\n @click=\"updatePage(page)\"\n >\n {{ page }}\n </button>\n <button v-if=\"shouldShowLastEllipsis(page)\" :key=\"`${page}-ellipsis`\" data-test=\"stash-paginate|last-ellipsis\">\n &#x2026;\n </button>\n </template>\n <button\n data-test=\"stash-paginate|next-page\"\n :class=\"[classes.next, { [classes['is-disabled']]: currentPage === pages }]\"\n @click=\"next\"\n >\n <Icon size=\"small\" class=\"tw-rotate-180\" name=\"chevron-left\" />\n </button>\n </ul>\n </div>\n</template>\n\n<style module>\n .pagination {\n /* Todo: We shouldn't really be making assumptions about the outer spacing of the pagination component */\n margin-top: theme('spacing.12');\n z-index: 0;\n\n a,\n button {\n @apply tw-border tw-border-solid tw-border-ice-200;\n align-items: center;\n background-color: theme('colors.white');\n color: var(--color-blue-500);\n cursor: pointer;\n display: flex;\n height: theme('height.input');\n justify-content: center;\n margin: 0 0 0 -1px;\n width: theme('height.input');\n\n &.prev {\n border-bottom-left-radius: theme('borderRadius.DEFAULT');\n border-top-left-radius: theme('borderRadius.DEFAULT');\n }\n\n &.next {\n border-bottom-right-radius: theme('borderRadius.DEFAULT');\n border-top-right-radius: theme('borderRadius.DEFAULT');\n }\n\n &:focus {\n outline: none;\n }\n\n &:hover {\n text-decoration: none;\n }\n\n &.is-active {\n background-color: var(--color-blue-500);\n color: theme('colors.white');\n pointer-events: none;\n z-index: theme('zIndex.control');\n }\n\n &:hover,\n &.is-active {\n @apply tw-border tw-border-solid tw-border-blue-500;\n position: relative;\n }\n\n &.is-disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n }\n }\n</style>\n"],"names":["props","__props","emit","__emit","classes","useCssModule","pages","computed","updatePage","currentPage","next","prev","shouldShowPage","page","pageDiff","shouldShowFirstEllipsis","shouldShowLastEllipsis"],"mappings":";;;;;;;;;;;;;;;;AAwBE,UAAMA,IAAQC,GAMRC,IAAOC,GAOPC,IAAUC,KAEVC,IAAQC,EAAS,MAAM,KAAK,KAAKP,EAAM,aAAaA,EAAM,QAAQ,CAAC;AAKzE,aAASQ,EAAWC,GAAqB;AACvC,MAAAP,EAAK,YAAYO,CAAW;AAAA,IAC9B;AAKA,aAASC,IAAO;AACV,MAAAV,EAAM,cAAcM,EAAM,SACjBE,EAAAR,EAAM,cAAc,CAAC;AAAA,IAEpC;AAKA,aAASW,IAAO;AACV,MAAAX,EAAM,cAAc,KACXQ,EAAAR,EAAM,cAAc,CAAC;AAAA,IAEpC;AAMA,aAASY,EAAeC,GAAuB;AAC7C,YAAMC,IAAW,KAAK,IAAId,EAAM,cAAca,CAAI;AAGhD,aAAAP,EAAM,QAAQ,MACdO,MAAS,KACTA,MAASP,EAAM,SACdN,EAAM,cAAc,KAAKa,IAAO,KAChCP,EAAM,QAAQN,EAAM,cAAc,KAAKM,EAAM,QAAQO,IAAO,KAC7DC,IAAW;AAAA,IAMf;AAMA,aAASC,EAAwBF,GAAuB;AACtD,aAAOP,EAAM,QAAQ,KAAKN,EAAM,cAAc,KAAKa,MAAS;AAAA,IAC9D;AAMA,aAASG,EAAuBH,GAAuB;AAC9C,aAAAP,EAAM,QAAQ,KAAKA,EAAM,QAAQN,EAAM,cAAc,KAAKa,MAASP,EAAM,QAAQ;AAAA,IAC1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -27,21 +27,21 @@ declare type __VLS_WithDefaults<P, D> = {
27
27
  };
28
28
 
29
29
  declare const _default: DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PaginateProps>, {
30
- currentPage: number;
31
- listLength: number;
32
- pageSize: number;
30
+ currentPage: number;
31
+ listLength: number;
32
+ pageSize: number;
33
33
  }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
34
- "set-page": (pageNumber: number) => void;
34
+ "set-page": (pageNumber: number) => void;
35
35
  }, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<PaginateProps>, {
36
- currentPage: number;
37
- listLength: number;
38
- pageSize: number;
36
+ currentPage: number;
37
+ listLength: number;
38
+ pageSize: number;
39
39
  }>>> & Readonly<{
40
- "onSet-page"?: ((pageNumber: number) => any) | undefined;
40
+ "onSet-page"?: ((pageNumber: number) => any) | undefined;
41
41
  }>, {
42
- currentPage: number;
43
- listLength: number;
44
- pageSize: number;
42
+ currentPage: number;
43
+ listLength: number;
44
+ pageSize: number;
45
45
  }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
46
46
  export default _default;
47
47
 
package/dist/PlaidLink.js CHANGED
@@ -1,8 +1,7 @@
1
1
  import { defineComponent as y, computed as h, ref as c, openBlock as E, createElementBlock as w, renderSlot as x } from "vue";
2
2
  import s from "@leaflink/snitch";
3
3
  import P from "./usePlaidLink.js";
4
- import "./useScriptTag.js";
5
- const K = /* @__PURE__ */ y({
4
+ const L = /* @__PURE__ */ y({
6
5
  __name: "PlaidLink",
7
6
  props: {
8
7
  initScriptUrl: { default: "https://cdn.plaid.com/link/v2/stable/link-initialize.js" },
@@ -41,8 +40,7 @@ const K = /* @__PURE__ */ y({
41
40
  extra: { error: e }
42
41
  }), n("error", o);
43
42
  }
44
- else
45
- t.token && (a.value.token = t.token);
43
+ else t.token && (a.value.token = t.token);
46
44
  if (!a.value.token) {
47
45
  const e = new Error("Plaid: link token not found");
48
46
  s.error(e, { tags: { plaid: !0 } }), n("error", e), r.value = !1;
@@ -65,6 +63,6 @@ const K = /* @__PURE__ */ y({
65
63
  }
66
64
  });
67
65
  export {
68
- K as default
66
+ L as default
69
67
  };
70
68
  //# sourceMappingURL=PlaidLink.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlaidLink.js","sources":["../src/components/PlaidLink/PlaidLink.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import logger from '@leaflink/snitch';\n import { computed, ref } from 'vue';\n\n import { LinkTokenResponse, Plaid } from '../../../types/plaid';\n import usePlaidLink from '../../composables/usePlaidLink/usePlaidLink';\n\n export interface PlaidLinkProps {\n /**\n * @deprecated Plaid does not support other URLs for loading its SDK\n * Plaid initialization script url to be used\n */\n initScriptUrl?: string;\n\n /**\n * Key to be used in session storage for OAuth flow\n */\n storageKey?: string;\n\n /**\n * Url to be used to redirect the user from the OAuth flow\n */\n returnTo?: string;\n\n /**\n * Plaid link token\n */\n token?: string;\n\n /**\n * Plaid environment to connect\n */\n env?: Plaid.Environment;\n\n /**\n * Function that returns a link token object to be used with Plaid.\n * `link_token` takes precedence over `token` if informed.\n */\n createToken?: () => Promise<LinkTokenResponse>;\n }\n\n const props = withDefaults(defineProps<PlaidLinkProps>(), {\n initScriptUrl: 'https://cdn.plaid.com/link/v2/stable/link-initialize.js',\n storageKey: undefined,\n returnTo: window.location.href,\n env: 'sandbox',\n token: undefined,\n createToken: undefined,\n });\n\n const internalStorageKey = computed(() => {\n if (props.storageKey) {\n return props.storageKey;\n }\n\n // returns up to the last 3 parts of the host. e.g. for `subdomain.my.domain.com` it will return `my.domain.com`\n const host = window.location.host.split('.').splice(-3).join('.');\n\n return `${host}-plaid`;\n });\n\n const emit = defineEmits<{\n /**\n * Emitted whenever the exit event contains errors\n */\n (e: 'error', error: Plaid.Error | null | Error, metadata?: Plaid.OnExitMetaData): void;\n /**\n * Emitted whenever the user successfully links an item\n */\n (e: 'success', public_token: string, metadata: Plaid.OnSuccessMetaData): void;\n /**\n * Emitted whenever the user exits the Link flow\n */\n (e: 'exit', metadata: Plaid.OnExitMetaData): void;\n /**\n * Emitted when the Link is ready to be opened\n */\n (e: 'load'): void;\n /**\n * Emitted at specific points during the Link flow\n */\n (e: 'event', eventName: Plaid.EventName, metadata: Plaid.OnEventMetaData): void;\n }>();\n\n const isPlaidModalOpen = ref(false);\n\n const onExit: Plaid.OnExit = (error: Plaid.Error | null, metadata: Plaid.OnExitMetaData) => {\n isPlaidModalOpen.value = false;\n\n if (error) {\n logger.error(new Error('Plaid: Error trying to link an account'), {\n tags: { plaid: true },\n extra: { PlaidError: error },\n });\n emit('error', error, metadata);\n }\n\n sessionStorage.removeItem(internalStorageKey.value);\n\n emit('exit', metadata);\n };\n\n const onSuccess: Plaid.OnSuccess = (public_token: string, metadata: Plaid.OnSuccessMetaData) => {\n isPlaidModalOpen.value = false;\n\n sessionStorage.removeItem(internalStorageKey.value);\n\n emit('success', public_token, metadata);\n };\n\n const onLoad: Plaid.OnLoad = (...args) => emit('load', ...args);\n\n const onEvent: Plaid.OnEvent = (...args) => emit('event', ...args);\n\n const plaidLinkOptions = ref<Plaid.CreateConfig>({\n env: props.env,\n onSuccess,\n onEvent,\n onLoad,\n onExit,\n });\n\n const { open: openPlaidLink } = usePlaidLink(plaidLinkOptions);\n\n async function handleClick() {\n if (isPlaidModalOpen.value === true) {\n return;\n }\n\n isPlaidModalOpen.value = true;\n\n if (typeof props.createToken === 'function') {\n try {\n const { link_token } = await props.createToken();\n\n plaidLinkOptions.value.token = link_token;\n } catch (err) {\n const error = new Error('Plaid: Error trying to invoke createToken');\n\n logger.error(error, {\n tags: { plaid: true },\n extra: { error: err },\n });\n\n emit('error', error);\n }\n } else if (props.token) {\n plaidLinkOptions.value.token = props.token;\n }\n\n if (!plaidLinkOptions.value.token) {\n const error = new Error('Plaid: link token not found');\n\n logger.error(error, { tags: { plaid: true } });\n emit('error', error);\n\n isPlaidModalOpen.value = false;\n\n return;\n }\n\n sessionStorage.setItem(\n internalStorageKey.value,\n JSON.stringify({ token: plaidLinkOptions.value.token, returnTo: props.returnTo, env: props.env }),\n );\n\n openPlaidLink();\n }\n\n defineExpose({\n handleClick,\n });\n</script>\n\n<template>\n <span data-test=\"stash-plaid-link\" @click=\"handleClick\">\n <!-- @slot Default slot to trigger Plaid's modal -->\n <slot :open=\"isPlaidModalOpen\"></slot>\n </span>\n</template>\n"],"names":["props","__props","internalStorageKey","computed","emit","__emit","isPlaidModalOpen","ref","onExit","error","metadata","logger","onSuccess","public_token","onLoad","args","onEvent","plaidLinkOptions","openPlaidLink","usePlaidLink","handleClick","link_token","err","__expose"],"mappings":";;;;;;;;;;;;;;;;AAyCE,UAAMA,IAAQC,GASRC,IAAqBC,EAAS,MAC9BH,EAAM,aACDA,EAAM,aAMR,GAFM,OAAO,SAAS,KAAK,MAAM,GAAG,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,SAGjE,GAEKI,IAAOC,GAuBPC,IAAmBC,EAAI,EAAK,GAE5BC,IAAuB,CAACC,GAA2BC,MAAmC;AAC1F,MAAAJ,EAAiB,QAAQ,IAErBG,MACFE,EAAO,MAAM,IAAI,MAAM,wCAAwC,GAAG;AAAA,QAChE,MAAM,EAAE,OAAO,GAAK;AAAA,QACpB,OAAO,EAAE,YAAYF,EAAM;AAAA,MAAA,CAC5B,GACIL,EAAA,SAASK,GAAOC,CAAQ,IAGhB,eAAA,WAAWR,EAAmB,KAAK,GAElDE,EAAK,QAAQM,CAAQ;AAAA,IAAA,GAGjBE,IAA6B,CAACC,GAAsBH,MAAsC;AAC9F,MAAAJ,EAAiB,QAAQ,IAEV,eAAA,WAAWJ,EAAmB,KAAK,GAE7CE,EAAA,WAAWS,GAAcH,CAAQ;AAAA,IAAA,GAGlCI,IAAuB,IAAIC,MAASX,EAAK,QAAQ,GAAGW,CAAI,GAExDC,IAAyB,IAAID,MAASX,EAAK,SAAS,GAAGW,CAAI,GAE3DE,IAAmBV,EAAwB;AAAA,MAC/C,KAAKP,EAAM;AAAA,MACX,WAAAY;AAAA,MACA,SAAAI;AAAA,MACA,QAAAF;AAAA,MACA,QAAAN;AAAA,IAAA,CACD,GAEK,EAAE,MAAMU,EAAc,IAAIC,EAAaF,CAAgB;AAE7D,mBAAeG,IAAc;AACvB,UAAAd,EAAiB,UAAU,IAM3B;AAAA,YAFJA,EAAiB,QAAQ,IAErB,OAAON,EAAM,eAAgB;AAC3B,cAAA;AACF,kBAAM,EAAE,YAAAqB,EAAe,IAAA,MAAMrB,EAAM,YAAY;AAE/C,YAAAiB,EAAiB,MAAM,QAAQI;AAAA,mBACxBC;AACD,kBAAAb,IAAQ,IAAI,MAAM,2CAA2C;AAEnE,YAAAE,EAAO,MAAMF,GAAO;AAAA,cAClB,MAAM,EAAE,OAAO,GAAK;AAAA,cACpB,OAAO,EAAE,OAAOa,EAAI;AAAA,YAAA,CACrB,GAEDlB,EAAK,SAASK,CAAK;AAAA,UACrB;AAAA;AACF,UAAWT,EAAM,UACEiB,EAAA,MAAM,QAAQjB,EAAM;AAGnC,YAAA,CAACiB,EAAiB,MAAM,OAAO;AAC3B,gBAAAR,IAAQ,IAAI,MAAM,6BAA6B;AAE9C,UAAAE,EAAA,MAAMF,GAAO,EAAE,MAAM,EAAE,OAAO,MAAQ,GAC7CL,EAAK,SAASK,CAAK,GAEnBH,EAAiB,QAAQ;AAEzB;AAAA;AAGa,uBAAA;AAAA,UACbJ,EAAmB;AAAA,UACnB,KAAK,UAAU,EAAE,OAAOe,EAAiB,MAAM,OAAO,UAAUjB,EAAM,UAAU,KAAKA,EAAM,KAAK;AAAA,QAAA,GAGpFkB;;IAChB;AAEa,WAAAK,EAAA;AAAA,MACX,aAAAH;AAAA,IAAA,CACD;;;;;;;;"}
1
+ {"version":3,"file":"PlaidLink.js","sources":["../src/components/PlaidLink/PlaidLink.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import logger from '@leaflink/snitch';\n import { computed, ref } from 'vue';\n\n import { LinkTokenResponse, Plaid } from '../../../types/plaid';\n import usePlaidLink from '../../composables/usePlaidLink/usePlaidLink';\n\n export interface PlaidLinkProps {\n /**\n * @deprecated Plaid does not support other URLs for loading its SDK\n * Plaid initialization script url to be used\n */\n initScriptUrl?: string;\n\n /**\n * Key to be used in session storage for OAuth flow\n */\n storageKey?: string;\n\n /**\n * Url to be used to redirect the user from the OAuth flow\n */\n returnTo?: string;\n\n /**\n * Plaid link token\n */\n token?: string;\n\n /**\n * Plaid environment to connect\n */\n env?: Plaid.Environment;\n\n /**\n * Function that returns a link token object to be used with Plaid.\n * `link_token` takes precedence over `token` if informed.\n */\n createToken?: () => Promise<LinkTokenResponse>;\n }\n\n const props = withDefaults(defineProps<PlaidLinkProps>(), {\n initScriptUrl: 'https://cdn.plaid.com/link/v2/stable/link-initialize.js',\n storageKey: undefined,\n returnTo: window.location.href,\n env: 'sandbox',\n token: undefined,\n createToken: undefined,\n });\n\n const internalStorageKey = computed(() => {\n if (props.storageKey) {\n return props.storageKey;\n }\n\n // returns up to the last 3 parts of the host. e.g. for `subdomain.my.domain.com` it will return `my.domain.com`\n const host = window.location.host.split('.').splice(-3).join('.');\n\n return `${host}-plaid`;\n });\n\n const emit = defineEmits<{\n /**\n * Emitted whenever the exit event contains errors\n */\n (e: 'error', error: Plaid.Error | null | Error, metadata?: Plaid.OnExitMetaData): void;\n /**\n * Emitted whenever the user successfully links an item\n */\n (e: 'success', public_token: string, metadata: Plaid.OnSuccessMetaData): void;\n /**\n * Emitted whenever the user exits the Link flow\n */\n (e: 'exit', metadata: Plaid.OnExitMetaData): void;\n /**\n * Emitted when the Link is ready to be opened\n */\n (e: 'load'): void;\n /**\n * Emitted at specific points during the Link flow\n */\n (e: 'event', eventName: Plaid.EventName, metadata: Plaid.OnEventMetaData): void;\n }>();\n\n const isPlaidModalOpen = ref(false);\n\n const onExit: Plaid.OnExit = (error: Plaid.Error | null, metadata: Plaid.OnExitMetaData) => {\n isPlaidModalOpen.value = false;\n\n if (error) {\n logger.error(new Error('Plaid: Error trying to link an account'), {\n tags: { plaid: true },\n extra: { PlaidError: error },\n });\n emit('error', error, metadata);\n }\n\n sessionStorage.removeItem(internalStorageKey.value);\n\n emit('exit', metadata);\n };\n\n const onSuccess: Plaid.OnSuccess = (public_token: string, metadata: Plaid.OnSuccessMetaData) => {\n isPlaidModalOpen.value = false;\n\n sessionStorage.removeItem(internalStorageKey.value);\n\n emit('success', public_token, metadata);\n };\n\n const onLoad: Plaid.OnLoad = (...args) => emit('load', ...args);\n\n const onEvent: Plaid.OnEvent = (...args) => emit('event', ...args);\n\n const plaidLinkOptions = ref<Plaid.CreateConfig>({\n env: props.env,\n onSuccess,\n onEvent,\n onLoad,\n onExit,\n });\n\n const { open: openPlaidLink } = usePlaidLink(plaidLinkOptions);\n\n async function handleClick() {\n if (isPlaidModalOpen.value === true) {\n return;\n }\n\n isPlaidModalOpen.value = true;\n\n if (typeof props.createToken === 'function') {\n try {\n const { link_token } = await props.createToken();\n\n plaidLinkOptions.value.token = link_token;\n } catch (err) {\n const error = new Error('Plaid: Error trying to invoke createToken');\n\n logger.error(error, {\n tags: { plaid: true },\n extra: { error: err },\n });\n\n emit('error', error);\n }\n } else if (props.token) {\n plaidLinkOptions.value.token = props.token;\n }\n\n if (!plaidLinkOptions.value.token) {\n const error = new Error('Plaid: link token not found');\n\n logger.error(error, { tags: { plaid: true } });\n emit('error', error);\n\n isPlaidModalOpen.value = false;\n\n return;\n }\n\n sessionStorage.setItem(\n internalStorageKey.value,\n JSON.stringify({ token: plaidLinkOptions.value.token, returnTo: props.returnTo, env: props.env }),\n );\n\n openPlaidLink();\n }\n\n defineExpose({\n handleClick,\n });\n</script>\n\n<template>\n <span data-test=\"stash-plaid-link\" @click=\"handleClick\">\n <!-- @slot Default slot to trigger Plaid's modal -->\n <slot :open=\"isPlaidModalOpen\"></slot>\n </span>\n</template>\n"],"names":["props","__props","internalStorageKey","computed","emit","__emit","isPlaidModalOpen","ref","onExit","error","metadata","logger","onSuccess","public_token","onLoad","args","onEvent","plaidLinkOptions","openPlaidLink","usePlaidLink","handleClick","link_token","err","__expose"],"mappings":";;;;;;;;;;;;;;;AAyCE,UAAMA,IAAQC,GASRC,IAAqBC,EAAS,MAC9BH,EAAM,aACDA,EAAM,aAMR,GAFM,OAAO,SAAS,KAAK,MAAM,GAAG,EAAE,OAAO,EAAE,EAAE,KAAK,GAAG,CAElD,QACf,GAEKI,IAAOC,GAuBPC,IAAmBC,EAAI,EAAK,GAE5BC,IAAuB,CAACC,GAA2BC,MAAmC;AAC1F,MAAAJ,EAAiB,QAAQ,IAErBG,MACFE,EAAO,MAAM,IAAI,MAAM,wCAAwC,GAAG;AAAA,QAChE,MAAM,EAAE,OAAO,GAAK;AAAA,QACpB,OAAO,EAAE,YAAYF,EAAM;AAAA,MAAA,CAC5B,GACIL,EAAA,SAASK,GAAOC,CAAQ,IAGhB,eAAA,WAAWR,EAAmB,KAAK,GAElDE,EAAK,QAAQM,CAAQ;AAAA,IAAA,GAGjBE,IAA6B,CAACC,GAAsBH,MAAsC;AAC9F,MAAAJ,EAAiB,QAAQ,IAEV,eAAA,WAAWJ,EAAmB,KAAK,GAE7CE,EAAA,WAAWS,GAAcH,CAAQ;AAAA,IAAA,GAGlCI,IAAuB,IAAIC,MAASX,EAAK,QAAQ,GAAGW,CAAI,GAExDC,IAAyB,IAAID,MAASX,EAAK,SAAS,GAAGW,CAAI,GAE3DE,IAAmBV,EAAwB;AAAA,MAC/C,KAAKP,EAAM;AAAA,MACX,WAAAY;AAAA,MACA,SAAAI;AAAA,MACA,QAAAF;AAAA,MACA,QAAAN;AAAA,IAAA,CACD,GAEK,EAAE,MAAMU,EAAc,IAAIC,EAAaF,CAAgB;AAE7D,mBAAeG,IAAc;AACvB,UAAAd,EAAiB,UAAU,IAM3B;AAAA,YAFJA,EAAiB,QAAQ,IAErB,OAAON,EAAM,eAAgB;AAC3B,cAAA;AACF,kBAAM,EAAE,YAAAqB,EAAe,IAAA,MAAMrB,EAAM,YAAY;AAE/C,YAAAiB,EAAiB,MAAM,QAAQI;AAAA,mBACxBC,GAAK;AACN,kBAAAb,IAAQ,IAAI,MAAM,2CAA2C;AAEnE,YAAAE,EAAO,MAAMF,GAAO;AAAA,cAClB,MAAM,EAAE,OAAO,GAAK;AAAA,cACpB,OAAO,EAAE,OAAOa,EAAI;AAAA,YAAA,CACrB,GAEDlB,EAAK,SAASK,CAAK;AAAA,UACrB;AAAA,YACF,CAAWT,EAAM,UACEiB,EAAA,MAAM,QAAQjB,EAAM;AAGnC,YAAA,CAACiB,EAAiB,MAAM,OAAO;AAC3B,gBAAAR,IAAQ,IAAI,MAAM,6BAA6B;AAE9C,UAAAE,EAAA,MAAMF,GAAO,EAAE,MAAM,EAAE,OAAO,MAAQ,GAC7CL,EAAK,SAASK,CAAK,GAEnBH,EAAiB,QAAQ;AAEzB;AAAA,QACF;AAEe,uBAAA;AAAA,UACbJ,EAAmB;AAAA,UACnB,KAAK,UAAU,EAAE,OAAOe,EAAiB,MAAM,OAAO,UAAUjB,EAAM,UAAU,KAAKA,EAAM,KAAK;AAAA,QAAA,GAGpFkB;;IAChB;AAEa,WAAAK,EAAA;AAAA,MACX,aAAAH;AAAA,IAAA,CACD;;;;;;;;"}