@muban/muban
Version:
Writing components for server-rendered HTML
22 lines (21 loc) • 726 B
JavaScript
import { unref, watchEffect } from '@vue/runtime-core';
function updateVisibleState(target, visible) {
const isCurrentlyVisible = !(target.style.display === 'none');
if (visible && !isCurrentlyVisible) {
// TODO: resort to previous value before switching to "none"
target.style.display = '';
}
else if (!visible && isCurrentlyVisible) {
target.style.display = 'none';
}
}
export function visibleBinding(target, valueAccessor) {
return watchEffect(() => {
updateVisibleState(target, unref(valueAccessor));
});
}
export function hiddenBinding(target, valueAccessor) {
return watchEffect(() => {
updateVisibleState(target, !unref(valueAccessor));
});
}