fix: 锁屏和解锁密码输入框自动聚焦

This commit is contained in:
zoumingjun 2025-10-18 20:54:45 +08:00
parent 32051e9ca0
commit 4e264c503a
2 changed files with 38 additions and 23 deletions

View File

@ -27,29 +27,30 @@ const emit = defineEmits<{
submit: [Recordable<any>]; submit: [Recordable<any>];
}>(); }>();
const [Form, { resetForm, validate, getValues }] = useVbenForm( const [Form, { resetForm, validate, getValues, getFieldComponentRef }] =
reactive({ useVbenForm(
commonConfig: { reactive({
hideLabel: true, commonConfig: {
hideRequiredMark: true, hideLabel: true,
}, hideRequiredMark: true,
schema: computed(() => [
{
component: 'VbenInputPassword' as const,
componentProps: {
placeholder: $t('ui.widgets.lockScreen.placeholder'),
},
fieldName: 'lockScreenPassword',
formFieldProps: { validateOnBlur: false },
label: $t('authentication.password'),
rules: z
.string()
.min(1, { message: $t('ui.widgets.lockScreen.placeholder') }),
}, },
]), schema: computed(() => [
showDefaultActions: false, {
}), component: 'VbenInputPassword' as const,
); componentProps: {
placeholder: $t('ui.widgets.lockScreen.placeholder'),
},
fieldName: 'lockScreenPassword',
formFieldProps: { validateOnBlur: false },
label: $t('authentication.password'),
rules: z
.string()
.min(1, { message: $t('ui.widgets.lockScreen.placeholder') }),
},
]),
showDefaultActions: false,
}),
);
const [Modal] = useVbenModal({ const [Modal] = useVbenModal({
onConfirm() { onConfirm() {
@ -60,6 +61,13 @@ const [Modal] = useVbenModal({
resetForm(); resetForm();
} }
}, },
onOpened() {
requestAnimationFrame(() => {
getFieldComponentRef('lockScreenPassword')
?.$el?.querySelector('[name="lockScreenPassword"]')
?.focus();
});
},
}); });
async function handleSubmit() { async function handleSubmit() {

View File

@ -37,7 +37,7 @@ const date = useDateFormat(now, 'YYYY-MM-DD dddd', { locales: locale.value });
const showUnlockForm = ref(false); const showUnlockForm = ref(false);
const { lockScreenPassword } = storeToRefs(accessStore); const { lockScreenPassword } = storeToRefs(accessStore);
const [Form, { form, validate }] = useVbenForm( const [Form, { form, validate, getFieldComponentRef }] = useVbenForm(
reactive({ reactive({
commonConfig: { commonConfig: {
hideLabel: true, hideLabel: true,
@ -75,6 +75,13 @@ async function handleSubmit() {
function toggleUnlockForm() { function toggleUnlockForm() {
showUnlockForm.value = !showUnlockForm.value; showUnlockForm.value = !showUnlockForm.value;
if (showUnlockForm.value) {
requestAnimationFrame(() => {
getFieldComponentRef('password')
?.$el?.querySelector('[name="password"]')
?.focus();
});
}
} }
useScrollLock(); useScrollLock();