diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document/input-document.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document/input-document.element.ts index 6c07e8834a..f7febe5dd3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document/input-document.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/components/input-document/input-document.element.ts @@ -1,5 +1,14 @@ import { UmbDocumentPickerContext } from './input-document.context.js'; -import { classMap, css, customElement, html, property, repeat, state } from '@umbraco-cms/backoffice/external/lit'; +import { + classMap, + css, + customElement, + html, + nothing, + property, + repeat, + state, +} from '@umbraco-cms/backoffice/external/lit'; import { splitStringToArray } from '@umbraco-cms/backoffice/utils'; import { UmbChangeEvent } from '@umbraco-cms/backoffice/event'; import { UmbFormControlMixin } from '@umbraco-cms/backoffice/validation'; @@ -103,6 +112,15 @@ export class UmbInputDocumentElement extends UmbFormControlMixin 0 ? this.selection.join(',') : undefined; } + /** + * 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; + @state() private _editDocumentPath = ''; @@ -173,7 +191,8 @@ export class UmbInputDocumentElement extends UmbFormControlMixin + label=${this.localize.term('general_choose')} + ?disabled=${this.readonly}> `; } @@ -193,11 +212,14 @@ export class UmbInputDocumentElement extends UmbFormControlMixin + ${this.#renderIcon(item)} ${this.#renderIsTrashed(item)} - ${this.#renderOpenButton(item)} - this.#onRemove(item)} label=${this.localize.term('general_remove')}> + ${this.#renderOpenButton(item)} ${this.#renderRemoveButton(item)} `; @@ -213,8 +235,16 @@ export class UmbInputDocumentElement extends UmbFormControlMixinTrashed`; } + #renderRemoveButton(item: UmbDocumentItemModel) { + if (this.readonly) return nothing; + return html` + this.#onRemove(item)} label=${this.localize.term('general_remove')}> + `; + } + #renderOpenButton(item: UmbDocumentItemModel) { - if (!this.showOpenButton) return; + if (this.readonly) return nothing; + if (!this.showOpenButton) return nothing; return html`