@volverjs/ui-vue 0.0.4 → 0.0.5-beta.1
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/README.md +2 -2
- package/auto-imports.d.ts +12 -3
- package/bin/icons.cjs +1 -73
- package/dist/Volver.d.ts +19 -11
- package/dist/components/VvAccordion/VvAccordion.es.js +165 -106
- package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
- package/dist/components/VvAccordion/VvAccordion.vue.d.ts +4 -1
- package/dist/components/VvAccordion/index.d.ts +8 -3
- package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +264 -164
- package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
- package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +15 -12
- package/dist/components/VvAccordionGroup/index.d.ts +8 -0
- package/dist/components/VvAction/VvAction.es.js +266 -98
- package/dist/components/VvAction/VvAction.umd.js +1 -1
- package/dist/components/VvAction/VvAction.vue.d.ts +12 -12
- package/dist/components/VvAction/index.d.ts +2 -2
- package/dist/components/VvBadge/VvBadge.es.js +203 -44
- package/dist/components/VvBadge/VvBadge.umd.js +1 -1
- package/dist/components/VvBadge/VvBadge.vue.d.ts +2 -2
- package/dist/components/VvBadge/index.d.ts +1 -1
- package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +237 -75
- package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -1
- package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +11 -11
- package/dist/components/VvBreadcrumb/index.d.ts +1 -1
- package/dist/components/VvButton/VvButton.es.js +636 -360
- package/dist/components/VvButton/VvButton.umd.js +1 -1
- package/dist/components/VvButton/VvButton.vue.d.ts +18 -18
- package/dist/components/VvButton/index.d.ts +13 -13
- package/dist/components/VvButtonGroup/VvButtonGroup.es.js +251 -79
- package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
- package/dist/components/VvButtonGroup/VvButtonGroup.vue.d.ts +2 -2
- package/dist/components/VvButtonGroup/index.d.ts +1 -1
- package/dist/components/VvCard/VvCard.es.js +57 -38
- package/dist/components/VvCard/VvCard.umd.js +1 -1
- package/dist/components/VvCheckbox/VvCheckbox.es.js +552 -274
- package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -1
- package/dist/components/VvCheckbox/VvCheckbox.vue.d.ts +2 -2
- package/dist/components/VvCheckbox/index.d.ts +5 -5
- package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +651 -340
- package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -1
- package/dist/components/VvCheckboxGroup/VvCheckboxGroup.vue.d.ts +7 -7
- package/dist/components/VvCheckboxGroup/index.d.ts +3 -3
- package/dist/components/VvCombobox/VvCombobox.es.js +1532 -983
- package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
- package/dist/components/VvCombobox/VvCombobox.vue.d.ts +125 -51
- package/dist/components/VvCombobox/index.d.ts +36 -10
- package/dist/components/VvDialog/VvDialog.es.js +377 -141
- package/dist/components/VvDialog/VvDialog.umd.js +1 -1
- package/dist/components/VvDialog/VvDialog.vue.d.ts +12 -3
- package/dist/components/VvDialog/index.d.ts +4 -1
- package/dist/components/VvDropdown/VvDropdown.es.js +440 -244
- package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
- package/dist/components/VvDropdown/VvDropdown.vue.d.ts +113 -41
- package/dist/components/VvDropdown/VvDropdownAction.vue.d.ts +13 -13
- package/dist/components/VvDropdown/VvDropdownOption.vue.d.ts +2 -2
- package/dist/components/VvDropdown/index.d.ts +35 -11
- package/dist/components/VvDropdownAction/VvDropdownAction.es.js +363 -160
- package/dist/components/VvDropdownAction/VvDropdownAction.umd.js +1 -1
- package/dist/components/VvDropdownItem/VvDropdownItem.es.js +43 -28
- package/dist/components/VvDropdownItem/VvDropdownItem.umd.js +1 -1
- package/dist/components/VvDropdownOption/VvDropdownOption.es.js +275 -90
- package/dist/components/VvDropdownOption/VvDropdownOption.umd.js +1 -1
- package/dist/components/VvIcon/VvIcon.es.js +113 -65
- package/dist/components/VvIcon/VvIcon.umd.js +1 -1
- package/dist/components/VvIcon/VvIcon.vue.d.ts +7 -7
- package/dist/components/VvIcon/index.d.ts +2 -2
- package/dist/components/VvInputText/VvInputPasswordAction.d.ts +2 -2
- package/dist/components/VvInputText/VvInputStepAction.d.ts +1 -1
- package/dist/components/VvInputText/VvInputText.es.js +974 -460
- package/dist/components/VvInputText/VvInputText.umd.js +1 -1
- package/dist/components/VvInputText/VvInputText.vue.d.ts +96 -16
- package/dist/components/VvInputText/VvInputTextActions.d.ts +1 -1
- package/dist/components/VvInputText/index.d.ts +64 -11
- package/dist/components/VvProgress/VvProgress.es.js +206 -45
- package/dist/components/VvProgress/VvProgress.umd.js +1 -1
- package/dist/components/VvProgress/VvProgress.vue.d.ts +2 -2
- package/dist/components/VvProgress/index.d.ts +1 -1
- package/dist/components/VvRadio/VvRadio.es.js +489 -238
- package/dist/components/VvRadio/VvRadio.umd.js +1 -1
- package/dist/components/VvRadio/VvRadio.vue.d.ts +2 -2
- package/dist/components/VvRadio/index.d.ts +5 -5
- package/dist/components/VvRadioGroup/VvRadioGroup.es.js +588 -304
- package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -1
- package/dist/components/VvRadioGroup/VvRadioGroup.vue.d.ts +7 -7
- package/dist/components/VvRadioGroup/index.d.ts +3 -3
- package/dist/components/VvSelect/VvSelect.es.js +621 -324
- package/dist/components/VvSelect/VvSelect.umd.js +1 -1
- package/dist/components/VvSelect/VvSelect.vue.d.ts +13 -13
- package/dist/components/VvSelect/index.d.ts +3 -3
- package/dist/components/VvTextarea/VvTextarea.es.js +664 -353
- package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
- package/dist/components/VvTextarea/VvTextarea.vue.d.ts +10 -10
- package/dist/components/VvTextarea/index.d.ts +2 -2
- package/dist/components/VvTooltip/VvTooltip.es.js +205 -47
- package/dist/components/VvTooltip/VvTooltip.umd.js +1 -1
- package/dist/components/VvTooltip/VvTooltip.vue.d.ts +7 -7
- package/dist/components/VvTooltip/index.d.ts +2 -2
- package/dist/components/index.es.js +3508 -2231
- package/dist/components/index.umd.js +1 -1
- package/dist/composables/dropdown/useInjectDropdown.d.ts +1 -1
- package/dist/composables/dropdown/useProvideDropdown.d.ts +3 -3
- package/dist/composables/group/useInjectedGroupState.d.ts +2 -2
- package/dist/composables/group/useProvideGroupState.d.ts +1 -1
- package/dist/composables/useComponentFocus.d.ts +1 -1
- package/dist/composables/useComponentIcon.d.ts +7 -7
- package/dist/composables/useDebouncedInput.d.ts +4 -1
- package/dist/composables/useDefaults.d.ts +2 -0
- package/dist/composables/useModifiers.d.ts +1 -1
- package/dist/composables/useOptions.d.ts +2 -2
- package/dist/composables/useTextCount.d.ts +3 -3
- package/dist/composables/useUniqueId.d.ts +1 -1
- package/dist/composables/useVolver.d.ts +1 -1
- package/dist/directives/index.es.js +215 -55
- package/dist/directives/index.umd.js +1 -1
- package/dist/directives/v-tooltip.es.js +212 -53
- package/dist/directives/v-tooltip.umd.js +1 -1
- package/dist/icons.es.js +38 -23
- package/dist/icons.umd.js +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.es.js +112 -3607
- package/dist/index.umd.js +1 -1
- package/dist/props/index.d.ts +40 -16
- package/dist/resolvers/unplugin.d.ts +7 -1
- package/dist/resolvers/unplugin.es.js +77 -37
- package/dist/resolvers/unplugin.umd.js +1 -1
- package/dist/stories/InputText/InputText.settings.d.ts +53 -0
- package/dist/stories/argTypes.d.ts +1 -1
- package/package.json +114 -36
- package/src/Volver.ts +49 -22
- 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/VvAccordion/VvAccordion.vue +19 -22
- package/src/components/VvAccordion/index.ts +12 -4
- package/src/components/VvAccordionGroup/VvAccordionGroup.vue +19 -10
- package/src/components/VvAccordionGroup/index.ts +8 -0
- package/src/components/VvAction/VvAction.vue +7 -7
- package/src/components/VvAction/index.ts +1 -1
- package/src/components/VvBadge/VvBadge.vue +2 -2
- package/src/components/VvBadge/index.ts +1 -1
- package/src/components/VvBreadcrumb/VvBreadcrumb.vue +3 -3
- package/src/components/VvButton/VvButton.vue +11 -11
- package/src/components/VvButton/index.ts +10 -9
- package/src/components/VvButtonGroup/VvButtonGroup.vue +4 -7
- package/src/components/VvButtonGroup/index.ts +1 -1
- package/src/components/VvCard/VvCard.vue +2 -2
- package/src/components/VvCheckbox/VvCheckbox.vue +3 -7
- package/src/components/VvCheckbox/index.ts +11 -7
- package/src/components/VvCheckboxGroup/VvCheckboxGroup.vue +7 -10
- package/src/components/VvCheckboxGroup/index.ts +1 -1
- package/src/components/VvCombobox/VvCombobox.vue +39 -23
- package/src/components/VvCombobox/index.ts +1 -1
- package/src/components/VvDialog/VvDialog.vue +28 -11
- package/src/components/VvDialog/index.ts +5 -2
- package/src/components/VvDropdown/VvDropdown.vue +6 -5
- package/src/components/VvDropdown/VvDropdownAction.vue +7 -5
- package/src/components/VvDropdown/VvDropdownOption.vue +17 -10
- package/src/components/VvDropdown/index.ts +3 -3
- package/src/components/VvIcon/VvIcon.vue +3 -3
- package/src/components/VvIcon/index.ts +3 -3
- package/src/components/VvInputText/VvInputClearAction.ts +2 -2
- package/src/components/VvInputText/VvInputPasswordAction.ts +3 -4
- package/src/components/VvInputText/VvInputStepAction.ts +3 -2
- package/src/components/VvInputText/VvInputText.vue +128 -35
- package/src/components/VvInputText/VvInputTextActions.ts +5 -8
- package/src/components/VvInputText/index.ts +62 -1
- package/src/components/VvProgress/VvProgress.vue +2 -2
- package/src/components/VvProgress/index.ts +1 -1
- package/src/components/VvRadio/VvRadio.vue +3 -7
- package/src/components/VvRadio/index.ts +11 -7
- package/src/components/VvRadioGroup/VvRadioGroup.vue +7 -10
- package/src/components/VvRadioGroup/index.ts +1 -1
- package/src/components/VvSelect/VvSelect.vue +4 -4
- package/src/components/VvSelect/index.ts +1 -1
- package/src/components/VvTextarea/VvTextarea.vue +4 -4
- package/src/components/VvTextarea/index.ts +1 -1
- package/src/components/VvTooltip/VvTooltip.vue +2 -2
- package/src/components/VvTooltip/index.ts +3 -3
- package/src/composables/dropdown/useInjectDropdown.ts +2 -2
- package/src/composables/dropdown/useProvideDropdown.ts +2 -2
- package/src/composables/group/useInjectedGroupState.ts +1 -1
- package/src/composables/group/useProvideGroupState.ts +1 -1
- package/src/composables/useComponentIcon.ts +1 -1
- package/src/composables/useDebouncedInput.ts +10 -3
- package/src/composables/useDefaults.ts +89 -0
- package/src/composables/useModifiers.ts +4 -2
- package/src/composables/useOptions.ts +1 -1
- package/src/composables/useVolver.ts +2 -2
- package/src/directives/index.ts +1 -1
- package/src/directives/v-tooltip.ts +2 -2
- package/src/index.ts +0 -2
- package/src/props/index.ts +8 -8
- package/src/resolvers/unplugin.ts +15 -1
- package/src/stories/Accordion/Accordion.stories.mdx +8 -2
- package/src/stories/Accordion/Accordion.test.ts +21 -15
- package/src/stories/Accordion/AccordionSlots.stories.mdx +8 -8
- package/src/stories/AccordionGroup/AccordionGroup.stories.mdx +17 -1
- package/src/stories/AccordionGroup/AccordionGroup.test.ts +18 -12
- package/src/stories/AccordionGroup/AccordionGroupSlots.stories.mdx +1 -1
- package/src/stories/InputText/InputText.settings.ts +53 -0
- package/src/stories/InputText/InputText.stories.mdx +40 -0
- package/src/stories/InputText/InputText.test.ts +5 -2
- package/src/stories/argTypes.ts +2 -2
- package/src/types/group.d.ts +5 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { inject
|
|
2
|
-
import { iconExists
|
|
3
|
-
import { nanoid
|
|
4
|
-
const
|
|
1
|
+
import { inject, computed, unref, defineComponent, ref, toRefs, openBlock, createBlock, mergeProps, createCommentVNode, watch, resolveDynamicComponent, withCtx, renderSlot, createTextVNode, toDisplayString, toRef, useAttrs, useSlots, createElementBlock, Fragment } from "vue";
|
|
2
|
+
import { iconExists, Icon, addIcon } from "@iconify/vue";
|
|
3
|
+
import { nanoid } from "nanoid";
|
|
4
|
+
const VvIconProps = {
|
|
5
5
|
/**
|
|
6
6
|
* Color
|
|
7
7
|
*/
|
|
@@ -25,7 +25,7 @@ const ue = {
|
|
|
25
25
|
*/
|
|
26
26
|
name: {
|
|
27
27
|
type: String,
|
|
28
|
-
required:
|
|
28
|
+
required: true
|
|
29
29
|
},
|
|
30
30
|
/**
|
|
31
31
|
* By default 'vv'
|
|
@@ -95,77 +95,170 @@ const ue = {
|
|
|
95
95
|
type: [String, Array]
|
|
96
96
|
}
|
|
97
97
|
};
|
|
98
|
-
var
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
98
|
+
var Side = /* @__PURE__ */ ((Side2) => {
|
|
99
|
+
Side2["left"] = "left";
|
|
100
|
+
Side2["right"] = "right";
|
|
101
|
+
Side2["top"] = "top";
|
|
102
|
+
Side2["bottom"] = "bottom";
|
|
103
|
+
return Side2;
|
|
104
|
+
})(Side || {});
|
|
105
|
+
var Placement = /* @__PURE__ */ ((Placement2) => {
|
|
106
|
+
Placement2["topStart"] = "top-start";
|
|
107
|
+
Placement2["topEnd"] = "top-end";
|
|
108
|
+
Placement2["bottomStart"] = "bottom-start";
|
|
109
|
+
Placement2["bottomEnd"] = "bottom-end";
|
|
110
|
+
Placement2["leftStart"] = "left-start";
|
|
111
|
+
Placement2["leftEnd"] = "left-end";
|
|
112
|
+
Placement2["rightStart"] = "right-start";
|
|
113
|
+
Placement2["rightEnd"] = "right-end";
|
|
114
|
+
return Placement2;
|
|
115
|
+
})(Placement || {});
|
|
116
|
+
var Position = /* @__PURE__ */ ((Position2) => {
|
|
117
|
+
Position2["before"] = "before";
|
|
118
|
+
Position2["after"] = "after";
|
|
119
|
+
return Position2;
|
|
120
|
+
})(Position || {});
|
|
121
|
+
var ButtonType = /* @__PURE__ */ ((ButtonType2) => {
|
|
122
|
+
ButtonType2["button"] = "button";
|
|
123
|
+
ButtonType2["submit"] = "submit";
|
|
124
|
+
ButtonType2["reset"] = "reset";
|
|
125
|
+
return ButtonType2;
|
|
126
|
+
})(ButtonType || {});
|
|
127
|
+
var ActionTag = /* @__PURE__ */ ((ActionTag2) => {
|
|
128
|
+
ActionTag2["nuxtLink"] = "nuxt-link";
|
|
129
|
+
ActionTag2["routerLink"] = "router-link";
|
|
130
|
+
ActionTag2["a"] = "a";
|
|
131
|
+
ActionTag2["button"] = "button";
|
|
132
|
+
return ActionTag2;
|
|
133
|
+
})(ActionTag || {});
|
|
134
|
+
var AnchorTarget = /* @__PURE__ */ ((AnchorTarget2) => {
|
|
135
|
+
AnchorTarget2["_blank"] = "_blank";
|
|
136
|
+
AnchorTarget2["_self"] = "_self";
|
|
137
|
+
AnchorTarget2["_parent"] = "_parent";
|
|
138
|
+
AnchorTarget2["_top"] = "_top";
|
|
139
|
+
return AnchorTarget2;
|
|
140
|
+
})(AnchorTarget || {});
|
|
141
|
+
const INJECTION_KEY_VOLVER = Symbol.for("volver");
|
|
142
|
+
const INJECTION_KEY_BUTTON_GROUP = Symbol.for("buttonGroup");
|
|
143
|
+
const INJECTION_KEY_DROPDOWN_TRIGGER = Symbol.for("dropdownTrigger");
|
|
144
|
+
const INJECTION_KEY_DROPDOWN_ACTION = Symbol.for("dropdownAction");
|
|
145
|
+
function useVolver() {
|
|
146
|
+
return inject(INJECTION_KEY_VOLVER);
|
|
102
147
|
}
|
|
103
|
-
function
|
|
104
|
-
return
|
|
105
|
-
const
|
|
106
|
-
[
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
148
|
+
function useModifiers(prefix, modifiers, others) {
|
|
149
|
+
return computed(() => {
|
|
150
|
+
const toReturn = {
|
|
151
|
+
[prefix]: true
|
|
152
|
+
};
|
|
153
|
+
const modifiersArray = typeof (modifiers == null ? void 0 : modifiers.value) === "string" ? modifiers.value.split(" ") : modifiers == null ? void 0 : modifiers.value;
|
|
154
|
+
if (modifiersArray) {
|
|
155
|
+
if (Array.isArray(modifiersArray)) {
|
|
156
|
+
modifiersArray.forEach((modifier) => {
|
|
157
|
+
if (modifier) {
|
|
158
|
+
toReturn[`${prefix}--${modifier}`] = true;
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (others) {
|
|
164
|
+
Object.keys(others.value).forEach((key) => {
|
|
165
|
+
toReturn[`${prefix}--${key}`] = unref(others.value[key]);
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
return toReturn;
|
|
113
169
|
});
|
|
114
170
|
}
|
|
115
|
-
const
|
|
171
|
+
const __default__$2 = {
|
|
116
172
|
name: "VvIcon"
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
173
|
+
};
|
|
174
|
+
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
175
|
+
...__default__$2,
|
|
176
|
+
props: VvIconProps,
|
|
177
|
+
setup(__props) {
|
|
178
|
+
const props = __props;
|
|
179
|
+
const show = ref(true);
|
|
180
|
+
const volver = useVolver();
|
|
181
|
+
const { modifiers } = toRefs(props);
|
|
182
|
+
const bemCssClasses = useModifiers("vv-icon", modifiers);
|
|
183
|
+
const provider = computed(() => {
|
|
184
|
+
return props.provider || (volver == null ? void 0 : volver.iconsProvider);
|
|
185
|
+
});
|
|
186
|
+
const icon = computed(() => {
|
|
187
|
+
const _name = props.name ?? "";
|
|
188
|
+
const iconName = `@${provider.value}:${props.prefix}:${props.name}`;
|
|
189
|
+
if (iconExists(_name)) {
|
|
190
|
+
return _name;
|
|
191
|
+
} else if (iconExists(iconName)) {
|
|
192
|
+
return iconName;
|
|
193
|
+
} else {
|
|
194
|
+
return (volver == null ? void 0 : volver.iconsCollections.find(
|
|
195
|
+
(iconsCollection) => {
|
|
196
|
+
const icon2 = `@${provider.value}:${iconsCollection.prefix}:${_name}`;
|
|
197
|
+
if (iconExists(icon2)) {
|
|
198
|
+
return icon2;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
)) || _name;
|
|
202
|
+
}
|
|
130
203
|
});
|
|
131
|
-
function
|
|
132
|
-
let
|
|
133
|
-
if (typeof window
|
|
134
|
-
const { JSDOM
|
|
135
|
-
|
|
204
|
+
function getSvgContent(svg) {
|
|
205
|
+
let dom = null;
|
|
206
|
+
if (typeof window === "undefined") {
|
|
207
|
+
const { JSDOM } = require("jsdom");
|
|
208
|
+
dom = new JSDOM().window;
|
|
136
209
|
}
|
|
137
|
-
|
|
210
|
+
const domParser = dom ? new dom.DOMParser() : new window.DOMParser();
|
|
211
|
+
const svgDomString = domParser.parseFromString(svg, "text/html");
|
|
212
|
+
const svgEl = svgDomString.querySelector("svg");
|
|
213
|
+
return svgEl;
|
|
138
214
|
}
|
|
139
|
-
function
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
215
|
+
function addIconFromSvg(svg) {
|
|
216
|
+
const svgContentEl = getSvgContent(svg);
|
|
217
|
+
const svgContent = (svgContentEl == null ? void 0 : svgContentEl.innerHTML.trim()) || "";
|
|
218
|
+
if (svgContentEl && svgContent) {
|
|
219
|
+
addIcon(`@${provider.value}:${props.prefix}:${props.name}`, {
|
|
220
|
+
body: svgContent,
|
|
221
|
+
// Set height and width from svg content
|
|
222
|
+
height: svgContentEl.viewBox.baseVal.height,
|
|
223
|
+
width: svgContentEl.viewBox.baseVal.width
|
|
224
|
+
});
|
|
225
|
+
}
|
|
147
226
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
227
|
+
if (volver) {
|
|
228
|
+
if (props.src && !iconExists(`@${provider.value}:${props.prefix}:${props.name}`)) {
|
|
229
|
+
show.value = false;
|
|
230
|
+
volver.fetchIcon(props.src).then((svg) => {
|
|
231
|
+
if (svg) {
|
|
232
|
+
addIconFromSvg(svg);
|
|
233
|
+
show.value = true;
|
|
234
|
+
}
|
|
235
|
+
}).catch((e) => {
|
|
236
|
+
throw new Error(`During fetch icon: ${e == null ? void 0 : e.message}`);
|
|
237
|
+
});
|
|
238
|
+
} else if (props.svg) {
|
|
239
|
+
addIconFromSvg(props.svg);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return (_ctx, _cache) => {
|
|
243
|
+
return unref(show) ? (openBlock(), createBlock(unref(Icon), mergeProps({
|
|
244
|
+
key: 0,
|
|
245
|
+
class: unref(bemCssClasses)
|
|
246
|
+
}, {
|
|
247
|
+
inline: _ctx.inline,
|
|
248
|
+
width: _ctx.width,
|
|
249
|
+
height: _ctx.height,
|
|
250
|
+
horizontalFlip: _ctx.horizontalFlip,
|
|
251
|
+
verticalFlip: _ctx.verticalFlip,
|
|
252
|
+
flip: _ctx.flip,
|
|
253
|
+
rotate: _ctx.rotate,
|
|
254
|
+
color: _ctx.color,
|
|
255
|
+
onLoad: _ctx.onLoad,
|
|
256
|
+
icon: unref(icon)
|
|
257
|
+
}), null, 16, ["class"])) : createCommentVNode("", true);
|
|
258
|
+
};
|
|
167
259
|
}
|
|
168
|
-
})
|
|
260
|
+
});
|
|
261
|
+
const LinkProps = {
|
|
169
262
|
/**
|
|
170
263
|
* The router-link/nuxt-link property, if it is defined the button is rendered as a ruouter-link or nuxt-link.
|
|
171
264
|
* @see Documentation of [router-link](https://router.vuejs.org/api/#router-link) and [nuxt-link](https://nuxtjs.org/api/components-nuxt-link/)
|
|
@@ -182,7 +275,7 @@ const pe = {
|
|
|
182
275
|
*/
|
|
183
276
|
target: {
|
|
184
277
|
type: String,
|
|
185
|
-
validator: (
|
|
278
|
+
validator: (value) => Object.values(AnchorTarget).includes(value)
|
|
186
279
|
},
|
|
187
280
|
/**
|
|
188
281
|
* Anchor rel
|
|
@@ -191,7 +284,8 @@ const pe = {
|
|
|
191
284
|
type: String,
|
|
192
285
|
default: "noopener noreferrer"
|
|
193
286
|
}
|
|
194
|
-
}
|
|
287
|
+
};
|
|
288
|
+
const LoadingProps = {
|
|
195
289
|
/**
|
|
196
290
|
* Loading status
|
|
197
291
|
*/
|
|
@@ -203,265 +297,405 @@ const pe = {
|
|
|
203
297
|
type: String,
|
|
204
298
|
default: "Loading..."
|
|
205
299
|
}
|
|
206
|
-
}
|
|
300
|
+
};
|
|
301
|
+
const DisabledProps = {
|
|
207
302
|
/**
|
|
208
303
|
* Whether the form control is disabled
|
|
209
304
|
*/
|
|
210
305
|
disabled: Boolean
|
|
211
|
-
}
|
|
306
|
+
};
|
|
307
|
+
const ActiveProps = {
|
|
212
308
|
/**
|
|
213
309
|
* Whether the item is active
|
|
214
310
|
*/
|
|
215
311
|
active: Boolean
|
|
216
|
-
}
|
|
312
|
+
};
|
|
313
|
+
const PressedProps = {
|
|
217
314
|
/**
|
|
218
315
|
* Whether the item is pressed
|
|
219
316
|
*/
|
|
220
317
|
pressed: Boolean
|
|
221
|
-
}
|
|
318
|
+
};
|
|
319
|
+
const LabelProps = {
|
|
222
320
|
/**
|
|
223
321
|
* The item label
|
|
224
322
|
*/
|
|
225
323
|
label: [String, Number]
|
|
226
|
-
}
|
|
324
|
+
};
|
|
325
|
+
const ModifiersProps = {
|
|
227
326
|
/**
|
|
228
327
|
* Component BEM modifiers
|
|
229
328
|
*/
|
|
230
329
|
modifiers: [String, Array]
|
|
231
330
|
};
|
|
232
|
-
|
|
233
|
-
|
|
331
|
+
({
|
|
332
|
+
/**
|
|
333
|
+
* VvIcon name or props
|
|
334
|
+
* @see VVIcon
|
|
335
|
+
*/
|
|
336
|
+
icon: { type: [String, Object] },
|
|
337
|
+
/**
|
|
338
|
+
* VvIcon position
|
|
339
|
+
*/
|
|
340
|
+
iconPosition: {
|
|
341
|
+
type: String,
|
|
342
|
+
default: Position.before,
|
|
343
|
+
validation: (value) => Object.values(Position).includes(value)
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
const UnselectableProps = {
|
|
234
347
|
/**
|
|
235
348
|
* If true the input will be unselectable
|
|
236
349
|
*/
|
|
237
|
-
unselectable: { type: Boolean, default:
|
|
238
|
-
}
|
|
350
|
+
unselectable: { type: Boolean, default: true }
|
|
351
|
+
};
|
|
352
|
+
const IdProps = {
|
|
239
353
|
/**
|
|
240
354
|
* Global attribute id
|
|
241
355
|
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
|
|
242
356
|
*/
|
|
243
357
|
id: [String, Number]
|
|
244
358
|
};
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
359
|
+
({
|
|
360
|
+
/**
|
|
361
|
+
* Dropdown placement
|
|
362
|
+
*/
|
|
363
|
+
placement: {
|
|
364
|
+
type: String,
|
|
365
|
+
default: Side.bottom,
|
|
366
|
+
validator: (value) => {
|
|
367
|
+
return Object.values(Side).includes(value) || Object.values(Placement).includes(value);
|
|
368
|
+
}
|
|
369
|
+
},
|
|
370
|
+
/**
|
|
371
|
+
* Dropdown show / hide transition name
|
|
372
|
+
*/
|
|
373
|
+
transitionName: {
|
|
374
|
+
type: String
|
|
375
|
+
},
|
|
376
|
+
/**
|
|
377
|
+
* Offset of the dropdown from the trigger
|
|
378
|
+
* @see https://floating-ui.com/docs/offset
|
|
379
|
+
*/
|
|
380
|
+
offset: {
|
|
381
|
+
type: [Number, String, Object],
|
|
382
|
+
default: 0
|
|
383
|
+
},
|
|
384
|
+
/**
|
|
385
|
+
* Move dropdown to the side if there is no space in the default position
|
|
386
|
+
* @see https://floating-ui.com/docs/shift
|
|
387
|
+
*/
|
|
388
|
+
shift: {
|
|
389
|
+
type: [Boolean, Object],
|
|
390
|
+
default: false
|
|
391
|
+
},
|
|
392
|
+
/**
|
|
393
|
+
* Flip dropdown position if there is no space in the default position
|
|
394
|
+
* @see https://floating-ui.com/docs/flip
|
|
395
|
+
*/
|
|
396
|
+
flip: {
|
|
397
|
+
type: [Boolean, Object],
|
|
398
|
+
default: true
|
|
399
|
+
},
|
|
400
|
+
/**
|
|
401
|
+
* Size of the dropdown
|
|
402
|
+
* @see https://floating-ui.com/docs/size
|
|
403
|
+
*/
|
|
404
|
+
size: {
|
|
405
|
+
type: [Boolean, Object],
|
|
406
|
+
default: () => ({ padding: 10 })
|
|
407
|
+
},
|
|
408
|
+
/**
|
|
409
|
+
* Automatically change the position of the dropdown
|
|
410
|
+
* @see https://floating-ui.com/docs/autoPlacement
|
|
411
|
+
*/
|
|
412
|
+
autoPlacement: {
|
|
413
|
+
type: [Boolean, Object],
|
|
414
|
+
default: false
|
|
415
|
+
},
|
|
416
|
+
/**
|
|
417
|
+
* Add arrow to the dropdown
|
|
418
|
+
* @see https://floating-ui.com/docs/arrow
|
|
419
|
+
*/
|
|
420
|
+
arrow: {
|
|
421
|
+
type: Boolean,
|
|
422
|
+
default: false
|
|
423
|
+
},
|
|
424
|
+
/**
|
|
425
|
+
* Close dropdown on click outside
|
|
426
|
+
*/
|
|
427
|
+
autoClose: {
|
|
428
|
+
type: Boolean,
|
|
429
|
+
default: true
|
|
430
|
+
},
|
|
431
|
+
/**
|
|
432
|
+
* Autofocus first item on dropdown open
|
|
433
|
+
*/
|
|
434
|
+
autofocusFirst: {
|
|
435
|
+
type: Boolean,
|
|
436
|
+
default: true
|
|
437
|
+
},
|
|
438
|
+
/**
|
|
439
|
+
* Set dropdown width to the same as the trigger
|
|
440
|
+
*/
|
|
441
|
+
triggerWidth: {
|
|
442
|
+
type: Boolean
|
|
443
|
+
}
|
|
444
|
+
});
|
|
445
|
+
const ActionProps = {
|
|
446
|
+
...DisabledProps,
|
|
447
|
+
...LabelProps,
|
|
448
|
+
...PressedProps,
|
|
449
|
+
...ActiveProps,
|
|
450
|
+
...LinkProps,
|
|
252
451
|
/**
|
|
253
452
|
* Button type
|
|
254
453
|
*/
|
|
255
454
|
type: {
|
|
256
455
|
type: String,
|
|
257
|
-
default:
|
|
258
|
-
validator: (
|
|
456
|
+
default: ButtonType.button,
|
|
457
|
+
validator: (value) => Object.values(ButtonType).includes(value)
|
|
259
458
|
}
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
|
|
459
|
+
};
|
|
460
|
+
const VvActionEvents = ["click", "mouseover", "mouseleave"];
|
|
461
|
+
const VvActionProps = ActionProps;
|
|
462
|
+
function useInjectedDropdownTrigger() {
|
|
463
|
+
return inject(INJECTION_KEY_DROPDOWN_TRIGGER, {});
|
|
263
464
|
}
|
|
264
|
-
function
|
|
265
|
-
return
|
|
465
|
+
function useInjectedDropdownAction() {
|
|
466
|
+
return inject(INJECTION_KEY_DROPDOWN_ACTION, {});
|
|
266
467
|
}
|
|
267
|
-
const
|
|
468
|
+
const __default__$1 = {
|
|
268
469
|
name: "VvAction"
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
470
|
+
};
|
|
471
|
+
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
472
|
+
...__default__$1,
|
|
473
|
+
props: VvActionProps,
|
|
474
|
+
emits: VvActionEvents,
|
|
475
|
+
setup(__props, { expose, emit }) {
|
|
476
|
+
const props = __props;
|
|
477
|
+
const volver = useVolver();
|
|
478
|
+
const element = ref(null);
|
|
479
|
+
expose({ $el: element });
|
|
276
480
|
const {
|
|
277
|
-
reference:
|
|
278
|
-
bus:
|
|
279
|
-
aria:
|
|
280
|
-
expanded:
|
|
281
|
-
} =
|
|
282
|
-
|
|
283
|
-
() =>
|
|
284
|
-
(
|
|
285
|
-
|
|
481
|
+
reference: dropdownTriggerReference,
|
|
482
|
+
bus: dropdownEventBus,
|
|
483
|
+
aria: dropdownAria,
|
|
484
|
+
expanded: dropdownExpanded
|
|
485
|
+
} = useInjectedDropdownTrigger();
|
|
486
|
+
watch(
|
|
487
|
+
() => element.value,
|
|
488
|
+
(newValue) => {
|
|
489
|
+
if (dropdownTriggerReference) {
|
|
490
|
+
dropdownTriggerReference.value = newValue;
|
|
491
|
+
}
|
|
286
492
|
}
|
|
287
493
|
);
|
|
288
|
-
const
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
case
|
|
295
|
-
return
|
|
494
|
+
const pressed = computed(() => {
|
|
495
|
+
return props.pressed || (dropdownExpanded == null ? void 0 : dropdownExpanded.value);
|
|
496
|
+
});
|
|
497
|
+
const { role } = useInjectedDropdownAction();
|
|
498
|
+
const hasTag = computed(() => {
|
|
499
|
+
switch (true) {
|
|
500
|
+
case props.disabled:
|
|
501
|
+
return ActionTag.button;
|
|
502
|
+
case props.to !== void 0:
|
|
503
|
+
return (volver == null ? void 0 : volver.nuxt) ? ActionTag.nuxtLink : ActionTag.routerLink;
|
|
504
|
+
case props.href !== void 0:
|
|
505
|
+
return ActionTag.a;
|
|
296
506
|
default:
|
|
297
|
-
return
|
|
507
|
+
return ActionTag.button;
|
|
298
508
|
}
|
|
299
|
-
})
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
509
|
+
});
|
|
510
|
+
const hasProps = computed(() => {
|
|
511
|
+
const toReturn = {
|
|
512
|
+
...dropdownAria == null ? void 0 : dropdownAria.value,
|
|
513
|
+
"aria-pressed": pressed.value ? true : void 0,
|
|
514
|
+
role
|
|
304
515
|
};
|
|
305
|
-
switch (
|
|
306
|
-
case
|
|
516
|
+
switch (hasTag.value) {
|
|
517
|
+
case ActionTag.a:
|
|
307
518
|
return {
|
|
308
|
-
...
|
|
309
|
-
href:
|
|
310
|
-
target:
|
|
311
|
-
rel:
|
|
519
|
+
...toReturn,
|
|
520
|
+
href: props.href,
|
|
521
|
+
target: props.target,
|
|
522
|
+
rel: props.rel
|
|
312
523
|
};
|
|
313
|
-
case
|
|
314
|
-
case
|
|
524
|
+
case ActionTag.routerLink:
|
|
525
|
+
case ActionTag.nuxtLink:
|
|
315
526
|
return {
|
|
316
|
-
...
|
|
317
|
-
to:
|
|
318
|
-
target:
|
|
527
|
+
...toReturn,
|
|
528
|
+
to: props.to,
|
|
529
|
+
target: props.target
|
|
319
530
|
};
|
|
320
531
|
default:
|
|
321
532
|
return {
|
|
322
|
-
...
|
|
323
|
-
type:
|
|
324
|
-
disabled:
|
|
533
|
+
...toReturn,
|
|
534
|
+
type: props.type,
|
|
535
|
+
disabled: props.disabled
|
|
325
536
|
};
|
|
326
537
|
}
|
|
327
|
-
})
|
|
328
|
-
|
|
329
|
-
|
|
538
|
+
});
|
|
539
|
+
const onClick = (e) => {
|
|
540
|
+
if (props.disabled) {
|
|
541
|
+
e.preventDefault();
|
|
330
542
|
return;
|
|
331
543
|
}
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
544
|
+
dropdownEventBus == null ? void 0 : dropdownEventBus.emit("click", e);
|
|
545
|
+
emit("click", e);
|
|
546
|
+
};
|
|
547
|
+
const onMouseover = (e) => {
|
|
548
|
+
dropdownEventBus == null ? void 0 : dropdownEventBus.emit("mouseover", e);
|
|
549
|
+
emit("mouseover", e);
|
|
550
|
+
};
|
|
551
|
+
const onMouseleave = (e) => {
|
|
552
|
+
dropdownEventBus == null ? void 0 : dropdownEventBus.emit("mouseleave", e);
|
|
553
|
+
emit("mouseleave", e);
|
|
554
|
+
};
|
|
555
|
+
return (_ctx, _cache) => {
|
|
556
|
+
return openBlock(), createBlock(resolveDynamicComponent(unref(hasTag)), mergeProps(unref(hasProps), {
|
|
557
|
+
ref_key: "element",
|
|
558
|
+
ref: element,
|
|
559
|
+
class: {
|
|
560
|
+
active: _ctx.active,
|
|
561
|
+
pressed: unref(pressed),
|
|
562
|
+
disabled: _ctx.disabled
|
|
563
|
+
},
|
|
564
|
+
onClickPassive: onClick,
|
|
565
|
+
onMouseoverPassive: onMouseover,
|
|
566
|
+
onMouseleavePassive: onMouseleave
|
|
567
|
+
}), {
|
|
568
|
+
default: withCtx(() => [
|
|
569
|
+
renderSlot(_ctx.$slots, "default", {}, () => [
|
|
570
|
+
createTextVNode(toDisplayString(_ctx.label), 1)
|
|
571
|
+
])
|
|
572
|
+
]),
|
|
573
|
+
_: 3
|
|
574
|
+
}, 16, ["class"]);
|
|
337
575
|
};
|
|
338
|
-
return (u, P) => (k(), j(te(p(m)), w(p(b), {
|
|
339
|
-
ref_key: "element",
|
|
340
|
-
ref: i,
|
|
341
|
-
class: {
|
|
342
|
-
active: u.active,
|
|
343
|
-
pressed: p(n),
|
|
344
|
-
disabled: u.disabled
|
|
345
|
-
},
|
|
346
|
-
onClickPassive: _,
|
|
347
|
-
onMouseoverPassive: O,
|
|
348
|
-
onMouseleavePassive: y
|
|
349
|
-
}), {
|
|
350
|
-
default: K(() => [
|
|
351
|
-
$(u.$slots, "default", {}, () => [
|
|
352
|
-
U(N(u.label), 1)
|
|
353
|
-
])
|
|
354
|
-
]),
|
|
355
|
-
_: 3
|
|
356
|
-
}, 16, ["class"]));
|
|
357
576
|
}
|
|
358
577
|
});
|
|
359
|
-
function
|
|
360
|
-
|
|
578
|
+
function equals(obj1, obj2, field) {
|
|
579
|
+
if (field)
|
|
580
|
+
return resolveFieldData(obj1, field) === resolveFieldData(obj2, field);
|
|
581
|
+
else
|
|
582
|
+
return deepEquals(obj1, obj2);
|
|
361
583
|
}
|
|
362
|
-
function
|
|
363
|
-
if (
|
|
364
|
-
return
|
|
365
|
-
if (
|
|
366
|
-
const
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
584
|
+
function deepEquals(a, b) {
|
|
585
|
+
if (a === b)
|
|
586
|
+
return true;
|
|
587
|
+
if (a && b && typeof a == "object" && typeof b == "object") {
|
|
588
|
+
const arrA = Array.isArray(a);
|
|
589
|
+
const arrB = Array.isArray(b);
|
|
590
|
+
let i, length, key;
|
|
591
|
+
if (arrA && arrB) {
|
|
592
|
+
length = a.length;
|
|
593
|
+
if (length != b.length)
|
|
594
|
+
return false;
|
|
595
|
+
for (i = length; i-- !== 0; )
|
|
596
|
+
if (!deepEquals(a[i], b[i]))
|
|
597
|
+
return false;
|
|
598
|
+
return true;
|
|
599
|
+
}
|
|
600
|
+
if (arrA != arrB)
|
|
601
|
+
return false;
|
|
602
|
+
const dateA = a instanceof Date, dateB = b instanceof Date;
|
|
603
|
+
if (dateA != dateB)
|
|
604
|
+
return false;
|
|
605
|
+
if (dateA && dateB)
|
|
606
|
+
return a.getTime() == b.getTime();
|
|
607
|
+
const regexpA = a instanceof RegExp, regexpB = b instanceof RegExp;
|
|
608
|
+
if (regexpA != regexpB)
|
|
609
|
+
return false;
|
|
610
|
+
if (regexpA && regexpB)
|
|
611
|
+
return a.toString() == b.toString();
|
|
612
|
+
const keys = Object.keys(a);
|
|
613
|
+
length = keys.length;
|
|
614
|
+
if (length !== Object.keys(b).length)
|
|
615
|
+
return false;
|
|
616
|
+
for (i = length; i-- !== 0; )
|
|
617
|
+
if (!Object.prototype.hasOwnProperty.call(b, keys[i]))
|
|
618
|
+
return false;
|
|
619
|
+
for (i = length; i-- !== 0; ) {
|
|
620
|
+
key = keys[i];
|
|
621
|
+
if (!deepEquals(a[key], b[key]))
|
|
622
|
+
return false;
|
|
375
623
|
}
|
|
376
|
-
|
|
377
|
-
return !1;
|
|
378
|
-
const f = e instanceof Date, d = t instanceof Date;
|
|
379
|
-
if (f != d)
|
|
380
|
-
return !1;
|
|
381
|
-
if (f && d)
|
|
382
|
-
return e.getTime() == t.getTime();
|
|
383
|
-
const a = e instanceof RegExp, n = t instanceof RegExp;
|
|
384
|
-
if (a != n)
|
|
385
|
-
return !1;
|
|
386
|
-
if (a && n)
|
|
387
|
-
return e.toString() == t.toString();
|
|
388
|
-
const l = Object.keys(e);
|
|
389
|
-
if (i = l.length, i !== Object.keys(t).length)
|
|
390
|
-
return !1;
|
|
391
|
-
for (s = i; s-- !== 0; )
|
|
392
|
-
if (!Object.prototype.hasOwnProperty.call(t, l[s]))
|
|
393
|
-
return !1;
|
|
394
|
-
for (s = i; s-- !== 0; )
|
|
395
|
-
if (v = l[s], !F(e[v], t[v]))
|
|
396
|
-
return !1;
|
|
397
|
-
return !0;
|
|
624
|
+
return true;
|
|
398
625
|
}
|
|
399
|
-
return
|
|
626
|
+
return a !== a && b !== b;
|
|
400
627
|
}
|
|
401
|
-
function
|
|
402
|
-
if (
|
|
403
|
-
if (
|
|
404
|
-
return
|
|
405
|
-
{
|
|
406
|
-
const
|
|
407
|
-
let
|
|
408
|
-
for (let
|
|
409
|
-
if (
|
|
628
|
+
function resolveFieldData(data, field) {
|
|
629
|
+
if (data && Object.keys(data).length && field) {
|
|
630
|
+
if (field.indexOf(".") === -1) {
|
|
631
|
+
return data[field];
|
|
632
|
+
} else {
|
|
633
|
+
const fields = field.split(".");
|
|
634
|
+
let value = data;
|
|
635
|
+
for (let i = 0, len = fields.length; i < len; ++i) {
|
|
636
|
+
if (data == null) {
|
|
410
637
|
return null;
|
|
411
|
-
|
|
638
|
+
}
|
|
639
|
+
value = value[fields[i]];
|
|
412
640
|
}
|
|
413
|
-
return
|
|
641
|
+
return value;
|
|
414
642
|
}
|
|
415
|
-
} else
|
|
643
|
+
} else {
|
|
416
644
|
return null;
|
|
645
|
+
}
|
|
417
646
|
}
|
|
418
|
-
function
|
|
419
|
-
if (
|
|
420
|
-
for (const
|
|
421
|
-
if (
|
|
422
|
-
return
|
|
647
|
+
function contains(value, list) {
|
|
648
|
+
if (value != null && list && list.length) {
|
|
649
|
+
for (const val of list) {
|
|
650
|
+
if (equals(value, val)) {
|
|
651
|
+
return true;
|
|
652
|
+
}
|
|
653
|
+
}
|
|
423
654
|
}
|
|
424
|
-
return
|
|
655
|
+
return false;
|
|
425
656
|
}
|
|
426
|
-
function
|
|
427
|
-
return ((
|
|
657
|
+
function isEmpty(value) {
|
|
658
|
+
return ((value2) => value2 === null || value2 === void 0 || value2 === "" || Array.isArray(value2) && value2.length === 0 || !(value2 instanceof Date) && typeof value2 === "object" && Object.keys(value2).length === 0)(unref(value));
|
|
428
659
|
}
|
|
429
|
-
function
|
|
430
|
-
const
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
660
|
+
function useInjectedGroupState(groupKey) {
|
|
661
|
+
const group = inject(groupKey, void 0);
|
|
662
|
+
const isInGroup = computed(() => !isEmpty(group));
|
|
663
|
+
function getGroupOrLocalRef(propName, props, emit) {
|
|
664
|
+
if (group == null ? void 0 : group.value) {
|
|
665
|
+
const groupPropValue = unref(group.value)[propName];
|
|
666
|
+
return computed({
|
|
435
667
|
get() {
|
|
436
|
-
return
|
|
668
|
+
return groupPropValue == null ? void 0 : groupPropValue.value;
|
|
437
669
|
},
|
|
438
|
-
set(
|
|
439
|
-
|
|
670
|
+
set(value) {
|
|
671
|
+
groupPropValue.value = value;
|
|
440
672
|
}
|
|
441
673
|
});
|
|
442
674
|
}
|
|
443
|
-
const
|
|
444
|
-
return
|
|
675
|
+
const propRef = toRef(props, propName);
|
|
676
|
+
return computed({
|
|
445
677
|
get() {
|
|
446
|
-
return
|
|
678
|
+
return propRef.value;
|
|
447
679
|
},
|
|
448
|
-
set(
|
|
449
|
-
|
|
680
|
+
set(value) {
|
|
681
|
+
if (emit)
|
|
682
|
+
emit(`update:${propName}`, value);
|
|
450
683
|
}
|
|
451
684
|
});
|
|
452
685
|
}
|
|
453
686
|
return {
|
|
454
|
-
group
|
|
455
|
-
isInGroup
|
|
456
|
-
getGroupOrLocalRef
|
|
687
|
+
group,
|
|
688
|
+
isInGroup,
|
|
689
|
+
getGroupOrLocalRef
|
|
457
690
|
};
|
|
458
691
|
}
|
|
459
|
-
const
|
|
460
|
-
|
|
461
|
-
...
|
|
462
|
-
...
|
|
463
|
-
...
|
|
464
|
-
...
|
|
692
|
+
const VvButtonEvents = ["update:modelValue"];
|
|
693
|
+
const VvButtonProps = {
|
|
694
|
+
...ActionProps,
|
|
695
|
+
...IdProps,
|
|
696
|
+
...ModifiersProps,
|
|
697
|
+
...UnselectableProps,
|
|
698
|
+
...LoadingProps,
|
|
465
699
|
/**
|
|
466
700
|
* Button icon
|
|
467
701
|
*/
|
|
@@ -471,8 +705,8 @@ const De = ["update:modelValue"], Ee = {
|
|
|
471
705
|
*/
|
|
472
706
|
iconPosition: {
|
|
473
707
|
type: String,
|
|
474
|
-
default:
|
|
475
|
-
validator: (
|
|
708
|
+
default: Side.left,
|
|
709
|
+
validator: (value) => Object.values(Side).includes(value)
|
|
476
710
|
},
|
|
477
711
|
/**
|
|
478
712
|
* Loading icon
|
|
@@ -480,148 +714,190 @@ const De = ["update:modelValue"], Ee = {
|
|
|
480
714
|
loadingIcon: { type: String, default: "eos-icons:bubble-loading" },
|
|
481
715
|
toggle: {
|
|
482
716
|
type: Boolean,
|
|
483
|
-
default:
|
|
717
|
+
default: false
|
|
484
718
|
},
|
|
485
719
|
modelValue: String
|
|
486
720
|
};
|
|
487
|
-
function
|
|
488
|
-
|
|
489
|
-
const {
|
|
490
|
-
id
|
|
491
|
-
iconPosition
|
|
492
|
-
icon
|
|
493
|
-
label
|
|
494
|
-
pressed
|
|
495
|
-
modifiers:
|
|
496
|
-
} =
|
|
721
|
+
function useGroupProps(props, emit) {
|
|
722
|
+
const { group, isInGroup, getGroupOrLocalRef } = useInjectedGroupState(INJECTION_KEY_BUTTON_GROUP);
|
|
723
|
+
const {
|
|
724
|
+
id,
|
|
725
|
+
iconPosition,
|
|
726
|
+
icon,
|
|
727
|
+
label,
|
|
728
|
+
pressed,
|
|
729
|
+
modifiers: localModifiers
|
|
730
|
+
} = toRefs(props);
|
|
731
|
+
const modelValue = getGroupOrLocalRef("modelValue", props, emit);
|
|
732
|
+
const toggle = getGroupOrLocalRef("toggle", props);
|
|
733
|
+
const unselectable = getGroupOrLocalRef(
|
|
497
734
|
"unselectable",
|
|
498
|
-
|
|
499
|
-
)
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
735
|
+
props
|
|
736
|
+
);
|
|
737
|
+
const multiple = computed(() => (group == null ? void 0 : group.value.multiple.value) ?? false);
|
|
738
|
+
const modifiers = computed(() => {
|
|
739
|
+
var _a;
|
|
740
|
+
const localValue = (localModifiers == null ? void 0 : localModifiers.value) ? Array.isArray(localModifiers.value) ? localModifiers.value : localModifiers.value.split(" ") : [];
|
|
741
|
+
const groupValue = ((_a = group == null ? void 0 : group.value.itemModifiers) == null ? void 0 : _a.value) ? Array.isArray(group.value.itemModifiers.value) ? group.value.itemModifiers.value : group.value.itemModifiers.value.split(" ") : [];
|
|
742
|
+
return [...localValue, ...groupValue];
|
|
503
743
|
});
|
|
744
|
+
const disabled = computed(
|
|
745
|
+
() => {
|
|
746
|
+
var _a;
|
|
747
|
+
return Boolean(props.disabled || ((_a = group == null ? void 0 : group.value) == null ? void 0 : _a.disabled.value));
|
|
748
|
+
}
|
|
749
|
+
);
|
|
504
750
|
return {
|
|
505
751
|
// group props
|
|
506
|
-
group
|
|
507
|
-
isInGroup
|
|
508
|
-
modelValue
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
752
|
+
group,
|
|
753
|
+
isInGroup,
|
|
754
|
+
modelValue,
|
|
755
|
+
toggle,
|
|
756
|
+
unselectable,
|
|
757
|
+
multiple,
|
|
758
|
+
modifiers,
|
|
759
|
+
disabled,
|
|
513
760
|
// local props
|
|
514
|
-
id
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
label: d
|
|
761
|
+
id,
|
|
762
|
+
pressed,
|
|
763
|
+
iconPosition,
|
|
764
|
+
icon,
|
|
765
|
+
label
|
|
520
766
|
};
|
|
521
767
|
}
|
|
522
|
-
const
|
|
768
|
+
const useUniqueId = (id) => computed(() => String((id == null ? void 0 : id.value) || nanoid()));
|
|
769
|
+
const _hoisted_1 = {
|
|
523
770
|
key: 1,
|
|
524
771
|
class: "vv-button__label"
|
|
525
|
-
}
|
|
772
|
+
};
|
|
773
|
+
const _hoisted_2 = {
|
|
526
774
|
key: 1,
|
|
527
775
|
class: "vv-button__label"
|
|
528
|
-
}
|
|
776
|
+
};
|
|
777
|
+
const __default__ = {
|
|
529
778
|
name: "VvButton"
|
|
530
|
-
}
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
779
|
+
};
|
|
780
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
781
|
+
...__default__,
|
|
782
|
+
props: VvButtonProps,
|
|
783
|
+
emits: VvButtonEvents,
|
|
784
|
+
setup(__props, { expose, emit }) {
|
|
785
|
+
const props = __props;
|
|
786
|
+
const attrs = useAttrs();
|
|
787
|
+
const slots = useSlots();
|
|
788
|
+
const {
|
|
789
|
+
id,
|
|
790
|
+
modifiers,
|
|
791
|
+
iconPosition,
|
|
792
|
+
icon,
|
|
793
|
+
label,
|
|
794
|
+
modelValue,
|
|
795
|
+
disabled,
|
|
796
|
+
toggle,
|
|
797
|
+
unselectable
|
|
798
|
+
} = useGroupProps(props, emit);
|
|
799
|
+
const hasId = useUniqueId(id);
|
|
800
|
+
const name = computed(() => (attrs == null ? void 0 : attrs.name) || hasId.value);
|
|
801
|
+
const element = ref(null);
|
|
802
|
+
const $el = computed(() => {
|
|
803
|
+
var _a;
|
|
804
|
+
return (_a = element.value) == null ? void 0 : _a.$el;
|
|
548
805
|
});
|
|
549
|
-
|
|
550
|
-
const
|
|
806
|
+
expose({ $el });
|
|
807
|
+
const pressed = computed(() => {
|
|
808
|
+
if (!toggle.value) {
|
|
809
|
+
return props.pressed;
|
|
810
|
+
}
|
|
811
|
+
if (Array.isArray(modelValue.value)) {
|
|
812
|
+
return contains(name.value, modelValue.value);
|
|
813
|
+
}
|
|
814
|
+
return equals(name.value, modelValue.value);
|
|
815
|
+
});
|
|
816
|
+
const bemCssClasses = useModifiers(
|
|
551
817
|
"vv-button",
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
reverse: [
|
|
555
|
-
|
|
818
|
+
modifiers,
|
|
819
|
+
computed(() => ({
|
|
820
|
+
reverse: [Side.right, Side.bottom].includes(
|
|
821
|
+
iconPosition.value
|
|
822
|
+
),
|
|
823
|
+
column: [Side.top, Side.bottom].includes(
|
|
824
|
+
iconPosition.value
|
|
825
|
+
),
|
|
556
826
|
"icon-only": Boolean(
|
|
557
|
-
(
|
|
827
|
+
(icon == null ? void 0 : icon.value) && !(label == null ? void 0 : label.value) && !slots.default
|
|
558
828
|
)
|
|
559
829
|
}))
|
|
560
|
-
)
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
)
|
|
830
|
+
);
|
|
831
|
+
const hasIconProps = computed(
|
|
832
|
+
() => typeof (icon == null ? void 0 : icon.value) === "string" ? { name: icon == null ? void 0 : icon.value } : icon == null ? void 0 : icon.value
|
|
833
|
+
);
|
|
834
|
+
const onClick = () => {
|
|
835
|
+
if (toggle.value) {
|
|
836
|
+
if (Array.isArray(modelValue.value)) {
|
|
837
|
+
if (contains(name.value, modelValue.value)) {
|
|
838
|
+
if (unselectable.value) {
|
|
839
|
+
modelValue.value = modelValue.value.filter(
|
|
840
|
+
(n) => n !== name.value
|
|
841
|
+
);
|
|
842
|
+
}
|
|
569
843
|
return;
|
|
570
844
|
}
|
|
571
|
-
|
|
845
|
+
modelValue.value.push(name.value);
|
|
572
846
|
return;
|
|
573
847
|
}
|
|
574
|
-
if (
|
|
575
|
-
|
|
848
|
+
if (equals(name.value, modelValue.value) && unselectable.value) {
|
|
849
|
+
modelValue.value = void 0;
|
|
576
850
|
return;
|
|
577
851
|
}
|
|
578
|
-
|
|
852
|
+
modelValue.value = name.value;
|
|
579
853
|
}
|
|
580
854
|
};
|
|
581
|
-
return (
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
855
|
+
return (_ctx, _cache) => {
|
|
856
|
+
return openBlock(), createBlock(_sfc_main$1, mergeProps({
|
|
857
|
+
disabled: unref(disabled),
|
|
858
|
+
pressed: unref(pressed),
|
|
859
|
+
active: _ctx.active,
|
|
860
|
+
type: _ctx.type,
|
|
861
|
+
to: _ctx.to,
|
|
862
|
+
href: _ctx.href,
|
|
863
|
+
target: _ctx.target,
|
|
864
|
+
rel: _ctx.rel
|
|
865
|
+
}, {
|
|
866
|
+
id: unref(hasId),
|
|
867
|
+
ref_key: "element",
|
|
868
|
+
ref: element,
|
|
869
|
+
class: unref(bemCssClasses),
|
|
870
|
+
onClick
|
|
871
|
+
}), {
|
|
872
|
+
default: withCtx(() => [
|
|
873
|
+
renderSlot(_ctx.$slots, "default", {}, () => [
|
|
874
|
+
_ctx.loading ? renderSlot(_ctx.$slots, "loading", { key: 0 }, () => [
|
|
875
|
+
_ctx.loadingIcon ? (openBlock(), createBlock(_sfc_main$2, {
|
|
876
|
+
key: 0,
|
|
877
|
+
class: "vv-button__loading-icon",
|
|
878
|
+
name: _ctx.loadingIcon
|
|
879
|
+
}, null, 8, ["name"])) : createCommentVNode("", true),
|
|
880
|
+
_ctx.loadingLabel ? (openBlock(), createElementBlock("span", _hoisted_1, toDisplayString(_ctx.loadingLabel), 1)) : createCommentVNode("", true)
|
|
881
|
+
]) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
882
|
+
renderSlot(_ctx.$slots, "before"),
|
|
883
|
+
unref(icon) ? (openBlock(), createBlock(_sfc_main$2, mergeProps({
|
|
884
|
+
key: 0,
|
|
885
|
+
class: "vv-button__icon"
|
|
886
|
+
}, unref(hasIconProps)), null, 16)) : createCommentVNode("", true),
|
|
887
|
+
unref(label) ? (openBlock(), createElementBlock("span", _hoisted_2, [
|
|
888
|
+
renderSlot(_ctx.$slots, "label", {}, () => [
|
|
889
|
+
createTextVNode(toDisplayString(unref(label)), 1)
|
|
890
|
+
])
|
|
891
|
+
])) : createCommentVNode("", true),
|
|
892
|
+
renderSlot(_ctx.$slots, "after")
|
|
893
|
+
], 64))
|
|
894
|
+
])
|
|
895
|
+
]),
|
|
896
|
+
_: 3
|
|
897
|
+
}, 16, ["id", "class"]);
|
|
898
|
+
};
|
|
623
899
|
}
|
|
624
900
|
});
|
|
625
901
|
export {
|
|
626
|
-
|
|
902
|
+
_sfc_main as default
|
|
627
903
|
};
|