diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/components/input-member/input-member.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/components/input-member/input-member.element.ts index 90ce063c4d..3c1983d5c9 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/components/input-member/input-member.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/components/input-member/input-member.element.ts @@ -102,6 +102,27 @@ export class UmbInputMemberElement extends UmbFormControlMixin boolean = () => true; + /** + * Sets the input to readonly mode, meaning value cannot be changed but still able to read and select its content. + * @type {boolean} + * @attr + * @default false + */ + @property({ type: Boolean, reflect: true }) + public get readonly() { + return this.#readonly; + } + public set readonly(value) { + this.#readonly = value; + + if (this.#readonly) { + this.#sorter.disable(); + } else { + this.#sorter.enable(); + } + } + #readonly = false; + @state() private _editMemberPath = ''; @@ -180,28 +201,22 @@ export class UmbInputMemberElement extends UmbFormControlMixin + label=${this.localize.term('general_choose')} + ?disabled=${this.readonly}> `; } #renderItem(item: UmbMemberItemModel) { if (!item.unique) return nothing; return html` - - ${this.#renderIcon(item)} + - ${this.#renderOpenButton(item)} - this.#onRemove(item)} label=${this.localize.term('general_remove')}> + ${this.#renderOpenButton(item)} ${this.#renderRemoveButton(item)} - + `; } - #renderIcon(item: UmbMemberItemModel) { - if (!item.memberType.icon) return; - return html``; - } - #renderOpenButton(item: UmbMemberItemModel) { if (!this.showOpenButton) return nothing; return html` @@ -213,6 +228,13 @@ export class UmbInputMemberElement extends UmbFormControlMixin this.#onRemove(item)} label=${this.localize.term('general_remove')}> + `; + } + static override styles = [ css` #btn-add { diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/property-editor/member-picker/manifests.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/property-editor/member-picker/manifests.ts index da67731ba6..1f8c7cfbcc 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/property-editor/member-picker/manifests.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/property-editor/member-picker/manifests.ts @@ -12,6 +12,7 @@ export const manifests: Array = [ propertyEditorSchemaAlias: 'Umbraco.MemberPicker', icon: 'icon-user', group: 'people', + supportsReadOnly: true, }, }, memberPickerSchemaManifest, diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/member/property-editor/member-picker/property-editor-ui-member-picker.element.ts b/src/Umbraco.Web.UI.Client/src/packages/members/member/property-editor/member-picker/property-editor-ui-member-picker.element.ts index a1dc8bd3e6..0ca5e50965 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/members/member/property-editor/member-picker/property-editor-ui-member-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/members/member/property-editor/member-picker/property-editor-ui-member-picker.element.ts @@ -16,13 +16,27 @@ export class UmbPropertyEditorUIMemberPickerElement extends UmbLitElement implem @property({ attribute: false }) public config?: UmbPropertyEditorConfigCollection; + /** + * Sets the input to readonly mode, meaning value cannot be changed but still able to read and select its content. + * @type {boolean} + * @attr + * @default false + */ + @property({ type: Boolean, reflect: true }) + readonly = false; + #onChange(event: CustomEvent & { target: UmbInputMemberElement }) { this.value = event.target.value; this.dispatchEvent(new UmbPropertyValueChangeEvent()); } override render() { - return html``; + return html``; } }