@volverjs/ui-vue 0.0.10-beta.24 → 0.0.10-beta.26

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 (121) hide show
  1. package/auto-imports.d.ts +1 -0
  2. package/dist/components/VvAccordion/VvAccordion.es.js +14 -12
  3. package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
  4. package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +169 -89
  5. package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
  6. package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +31 -5
  7. package/dist/components/VvAccordionGroup/index.d.ts +7 -4
  8. package/dist/components/VvAction/VvAction.es.js +14 -12
  9. package/dist/components/VvAction/VvAction.umd.js +1 -1
  10. package/dist/components/VvAction/VvAction.vue.d.ts +2 -11
  11. package/dist/components/VvAction/index.d.ts +1 -5
  12. package/dist/components/VvAlert/VvAlert.es.js +14 -12
  13. package/dist/components/VvAlert/VvAlert.umd.js +1 -1
  14. package/dist/components/VvAlertGroup/VvAlertGroup.es.js +14 -12
  15. package/dist/components/VvAlertGroup/VvAlertGroup.umd.js +1 -1
  16. package/dist/components/VvAvatar/VvAvatar.es.js +14 -12
  17. package/dist/components/VvAvatar/VvAvatar.umd.js +1 -1
  18. package/dist/components/VvAvatarGroup/VvAvatarGroup.es.js +14 -12
  19. package/dist/components/VvAvatarGroup/VvAvatarGroup.umd.js +1 -1
  20. package/dist/components/VvBadge/VvBadge.es.js +14 -12
  21. package/dist/components/VvBadge/VvBadge.umd.js +1 -1
  22. package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +14 -12
  23. package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -1
  24. package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +1 -1
  25. package/dist/components/VvButton/VvButton.es.js +14 -12
  26. package/dist/components/VvButton/VvButton.umd.js +1 -1
  27. package/dist/components/VvButton/VvButton.vue.d.ts +2 -19
  28. package/dist/components/VvButton/index.d.ts +1 -5
  29. package/dist/components/VvButtonGroup/VvButtonGroup.es.js +14 -12
  30. package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
  31. package/dist/components/VvCard/VvCard.es.js +14 -12
  32. package/dist/components/VvCard/VvCard.umd.js +1 -1
  33. package/dist/components/VvCheckbox/VvCheckbox.es.js +14 -12
  34. package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -1
  35. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +14 -12
  36. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -1
  37. package/dist/components/VvCombobox/VvCombobox.es.js +58 -34
  38. package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
  39. package/dist/components/VvCombobox/VvCombobox.vue.d.ts +2 -8
  40. package/dist/components/VvCombobox/index.d.ts +9 -2
  41. package/dist/components/VvDialog/VvDialog.es.js +14 -12
  42. package/dist/components/VvDialog/VvDialog.umd.js +1 -1
  43. package/dist/components/VvDropdown/VvDropdown.es.js +24 -16
  44. package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
  45. package/dist/components/VvDropdown/VvDropdownAction.vue.d.ts +2 -19
  46. package/dist/components/VvDropdown/VvDropdownItem.vue.d.ts +13 -1
  47. package/dist/components/VvDropdown/VvDropdownOption.vue.d.ts +9 -0
  48. package/dist/components/VvDropdown/index.d.ts +37 -0
  49. package/dist/components/VvDropdownAction/VvDropdownAction.es.js +64 -15
  50. package/dist/components/VvDropdownAction/VvDropdownAction.umd.js +1 -1
  51. package/dist/components/VvDropdownItem/VvDropdownItem.es.js +322 -1
  52. package/dist/components/VvDropdownItem/VvDropdownItem.umd.js +1 -1
  53. package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.es.js +14 -12
  54. package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.umd.js +1 -1
  55. package/dist/components/VvDropdownOption/VvDropdownOption.es.js +131 -76
  56. package/dist/components/VvDropdownOption/VvDropdownOption.umd.js +1 -1
  57. package/dist/components/VvInputFile/VvInputFile.es.js +14 -12
  58. package/dist/components/VvInputFile/VvInputFile.umd.js +1 -1
  59. package/dist/components/VvInputFile/index.d.ts +5 -5
  60. package/dist/components/VvInputText/VvInputText.es.js +979 -107
  61. package/dist/components/VvInputText/VvInputText.umd.js +1 -1
  62. package/dist/components/VvInputText/VvInputText.vue.d.ts +44 -1
  63. package/dist/components/VvInputText/index.d.ts +28 -0
  64. package/dist/components/VvNav/VvNav.es.js +14 -12
  65. package/dist/components/VvNav/VvNav.umd.js +1 -1
  66. package/dist/components/VvNav/VvNav.vue.d.ts +1 -1
  67. package/dist/components/VvNavItem/VvNavItem.es.js +14 -12
  68. package/dist/components/VvNavItem/VvNavItem.umd.js +1 -1
  69. package/dist/components/VvProgress/VvProgress.es.js +14 -12
  70. package/dist/components/VvProgress/VvProgress.umd.js +1 -1
  71. package/dist/components/VvRadio/VvRadio.es.js +14 -12
  72. package/dist/components/VvRadio/VvRadio.umd.js +1 -1
  73. package/dist/components/VvRadioGroup/VvRadioGroup.es.js +14 -12
  74. package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -1
  75. package/dist/components/VvSelect/VvSelect.es.js +14 -12
  76. package/dist/components/VvSelect/VvSelect.umd.js +1 -1
  77. package/dist/components/VvTab/VvTab.es.js +14 -12
  78. package/dist/components/VvTab/VvTab.umd.js +1 -1
  79. package/dist/components/VvTab/VvTab.vue.d.ts +1 -1
  80. package/dist/components/VvTextarea/VvTextarea.es.js +14 -12
  81. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
  82. package/dist/components/VvTooltip/VvTooltip.es.js +14 -12
  83. package/dist/components/VvTooltip/VvTooltip.umd.js +1 -1
  84. package/dist/components/index.es.js +435 -195
  85. package/dist/components/index.umd.js +1 -1
  86. package/dist/composables/dropdown/useInjectDropdown.d.ts +3 -23
  87. package/dist/composables/dropdown/useProvideDropdown.d.ts +2 -3
  88. package/dist/composables/usePersistence.d.ts +3 -0
  89. package/dist/constants.d.ts +24 -21
  90. package/dist/directives/index.es.js +14 -12
  91. package/dist/directives/index.umd.js +1 -1
  92. package/dist/directives/v-tooltip.es.js +14 -12
  93. package/dist/directives/v-tooltip.umd.js +1 -1
  94. package/dist/icons.es.js +3 -3
  95. package/dist/icons.umd.js +1 -1
  96. package/dist/props/index.d.ts +11 -11
  97. package/dist/stories/AccordionGroup/AccordionGroup.stories.d.ts +51 -9
  98. package/dist/stories/AccordionGroup/AccordionGroupSlots.stories.d.ts +327 -64
  99. package/dist/stories/Button/Button.settings.d.ts +0 -1
  100. package/dist/types/nav.d.ts +1 -2
  101. package/package.json +1 -1
  102. package/src/assets/icons/detailed.json +1 -1
  103. package/src/assets/icons/normal.json +1 -1
  104. package/src/assets/icons/simple.json +1 -1
  105. package/src/components/VvAccordionGroup/VvAccordionGroup.vue +86 -69
  106. package/src/components/VvAccordionGroup/index.ts +3 -5
  107. package/src/components/VvCombobox/VvCombobox.vue +2 -0
  108. package/src/components/VvDropdown/VvDropdown.vue +11 -2
  109. package/src/components/VvDropdown/VvDropdownItem.vue +4 -1
  110. package/src/components/VvDropdown/VvDropdownOption.vue +3 -21
  111. package/src/components/VvDropdown/index.ts +35 -1
  112. package/src/components/VvInputText/VvInputText.vue +98 -3
  113. package/src/components/VvInputText/index.ts +24 -1
  114. package/src/composables/dropdown/useProvideDropdown.ts +4 -4
  115. package/src/composables/usePersistence.ts +76 -0
  116. package/src/constants.ts +23 -18
  117. package/src/props/index.ts +12 -7
  118. package/src/stories/AccordionGroup/AccordionGroup.settings.ts +2 -2
  119. package/src/stories/AccordionGroup/AccordionGroup.test.ts +5 -5
  120. package/src/stories/Button/Button.settings.ts +1 -4
  121. package/src/types/nav.ts +1 -3
@@ -1,18 +1,337 @@
1
1
  import { inject, provide, ref, defineComponent, watch, openBlock, createElementBlock, mergeProps, unref, renderSlot } from "vue";
2
2
  import "mitt";
3
3
  import { useElementHover, useFocus, useFocusWithin } from "@vueuse/core";
4
+ var StorageType = /* @__PURE__ */ ((StorageType2) => {
5
+ StorageType2["local"] = "local";
6
+ StorageType2["session"] = "session";
7
+ return StorageType2;
8
+ })(StorageType || {});
9
+ var Strategy = /* @__PURE__ */ ((Strategy2) => {
10
+ Strategy2["absolute"] = "absolute";
11
+ Strategy2["fixed"] = "fixed";
12
+ return Strategy2;
13
+ })(Strategy || {});
14
+ var Side = /* @__PURE__ */ ((Side2) => {
15
+ Side2["left"] = "left";
16
+ Side2["right"] = "right";
17
+ Side2["top"] = "top";
18
+ Side2["bottom"] = "bottom";
19
+ return Side2;
20
+ })(Side || {});
21
+ var Placement = /* @__PURE__ */ ((Placement2) => {
22
+ Placement2["topStart"] = "top-start";
23
+ Placement2["topEnd"] = "top-end";
24
+ Placement2["bottomStart"] = "bottom-start";
25
+ Placement2["bottomEnd"] = "bottom-end";
26
+ Placement2["leftStart"] = "left-start";
27
+ Placement2["leftEnd"] = "left-end";
28
+ Placement2["rightStart"] = "right-start";
29
+ Placement2["rightEnd"] = "right-end";
30
+ return Placement2;
31
+ })(Placement || {});
32
+ var Position = /* @__PURE__ */ ((Position2) => {
33
+ Position2["before"] = "before";
34
+ Position2["after"] = "after";
35
+ return Position2;
36
+ })(Position || {});
37
+ var ButtonType = /* @__PURE__ */ ((ButtonType2) => {
38
+ ButtonType2["button"] = "button";
39
+ ButtonType2["submit"] = "submit";
40
+ ButtonType2["reset"] = "reset";
41
+ return ButtonType2;
42
+ })(ButtonType || {});
43
+ var ActionTag = /* @__PURE__ */ ((ActionTag2) => {
44
+ ActionTag2["nuxtLink"] = "nuxt-link";
45
+ ActionTag2["routerLink"] = "router-link";
46
+ ActionTag2["a"] = "a";
47
+ ActionTag2["button"] = "button";
48
+ return ActionTag2;
49
+ })(ActionTag || {});
4
50
  var ActionRoles = /* @__PURE__ */ ((ActionRoles2) => {
5
51
  ActionRoles2["button"] = "button";
6
52
  ActionRoles2["link"] = "link";
7
53
  ActionRoles2["menuitem"] = "menuitem";
8
54
  return ActionRoles2;
9
55
  })(ActionRoles || {});
56
+ var DropdownRole = /* @__PURE__ */ ((DropdownRole2) => {
57
+ DropdownRole2["listbox"] = "listbox";
58
+ DropdownRole2["menu"] = "menu";
59
+ return DropdownRole2;
60
+ })(DropdownRole || {});
10
61
  const INJECTION_KEY_DROPDOWN_ITEM = Symbol.for(
11
62
  "dropdownItem"
12
63
  );
13
64
  const INJECTION_KEY_DROPDOWN_ACTION = Symbol.for(
14
65
  "dropdownAction"
15
66
  );
67
+ const LinkProps = {
68
+ /**
69
+ * The router-link/nuxt-link property, if it is defined the button is rendered as a ruouter-link or nuxt-link.
70
+ * @see Documentation of [router-link](https://router.vuejs.org/api/#router-link) and [nuxt-link](https://nuxtjs.org/api/components-nuxt-link/)
71
+ */
72
+ to: {
73
+ type: [String, Object]
74
+ },
75
+ /**
76
+ * Anchor href
77
+ */
78
+ href: String,
79
+ /**
80
+ * Anchor target
81
+ */
82
+ target: String,
83
+ /**
84
+ * Anchor rel
85
+ */
86
+ rel: {
87
+ type: String,
88
+ default: "noopener noreferrer"
89
+ }
90
+ };
91
+ const DisabledProps = {
92
+ /**
93
+ * Whether the form control is disabled
94
+ */
95
+ disabled: {
96
+ type: Boolean,
97
+ default: false
98
+ }
99
+ };
100
+ const ActiveProps = {
101
+ /**
102
+ * Whether the item is active
103
+ */
104
+ active: {
105
+ type: Boolean,
106
+ default: false
107
+ }
108
+ };
109
+ const CurrentProps = {
110
+ /**
111
+ * Whether the item is current
112
+ */
113
+ current: {
114
+ type: Boolean,
115
+ default: false
116
+ }
117
+ };
118
+ const PressedProps = {
119
+ /**
120
+ * Whether the item is pressed
121
+ */
122
+ pressed: {
123
+ type: Boolean,
124
+ default: false
125
+ }
126
+ };
127
+ const LabelProps = {
128
+ /**
129
+ * The item label
130
+ */
131
+ label: {
132
+ type: [String, Number],
133
+ default: void 0
134
+ }
135
+ };
136
+ const ModifiersProps = {
137
+ /**
138
+ * Component BEM modifiers
139
+ */
140
+ modifiers: {
141
+ type: [String, Array],
142
+ default: void 0
143
+ }
144
+ };
145
+ ({
146
+ /**
147
+ * VvIcon name or props
148
+ * @see VVIcon
149
+ */
150
+ icon: {
151
+ type: [String, Object],
152
+ default: void 0
153
+ },
154
+ /**
155
+ * VvIcon position
156
+ */
157
+ iconPosition: {
158
+ type: String,
159
+ default: Position.before,
160
+ validation: (value) => Object.values(Position).includes(value)
161
+ }
162
+ });
163
+ const IdProps = {
164
+ /**
165
+ * Global attribute id
166
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
167
+ */
168
+ id: [String, Number]
169
+ };
170
+ const DropdownProps = {
171
+ /**
172
+ * Dropdown placement
173
+ */
174
+ placement: {
175
+ type: String,
176
+ default: Side.bottom,
177
+ validator: (value) => Object.values(Side).includes(value) || Object.values(Placement).includes(value)
178
+ },
179
+ /**
180
+ * Dropdown strategy
181
+ */
182
+ strategy: {
183
+ type: String,
184
+ default: void 0,
185
+ validator: (value) => Object.values(Strategy).includes(value)
186
+ },
187
+ /**
188
+ * Dropdown show / hide transition name
189
+ */
190
+ transitionName: {
191
+ type: String,
192
+ default: void 0
193
+ },
194
+ /**
195
+ * Offset of the dropdown from the trigger
196
+ * @see https://floating-ui.com/docs/offset
197
+ */
198
+ offset: {
199
+ type: [Number, String, Object],
200
+ default: 0
201
+ },
202
+ /**
203
+ * Move dropdown to the side if there is no space in the default position
204
+ * @see https://floating-ui.com/docs/shift
205
+ */
206
+ shift: {
207
+ type: [Boolean, Object],
208
+ default: false
209
+ },
210
+ /**
211
+ * Flip dropdown position if there is no space in the default position
212
+ * @see https://floating-ui.com/docs/flip
213
+ */
214
+ flip: {
215
+ type: [Boolean, Object],
216
+ default: true
217
+ },
218
+ /**
219
+ * Size of the dropdown
220
+ * @see https://floating-ui.com/docs/size
221
+ */
222
+ size: {
223
+ type: [Boolean, Object],
224
+ default: () => ({ padding: 10 })
225
+ },
226
+ /**
227
+ * Automatically change the position of the dropdown
228
+ * @see https://floating-ui.com/docs/autoPlacement
229
+ */
230
+ autoPlacement: {
231
+ type: [Boolean, Object],
232
+ default: false
233
+ },
234
+ /**
235
+ * Add arrow to the dropdown
236
+ * @see https://floating-ui.com/docs/arrow
237
+ */
238
+ arrow: {
239
+ type: Boolean,
240
+ default: false
241
+ },
242
+ /**
243
+ * Keep open dropdown on click outside
244
+ */
245
+ keepOpen: {
246
+ type: Boolean,
247
+ default: false
248
+ },
249
+ /**
250
+ * Autofocus first item on dropdown open
251
+ */
252
+ autofocusFirst: {
253
+ type: Boolean,
254
+ default: true
255
+ },
256
+ /**
257
+ * Set dropdown width to the same as the trigger
258
+ */
259
+ triggerWidth: {
260
+ type: Boolean,
261
+ default: false
262
+ }
263
+ };
264
+ ({
265
+ ...DisabledProps,
266
+ ...LabelProps,
267
+ ...PressedProps,
268
+ ...ActiveProps,
269
+ ...CurrentProps,
270
+ ...LinkProps,
271
+ /**
272
+ * Button type
273
+ */
274
+ type: {
275
+ type: String,
276
+ default: ButtonType.button,
277
+ validator: (value) => Object.values(ButtonType).includes(value)
278
+ },
279
+ /**
280
+ * Button aria-label
281
+ */
282
+ ariaLabel: {
283
+ type: String,
284
+ default: void 0
285
+ },
286
+ /**
287
+ * Default tag for the action
288
+ */
289
+ defaultTag: {
290
+ type: String,
291
+ default: ActionTag.button
292
+ }
293
+ });
294
+ ({
295
+ storageType: {
296
+ type: String,
297
+ default: StorageType.local,
298
+ validator: (value) => Object.values(StorageType).includes(value)
299
+ },
300
+ storageKey: String
301
+ });
302
+ ({
303
+ ...IdProps,
304
+ ...DropdownProps,
305
+ ...ModifiersProps,
306
+ /**
307
+ * Show / hide dropdown programmatically
308
+ */
309
+ modelValue: {
310
+ type: Boolean,
311
+ default: void 0
312
+ },
313
+ /**
314
+ * Dropdown trigger element
315
+ */
316
+ reference: {
317
+ type: Object,
318
+ default: null
319
+ },
320
+ /**
321
+ * Dropdown role
322
+ */
323
+ role: {
324
+ type: String,
325
+ default: DropdownRole.menu,
326
+ validator: (value) => Object.values(DropdownRole).includes(value)
327
+ }
328
+ });
329
+ const VvDropdownItemProps = {
330
+ focusOnHover: {
331
+ type: Boolean,
332
+ default: false
333
+ }
334
+ };
16
335
  function useInjectedDropdownItem() {
17
336
  return inject(INJECTION_KEY_DROPDOWN_ITEM, {});
18
337
  }
@@ -29,7 +348,9 @@ const __default__ = {
29
348
  };
30
349
  const _sfc_main = /* @__PURE__ */ defineComponent({
31
350
  ...__default__,
351
+ props: VvDropdownItemProps,
32
352
  setup(__props) {
353
+ const props = __props;
33
354
  const { role, expanded } = useInjectedDropdownItem();
34
355
  const element = ref(null);
35
356
  useProvideDropdownAction({ expanded });
@@ -37,7 +358,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
37
358
  const { focused } = useFocus(element);
38
359
  const { focused: focusedWithin } = useFocusWithin(element);
39
360
  watch(hovered, (newValue) => {
40
- if (newValue) {
361
+ if (newValue && props.focusOnHover) {
41
362
  focused.value = true;
42
363
  }
43
364
  });
@@ -1 +1 @@
1
- !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("vue"),require("mitt"),require("@vueuse/core")):"function"==typeof define&&define.amd?define(["vue","mitt","@vueuse/core"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).VvDropdownItem=o(e.vue,null,e.core)}(this,(function(e,o,n){"use strict";var t=(e=>(e.button="button",e.link="link",e.menuitem="menuitem",e))(t||{});const u=Symbol.for("dropdownItem"),r=Symbol.for("dropdownAction");return e.defineComponent({name:"VvDropdownItem",setup(o){const{role:d,expanded:i}=e.inject(u,{}),l=e.ref(null);!function({expanded:o}){e.provide(r,{role:e.ref(t.menuitem),expanded:o})}({expanded:i});const f=n.useElementHover(l),{focused:s}=n.useFocus(l),{focused:c}=n.useFocusWithin(l);return e.watch(f,(e=>{e&&(s.value=!0)})),(o,n)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({role:e.unref(d)},{ref_key:"element",ref:l,class:["vv-dropdown__item",{"focus-visible":e.unref(s)||e.unref(c)}]}),[e.renderSlot(o.$slots,"default")],16))}})}));
1
+ !function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o(require("vue"),require("mitt"),require("@vueuse/core")):"function"==typeof define&&define.amd?define(["vue","mitt","@vueuse/core"],o):(e="undefined"!=typeof globalThis?globalThis:e||self).VvDropdownItem=o(e.vue,null,e.core)}(this,(function(e,o,t){"use strict";var n=(e=>(e.local="local",e.session="session",e))(n||{}),r=(e=>(e.absolute="absolute",e.fixed="fixed",e))(r||{}),l=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(l||{}),u=(e=>(e.topStart="top-start",e.topEnd="top-end",e.bottomStart="bottom-start",e.bottomEnd="bottom-end",e.leftStart="left-start",e.leftEnd="left-end",e.rightStart="right-start",e.rightEnd="right-end",e))(u||{}),i=(e=>(e.before="before",e.after="after",e))(i||{}),s=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(s||{}),a=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(a||{}),d=(e=>(e.button="button",e.link="link",e.menuitem="menuitem",e))(d||{}),f=(e=>(e.listbox="listbox",e.menu="menu",e))(f||{});const m=Symbol.for("dropdownItem"),b=Symbol.for("dropdownAction");Boolean,Boolean,Boolean,Boolean;i.before;l.bottom,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean;s.button,a.button,n.local,Boolean,f.menu;const c={focusOnHover:{type:Boolean,default:!1}};return e.defineComponent({name:"VvDropdownItem",props:c,setup(o){const n=o,{role:r,expanded:l}=e.inject(m,{}),u=e.ref(null);!function({expanded:o}){e.provide(b,{role:e.ref(d.menuitem),expanded:o})}({expanded:l});const i=t.useElementHover(u),{focused:s}=t.useFocus(u),{focused:a}=t.useFocusWithin(u);return e.watch(i,(e=>{e&&n.focusOnHover&&(s.value=!0)})),(o,t)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({role:e.unref(r)},{ref_key:"element",ref:u,class:["vv-dropdown__item",{"focus-visible":e.unref(s)||e.unref(a)}]}),[e.renderSlot(o.$slots,"default")],16))}})}));
@@ -1,4 +1,9 @@
1
1
  import { defineComponent, openBlock, createElementBlock, toDisplayString } from "vue";
2
+ var StorageType = /* @__PURE__ */ ((StorageType2) => {
3
+ StorageType2["local"] = "local";
4
+ StorageType2["session"] = "session";
5
+ return StorageType2;
6
+ })(StorageType || {});
2
7
  var Strategy = /* @__PURE__ */ ((Strategy2) => {
3
8
  Strategy2["absolute"] = "absolute";
4
9
  Strategy2["fixed"] = "fixed";
@@ -40,13 +45,6 @@ var ActionTag = /* @__PURE__ */ ((ActionTag2) => {
40
45
  ActionTag2["button"] = "button";
41
46
  return ActionTag2;
42
47
  })(ActionTag || {});
43
- var AnchorTarget = /* @__PURE__ */ ((AnchorTarget2) => {
44
- AnchorTarget2["_blank"] = "_blank";
45
- AnchorTarget2["_self"] = "_self";
46
- AnchorTarget2["_parent"] = "_parent";
47
- AnchorTarget2["_top"] = "_top";
48
- return AnchorTarget2;
49
- })(AnchorTarget || {});
50
48
  const LinkProps = {
51
49
  /**
52
50
  * The router-link/nuxt-link property, if it is defined the button is rendered as a ruouter-link or nuxt-link.
@@ -62,11 +60,7 @@ const LinkProps = {
62
60
  /**
63
61
  * Anchor target
64
62
  */
65
- target: {
66
- type: String,
67
- default: void 0,
68
- validator: (value) => Object.values(AnchorTarget).includes(value)
69
- },
63
+ target: String,
70
64
  /**
71
65
  * Anchor rel
72
66
  */
@@ -262,6 +256,14 @@ const LabelProps = {
262
256
  default: ActionTag.button
263
257
  }
264
258
  });
259
+ ({
260
+ storageType: {
261
+ type: String,
262
+ default: StorageType.local,
263
+ validator: (value) => Object.values(StorageType).includes(value)
264
+ },
265
+ storageKey: String
266
+ });
265
267
  const _hoisted_1 = {
266
268
  class: "vv-dropdown-optgroup",
267
269
  role: "presentation",
@@ -1 +1 @@
1
- !function(o,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("vue")):"function"==typeof define&&define.amd?define(["vue"],e):(o="undefined"!=typeof globalThis?globalThis:o||self).VvDropdownOptgroup=e(o.vue)}(this,(function(o){"use strict";var e=(o=>(o.left="left",o.right="right",o.top="top",o.bottom="bottom",o))(e||{}),t=(o=>(o.before="before",o.after="after",o))(t||{}),n=(o=>(o.button="button",o.submit="submit",o.reset="reset",o))(n||{}),r=(o=>(o.nuxtLink="nuxt-link",o.routerLink="router-link",o.a="a",o.button="button",o))(r||{});Boolean,Boolean,Boolean,Boolean;const l={label:{type:[String,Number],default:void 0}};t.before,e.bottom,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,n.button,r.button;const u={class:"vv-dropdown-optgroup",role:"presentation",tabindex:"-1"};return o.defineComponent({name:"VvDropdownOptgroup",props:{...l},setup(e){const t=e;return(e,n)=>(o.openBlock(),o.createElementBlock("li",u,o.toDisplayString(t.label),1))}})}));
1
+ !function(o,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("vue")):"function"==typeof define&&define.amd?define(["vue"],e):(o="undefined"!=typeof globalThis?globalThis:o||self).VvDropdownOptgroup=e(o.vue)}(this,(function(o){"use strict";var e=(o=>(o.local="local",o.session="session",o))(e||{}),t=(o=>(o.left="left",o.right="right",o.top="top",o.bottom="bottom",o))(t||{}),n=(o=>(o.before="before",o.after="after",o))(n||{}),l=(o=>(o.button="button",o.submit="submit",o.reset="reset",o))(l||{}),r=(o=>(o.nuxtLink="nuxt-link",o.routerLink="router-link",o.a="a",o.button="button",o))(r||{});Boolean,Boolean,Boolean,Boolean;const a={label:{type:[String,Number],default:void 0}};n.before,t.bottom,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,l.button,r.button,e.local;const u={class:"vv-dropdown-optgroup",role:"presentation",tabindex:"-1"};return o.defineComponent({name:"VvDropdownOptgroup",props:{...a},setup(e){const t=e;return(e,n)=>(o.openBlock(),o.createElementBlock("li",u,o.toDisplayString(t.label),1))}})}));
@@ -1,6 +1,11 @@
1
1
  import { inject, provide, ref, defineComponent, watch, openBlock, createElementBlock, mergeProps, unref, renderSlot, computed, toRefs, createBlock, normalizeClass, withCtx, createElementVNode, normalizeProps, guardReactiveProps, createTextVNode, toDisplayString } from "vue";
2
2
  import "mitt";
3
3
  import { useElementHover, useFocus, useFocusWithin } from "@vueuse/core";
4
+ var StorageType = /* @__PURE__ */ ((StorageType2) => {
5
+ StorageType2["local"] = "local";
6
+ StorageType2["session"] = "session";
7
+ return StorageType2;
8
+ })(StorageType || {});
4
9
  var Strategy = /* @__PURE__ */ ((Strategy2) => {
5
10
  Strategy2["absolute"] = "absolute";
6
11
  Strategy2["fixed"] = "fixed";
@@ -48,64 +53,17 @@ var ActionRoles = /* @__PURE__ */ ((ActionRoles2) => {
48
53
  ActionRoles2["menuitem"] = "menuitem";
49
54
  return ActionRoles2;
50
55
  })(ActionRoles || {});
51
- var AnchorTarget = /* @__PURE__ */ ((AnchorTarget2) => {
52
- AnchorTarget2["_blank"] = "_blank";
53
- AnchorTarget2["_self"] = "_self";
54
- AnchorTarget2["_parent"] = "_parent";
55
- AnchorTarget2["_top"] = "_top";
56
- return AnchorTarget2;
57
- })(AnchorTarget || {});
56
+ var DropdownRole = /* @__PURE__ */ ((DropdownRole2) => {
57
+ DropdownRole2["listbox"] = "listbox";
58
+ DropdownRole2["menu"] = "menu";
59
+ return DropdownRole2;
60
+ })(DropdownRole || {});
58
61
  const INJECTION_KEY_DROPDOWN_ITEM = Symbol.for(
59
62
  "dropdownItem"
60
63
  );
61
64
  const INJECTION_KEY_DROPDOWN_ACTION = Symbol.for(
62
65
  "dropdownAction"
63
66
  );
64
- function useInjectedDropdownItem() {
65
- return inject(INJECTION_KEY_DROPDOWN_ITEM, {});
66
- }
67
- function useProvideDropdownAction({
68
- expanded
69
- }) {
70
- provide(INJECTION_KEY_DROPDOWN_ACTION, {
71
- role: ref(ActionRoles.menuitem),
72
- expanded
73
- });
74
- }
75
- const __default__$1 = {
76
- name: "VvDropdownItem"
77
- };
78
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
79
- ...__default__$1,
80
- setup(__props) {
81
- const { role, expanded } = useInjectedDropdownItem();
82
- const element = ref(null);
83
- useProvideDropdownAction({ expanded });
84
- const hovered = useElementHover(element);
85
- const { focused } = useFocus(element);
86
- const { focused: focusedWithin } = useFocusWithin(element);
87
- watch(hovered, (newValue) => {
88
- if (newValue) {
89
- focused.value = true;
90
- }
91
- });
92
- return (_ctx, _cache) => {
93
- return openBlock(), createElementBlock(
94
- "div",
95
- mergeProps({ role: unref(role) }, {
96
- ref_key: "element",
97
- ref: element,
98
- class: ["vv-dropdown__item", { "focus-visible": unref(focused) || unref(focusedWithin) }]
99
- }),
100
- [
101
- renderSlot(_ctx.$slots, "default")
102
- ],
103
- 16
104
- /* FULL_PROPS */
105
- );
106
- };
107
- }
108
- });
109
67
  const LinkProps = {
110
68
  /**
111
69
  * The router-link/nuxt-link property, if it is defined the button is rendered as a ruouter-link or nuxt-link.
@@ -121,11 +79,7 @@ const LinkProps = {
121
79
  /**
122
80
  * Anchor target
123
81
  */
124
- target: {
125
- type: String,
126
- default: void 0,
127
- validator: (value) => Object.values(AnchorTarget).includes(value)
128
- },
82
+ target: String,
129
83
  /**
130
84
  * Anchor rel
131
85
  */
@@ -221,7 +175,14 @@ const UnselectableProps = {
221
175
  */
222
176
  unselectable: { type: Boolean, default: true }
223
177
  };
224
- ({
178
+ const IdProps = {
179
+ /**
180
+ * Global attribute id
181
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
182
+ */
183
+ id: [String, Number]
184
+ };
185
+ const DropdownProps = {
225
186
  /**
226
187
  * Dropdown placement
227
188
  */
@@ -314,7 +275,7 @@ const UnselectableProps = {
314
275
  type: Boolean,
315
276
  default: false
316
277
  }
317
- });
278
+ };
318
279
  ({
319
280
  ...DisabledProps,
320
281
  ...LabelProps,
@@ -345,6 +306,113 @@ const UnselectableProps = {
345
306
  default: ActionTag.button
346
307
  }
347
308
  });
309
+ ({
310
+ storageType: {
311
+ type: String,
312
+ default: StorageType.local,
313
+ validator: (value) => Object.values(StorageType).includes(value)
314
+ },
315
+ storageKey: String
316
+ });
317
+ ({
318
+ ...IdProps,
319
+ ...DropdownProps,
320
+ ...ModifiersProps,
321
+ /**
322
+ * Show / hide dropdown programmatically
323
+ */
324
+ modelValue: {
325
+ type: Boolean,
326
+ default: void 0
327
+ },
328
+ /**
329
+ * Dropdown trigger element
330
+ */
331
+ reference: {
332
+ type: Object,
333
+ default: null
334
+ },
335
+ /**
336
+ * Dropdown role
337
+ */
338
+ role: {
339
+ type: String,
340
+ default: DropdownRole.menu,
341
+ validator: (value) => Object.values(DropdownRole).includes(value)
342
+ }
343
+ });
344
+ const VvDropdownItemProps = {
345
+ focusOnHover: {
346
+ type: Boolean,
347
+ default: false
348
+ }
349
+ };
350
+ const VvDropdownOptionProps = {
351
+ ...DisabledProps,
352
+ ...SelectedProps,
353
+ ...UnselectableProps,
354
+ ...ModifiersProps,
355
+ deselectHintLabel: {
356
+ type: String
357
+ },
358
+ selectHintLabel: {
359
+ type: String
360
+ },
361
+ selectedHintLabel: {
362
+ type: String
363
+ },
364
+ focusOnHover: {
365
+ type: Boolean,
366
+ default: false
367
+ }
368
+ };
369
+ function useInjectedDropdownItem() {
370
+ return inject(INJECTION_KEY_DROPDOWN_ITEM, {});
371
+ }
372
+ function useProvideDropdownAction({
373
+ expanded
374
+ }) {
375
+ provide(INJECTION_KEY_DROPDOWN_ACTION, {
376
+ role: ref(ActionRoles.menuitem),
377
+ expanded
378
+ });
379
+ }
380
+ const __default__$1 = {
381
+ name: "VvDropdownItem"
382
+ };
383
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
384
+ ...__default__$1,
385
+ props: VvDropdownItemProps,
386
+ setup(__props) {
387
+ const props = __props;
388
+ const { role, expanded } = useInjectedDropdownItem();
389
+ const element = ref(null);
390
+ useProvideDropdownAction({ expanded });
391
+ const hovered = useElementHover(element);
392
+ const { focused } = useFocus(element);
393
+ const { focused: focusedWithin } = useFocusWithin(element);
394
+ watch(hovered, (newValue) => {
395
+ if (newValue && props.focusOnHover) {
396
+ focused.value = true;
397
+ }
398
+ });
399
+ return (_ctx, _cache) => {
400
+ return openBlock(), createElementBlock(
401
+ "div",
402
+ mergeProps({ role: unref(role) }, {
403
+ ref_key: "element",
404
+ ref: element,
405
+ class: ["vv-dropdown__item", { "focus-visible": unref(focused) || unref(focusedWithin) }]
406
+ }),
407
+ [
408
+ renderSlot(_ctx.$slots, "default")
409
+ ],
410
+ 16
411
+ /* FULL_PROPS */
412
+ );
413
+ };
414
+ }
415
+ });
348
416
  function useModifiers(prefix, modifiers, others) {
349
417
  return computed(() => {
350
418
  const toReturn = {
@@ -374,21 +442,7 @@ const __default__ = {
374
442
  };
375
443
  const _sfc_main = /* @__PURE__ */ defineComponent({
376
444
  ...__default__,
377
- props: {
378
- ...DisabledProps,
379
- ...SelectedProps,
380
- ...UnselectableProps,
381
- ...ModifiersProps,
382
- deselectHintLabel: {
383
- type: String
384
- },
385
- selectHintLabel: {
386
- type: String
387
- },
388
- selectedHintLabel: {
389
- type: String
390
- }
391
- },
445
+ props: VvDropdownOptionProps,
392
446
  setup(__props) {
393
447
  const props = __props;
394
448
  const { modifiers } = toRefs(props);
@@ -414,7 +468,8 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
414
468
  class: normalizeClass(unref(bemCssClasses)),
415
469
  tabindex: _ctx.disabled ? -1 : 0,
416
470
  "aria-selected": _ctx.selected,
417
- "aria-disabled": _ctx.disabled
471
+ "aria-disabled": _ctx.disabled,
472
+ "focus-on-hover": _ctx.focusOnHover
418
473
  }, {
419
474
  default: withCtx(() => [
420
475
  renderSlot(_ctx.$slots, "default"),
@@ -433,7 +488,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
433
488
  ]),
434
489
  _: 3
435
490
  /* FORWARDED */
436
- }, 8, ["class", "tabindex", "aria-selected", "aria-disabled"]);
491
+ }, 8, ["class", "tabindex", "aria-selected", "aria-disabled", "focus-on-hover"]);
437
492
  };
438
493
  }
439
494
  });