@volverjs/ui-vue 0.0.10-beta.5 → 0.0.10-beta.50
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/LICENSE +1 -1
- package/README.md +148 -51
- package/auto-imports.d.ts +25 -12
- package/bin/icons.cjs +1 -1
- package/bin/icons.js +28 -20
- package/dist/Volver.d.ts +11 -11
- package/dist/components/VvAccordion/VvAccordion.es.js +192 -104
- package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
- package/dist/components/VvAccordion/VvAccordion.vue.d.ts +29 -10
- package/dist/components/VvAccordion/index.d.ts +8 -9
- package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +485 -206
- package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
- package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +61 -18
- package/dist/components/VvAccordionGroup/index.d.ts +16 -8
- package/dist/components/VvAction/VvAction.es.js +84 -33
- package/dist/components/VvAction/VvAction.umd.js +1 -1
- package/dist/components/VvAction/VvAction.vue.d.ts +61 -28
- package/dist/components/VvAction/index.d.ts +26 -10
- package/dist/components/VvAlert/VvAlert.es.js +350 -318
- package/dist/components/VvAlert/VvAlert.umd.js +1 -1
- package/dist/components/VvAlert/VvAlert.vue.d.ts +25 -17
- package/dist/components/VvAlert/index.d.ts +20 -11
- package/dist/components/VvAlertGroup/VvAlertGroup.es.js +388 -327
- package/dist/components/VvAlertGroup/VvAlertGroup.umd.js +1 -1
- package/dist/components/VvAlertGroup/VvAlertGroup.vue.d.ts +22 -17
- package/dist/components/VvAlertGroup/index.d.ts +10 -18
- package/dist/components/VvAvatar/VvAvatar.es.js +66 -28
- package/dist/components/VvAvatar/VvAvatar.umd.js +1 -1
- package/dist/components/VvAvatar/VvAvatar.vue.d.ts +13 -5
- package/dist/components/VvAvatar/index.d.ts +4 -1
- package/dist/components/VvAvatarGroup/VvAvatarGroup.es.js +147 -74
- package/dist/components/VvAvatarGroup/VvAvatarGroup.umd.js +1 -1
- package/dist/components/VvAvatarGroup/VvAvatarGroup.vue.d.ts +17 -10
- package/dist/components/VvAvatarGroup/index.d.ts +6 -3
- package/dist/components/VvBadge/VvBadge.es.js +78 -34
- package/dist/components/VvBadge/VvBadge.umd.js +1 -1
- package/dist/components/VvBadge/VvBadge.vue.d.ts +13 -5
- package/dist/components/VvBadge/index.d.ts +4 -1
- package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +294 -83
- package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -1
- package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +28 -8
- package/dist/components/VvBreadcrumb/index.d.ts +6 -10
- package/dist/components/VvButton/VvButton.es.js +510 -488
- package/dist/components/VvButton/VvButton.umd.js +1 -1
- package/dist/components/VvButton/VvButton.vue.d.ts +97 -45
- package/dist/components/VvButton/index.d.ts +52 -30
- package/dist/components/VvButtonGroup/VvButtonGroup.es.js +95 -45
- package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
- package/dist/components/VvButtonGroup/VvButtonGroup.vue.d.ts +35 -17
- package/dist/components/VvButtonGroup/index.d.ts +13 -4
- package/dist/components/VvCard/VvCard.es.js +87 -42
- package/dist/components/VvCard/VvCard.umd.js +1 -1
- package/dist/components/VvCard/VvCard.vue.d.ts +13 -5
- package/dist/components/VvCard/index.d.ts +4 -1
- package/dist/components/VvCheckbox/VvCheckbox.es.js +177 -136
- package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -1
- package/dist/components/VvCheckbox/VvCheckbox.vue.d.ts +105 -35
- package/dist/components/VvCheckbox/index.d.ts +52 -19
- package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +408 -322
- package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -1
- package/dist/components/VvCheckboxGroup/VvCheckboxGroup.vue.d.ts +103 -34
- package/dist/components/VvCheckboxGroup/index.d.ts +45 -12
- package/dist/components/VvCombobox/VvCombobox.es.js +2304 -1992
- package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
- package/dist/components/VvCombobox/VvCombobox.vue.d.ts +258 -672
- package/dist/components/VvCombobox/index.d.ts +377 -135
- package/dist/components/VvDialog/VvDialog.es.js +177 -297
- package/dist/components/VvDialog/VvDialog.umd.js +1 -1
- package/dist/components/VvDialog/VvDialog.vue.d.ts +23 -7
- package/dist/components/VvDialog/index.d.ts +12 -0
- package/dist/components/VvDropdown/VvDropdown.es.js +172 -102
- package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
- package/dist/components/VvDropdown/VvDropdown.vue.d.ts +110 -315
- package/dist/components/VvDropdown/VvDropdownAction.vue.d.ts +77 -28
- package/dist/components/VvDropdown/VvDropdownItem.vue.d.ts +13 -1
- package/dist/components/VvDropdown/VvDropdownOptgroup.vue.d.ts +13 -5
- package/dist/components/VvDropdown/VvDropdownOption.vue.d.ts +38 -10
- package/dist/components/VvDropdown/index.d.ts +52 -118
- package/dist/components/VvDropdownAction/VvDropdownAction.es.js +165 -60
- package/dist/components/VvDropdownAction/VvDropdownAction.umd.js +1 -1
- package/dist/components/VvDropdownItem/VvDropdownItem.es.js +337 -10
- package/dist/components/VvDropdownItem/VvDropdownItem.umd.js +1 -1
- package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.es.js +63 -20
- package/dist/components/VvDropdownOptgroup/VvDropdownOptgroup.umd.js +1 -1
- package/dist/components/VvDropdownOption/VvDropdownOption.es.js +188 -80
- package/dist/components/VvDropdownOption/VvDropdownOption.umd.js +1 -1
- package/dist/components/VvIcon/VvIcon.es.js +24 -102
- package/dist/components/VvIcon/VvIcon.umd.js +1 -1
- package/dist/components/VvIcon/VvIcon.vue.d.ts +4 -68
- package/dist/components/VvIcon/index.d.ts +33 -48
- package/dist/components/VvInputFile/VvInputFile.es.js +1777 -0
- package/dist/components/VvInputFile/VvInputFile.umd.js +1 -0
- package/dist/components/VvInputFile/VvInputFile.vue.d.ts +317 -0
- package/dist/components/VvInputFile/index.d.ts +193 -0
- package/dist/components/VvInputText/VvInputClearAction.d.ts +16 -10
- package/dist/components/VvInputText/VvInputPasswordAction.d.ts +20 -14
- package/dist/components/VvInputText/VvInputStepAction.d.ts +11 -7
- package/dist/components/VvInputText/VvInputText.es.js +1491 -551
- package/dist/components/VvInputText/VvInputText.umd.js +1 -1
- package/dist/components/VvInputText/VvInputText.vue.d.ts +216 -68
- package/dist/components/VvInputText/index.d.ts +101 -31
- package/dist/components/VvNav/VvNav.es.js +155 -75
- package/dist/components/VvNav/VvNav.umd.js +1 -1
- package/dist/components/VvNav/VvNav.vue.d.ts +32 -11
- package/dist/components/VvNav/VvNavItem.vue.d.ts +1 -1
- package/dist/components/VvNav/VvNavSeparator.vue.d.ts +1 -1
- package/dist/components/VvNav/index.d.ts +5 -2
- package/dist/components/VvNavItem/VvNavItem.es.js +100 -39
- package/dist/components/VvNavItem/VvNavItem.umd.js +1 -1
- package/dist/components/VvProgress/VvProgress.es.js +73 -27
- package/dist/components/VvProgress/VvProgress.umd.js +1 -1
- package/dist/components/VvProgress/VvProgress.vue.d.ts +13 -6
- package/dist/components/VvProgress/index.d.ts +4 -1
- package/dist/components/VvRadio/VvRadio.es.js +175 -135
- package/dist/components/VvRadio/VvRadio.umd.js +1 -1
- package/dist/components/VvRadio/VvRadio.vue.d.ts +103 -33
- package/dist/components/VvRadio/index.d.ts +50 -17
- package/dist/components/VvRadioGroup/VvRadioGroup.es.js +406 -321
- package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -1
- package/dist/components/VvRadioGroup/VvRadioGroup.vue.d.ts +103 -34
- package/dist/components/VvRadioGroup/index.d.ts +45 -12
- package/dist/components/VvSelect/VvSelect.es.js +677 -611
- package/dist/components/VvSelect/VvSelect.umd.js +1 -1
- package/dist/components/VvSelect/VvSelect.vue.d.ts +107 -199
- package/dist/components/VvSelect/index.d.ts +196 -16
- package/dist/components/VvTab/VvTab.es.js +230 -110
- package/dist/components/VvTab/VvTab.umd.js +1 -1
- package/dist/components/VvTab/VvTab.vue.d.ts +34 -12
- package/dist/components/VvTab/index.d.ts +6 -3
- package/dist/components/VvTextarea/VvTextarea.es.js +606 -597
- package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
- package/dist/components/VvTextarea/VvTextarea.vue.d.ts +159 -54
- package/dist/components/VvTextarea/index.d.ts +69 -20
- package/dist/components/VvTooltip/VvTooltip.es.js +83 -30
- package/dist/components/VvTooltip/VvTooltip.umd.js +1 -1
- package/dist/components/VvTooltip/VvTooltip.vue.d.ts +16 -9
- package/dist/components/VvTooltip/index.d.ts +5 -2
- package/dist/components/common/HintSlot.d.ts +8 -9
- package/dist/components/index.d.ts +10 -0
- package/dist/components/index.es.js +4086 -2029
- package/dist/components/index.umd.js +1 -1
- package/dist/composables/alert/useAlerInject.d.ts +4 -0
- package/dist/composables/alert/useAlert.d.ts +71 -6
- package/dist/composables/alert/{useProvideAlert.d.ts → useAlertProvide.d.ts} +1 -1
- package/dist/composables/dropdown/useDropdownContextmenu.d.ts +18 -0
- package/dist/composables/dropdown/useDropdownInject.d.ts +12 -0
- package/dist/composables/dropdown/{useProvideDropdown.d.ts → useDropdownProvide.d.ts} +6 -7
- package/dist/composables/dropdown/useDropdownVirtualElement.d.ts +17 -0
- package/dist/composables/group/useGroupStateInject.d.ts +9 -0
- package/dist/composables/group/useGroupStateProvide.d.ts +6 -0
- package/dist/composables/index.d.ts +3 -0
- package/dist/composables/index.es.js +178 -6
- package/dist/composables/index.umd.js +1 -1
- package/dist/composables/useBlurhash.d.ts +7 -0
- package/dist/composables/useComponentFocus.d.ts +2 -2
- package/dist/composables/useComponentIcon.d.ts +9 -8
- package/dist/composables/useOptions.d.ts +5 -5
- package/dist/composables/usePersistence.d.ts +3 -0
- package/dist/composables/useUniqueId.d.ts +2 -2
- package/dist/composables/useVolver.d.ts +1 -1
- package/dist/constants.d.ts +35 -33
- package/dist/directives/index.d.ts +3 -5
- package/dist/directives/index.es.js +247 -82
- package/dist/directives/index.umd.js +1 -1
- package/dist/directives/v-contextmenu.es.js +137 -31
- package/dist/directives/v-contextmenu.umd.js +1 -1
- package/dist/directives/v-tooltip.es.js +101 -39
- package/dist/directives/v-tooltip.umd.js +1 -1
- package/dist/icons.d.ts +17 -17
- package/dist/icons.es.js +516 -516
- package/dist/icons.umd.js +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.es.js +74 -6
- package/dist/index.umd.js +1 -1
- package/dist/props/index.d.ts +277 -193
- package/dist/resolvers/unplugin.d.ts +6 -1
- package/dist/resolvers/unplugin.es.js +87 -10
- package/dist/resolvers/unplugin.umd.js +1 -1
- package/dist/stories/Accordion/Accordion.settings.d.ts +2 -57
- package/dist/stories/AccordionGroup/AccordionGroup.settings.d.ts +2 -66
- package/dist/stories/AccordionGroup/AccordionGroup.stories.d.ts +2 -127
- package/dist/stories/AccordionGroup/AccordionGroupSlots.stories.d.ts +1304 -538
- package/dist/stories/Alert/Alert.settings.d.ts +2 -109
- package/dist/stories/AlertGroup/AlertGroup.settings.d.ts +2 -85
- package/dist/stories/AlertGroup/AlertGroupWithComposable.stories.d.ts +1 -1
- package/dist/stories/AvatarGroup/AvatarGroup.settings.d.ts +2 -38
- package/dist/stories/Badge/Badge.settings.d.ts +2 -26
- package/dist/stories/Badge/Badge.test.d.ts +1 -1
- package/dist/stories/Blurhash/BlurhashComposable.stories.d.ts +4 -0
- package/dist/stories/Breadcrumb/Breadcrumb.settings.d.ts +2 -18
- package/dist/stories/Breadcrumb/Breadcrumb.test.d.ts +1 -1
- package/dist/stories/Button/Button.settings.d.ts +2 -194
- package/dist/stories/ButtonGroup/ButtonGroup.settings.d.ts +2 -40
- package/dist/stories/Card/Card.settings.d.ts +2 -63
- package/dist/stories/Checkbox/Checkbox.settings.d.ts +2 -132
- package/dist/stories/CheckboxGroup/CheckboxGroup.settings.d.ts +1 -141
- package/dist/stories/Combobox/Combobox.settings.d.ts +2 -609
- package/dist/stories/Combobox/Combobox.stories.d.ts +1 -0
- package/dist/stories/Combobox/ComboboxMultiple.stories.d.ts +1 -0
- package/dist/stories/Dialog/Dialog.settings.d.ts +2 -47
- package/dist/stories/Dialog/DialogModifiers.stories.d.ts +8 -0
- package/dist/stories/Dropdown/Dropdown.settings.d.ts +2 -205
- package/dist/stories/Icon/Icon.settings.d.ts +3 -68
- package/dist/stories/InputFile/InputFile.settings.d.ts +6 -0
- package/dist/stories/InputFile/InputFile.stories.d.ts +13 -0
- package/dist/stories/InputFile/InputFileDropArea.stories.d.ts +9 -0
- package/dist/stories/InputFile/InputFileIconPosition.stories.d.ts +8 -0
- package/dist/stories/InputFile/InputFileSlots.stories.d.ts +7 -0
- package/dist/stories/InputText/InputText.settings.d.ts +2 -438
- package/dist/stories/Nav/Nav.settings.d.ts +2 -10
- package/dist/stories/Progress/Progress.settings.d.ts +2 -27
- package/dist/stories/Radio/Radio.settings.d.ts +1 -110
- package/dist/stories/RadioGroup/RadioGroup.settings.d.ts +1 -141
- package/dist/stories/Select/Select.settings.d.ts +2 -246
- package/dist/stories/Select/Select.stories.d.ts +1 -0
- package/dist/stories/Tab/Tab.settings.d.ts +2 -15
- package/dist/stories/Textarea/Textarea.settings.d.ts +2 -287
- package/dist/stories/argTypes.d.ts +27 -866
- package/dist/test/expect.d.ts +1 -2
- package/dist/test/options.d.ts +1 -1
- package/dist/test/sleep.d.ts +1 -1
- package/dist/types/alert.d.ts +9 -7
- package/dist/types/blurhash.d.ts +12 -0
- package/dist/types/floating-ui.d.ts +1 -1
- package/dist/types/generic.d.ts +1 -2
- package/dist/types/group.d.ts +37 -15
- package/dist/types/index.d.ts +7 -0
- package/dist/types/input-file.d.ts +9 -0
- package/dist/types/nav.d.ts +2 -2
- package/dist/utils/DomUtilities.d.ts +1 -0
- package/dist/utils/ObjectUtilities.d.ts +8 -9
- package/dist/workers/blurhash.d.ts +1 -0
- package/package.json +238 -246
- package/src/Volver.ts +251 -246
- 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 +163 -100
- package/src/components/VvAccordion/index.ts +65 -80
- package/src/components/VvAccordionGroup/VvAccordionGroup.vue +224 -106
- package/src/components/VvAccordionGroup/index.ts +42 -42
- package/src/components/VvAction/VvAction.vue +144 -130
- package/src/components/VvAlert/VvAlert.vue +72 -70
- package/src/components/VvAlert/index.ts +149 -147
- package/src/components/VvAlertGroup/VvAlertGroup.vue +57 -56
- package/src/components/VvAlertGroup/index.ts +102 -118
- package/src/components/VvAvatar/VvAvatar.vue +20 -14
- package/src/components/VvAvatar/index.ts +5 -5
- package/src/components/VvAvatarGroup/VvAvatarGroup.vue +58 -53
- package/src/components/VvAvatarGroup/index.ts +21 -21
- package/src/components/VvBadge/VvBadge.vue +15 -14
- package/src/components/VvBadge/index.ts +2 -2
- package/src/components/VvBreadcrumb/VvBreadcrumb.vue +50 -48
- package/src/components/VvBreadcrumb/index.ts +3 -9
- package/src/components/VvButton/VvButton.vue +163 -152
- package/src/components/VvButton/index.ts +104 -111
- package/src/components/VvButtonGroup/VvButtonGroup.vue +73 -65
- package/src/components/VvButtonGroup/index.ts +23 -22
- package/src/components/VvCard/VvCard.vue +30 -30
- package/src/components/VvCard/index.ts +2 -2
- package/src/components/VvCheckbox/VvCheckbox.vue +186 -184
- package/src/components/VvCheckbox/index.ts +45 -45
- package/src/components/VvCheckboxGroup/VvCheckboxGroup.vue +88 -87
- package/src/components/VvCombobox/VvCombobox.vue +655 -619
- package/src/components/VvCombobox/index.ts +210 -168
- package/src/components/VvDialog/VvDialog.vue +139 -129
- package/src/components/VvDialog/index.ts +42 -36
- package/src/components/VvDropdown/VvDropdown.vue +466 -445
- package/src/components/VvDropdown/VvDropdownAction.vue +37 -39
- package/src/components/VvDropdown/VvDropdownItem.vue +30 -26
- package/src/components/VvDropdown/VvDropdownOptgroup.vue +13 -12
- package/src/components/VvDropdown/VvDropdownOption.vue +47 -64
- package/src/components/VvDropdown/index.ts +61 -27
- package/src/components/VvIcon/README.md +1 -1
- package/src/components/VvIcon/VvIcon.vue +133 -133
- package/src/components/VvIcon/index.ts +84 -97
- package/src/components/VvInputFile/VvInputFile.vue +413 -0
- package/src/components/VvInputFile/index.ts +143 -0
- package/src/components/VvInputText/VvInputClearAction.ts +51 -47
- package/src/components/VvInputText/VvInputPasswordAction.ts +66 -62
- package/src/components/VvInputText/VvInputStepAction.ts +43 -43
- package/src/components/VvInputText/VvInputText.vue +652 -516
- package/src/components/VvInputText/VvInputTextActions.ts +87 -87
- package/src/components/VvInputText/index.ts +201 -186
- package/src/components/VvNav/VvNav.vue +40 -36
- package/src/components/VvNav/VvNavItem.vue +12 -12
- package/src/components/VvNav/VvNavSeparator.vue +6 -6
- package/src/components/VvNav/index.ts +2 -2
- package/src/components/VvProgress/VvProgress.vue +27 -27
- package/src/components/VvProgress/index.ts +28 -28
- package/src/components/VvRadio/VvRadio.vue +115 -112
- package/src/components/VvRadio/index.ts +29 -29
- package/src/components/VvRadioGroup/VvRadioGroup.vue +91 -90
- package/src/components/VvSelect/VvSelect.vue +262 -241
- package/src/components/VvSelect/index.ts +88 -63
- package/src/components/VvTab/VvTab.vue +79 -69
- package/src/components/VvTab/index.ts +13 -13
- package/src/components/VvTextarea/VvTextarea.vue +218 -219
- package/src/components/VvTextarea/index.ts +35 -35
- package/src/components/VvTooltip/VvTooltip.vue +22 -16
- package/src/components/VvTooltip/index.ts +12 -12
- package/src/components/common/HintSlot.ts +151 -152
- package/src/components/index.ts +10 -0
- package/src/composables/alert/{useInjectAlert.ts → useAlerInject.ts} +1 -1
- package/src/composables/alert/useAlert.ts +76 -73
- package/src/composables/alert/{useProvideAlert.ts → useAlertProvide.ts} +12 -12
- package/src/composables/dropdown/useDropdownContextmenu.ts +22 -0
- package/src/composables/dropdown/{useInjectDropdown.ts → useDropdownInject.ts} +6 -6
- package/src/composables/dropdown/useDropdownProvide.ts +94 -0
- package/src/composables/dropdown/useDropdownVirtualElement.ts +53 -0
- package/src/composables/group/useGroupStateInject.ts +55 -0
- package/src/composables/group/useGroupStateProvide.ts +14 -0
- package/src/composables/index.ts +3 -0
- package/src/composables/useBlurhash.ts +68 -0
- package/src/composables/useComponentFocus.ts +9 -9
- package/src/composables/useComponentIcon.ts +36 -35
- package/src/composables/useDebouncedInput.ts +25 -25
- package/src/composables/useDefaults.ts +81 -80
- package/src/composables/useModifiers.ts +29 -29
- package/src/composables/useOptions.ts +51 -42
- package/src/composables/usePersistence.ts +74 -0
- package/src/composables/useTextCount.ts +46 -46
- package/src/composables/useUniqueId.ts +4 -4
- package/src/composables/useVolver.ts +1 -1
- package/src/constants.ts +98 -83
- package/src/directives/index.ts +3 -6
- package/src/directives/v-contextmenu.ts +26 -34
- package/src/directives/v-tooltip.ts +20 -11
- package/src/icons.ts +2 -2
- package/src/index.ts +6 -4
- package/src/props/index.ts +461 -384
- package/src/resolvers/unplugin.ts +154 -144
- package/src/shims.d.ts +4 -5
- package/src/stories/Accordion/Accordion.settings.ts +51 -50
- package/src/stories/Accordion/Accordion.stories.ts +21 -21
- package/src/stories/Accordion/Accordion.test.ts +56 -54
- package/src/stories/Accordion/AccordionSlots.stories.ts +13 -13
- package/src/stories/AccordionGroup/AccordionGroup.settings.ts +70 -67
- package/src/stories/AccordionGroup/AccordionGroup.stories.ts +41 -39
- package/src/stories/AccordionGroup/AccordionGroup.test.ts +49 -45
- package/src/stories/AccordionGroup/AccordionGroupSlots.stories.ts +36 -36
- package/src/stories/Alert/Alert.settings.ts +117 -116
- package/src/stories/Alert/Alert.stories.ts +30 -30
- package/src/stories/Alert/Alert.test.ts +78 -80
- package/src/stories/Alert/AlertModifiers.stories.ts +45 -45
- package/src/stories/Alert/AlertSlots.stories.ts +35 -35
- package/src/stories/AlertGroup/AlertGroup.settings.ts +107 -105
- package/src/stories/AlertGroup/AlertGroup.stories.ts +25 -25
- package/src/stories/AlertGroup/AlertGroup.test.ts +69 -71
- package/src/stories/AlertGroup/AlertGroupPosition.stories.ts +68 -68
- package/src/stories/AlertGroup/AlertGroupSlots.stories.ts +23 -23
- package/src/stories/AlertGroup/AlertGroupWithComposable.stories.ts +58 -58
- package/src/stories/Avatar/Avatar.settings.ts +29 -29
- package/src/stories/Avatar/Avatar.stories.ts +22 -22
- package/src/stories/Avatar/Avatar.test.ts +22 -24
- package/src/stories/Avatar/AvatarBadge.stories.ts +15 -15
- package/src/stories/Avatar/AvatarModifiers.stories.ts +60 -60
- package/src/stories/Avatar/AvatarSlots.stories.ts +17 -17
- package/src/stories/AvatarGroup/AvatarGroup.settings.ts +54 -53
- package/src/stories/AvatarGroup/AvatarGroup.stories.ts +17 -17
- package/src/stories/AvatarGroup/AvatarGroup.test.ts +24 -26
- package/src/stories/AvatarGroup/AvatarGroupModifiers.stories.ts +15 -15
- package/src/stories/AvatarGroup/AvatarGroupSlotDefault.stories.ts +17 -17
- package/src/stories/Badge/Badge.settings.ts +21 -20
- package/src/stories/Badge/Badge.stories.ts +24 -24
- package/src/stories/Badge/Badge.test.ts +8 -8
- package/src/stories/Badge/BadgeSlots.stories.ts +10 -10
- package/src/stories/Blurhash/BlurhashComposable.stories.ts +116 -0
- package/src/stories/Breadcrumb/Breadcrumb.settings.ts +35 -34
- package/src/stories/Breadcrumb/Breadcrumb.stories.ts +23 -23
- package/src/stories/Breadcrumb/Breadcrumb.test.ts +44 -43
- package/src/stories/Breadcrumb/BreadcrumbSlots.stories.ts +19 -19
- package/src/stories/Button/Button.settings.ts +147 -151
- package/src/stories/Button/Button.stories.ts +19 -19
- package/src/stories/Button/Button.test.ts +41 -42
- package/src/stories/Button/ButtonIcon.stories.ts +42 -42
- package/src/stories/Button/ButtonLink.stories.ts +24 -24
- package/src/stories/Button/ButtonLoading.stories.ts +22 -22
- package/src/stories/Button/ButtonModifiers.stories.ts +91 -91
- package/src/stories/Button/ButtonSlots.stories.ts +47 -47
- package/src/stories/Button/ButtonState.stories.ts +23 -23
- package/src/stories/Button/ButtonToggle.stories.ts +30 -30
- package/src/stories/ButtonGroup/ButtonGroup.settings.ts +33 -24
- package/src/stories/ButtonGroup/ButtonGroup.stories.ts +19 -19
- package/src/stories/ButtonGroup/ButtonGroup.test.ts +23 -26
- package/src/stories/ButtonGroup/ButtonGroupModifiers.stories.ts +20 -20
- package/src/stories/ButtonGroup/ButtonGroupSlots.stories.ts +17 -17
- package/src/stories/ButtonGroup/ButtonGroupToggle.stories.ts +22 -22
- package/src/stories/Card/Card.settings.ts +49 -48
- package/src/stories/Card/Card.stories.ts +22 -22
- package/src/stories/Card/Card.test.ts +14 -16
- package/src/stories/Card/CardSlots.stories.ts +42 -42
- package/src/stories/Checkbox/Checkbox.settings.ts +36 -35
- package/src/stories/Checkbox/Checkbox.stories.ts +57 -57
- package/src/stories/Checkbox/Checkbox.test.ts +63 -66
- package/src/stories/Checkbox/CheckboxBinary.stories.ts +18 -18
- package/src/stories/Checkbox/CheckboxSlots.stories.ts +15 -15
- package/src/stories/CheckboxGroup/CheckboxGroup.settings.ts +9 -9
- package/src/stories/CheckboxGroup/CheckboxGroup.stories.ts +50 -50
- package/src/stories/CheckboxGroup/CheckboxGroup.test.ts +64 -68
- package/src/stories/CheckboxGroup/CheckboxGroupOptions.stories.ts +34 -34
- package/src/stories/CheckboxGroup/CheckboxGroupSlots.stories.ts +23 -23
- package/src/stories/Combobox/Combobox.settings.ts +408 -385
- package/src/stories/Combobox/Combobox.stories.ts +116 -107
- package/src/stories/Combobox/Combobox.test.ts +92 -92
- package/src/stories/Combobox/ComboboxIconPosition.stories.ts +25 -24
- package/src/stories/Combobox/ComboboxMultiple.stories.ts +32 -22
- package/src/stories/Combobox/ComboboxOptions.stories.ts +81 -84
- package/src/stories/Combobox/ComboboxSlots.stories.ts +55 -54
- package/src/stories/Dialog/Dialog.settings.ts +49 -40
- package/src/stories/Dialog/Dialog.stories.ts +28 -28
- package/src/stories/Dialog/Dialog.test.ts +49 -54
- package/src/stories/Dialog/DialogModifiers.stories.ts +42 -0
- package/src/stories/Dialog/DialogSlots.stories.ts +20 -20
- package/src/stories/Dropdown/Dropdown.settings.ts +62 -61
- package/src/stories/Dropdown/Dropdown.stories.ts +60 -60
- package/src/stories/Dropdown/Dropdown.test.ts +9 -13
- package/src/stories/Dropdown/DropdownContextmenuDirective.stories.ts +18 -19
- package/src/stories/Dropdown/DropdownMultilevel.stories.ts +19 -19
- package/src/stories/Dropdown/DropdownSlots.stories.ts +51 -51
- package/src/stories/Icon/Icon.settings.ts +66 -65
- package/src/stories/Icon/Icon.stories.ts +29 -30
- package/src/stories/Icon/IconsCollection.stories.ts +24 -24
- package/src/stories/InputFile/InputFile.settings.ts +37 -0
- package/src/stories/InputFile/InputFile.stories.ts +97 -0
- package/src/stories/InputFile/InputFileDropArea.stories.ts +56 -0
- package/src/stories/InputFile/InputFileIconPosition.stories.ts +43 -0
- package/src/stories/InputFile/InputFileSlots.stories.ts +33 -0
- package/src/stories/InputText/InputText.settings.ts +248 -246
- package/src/stories/InputText/InputText.stories.ts +68 -68
- package/src/stories/InputText/InputText.test.ts +119 -122
- package/src/stories/InputText/InputTextIconPosition.stories.ts +24 -24
- package/src/stories/InputText/InputTextLength.stories.ts +33 -33
- package/src/stories/InputText/InputTextMask.stories.ts +91 -91
- package/src/stories/InputText/InputTextMinMax.stories.ts +30 -30
- package/src/stories/InputText/InputTextSlots.stories.ts +20 -20
- package/src/stories/InputText/InputTextType.stories.ts +70 -70
- package/src/stories/Nav/Nav.settings.ts +27 -27
- package/src/stories/Nav/Nav.stories.ts +18 -18
- package/src/stories/Nav/Nav.test.ts +10 -12
- package/src/stories/Nav/NavModifiers.stories.ts +25 -25
- package/src/stories/Progress/Progress.settings.ts +24 -23
- package/src/stories/Progress/Progress.stories.ts +23 -23
- package/src/stories/Progress/Progress.test.ts +5 -5
- package/src/stories/Radio/Radio.settings.ts +9 -9
- package/src/stories/Radio/Radio.stories.ts +47 -47
- package/src/stories/Radio/Radio.test.ts +54 -57
- package/src/stories/Radio/RadioSlots.stories.ts +15 -15
- package/src/stories/RadioGroup/RadioGroup.settings.ts +9 -9
- package/src/stories/RadioGroup/RadioGroup.stories.ts +51 -52
- package/src/stories/RadioGroup/RadioGroup.test.ts +64 -68
- package/src/stories/RadioGroup/RadioGroupOptions.stories.ts +35 -35
- package/src/stories/RadioGroup/RadioGroupSlots.stories.ts +23 -23
- package/src/stories/Select/Select.settings.ts +72 -71
- package/src/stories/Select/Select.stories.ts +75 -66
- package/src/stories/Select/Select.test.ts +67 -70
- package/src/stories/Select/SelectIconPosition.stories.ts +27 -26
- package/src/stories/Select/SelectOptions.stories.ts +55 -55
- package/src/stories/Select/SelectSlots.stories.ts +21 -20
- package/src/stories/Tab/Tab.settings.ts +34 -34
- package/src/stories/Tab/Tab.stories.ts +16 -16
- package/src/stories/Tab/Tab.test.ts +17 -19
- package/src/stories/Textarea/Textarea.settings.ts +80 -78
- package/src/stories/Textarea/Textarea.stories.ts +63 -63
- package/src/stories/Textarea/Textarea.test.ts +70 -73
- package/src/stories/Textarea/TextareaLength.stories.ts +33 -33
- package/src/stories/Textarea/TextareaSlots.stories.ts +20 -20
- package/src/stories/Textarea/TextareatIconPosition.stories.ts +24 -24
- package/src/stories/Tooltip/Tooltip.settings.ts +16 -17
- package/src/stories/Tooltip/Tooltip.stories.ts +18 -18
- package/src/stories/Tooltip/Tooltip.test.ts +53 -54
- package/src/stories/Tooltip/TooltipDirective.stories.ts +37 -37
- package/src/stories/argTypes.ts +506 -505
- package/src/test/expect.ts +74 -79
- package/src/test/options.ts +17 -16
- package/src/test/sleep.ts +3 -2
- package/src/test/types.d.ts +12 -12
- package/src/types/alert.ts +21 -17
- package/src/types/blurhash.ts +21 -0
- package/src/types/floating-ui.ts +1 -1
- package/src/types/generic.ts +2 -3
- package/src/types/group.ts +35 -27
- package/src/types/index.ts +7 -0
- package/src/types/input-file.ts +10 -0
- package/src/types/nav.ts +13 -14
- package/src/utils/DomUtilities.ts +15 -0
- package/src/utils/ObjectUtilities.ts +192 -188
- package/src/workers/blurhash.ts +9 -0
- package/dist/composables/alert/useInjectAlert.d.ts +0 -9
- package/dist/composables/dropdown/useInjectDropdown.d.ts +0 -32
- package/dist/composables/group/useInjectedGroupState.d.ts +0 -10
- package/dist/composables/group/useProvideGroupState.d.ts +0 -6
- package/src/composables/dropdown/useProvideDropdown.ts +0 -94
- package/src/composables/group/useInjectedGroupState.ts +0 -51
- package/src/composables/group/useProvideGroupState.ts +0 -20
- /package/src/assets/icons/normal/{dulicate.svg → duplicate.svg} +0 -0
|
@@ -1,102 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { computed, isRef, defineComponent, h, inject, unref, mergeDefaults, ref, toRefs, openBlock, createBlock, mergeProps, createCommentVNode, watch, useId, useSlots, createElementBlock, normalizeClass, toDisplayString, createElementVNode, renderSlot, normalizeProps, guardReactiveProps, withDirectives, Fragment, renderList, vModelSelect, createVNode, createSlots, withCtx } from "vue";
|
|
2
2
|
import { iconExists, Icon, addIcon } from "@iconify/vue";
|
|
3
|
-
import { uid } from "uid";
|
|
4
3
|
import { useFocus, useElementVisibility } from "@vueuse/core";
|
|
5
4
|
import { get } from "ts-dot-prop";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Width
|
|
13
|
-
*/
|
|
14
|
-
width: {
|
|
15
|
-
type: [String, Number]
|
|
16
|
-
},
|
|
17
|
-
/**
|
|
18
|
-
* Height
|
|
19
|
-
*/
|
|
20
|
-
height: {
|
|
21
|
-
type: [String, Number]
|
|
22
|
-
},
|
|
23
|
-
/**
|
|
24
|
-
* Icon name
|
|
25
|
-
* Can be the full composition of iconify name "@{provider}:{prefix}:{name}" or "{prefix}:{name}" or "{name}"
|
|
26
|
-
* https://docs.iconify.design/api/providers.html#provider-in-icon-name
|
|
27
|
-
*/
|
|
28
|
-
name: {
|
|
29
|
-
type: String,
|
|
30
|
-
required: true
|
|
31
|
-
},
|
|
32
|
-
/**
|
|
33
|
-
* By default 'vv'
|
|
34
|
-
* If custom collection is not added with "addCollection" DS class method, this prop could not be used
|
|
35
|
-
* Icon provider: https://docs.iconify.design/api/providers.html#provider-in-icon-name
|
|
36
|
-
*/
|
|
37
|
-
provider: {
|
|
38
|
-
type: String
|
|
39
|
-
},
|
|
40
|
-
/**
|
|
41
|
-
* The name of icon set.
|
|
42
|
-
* Icon default options prefix: simple | normal | detailed
|
|
43
|
-
*/
|
|
44
|
-
prefix: {
|
|
45
|
-
type: String,
|
|
46
|
-
default: "normal"
|
|
47
|
-
},
|
|
48
|
-
/**
|
|
49
|
-
* Url remote SVG icon
|
|
50
|
-
*/
|
|
51
|
-
src: String,
|
|
52
|
-
/**
|
|
53
|
-
* Horizontal flip
|
|
54
|
-
*/
|
|
55
|
-
horizontalFlip: Boolean,
|
|
56
|
-
/**
|
|
57
|
-
* Vertical flip
|
|
58
|
-
*/
|
|
59
|
-
verticalFlip: Boolean,
|
|
60
|
-
/**
|
|
61
|
-
* String alternative to "horizontalFlip" and "verticalFlip".
|
|
62
|
-
* Example: https://docs.iconify.design/icon-components/vue/transform.html
|
|
63
|
-
*/
|
|
64
|
-
flip: String,
|
|
65
|
-
/**
|
|
66
|
-
* Icon render mode
|
|
67
|
-
* 'style' = 'bg' or 'mask', depending on icon content
|
|
68
|
-
* 'bg' = span with style using `background`
|
|
69
|
-
* 'mask' = span with style using `mask`
|
|
70
|
-
* 'svg' = svg
|
|
71
|
-
* Iconify doc: https://docs.iconify.design/iconify-icon/modes.html
|
|
72
|
-
*/
|
|
73
|
-
mode: String,
|
|
74
|
-
/**
|
|
75
|
-
* Toggles inline or block mode
|
|
76
|
-
* Example https://docs.iconify.design/icon-components/vue/inline.html
|
|
77
|
-
*/
|
|
78
|
-
inline: Boolean,
|
|
79
|
-
/**
|
|
80
|
-
* rotates icon
|
|
81
|
-
* Example https://docs.iconify.design/icon-components/vue/transform.html
|
|
82
|
-
*/
|
|
83
|
-
rotate: [Number, String],
|
|
84
|
-
/**
|
|
85
|
-
* A callback that is called when icon data has been loaded
|
|
86
|
-
*/
|
|
87
|
-
onLoad: Function,
|
|
88
|
-
/**
|
|
89
|
-
* SVG icon string
|
|
90
|
-
*/
|
|
91
|
-
svg: String,
|
|
92
|
-
/**
|
|
93
|
-
* Icon modifiers: vv-icon css helper classes, value/s are concatened with prefix 'vv-icon--'
|
|
94
|
-
* @values string | string[]
|
|
95
|
-
*/
|
|
96
|
-
modifiers: {
|
|
97
|
-
type: [String, Array]
|
|
98
|
-
}
|
|
99
|
-
};
|
|
5
|
+
var StorageType = /* @__PURE__ */ ((StorageType2) => {
|
|
6
|
+
StorageType2["local"] = "local";
|
|
7
|
+
StorageType2["session"] = "session";
|
|
8
|
+
return StorageType2;
|
|
9
|
+
})(StorageType || {});
|
|
100
10
|
var Strategy = /* @__PURE__ */ ((Strategy2) => {
|
|
101
11
|
Strategy2["absolute"] = "absolute";
|
|
102
12
|
Strategy2["fixed"] = "fixed";
|
|
@@ -131,260 +41,14 @@ var ButtonType = /* @__PURE__ */ ((ButtonType2) => {
|
|
|
131
41
|
ButtonType2["reset"] = "reset";
|
|
132
42
|
return ButtonType2;
|
|
133
43
|
})(ButtonType || {});
|
|
134
|
-
var
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
return
|
|
140
|
-
})(
|
|
44
|
+
var ActionTag = /* @__PURE__ */ ((ActionTag2) => {
|
|
45
|
+
ActionTag2["nuxtLink"] = "nuxt-link";
|
|
46
|
+
ActionTag2["routerLink"] = "router-link";
|
|
47
|
+
ActionTag2["a"] = "a";
|
|
48
|
+
ActionTag2["button"] = "button";
|
|
49
|
+
return ActionTag2;
|
|
50
|
+
})(ActionTag || {});
|
|
141
51
|
const INJECTION_KEY_VOLVER = Symbol.for("volver");
|
|
142
|
-
function useVolver() {
|
|
143
|
-
return inject(INJECTION_KEY_VOLVER);
|
|
144
|
-
}
|
|
145
|
-
function useModifiers(prefix, modifiers, others) {
|
|
146
|
-
return computed(() => {
|
|
147
|
-
const toReturn = {
|
|
148
|
-
[prefix]: true
|
|
149
|
-
};
|
|
150
|
-
const modifiersArray = typeof (modifiers == null ? void 0 : modifiers.value) === "string" ? modifiers.value.split(" ") : modifiers == null ? void 0 : modifiers.value;
|
|
151
|
-
if (modifiersArray) {
|
|
152
|
-
if (Array.isArray(modifiersArray)) {
|
|
153
|
-
modifiersArray.forEach((modifier) => {
|
|
154
|
-
if (modifier) {
|
|
155
|
-
toReturn[`${prefix}--${modifier}`] = true;
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
if (others) {
|
|
161
|
-
Object.keys(others.value).forEach((key) => {
|
|
162
|
-
toReturn[`${prefix}--${key}`] = unref(others.value[key]);
|
|
163
|
-
});
|
|
164
|
-
}
|
|
165
|
-
return toReturn;
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
const __default__$1 = {
|
|
169
|
-
name: "VvIcon"
|
|
170
|
-
};
|
|
171
|
-
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
172
|
-
...__default__$1,
|
|
173
|
-
props: VvIconProps,
|
|
174
|
-
setup(__props) {
|
|
175
|
-
const props = __props;
|
|
176
|
-
const hasRotate = computed(() => {
|
|
177
|
-
if (typeof props.rotate === "string") {
|
|
178
|
-
return parseFloat(props.rotate);
|
|
179
|
-
}
|
|
180
|
-
return props.rotate;
|
|
181
|
-
});
|
|
182
|
-
const show = ref(true);
|
|
183
|
-
const volver = useVolver();
|
|
184
|
-
const { modifiers } = toRefs(props);
|
|
185
|
-
const bemCssClasses = useModifiers("vv-icon", modifiers);
|
|
186
|
-
const provider = computed(() => {
|
|
187
|
-
return props.provider || (volver == null ? void 0 : volver.iconsProvider);
|
|
188
|
-
});
|
|
189
|
-
const icon = computed(() => {
|
|
190
|
-
const name = props.name ?? "";
|
|
191
|
-
const iconName = `@${provider.value}:${props.prefix}:${name}`;
|
|
192
|
-
if (iconExists(iconName)) {
|
|
193
|
-
return iconName;
|
|
194
|
-
}
|
|
195
|
-
const iconsCollection = volver == null ? void 0 : volver.iconsCollections.find(
|
|
196
|
-
(iconsCollection2) => {
|
|
197
|
-
const icon2 = `@${provider.value}:${iconsCollection2.prefix}:${name}`;
|
|
198
|
-
return iconExists(icon2);
|
|
199
|
-
}
|
|
200
|
-
);
|
|
201
|
-
if (iconsCollection) {
|
|
202
|
-
return `@${provider.value}:${iconsCollection.prefix}:${name}`;
|
|
203
|
-
}
|
|
204
|
-
return name;
|
|
205
|
-
});
|
|
206
|
-
function getSvgContent(svg) {
|
|
207
|
-
let dom;
|
|
208
|
-
if (typeof window === "undefined") {
|
|
209
|
-
const { JSDOM } = require("jsdom");
|
|
210
|
-
dom = new JSDOM().window;
|
|
211
|
-
}
|
|
212
|
-
const domParser = dom ? new dom.DOMParser() : new window.DOMParser();
|
|
213
|
-
const svgDomString = domParser.parseFromString(svg, "text/html");
|
|
214
|
-
const svgEl = svgDomString.querySelector("svg");
|
|
215
|
-
return svgEl;
|
|
216
|
-
}
|
|
217
|
-
function addIconFromSvg(svg) {
|
|
218
|
-
const svgContentEl = getSvgContent(svg);
|
|
219
|
-
const svgContent = (svgContentEl == null ? void 0 : svgContentEl.innerHTML.trim()) || "";
|
|
220
|
-
if (svgContentEl && svgContent) {
|
|
221
|
-
addIcon(`@${provider.value}:${props.prefix}:${props.name}`, {
|
|
222
|
-
body: svgContent,
|
|
223
|
-
// Set height and width from svg content
|
|
224
|
-
height: svgContentEl.viewBox.baseVal.height,
|
|
225
|
-
width: svgContentEl.viewBox.baseVal.width
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
if (volver) {
|
|
230
|
-
if (props.src && !iconExists(`@${provider.value}:${props.prefix}:${props.name}`)) {
|
|
231
|
-
show.value = false;
|
|
232
|
-
volver.fetchIcon(props.src).then((svg) => {
|
|
233
|
-
if (svg) {
|
|
234
|
-
addIconFromSvg(svg);
|
|
235
|
-
show.value = true;
|
|
236
|
-
}
|
|
237
|
-
}).catch((e) => {
|
|
238
|
-
throw new Error(`Error during fetch icon: ${e == null ? void 0 : e.message}`);
|
|
239
|
-
});
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
if (props.svg) {
|
|
243
|
-
addIconFromSvg(props.svg);
|
|
244
|
-
}
|
|
245
|
-
return (_ctx, _cache) => {
|
|
246
|
-
return unref(show) ? (openBlock(), createBlock(unref(Icon), mergeProps({
|
|
247
|
-
key: 0,
|
|
248
|
-
class: unref(bemCssClasses)
|
|
249
|
-
}, {
|
|
250
|
-
inline: _ctx.inline,
|
|
251
|
-
width: _ctx.width,
|
|
252
|
-
height: _ctx.height,
|
|
253
|
-
horizontalFlip: _ctx.horizontalFlip,
|
|
254
|
-
verticalFlip: _ctx.verticalFlip,
|
|
255
|
-
flip: _ctx.flip,
|
|
256
|
-
rotate: unref(hasRotate),
|
|
257
|
-
color: _ctx.color,
|
|
258
|
-
onLoad: _ctx.onLoad,
|
|
259
|
-
icon: unref(icon)
|
|
260
|
-
}), null, 16, ["class"])) : createCommentVNode("", true);
|
|
261
|
-
};
|
|
262
|
-
}
|
|
263
|
-
});
|
|
264
|
-
function isEmpty(value) {
|
|
265
|
-
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));
|
|
266
|
-
}
|
|
267
|
-
function isString(value) {
|
|
268
|
-
return typeof value === "string" || value instanceof String;
|
|
269
|
-
}
|
|
270
|
-
function joinLines(items) {
|
|
271
|
-
if (Array.isArray(items)) {
|
|
272
|
-
return items.filter((item) => isString(item)).join(" ");
|
|
273
|
-
}
|
|
274
|
-
return items;
|
|
275
|
-
}
|
|
276
|
-
function HintSlotFactory(propsOrRef, slots) {
|
|
277
|
-
const props = computed(() => {
|
|
278
|
-
if (isRef(propsOrRef)) {
|
|
279
|
-
return propsOrRef.value;
|
|
280
|
-
}
|
|
281
|
-
return propsOrRef;
|
|
282
|
-
});
|
|
283
|
-
const invalidLabel = computed(() => joinLines(props.value.invalidLabel));
|
|
284
|
-
const validLabel = computed(() => joinLines(props.value.validLabel));
|
|
285
|
-
const loadingLabel = computed(() => props.value.loadingLabel);
|
|
286
|
-
const hintLabel = computed(() => props.value.hintLabel);
|
|
287
|
-
const hasLoadingLabelOrSlot = computed(
|
|
288
|
-
() => Boolean(props.value.loading && (slots.loading || loadingLabel.value))
|
|
289
|
-
);
|
|
290
|
-
const hasInvalidLabelOrSlot = computed(
|
|
291
|
-
() => !hasLoadingLabelOrSlot.value && Boolean(
|
|
292
|
-
props.value.invalid && (slots.invalid || invalidLabel.value)
|
|
293
|
-
)
|
|
294
|
-
);
|
|
295
|
-
const hasValidLabelOrSlot = computed(
|
|
296
|
-
() => !hasLoadingLabelOrSlot.value && !hasInvalidLabelOrSlot.value && Boolean(props.value.valid && (slots.valid || validLabel.value))
|
|
297
|
-
);
|
|
298
|
-
const hasHintLabelOrSlot = computed(
|
|
299
|
-
() => !hasLoadingLabelOrSlot.value && !hasInvalidLabelOrSlot.value && !hasValidLabelOrSlot.value && Boolean(slots.hint || hintLabel.value)
|
|
300
|
-
);
|
|
301
|
-
const isVisible = computed(
|
|
302
|
-
() => hasInvalidLabelOrSlot.value || hasValidLabelOrSlot.value || hasLoadingLabelOrSlot.value || hasHintLabelOrSlot.value
|
|
303
|
-
);
|
|
304
|
-
const hintSlotScope = computed(() => ({
|
|
305
|
-
modelValue: props.value.modelValue,
|
|
306
|
-
valid: props.value.valid,
|
|
307
|
-
invalid: props.value.invalid,
|
|
308
|
-
loading: props.value.loading
|
|
309
|
-
}));
|
|
310
|
-
const HintSlot = defineComponent({
|
|
311
|
-
name: "HintSlot",
|
|
312
|
-
props: {
|
|
313
|
-
tag: {
|
|
314
|
-
type: String,
|
|
315
|
-
default: "small"
|
|
316
|
-
}
|
|
317
|
-
},
|
|
318
|
-
setup() {
|
|
319
|
-
return {
|
|
320
|
-
isVisible,
|
|
321
|
-
invalidLabel,
|
|
322
|
-
validLabel,
|
|
323
|
-
loadingLabel,
|
|
324
|
-
hintLabel,
|
|
325
|
-
hasInvalidLabelOrSlot,
|
|
326
|
-
hasValidLabelOrSlot,
|
|
327
|
-
hasLoadingLabelOrSlot,
|
|
328
|
-
hasHintLabelOrSlot
|
|
329
|
-
};
|
|
330
|
-
},
|
|
331
|
-
render() {
|
|
332
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
333
|
-
if (this.isVisible) {
|
|
334
|
-
let role;
|
|
335
|
-
if (this.hasInvalidLabelOrSlot) {
|
|
336
|
-
role = "alert";
|
|
337
|
-
}
|
|
338
|
-
if (this.hasValidLabelOrSlot) {
|
|
339
|
-
role = "status";
|
|
340
|
-
}
|
|
341
|
-
if (this.hasLoadingLabelOrSlot) {
|
|
342
|
-
return h(
|
|
343
|
-
this.tag,
|
|
344
|
-
{
|
|
345
|
-
role
|
|
346
|
-
},
|
|
347
|
-
((_b = (_a = this.$slots).loading) == null ? void 0 : _b.call(_a)) ?? this.loadingLabel
|
|
348
|
-
);
|
|
349
|
-
}
|
|
350
|
-
if (this.hasInvalidLabelOrSlot) {
|
|
351
|
-
return h(
|
|
352
|
-
this.tag,
|
|
353
|
-
{
|
|
354
|
-
role
|
|
355
|
-
},
|
|
356
|
-
((_d = (_c = this.$slots).invalid) == null ? void 0 : _d.call(_c)) ?? this.$slots.invalid ?? this.invalidLabel
|
|
357
|
-
);
|
|
358
|
-
}
|
|
359
|
-
if (this.hasValidLabelOrSlot) {
|
|
360
|
-
return h(
|
|
361
|
-
this.tag,
|
|
362
|
-
{
|
|
363
|
-
role
|
|
364
|
-
},
|
|
365
|
-
((_f = (_e = this.$slots).valid) == null ? void 0 : _f.call(_e)) ?? this.validLabel
|
|
366
|
-
);
|
|
367
|
-
}
|
|
368
|
-
return h(
|
|
369
|
-
this.tag,
|
|
370
|
-
{
|
|
371
|
-
role
|
|
372
|
-
},
|
|
373
|
-
((_h = (_g = this.$slots).hint) == null ? void 0 : _h.call(_g)) ?? this.$slots.hint ?? this.hintLabel
|
|
374
|
-
);
|
|
375
|
-
}
|
|
376
|
-
return null;
|
|
377
|
-
}
|
|
378
|
-
});
|
|
379
|
-
return {
|
|
380
|
-
hasInvalidLabelOrSlot,
|
|
381
|
-
hasHintLabelOrSlot,
|
|
382
|
-
hasValidLabelOrSlot,
|
|
383
|
-
hasLoadingLabelOrSlot,
|
|
384
|
-
hintSlotScope,
|
|
385
|
-
HintSlot
|
|
386
|
-
};
|
|
387
|
-
}
|
|
388
52
|
const LinkProps = {
|
|
389
53
|
/**
|
|
390
54
|
* The router-link/nuxt-link property, if it is defined the button is rendered as a ruouter-link or nuxt-link.
|
|
@@ -399,11 +63,8 @@ const LinkProps = {
|
|
|
399
63
|
href: String,
|
|
400
64
|
/**
|
|
401
65
|
* Anchor target
|
|
402
|
-
*/
|
|
403
|
-
target:
|
|
404
|
-
type: String,
|
|
405
|
-
validator: (value) => Object.values(AnchorTarget).includes(value)
|
|
406
|
-
},
|
|
66
|
+
*/
|
|
67
|
+
target: String,
|
|
407
68
|
/**
|
|
408
69
|
* Anchor rel
|
|
409
70
|
*/
|
|
@@ -416,27 +77,33 @@ const ValidProps = {
|
|
|
416
77
|
/**
|
|
417
78
|
* Valid status
|
|
418
79
|
*/
|
|
419
|
-
valid: Boolean,
|
|
80
|
+
valid: { type: Boolean, default: false },
|
|
420
81
|
/**
|
|
421
82
|
* Valid label
|
|
422
83
|
*/
|
|
423
|
-
validLabel: [String, Array]
|
|
84
|
+
validLabel: { type: [String, Array], default: void 0 }
|
|
424
85
|
};
|
|
425
86
|
const InvalidProps = {
|
|
426
87
|
/**
|
|
427
88
|
* Invalid status
|
|
428
89
|
*/
|
|
429
|
-
invalid:
|
|
90
|
+
invalid: {
|
|
91
|
+
type: Boolean,
|
|
92
|
+
default: false
|
|
93
|
+
},
|
|
430
94
|
/**
|
|
431
95
|
* Invalid label
|
|
432
96
|
*/
|
|
433
|
-
invalidLabel: [String, Array]
|
|
97
|
+
invalidLabel: { type: [String, Array], default: void 0 }
|
|
434
98
|
};
|
|
435
99
|
const LoadingProps = {
|
|
436
100
|
/**
|
|
437
101
|
* Loading status
|
|
438
102
|
*/
|
|
439
|
-
loading:
|
|
103
|
+
loading: {
|
|
104
|
+
type: Boolean,
|
|
105
|
+
default: false
|
|
106
|
+
},
|
|
440
107
|
/**
|
|
441
108
|
* Loading label
|
|
442
109
|
*/
|
|
@@ -449,43 +116,64 @@ const DisabledProps = {
|
|
|
449
116
|
/**
|
|
450
117
|
* Whether the form control is disabled
|
|
451
118
|
*/
|
|
452
|
-
disabled:
|
|
119
|
+
disabled: {
|
|
120
|
+
type: Boolean,
|
|
121
|
+
default: false
|
|
122
|
+
}
|
|
453
123
|
};
|
|
454
124
|
const ActiveProps = {
|
|
455
125
|
/**
|
|
456
126
|
* Whether the item is active
|
|
457
127
|
*/
|
|
458
|
-
active:
|
|
128
|
+
active: {
|
|
129
|
+
type: Boolean,
|
|
130
|
+
default: false
|
|
131
|
+
}
|
|
459
132
|
};
|
|
460
133
|
const CurrentProps = {
|
|
461
134
|
/**
|
|
462
135
|
* Whether the item is current
|
|
463
136
|
*/
|
|
464
|
-
current:
|
|
137
|
+
current: {
|
|
138
|
+
type: Boolean,
|
|
139
|
+
default: false
|
|
140
|
+
}
|
|
465
141
|
};
|
|
466
142
|
const PressedProps = {
|
|
467
143
|
/**
|
|
468
144
|
* Whether the item is pressed
|
|
469
145
|
*/
|
|
470
|
-
pressed:
|
|
146
|
+
pressed: {
|
|
147
|
+
type: Boolean,
|
|
148
|
+
default: false
|
|
149
|
+
}
|
|
471
150
|
};
|
|
472
151
|
const LabelProps = {
|
|
473
152
|
/**
|
|
474
153
|
* The item label
|
|
475
154
|
*/
|
|
476
|
-
label:
|
|
155
|
+
label: {
|
|
156
|
+
type: [String, Number],
|
|
157
|
+
default: void 0
|
|
158
|
+
}
|
|
477
159
|
};
|
|
478
160
|
const ReadonlyProps = {
|
|
479
161
|
/**
|
|
480
162
|
* The value is not editable
|
|
481
163
|
*/
|
|
482
|
-
readonly:
|
|
164
|
+
readonly: {
|
|
165
|
+
type: Boolean,
|
|
166
|
+
default: false
|
|
167
|
+
}
|
|
483
168
|
};
|
|
484
169
|
const ModifiersProps = {
|
|
485
170
|
/**
|
|
486
171
|
* Component BEM modifiers
|
|
487
172
|
*/
|
|
488
|
-
modifiers:
|
|
173
|
+
modifiers: {
|
|
174
|
+
type: [String, Array],
|
|
175
|
+
default: void 0
|
|
176
|
+
}
|
|
489
177
|
};
|
|
490
178
|
const HintProps = {
|
|
491
179
|
hintLabel: { type: String, default: "" }
|
|
@@ -516,7 +204,10 @@ const IconProps = {
|
|
|
516
204
|
* VvIcon name or props
|
|
517
205
|
* @see VVIcon
|
|
518
206
|
*/
|
|
519
|
-
icon: {
|
|
207
|
+
icon: {
|
|
208
|
+
type: [String, Object],
|
|
209
|
+
default: void 0
|
|
210
|
+
},
|
|
520
211
|
/**
|
|
521
212
|
* VvIcon position
|
|
522
213
|
*/
|
|
@@ -537,7 +228,10 @@ const FloatingLabelProps = {
|
|
|
537
228
|
/**
|
|
538
229
|
* If true the label will be floating
|
|
539
230
|
*/
|
|
540
|
-
floating:
|
|
231
|
+
floating: {
|
|
232
|
+
type: Boolean,
|
|
233
|
+
default: false
|
|
234
|
+
}
|
|
541
235
|
};
|
|
542
236
|
const UnselectableProps = {
|
|
543
237
|
/**
|
|
@@ -573,7 +267,8 @@ const IdProps = {
|
|
|
573
267
|
* Dropdown show / hide transition name
|
|
574
268
|
*/
|
|
575
269
|
transitionName: {
|
|
576
|
-
type: String
|
|
270
|
+
type: String,
|
|
271
|
+
default: void 0
|
|
577
272
|
},
|
|
578
273
|
/**
|
|
579
274
|
* Offset of the dropdown from the trigger
|
|
@@ -641,7 +336,8 @@ const IdProps = {
|
|
|
641
336
|
* Set dropdown width to the same as the trigger
|
|
642
337
|
*/
|
|
643
338
|
triggerWidth: {
|
|
644
|
-
type: Boolean
|
|
339
|
+
type: Boolean,
|
|
340
|
+
default: false
|
|
645
341
|
}
|
|
646
342
|
});
|
|
647
343
|
const IdNameProps = {
|
|
@@ -658,7 +354,10 @@ const AutofocusProps = {
|
|
|
658
354
|
* Global attribute autofocus
|
|
659
355
|
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus
|
|
660
356
|
*/
|
|
661
|
-
autofocus:
|
|
357
|
+
autofocus: {
|
|
358
|
+
type: Boolean,
|
|
359
|
+
default: false
|
|
360
|
+
}
|
|
662
361
|
};
|
|
663
362
|
const AutocompleteProps = {
|
|
664
363
|
/**
|
|
@@ -667,78 +366,373 @@ const AutocompleteProps = {
|
|
|
667
366
|
*/
|
|
668
367
|
autocomplete: { type: String, default: "off" }
|
|
669
368
|
};
|
|
670
|
-
({
|
|
671
|
-
...DisabledProps,
|
|
672
|
-
...LabelProps,
|
|
673
|
-
...PressedProps,
|
|
674
|
-
...ActiveProps,
|
|
675
|
-
...CurrentProps,
|
|
676
|
-
...LinkProps,
|
|
677
|
-
/**
|
|
678
|
-
* Button type
|
|
679
|
-
*/
|
|
680
|
-
type: {
|
|
681
|
-
type: String,
|
|
682
|
-
default: ButtonType.button,
|
|
683
|
-
validator: (value) => Object.values(ButtonType).includes(value)
|
|
684
|
-
},
|
|
685
|
-
/**
|
|
686
|
-
* Button aria-label
|
|
687
|
-
*/
|
|
688
|
-
ariaLabel: {
|
|
689
|
-
type: String,
|
|
690
|
-
default: void 0
|
|
369
|
+
({
|
|
370
|
+
...DisabledProps,
|
|
371
|
+
...LabelProps,
|
|
372
|
+
...PressedProps,
|
|
373
|
+
...ActiveProps,
|
|
374
|
+
...CurrentProps,
|
|
375
|
+
...LinkProps,
|
|
376
|
+
/**
|
|
377
|
+
* Button type
|
|
378
|
+
*/
|
|
379
|
+
type: {
|
|
380
|
+
type: String,
|
|
381
|
+
default: ButtonType.button,
|
|
382
|
+
validator: (value) => Object.values(ButtonType).includes(value)
|
|
383
|
+
},
|
|
384
|
+
/**
|
|
385
|
+
* Button aria-label
|
|
386
|
+
*/
|
|
387
|
+
ariaLabel: {
|
|
388
|
+
type: String,
|
|
389
|
+
default: void 0
|
|
390
|
+
},
|
|
391
|
+
/**
|
|
392
|
+
* Default tag for the action
|
|
393
|
+
*/
|
|
394
|
+
defaultTag: {
|
|
395
|
+
type: String,
|
|
396
|
+
default: ActionTag.button
|
|
397
|
+
}
|
|
398
|
+
});
|
|
399
|
+
({
|
|
400
|
+
storageType: {
|
|
401
|
+
type: String,
|
|
402
|
+
default: StorageType.local,
|
|
403
|
+
validator: (value) => Object.values(StorageType).includes(value)
|
|
404
|
+
},
|
|
405
|
+
storageKey: String
|
|
406
|
+
});
|
|
407
|
+
const VvSelectProps = {
|
|
408
|
+
...IdNameProps,
|
|
409
|
+
...AutofocusProps,
|
|
410
|
+
...AutocompleteProps,
|
|
411
|
+
...TabindexProps,
|
|
412
|
+
...ValidProps,
|
|
413
|
+
...InvalidProps,
|
|
414
|
+
...HintProps,
|
|
415
|
+
...LoadingProps,
|
|
416
|
+
...DisabledProps,
|
|
417
|
+
...ReadonlyProps,
|
|
418
|
+
...ModifiersProps,
|
|
419
|
+
...OptionsProps,
|
|
420
|
+
...IconProps,
|
|
421
|
+
...FloatingLabelProps,
|
|
422
|
+
...UnselectableProps,
|
|
423
|
+
...LabelProps,
|
|
424
|
+
/**
|
|
425
|
+
* This Boolean attribute indicates that multiple options can be selected in the list.
|
|
426
|
+
* If it is not specified, then only one option can be selected at a time.
|
|
427
|
+
* When multiple is specified, most browsers will show a scrolling list box instead of a single line dropdown.
|
|
428
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple
|
|
429
|
+
*/
|
|
430
|
+
multiple: Boolean,
|
|
431
|
+
/**
|
|
432
|
+
* A Boolean attribute indicating that an option with a non-empty string value must be selected.
|
|
433
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-required
|
|
434
|
+
*/
|
|
435
|
+
required: Boolean,
|
|
436
|
+
/**
|
|
437
|
+
* If the control is presented as a scrolling list box (e.g. when multiple is specified),
|
|
438
|
+
* this attribute represents the number of rows in the list that should be visible at one time.
|
|
439
|
+
* Browsers are not required to present a select element as a scrolled list box. The default value is 0.
|
|
440
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-size
|
|
441
|
+
*/
|
|
442
|
+
size: [String, Number],
|
|
443
|
+
/**
|
|
444
|
+
* modelValue can be a string, number, boolean, object or array of string, number, boolean, object
|
|
445
|
+
*/
|
|
446
|
+
modelValue: {
|
|
447
|
+
type: [String, Number, Boolean, Object, Array],
|
|
448
|
+
default: void 0
|
|
449
|
+
},
|
|
450
|
+
/**
|
|
451
|
+
* Select first option automatically
|
|
452
|
+
*/
|
|
453
|
+
autoselectFirst: {
|
|
454
|
+
type: Boolean,
|
|
455
|
+
default: false
|
|
456
|
+
},
|
|
457
|
+
/**
|
|
458
|
+
* Select placeholder
|
|
459
|
+
*/
|
|
460
|
+
placeholder: String
|
|
461
|
+
};
|
|
462
|
+
function useVvSelectProps() {
|
|
463
|
+
return {
|
|
464
|
+
...VvSelectProps,
|
|
465
|
+
options: {
|
|
466
|
+
...VvSelectProps.options,
|
|
467
|
+
type: Array,
|
|
468
|
+
default: () => []
|
|
469
|
+
}
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
function isString(value) {
|
|
473
|
+
return typeof value === "string" || value instanceof String;
|
|
474
|
+
}
|
|
475
|
+
function joinLines(items) {
|
|
476
|
+
if (Array.isArray(items)) {
|
|
477
|
+
return items.filter((item) => isString(item)).join(" ");
|
|
478
|
+
}
|
|
479
|
+
return items;
|
|
480
|
+
}
|
|
481
|
+
function HintSlotFactory(propsOrRef, slots) {
|
|
482
|
+
const props = computed(() => {
|
|
483
|
+
if (isRef(propsOrRef)) {
|
|
484
|
+
return propsOrRef.value;
|
|
485
|
+
}
|
|
486
|
+
return propsOrRef;
|
|
487
|
+
});
|
|
488
|
+
const invalidLabel = computed(() => joinLines(props.value.invalidLabel));
|
|
489
|
+
const validLabel = computed(() => joinLines(props.value.validLabel));
|
|
490
|
+
const loadingLabel = computed(() => props.value.loadingLabel);
|
|
491
|
+
const hintLabel = computed(() => props.value.hintLabel);
|
|
492
|
+
const hasLoadingLabelOrSlot = computed(
|
|
493
|
+
() => Boolean(props.value.loading && (slots.loading || loadingLabel.value))
|
|
494
|
+
);
|
|
495
|
+
const hasInvalidLabelOrSlot = computed(
|
|
496
|
+
() => !hasLoadingLabelOrSlot.value && Boolean(
|
|
497
|
+
props.value.invalid && (slots.invalid || invalidLabel.value)
|
|
498
|
+
)
|
|
499
|
+
);
|
|
500
|
+
const hasValidLabelOrSlot = computed(
|
|
501
|
+
() => !hasLoadingLabelOrSlot.value && !hasInvalidLabelOrSlot.value && Boolean(props.value.valid && (slots.valid || validLabel.value))
|
|
502
|
+
);
|
|
503
|
+
const hasHintLabelOrSlot = computed(
|
|
504
|
+
() => !hasLoadingLabelOrSlot.value && !hasInvalidLabelOrSlot.value && !hasValidLabelOrSlot.value && Boolean(slots.hint || hintLabel.value)
|
|
505
|
+
);
|
|
506
|
+
const isVisible = computed(
|
|
507
|
+
() => hasInvalidLabelOrSlot.value || hasValidLabelOrSlot.value || hasLoadingLabelOrSlot.value || hasHintLabelOrSlot.value
|
|
508
|
+
);
|
|
509
|
+
const hintSlotScope = computed(() => ({
|
|
510
|
+
modelValue: props.value.modelValue,
|
|
511
|
+
valid: props.value.valid,
|
|
512
|
+
invalid: props.value.invalid,
|
|
513
|
+
loading: props.value.loading
|
|
514
|
+
}));
|
|
515
|
+
const HintSlot = defineComponent({
|
|
516
|
+
name: "HintSlot",
|
|
517
|
+
props: {
|
|
518
|
+
tag: {
|
|
519
|
+
type: String,
|
|
520
|
+
default: "small"
|
|
521
|
+
}
|
|
522
|
+
},
|
|
523
|
+
setup() {
|
|
524
|
+
return {
|
|
525
|
+
isVisible,
|
|
526
|
+
invalidLabel,
|
|
527
|
+
validLabel,
|
|
528
|
+
loadingLabel,
|
|
529
|
+
hintLabel,
|
|
530
|
+
hasInvalidLabelOrSlot,
|
|
531
|
+
hasValidLabelOrSlot,
|
|
532
|
+
hasLoadingLabelOrSlot,
|
|
533
|
+
hasHintLabelOrSlot
|
|
534
|
+
};
|
|
535
|
+
},
|
|
536
|
+
render() {
|
|
537
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
538
|
+
if (this.isVisible) {
|
|
539
|
+
let role;
|
|
540
|
+
if (this.hasInvalidLabelOrSlot) {
|
|
541
|
+
role = "alert";
|
|
542
|
+
}
|
|
543
|
+
if (this.hasValidLabelOrSlot) {
|
|
544
|
+
role = "status";
|
|
545
|
+
}
|
|
546
|
+
if (this.hasLoadingLabelOrSlot) {
|
|
547
|
+
return h(
|
|
548
|
+
this.tag,
|
|
549
|
+
{
|
|
550
|
+
role
|
|
551
|
+
},
|
|
552
|
+
((_b = (_a = this.$slots).loading) == null ? void 0 : _b.call(_a)) ?? this.loadingLabel
|
|
553
|
+
);
|
|
554
|
+
}
|
|
555
|
+
if (this.hasInvalidLabelOrSlot) {
|
|
556
|
+
return h(
|
|
557
|
+
this.tag,
|
|
558
|
+
{
|
|
559
|
+
role
|
|
560
|
+
},
|
|
561
|
+
((_d = (_c = this.$slots).invalid) == null ? void 0 : _d.call(_c)) ?? this.$slots.invalid ?? this.invalidLabel
|
|
562
|
+
);
|
|
563
|
+
}
|
|
564
|
+
if (this.hasValidLabelOrSlot) {
|
|
565
|
+
return h(
|
|
566
|
+
this.tag,
|
|
567
|
+
{
|
|
568
|
+
role
|
|
569
|
+
},
|
|
570
|
+
((_f = (_e = this.$slots).valid) == null ? void 0 : _f.call(_e)) ?? this.validLabel
|
|
571
|
+
);
|
|
572
|
+
}
|
|
573
|
+
return h(
|
|
574
|
+
this.tag,
|
|
575
|
+
{
|
|
576
|
+
role
|
|
577
|
+
},
|
|
578
|
+
((_h = (_g = this.$slots).hint) == null ? void 0 : _h.call(_g)) ?? this.$slots.hint ?? this.hintLabel
|
|
579
|
+
);
|
|
580
|
+
}
|
|
581
|
+
return null;
|
|
582
|
+
}
|
|
583
|
+
});
|
|
584
|
+
return {
|
|
585
|
+
hasInvalidLabelOrSlot,
|
|
586
|
+
hasHintLabelOrSlot,
|
|
587
|
+
hasValidLabelOrSlot,
|
|
588
|
+
hasLoadingLabelOrSlot,
|
|
589
|
+
hintSlotScope,
|
|
590
|
+
HintSlot
|
|
591
|
+
};
|
|
592
|
+
}
|
|
593
|
+
const VvIconPropsDefaults = {
|
|
594
|
+
prefix: "normal"
|
|
595
|
+
/* normal */
|
|
596
|
+
};
|
|
597
|
+
function useVolver() {
|
|
598
|
+
return inject(INJECTION_KEY_VOLVER);
|
|
599
|
+
}
|
|
600
|
+
function useModifiers(prefix, modifiers, others) {
|
|
601
|
+
return computed(() => {
|
|
602
|
+
const toReturn = {
|
|
603
|
+
[prefix]: true
|
|
604
|
+
};
|
|
605
|
+
const modifiersArray = typeof (modifiers == null ? void 0 : modifiers.value) === "string" ? modifiers.value.split(" ") : modifiers == null ? void 0 : modifiers.value;
|
|
606
|
+
if (modifiersArray) {
|
|
607
|
+
if (Array.isArray(modifiersArray)) {
|
|
608
|
+
modifiersArray.forEach((modifier) => {
|
|
609
|
+
if (modifier) {
|
|
610
|
+
toReturn[`${prefix}--${modifier}`] = true;
|
|
611
|
+
}
|
|
612
|
+
});
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
if (others) {
|
|
616
|
+
Object.keys(others.value).forEach((key) => {
|
|
617
|
+
toReturn[`${prefix}--${key}`] = unref(others.value[key]);
|
|
618
|
+
});
|
|
619
|
+
}
|
|
620
|
+
return toReturn;
|
|
621
|
+
});
|
|
622
|
+
}
|
|
623
|
+
const __default__$1 = {
|
|
624
|
+
name: "VvIcon"
|
|
625
|
+
};
|
|
626
|
+
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
627
|
+
...__default__$1,
|
|
628
|
+
props: /* @__PURE__ */ mergeDefaults({
|
|
629
|
+
name: {},
|
|
630
|
+
color: {},
|
|
631
|
+
width: {},
|
|
632
|
+
height: {},
|
|
633
|
+
provider: {},
|
|
634
|
+
prefix: {},
|
|
635
|
+
src: {},
|
|
636
|
+
horizontalFlip: { type: Boolean },
|
|
637
|
+
verticalFlip: { type: Boolean },
|
|
638
|
+
flip: {},
|
|
639
|
+
mode: {},
|
|
640
|
+
inline: { type: Boolean },
|
|
641
|
+
rotate: {},
|
|
642
|
+
onLoad: { type: Function },
|
|
643
|
+
svg: {},
|
|
644
|
+
modifiers: {}
|
|
645
|
+
}, VvIconPropsDefaults),
|
|
646
|
+
setup(__props) {
|
|
647
|
+
const props = __props;
|
|
648
|
+
const hasRotate = computed(() => {
|
|
649
|
+
if (typeof props.rotate === "string") {
|
|
650
|
+
return Number.parseFloat(props.rotate);
|
|
651
|
+
}
|
|
652
|
+
return props.rotate;
|
|
653
|
+
});
|
|
654
|
+
const show = ref(true);
|
|
655
|
+
const volver = useVolver();
|
|
656
|
+
const { modifiers } = toRefs(props);
|
|
657
|
+
const bemCssClasses = useModifiers("vv-icon", modifiers);
|
|
658
|
+
const provider = computed(() => {
|
|
659
|
+
return props.provider || (volver == null ? void 0 : volver.iconsProvider);
|
|
660
|
+
});
|
|
661
|
+
const icon = computed(() => {
|
|
662
|
+
const name = props.name ?? "";
|
|
663
|
+
const iconName = `@${provider.value}:${props.prefix}:${name}`;
|
|
664
|
+
if (iconExists(iconName)) {
|
|
665
|
+
return iconName;
|
|
666
|
+
}
|
|
667
|
+
const iconsCollection = volver == null ? void 0 : volver.iconsCollections.find(
|
|
668
|
+
(iconsCollection2) => {
|
|
669
|
+
const icon2 = `@${provider.value}:${iconsCollection2.prefix}:${name}`;
|
|
670
|
+
return iconExists(icon2);
|
|
671
|
+
}
|
|
672
|
+
);
|
|
673
|
+
if (iconsCollection) {
|
|
674
|
+
return `@${provider.value}:${iconsCollection.prefix}:${name}`;
|
|
675
|
+
}
|
|
676
|
+
return name;
|
|
677
|
+
});
|
|
678
|
+
function getSvgContent(svg) {
|
|
679
|
+
let dom;
|
|
680
|
+
if (typeof window === "undefined") {
|
|
681
|
+
const { JSDOM } = require("jsdom");
|
|
682
|
+
dom = new JSDOM().window;
|
|
683
|
+
}
|
|
684
|
+
const domParser = dom ? new dom.DOMParser() : new window.DOMParser();
|
|
685
|
+
const svgDomString = domParser.parseFromString(svg, "text/html");
|
|
686
|
+
const svgEl = svgDomString.querySelector("svg");
|
|
687
|
+
return svgEl;
|
|
688
|
+
}
|
|
689
|
+
function addIconFromSvg(svg) {
|
|
690
|
+
const svgContentEl = getSvgContent(svg);
|
|
691
|
+
const svgContent = (svgContentEl == null ? void 0 : svgContentEl.innerHTML.trim()) || "";
|
|
692
|
+
if (svgContentEl && svgContent) {
|
|
693
|
+
addIcon(`@${provider.value}:${props.prefix}:${props.name}`, {
|
|
694
|
+
body: svgContent,
|
|
695
|
+
// Set height and width from svg content
|
|
696
|
+
height: svgContentEl.viewBox.baseVal.height,
|
|
697
|
+
width: svgContentEl.viewBox.baseVal.width
|
|
698
|
+
});
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
if (volver) {
|
|
702
|
+
if (props.src && !iconExists(`@${provider.value}:${props.prefix}:${props.name}`)) {
|
|
703
|
+
show.value = false;
|
|
704
|
+
volver.fetchIcon(props.src).then((svg) => {
|
|
705
|
+
if (svg) {
|
|
706
|
+
addIconFromSvg(svg);
|
|
707
|
+
show.value = true;
|
|
708
|
+
}
|
|
709
|
+
}).catch((e) => {
|
|
710
|
+
throw new Error(`Error during fetch icon: ${e == null ? void 0 : e.message}`);
|
|
711
|
+
});
|
|
712
|
+
}
|
|
713
|
+
}
|
|
714
|
+
if (props.svg) {
|
|
715
|
+
addIconFromSvg(props.svg);
|
|
716
|
+
}
|
|
717
|
+
return (_ctx, _cache) => {
|
|
718
|
+
return unref(show) ? (openBlock(), createBlock(unref(Icon), mergeProps({
|
|
719
|
+
key: 0,
|
|
720
|
+
class: unref(bemCssClasses)
|
|
721
|
+
}, {
|
|
722
|
+
inline: _ctx.inline,
|
|
723
|
+
width: _ctx.width,
|
|
724
|
+
height: _ctx.height,
|
|
725
|
+
horizontalFlip: _ctx.horizontalFlip,
|
|
726
|
+
verticalFlip: _ctx.verticalFlip,
|
|
727
|
+
flip: _ctx.flip,
|
|
728
|
+
rotate: unref(hasRotate),
|
|
729
|
+
color: _ctx.color,
|
|
730
|
+
onLoad: _ctx.onLoad,
|
|
731
|
+
icon: unref(icon)
|
|
732
|
+
}), null, 16, ["class"])) : createCommentVNode("v-if", true);
|
|
733
|
+
};
|
|
691
734
|
}
|
|
692
735
|
});
|
|
693
|
-
const VvSelectProps = {
|
|
694
|
-
...IdNameProps,
|
|
695
|
-
...AutofocusProps,
|
|
696
|
-
...AutocompleteProps,
|
|
697
|
-
...TabindexProps,
|
|
698
|
-
...ValidProps,
|
|
699
|
-
...InvalidProps,
|
|
700
|
-
...HintProps,
|
|
701
|
-
...LoadingProps,
|
|
702
|
-
...DisabledProps,
|
|
703
|
-
...ReadonlyProps,
|
|
704
|
-
...ModifiersProps,
|
|
705
|
-
...OptionsProps,
|
|
706
|
-
...IconProps,
|
|
707
|
-
...FloatingLabelProps,
|
|
708
|
-
...UnselectableProps,
|
|
709
|
-
...LabelProps,
|
|
710
|
-
/**
|
|
711
|
-
* This Boolean attribute indicates that multiple options can be selected in the list.
|
|
712
|
-
* If it is not specified, then only one option can be selected at a time.
|
|
713
|
-
* When multiple is specified, most browsers will show a scrolling list box instead of a single line dropdown.
|
|
714
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-multiple
|
|
715
|
-
*/
|
|
716
|
-
multiple: Boolean,
|
|
717
|
-
/**
|
|
718
|
-
* A Boolean attribute indicating that an option with a non-empty string value must be selected.
|
|
719
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-required
|
|
720
|
-
*/
|
|
721
|
-
required: Boolean,
|
|
722
|
-
/**
|
|
723
|
-
* If the control is presented as a scrolling list box (e.g. when multiple is specified),
|
|
724
|
-
* this attribute represents the number of rows in the list that should be visible at one time.
|
|
725
|
-
* Browsers are not required to present a select element as a scrolled list box. The default value is 0.
|
|
726
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select#attr-size
|
|
727
|
-
*/
|
|
728
|
-
size: [String, Number],
|
|
729
|
-
/**
|
|
730
|
-
* modelValue can be a string, number, boolean, object or array of string, number, boolean, object
|
|
731
|
-
*/
|
|
732
|
-
modelValue: {
|
|
733
|
-
type: [String, Number, Boolean, Object, Array],
|
|
734
|
-
default: void 0
|
|
735
|
-
},
|
|
736
|
-
/**
|
|
737
|
-
* Select placeholder
|
|
738
|
-
*/
|
|
739
|
-
placeholder: String
|
|
740
|
-
};
|
|
741
|
-
const VvSelectEmits = ["update:modelValue", "focus", "blur"];
|
|
742
736
|
function useDefaults(componentName, propsDefinition, props) {
|
|
743
737
|
const volver = useVolver();
|
|
744
738
|
const volverComponentDefaults = computed(() => {
|
|
@@ -792,7 +786,6 @@ function useDefaults(componentName, propsDefinition, props) {
|
|
|
792
786
|
}, {});
|
|
793
787
|
});
|
|
794
788
|
}
|
|
795
|
-
const useUniqueId = (id) => computed(() => String((id == null ? void 0 : id.value) || uid()));
|
|
796
789
|
function useComponentFocus(inputTemplateRef, emit) {
|
|
797
790
|
const { focused } = useFocus(inputTemplateRef);
|
|
798
791
|
watch(focused, (newValue) => {
|
|
@@ -802,31 +795,34 @@ function useComponentFocus(inputTemplateRef, emit) {
|
|
|
802
795
|
focused
|
|
803
796
|
};
|
|
804
797
|
}
|
|
798
|
+
function useUniqueId(id) {
|
|
799
|
+
return computed(() => String((id == null ? void 0 : id.value) || useId()));
|
|
800
|
+
}
|
|
805
801
|
function useComponentIcon(icon, iconPosition) {
|
|
802
|
+
const hasIcon = computed(() => {
|
|
803
|
+
if (typeof (icon == null ? void 0 : icon.value) === "string") {
|
|
804
|
+
return { name: icon == null ? void 0 : icon.value };
|
|
805
|
+
}
|
|
806
|
+
return icon == null ? void 0 : icon.value;
|
|
807
|
+
});
|
|
806
808
|
const hasIconBefore = computed(
|
|
807
|
-
() =>
|
|
809
|
+
() => (iconPosition == null ? void 0 : iconPosition.value) === Position.before ? hasIcon.value : void 0
|
|
808
810
|
);
|
|
809
811
|
const hasIconAfter = computed(
|
|
810
|
-
() =>
|
|
812
|
+
() => (iconPosition == null ? void 0 : iconPosition.value) === Position.after ? hasIcon.value : void 0
|
|
811
813
|
);
|
|
812
814
|
const hasIconLeft = computed(
|
|
813
|
-
() =>
|
|
815
|
+
() => (iconPosition == null ? void 0 : iconPosition.value) === Side.left ? hasIcon.value : void 0
|
|
814
816
|
);
|
|
815
817
|
const hasIconRight = computed(
|
|
816
|
-
() =>
|
|
818
|
+
() => (iconPosition == null ? void 0 : iconPosition.value) === Side.right ? hasIcon.value : void 0
|
|
817
819
|
);
|
|
818
820
|
const hasIconTop = computed(
|
|
819
|
-
() =>
|
|
821
|
+
() => (iconPosition == null ? void 0 : iconPosition.value) === Side.top ? hasIcon.value : void 0
|
|
820
822
|
);
|
|
821
823
|
const hasIconBottom = computed(
|
|
822
|
-
() =>
|
|
824
|
+
() => (iconPosition == null ? void 0 : iconPosition.value) === Side.bottom ? hasIcon.value : void 0
|
|
823
825
|
);
|
|
824
|
-
const hasIcon = computed(() => {
|
|
825
|
-
if (typeof (icon == null ? void 0 : icon.value) === "string") {
|
|
826
|
-
return { name: icon == null ? void 0 : icon.value };
|
|
827
|
-
}
|
|
828
|
-
return icon == null ? void 0 : icon.value;
|
|
829
|
-
});
|
|
830
826
|
return {
|
|
831
827
|
hasIcon,
|
|
832
828
|
hasIconLeft,
|
|
@@ -840,26 +836,42 @@ function useComponentIcon(icon, iconPosition) {
|
|
|
840
836
|
function useOptions(props) {
|
|
841
837
|
const { options, labelKey, valueKey, disabledKey } = toRefs(props);
|
|
842
838
|
const getOptionLabel = (option) => {
|
|
843
|
-
if (typeof option
|
|
839
|
+
if (typeof option === "string") {
|
|
844
840
|
return option;
|
|
841
|
+
}
|
|
842
|
+
if (typeof labelKey.value === "function") {
|
|
843
|
+
return labelKey.value(option);
|
|
844
|
+
}
|
|
845
845
|
return String(
|
|
846
|
-
|
|
846
|
+
labelKey.value ? get(option, labelKey.value) : option
|
|
847
847
|
);
|
|
848
848
|
};
|
|
849
849
|
const getOptionValue = (option) => {
|
|
850
|
-
if (typeof option
|
|
850
|
+
if (typeof option === "string") {
|
|
851
851
|
return option;
|
|
852
|
-
|
|
852
|
+
}
|
|
853
|
+
if (typeof valueKey.value === "function") {
|
|
854
|
+
return valueKey.value(option);
|
|
855
|
+
}
|
|
856
|
+
return valueKey.value ? get(option, valueKey.value) : option;
|
|
853
857
|
};
|
|
854
858
|
const isOptionDisabled = (option) => {
|
|
855
|
-
if (typeof option
|
|
859
|
+
if (typeof option === "string") {
|
|
856
860
|
return false;
|
|
857
|
-
|
|
861
|
+
}
|
|
862
|
+
if (typeof disabledKey.value === "function") {
|
|
863
|
+
return disabledKey.value(option);
|
|
864
|
+
}
|
|
865
|
+
return disabledKey.value ? get(option, disabledKey.value) : false;
|
|
858
866
|
};
|
|
859
867
|
const getOptionGrouped = (option) => {
|
|
860
|
-
if (typeof option
|
|
868
|
+
if (typeof option == "string") {
|
|
861
869
|
return [];
|
|
862
|
-
|
|
870
|
+
}
|
|
871
|
+
if (typeof option === "object" && option && "options" in option) {
|
|
872
|
+
return option.options;
|
|
873
|
+
}
|
|
874
|
+
return [];
|
|
863
875
|
};
|
|
864
876
|
return {
|
|
865
877
|
options,
|
|
@@ -890,23 +902,33 @@ const __default__ = {
|
|
|
890
902
|
};
|
|
891
903
|
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
892
904
|
...__default__,
|
|
893
|
-
props:
|
|
894
|
-
emits:
|
|
895
|
-
setup(__props, { emit }) {
|
|
905
|
+
props: useVvSelectProps(),
|
|
906
|
+
emits: ["update:modelValue", "focus", "blur"],
|
|
907
|
+
setup(__props, { emit: __emit }) {
|
|
896
908
|
const props = __props;
|
|
909
|
+
const emit = __emit;
|
|
897
910
|
const slots = useSlots();
|
|
911
|
+
const VvSelectProps2 = useVvSelectProps();
|
|
898
912
|
const propsDefaults = useDefaults(
|
|
899
913
|
"VvSelect",
|
|
900
|
-
|
|
914
|
+
VvSelectProps2,
|
|
901
915
|
props
|
|
902
916
|
);
|
|
903
|
-
const
|
|
917
|
+
const selectEl = ref();
|
|
904
918
|
const {
|
|
905
919
|
HintSlot,
|
|
906
920
|
hasHintLabelOrSlot,
|
|
907
921
|
hasInvalidLabelOrSlot,
|
|
908
922
|
hintSlotScope
|
|
909
923
|
} = HintSlotFactory(propsDefaults, slots);
|
|
924
|
+
const { focused } = useComponentFocus(selectEl, emit);
|
|
925
|
+
function isGroup(option) {
|
|
926
|
+
var _a;
|
|
927
|
+
if (typeof option === "string") {
|
|
928
|
+
return false;
|
|
929
|
+
}
|
|
930
|
+
return (_a = option.options) == null ? void 0 : _a.length;
|
|
931
|
+
}
|
|
910
932
|
const {
|
|
911
933
|
id,
|
|
912
934
|
modifiers,
|
|
@@ -922,22 +944,38 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
922
944
|
} = toRefs(props);
|
|
923
945
|
const hasId = useUniqueId(id);
|
|
924
946
|
const hasHintId = computed(() => `${hasId.value}-hint`);
|
|
925
|
-
const
|
|
926
|
-
const
|
|
947
|
+
const isDisabledOrReadonly = computed(() => props.disabled || props.readonly);
|
|
948
|
+
const hasTabindex = computed(() => {
|
|
949
|
+
return isDisabledOrReadonly.value ? -1 : props.tabindex;
|
|
950
|
+
});
|
|
951
|
+
const localModelValue = computed({
|
|
952
|
+
get: () => {
|
|
953
|
+
return props.modelValue;
|
|
954
|
+
},
|
|
955
|
+
set: (newValue) => {
|
|
956
|
+
if (Array.isArray(newValue)) {
|
|
957
|
+
newValue = newValue.filter((item) => item !== void 0);
|
|
958
|
+
if (newValue.length === 0 && !props.unselectable && selectEl.value) {
|
|
959
|
+
selectEl.value.value = String(props.modelValue);
|
|
960
|
+
return;
|
|
961
|
+
}
|
|
962
|
+
}
|
|
963
|
+
emit("update:modelValue", newValue);
|
|
964
|
+
}
|
|
965
|
+
});
|
|
966
|
+
const isDirty = computed(() => {
|
|
967
|
+
if (Array.isArray(localModelValue.value)) {
|
|
968
|
+
return localModelValue.value.length > 0;
|
|
969
|
+
}
|
|
970
|
+
return localModelValue.value !== void 0 && localModelValue.value !== null;
|
|
971
|
+
});
|
|
972
|
+
const isVisible = useElementVisibility(selectEl);
|
|
927
973
|
watch(isVisible, (newValue) => {
|
|
928
974
|
if (newValue && props.autofocus) {
|
|
929
975
|
focused.value = true;
|
|
930
976
|
}
|
|
931
977
|
});
|
|
932
|
-
const {
|
|
933
|
-
icon,
|
|
934
|
-
iconPosition
|
|
935
|
-
);
|
|
936
|
-
const isDirty = computed(() => !isEmpty(props.modelValue));
|
|
937
|
-
const isDisabled = computed(() => props.disabled || props.readonly);
|
|
938
|
-
const hasTabindex = computed(() => {
|
|
939
|
-
return isDisabled.value ? -1 : props.tabindex;
|
|
940
|
-
});
|
|
978
|
+
const { hasIconBefore, hasIconAfter } = useComponentIcon(icon, iconPosition);
|
|
941
979
|
const isInvalid = computed(() => {
|
|
942
980
|
if (props.invalid === true) {
|
|
943
981
|
return true;
|
|
@@ -951,28 +989,44 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
951
989
|
"vv-select",
|
|
952
990
|
modifiers,
|
|
953
991
|
computed(() => ({
|
|
954
|
-
valid: valid.value,
|
|
955
|
-
invalid: invalid.value,
|
|
956
|
-
loading: loading.value,
|
|
957
|
-
disabled: disabled.value,
|
|
958
|
-
readonly: readonly.value,
|
|
959
|
-
"icon-before": hasIconBefore.value,
|
|
960
|
-
"icon-after": hasIconAfter.value,
|
|
961
|
-
dirty: isDirty.value,
|
|
962
|
-
focus: focused.value,
|
|
963
|
-
floating: floating.value,
|
|
964
|
-
multiple: multiple.value
|
|
992
|
+
"valid": valid.value,
|
|
993
|
+
"invalid": invalid.value,
|
|
994
|
+
"loading": loading.value,
|
|
995
|
+
"disabled": disabled.value,
|
|
996
|
+
"readonly": readonly.value,
|
|
997
|
+
"icon-before": hasIconBefore.value !== void 0,
|
|
998
|
+
"icon-after": hasIconAfter.value !== void 0,
|
|
999
|
+
"dirty": isDirty.value,
|
|
1000
|
+
"focus": focused.value,
|
|
1001
|
+
"floating": floating.value,
|
|
1002
|
+
"multiple": multiple.value
|
|
965
1003
|
}))
|
|
966
1004
|
);
|
|
1005
|
+
const {
|
|
1006
|
+
getOptionLabel,
|
|
1007
|
+
getOptionValue,
|
|
1008
|
+
isOptionDisabled,
|
|
1009
|
+
getOptionGrouped
|
|
1010
|
+
} = useOptions(props);
|
|
1011
|
+
watch(
|
|
1012
|
+
() => props.options,
|
|
1013
|
+
(newValue) => {
|
|
1014
|
+
if ((newValue == null ? void 0 : newValue.length) && props.autoselectFirst && !isDirty.value) {
|
|
1015
|
+
const firstOptionValue = getOptionValue(newValue[0]);
|
|
1016
|
+
localModelValue.value = props.multiple ? [firstOptionValue] : firstOptionValue;
|
|
1017
|
+
}
|
|
1018
|
+
},
|
|
1019
|
+
{ immediate: true }
|
|
1020
|
+
);
|
|
967
1021
|
const hasAttrs = computed(() => {
|
|
968
1022
|
return {
|
|
969
|
-
name: props.name,
|
|
970
|
-
tabindex: hasTabindex.value,
|
|
971
|
-
disabled:
|
|
972
|
-
required: props.required,
|
|
973
|
-
size: props.size,
|
|
974
|
-
autocomplete: props.autocomplete,
|
|
975
|
-
multiple: props.multiple,
|
|
1023
|
+
"name": props.name,
|
|
1024
|
+
"tabindex": hasTabindex.value,
|
|
1025
|
+
"disabled": isDisabledOrReadonly.value,
|
|
1026
|
+
"required": props.required,
|
|
1027
|
+
"size": props.size,
|
|
1028
|
+
"autocomplete": props.autocomplete,
|
|
1029
|
+
"multiple": props.multiple,
|
|
976
1030
|
"aria-invalid": isInvalid.value,
|
|
977
1031
|
"aria-describedby": hasHintLabelOrSlot.value ? hasHintId.value : void 0,
|
|
978
1032
|
"aria-errormessage": hasInvalidLabelOrSlot.value ? hasHintId.value : void 0
|
|
@@ -983,124 +1037,136 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
983
1037
|
invalid: props.invalid,
|
|
984
1038
|
modelValue: props.modelValue
|
|
985
1039
|
}));
|
|
986
|
-
const {
|
|
987
|
-
getOptionLabel,
|
|
988
|
-
getOptionValue,
|
|
989
|
-
isOptionDisabled,
|
|
990
|
-
getOptionGrouped
|
|
991
|
-
} = useOptions(props);
|
|
992
|
-
const localModelValue = computed({
|
|
993
|
-
get: () => {
|
|
994
|
-
return props.modelValue;
|
|
995
|
-
},
|
|
996
|
-
set: (newValue) => {
|
|
997
|
-
if (Array.isArray(newValue)) {
|
|
998
|
-
newValue = newValue.filter((item) => item !== void 0);
|
|
999
|
-
}
|
|
1000
|
-
emit("update:modelValue", newValue);
|
|
1001
|
-
}
|
|
1002
|
-
});
|
|
1003
|
-
const isGroup = (option) => {
|
|
1004
|
-
if (typeof option === "string")
|
|
1005
|
-
return false;
|
|
1006
|
-
return option && option.options && option.options.length > 0;
|
|
1007
|
-
};
|
|
1008
1040
|
return (_ctx, _cache) => {
|
|
1009
|
-
return openBlock(), createElementBlock(
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1041
|
+
return openBlock(), createElementBlock(
|
|
1042
|
+
"div",
|
|
1043
|
+
{
|
|
1044
|
+
class: normalizeClass(unref(bemCssClasses))
|
|
1045
|
+
},
|
|
1046
|
+
[
|
|
1047
|
+
_ctx.label ? (openBlock(), createElementBlock("label", {
|
|
1048
|
+
key: 0,
|
|
1049
|
+
for: unref(hasId)
|
|
1050
|
+
}, toDisplayString(_ctx.label), 9, _hoisted_1)) : createCommentVNode("v-if", true),
|
|
1051
|
+
createElementVNode("div", _hoisted_2, [
|
|
1052
|
+
_ctx.$slots.before ? (openBlock(), createElementBlock("div", _hoisted_3, [
|
|
1053
|
+
renderSlot(_ctx.$slots, "before", normalizeProps(guardReactiveProps(unref(slotProps))))
|
|
1054
|
+
])) : createCommentVNode("v-if", true),
|
|
1055
|
+
createElementVNode("div", _hoisted_4, [
|
|
1056
|
+
unref(hasIconBefore) ? (openBlock(), createBlock(
|
|
1057
|
+
_sfc_main$1,
|
|
1058
|
+
mergeProps({ key: 0 }, unref(hasIconBefore), { class: "vv-select__icon" }),
|
|
1059
|
+
null,
|
|
1060
|
+
16
|
|
1061
|
+
/* FULL_PROPS */
|
|
1062
|
+
)) : createCommentVNode("v-if", true),
|
|
1063
|
+
withDirectives(createElementVNode("select", mergeProps({
|
|
1064
|
+
id: unref(hasId),
|
|
1065
|
+
ref_key: "selectEl",
|
|
1066
|
+
ref: selectEl
|
|
1067
|
+
}, unref(hasAttrs), {
|
|
1068
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(localModelValue) ? localModelValue.value = $event : null)
|
|
1069
|
+
}), [
|
|
1070
|
+
_ctx.placeholder ? (openBlock(), createElementBlock("option", {
|
|
1071
|
+
key: 0,
|
|
1072
|
+
value: void 0,
|
|
1073
|
+
disabled: !_ctx.unselectable,
|
|
1074
|
+
hidden: !_ctx.unselectable
|
|
1075
|
+
}, toDisplayString(_ctx.placeholder), 9, _hoisted_6)) : createCommentVNode("v-if", true),
|
|
1076
|
+
(openBlock(true), createElementBlock(
|
|
1077
|
+
Fragment,
|
|
1078
|
+
null,
|
|
1079
|
+
renderList(_ctx.options, (option, index) => {
|
|
1080
|
+
return openBlock(), createElementBlock(
|
|
1081
|
+
Fragment,
|
|
1082
|
+
null,
|
|
1083
|
+
[
|
|
1084
|
+
!isGroup(option) ? (openBlock(), createElementBlock("option", {
|
|
1085
|
+
key: index,
|
|
1086
|
+
disabled: unref(isOptionDisabled)(option),
|
|
1087
|
+
value: unref(getOptionValue)(option)
|
|
1088
|
+
}, toDisplayString(unref(getOptionLabel)(option)), 9, _hoisted_7)) : (openBlock(), createElementBlock("optgroup", {
|
|
1089
|
+
key: `group-${index}`,
|
|
1090
|
+
disabled: unref(isOptionDisabled)(option),
|
|
1091
|
+
label: unref(getOptionLabel)(option)
|
|
1092
|
+
}, [
|
|
1093
|
+
(openBlock(true), createElementBlock(
|
|
1094
|
+
Fragment,
|
|
1095
|
+
null,
|
|
1096
|
+
renderList(unref(getOptionGrouped)(option), (item, i) => {
|
|
1097
|
+
return openBlock(), createElementBlock("option", {
|
|
1098
|
+
key: `group-${index}-item-${i}`,
|
|
1099
|
+
disabled: unref(isOptionDisabled)(item),
|
|
1100
|
+
value: unref(getOptionValue)(item)
|
|
1101
|
+
}, toDisplayString(unref(getOptionLabel)(item)), 9, _hoisted_9);
|
|
1102
|
+
}),
|
|
1103
|
+
128
|
|
1104
|
+
/* KEYED_FRAGMENT */
|
|
1105
|
+
))
|
|
1106
|
+
], 8, _hoisted_8))
|
|
1107
|
+
],
|
|
1108
|
+
64
|
|
1109
|
+
/* STABLE_FRAGMENT */
|
|
1110
|
+
);
|
|
1111
|
+
}),
|
|
1112
|
+
256
|
|
1113
|
+
/* UNKEYED_FRAGMENT */
|
|
1114
|
+
))
|
|
1115
|
+
], 16, _hoisted_5), [
|
|
1116
|
+
[vModelSelect, unref(localModelValue)]
|
|
1117
|
+
]),
|
|
1118
|
+
unref(hasIconAfter) ? (openBlock(), createBlock(
|
|
1119
|
+
_sfc_main$1,
|
|
1120
|
+
mergeProps({ key: 1 }, unref(hasIconAfter), { class: "vv-select__icon vv-select__icon-after" }),
|
|
1121
|
+
null,
|
|
1122
|
+
16
|
|
1123
|
+
/* FULL_PROPS */
|
|
1124
|
+
)) : createCommentVNode("v-if", true)
|
|
1060
1125
|
]),
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
}, unref(hasIcon)), null, 16)) : createCommentVNode("", true)
|
|
1126
|
+
_ctx.$slots.after ? (openBlock(), createElementBlock("div", _hoisted_10, [
|
|
1127
|
+
renderSlot(_ctx.$slots, "after", normalizeProps(guardReactiveProps(unref(slotProps))))
|
|
1128
|
+
])) : createCommentVNode("v-if", true)
|
|
1065
1129
|
]),
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
]
|
|
1103
|
-
|
|
1130
|
+
createVNode(unref(HintSlot), {
|
|
1131
|
+
id: unref(hasHintId),
|
|
1132
|
+
class: "vv-select__hint"
|
|
1133
|
+
}, createSlots({
|
|
1134
|
+
_: 2
|
|
1135
|
+
/* DYNAMIC */
|
|
1136
|
+
}, [
|
|
1137
|
+
_ctx.$slots.hint ? {
|
|
1138
|
+
name: "hint",
|
|
1139
|
+
fn: withCtx(() => [
|
|
1140
|
+
renderSlot(_ctx.$slots, "hint", normalizeProps(guardReactiveProps(unref(hintSlotScope))))
|
|
1141
|
+
]),
|
|
1142
|
+
key: "0"
|
|
1143
|
+
} : void 0,
|
|
1144
|
+
_ctx.$slots.loading ? {
|
|
1145
|
+
name: "loading",
|
|
1146
|
+
fn: withCtx(() => [
|
|
1147
|
+
renderSlot(_ctx.$slots, "loading", normalizeProps(guardReactiveProps(unref(hintSlotScope))))
|
|
1148
|
+
]),
|
|
1149
|
+
key: "1"
|
|
1150
|
+
} : void 0,
|
|
1151
|
+
_ctx.$slots.valid ? {
|
|
1152
|
+
name: "valid",
|
|
1153
|
+
fn: withCtx(() => [
|
|
1154
|
+
renderSlot(_ctx.$slots, "valid", normalizeProps(guardReactiveProps(unref(hintSlotScope))))
|
|
1155
|
+
]),
|
|
1156
|
+
key: "2"
|
|
1157
|
+
} : void 0,
|
|
1158
|
+
_ctx.$slots.invalid ? {
|
|
1159
|
+
name: "invalid",
|
|
1160
|
+
fn: withCtx(() => [
|
|
1161
|
+
renderSlot(_ctx.$slots, "invalid", normalizeProps(guardReactiveProps(unref(hintSlotScope))))
|
|
1162
|
+
]),
|
|
1163
|
+
key: "3"
|
|
1164
|
+
} : void 0
|
|
1165
|
+
]), 1032, ["id"])
|
|
1166
|
+
],
|
|
1167
|
+
2
|
|
1168
|
+
/* CLASS */
|
|
1169
|
+
);
|
|
1104
1170
|
};
|
|
1105
1171
|
}
|
|
1106
1172
|
});
|