31 lines
852 B
JavaScript
31 lines
852 B
JavaScript
// Composables
|
|
import { useProxiedModel } from "./proxiedModel.mjs"; // Utilities
|
|
import { computed } from 'vue';
|
|
import { EventProp, getCurrentInstanceName, propsFactory } from "../util/index.mjs"; // Types
|
|
// Composables
|
|
export const makeFocusProps = propsFactory({
|
|
focused: Boolean,
|
|
'onUpdate:focused': EventProp()
|
|
}, 'focus');
|
|
export function useFocus(props) {
|
|
let name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getCurrentInstanceName();
|
|
const isFocused = useProxiedModel(props, 'focused');
|
|
const focusClasses = computed(() => {
|
|
return {
|
|
[`${name}--focused`]: isFocused.value
|
|
};
|
|
});
|
|
function focus() {
|
|
isFocused.value = true;
|
|
}
|
|
function blur() {
|
|
isFocused.value = false;
|
|
}
|
|
return {
|
|
focusClasses,
|
|
isFocused,
|
|
focus,
|
|
blur
|
|
};
|
|
}
|
|
//# sourceMappingURL=focus.mjs.map
|