From 1f99de1739c753c3f4104ac0f1a693f06aeb1ea8 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 16 Sep 2024 10:57:57 +0200 Subject: [PATCH 01/13] only select writable cultures --- .../documents/workspace/document-workspace.context.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts index 9eaa8c1d43..0fe483682f 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace.context.ts @@ -536,11 +536,15 @@ export class UmbDocumentWorkspaceContext const selected = activeVariantIds.concat(changedVariantIds); // Selected can contain entries that are not part of the options, therefor the modal filters selection based on options. + const readOnlyCultures = this.readOnlyState.getStates().map((s) => s.variantId.culture); + const selectedCultures = selected.map((x) => x.toString()).filter((v, i, a) => a.indexOf(v) === i); + const writable = selectedCultures.filter((x) => readOnlyCultures.includes(x) === false); + const options = await firstValueFrom(this.variantOptions); return { options, - selected: selected.map((x) => x.toString()).filter((v, i, a) => a.indexOf(v) === i), + selected: writable, }; } From 54bcc11b267791097f65e0b52b9e44ac78ca3e99 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 16 Sep 2024 12:21:14 +0200 Subject: [PATCH 02/13] add selection filter option --- .../utils/selection-manager/selection.manager.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.ts b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.ts index d1127cbb8d..e3b686c941 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.ts @@ -18,6 +18,9 @@ export class UmbSelectionManager true; + constructor(host: UmbControllerHost) { super(host); } @@ -109,6 +112,9 @@ export class UmbSelectionManager boolean): void { + this.#selectionFilter = filter; + } } From 9149074274f080e1d299a2ffb0b4efb9f2824714 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 16 Sep 2024 12:21:20 +0200 Subject: [PATCH 03/13] add tests --- .../selection-manager/selection.manager.test.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts index c5a6cfff65..364ecf3775 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts @@ -76,6 +76,10 @@ describe('UmbSelectionManager', () => { it('has a clearSelection method', () => { expect(manager).to.have.property('clearSelection').that.is.a('function'); }); + + it('has a setFilter method', () => { + expect(manager).to.have.property('setFilter').that.is.a('function'); + }); }); }); @@ -150,6 +154,15 @@ describe('UmbSelectionManager', () => { manager.select('3'); expect(manager.getSelection()).to.deep.equal([]); }); + + it('can not select an item if it does not pass the filter', () => { + manager.setFilter((item) => item !== '2'); + manager.select('2'); + expect(manager.getSelection()).to.deep.equal([]); + + manager.select('1'); + expect(manager.getSelection()).to.deep.equal(['1']); + }); }); describe('Deselect', () => { From cb04ab62eee6feb45935dcc3c8d092b80e585ad9 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 16 Sep 2024 12:22:27 +0200 Subject: [PATCH 04/13] apply filter to input --- ...ocument-variant-language-picker.element.ts | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts index 52d69df997..b5c6b5e86b 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts @@ -1,5 +1,14 @@ import { UmbDocumentVariantState, type UmbDocumentVariantOptionModel } from '../../types.js'; -import { css, customElement, html, nothing, property, repeat, state } from '@umbraco-cms/backoffice/external/lit'; +import { + css, + customElement, + html, + nothing, + property, + repeat, + state, + type PropertyValues, +} from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; import type { UmbSelectionManager } from '@umbraco-cms/backoffice/utils'; @@ -37,6 +46,17 @@ export class UmbDocumentVariantLanguagePickerElement extends UmbLitElement { @property({ attribute: false }) public pickableFilter?: (item: UmbDocumentVariantOptionModel) => boolean; + protected override updated(_changedProperties: PropertyValues): void { + super.updated(_changedProperties); + + if (this.selectionManager && this.pickableFilter) { + this.#selectionManager.setFilter((unique) => { + const option = this.variantLanguageOptions.find((o) => o.unique === unique); + return option ? this.pickableFilter!(option) : true; + }); + } + } + override render() { return this.variantLanguageOptions.length ? repeat( From 1bab612cb8053eff99e43c0d7b81f4091f17b2d3 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 16 Sep 2024 12:26:42 +0200 Subject: [PATCH 05/13] schedule publishing - apply filter to selection manager --- .../schedule-modal/document-schedule-modal.element.ts | 9 +++++++++ 1 file changed, 9 insertions(+) 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 643285640c..1d1042a69f 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 @@ -41,6 +41,15 @@ export class UmbDocumentScheduleModalElement extends UmbModalBaseElement< this.#selectionManager.setMultiple(true); this.#selectionManager.setSelectable(true); + const pickableFilter = this.data?.pickableFilter; + + if (pickableFilter) { + this.#selectionManager.setFilter((unique) => { + const option = this.data?.options.find((o) => o.unique === unique); + return option ? pickableFilter(option) : true; + }); + } + // Only display variants that are relevant to pick from, i.e. variants that are draft or published with pending changes: this._options = this.data?.options.filter( From 1fcce6749a06ad45d97e345d15c00ba1030e0f0e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 16 Sep 2024 12:40:24 +0200 Subject: [PATCH 06/13] rename filter to disallow --- .../selection-manager/selection.manager.test.ts | 8 ++++---- .../utils/selection-manager/selection.manager.ts | 12 ++++++------ .../document-schedule-modal.element.ts | 2 +- .../document-variant-language-picker.element.ts | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts index 364ecf3775..06e41c4176 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts @@ -77,8 +77,8 @@ describe('UmbSelectionManager', () => { expect(manager).to.have.property('clearSelection').that.is.a('function'); }); - it('has a setFilter method', () => { - expect(manager).to.have.property('setFilter').that.is.a('function'); + it('has a setDisallow method', () => { + expect(manager).to.have.property('setDisallow').that.is.a('function'); }); }); }); @@ -155,8 +155,8 @@ describe('UmbSelectionManager', () => { expect(manager.getSelection()).to.deep.equal([]); }); - it('can not select an item if it does not pass the filter', () => { - manager.setFilter((item) => item !== '2'); + it('can not select an item if it does not pass the disallow function', () => { + manager.setDisallow((item) => item !== '2'); manager.select('2'); expect(manager.getSelection()).to.deep.equal([]); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.ts b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.ts index e3b686c941..34d45a2e97 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.ts @@ -19,7 +19,7 @@ export class UmbSelectionManager true; + #disallow = (unique: ValueType) => true; constructor(host: UmbControllerHost) { super(host); @@ -112,7 +112,7 @@ export class UmbSelectionManager boolean): void { - this.#selectionFilter = filter; + public setDisallow(compareFn: (unique: ValueType) => boolean): void { + this.#disallow = compareFn; } } 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 1d1042a69f..7c2360419d 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 @@ -44,7 +44,7 @@ export class UmbDocumentScheduleModalElement extends UmbModalBaseElement< const pickableFilter = this.data?.pickableFilter; if (pickableFilter) { - this.#selectionManager.setFilter((unique) => { + this.#selectionManager.setDisallow((unique) => { const option = this.data?.options.find((o) => o.unique === unique); return option ? pickableFilter(option) : true; }); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts index b5c6b5e86b..dd9d5ab6b3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts @@ -50,7 +50,7 @@ export class UmbDocumentVariantLanguagePickerElement extends UmbLitElement { super.updated(_changedProperties); if (this.selectionManager && this.pickableFilter) { - this.#selectionManager.setFilter((unique) => { + this.#selectionManager.setDisallow((unique) => { const option = this.variantLanguageOptions.find((o) => o.unique === unique); return option ? this.pickableFilter!(option) : true; }); From ee7ef678461d03b4157a9a5401e694ae661fbf4b Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 16 Sep 2024 13:41:27 +0200 Subject: [PATCH 07/13] turn filter around to allow + fix test --- .../utils/selection-manager/selection.manager.test.ts | 6 +++--- .../core/utils/selection-manager/selection.manager.ts | 10 +++++----- .../schedule-modal/document-schedule-modal.element.ts | 2 +- .../shared/document-variant-language-picker.element.ts | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts index 06e41c4176..81630b60bc 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts @@ -155,9 +155,9 @@ describe('UmbSelectionManager', () => { expect(manager.getSelection()).to.deep.equal([]); }); - it('can not select an item if it does not pass the disallow function', () => { - manager.setDisallow((item) => item !== '2'); - manager.select('2'); + it('can not select an item if it does not pass the allow function', () => { + manager.setAllow((item) => item !== '2'); + expect(() => manager.select('2')).to.throw(); expect(manager.getSelection()).to.deep.equal([]); manager.select('1'); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.ts b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.ts index 34d45a2e97..58073bdb37 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.ts @@ -19,7 +19,7 @@ export class UmbSelectionManager true; + #allow = (unique: ValueType) => true; constructor(host: UmbControllerHost) { super(host); @@ -112,8 +112,8 @@ export class UmbSelectionManager boolean): void { - this.#disallow = compareFn; + public setAllow(compareFn: (unique: ValueType) => boolean): void { + this.#allow = compareFn; } } 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 7c2360419d..fbef782e92 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 @@ -44,7 +44,7 @@ export class UmbDocumentScheduleModalElement extends UmbModalBaseElement< const pickableFilter = this.data?.pickableFilter; if (pickableFilter) { - this.#selectionManager.setDisallow((unique) => { + this.#selectionManager.setAllow((unique) => { const option = this.data?.options.find((o) => o.unique === unique); return option ? pickableFilter(option) : true; }); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts index dd9d5ab6b3..cf5f90efbf 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts @@ -50,7 +50,7 @@ export class UmbDocumentVariantLanguagePickerElement extends UmbLitElement { super.updated(_changedProperties); if (this.selectionManager && this.pickableFilter) { - this.#selectionManager.setDisallow((unique) => { + this.#selectionManager.setAllow((unique) => { const option = this.variantLanguageOptions.find((o) => o.unique === unique); return option ? this.pickableFilter!(option) : true; }); From 410285aa9374f9d31c3c699b747de5cc10249b6e Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Mon, 16 Sep 2024 14:13:56 +0200 Subject: [PATCH 08/13] Update selection.manager.test.ts --- .../core/utils/selection-manager/selection.manager.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts index 81630b60bc..7b4bf7e51e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts @@ -77,8 +77,8 @@ describe('UmbSelectionManager', () => { expect(manager).to.have.property('clearSelection').that.is.a('function'); }); - it('has a setDisallow method', () => { - expect(manager).to.have.property('setDisallow').that.is.a('function'); + it('has a setAllow method', () => { + expect(manager).to.have.property('setAllow').that.is.a('function'); }); }); }); From c005ea2039492988ab0a9fd4ef352de8e14c25cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20Lyngs=C3=B8?= Date: Tue, 17 Sep 2024 12:33:19 +0200 Subject: [PATCH 09/13] adapt padding to new UUI --- .../workspace-action-menu/workspace-action-menu.element.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action-menu/workspace-action-menu.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action-menu/workspace-action-menu.element.ts index cf01d7e666..6ec742ac14 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action-menu/workspace-action-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-action-menu/workspace-action-menu.element.ts @@ -78,8 +78,8 @@ export class UmbWorkspaceActionMenuElement extends UmbLitElement { } #popover-trigger { - --uui-button-padding-top-factor: 0.5; - --uui-button-padding-bottom-factor: 0.1; + --uui-button-padding-top-factor: 0; + --uui-button-padding-bottom-factor: 0.125; } `, ]; From e4bbbe0f81cc37df749c915f026ecc6d2c8c7a95 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Tue, 17 Sep 2024 12:43:37 +0200 Subject: [PATCH 10/13] update method name --- .../core/utils/selection-manager/selection.manager.test.ts | 6 +++--- .../core/utils/selection-manager/selection.manager.ts | 2 +- .../schedule-modal/document-schedule-modal.element.ts | 2 +- .../shared/document-variant-language-picker.element.ts | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts index 7b4bf7e51e..18d8647457 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.test.ts @@ -77,8 +77,8 @@ describe('UmbSelectionManager', () => { expect(manager).to.have.property('clearSelection').that.is.a('function'); }); - it('has a setAllow method', () => { - expect(manager).to.have.property('setAllow').that.is.a('function'); + it('has a setAllowLimitation method', () => { + expect(manager).to.have.property('setAllowLimitation').that.is.a('function'); }); }); }); @@ -156,7 +156,7 @@ describe('UmbSelectionManager', () => { }); it('can not select an item if it does not pass the allow function', () => { - manager.setAllow((item) => item !== '2'); + manager.setAllowLimitation((item) => item !== '2'); expect(() => manager.select('2')).to.throw(); expect(manager.getSelection()).to.deep.equal([]); diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.ts b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.ts index 58073bdb37..3e1cd91ca1 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/utils/selection-manager/selection.manager.ts @@ -158,7 +158,7 @@ export class UmbSelectionManager boolean): void { + public setAllowLimitation(compareFn: (unique: ValueType) => boolean): void { this.#allow = compareFn; } } 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 fbef782e92..dc850eb0ad 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 @@ -44,7 +44,7 @@ export class UmbDocumentScheduleModalElement extends UmbModalBaseElement< const pickableFilter = this.data?.pickableFilter; if (pickableFilter) { - this.#selectionManager.setAllow((unique) => { + this.#selectionManager.setAllowLimitation((unique) => { const option = this.data?.options.find((o) => o.unique === unique); return option ? pickableFilter(option) : true; }); diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts index cf5f90efbf..ccfd6c36d4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts @@ -50,7 +50,7 @@ export class UmbDocumentVariantLanguagePickerElement extends UmbLitElement { super.updated(_changedProperties); if (this.selectionManager && this.pickableFilter) { - this.#selectionManager.setAllow((unique) => { + this.#selectionManager.setAllowLimitation((unique) => { const option = this.variantLanguageOptions.find((o) => o.unique === unique); return option ? this.pickableFilter!(option) : true; }); From fa28ed3d8edd6be2deac701311173d2769f15619 Mon Sep 17 00:00:00 2001 From: Lone Iversen <108085781+loivsen@users.noreply.github.com> Date: Tue, 17 Sep 2024 13:18:58 +0200 Subject: [PATCH 11/13] MultipleColorPicker: Tab behaviour and new line on enter --- .../multiple-color-picker-input.element.ts | 3 ++- ...ultiple-color-picker-item-input.element.ts | 21 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/multiple-color-picker-input/multiple-color-picker-input.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/multiple-color-picker-input/multiple-color-picker-input.element.ts index 11b9325f8b..a76e4e56c5 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/multiple-color-picker-input/multiple-color-picker-input.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/multiple-color-picker-input/multiple-color-picker-input.element.ts @@ -175,7 +175,7 @@ export class UmbMultipleColorPickerInputElement extends UUIFormControlMixin(UmbL
${repeat( this._items, - (item) => item.value, + (item, index) => index, (item, index) => html` this.#onChange(event, index)} @delete=${(event: UmbDeleteEvent) => this.#deleteItem(event, index)}> diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/components/multiple-color-picker-input/multiple-color-picker-item-input.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/components/multiple-color-picker-input/multiple-color-picker-item-input.element.ts index 2513799e64..6652dce46e 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/components/multiple-color-picker-input/multiple-color-picker-item-input.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/components/multiple-color-picker-input/multiple-color-picker-item-input.element.ts @@ -84,12 +84,25 @@ export class UmbMultipleColorPickerItemInputElement extends UUIFormControlMixin( this.dispatchEvent(new UmbInputEvent()); } + #onLabelKeydown(event: KeyboardEvent) { + event.stopPropagation(); + const target = event.currentTarget as UUIInputElement; + if (event.key === 'Enter' && target.value) { + this.dispatchEvent(new CustomEvent('enter')); + } + } + #onLabelChange(event: UUIInputEvent) { event.stopPropagation(); this.label = event.target.value as string; this.dispatchEvent(new UmbChangeEvent()); } + #onValueKeydown(event: KeyboardEvent) { + event.stopPropagation(); + if (event.key === 'Enter') this.#onColorClick(); + } + #onValueChange(event: UUIInputEvent) { event.stopPropagation(); this.value = event.target.value as string; @@ -145,6 +158,7 @@ export class UmbMultipleColorPickerItemInputElement extends UUIFormControlMixin( placeholder=${this.localize.term('general_value')} required=${this.required} required-message="Value is missing" + @keydown=${this.#onValueKeydown} @input=${this.#onValueInput} @change=${this.#onValueChange}> Date: Tue, 17 Sep 2024 14:57:28 +0200 Subject: [PATCH 12/13] add null check --- .../core/tree/tree-picker-modal/tree-picker-modal.element.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker-modal/tree-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker-modal/tree-picker-modal.element.ts index 9ca76c005e..94aa1c4476 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker-modal/tree-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/core/tree/tree-picker-modal/tree-picker-modal.element.ts @@ -53,7 +53,9 @@ export class UmbTreePickerModalElement Date: Tue, 17 Sep 2024 19:04:41 +0000 Subject: [PATCH 13/13] build(deps-dev): bump vite from 5.4.1 to 5.4.6 Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.1 to 5.4.6. - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v5.4.6/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v5.4.6/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- src/Umbraco.Web.UI.Client/package-lock.json | 34 ++++++++++----------- src/Umbraco.Web.UI.Client/package.json | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/package-lock.json b/src/Umbraco.Web.UI.Client/package-lock.json index 9fa05a12d5..7197713903 100644 --- a/src/Umbraco.Web.UI.Client/package-lock.json +++ b/src/Umbraco.Web.UI.Client/package-lock.json @@ -86,7 +86,7 @@ "typescript": "^5.5.3", "typescript-eslint": "^8.0.1", "typescript-json-schema": "^0.64.0", - "vite": "^5.3.4", + "vite": "^5.4.6", "vite-plugin-static-copy": "^1.0.6", "vite-tsconfig-paths": "^4.3.2", "web-component-analyzer": "^2.0.0" @@ -18556,9 +18556,9 @@ "dev": true }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", "dev": true }, "node_modules/picomatch": { @@ -18777,9 +18777,9 @@ } }, "node_modules/postcss": { - "version": "8.4.41", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", - "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "dev": true, "funding": [ { @@ -18797,8 +18797,8 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -20381,9 +20381,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -22090,14 +22090,14 @@ } }, "node_modules/vite": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.1.tgz", - "integrity": "sha512-1oE6yuNXssjrZdblI9AfBbHCC41nnyoVoEZxQnID6yvQZAFBzxxkqoFLtHUMkYunL8hwOLEjgTuxpkRxvba3kA==", + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.6.tgz", + "integrity": "sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==", "dev": true, "dependencies": { "esbuild": "^0.21.3", - "postcss": "^8.4.41", - "rollup": "^4.13.0" + "postcss": "^8.4.43", + "rollup": "^4.20.0" }, "bin": { "vite": "bin/vite.js" diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 4f810d3278..ee21166f90 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -259,7 +259,7 @@ "typescript": "^5.5.3", "typescript-eslint": "^8.0.1", "typescript-json-schema": "^0.64.0", - "vite": "^5.3.4", + "vite": "^5.4.6", "vite-plugin-static-copy": "^1.0.6", "vite-tsconfig-paths": "^4.3.2", "web-component-analyzer": "^2.0.0"