diff --git a/src/data/lock.ts b/src/data/lock.ts index ead50e20dd..6630ef0989 100644 --- a/src/data/lock.ts +++ b/src/data/lock.ts @@ -2,6 +2,7 @@ import { HassEntityAttributeBase, HassEntityBase, } from "home-assistant-js-websocket"; +import { getExtendedEntityRegistryEntry } from "./entity_registry"; import { showEnterCodeDialogDialog } from "../dialogs/enter-code/show-enter-code-dialog"; import { HomeAssistant } from "../types"; @@ -30,15 +31,20 @@ export const callProtectedLockService = async ( service: ProtectedLockService ) => { let code: string | undefined; + const lockRegistryEntry = await getExtendedEntityRegistryEntry( + hass, + stateObj.entity_id + ).catch(() => undefined); + const defaultCode = lockRegistryEntry?.options?.lock?.default_code; - if (stateObj!.attributes.code_format) { + if (stateObj!.attributes.code_format && !defaultCode) { const response = await showEnterCodeDialogDialog(element, { codeFormat: "text", codePattern: stateObj!.attributes.code_format, title: hass.localize(`ui.card.lock.${service}`), submitText: hass.localize(`ui.card.lock.${service}`), }); - if (!response) { + if (response == null) { throw new Error("Code dialog closed"); } code = response; diff --git a/src/dialogs/enter-code/dialog-enter-code.ts b/src/dialogs/enter-code/dialog-enter-code.ts index fc4dc82c2e..23cb33834f 100644 --- a/src/dialogs/enter-code/dialog-enter-code.ts +++ b/src/dialogs/enter-code/dialog-enter-code.ts @@ -99,6 +99,8 @@ export class DialogEnterCode id="code" .label=${this.hass.localize("ui.dialogs.enter_code.input_label")} type="password" + autoValidate + validateOnInitialRender pattern=${ifDefined(this._dialogParams.codePattern)} inputmode="text" >