Skip to content

Commit 0fa1f34

Browse files
committed
chore: extract the password length into its own state variable
this optimizes Lit's update checker so that the template is only re-rendered if the actual number changes, whereas otherwise it would re-render when the object is set again
1 parent 5608540 commit 0fa1f34

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

src/apps/installer/user/installer-user.element.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,32 @@
1-
import { UMB_AUTH_CONTEXT } from '@umbraco-cms/backoffice/auth';
21
import type { UmbInstallerContext } from '../installer.context.js';
32
import { UMB_INSTALLER_CONTEXT } from '../installer.context.js';
43
import type { CSSResultGroup } from '@umbraco-cms/backoffice/external/lit';
54
import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit';
65
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
7-
import type {UserSettingsPresentationModel} from "@umbraco-cms/backoffice/external/backend-api";
86

97
@customElement('umb-installer-user')
108
export class UmbInstallerUserElement extends UmbLitElement {
119
@state()
1210
private _userFormData?: { name: string; password: string; email: string; subscribeToNewsletter: boolean };
11+
1312
@state()
14-
private _installerContext?: UmbInstallerContext;
15-
private _userSettings?:UserSettingsPresentationModel;
13+
private _minimumPasswordLength = 10;
14+
15+
#installerContext?: UmbInstallerContext;
1616

1717
constructor() {
1818
super();
1919

2020
this.consumeContext(UMB_INSTALLER_CONTEXT, (installerContext) => {
21-
this._installerContext = installerContext;
21+
this.#installerContext = installerContext;
2222
this._observeInstallerData();
2323
});
2424
}
2525

2626
private _observeInstallerData() {
27-
if (!this._installerContext) return;
27+
if (!this.#installerContext) return;
2828

29-
this.observe(this._installerContext.data, ({ user }) => {
29+
this.observe(this.#installerContext.data, ({ user }) => {
3030
this._userFormData = {
3131
name: user.name,
3232
password: user.password,
@@ -35,9 +35,9 @@ export class UmbInstallerUserElement extends UmbLitElement {
3535
};
3636
});
3737

38-
this.observe(this._installerContext.settings, (settings)=>{
39-
this._userSettings= settings?.user;
40-
})
38+
this.observe(this.#installerContext.settings, (settings) => {
39+
this._minimumPasswordLength = settings?.user.minCharLength ?? this._minimumPasswordLength;
40+
});
4141
}
4242

4343
private _handleSubmit = (e: SubmitEvent) => {
@@ -55,8 +55,8 @@ export class UmbInstallerUserElement extends UmbLitElement {
5555
const email = formData.get('email') as string;
5656
const subscribeToNewsletter = formData.has('subscribeToNewsletter');
5757

58-
this._installerContext?.appendData({ user: { name, password, email, subscribeToNewsletter } });
59-
this._installerContext?.nextStep();
58+
this.#installerContext?.appendData({ user: { name, password, email, subscribeToNewsletter } });
59+
this.#installerContext?.nextStep();
6060
};
6161

6262
render() {
@@ -94,7 +94,7 @@ export class UmbInstallerUserElement extends UmbLitElement {
9494
id="password"
9595
name="password"
9696
label="password"
97-
minlength=${this._userSettings?.minCharLength ?? 10}
97+
minlength=${this._minimumPasswordLength}
9898
.value=${this._userFormData?.password}
9999
required
100100
required-message="Password is required"></uui-input-password>

0 commit comments

Comments
 (0)