From a025734e3a4898c2f1ca626033df72e20f3f70da Mon Sep 17 00:00:00 2001 From: alansemenov Date: Tue, 26 May 2026 10:01:18 +0200 Subject: [PATCH] Set label update is not debounced #4504 --- .../admin/common/js/form/set/FormSetOccurrenceView.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/resources/assets/admin/common/js/form/set/FormSetOccurrenceView.ts b/src/main/resources/assets/admin/common/js/form/set/FormSetOccurrenceView.ts index b8481ff25..7961f806d 100644 --- a/src/main/resources/assets/admin/common/js/form/set/FormSetOccurrenceView.ts +++ b/src/main/resources/assets/admin/common/js/form/set/FormSetOccurrenceView.ts @@ -17,6 +17,7 @@ import {MoreButton} from '../../ui/button/MoreButton'; import {KeyBinding} from '../../ui/KeyBinding'; import {KeyBindings} from '../../ui/KeyBindings'; import {ConfirmationMask} from '../../ui/mask/ConfirmationMask'; +import {AppHelper} from '../../util/AppHelper'; import {i18n} from '../../util/Messages'; import {FormContext} from '../FormContext'; import {FormItem} from '../FormItem'; @@ -89,6 +90,8 @@ export abstract class FormSetOccurrenceView private formDataAddedOrRemovedListener: (_event: (PropertyAddedEvent | PropertyRemovedEvent)) => void; + private debouncedUpdateLabel: () => void; + private expandRequestedListeners: ((view: FormSetOccurrenceView) => void)[] = []; protected constructor(classPrefix: string, config: FormSetOccurrenceViewConfig) { @@ -208,6 +211,8 @@ export abstract class FormSetOccurrenceView shelvedBindings = null; }); + this.debouncedUpdateLabel = AppHelper.debounce(() => this.updateLabel(), 50); + this.formDataChangedListener = (event: PropertyValueChangedEvent) => { const newValue: Value = event.getNewValue(); const propertyPathAsString: string = event.getPath().toString(); @@ -224,10 +229,10 @@ export abstract class FormSetOccurrenceView currentValue: newValue }; } - this.updateLabel(); + this.debouncedUpdateLabel(); }; - this.formDataAddedOrRemovedListener = (_event: PropertyAddedEvent | PropertyRemovedEvent) => this.updateLabel(); + this.formDataAddedOrRemovedListener = (_event: PropertyAddedEvent | PropertyRemovedEvent) => this.debouncedUpdateLabel(); this.onRemoved(() => { if (this.propertySet) {