@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.
- 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 +169 -89
- package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
- package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +31 -5
- package/dist/components/VvAccordionGroup/index.d.ts +7 -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 +435 -195
- 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 +51 -9
- package/dist/stories/AccordionGroup/AccordionGroupSlots.stories.d.ts +327 -64
- package/dist/stories/Button/Button.settings.d.ts +0 -1
- package/dist/types/nav.d.ts +1 -2
- package/package.json +1 -1
- 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 +86 -69
- package/src/components/VvAccordionGroup/index.ts +3 -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 +98 -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/AccordionGroup/AccordionGroup.settings.ts +2 -2
- package/src/stories/AccordionGroup/AccordionGroup.test.ts +5 -5
- package/src/stories/Button/Button.settings.ts +1 -4
- 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,
|
|
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))}})}));
|
|
@@ -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
|
|
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_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
|
});
|