@leaflink/stash 49.5.0 → 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 (416) hide show
  1. package/dist/Accordion.js +25 -28
  2. package/dist/Accordion.js.map +1 -1
  3. package/dist/Accordion.vue.d.ts +16 -16
  4. package/dist/ActionsDropdown.js +14 -26
  5. package/dist/ActionsDropdown.js.map +1 -1
  6. package/dist/ActionsDropdown.vue.d.ts +12 -12
  7. package/dist/AddressSelect.js +22 -47
  8. package/dist/AddressSelect.js.map +1 -1
  9. package/dist/AddressSelect.vue.d.ts +45 -45
  10. package/dist/Alert.js +4 -6
  11. package/dist/Alert.js.map +1 -1
  12. package/dist/Alert.vue.d.ts +18 -18
  13. package/dist/AppNavigationItem.js +16 -19
  14. package/dist/AppNavigationItem.js.map +1 -1
  15. package/dist/AppNavigationItem.vue.d.ts +4 -4
  16. package/dist/AppSidebar.js +27 -28
  17. package/dist/AppSidebar.js.map +1 -1
  18. package/dist/AppSidebar.vue.d.ts +7 -7
  19. package/dist/AppTopbar.js +12 -17
  20. package/dist/AppTopbar.js.map +1 -1
  21. package/dist/AppTopbar.vue.d.ts +8 -8
  22. package/dist/Avatar.js +1 -1
  23. package/dist/Avatar.vue.d.ts +22 -22
  24. package/dist/Backdrop.js +1 -1
  25. package/dist/Backdrop.vue.d.ts +1 -1
  26. package/dist/Badge.js +1 -1
  27. package/dist/Badge.js.map +1 -1
  28. package/dist/Badge.vue.d.ts +36 -36
  29. package/dist/Box.js +2 -3
  30. package/dist/Box.js.map +1 -1
  31. package/dist/Box.vue.d.ts +12 -12
  32. 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
  33. 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
  34. package/dist/Button.js +40 -27
  35. package/dist/Button.js.map +1 -1
  36. package/dist/Button.vue.d.ts +34 -27
  37. package/dist/ButtonGroup.js +1 -1
  38. package/dist/ButtonGroup.vue.d.ts +14 -14
  39. package/dist/Card.vue.d.ts +3 -3
  40. package/dist/CardContent.js +1 -1
  41. package/dist/CardContent.vue.d.ts +1 -1
  42. package/dist/CardFooter.js +1 -1
  43. package/dist/CardFooter.vue.d.ts +1 -1
  44. package/dist/CardMedia.js +11 -14
  45. package/dist/CardMedia.js.map +1 -1
  46. package/dist/Carousel.js +179 -180
  47. package/dist/Carousel.js.map +1 -1
  48. package/dist/Carousel.vue.d.ts +33 -11
  49. package/dist/Checkbox.js +38 -35
  50. package/dist/Checkbox.js.map +1 -1
  51. package/dist/Checkbox.vue.d.ts +31 -31
  52. package/dist/ChevronToggle.js +2 -10
  53. package/dist/ChevronToggle.js.map +1 -1
  54. package/dist/ChevronToggle.vue.d.ts +5 -5
  55. package/dist/{ChevronToggle.vue_vue_type_script_setup_true_lang-fcdf0c19.js → ChevronToggle.vue_vue_type_script_setup_true_lang-DuvluoTi.js} +1 -1
  56. 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
  57. package/dist/Chip.js +17 -20
  58. package/dist/Chip.js.map +1 -1
  59. package/dist/Chip.vue.d.ts +32 -32
  60. package/dist/ConfirmationCodeInput.js +1 -1
  61. package/dist/ConfirmationCodeInput.js.map +1 -1
  62. package/dist/ConfirmationCodeInput.vue.d.ts +29 -29
  63. package/dist/ContextSwitcher.js +8 -14
  64. package/dist/ContextSwitcher.js.map +1 -1
  65. package/dist/ContextSwitcher.vue.d.ts +32 -32
  66. package/dist/Copy.js +23 -34
  67. package/dist/Copy.js.map +1 -1
  68. package/dist/Copy.vue.d.ts +9 -9
  69. package/dist/CurrencyInput.js +117 -128
  70. package/dist/CurrencyInput.js.map +1 -1
  71. package/dist/CurrencyInput.vue.d.ts +26 -21
  72. package/dist/CustomRender.vue.d.ts +12 -1
  73. package/dist/DataView.js +70 -73
  74. package/dist/DataView.js.map +1 -1
  75. package/dist/{DataView.vue_used_vue_type_style_index_0_lang.module-5c180dba.js → DataView.keys-C7eaZg2G.js} +5 -8
  76. package/dist/DataView.keys-C7eaZg2G.js.map +1 -0
  77. package/dist/DataView.vue.d.ts +51 -51
  78. package/dist/DataViewFilters.js +76 -90
  79. package/dist/DataViewFilters.js.map +1 -1
  80. package/dist/{DataViewFilters.keys-c80ffabe.js → DataViewFilters.keys-BLu07FiP.js} +1 -1
  81. package/dist/{DataViewFilters.keys-c80ffabe.js.map → DataViewFilters.keys-BLu07FiP.js.map} +1 -1
  82. package/dist/DataViewFilters.vue.d.ts +39 -39
  83. package/dist/DataViewSortButton.js +30 -43
  84. package/dist/DataViewSortButton.js.map +1 -1
  85. package/dist/DataViewSortButton.vue.d.ts +3 -3
  86. package/dist/DataViewToolbar.js +27 -36
  87. package/dist/DataViewToolbar.js.map +1 -1
  88. package/dist/DataViewToolbar.vue.d.ts +17 -17
  89. package/dist/DatePicker.js +649 -662
  90. package/dist/DatePicker.js.map +1 -1
  91. package/dist/DatePicker.vue.d.ts +73 -73
  92. package/dist/DescriptionList.js +1 -1
  93. package/dist/{DescriptionList.keys-c906ce05.js → DescriptionList.keys-BHlHYV6b.js} +1 -1
  94. package/dist/{DescriptionList.keys-c906ce05.js.map → DescriptionList.keys-BHlHYV6b.js.map} +1 -1
  95. package/dist/DescriptionList.vue.d.ts +6 -6
  96. package/dist/DescriptionListDetail.js +1 -1
  97. package/dist/DescriptionListDetail.vue.d.ts +1 -1
  98. package/dist/DescriptionListGroup.js +1 -1
  99. package/dist/DescriptionListGroup.vue.d.ts +1 -1
  100. package/dist/DescriptionListTerm.js +1 -1
  101. package/dist/DescriptionListTerm.vue.d.ts +1 -1
  102. package/dist/Dialog.js +26 -30
  103. package/dist/Dialog.js.map +1 -1
  104. package/dist/Dialog.vue.d.ts +34 -34
  105. package/dist/Divider.js +1 -1
  106. package/dist/Divider.js.map +1 -1
  107. package/dist/Divider.vue.d.ts +1 -1
  108. package/dist/Dropdown.js +21 -28
  109. package/dist/Dropdown.js.map +1 -1
  110. package/dist/Dropdown.vue.d.ts +28 -28
  111. package/dist/EmptyState.js +32 -33
  112. package/dist/EmptyState.js.map +1 -1
  113. package/dist/EmptyState.vue.d.ts +36 -36
  114. package/dist/Expand.js +2 -3
  115. package/dist/Expand.js.map +1 -1
  116. package/dist/Expand.vue.d.ts +14 -14
  117. package/dist/{Expand.vue_vue_type_script_setup_true_lang-0f236267.js → Expand.vue_vue_type_script_setup_true_lang-D0fSAtHr.js} +1 -1
  118. 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
  119. package/dist/Field.js +2 -7
  120. package/dist/Field.js.map +1 -1
  121. package/dist/Field.vue.d.ts +30 -30
  122. package/dist/{Field.vue_vue_type_script_setup_true_lang-fded4f75.js → Field.vue_vue_type_script_setup_true_lang-DjxUvSRF.js} +2 -2
  123. 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
  124. package/dist/FileUpload.js +58 -57
  125. package/dist/FileUpload.js.map +1 -1
  126. package/dist/FileUpload.vue.d.ts +28 -28
  127. package/dist/FilterChip.js +12 -17
  128. package/dist/FilterChip.js.map +1 -1
  129. package/dist/FilterChip.vue.d.ts +19 -19
  130. package/dist/FilterDrawerItem.js +24 -30
  131. package/dist/FilterDrawerItem.js.map +1 -1
  132. package/dist/FilterDrawerItem.vue.d.ts +2 -2
  133. package/dist/FilterDropdown.js +41 -57
  134. package/dist/FilterDropdown.js.map +1 -1
  135. package/dist/FilterDropdown.vue.d.ts +9 -9
  136. package/dist/FilterSelect.js +36 -45
  137. package/dist/FilterSelect.js.map +1 -1
  138. package/dist/FilterSelect.vue.d.ts +5 -5
  139. package/dist/Filters.js +60 -96
  140. package/dist/Filters.js.map +1 -1
  141. package/dist/Filters.vue.d.ts +2005 -2294
  142. package/dist/HttpError.js +16 -23
  143. package/dist/HttpError.js.map +1 -1
  144. package/dist/HttpError.vue.d.ts +18 -18
  145. package/dist/Icon.js +27 -22
  146. package/dist/Icon.js.map +1 -1
  147. package/dist/Icon.vue.d.ts +13 -13
  148. package/dist/IconLabel.js +9 -12
  149. package/dist/IconLabel.js.map +1 -1
  150. package/dist/IconLabel.vue.d.ts +17 -17
  151. package/dist/Illustration.js +8 -11
  152. package/dist/Illustration.js.map +1 -1
  153. package/dist/Illustration.vue.d.ts +21 -21
  154. package/dist/{Illustration.vue_vue_type_script_setup_true_lang-e26c3841.js → Illustration.vue_vue_type_script_setup_true_lang-C3qG3Ty6.js} +2 -2
  155. 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
  156. package/dist/Image.js.map +1 -1
  157. package/dist/Image.vue.d.ts +18 -18
  158. package/dist/InlineEdit.js +19 -30
  159. package/dist/InlineEdit.js.map +1 -1
  160. package/dist/InlineEdit.vue.d.ts +26 -26
  161. package/dist/Input.js +58 -64
  162. package/dist/Input.js.map +1 -1
  163. package/dist/Input.vue.d.ts +44 -36
  164. package/dist/InputOptions.js +66 -93
  165. package/dist/InputOptions.js.map +1 -1
  166. package/dist/InputOptions.vue.d.ts +66 -58
  167. package/dist/IntegrationIcon.js +2 -2
  168. package/dist/IntegrationIcon.js.map +1 -1
  169. package/dist/IntegrationIcon.vue.d.ts +12 -12
  170. package/dist/Label.js +2 -5
  171. package/dist/Label.js.map +1 -1
  172. package/dist/Label.vue.d.ts +17 -17
  173. package/dist/{Label.vue_vue_type_script_setup_true_lang-b6ba2f02.js → Label.vue_vue_type_script_setup_true_lang-C4JKdqvC.js} +1 -1
  174. 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
  175. package/dist/LicenseChip.js +10 -16
  176. package/dist/LicenseChip.js.map +1 -1
  177. package/dist/LicenseChip.vue.d.ts +3 -3
  178. package/dist/ListItem.js +5 -8
  179. package/dist/ListItem.js.map +1 -1
  180. package/dist/ListItem.vue.d.ts +275 -225
  181. package/dist/ListItemCell.js +1 -1
  182. package/dist/ListItemCell.js.map +1 -1
  183. package/dist/ListItemCell.vue.d.ts +13 -2
  184. package/dist/ListView.js +57 -101
  185. package/dist/ListView.js.map +1 -1
  186. package/dist/ListView.vue.d.ts +5185 -5430
  187. package/dist/Loading.js +12 -10
  188. package/dist/Loading.js.map +1 -1
  189. package/dist/Loading.vue.d.ts +1 -1
  190. package/dist/Logo.js +2 -4
  191. package/dist/Logo.js.map +1 -1
  192. package/dist/Logo.vue.d.ts +17 -17
  193. package/dist/{Logo.vue_vue_type_script_setup_true_lang-2a2597cb.js → Logo.vue_vue_type_script_setup_true_lang-BfUU9J9O.js} +1 -1
  194. 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
  195. package/dist/Menu.js +1 -1
  196. package/dist/Menu.vue.d.ts +1 -1
  197. package/dist/MenuItem.js +1 -1
  198. package/dist/MenuItem.vue.d.ts +1 -1
  199. package/dist/{MenusPlugin-9288029a.js → MenusPlugin-Bk6UW6o9.js} +1 -1
  200. package/dist/{MenusPlugin-9288029a.js.map → MenusPlugin-Bk6UW6o9.js.map} +1 -1
  201. package/dist/Metric.vue.d.ts +10 -10
  202. package/dist/Modal.js +27 -32
  203. package/dist/Modal.js.map +1 -1
  204. package/dist/Modal.vue.d.ts +42 -42
  205. package/dist/Modals.js +14 -16
  206. package/dist/Modals.js.map +1 -1
  207. package/dist/Modals.vue.d.ts +1 -1
  208. package/dist/ModalsPlugin.js +9 -12
  209. package/dist/ModalsPlugin.js.map +1 -1
  210. package/dist/Module.js +3 -3
  211. package/dist/{Module.keys-2cc7d830.js → Module.keys-CEsrW2f0.js} +1 -1
  212. package/dist/{Module.keys-2cc7d830.js.map → Module.keys-CEsrW2f0.js.map} +1 -1
  213. package/dist/{Module.types-3f78f2a0.js → Module.types-B1FfGGac.js} +1 -1
  214. package/dist/{Module.types-3f78f2a0.js.map → Module.types-B1FfGGac.js.map} +1 -1
  215. package/dist/Module.vue.d.ts +3 -3
  216. package/dist/ModuleContent.js +2 -2
  217. package/dist/ModuleContent.vue.d.ts +1 -1
  218. package/dist/ModuleFooter.js +2 -2
  219. package/dist/ModuleFooter.vue.d.ts +1 -1
  220. package/dist/ModuleHeader.js +3 -3
  221. package/dist/ModuleHeader.vue.d.ts +15 -15
  222. package/dist/ObfuscateText.js +8 -13
  223. package/dist/ObfuscateText.js.map +1 -1
  224. package/dist/ObfuscateText.vue.d.ts +18 -18
  225. package/dist/PageContent.js +1 -1
  226. package/dist/PageContent.vue.d.ts +1 -1
  227. package/dist/PageHeader.js +26 -23
  228. package/dist/PageHeader.js.map +1 -1
  229. package/dist/PageHeader.vue.d.ts +7 -4
  230. package/dist/PageNavigation.js +41 -64
  231. package/dist/PageNavigation.js.map +1 -1
  232. package/dist/PageNavigation.vue.d.ts +10 -10
  233. package/dist/Paginate.js +36 -34
  234. package/dist/Paginate.js.map +1 -1
  235. package/dist/Paginate.vue.d.ts +11 -11
  236. package/dist/PlaidLink.js +3 -5
  237. package/dist/PlaidLink.js.map +1 -1
  238. package/dist/PlaidLink.vue.d.ts +29 -29
  239. package/dist/QuickAction.js +12 -15
  240. package/dist/QuickAction.js.map +1 -1
  241. package/dist/QuickAction.vue.d.ts +1 -1
  242. package/dist/Radio.js +1 -1
  243. package/dist/Radio.js.map +1 -1
  244. package/dist/Radio.vue.d.ts +83 -12
  245. package/dist/RadioGroup.js +41 -45
  246. package/dist/RadioGroup.js.map +1 -1
  247. package/dist/{RadioGroup.keys-974818d6.js → RadioGroup.keys-CqfiKkNz.js} +1 -1
  248. package/dist/{RadioGroup.keys-974818d6.js.map → RadioGroup.keys-CqfiKkNz.js.map} +1 -1
  249. package/dist/RadioGroup.vue.d.ts +30 -30
  250. package/dist/RadioNew.js +2 -2
  251. package/dist/RadioNew.js.map +1 -1
  252. package/dist/RadioNew.vue.d.ts +26 -26
  253. package/dist/RangeInput.js +10 -14
  254. package/dist/RangeInput.js.map +1 -1
  255. package/dist/RangeInput.vue.d.ts +1 -1
  256. package/dist/SearchBar.js +31 -41
  257. package/dist/SearchBar.js.map +1 -1
  258. package/dist/SearchBar.vue.d.ts +22 -22
  259. package/dist/Select.js +66 -78
  260. package/dist/Select.js.map +1 -1
  261. package/dist/Select.vue.d.ts +123 -123
  262. package/dist/SelectStatus.js +47 -69
  263. package/dist/SelectStatus.js.map +1 -1
  264. package/dist/SelectStatus.vue.d.ts +33 -26
  265. package/dist/Skeleton.js +1 -1
  266. package/dist/Skeleton.js.map +1 -1
  267. package/dist/Skeleton.vue.d.ts +9 -9
  268. package/dist/Step.js +10 -14
  269. package/dist/Step.js.map +1 -1
  270. package/dist/Step.vue.d.ts +21 -21
  271. package/dist/Stepper.js +37 -40
  272. package/dist/Stepper.js.map +1 -1
  273. package/dist/Stepper.vue.d.ts +34 -29
  274. package/dist/Switch.js +1 -1
  275. package/dist/Switch.vue.d.ts +23 -23
  276. package/dist/Tab.js +21 -36
  277. package/dist/Tab.js.map +1 -1
  278. package/dist/Table.js +38 -55
  279. package/dist/Table.js.map +1 -1
  280. package/dist/Table.keys-LHQf6FEH.js +7 -0
  281. package/dist/{Table.keys-83e4f09b.js.map → Table.keys-LHQf6FEH.js.map} +1 -1
  282. package/dist/Table.vue.d.ts +36 -36
  283. package/dist/TableCell.js +26 -26
  284. package/dist/TableCell.js.map +1 -1
  285. package/dist/TableCell.vue.d.ts +6 -6
  286. package/dist/TableHeaderCell.js +6 -13
  287. package/dist/TableHeaderCell.js.map +1 -1
  288. package/dist/TableHeaderCell.vue.d.ts +3 -3
  289. package/dist/TableHeaderRow.js +22 -32
  290. package/dist/TableHeaderRow.js.map +1 -1
  291. package/dist/TableHeaderRow.vue.d.ts +8 -8
  292. package/dist/TableRow.js +59 -59
  293. package/dist/TableRow.js.map +1 -1
  294. package/dist/TableRow.vue.d.ts +26 -26
  295. package/dist/Tabs.js +10 -24
  296. package/dist/Tabs.js.map +1 -1
  297. package/dist/Tabs.vue.d.ts +5 -5
  298. 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
  299. package/dist/Tabs.vue_vue_type_script_setup_true_lang-l41hWkV4.js.map +1 -0
  300. package/dist/TextEditor.js +1269 -1364
  301. package/dist/TextEditor.js.map +1 -1
  302. package/dist/TextEditor.vue.d.ts +46 -46
  303. package/dist/Textarea.js +30 -31
  304. package/dist/Textarea.js.map +1 -1
  305. package/dist/Textarea.vue.d.ts +34 -26
  306. package/dist/Timeline.js +9 -10
  307. package/dist/Timeline.js.map +1 -1
  308. package/dist/Timeline.vue.d.ts +6 -6
  309. package/dist/TimelineItem.js +1 -1
  310. package/dist/TimelineItem.vue.d.ts +1 -1
  311. package/dist/Toast.js +5 -9
  312. package/dist/Toast.js.map +1 -1
  313. package/dist/Toast.vue.d.ts +3 -3
  314. package/dist/Toasts.js +15 -25
  315. package/dist/Toasts.js.map +1 -1
  316. package/dist/Toasts.vue.d.ts +1 -1
  317. package/dist/ToastsPlugin.js +11 -23
  318. package/dist/ToastsPlugin.js.map +1 -1
  319. package/dist/Tooltip.js +1 -1
  320. package/dist/Tooltip.js.map +1 -1
  321. package/dist/Tooltip.vue.d.ts +15 -15
  322. package/dist/{_commonjsHelpers-10dfc225.js → _commonjsHelpers-DaMA6jEr.js} +1 -1
  323. package/dist/_commonjsHelpers-DaMA6jEr.js.map +1 -0
  324. package/dist/{_plugin-vue_export-helper-dad06003.js → _plugin-vue_export-helper-CHgC5LLL.js} +1 -1
  325. package/dist/_plugin-vue_export-helper-CHgC5LLL.js.map +1 -0
  326. package/dist/{colors-8d9b9429.js → colors-DDDVvqfQ.js} +1 -1
  327. package/dist/{colors-8d9b9429.js.map → colors-DDDVvqfQ.js.map} +1 -1
  328. package/dist/components.css +2 -2
  329. package/dist/directives/observe.js.map +1 -1
  330. package/dist/directives/sticky.js.map +1 -1
  331. package/dist/directives/tooltip.js +21 -27
  332. package/dist/directives/tooltip.js.map +1 -1
  333. package/dist/directives/viewable.js +1 -1
  334. package/dist/directives/viewable.js.map +1 -1
  335. package/dist/{floating-ui.vue-8d7f7932.js → floating-ui.vue-BmfQDqE-.js} +2 -3
  336. package/dist/{floating-ui.vue-8d7f7932.js.map → floating-ui.vue-BmfQDqE-.js.map} +1 -1
  337. package/dist/{formatDateTime-a5e70901.js → formatDateTime-C8CYECpd.js} +8 -12
  338. package/dist/{formatDateTime-a5e70901.js.map → formatDateTime-C8CYECpd.js.map} +1 -1
  339. package/dist/{index-9e1095ef.js → index-D6bxWkZ1.js} +2 -3
  340. package/dist/{index-9e1095ef.js.map → index-D6bxWkZ1.js.map} +1 -1
  341. package/dist/index.d.ts +1 -1
  342. package/dist/index.js +90 -112
  343. package/dist/index.js.map +1 -1
  344. package/dist/{isDefined-2ce6cde4.js → isDefined-DzVx0B6k.js} +1 -1
  345. package/dist/{isDefined-2ce6cde4.js.map → isDefined-DzVx0B6k.js.map} +1 -1
  346. package/dist/{isValid-4b2b7a54.js → isValid-DN-HkCoi.js} +1 -1
  347. package/dist/{isValid-4b2b7a54.js.map → isValid-DN-HkCoi.js.map} +1 -1
  348. package/dist/{keys-241d03b7.js → keys-BEdEsanp.js} +1 -1
  349. package/dist/{keys-241d03b7.js.map → keys-BEdEsanp.js.map} +1 -1
  350. package/dist/{keys-7ecef029.js → keys-C8Zfr_By.js} +1 -1
  351. package/dist/{keys-7ecef029.js.map → keys-C8Zfr_By.js.map} +1 -1
  352. package/dist/{misc-76697f61.js → misc-CHQs-G03.js} +1 -1
  353. package/dist/{misc-76697f61.js.map → misc-CHQs-G03.js.map} +1 -1
  354. package/dist/{parseISO-ed4094c1.js → parseISO-wlfIB_QJ.js} +12 -18
  355. package/dist/{parseISO-ed4094c1.js.map → parseISO-wlfIB_QJ.js.map} +1 -1
  356. package/dist/{searchFuzzy-9b74ec4e.js → searchFuzzy-DKooyZM8.js} +110 -149
  357. package/dist/{searchFuzzy-9b74ec4e.js.map → searchFuzzy-DKooyZM8.js.map} +1 -1
  358. package/dist/{statusLevels-a8b041f4.js → statusLevels-D8EgtE_L.js} +1 -1
  359. package/dist/{statusLevels-a8b041f4.js.map → statusLevels-D8EgtE_L.js.map} +1 -1
  360. package/dist/storage.js +8 -15
  361. package/dist/storage.js.map +1 -1
  362. package/dist/tailwind-base.js.map +1 -1
  363. package/dist/{toTimeZone-a2ed6470.js → toTimeZone-CVE1ZmsS.js} +1 -1
  364. package/dist/{toTimeZone-a2ed6470.js.map → toTimeZone-CVE1ZmsS.js.map} +1 -1
  365. package/dist/useDialog.js +7 -7
  366. package/dist/useGoogleMaps.js +18 -28
  367. package/dist/useGoogleMaps.js.map +1 -1
  368. package/dist/useModals.js +1 -2
  369. package/dist/useModals.js.map +1 -1
  370. package/dist/useScriptTag.js.map +1 -1
  371. package/dist/useSearch.js +14 -19
  372. package/dist/useSearch.js.map +1 -1
  373. package/dist/useStepper.js.map +1 -1
  374. package/dist/useValidation.js +1 -1
  375. package/dist/useValidation.js.map +1 -1
  376. package/dist/utils/calculateElementOverflow.js +9 -13
  377. package/dist/utils/calculateElementOverflow.js.map +1 -1
  378. package/dist/utils/colorScheme.js.map +1 -1
  379. package/dist/utils/createQueryString.js +4 -5
  380. package/dist/utils/createQueryString.js.map +1 -1
  381. package/dist/utils/createValidDate.js +2 -2
  382. package/dist/utils/formatDateTime.js +4 -5
  383. package/dist/utils/formatDateTime.js.map +1 -1
  384. package/dist/utils/getContrastingTextColor.js +1 -1
  385. package/dist/utils/getContrastingTextColor.js.map +1 -1
  386. package/dist/utils/helpers.js.map +1 -1
  387. package/dist/utils/i18n.js +25 -26
  388. package/dist/utils/i18n.js.map +1 -1
  389. package/dist/utils/normalizeDate.js +1 -1
  390. package/dist/utils/searchFuzzy.js +3 -10
  391. package/dist/utils/searchFuzzy.js.map +1 -1
  392. package/dist/utils/storage.js +6 -11
  393. package/dist/utils/storage.js.map +1 -1
  394. package/dist/utils/toTimeZone.js +2 -3
  395. package/dist/utils/toTimeZone.js.map +1 -1
  396. package/package.json +13 -14
  397. package/dist/Button.vue_used_vue_type_style_index_0_lang.module-4dabc2a9.js +0 -17
  398. package/dist/Button.vue_used_vue_type_style_index_0_lang.module-4dabc2a9.js.map +0 -1
  399. package/dist/Carousel.types.d.ts +0 -33
  400. package/dist/Carousel.types.js +0 -2
  401. package/dist/Carousel.types.js.map +0 -1
  402. package/dist/Checkbox.vue_used_vue_type_style_index_0_lang.module-fa8d9c06.js +0 -9
  403. package/dist/Checkbox.vue_used_vue_type_style_index_0_lang.module-fa8d9c06.js.map +0 -1
  404. package/dist/DataView.vue_used_vue_type_style_index_0_lang.module-5c180dba.js.map +0 -1
  405. package/dist/EmptyState.vue_used_vue_type_style_index_0_lang.module-f5d89366.js +0 -8
  406. package/dist/EmptyState.vue_used_vue_type_style_index_0_lang.module-f5d89366.js.map +0 -1
  407. package/dist/Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js +0 -11
  408. package/dist/Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js.map +0 -1
  409. package/dist/Loading.vue_used_vue_type_style_index_0_lang.module-ef5a3bc6.js +0 -8
  410. package/dist/Loading.vue_used_vue_type_style_index_0_lang.module-ef5a3bc6.js.map +0 -1
  411. package/dist/Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js +0 -11
  412. package/dist/Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js.map +0 -1
  413. package/dist/Table.keys-83e4f09b.js +0 -27
  414. package/dist/Tabs.vue_used_vue_type_style_index_0_lang.module-d7530989.js.map +0 -1
  415. package/dist/_commonjsHelpers-10dfc225.js.map +0 -1
  416. package/dist/_plugin-vue_export-helper-dad06003.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DataViewFilters.js","sources":["../src/components/DataViewFilters/DataViewFilters.types.ts","../src/components/DataViewFilters/useFilters.ts","../src/components/DataViewFilters/DataViewFilters.vue"],"sourcesContent":["import { UseFiltersReturnType } from './useFilters';\n\n/**\n * A function that is called when the user clicks one of the \"Apply\" buttons in DataViewFilters.\n *\n * A return value of `{ preventDismiss: true }` can be used to prevent the DataViewFilters drawer or a FilterDropdown from closing, such as when some filters have invalid values.\n */\nexport type OnApplyFilters = () => Promise<{ preventDismiss?: boolean } | void> | { preventDismiss?: boolean } | void;\n\nexport enum DrawerStyle {\n /** Displays all groups and their fields without the need for navigating submenus. */\n Cascade = 'cascade',\n /** Displays only group names or fields; navigation between the group names and a submenu of fields is required. */\n Nested = 'nested',\n}\n\nexport type DrawerStyles = `${DrawerStyle}`;\n\nexport interface DataViewFiltersUtilsInjection {\n useFiltersInstance?: UseFiltersReturnType;\n drawerStyle?: DrawerStyles;\n}\n","import cloneDeep from 'lodash-es/cloneDeep';\nimport { computed, ComputedRef, Ref, ref } from 'vue';\n\nimport isDefined from '../../composables/useValidation/utils/isDefined';\nimport DataView from '../DataView/DataView.vue';\n\ntype DataViewInstance = InstanceType<typeof DataView>;\n\n/**\n * Contains metadata and configuration for the filters.\n * @see https://www.typescriptlang.org/docs/handbook/2/mapped-types.html\n */\nexport type UseFiltersSchema<Values extends object, Groups extends string> = {\n [Property in keyof Values]: {\n defaultValue?: Values[Property];\n group?: Groups;\n isActive?: (value: Values[Property]) => boolean;\n };\n};\n\nexport interface UseFiltersArgs<Values extends object, Groups extends string> {\n schema: UseFiltersSchema<Values, Groups>;\n /** A ref for an instance of DataView */\n dataViewRef: Ref<unknown>; // Note: using `Ref<InstanceType<typeof DataView>>` here causes type errors when providing a value for this argument\n}\n\nexport interface UseFiltersReturnType<Values = object, Groups extends string = string> {\n applyFilters: () => void;\n resetAllFilters: () => void;\n resetFilterGroup: (group: string) => void; // Note: group is intentionally not typed as `Groups` since there is no way to pass in a Groups type to UseFiltersReturnType within DataViewFilters.vue\n undoWorkingFilters: () => void;\n activeFiltersCounts: ComputedRef<Record<Groups, number>>;\n totalActiveFiltersCount: ComputedRef<number>;\n appliedFilters: Ref<Values>;\n workingFilters: Ref<Values>;\n}\n\n/**\n * Provides utility functions for working with `DataViewFilters`.\n */\nexport function useFilters<Values extends object, Groups extends string>({\n schema,\n dataViewRef,\n}: UseFiltersArgs<Values, Groups>): UseFiltersReturnType<Values, Groups> {\n const appliedFilters = ref({}) as Ref<Values>;\n const workingFilters = ref({}) as Ref<Values>;\n\n for (const filterName in schema) {\n // @ts-expect-error \"could be instantiated with an arbitrary type\"; TODO: figure out how to resolve the types\n appliedFilters.value[filterName] = schema[filterName].defaultValue;\n // @ts-expect-error \"could be instantiated with an arbitrary type\"; TODO: figure out how to resolve the types\n workingFilters.value[filterName] = schema[filterName].defaultValue;\n }\n\n const dvRef = dataViewRef as Ref<DataViewInstance>;\n\n /**\n * For when an \"Apply\" button is clicked. It does the following:\n * 1) applies the working filter state\n * 2) sets the current page to 1\n * 3) emits the \"update\" event from DataView\n */\n function applyFilters() {\n appliedFilters.value = cloneDeep(workingFilters.value);\n dvRef.value.updateCurrentFilters(appliedFilters.value, { shouldEmit: true });\n }\n\n /**\n * For when a \"Reset all\" button is clicked. It does the following:\n * 1) applies the defaultValue filter values to all filters\n * 2) sets the current page to 1\n * 3) emits the \"update\" event from DataView\n */\n function resetAllFilters() {\n for (const filterName in schema) {\n // @ts-expect-error \"could be instantiated with an arbitrary type\"; TODO: figure out how to resolve the types\n appliedFilters.value[filterName] = schema[filterName].defaultValue;\n // @ts-expect-error \"could be instantiated with an arbitrary type\"; TODO: figure out how to resolve the types\n workingFilters.value[filterName] = schema[filterName].defaultValue;\n }\n\n dvRef.value.updateCurrentFilters(appliedFilters.value, { shouldEmit: true });\n }\n\n /**\n * For when a \"Reset\" button is clicked. It does the following:\n * 1) applies the defaultValue filter values to the given filter group\n * 2) sets the current page to 1\n * 3) emits the \"update\" event from DataView\n */\n function resetFilterGroup(group: Groups) {\n for (const filterName in schema) {\n if (schema[filterName].group === group) {\n // @ts-expect-error \"could be instantiated with an arbitrary type\"; TODO: figure out how to resolve the types\n appliedFilters.value[filterName] = schema[filterName].defaultValue;\n // @ts-expect-error \"could be instantiated with an arbitrary type\"; TODO: figure out how to resolve the types\n workingFilters.value[filterName] = schema[filterName].defaultValue;\n }\n }\n\n dvRef.value.updateCurrentFilters(appliedFilters.value, { shouldEmit: true });\n }\n\n /**\n * Resets the `workingFilters` to match the `appliedFilters`. This can be used when the FilterDrawer or a FilterDropdown is dismissed without clicking \"Reset\" or \"Apply\".\n */\n function undoWorkingFilters() {\n workingFilters.value = cloneDeep(appliedFilters.value);\n }\n\n const activeFiltersCounts = computed(() => {\n const counts = {} as Record<Groups, number>;\n\n for (const filterName in schema) {\n const config = schema[filterName];\n const value = appliedFilters.value[filterName];\n const isActive = config.isActive?.(value) || isDefined(value);\n\n if (isActive && config.group) {\n counts[config.group] = (counts[config.group] ?? 0) + 1;\n }\n }\n\n return counts;\n });\n\n const totalActiveFiltersCount = computed(() => {\n let count = 0;\n\n for (const filterName in schema) {\n const config = schema[filterName];\n const value = appliedFilters.value[filterName];\n const isActive = config.isActive?.(value) || isDefined(value);\n\n if (isActive) {\n count += 1;\n }\n }\n\n return count;\n });\n\n return {\n applyFilters,\n resetAllFilters,\n // @ts-expect-error \"could be instantiated with a different subtype\": TODO: figure out how to resolve the types\n resetFilterGroup,\n undoWorkingFilters,\n activeFiltersCounts,\n totalActiveFiltersCount,\n appliedFilters,\n workingFilters,\n };\n}\n\nexport default useFilters;\n","<script lang=\"ts\">\n export * from './DataViewFilters.keys';\n export * from './DataViewFilters.types';\n export * from './useFilters';\n</script>\n\n<script setup lang=\"ts\">\n import { computed, inject, provide, ref, watch } from 'vue';\n\n import useMediaQuery from '../../composables/useMediaQuery/useMediaQuery';\n import { SCREEN_SIZES } from '../../constants';\n import { t } from '../../locale';\n import Box from '../Box/Box.vue';\n import Button from '../Button/Button.vue';\n import { DATA_VIEW_INJECTION } from '../DataView/DataView.vue';\n import FilterChip from '../FilterChip/FilterChip.vue';\n import Icon from '../Icon/Icon.vue';\n import Label from '../Label/Label.vue';\n import Modal, { type ModalProps } from '../Modal/Modal.vue';\n import SearchBar, { SearchBarProps } from '../SearchBar/SearchBar.vue';\n import { DATA_VIEW_FILTERS_UTILS_INJECTION } from './DataViewFilters.keys';\n import type { DrawerStyles, OnApplyFilters } from './DataViewFilters.types';\n import type { UseFiltersReturnType } from './useFilters';\n\n export interface DataViewFiltersProps {\n filtersLabelText?: string;\n /**\n * Props to pass to the `SearchBar` component.\n */\n searchBarProps?: SearchBarProps;\n showSearch?: boolean;\n /** 'cascade' displays all fields within every filter group; 'nested' displays only the group names and requires clicking a group to view its fields. */\n drawerStyle?: DrawerStyles;\n drawerProps?: ModalProps;\n /**\n * @deprecated The `activeGroup` prop is a sufficient replacement for this prop. A falsy `activeGroup` will hide the button and a truthy `activeGroup` will show it (when the `drawerStyle` is 'nested').\n *\n * **Note:** This prop has no effect when using a \"cascade\" `drawerStyle`.\n */\n showDrawerPreviousButton?: boolean;\n /**\n * Required when using filters. This prop should contain the return value of the `useFilters()` composable.\n */\n useFiltersInstance?: UseFiltersReturnType;\n onApply?: OnApplyFilters;\n /**\n * The name of the active filter group. The active filter group is determined by which instance of FilterDropdown or FilterDrawerItem is open.\n *\n * **Note:** This prop is required when using a \"nested\" `drawerStyle`, but has no effect when using a \"cascade\" `drawerStyle`.\n */\n activeGroup?: string;\n }\n\n export interface DataViewFiltersSlots {\n default?: void;\n drawer?: void;\n 'filters-label'?: void;\n }\n\n const props = withDefaults(defineProps<DataViewFiltersProps>(), {\n filtersLabelText: t('ll.filterBy'),\n isLoading: false,\n drawerStyle: 'cascade',\n drawerProps: undefined,\n searchBarProps: undefined,\n showDrawerPreviousButton: false,\n showSearch: true,\n useFiltersInstance: undefined,\n onApply: undefined,\n activeGroup: undefined,\n });\n\n const emit = defineEmits<{\n /** When the drawer is opened */\n (e: 'open-drawer'): void;\n /** When the drawer is dismissed */\n (e: 'dismiss'): void;\n /** When the \"Previous\" button in the header is clicked */\n (e: 'previous'): void;\n /** When the \"Reset\" button is clicked while viewing a filter group */\n (e: 'reset-group'): void;\n /** When one of the \"Reset All\" buttons is clicked */\n (e: 'reset-all'): void;\n }>();\n\n const slots = defineSlots<DataViewFiltersSlots>();\n\n const isDesktop = useMediaQuery(`(min-width: ${SCREEN_SIZES.lg})`);\n const isViewingGroupsMenu = computed(() => props.drawerStyle === 'nested' && !props.activeGroup);\n const isViewingSingleGroup = computed(() => props.drawerStyle === 'nested' && props.activeGroup);\n\n const {\n density,\n isLoading: isDataViewLoading,\n isWithinModule,\n currentSearch,\n updateCurrentSearch,\n } = inject(DATA_VIEW_INJECTION.key, DATA_VIEW_INJECTION.defaults);\n\n provide(DATA_VIEW_FILTERS_UTILS_INJECTION.key, {\n useFiltersInstance: props.useFiltersInstance,\n drawerStyle: props.drawerStyle,\n });\n\n const totalActiveFiltersCount = computed(() => props.useFiltersInstance?.totalActiveFiltersCount.value ?? 0);\n /** The number of active filters in the currently active group. This is only used when the drawerStyle is 'nested'. */\n const activeGroupActiveFiltersCount = computed(\n () => Number(props.activeGroup && props.useFiltersInstance?.activeFiltersCounts.value[props.activeGroup]) || 0,\n );\n const isDrawerOpen = ref(false);\n\n async function handleApplyClick() {\n const { preventDismiss } = (await props.onApply?.()) || props.useFiltersInstance?.applyFilters() || {};\n\n if (!preventDismiss) {\n isDrawerOpen.value = false;\n }\n }\n\n function handleResetGroupClick() {\n if (!props.activeGroup) {\n return;\n }\n\n props.useFiltersInstance?.resetFilterGroup(props.activeGroup);\n emit('reset-group');\n isDrawerOpen.value = false;\n }\n\n function handleResetAllClick() {\n props.useFiltersInstance?.resetAllFilters();\n emit('reset-all');\n isDrawerOpen.value = false;\n }\n\n function onDismiss() {\n props.useFiltersInstance?.undoWorkingFilters();\n isDrawerOpen.value = false;\n emit('dismiss');\n }\n\n watch(isDrawerOpen, () => {\n if (isDrawerOpen.value) {\n emit('open-drawer');\n }\n });\n</script>\n\n<template>\n <Box\n class=\"stash-data-view-filters tw-grid tw-grid-cols-12 tw-gap-6 tw-p-3\"\n :class=\"{ 'lg:tw-p-6': density === 'comfortable', 'tw-mb-3': !isWithinModule }\"\n :radius=\"isWithinModule ? 'none' : 'rounded'\"\n data-test=\"stash-data-view-filters\"\n disable-padding\n >\n <SearchBar\n v-if=\"props.showSearch\"\n class=\"tw-col-span-12 md:tw-col-span-6 lg:tw-col-span-4\"\n data-test=\"stash-data-view-filters|search-bar\"\n :is-loading=\"isDataViewLoading\"\n :label=\"t('ll.search')\"\n :model-value=\"currentSearch\"\n v-bind=\"props.searchBarProps\"\n @search=\"(searchTerm) => updateCurrentSearch(searchTerm, { shouldEmit: true })\"\n />\n <div\n v-if=\"slots.default\"\n class=\"tw-col-span-12 tw-row-start-2 md:tw-col-start-7 md:tw-row-start-1 lg:tw-col-span-8 lg:tw-col-start-5\"\n >\n <div class=\"tw-hidden md:tw-block\">\n <slot name=\"filters-label\">\n <Label>{{ props.filtersLabelText }}</Label>\n </slot>\n </div>\n <div class=\"tw-flex tw-gap-4\">\n <FilterChip\n secondary\n class=\"!tw-flex tw-w-full tw-justify-center tw-gap-4 md:!tw-inline-flex md:tw-w-auto\"\n data-test=\"stash-data-view-filters|drawer-toggle-button\"\n :filter-count=\"totalActiveFiltersCount\"\n @click=\"isDrawerOpen = true\"\n >\n <span class=\"tw-inline-flex tw-items-center tw-gap-3\">\n <Icon name=\"filter-line\" class=\"tw-text-ice-700\" />\n <span>{{ t('ll.filters') }}</span>\n </span>\n </FilterChip>\n <slot v-if=\"isDesktop\"></slot>\n <Button v-if=\"totalActiveFiltersCount > 0 && isDesktop\" inline @click=\"handleResetAllClick\">\n {{ t('ll.resetAll') }}\n </Button>\n </div>\n </div>\n <Modal\n v-if=\"slots.drawer\"\n data-test=\"stash-data-view-filters|drawer\"\n disable-body-padding\n position=\"right\"\n size=\"narrow\"\n :is-open=\"isDrawerOpen\"\n :title=\"t('ll.allFilters')\"\n v-bind=\"props.drawerProps\"\n @dismiss=\"onDismiss\"\n >\n <template #headerAction>\n <Button\n v-if=\"isViewingSingleGroup\"\n icon\n class=\"tw-text-ice-100\"\n data-test=\"stash-data-view-filters|drawer-previous-button\"\n :aria-label=\"t('ll.previous')\"\n :title=\"t('ll.previous')\"\n @click=\"emit('previous')\"\n >\n <Icon name=\"chevron-left\" />\n </Button>\n </template>\n\n <slot name=\"drawer\"></slot>\n\n <template #footer>\n <div class=\"tw-flex tw-justify-end tw-gap-gutter\">\n <Button v-if=\"totalActiveFiltersCount === 0\" secondary @click=\"onDismiss\">\n {{ t('ll.cancel') }}\n </Button>\n <Button\n v-if=\"(isViewingGroupsMenu || props.drawerStyle === 'cascade') && totalActiveFiltersCount > 0\"\n secondary\n :disabled=\"isDataViewLoading\"\n @click=\"handleResetAllClick\"\n >\n {{ t('ll.resetAll') }}\n </Button>\n <Button\n v-if=\"isViewingSingleGroup && activeGroupActiveFiltersCount > 0\"\n secondary\n :disabled=\"isDataViewLoading\"\n @click=\"handleResetGroupClick\"\n >\n {{ t('ll.reset') }}\n </Button>\n <Button\n v-if=\"isViewingSingleGroup || props.drawerStyle === 'cascade'\"\n :disabled=\"isDataViewLoading\"\n @click=\"handleApplyClick\"\n >\n {{ t('ll.apply') }}\n </Button>\n </div>\n </template>\n </Modal>\n </Box>\n</template>\n"],"names":["DrawerStyle","useFilters","schema","dataViewRef","appliedFilters","ref","workingFilters","filterName","dvRef","applyFilters","cloneDeep","resetAllFilters","resetFilterGroup","group","undoWorkingFilters","activeFiltersCounts","computed","counts","config","value","_a","isDefined","totalActiveFiltersCount","count","props","__props","emit","__emit","slots","_useSlots","isDesktop","useMediaQuery","SCREEN_SIZES","isViewingGroupsMenu","isViewingSingleGroup","density","isDataViewLoading","isWithinModule","currentSearch","updateCurrentSearch","inject","DATA_VIEW_INJECTION","provide","DATA_VIEW_FILTERS_UTILS_INJECTION","activeGroupActiveFiltersCount","isDrawerOpen","handleApplyClick","preventDismiss","_b","handleResetGroupClick","handleResetAllClick","onDismiss","watch"],"mappings":"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"}
1
+ {"version":3,"file":"DataViewFilters.js","sources":["../src/components/DataViewFilters/DataViewFilters.types.ts","../src/components/DataViewFilters/useFilters.ts","../src/components/DataViewFilters/DataViewFilters.vue"],"sourcesContent":["import { UseFiltersReturnType } from './useFilters';\n\n/**\n * A function that is called when the user clicks one of the \"Apply\" buttons in DataViewFilters.\n *\n * A return value of `{ preventDismiss: true }` can be used to prevent the DataViewFilters drawer or a FilterDropdown from closing, such as when some filters have invalid values.\n */\nexport type OnApplyFilters = () => Promise<{ preventDismiss?: boolean } | void> | { preventDismiss?: boolean } | void;\n\nexport enum DrawerStyle {\n /** Displays all groups and their fields without the need for navigating submenus. */\n Cascade = 'cascade',\n /** Displays only group names or fields; navigation between the group names and a submenu of fields is required. */\n Nested = 'nested',\n}\n\nexport type DrawerStyles = `${DrawerStyle}`;\n\nexport interface DataViewFiltersUtilsInjection {\n useFiltersInstance?: UseFiltersReturnType;\n drawerStyle?: DrawerStyles;\n}\n","import cloneDeep from 'lodash-es/cloneDeep';\nimport { computed, ComputedRef, Ref, ref } from 'vue';\n\nimport isDefined from '../../composables/useValidation/utils/isDefined';\nimport DataView from '../DataView/DataView.vue';\n\ntype DataViewInstance = InstanceType<typeof DataView>;\n\n/**\n * Contains metadata and configuration for the filters.\n * @see https://www.typescriptlang.org/docs/handbook/2/mapped-types.html\n */\nexport type UseFiltersSchema<Values extends object, Groups extends string> = {\n [Property in keyof Values]: {\n defaultValue?: Values[Property];\n group?: Groups;\n isActive?: (value: Values[Property]) => boolean;\n };\n};\n\nexport interface UseFiltersArgs<Values extends object, Groups extends string> {\n schema: UseFiltersSchema<Values, Groups>;\n /** A ref for an instance of DataView */\n dataViewRef: Ref<unknown>; // Note: using `Ref<InstanceType<typeof DataView>>` here causes type errors when providing a value for this argument\n}\n\nexport interface UseFiltersReturnType<Values = object, Groups extends string = string> {\n applyFilters: () => void;\n resetAllFilters: () => void;\n resetFilterGroup: (group: string) => void; // Note: group is intentionally not typed as `Groups` since there is no way to pass in a Groups type to UseFiltersReturnType within DataViewFilters.vue\n undoWorkingFilters: () => void;\n activeFiltersCounts: ComputedRef<Record<Groups, number>>;\n totalActiveFiltersCount: ComputedRef<number>;\n appliedFilters: Ref<Values>;\n workingFilters: Ref<Values>;\n}\n\n/**\n * Provides utility functions for working with `DataViewFilters`.\n */\nexport function useFilters<Values extends object, Groups extends string>({\n schema,\n dataViewRef,\n}: UseFiltersArgs<Values, Groups>): UseFiltersReturnType<Values, Groups> {\n const appliedFilters = ref({}) as Ref<Values>;\n const workingFilters = ref({}) as Ref<Values>;\n\n for (const filterName in schema) {\n // @ts-expect-error \"could be instantiated with an arbitrary type\"; TODO: figure out how to resolve the types\n appliedFilters.value[filterName] = schema[filterName].defaultValue;\n // @ts-expect-error \"could be instantiated with an arbitrary type\"; TODO: figure out how to resolve the types\n workingFilters.value[filterName] = schema[filterName].defaultValue;\n }\n\n const dvRef = dataViewRef as Ref<DataViewInstance>;\n\n /**\n * For when an \"Apply\" button is clicked. It does the following:\n * 1) applies the working filter state\n * 2) sets the current page to 1\n * 3) emits the \"update\" event from DataView\n */\n function applyFilters() {\n appliedFilters.value = cloneDeep(workingFilters.value);\n dvRef.value.updateCurrentFilters(appliedFilters.value, { shouldEmit: true });\n }\n\n /**\n * For when a \"Reset all\" button is clicked. It does the following:\n * 1) applies the defaultValue filter values to all filters\n * 2) sets the current page to 1\n * 3) emits the \"update\" event from DataView\n */\n function resetAllFilters() {\n for (const filterName in schema) {\n // @ts-expect-error \"could be instantiated with an arbitrary type\"; TODO: figure out how to resolve the types\n appliedFilters.value[filterName] = schema[filterName].defaultValue;\n // @ts-expect-error \"could be instantiated with an arbitrary type\"; TODO: figure out how to resolve the types\n workingFilters.value[filterName] = schema[filterName].defaultValue;\n }\n\n dvRef.value.updateCurrentFilters(appliedFilters.value, { shouldEmit: true });\n }\n\n /**\n * For when a \"Reset\" button is clicked. It does the following:\n * 1) applies the defaultValue filter values to the given filter group\n * 2) sets the current page to 1\n * 3) emits the \"update\" event from DataView\n */\n function resetFilterGroup(group: Groups) {\n for (const filterName in schema) {\n if (schema[filterName].group === group) {\n // @ts-expect-error \"could be instantiated with an arbitrary type\"; TODO: figure out how to resolve the types\n appliedFilters.value[filterName] = schema[filterName].defaultValue;\n // @ts-expect-error \"could be instantiated with an arbitrary type\"; TODO: figure out how to resolve the types\n workingFilters.value[filterName] = schema[filterName].defaultValue;\n }\n }\n\n dvRef.value.updateCurrentFilters(appliedFilters.value, { shouldEmit: true });\n }\n\n /**\n * Resets the `workingFilters` to match the `appliedFilters`. This can be used when the FilterDrawer or a FilterDropdown is dismissed without clicking \"Reset\" or \"Apply\".\n */\n function undoWorkingFilters() {\n workingFilters.value = cloneDeep(appliedFilters.value);\n }\n\n const activeFiltersCounts = computed(() => {\n const counts = {} as Record<Groups, number>;\n\n for (const filterName in schema) {\n const config = schema[filterName];\n const value = appliedFilters.value[filterName];\n const isActive = config.isActive?.(value) || isDefined(value);\n\n if (isActive && config.group) {\n counts[config.group] = (counts[config.group] ?? 0) + 1;\n }\n }\n\n return counts;\n });\n\n const totalActiveFiltersCount = computed(() => {\n let count = 0;\n\n for (const filterName in schema) {\n const config = schema[filterName];\n const value = appliedFilters.value[filterName];\n const isActive = config.isActive?.(value) || isDefined(value);\n\n if (isActive) {\n count += 1;\n }\n }\n\n return count;\n });\n\n return {\n applyFilters,\n resetAllFilters,\n // @ts-expect-error \"could be instantiated with a different subtype\": TODO: figure out how to resolve the types\n resetFilterGroup,\n undoWorkingFilters,\n activeFiltersCounts,\n totalActiveFiltersCount,\n appliedFilters,\n workingFilters,\n };\n}\n\nexport default useFilters;\n","<script lang=\"ts\">\n export * from './DataViewFilters.keys';\n export * from './DataViewFilters.types';\n export * from './useFilters';\n</script>\n\n<script setup lang=\"ts\">\n import { computed, inject, provide, ref, watch } from 'vue';\n\n import useMediaQuery from '../../composables/useMediaQuery/useMediaQuery';\n import { SCREEN_SIZES } from '../../constants';\n import { t } from '../../locale';\n import Box from '../Box/Box.vue';\n import Button from '../Button/Button.vue';\n import { DATA_VIEW_INJECTION } from '../DataView/DataView.vue';\n import FilterChip from '../FilterChip/FilterChip.vue';\n import Icon from '../Icon/Icon.vue';\n import Label from '../Label/Label.vue';\n import Modal, { type ModalProps } from '../Modal/Modal.vue';\n import SearchBar, { SearchBarProps } from '../SearchBar/SearchBar.vue';\n import { DATA_VIEW_FILTERS_UTILS_INJECTION } from './DataViewFilters.keys';\n import type { DrawerStyles, OnApplyFilters } from './DataViewFilters.types';\n import type { UseFiltersReturnType } from './useFilters';\n\n export interface DataViewFiltersProps {\n filtersLabelText?: string;\n /**\n * Props to pass to the `SearchBar` component.\n */\n searchBarProps?: SearchBarProps;\n showSearch?: boolean;\n /** 'cascade' displays all fields within every filter group; 'nested' displays only the group names and requires clicking a group to view its fields. */\n drawerStyle?: DrawerStyles;\n drawerProps?: ModalProps;\n /**\n * @deprecated The `activeGroup` prop is a sufficient replacement for this prop. A falsy `activeGroup` will hide the button and a truthy `activeGroup` will show it (when the `drawerStyle` is 'nested').\n *\n * **Note:** This prop has no effect when using a \"cascade\" `drawerStyle`.\n */\n showDrawerPreviousButton?: boolean;\n /**\n * Required when using filters. This prop should contain the return value of the `useFilters()` composable.\n */\n useFiltersInstance?: UseFiltersReturnType;\n onApply?: OnApplyFilters;\n /**\n * The name of the active filter group. The active filter group is determined by which instance of FilterDropdown or FilterDrawerItem is open.\n *\n * **Note:** This prop is required when using a \"nested\" `drawerStyle`, but has no effect when using a \"cascade\" `drawerStyle`.\n */\n activeGroup?: string;\n }\n\n export interface DataViewFiltersSlots {\n default?: void;\n drawer?: void;\n 'filters-label'?: void;\n }\n\n const props = withDefaults(defineProps<DataViewFiltersProps>(), {\n filtersLabelText: t('ll.filterBy'),\n isLoading: false,\n drawerStyle: 'cascade',\n drawerProps: undefined,\n searchBarProps: undefined,\n showDrawerPreviousButton: false,\n showSearch: true,\n useFiltersInstance: undefined,\n onApply: undefined,\n activeGroup: undefined,\n });\n\n const emit = defineEmits<{\n /** When the drawer is opened */\n (e: 'open-drawer'): void;\n /** When the drawer is dismissed */\n (e: 'dismiss'): void;\n /** When the \"Previous\" button in the header is clicked */\n (e: 'previous'): void;\n /** When the \"Reset\" button is clicked while viewing a filter group */\n (e: 'reset-group'): void;\n /** When one of the \"Reset All\" buttons is clicked */\n (e: 'reset-all'): void;\n }>();\n\n const slots = defineSlots<DataViewFiltersSlots>();\n\n const isDesktop = useMediaQuery(`(min-width: ${SCREEN_SIZES.lg})`);\n const isViewingGroupsMenu = computed(() => props.drawerStyle === 'nested' && !props.activeGroup);\n const isViewingSingleGroup = computed(() => props.drawerStyle === 'nested' && props.activeGroup);\n\n const {\n density,\n isLoading: isDataViewLoading,\n isWithinModule,\n currentSearch,\n updateCurrentSearch,\n } = inject(DATA_VIEW_INJECTION.key, DATA_VIEW_INJECTION.defaults);\n\n provide(DATA_VIEW_FILTERS_UTILS_INJECTION.key, {\n useFiltersInstance: props.useFiltersInstance,\n drawerStyle: props.drawerStyle,\n });\n\n const totalActiveFiltersCount = computed(() => props.useFiltersInstance?.totalActiveFiltersCount.value ?? 0);\n /** The number of active filters in the currently active group. This is only used when the drawerStyle is 'nested'. */\n const activeGroupActiveFiltersCount = computed(\n () => Number(props.activeGroup && props.useFiltersInstance?.activeFiltersCounts.value[props.activeGroup]) || 0,\n );\n const isDrawerOpen = ref(false);\n\n async function handleApplyClick() {\n const { preventDismiss } = (await props.onApply?.()) || props.useFiltersInstance?.applyFilters() || {};\n\n if (!preventDismiss) {\n isDrawerOpen.value = false;\n }\n }\n\n function handleResetGroupClick() {\n if (!props.activeGroup) {\n return;\n }\n\n props.useFiltersInstance?.resetFilterGroup(props.activeGroup);\n emit('reset-group');\n isDrawerOpen.value = false;\n }\n\n function handleResetAllClick() {\n props.useFiltersInstance?.resetAllFilters();\n emit('reset-all');\n isDrawerOpen.value = false;\n }\n\n function onDismiss() {\n props.useFiltersInstance?.undoWorkingFilters();\n isDrawerOpen.value = false;\n emit('dismiss');\n }\n\n watch(isDrawerOpen, () => {\n if (isDrawerOpen.value) {\n emit('open-drawer');\n }\n });\n</script>\n\n<template>\n <Box\n class=\"stash-data-view-filters tw-grid tw-grid-cols-12 tw-gap-6 tw-p-3\"\n :class=\"{ 'lg:tw-p-6': density === 'comfortable', 'tw-mb-3': !isWithinModule }\"\n :radius=\"isWithinModule ? 'none' : 'rounded'\"\n data-test=\"stash-data-view-filters\"\n disable-padding\n >\n <SearchBar\n v-if=\"props.showSearch\"\n class=\"tw-col-span-12 md:tw-col-span-6 lg:tw-col-span-4\"\n data-test=\"stash-data-view-filters|search-bar\"\n :is-loading=\"isDataViewLoading\"\n :label=\"t('ll.search')\"\n :model-value=\"currentSearch\"\n v-bind=\"props.searchBarProps\"\n @search=\"(searchTerm) => updateCurrentSearch(searchTerm, { shouldEmit: true })\"\n />\n <div\n v-if=\"slots.default\"\n class=\"tw-col-span-12 tw-row-start-2 md:tw-col-start-7 md:tw-row-start-1 lg:tw-col-span-8 lg:tw-col-start-5\"\n >\n <div class=\"tw-hidden md:tw-block\">\n <slot name=\"filters-label\">\n <Label>{{ props.filtersLabelText }}</Label>\n </slot>\n </div>\n <div class=\"tw-flex tw-gap-4\">\n <FilterChip\n secondary\n class=\"!tw-flex tw-w-full tw-justify-center tw-gap-4 md:!tw-inline-flex md:tw-w-auto\"\n data-test=\"stash-data-view-filters|drawer-toggle-button\"\n :filter-count=\"totalActiveFiltersCount\"\n @click=\"isDrawerOpen = true\"\n >\n <span class=\"tw-inline-flex tw-items-center tw-gap-3\">\n <Icon name=\"filter-line\" class=\"tw-text-ice-700\" />\n <span>{{ t('ll.filters') }}</span>\n </span>\n </FilterChip>\n <slot v-if=\"isDesktop\"></slot>\n <Button v-if=\"totalActiveFiltersCount > 0 && isDesktop\" inline @click=\"handleResetAllClick\">\n {{ t('ll.resetAll') }}\n </Button>\n </div>\n </div>\n <Modal\n v-if=\"slots.drawer\"\n data-test=\"stash-data-view-filters|drawer\"\n disable-body-padding\n position=\"right\"\n size=\"narrow\"\n :is-open=\"isDrawerOpen\"\n :title=\"t('ll.allFilters')\"\n v-bind=\"props.drawerProps\"\n @dismiss=\"onDismiss\"\n >\n <template #headerAction>\n <Button\n v-if=\"isViewingSingleGroup\"\n icon\n class=\"tw-text-ice-100\"\n data-test=\"stash-data-view-filters|drawer-previous-button\"\n :aria-label=\"t('ll.previous')\"\n :title=\"t('ll.previous')\"\n @click=\"emit('previous')\"\n >\n <Icon name=\"chevron-left\" />\n </Button>\n </template>\n\n <slot name=\"drawer\"></slot>\n\n <template #footer>\n <div class=\"tw-flex tw-justify-end tw-gap-gutter\">\n <Button v-if=\"totalActiveFiltersCount === 0\" secondary @click=\"onDismiss\">\n {{ t('ll.cancel') }}\n </Button>\n <Button\n v-if=\"(isViewingGroupsMenu || props.drawerStyle === 'cascade') && totalActiveFiltersCount > 0\"\n secondary\n :disabled=\"isDataViewLoading\"\n @click=\"handleResetAllClick\"\n >\n {{ t('ll.resetAll') }}\n </Button>\n <Button\n v-if=\"isViewingSingleGroup && activeGroupActiveFiltersCount > 0\"\n secondary\n :disabled=\"isDataViewLoading\"\n @click=\"handleResetGroupClick\"\n >\n {{ t('ll.reset') }}\n </Button>\n <Button\n v-if=\"isViewingSingleGroup || props.drawerStyle === 'cascade'\"\n :disabled=\"isDataViewLoading\"\n @click=\"handleApplyClick\"\n >\n {{ t('ll.apply') }}\n </Button>\n </div>\n </template>\n </Modal>\n </Box>\n</template>\n"],"names":["DrawerStyle","useFilters","schema","dataViewRef","appliedFilters","ref","workingFilters","filterName","dvRef","applyFilters","cloneDeep","resetAllFilters","resetFilterGroup","group","undoWorkingFilters","activeFiltersCounts","computed","counts","config","value","_a","isDefined","totalActiveFiltersCount","count","props","__props","emit","__emit","slots","_useSlots","isDesktop","useMediaQuery","SCREEN_SIZES","isViewingGroupsMenu","isViewingSingleGroup","density","isDataViewLoading","isWithinModule","currentSearch","updateCurrentSearch","inject","DATA_VIEW_INJECTION","provide","DATA_VIEW_FILTERS_UTILS_INJECTION","activeGroupActiveFiltersCount","isDrawerOpen","handleApplyClick","preventDismiss","_b","handleResetGroupClick","handleResetAllClick","onDismiss","watch"],"mappings":"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"}
@@ -4,4 +4,4 @@ const I = Object.freeze({
4
4
  export {
5
5
  I as D
6
6
  };
7
- //# sourceMappingURL=DataViewFilters.keys-c80ffabe.js.map
7
+ //# sourceMappingURL=DataViewFilters.keys-BLu07FiP.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataViewFilters.keys-c80ffabe.js","sources":["../src/components/DataViewFilters/DataViewFilters.keys.ts"],"sourcesContent":["import { Injection } from '../../../types/utils';\nimport { DataViewFiltersUtilsInjection } from './DataViewFilters.types';\n\n// See: https://vuejs.org/guide/typescript/composition-api.html#typing-provide-inject\n\nexport const DATA_VIEW_FILTERS_UTILS_INJECTION: Injection<DataViewFiltersUtilsInjection> = Object.freeze({\n key: Symbol('DATA_VIEW_FILTERS_UTILS_INJECTION_KEY'),\n});\n"],"names":["DATA_VIEW_FILTERS_UTILS_INJECTION"],"mappings":"AAKa,MAAAA,IAA8E,OAAO,OAAO;AAAA,EACvG,KAAK,OAAO,uCAAuC;AACrD,CAAC;"}
1
+ {"version":3,"file":"DataViewFilters.keys-BLu07FiP.js","sources":["../src/components/DataViewFilters/DataViewFilters.keys.ts"],"sourcesContent":["import { Injection } from '../../../types/utils';\nimport { DataViewFiltersUtilsInjection } from './DataViewFilters.types';\n\n// See: https://vuejs.org/guide/typescript/composition-api.html#typing-provide-inject\n\nexport const DATA_VIEW_FILTERS_UTILS_INJECTION: Injection<DataViewFiltersUtilsInjection> = Object.freeze({\n key: Symbol('DATA_VIEW_FILTERS_UTILS_INJECTION_KEY'),\n});\n"],"names":["DATA_VIEW_FILTERS_UTILS_INJECTION"],"mappings":"AAKa,MAAAA,IAA8E,OAAO,OAAO;AAAA,EACvG,KAAK,OAAO,uCAAuC;AACrD,CAAC;"}
@@ -78,49 +78,49 @@ export declare interface DataViewFiltersUtilsInjection {
78
78
  }
79
79
 
80
80
  declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<DataViewFiltersProps>, {
81
- filtersLabelText: any;
82
- isLoading: boolean;
83
- drawerStyle: string;
84
- drawerProps: undefined;
85
- searchBarProps: undefined;
86
- showDrawerPreviousButton: boolean;
87
- showSearch: boolean;
88
- useFiltersInstance: undefined;
89
- onApply: undefined;
90
- activeGroup: undefined;
81
+ filtersLabelText: any;
82
+ isLoading: boolean;
83
+ drawerStyle: string;
84
+ drawerProps: undefined;
85
+ searchBarProps: undefined;
86
+ showDrawerPreviousButton: boolean;
87
+ showSearch: boolean;
88
+ useFiltersInstance: undefined;
89
+ onApply: undefined;
90
+ activeGroup: undefined;
91
91
  }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
92
- "open-drawer": () => void;
93
- dismiss: () => void;
94
- previous: () => void;
95
- "reset-group": () => void;
96
- "reset-all": () => void;
92
+ "open-drawer": () => void;
93
+ dismiss: () => void;
94
+ previous: () => void;
95
+ "reset-group": () => void;
96
+ "reset-all": () => void;
97
97
  }, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<DataViewFiltersProps>, {
98
- filtersLabelText: any;
99
- isLoading: boolean;
100
- drawerStyle: string;
101
- drawerProps: undefined;
102
- searchBarProps: undefined;
103
- showDrawerPreviousButton: boolean;
104
- showSearch: boolean;
105
- useFiltersInstance: undefined;
106
- onApply: undefined;
107
- activeGroup: undefined;
98
+ filtersLabelText: any;
99
+ isLoading: boolean;
100
+ drawerStyle: string;
101
+ drawerProps: undefined;
102
+ searchBarProps: undefined;
103
+ showDrawerPreviousButton: boolean;
104
+ showSearch: boolean;
105
+ useFiltersInstance: undefined;
106
+ onApply: undefined;
107
+ activeGroup: undefined;
108
108
  }>>> & Readonly<{
109
- onDismiss?: (() => any) | undefined;
110
- "onOpen-drawer"?: (() => any) | undefined;
111
- onPrevious?: (() => any) | undefined;
112
- "onReset-group"?: (() => any) | undefined;
113
- "onReset-all"?: (() => any) | undefined;
109
+ onDismiss?: (() => any) | undefined;
110
+ "onOpen-drawer"?: (() => any) | undefined;
111
+ onPrevious?: (() => any) | undefined;
112
+ "onReset-group"?: (() => any) | undefined;
113
+ "onReset-all"?: (() => any) | undefined;
114
114
  }>, {
115
- filtersLabelText: string;
116
- searchBarProps: SearchBarProps;
117
- showSearch: boolean;
118
- drawerStyle: "cascade" | "nested";
119
- drawerProps: ModalProps;
120
- showDrawerPreviousButton: boolean;
121
- useFiltersInstance: UseFiltersReturnType<object, string>;
122
- onApply: OnApplyFilters;
123
- activeGroup: string;
115
+ filtersLabelText: string;
116
+ searchBarProps: SearchBarProps;
117
+ showSearch: boolean;
118
+ drawerStyle: "cascade" | "nested";
119
+ drawerProps: ModalProps;
120
+ showDrawerPreviousButton: boolean;
121
+ useFiltersInstance: UseFiltersReturnType<object, string>;
122
+ onApply: OnApplyFilters;
123
+ activeGroup: string;
124
124
  }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, Readonly<DataViewFiltersSlots> & DataViewFiltersSlots>;
125
125
  export default _default;
126
126
 
@@ -1,25 +1,12 @@
1
- import { defineComponent as y, useCssModule as D, inject as S, openBlock as r, createBlock as d, withCtx as o, createVNode as i, createTextVNode as n, toDisplayString as l, unref as t, createElementVNode as c, createElementBlock as f, Fragment as k, renderList as V, normalizeClass as b, createCommentVNode as m } from "vue";
1
+ import { defineComponent as y, useCssModule as D, inject as S, openBlock as s, createBlock as n, withCtx as o, createVNode as d, createTextVNode as l, toDisplayString as c, unref as t, createElementVNode as i, createElementBlock as f, Fragment as k, renderList as V, normalizeClass as b, createCommentVNode as u } from "vue";
2
2
  import { t as B } from "./locale.js";
3
- import u from "./Button.js";
3
+ import _ from "./Button.js";
4
4
  import "lodash-es/cloneDeep";
5
5
  import h from "./Icon.js";
6
- import "./Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js";
7
- import { D as C } from "./DataView.vue_used_vue_type_style_index_0_lang.module-5c180dba.js";
6
+ import { D as C } from "./DataView.keys-C7eaZg2G.js";
8
7
  import E from "./Dropdown.js";
9
8
  import I from "./IconLabel.js";
10
- import { _ as N } from "./_plugin-vue_export-helper-dad06003.js";
11
- import "lodash-es/get";
12
- import "./Button.vue_used_vue_type_style_index_0_lang.module-4dabc2a9.js";
13
- import "lodash-es/uniqueId";
14
- import "./index-9e1095ef.js";
15
- import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
16
- import "./constants.js";
17
- import "./directives/clickoutside.js";
18
- import "./utils/calculateElementOverflow.js";
19
- import "./utils/helpers.js";
20
- import "lodash-es/camelCase";
21
- import "lodash-es/isFinite";
22
- import "lodash-es/isPlainObject";
9
+ import { _ as N } from "./_plugin-vue_export-helper-CHgC5LLL.js";
23
10
  const v = {
24
11
  class: "dropdown__list",
25
12
  "data-test": "stash-data-view-sort-button|sort-menu"
@@ -29,18 +16,18 @@ const v = {
29
16
  sortOptions: { default: () => [] }
30
17
  },
31
18
  setup(x) {
32
- const _ = x, p = D(), { currentSortId: s, currentSortOrder: a, updateCurrentSort: w } = S(
19
+ const m = x, w = D(), { currentSortId: r, currentSortOrder: a, updateCurrentSort: p } = S(
33
20
  C.key,
34
21
  C.defaults
35
22
  );
36
- return (q, F) => _.sortOptions.length ? (r(), d(E, {
23
+ return (q, F) => m.sortOptions.length ? (s(), n(E, {
37
24
  key: 0,
38
25
  align: "left",
39
26
  class: "stash-data-view-sort-button",
40
27
  "data-test": "stash-data-view-sort-button"
41
28
  }, {
42
29
  toggle: o(({ isActive: e, toggle: g }) => [
43
- i(u, {
30
+ d(_, {
44
31
  "icon-label": "",
45
32
  "aria-expanded": e.toString(),
46
33
  class: "tw-text-blue-500",
@@ -48,12 +35,12 @@ const v = {
48
35
  onClick: g
49
36
  }, {
50
37
  default: o(() => [
51
- i(I, {
38
+ d(I, {
52
39
  icon: "sort",
53
40
  stacked: ""
54
41
  }, {
55
42
  default: o(() => [
56
- n(l(t(B)("ll.sort")), 1)
43
+ l(c(t(B)("ll.sort")), 1)
57
44
  ]),
58
45
  _: 1
59
46
  })
@@ -62,50 +49,50 @@ const v = {
62
49
  }, 1032, ["aria-expanded", "onClick"])
63
50
  ]),
64
51
  default: o(() => [
65
- c("ul", v, [
66
- (r(!0), f(k, null, V(_.sortOptions, (e) => (r(), f(k, {
52
+ i("ul", v, [
53
+ (s(!0), f(k, null, V(m.sortOptions, (e) => (s(), f(k, {
67
54
  key: e.id
68
55
  }, [
69
- c("li", {
56
+ i("li", {
70
57
  class: b(["dropdown__item tw-rounded", [
71
- t(p).dropdown__item,
72
- { "tw-bg-blue-100 tw-text-ice-700": e.id === t(s) && t(a) === "asc" }
58
+ t(w).dropdown__item,
59
+ { "tw-bg-blue-100 tw-text-ice-700": e.id === t(r) && t(a) === "asc" }
73
60
  ]]),
74
- onClick: () => t(w)(e.id, { sortOrder: "asc", shouldEmit: !0 })
61
+ onClick: () => t(p)(e.id, { sortOrder: "asc", shouldEmit: !0 })
75
62
  }, [
76
- i(u, {
63
+ d(_, {
77
64
  inline: "",
78
65
  class: "tw-h-9"
79
66
  }, {
80
67
  default: o(() => [
81
- n(l(e.labelAsc) + " ", 1),
82
- e.id === t(s) && t(a) === "asc" ? (r(), d(h, {
68
+ l(c(e.labelAsc) + " ", 1),
69
+ e.id === t(r) && t(a) === "asc" ? (s(), n(h, {
83
70
  key: 0,
84
71
  name: "check",
85
72
  class: "tw-ml-auto tw-text-blue-500"
86
- })) : m("", !0)
73
+ })) : u("", !0)
87
74
  ]),
88
75
  _: 2
89
76
  }, 1024)
90
77
  ], 10, A),
91
- c("li", {
78
+ i("li", {
92
79
  class: b(["dropdown__item tw-rounded", [
93
- t(p).dropdown__item,
94
- { "tw-bg-blue-100 tw-text-ice-700": e.id === t(s) && t(a) === "desc" }
80
+ t(w).dropdown__item,
81
+ { "tw-bg-blue-100 tw-text-ice-700": e.id === t(r) && t(a) === "desc" }
95
82
  ]]),
96
- onClick: () => t(w)(e.id, { sortOrder: "desc", shouldEmit: !0 })
83
+ onClick: () => t(p)(e.id, { sortOrder: "desc", shouldEmit: !0 })
97
84
  }, [
98
- i(u, {
85
+ d(_, {
99
86
  inline: "",
100
87
  class: "tw-h-9"
101
88
  }, {
102
89
  default: o(() => [
103
- n(l(e.labelDesc) + " ", 1),
104
- e.id === t(s) && t(a) === "desc" ? (r(), d(h, {
90
+ l(c(e.labelDesc) + " ", 1),
91
+ e.id === t(r) && t(a) === "desc" ? (s(), n(h, {
105
92
  key: 0,
106
93
  name: "check",
107
94
  class: "tw-ml-auto tw-text-blue-500"
108
- })) : m("", !0)
95
+ })) : u("", !0)
109
96
  ]),
110
97
  _: 2
111
98
  }, 1024)
@@ -114,14 +101,14 @@ const v = {
114
101
  ])
115
102
  ]),
116
103
  _: 1
117
- })) : m("", !0);
104
+ })) : u("", !0);
118
105
  }
119
106
  }), z = "_dropdown__item_ozq17_2", L = {
120
107
  dropdown__item: z
121
108
  }, j = {
122
109
  $style: L
123
- }, nt = /* @__PURE__ */ N(T, [["__cssModules", j]]);
110
+ }, U = /* @__PURE__ */ N(T, [["__cssModules", j]]);
124
111
  export {
125
- nt as default
112
+ U as default
126
113
  };
127
114
  //# sourceMappingURL=DataViewSortButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataViewSortButton.js","sources":["../src/components/DataViewSortButton/DataViewSortButton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n import { inject, useCssModule } from 'vue';\n\n import { t } from '../../locale';\n import Button from '../Button/Button.vue';\n import { DATA_VIEW_INJECTION } from '../DataView/DataView.vue';\n import Dropdown from '../Dropdown/Dropdown.vue';\n import Icon from '../Icon/Icon.vue';\n import IconLabel from '../IconLabel/IconLabel.vue';\n import { SortOption } from './DataViewSortButton.types';\n\n export interface DataViewToolbarProps {\n /**\n * An array of sort options to display in the dropdown.\n */\n sortOptions?: SortOption[];\n }\n\n const props = withDefaults(defineProps<DataViewToolbarProps>(), {\n sortOptions: () => [],\n });\n const classes = useCssModule();\n\n const { currentSortId, currentSortOrder, updateCurrentSort } = inject(\n DATA_VIEW_INJECTION.key,\n DATA_VIEW_INJECTION.defaults,\n );\n</script>\n\n<template>\n <Dropdown\n v-if=\"props.sortOptions.length\"\n align=\"left\"\n class=\"stash-data-view-sort-button\"\n data-test=\"stash-data-view-sort-button\"\n >\n <template #toggle=\"{ isActive, toggle }\">\n <Button\n icon-label\n :aria-expanded=\"isActive.toString()\"\n class=\"tw-text-blue-500\"\n data-test=\"stash-data-view-sort-button|sort-menu-button\"\n @click=\"toggle\"\n >\n <IconLabel icon=\"sort\" stacked>\n {{ t('ll.sort') }}\n </IconLabel>\n </Button>\n </template>\n <ul class=\"dropdown__list\" data-test=\"stash-data-view-sort-button|sort-menu\">\n <template v-for=\"sortOption in props.sortOptions\" :key=\"sortOption.id\">\n <li\n class=\"dropdown__item tw-rounded\"\n :class=\"[\n classes.dropdown__item,\n { 'tw-bg-blue-100 tw-text-ice-700': sortOption.id === currentSortId && currentSortOrder === 'asc' },\n ]\"\n @click=\"() => updateCurrentSort(sortOption.id, { sortOrder: 'asc', shouldEmit: true })\"\n >\n <Button inline class=\"tw-h-9\">\n {{ sortOption.labelAsc }}\n <Icon\n v-if=\"sortOption.id === currentSortId && currentSortOrder === 'asc'\"\n name=\"check\"\n class=\"tw-ml-auto tw-text-blue-500\"\n />\n </Button>\n </li>\n <li\n class=\"dropdown__item tw-rounded\"\n :class=\"[\n classes.dropdown__item,\n { 'tw-bg-blue-100 tw-text-ice-700': sortOption.id === currentSortId && currentSortOrder === 'desc' },\n ]\"\n @click=\"() => updateCurrentSort(sortOption.id, { sortOrder: 'desc', shouldEmit: true })\"\n >\n <Button inline class=\"tw-h-9\">\n {{ sortOption.labelDesc }}\n <Icon\n v-if=\"sortOption.id === currentSortId && currentSortOrder === 'desc'\"\n name=\"check\"\n class=\"tw-ml-auto tw-text-blue-500\"\n />\n </Button>\n </li>\n </template>\n </ul>\n </Dropdown>\n</template>\n\n<style module>\n .dropdown__item > button {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n</style>\n"],"names":["props","__props","classes","useCssModule","currentSortId","currentSortOrder","updateCurrentSort","inject","DATA_VIEW_INJECTION"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBE,UAAMA,IAAQC,GAGRC,IAAUC,KAEV,EAAE,eAAAC,GAAe,kBAAAC,GAAkB,mBAAAC,EAAsB,IAAAC;AAAA,MAC7DC,EAAoB;AAAA,MACpBA,EAAoB;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DataViewSortButton.js","sources":["../src/components/DataViewSortButton/DataViewSortButton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\n import { inject, useCssModule } from 'vue';\n\n import { t } from '../../locale';\n import Button from '../Button/Button.vue';\n import { DATA_VIEW_INJECTION } from '../DataView/DataView.vue';\n import Dropdown from '../Dropdown/Dropdown.vue';\n import Icon from '../Icon/Icon.vue';\n import IconLabel from '../IconLabel/IconLabel.vue';\n import { SortOption } from './DataViewSortButton.types';\n\n export interface DataViewToolbarProps {\n /**\n * An array of sort options to display in the dropdown.\n */\n sortOptions?: SortOption[];\n }\n\n const props = withDefaults(defineProps<DataViewToolbarProps>(), {\n sortOptions: () => [],\n });\n const classes = useCssModule();\n\n const { currentSortId, currentSortOrder, updateCurrentSort } = inject(\n DATA_VIEW_INJECTION.key,\n DATA_VIEW_INJECTION.defaults,\n );\n</script>\n\n<template>\n <Dropdown\n v-if=\"props.sortOptions.length\"\n align=\"left\"\n class=\"stash-data-view-sort-button\"\n data-test=\"stash-data-view-sort-button\"\n >\n <template #toggle=\"{ isActive, toggle }\">\n <Button\n icon-label\n :aria-expanded=\"isActive.toString()\"\n class=\"tw-text-blue-500\"\n data-test=\"stash-data-view-sort-button|sort-menu-button\"\n @click=\"toggle\"\n >\n <IconLabel icon=\"sort\" stacked>\n {{ t('ll.sort') }}\n </IconLabel>\n </Button>\n </template>\n <ul class=\"dropdown__list\" data-test=\"stash-data-view-sort-button|sort-menu\">\n <template v-for=\"sortOption in props.sortOptions\" :key=\"sortOption.id\">\n <li\n class=\"dropdown__item tw-rounded\"\n :class=\"[\n classes.dropdown__item,\n { 'tw-bg-blue-100 tw-text-ice-700': sortOption.id === currentSortId && currentSortOrder === 'asc' },\n ]\"\n @click=\"() => updateCurrentSort(sortOption.id, { sortOrder: 'asc', shouldEmit: true })\"\n >\n <Button inline class=\"tw-h-9\">\n {{ sortOption.labelAsc }}\n <Icon\n v-if=\"sortOption.id === currentSortId && currentSortOrder === 'asc'\"\n name=\"check\"\n class=\"tw-ml-auto tw-text-blue-500\"\n />\n </Button>\n </li>\n <li\n class=\"dropdown__item tw-rounded\"\n :class=\"[\n classes.dropdown__item,\n { 'tw-bg-blue-100 tw-text-ice-700': sortOption.id === currentSortId && currentSortOrder === 'desc' },\n ]\"\n @click=\"() => updateCurrentSort(sortOption.id, { sortOrder: 'desc', shouldEmit: true })\"\n >\n <Button inline class=\"tw-h-9\">\n {{ sortOption.labelDesc }}\n <Icon\n v-if=\"sortOption.id === currentSortId && currentSortOrder === 'desc'\"\n name=\"check\"\n class=\"tw-ml-auto tw-text-blue-500\"\n />\n </Button>\n </li>\n </template>\n </ul>\n </Dropdown>\n</template>\n\n<style module>\n .dropdown__item > button {\n display: flex;\n justify-content: space-between;\n align-items: center;\n }\n</style>\n"],"names":["props","__props","classes","useCssModule","currentSortId","currentSortOrder","updateCurrentSort","inject","DATA_VIEW_INJECTION"],"mappings":";;;;;;;;;;;;;;;;;;AAkBE,UAAMA,IAAQC,GAGRC,IAAUC,KAEV,EAAE,eAAAC,GAAe,kBAAAC,GAAkB,mBAAAC,EAAsB,IAAAC;AAAA,MAC7DC,EAAoB;AAAA,MACpBA,EAAoB;AAAA,IAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -34,11 +34,11 @@ export declare interface DataViewToolbarProps {
34
34
  }
35
35
 
36
36
  declare const _default: DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<DataViewToolbarProps>, {
37
- sortOptions: () => never[];
37
+ sortOptions: () => never[];
38
38
  }>>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<DataViewToolbarProps>, {
39
- sortOptions: () => never[];
39
+ sortOptions: () => never[];
40
40
  }>>> & Readonly<{}>, {
41
- sortOptions: SortOption[];
41
+ sortOptions: SortOption[];
42
42
  }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
43
43
  export default _default;
44
44
 
@@ -1,26 +1,17 @@
1
- import { defineComponent as $, inject as j, ref as z, computed as x, onBeforeMount as U, openBlock as a, createElementBlock as r, normalizeClass as W, unref as e, createElementVNode as k, createBlock as F, createCommentVNode as s, renderSlot as J, toDisplayString as K, Fragment as L, createVNode as n, withCtx as y } from "vue";
1
+ import { defineComponent as $, inject as j, ref as z, computed as x, onBeforeMount as U, openBlock as o, createElementBlock as s, normalizeClass as W, unref as e, createElementVNode as k, createBlock as F, createCommentVNode as n, renderSlot as J, toDisplayString as K, Fragment as L, createVNode as r, withCtx as y } from "vue";
2
2
  import { t as S } from "./locale.js";
3
3
  import _ from "./Button.js";
4
4
  import O from "./Checkbox.js";
5
5
  import "lodash-es/cloneDeep";
6
6
  import C from "./Icon.js";
7
- import "./Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js";
8
- import { D as B } from "./DataView.vue_used_vue_type_style_index_0_lang.module-5c180dba.js";
9
- import "lodash-es/get";
10
- import "./Button.vue_used_vue_type_style_index_0_lang.module-4dabc2a9.js";
11
- import "./_plugin-vue_export-helper-dad06003.js";
12
- import "lodash-es/uniqueId";
13
- import "./index-9e1095ef.js";
14
- import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
15
- import "@leaflink/snitch";
16
- import "./Checkbox.vue_used_vue_type_style_index_0_lang.module-fa8d9c06.js";
7
+ import { D as B } from "./DataView.keys-C7eaZg2G.js";
17
8
  const q = { class: "tw-flex tw-place-items-center" }, G = { class: "tw-flex tw-items-center tw-gap-x-2 lg:tw-gap-x-6" }, H = {
18
9
  key: 0,
19
10
  class: "tw-flex tw-items-center"
20
11
  }, Q = {
21
12
  key: 0,
22
13
  class: "tw-mr-1.5 tw-text-xs"
23
- }, pe = /* @__PURE__ */ $({
14
+ }, le = /* @__PURE__ */ $({
24
15
  __name: "DataViewToolbar",
25
16
  props: {
26
17
  allRowsSelected: { type: Boolean, default: !1 },
@@ -32,7 +23,7 @@ const q = { class: "tw-flex tw-place-items-center" }, G = { class: "tw-flex tw-i
32
23
  emits: ["select"],
33
24
  setup(E, { emit: P }) {
34
25
  const t = E, V = P, {
35
- isWithinModule: i,
26
+ isWithinModule: d,
36
27
  variant: m,
37
28
  density: p,
38
29
  currentPage: l,
@@ -46,29 +37,29 @@ const q = { class: "tw-flex tw-place-items-center" }, G = { class: "tw-flex tw-i
46
37
  goNextPage: A,
47
38
  isEmpty: D,
48
39
  isLoading: I
49
- } = j(B.key, B.defaults), h = z(0), d = x(() => t.radius ? t.radius : i.value ? "none" : m.value === "table" ? t.hasTabsAbove ? "rounded-top-right" : "rounded-top" : "rounded"), M = x(() => {
50
- const u = v.value * (l.value - 1) + 1, o = Math.min(v.value * l.value, b.value), c = b.value;
51
- return S("ll.pageStats", { from: u, to: o, total: c });
40
+ } = j(B.key, B.defaults), h = z(0), i = x(() => t.radius ? t.radius : d.value ? "none" : m.value === "table" ? t.hasTabsAbove ? "rounded-top-right" : "rounded-top" : "rounded"), M = x(() => {
41
+ const u = v.value * (l.value - 1) + 1, a = Math.min(v.value * l.value, b.value), c = b.value;
42
+ return S("ll.pageStats", { from: u, to: a, total: c });
52
43
  });
53
44
  function g() {
54
45
  V("select"), h.value++;
55
46
  }
56
47
  return U(() => {
57
48
  w && (w.value = !0);
58
- }), (u, o) => (a(), r("div", {
49
+ }), (u, a) => (o(), s("div", {
59
50
  class: W(["stash-data-view-toolbar tw-flex tw-min-h-15 tw-items-center tw-justify-between tw-bg-white tw-py-1.5 tw-shadow", {
60
- "tw-border-t tw-border-ice-200": e(i),
61
- "tw-rounded-tr": d.value === "rounded-top-right",
62
- "tw-rounded": d.value === "rounded",
63
- "tw-rounded-t": d.value === "rounded-top",
64
- "tw-mb-3": e(m) !== "table" && !e(i),
51
+ "tw-border-t tw-border-ice-200": e(d),
52
+ "tw-rounded-tr": i.value === "rounded-top-right",
53
+ "tw-rounded": i.value === "rounded",
54
+ "tw-rounded-t": i.value === "rounded-top",
55
+ "tw-mb-3": e(m) !== "table" && !e(d),
65
56
  "tw-px-0": e(p) === "compact",
66
57
  "lg:tw-px-3": e(p) === "comfortable"
67
58
  }]),
68
59
  "data-test": "stash-data-view-toolbar"
69
60
  }, [
70
61
  k("div", q, [
71
- e(R) && !e(D) ? (a(), F(O, {
62
+ e(R) && !e(D) ? (o(), F(O, {
72
63
  key: h.value,
73
64
  checked: t.allRowsSelected,
74
65
  indeterminate: t.someRowsSelected && !t.allRowsSelected,
@@ -76,44 +67,44 @@ const q = { class: "tw-flex tw-place-items-center" }, G = { class: "tw-flex tw-i
76
67
  disabled: e(I),
77
68
  "onUpdate:indeterminate": g,
78
69
  "onUpdate:checked": g
79
- }, null, 8, ["checked", "indeterminate", "title", "disabled"])) : s("", !0),
70
+ }, null, 8, ["checked", "indeterminate", "title", "disabled"])) : n("", !0),
80
71
  k("div", G, [
81
72
  J(u.$slots, "default")
82
73
  ])
83
74
  ]),
84
- e(N) ? (a(), r("div", H, [
85
- t.hidePageStats ? s("", !0) : (a(), r("span", Q, K(M.value), 1)),
86
- e(f) > 1 ? (a(), r(L, { key: 1 }, [
87
- n(_, {
75
+ e(N) ? (o(), s("div", H, [
76
+ t.hidePageStats ? n("", !0) : (o(), s("span", Q, K(M.value), 1)),
77
+ e(f) > 1 ? (o(), s(L, { key: 1 }, [
78
+ r(_, {
88
79
  icon: "",
89
80
  class: "tw-h-9 tw-w-9 tw-p-1.5",
90
81
  "data-test": "button|prev-page",
91
82
  disabled: e(l) === 1,
92
- onClick: o[0] || (o[0] = (c) => e(T)({ shouldEmit: !0 }))
83
+ onClick: a[0] || (a[0] = (c) => e(T)({ shouldEmit: !0 }))
93
84
  }, {
94
85
  default: y(() => [
95
- n(C, { name: "chevron-left" })
86
+ r(C, { name: "chevron-left" })
96
87
  ]),
97
88
  _: 1
98
89
  }, 8, ["disabled"]),
99
- n(_, {
90
+ r(_, {
100
91
  icon: "",
101
92
  class: "tw-h-9 tw-w-9 tw-p-1.5",
102
93
  "data-test": "button|next-page",
103
94
  disabled: e(l) === e(f),
104
- onClick: o[1] || (o[1] = (c) => e(A)({ shouldEmit: !0 }))
95
+ onClick: a[1] || (a[1] = (c) => e(A)({ shouldEmit: !0 }))
105
96
  }, {
106
97
  default: y(() => [
107
- n(C, { name: "chevron-right" })
98
+ r(C, { name: "chevron-right" })
108
99
  ]),
109
100
  _: 1
110
101
  }, 8, ["disabled"])
111
- ], 64)) : s("", !0)
112
- ])) : s("", !0)
102
+ ], 64)) : n("", !0)
103
+ ])) : n("", !0)
113
104
  ], 2));
114
105
  }
115
106
  });
116
107
  export {
117
- pe as default
108
+ le as default
118
109
  };
119
110
  //# sourceMappingURL=DataViewToolbar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataViewToolbar.js","sources":["../src/components/DataViewToolbar/DataViewToolbar.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, inject, onBeforeMount, ref } from 'vue';\n\n import { t } from '../../locale';\n import Button from '../Button/Button.vue';\n import Checkbox from '../Checkbox/Checkbox.vue';\n import { DATA_VIEW_INJECTION } from '../DataView/DataView.vue';\n import Icon from '../Icon/Icon.vue';\n import { ToolbarRadiuses } from './DataViewToolbar.types';\n\n export interface DataViewToolbarProps {\n /**\n * When DataView has `variant=\"table\"` and Table has `is-selectable` enabled, it provides a way to flag\n * a checkbox whenever all rows are selected, just like the standalone version on TableHeaderRow.\n */\n allRowsSelected?: boolean;\n\n /**\n * Hides the page statistics (ex: \"1 - 12 of 20\") in the toolbar\n */\n hidePageStats?: boolean;\n\n /**\n * Controls the corners of DataViewToolbar with the \"border-radius\" CSS property. The default value is \"rounded\".\n */\n radius?: ToolbarRadiuses;\n\n /**\n * When DataView has variant=\"table\" and Table has `is-selectable` enabled, it provides a way to flag\n * a checkbox whenever one or more, but not all rows are selected, just like the standalone\n * version on TableHeaderRow.\n */\n someRowsSelected?: boolean;\n\n /**\n * When DataView has tabs above it, we need to remove the top left rounded corner\n */\n hasTabsAbove?: boolean;\n }\n\n const props = withDefaults(defineProps<DataViewToolbarProps>(), {\n allRowsSelected: false,\n hidePageStats: false,\n radius: undefined,\n someRowsSelected: false,\n hasTabsAbove: false,\n });\n\n const emit = defineEmits<{\n (e: 'select'): void;\n }>();\n\n const {\n isWithinModule,\n variant: dataViewVariant,\n density,\n currentPage,\n hasToolbar,\n isPaginationEnabled,\n isSelectable,\n pageCount,\n pageSize,\n totalDataCount,\n goPrevPage,\n goNextPage,\n isEmpty,\n isLoading,\n } = inject(DATA_VIEW_INJECTION.key, DATA_VIEW_INJECTION.defaults);\n\n const checkboxKey = ref(0);\n\n const computedRadius = computed<ToolbarRadiuses>(() => {\n if (props.radius) {\n return props.radius;\n }\n\n if (isWithinModule.value) {\n return 'none';\n }\n\n if (dataViewVariant.value === 'table') {\n if (props.hasTabsAbove) {\n return 'rounded-top-right';\n }\n\n return 'rounded-top';\n }\n\n return 'rounded';\n });\n\n // #region pagination\n const pageStats = computed(() => {\n const from = pageSize.value * (currentPage.value - 1) + 1;\n const to = Math.min(pageSize.value * currentPage.value, totalDataCount.value);\n const total = totalDataCount.value;\n\n return t('ll.pageStats', { from, to, total });\n });\n // #endregion pagination\n\n function onSelect() {\n emit('select');\n\n /**\n * In Vue (as of this writing), if a user checks a native checkbox but the v-model is `false` and does not change from `false`, then the checkbox will display as checked even though the v-model is still `false`.\n * Forcing a re-render with a `key` change allows the checkbox to stay unchecked if its v-model is still `false` and its v-model not been changed.\n * To verify that this is necessary, test the \"select all\" checkbox in the SelectionWithSomeDisabled story in Table.story.ts with and without the `key` attribute.\n */\n checkboxKey.value++;\n }\n\n onBeforeMount(() => {\n if (hasToolbar) {\n hasToolbar.value = true;\n }\n });\n</script>\n\n<template>\n <div\n class=\"stash-data-view-toolbar tw-flex tw-min-h-15 tw-items-center tw-justify-between tw-bg-white tw-py-1.5 tw-shadow\"\n :class=\"{\n 'tw-border-t tw-border-ice-200': isWithinModule,\n 'tw-rounded-tr': computedRadius === 'rounded-top-right',\n 'tw-rounded': computedRadius === 'rounded',\n 'tw-rounded-t': computedRadius === 'rounded-top',\n 'tw-mb-3': dataViewVariant !== 'table' && !isWithinModule,\n 'tw-px-0': density === 'compact',\n 'lg:tw-px-3': density === 'comfortable',\n }\"\n data-test=\"stash-data-view-toolbar\"\n >\n <div class=\"tw-flex tw-place-items-center\">\n <Checkbox\n v-if=\"isSelectable && !isEmpty\"\n :key=\"checkboxKey\"\n :checked=\"props.allRowsSelected\"\n :indeterminate=\"props.someRowsSelected && !props.allRowsSelected\"\n :title=\"t('ll.selectAll')\"\n :disabled=\"isLoading\"\n @update:indeterminate=\"onSelect\"\n @update:checked=\"onSelect\"\n />\n <div class=\"tw-flex tw-items-center tw-gap-x-2 lg:tw-gap-x-6\">\n <!-- @slot default -->\n <slot></slot>\n </div>\n </div>\n\n <!-- Pagination -->\n <div v-if=\"isPaginationEnabled\" class=\"tw-flex tw-items-center\">\n <span v-if=\"!props.hidePageStats\" class=\"tw-mr-1.5 tw-text-xs\">\n {{ pageStats }}\n </span>\n <template v-if=\"pageCount > 1\">\n <Button\n icon\n class=\"tw-h-9 tw-w-9 tw-p-1.5\"\n data-test=\"button|prev-page\"\n :disabled=\"currentPage === 1\"\n @click=\"goPrevPage({ shouldEmit: true })\"\n >\n <Icon name=\"chevron-left\" />\n </Button>\n <Button\n icon\n class=\"tw-h-9 tw-w-9 tw-p-1.5\"\n data-test=\"button|next-page\"\n :disabled=\"currentPage === pageCount\"\n @click=\"goNextPage({ shouldEmit: true })\"\n >\n <Icon name=\"chevron-right\" />\n </Button>\n </template>\n </div>\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","isWithinModule","dataViewVariant","density","currentPage","hasToolbar","isPaginationEnabled","isSelectable","pageCount","pageSize","totalDataCount","goPrevPage","goNextPage","isEmpty","isLoading","inject","DATA_VIEW_INJECTION","checkboxKey","ref","computedRadius","computed","pageStats","from","to","total","t","onSelect","onBeforeMount"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCE,UAAMA,IAAQC,GAQRC,IAAOC,GAIP;AAAA,MACJ,gBAAAC;AAAA,MACA,SAASC;AAAA,MACT,SAAAC;AAAA,MACA,aAAAC;AAAA,MACA,YAAAC;AAAA,MACA,qBAAAC;AAAA,MACA,cAAAC;AAAA,MACA,WAAAC;AAAA,MACA,UAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,YAAAC;AAAA,MACA,YAAAC;AAAA,MACA,SAAAC;AAAA,MACA,WAAAC;AAAA,IACE,IAAAC,EAAOC,EAAoB,KAAKA,EAAoB,QAAQ,GAE1DC,IAAcC,EAAI,CAAC,GAEnBC,IAAiBC,EAA0B,MAC3CvB,EAAM,SACDA,EAAM,SAGXI,EAAe,QACV,SAGLC,EAAgB,UAAU,UACxBL,EAAM,eACD,sBAGF,gBAGF,SACR,GAGKwB,IAAYD,EAAS,MAAM;AAC/B,YAAME,IAAOb,EAAS,SAASL,EAAY,QAAQ,KAAK,GAClDmB,IAAK,KAAK,IAAId,EAAS,QAAQL,EAAY,OAAOM,EAAe,KAAK,GACtEc,IAAQd,EAAe;AAE7B,aAAOe,EAAE,gBAAgB,EAAE,MAAAH,GAAM,IAAAC,GAAI,OAAAC,GAAO;AAAA,IAAA,CAC7C;AAGD,aAASE,IAAW;AAClB,MAAA3B,EAAK,QAAQ,GAODkB,EAAA;AAAA,IACd;AAEA,WAAAU,EAAc,MAAM;AAClB,MAAItB,MACFA,EAAW,QAAQ;AAAA,IACrB,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"DataViewToolbar.js","sources":["../src/components/DataViewToolbar/DataViewToolbar.vue"],"sourcesContent":["<script setup lang=\"ts\">\n import { computed, inject, onBeforeMount, ref } from 'vue';\n\n import { t } from '../../locale';\n import Button from '../Button/Button.vue';\n import Checkbox from '../Checkbox/Checkbox.vue';\n import { DATA_VIEW_INJECTION } from '../DataView/DataView.vue';\n import Icon from '../Icon/Icon.vue';\n import { ToolbarRadiuses } from './DataViewToolbar.types';\n\n export interface DataViewToolbarProps {\n /**\n * When DataView has `variant=\"table\"` and Table has `is-selectable` enabled, it provides a way to flag\n * a checkbox whenever all rows are selected, just like the standalone version on TableHeaderRow.\n */\n allRowsSelected?: boolean;\n\n /**\n * Hides the page statistics (ex: \"1 - 12 of 20\") in the toolbar\n */\n hidePageStats?: boolean;\n\n /**\n * Controls the corners of DataViewToolbar with the \"border-radius\" CSS property. The default value is \"rounded\".\n */\n radius?: ToolbarRadiuses;\n\n /**\n * When DataView has variant=\"table\" and Table has `is-selectable` enabled, it provides a way to flag\n * a checkbox whenever one or more, but not all rows are selected, just like the standalone\n * version on TableHeaderRow.\n */\n someRowsSelected?: boolean;\n\n /**\n * When DataView has tabs above it, we need to remove the top left rounded corner\n */\n hasTabsAbove?: boolean;\n }\n\n const props = withDefaults(defineProps<DataViewToolbarProps>(), {\n allRowsSelected: false,\n hidePageStats: false,\n radius: undefined,\n someRowsSelected: false,\n hasTabsAbove: false,\n });\n\n const emit = defineEmits<{\n (e: 'select'): void;\n }>();\n\n const {\n isWithinModule,\n variant: dataViewVariant,\n density,\n currentPage,\n hasToolbar,\n isPaginationEnabled,\n isSelectable,\n pageCount,\n pageSize,\n totalDataCount,\n goPrevPage,\n goNextPage,\n isEmpty,\n isLoading,\n } = inject(DATA_VIEW_INJECTION.key, DATA_VIEW_INJECTION.defaults);\n\n const checkboxKey = ref(0);\n\n const computedRadius = computed<ToolbarRadiuses>(() => {\n if (props.radius) {\n return props.radius;\n }\n\n if (isWithinModule.value) {\n return 'none';\n }\n\n if (dataViewVariant.value === 'table') {\n if (props.hasTabsAbove) {\n return 'rounded-top-right';\n }\n\n return 'rounded-top';\n }\n\n return 'rounded';\n });\n\n // #region pagination\n const pageStats = computed(() => {\n const from = pageSize.value * (currentPage.value - 1) + 1;\n const to = Math.min(pageSize.value * currentPage.value, totalDataCount.value);\n const total = totalDataCount.value;\n\n return t('ll.pageStats', { from, to, total });\n });\n // #endregion pagination\n\n function onSelect() {\n emit('select');\n\n /**\n * In Vue (as of this writing), if a user checks a native checkbox but the v-model is `false` and does not change from `false`, then the checkbox will display as checked even though the v-model is still `false`.\n * Forcing a re-render with a `key` change allows the checkbox to stay unchecked if its v-model is still `false` and its v-model not been changed.\n * To verify that this is necessary, test the \"select all\" checkbox in the SelectionWithSomeDisabled story in Table.story.ts with and without the `key` attribute.\n */\n checkboxKey.value++;\n }\n\n onBeforeMount(() => {\n if (hasToolbar) {\n hasToolbar.value = true;\n }\n });\n</script>\n\n<template>\n <div\n class=\"stash-data-view-toolbar tw-flex tw-min-h-15 tw-items-center tw-justify-between tw-bg-white tw-py-1.5 tw-shadow\"\n :class=\"{\n 'tw-border-t tw-border-ice-200': isWithinModule,\n 'tw-rounded-tr': computedRadius === 'rounded-top-right',\n 'tw-rounded': computedRadius === 'rounded',\n 'tw-rounded-t': computedRadius === 'rounded-top',\n 'tw-mb-3': dataViewVariant !== 'table' && !isWithinModule,\n 'tw-px-0': density === 'compact',\n 'lg:tw-px-3': density === 'comfortable',\n }\"\n data-test=\"stash-data-view-toolbar\"\n >\n <div class=\"tw-flex tw-place-items-center\">\n <Checkbox\n v-if=\"isSelectable && !isEmpty\"\n :key=\"checkboxKey\"\n :checked=\"props.allRowsSelected\"\n :indeterminate=\"props.someRowsSelected && !props.allRowsSelected\"\n :title=\"t('ll.selectAll')\"\n :disabled=\"isLoading\"\n @update:indeterminate=\"onSelect\"\n @update:checked=\"onSelect\"\n />\n <div class=\"tw-flex tw-items-center tw-gap-x-2 lg:tw-gap-x-6\">\n <!-- @slot default -->\n <slot></slot>\n </div>\n </div>\n\n <!-- Pagination -->\n <div v-if=\"isPaginationEnabled\" class=\"tw-flex tw-items-center\">\n <span v-if=\"!props.hidePageStats\" class=\"tw-mr-1.5 tw-text-xs\">\n {{ pageStats }}\n </span>\n <template v-if=\"pageCount > 1\">\n <Button\n icon\n class=\"tw-h-9 tw-w-9 tw-p-1.5\"\n data-test=\"button|prev-page\"\n :disabled=\"currentPage === 1\"\n @click=\"goPrevPage({ shouldEmit: true })\"\n >\n <Icon name=\"chevron-left\" />\n </Button>\n <Button\n icon\n class=\"tw-h-9 tw-w-9 tw-p-1.5\"\n data-test=\"button|next-page\"\n :disabled=\"currentPage === pageCount\"\n @click=\"goNextPage({ shouldEmit: true })\"\n >\n <Icon name=\"chevron-right\" />\n </Button>\n </template>\n </div>\n </div>\n</template>\n"],"names":["props","__props","emit","__emit","isWithinModule","dataViewVariant","density","currentPage","hasToolbar","isPaginationEnabled","isSelectable","pageCount","pageSize","totalDataCount","goPrevPage","goNextPage","isEmpty","isLoading","inject","DATA_VIEW_INJECTION","checkboxKey","ref","computedRadius","computed","pageStats","from","to","total","t","onSelect","onBeforeMount"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAwCE,UAAMA,IAAQC,GAQRC,IAAOC,GAIP;AAAA,MACJ,gBAAAC;AAAA,MACA,SAASC;AAAA,MACT,SAAAC;AAAA,MACA,aAAAC;AAAA,MACA,YAAAC;AAAA,MACA,qBAAAC;AAAA,MACA,cAAAC;AAAA,MACA,WAAAC;AAAA,MACA,UAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,YAAAC;AAAA,MACA,YAAAC;AAAA,MACA,SAAAC;AAAA,MACA,WAAAC;AAAA,IACE,IAAAC,EAAOC,EAAoB,KAAKA,EAAoB,QAAQ,GAE1DC,IAAcC,EAAI,CAAC,GAEnBC,IAAiBC,EAA0B,MAC3CvB,EAAM,SACDA,EAAM,SAGXI,EAAe,QACV,SAGLC,EAAgB,UAAU,UACxBL,EAAM,eACD,sBAGF,gBAGF,SACR,GAGKwB,IAAYD,EAAS,MAAM;AAC/B,YAAME,IAAOb,EAAS,SAASL,EAAY,QAAQ,KAAK,GAClDmB,IAAK,KAAK,IAAId,EAAS,QAAQL,EAAY,OAAOM,EAAe,KAAK,GACtEc,IAAQd,EAAe;AAE7B,aAAOe,EAAE,gBAAgB,EAAE,MAAAH,GAAM,IAAAC,GAAI,OAAAC,GAAO;AAAA,IAAA,CAC7C;AAGD,aAASE,IAAW;AAClB,MAAA3B,EAAK,QAAQ,GAODkB,EAAA;AAAA,IACd;AAEA,WAAAU,EAAc,MAAM;AAClB,MAAItB,MACFA,EAAW,QAAQ;AAAA,IACrB,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}