21 lines
593 B
JavaScript
21 lines
593 B
JavaScript
import { ref, watch } from 'vue';
|
|
export function useDeferredTrue(valueRef, delay, shouldDelayRef) {
|
|
if (!delay) return valueRef;
|
|
const delayedRef = ref(valueRef.value);
|
|
let timerId = null;
|
|
watch(valueRef, value => {
|
|
if (timerId !== null) window.clearTimeout(timerId);
|
|
if (value === true) {
|
|
if (shouldDelayRef && !shouldDelayRef.value) {
|
|
delayedRef.value = true;
|
|
} else {
|
|
timerId = window.setTimeout(() => {
|
|
delayedRef.value = true;
|
|
}, delay);
|
|
}
|
|
} else {
|
|
delayedRef.value = false;
|
|
}
|
|
});
|
|
return delayedRef;
|
|
} |