init component
This commit is contained in:
69
node_modules/buetify/lib/composables/focus/useFocus.js
generated
vendored
Executable file
69
node_modules/buetify/lib/composables/focus/useFocus.js
generated
vendored
Executable file
@@ -0,0 +1,69 @@
|
||||
import { shallowRef, onMounted, watchEffect } from 'vue';
|
||||
import { isHTMLElement } from '../../utils/helpers';
|
||||
export const UseFocusPropsDefinition = {
|
||||
isFocused: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
onFocus: {
|
||||
type: Function,
|
||||
required: false
|
||||
},
|
||||
onBlur: {
|
||||
type: Function,
|
||||
required: false
|
||||
},
|
||||
focusOnMount: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
};
|
||||
export function useFocus(props, ref) {
|
||||
const isFocused = shallowRef(false);
|
||||
|
||||
function onFocus(e) {
|
||||
isFocused.value = true;
|
||||
if (props.onFocus) props.onFocus(e);
|
||||
}
|
||||
|
||||
function focus(e) {
|
||||
if (isFocused.value) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (isHTMLElement(ref.value)) {
|
||||
ref.value.focus();
|
||||
isFocused.value = true;
|
||||
if (props.onFocus) props.onFocus(e);
|
||||
} else {
|
||||
if (ref.value && isHTMLElement(ref.value.el)) {
|
||||
ref.value.el.focus();
|
||||
isFocused.value = true;
|
||||
if (props.onFocus) props.onFocus(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
watchEffect(() => {
|
||||
if (props.isFocused && isFocused.value === false) {
|
||||
focus();
|
||||
}
|
||||
});
|
||||
|
||||
if (props.focusOnMount) {
|
||||
onMounted(focus);
|
||||
}
|
||||
|
||||
function onBlur(e) {
|
||||
isFocused.value = false;
|
||||
if (props.onBlur) props.onBlur(e);
|
||||
}
|
||||
|
||||
return {
|
||||
isFocused,
|
||||
focus,
|
||||
onFocus,
|
||||
onBlur
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=useFocus.js.map
|
||||
Reference in New Issue
Block a user