Skip to content

Commit a2cecd5

Browse files
committed
member type + focus
1 parent c75599f commit a2cecd5

File tree

3 files changed

+17
-64
lines changed

3 files changed

+17
-64
lines changed

src/packages/documents/document-types/workspace/document-type-workspace-editor.element.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { UmbInputWithAliasElement } from '@umbraco-cms/backoffice/component
33
import { umbFocus, UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
44
import { css, html, customElement, state, ifDefined } from '@umbraco-cms/backoffice/external/lit';
55
import { UMB_MODAL_MANAGER_CONTEXT, UMB_ICON_PICKER_MODAL } from '@umbraco-cms/backoffice/modal';
6+
67
@customElement('umb-document-type-workspace-editor')
78
export class UmbDocumentTypeWorkspaceEditorElement extends UmbLitElement {
89
@state()
@@ -69,7 +70,8 @@ export class UmbDocumentTypeWorkspaceEditorElement extends UmbLitElement {
6970
label="name"
7071
value=${this._name}
7172
alias=${this._alias}
72-
@change="${this.#onNameAndAliasChange}"></umb-input-with-alias>
73+
@change="${this.#onNameAndAliasChange}"
74+
${umbFocus()}></umb-input-with-alias>
7375
</div>
7476
</umb-workspace-editor>
7577
`;

src/packages/media/media-types/workspace/media-type-workspace-editor.element.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
import type { UmbMediaTypeWorkspaceContext } from './media-type-workspace.context.js';
22
import { UMB_MEDIA_TYPE_WORKSPACE_CONTEXT } from './media-type-workspace.context-token.js';
3-
import type { UUIInputElement } from '@umbraco-cms/backoffice/external/uui';
4-
import { UUIInputEvent } from '@umbraco-cms/backoffice/external/uui';
53
import { css, html, customElement, state, ifDefined } from '@umbraco-cms/backoffice/external/lit';
64
import { UmbLitElement, umbFocus } from '@umbraco-cms/backoffice/lit-element';
75
import { UMB_ICON_PICKER_MODAL, UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal';
8-
import { generateAlias } from '@umbraco-cms/backoffice/utils';
96

107
@customElement('umb-media-type-workspace-editor')
118
export class UmbMediaTypeWorkspaceEditorElement extends UmbLitElement {
@@ -76,7 +73,8 @@ export class UmbMediaTypeWorkspaceEditorElement extends UmbLitElement {
7673
label="name"
7774
value=${this._name}
7875
alias=${this._alias}
79-
@change="${this.#onNameAndAliasChange}"></umb-input-with-alias>
76+
@change="${this.#onNameAndAliasChange}"
77+
${umbFocus()}></umb-input-with-alias>
8078
</div>
8179
</umb-workspace-editor>`;
8280
}

src/packages/members/member-type/workspace/member-type-workspace-editor.element.ts

Lines changed: 12 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
import { UMB_MEMBER_TYPE_WORKSPACE_CONTEXT } from './member-type-workspace.context-token.js';
22
import { css, html, customElement, state, ifDefined } from '@umbraco-cms/backoffice/external/lit';
33
import { UmbLitElement, umbFocus } from '@umbraco-cms/backoffice/lit-element';
4-
import type { UUIInputElement } from '@umbraco-cms/backoffice/external/uui';
5-
import { UUIInputEvent } from '@umbraco-cms/backoffice/external/uui';
64
import { UMB_ICON_PICKER_MODAL, UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal';
7-
import { generateAlias } from '@umbraco-cms/backoffice/utils';
85

96
@customElement('umb-member-type-workspace-editor')
107
export class UmbMemberTypeWorkspaceEditorElement extends UmbLitElement {
@@ -14,9 +11,6 @@ export class UmbMemberTypeWorkspaceEditorElement extends UmbLitElement {
1411
@state()
1512
private _alias?: string;
1613

17-
@state()
18-
private _aliasLocked = true;
19-
2014
@state()
2115
private _icon?: string;
2216

@@ -54,43 +48,6 @@ export class UmbMemberTypeWorkspaceEditorElement extends UmbLitElement {
5448
);
5549
}
5650

57-
// TODO. find a way where we don't have to do this for all workspaces.
58-
#onNameChange(event: UUIInputEvent) {
59-
if (event instanceof UUIInputEvent) {
60-
const target = event.composedPath()[0] as UUIInputElement;
61-
62-
if (typeof target?.value === 'string') {
63-
const oldName = this._name;
64-
const oldAlias = this._alias;
65-
const newName = event.target.value.toString();
66-
if (this._aliasLocked) {
67-
const expectedOldAlias = generateAlias(oldName ?? '');
68-
// Only update the alias if the alias matches a generated alias of the old name (otherwise the alias is considered one written by the user.)
69-
if (expectedOldAlias === oldAlias) {
70-
this.#workspaceContext?.set('alias', generateAlias(newName));
71-
}
72-
}
73-
this.#workspaceContext?.setName(target.value);
74-
}
75-
}
76-
}
77-
78-
// TODO. find a way where we don't have to do this for all workspaces.
79-
#onAliasChange(event: UUIInputEvent) {
80-
if (event instanceof UUIInputEvent) {
81-
const target = event.composedPath()[0] as UUIInputElement;
82-
83-
if (typeof target?.value === 'string') {
84-
this.#workspaceContext?.set('alias', target.value);
85-
}
86-
}
87-
event.stopPropagation();
88-
}
89-
90-
#onToggleAliasLock() {
91-
this._aliasLocked = !this._aliasLocked;
92-
}
93-
9451
private async _handleIconClick() {
9552
const [alias, color] = this._icon?.replace('color-', '')?.split(' ') ?? [];
9653
const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT);
@@ -110,6 +67,11 @@ export class UmbMemberTypeWorkspaceEditorElement extends UmbLitElement {
11067
});
11168
}
11269

70+
#onNameAndAliasChange(event: InputEvent & { target: UmbInputWithAliasElement }) {
71+
this.#workspaceContext?.setName(event.target.value ?? '');
72+
this.#workspaceContext?.setAlias(event.target.alias ?? '');
73+
}
74+
11375
render() {
11476
return html`
11577
<umb-workspace-editor alias="Umb.Workspace.MemberType">
@@ -118,22 +80,13 @@ export class UmbMemberTypeWorkspaceEditorElement extends UmbLitElement {
11880
<uui-icon name="${ifDefined(this._icon)}" style="color: ${this._iconColorAlias}"></uui-icon>
11981
</uui-button>
12082
121-
<uui-input id="name" .value=${this._name} @input="${this.#onNameChange}" label="name" ${umbFocus()}>
122-
<!-- TODO: should use UUI-LOCK-INPUT, but that does not fire an event when its locked/unlocked -->
123-
<uui-input
124-
name="alias"
125-
slot="append"
126-
label="alias"
127-
@input=${this.#onAliasChange}
128-
.value=${this._alias}
129-
placeholder="Enter alias..."
130-
?disabled=${this._aliasLocked}>
131-
<!-- TODO: validation for bad characters -->
132-
<div @click=${this.#onToggleAliasLock} @keydown=${() => ''} id="alias-lock" slot="prepend">
133-
<uui-icon name=${this._aliasLocked ? 'icon-lock' : 'icon-unlocked'}></uui-icon>
134-
</div>
135-
</uui-input>
136-
</uui-input>
83+
<umb-input-with-alias
84+
id="name"
85+
label="name"
86+
value=${this._name}
87+
alias=${this._alias}
88+
@change="${this.#onNameAndAliasChange}"
89+
${umbFocus()}></umb-input-with-alias>
13790
</div>
13891
</umb-workspace-editor>
13992
`;

0 commit comments

Comments
 (0)