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';
@@ -20651,6 +20651,7 @@ class NovoLabelService {
20651
20651
  this.within = 'Within';
20652
20652
  this.isEmpty = 'Is Empty?';
20653
20653
  this.refreshPagination = 'Refresh Pagination';
20654
+ this.location = 'Location';
20654
20655
  }
20655
20656
  maxlengthMetWithField(field, maxlength) {
20656
20657
  return `Sorry, you have reached the maximum character count of ${maxlength} for ${field}.`;
@@ -55854,12 +55855,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
55854
55855
  }] }, { type: GlobalRef }, { type: LocalStorageService }]; } });
55855
55856
 
55856
55857
  // NG2
55858
+ // Value accessor for the component (supports ngModel)
55859
+ const PLACES_VALUE_ACCESSOR = {
55860
+ provide: NG_VALUE_ACCESSOR,
55861
+ useExisting: forwardRef(() => PlacesListComponent),
55862
+ multi: true,
55863
+ };
55857
55864
  class PlacesListComponent {
55858
- constructor(platformId, _elmRef, _global, _googlePlacesService) {
55865
+ constructor(platformId, _elmRef, _global, _googlePlacesService, cdr) {
55859
55866
  this.platformId = platformId;
55860
55867
  this._elmRef = _elmRef;
55861
55868
  this._global = _global;
55862
55869
  this._googlePlacesService = _googlePlacesService;
55870
+ this.cdr = cdr;
55863
55871
  this.term = '';
55864
55872
  this.termChange = new EventEmitter();
55865
55873
  this.select = new EventEmitter();
@@ -55899,6 +55907,8 @@ class PlacesListComponent {
55899
55907
  searchIconUrl: '',
55900
55908
  locationIconUrl: '',
55901
55909
  };
55910
+ this.onModelChange = () => { };
55911
+ this.onModelTouched = () => { };
55902
55912
  }
55903
55913
  ngOnInit() {
55904
55914
  if (!this.moduleinit) {
@@ -55910,6 +55920,15 @@ class PlacesListComponent {
55910
55920
  this.moduleInit();
55911
55921
  this.searchinputCallback(null);
55912
55922
  }
55923
+ writeValue(model) {
55924
+ this.model = model;
55925
+ }
55926
+ registerOnChange(fn) {
55927
+ this.onModelChange = fn;
55928
+ }
55929
+ registerOnTouched(fn) {
55930
+ this.onModelTouched = fn;
55931
+ }
55913
55932
  // function called when click event happens in input box. (Binded with view)
55914
55933
  searchinputClickCallback(event) {
55915
55934
  event.target.select();
@@ -56092,6 +56111,7 @@ class PlacesListComponent {
56092
56111
  updateListItem(listData) {
56093
56112
  this.queryItems = listData ? listData : [];
56094
56113
  this.dropdownOpen = true;
56114
+ this.cdr.detectChanges();
56095
56115
  }
56096
56116
  // function to show the recent search result.
56097
56117
  showRecentSearch() {
@@ -56169,8 +56189,8 @@ class PlacesListComponent {
56169
56189
  });
56170
56190
  }
56171
56191
  }
56172
- 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 });
56173
- 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: `
56192
+ 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 });
56193
+ 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: `
56174
56194
  <novo-list direction="vertical">
56175
56195
  <novo-list-item *ngFor="let data of queryItems; let $index = index" (click)="selectedListNode($event, $index)">
56176
56196
  <item-header>
@@ -56185,6 +56205,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
56185
56205
  type: Component,
56186
56206
  args: [{
56187
56207
  selector: 'google-places-list',
56208
+ providers: [PLACES_VALUE_ACCESSOR],
56188
56209
  template: `
56189
56210
  <novo-list direction="vertical">
56190
56211
  <novo-list-item *ngFor="let data of queryItems; let $index = index" (click)="selectedListNode($event, $index)">
@@ -56200,7 +56221,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
56200
56221
  }], ctorParameters: function () { return [{ type: Object, decorators: [{
56201
56222
  type: Inject,
56202
56223
  args: [PLATFORM_ID]
56203
- }] }, { type: i0.ElementRef }, { type: GlobalRef }, { type: GooglePlacesService }]; }, propDecorators: { userSettings: [{
56224
+ }] }, { type: i0.ElementRef }, { type: GlobalRef }, { type: GooglePlacesService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { userSettings: [{
56204
56225
  type: Input
56205
56226
  }], term: [{
56206
56227
  type: Input
@@ -57373,10 +57394,10 @@ class ConditionBuilderComponent {
57373
57394
  }
57374
57395
  }
57375
57396
  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 });
57376
- 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 });
57397
+ 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 });
57377
57398
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: ConditionBuilderComponent, decorators: [{
57378
57399
  type: Component,
57379
- 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"] }]
57400
+ 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"] }]
57380
57401
  }], ctorParameters: function () { return [{ type: NovoLabelService }, { type: i0.ChangeDetectorRef }, { type: QueryBuilderService }, { type: i4.ControlContainer }]; }, propDecorators: { _operatorOutlet: [{
57381
57402
  type: ViewChild,
57382
57403
  args: [ConditionOperatorOutlet, { static: true }]
@@ -57543,35 +57564,82 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
57543
57564
  * Handle selection of field values when a list of options is provided.
57544
57565
  */
57545
57566
  class NovoDefaultAddressConditionDef extends AbstractConditionFieldDef {
57546
- constructor() {
57547
- super(...arguments);
57567
+ constructor(element, labels) {
57568
+ super(labels);
57569
+ this.element = element;
57570
+ this.labels = labels;
57548
57571
  this.defaultOperator = 'includeAny';
57572
+ this.chipListModel = '';
57573
+ this.term = '';
57574
+ }
57575
+ onKeyup(event) {
57576
+ this.term = event.target.value;
57577
+ }
57578
+ getValue(formGroup) {
57579
+ return formGroup.value.value || [];
57580
+ }
57581
+ getCurrentOverlay(viewIndex) {
57582
+ return this.overlayChildren?.find(item => item.overlayId === viewIndex);
57583
+ }
57584
+ selectPlace(event, formGroup, viewIndex) {
57585
+ const valueToAdd = {
57586
+ address_components: event.address_components,
57587
+ formatted_address: event.formatted_address,
57588
+ geometry: event.geometry,
57589
+ place_id: event.place_id,
57590
+ };
57591
+ const current = this.getValue(formGroup);
57592
+ if (!Array.isArray(current)) {
57593
+ formGroup.get('value').setValue([valueToAdd]);
57594
+ }
57595
+ else {
57596
+ formGroup.get('value').setValue([...current, valueToAdd]);
57597
+ }
57598
+ this.inputChildren.forEach(input => {
57599
+ input.nativeElement.value = '';
57600
+ });
57601
+ this.getCurrentOverlay(viewIndex)?.closePanel();
57602
+ }
57603
+ remove(valueToRemove, formGroup) {
57604
+ const current = this.getValue(formGroup);
57605
+ const index = current.indexOf(valueToRemove);
57606
+ if (index >= 0) {
57607
+ const oldValue = [...current];
57608
+ oldValue.splice(index, 1);
57609
+ formGroup.get('value').setValue(oldValue);
57610
+ }
57549
57611
  }
57550
57612
  }
57551
- NovoDefaultAddressConditionDef.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultAddressConditionDef, deps: null, target: i0.ɵɵFactoryTarget.Component });
57552
- NovoDefaultAddressConditionDef.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: NovoDefaultAddressConditionDef, selector: "novo-address-condition-def", usesInheritance: true, ngImport: i0, template: `
57613
+ 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 });
57614
+ 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: `
57553
57615
  <ng-container novoConditionFieldDef>
57554
57616
  <novo-field *novoConditionOperatorsDef="let formGroup" [formGroup]="formGroup">
57555
57617
  <novo-select [placeholder]="labels.operator" formControlName="operator" (onSelect)="onOperatorSelect(formGroup)">
57556
57618
  <novo-option value="includeAny">{{ labels.includeAny }}</novo-option>
57557
57619
  <novo-option value="excludeAny">{{ labels.exclude }}</novo-option>
57558
- <novo-option value="radius">{{ labels.radius }}</novo-option>
57559
- <novo-option value="isNull">{{ labels.isEmpty }}</novo-option>
57560
57620
  </novo-select>
57561
57621
  </novo-field>
57562
57622
  <ng-container *novoConditionInputDef="let formGroup; viewIndex as viewIndex; fieldMeta as meta" [ngSwitch]="formGroup.value.operator" [formGroup]="formGroup">
57563
- <novo-field *novoSwitchCases="['includeAny', 'excludeAny', 'radius']">
57564
- <novo-select formControlName="value" [placeholder]="labels.select" [multiple]="true"> </novo-select>
57565
- </novo-field>
57566
- <novo-field *novoSwitchCases="['isNull']">
57567
- <novo-radio-group formControlName="value">
57568
- <novo-radio [value]="true">{{ labels.yes }}</novo-radio>
57569
- <novo-radio [value]="false">{{ labels.no }}</novo-radio>
57570
- </novo-radio-group>
57623
+ <novo-field *novoSwitchCases="['includeAny', 'excludeAny']" #novoField>
57624
+ <novo-chip-list [(ngModel)]="chipListModel" [ngModelOptions]="{ standalone: true }">
57625
+ <novo-chip *ngFor="let item of formGroup.get('value').value" (removed)="remove(item, formGroup)">
57626
+ {{ item.formatted_address }}
57627
+ <novo-icon novoChipRemove>close</novo-icon>
57628
+ </novo-chip>
57629
+ <input
57630
+ novoChipInput
57631
+ [placeholder]="labels.location"
57632
+ (keyup)="onKeyup($event)"
57633
+ [picker]="placesPicker"
57634
+ #addressInput />
57635
+ </novo-chip-list>
57636
+ <novo-picker-toggle triggerOnFocus [overlayId]="viewIndex" icon="location" novoSuffix>
57637
+ <google-places-list [term]="term" (select)="selectPlace($event, formGroup, viewIndex)" formControlName="value" #placesPicker></google-places-list>
57638
+ </novo-picker-toggle>
57571
57639
  </novo-field>
57572
57640
  </ng-container>
57573
57641
  </ng-container>
57574
- `, 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 });
57642
+ `, 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 });
57575
57643
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: NovoDefaultAddressConditionDef, decorators: [{
57576
57644
  type: Component,
57577
57645
  args: [{
@@ -57582,19 +57650,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
57582
57650
  <novo-select [placeholder]="labels.operator" formControlName="operator" (onSelect)="onOperatorSelect(formGroup)">
57583
57651
  <novo-option value="includeAny">{{ labels.includeAny }}</novo-option>
57584
57652
  <novo-option value="excludeAny">{{ labels.exclude }}</novo-option>
57585
- <novo-option value="radius">{{ labels.radius }}</novo-option>
57586
- <novo-option value="isNull">{{ labels.isEmpty }}</novo-option>
57587
57653
  </novo-select>
57588
57654
  </novo-field>
57589
57655
  <ng-container *novoConditionInputDef="let formGroup; viewIndex as viewIndex; fieldMeta as meta" [ngSwitch]="formGroup.value.operator" [formGroup]="formGroup">
57590
- <novo-field *novoSwitchCases="['includeAny', 'excludeAny', 'radius']">
57591
- <novo-select formControlName="value" [placeholder]="labels.select" [multiple]="true"> </novo-select>
57592
- </novo-field>
57593
- <novo-field *novoSwitchCases="['isNull']">
57594
- <novo-radio-group formControlName="value">
57595
- <novo-radio [value]="true">{{ labels.yes }}</novo-radio>
57596
- <novo-radio [value]="false">{{ labels.no }}</novo-radio>
57597
- </novo-radio-group>
57656
+ <novo-field *novoSwitchCases="['includeAny', 'excludeAny']" #novoField>
57657
+ <novo-chip-list [(ngModel)]="chipListModel" [ngModelOptions]="{ standalone: true }">
57658
+ <novo-chip *ngFor="let item of formGroup.get('value').value" (removed)="remove(item, formGroup)">
57659
+ {{ item.formatted_address }}
57660
+ <novo-icon novoChipRemove>close</novo-icon>
57661
+ </novo-chip>
57662
+ <input
57663
+ novoChipInput
57664
+ [placeholder]="labels.location"
57665
+ (keyup)="onKeyup($event)"
57666
+ [picker]="placesPicker"
57667
+ #addressInput />
57668
+ </novo-chip-list>
57669
+ <novo-picker-toggle triggerOnFocus [overlayId]="viewIndex" icon="location" novoSuffix>
57670
+ <google-places-list [term]="term" (select)="selectPlace($event, formGroup, viewIndex)" formControlName="value" #placesPicker></google-places-list>
57671
+ </novo-picker-toggle>
57598
57672
  </novo-field>
57599
57673
  </ng-container>
57600
57674
  </ng-container>
@@ -57602,7 +57676,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
57602
57676
  encapsulation: ViewEncapsulation.None,
57603
57677
  changeDetection: ChangeDetectionStrategy.Default,
57604
57678
  }]
57605
- }] });
57679
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: NovoLabelService }]; }, propDecorators: { overlayChildren: [{
57680
+ type: ViewChildren,
57681
+ args: [NovoPickerToggleElement]
57682
+ }], inputChildren: [{
57683
+ type: ViewChildren,
57684
+ args: ['addressInput']
57685
+ }] } });
57606
57686
 
57607
57687
  /**
57608
57688
  * When constructing a query using a field that is a boolean with only true/false as possible values.
@@ -58067,7 +58147,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
58067
58147
  class NovoDefaultStringConditionDef extends AbstractConditionFieldDef {
58068
58148
  constructor() {
58069
58149
  super(...arguments);
58070
- this.separatorKeysCodes = [ENTER, COMMA];
58071
58150
  this.defaultOperator = 'includeAny';
58072
58151
  }
58073
58152
  getValue(formGroup) {
@@ -58178,7 +58257,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
58178
58257
  // Change detection is intentionally not set to OnPush. This component's template will be provided
58179
58258
  // to the table to be inserted into its view. This is problematic when change detection runs since
58180
58259
  // the bindings in this template will be evaluated _after_ the table's view is evaluated, which
58181
- // mean's the template in the table's view will not have the updated value (and in fact will cause
58260
+ // means the template in the table's view will not have the updated value (and in fact will cause
58182
58261
  // an ExpressionChangedAfterItHasBeenCheckedError).
58183
58262
  // tslint:disable-next-line:validate-decorators
58184
58263
  changeDetection: ChangeDetectionStrategy.Default,
@@ -58462,6 +58541,7 @@ NovoQueryBuilderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
58462
58541
  ReactiveFormsModule,
58463
58542
  DragDropModule,
58464
58543
  CdkTableModule,
58544
+ GooglePlacesModule,
58465
58545
  NovoButtonModule,
58466
58546
  NovoCommonModule,
58467
58547
  NovoFormModule,
@@ -58476,6 +58556,7 @@ NovoQueryBuilderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
58476
58556
  NovoDatePickerModule,
58477
58557
  NovoDateTimePickerModule,
58478
58558
  NovoIconModule,
58559
+ NovoOverlayModule,
58479
58560
  NovoRadioModule,
58480
58561
  NovoSearchBoxModule,
58481
58562
  NovoSwitchModule,
@@ -58500,6 +58581,7 @@ NovoQueryBuilderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0",
58500
58581
  ReactiveFormsModule,
58501
58582
  DragDropModule,
58502
58583
  CdkTableModule,
58584
+ GooglePlacesModule,
58503
58585
  NovoButtonModule,
58504
58586
  NovoCommonModule,
58505
58587
  NovoFormModule,
@@ -58514,6 +58596,7 @@ NovoQueryBuilderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0",
58514
58596
  NovoDatePickerModule,
58515
58597
  NovoDateTimePickerModule,
58516
58598
  NovoIconModule,
58599
+ NovoOverlayModule,
58517
58600
  NovoRadioModule,
58518
58601
  NovoSearchBoxModule,
58519
58602
  NovoSwitchModule,
@@ -58530,6 +58613,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
58530
58613
  ReactiveFormsModule,
58531
58614
  DragDropModule,
58532
58615
  CdkTableModule,
58616
+ GooglePlacesModule,
58533
58617
  NovoButtonModule,
58534
58618
  NovoCommonModule,
58535
58619
  NovoFormModule,
@@ -58544,6 +58628,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
58544
58628
  NovoDatePickerModule,
58545
58629
  NovoDateTimePickerModule,
58546
58630
  NovoIconModule,
58631
+ NovoOverlayModule,
58547
58632
  NovoRadioModule,
58548
58633
  NovoSearchBoxModule,
58549
58634
  NovoSwitchModule,