novo-elements 7.12.0 → 7.13.0-next.2

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.
@@ -28,7 +28,7 @@ import * as i1$4 from '@angular/router';
28
28
  import { RouterModule } from '@angular/router';
29
29
  import * as i1$5 from '@angular/cdk/a11y';
30
30
  import { ActiveDescendantKeyManager, A11yModule, FocusKeyManager } from '@angular/cdk/a11y';
31
- import { hasModifierKey, ENTER, COMMA } from '@angular/cdk/keycodes';
31
+ import { hasModifierKey, ENTER } from '@angular/cdk/keycodes';
32
32
  import * as tokens from 'novo-design-tokens';
33
33
  import { ANIMATION_MODULE_TYPE } from '@angular/platform-browser/animations';
34
34
  import * as i7 from '@angular/cdk/scrolling';
@@ -21003,6 +21003,7 @@ class NovoLabelService {
21003
21003
  this.within = 'Within';
21004
21004
  this.isEmpty = 'Is Empty?';
21005
21005
  this.refreshPagination = 'Refresh Pagination';
21006
+ this.location = 'Location';
21006
21007
  }
21007
21008
  maxlengthMetWithField(field, maxlength) {
21008
21009
  return `Sorry, you have reached the maximum character count of ${maxlength} for ${field}.`;
@@ -55939,12 +55940,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
55939
55940
  } });
55940
55941
 
55941
55942
  // NG2
55943
+ // Value accessor for the component (supports ngModel)
55944
+ const PLACES_VALUE_ACCESSOR = {
55945
+ provide: NG_VALUE_ACCESSOR,
55946
+ useExisting: forwardRef(() => PlacesListComponent),
55947
+ multi: true,
55948
+ };
55942
55949
  class PlacesListComponent {
55943
- constructor(platformId, _elmRef, _global, _googlePlacesService) {
55950
+ constructor(platformId, _elmRef, _global, _googlePlacesService, cdr) {
55944
55951
  this.platformId = platformId;
55945
55952
  this._elmRef = _elmRef;
55946
55953
  this._global = _global;
55947
55954
  this._googlePlacesService = _googlePlacesService;
55955
+ this.cdr = cdr;
55948
55956
  this.term = '';
55949
55957
  this.termChange = new EventEmitter();
55950
55958
  this.select = new EventEmitter();
@@ -55984,6 +55992,8 @@ class PlacesListComponent {
55984
55992
  searchIconUrl: '',
55985
55993
  locationIconUrl: '',
55986
55994
  };
55995
+ this.onModelChange = () => { };
55996
+ this.onModelTouched = () => { };
55987
55997
  }
55988
55998
  ngOnInit() {
55989
55999
  if (!this.moduleinit) {
@@ -55995,6 +56005,15 @@ class PlacesListComponent {
55995
56005
  this.moduleInit();
55996
56006
  this.searchinputCallback(null);
55997
56007
  }
56008
+ writeValue(model) {
56009
+ this.model = model;
56010
+ }
56011
+ registerOnChange(fn) {
56012
+ this.onModelChange = fn;
56013
+ }
56014
+ registerOnTouched(fn) {
56015
+ this.onModelTouched = fn;
56016
+ }
55998
56017
  // function called when click event happens in input box. (Binded with view)
55999
56018
  searchinputClickCallback(event) {
56000
56019
  event.target.select();
@@ -56177,6 +56196,7 @@ class PlacesListComponent {
56177
56196
  updateListItem(listData) {
56178
56197
  this.queryItems = listData ? listData : [];
56179
56198
  this.dropdownOpen = true;
56199
+ this.cdr.detectChanges();
56180
56200
  }
56181
56201
  // function to show the recent search result.
56182
56202
  showRecentSearch() {
@@ -56254,8 +56274,8 @@ class PlacesListComponent {
56254
56274
  });
56255
56275
  }
56256
56276
  }
56257
- PlacesListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PlacesListComponent, deps: [{ token: PLATFORM_ID }, { token: i0.ElementRef }, { token: GlobalRef }, { token: GooglePlacesService }], target: i0.ɵɵFactoryTarget.Component });
56258
- PlacesListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PlacesListComponent, selector: "google-places-list", inputs: { userSettings: "userSettings", term: "term" }, outputs: { termChange: "termChange", select: "select" }, usesOnChanges: true, ngImport: i0, template: `
56277
+ PlacesListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: PlacesListComponent, deps: [{ token: PLATFORM_ID }, { token: i0.ElementRef }, { token: GlobalRef }, { token: GooglePlacesService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
56278
+ PlacesListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: PlacesListComponent, selector: "google-places-list", inputs: { userSettings: "userSettings", term: "term" }, outputs: { termChange: "termChange", select: "select" }, providers: [PLACES_VALUE_ACCESSOR], usesOnChanges: true, ngImport: i0, template: `
56259
56279
  <novo-list direction="vertical">
56260
56280
  <novo-list-item *ngFor="let data of queryItems; let $index = index" (click)="selectedListNode($event, $index)">
56261
56281
  <item-header>
@@ -56270,6 +56290,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
56270
56290
  type: Component,
56271
56291
  args: [{
56272
56292
  selector: 'google-places-list',
56293
+ providers: [PLACES_VALUE_ACCESSOR],
56273
56294
  template: `
56274
56295
  <novo-list direction="vertical">
56275
56296
  <novo-list-item *ngFor="let data of queryItems; let $index = index" (click)="selectedListNode($event, $index)">
@@ -56286,7 +56307,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
56286
56307
  return [{ type: Object, decorators: [{
56287
56308
  type: Inject,
56288
56309
  args: [PLATFORM_ID]
56289
- }] }, { type: i0.ElementRef }, { type: GlobalRef }, { type: GooglePlacesService }];
56310
+ }] }, { type: i0.ElementRef }, { type: GlobalRef }, { type: GooglePlacesService }, { type: i0.ChangeDetectorRef }];
56290
56311
  }, propDecorators: { userSettings: [{
56291
56312
  type: Input
56292
56313
  }], term: [{
@@ -57467,10 +57488,10 @@ class ConditionBuilderComponent {
57467
57488
  }
57468
57489
  }
57469
57490
  ConditionBuilderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ConditionBuilderComponent, deps: [{ token: NovoLabelService }, { token: i0.ChangeDetectorRef }, { token: QueryBuilderService }, { token: i4.ControlContainer }], target: i0.ɵɵFactoryTarget.Component });
57470
- ConditionBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ConditionBuilderComponent, selector: "novo-condition-builder", inputs: { label: "label", isFirst: "isFirst", andIndex: "andIndex", groupIndex: "groupIndex" }, providers: [{ provide: NOVO_CONDITION_BUILDER, useExisting: ConditionBuilderComponent }], viewQueries: [{ propertyName: "_operatorOutlet", first: true, predicate: ConditionOperatorOutlet, descendants: true, static: true }, { propertyName: "_inputOutlet", first: true, predicate: ConditionInputOutlet, descendants: true, static: true }], ngImport: i0, template: "<form [formGroup]=\"parentForm\">\n <novo-grid gap=\"1rem\" [columns]=\"isFirst ? '20rem 13rem 1fr' : '16rem 13rem 1fr'\" align=\"end\">\n <novo-field class=\"condition-field\">\n <novo-select\n [placeholder]=\"labels.chooseAField\"\n formControlName=\"field\"\n (onSelect)=\"onFieldSelect()\"\n overlayWidth=\"24rem\"\n overlayHeight=\"20rem\"\n [displayWith]=\"fieldDisplayWith\"\n [style.minWidth.px]=\"160\"\n [style.maxWidth.px]=\"isFirst ? 200 : 160\">\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<!-- EMPTY STATE TEMPLATE -->\n<!-- <ng-template #empty>\n <novo-non-ideal-state>\n <novo-icon size=\"xl\" color=\"grapefruit\">search</novo-icon>\n <novo-title>No results found.</novo-title>\n <novo-text>Your search didn't find anything. Try searching for something else.</novo-text>\n </novo-non-ideal-state>\n</ng-template> -->\n\n<!-- LOADING TEMPLATE -->\n<ng-template #loading>\n <novo-loading></novo-loading>\n</ng-template>", styles: [":host{position:relative;display:block;width:100%}:host .condition-field{grid-template-columns:minmax(-webkit-fit-content,1fr);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(-webkit-fit-content,1fr);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:-webkit-fit-content;width:-moz-fit-content;width:fit-content}:host .condition-input::ng-deep .novo-field-infix{white-space:nowrap;overflow:hidden}: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;-moz-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"], components: [{ type: NovoGridElement, selector: "novo-grid", inputs: ["direction", "align", "justify", "columns"] }, { type: NovoFieldElement, selector: "novo-field", inputs: ["layout", "appearance", "width"], outputs: ["valueChanges", "stateChanges"] }, { type: NovoSelectElement, selector: "novo-select", inputs: ["disabled", "required", "tabIndex", "id", "name", "options", "placeholder", "readonly", "headerConfig", "position", "overlayWidth", "overlayHeight", "displayWith", "compareWith", "value", "multiple"], outputs: ["onSelect", "selectionChange", "valueChange", "openedChange", "opened", "closed"] }, { type: NovoOptgroup, selector: "novo-optgroup", inputs: ["disabled", "label"], exportAs: ["novoOptgroup"] }, { type: NovoOption, selector: "novo-option", inputs: ["selected", "keepOpen", "novoInert", "value", "disabled"], exportAs: ["novoOption"] }, { type: NovoSelectSearchComponent, selector: "novo-select-search", inputs: ["name", "placeholderLabel", "type", "noEntriesFoundLabel", "indexAndLengthScreenReaderText", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toogleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"] }, { type: NovoLoadingElement, selector: "novo-loading", inputs: ["theme", "color", "size"] }], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: GapDirective, selector: "[gap]", inputs: ["gap"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: ConditionOperatorOutlet, selector: "[conditionOperatorOutlet]" }, { type: ConditionInputOutlet, selector: "[conditionInputOutlet]" }], pipes: { "async": i1$1.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
57491
+ ConditionBuilderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: ConditionBuilderComponent, selector: "novo-condition-builder", inputs: { label: "label", isFirst: "isFirst", andIndex: "andIndex", groupIndex: "groupIndex" }, providers: [{ provide: NOVO_CONDITION_BUILDER, useExisting: ConditionBuilderComponent }], viewQueries: [{ propertyName: "_operatorOutlet", first: true, predicate: ConditionOperatorOutlet, descendants: true, static: true }, { propertyName: "_inputOutlet", first: true, predicate: ConditionInputOutlet, descendants: true, static: true }], ngImport: i0, template: "<form [formGroup]=\"parentForm\">\n <novo-grid gap=\"1rem\" [columns]=\"isFirst ? '20rem 13rem 1fr' : '16rem 13rem 1fr'\" align=\"end\">\n <novo-field class=\"condition-field\">\n <novo-select\n [placeholder]=\"labels.chooseAField\"\n formControlName=\"field\"\n (onSelect)=\"onFieldSelect()\"\n overlayWidth=\"24rem\"\n overlayHeight=\"20rem\"\n [displayWith]=\"fieldDisplayWith\"\n [style.minWidth.px]=\"160\"\n [style.maxWidth.px]=\"isFirst ? 200 : 160\">\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<!-- EMPTY STATE TEMPLATE -->\n<!-- <ng-template #empty>\n <novo-non-ideal-state>\n <novo-icon size=\"xl\" color=\"grapefruit\">search</novo-icon>\n <novo-title>No results found.</novo-title>\n <novo-text>Your search didn't find anything. Try searching for something else.</novo-text>\n </novo-non-ideal-state>\n</ng-template> -->\n\n<!-- LOADING TEMPLATE -->\n<ng-template #loading>\n <novo-loading></novo-loading>\n</ng-template>", styles: [":host{position:relative;display:block;width:100%}:host .condition-field{grid-template-columns:minmax(-webkit-fit-content,1fr);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(-webkit-fit-content,1fr);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:-webkit-fit-content;width:-moz-fit-content;width:fit-content}:host .condition-input::ng-deep .novo-field-infix{white-space:nowrap;overflow:hidden}:host .condition-input::ng-deep novo-chip-list{width:36rem}: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;-moz-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"], components: [{ type: NovoGridElement, selector: "novo-grid", inputs: ["direction", "align", "justify", "columns"] }, { type: NovoFieldElement, selector: "novo-field", inputs: ["layout", "appearance", "width"], outputs: ["valueChanges", "stateChanges"] }, { type: NovoSelectElement, selector: "novo-select", inputs: ["disabled", "required", "tabIndex", "id", "name", "options", "placeholder", "readonly", "headerConfig", "position", "overlayWidth", "overlayHeight", "displayWith", "compareWith", "value", "multiple"], outputs: ["onSelect", "selectionChange", "valueChange", "openedChange", "opened", "closed"] }, { type: NovoOptgroup, selector: "novo-optgroup", inputs: ["disabled", "label"], exportAs: ["novoOptgroup"] }, { type: NovoOption, selector: "novo-option", inputs: ["selected", "keepOpen", "novoInert", "value", "disabled"], exportAs: ["novoOption"] }, { type: NovoSelectSearchComponent, selector: "novo-select-search", inputs: ["name", "placeholderLabel", "type", "noEntriesFoundLabel", "indexAndLengthScreenReaderText", "clearSearchInput", "searching", "disableInitialFocus", "enableClearOnEscapePressed", "preventHomeEndKeyPropagation", "disableScrollToActiveOnOptionsChanged", "ariaLabel", "showToggleAllCheckbox", "toggleAllCheckboxChecked", "toggleAllCheckboxIndeterminate", "toggleAllCheckboxTooltipMessage", "toogleAllCheckboxTooltipPosition", "hideClearSearchButton", "alwaysRestoreSelectedOptionsMulti"], outputs: ["toggleAll"] }, { type: NovoLoadingElement, selector: "novo-loading", inputs: ["theme", "color", "size"] }], directives: [{ type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: GapDirective, selector: "[gap]", inputs: ["gap"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: ConditionOperatorOutlet, selector: "[conditionOperatorOutlet]" }, { type: ConditionInputOutlet, selector: "[conditionInputOutlet]" }], pipes: { "async": i1$1.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
57471
57492
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ConditionBuilderComponent, decorators: [{
57472
57493
  type: Component,
57473
- args: [{ selector: 'novo-condition-builder', providers: [{ provide: NOVO_CONDITION_BUILDER, useExisting: ConditionBuilderComponent }], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"parentForm\">\n <novo-grid gap=\"1rem\" [columns]=\"isFirst ? '20rem 13rem 1fr' : '16rem 13rem 1fr'\" align=\"end\">\n <novo-field class=\"condition-field\">\n <novo-select\n [placeholder]=\"labels.chooseAField\"\n formControlName=\"field\"\n (onSelect)=\"onFieldSelect()\"\n overlayWidth=\"24rem\"\n overlayHeight=\"20rem\"\n [displayWith]=\"fieldDisplayWith\"\n [style.minWidth.px]=\"160\"\n [style.maxWidth.px]=\"isFirst ? 200 : 160\">\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<!-- EMPTY STATE TEMPLATE -->\n<!-- <ng-template #empty>\n <novo-non-ideal-state>\n <novo-icon size=\"xl\" color=\"grapefruit\">search</novo-icon>\n <novo-title>No results found.</novo-title>\n <novo-text>Your search didn't find anything. Try searching for something else.</novo-text>\n </novo-non-ideal-state>\n</ng-template> -->\n\n<!-- LOADING TEMPLATE -->\n<ng-template #loading>\n <novo-loading></novo-loading>\n</ng-template>", styles: [":host{position:relative;display:block;width:100%}:host .condition-field{grid-template-columns:minmax(-webkit-fit-content,1fr);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(-webkit-fit-content,1fr);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:-webkit-fit-content;width:-moz-fit-content;width:fit-content}:host .condition-input::ng-deep .novo-field-infix{white-space:nowrap;overflow:hidden}: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;-moz-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"] }]
57494
+ args: [{ selector: 'novo-condition-builder', providers: [{ provide: NOVO_CONDITION_BUILDER, useExisting: ConditionBuilderComponent }], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"parentForm\">\n <novo-grid gap=\"1rem\" [columns]=\"isFirst ? '20rem 13rem 1fr' : '16rem 13rem 1fr'\" align=\"end\">\n <novo-field class=\"condition-field\">\n <novo-select\n [placeholder]=\"labels.chooseAField\"\n formControlName=\"field\"\n (onSelect)=\"onFieldSelect()\"\n overlayWidth=\"24rem\"\n overlayHeight=\"20rem\"\n [displayWith]=\"fieldDisplayWith\"\n [style.minWidth.px]=\"160\"\n [style.maxWidth.px]=\"isFirst ? 200 : 160\">\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<!-- EMPTY STATE TEMPLATE -->\n<!-- <ng-template #empty>\n <novo-non-ideal-state>\n <novo-icon size=\"xl\" color=\"grapefruit\">search</novo-icon>\n <novo-title>No results found.</novo-title>\n <novo-text>Your search didn't find anything. Try searching for something else.</novo-text>\n </novo-non-ideal-state>\n</ng-template> -->\n\n<!-- LOADING TEMPLATE -->\n<ng-template #loading>\n <novo-loading></novo-loading>\n</ng-template>", styles: [":host{position:relative;display:block;width:100%}:host .condition-field{grid-template-columns:minmax(-webkit-fit-content,1fr);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(-webkit-fit-content,1fr);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:-webkit-fit-content;width:-moz-fit-content;width:fit-content}:host .condition-input::ng-deep .novo-field-infix{white-space:nowrap;overflow:hidden}:host .condition-input::ng-deep novo-chip-list{width:36rem}: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;-moz-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"] }]
57474
57495
  }], ctorParameters: function () { return [{ type: NovoLabelService }, { type: i0.ChangeDetectorRef }, { type: QueryBuilderService }, { type: i4.ControlContainer }]; }, propDecorators: { _operatorOutlet: [{
57475
57496
  type: ViewChild,
57476
57497
  args: [ConditionOperatorOutlet, { static: true }]
@@ -57639,35 +57660,84 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
57639
57660
  * Handle selection of field values when a list of options is provided.
57640
57661
  */
57641
57662
  class NovoDefaultAddressConditionDef extends AbstractConditionFieldDef {
57642
- constructor() {
57643
- super(...arguments);
57663
+ constructor(element, labels) {
57664
+ super(labels);
57665
+ this.element = element;
57666
+ this.labels = labels;
57644
57667
  this.defaultOperator = 'includeAny';
57668
+ this.chipListModel = '';
57669
+ this.term = '';
57670
+ }
57671
+ onKeyup(event) {
57672
+ this.term = event.target.value;
57673
+ }
57674
+ getValue(formGroup) {
57675
+ return formGroup.value.value || [];
57676
+ }
57677
+ getCurrentOverlay(viewIndex) {
57678
+ var _a;
57679
+ return (_a = this.overlayChildren) === null || _a === void 0 ? void 0 : _a.find(item => item.overlayId === viewIndex);
57680
+ }
57681
+ selectPlace(event, formGroup, viewIndex) {
57682
+ var _a;
57683
+ const valueToAdd = {
57684
+ address_components: event.address_components,
57685
+ formatted_address: event.formatted_address,
57686
+ geometry: event.geometry,
57687
+ place_id: event.place_id,
57688
+ };
57689
+ const current = this.getValue(formGroup);
57690
+ if (!Array.isArray(current)) {
57691
+ formGroup.get('value').setValue([valueToAdd]);
57692
+ }
57693
+ else {
57694
+ formGroup.get('value').setValue([...current, valueToAdd]);
57695
+ }
57696
+ this.inputChildren.forEach(input => {
57697
+ input.nativeElement.value = '';
57698
+ });
57699
+ (_a = this.getCurrentOverlay(viewIndex)) === null || _a === void 0 ? void 0 : _a.closePanel();
57700
+ }
57701
+ remove(valueToRemove, formGroup) {
57702
+ const current = this.getValue(formGroup);
57703
+ const index = current.indexOf(valueToRemove);
57704
+ if (index >= 0) {
57705
+ const oldValue = [...current];
57706
+ oldValue.splice(index, 1);
57707
+ formGroup.get('value').setValue(oldValue);
57708
+ }
57645
57709
  }
57646
57710
  }
57647
- NovoDefaultAddressConditionDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultAddressConditionDef, deps: null, target: i0.ɵɵFactoryTarget.Component });
57648
- NovoDefaultAddressConditionDef.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NovoDefaultAddressConditionDef, selector: "novo-address-condition-def", usesInheritance: true, ngImport: i0, template: `
57711
+ NovoDefaultAddressConditionDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultAddressConditionDef, deps: [{ token: i0.ElementRef }, { token: NovoLabelService }], target: i0.ɵɵFactoryTarget.Component });
57712
+ NovoDefaultAddressConditionDef.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NovoDefaultAddressConditionDef, selector: "novo-address-condition-def", viewQueries: [{ propertyName: "overlayChildren", predicate: NovoPickerToggleElement, descendants: true }, { propertyName: "inputChildren", predicate: ["addressInput"], descendants: true }], usesInheritance: true, ngImport: i0, template: `
57649
57713
  <ng-container novoConditionFieldDef>
57650
57714
  <novo-field *novoConditionOperatorsDef="let formGroup" [formGroup]="formGroup">
57651
57715
  <novo-select [placeholder]="labels.operator" formControlName="operator" (onSelect)="onOperatorSelect(formGroup)">
57652
57716
  <novo-option value="includeAny">{{ labels.includeAny }}</novo-option>
57653
57717
  <novo-option value="excludeAny">{{ labels.exclude }}</novo-option>
57654
- <novo-option value="radius">{{ labels.radius }}</novo-option>
57655
- <novo-option value="isNull">{{ labels.isEmpty }}</novo-option>
57656
57718
  </novo-select>
57657
57719
  </novo-field>
57658
57720
  <ng-container *novoConditionInputDef="let formGroup; viewIndex as viewIndex; fieldMeta as meta" [ngSwitch]="formGroup.value.operator" [formGroup]="formGroup">
57659
- <novo-field *novoSwitchCases="['includeAny', 'excludeAny', 'radius']">
57660
- <novo-select formControlName="value" [placeholder]="labels.select" [multiple]="true"> </novo-select>
57661
- </novo-field>
57662
- <novo-field *novoSwitchCases="['isNull']">
57663
- <novo-radio-group formControlName="value">
57664
- <novo-radio [value]="true">{{ labels.yes }}</novo-radio>
57665
- <novo-radio [value]="false">{{ labels.no }}</novo-radio>
57666
- </novo-radio-group>
57721
+ <novo-field *novoSwitchCases="['includeAny', 'excludeAny']" #novoField>
57722
+ <novo-chip-list [(ngModel)]="chipListModel" [ngModelOptions]="{ standalone: true }">
57723
+ <novo-chip *ngFor="let item of formGroup.get('value').value" (removed)="remove(item, formGroup)">
57724
+ {{ item.formatted_address }}
57725
+ <novo-icon novoChipRemove>close</novo-icon>
57726
+ </novo-chip>
57727
+ <input
57728
+ novoChipInput
57729
+ [placeholder]="labels.location"
57730
+ (keyup)="onKeyup($event)"
57731
+ [picker]="placesPicker"
57732
+ #addressInput />
57733
+ </novo-chip-list>
57734
+ <novo-picker-toggle triggerOnFocus [overlayId]="viewIndex" icon="location" novoSuffix>
57735
+ <google-places-list [term]="term" (select)="selectPlace($event, formGroup, viewIndex)" formControlName="value" #placesPicker></google-places-list>
57736
+ </novo-picker-toggle>
57667
57737
  </novo-field>
57668
57738
  </ng-container>
57669
57739
  </ng-container>
57670
- `, isInline: true, components: [{ type: NovoFieldElement, selector: "novo-field", inputs: ["layout", "appearance", "width"], outputs: ["valueChanges", "stateChanges"] }, { type: NovoSelectElement, selector: "novo-select", inputs: ["disabled", "required", "tabIndex", "id", "name", "options", "placeholder", "readonly", "headerConfig", "position", "overlayWidth", "overlayHeight", "displayWith", "compareWith", "value", "multiple"], outputs: ["onSelect", "selectionChange", "valueChange", "openedChange", "opened", "closed"] }, { type: NovoOption, selector: "novo-option", inputs: ["selected", "keepOpen", "novoInert", "value", "disabled"], exportAs: ["novoOption"] }, { type: NovoRadioGroup, selector: "novo-radio-group", inputs: ["id", "tabindex", "errorStateMatcher", "appearance", "value", "name", "disabled", "required", "placeholder"], outputs: ["change", "blur"] }, { type: NovoRadioElement, selector: "novo-radio", inputs: ["id", "name", "tabindex", "vertical", "label", "button", "theme", "size", "icon", "color", "checked", "value", "disabled"], outputs: ["change", "blur", "focus"] }], directives: [{ type: NovoConditionFieldDef, selector: "[novoConditionFieldDef]" }, { type: NovoConditionOperatorsDef, selector: "[novoConditionOperatorsDef]" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: NovoConditionInputDef, selector: "[novoConditionInputDef]" }, { type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: SwitchCasesDirective, selector: "[novoSwitchCases]", inputs: ["novoSwitchCases"] }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
57740
+ `, isInline: true, components: [{ type: NovoFieldElement, selector: "novo-field", inputs: ["layout", "appearance", "width"], outputs: ["valueChanges", "stateChanges"] }, { type: NovoSelectElement, selector: "novo-select", inputs: ["disabled", "required", "tabIndex", "id", "name", "options", "placeholder", "readonly", "headerConfig", "position", "overlayWidth", "overlayHeight", "displayWith", "compareWith", "value", "multiple"], outputs: ["onSelect", "selectionChange", "valueChange", "openedChange", "opened", "closed"] }, { type: NovoOption, selector: "novo-option", inputs: ["selected", "keepOpen", "novoInert", "value", "disabled"], exportAs: ["novoOption"] }, { type: NovoChipList, selector: "novo-chip-list", inputs: ["errorStateMatcher", "multiple", "stacked", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["novoChipList"] }, { type: NovoChipElement, selector: "novo-chip, [novo-chip]", inputs: ["color", "tabIndex", "size", "type", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"] }, { type: NovoIconComponent, selector: "novo-icon", inputs: ["raised", "theme", "shape", "color", "size", "smaller", "larger", "alt", "name"] }, { type: NovoPickerToggleElement, selector: "novo-picker-toggle", inputs: ["for", "icon", "tabIndex", "aria-label", "triggerOnFocus", "overlayId", "width", "disabled"], exportAs: ["novoPickerToggle"] }, { type: PlacesListComponent, selector: "google-places-list", inputs: ["userSettings", "term"], outputs: ["termChange", "select"] }], directives: [{ type: NovoConditionFieldDef, selector: "[novoConditionFieldDef]" }, { type: NovoConditionOperatorsDef, selector: "[novoConditionOperatorsDef]" }, { type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: NovoConditionInputDef, selector: "[novoConditionInputDef]" }, { type: i1$1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: SwitchCasesDirective, selector: "[novoSwitchCases]", inputs: ["novoSwitchCases"] }, { type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: NovoChipRemove, selector: "[novoChipRemove]" }, { type: NovoChipInput, selector: "input[novoChipInput]", inputs: ["novoChipInputAddOnBlur", "novoChipInputSeparatorKeyCodes", "placeholder", "id", "disabled"], outputs: ["novoChipInputTokenEnd"], exportAs: ["novoChipInput", "novoChipInputFor"] }, { type: NovoPickerDirective, selector: "input[picker]", inputs: ["picker", "autocomplete"] }, { type: NovoFieldSuffixDirective, selector: "[novoSuffix]" }], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None });
57671
57741
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultAddressConditionDef, decorators: [{
57672
57742
  type: Component,
57673
57743
  args: [{
@@ -57678,19 +57748,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
57678
57748
  <novo-select [placeholder]="labels.operator" formControlName="operator" (onSelect)="onOperatorSelect(formGroup)">
57679
57749
  <novo-option value="includeAny">{{ labels.includeAny }}</novo-option>
57680
57750
  <novo-option value="excludeAny">{{ labels.exclude }}</novo-option>
57681
- <novo-option value="radius">{{ labels.radius }}</novo-option>
57682
- <novo-option value="isNull">{{ labels.isEmpty }}</novo-option>
57683
57751
  </novo-select>
57684
57752
  </novo-field>
57685
57753
  <ng-container *novoConditionInputDef="let formGroup; viewIndex as viewIndex; fieldMeta as meta" [ngSwitch]="formGroup.value.operator" [formGroup]="formGroup">
57686
- <novo-field *novoSwitchCases="['includeAny', 'excludeAny', 'radius']">
57687
- <novo-select formControlName="value" [placeholder]="labels.select" [multiple]="true"> </novo-select>
57688
- </novo-field>
57689
- <novo-field *novoSwitchCases="['isNull']">
57690
- <novo-radio-group formControlName="value">
57691
- <novo-radio [value]="true">{{ labels.yes }}</novo-radio>
57692
- <novo-radio [value]="false">{{ labels.no }}</novo-radio>
57693
- </novo-radio-group>
57754
+ <novo-field *novoSwitchCases="['includeAny', 'excludeAny']" #novoField>
57755
+ <novo-chip-list [(ngModel)]="chipListModel" [ngModelOptions]="{ standalone: true }">
57756
+ <novo-chip *ngFor="let item of formGroup.get('value').value" (removed)="remove(item, formGroup)">
57757
+ {{ item.formatted_address }}
57758
+ <novo-icon novoChipRemove>close</novo-icon>
57759
+ </novo-chip>
57760
+ <input
57761
+ novoChipInput
57762
+ [placeholder]="labels.location"
57763
+ (keyup)="onKeyup($event)"
57764
+ [picker]="placesPicker"
57765
+ #addressInput />
57766
+ </novo-chip-list>
57767
+ <novo-picker-toggle triggerOnFocus [overlayId]="viewIndex" icon="location" novoSuffix>
57768
+ <google-places-list [term]="term" (select)="selectPlace($event, formGroup, viewIndex)" formControlName="value" #placesPicker></google-places-list>
57769
+ </novo-picker-toggle>
57694
57770
  </novo-field>
57695
57771
  </ng-container>
57696
57772
  </ng-container>
@@ -57698,7 +57774,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
57698
57774
  encapsulation: ViewEncapsulation.None,
57699
57775
  changeDetection: ChangeDetectionStrategy.Default,
57700
57776
  }]
57701
- }] });
57777
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: NovoLabelService }]; }, propDecorators: { overlayChildren: [{
57778
+ type: ViewChildren,
57779
+ args: [NovoPickerToggleElement]
57780
+ }], inputChildren: [{
57781
+ type: ViewChildren,
57782
+ args: ['addressInput']
57783
+ }] } });
57702
57784
 
57703
57785
  /**
57704
57786
  * When constructing a query using a field that is a boolean with only true/false as possible values.
@@ -58163,7 +58245,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
58163
58245
  class NovoDefaultStringConditionDef extends AbstractConditionFieldDef {
58164
58246
  constructor() {
58165
58247
  super(...arguments);
58166
- this.separatorKeysCodes = [ENTER, COMMA];
58167
58248
  this.defaultOperator = 'includeAny';
58168
58249
  }
58169
58250
  getValue(formGroup) {
@@ -58275,7 +58356,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
58275
58356
  // Change detection is intentionally not set to OnPush. This component's template will be provided
58276
58357
  // to the table to be inserted into its view. This is problematic when change detection runs since
58277
58358
  // the bindings in this template will be evaluated _after_ the table's view is evaluated, which
58278
- // mean's the template in the table's view will not have the updated value (and in fact will cause
58359
+ // means the template in the table's view will not have the updated value (and in fact will cause
58279
58360
  // an ExpressionChangedAfterItHasBeenCheckedError).
58280
58361
  // tslint:disable-next-line:validate-decorators
58281
58362
  changeDetection: ChangeDetectionStrategy.Default,
@@ -58556,6 +58637,7 @@ NovoQueryBuilderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
58556
58637
  ReactiveFormsModule,
58557
58638
  DragDropModule,
58558
58639
  CdkTableModule,
58640
+ GooglePlacesModule,
58559
58641
  NovoButtonModule,
58560
58642
  NovoCommonModule,
58561
58643
  NovoFormModule,
@@ -58570,6 +58652,7 @@ NovoQueryBuilderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
58570
58652
  NovoDatePickerModule,
58571
58653
  NovoDateTimePickerModule,
58572
58654
  NovoIconModule,
58655
+ NovoOverlayModule,
58573
58656
  NovoRadioModule,
58574
58657
  NovoSearchBoxModule,
58575
58658
  NovoSwitchModule,
@@ -58594,6 +58677,7 @@ NovoQueryBuilderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0",
58594
58677
  ReactiveFormsModule,
58595
58678
  DragDropModule,
58596
58679
  CdkTableModule,
58680
+ GooglePlacesModule,
58597
58681
  NovoButtonModule,
58598
58682
  NovoCommonModule,
58599
58683
  NovoFormModule,
@@ -58608,6 +58692,7 @@ NovoQueryBuilderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0",
58608
58692
  NovoDatePickerModule,
58609
58693
  NovoDateTimePickerModule,
58610
58694
  NovoIconModule,
58695
+ NovoOverlayModule,
58611
58696
  NovoRadioModule,
58612
58697
  NovoSearchBoxModule,
58613
58698
  NovoSwitchModule,
@@ -58624,6 +58709,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
58624
58709
  ReactiveFormsModule,
58625
58710
  DragDropModule,
58626
58711
  CdkTableModule,
58712
+ GooglePlacesModule,
58627
58713
  NovoButtonModule,
58628
58714
  NovoCommonModule,
58629
58715
  NovoFormModule,
@@ -58638,6 +58724,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
58638
58724
  NovoDatePickerModule,
58639
58725
  NovoDateTimePickerModule,
58640
58726
  NovoIconModule,
58727
+ NovoOverlayModule,
58641
58728
  NovoRadioModule,
58642
58729
  NovoSearchBoxModule,
58643
58730
  NovoSwitchModule,