diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/schedule-modal/document-schedule-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/schedule-modal/document-schedule-modal.element.ts index 61750880ce..7780a27d70 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/schedule-modal/document-schedule-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/schedule-modal/document-schedule-modal.element.ts @@ -6,6 +6,7 @@ import { UmbModalBaseElement } from '@umbraco-cms/backoffice/modal'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import { UmbSelectionManager } from '@umbraco-cms/backoffice/utils'; import type { UmbInputDateElement } from '@umbraco-cms/backoffice/components'; +import type { UUIBooleanInputElement } from '@umbraco-cms/backoffice/external/uui'; @customElement('umb-document-schedule-modal') export class UmbDocumentScheduleModalElement extends UmbModalBaseElement< @@ -77,6 +78,25 @@ export class UmbDocumentScheduleModalElement extends UmbModalBaseElement< return this._selection.some((s) => s.unique === unique); } + #onSelectAllChange(event: Event) { + const allUniques = this._options.map((o) => o.unique); + const filter = this.#selectionManager.getAllowLimitation(); + const allowedUniques = allUniques.filter((unique) => filter(unique)); + + if ((event.target as UUIBooleanInputElement).checked) { + this.#selectionManager.setSelection(allowedUniques); + } else { + this.#selectionManager.setSelection([]); + } + } + + #isAllSelected() { + const allUniques = this._options.map((o) => o.unique); + const filter = this.#selectionManager.getAllowLimitation(); + const allowedUniques = allUniques.filter((unique) => filter(unique)); + return this._selection.length === allowedUniques.length; + } + override render() { return html`

@@ -107,11 +127,18 @@ export class UmbDocumentScheduleModalElement extends UmbModalBaseElement< } #renderOptions() { - return repeat( - this._options, - (option) => option.unique, - (option) => this.#renderItem(option), - ); + return html` + + + ${repeat( + this._options, + (option) => option.unique, + (option) => this.#renderItem(option), + )} + `; } #renderItem(option: UmbDocumentVariantOptionModel) { @@ -210,6 +237,10 @@ export class UmbDocumentScheduleModalElement extends UmbModalBaseElement< border-right: 1px dashed var(--uui-color-border); } + uui-checkbox { + margin-bottom: var(--uui-size-space-3); + } + uui-menu-item { --uui-menu-item-flat-structure: 1; }