37 lines
1021 B
JavaScript
37 lines
1021 B
JavaScript
|
// Composables
|
||
|
import { makeDelayProps, useDelay } from "../../composables/delay.mjs";
|
||
|
import { useProxiedModel } from "../../composables/proxiedModel.mjs"; // Utilities
|
||
|
import { genericComponent, propsFactory } from "../../util/index.mjs";
|
||
|
export const makeVHoverProps = propsFactory({
|
||
|
disabled: Boolean,
|
||
|
modelValue: {
|
||
|
type: Boolean,
|
||
|
default: undefined
|
||
|
},
|
||
|
...makeDelayProps()
|
||
|
}, 'VHover');
|
||
|
export const VHover = genericComponent()({
|
||
|
name: 'VHover',
|
||
|
props: makeVHoverProps(),
|
||
|
emits: {
|
||
|
'update:modelValue': value => true
|
||
|
},
|
||
|
setup(props, _ref) {
|
||
|
let {
|
||
|
slots
|
||
|
} = _ref;
|
||
|
const isHovering = useProxiedModel(props, 'modelValue');
|
||
|
const {
|
||
|
runOpenDelay,
|
||
|
runCloseDelay
|
||
|
} = useDelay(props, value => !props.disabled && (isHovering.value = value));
|
||
|
return () => slots.default?.({
|
||
|
isHovering: isHovering.value,
|
||
|
props: {
|
||
|
onMouseenter: runOpenDelay,
|
||
|
onMouseleave: runCloseDelay
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
//# sourceMappingURL=VHover.mjs.map
|