@volverjs/ui-vue 0.0.4 → 0.0.5-beta.2
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 +276 -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 +213 -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 +247 -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 +646 -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 +261 -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 +562 -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 +661 -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 +1546 -983
- package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
- package/dist/components/VvCombobox/VvCombobox.vue.d.ts +138 -51
- package/dist/components/VvCombobox/index.d.ts +41 -10
- package/dist/components/VvDialog/VvDialog.es.js +387 -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 +452 -244
- package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
- package/dist/components/VvDropdown/VvDropdown.vue.d.ts +130 -42
- 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 +40 -11
- package/dist/components/VvDropdownAction/VvDropdownAction.es.js +373 -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 +285 -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 +986 -462
- package/dist/components/VvInputText/VvInputText.umd.js +1 -1
- package/dist/components/VvInputText/VvInputText.vue.d.ts +100 -20
- package/dist/components/VvInputText/VvInputTextActions.d.ts +1 -1
- package/dist/components/VvInputText/index.d.ts +66 -13
- package/dist/components/VvProgress/VvProgress.es.js +216 -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 +499 -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 +598 -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 +631 -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 +676 -355
- package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
- package/dist/components/VvTextarea/VvTextarea.vue.d.ts +20 -20
- package/dist/components/VvTextarea/index.d.ts +4 -4
- package/dist/components/VvTooltip/VvTooltip.es.js +215 -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 +3522 -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.d.ts +1 -0
- package/dist/directives/index.es.js +264 -55
- package/dist/directives/index.umd.js +1 -1
- package/dist/directives/v-contextmenu.d.ts +3 -0
- package/dist/directives/v-contextmenu.es.js +42 -0
- package/dist/directives/v-contextmenu.umd.js +1 -0
- package/dist/directives/v-tooltip.es.js +222 -53
- package/dist/directives/v-tooltip.umd.js +1 -1
- package/dist/icons.d.ts +3 -1
- package/dist/icons.es.js +40 -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 +50 -18
- 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/Combobox/Combobox.settings.d.ts +12 -0
- package/dist/stories/Dropdown/Dropdown.settings.d.ts +12 -0
- package/dist/stories/InputText/InputText.settings.d.ts +53 -0
- package/dist/stories/argTypes.d.ts +13 -1
- package/package.json +126 -40
- 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 +44 -26
- 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 +7 -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 +130 -37
- 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 +6 -6
- 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 +3 -1
- package/src/directives/v-contextmenu.ts +40 -0
- package/src/directives/v-tooltip.ts +2 -2
- package/src/icons.ts +1 -1
- package/src/index.ts +0 -2
- package/src/props/index.ts +20 -10
- 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/Dropdown/DropdownContextmenuDirective.stories.mdx +41 -0
- 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/Tooltip/TooltipDirective.stories.mdx +1 -1
- package/src/stories/argTypes.ts +12 -2
- package/src/types/group.d.ts +5 -0
|
@@ -1,112 +1,184 @@
|
|
|
1
|
-
import { unref
|
|
2
|
-
import { toReactive
|
|
3
|
-
import { nanoid
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { unref, toRefs, computed, h, inject, toRef, defineComponent, useSlots, ref, openBlock, createElementBlock, normalizeClass, withDirectives, createElementVNode, isRef, vModelRadio, renderSlot, createTextVNode, toDisplayString, createVNode, provide, createCommentVNode, Fragment, renderList, createBlock, mergeProps } from "vue";
|
|
2
|
+
import { toReactive, useVModel } from "@vueuse/core";
|
|
3
|
+
import { nanoid } from "nanoid";
|
|
4
|
+
var Side = /* @__PURE__ */ ((Side2) => {
|
|
5
|
+
Side2["left"] = "left";
|
|
6
|
+
Side2["right"] = "right";
|
|
7
|
+
Side2["top"] = "top";
|
|
8
|
+
Side2["bottom"] = "bottom";
|
|
9
|
+
return Side2;
|
|
10
|
+
})(Side || {});
|
|
11
|
+
var Placement = /* @__PURE__ */ ((Placement2) => {
|
|
12
|
+
Placement2["topStart"] = "top-start";
|
|
13
|
+
Placement2["topEnd"] = "top-end";
|
|
14
|
+
Placement2["bottomStart"] = "bottom-start";
|
|
15
|
+
Placement2["bottomEnd"] = "bottom-end";
|
|
16
|
+
Placement2["leftStart"] = "left-start";
|
|
17
|
+
Placement2["leftEnd"] = "left-end";
|
|
18
|
+
Placement2["rightStart"] = "right-start";
|
|
19
|
+
Placement2["rightEnd"] = "right-end";
|
|
20
|
+
return Placement2;
|
|
21
|
+
})(Placement || {});
|
|
22
|
+
var Position = /* @__PURE__ */ ((Position2) => {
|
|
23
|
+
Position2["before"] = "before";
|
|
24
|
+
Position2["after"] = "after";
|
|
25
|
+
return Position2;
|
|
26
|
+
})(Position || {});
|
|
27
|
+
var ButtonType = /* @__PURE__ */ ((ButtonType2) => {
|
|
28
|
+
ButtonType2["button"] = "button";
|
|
29
|
+
ButtonType2["submit"] = "submit";
|
|
30
|
+
ButtonType2["reset"] = "reset";
|
|
31
|
+
return ButtonType2;
|
|
32
|
+
})(ButtonType || {});
|
|
33
|
+
var AnchorTarget = /* @__PURE__ */ ((AnchorTarget2) => {
|
|
34
|
+
AnchorTarget2["_blank"] = "_blank";
|
|
35
|
+
AnchorTarget2["_self"] = "_self";
|
|
36
|
+
AnchorTarget2["_parent"] = "_parent";
|
|
37
|
+
AnchorTarget2["_top"] = "_top";
|
|
38
|
+
return AnchorTarget2;
|
|
39
|
+
})(AnchorTarget || {});
|
|
40
|
+
const INJECTION_KEY_RADIO_GROUP = Symbol.for("radioGroup");
|
|
41
|
+
function equals(obj1, obj2, field) {
|
|
42
|
+
if (field)
|
|
43
|
+
return resolveFieldData(obj1, field) === resolveFieldData(obj2, field);
|
|
44
|
+
else
|
|
45
|
+
return deepEquals(obj1, obj2);
|
|
8
46
|
}
|
|
9
|
-
function
|
|
10
|
-
if (
|
|
11
|
-
return
|
|
12
|
-
if (
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
47
|
+
function deepEquals(a, b) {
|
|
48
|
+
if (a === b)
|
|
49
|
+
return true;
|
|
50
|
+
if (a && b && typeof a == "object" && typeof b == "object") {
|
|
51
|
+
const arrA = Array.isArray(a);
|
|
52
|
+
const arrB = Array.isArray(b);
|
|
53
|
+
let i, length, key;
|
|
54
|
+
if (arrA && arrB) {
|
|
55
|
+
length = a.length;
|
|
56
|
+
if (length != b.length)
|
|
57
|
+
return false;
|
|
58
|
+
for (i = length; i-- !== 0; )
|
|
59
|
+
if (!deepEquals(a[i], b[i]))
|
|
60
|
+
return false;
|
|
61
|
+
return true;
|
|
22
62
|
}
|
|
23
|
-
if (
|
|
24
|
-
return
|
|
25
|
-
const
|
|
26
|
-
if (
|
|
27
|
-
return
|
|
28
|
-
if (
|
|
29
|
-
return
|
|
30
|
-
const
|
|
31
|
-
if (
|
|
32
|
-
return
|
|
33
|
-
if (
|
|
34
|
-
return
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
63
|
+
if (arrA != arrB)
|
|
64
|
+
return false;
|
|
65
|
+
const dateA = a instanceof Date, dateB = b instanceof Date;
|
|
66
|
+
if (dateA != dateB)
|
|
67
|
+
return false;
|
|
68
|
+
if (dateA && dateB)
|
|
69
|
+
return a.getTime() == b.getTime();
|
|
70
|
+
const regexpA = a instanceof RegExp, regexpB = b instanceof RegExp;
|
|
71
|
+
if (regexpA != regexpB)
|
|
72
|
+
return false;
|
|
73
|
+
if (regexpA && regexpB)
|
|
74
|
+
return a.toString() == b.toString();
|
|
75
|
+
const keys = Object.keys(a);
|
|
76
|
+
length = keys.length;
|
|
77
|
+
if (length !== Object.keys(b).length)
|
|
78
|
+
return false;
|
|
79
|
+
for (i = length; i-- !== 0; )
|
|
80
|
+
if (!Object.prototype.hasOwnProperty.call(b, keys[i]))
|
|
81
|
+
return false;
|
|
82
|
+
for (i = length; i-- !== 0; ) {
|
|
83
|
+
key = keys[i];
|
|
84
|
+
if (!deepEquals(a[key], b[key]))
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
return true;
|
|
45
88
|
}
|
|
46
|
-
return
|
|
89
|
+
return a !== a && b !== b;
|
|
47
90
|
}
|
|
48
|
-
function
|
|
49
|
-
if (
|
|
50
|
-
if (
|
|
51
|
-
return
|
|
52
|
-
{
|
|
53
|
-
const
|
|
54
|
-
let
|
|
55
|
-
for (let
|
|
56
|
-
if (
|
|
91
|
+
function resolveFieldData(data, field) {
|
|
92
|
+
if (data && Object.keys(data).length && field) {
|
|
93
|
+
if (field.indexOf(".") === -1) {
|
|
94
|
+
return data[field];
|
|
95
|
+
} else {
|
|
96
|
+
const fields = field.split(".");
|
|
97
|
+
let value = data;
|
|
98
|
+
for (let i = 0, len = fields.length; i < len; ++i) {
|
|
99
|
+
if (data == null) {
|
|
57
100
|
return null;
|
|
58
|
-
|
|
101
|
+
}
|
|
102
|
+
value = value[fields[i]];
|
|
59
103
|
}
|
|
60
|
-
return
|
|
104
|
+
return value;
|
|
61
105
|
}
|
|
62
|
-
} else
|
|
106
|
+
} else {
|
|
63
107
|
return null;
|
|
108
|
+
}
|
|
64
109
|
}
|
|
65
|
-
function
|
|
66
|
-
if (
|
|
67
|
-
for (const
|
|
68
|
-
if (
|
|
69
|
-
return
|
|
110
|
+
function contains(value, list) {
|
|
111
|
+
if (value != null && list && list.length) {
|
|
112
|
+
for (const val of list) {
|
|
113
|
+
if (equals(value, val)) {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
70
117
|
}
|
|
71
|
-
return
|
|
118
|
+
return false;
|
|
72
119
|
}
|
|
73
|
-
function
|
|
74
|
-
return ((
|
|
120
|
+
function isEmpty(value) {
|
|
121
|
+
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));
|
|
75
122
|
}
|
|
76
|
-
function
|
|
77
|
-
return typeof
|
|
123
|
+
function isString(value) {
|
|
124
|
+
return typeof value === "string" || value instanceof String;
|
|
78
125
|
}
|
|
79
|
-
function
|
|
80
|
-
|
|
126
|
+
function joinLines(errors) {
|
|
127
|
+
if (Array.isArray(errors)) {
|
|
128
|
+
return errors.filter((e) => isString(e)).join(" ");
|
|
129
|
+
}
|
|
130
|
+
return errors;
|
|
81
131
|
}
|
|
82
|
-
function
|
|
132
|
+
function HintSlotFactory(parentProps, parentSlots) {
|
|
133
|
+
const {
|
|
134
|
+
invalid: invalidSlot,
|
|
135
|
+
valid: validSlot,
|
|
136
|
+
hint: hintSlot,
|
|
137
|
+
loading: loadingSlot
|
|
138
|
+
} = parentSlots;
|
|
83
139
|
const {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
140
|
+
hintLabel,
|
|
141
|
+
modelValue,
|
|
142
|
+
valid,
|
|
143
|
+
validLabel,
|
|
144
|
+
invalid,
|
|
145
|
+
invalidLabel,
|
|
146
|
+
...otherProps
|
|
147
|
+
} = toRefs(parentProps);
|
|
148
|
+
const loading = resolveFieldData(otherProps, "loading");
|
|
149
|
+
const loadingLabel = resolveFieldData(otherProps, "loadingLabel");
|
|
150
|
+
const hasInvalid = computed(() => {
|
|
151
|
+
if (!invalid.value) {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
if (invalid.value && invalidSlot) {
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
if ((invalidLabel == null ? void 0 : invalidLabel.value) && Array.isArray(invalidLabel.value) && invalidLabel.value.length > 0) {
|
|
158
|
+
return true;
|
|
159
|
+
}
|
|
160
|
+
if ((invalidLabel == null ? void 0 : invalidLabel.value) && !isEmpty(invalidLabel)) {
|
|
161
|
+
return true;
|
|
162
|
+
}
|
|
163
|
+
return false;
|
|
164
|
+
});
|
|
165
|
+
const hasHint = computed(
|
|
166
|
+
() => !!(hintLabel && hintLabel.value || hintSlot)
|
|
167
|
+
);
|
|
168
|
+
const hasValid = computed(
|
|
169
|
+
() => !!(validLabel && validLabel.value || validSlot)
|
|
170
|
+
);
|
|
171
|
+
const hasLoading = computed(
|
|
172
|
+
() => !!((loading == null ? void 0 : loading.value) && loadingSlot || (loading == null ? void 0 : loading.value) && (loadingLabel == null ? void 0 : loadingLabel.value))
|
|
173
|
+
);
|
|
174
|
+
const isVisible = computed(
|
|
175
|
+
() => hasHint.value || hasValid.value || hasInvalid.value || hasLoading.value
|
|
104
176
|
);
|
|
105
177
|
return {
|
|
106
|
-
hasInvalid
|
|
107
|
-
hasHint
|
|
108
|
-
hasValid
|
|
109
|
-
hasLoading
|
|
178
|
+
hasInvalid,
|
|
179
|
+
hasHint,
|
|
180
|
+
hasValid,
|
|
181
|
+
hasLoading,
|
|
110
182
|
HintSlot: {
|
|
111
183
|
name: "HintSlot",
|
|
112
184
|
props: {
|
|
@@ -115,42 +187,50 @@ function Q(e, t) {
|
|
|
115
187
|
default: () => ({})
|
|
116
188
|
}
|
|
117
189
|
},
|
|
118
|
-
setup(
|
|
119
|
-
const
|
|
120
|
-
const
|
|
121
|
-
hintLabel
|
|
122
|
-
modelValue
|
|
123
|
-
valid
|
|
124
|
-
validLabel
|
|
125
|
-
invalid
|
|
126
|
-
invalidLabel
|
|
127
|
-
loading
|
|
128
|
-
loadingLabel
|
|
129
|
-
...
|
|
190
|
+
setup(props) {
|
|
191
|
+
const hintContent = computed(() => {
|
|
192
|
+
const slotProps = toReactive({
|
|
193
|
+
hintLabel,
|
|
194
|
+
modelValue,
|
|
195
|
+
valid,
|
|
196
|
+
validLabel,
|
|
197
|
+
invalid,
|
|
198
|
+
invalidLabel,
|
|
199
|
+
loading,
|
|
200
|
+
loadingLabel,
|
|
201
|
+
...props.params
|
|
130
202
|
});
|
|
131
|
-
|
|
203
|
+
if (invalid == null ? void 0 : invalid.value) {
|
|
204
|
+
return (invalidSlot == null ? void 0 : invalidSlot(slotProps)) || joinLines(invalidLabel == null ? void 0 : invalidLabel.value) || (hintLabel == null ? void 0 : hintLabel.value);
|
|
205
|
+
}
|
|
206
|
+
if (valid == null ? void 0 : valid.value)
|
|
207
|
+
return (validSlot == null ? void 0 : validSlot(slotProps)) || joinLines(validLabel == null ? void 0 : validLabel.value) || (hintLabel == null ? void 0 : hintLabel.value);
|
|
208
|
+
if (loading == null ? void 0 : loading.value)
|
|
209
|
+
return (loadingSlot == null ? void 0 : loadingSlot(slotProps)) || joinLines(loadingLabel == null ? void 0 : loadingLabel.value) || (hintLabel == null ? void 0 : hintLabel.value);
|
|
210
|
+
return (hintSlot == null ? void 0 : hintSlot(slotProps)) || joinLines(hintLabel == null ? void 0 : hintLabel.value) || (hintLabel == null ? void 0 : hintLabel.value);
|
|
132
211
|
});
|
|
133
212
|
return {
|
|
134
|
-
isVisible
|
|
135
|
-
hasInvalid
|
|
136
|
-
hasValid
|
|
137
|
-
hintContent
|
|
213
|
+
isVisible,
|
|
214
|
+
hasInvalid,
|
|
215
|
+
hasValid,
|
|
216
|
+
hintContent
|
|
138
217
|
};
|
|
139
218
|
},
|
|
140
219
|
render() {
|
|
141
|
-
if (this.isVisible)
|
|
142
|
-
return
|
|
220
|
+
if (this.isVisible) {
|
|
221
|
+
return h(
|
|
143
222
|
"small",
|
|
144
223
|
{
|
|
145
224
|
role: this.hasInvalid ? "alert" : this.hasValid ? "status" : void 0
|
|
146
225
|
},
|
|
147
226
|
this.hintContent
|
|
148
227
|
);
|
|
228
|
+
}
|
|
149
229
|
}
|
|
150
230
|
}
|
|
151
231
|
};
|
|
152
232
|
}
|
|
153
|
-
const
|
|
233
|
+
const LinkProps = {
|
|
154
234
|
/**
|
|
155
235
|
* The router-link/nuxt-link property, if it is defined the button is rendered as a ruouter-link or nuxt-link.
|
|
156
236
|
* @see Documentation of [router-link](https://router.vuejs.org/api/#router-link) and [nuxt-link](https://nuxtjs.org/api/components-nuxt-link/)
|
|
@@ -167,7 +247,7 @@ const Se = {
|
|
|
167
247
|
*/
|
|
168
248
|
target: {
|
|
169
249
|
type: String,
|
|
170
|
-
validator: (
|
|
250
|
+
validator: (value) => Object.values(AnchorTarget).includes(value)
|
|
171
251
|
},
|
|
172
252
|
/**
|
|
173
253
|
* Anchor rel
|
|
@@ -176,7 +256,8 @@ const Se = {
|
|
|
176
256
|
type: String,
|
|
177
257
|
default: "noopener noreferrer"
|
|
178
258
|
}
|
|
179
|
-
}
|
|
259
|
+
};
|
|
260
|
+
const ValidProps = {
|
|
180
261
|
/**
|
|
181
262
|
* Valid status
|
|
182
263
|
*/
|
|
@@ -185,7 +266,8 @@ const Se = {
|
|
|
185
266
|
* Valid label
|
|
186
267
|
*/
|
|
187
268
|
validLabel: [String, Array]
|
|
188
|
-
}
|
|
269
|
+
};
|
|
270
|
+
const InvalidProps = {
|
|
189
271
|
/**
|
|
190
272
|
* Invalid status
|
|
191
273
|
*/
|
|
@@ -194,39 +276,47 @@ const Se = {
|
|
|
194
276
|
* Invalid label
|
|
195
277
|
*/
|
|
196
278
|
invalidLabel: [String, Array]
|
|
197
|
-
}
|
|
279
|
+
};
|
|
280
|
+
const DisabledProps = {
|
|
198
281
|
/**
|
|
199
282
|
* Whether the form control is disabled
|
|
200
283
|
*/
|
|
201
284
|
disabled: Boolean
|
|
202
|
-
}
|
|
285
|
+
};
|
|
286
|
+
const ActiveProps = {
|
|
203
287
|
/**
|
|
204
288
|
* Whether the item is active
|
|
205
289
|
*/
|
|
206
290
|
active: Boolean
|
|
207
|
-
}
|
|
291
|
+
};
|
|
292
|
+
const PressedProps = {
|
|
208
293
|
/**
|
|
209
294
|
* Whether the item is pressed
|
|
210
295
|
*/
|
|
211
296
|
pressed: Boolean
|
|
212
|
-
}
|
|
297
|
+
};
|
|
298
|
+
const LabelProps = {
|
|
213
299
|
/**
|
|
214
300
|
* The item label
|
|
215
301
|
*/
|
|
216
302
|
label: [String, Number]
|
|
217
|
-
}
|
|
303
|
+
};
|
|
304
|
+
const ReadonlyProps = {
|
|
218
305
|
/**
|
|
219
306
|
* The value is not editable
|
|
220
307
|
*/
|
|
221
308
|
readonly: Boolean
|
|
222
|
-
}
|
|
309
|
+
};
|
|
310
|
+
const ModifiersProps = {
|
|
223
311
|
/**
|
|
224
312
|
* Component BEM modifiers
|
|
225
313
|
*/
|
|
226
314
|
modifiers: [String, Array]
|
|
227
|
-
}
|
|
315
|
+
};
|
|
316
|
+
const HintProps = {
|
|
228
317
|
hintLabel: { type: String, default: "" }
|
|
229
|
-
}
|
|
318
|
+
};
|
|
319
|
+
const OptionsProps = {
|
|
230
320
|
/**
|
|
231
321
|
* List of options, can be string[] or object[]
|
|
232
322
|
*/
|
|
@@ -247,39 +337,150 @@ const Se = {
|
|
|
247
337
|
*/
|
|
248
338
|
disabledKey: { type: [String, Function], default: "disabled" }
|
|
249
339
|
};
|
|
250
|
-
|
|
251
|
-
|
|
340
|
+
({
|
|
341
|
+
/**
|
|
342
|
+
* VvIcon name or props
|
|
343
|
+
* @see VVIcon
|
|
344
|
+
*/
|
|
345
|
+
icon: { type: [String, Object] },
|
|
346
|
+
/**
|
|
347
|
+
* VvIcon position
|
|
348
|
+
*/
|
|
349
|
+
iconPosition: {
|
|
350
|
+
type: String,
|
|
351
|
+
default: Position.before,
|
|
352
|
+
validation: (value) => Object.values(Position).includes(value)
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
const TabindexProps = {
|
|
252
356
|
/**
|
|
253
357
|
* Global attribute tabindex
|
|
254
358
|
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex
|
|
255
359
|
*/
|
|
256
360
|
tabindex: { type: [String, Number], default: 0 }
|
|
257
|
-
}
|
|
361
|
+
};
|
|
362
|
+
const IdProps = {
|
|
258
363
|
/**
|
|
259
364
|
* Global attribute id
|
|
260
365
|
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id
|
|
261
366
|
*/
|
|
262
367
|
id: [String, Number]
|
|
263
368
|
};
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
369
|
+
({
|
|
370
|
+
/**
|
|
371
|
+
* Dropdown placement
|
|
372
|
+
*/
|
|
373
|
+
placement: {
|
|
374
|
+
type: String,
|
|
375
|
+
default: Side.bottom,
|
|
376
|
+
validator: (value) => {
|
|
377
|
+
return Object.values(Side).includes(value) || Object.values(Placement).includes(value);
|
|
378
|
+
}
|
|
379
|
+
},
|
|
380
|
+
/**
|
|
381
|
+
* Dropdown strategy
|
|
382
|
+
*/
|
|
383
|
+
strategy: {
|
|
384
|
+
type: String,
|
|
385
|
+
default: "absolute",
|
|
386
|
+
validator: (value) => {
|
|
387
|
+
return ["fixed", "absolute"].includes(value);
|
|
388
|
+
}
|
|
389
|
+
},
|
|
390
|
+
/**
|
|
391
|
+
* Dropdown show / hide transition name
|
|
392
|
+
*/
|
|
393
|
+
transitionName: {
|
|
394
|
+
type: String
|
|
395
|
+
},
|
|
396
|
+
/**
|
|
397
|
+
* Offset of the dropdown from the trigger
|
|
398
|
+
* @see https://floating-ui.com/docs/offset
|
|
399
|
+
*/
|
|
400
|
+
offset: {
|
|
401
|
+
type: [Number, String, Object],
|
|
402
|
+
default: 0
|
|
403
|
+
},
|
|
404
|
+
/**
|
|
405
|
+
* Move dropdown to the side if there is no space in the default position
|
|
406
|
+
* @see https://floating-ui.com/docs/shift
|
|
407
|
+
*/
|
|
408
|
+
shift: {
|
|
409
|
+
type: [Boolean, Object],
|
|
410
|
+
default: false
|
|
411
|
+
},
|
|
412
|
+
/**
|
|
413
|
+
* Flip dropdown position if there is no space in the default position
|
|
414
|
+
* @see https://floating-ui.com/docs/flip
|
|
415
|
+
*/
|
|
416
|
+
flip: {
|
|
417
|
+
type: [Boolean, Object],
|
|
418
|
+
default: true
|
|
419
|
+
},
|
|
420
|
+
/**
|
|
421
|
+
* Size of the dropdown
|
|
422
|
+
* @see https://floating-ui.com/docs/size
|
|
423
|
+
*/
|
|
424
|
+
size: {
|
|
425
|
+
type: [Boolean, Object],
|
|
426
|
+
default: () => ({ padding: 10 })
|
|
427
|
+
},
|
|
428
|
+
/**
|
|
429
|
+
* Automatically change the position of the dropdown
|
|
430
|
+
* @see https://floating-ui.com/docs/autoPlacement
|
|
431
|
+
*/
|
|
432
|
+
autoPlacement: {
|
|
433
|
+
type: [Boolean, Object],
|
|
434
|
+
default: false
|
|
435
|
+
},
|
|
436
|
+
/**
|
|
437
|
+
* Add arrow to the dropdown
|
|
438
|
+
* @see https://floating-ui.com/docs/arrow
|
|
439
|
+
*/
|
|
440
|
+
arrow: {
|
|
441
|
+
type: Boolean,
|
|
442
|
+
default: false
|
|
443
|
+
},
|
|
444
|
+
/**
|
|
445
|
+
* Close dropdown on click outside
|
|
446
|
+
*/
|
|
447
|
+
autoClose: {
|
|
448
|
+
type: Boolean,
|
|
449
|
+
default: true
|
|
450
|
+
},
|
|
451
|
+
/**
|
|
452
|
+
* Autofocus first item on dropdown open
|
|
453
|
+
*/
|
|
454
|
+
autofocusFirst: {
|
|
455
|
+
type: Boolean,
|
|
456
|
+
default: true
|
|
457
|
+
},
|
|
458
|
+
/**
|
|
459
|
+
* Set dropdown width to the same as the trigger
|
|
460
|
+
*/
|
|
461
|
+
triggerWidth: {
|
|
462
|
+
type: Boolean
|
|
463
|
+
}
|
|
464
|
+
});
|
|
465
|
+
const IdNameProps = {
|
|
466
|
+
...IdProps,
|
|
267
467
|
/**
|
|
268
468
|
* Input / Textarea name
|
|
269
469
|
* Name of the form control. Submitted with the form as part of a name/value pair
|
|
270
470
|
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#name
|
|
271
471
|
*/
|
|
272
|
-
name: { type: String, required:
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
...
|
|
276
|
-
...
|
|
277
|
-
...
|
|
278
|
-
...
|
|
279
|
-
|
|
280
|
-
...
|
|
281
|
-
...
|
|
282
|
-
...
|
|
472
|
+
name: { type: String, required: true }
|
|
473
|
+
};
|
|
474
|
+
const CheckboxRadioProps = {
|
|
475
|
+
...IdNameProps,
|
|
476
|
+
...TabindexProps,
|
|
477
|
+
...ValidProps,
|
|
478
|
+
...InvalidProps,
|
|
479
|
+
...HintProps,
|
|
480
|
+
...DisabledProps,
|
|
481
|
+
...ReadonlyProps,
|
|
482
|
+
...ModifiersProps,
|
|
483
|
+
...LabelProps,
|
|
283
484
|
/**
|
|
284
485
|
* Input value
|
|
285
486
|
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#value
|
|
@@ -289,225 +490,318 @@ const Be = {
|
|
|
289
490
|
* Input value
|
|
290
491
|
*/
|
|
291
492
|
modelValue: [Object, Number, Boolean, String]
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
...
|
|
295
|
-
...
|
|
296
|
-
...
|
|
297
|
-
|
|
298
|
-
...
|
|
299
|
-
...
|
|
300
|
-
...
|
|
493
|
+
};
|
|
494
|
+
const CheckboxRadioGroupProps = {
|
|
495
|
+
...ValidProps,
|
|
496
|
+
...InvalidProps,
|
|
497
|
+
...OptionsProps,
|
|
498
|
+
...HintProps,
|
|
499
|
+
...DisabledProps,
|
|
500
|
+
...ReadonlyProps,
|
|
501
|
+
...ModifiersProps,
|
|
502
|
+
...LabelProps,
|
|
301
503
|
/**
|
|
302
504
|
* Input value
|
|
303
505
|
*/
|
|
304
|
-
modelValue: [String, Array],
|
|
506
|
+
modelValue: [String, Array, Boolean, Number, Symbol],
|
|
305
507
|
/**
|
|
306
508
|
* Input name
|
|
307
509
|
*/
|
|
308
|
-
name: { type: String, required:
|
|
510
|
+
name: { type: String, required: true },
|
|
309
511
|
/**
|
|
310
512
|
* If true, the group will be displayed in a vertical column
|
|
311
513
|
*/
|
|
312
514
|
vertical: Boolean
|
|
313
515
|
};
|
|
314
516
|
({
|
|
315
|
-
|
|
316
|
-
...
|
|
317
|
-
...
|
|
318
|
-
...
|
|
319
|
-
...
|
|
517
|
+
...DisabledProps,
|
|
518
|
+
...LabelProps,
|
|
519
|
+
...PressedProps,
|
|
520
|
+
...ActiveProps,
|
|
521
|
+
...LinkProps,
|
|
320
522
|
/**
|
|
321
523
|
* Button type
|
|
322
524
|
*/
|
|
323
|
-
type:
|
|
525
|
+
type: {
|
|
526
|
+
type: String,
|
|
527
|
+
default: ButtonType.button,
|
|
528
|
+
validator: (value) => Object.values(ButtonType).includes(value)
|
|
529
|
+
}
|
|
324
530
|
});
|
|
325
|
-
function
|
|
326
|
-
const
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
531
|
+
function useInjectedGroupState(groupKey) {
|
|
532
|
+
const group = inject(groupKey, void 0);
|
|
533
|
+
const isInGroup = computed(() => !isEmpty(group));
|
|
534
|
+
function getGroupOrLocalRef(propName, props, emit) {
|
|
535
|
+
if (group == null ? void 0 : group.value) {
|
|
536
|
+
const groupPropValue = unref(group.value)[propName];
|
|
537
|
+
return computed({
|
|
331
538
|
get() {
|
|
332
|
-
return
|
|
539
|
+
return groupPropValue == null ? void 0 : groupPropValue.value;
|
|
333
540
|
},
|
|
334
|
-
set(
|
|
335
|
-
|
|
541
|
+
set(value) {
|
|
542
|
+
groupPropValue.value = value;
|
|
336
543
|
}
|
|
337
544
|
});
|
|
338
545
|
}
|
|
339
|
-
const
|
|
340
|
-
return
|
|
546
|
+
const propRef = toRef(props, propName);
|
|
547
|
+
return computed({
|
|
341
548
|
get() {
|
|
342
|
-
return
|
|
549
|
+
return propRef.value;
|
|
343
550
|
},
|
|
344
|
-
set(
|
|
345
|
-
|
|
551
|
+
set(value) {
|
|
552
|
+
if (emit)
|
|
553
|
+
emit(`update:${propName}`, value);
|
|
346
554
|
}
|
|
347
555
|
});
|
|
348
556
|
}
|
|
349
557
|
return {
|
|
350
|
-
group
|
|
351
|
-
isInGroup
|
|
352
|
-
getGroupOrLocalRef
|
|
558
|
+
group,
|
|
559
|
+
isInGroup,
|
|
560
|
+
getGroupOrLocalRef
|
|
353
561
|
};
|
|
354
562
|
}
|
|
355
|
-
const
|
|
356
|
-
|
|
357
|
-
|
|
563
|
+
const VvRadioProps = CheckboxRadioProps;
|
|
564
|
+
const VvRadioEvents = ["click", "update:modelValue", "change", "blur"];
|
|
565
|
+
function useGroupProps(props, emit) {
|
|
566
|
+
const { id } = toRefs(props);
|
|
567
|
+
const { group, isInGroup, getGroupOrLocalRef } = useInjectedGroupState(INJECTION_KEY_RADIO_GROUP);
|
|
568
|
+
const modelValue = getGroupOrLocalRef("modelValue", props, emit);
|
|
569
|
+
const valid = getGroupOrLocalRef("valid", props);
|
|
570
|
+
const invalid = getGroupOrLocalRef("invalid", props);
|
|
571
|
+
const readonly = computed(
|
|
572
|
+
() => {
|
|
573
|
+
var _a;
|
|
574
|
+
return Boolean(props.readonly || ((_a = group == null ? void 0 : group.value) == null ? void 0 : _a.disabled.value));
|
|
575
|
+
}
|
|
576
|
+
);
|
|
577
|
+
const disabled = computed(
|
|
578
|
+
() => {
|
|
579
|
+
var _a;
|
|
580
|
+
return Boolean(props.disabled || ((_a = group == null ? void 0 : group.value) == null ? void 0 : _a.disabled.value));
|
|
581
|
+
}
|
|
582
|
+
);
|
|
358
583
|
return {
|
|
359
584
|
// local props
|
|
360
|
-
id
|
|
585
|
+
id,
|
|
361
586
|
// global props
|
|
362
|
-
group
|
|
363
|
-
isInGroup
|
|
364
|
-
modelValue
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
587
|
+
group,
|
|
588
|
+
isInGroup,
|
|
589
|
+
modelValue,
|
|
590
|
+
valid,
|
|
591
|
+
invalid,
|
|
592
|
+
readonly,
|
|
593
|
+
disabled
|
|
369
594
|
};
|
|
370
595
|
}
|
|
371
|
-
const
|
|
372
|
-
function
|
|
373
|
-
return
|
|
374
|
-
const
|
|
375
|
-
[
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
596
|
+
const useUniqueId = (id) => computed(() => String((id == null ? void 0 : id.value) || nanoid()));
|
|
597
|
+
function useModifiers(prefix, modifiers, others) {
|
|
598
|
+
return computed(() => {
|
|
599
|
+
const toReturn = {
|
|
600
|
+
[prefix]: true
|
|
601
|
+
};
|
|
602
|
+
const modifiersArray = typeof (modifiers == null ? void 0 : modifiers.value) === "string" ? modifiers.value.split(" ") : modifiers == null ? void 0 : modifiers.value;
|
|
603
|
+
if (modifiersArray) {
|
|
604
|
+
if (Array.isArray(modifiersArray)) {
|
|
605
|
+
modifiersArray.forEach((modifier) => {
|
|
606
|
+
if (modifier) {
|
|
607
|
+
toReturn[`${prefix}--${modifier}`] = true;
|
|
608
|
+
}
|
|
609
|
+
});
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
if (others) {
|
|
613
|
+
Object.keys(others.value).forEach((key) => {
|
|
614
|
+
toReturn[`${prefix}--${key}`] = unref(others.value[key]);
|
|
615
|
+
});
|
|
616
|
+
}
|
|
617
|
+
return toReturn;
|
|
382
618
|
});
|
|
383
619
|
}
|
|
384
|
-
const
|
|
620
|
+
const _hoisted_1$1 = ["for"];
|
|
621
|
+
const _hoisted_2$1 = ["id", "name", "disabled", "value", "tabindex", "aria-invalid"];
|
|
622
|
+
const __default__$1 = {
|
|
385
623
|
name: "VvRadio"
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
624
|
+
};
|
|
625
|
+
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
626
|
+
...__default__$1,
|
|
627
|
+
props: VvRadioProps,
|
|
628
|
+
emits: VvRadioEvents,
|
|
629
|
+
setup(__props, { emit }) {
|
|
630
|
+
const props = __props;
|
|
631
|
+
const slots = useSlots();
|
|
632
|
+
const { id, disabled, readonly, modelValue, valid, invalid } = useGroupProps(props, emit);
|
|
633
|
+
const hasId = useUniqueId(id);
|
|
634
|
+
const tabindex = computed(() => isDisabled.value ? -1 : props.tabindex);
|
|
635
|
+
const input = ref();
|
|
636
|
+
const isDisabled = computed(() => disabled.value || readonly.value);
|
|
637
|
+
const isInvalid = computed(() => {
|
|
638
|
+
if (invalid.value === true) {
|
|
639
|
+
return true;
|
|
640
|
+
}
|
|
641
|
+
if (valid.value === true) {
|
|
642
|
+
return false;
|
|
643
|
+
}
|
|
644
|
+
return void 0;
|
|
645
|
+
});
|
|
646
|
+
const isChecked = computed(
|
|
647
|
+
() => Array.isArray(modelValue.value) ? contains(props.value, modelValue.value) : equals(props.value, modelValue.value)
|
|
648
|
+
);
|
|
649
|
+
const hasValue = computed(
|
|
650
|
+
() => ["string", "number", "boolean"].includes(typeof props.value) ? props.value : true
|
|
651
|
+
);
|
|
652
|
+
const localModelValue = computed({
|
|
401
653
|
get() {
|
|
402
|
-
return
|
|
654
|
+
return isChecked.value ? hasValue.value : null;
|
|
403
655
|
},
|
|
404
|
-
set(
|
|
405
|
-
Array.isArray(
|
|
656
|
+
set(newValue) {
|
|
657
|
+
if (Array.isArray(modelValue.value)) {
|
|
658
|
+
modelValue.value = [props.value];
|
|
659
|
+
} else {
|
|
660
|
+
modelValue.value = props.value;
|
|
661
|
+
}
|
|
662
|
+
emit("change", newValue);
|
|
406
663
|
}
|
|
407
|
-
})
|
|
664
|
+
});
|
|
665
|
+
const { modifiers } = toRefs(props);
|
|
666
|
+
const bemCssClasses = useModifiers(
|
|
408
667
|
"vv-radio",
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
valid:
|
|
412
|
-
invalid:
|
|
413
|
-
disabled:
|
|
414
|
-
readonly:
|
|
668
|
+
modifiers,
|
|
669
|
+
computed(() => ({
|
|
670
|
+
valid: valid.value,
|
|
671
|
+
invalid: invalid.value,
|
|
672
|
+
disabled: disabled.value,
|
|
673
|
+
readonly: readonly.value
|
|
415
674
|
}))
|
|
416
|
-
)
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
675
|
+
);
|
|
676
|
+
const { HintSlot } = HintSlotFactory(props, slots);
|
|
677
|
+
return (_ctx, _cache) => {
|
|
678
|
+
return openBlock(), createElementBlock("label", {
|
|
679
|
+
class: normalizeClass(unref(bemCssClasses)),
|
|
680
|
+
for: unref(hasId)
|
|
681
|
+
}, [
|
|
682
|
+
withDirectives(createElementVNode("input", {
|
|
683
|
+
id: unref(hasId),
|
|
684
|
+
ref_key: "input",
|
|
685
|
+
ref: input,
|
|
686
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(localModelValue) ? localModelValue.value = $event : null),
|
|
687
|
+
type: "radio",
|
|
688
|
+
class: "vv-radio__input",
|
|
689
|
+
name: _ctx.name,
|
|
690
|
+
disabled: unref(isDisabled),
|
|
691
|
+
value: unref(hasValue),
|
|
692
|
+
tabindex: unref(tabindex),
|
|
693
|
+
"aria-invalid": unref(isInvalid)
|
|
694
|
+
}, null, 8, _hoisted_2$1), [
|
|
695
|
+
[vModelRadio, unref(localModelValue)]
|
|
696
|
+
]),
|
|
697
|
+
renderSlot(_ctx.$slots, "default", { value: unref(modelValue) }, () => [
|
|
698
|
+
createTextVNode(toDisplayString(_ctx.label), 1)
|
|
699
|
+
]),
|
|
700
|
+
createVNode(unref(HintSlot), {
|
|
701
|
+
class: "vv-radio__hint",
|
|
702
|
+
params: { value: unref(modelValue) }
|
|
703
|
+
}, null, 8, ["params"])
|
|
704
|
+
], 10, _hoisted_1$1);
|
|
705
|
+
};
|
|
444
706
|
}
|
|
445
|
-
})
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
707
|
+
});
|
|
708
|
+
const VvRadioGroupProps = CheckboxRadioGroupProps;
|
|
709
|
+
const VvRadioGroupEvents = ["update:modelValue", "change"];
|
|
710
|
+
function useProvideGroupState(groupState) {
|
|
711
|
+
if (Object.keys(groupState).some(
|
|
712
|
+
(k) => k !== "key" && !isRef(groupState[k])
|
|
449
713
|
))
|
|
450
714
|
throw Error("One or more groupState props aren't ref.");
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
715
|
+
provide(
|
|
716
|
+
groupState.key,
|
|
717
|
+
computed(() => groupState)
|
|
454
718
|
);
|
|
455
719
|
}
|
|
456
|
-
function
|
|
457
|
-
const { options
|
|
720
|
+
function useOptions(props) {
|
|
721
|
+
const { options, labelKey, valueKey, disabledKey } = toRefs(props);
|
|
722
|
+
const getOptionLabel = (option) => {
|
|
723
|
+
if (typeof option !== "object" && option !== null)
|
|
724
|
+
return option;
|
|
725
|
+
return typeof labelKey.value === "function" ? labelKey.value(option) : option[labelKey.value];
|
|
726
|
+
};
|
|
727
|
+
const getOptionValue = (option) => {
|
|
728
|
+
if (typeof option !== "object" && option !== null)
|
|
729
|
+
return option;
|
|
730
|
+
return typeof valueKey.value === "function" ? valueKey.value(option) : option[valueKey.value];
|
|
731
|
+
};
|
|
732
|
+
const getOptionDisabled = (option) => {
|
|
733
|
+
if (typeof option !== "object" && option !== null)
|
|
734
|
+
return false;
|
|
735
|
+
return typeof disabledKey.value === "function" ? disabledKey.value(option) : option[disabledKey.value];
|
|
736
|
+
};
|
|
458
737
|
return {
|
|
459
|
-
options
|
|
460
|
-
getOptionLabel
|
|
461
|
-
getOptionValue
|
|
462
|
-
getOptionDisabled
|
|
738
|
+
options,
|
|
739
|
+
getOptionLabel,
|
|
740
|
+
getOptionValue,
|
|
741
|
+
getOptionDisabled
|
|
463
742
|
};
|
|
464
743
|
}
|
|
465
|
-
const
|
|
744
|
+
const _hoisted_1 = ["textContent"];
|
|
745
|
+
const _hoisted_2 = { class: "vv-radio-group__wrapper" };
|
|
746
|
+
const __default__ = {
|
|
466
747
|
name: "VvRadioGroup"
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
748
|
+
};
|
|
749
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
750
|
+
...__default__,
|
|
751
|
+
props: VvRadioGroupProps,
|
|
752
|
+
emits: VvRadioGroupEvents,
|
|
753
|
+
setup(__props, { emit }) {
|
|
754
|
+
const props = __props;
|
|
755
|
+
const slots = useSlots();
|
|
756
|
+
const modelValue = useVModel(props, "modelValue", emit);
|
|
757
|
+
const { disabled, readonly, vertical, valid, invalid, modifiers } = toRefs(props);
|
|
758
|
+
useProvideGroupState({
|
|
759
|
+
key: INJECTION_KEY_RADIO_GROUP,
|
|
760
|
+
modelValue,
|
|
761
|
+
disabled,
|
|
762
|
+
readonly,
|
|
763
|
+
valid,
|
|
764
|
+
invalid
|
|
480
765
|
});
|
|
481
|
-
const { getOptionLabel
|
|
766
|
+
const { getOptionLabel, getOptionValue } = useOptions(props);
|
|
767
|
+
const bemCssClasses = useModifiers(
|
|
482
768
|
"vv-radio-group",
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
disabled:
|
|
486
|
-
readonly:
|
|
487
|
-
horizontal: !
|
|
488
|
-
valid:
|
|
489
|
-
invalid:
|
|
769
|
+
modifiers,
|
|
770
|
+
computed(() => ({
|
|
771
|
+
disabled: disabled.value,
|
|
772
|
+
readonly: readonly.value,
|
|
773
|
+
horizontal: !vertical.value,
|
|
774
|
+
valid: valid.value,
|
|
775
|
+
invalid: invalid.value
|
|
490
776
|
}))
|
|
491
|
-
)
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
777
|
+
);
|
|
778
|
+
const getOptionProps = (option, index) => {
|
|
779
|
+
return {
|
|
780
|
+
id: `${props.name}_opt${index}`,
|
|
781
|
+
name: props.name,
|
|
782
|
+
label: getOptionLabel(option),
|
|
783
|
+
value: getOptionValue(option)
|
|
784
|
+
};
|
|
785
|
+
};
|
|
786
|
+
const { HintSlot } = HintSlotFactory(props, slots);
|
|
787
|
+
return (_ctx, _cache) => {
|
|
788
|
+
return openBlock(), createElementBlock("fieldset", {
|
|
789
|
+
class: normalizeClass(unref(bemCssClasses))
|
|
790
|
+
}, [
|
|
791
|
+
_ctx.label ? (openBlock(), createElementBlock("legend", {
|
|
792
|
+
key: 0,
|
|
793
|
+
textContent: toDisplayString(_ctx.label)
|
|
794
|
+
}, null, 8, _hoisted_1)) : createCommentVNode("", true),
|
|
795
|
+
createElementVNode("div", _hoisted_2, [
|
|
796
|
+
_ctx.options.length > 0 ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(_ctx.options, (option, index) => {
|
|
797
|
+
return openBlock(), createBlock(_sfc_main$1, mergeProps({ key: index }, getOptionProps(option, index)), null, 16);
|
|
798
|
+
}), 128)) : renderSlot(_ctx.$slots, "default", { key: 1 })
|
|
799
|
+
]),
|
|
800
|
+
createVNode(unref(HintSlot), { class: "vv-radio-group__hint" })
|
|
801
|
+
], 2);
|
|
802
|
+
};
|
|
509
803
|
}
|
|
510
804
|
});
|
|
511
805
|
export {
|
|
512
|
-
|
|
806
|
+
_sfc_main as default
|
|
513
807
|
};
|