@leaflink/stash 53.4.1 → 53.4.3

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 (183) hide show
  1. package/README.md +5 -2
  2. package/dist/Accordion.js +1 -1
  3. package/dist/Accordion.js.map +1 -1
  4. package/dist/ActionsDropdown.js +2 -2
  5. package/dist/ActionsDropdown.js.map +1 -1
  6. package/dist/AddressSelect.js.map +1 -1
  7. package/dist/AddressSelect.vue.d.ts +1 -1
  8. package/dist/Alert.js.map +1 -1
  9. package/dist/AppNavigationItem.js +1 -1
  10. package/dist/AppNavigationItem.js.map +1 -1
  11. package/dist/AppSidebar.js.map +1 -1
  12. package/dist/AppTopbar.js +1 -1
  13. package/dist/AppTopbar.js.map +1 -1
  14. package/dist/Avatar.js.map +1 -1
  15. package/dist/Badge.js.map +1 -1
  16. package/dist/Box.vue_vue_type_script_setup_true_lang-dFFZN40_.js.map +1 -1
  17. package/dist/Button.js.map +1 -1
  18. package/dist/ButtonGroup.js.map +1 -1
  19. package/dist/Card.js.map +1 -1
  20. package/dist/CardHeader.js.map +1 -1
  21. package/dist/CardMedia.js.map +1 -1
  22. package/dist/Carousel.js +169 -169
  23. package/dist/Carousel.js.map +1 -1
  24. package/dist/Checkbox.js +31 -31
  25. package/dist/Checkbox.js.map +1 -1
  26. package/dist/ChevronToggle.vue_vue_type_script_setup_true_lang-Ce_qOXfR.js.map +1 -1
  27. package/dist/Chip.js +21 -21
  28. package/dist/Chip.js.map +1 -1
  29. package/dist/Chip.vue.d.ts +1 -1
  30. package/dist/ConfirmationCodeInput.js +1 -1
  31. package/dist/ConfirmationCodeInput.js.map +1 -1
  32. package/dist/ContextSwitcher.js +28 -28
  33. package/dist/ContextSwitcher.js.map +1 -1
  34. package/dist/Copy.js +1 -1
  35. package/dist/Copy.js.map +1 -1
  36. package/dist/CurrencyInput.js +1 -1
  37. package/dist/CurrencyInput.js.map +1 -1
  38. package/dist/DataView.js +51 -51
  39. package/dist/DataView.js.map +1 -1
  40. package/dist/DataViewFilters.js.map +1 -1
  41. package/dist/DataViewFilters.vue.d.ts +1 -1
  42. package/dist/DataViewSortButton.js +2 -2
  43. package/dist/DataViewSortButton.js.map +1 -1
  44. package/dist/DataViewToolbar.js +5 -5
  45. package/dist/DataViewToolbar.js.map +1 -1
  46. package/dist/DatePicker.js +237 -237
  47. package/dist/DatePicker.js.map +1 -1
  48. package/dist/DatePicker.vue.d.ts +1 -1
  49. package/dist/DescriptionList.js.map +1 -1
  50. package/dist/DescriptionListDetail.js.map +1 -1
  51. package/dist/DescriptionListGroup.js.map +1 -1
  52. package/dist/DescriptionListTerm.js.map +1 -1
  53. package/dist/Dialog.js.map +1 -1
  54. package/dist/Divider.js.map +1 -1
  55. package/dist/Dropdown.js +45 -45
  56. package/dist/Dropdown.js.map +1 -1
  57. package/dist/EmptyState.js.map +1 -1
  58. package/dist/Expand.js +1 -1
  59. package/dist/Expand.vue_vue_type_script_setup_true_lang-BmNJA0Xy.js +74 -0
  60. package/dist/{Expand.vue_vue_type_script_setup_true_lang-CiONJfAp.js.map → Expand.vue_vue_type_script_setup_true_lang-BmNJA0Xy.js.map} +1 -1
  61. package/dist/Field.js +1 -1
  62. package/dist/{Field.vue_vue_type_script_setup_true_lang-dAGKfjf5.js → Field.vue_vue_type_script_setup_true_lang-D2I8xDEW.js} +29 -29
  63. package/dist/{Field.vue_vue_type_script_setup_true_lang-dAGKfjf5.js.map → Field.vue_vue_type_script_setup_true_lang-D2I8xDEW.js.map} +1 -1
  64. package/dist/FileUpload.js +54 -54
  65. package/dist/FileUpload.js.map +1 -1
  66. package/dist/FilterChip.js.map +1 -1
  67. package/dist/FilterChip.vue.d.ts +1 -1
  68. package/dist/FilterDrawerItem.js.map +1 -1
  69. package/dist/FilterDropdown.js.map +1 -1
  70. package/dist/FilterSelect.js +1 -1
  71. package/dist/FilterSelect.js.map +1 -1
  72. package/dist/Filters.js +4 -6
  73. package/dist/Filters.js.map +1 -1
  74. package/dist/Filters.vue.d.ts +57 -57
  75. package/dist/HttpError.js +6 -6
  76. package/dist/HttpError.js.map +1 -1
  77. package/dist/Icon.js.map +1 -1
  78. package/dist/IconLabel.js +13 -13
  79. package/dist/IconLabel.js.map +1 -1
  80. package/dist/Illustration.vue_vue_type_script_setup_true_lang-C1bPkWZZ.js.map +1 -1
  81. package/dist/Image.vue_vue_type_script_setup_true_lang-CAj0FH9h.js.map +1 -1
  82. package/dist/InlineEdit.js.map +1 -1
  83. package/dist/InlineEdit.vue.d.ts +1 -1
  84. package/dist/Input.js +35 -35
  85. package/dist/Input.js.map +1 -1
  86. package/dist/InputOptions.js +35 -35
  87. package/dist/InputOptions.js.map +1 -1
  88. package/dist/InputOptions.vue.d.ts +1 -1
  89. package/dist/IntegrationIcon.js.map +1 -1
  90. package/dist/Label.vue_vue_type_script_setup_true_lang-xwY3X-iV.js.map +1 -1
  91. package/dist/LicenseChip.js +9 -9
  92. package/dist/LicenseChip.js.map +1 -1
  93. package/dist/ListItem.js.map +1 -1
  94. package/dist/ListItemCell.js.map +1 -1
  95. package/dist/ListView.js +1 -1
  96. package/dist/ListView.js.map +1 -1
  97. package/dist/ListView.vue.d.ts +71 -71
  98. package/dist/Loading.js +2 -2
  99. package/dist/Loading.js.map +1 -1
  100. package/dist/Logo.js +1 -1
  101. package/dist/{Logo.vue_vue_type_script_setup_true_lang-DghNC_k6.js → Logo.vue_vue_type_script_setup_true_lang-qiNaaWWV.js} +17 -17
  102. package/dist/Logo.vue_vue_type_script_setup_true_lang-qiNaaWWV.js.map +1 -0
  103. package/dist/MenuItem.js.map +1 -1
  104. package/dist/Metric.js +12 -12
  105. package/dist/Metric.js.map +1 -1
  106. package/dist/Modal.js.map +1 -1
  107. package/dist/Modals.js.map +1 -1
  108. package/dist/Module.js.map +1 -1
  109. package/dist/ModuleContent.js.map +1 -1
  110. package/dist/ModuleFooter.js.map +1 -1
  111. package/dist/ModuleHeader.js.map +1 -1
  112. package/dist/MoreActions.js +2 -2
  113. package/dist/MoreActions.js.map +1 -1
  114. package/dist/ObfuscateText.js.map +1 -1
  115. package/dist/PageContent.js.map +1 -1
  116. package/dist/PageHeader.js.map +1 -1
  117. package/dist/PageNavigation.js +1 -1
  118. package/dist/PageNavigation.js.map +1 -1
  119. package/dist/Paginate.js.map +1 -1
  120. package/dist/PlaidLink.js.map +1 -1
  121. package/dist/QuickAction.js.map +1 -1
  122. package/dist/Radio.js.map +1 -1
  123. package/dist/RadioGroup.js +1 -1
  124. package/dist/RadioGroup.js.map +1 -1
  125. package/dist/RadioGroup.vue.d.ts +1 -1
  126. package/dist/RadioNew.js.map +1 -1
  127. package/dist/RangeInput.js.map +1 -1
  128. package/dist/SearchBar.js.map +1 -1
  129. package/dist/SearchBar.vue.d.ts +1 -1
  130. package/dist/SectionHeader.js.map +1 -1
  131. package/dist/Select.js +2 -2
  132. package/dist/Select.js.map +1 -1
  133. package/dist/Select.vue.d.ts +1 -1
  134. package/dist/SelectStatus.js.map +1 -1
  135. package/dist/SelectStatus.vue.d.ts +1 -1
  136. package/dist/Skeleton.js.map +1 -1
  137. package/dist/Step.js +8 -8
  138. package/dist/Step.js.map +1 -1
  139. package/dist/Step.vue.d.ts +1 -1
  140. package/dist/Stepper.js.map +1 -1
  141. package/dist/Stepper.vue.d.ts +1 -1
  142. package/dist/Switch.js +15 -15
  143. package/dist/Switch.js.map +1 -1
  144. package/dist/Tab.js +1 -1
  145. package/dist/Tab.js.map +1 -1
  146. package/dist/TabPanel.js.map +1 -1
  147. package/dist/Table.js.map +1 -1
  148. package/dist/TableCell.js.map +1 -1
  149. package/dist/TableHeaderCell.js.map +1 -1
  150. package/dist/TableHeaderRow.js.map +1 -1
  151. package/dist/TableRow.js +18 -18
  152. package/dist/TableRow.js.map +1 -1
  153. package/dist/Tabs.js +2 -2
  154. package/dist/{Tabs.vue_vue_type_script_setup_true_lang-BFURXY_-.js → Tabs.vue_vue_type_script_setup_true_lang-B3FBaVP5.js} +48 -48
  155. package/dist/{Tabs.vue_vue_type_script_setup_true_lang-BFURXY_-.js.map → Tabs.vue_vue_type_script_setup_true_lang-B3FBaVP5.js.map} +1 -1
  156. package/dist/TextEditor.js +1 -1
  157. package/dist/TextEditor.js.map +1 -1
  158. package/dist/TextEditor.vue.d.ts +1 -1
  159. package/dist/Textarea.js +1 -1
  160. package/dist/Textarea.js.map +1 -1
  161. package/dist/Thumbnail.js +33 -33
  162. package/dist/Thumbnail.js.map +1 -1
  163. package/dist/Thumbnail.vue.d.ts +3 -3
  164. package/dist/ThumbnailEmpty.js.map +1 -1
  165. package/dist/ThumbnailGroup.js.map +1 -1
  166. package/dist/Timeline.js.map +1 -1
  167. package/dist/TimelineItem.js.map +1 -1
  168. package/dist/Toast.js +27 -27
  169. package/dist/Toast.js.map +1 -1
  170. package/dist/Toasts.js.map +1 -1
  171. package/dist/Tooltip.js +1 -1
  172. package/dist/{Tooltip.vue_vue_type_script_setup_true_lang-CF6sw2VC.js → Tooltip.vue_vue_type_script_setup_true_lang-WMPMxzO-.js} +13 -16
  173. package/dist/Tooltip.vue_vue_type_script_setup_true_lang-WMPMxzO-.js.map +1 -0
  174. package/dist/components.css +1 -1
  175. package/dist/directives/tooltip.js.map +1 -1
  176. package/dist/floating-ui.vue-CuGrC-z8.js.map +1 -1
  177. package/dist/index-B1Gkwuxd.js.map +1 -1
  178. package/dist/index-D6bxWkZ1.js.map +1 -1
  179. package/dist/index.js.map +1 -1
  180. package/package.json +3 -3
  181. package/dist/Expand.vue_vue_type_script_setup_true_lang-CiONJfAp.js +0 -74
  182. package/dist/Logo.vue_vue_type_script_setup_true_lang-DghNC_k6.js.map +0 -1
  183. package/dist/Tooltip.vue_vue_type_script_setup_true_lang-CF6sw2VC.js.map +0 -1
@@ -1,48 +1,48 @@
1
- import { defineComponent as N, computed as f, provide as R, useTemplateRef as y, onMounted as S, onUpdated as B, watch as $, onBeforeUnmount as D, createElementBlock as C, openBlock as p, createBlock as x, unref as A, normalizeClass as v, withCtx as b, renderSlot as h, createElementVNode as E, createTextVNode as H, createVNode as O, toDisplayString as j } from "vue";
2
- import { t as g } from "./locale.js";
1
+ import { defineComponent as L, computed as f, provide as N, useTemplateRef as x, onMounted as R, onUpdated as S, watch as B, onBeforeUnmount as $, createElementBlock as y, openBlock as v, createBlock as D, unref as C, normalizeClass as b, withCtx as p, renderSlot as h, createElementVNode as A, createTextVNode as H, createVNode as O, toDisplayString as j } from "vue";
2
+ import { t as E } from "./locale.js";
3
3
  import q from "./Icon.js";
4
4
  import z from "./MoreActions.js";
5
5
  const J = Object.freeze({
6
6
  key: Symbol("TABS_INJECTION_KEY")
7
7
  });
8
- var w = /* @__PURE__ */ ((a) => (a.Line = "line", a.Enclosed = "enclosed", a))(w || {});
9
- const U = ["aria-expanded", "onClick"], F = /* @__PURE__ */ N({
8
+ var g = /* @__PURE__ */ ((e) => (e.Line = "line", e.Enclosed = "enclosed", e))(g || {});
9
+ const U = ["aria-expanded", "onClick"], G = /* @__PURE__ */ L({
10
10
  __name: "Tabs",
11
11
  props: {
12
12
  activeTab: {},
13
- variant: { default: w.Line }
13
+ variant: { default: g.Line }
14
14
  },
15
15
  emits: ["update:activeTab"],
16
- setup(a, { emit: M }) {
17
- const I = M, o = a, s = f({
16
+ setup(e, { emit: w }) {
17
+ const M = w, o = e, s = f({
18
18
  get() {
19
19
  return o.activeTab;
20
20
  },
21
- set(e) {
22
- I("update:activeTab", e);
21
+ set(t) {
22
+ M("update:activeTab", t);
23
23
  }
24
24
  });
25
- function L(e) {
26
- s.value = e;
25
+ function I(t) {
26
+ s.value = t;
27
27
  }
28
- R(J.key, {
28
+ N(J.key, {
29
29
  activeTab: f(() => s.value),
30
30
  variant: f(() => o.variant),
31
- setActiveTab: L
31
+ setActiveTab: I
32
32
  });
33
- const r = y("moreDropdownMenuRef"), i = y("tabsContainerRef"), l = /* @__PURE__ */ new Map();
33
+ const r = x("moreDropdownMenuRef"), i = x("tabsContainerRef"), c = /* @__PURE__ */ new Map();
34
34
  function k() {
35
- l.forEach((e, t) => {
36
- t.removeEventListener("click", e);
37
- }), l.clear();
35
+ c.forEach((t, a) => {
36
+ a.removeEventListener("click", t);
37
+ }), c.clear();
38
38
  }
39
- function c() {
39
+ function l() {
40
40
  if (!r.value) return;
41
- k(), r.value.querySelectorAll("[data-action-id]").forEach((t) => {
42
- const n = t.getAttribute("data-action-id");
41
+ k(), r.value.querySelectorAll("[data-action-id]").forEach((a) => {
42
+ const n = a.getAttribute("data-action-id");
43
43
  if (!n) return;
44
44
  const d = s.value === n;
45
- t.setAttribute("aria-selected", d ? "true" : "false");
45
+ a.setAttribute("aria-selected", d ? "true" : "false");
46
46
  const T = () => {
47
47
  if (i.value) {
48
48
  const u = i.value.querySelector(
@@ -51,32 +51,32 @@ const U = ["aria-expanded", "onClick"], F = /* @__PURE__ */ N({
51
51
  m && m instanceof HTMLElement && m.click();
52
52
  }
53
53
  };
54
- t.addEventListener("click", T), l.set(t, T);
54
+ a.addEventListener("click", T), c.set(a, T);
55
55
  });
56
56
  }
57
- return S(() => {
58
- c();
59
- }), B(() => {
60
- c();
61
- }), $(s, () => {
62
- c();
63
- }), D(() => {
57
+ return R(() => {
58
+ l();
59
+ }), S(() => {
60
+ l();
61
+ }), B(s, () => {
62
+ l();
63
+ }), $(() => {
64
64
  k();
65
- }), (e, t) => (p(), C("div", {
65
+ }), (t, a) => (v(), y("div", {
66
66
  ref_key: "tabsContainerRef",
67
67
  ref: i,
68
68
  class: "stash-tabs relative",
69
69
  role: "tabList",
70
70
  "data-test": "stash-tabs"
71
71
  }, [
72
- e.$slots["more-actions"] ? (p(), x(z, {
72
+ t.$slots["more-actions"] ? (v(), D(z, {
73
73
  key: 0,
74
- class: v(["stash-tabs-list flex items-end", {
74
+ class: b(["stash-tabs-list flex items-end", {
75
75
  "stash-tabs-list--line": e.variant === "line",
76
76
  "stash-tabs-list--enclosed": e.variant === "enclosed",
77
77
  "gap-6": e.variant === "line"
78
78
  }]),
79
- "more-button-text": A(g)("ll.more"),
79
+ "more-button-text": C(E)("ll.more"),
80
80
  "dropdown-mode": "custom",
81
81
  "actions-container-class": {
82
82
  "gap-0": e.variant === "enclosed",
@@ -84,47 +84,47 @@ const U = ["aria-expanded", "onClick"], F = /* @__PURE__ */ N({
84
84
  },
85
85
  "actions-container-tag": "ul"
86
86
  }, {
87
- "more-actions": b(() => [
88
- E("div", {
87
+ "more-actions": p(() => [
88
+ A("div", {
89
89
  ref_key: "moreDropdownMenuRef",
90
90
  ref: r
91
91
  }, [
92
- h(e.$slots, "more-actions")
92
+ h(t.$slots, "more-actions")
93
93
  ], 512)
94
94
  ]),
95
- toggle: b(({ toggle: n, isOpen: d }) => [
96
- E("button", {
95
+ toggle: p(({ toggle: n, isOpen: d }) => [
96
+ A("button", {
97
97
  "aria-haspopup": "menu",
98
98
  "aria-expanded": d,
99
- class: v(["flex cursor-pointer items-center justify-center border-solid px-6 pt-1.5 pb-1 text-sm font-medium text-blue-500 hover:text-blue-700", { "border-t-4 border-transparent": o.variant === "enclosed" }]),
99
+ class: b(["flex cursor-pointer items-center justify-center border-solid px-6 pt-1.5 pb-1 text-sm font-medium text-blue-500 hover:text-blue-700", { "border-t-4 border-transparent": o.variant === "enclosed" }]),
100
100
  type: "button",
101
101
  onClick: n
102
102
  }, [
103
- H(j(A(g)("ll.more")) + " ", 1),
103
+ H(j(C(E)("ll.more")) + " ", 1),
104
104
  O(q, { name: "caret-down" })
105
105
  ], 10, U)
106
106
  ]),
107
- default: b(() => [
108
- h(e.$slots, "default")
107
+ default: p(() => [
108
+ h(t.$slots, "default")
109
109
  ]),
110
110
  _: 3
111
- }, 8, ["class", "more-button-text", "actions-container-class"])) : (p(), C("ul", {
111
+ }, 8, ["class", "more-button-text", "actions-container-class"])) : (v(), y("ul", {
112
112
  key: 1,
113
- class: v(["stash-tabs-list flex items-end overflow-x-scroll", {
113
+ class: b(["stash-tabs-list flex items-end overflow-x-scroll", {
114
114
  "stash-tabs-list--line": e.variant === "line",
115
115
  "stash-tabs-list--enclosed": e.variant === "enclosed",
116
116
  "gap-0": e.variant === "enclosed",
117
117
  "gap-6": e.variant === "line"
118
118
  }])
119
119
  }, [
120
- h(e.$slots, "default")
120
+ h(t.$slots, "default")
121
121
  ], 2))
122
122
  ], 512));
123
123
  }
124
124
  });
125
125
  export {
126
126
  J as T,
127
- F as _,
128
- w as a
127
+ G as _,
128
+ g as a
129
129
  };
130
- //# sourceMappingURL=Tabs.vue_vue_type_script_setup_true_lang-BFURXY_-.js.map
130
+ //# sourceMappingURL=Tabs.vue_vue_type_script_setup_true_lang-B3FBaVP5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.vue_vue_type_script_setup_true_lang-BFURXY_-.js","sources":["../src/components/Tabs/keys.ts","../src/components/Tabs/models.ts","../src/components/Tabs/Tabs.vue"],"sourcesContent":["import { Injection } from '../../../types/utils';\nimport { TabsInjection } from './models';\n\nexport const TABS_INJECTION: Injection<TabsInjection> = Object.freeze({\n key: Symbol('TABS_INJECTION_KEY'),\n});\n","import { ComputedRef } from 'vue';\n\nexport enum TabVariant {\n Line = 'line',\n Enclosed = 'enclosed',\n}\n\nexport type TabVariants = `${TabVariant}`;\n\nexport interface TabsInjection {\n activeTab: ComputedRef<string>;\n variant: ComputedRef<TabVariants>;\n setActiveTab: (newTabValue: string) => void;\n}\n","<script lang=\"ts\">\n import { TabVariant, TabVariants } from './models';\n\n export * from './keys';\n export * from './models';\n\n export interface TabsProps {\n /**\n * The currently active tab value\n */\n activeTab: string;\n\n /**\n * Tabs variant\n */\n variant?: TabVariants;\n }\n</script>\n\n<script setup lang=\"ts\">\n import { computed, onBeforeUnmount, onMounted, onUpdated, provide, useTemplateRef, watch } from 'vue';\n\n import { t } from '../../locale';\n import Icon from '../Icon/Icon.vue';\n import MoreActions from '../MoreActions/MoreActions.vue';\n import { TABS_INJECTION } from './keys';\n\n const emit = defineEmits<{\n (e: 'update:activeTab', newTabValue: TabsProps['activeTab']): void;\n }>();\n\n const props = withDefaults(defineProps<TabsProps>(), {\n variant: TabVariant.Line,\n });\n\n const currentActiveTab = computed({\n get() {\n return props.activeTab;\n },\n set(nv: TabsProps['activeTab']) {\n emit('update:activeTab', nv);\n },\n });\n\n function setActiveTab(newTabValue: TabsProps['activeTab']) {\n currentActiveTab.value = newTabValue;\n }\n\n provide(TABS_INJECTION.key, {\n activeTab: computed(() => currentActiveTab.value),\n variant: computed(() => props.variant),\n setActiveTab,\n });\n\n const moreDropdownMenuRef = useTemplateRef<HTMLElement>('moreDropdownMenuRef');\n const tabsContainerRef = useTemplateRef<HTMLElement>('tabsContainerRef');\n\n // Store event listeners to allow proper cleanup\n const eventListeners = new Map<Element, EventListener>();\n\n function cleanupMoreActionsHandlers() {\n eventListeners.forEach((listener, element) => {\n element.removeEventListener('click', listener);\n });\n eventListeners.clear();\n }\n\n // Setup automatic handlers for MenuItem elements in more-actions dropdown\n function setupMoreActionsHandlers() {\n if (!moreDropdownMenuRef.value) return;\n\n // Remove existing listeners first to prevent duplication\n cleanupMoreActionsHandlers();\n\n const menuItems = moreDropdownMenuRef.value.querySelectorAll('[data-action-id]');\n\n menuItems.forEach((item) => {\n const actionId = item.getAttribute('data-action-id');\n if (!actionId) return;\n\n // Update aria-selected based on active tab\n const isActive = currentActiveTab.value === actionId;\n item.setAttribute('aria-selected', isActive ? 'true' : 'false');\n\n // Create and store the listener\n const listener = () => {\n // Find and click the original tab in the actions container\n if (tabsContainerRef.value) {\n const originalTab = tabsContainerRef.value.querySelector<HTMLElement>(\n `[role=\"tab\"][data-action-id=\"${actionId}\"]`,\n );\n const firstChild = originalTab?.firstChild;\n if (firstChild && firstChild instanceof HTMLElement) {\n firstChild.click();\n }\n }\n };\n\n item.addEventListener('click', listener);\n eventListeners.set(item, listener);\n });\n }\n\n onMounted(() => {\n setupMoreActionsHandlers();\n });\n\n onUpdated(() => {\n setupMoreActionsHandlers();\n });\n\n watch(currentActiveTab, () => {\n setupMoreActionsHandlers();\n });\n\n onBeforeUnmount(() => {\n cleanupMoreActionsHandlers();\n });\n</script>\n\n<template>\n <div ref=\"tabsContainerRef\" class=\"stash-tabs relative\" role=\"tabList\" data-test=\"stash-tabs\">\n <template v-if=\"$slots['more-actions']\">\n <MoreActions\n class=\"stash-tabs-list flex items-end\"\n :class=\"{\n 'stash-tabs-list--line': variant === 'line',\n 'stash-tabs-list--enclosed': variant === 'enclosed',\n 'gap-6': variant === 'line',\n }\"\n :more-button-text=\"t('ll.more')\"\n dropdown-mode=\"custom\"\n :actions-container-class=\"{\n 'gap-0': variant === 'enclosed',\n 'gap-6': variant === 'line',\n }\"\n actions-container-tag=\"ul\"\n >\n <slot></slot>\n\n <template #more-actions>\n <div ref=\"moreDropdownMenuRef\">\n <slot name=\"more-actions\"></slot>\n </div>\n </template>\n\n <template #toggle=\"{ toggle, isOpen }\">\n <button\n aria-haspopup=\"menu\"\n :aria-expanded=\"isOpen\"\n class=\"flex cursor-pointer items-center justify-center border-solid px-6 pt-1.5 pb-1 text-sm font-medium text-blue-500 hover:text-blue-700\"\n :class=\"{ 'border-t-4 border-transparent': props.variant === 'enclosed' }\"\n type=\"button\"\n @click=\"toggle\"\n >\n {{ t('ll.more') }}\n <Icon name=\"caret-down\" />\n </button>\n </template>\n </MoreActions>\n </template>\n\n <template v-else>\n <ul\n class=\"stash-tabs-list flex items-end overflow-x-scroll\"\n :class=\"{\n 'stash-tabs-list--line': variant === 'line',\n 'stash-tabs-list--enclosed': variant === 'enclosed',\n 'gap-0': variant === 'enclosed',\n 'gap-6': variant === 'line',\n }\"\n >\n <slot></slot>\n </ul>\n </template>\n </div>\n</template>\n"],"names":["TABS_INJECTION","TabVariant","emit","__emit","props","__props","currentActiveTab","computed","nv","setActiveTab","newTabValue","provide","moreDropdownMenuRef","useTemplateRef","tabsContainerRef","eventListeners","cleanupMoreActionsHandlers","listener","element","setupMoreActionsHandlers","item","actionId","isActive","originalTab","firstChild","onMounted","onUpdated","watch","onBeforeUnmount"],"mappings":";;;;AAGO,MAAMA,IAA2C,OAAO,OAAO;AAAA,EACpE,KAAK,OAAO,oBAAoB;AAClC,CAAC;ACHM,IAAKC,sBAAAA,OACVA,EAAA,OAAO,QACPA,EAAA,WAAW,YAFDA,IAAAA,KAAA,CAAA,CAAA;;;;;;;;;ACyBV,UAAMC,IAAOC,GAIPC,IAAQC,GAIRC,IAAmBC,EAAS;AAAA,MAChC,MAAM;AACJ,eAAOH,EAAM;AAAA,MACf;AAAA,MACA,IAAII,GAA4B;AAC9B,QAAAN,EAAK,oBAAoBM,CAAE;AAAA,MAC7B;AAAA,IAAA,CACD;AAED,aAASC,EAAaC,GAAqC;AACzD,MAAAJ,EAAiB,QAAQI;AAAA,IAC3B;AAEA,IAAAC,EAAQX,EAAe,KAAK;AAAA,MAC1B,WAAWO,EAAS,MAAMD,EAAiB,KAAK;AAAA,MAChD,SAASC,EAAS,MAAMH,EAAM,OAAO;AAAA,MACrC,cAAAK;AAAA,IAAA,CACD;AAED,UAAMG,IAAsBC,EAA4B,qBAAqB,GACvEC,IAAmBD,EAA4B,kBAAkB,GAGjEE,wBAAqB,IAAA;AAE3B,aAASC,IAA6B;AACpC,MAAAD,EAAe,QAAQ,CAACE,GAAUC,MAAY;AAC5C,QAAAA,EAAQ,oBAAoB,SAASD,CAAQ;AAAA,MAC/C,CAAC,GACDF,EAAe,MAAA;AAAA,IACjB;AAGA,aAASI,IAA2B;AAClC,UAAI,CAACP,EAAoB,MAAO;AAGhC,MAAAI,EAAA,GAEkBJ,EAAoB,MAAM,iBAAiB,kBAAkB,EAErE,QAAQ,CAACQ,MAAS;AAC1B,cAAMC,IAAWD,EAAK,aAAa,gBAAgB;AACnD,YAAI,CAACC,EAAU;AAGf,cAAMC,IAAWhB,EAAiB,UAAUe;AAC5C,QAAAD,EAAK,aAAa,iBAAiBE,IAAW,SAAS,OAAO;AAG9D,cAAML,IAAW,MAAM;AAErB,cAAIH,EAAiB,OAAO;AAC1B,kBAAMS,IAAcT,EAAiB,MAAM;AAAA,cACzC,gCAAgCO,CAAQ;AAAA,YAAA,GAEpCG,IAAaD,KAAA,gBAAAA,EAAa;AAChC,YAAIC,KAAcA,aAAsB,eACtCA,EAAW,MAAA;AAAA,UAEf;AAAA,QACF;AAEA,QAAAJ,EAAK,iBAAiB,SAASH,CAAQ,GACvCF,EAAe,IAAIK,GAAMH,CAAQ;AAAA,MACnC,CAAC;AAAA,IACH;AAEA,WAAAQ,EAAU,MAAM;AACd,MAAAN,EAAA;AAAA,IACF,CAAC,GAEDO,EAAU,MAAM;AACd,MAAAP,EAAA;AAAA,IACF,CAAC,GAEDQ,EAAMrB,GAAkB,MAAM;AAC5B,MAAAa,EAAA;AAAA,IACF,CAAC,GAEDS,EAAgB,MAAM;AACpB,MAAAZ,EAAA;AAAA,IACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Tabs.vue_vue_type_script_setup_true_lang-B3FBaVP5.js","sources":["../src/components/Tabs/keys.ts","../src/components/Tabs/models.ts","../src/components/Tabs/Tabs.vue"],"sourcesContent":["import { Injection } from '../../../types/utils';\nimport { TabsInjection } from './models';\n\nexport const TABS_INJECTION: Injection<TabsInjection> = Object.freeze({\n key: Symbol('TABS_INJECTION_KEY'),\n});\n","import { ComputedRef } from 'vue';\n\nexport enum TabVariant {\n Line = 'line',\n Enclosed = 'enclosed',\n}\n\nexport type TabVariants = `${TabVariant}`;\n\nexport interface TabsInjection {\n activeTab: ComputedRef<string>;\n variant: ComputedRef<TabVariants>;\n setActiveTab: (newTabValue: string) => void;\n}\n","<script lang=\"ts\">\n import { TabVariant, TabVariants } from './models';\n\n export * from './keys';\n export * from './models';\n\n export interface TabsProps {\n /**\n * The currently active tab value\n */\n activeTab: string;\n\n /**\n * Tabs variant\n */\n variant?: TabVariants;\n }\n</script>\n\n<script setup lang=\"ts\">\n import { computed, onBeforeUnmount, onMounted, onUpdated, provide, useTemplateRef, watch } from 'vue';\n\n import { t } from '../../locale';\n import Icon from '../Icon/Icon.vue';\n import MoreActions from '../MoreActions/MoreActions.vue';\n import { TABS_INJECTION } from './keys';\n\n const emit = defineEmits<{\n (e: 'update:activeTab', newTabValue: TabsProps['activeTab']): void;\n }>();\n\n const props = withDefaults(defineProps<TabsProps>(), {\n variant: TabVariant.Line,\n });\n\n const currentActiveTab = computed({\n get() {\n return props.activeTab;\n },\n set(nv: TabsProps['activeTab']) {\n emit('update:activeTab', nv);\n },\n });\n\n function setActiveTab(newTabValue: TabsProps['activeTab']) {\n currentActiveTab.value = newTabValue;\n }\n\n provide(TABS_INJECTION.key, {\n activeTab: computed(() => currentActiveTab.value),\n variant: computed(() => props.variant),\n setActiveTab,\n });\n\n const moreDropdownMenuRef = useTemplateRef<HTMLElement>('moreDropdownMenuRef');\n const tabsContainerRef = useTemplateRef<HTMLElement>('tabsContainerRef');\n\n // Store event listeners to allow proper cleanup\n const eventListeners = new Map<Element, EventListener>();\n\n function cleanupMoreActionsHandlers() {\n eventListeners.forEach((listener, element) => {\n element.removeEventListener('click', listener);\n });\n eventListeners.clear();\n }\n\n // Setup automatic handlers for MenuItem elements in more-actions dropdown\n function setupMoreActionsHandlers() {\n if (!moreDropdownMenuRef.value) return;\n\n // Remove existing listeners first to prevent duplication\n cleanupMoreActionsHandlers();\n\n const menuItems = moreDropdownMenuRef.value.querySelectorAll('[data-action-id]');\n\n menuItems.forEach((item) => {\n const actionId = item.getAttribute('data-action-id');\n if (!actionId) return;\n\n // Update aria-selected based on active tab\n const isActive = currentActiveTab.value === actionId;\n item.setAttribute('aria-selected', isActive ? 'true' : 'false');\n\n // Create and store the listener\n const listener = () => {\n // Find and click the original tab in the actions container\n if (tabsContainerRef.value) {\n const originalTab = tabsContainerRef.value.querySelector<HTMLElement>(\n `[role=\"tab\"][data-action-id=\"${actionId}\"]`,\n );\n const firstChild = originalTab?.firstChild;\n if (firstChild && firstChild instanceof HTMLElement) {\n firstChild.click();\n }\n }\n };\n\n item.addEventListener('click', listener);\n eventListeners.set(item, listener);\n });\n }\n\n onMounted(() => {\n setupMoreActionsHandlers();\n });\n\n onUpdated(() => {\n setupMoreActionsHandlers();\n });\n\n watch(currentActiveTab, () => {\n setupMoreActionsHandlers();\n });\n\n onBeforeUnmount(() => {\n cleanupMoreActionsHandlers();\n });\n</script>\n\n<template>\n <div ref=\"tabsContainerRef\" class=\"stash-tabs relative\" role=\"tabList\" data-test=\"stash-tabs\">\n <template v-if=\"$slots['more-actions']\">\n <MoreActions\n class=\"stash-tabs-list flex items-end\"\n :class=\"{\n 'stash-tabs-list--line': variant === 'line',\n 'stash-tabs-list--enclosed': variant === 'enclosed',\n 'gap-6': variant === 'line',\n }\"\n :more-button-text=\"t('ll.more')\"\n dropdown-mode=\"custom\"\n :actions-container-class=\"{\n 'gap-0': variant === 'enclosed',\n 'gap-6': variant === 'line',\n }\"\n actions-container-tag=\"ul\"\n >\n <slot></slot>\n\n <template #more-actions>\n <div ref=\"moreDropdownMenuRef\">\n <slot name=\"more-actions\"></slot>\n </div>\n </template>\n\n <template #toggle=\"{ toggle, isOpen }\">\n <button\n aria-haspopup=\"menu\"\n :aria-expanded=\"isOpen\"\n class=\"flex cursor-pointer items-center justify-center border-solid px-6 pt-1.5 pb-1 text-sm font-medium text-blue-500 hover:text-blue-700\"\n :class=\"{ 'border-t-4 border-transparent': props.variant === 'enclosed' }\"\n type=\"button\"\n @click=\"toggle\"\n >\n {{ t('ll.more') }}\n <Icon name=\"caret-down\" />\n </button>\n </template>\n </MoreActions>\n </template>\n\n <template v-else>\n <ul\n class=\"stash-tabs-list flex items-end overflow-x-scroll\"\n :class=\"{\n 'stash-tabs-list--line': variant === 'line',\n 'stash-tabs-list--enclosed': variant === 'enclosed',\n 'gap-0': variant === 'enclosed',\n 'gap-6': variant === 'line',\n }\"\n >\n <slot></slot>\n </ul>\n </template>\n </div>\n</template>\n"],"names":["TABS_INJECTION","TabVariant","emit","__emit","props","__props","currentActiveTab","computed","nv","setActiveTab","newTabValue","provide","moreDropdownMenuRef","useTemplateRef","tabsContainerRef","eventListeners","cleanupMoreActionsHandlers","listener","element","setupMoreActionsHandlers","item","actionId","isActive","originalTab","firstChild","onMounted","onUpdated","watch","onBeforeUnmount","_createElementBlock","$slots","_createBlock","MoreActions","_unref","t","_createElementVNode","_renderSlot","_ctx","_withCtx","toggle","isOpen","_normalizeClass","_createTextVNode","_toDisplayString","_createVNode","Icon"],"mappings":"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"}
@@ -6,7 +6,7 @@ import { isEqual as _r, cloneDeep as He, merge as he } from "lodash-es";
6
6
  import { c as ae, g as Si } from "./_commonjsHelpers-DaMA6jEr.js";
7
7
  import yl from "lodash-es/uniqueId";
8
8
  import Zr from "./Button.js";
9
- import { _ as vl } from "./Field.vue_vue_type_script_setup_true_lang-dAGKfjf5.js";
9
+ import { _ as vl } from "./Field.vue_vue_type_script_setup_true_lang-D2I8xDEW.js";
10
10
  import Wr from "./Icon.js";
11
11
  import { _ as El } from "./_plugin-vue_export-helper-CHgC5LLL.js";
12
12
  var D = /* @__PURE__ */ ((i) => (i[i.TYPE = 3] = "TYPE", i[i.LEVEL = 12] = "LEVEL", i[i.ATTRIBUTE = 13] = "ATTRIBUTE", i[i.BLOT = 14] = "BLOT", i[i.INLINE = 7] = "INLINE", i[i.BLOCK = 11] = "BLOCK", i[i.BLOCK_BLOT = 10] = "BLOCK_BLOT", i[i.INLINE_BLOT = 6] = "INLINE_BLOT", i[i.BLOCK_ATTRIBUTE = 9] = "BLOCK_ATTRIBUTE", i[i.INLINE_ATTRIBUTE = 5] = "INLINE_ATTRIBUTE", i[i.ANY = 15] = "ANY", i))(D || {});