AAE-38287 Cannot select dropdown options when selection type is multiple (#11220)

* AAE-38287 Fix multiselect dropdown

* update tests

* update

* update

* update

* update

* update
This commit is contained in:
Bartosz Sekula
2025-09-22 15:54:38 +02:00
committed by GitHub
parent fb72ccffcc
commit 6b9d3d2104
6 changed files with 170 additions and 34 deletions

View File

@@ -36,9 +36,15 @@ import { FormFieldModel } from '../widgets/core/form-field.model';
import { FieldStylePipe } from '../../pipes/field-style.pipe';
import { FormFieldTypes } from '../widgets/core/form-field-types';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
import { ReactiveFormWidget } from '../widgets/reactive-widget.interface';
declare const adf: any;
/**
* Component is a wrapper for widget components.
* It is responsible for instantiating the correct widget component
* based on the field type.
*/
@Component({
selector: 'adf-form-field',
templateUrl: './form-field.component.html',
@@ -98,7 +104,7 @@ export class FormFieldComponent implements OnInit, OnDestroy {
}
});
if (FormFieldTypes.isReactiveType(instance?.field?.type)) {
if (FormFieldTypes.isReactiveWidget(instance)) {
this.updateReactiveFormControlOnFormRulesEvent(instance);
}
}
@@ -106,7 +112,7 @@ export class FormFieldComponent implements OnInit, OnDestroy {
}
}
private updateReactiveFormControlOnFormRulesEvent(instance: any): void {
private updateReactiveFormControlOnFormRulesEvent(instance: ReactiveFormWidget): void {
instance?.formService.formRulesEvent.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {
instance?.updateReactiveFormControl();
instance?.field?.form.validateForm(instance?.field);

View File

@@ -15,6 +15,8 @@
* limitations under the License.
*/
import { MaybeReactiveFormWidget, ReactiveFormWidget } from '../reactive-widget.interface';
/* eslint-disable @angular-eslint/component-selector */
export class FormFieldTypes {
@@ -71,6 +73,10 @@ export class FormFieldTypes {
return FormFieldTypes.REACTIVE_TYPES.includes(type);
}
static isReactiveWidget(instance: MaybeReactiveFormWidget): instance is ReactiveFormWidget {
return FormFieldTypes.REACTIVE_TYPES.includes(instance?.field?.type);
}
static isConstantValueType(type: string): boolean {
return FormFieldTypes.CONSTANT_VALUE_TYPES.includes(type);
}

View File

@@ -16,8 +16,13 @@
*/
import { FormService } from '../../services/form.service';
import { FormFieldModel } from './core/form-field.model';
import { WidgetComponent } from './widget.component';
export interface ReactiveFormWidget {
updateReactiveFormControl(): void;
formService: FormService;
field: FormFieldModel;
}
export type MaybeReactiveFormWidget = WidgetComponent | ReactiveFormWidget;