novo-elements 12.0.1-next.1 → 12.1.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -79,7 +79,6 @@ declare class NovoModalModule {
79
79
  declare class NovoModalService {
80
80
  private injector;
81
81
  private overlay;
82
- _parentViewContainer: ViewContainerRef;
83
82
  overlayRef: OverlayRef;
84
83
  set parentViewContainer(view: ViewContainerRef);
85
84
  constructor(injector: Injector, overlay: Overlay);
@@ -312,6 +312,7 @@ declare class ConditionBuilderComponent implements OnInit, OnChanges, AfterConte
312
312
  groupIndex: number;
313
313
  addressConfig: AddressCriteriaConfig;
314
314
  dateConfig: DateCriteriaConfig;
315
+ allowEmptyField: boolean;
315
316
  hideOperator: i0.InputSignal<boolean>;
316
317
  conditionType: i0.InputSignal<unknown>;
317
318
  inputConfig: i0.InputSignal<QueryBuilderConfig>;
@@ -343,15 +344,32 @@ declare class ConditionBuilderComponent implements OnInit, OnChanges, AfterConte
343
344
  */
344
345
  changeFieldOptions(fieldConfig: FieldConfig<BaseFieldDef>): void;
345
346
  /**
346
- * Resets the input and operator view containers, regenerates the field templates,
347
- * and marks the component for change detection.
347
+ * Resets the input and operator view containers and marks the component for change detection.
348
348
  *
349
349
  * Use this method after updating form controls to reinitialize the input and
350
350
  * operator fields so that the view reflects the latest form control changes.
351
351
  *
352
+ * @param recreateTemplates - If true (default), regenerates the field templates.
353
+ * If false, only clears the outlets without recreating templates.
352
354
  * @returns void
353
355
  */
354
- resetInputAndOperator(): void;
356
+ resetInputAndOperator(recreateTemplates?: boolean): void;
357
+ /**
358
+ * Clears the entire condition (field, operator, value) and resets the condition builder UI.
359
+ *
360
+ * This method performs a complete reset of the condition builder:
361
+ * - Clears all form values (field, operator, value, supportingValue)
362
+ * - Allows empty field selection (prevents auto-restoration to default)
363
+ * - Resets the field search term
364
+ * - Clears internal state (_lastContext) to force re-detection of field changes
365
+ * - Updates field selection and clears UI outlets
366
+ *
367
+ * Use this method when you need to completely clear a condition and start fresh,
368
+ * such as when toggling a filter off or resetting a form group.
369
+ *
370
+ * @returns void
371
+ */
372
+ clearCondition(): void;
355
373
  getField(): BaseFieldDef;
356
374
  getDefaultField(): string;
357
375
  updateFieldSelection(): void;
@@ -362,7 +380,7 @@ declare class ConditionBuilderComponent implements OnInit, OnChanges, AfterConte
362
380
  private createFieldOperators;
363
381
  private createFieldInput;
364
382
  static ɵfac: i0.ɵɵFactoryDeclaration<ConditionBuilderComponent, never>;
365
- static ɵcmp: i0.ɵɵComponentDeclaration<ConditionBuilderComponent, "novo-condition-builder", never, { "label": { "alias": "label"; "required": false; }; "scope": { "alias": "scope"; "required": false; }; "andIndex": { "alias": "andIndex"; "required": false; }; "groupIndex": { "alias": "groupIndex"; "required": false; }; "addressConfig": { "alias": "addressConfig"; "required": false; }; "dateConfig": { "alias": "dateConfig"; "required": false; }; "hideOperator": { "alias": "hideOperator"; "required": false; "isSignal": true; }; "conditionType": { "alias": "conditionType"; "required": false; "isSignal": true; }; "inputConfig": { "alias": "config"; "required": false; "isSignal": true; }; "inputEditTypeFn": { "alias": "editTypeFn"; "required": false; "isSignal": true; }; }, {}, never, ["*"], false, never>;
383
+ static ɵcmp: i0.ɵɵComponentDeclaration<ConditionBuilderComponent, "novo-condition-builder", never, { "label": { "alias": "label"; "required": false; }; "scope": { "alias": "scope"; "required": false; }; "andIndex": { "alias": "andIndex"; "required": false; }; "groupIndex": { "alias": "groupIndex"; "required": false; }; "addressConfig": { "alias": "addressConfig"; "required": false; }; "dateConfig": { "alias": "dateConfig"; "required": false; }; "allowEmptyField": { "alias": "allowEmptyField"; "required": false; }; "hideOperator": { "alias": "hideOperator"; "required": false; "isSignal": true; }; "conditionType": { "alias": "conditionType"; "required": false; "isSignal": true; }; "inputConfig": { "alias": "config"; "required": false; "isSignal": true; }; "inputEditTypeFn": { "alias": "editTypeFn"; "required": false; "isSignal": true; }; }, {}, never, ["*"], false, never>;
366
384
  }
367
385
 
368
386
  declare abstract class AbstractConditionFieldDef implements OnDestroy, OnInit, AfterViewInit {
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnInit, OnChanges, EventEmitter, SimpleChanges } from '@angular/core';
2
+ import { OnInit, OnChanges, EventEmitter, SimpleChanges, ViewContainerRef, DestroyRef } from '@angular/core';
3
3
  import { SafeHtml, DomSanitizer } from '@angular/platform-browser';
4
4
  import { DeferredPromise } from 'novo-elements/utils';
5
5
  import * as i2 from '@angular/common';
@@ -79,6 +79,7 @@ declare class NovoToastService {
79
79
  };
80
80
  constructor(componentUtils: ComponentUtils);
81
81
  set parentViewContainer(view: any);
82
+ ownViewContainer(view: ViewContainerRef, destroyRef: DestroyRef): void;
82
83
  alert(options: ToastOptions, toastElement?: any): Promise<any>;
83
84
  isVisible(toast: any): any;
84
85
  hide(toast: any): void;
@@ -190,8 +190,7 @@ const DEFAULT_CONFIG = {
190
190
  };
191
191
  class NovoModalService {
192
192
  set parentViewContainer(view) {
193
- console.warn('parentViewContainer is deprecated');
194
- this._parentViewContainer = view;
193
+ console.warn('parentViewContainer is deprecated - will be ignored');
195
194
  }
196
195
  constructor(injector, overlay) {
197
196
  this.injector = injector;
@@ -1 +1 @@
1
- {"version":3,"file":"novo-elements-elements-modal.mjs","sources":["../../../projects/novo-elements/src/elements/modal/modal-ref.ts","../../../projects/novo-elements/src/elements/modal/modal.animation.ts","../../../projects/novo-elements/src/elements/modal/modal-container.component.ts","../../../projects/novo-elements/src/elements/modal/modal-container.component.html","../../../projects/novo-elements/src/elements/modal/modal.component.ts","../../../projects/novo-elements/src/elements/modal/modal.service.ts","../../../projects/novo-elements/src/elements/modal/modal.module.ts","../../../projects/novo-elements/src/elements/modal/novo-elements-elements-modal.ts"],"sourcesContent":["import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { NovoModalContainerComponent } from './modal-container.component';\n\n/**\n * Params that can be passed to the Modal\n */\n\nexport interface ModalParams {\n [propName: string]: any;\n}\nexport class NovoModalParams implements ModalParams {}\n\nexport class NovoModalRef<T = any, R = any> {\n constructor(public component: any, public params: T, private overlayRef: OverlayRef) {}\n\n private _beforeClose = new Subject<R>();\n private _afterClosed = new Subject<R>();\n\n componentInstance: NovoModalContainerComponent;\n isClosed: boolean = false;\n\n // Gets a promise that is resolved when the dialog is closed.\n get onClosed(): Promise<R> {\n return this._afterClosed.toPromise();\n }\n\n afterClosed(): Observable<R> {\n return this._afterClosed.asObservable();\n }\n\n beforeClose(): Observable<R> {\n return this._beforeClose.asObservable();\n }\n\n close(result?: R): void {\n // Listen for animation 'start' events\n this.componentInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'start'),\n take(1),\n )\n .subscribe(() => {\n this._beforeClose.next(result);\n this._beforeClose.complete();\n this.overlayRef.detachBackdrop();\n });\n\n // Listen for animation 'done' events\n this.componentInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'done' && event.toState === 'leave'),\n take(1),\n )\n .subscribe(() => {\n this.isClosed = true;\n this.overlayRef.dispose();\n this._afterClosed.next(result);\n this._afterClosed.complete();\n // Make sure to also clear the reference to the\n // component instance to avoid memory leaks\n this.componentInstance = null;\n });\n\n // Start exit animation\n this.componentInstance.startExitAnimation();\n }\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\n\nexport const zoomInOut = trigger('zoomInOut', [\n transition('void => *', [style({ transform: 'scale3d(.3, .3, .3)' }), animate(50)]),\n transition('* => void', [animate(50, style({ transform: 'scale3d(.0, .0, .0)' }))]),\n]);\n","import { AnimationEvent } from '@angular/animations';\nimport { ComponentPortal, Portal } from '@angular/cdk/portal';\nimport { Component, EventEmitter, HostBinding, Injector, Output } from '@angular/core';\nimport { NovoModalRef } from './modal-ref';\nimport { zoomInOut } from './modal.animation';\n\n@Component({\n selector: 'novo-modal-container',\n templateUrl: './modal-container.component.html',\n styleUrls: ['./modal-container.component.scss'],\n animations: [zoomInOut],\n standalone: false,\n})\nexport class NovoModalContainerComponent {\n @Output() animationStateChanged = new EventEmitter<AnimationEvent>();\n animationState: 'void' | 'enter' | 'leave' = 'enter';\n component: Portal<any>;\n initTimestamp = Date.now();\n @HostBinding('id') id = `modal-container-${this.initTimestamp}`;\n\n constructor(private injector: Injector, private modalRef: NovoModalRef) {\n this.component = new ComponentPortal(modalRef.component, null, injector);\n }\n\n onAnimationStart(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n onAnimationDone(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n startExitAnimation() {\n this.animationState = 'leave';\n }\n}\n","<div class=\"modal-container\"\n [@zoomInOut]=\"animationState\"\n (@zoomInOut.start)=\"onAnimationStart($event)\"\n (@zoomInOut.done)=\"onAnimationDone($event)\">\n <ng-template [cdkPortalOutlet]=\"component\"></ng-template>\n</div>","// NG2\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NovoModalRef } from './modal-ref';\n\n@Component({\n selector: 'novo-modal',\n template: `\n <ng-content select=\"header,novo-header,novo-card-header\"></ng-content>\n <ng-content select=\"section,novo-card-content\"></ng-content>\n <footer class=\"novo-modal-footer\"><ng-content select=\"button,novo-button\"></ng-content></footer>\n `,\n styleUrls: ['./modal.component.scss'],\n host: {\n class: 'novo-modal',\n },\n standalone: false,\n})\nexport class NovoModalElement {\n constructor(private modalRef: NovoModalRef) {}\n}\n\n@Component({\n selector: 'novo-notification',\n template: `\n <novo-button class=\"modal-close\" theme=\"icon\" icon=\"x\" (click)=\"close()\"></novo-button>\n <header class=\"novo-notification-header\"><ng-content select=\"label,novo-label\"></ng-content></header>\n <section class=\"novo-notification-body notification-body\">\n <i class=\"indicator\" [ngClass]=\"iconType\" *ngIf=\"iconType\"></i>\n <ng-content select=\"h1\"></ng-content>\n <ng-content select=\"h2\"></ng-content>\n <ng-content select=\"p\"></ng-content>\n </section>\n <footer class=\"novo-notification-footer\"><ng-content select=\"button,novo-button,novo-dropdown\"></ng-content></footer>\n `,\n styleUrls: ['./notification.component.scss'],\n host: {\n class: 'novo-notification',\n },\n standalone: false,\n})\nexport class NovoModalNotificationElement implements OnInit {\n @Input()\n type: string;\n @Input()\n icon: string;\n\n @Output()\n cancel: EventEmitter<any> = new EventEmitter();\n\n iconType: string;\n\n constructor(private modalRef: NovoModalRef) {\n this.modalRef = modalRef;\n }\n\n close() {\n this.cancel.emit();\n this.modalRef.close();\n }\n\n ngOnInit() {\n switch (this.type) {\n case 'success':\n this.iconType = 'bhi-check';\n break;\n case 'warning':\n this.iconType = 'bhi-caution-o';\n break;\n case 'error':\n this.iconType = 'bhi-caution-o';\n break;\n case 'custom':\n this.iconType = `bhi-${this.icon}`;\n break;\n default:\n break;\n }\n }\n}\n","// NG2\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, Injector, ViewContainerRef } from '@angular/core';\nimport { NovoModalContainerComponent } from './modal-container.component';\n// APP\nimport { NovoModalParams, NovoModalRef } from './modal-ref';\n\ninterface ModalConfig {\n panelClass?: string;\n hasBackdrop?: boolean;\n backdropClass?: string;\n}\n\nconst DEFAULT_CONFIG: ModalConfig = {\n hasBackdrop: true,\n backdropClass: 'modal-overlay-backdrop',\n panelClass: 'modal-overlay-panel',\n};\n\n@Injectable({ providedIn: 'root' })\nexport class NovoModalService {\n _parentViewContainer: ViewContainerRef;\n overlayRef: OverlayRef;\n\n set parentViewContainer(view: ViewContainerRef) {\n console.warn('parentViewContainer is deprecated');\n this._parentViewContainer = view;\n }\n\n constructor(private injector: Injector, private overlay: Overlay) {}\n\n open<T extends Record<string, any>>(component, params: Partial<T> = {}) {\n // Override default configuration\n const modalConfig = DEFAULT_CONFIG;\n\n // Returns an OverlayRef which is a PortalHost\n const overlayRef = this.createOverlay(modalConfig);\n this.overlayRef = overlayRef;\n\n // Instantiate remote control\n const modalRef = new NovoModalRef<typeof params>(component, params, overlayRef);\n\n const overlayComponent = this.attachModalContainer(NovoModalContainerComponent, overlayRef, modalConfig, modalRef);\n\n // Pass the instance of the overlay component to the remote control\n modalRef.componentInstance = overlayComponent;\n\n overlayRef.backdropClick().subscribe(() => modalRef.close());\n\n return modalRef;\n }\n\n private createOverlay(config: ModalConfig) {\n const overlayConfig = this.getOverlayConfig(config);\n return this.overlay.create(overlayConfig);\n }\n\n private attachModalContainer(component, overlayRef: OverlayRef, config: ModalConfig, modalRef: NovoModalRef) {\n const injector = this.createInjector(config, modalRef);\n const containerPortal = new ComponentPortal(component, null, injector);\n const containerRef: ComponentRef<any> = overlayRef.attach(containerPortal);\n\n return containerRef.instance;\n }\n\n private createInjector(config: ModalConfig, modalRef: NovoModalRef): Injector {\n return Injector.create({\n parent: this.injector,\n providers: [\n { provide: NovoModalRef, useValue: modalRef },\n // Support backwards compatability\n { provide: NovoModalParams, useValue: modalRef.params },\n ],\n });\n }\n\n private getOverlayConfig(config: ModalConfig): OverlayConfig {\n const positionStrategy = this.overlay.position().global().centerHorizontally().centerVertically();\n\n const overlayConfig = new OverlayConfig({\n positionStrategy,\n hasBackdrop: config.hasBackdrop,\n backdropClass: config.backdropClass,\n panelClass: config.panelClass,\n });\n\n return overlayConfig;\n }\n}\n","// NG2\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoModalContainerComponent } from './modal-container.component';\nimport { NovoModalElement, NovoModalNotificationElement } from './modal.component';\nimport { NovoModalService } from './modal.service';\n\n@NgModule({\n imports: [OverlayModule, PortalModule, CommonModule, NovoButtonModule],\n declarations: [NovoModalContainerComponent, NovoModalElement, NovoModalNotificationElement],\n exports: [NovoModalElement, NovoModalNotificationElement],\n providers: [NovoModalService],\n})\nexport class NovoModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.NovoModalRef","i2"],"mappings":"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"}
1
+ {"version":3,"file":"novo-elements-elements-modal.mjs","sources":["../../../projects/novo-elements/src/elements/modal/modal-ref.ts","../../../projects/novo-elements/src/elements/modal/modal.animation.ts","../../../projects/novo-elements/src/elements/modal/modal-container.component.ts","../../../projects/novo-elements/src/elements/modal/modal-container.component.html","../../../projects/novo-elements/src/elements/modal/modal.component.ts","../../../projects/novo-elements/src/elements/modal/modal.service.ts","../../../projects/novo-elements/src/elements/modal/modal.module.ts","../../../projects/novo-elements/src/elements/modal/novo-elements-elements-modal.ts"],"sourcesContent":["import { OverlayRef } from '@angular/cdk/overlay';\nimport { Observable, Subject } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { NovoModalContainerComponent } from './modal-container.component';\n\n/**\n * Params that can be passed to the Modal\n */\n\nexport interface ModalParams {\n [propName: string]: any;\n}\nexport class NovoModalParams implements ModalParams {}\n\nexport class NovoModalRef<T = any, R = any> {\n constructor(public component: any, public params: T, private overlayRef: OverlayRef) {}\n\n private _beforeClose = new Subject<R>();\n private _afterClosed = new Subject<R>();\n\n componentInstance: NovoModalContainerComponent;\n isClosed: boolean = false;\n\n // Gets a promise that is resolved when the dialog is closed.\n get onClosed(): Promise<R> {\n return this._afterClosed.toPromise();\n }\n\n afterClosed(): Observable<R> {\n return this._afterClosed.asObservable();\n }\n\n beforeClose(): Observable<R> {\n return this._beforeClose.asObservable();\n }\n\n close(result?: R): void {\n // Listen for animation 'start' events\n this.componentInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'start'),\n take(1),\n )\n .subscribe(() => {\n this._beforeClose.next(result);\n this._beforeClose.complete();\n this.overlayRef.detachBackdrop();\n });\n\n // Listen for animation 'done' events\n this.componentInstance.animationStateChanged\n .pipe(\n filter((event) => event.phaseName === 'done' && event.toState === 'leave'),\n take(1),\n )\n .subscribe(() => {\n this.isClosed = true;\n this.overlayRef.dispose();\n this._afterClosed.next(result);\n this._afterClosed.complete();\n // Make sure to also clear the reference to the\n // component instance to avoid memory leaks\n this.componentInstance = null;\n });\n\n // Start exit animation\n this.componentInstance.startExitAnimation();\n }\n}\n","import { animate, style, transition, trigger } from '@angular/animations';\n\nexport const zoomInOut = trigger('zoomInOut', [\n transition('void => *', [style({ transform: 'scale3d(.3, .3, .3)' }), animate(50)]),\n transition('* => void', [animate(50, style({ transform: 'scale3d(.0, .0, .0)' }))]),\n]);\n","import { AnimationEvent } from '@angular/animations';\nimport { ComponentPortal, Portal } from '@angular/cdk/portal';\nimport { Component, EventEmitter, HostBinding, Injector, Output } from '@angular/core';\nimport { NovoModalRef } from './modal-ref';\nimport { zoomInOut } from './modal.animation';\n\n@Component({\n selector: 'novo-modal-container',\n templateUrl: './modal-container.component.html',\n styleUrls: ['./modal-container.component.scss'],\n animations: [zoomInOut],\n standalone: false,\n})\nexport class NovoModalContainerComponent {\n @Output() animationStateChanged = new EventEmitter<AnimationEvent>();\n animationState: 'void' | 'enter' | 'leave' = 'enter';\n component: Portal<any>;\n initTimestamp = Date.now();\n @HostBinding('id') id = `modal-container-${this.initTimestamp}`;\n\n constructor(private injector: Injector, private modalRef: NovoModalRef) {\n this.component = new ComponentPortal(modalRef.component, null, injector);\n }\n\n onAnimationStart(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n onAnimationDone(event: AnimationEvent) {\n this.animationStateChanged.emit(event);\n }\n\n startExitAnimation() {\n this.animationState = 'leave';\n }\n}\n","<div class=\"modal-container\"\n [@zoomInOut]=\"animationState\"\n (@zoomInOut.start)=\"onAnimationStart($event)\"\n (@zoomInOut.done)=\"onAnimationDone($event)\">\n <ng-template [cdkPortalOutlet]=\"component\"></ng-template>\n</div>","// NG2\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { NovoModalRef } from './modal-ref';\n\n@Component({\n selector: 'novo-modal',\n template: `\n <ng-content select=\"header,novo-header,novo-card-header\"></ng-content>\n <ng-content select=\"section,novo-card-content\"></ng-content>\n <footer class=\"novo-modal-footer\"><ng-content select=\"button,novo-button\"></ng-content></footer>\n `,\n styleUrls: ['./modal.component.scss'],\n host: {\n class: 'novo-modal',\n },\n standalone: false,\n})\nexport class NovoModalElement {\n constructor(private modalRef: NovoModalRef) {}\n}\n\n@Component({\n selector: 'novo-notification',\n template: `\n <novo-button class=\"modal-close\" theme=\"icon\" icon=\"x\" (click)=\"close()\"></novo-button>\n <header class=\"novo-notification-header\"><ng-content select=\"label,novo-label\"></ng-content></header>\n <section class=\"novo-notification-body notification-body\">\n <i class=\"indicator\" [ngClass]=\"iconType\" *ngIf=\"iconType\"></i>\n <ng-content select=\"h1\"></ng-content>\n <ng-content select=\"h2\"></ng-content>\n <ng-content select=\"p\"></ng-content>\n </section>\n <footer class=\"novo-notification-footer\"><ng-content select=\"button,novo-button,novo-dropdown\"></ng-content></footer>\n `,\n styleUrls: ['./notification.component.scss'],\n host: {\n class: 'novo-notification',\n },\n standalone: false,\n})\nexport class NovoModalNotificationElement implements OnInit {\n @Input()\n type: string;\n @Input()\n icon: string;\n\n @Output()\n cancel: EventEmitter<any> = new EventEmitter();\n\n iconType: string;\n\n constructor(private modalRef: NovoModalRef) {\n this.modalRef = modalRef;\n }\n\n close() {\n this.cancel.emit();\n this.modalRef.close();\n }\n\n ngOnInit() {\n switch (this.type) {\n case 'success':\n this.iconType = 'bhi-check';\n break;\n case 'warning':\n this.iconType = 'bhi-caution-o';\n break;\n case 'error':\n this.iconType = 'bhi-caution-o';\n break;\n case 'custom':\n this.iconType = `bhi-${this.icon}`;\n break;\n default:\n break;\n }\n }\n}\n","// NG2\nimport { Overlay, OverlayConfig, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, Injector, ViewContainerRef } from '@angular/core';\nimport { NovoModalContainerComponent } from './modal-container.component';\n// APP\nimport { NovoModalParams, NovoModalRef } from './modal-ref';\n\ninterface ModalConfig {\n panelClass?: string;\n hasBackdrop?: boolean;\n backdropClass?: string;\n}\n\nconst DEFAULT_CONFIG: ModalConfig = {\n hasBackdrop: true,\n backdropClass: 'modal-overlay-backdrop',\n panelClass: 'modal-overlay-panel',\n};\n\n@Injectable({ providedIn: 'root' })\nexport class NovoModalService {\n overlayRef: OverlayRef;\n\n set parentViewContainer(view: ViewContainerRef) {\n console.warn('parentViewContainer is deprecated - will be ignored');\n }\n\n constructor(private injector: Injector, private overlay: Overlay) {}\n\n open<T extends Record<string, any>>(component, params: Partial<T> = {}) {\n // Override default configuration\n const modalConfig = DEFAULT_CONFIG;\n\n // Returns an OverlayRef which is a PortalHost\n const overlayRef = this.createOverlay(modalConfig);\n this.overlayRef = overlayRef;\n\n // Instantiate remote control\n const modalRef = new NovoModalRef<typeof params>(component, params, overlayRef);\n\n const overlayComponent = this.attachModalContainer(NovoModalContainerComponent, overlayRef, modalConfig, modalRef);\n\n // Pass the instance of the overlay component to the remote control\n modalRef.componentInstance = overlayComponent;\n\n overlayRef.backdropClick().subscribe(() => modalRef.close());\n\n return modalRef;\n }\n\n private createOverlay(config: ModalConfig) {\n const overlayConfig = this.getOverlayConfig(config);\n return this.overlay.create(overlayConfig);\n }\n\n private attachModalContainer(component, overlayRef: OverlayRef, config: ModalConfig, modalRef: NovoModalRef) {\n const injector = this.createInjector(config, modalRef);\n const containerPortal = new ComponentPortal(component, null, injector);\n const containerRef: ComponentRef<any> = overlayRef.attach(containerPortal);\n\n return containerRef.instance;\n }\n\n private createInjector(config: ModalConfig, modalRef: NovoModalRef): Injector {\n return Injector.create({\n parent: this.injector,\n providers: [\n { provide: NovoModalRef, useValue: modalRef },\n // Support backwards compatability\n { provide: NovoModalParams, useValue: modalRef.params },\n ],\n });\n }\n\n private getOverlayConfig(config: ModalConfig): OverlayConfig {\n const positionStrategy = this.overlay.position().global().centerHorizontally().centerVertically();\n\n const overlayConfig = new OverlayConfig({\n positionStrategy,\n hasBackdrop: config.hasBackdrop,\n backdropClass: config.backdropClass,\n panelClass: config.panelClass,\n });\n\n return overlayConfig;\n }\n}\n","// NG2\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n// APP\nimport { NovoButtonModule } from 'novo-elements/elements/button';\nimport { NovoModalContainerComponent } from './modal-container.component';\nimport { NovoModalElement, NovoModalNotificationElement } from './modal.component';\nimport { NovoModalService } from './modal.service';\n\n@NgModule({\n imports: [OverlayModule, PortalModule, CommonModule, NovoButtonModule],\n declarations: [NovoModalContainerComponent, NovoModalElement, NovoModalNotificationElement],\n exports: [NovoModalElement, NovoModalNotificationElement],\n providers: [NovoModalService],\n})\nexport class NovoModalModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.NovoModalRef","i2"],"mappings":"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"}
@@ -6,7 +6,7 @@ import * as i1 from 'novo-elements/services';
6
6
  import { NovoLabelService } from 'novo-elements/services';
7
7
  import { Subject, Subscription, merge, interval } from 'rxjs';
8
8
  import { debounceTime, distinctUntilChanged, takeUntil, startWith, filter, debounce } from 'rxjs/operators';
9
- import { Helpers } from 'novo-elements/utils';
9
+ import { Helpers, BooleanInput } from 'novo-elements/utils';
10
10
  import * as i2 from '@angular/common';
11
11
  import { CommonModule } from '@angular/common';
12
12
  import * as i5 from 'novo-elements/elements/common';
@@ -1347,12 +1347,12 @@ class NovoDefaultPickerConditionDef extends AbstractConditionFieldDef {
1347
1347
  <novo-select-search #filterInput allowDeselectDuringFilter></novo-select-search>
1348
1348
  </novo-option>
1349
1349
  <!-- What about optionUrl/optionType -->
1350
- @for (option of meta?.options; track optionTracker) {
1350
+ @for (option of meta?.options; track optionTracker(option)) {
1351
1351
  <novo-option [hidden]="hideOption(option, filterInput?.value)" [value]="option.value" [attr.data-automation-value]="option.label">
1352
1352
  {{ option.label}}
1353
1353
  </novo-option>
1354
1354
  }
1355
- @for (option of customOptions(meta?.options, select); track optionTracker) {
1355
+ @for (option of customOptions(meta?.options, select); track optionTracker(option)) {
1356
1356
  <novo-option [hidden]="hideOption(option, filterInput?.value)" [value]="option.value" [attr.data-automation-value]="option.label">
1357
1357
  {{ option.label}}
1358
1358
  </novo-option>
@@ -1394,12 +1394,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
1394
1394
  <novo-select-search #filterInput allowDeselectDuringFilter></novo-select-search>
1395
1395
  </novo-option>
1396
1396
  <!-- What about optionUrl/optionType -->
1397
- @for (option of meta?.options; track optionTracker) {
1397
+ @for (option of meta?.options; track optionTracker(option)) {
1398
1398
  <novo-option [hidden]="hideOption(option, filterInput?.value)" [value]="option.value" [attr.data-automation-value]="option.label">
1399
1399
  {{ option.label}}
1400
1400
  </novo-option>
1401
1401
  }
1402
- @for (option of customOptions(meta?.options, select); track optionTracker) {
1402
+ @for (option of customOptions(meta?.options, select); track optionTracker(option)) {
1403
1403
  <novo-option [hidden]="hideOption(option, filterInput?.value)" [value]="option.value" [attr.data-automation-value]="option.label">
1404
1404
  {{ option.label}}
1405
1405
  </novo-option>
@@ -1438,6 +1438,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
1438
1438
  type: Input
1439
1439
  }] } });
1440
1440
 
1441
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1442
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1443
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1444
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1445
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
1446
+ };
1447
+ var __metadata = (this && this.__metadata) || function (k, v) {
1448
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
1449
+ };
1441
1450
  /**
1442
1451
  * Provides a handle for the table to grab the view container's ng-container to insert data rows.
1443
1452
  * @docs-private
@@ -1482,6 +1491,7 @@ class ConditionBuilderComponent {
1482
1491
  this.cdr = cdr;
1483
1492
  this.queryBuilderService = queryBuilderService;
1484
1493
  this.controlContainer = controlContainer;
1494
+ this.allowEmptyField = false;
1485
1495
  this.hideOperator = input(true, ...(ngDevMode ? [{ debugName: "hideOperator" }] : []));
1486
1496
  this.conditionType = input(...(ngDevMode ? [undefined, { debugName: "conditionType" }] : []));
1487
1497
  // This component can either be directly hosted as a host to a condition, or it can be part of a condition group within a criteria builder.
@@ -1568,20 +1578,52 @@ class ConditionBuilderComponent {
1568
1578
  this.results$ = Promise.resolve(this.fieldConfig.options);
1569
1579
  }
1570
1580
  /**
1571
- * Resets the input and operator view containers, regenerates the field templates,
1572
- * and marks the component for change detection.
1581
+ * Resets the input and operator view containers and marks the component for change detection.
1573
1582
  *
1574
1583
  * Use this method after updating form controls to reinitialize the input and
1575
1584
  * operator fields so that the view reflects the latest form control changes.
1576
1585
  *
1586
+ * @param recreateTemplates - If true (default), regenerates the field templates.
1587
+ * If false, only clears the outlets without recreating templates.
1577
1588
  * @returns void
1578
1589
  */
1579
- resetInputAndOperator() {
1590
+ resetInputAndOperator(recreateTemplates = true) {
1580
1591
  this._inputOutlet.viewContainer.clear();
1581
1592
  this._operatorOutlet.viewContainer.clear();
1582
- this.createFieldTemplates();
1593
+ if (recreateTemplates) {
1594
+ this.createFieldTemplates();
1595
+ }
1583
1596
  this.cdr.markForCheck();
1584
1597
  }
1598
+ /**
1599
+ * Clears the entire condition (field, operator, value) and resets the condition builder UI.
1600
+ *
1601
+ * This method performs a complete reset of the condition builder:
1602
+ * - Clears all form values (field, operator, value, supportingValue)
1603
+ * - Allows empty field selection (prevents auto-restoration to default)
1604
+ * - Resets the field search term
1605
+ * - Clears internal state (_lastContext) to force re-detection of field changes
1606
+ * - Updates field selection and clears UI outlets
1607
+ *
1608
+ * Use this method when you need to completely clear a condition and start fresh,
1609
+ * such as when toggling a filter off or resetting a form group.
1610
+ *
1611
+ * @returns void
1612
+ */
1613
+ clearCondition() {
1614
+ // Clear all form values
1615
+ this.parentForm?.get('field')?.setValue(null);
1616
+ this.parentForm?.get('operator')?.setValue(null);
1617
+ this.parentForm?.get('value')?.setValue(null);
1618
+ this.parentForm?.get('supportingValue')?.setValue(null);
1619
+ // Reset the field search term
1620
+ this.searchTerm?.setValue('');
1621
+ // Reset internal state so updateFieldSelection detects the change
1622
+ this._lastContext = {};
1623
+ // Update field selection and clear UI
1624
+ this.updateFieldSelection();
1625
+ this.resetInputAndOperator(false);
1626
+ }
1585
1627
  getField() {
1586
1628
  const field = this.parentForm?.value?.field;
1587
1629
  if (!field) {
@@ -1599,7 +1641,9 @@ class ConditionBuilderComponent {
1599
1641
  updateFieldSelection() {
1600
1642
  const fieldConf = this.getField();
1601
1643
  if (!fieldConf) {
1602
- this.parentForm.get('field').setValue(this.getDefaultField());
1644
+ if (!this.allowEmptyField) {
1645
+ this.parentForm.get('field').setValue(this.getDefaultField());
1646
+ }
1603
1647
  return;
1604
1648
  }
1605
1649
  else {
@@ -1651,7 +1695,7 @@ class ConditionBuilderComponent {
1651
1695
  }
1652
1696
  createFieldTemplates() {
1653
1697
  const definition = this.findDefinitionForField(this.getField());
1654
- if (!this.parentForm.get('operator').value) {
1698
+ if (!this.parentForm.get('operator').value && definition) {
1655
1699
  this.parentForm.get('operator').setValue(definition.defaultOperator);
1656
1700
  }
1657
1701
  this.createFieldOperators(definition);
@@ -1674,7 +1718,7 @@ class ConditionBuilderComponent {
1674
1718
  this.cdr.markForCheck();
1675
1719
  }
1676
1720
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConditionBuilderComponent, deps: [{ token: i1.NovoLabelService }, { token: i0.ChangeDetectorRef }, { token: QueryBuilderService }, { token: i3.ControlContainer }], target: i0.ɵɵFactoryTarget.Component }); }
1677
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.17", type: ConditionBuilderComponent, isStandalone: false, selector: "novo-condition-builder", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, scope: { classPropertyName: "scope", publicName: "scope", isSignal: false, isRequired: false, transformFunction: null }, andIndex: { classPropertyName: "andIndex", publicName: "andIndex", isSignal: false, isRequired: false, transformFunction: null }, groupIndex: { classPropertyName: "groupIndex", publicName: "groupIndex", isSignal: false, isRequired: false, transformFunction: null }, addressConfig: { classPropertyName: "addressConfig", publicName: "addressConfig", isSignal: false, isRequired: false, transformFunction: null }, dateConfig: { classPropertyName: "dateConfig", publicName: "dateConfig", isSignal: false, isRequired: false, transformFunction: null }, hideOperator: { classPropertyName: "hideOperator", publicName: "hideOperator", isSignal: true, isRequired: false, transformFunction: null }, conditionType: { classPropertyName: "conditionType", publicName: "conditionType", isSignal: true, isRequired: false, transformFunction: null }, inputConfig: { classPropertyName: "inputConfig", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, inputEditTypeFn: { classPropertyName: "inputEditTypeFn", publicName: "editTypeFn", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.condition-host": "this.isConditionHost" } }, providers: [{ provide: NOVO_CONDITION_BUILDER, useExisting: ConditionBuilderComponent },
1721
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.17", type: ConditionBuilderComponent, isStandalone: false, selector: "novo-condition-builder", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, scope: { classPropertyName: "scope", publicName: "scope", isSignal: false, isRequired: false, transformFunction: null }, andIndex: { classPropertyName: "andIndex", publicName: "andIndex", isSignal: false, isRequired: false, transformFunction: null }, groupIndex: { classPropertyName: "groupIndex", publicName: "groupIndex", isSignal: false, isRequired: false, transformFunction: null }, addressConfig: { classPropertyName: "addressConfig", publicName: "addressConfig", isSignal: false, isRequired: false, transformFunction: null }, dateConfig: { classPropertyName: "dateConfig", publicName: "dateConfig", isSignal: false, isRequired: false, transformFunction: null }, allowEmptyField: { classPropertyName: "allowEmptyField", publicName: "allowEmptyField", isSignal: false, isRequired: false, transformFunction: null }, hideOperator: { classPropertyName: "hideOperator", publicName: "hideOperator", isSignal: true, isRequired: false, transformFunction: null }, conditionType: { classPropertyName: "conditionType", publicName: "conditionType", isSignal: true, isRequired: false, transformFunction: null }, inputConfig: { classPropertyName: "inputConfig", publicName: "config", isSignal: true, isRequired: false, transformFunction: null }, inputEditTypeFn: { classPropertyName: "inputEditTypeFn", publicName: "editTypeFn", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.condition-host": "this.isConditionHost" } }, providers: [{ provide: NOVO_CONDITION_BUILDER, useExisting: ConditionBuilderComponent },
1678
1722
  {
1679
1723
  provide: QueryBuilderService,
1680
1724
  deps: [NovoLabelService, [new SkipSelf(), new Optional(), QueryBuilderService]],
@@ -1687,6 +1731,10 @@ class ConditionBuilderComponent {
1687
1731
  },
1688
1732
  ], viewQueries: [{ propertyName: "_operatorOutlet", first: true, predicate: ConditionOperatorOutlet, descendants: true, static: true }, { propertyName: "_inputOutlet", first: true, predicate: ConditionInputOutlet, descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<form [formGroup]=\"parentForm\">\n <novo-grid gap=\"1rem\" [columns]=\"gridColumns()\" align=\"end\">\n <novo-field class=\"condition-field\" *ngIf=\"!staticFieldSelection()\">\n <novo-select\n [placeholder]=\"labels.chooseAField\"\n formControlName=\"field\"\n (onSelect)=\"updateFieldSelection()\"\n overlayWidth=\"24rem\"\n overlayHeight=\"20rem\"\n [displayWith]=\"fieldDisplayWith\"\n [style.minWidth.px]=\"160\"\n [style.maxWidth.px]=\"(hideOperator() || isConditionHost) ? 200 : 160\"\n [displayIcon]=\"displayIcon\">\n <novo-optgroup class=\"filter-search-results\">\n <novo-option>\n <novo-select-search [formControl]=\"searchTerm\" [clearSearchInput]=\"false\"></novo-select-search>\n </novo-option>\n <ng-container *ngIf=\"results$ | async as results; else loading\">\n <ng-container *ngIf=\"results.length\">\n <novo-option *ngFor=\"let field of results\" value=\"{{ field.name }}\"\n [attr.data-automation-id]=\"field.name\">\n {{ field.label || field.name }}\n </novo-option>\n </ng-container>\n </ng-container>\n </novo-optgroup>\n </novo-select>\n </novo-field>\n\n <div class=\"condition-operator\">\n <ng-container conditionOperatorOutlet></ng-container>\n </div>\n\n <div class=\"condition-input\">\n <ng-container conditionInputOutlet></ng-container>\n </div>\n </novo-grid>\n <ng-content></ng-content>\n</form>\n\n<novo-condition-templates *ngIf=\"isConditionHost\" [addressConfig]=\"addressConfig\" [dateConfig]=\"dateConfig\"/>\n\n<!-- LOADING TEMPLATE -->\n<ng-template #loading>\n <novo-loading></novo-loading>\n</ng-template>\n", styles: [":host{position:relative;display:block;width:100%}:host.condition-host{padding:var(--spacing-md);margin-bottom:1rem}:host .condition-field{grid-template-columns:minmax(fit-content,1fr);width:100%;width:-webkit-fill-available}:host .condition-operator::ng-deep .novo-select{min-width:13rem}:host .condition-input::ng-deep novo-field.novo-field-layout-vertical{grid-template-columns:minmax(fit-content,1fr);width:-webkit-fill-available}:host .condition-input::ng-deep novo-field.novo-field-layout-vertical .novo-input-element{width:100%}:host .condition-input::ng-deep novo-field{width:fit-content}:host .condition-input::ng-deep novo-field.address-radius{width:100px;min-width:100px;max-width:100px;margin-right:1rem}:host .condition-input::ng-deep novo-field.address-radius novo-select{min-width:70px}:host .condition-input::ng-deep novo-field.address-location .novo-field-suffix{align-self:flex-end}:host .condition-input::ng-deep .novo-field-infix{white-space:nowrap;overflow:hidden}:host .condition-input::ng-deep novo-chip-list{flex-grow:1}:host .condition-input::ng-deep novo-chip-list novo-chip{max-width:min(33rem,100% - 9px)}:host .condition-input::ng-deep novo-chips{border-bottom:none!important}:host .condition-input::ng-deep novo-chips input{padding-left:0!important}:host .condition-input::ng-deep novo-radio-group{padding:0!important}:host .and-or-filter-button{box-sizing:border-box;background:#fff;border:1px solid #ddd;color:#5691f5;display:inline-block;position:relative;cursor:pointer;margin:.4rem auto;align-items:center;text-align:center;-webkit-user-select:none;user-select:none;outline:none;white-space:nowrap;text-transform:uppercase;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i5.GapDirective, selector: "[gap]", inputs: ["gap"] }, { kind: "component", type: i5$1.NovoSelectElement, selector: "novo-select", inputs: ["disabled", "required", "tabIndex", "id", "name", "placeholder", "readonly", "headerConfig", "position", "overlayWidth", "overlayHeight", "displayIcon", "displayWith", "compareWith", "hideLegacyOptions", "value", "multiple", "options"], outputs: ["onSelect", "selectionChange", "valueChange", "openedChange", "opened", "closed"] }, { kind: "component", type: i6.NovoFieldElement, selector: "novo-field", inputs: ["layout", "appearance", "customOverlayOrigin", "width"], outputs: ["valueChanges", "stateChanges"] }, { kind: "component", type: i5.NovoOption, selector: "novo-option", inputs: ["selected", "keepOpen", "novoInert", "value", "disabled"], exportAs: ["novoOption"] }, { kind: "component", type: i5.NovoOptgroup, selector: "novo-optgroup", inputs: ["disabled", "label"], exportAs: ["novoOptgroup"] }, { kind: "component", type: i8.NovoGridElement, selector: "novo-grid", inputs: ["direction", "align", "justify", "columns"] }, { kind: "component", type: i9$3.NovoLoadingElement, selector: "novo-loading", inputs: ["theme", "color", "size"] }, { kind: "component", type: i9$2.NovoSelectSearchComponent, selector: "novo-select-search", inputs: ["name", "placeholderLabel", "type", "noEntriesFoundLabel", "indexAndLengthScreenReaderText", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "allowDeselectDuringFilter", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toogleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"] }, { kind: "directive", type: ConditionInputOutlet, selector: "[conditionInputOutlet]" }, { kind: "directive", type: ConditionOperatorOutlet, selector: "[conditionOperatorOutlet]" }, { kind: "component", type: NovoConditionTemplatesComponent, selector: "novo-condition-templates", inputs: ["addressConfig", "dateConfig"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1689
1733
  }
1734
+ __decorate([
1735
+ BooleanInput(),
1736
+ __metadata("design:type", Boolean)
1737
+ ], ConditionBuilderComponent.prototype, "allowEmptyField", void 0);
1690
1738
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConditionBuilderComponent, decorators: [{
1691
1739
  type: Component,
1692
1740
  args: [{ selector: 'novo-condition-builder', providers: [{ provide: NOVO_CONDITION_BUILDER, useExisting: ConditionBuilderComponent },
@@ -1719,6 +1767,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImpo
1719
1767
  type: Input
1720
1768
  }], dateConfig: [{
1721
1769
  type: Input
1770
+ }], allowEmptyField: [{
1771
+ type: Input
1722
1772
  }], hideOperator: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideOperator", required: false }] }], conditionType: [{ type: i0.Input, args: [{ isSignal: true, alias: "conditionType", required: false }] }], inputConfig: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }], inputEditTypeFn: [{ type: i0.Input, args: [{ isSignal: true, alias: "editTypeFn", required: false }] }], isConditionHost: [{
1723
1773
  type: HostBinding,
1724
1774
  args: ['class.condition-host']
@@ -1843,7 +1893,7 @@ class ConditionGroupComponent {
1843
1893
  return this.root.length <= 1;
1844
1894
  }
1845
1895
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConditionGroupComponent, deps: [{ token: QueryBuilderService }, { token: i1.NovoLabelService }, { token: i3.ControlContainer }, { token: i3.FormBuilder }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1846
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: ConditionGroupComponent, isStandalone: false, selector: "novo-condition-group", inputs: { controlName: "controlName", groupIndex: "groupIndex", hideFirstOperator: "hideFirstOperator", canBeEmpty: "canBeEmpty", formGroupName: "formGroupName" }, host: { classAttribute: "novo-condition-group" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ConditionGroupComponent), multi: true }], usesOnChanges: true, ngImport: i0, template: "<div [formGroup]=\"parentForm\" class=\"condition-group-container\">\n <novo-stack [formArrayName]=\"controlName\" gap=\"md\">\n <ng-container\n *ngFor=\"let andGroup of root.controls; let andIndex = index; let isFirst = first;let isLast = last;\">\n <ng-container [formGroupName]=\"andIndex\">\n <novo-flex class=\"condition-row\" [ngClass]=\"{ isFirst: andIndex === 0 }\" [class]=\"entity || scope\" align=\"end\" gap=\"sm\" #flex>\n <novo-dropdown *ngIf=\"(!isFirst || !hideFirstOperator) && qbs.allowedGroupings.length > 1; else labeledGroup\" data-automation-id=\"groupings-dropdown\">\n <button theme=\"dialogue\" icon=\"collapse\" size=\"sm\">{{qbs.getConjunctionLabel(controlName)}}</button>\n <novo-optgroup>\n <novo-option *ngFor=\"let c of qbs.allowedGroupings\" (click)=\"updateControlName(c)\" [attr.data-automation-id]=\"c\">\n {{qbs.getConjunctionLabel(c)}}</novo-option>\n </novo-optgroup>\n </novo-dropdown>\n <ng-template #labeledGroup>\n <novo-label *ngIf=\"!isFirst || !hideFirstOperator\" color=\"ash\" size=\"xs\" uppercase padding=\"sm\">\n {{qbs.getConjunctionLabel(controlName)}}</novo-label>\n </ng-template>\n <novo-condition-builder [groupIndex]=\"groupIndex\" [andIndex]=\"andIndex\" [hideOperator]=\"isFirst && hideFirstOperator\" [scope]=\"scope\" [conditionType]=\"controlName\"></novo-condition-builder>\n <novo-button class=\"delete-btn\" theme=\"icon\" icon=\"delete-o\" color=\"negative\" (click)=\"removeCondition(andIndex)\" data-automation-id=\"delete-filter-button\">\n </novo-button>\n </novo-flex>\n </ng-container>\n </ng-container>\n <button\n *ngIf=\"!qbs.hasMultipleScopes()\"\n theme=\"dialogue\"\n data-automation-id=\"add-advanced-search-condition\"\n icon=\"add-thin\"\n side=\"left\"\n size=\"sm\"\n uppercase\n (click)=\"addCondition()\">\n {{ labels.addCondition }}</button>\n </novo-stack>\n</div>\n", styles: [":host{position:relative;display:block;border:1px solid var(--border);border-radius:var(--border-radius-round);padding:var(--spacing-md);width:100%}:host .condition-row{width:100%}:host .delete-btn{margin-bottom:1px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i3.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i5$2.NovoButtonElement, selector: "novo-button,button[theme]", inputs: ["color", "side", "size", "theme", "loading", "icon", "secondIcon", "disabled"] }, { kind: "component", type: i5.NovoLabel, selector: "novo-label,[novo-label]", inputs: ["id"] }, { kind: "directive", type: i5.PaddingDirective, selector: "[p],[padding],[paddingTop],[paddingRight],[paddingBottom],[paddingLeft],[paddingX],[paddingY],[pt],[pr],[pb],[pl],[px],[py]", inputs: ["padding", "p", "paddingLeft", "pl", "paddingRight", "pr", "paddingTop", "pt", "paddingBottom", "pb", "paddingX", "px", "paddingY", "py"] }, { kind: "directive", type: i5.GapDirective, selector: "[gap]", inputs: ["gap"] }, { kind: "directive", type: i5.ThemeColorDirective, selector: "[theme]", inputs: ["theme"] }, { kind: "component", type: i5.NovoOption, selector: "novo-option", inputs: ["selected", "keepOpen", "novoInert", "value", "disabled"], exportAs: ["novoOption"] }, { kind: "component", type: i5.NovoOptgroup, selector: "novo-optgroup", inputs: ["disabled", "label"], exportAs: ["novoOptgroup"] }, { kind: "component", type: i8.NovoFlexElement, selector: "novo-flex,novo-row", inputs: ["direction", "align", "justify", "wrap", "gap"] }, { kind: "component", type: i8.NovoStackElement, selector: "novo-stack,novo-column", inputs: ["direction", "align"] }, { kind: "component", type: i8$3.NovoDropdownElement, selector: "novo-dropdown", inputs: ["parentScrollSelector", "parentScrollAction", "containerClass", "side", "scrollStrategy", "keepOpen", "height", "width", "appendToBody", "multiple", "scrollToActiveItemOnOpen"], outputs: ["toggled"] }, { kind: "component", type: ConditionBuilderComponent, selector: "novo-condition-builder", inputs: ["label", "scope", "andIndex", "groupIndex", "addressConfig", "dateConfig", "hideOperator", "conditionType", "config", "editTypeFn"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1896
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.17", type: ConditionGroupComponent, isStandalone: false, selector: "novo-condition-group", inputs: { controlName: "controlName", groupIndex: "groupIndex", hideFirstOperator: "hideFirstOperator", canBeEmpty: "canBeEmpty", formGroupName: "formGroupName" }, host: { classAttribute: "novo-condition-group" }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => ConditionGroupComponent), multi: true }], usesOnChanges: true, ngImport: i0, template: "<div [formGroup]=\"parentForm\" class=\"condition-group-container\">\n <novo-stack [formArrayName]=\"controlName\" gap=\"md\">\n <ng-container\n *ngFor=\"let andGroup of root.controls; let andIndex = index; let isFirst = first;let isLast = last;\">\n <ng-container [formGroupName]=\"andIndex\">\n <novo-flex class=\"condition-row\" [ngClass]=\"{ isFirst: andIndex === 0 }\" [class]=\"entity || scope\" align=\"end\" gap=\"sm\" #flex>\n <novo-dropdown *ngIf=\"(!isFirst || !hideFirstOperator) && qbs.allowedGroupings.length > 1; else labeledGroup\" data-automation-id=\"groupings-dropdown\">\n <button theme=\"dialogue\" icon=\"collapse\" size=\"sm\">{{qbs.getConjunctionLabel(controlName)}}</button>\n <novo-optgroup>\n <novo-option *ngFor=\"let c of qbs.allowedGroupings\" (click)=\"updateControlName(c)\" [attr.data-automation-id]=\"c\">\n {{qbs.getConjunctionLabel(c)}}</novo-option>\n </novo-optgroup>\n </novo-dropdown>\n <ng-template #labeledGroup>\n <novo-label *ngIf=\"!isFirst || !hideFirstOperator\" color=\"ash\" size=\"xs\" uppercase padding=\"sm\">\n {{qbs.getConjunctionLabel(controlName)}}</novo-label>\n </ng-template>\n <novo-condition-builder [groupIndex]=\"groupIndex\" [andIndex]=\"andIndex\" [hideOperator]=\"isFirst && hideFirstOperator\" [scope]=\"scope\" [conditionType]=\"controlName\"></novo-condition-builder>\n <novo-button class=\"delete-btn\" theme=\"icon\" icon=\"delete-o\" color=\"negative\" (click)=\"removeCondition(andIndex)\" data-automation-id=\"delete-filter-button\">\n </novo-button>\n </novo-flex>\n </ng-container>\n </ng-container>\n <button\n *ngIf=\"!qbs.hasMultipleScopes()\"\n theme=\"dialogue\"\n data-automation-id=\"add-advanced-search-condition\"\n icon=\"add-thin\"\n side=\"left\"\n size=\"sm\"\n uppercase\n (click)=\"addCondition()\">\n {{ labels.addCondition }}</button>\n </novo-stack>\n</div>\n", styles: [":host{position:relative;display:block;border:1px solid var(--border);border-radius:var(--border-radius-round);padding:var(--spacing-md);width:100%}:host .condition-row{width:100%}:host .delete-btn{margin-bottom:1px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupName, selector: "[formGroupName]", inputs: ["formGroupName"] }, { kind: "directive", type: i3.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i5$2.NovoButtonElement, selector: "novo-button,button[theme]", inputs: ["color", "side", "size", "theme", "loading", "icon", "secondIcon", "disabled"] }, { kind: "component", type: i5.NovoLabel, selector: "novo-label,[novo-label]", inputs: ["id"] }, { kind: "directive", type: i5.PaddingDirective, selector: "[p],[padding],[paddingTop],[paddingRight],[paddingBottom],[paddingLeft],[paddingX],[paddingY],[pt],[pr],[pb],[pl],[px],[py]", inputs: ["padding", "p", "paddingLeft", "pl", "paddingRight", "pr", "paddingTop", "pt", "paddingBottom", "pb", "paddingX", "px", "paddingY", "py"] }, { kind: "directive", type: i5.GapDirective, selector: "[gap]", inputs: ["gap"] }, { kind: "directive", type: i5.ThemeColorDirective, selector: "[theme]", inputs: ["theme"] }, { kind: "component", type: i5.NovoOption, selector: "novo-option", inputs: ["selected", "keepOpen", "novoInert", "value", "disabled"], exportAs: ["novoOption"] }, { kind: "component", type: i5.NovoOptgroup, selector: "novo-optgroup", inputs: ["disabled", "label"], exportAs: ["novoOptgroup"] }, { kind: "component", type: i8.NovoFlexElement, selector: "novo-flex,novo-row", inputs: ["direction", "align", "justify", "wrap", "gap"] }, { kind: "component", type: i8.NovoStackElement, selector: "novo-stack,novo-column", inputs: ["direction", "align"] }, { kind: "component", type: i8$3.NovoDropdownElement, selector: "novo-dropdown", inputs: ["parentScrollSelector", "parentScrollAction", "containerClass", "side", "scrollStrategy", "keepOpen", "height", "width", "appendToBody", "multiple", "scrollToActiveItemOnOpen"], outputs: ["toggled"] }, { kind: "component", type: ConditionBuilderComponent, selector: "novo-condition-builder", inputs: ["label", "scope", "andIndex", "groupIndex", "addressConfig", "dateConfig", "allowEmptyField", "hideOperator", "conditionType", "config", "editTypeFn"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1847
1897
  }
1848
1898
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: ConditionGroupComponent, decorators: [{
1849
1899
  type: Component,