All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
package.lib.components.VTooltip.VTooltip.mjs Maven / Gradle / Ivy
import { createVNode as _createVNode, mergeProps as _mergeProps } from "vue";
// Styles
import "./VTooltip.css";
// Components
import { VOverlay } from "../VOverlay/index.mjs";
import { makeVOverlayProps } from "../VOverlay/VOverlay.mjs"; // Composables
import { forwardRefs } from "../../composables/forwardRefs.mjs";
import { useProxiedModel } from "../../composables/proxiedModel.mjs";
import { useScopeId } from "../../composables/scopeId.mjs"; // Utilities
import { computed, mergeProps, ref } from 'vue';
import { genericComponent, getUid, omit, propsFactory, useRender } from "../../util/index.mjs"; // Types
export const makeVTooltipProps = propsFactory({
id: String,
text: String,
...omit(makeVOverlayProps({
closeOnBack: false,
location: 'end',
locationStrategy: 'connected',
eager: true,
minWidth: 0,
offset: 10,
openOnClick: false,
openOnHover: true,
origin: 'auto',
scrim: false,
scrollStrategy: 'reposition',
transition: false
}), ['absolute', 'persistent'])
}, 'VTooltip');
export const VTooltip = genericComponent()({
name: 'VTooltip',
props: makeVTooltipProps(),
emits: {
'update:modelValue': value => true
},
setup(props, _ref) {
let {
slots
} = _ref;
const isActive = useProxiedModel(props, 'modelValue');
const {
scopeId
} = useScopeId();
const uid = getUid();
const id = computed(() => props.id || `v-tooltip-${uid}`);
const overlay = ref();
const location = computed(() => {
return props.location.split(' ').length > 1 ? props.location : props.location + ' center';
});
const origin = computed(() => {
return props.origin === 'auto' || props.origin === 'overlap' || props.origin.split(' ').length > 1 || props.location.split(' ').length > 1 ? props.origin : props.origin + ' center';
});
const transition = computed(() => {
if (props.transition) return props.transition;
return isActive.value ? 'scale-transition' : 'fade-transition';
});
const activatorProps = computed(() => mergeProps({
'aria-describedby': id.value
}, props.activatorProps));
useRender(() => {
const overlayProps = VOverlay.filterProps(props);
return _createVNode(VOverlay, _mergeProps({
"ref": overlay,
"class": ['v-tooltip', props.class],
"style": props.style,
"id": id.value
}, overlayProps, {
"modelValue": isActive.value,
"onUpdate:modelValue": $event => isActive.value = $event,
"transition": transition.value,
"absolute": true,
"location": location.value,
"origin": origin.value,
"persistent": true,
"role": "tooltip",
"activatorProps": activatorProps.value,
"_disableGlobalStack": true
}, scopeId), {
activator: slots.activator,
default: function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return slots.default?.(...args) ?? props.text;
}
});
});
return forwardRefs({}, overlay);
}
});
//# sourceMappingURL=VTooltip.mjs.map