@leaflink/stash 48.16.1 → 48.17.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 (270) hide show
  1. package/dist/Accordion.js +1 -1
  2. package/dist/Accordion.js.map +1 -1
  3. package/dist/Accordion.vue.d.ts +8 -9
  4. package/dist/ActionsDropdown.js.map +1 -1
  5. package/dist/ActionsDropdown.vue.d.ts +7 -8
  6. package/dist/AddressSelect.js +42 -38
  7. package/dist/AddressSelect.js.map +1 -1
  8. package/dist/AddressSelect.vue.d.ts +10 -11
  9. package/dist/Alert.js.map +1 -1
  10. package/dist/Alert.vue.d.ts +6 -7
  11. package/dist/AppNavigationItem.js +2 -2
  12. package/dist/AppNavigationItem.js.map +1 -1
  13. package/dist/AppNavigationItem.vue.d.ts +7 -8
  14. package/dist/AppSidebar.js +42 -42
  15. package/dist/AppSidebar.js.map +1 -1
  16. package/dist/AppSidebar.vue.d.ts +8 -9
  17. package/dist/AppTopbar.js +16 -16
  18. package/dist/AppTopbar.js.map +1 -1
  19. package/dist/AppTopbar.vue.d.ts +8 -9
  20. package/dist/Avatar.js.map +1 -1
  21. package/dist/Avatar.vue.d.ts +7 -8
  22. package/dist/Backdrop.vue.d.ts +3 -5
  23. package/dist/Badge.js +1 -1
  24. package/dist/Badge.js.map +1 -1
  25. package/dist/Badge.vue.d.ts +7 -8
  26. package/dist/Box.vue.d.ts +6 -7
  27. package/dist/Box.vue_vue_type_script_setup_true_lang-69e5176b.js.map +1 -1
  28. package/dist/Button.js.map +1 -1
  29. package/dist/Button.vue.d.ts +7 -8
  30. package/dist/ButtonGroup.js +29 -29
  31. package/dist/ButtonGroup.js.map +1 -1
  32. package/dist/ButtonGroup.vue.d.ts +8 -9
  33. package/dist/Card.js.map +1 -1
  34. package/dist/Card.vue.d.ts +6 -7
  35. package/dist/CardContent.vue.d.ts +3 -5
  36. package/dist/CardFooter.vue.d.ts +3 -5
  37. package/dist/CardHeader.js.map +1 -1
  38. package/dist/CardHeader.vue.d.ts +3 -4
  39. package/dist/CardMedia.js +6 -6
  40. package/dist/CardMedia.js.map +1 -1
  41. package/dist/CardMedia.vue.d.ts +3 -4
  42. package/dist/Carousel.js +249 -249
  43. package/dist/Carousel.js.map +1 -1
  44. package/dist/Carousel.vue.d.ts +9 -9
  45. package/dist/Checkbox.js +27 -27
  46. package/dist/Checkbox.js.map +1 -1
  47. package/dist/Checkbox.vue.d.ts +11 -12
  48. package/dist/ChevronToggle.js +1 -1
  49. package/dist/ChevronToggle.vue.d.ts +8 -9
  50. package/dist/{ChevronToggle.vue_vue_type_script_setup_true_lang-1591294c.js → ChevronToggle.vue_vue_type_script_setup_true_lang-fcdf0c19.js} +11 -11
  51. package/dist/{ChevronToggle.vue_vue_type_script_setup_true_lang-1591294c.js.map → ChevronToggle.vue_vue_type_script_setup_true_lang-fcdf0c19.js.map} +1 -1
  52. package/dist/Chip.js +30 -30
  53. package/dist/Chip.js.map +1 -1
  54. package/dist/Chip.vue.d.ts +9 -10
  55. package/dist/ConfirmationCodeInput.js +128 -105
  56. package/dist/ConfirmationCodeInput.js.map +1 -1
  57. package/dist/ConfirmationCodeInput.vue.d.ts +36 -11
  58. package/dist/ContextSwitcher.js +18 -18
  59. package/dist/ContextSwitcher.js.map +1 -1
  60. package/dist/ContextSwitcher.vue.d.ts +9 -10
  61. package/dist/Copy.js.map +1 -1
  62. package/dist/Copy.vue.d.ts +6 -7
  63. package/dist/CurrencyInput.js +93 -93
  64. package/dist/CurrencyInput.js.map +1 -1
  65. package/dist/CurrencyInput.vue.d.ts +10 -11
  66. package/dist/CustomRender.vue.d.ts +3 -15
  67. package/dist/DataView.js +97 -97
  68. package/dist/DataView.js.map +1 -1
  69. package/dist/DataView.vue.d.ts +9 -10
  70. package/dist/DataViewFilters.js +153 -150
  71. package/dist/DataViewFilters.js.map +1 -1
  72. package/dist/DataViewFilters.vue.d.ts +9 -10
  73. package/dist/DataViewSortButton.js.map +1 -1
  74. package/dist/DataViewSortButton.vue.d.ts +6 -7
  75. package/dist/DataViewToolbar.js +27 -27
  76. package/dist/DataViewToolbar.js.map +1 -1
  77. package/dist/DataViewToolbar.vue.d.ts +8 -9
  78. package/dist/DatePicker.js +738 -738
  79. package/dist/DatePicker.js.map +1 -1
  80. package/dist/DatePicker.vue.d.ts +11 -12
  81. package/dist/DescriptionList.js.map +1 -1
  82. package/dist/DescriptionList.vue.d.ts +6 -7
  83. package/dist/DescriptionListDetail.vue.d.ts +3 -5
  84. package/dist/DescriptionListGroup.vue.d.ts +3 -5
  85. package/dist/DescriptionListTerm.vue.d.ts +3 -5
  86. package/dist/Dialog.js +44 -44
  87. package/dist/Dialog.js.map +1 -1
  88. package/dist/Dialog.vue.d.ts +10 -11
  89. package/dist/Divider.vue.d.ts +3 -5
  90. package/dist/Dropdown.js +38 -38
  91. package/dist/Dropdown.js.map +1 -1
  92. package/dist/Dropdown.vue.d.ts +9 -10
  93. package/dist/EmptyState.js +20 -20
  94. package/dist/EmptyState.js.map +1 -1
  95. package/dist/EmptyState.vue.d.ts +6 -7
  96. package/dist/Expand.js +1 -1
  97. package/dist/Expand.vue.d.ts +8 -9
  98. package/dist/{Expand.vue_vue_type_script_setup_true_lang-1751f4a6.js → Expand.vue_vue_type_script_setup_true_lang-0f236267.js} +19 -19
  99. package/dist/Expand.vue_vue_type_script_setup_true_lang-0f236267.js.map +1 -0
  100. package/dist/Field.vue.d.ts +6 -7
  101. package/dist/Field.vue_vue_type_script_setup_true_lang-e1e4ff03.js.map +1 -1
  102. package/dist/FileUpload.js +65 -65
  103. package/dist/FileUpload.js.map +1 -1
  104. package/dist/FileUpload.vue.d.ts +10 -11
  105. package/dist/FilterChip.js +27 -27
  106. package/dist/FilterChip.js.map +1 -1
  107. package/dist/FilterChip.vue.d.ts +8 -9
  108. package/dist/FilterDrawerItem.js +26 -26
  109. package/dist/FilterDrawerItem.js.map +1 -1
  110. package/dist/FilterDrawerItem.vue.d.ts +5 -6
  111. package/dist/FilterDropdown.js +49 -49
  112. package/dist/FilterDropdown.js.map +1 -1
  113. package/dist/FilterDropdown.vue.d.ts +8 -9
  114. package/dist/FilterSelect.js +23 -23
  115. package/dist/FilterSelect.js.map +1 -1
  116. package/dist/FilterSelect.vue.d.ts +8 -9
  117. package/dist/Filters.js +112 -104
  118. package/dist/Filters.js.map +1 -1
  119. package/dist/Filters.vue.d.ts +2204 -65
  120. package/dist/HttpError.js +42 -42
  121. package/dist/HttpError.js.map +1 -1
  122. package/dist/HttpError.vue.d.ts +6 -7
  123. package/dist/Icon.js.map +1 -1
  124. package/dist/Icon.vue.d.ts +7 -8
  125. package/dist/IconLabel.js.map +1 -1
  126. package/dist/IconLabel.vue.d.ts +8 -9
  127. package/dist/Illustration.vue.d.ts +6 -7
  128. package/dist/Illustration.vue_vue_type_script_setup_true_lang-e26c3841.js.map +1 -1
  129. package/dist/Image.js +47 -47
  130. package/dist/Image.js.map +1 -1
  131. package/dist/Image.vue.d.ts +6 -7
  132. package/dist/InlineEdit.js +34 -34
  133. package/dist/InlineEdit.js.map +1 -1
  134. package/dist/InlineEdit.vue.d.ts +9 -10
  135. package/dist/Input.js +35 -35
  136. package/dist/Input.js.map +1 -1
  137. package/dist/Input.vue.d.ts +13 -14
  138. package/dist/InputOptions.js +33 -33
  139. package/dist/InputOptions.js.map +1 -1
  140. package/dist/InputOptions.vue.d.ts +8 -9
  141. package/dist/IntegrationIcon.js.map +1 -1
  142. package/dist/IntegrationIcon.vue.d.ts +7 -8
  143. package/dist/Label.vue.d.ts +6 -7
  144. package/dist/Label.vue_vue_type_script_setup_true_lang-4b02087f.js.map +1 -1
  145. package/dist/LicenseChip.js.map +1 -1
  146. package/dist/LicenseChip.vue.d.ts +6 -7
  147. package/dist/ListItem.vue.d.ts +225 -95
  148. package/dist/ListItemCell.vue.d.ts +4 -16
  149. package/dist/ListView.js +1 -1
  150. package/dist/ListView.vue.d.ts +5072 -470
  151. package/dist/Loading.js +16 -16
  152. package/dist/Loading.js.map +1 -1
  153. package/dist/Loading.vue.d.ts +3 -5
  154. package/dist/Logo.js +1 -1
  155. package/dist/Logo.vue.d.ts +9 -10
  156. package/dist/Logo.vue_vue_type_script_setup_true_lang-2a2597cb.js +196 -0
  157. package/dist/Logo.vue_vue_type_script_setup_true_lang-2a2597cb.js.map +1 -0
  158. package/dist/Menu.vue.d.ts +3 -5
  159. package/dist/MenuItem.vue.d.ts +3 -5
  160. package/dist/Metric.js.map +1 -1
  161. package/dist/Metric.vue.d.ts +6 -7
  162. package/dist/Modal.js +29 -29
  163. package/dist/Modal.js.map +1 -1
  164. package/dist/Modal.vue.d.ts +8 -9
  165. package/dist/Modals.js +8 -7
  166. package/dist/Modals.js.map +1 -1
  167. package/dist/Modals.vue.d.ts +3 -5
  168. package/dist/Module.js.map +1 -1
  169. package/dist/Module.vue.d.ts +7 -8
  170. package/dist/ModuleContent.vue.d.ts +3 -5
  171. package/dist/ModuleFooter.vue.d.ts +3 -5
  172. package/dist/ModuleHeader.js.map +1 -1
  173. package/dist/ModuleHeader.vue.d.ts +6 -7
  174. package/dist/ObfuscateText.js +1 -1
  175. package/dist/ObfuscateText.js.map +1 -1
  176. package/dist/ObfuscateText.vue.d.ts +6 -7
  177. package/dist/PageContent.vue.d.ts +3 -5
  178. package/dist/PageHeader.js.map +1 -1
  179. package/dist/PageHeader.vue.d.ts +6 -7
  180. package/dist/PageNavigation.js +30 -27
  181. package/dist/PageNavigation.js.map +1 -1
  182. package/dist/PageNavigation.vue.d.ts +8 -9
  183. package/dist/Paginate.js +32 -32
  184. package/dist/Paginate.js.map +1 -1
  185. package/dist/Paginate.vue.d.ts +8 -9
  186. package/dist/PlaidLink.js +29 -29
  187. package/dist/PlaidLink.js.map +1 -1
  188. package/dist/PlaidLink.vue.d.ts +11 -12
  189. package/dist/QuickAction.js.map +1 -1
  190. package/dist/QuickAction.vue.d.ts +4 -5
  191. package/dist/Radio.vue.d.ts +20 -1
  192. package/dist/RadioGroup.js +123 -123
  193. package/dist/RadioGroup.js.map +1 -1
  194. package/dist/RadioGroup.vue.d.ts +10 -11
  195. package/dist/RadioNew.js +102 -102
  196. package/dist/RadioNew.js.map +1 -1
  197. package/dist/RadioNew.vue.d.ts +10 -11
  198. package/dist/RangeInput.vue.d.ts +3 -5
  199. package/dist/SearchBar.js +36 -36
  200. package/dist/SearchBar.js.map +1 -1
  201. package/dist/SearchBar.vue.d.ts +9 -10
  202. package/dist/Select.js +792 -774
  203. package/dist/Select.js.map +1 -1
  204. package/dist/Select.vue.d.ts +14 -15
  205. package/dist/SelectStatus.js +27 -27
  206. package/dist/SelectStatus.js.map +1 -1
  207. package/dist/SelectStatus.vue.d.ts +12 -13
  208. package/dist/Skeleton.js.map +1 -1
  209. package/dist/Skeleton.vue.d.ts +7 -8
  210. package/dist/Step.js.map +1 -1
  211. package/dist/Step.vue.d.ts +7 -8
  212. package/dist/Stepper.js +19 -19
  213. package/dist/Stepper.js.map +1 -1
  214. package/dist/Stepper.vue.d.ts +9 -10
  215. package/dist/Switch.js +25 -25
  216. package/dist/Switch.js.map +1 -1
  217. package/dist/Switch.vue.d.ts +11 -12
  218. package/dist/Tab.js +2 -2
  219. package/dist/Tab.vue.d.ts +3 -4
  220. package/dist/{Tab.vue_vue_type_script_setup_true_lang-69d1b046.js → Tab.vue_vue_type_script_setup_true_lang-9aa53203.js} +5 -3
  221. package/dist/Tab.vue_vue_type_script_setup_true_lang-9aa53203.js.map +1 -0
  222. package/dist/Table.js +3 -3
  223. package/dist/Table.js.map +1 -1
  224. package/dist/{Table.keys-cf93df19.js → Table.keys-83e4f09b.js} +11 -11
  225. package/dist/{Table.keys-cf93df19.js.map → Table.keys-83e4f09b.js.map} +1 -1
  226. package/dist/Table.vue.d.ts +6 -7
  227. package/dist/TableCell.js +1 -1
  228. package/dist/TableCell.js.map +1 -1
  229. package/dist/TableCell.vue.d.ts +6 -7
  230. package/dist/TableHeaderCell.js +12 -12
  231. package/dist/TableHeaderCell.js.map +1 -1
  232. package/dist/TableHeaderCell.vue.d.ts +6 -7
  233. package/dist/TableHeaderRow.js +21 -21
  234. package/dist/TableHeaderRow.js.map +1 -1
  235. package/dist/TableHeaderRow.vue.d.ts +8 -9
  236. package/dist/TableRow.js +42 -42
  237. package/dist/TableRow.js.map +1 -1
  238. package/dist/TableRow.vue.d.ts +8 -9
  239. package/dist/Tabs.js +2 -2
  240. package/dist/Tabs.vue.d.ts +8 -9
  241. package/dist/{Tabs.vue_used_vue_type_style_index_0_lang.module-2a131332.js → Tabs.vue_used_vue_type_style_index_0_lang.module-3aa36673.js} +37 -37
  242. package/dist/Tabs.vue_used_vue_type_style_index_0_lang.module-3aa36673.js.map +1 -0
  243. package/dist/TextEditor.js +565 -565
  244. package/dist/TextEditor.js.map +1 -1
  245. package/dist/TextEditor.vue.d.ts +12 -13
  246. package/dist/Textarea.js +28 -28
  247. package/dist/Textarea.js.map +1 -1
  248. package/dist/Textarea.vue.d.ts +10 -11
  249. package/dist/Timeline.js.map +1 -1
  250. package/dist/Timeline.vue.d.ts +6 -7
  251. package/dist/TimelineItem.js +21 -21
  252. package/dist/TimelineItem.js.map +1 -1
  253. package/dist/TimelineItem.vue.d.ts +13 -6
  254. package/dist/Toast.js +134 -134
  255. package/dist/Toast.js.map +1 -1
  256. package/dist/Toast.vue.d.ts +6 -7
  257. package/dist/Toasts.vue.d.ts +3 -5
  258. package/dist/components.css +1 -1
  259. package/dist/index.js.map +1 -1
  260. package/dist/tailwind-base.js.map +1 -1
  261. package/dist/usePlaidLink.d.ts +1 -6
  262. package/dist/useScriptTag.d.ts +3 -8
  263. package/dist/useStepper.d.ts +7 -2
  264. package/package.json +1 -1
  265. package/tailwind-base.ts +13 -6
  266. package/dist/Expand.vue_vue_type_script_setup_true_lang-1751f4a6.js.map +0 -1
  267. package/dist/Logo.vue_vue_type_script_setup_true_lang-d7da48a0.js +0 -196
  268. package/dist/Logo.vue_vue_type_script_setup_true_lang-d7da48a0.js.map +0 -1
  269. package/dist/Tab.vue_vue_type_script_setup_true_lang-69d1b046.js.map +0 -1
  270. package/dist/Tabs.vue_used_vue_type_style_index_0_lang.module-2a131332.js.map +0 -1
@@ -1,21 +1,9 @@
1
- import { AllowedComponentProps } from 'vue';
2
- import { ComponentCustomProps } from 'vue';
3
1
  import { ComponentOptionsMixin } from 'vue';
2
+ import { ComponentProvideOptions } from 'vue';
4
3
  import { DefineComponent } from 'vue';
5
- import { ExtractPropTypes } from 'vue';
6
- import { VNodeProps } from 'vue';
4
+ import { PublicProps } from 'vue';
7
5
 
8
- declare const _default: DefineComponent<{
9
- render: {
10
- type: FunctionConstructor;
11
- required: true;
12
- };
13
- }, () => any, any, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes<{
14
- render: {
15
- type: FunctionConstructor;
16
- required: true;
17
- };
18
- }>>, {}, {}>;
6
+ declare const _default: DefineComponent<any, () => any, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<any> & Readonly<{}>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
19
7
  export default _default;
20
8
 
21
9
  export { }
package/dist/DataView.js CHANGED
@@ -1,25 +1,25 @@
1
- import { defineComponent as F, useCssModule as j, ref as l, inject as R, computed as r, watch as D, provide as U, openBlock as N, createElementBlock as J, renderSlot as W, createBlock as G, normalizeClass as Z, unref as q, createCommentVNode as H } from "vue";
2
- import K from "lodash-es/cloneDeep";
3
- import { M as V } from "./Module.keys-2cc7d830.js";
4
- import Q from "./Paginate.js";
5
- import { a as X, D as Y, s as w } from "./DataView.vue_used_vue_type_style_index_0_lang.module-5c180dba.js";
6
- import { _ as O } from "./_plugin-vue_export-helper-dad06003.js";
1
+ import { defineComponent as j, useCssModule as R, ref as c, inject as U, computed as r, watch as b, provide as J, openBlock as V, createElementBlock as W, renderSlot as G, createBlock as Z, normalizeClass as q, unref as H, createCommentVNode as K } from "vue";
2
+ import Q from "lodash-es/cloneDeep";
3
+ import { M as $ } from "./Module.keys-2cc7d830.js";
4
+ import X from "./Paginate.js";
5
+ import { a as Y, D as w, s as O } from "./DataView.vue_used_vue_type_style_index_0_lang.module-5c180dba.js";
6
+ import { _ as tt } from "./_plugin-vue_export-helper-dad06003.js";
7
7
  import "./Icon.js";
8
8
  import "lodash-es/uniqueId";
9
9
  import "./index-9e1095ef.js";
10
10
  import "./Icon.vue_used_vue_type_style_index_0_lang.module-eb359559.js";
11
11
  import "./Paginate.vue_used_vue_type_style_index_0_lang.module-18343da7.js";
12
- function b(e) {
12
+ function y(e) {
13
13
  const o = e[0] === "-" ? "desc" : "asc";
14
14
  return { id: o === "asc" ? e : e.slice(1), order: o };
15
15
  }
16
- function tt({ id: e, order: o }) {
16
+ function et({ id: e, order: o }) {
17
17
  return `${o === "desc" ? "-" : ""}${e}`;
18
18
  }
19
- function et({ newId: e, newOrder: o, oldId: u, oldOrder: t }) {
19
+ function at({ newId: e, newOrder: o, oldId: f, oldOrder: t }) {
20
20
  if (e) {
21
- if (e !== u)
22
- return tt({ id: e, order: o || "asc" });
21
+ if (e !== f)
22
+ return et({ id: e, order: o || "asc" });
23
23
  if (!o && !t)
24
24
  return e;
25
25
  if (!(!o && t === "desc")) {
@@ -38,8 +38,8 @@ function et({ newId: e, newOrder: o, oldId: u, oldOrder: t }) {
38
38
  }
39
39
  }
40
40
  }
41
- var at = /* @__PURE__ */ ((e) => (e.Table = "table", e))(at || {});
42
- const rt = /* @__PURE__ */ F({
41
+ var rt = /* @__PURE__ */ ((e) => (e.Table = "table", e))(rt || {});
42
+ const ot = /* @__PURE__ */ j({
43
43
  __name: "DataView",
44
44
  props: {
45
45
  currentPage: { default: 1 },
@@ -47,7 +47,7 @@ const rt = /* @__PURE__ */ F({
47
47
  currentSort: { default: void 0 },
48
48
  data: { default: () => [] },
49
49
  density: { default: "comfortable" },
50
- pageSize: { default: X },
50
+ pageSize: { default: Y },
51
51
  disablePagination: { type: Boolean, default: !1 },
52
52
  hideBottomPagination: { type: Boolean, default: !1 },
53
53
  totalDataCount: { default: 0 },
@@ -55,146 +55,146 @@ const rt = /* @__PURE__ */ F({
55
55
  isLoading: { type: Boolean }
56
56
  },
57
57
  emits: ["update", "update:currentFilters", "update:currentPage", "update:currentSearch", "update:currentSort"],
58
- setup(e, { expose: o, emit: u }) {
59
- const t = e, $ = j(), h = l(null), y = R(V.key, V.defaults), x = r(() => {
58
+ setup(e, { expose: o, emit: f }) {
59
+ const t = e, d = f, x = R(), C = c(null), _ = U($.key, $.defaults), I = r(() => {
60
60
  var a;
61
61
  if (t.variant)
62
62
  return t.variant;
63
- if (((a = y.variant) == null ? void 0 : a.value) === "table")
63
+ if (((a = _.variant) == null ? void 0 : a.value) === "table")
64
64
  return "table";
65
- }), _ = r(() => y.variant !== void 0), s = l(1), E = r(() => !t.disablePagination && t.totalDataCount > 0), f = r(() => Math.ceil(t.totalDataCount / t.pageSize)), i = function(a, { shouldEmit: n } = {}) {
66
- var d, S;
67
- s.value = a, n && (m(), u("update:currentPage", a, t.pageSize)), Number((d = h.value) == null ? void 0 : d.getBoundingClientRect().top) < 0 && ((S = h.value) == null || S.scrollIntoView({ behavior: "smooth", block: "start" }));
68
- }, C = function({ shouldEmit: a } = {}) {
69
- const n = Math.max(s.value - 1, 1);
70
- i(n, { shouldEmit: a });
65
+ }), E = r(() => _.variant !== void 0), u = c(1), B = r(() => !t.disablePagination && t.totalDataCount > 0), p = r(() => Math.ceil(t.totalDataCount / t.pageSize)), i = function(a, { shouldEmit: n } = {}) {
66
+ var l, h;
67
+ u.value = a, n && (S(), d("update:currentPage", a, t.pageSize)), Number((l = C.value) == null ? void 0 : l.getBoundingClientRect().top) < 0 && ((h = C.value) == null || h.scrollIntoView({ behavior: "smooth", block: "start" }));
71
68
  }, P = function({ shouldEmit: a } = {}) {
72
- const n = Math.min(s.value + 1, f.value);
69
+ const n = Math.max(u.value - 1, 1);
70
+ i(n, { shouldEmit: a });
71
+ }, z = function({ shouldEmit: a } = {}) {
72
+ const n = Math.min(u.value + 1, p.value);
73
73
  i(n, { shouldEmit: a });
74
74
  };
75
- D(
75
+ b(
76
76
  () => t.currentPage,
77
77
  () => {
78
78
  i(t.currentPage);
79
79
  },
80
80
  { immediate: !0 }
81
81
  );
82
- const c = l(void 0), B = r(
83
- () => c.value ? b(c.value).id : void 0
84
- ), M = r(
85
- () => c.value ? b(c.value).order : void 0
86
- ), p = function(a, { sortOrder: n, shouldEmit: d } = {}) {
87
- const { id: S, order: A } = b(c.value || ""), k = et({ newId: a, newOrder: n, oldId: S, oldOrder: A });
88
- c.value = k, i(1), d && (m(), u("update:currentSort", k));
82
+ const s = c(void 0), M = r(
83
+ () => s.value ? y(s.value).id : void 0
84
+ ), k = r(
85
+ () => s.value ? y(s.value).order : void 0
86
+ ), v = function(a, { sortOrder: n, shouldEmit: l } = {}) {
87
+ const { id: h, order: F } = y(s.value || ""), N = at({ newId: a, newOrder: n, oldId: h, oldOrder: F });
88
+ s.value = N, i(1), l && (S(), d("update:currentSort", N));
89
89
  };
90
- D(
90
+ b(
91
91
  () => t.currentSort,
92
92
  () => {
93
- p(t.currentSort);
93
+ v(t.currentSort);
94
94
  },
95
95
  { immediate: !0 }
96
96
  );
97
- const v = l(""), I = l(!1), L = l(!1), g = function(a, { shouldEmit: n } = {}) {
98
- v.value = a || "", i(1), n && (m(), u("update:currentSearch", a));
97
+ const g = c(""), L = c(!1), T = c(!1), m = function(a, { shouldEmit: n } = {}) {
98
+ g.value = a || "", i(1), n && (S(), d("update:currentSearch", a));
99
99
  };
100
- D(
100
+ b(
101
101
  () => t.currentSearch,
102
102
  () => {
103
- g(t.currentSearch);
103
+ m(t.currentSearch);
104
104
  },
105
105
  { immediate: !0 }
106
106
  );
107
- const z = l({}), T = function(a, { shouldEmit: n } = {}) {
108
- z.value = a, i(1), n && (m(), u("update:currentFilters", a));
107
+ const D = c({}), A = function(a, { shouldEmit: n } = {}) {
108
+ D.value = a, i(1), n && (S(), d("update:currentFilters", a));
109
109
  };
110
- function m() {
111
- u("update", {
112
- page: s.value,
110
+ function S() {
111
+ d("update", {
112
+ page: u.value,
113
113
  pageSize: t.pageSize,
114
- ordering: c.value,
115
- search: v.value,
116
- filters: K(z.value)
114
+ ordering: s.value,
115
+ search: g.value,
116
+ filters: Q(D.value)
117
117
  });
118
118
  }
119
- return U(
120
- Y.key,
119
+ return J(
120
+ w.key,
121
121
  Object.freeze({
122
122
  // Pagination
123
- currentPage: r(() => s.value),
124
- isPaginationEnabled: E,
125
- pageCount: f,
123
+ currentPage: r(() => u.value),
124
+ isPaginationEnabled: B,
125
+ pageCount: p,
126
126
  pageSize: r(() => t.pageSize),
127
127
  totalDataCount: r(() => t.totalDataCount),
128
128
  setPage: i,
129
- goPrevPage: C,
130
- goNextPage: P,
129
+ goPrevPage: P,
130
+ goNextPage: z,
131
131
  // Sorting
132
- currentSortId: B,
133
- currentSortOrder: M,
134
- updateCurrentSort: p,
132
+ currentSortId: M,
133
+ currentSortOrder: k,
134
+ updateCurrentSort: v,
135
135
  // Search
136
- currentSearch: r(() => v.value),
137
- updateCurrentSearch: g,
136
+ currentSearch: r(() => g.value),
137
+ updateCurrentSearch: m,
138
138
  // Miscellaneous
139
139
  density: r(() => t.density),
140
- hasToolbar: I,
140
+ hasToolbar: L,
141
141
  isEmpty: r(() => t.data.length === 0),
142
- isSelectable: L,
142
+ isSelectable: T,
143
143
  isLoading: r(() => t.isLoading),
144
- isWithinModule: _,
145
- variant: x
144
+ isWithinModule: E,
145
+ variant: I
146
146
  })
147
147
  ), o({
148
- page: r(() => s.value),
148
+ page: r(() => u.value),
149
149
  pageSize: r(() => t.pageSize),
150
150
  setPage: i,
151
- goPrevPage: C,
152
- goNextPage: P,
153
- ordering: r(() => c.value),
154
- updateCurrentSort: p,
155
- search: r(() => v.value),
156
- updateCurrentSearch: g,
157
- filters: r(() => z.value),
158
- updateCurrentFilters: T
159
- }), (a, n) => (N(), J("div", {
151
+ goPrevPage: P,
152
+ goNextPage: z,
153
+ ordering: r(() => s.value),
154
+ updateCurrentSort: v,
155
+ search: r(() => g.value),
156
+ updateCurrentSearch: m,
157
+ filters: r(() => D.value),
158
+ updateCurrentFilters: A
159
+ }), (a, n) => (V(), W("div", {
160
160
  ref_key: "rootRef",
161
- ref: h,
161
+ ref: C,
162
162
  class: "stash-data-view tw-relative",
163
163
  "data-test": "stash-data-view"
164
164
  }, [
165
- W(a.$slots, "default", {
166
- currentPage: s.value,
167
- currentSortId: B.value,
168
- currentSortOrder: M.value,
165
+ G(a.$slots, "default", {
166
+ currentPage: u.value,
167
+ currentSortId: M.value,
168
+ currentSortOrder: k.value,
169
169
  data: a.data,
170
- goPrevPage: C,
171
- goNextPage: P,
172
- pageCount: f.value,
170
+ goPrevPage: P,
171
+ goNextPage: z,
172
+ pageCount: p.value,
173
173
  setPage: i,
174
174
  totalDataCount: t.totalDataCount,
175
- updateCurrentSort: p,
176
- updateCurrentSearch: g
175
+ updateCurrentSort: v,
176
+ updateCurrentSearch: m
177
177
  }),
178
- E.value && !_.value && f.value > 1 && !t.hideBottomPagination ? (N(), G(Q, {
178
+ B.value && !E.value && p.value > 1 && !t.hideBottomPagination ? (V(), Z(X, {
179
179
  key: 0,
180
- class: Z(["tw-mt-6", q($).paginate]),
181
- "current-page": s.value,
180
+ class: q(["tw-mt-6", H(x).paginate]),
181
+ "current-page": u.value,
182
182
  "list-length": t.totalDataCount,
183
183
  "page-size": t.pageSize,
184
- onSetPage: n[0] || (n[0] = (d) => i(d, { shouldEmit: !0 }))
185
- }, null, 8, ["class", "current-page", "list-length", "page-size"])) : H("", !0)
184
+ onSetPage: n[0] || (n[0] = (l) => i(l, { shouldEmit: !0 }))
185
+ }, null, 8, ["class", "current-page", "list-length", "page-size"])) : K("", !0)
186
186
  ], 512));
187
187
  }
188
- }), ot = {
189
- $style: w
190
- }, mt = /* @__PURE__ */ O(rt, [["__cssModules", ot]]);
188
+ }), nt = {
189
+ $style: O
190
+ }, St = /* @__PURE__ */ tt(ot, [["__cssModules", nt]]);
191
191
  export {
192
- Y as DATA_VIEW_INJECTION,
193
- X as DEFAULT_PAGE_SIZE,
194
- at as DataViewVariant,
195
- mt as default,
196
- b as deserializeSortValue,
197
- et as getNextSort,
198
- tt as serializeSortValue
192
+ w as DATA_VIEW_INJECTION,
193
+ Y as DEFAULT_PAGE_SIZE,
194
+ rt as DataViewVariant,
195
+ St as default,
196
+ y as deserializeSortValue,
197
+ at as getNextSort,
198
+ et as serializeSortValue
199
199
  };
200
200
  //# sourceMappingURL=DataView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataView.js","sources":["../src/components/DataView/DataView.utils.ts","../src/components/DataView/DataView.types.ts","../src/components/DataView/DataView.vue"],"sourcesContent":["import { SortId, SortOrder, SortValue, SortValueDeserialized } from './DataView.types';\n\n/**\n * Receives a SortValue (ex: `'-product_name'`) and returns an object with a `id` and an `order`.\n */\nexport function deserializeSortValue(sort: SortValue): SortValueDeserialized {\n const order = sort[0] === '-' ? 'desc' : 'asc';\n const id = order === 'asc' ? sort : sort.slice(1);\n\n return { id, order };\n}\n\n/**\n * Receives an object with a `id` and an `order` and returns a SortValue (ex: `'-product_name'`).\n */\nexport function serializeSortValue({ id, order }: SortValueDeserialized): SortValue {\n return `${order === 'desc' ? '-' : ''}${id}`;\n}\n\ninterface GetNextSortArgs {\n newId: SortId | undefined;\n newOrder?: SortOrder;\n oldId?: SortId;\n oldOrder?: SortOrder;\n}\n\n/**\n * Given new and old sorting data, it returns the next sorting value using the following sorting cycle:\n *\n * \"unsorted --> ascending --> descending --> unsorted\"\n */\nexport function getNextSort({ newId, newOrder, oldId, oldOrder }: GetNextSortArgs): SortValue | undefined {\n if (!newId) {\n return undefined;\n }\n\n if (newId !== oldId) {\n // if sorting by a new field, sort ascending\n return serializeSortValue({ id: newId, order: newOrder || 'asc' });\n }\n\n /**\n * `newOrder` and `oldOrder` can each have 3 different values: undefined, 'asc', or 'desc'.\n * Therefore, there are 9 possible combinations (3 times 3). See below:\n */\n\n // #region newOrder: undefined\n if (!newOrder && !oldOrder) {\n return newId; // ascending\n }\n\n if (!newOrder && oldOrder === 'desc') {\n return undefined; // unsorted\n }\n\n if (!newOrder && oldOrder === 'asc') {\n return `-${newId}`; // descending\n }\n // #endregion\n\n // #region newOrder: asc\n if (newOrder === 'asc' && !oldOrder) {\n return newId;\n }\n\n if (newOrder === 'asc' && oldOrder === 'asc') {\n return undefined;\n }\n\n if (newOrder === 'asc' && oldOrder === 'desc') {\n return newId;\n }\n // #endregion\n\n // #region newOrder: desc\n if (newOrder === 'desc' && !oldOrder) {\n return `-${newId}`;\n }\n\n if (newOrder === 'desc' && oldOrder === 'desc') {\n return undefined;\n }\n\n if (newOrder === 'desc' && oldOrder === 'asc') {\n return `-${newId}`;\n }\n // #endregion\n}\n","import { ComputedRef, Ref } from 'vue';\n\nimport { SpacingDensities } from '../../../types/misc';\n\nexport enum DataViewVariant {\n Table = 'table',\n}\n\nexport type DataViewVariants = `${DataViewVariant}`;\n\n/**\n * A unique id for a sorting strategy. If the order is descending, it must begin with \"-\" (a hyphen/dash).\n *\n * Ex: `'product_name'` if ascending or `'-product_name'` if descending\n */\nexport type SortValue = string;\n\n/**\n * The SortValue with its leading hyphen/dash removed\n */\nexport type SortId = string;\n\n/**\n * Determined by whether or not there is a leading hyphen/dash in the SortValue\n */\nexport type SortOrder = 'asc' | 'desc';\n\n/**\n * A deserialized instance of a `SortValue`.\n */\nexport type SortValueDeserialized = {\n id: SortId;\n order: SortOrder;\n};\n\n/** Updates the DataView internal state with the given sortId */\nexport type UpdateCurrentSort = (\n sortId: SortId | undefined,\n options?: {\n sortOrder?: SortOrder;\n /** If true, emits the `update:currentSort` and `update` events from DataView */\n shouldEmit?: boolean;\n },\n) => void;\n\n/** Updates the DataView internal state with the given page */\nexport type SetPage = (\n page: number,\n options?: {\n /** If true, emits the `update:currentPage` and `update` events from DataView */\n shouldEmit?: boolean;\n },\n) => void;\n\n/** Updates the DataView internal state with the previous page */\nexport type GoPrevPage = (options?: {\n /** If true, emits the `update:currentPage` and `update` events from DataView */\n shouldEmit?: boolean;\n}) => void;\n\n/** Updates the DataView internal state with the next page */\nexport type GoNextPage = (options?: {\n /** If true, emits the `update:currentPage` and `update` events from DataView */\n shouldEmit?: boolean;\n}) => void;\n\n/** Updates the DataView internal state with the given searchTerm */\nexport type UpdateCurrentSearch = (\n searchTerm?: string,\n options?: {\n /** If true, emits the `update:currentSearch` and `update` events from DataView */\n shouldEmit?: boolean;\n },\n) => void;\n\n/** Updates the DataView internal state with the given filter values */\nexport type UpdateCurrentFilters<FilterValues = object> = (\n newFilters: FilterValues,\n options?: {\n /** If true, emits the `update:currentSearch` and `update` events from DataView */\n shouldEmit?: boolean;\n },\n) => void;\n\nexport interface UpdateEvent<FilterValues = object> {\n page?: number;\n pageSize?: number;\n ordering?: string;\n search?: string;\n filters?: FilterValues;\n}\n\nexport interface DataViewInjection {\n currentPage: ComputedRef<number>;\n\n isPaginationEnabled: ComputedRef<boolean>;\n\n pageCount: ComputedRef<number>;\n\n pageSize: ComputedRef<number>;\n\n totalDataCount: ComputedRef<number>;\n\n /** Updates the DataView internal state with the given page */\n setPage: SetPage;\n\n /** Updates the DataView internal state with the previous page */\n goPrevPage: GoPrevPage;\n\n /** Updates the DataView internal state with the next page */\n goNextPage: GoNextPage;\n\n currentSortId: ComputedRef<SortId | undefined>;\n\n currentSortOrder: ComputedRef<SortOrder | undefined>;\n\n /** Updates the DataView internal state with the given sortId */\n updateCurrentSort: UpdateCurrentSort;\n\n currentSearch: ComputedRef<string>;\n\n /** Updates the DataView internal state with the given searchTerm */\n updateCurrentSearch: UpdateCurrentSearch;\n\n /**\n * The DataView's padding; the default value is \"comfortable\". On small screens, the density will always be \"compact\".\n */\n density: ComputedRef<SpacingDensities | undefined>;\n\n /**\n * Defines if a DataView has a Toolbar rendered. This prop is updated when DataViewToolbar exists and is mounted.\n */\n hasToolbar?: Ref<boolean>;\n\n /**\n * Enables certain loading indicators to be displayed within the DataView.\n */\n isLoading?: ComputedRef<boolean>;\n\n /**\n * Enables certain empty states to be displayed within the DataView.\n */\n isEmpty?: ComputedRef<boolean>;\n\n /**\n * Allows Table to control whether or not a DataViewToolbar should show a checkmark\n */\n isSelectable?: Ref<boolean>;\n\n /**\n * Whether or not the DataView is rendered within a Module; the value is inferred based on being\n * able to inject details from Module.\n *\n * Note: This is sent to DataView child components so they only need to worry about interfacing\n * with the DataViewInjection API.\n */\n isWithinModule: ComputedRef<boolean>;\n\n /**\n * The DataView's variant; the default value is undefined.\n */\n variant: ComputedRef<DataViewVariants | undefined>;\n}\n","<script lang=\"ts\">\n export * from './DataView.constants';\n export * from './DataView.keys';\n export * from './DataView.types';\n export * from './DataView.utils';\n</script>\n\n<script setup lang=\"ts\">\n import cloneDeep from 'lodash-es/cloneDeep';\n import { computed, inject, provide, ref, useCssModule, watch } from 'vue';\n\n import { SpacingDensities } from '../../../types/misc';\n import { MODULE_INJECTION } from '../Module/Module.keys';\n import Paginate from '../Paginate/Paginate.vue';\n import { DEFAULT_PAGE_SIZE } from './DataView.constants';\n import { DATA_VIEW_INJECTION } from './DataView.keys';\n import {\n DataViewVariants,\n GoNextPage,\n GoPrevPage,\n SetPage,\n SortId,\n SortOrder,\n SortValue,\n UpdateCurrentFilters,\n UpdateCurrentSearch,\n UpdateCurrentSort,\n UpdateEvent,\n } from './DataView.types';\n import { deserializeSortValue, getNextSort } from './DataView.utils';\n\n export interface DataViewProps {\n /**\n * Can be used to provide the initial page.\n * Also, it can be used to control the active page with `v-model:current-page=\"myPage\"`.\n */\n currentPage?: number;\n\n /**\n * Can be used to set the initial search term.\n * Also, it can be used to control the active search term with `v-model:current-search=\"mySearchTerm\"`.\n */\n currentSearch?: string;\n\n /**\n * Can be used to provide the initial sort order.\n * Also, it can be used to control the active sort order with `v-model:current-sort=\"mySortOrder\"`.\n */\n currentSort?: SortValue;\n\n /**\n * A list of records. If pagination is enabled, `data` must be only the current page of records.\n */\n data?: object[];\n\n /**\n * Controls the DataView's padding; the default value is \"comfortable\". On small screens, \"compact\" density is applied regardless of this prop's value.\n */\n density?: SpacingDensities;\n\n pageSize?: number;\n\n /**\n * Opt-out of displaying pagination. Hides the pagination buttons and page stats.\n */\n disablePagination?: boolean;\n\n /**\n * Hides the bottom pagination without disabling the pagination from the toolbar\n */\n hideBottomPagination?: boolean;\n\n /**\n * The total number of records available.\n * Used to auto-enable pagination when results exist.\n * DataView does not paginate data for you; instead, `props.data` should always show\n * the current page of results.\n */\n totalDataCount?: number;\n\n /**\n * DataView variant. The default value is `undefined`. Will default to `table` when used within\n * a `<Module variant=\"table\">`.\n */\n variant?: DataViewVariants;\n\n isLoading?: boolean;\n }\n\n const props = withDefaults(defineProps<DataViewProps>(), {\n currentPage: 1,\n currentSearch: undefined,\n currentSort: undefined,\n data: () => [],\n density: 'comfortable',\n pageSize: DEFAULT_PAGE_SIZE,\n disablePagination: false,\n totalDataCount: 0,\n hideBottomPagination: false,\n variant: undefined,\n });\n\n const emit =\n defineEmits<{\n (e: 'update', state: UpdateEvent): void;\n (e: 'update:currentFilters', newFilters: object): void;\n (e: 'update:currentPage', page: number, pageSize: number): void;\n (e: 'update:currentSearch', searchTerm?: string): void;\n (e: 'update:currentSort', payload?: SortValue): void;\n }>();\n\n const classes = useCssModule();\n const rootRef = ref<HTMLElement | null>(null);\n const moduleInjection = inject(MODULE_INJECTION.key, MODULE_INJECTION.defaults);\n const computedVariant = computed<DataViewVariants | undefined>(() => {\n if (props.variant) {\n return props.variant;\n }\n\n if (moduleInjection.variant?.value === 'table') {\n return 'table';\n }\n\n return undefined;\n });\n const isWithinModule = computed(() => moduleInjection.variant !== undefined);\n\n // #region pagination\n const internalPage = ref(1);\n const isPaginationEnabled = computed(() => !props.disablePagination && props.totalDataCount > 0);\n const pageCount = computed(() => Math.ceil(props.totalDataCount / props.pageSize));\n\n const setPage: SetPage = function (page: number, { shouldEmit } = {}) {\n internalPage.value = page;\n\n if (shouldEmit) {\n emitUpdate();\n emit('update:currentPage', page, props.pageSize);\n }\n\n if (Number(rootRef.value?.getBoundingClientRect().top) < 0) {\n rootRef.value?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n };\n\n const goPrevPage: GoPrevPage = function ({ shouldEmit } = {}) {\n const page = Math.max(internalPage.value - 1, 1);\n\n setPage(page, { shouldEmit });\n };\n\n /** Updates the DataView internal state with the previous page */\n const goNextPage: GoNextPage = function ({ shouldEmit } = {}) {\n const page = Math.min(internalPage.value + 1, pageCount.value);\n\n setPage(page, { shouldEmit });\n };\n\n watch(\n () => props.currentPage,\n () => {\n setPage(props.currentPage);\n },\n { immediate: true },\n );\n // #endregion pagination\n\n // #region sorting\n const internalSort = ref<SortValue | undefined>(undefined);\n\n const internalSortId = computed<SortId | undefined>(() =>\n internalSort.value ? deserializeSortValue(internalSort.value).id : undefined,\n );\n const internalSortOrder = computed<SortOrder | undefined>(() =>\n internalSort.value ? deserializeSortValue(internalSort.value).order : undefined,\n );\n\n const updateCurrentSort: UpdateCurrentSort = function (sortId, { sortOrder, shouldEmit } = {}) {\n const { id: oldId, order: oldOrder } = deserializeSortValue(internalSort.value || '');\n const nextSort = getNextSort({ newId: sortId, newOrder: sortOrder, oldId, oldOrder });\n\n internalSort.value = nextSort;\n setPage(1);\n\n if (shouldEmit) {\n emitUpdate();\n emit('update:currentSort', nextSort);\n }\n };\n\n watch(\n () => props.currentSort,\n () => {\n updateCurrentSort(props.currentSort);\n },\n { immediate: true },\n );\n // #endregion sorting\n\n // #region search\n const internalSearch = ref('');\n\n const hasToolbar = ref(false);\n const isSelectable = ref(false);\n\n const updateCurrentSearch: UpdateCurrentSearch = function (searchTerm, { shouldEmit } = {}) {\n internalSearch.value = searchTerm || '';\n setPage(1);\n\n if (shouldEmit) {\n emitUpdate();\n emit('update:currentSearch', searchTerm);\n }\n };\n\n watch(\n () => props.currentSearch,\n () => {\n updateCurrentSearch(props.currentSearch);\n },\n { immediate: true },\n );\n // #endregion search\n\n // #region filters\n const internalFilters = ref<object>({});\n\n const updateCurrentFilters: UpdateCurrentFilters = function (newFilters: object, { shouldEmit } = {}) {\n internalFilters.value = newFilters;\n setPage(1);\n\n if (shouldEmit) {\n emitUpdate();\n emit('update:currentFilters', newFilters);\n }\n };\n // #endregion filters\n\n function emitUpdate() {\n emit('update', {\n page: internalPage.value,\n pageSize: props.pageSize,\n ordering: internalSort.value,\n search: internalSearch.value,\n filters: cloneDeep(internalFilters.value),\n });\n }\n\n provide(\n DATA_VIEW_INJECTION.key,\n Object.freeze({\n // Pagination\n currentPage: computed(() => internalPage.value),\n isPaginationEnabled,\n pageCount,\n pageSize: computed(() => props.pageSize),\n totalDataCount: computed(() => props.totalDataCount),\n setPage,\n goPrevPage,\n goNextPage,\n\n // Sorting\n currentSortId: internalSortId,\n currentSortOrder: internalSortOrder,\n updateCurrentSort,\n\n // Search\n currentSearch: computed(() => internalSearch.value),\n updateCurrentSearch,\n\n // Miscellaneous\n density: computed(() => props.density),\n hasToolbar,\n isEmpty: computed(() => props.data.length === 0),\n isSelectable,\n isLoading: computed(() => props.isLoading),\n isWithinModule,\n variant: computedVariant,\n }),\n );\n\n defineExpose({\n page: computed(() => internalPage.value),\n pageSize: computed(() => props.pageSize),\n setPage,\n goPrevPage,\n goNextPage,\n ordering: computed(() => internalSort.value),\n updateCurrentSort,\n search: computed(() => internalSearch.value),\n updateCurrentSearch,\n filters: computed(() => internalFilters.value),\n updateCurrentFilters,\n });\n</script>\n\n<template>\n <div ref=\"rootRef\" class=\"stash-data-view tw-relative\" data-test=\"stash-data-view\">\n <!-- @slot default -->\n <slot\n :current-page=\"internalPage\"\n :current-sort-id=\"internalSortId\"\n :current-sort-order=\"internalSortOrder\"\n :data=\"data\"\n :go-prev-page=\"goPrevPage\"\n :go-next-page=\"goNextPage\"\n :page-count=\"pageCount\"\n :set-page=\"setPage\"\n :total-data-count=\"props.totalDataCount\"\n :update-current-sort=\"updateCurrentSort\"\n :update-current-search=\"updateCurrentSearch\"\n ></slot>\n\n <Paginate\n v-if=\"isPaginationEnabled && !isWithinModule && pageCount > 1 && !props.hideBottomPagination\"\n class=\"tw-mt-6\"\n :class=\"classes.paginate\"\n :current-page=\"internalPage\"\n :list-length=\"props.totalDataCount\"\n :page-size=\"props.pageSize\"\n @set-page=\"(page: number) => setPage(page, { shouldEmit: true })\"\n />\n </div>\n</template>\n\n<style module>\n .paginate ul {\n margin: 0;\n }\n</style>\n"],"names":["deserializeSortValue","sort","order","serializeSortValue","id","getNextSort","newId","newOrder","oldId","oldOrder","DataViewVariant","classes","useCssModule","rootRef","ref","moduleInjection","inject","MODULE_INJECTION","computedVariant","computed","props","_a","isWithinModule","internalPage","isPaginationEnabled","pageCount","setPage","page","shouldEmit","emitUpdate","emit","_b","goPrevPage","goNextPage","watch","internalSort","internalSortId","internalSortOrder","updateCurrentSort","sortId","sortOrder","nextSort","internalSearch","hasToolbar","isSelectable","updateCurrentSearch","searchTerm","internalFilters","updateCurrentFilters","newFilters","cloneDeep","provide","DATA_VIEW_INJECTION","__expose"],"mappings":"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"}
1
+ {"version":3,"file":"DataView.js","sources":["../src/components/DataView/DataView.utils.ts","../src/components/DataView/DataView.types.ts","../src/components/DataView/DataView.vue"],"sourcesContent":["import { SortId, SortOrder, SortValue, SortValueDeserialized } from './DataView.types';\n\n/**\n * Receives a SortValue (ex: `'-product_name'`) and returns an object with a `id` and an `order`.\n */\nexport function deserializeSortValue(sort: SortValue): SortValueDeserialized {\n const order = sort[0] === '-' ? 'desc' : 'asc';\n const id = order === 'asc' ? sort : sort.slice(1);\n\n return { id, order };\n}\n\n/**\n * Receives an object with a `id` and an `order` and returns a SortValue (ex: `'-product_name'`).\n */\nexport function serializeSortValue({ id, order }: SortValueDeserialized): SortValue {\n return `${order === 'desc' ? '-' : ''}${id}`;\n}\n\ninterface GetNextSortArgs {\n newId: SortId | undefined;\n newOrder?: SortOrder;\n oldId?: SortId;\n oldOrder?: SortOrder;\n}\n\n/**\n * Given new and old sorting data, it returns the next sorting value using the following sorting cycle:\n *\n * \"unsorted --> ascending --> descending --> unsorted\"\n */\nexport function getNextSort({ newId, newOrder, oldId, oldOrder }: GetNextSortArgs): SortValue | undefined {\n if (!newId) {\n return undefined;\n }\n\n if (newId !== oldId) {\n // if sorting by a new field, sort ascending\n return serializeSortValue({ id: newId, order: newOrder || 'asc' });\n }\n\n /**\n * `newOrder` and `oldOrder` can each have 3 different values: undefined, 'asc', or 'desc'.\n * Therefore, there are 9 possible combinations (3 times 3). See below:\n */\n\n // #region newOrder: undefined\n if (!newOrder && !oldOrder) {\n return newId; // ascending\n }\n\n if (!newOrder && oldOrder === 'desc') {\n return undefined; // unsorted\n }\n\n if (!newOrder && oldOrder === 'asc') {\n return `-${newId}`; // descending\n }\n // #endregion\n\n // #region newOrder: asc\n if (newOrder === 'asc' && !oldOrder) {\n return newId;\n }\n\n if (newOrder === 'asc' && oldOrder === 'asc') {\n return undefined;\n }\n\n if (newOrder === 'asc' && oldOrder === 'desc') {\n return newId;\n }\n // #endregion\n\n // #region newOrder: desc\n if (newOrder === 'desc' && !oldOrder) {\n return `-${newId}`;\n }\n\n if (newOrder === 'desc' && oldOrder === 'desc') {\n return undefined;\n }\n\n if (newOrder === 'desc' && oldOrder === 'asc') {\n return `-${newId}`;\n }\n // #endregion\n}\n","import { ComputedRef, Ref } from 'vue';\n\nimport { SpacingDensities } from '../../../types/misc';\n\nexport enum DataViewVariant {\n Table = 'table',\n}\n\nexport type DataViewVariants = `${DataViewVariant}`;\n\n/**\n * A unique id for a sorting strategy. If the order is descending, it must begin with \"-\" (a hyphen/dash).\n *\n * Ex: `'product_name'` if ascending or `'-product_name'` if descending\n */\nexport type SortValue = string;\n\n/**\n * The SortValue with its leading hyphen/dash removed\n */\nexport type SortId = string;\n\n/**\n * Determined by whether or not there is a leading hyphen/dash in the SortValue\n */\nexport type SortOrder = 'asc' | 'desc';\n\n/**\n * A deserialized instance of a `SortValue`.\n */\nexport type SortValueDeserialized = {\n id: SortId;\n order: SortOrder;\n};\n\n/** Updates the DataView internal state with the given sortId */\nexport type UpdateCurrentSort = (\n sortId: SortId | undefined,\n options?: {\n sortOrder?: SortOrder;\n /** If true, emits the `update:currentSort` and `update` events from DataView */\n shouldEmit?: boolean;\n },\n) => void;\n\n/** Updates the DataView internal state with the given page */\nexport type SetPage = (\n page: number,\n options?: {\n /** If true, emits the `update:currentPage` and `update` events from DataView */\n shouldEmit?: boolean;\n },\n) => void;\n\n/** Updates the DataView internal state with the previous page */\nexport type GoPrevPage = (options?: {\n /** If true, emits the `update:currentPage` and `update` events from DataView */\n shouldEmit?: boolean;\n}) => void;\n\n/** Updates the DataView internal state with the next page */\nexport type GoNextPage = (options?: {\n /** If true, emits the `update:currentPage` and `update` events from DataView */\n shouldEmit?: boolean;\n}) => void;\n\n/** Updates the DataView internal state with the given searchTerm */\nexport type UpdateCurrentSearch = (\n searchTerm?: string,\n options?: {\n /** If true, emits the `update:currentSearch` and `update` events from DataView */\n shouldEmit?: boolean;\n },\n) => void;\n\n/** Updates the DataView internal state with the given filter values */\nexport type UpdateCurrentFilters<FilterValues = object> = (\n newFilters: FilterValues,\n options?: {\n /** If true, emits the `update:currentSearch` and `update` events from DataView */\n shouldEmit?: boolean;\n },\n) => void;\n\nexport interface UpdateEvent<FilterValues = object> {\n page?: number;\n pageSize?: number;\n ordering?: string;\n search?: string;\n filters?: FilterValues;\n}\n\nexport interface DataViewInjection {\n currentPage: ComputedRef<number>;\n\n isPaginationEnabled: ComputedRef<boolean>;\n\n pageCount: ComputedRef<number>;\n\n pageSize: ComputedRef<number>;\n\n totalDataCount: ComputedRef<number>;\n\n /** Updates the DataView internal state with the given page */\n setPage: SetPage;\n\n /** Updates the DataView internal state with the previous page */\n goPrevPage: GoPrevPage;\n\n /** Updates the DataView internal state with the next page */\n goNextPage: GoNextPage;\n\n currentSortId: ComputedRef<SortId | undefined>;\n\n currentSortOrder: ComputedRef<SortOrder | undefined>;\n\n /** Updates the DataView internal state with the given sortId */\n updateCurrentSort: UpdateCurrentSort;\n\n currentSearch: ComputedRef<string>;\n\n /** Updates the DataView internal state with the given searchTerm */\n updateCurrentSearch: UpdateCurrentSearch;\n\n /**\n * The DataView's padding; the default value is \"comfortable\". On small screens, the density will always be \"compact\".\n */\n density: ComputedRef<SpacingDensities | undefined>;\n\n /**\n * Defines if a DataView has a Toolbar rendered. This prop is updated when DataViewToolbar exists and is mounted.\n */\n hasToolbar?: Ref<boolean>;\n\n /**\n * Enables certain loading indicators to be displayed within the DataView.\n */\n isLoading?: ComputedRef<boolean>;\n\n /**\n * Enables certain empty states to be displayed within the DataView.\n */\n isEmpty?: ComputedRef<boolean>;\n\n /**\n * Allows Table to control whether or not a DataViewToolbar should show a checkmark\n */\n isSelectable?: Ref<boolean>;\n\n /**\n * Whether or not the DataView is rendered within a Module; the value is inferred based on being\n * able to inject details from Module.\n *\n * Note: This is sent to DataView child components so they only need to worry about interfacing\n * with the DataViewInjection API.\n */\n isWithinModule: ComputedRef<boolean>;\n\n /**\n * The DataView's variant; the default value is undefined.\n */\n variant: ComputedRef<DataViewVariants | undefined>;\n}\n","<script lang=\"ts\">\n export * from './DataView.constants';\n export * from './DataView.keys';\n export * from './DataView.types';\n export * from './DataView.utils';\n</script>\n\n<script setup lang=\"ts\">\n import cloneDeep from 'lodash-es/cloneDeep';\n import { computed, inject, provide, ref, useCssModule, watch } from 'vue';\n\n import { SpacingDensities } from '../../../types/misc';\n import { MODULE_INJECTION } from '../Module/Module.keys';\n import Paginate from '../Paginate/Paginate.vue';\n import { DEFAULT_PAGE_SIZE } from './DataView.constants';\n import { DATA_VIEW_INJECTION } from './DataView.keys';\n import {\n DataViewVariants,\n GoNextPage,\n GoPrevPage,\n SetPage,\n SortId,\n SortOrder,\n SortValue,\n UpdateCurrentFilters,\n UpdateCurrentSearch,\n UpdateCurrentSort,\n UpdateEvent,\n } from './DataView.types';\n import { deserializeSortValue, getNextSort } from './DataView.utils';\n\n export interface DataViewProps {\n /**\n * Can be used to provide the initial page.\n * Also, it can be used to control the active page with `v-model:current-page=\"myPage\"`.\n */\n currentPage?: number;\n\n /**\n * Can be used to set the initial search term.\n * Also, it can be used to control the active search term with `v-model:current-search=\"mySearchTerm\"`.\n */\n currentSearch?: string;\n\n /**\n * Can be used to provide the initial sort order.\n * Also, it can be used to control the active sort order with `v-model:current-sort=\"mySortOrder\"`.\n */\n currentSort?: SortValue;\n\n /**\n * A list of records. If pagination is enabled, `data` must be only the current page of records.\n */\n data?: object[];\n\n /**\n * Controls the DataView's padding; the default value is \"comfortable\". On small screens, \"compact\" density is applied regardless of this prop's value.\n */\n density?: SpacingDensities;\n\n pageSize?: number;\n\n /**\n * Opt-out of displaying pagination. Hides the pagination buttons and page stats.\n */\n disablePagination?: boolean;\n\n /**\n * Hides the bottom pagination without disabling the pagination from the toolbar\n */\n hideBottomPagination?: boolean;\n\n /**\n * The total number of records available.\n * Used to auto-enable pagination when results exist.\n * DataView does not paginate data for you; instead, `props.data` should always show\n * the current page of results.\n */\n totalDataCount?: number;\n\n /**\n * DataView variant. The default value is `undefined`. Will default to `table` when used within\n * a `<Module variant=\"table\">`.\n */\n variant?: DataViewVariants;\n\n isLoading?: boolean;\n }\n\n const props = withDefaults(defineProps<DataViewProps>(), {\n currentPage: 1,\n currentSearch: undefined,\n currentSort: undefined,\n data: () => [],\n density: 'comfortable',\n pageSize: DEFAULT_PAGE_SIZE,\n disablePagination: false,\n totalDataCount: 0,\n hideBottomPagination: false,\n variant: undefined,\n });\n\n const emit = defineEmits<{\n (e: 'update', state: UpdateEvent): void;\n (e: 'update:currentFilters', newFilters: object): void;\n (e: 'update:currentPage', page: number, pageSize: number): void;\n (e: 'update:currentSearch', searchTerm?: string): void;\n (e: 'update:currentSort', payload?: SortValue): void;\n }>();\n\n const classes = useCssModule();\n const rootRef = ref<HTMLElement | null>(null);\n const moduleInjection = inject(MODULE_INJECTION.key, MODULE_INJECTION.defaults);\n const computedVariant = computed<DataViewVariants | undefined>(() => {\n if (props.variant) {\n return props.variant;\n }\n\n if (moduleInjection.variant?.value === 'table') {\n return 'table';\n }\n\n return undefined;\n });\n const isWithinModule = computed(() => moduleInjection.variant !== undefined);\n\n // #region pagination\n const internalPage = ref(1);\n const isPaginationEnabled = computed(() => !props.disablePagination && props.totalDataCount > 0);\n const pageCount = computed(() => Math.ceil(props.totalDataCount / props.pageSize));\n\n const setPage: SetPage = function (page: number, { shouldEmit } = {}) {\n internalPage.value = page;\n\n if (shouldEmit) {\n emitUpdate();\n emit('update:currentPage', page, props.pageSize);\n }\n\n if (Number(rootRef.value?.getBoundingClientRect().top) < 0) {\n rootRef.value?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }\n };\n\n const goPrevPage: GoPrevPage = function ({ shouldEmit } = {}) {\n const page = Math.max(internalPage.value - 1, 1);\n\n setPage(page, { shouldEmit });\n };\n\n /** Updates the DataView internal state with the previous page */\n const goNextPage: GoNextPage = function ({ shouldEmit } = {}) {\n const page = Math.min(internalPage.value + 1, pageCount.value);\n\n setPage(page, { shouldEmit });\n };\n\n watch(\n () => props.currentPage,\n () => {\n setPage(props.currentPage);\n },\n { immediate: true },\n );\n // #endregion pagination\n\n // #region sorting\n const internalSort = ref<SortValue | undefined>(undefined);\n\n const internalSortId = computed<SortId | undefined>(() =>\n internalSort.value ? deserializeSortValue(internalSort.value).id : undefined,\n );\n const internalSortOrder = computed<SortOrder | undefined>(() =>\n internalSort.value ? deserializeSortValue(internalSort.value).order : undefined,\n );\n\n const updateCurrentSort: UpdateCurrentSort = function (sortId, { sortOrder, shouldEmit } = {}) {\n const { id: oldId, order: oldOrder } = deserializeSortValue(internalSort.value || '');\n const nextSort = getNextSort({ newId: sortId, newOrder: sortOrder, oldId, oldOrder });\n\n internalSort.value = nextSort;\n setPage(1);\n\n if (shouldEmit) {\n emitUpdate();\n emit('update:currentSort', nextSort);\n }\n };\n\n watch(\n () => props.currentSort,\n () => {\n updateCurrentSort(props.currentSort);\n },\n { immediate: true },\n );\n // #endregion sorting\n\n // #region search\n const internalSearch = ref('');\n\n const hasToolbar = ref(false);\n const isSelectable = ref(false);\n\n const updateCurrentSearch: UpdateCurrentSearch = function (searchTerm, { shouldEmit } = {}) {\n internalSearch.value = searchTerm || '';\n setPage(1);\n\n if (shouldEmit) {\n emitUpdate();\n emit('update:currentSearch', searchTerm);\n }\n };\n\n watch(\n () => props.currentSearch,\n () => {\n updateCurrentSearch(props.currentSearch);\n },\n { immediate: true },\n );\n // #endregion search\n\n // #region filters\n const internalFilters = ref<object>({});\n\n const updateCurrentFilters: UpdateCurrentFilters = function (newFilters: object, { shouldEmit } = {}) {\n internalFilters.value = newFilters;\n setPage(1);\n\n if (shouldEmit) {\n emitUpdate();\n emit('update:currentFilters', newFilters);\n }\n };\n // #endregion filters\n\n function emitUpdate() {\n emit('update', {\n page: internalPage.value,\n pageSize: props.pageSize,\n ordering: internalSort.value,\n search: internalSearch.value,\n filters: cloneDeep(internalFilters.value),\n });\n }\n\n provide(\n DATA_VIEW_INJECTION.key,\n Object.freeze({\n // Pagination\n currentPage: computed(() => internalPage.value),\n isPaginationEnabled,\n pageCount,\n pageSize: computed(() => props.pageSize),\n totalDataCount: computed(() => props.totalDataCount),\n setPage,\n goPrevPage,\n goNextPage,\n\n // Sorting\n currentSortId: internalSortId,\n currentSortOrder: internalSortOrder,\n updateCurrentSort,\n\n // Search\n currentSearch: computed(() => internalSearch.value),\n updateCurrentSearch,\n\n // Miscellaneous\n density: computed(() => props.density),\n hasToolbar,\n isEmpty: computed(() => props.data.length === 0),\n isSelectable,\n isLoading: computed(() => props.isLoading),\n isWithinModule,\n variant: computedVariant,\n }),\n );\n\n defineExpose({\n page: computed(() => internalPage.value),\n pageSize: computed(() => props.pageSize),\n setPage,\n goPrevPage,\n goNextPage,\n ordering: computed(() => internalSort.value),\n updateCurrentSort,\n search: computed(() => internalSearch.value),\n updateCurrentSearch,\n filters: computed(() => internalFilters.value),\n updateCurrentFilters,\n });\n</script>\n\n<template>\n <div ref=\"rootRef\" class=\"stash-data-view tw-relative\" data-test=\"stash-data-view\">\n <!-- @slot default -->\n <slot\n :current-page=\"internalPage\"\n :current-sort-id=\"internalSortId\"\n :current-sort-order=\"internalSortOrder\"\n :data=\"data\"\n :go-prev-page=\"goPrevPage\"\n :go-next-page=\"goNextPage\"\n :page-count=\"pageCount\"\n :set-page=\"setPage\"\n :total-data-count=\"props.totalDataCount\"\n :update-current-sort=\"updateCurrentSort\"\n :update-current-search=\"updateCurrentSearch\"\n ></slot>\n\n <Paginate\n v-if=\"isPaginationEnabled && !isWithinModule && pageCount > 1 && !props.hideBottomPagination\"\n class=\"tw-mt-6\"\n :class=\"classes.paginate\"\n :current-page=\"internalPage\"\n :list-length=\"props.totalDataCount\"\n :page-size=\"props.pageSize\"\n @set-page=\"(page: number) => setPage(page, { shouldEmit: true })\"\n />\n </div>\n</template>\n\n<style module>\n .paginate ul {\n margin: 0;\n }\n</style>\n"],"names":["deserializeSortValue","sort","order","serializeSortValue","id","getNextSort","newId","newOrder","oldId","oldOrder","DataViewVariant","props","__props","emit","__emit","classes","useCssModule","rootRef","ref","moduleInjection","inject","MODULE_INJECTION","computedVariant","computed","_a","isWithinModule","internalPage","isPaginationEnabled","pageCount","setPage","page","shouldEmit","emitUpdate","_b","goPrevPage","goNextPage","watch","internalSort","internalSortId","internalSortOrder","updateCurrentSort","sortId","sortOrder","nextSort","internalSearch","hasToolbar","isSelectable","updateCurrentSearch","searchTerm","internalFilters","updateCurrentFilters","newFilters","cloneDeep","provide","DATA_VIEW_INJECTION","__expose"],"mappings":"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"}
@@ -1,13 +1,12 @@
1
- import { AllowedComponentProps } from 'vue';
2
- import { ComponentCustomProps } from 'vue';
3
1
  import { ComponentOptionsMixin } from 'vue';
2
+ import { ComponentProvideOptions } from 'vue';
4
3
  import { ComputedRef } from 'vue';
5
4
  import { DefineComponent } from 'vue';
6
5
  import { ExtractPropTypes } from 'vue';
7
6
  import { InjectionKey } from 'vue';
8
7
  import { PropType } from 'vue';
8
+ import { PublicProps } from 'vue';
9
9
  import { Ref } from 'vue';
10
- import { VNodeProps } from 'vue';
11
10
 
12
11
  declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
13
12
 
@@ -149,7 +148,7 @@ export declare enum DataViewVariant {
149
148
 
150
149
  export declare type DataViewVariants = `${DataViewVariant}`;
151
150
 
152
- declare const _default: __VLS_WithTemplateSlots<DefineComponent<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<DataViewProps>, {
151
+ declare const _default: __VLS_WithTemplateSlots<DefineComponent<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<DataViewProps>, {
153
152
  currentPage: number;
154
153
  currentSearch: undefined;
155
154
  currentSort: undefined;
@@ -160,7 +159,7 @@ declare const _default: __VLS_WithTemplateSlots<DefineComponent<__VLS_WithDefaul
160
159
  totalDataCount: number;
161
160
  hideBottomPagination: boolean;
162
161
  variant: undefined;
163
- }>, {
162
+ }>>, {
164
163
  page: ComputedRef<number>;
165
164
  pageSize: ComputedRef<number>;
166
165
  setPage: SetPage;
@@ -172,13 +171,13 @@ declare const _default: __VLS_WithTemplateSlots<DefineComponent<__VLS_WithDefaul
172
171
  updateCurrentSearch: UpdateCurrentSearch;
173
172
  filters: ComputedRef<object>;
174
173
  updateCurrentFilters: UpdateCurrentFilters;
175
- }, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
174
+ }, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
176
175
  update: (state: UpdateEvent<object>) => void;
177
176
  "update:currentFilters": (newFilters: object) => void;
178
177
  "update:currentPage": (page: number, pageSize: number) => void;
179
178
  "update:currentSearch": (searchTerm?: string | undefined) => void;
180
179
  "update:currentSort": (payload?: string | undefined) => void;
181
- }, string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<DataViewProps>, {
180
+ }, string, PublicProps, Readonly<ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToRuntimeProps<DataViewProps>, {
182
181
  currentPage: number;
183
182
  currentSearch: undefined;
184
183
  currentSort: undefined;
@@ -189,13 +188,13 @@ declare const _default: __VLS_WithTemplateSlots<DefineComponent<__VLS_WithDefaul
189
188
  totalDataCount: number;
190
189
  hideBottomPagination: boolean;
191
190
  variant: undefined;
192
- }>>> & {
191
+ }>>> & Readonly<{
193
192
  onUpdate?: ((state: UpdateEvent<object>) => any) | undefined;
194
193
  "onUpdate:currentFilters"?: ((newFilters: object) => any) | undefined;
195
194
  "onUpdate:currentPage"?: ((page: number, pageSize: number) => any) | undefined;
196
195
  "onUpdate:currentSearch"?: ((searchTerm?: string | undefined) => any) | undefined;
197
196
  "onUpdate:currentSort"?: ((payload?: string | undefined) => any) | undefined;
198
- }, {
197
+ }>, {
199
198
  data: object[];
200
199
  variant: "table";
201
200
  currentPage: number;
@@ -206,7 +205,7 @@ declare const _default: __VLS_WithTemplateSlots<DefineComponent<__VLS_WithDefaul
206
205
  currentSort: string;
207
206
  disablePagination: boolean;
208
207
  hideBottomPagination: boolean;
209
- }, {}>, {
208
+ }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>, {
210
209
  default?(_: {
211
210
  currentPage: number;
212
211
  currentSortId: string | undefined;