@volverjs/ui-vue 0.0.10-beta.25 → 0.0.10-beta.27
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.
- package/auto-imports.d.ts +1 -0
- package/dist/components/VvAccordion/VvAccordion.es.js +14 -12
- package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
- package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +92 -38
- package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
- package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +13 -2
- package/dist/components/VvAccordionGroup/index.d.ts +6 -4
- package/dist/components/VvAction/VvAction.es.js +14 -12
- package/dist/components/VvAction/VvAction.umd.js +1 -1
- package/dist/components/VvAction/VvAction.vue.d.ts +2 -11
- package/dist/components/VvAction/index.d.ts +1 -5
- package/dist/components/VvAlert/VvAlert.es.js +14 -12
- package/dist/components/VvAlert/VvAlert.umd.js +1 -1
- package/dist/components/VvAlertGroup/VvAlertGroup.es.js +14 -12
- package/dist/components/VvAlertGroup/VvAlertGroup.umd.js +1 -1
- package/dist/components/VvAvatar/VvAvatar.es.js +14 -12
- package/dist/components/VvAvatar/VvAvatar.umd.js +1 -1
- package/dist/components/VvAvatarGroup/VvAvatarGroup.es.js +14 -12
- package/dist/components/VvAvatarGroup/VvAvatarGroup.umd.js +1 -1
- package/dist/components/VvBadge/VvBadge.es.js +14 -12
- package/dist/components/VvBadge/VvBadge.umd.js +1 -1
- package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +14 -12
- package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -1
- package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +1 -1
- package/dist/components/VvButton/VvButton.es.js +14 -12
- package/dist/components/VvButton/VvButton.umd.js +1 -1
- package/dist/components/VvButton/VvButton.vue.d.ts +2 -19
- package/dist/components/VvButton/index.d.ts +1 -5
- package/dist/components/VvButtonGroup/VvButtonGroup.es.js +14 -12
- package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
- package/dist/components/VvCard/VvCard.es.js +14 -12
- package/dist/components/VvCard/VvCard.umd.js +1 -1
- package/dist/components/VvCheckbox/VvCheckbox.es.js +14 -12
- package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -1
- package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +14 -12
- package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -1
- package/dist/components/VvCombobox/VvCombobox.es.js +58 -34
- package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
- package/dist/components/VvCombobox/VvCombobox.vue.d.ts +2 -8
- package/dist/components/VvCombobox/index.d.ts +9 -2
- package/dist/components/VvDialog/VvDialog.es.js +14 -12
- package/dist/components/VvDialog/VvDialog.umd.js +1 -1
- package/dist/components/VvDropdown/VvDropdown.es.js +24 -16
- package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
- package/dist/components/VvDropdown/VvDropdownAction.vue.d.ts +2 -19
- package/dist/components/VvDropdown/VvDropdownItem.vue.d.ts +13 -1
- package/dist/components/VvDropdown/VvDropdownOption.vue.d.ts +9 -0
- package/dist/components/VvDropdown/index.d.ts +37 -0
- package/dist/components/VvDropdownAction/VvDropdownAction.es.js +64 -15
- package/dist/components/VvDropdownAction/VvDropdownAction.umd.js +1 -1
- package/dist/components/VvDropdownItem/VvDropdownItem.es.js +322 -1
- package/dist/components/VvDropdownItem/VvDropdownItem.umd.js +1 -1
- package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.es.js +14 -12
- package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.umd.js +1 -1
- package/dist/components/VvDropdownOption/VvDropdownOption.es.js +131 -76
- package/dist/components/VvDropdownOption/VvDropdownOption.umd.js +1 -1
- package/dist/components/VvInputFile/VvInputFile.es.js +14 -12
- package/dist/components/VvInputFile/VvInputFile.umd.js +1 -1
- package/dist/components/VvInputFile/index.d.ts +5 -5
- package/dist/components/VvInputText/VvInputText.es.js +979 -107
- package/dist/components/VvInputText/VvInputText.umd.js +1 -1
- package/dist/components/VvInputText/VvInputText.vue.d.ts +44 -1
- package/dist/components/VvInputText/index.d.ts +28 -0
- package/dist/components/VvNav/VvNav.es.js +14 -12
- package/dist/components/VvNav/VvNav.umd.js +1 -1
- package/dist/components/VvNav/VvNav.vue.d.ts +1 -1
- package/dist/components/VvNavItem/VvNavItem.es.js +14 -12
- package/dist/components/VvNavItem/VvNavItem.umd.js +1 -1
- package/dist/components/VvProgress/VvProgress.es.js +14 -12
- package/dist/components/VvProgress/VvProgress.umd.js +1 -1
- package/dist/components/VvRadio/VvRadio.es.js +14 -12
- package/dist/components/VvRadio/VvRadio.umd.js +1 -1
- package/dist/components/VvRadioGroup/VvRadioGroup.es.js +14 -12
- package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -1
- package/dist/components/VvSelect/VvSelect.es.js +14 -12
- package/dist/components/VvSelect/VvSelect.umd.js +1 -1
- package/dist/components/VvTab/VvTab.es.js +14 -12
- package/dist/components/VvTab/VvTab.umd.js +1 -1
- package/dist/components/VvTab/VvTab.vue.d.ts +1 -1
- package/dist/components/VvTextarea/VvTextarea.es.js +14 -12
- package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
- package/dist/components/VvTooltip/VvTooltip.es.js +14 -12
- package/dist/components/VvTooltip/VvTooltip.umd.js +1 -1
- package/dist/components/index.es.js +358 -144
- package/dist/components/index.umd.js +1 -1
- package/dist/composables/dropdown/useInjectDropdown.d.ts +3 -23
- package/dist/composables/dropdown/useProvideDropdown.d.ts +2 -3
- package/dist/composables/usePersistence.d.ts +3 -0
- package/dist/constants.d.ts +24 -21
- package/dist/directives/index.es.js +14 -12
- package/dist/directives/index.umd.js +1 -1
- package/dist/directives/v-tooltip.es.js +14 -12
- package/dist/directives/v-tooltip.umd.js +1 -1
- package/dist/icons.es.js +3 -3
- package/dist/icons.umd.js +1 -1
- package/dist/props/index.d.ts +11 -11
- package/dist/stories/AccordionGroup/AccordionGroup.stories.d.ts +27 -4
- package/dist/stories/AccordionGroup/AccordionGroupSlots.stories.d.ts +176 -29
- package/dist/stories/Button/Button.settings.d.ts +0 -1
- package/dist/types/nav.d.ts +1 -2
- package/package.json +8 -8
- package/src/assets/icons/detailed.json +1 -1
- package/src/assets/icons/normal.json +1 -1
- package/src/assets/icons/simple.json +1 -1
- package/src/components/VvAccordionGroup/VvAccordionGroup.vue +14 -19
- package/src/components/VvAccordionGroup/index.ts +2 -5
- package/src/components/VvCombobox/VvCombobox.vue +2 -0
- package/src/components/VvDropdown/VvDropdown.vue +11 -2
- package/src/components/VvDropdown/VvDropdownItem.vue +4 -1
- package/src/components/VvDropdown/VvDropdownOption.vue +3 -21
- package/src/components/VvDropdown/index.ts +35 -1
- package/src/components/VvInputText/VvInputText.vue +100 -3
- package/src/components/VvInputText/index.ts +24 -1
- package/src/composables/dropdown/useProvideDropdown.ts +4 -4
- package/src/composables/usePersistence.ts +76 -0
- package/src/constants.ts +23 -18
- package/src/props/index.ts +12 -7
- package/src/stories/Button/Button.settings.ts +1 -4
- package/src/types/nav.ts +1 -3
|
@@ -189,3 +189,40 @@ export declare const VvDropdownProps: {
|
|
|
189
189
|
};
|
|
190
190
|
id: (StringConstructor | NumberConstructor)[];
|
|
191
191
|
};
|
|
192
|
+
export declare const VvDropdownItemProps: {
|
|
193
|
+
focusOnHover: {
|
|
194
|
+
type: BooleanConstructor;
|
|
195
|
+
default: boolean;
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
export declare const VvDropdownOptionProps: {
|
|
199
|
+
deselectHintLabel: {
|
|
200
|
+
type: StringConstructor;
|
|
201
|
+
};
|
|
202
|
+
selectHintLabel: {
|
|
203
|
+
type: StringConstructor;
|
|
204
|
+
};
|
|
205
|
+
selectedHintLabel: {
|
|
206
|
+
type: StringConstructor;
|
|
207
|
+
};
|
|
208
|
+
focusOnHover: {
|
|
209
|
+
type: BooleanConstructor;
|
|
210
|
+
default: boolean;
|
|
211
|
+
};
|
|
212
|
+
modifiers: {
|
|
213
|
+
type: PropType<string | string[]>;
|
|
214
|
+
default: undefined;
|
|
215
|
+
};
|
|
216
|
+
unselectable: {
|
|
217
|
+
type: BooleanConstructor;
|
|
218
|
+
default: boolean;
|
|
219
|
+
};
|
|
220
|
+
selected: {
|
|
221
|
+
type: BooleanConstructor;
|
|
222
|
+
default: boolean;
|
|
223
|
+
};
|
|
224
|
+
disabled: {
|
|
225
|
+
type: BooleanConstructor;
|
|
226
|
+
default: boolean;
|
|
227
|
+
};
|
|
228
|
+
};
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { inject, defineComponent, ref, watch, computed, openBlock, createBlock, resolveDynamicComponent, unref, mergeProps, withCtx, renderSlot, createTextVNode, toDisplayString, provide, createElementBlock, toRefs, createVNode } 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,13 +53,11 @@ var ActionRoles = /* @__PURE__ */ ((ActionRoles2) => {
|
|
|
48
53
|
ActionRoles2["menuitem"] = "menuitem";
|
|
49
54
|
return ActionRoles2;
|
|
50
55
|
})(ActionRoles || {});
|
|
51
|
-
var
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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_VOLVER = Symbol.for("volver");
|
|
59
62
|
const INJECTION_KEY_DROPDOWN_TRIGGER = Symbol.for(
|
|
60
63
|
"dropdownTrigger"
|
|
@@ -80,11 +83,7 @@ const LinkProps = {
|
|
|
80
83
|
/**
|
|
81
84
|
* Anchor target
|
|
82
85
|
*/
|
|
83
|
-
target:
|
|
84
|
-
type: String,
|
|
85
|
-
default: void 0,
|
|
86
|
-
validator: (value) => Object.values(AnchorTarget).includes(value)
|
|
87
|
-
},
|
|
86
|
+
target: String,
|
|
88
87
|
/**
|
|
89
88
|
* Anchor rel
|
|
90
89
|
*/
|
|
@@ -165,7 +164,14 @@ const ModifiersProps = {
|
|
|
165
164
|
validation: (value) => Object.values(Position).includes(value)
|
|
166
165
|
}
|
|
167
166
|
});
|
|
168
|
-
|
|
167
|
+
const IdProps = {
|
|
168
|
+
/**
|
|
169
|
+
* Global attribute id
|
|
170
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
|
|
171
|
+
*/
|
|
172
|
+
id: [String, Number]
|
|
173
|
+
};
|
|
174
|
+
const DropdownProps = {
|
|
169
175
|
/**
|
|
170
176
|
* Dropdown placement
|
|
171
177
|
*/
|
|
@@ -258,7 +264,7 @@ const ModifiersProps = {
|
|
|
258
264
|
type: Boolean,
|
|
259
265
|
default: false
|
|
260
266
|
}
|
|
261
|
-
}
|
|
267
|
+
};
|
|
262
268
|
const ActionProps = {
|
|
263
269
|
...DisabledProps,
|
|
264
270
|
...LabelProps,
|
|
@@ -289,6 +295,14 @@ const ActionProps = {
|
|
|
289
295
|
default: ActionTag.button
|
|
290
296
|
}
|
|
291
297
|
};
|
|
298
|
+
({
|
|
299
|
+
storageType: {
|
|
300
|
+
type: String,
|
|
301
|
+
default: StorageType.local,
|
|
302
|
+
validator: (value) => Object.values(StorageType).includes(value)
|
|
303
|
+
},
|
|
304
|
+
storageKey: String
|
|
305
|
+
});
|
|
292
306
|
const VvActionEvents = ["click", "mouseover", "mouseleave"];
|
|
293
307
|
const VvActionProps = ActionProps;
|
|
294
308
|
function useVolver() {
|
|
@@ -423,6 +437,39 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
|
423
437
|
};
|
|
424
438
|
}
|
|
425
439
|
});
|
|
440
|
+
({
|
|
441
|
+
...IdProps,
|
|
442
|
+
...DropdownProps,
|
|
443
|
+
...ModifiersProps,
|
|
444
|
+
/**
|
|
445
|
+
* Show / hide dropdown programmatically
|
|
446
|
+
*/
|
|
447
|
+
modelValue: {
|
|
448
|
+
type: Boolean,
|
|
449
|
+
default: void 0
|
|
450
|
+
},
|
|
451
|
+
/**
|
|
452
|
+
* Dropdown trigger element
|
|
453
|
+
*/
|
|
454
|
+
reference: {
|
|
455
|
+
type: Object,
|
|
456
|
+
default: null
|
|
457
|
+
},
|
|
458
|
+
/**
|
|
459
|
+
* Dropdown role
|
|
460
|
+
*/
|
|
461
|
+
role: {
|
|
462
|
+
type: String,
|
|
463
|
+
default: DropdownRole.menu,
|
|
464
|
+
validator: (value) => Object.values(DropdownRole).includes(value)
|
|
465
|
+
}
|
|
466
|
+
});
|
|
467
|
+
const VvDropdownItemProps = {
|
|
468
|
+
focusOnHover: {
|
|
469
|
+
type: Boolean,
|
|
470
|
+
default: false
|
|
471
|
+
}
|
|
472
|
+
};
|
|
426
473
|
function useProvideDropdownAction({
|
|
427
474
|
expanded
|
|
428
475
|
}) {
|
|
@@ -436,7 +483,9 @@ const __default__$1 = {
|
|
|
436
483
|
};
|
|
437
484
|
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
438
485
|
...__default__$1,
|
|
486
|
+
props: VvDropdownItemProps,
|
|
439
487
|
setup(__props) {
|
|
488
|
+
const props = __props;
|
|
440
489
|
const { role, expanded } = useInjectedDropdownItem();
|
|
441
490
|
const element = ref(null);
|
|
442
491
|
useProvideDropdownAction({ expanded });
|
|
@@ -444,7 +493,7 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
444
493
|
const { focused } = useFocus(element);
|
|
445
494
|
const { focused: focusedWithin } = useFocusWithin(element);
|
|
446
495
|
watch(hovered, (newValue) => {
|
|
447
|
-
if (newValue) {
|
|
496
|
+
if (newValue && props.focusOnHover) {
|
|
448
497
|
focused.value = true;
|
|
449
498
|
}
|
|
450
499
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue"),require("mitt"),require("@vueuse/core")):"function"==typeof define&&define.amd?define(["vue","mitt","@vueuse/core"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VvDropdownAction=t(e.vue,null,e.core)}(this,(function(e,t,o){"use strict";var r=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue"),require("mitt"),require("@vueuse/core")):"function"==typeof define&&define.amd?define(["vue","mitt","@vueuse/core"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VvDropdownAction=t(e.vue,null,e.core)}(this,(function(e,t,o){"use strict";var r=(e=>(e.local="local",e.session="session",e))(r||{}),n=(e=>(e.absolute="absolute",e.fixed="fixed",e))(n||{}),l=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(l||{}),a=(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))(a||{}),u=(e=>(e.before="before",e.after="after",e))(u||{}),i=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(i||{}),s=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(s||{}),d=(e=>(e.button="button",e.link="link",e.menuitem="menuitem",e))(d||{}),c=(e=>(e.listbox="listbox",e.menu="menu",e))(c||{});const f=Symbol.for("volver"),p=Symbol.for("dropdownTrigger"),v=Symbol.for("dropdownItem"),m=Symbol.for("dropdownAction"),b={to:{type:[String,Object]},href:String,target:String,rel:{type:String,default:"noopener noreferrer"}},y={disabled:{type:Boolean,default:!1}},g={active:{type:Boolean,default:!1}},h={current:{type:Boolean,default:!1}},k={pressed:{type:Boolean,default:!1}},x={label:{type:[String,Number],default:void 0}},S={modifiers:{type:[String,Array],default:void 0}};u.before;l.bottom,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean;const B={...y,...x,...k,...g,...h,...b,type:{type:String,default:i.button,validator:e=>Object.values(i).includes(e)},ariaLabel:{type:String,default:void 0},defaultTag:{type:String,default:s.button}};r.local;const w=B;const L=e.defineComponent({name:"VvAction",props:w,emits:["click","mouseover","mouseleave"],setup(t,{expose:o,emit:r}){const n=t,l=r,a=e.inject(f),u=e.ref(null);o({$el:u});const{reference:i,bus:d,aria:c,expanded:v}=e.inject(p,{});e.watch((()=>u.value),(e=>{i&&(i.value=e)}));const b=e.computed((()=>n.pressed||(null==v?void 0:v.value))),{role:y}=e.inject(m,{}),g=e.computed((()=>{switch(!0){case n.disabled:return s.button;case void 0!==n.to:return(null==a?void 0:a.nuxt)?s.nuxtLink:s.routerLink;case void 0!==n.href:return s.a;default:return n.defaultTag}})),h=e.computed((()=>{const e={...null==c?void 0:c.value,ariaPressed:!!b.value||void 0,ariaLabel:n.ariaLabel,role:null==y?void 0:y.value};switch(g.value){case s.a:return{...e,href:n.href,target:n.target,rel:n.rel};case s.routerLink:case s.nuxtLink:return{...e,to:n.to,target:n.target};case s.button:return{...e,type:n.type,disabled:n.disabled};default:return e}})),k=e=>{n.disabled?e.preventDefault():(null==d||d.emit("click",e),l("click",e))},x=e=>{null==d||d.emit("mouseover",e),l("mouseover",e)},S=e=>{null==d||d.emit("mouseleave",e),l("mouseleave",e)};return(t,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(g)),e.mergeProps(e.unref(h),{ref_key:"element",ref:u,class:{active:t.active,pressed:e.unref(b),disabled:t.disabled,current:t.current},onClickPassive:k,onMouseoverPassive:x,onMouseleavePassive:S}),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(t.label),1)]))])),_:3},16,["class"]))}});Boolean,c.menu;const j={focusOnHover:{type:Boolean,default:!1}};const C=e.defineComponent({name:"VvDropdownItem",props:j,setup(t){const r=t,{role:n,expanded:l}=e.inject(v,{}),a=e.ref(null);!function({expanded:t}){e.provide(m,{role:e.ref(d.menuitem),expanded:t})}({expanded:l});const u=o.useElementHover(a),{focused:i}=o.useFocus(a),{focused:s}=o.useFocusWithin(a);return e.watch(u,(e=>{e&&r.focusOnHover&&(i.value=!0)})),(t,o)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps({role:e.unref(n)},{ref_key:"element",ref:a,class:["vv-dropdown__item",{"focus-visible":e.unref(i)||e.unref(s)}]}),[e.renderSlot(t.$slots,"default")],16))}});return e.defineComponent({name:"VvDropdownAction",props:{...B,...S},setup(t){const o=t,{modifiers:r}=e.toRefs(o),n=function(t,o,r){return e.computed((()=>{const n={[t]:!0},l="string"==typeof(null==o?void 0:o.value)?o.value.split(" "):null==o?void 0:o.value;return l&&Array.isArray(l)&&l.forEach((e=>{e&&(n[`${t}--${e}`]=!0)})),r&&Object.keys(r.value).forEach((o=>{n[`${t}--${o}`]=e.unref(r.value[o])})),n}))}("vv-dropdown-action",r);return(t,o)=>(e.openBlock(),e.createBlock(C,null,{default:e.withCtx((()=>[e.createVNode(L,e.mergeProps({disabled:t.disabled,pressed:t.pressed,active:t.active,type:t.type,to:t.to,href:t.href,target:t.target,rel:t.rel},{class:e.unref(n)}),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(t.label),1)]))])),_:3},16,["class"])])),_: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,
|
|
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))(
|
|
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))}})}));
|