@colijnit/corecomponents_v12 12.0.101 → 12.0.103

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.
Files changed (50) hide show
  1. package/bundles/colijnit-corecomponents_v12.umd.js +428 -294
  2. package/bundles/colijnit-corecomponents_v12.umd.js.map +1 -1
  3. package/colijnit-corecomponents_v12.d.ts +13 -13
  4. package/colijnit-corecomponents_v12.metadata.json +1 -1
  5. package/esm2015/colijnit-corecomponents_v12.js +14 -14
  6. package/esm2015/lib/components/base/base-input.component.js +37 -30
  7. package/esm2015/lib/components/drop-down-list/drop-down-list.component.js +37 -34
  8. package/esm2015/lib/components/input-checkbox/input-checkbox.component.js +25 -20
  9. package/esm2015/lib/components/input-checkbox-multi-select/input-checkbox-multi-select.component.js +28 -23
  10. package/esm2015/lib/components/input-combo-box/input-combo-box.component.js +38 -34
  11. package/esm2015/lib/components/input-date-picker/input-date-picker.component.js +41 -37
  12. package/esm2015/lib/components/input-date-picker/input-date-picker.module.js +6 -2
  13. package/esm2015/lib/components/input-date-range-picker/input-date-range-picker.component.js +28 -25
  14. package/esm2015/lib/components/input-date-range-picker/input-date-range-picker.module.js +6 -2
  15. package/esm2015/lib/components/input-listbox/input-listbox.component.js +30 -26
  16. package/esm2015/lib/components/input-number-picker/input-number-picker.component.js +45 -40
  17. package/esm2015/lib/components/input-radio-button/input-radio-button.component.js +29 -24
  18. package/esm2015/lib/components/input-search/input-search.component.js +5 -1
  19. package/esm2015/lib/components/input-text/input-text.component.js +50 -44
  20. package/esm2015/lib/components/input-text/input-text.module.js +4 -2
  21. package/esm2015/lib/components/input-textarea/input-textarea.component.js +38 -34
  22. package/esm2015/lib/components/multi-select-list/multi-select-list.component.js +37 -34
  23. package/esm2015/lib/components/validation-error/validation-error.component.js +8 -5
  24. package/esm2015/lib/components/validation-error/validation-error.module.js +4 -2
  25. package/esm2015/lib/directives/overlay/overlay.directive.js +55 -28
  26. package/esm2015/lib/service/overlay.service.js +44 -0
  27. package/esm2015/public-api.js +3 -2
  28. package/fesm2015/colijnit-corecomponents_v12.js +587 -460
  29. package/fesm2015/colijnit-corecomponents_v12.js.map +1 -1
  30. package/lib/components/base/base-input.component.d.ts +4 -3
  31. package/lib/components/drop-down-list/drop-down-list.component.d.ts +8 -6
  32. package/lib/components/input-checkbox/input-checkbox.component.d.ts +9 -7
  33. package/lib/components/input-checkbox-multi-select/input-checkbox-multi-select.component.d.ts +8 -6
  34. package/lib/components/input-combo-box/input-combo-box.component.d.ts +9 -7
  35. package/lib/components/input-date-picker/input-date-picker.component.d.ts +11 -9
  36. package/lib/components/input-date-range-picker/input-date-range-picker.component.d.ts +1 -1
  37. package/lib/components/input-listbox/input-listbox.component.d.ts +9 -7
  38. package/lib/components/input-number-picker/input-number-picker.component.d.ts +12 -10
  39. package/lib/components/input-radio-button/input-radio-button.component.d.ts +7 -5
  40. package/lib/components/input-text/input-text.component.d.ts +9 -7
  41. package/lib/components/input-text/style/_layout.scss +1 -1
  42. package/lib/components/input-textarea/input-textarea.component.d.ts +8 -6
  43. package/lib/components/multi-select-list/multi-select-list.component.d.ts +8 -6
  44. package/lib/components/validation-error/style/_layout.scss +40 -30
  45. package/lib/components/validation-error/style/_theme.scss +23 -9
  46. package/lib/components/validation-error/validation-error.component.d.ts +2 -0
  47. package/lib/directives/overlay/overlay.directive.d.ts +7 -5
  48. package/lib/service/overlay.service.d.ts +10 -0
  49. package/package.json +1 -1
  50. package/public-api.d.ts +2 -1
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, Component, ViewEncapsulation, Input, HostBinding, NgModule, Optional, SkipSelf, InjectionToken, Directive, ElementRef, NgZone, Inject, EventEmitter, ChangeDetectionStrategy, Output, HostListener, Pipe, ChangeDetectorRef, ViewChild, ContentChildren, ComponentFactoryResolver, ViewContainerRef, forwardRef, Renderer2, ViewChildren, NO_ERRORS_SCHEMA, Injector, ApplicationRef, ContentChild } from '@angular/core';
2
+ import { Injectable, Component, ViewEncapsulation, Input, HostBinding, NgModule, Optional, SkipSelf, InjectionToken, Directive, ElementRef, NgZone, Inject, EventEmitter, ChangeDetectionStrategy, Output, HostListener, Pipe, ChangeDetectorRef, ViewChild, ContentChildren, ComponentFactoryResolver, ApplicationRef, Injector, ViewContainerRef, forwardRef, Renderer2, ViewChildren, NO_ERRORS_SCHEMA, ContentChild } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { HttpClientModule } from '@angular/common/http';
5
5
  import { DomSanitizer, HammerGestureConfig, HammerModule, HAMMER_GESTURE_CONFIG } from '@angular/platform-browser';
@@ -3980,9 +3980,11 @@ ValidationErrorComponent.decorators = [
3980
3980
  { type: Component, args: [{
3981
3981
  selector: "co-validation-error",
3982
3982
  template: `
3983
- <div class="validation-error-content">
3984
- <co-icon [iconData]="icons.getIcon(Icons.InformationRoundOpen)"></co-icon>
3985
- <div class="validation-error-message" [textContent]="error"></div>
3983
+ <div class="validation-error-wrapper" [overlay]="parentForOverlay">
3984
+ <div class="validation-error-content">
3985
+ <co-icon [iconData]="icons.getIcon(Icons.InformationRoundOpen)"></co-icon>
3986
+ <div class="validation-error-message" [textContent]="error"></div>
3987
+ </div>
3986
3988
  </div>
3987
3989
  `,
3988
3990
  animations: [],
@@ -3994,19 +3996,64 @@ ValidationErrorComponent.ctorParameters = () => [
3994
3996
  ];
3995
3997
  ValidationErrorComponent.propDecorators = {
3996
3998
  error: [{ type: Input }],
3999
+ parentForOverlay: [{ type: Input }],
3997
4000
  top: [{ type: HostBinding, args: ['style.top.px',] }, { type: Input }],
3998
4001
  left: [{ type: HostBinding, args: ['style.left.px',] }, { type: Input }],
3999
4002
  showClass: [{ type: HostBinding, args: ['class.co-validation-error',] }]
4000
4003
  };
4001
4004
 
4005
+ class OverlayService {
4006
+ constructor(_componentFactoryResolver, _appRef, _injector) {
4007
+ this._componentFactoryResolver = _componentFactoryResolver;
4008
+ this._appRef = _appRef;
4009
+ this._injector = _injector;
4010
+ }
4011
+ createComponent(compClass, inputs) {
4012
+ if (this._componentRef) {
4013
+ this.removeComponent();
4014
+ }
4015
+ this._componentRef = this._componentFactoryResolver
4016
+ .resolveComponentFactory(compClass)
4017
+ .create(this._injector);
4018
+ if (inputs) {
4019
+ for (let property in inputs) {
4020
+ if (inputs.hasOwnProperty(property)) {
4021
+ this._componentRef.instance[property] = inputs[property];
4022
+ }
4023
+ }
4024
+ }
4025
+ this._appRef.attachView(this._componentRef.hostView);
4026
+ const domElem = this._componentRef.hostView
4027
+ .rootNodes[0];
4028
+ document.body.appendChild(domElem);
4029
+ this._componentRef.onDestroy(() => {
4030
+ this._appRef.detachView(this._componentRef.hostView);
4031
+ });
4032
+ }
4033
+ removeComponent() {
4034
+ if (this._componentRef) {
4035
+ this._componentRef.destroy();
4036
+ }
4037
+ }
4038
+ }
4039
+ OverlayService.decorators = [
4040
+ { type: Injectable }
4041
+ ];
4042
+ OverlayService.ctorParameters = () => [
4043
+ { type: ComponentFactoryResolver },
4044
+ { type: ApplicationRef },
4045
+ { type: Injector }
4046
+ ];
4047
+
4002
4048
  /**
4003
4049
  * Abstract base class for all concrete form input components that contain a native <input> element. Provides common data and functionality, such as
4004
4050
  * adding self as a control to the parent form.
4005
4051
  */
4006
4052
  class BaseInputComponent {
4007
- constructor(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
4053
+ constructor(changeDetector, componentFactoryResolver, overlayService, formUserChangeListener, ngZoneWrapper, elementRef) {
4008
4054
  this.changeDetector = changeDetector;
4009
4055
  this.componentFactoryResolver = componentFactoryResolver;
4056
+ this.overlayService = overlayService;
4010
4057
  this.formUserChangeListener = formUserChangeListener;
4011
4058
  this.ngZoneWrapper = ngZoneWrapper;
4012
4059
  this.elementRef = elementRef;
@@ -4040,6 +4087,7 @@ class BaseInputComponent {
4040
4087
  this.canSaveOrCancel = false;
4041
4088
  this.committing = false;
4042
4089
  this.commitFinished = false;
4090
+ this.validationError = "";
4043
4091
  this._markedAsUserTouched = false;
4044
4092
  this._destroyed = false;
4045
4093
  this._hasOnPushCdStrategy = false;
@@ -4227,17 +4275,19 @@ class BaseInputComponent {
4227
4275
  this.markAsUserTouched();
4228
4276
  }
4229
4277
  }
4230
- handleDocumentScroll() {
4231
- this._positionValidationError();
4232
- }
4233
- handleWindowResize() {
4234
- this._positionValidationError();
4235
- }
4278
+ // @HostListener("document:scroll")
4279
+ // public handleDocumentScroll(): void {
4280
+ // this._positionValidationError();
4281
+ // }
4282
+ // @HostListener("window:resize")
4283
+ // public handleWindowResize(): void {
4284
+ // this._positionValidationError();
4285
+ // }
4236
4286
  handleKeyDown(event) {
4237
4287
  if (this.showSaveCancel && this.canSaveOrCancel) {
4238
4288
  this._handleKeyDown(event);
4239
4289
  }
4240
- this._positionValidationError();
4290
+ // this._positionValidationError();
4241
4291
  }
4242
4292
  get canChange() {
4243
4293
  return !this.readonly && !this.disabled;
@@ -4323,18 +4373,20 @@ class BaseInputComponent {
4323
4373
  this.keepFocus = false;
4324
4374
  }
4325
4375
  showValidationError(error) {
4326
- if (this.validationErrorContainer) {
4327
- if (this._errorValidationComponent) {
4328
- this._clearErrorComponent();
4329
- }
4330
- const componentFactory = this.componentFactoryResolver.resolveComponentFactory(ValidationErrorComponent);
4331
- this._errorValidationComponent = this.validationErrorContainer.createComponent(componentFactory);
4332
- this._errorValidationComponent.instance.error = error;
4333
- if (this._hasOnPushCdStrategy) {
4334
- this.changeDetector.markForCheck();
4335
- }
4336
- this._positionValidationError();
4337
- }
4376
+ this.validationError = error;
4377
+ this.overlayService.createComponent(ValidationErrorComponent, { parentForOverlay: this.elementRef, error: error });
4378
+ // if (this.validationErrorContainer) {
4379
+ // if (this._errorValidationComponent) {
4380
+ // this._clearErrorComponent();
4381
+ // }
4382
+ // const componentFactory: ComponentFactory<ValidationErrorComponent> = this.componentFactoryResolver.resolveComponentFactory(ValidationErrorComponent);
4383
+ // this._errorValidationComponent = this.validationErrorContainer.createComponent(componentFactory);
4384
+ // this._errorValidationComponent.instance.error = error;
4385
+ // if (this._hasOnPushCdStrategy) {
4386
+ // this.changeDetector.markForCheck();
4387
+ // }
4388
+ // this._positionValidationError();
4389
+ // }
4338
4390
  }
4339
4391
  /**
4340
4392
  * Emits a modelChange event with given value, indicating that the model of this form input
@@ -4507,13 +4559,14 @@ class BaseInputComponent {
4507
4559
  });
4508
4560
  }
4509
4561
  _clearErrorComponent() {
4510
- if (this.validationErrorContainer) {
4511
- this.validationErrorContainer.clear();
4512
- if (this._errorValidationComponent) {
4513
- this._errorValidationComponent.destroy();
4514
- this._errorValidationComponent = undefined;
4515
- }
4516
- }
4562
+ this.overlayService.removeComponent();
4563
+ // if (this.validationErrorContainer) {
4564
+ // this.validationErrorContainer.clear();
4565
+ // if (this._errorValidationComponent) {
4566
+ // this._errorValidationComponent.destroy();
4567
+ // this._errorValidationComponent = undefined;
4568
+ // }
4569
+ // }
4517
4570
  }
4518
4571
  // whether this.ngModel.control has safe access
4519
4572
  _controlExists() {
@@ -4673,6 +4726,7 @@ BaseInputComponent.decorators = [
4673
4726
  BaseInputComponent.ctorParameters = () => [
4674
4727
  { type: ChangeDetectorRef },
4675
4728
  { type: ComponentFactoryResolver },
4729
+ { type: OverlayService },
4676
4730
  { type: FormInputUserModelChangeListenerService, decorators: [{ type: Optional }] },
4677
4731
  { type: NgZoneWrapperService, decorators: [{ type: Optional }] },
4678
4732
  { type: ElementRef, decorators: [{ type: Optional }] }
@@ -4732,8 +4786,6 @@ BaseInputComponent.propDecorators = {
4732
4786
  validationDisabled: [{ type: HostBinding, args: ["class.no-validation",] }],
4733
4787
  onClick: [{ type: HostListener, args: ["click", ["$event"],] }],
4734
4788
  onFocusIn: [{ type: HostListener, args: ["focusin",] }],
4735
- handleDocumentScroll: [{ type: HostListener, args: ["document:scroll",] }],
4736
- handleWindowResize: [{ type: HostListener, args: ["window:resize",] }],
4737
4789
  handleKeyDown: [{ type: HostListener, args: ["keydown", ["$event"],] }]
4738
4790
  };
4739
4791
  __decorate([
@@ -5059,10 +5111,11 @@ FormComponent.propDecorators = {
5059
5111
  };
5060
5112
 
5061
5113
  class DropDownListComponent extends BaseInputComponent {
5062
- constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
5063
- super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
5114
+ constructor(formComponent, changeDetector, overlayService, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
5115
+ super(changeDetector, componentFactoryResolver, overlayService, formUserChangeListener, ngZoneWrapper, elementRef);
5064
5116
  this.formComponent = formComponent;
5065
5117
  this.changeDetector = changeDetector;
5118
+ this.overlayService = overlayService;
5066
5119
  this.componentFactoryResolver = componentFactoryResolver;
5067
5120
  this.formUserChangeListener = formUserChangeListener;
5068
5121
  this.ngZoneWrapper = ngZoneWrapper;
@@ -5081,31 +5134,31 @@ class DropDownListComponent extends BaseInputComponent {
5081
5134
  }
5082
5135
  DropDownListComponent.decorators = [
5083
5136
  { type: Component, args: [{
5084
- selector: "co-drop-down-list",
5137
+ selector: 'co-drop-down-list',
5085
5138
  template: `
5086
- <ejs-dropdownlist
5087
- [dataSource]="collection"
5088
- [allowFiltering]="allowFiltering"
5089
- [value]="model"
5090
- [fields]="fields"
5091
- [filterBarPlaceholder]="filterBarPlaceholder"
5092
- [filterType]="filterType"
5093
- [placeholder]="placeholder"
5094
- [readonly]="readonly"
5095
- [itemTemplate]="itemTemplate"
5096
- [headerTemplate]="headerTemplate"
5097
- [valueTemplate]="valueTemplate"
5098
- [disabled]="disabled"
5099
- [ngModel]="model"
5100
- (ngModelChange)="modelChange.emit($event)"
5101
- showClearButton="true"
5102
- floatLabelType="Auto"
5103
- >
5104
- </ejs-dropdownlist>
5105
- <div class="required-indicator"></div>
5106
- <ng-template #validationError></ng-template>
5107
- `,
5139
+ <ejs-dropdownlist
5140
+ [dataSource]="collection"
5141
+ [allowFiltering]="allowFiltering"
5142
+ [value]="model"
5143
+ [fields]="fields"
5144
+ [filterBarPlaceholder]="filterBarPlaceholder"
5145
+ [filterType]="filterType"
5146
+ [placeholder]="placeholder"
5147
+ [readonly]="readonly"
5148
+ [itemTemplate]="itemTemplate"
5149
+ [headerTemplate]="headerTemplate"
5150
+ [valueTemplate]="valueTemplate"
5151
+ [disabled]="disabled"
5152
+ [ngModel]="model"
5153
+ (ngModelChange)="modelChange.emit($event)"
5154
+ showClearButton="true"
5155
+ floatLabelType="Auto"
5156
+ >
5157
+ </ejs-dropdownlist>
5158
+ <div class="required-indicator"></div>
5159
+ `,
5108
5160
  providers: [
5161
+ OverlayService,
5109
5162
  CheckBoxSelectionService,
5110
5163
  {
5111
5164
  provide: SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME,
@@ -5121,6 +5174,7 @@ DropDownListComponent.decorators = [
5121
5174
  DropDownListComponent.ctorParameters = () => [
5122
5175
  { type: FormComponent, decorators: [{ type: Optional }] },
5123
5176
  { type: ChangeDetectorRef },
5177
+ { type: OverlayService },
5124
5178
  { type: ComponentFactoryResolver },
5125
5179
  { type: FormInputUserModelChangeListenerService },
5126
5180
  { type: NgZoneWrapperService },
@@ -5136,7 +5190,7 @@ DropDownListComponent.propDecorators = {
5136
5190
  itemTemplate: [{ type: Input }],
5137
5191
  headerTemplate: [{ type: Input }],
5138
5192
  valueTemplate: [{ type: Input }],
5139
- showClass: [{ type: HostBinding, args: ["class.co-drop-down-list",] }]
5193
+ showClass: [{ type: HostBinding, args: ['class.co-drop-down-list',] }]
5140
5194
  };
5141
5195
 
5142
5196
  class DropDownModule {
@@ -5817,11 +5871,12 @@ IconCollapseHandleModule.decorators = [
5817
5871
  ];
5818
5872
 
5819
5873
  class InputCheckboxComponent extends BaseInputComponent {
5820
- constructor(formComponent, iconCacheService, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
5821
- super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
5874
+ constructor(formComponent, iconCacheService, changeDetector, overlayService, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
5875
+ super(changeDetector, componentFactoryResolver, overlayService, formUserChangeListener, ngZoneWrapper, elementRef);
5822
5876
  this.formComponent = formComponent;
5823
5877
  this.iconCacheService = iconCacheService;
5824
5878
  this.changeDetector = changeDetector;
5879
+ this.overlayService = overlayService;
5825
5880
  this.componentFactoryResolver = componentFactoryResolver;
5826
5881
  this.formUserChangeListener = formUserChangeListener;
5827
5882
  this.ngZoneWrapper = ngZoneWrapper;
@@ -5846,21 +5901,23 @@ class InputCheckboxComponent extends BaseInputComponent {
5846
5901
  }
5847
5902
  InputCheckboxComponent.decorators = [
5848
5903
  { type: Component, args: [{
5849
- selector: "co-input-checkbox",
5904
+ selector: 'co-input-checkbox',
5850
5905
  template: `
5851
- <div class="checkbox" (click)="handleModelChange($event)" [class.checked]="model">
5852
- <div class="checkmark" [class.show]="model"></div>
5853
- </div>
5854
- <div class="label" [class.clickable]="clickableLabel" *ngIf="label" [textContent]="label"
5855
- (click)="clickableLabel ? handleModelChange($event) : true"></div>
5856
- `,
5857
- providers: [{
5906
+ <div class="checkbox" (click)="handleModelChange($event)" [class.checked]="model">
5907
+ <div class="checkmark" [class.show]="model"></div>
5908
+ </div>
5909
+ <div class="label" [class.clickable]="clickableLabel" *ngIf="label" [textContent]="label"
5910
+ (click)="clickableLabel ? handleModelChange($event) : true"></div>
5911
+ `,
5912
+ providers: [
5913
+ OverlayService, {
5858
5914
  provide: SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME,
5859
5915
  useExisting: forwardRef(() => InputCheckboxComponent)
5860
5916
  }, {
5861
5917
  provide: BaseInputComponent,
5862
5918
  useExisting: InputCheckboxComponent
5863
- }],
5919
+ }
5920
+ ],
5864
5921
  changeDetection: ChangeDetectionStrategy.OnPush,
5865
5922
  encapsulation: ViewEncapsulation.None
5866
5923
  },] }
@@ -5869,6 +5926,7 @@ InputCheckboxComponent.ctorParameters = () => [
5869
5926
  { type: FormComponent, decorators: [{ type: Optional }] },
5870
5927
  { type: IconCacheService },
5871
5928
  { type: ChangeDetectorRef },
5929
+ { type: OverlayService },
5872
5930
  { type: ComponentFactoryResolver },
5873
5931
  { type: FormInputUserModelChangeListenerService },
5874
5932
  { type: NgZoneWrapperService },
@@ -5878,7 +5936,7 @@ InputCheckboxComponent.propDecorators = {
5878
5936
  cssClass: [{ type: Input }],
5879
5937
  clickableLabel: [{ type: Input }],
5880
5938
  modelChange: [{ type: Output }],
5881
- showClass: [{ type: HostBinding, args: ["class.co-input-checkbox",] }]
5939
+ showClass: [{ type: HostBinding, args: ['class.co-input-checkbox',] }]
5882
5940
  };
5883
5941
 
5884
5942
  enableRipple(true);
@@ -5927,10 +5985,11 @@ AppendPipeModule.decorators = [
5927
5985
  ];
5928
5986
 
5929
5987
  class InputCheckboxMultiSelectComponent extends BaseInputComponent {
5930
- constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
5931
- super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
5988
+ constructor(formComponent, changeDetector, overlayService, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
5989
+ super(changeDetector, componentFactoryResolver, overlayService, formUserChangeListener, ngZoneWrapper, elementRef);
5932
5990
  this.formComponent = formComponent;
5933
5991
  this.changeDetector = changeDetector;
5992
+ this.overlayService = overlayService;
5934
5993
  this.componentFactoryResolver = componentFactoryResolver;
5935
5994
  this.formUserChangeListener = formUserChangeListener;
5936
5995
  this.ngZoneWrapper = ngZoneWrapper;
@@ -5943,25 +6002,27 @@ class InputCheckboxMultiSelectComponent extends BaseInputComponent {
5943
6002
  }
5944
6003
  InputCheckboxMultiSelectComponent.decorators = [
5945
6004
  { type: Component, args: [{
5946
- selector: "co-input-checkbox-multi-select",
6005
+ selector: 'co-input-checkbox-multi-select',
5947
6006
  template: `
5948
- <ejs-multiselect
5949
- [placeholder]="placeholder"
5950
- [dataSource]="source"
5951
- [fields]="fields"
5952
- mode="CheckBox"
5953
- showDropDownIcon="true"
5954
- [showSelectAll]="false"
5955
- [filterBarPlaceholder]="filterPlaceholder"
5956
- ></ejs-multiselect>
5957
- `,
5958
- providers: [{
6007
+ <ejs-multiselect
6008
+ [placeholder]="placeholder"
6009
+ [dataSource]="source"
6010
+ [fields]="fields"
6011
+ mode="CheckBox"
6012
+ showDropDownIcon="true"
6013
+ [showSelectAll]="false"
6014
+ [filterBarPlaceholder]="filterPlaceholder"
6015
+ ></ejs-multiselect>
6016
+ `,
6017
+ providers: [
6018
+ OverlayService, {
5959
6019
  provide: SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME,
5960
6020
  useExisting: forwardRef(() => InputCheckboxMultiSelectComponent)
5961
6021
  }, {
5962
6022
  provide: BaseInputComponent,
5963
6023
  useExisting: InputCheckboxMultiSelectComponent
5964
- }],
6024
+ }
6025
+ ],
5965
6026
  changeDetection: ChangeDetectionStrategy.OnPush,
5966
6027
  encapsulation: ViewEncapsulation.None
5967
6028
  },] }
@@ -5969,6 +6030,7 @@ InputCheckboxMultiSelectComponent.decorators = [
5969
6030
  InputCheckboxMultiSelectComponent.ctorParameters = () => [
5970
6031
  { type: FormComponent, decorators: [{ type: Optional }] },
5971
6032
  { type: ChangeDetectorRef },
6033
+ { type: OverlayService },
5972
6034
  { type: ComponentFactoryResolver },
5973
6035
  { type: FormInputUserModelChangeListenerService },
5974
6036
  { type: NgZoneWrapperService },
@@ -5980,7 +6042,7 @@ InputCheckboxMultiSelectComponent.propDecorators = {
5980
6042
  selected: [{ type: Input }],
5981
6043
  placeholder: [{ type: Input }],
5982
6044
  filterPlaceholder: [{ type: Input }],
5983
- showClass: [{ type: HostBinding, args: ["class.co-input-checkbox-multi-select",] }]
6045
+ showClass: [{ type: HostBinding, args: ['class.co-input-checkbox-multi-select',] }]
5984
6046
  };
5985
6047
 
5986
6048
  class InputCheckboxMultiSelectModule {
@@ -6001,10 +6063,11 @@ InputCheckboxMultiSelectModule.decorators = [
6001
6063
  ];
6002
6064
 
6003
6065
  class InputComboBoxComponent extends BaseInputComponent {
6004
- constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
6005
- super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
6066
+ constructor(formComponent, changeDetector, overlayService, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
6067
+ super(changeDetector, componentFactoryResolver, overlayService, formUserChangeListener, ngZoneWrapper, elementRef);
6006
6068
  this.formComponent = formComponent;
6007
6069
  this.changeDetector = changeDetector;
6070
+ this.overlayService = overlayService;
6008
6071
  this.componentFactoryResolver = componentFactoryResolver;
6009
6072
  this.formUserChangeListener = formUserChangeListener;
6010
6073
  this.ngZoneWrapper = ngZoneWrapper;
@@ -6027,48 +6090,50 @@ class InputComboBoxComponent extends BaseInputComponent {
6027
6090
  }
6028
6091
  InputComboBoxComponent.decorators = [
6029
6092
  { type: Component, args: [{
6030
- selector: "co-input-combo-box",
6093
+ selector: 'co-input-combo-box',
6031
6094
  template: `
6032
- <ejs-combobox #combo [dataSource]="collection"
6033
- [fields]="fields"
6034
- [disabled]="readonly"
6035
- [placeholder]="placeholder"
6036
- [autofill]="autofill"
6037
- [ngModel]="model"
6038
- (ngModelChange)="modelChange.emit($event)"
6039
- (valueChange)="valueChange.emit($event)"
6040
- (focus)="onFocus()"
6041
- [popupWidth]="popupWidth"
6042
- [popupHeight]="popupHeight"
6043
- [filterType]="filterType"
6044
- [allowFiltering]="allowFiltering"
6045
- showClearButton="true"
6046
- floatLabelType="Auto"
6047
- >
6048
- </ejs-combobox>
6049
- <div class="required-indicator"></div>
6050
- <ng-template #validationError></ng-template>
6051
- `,
6052
- providers: [{
6095
+ <ejs-combobox #combo [dataSource]="collection"
6096
+ [fields]="fields"
6097
+ [disabled]="readonly"
6098
+ [placeholder]="placeholder"
6099
+ [autofill]="autofill"
6100
+ [ngModel]="model"
6101
+ (ngModelChange)="modelChange.emit($event)"
6102
+ (valueChange)="valueChange.emit($event)"
6103
+ (focus)="onFocus()"
6104
+ [popupWidth]="popupWidth"
6105
+ [popupHeight]="popupHeight"
6106
+ [filterType]="filterType"
6107
+ [allowFiltering]="allowFiltering"
6108
+ showClearButton="true"
6109
+ floatLabelType="Auto"
6110
+ >
6111
+ </ejs-combobox>
6112
+ <div class="required-indicator"></div>
6113
+ `,
6114
+ providers: [
6115
+ OverlayService, {
6053
6116
  provide: SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME,
6054
6117
  useExisting: forwardRef(() => InputComboBoxComponent)
6055
6118
  }, {
6056
6119
  provide: BaseInputComponent,
6057
6120
  useExisting: InputComboBoxComponent
6058
- }],
6121
+ }
6122
+ ],
6059
6123
  encapsulation: ViewEncapsulation.None
6060
6124
  },] }
6061
6125
  ];
6062
6126
  InputComboBoxComponent.ctorParameters = () => [
6063
6127
  { type: FormComponent, decorators: [{ type: Optional }] },
6064
6128
  { type: ChangeDetectorRef },
6129
+ { type: OverlayService },
6065
6130
  { type: ComponentFactoryResolver },
6066
6131
  { type: FormInputUserModelChangeListenerService },
6067
6132
  { type: NgZoneWrapperService },
6068
6133
  { type: ElementRef }
6069
6134
  ];
6070
6135
  InputComboBoxComponent.propDecorators = {
6071
- combo: [{ type: ViewChild, args: ["combo",] }],
6136
+ combo: [{ type: ViewChild, args: ['combo',] }],
6072
6137
  autofill: [{ type: Input }],
6073
6138
  allowFiltering: [{ type: Input }],
6074
6139
  filterType: [{ type: Input }],
@@ -6081,7 +6146,7 @@ InputComboBoxComponent.propDecorators = {
6081
6146
  popupWidth: [{ type: Input }],
6082
6147
  valueChange: [{ type: Output }],
6083
6148
  isSmall: [{ type: HostBinding, args: ['class.is-small',] }, { type: Input }],
6084
- showClass: [{ type: HostBinding, args: ["class.co-input-combo-box",] }]
6149
+ showClass: [{ type: HostBinding, args: ['class.co-input-combo-box',] }]
6085
6150
  };
6086
6151
 
6087
6152
  class InputComboBoxModule {
@@ -6102,20 +6167,21 @@ InputComboBoxModule.decorators = [
6102
6167
  ];
6103
6168
 
6104
6169
  class InputDatePickerComponent extends BaseInputComponent {
6105
- constructor(formComponent, iconCacheService, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
6106
- super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
6170
+ constructor(formComponent, iconCacheService, changeDetector, overlayService, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
6171
+ super(changeDetector, componentFactoryResolver, overlayService, formUserChangeListener, ngZoneWrapper, elementRef);
6107
6172
  this.formComponent = formComponent;
6108
6173
  this.iconCacheService = iconCacheService;
6109
6174
  this.changeDetector = changeDetector;
6175
+ this.overlayService = overlayService;
6110
6176
  this.componentFactoryResolver = componentFactoryResolver;
6111
6177
  this.formUserChangeListener = formUserChangeListener;
6112
6178
  this.ngZoneWrapper = ngZoneWrapper;
6113
6179
  this.elementRef = elementRef;
6114
6180
  this.icons = CoreComponentsIcon;
6115
- this.dateFormat = "dd-MM-yyyy";
6181
+ this.dateFormat = 'dd-MM-yyyy';
6116
6182
  this.calendarIconName = this.icons.CalendarEmpty;
6117
- this.iconHeight = "24px";
6118
- this.placeholder = "";
6183
+ this.iconHeight = '24px';
6184
+ this.placeholder = '';
6119
6185
  this.blur = new EventEmitter();
6120
6186
  this.isMinimal = false;
6121
6187
  super._markAsOnPush();
@@ -6160,32 +6226,33 @@ class InputDatePickerComponent extends BaseInputComponent {
6160
6226
  }
6161
6227
  InputDatePickerComponent.decorators = [
6162
6228
  { type: Component, args: [{
6163
- selector: "co-input-date",
6229
+ selector: 'co-input-date',
6164
6230
  template: `
6165
- <ejs-datepicker #ejsDatePicker
6166
- floatLabelType="Auto"
6167
- [format]="dateFormat"
6168
- [placeholder]="placeholder"
6169
- [ngModel]="model"
6170
- [readonly]="readonly"
6171
- (ngModelChange)="modelChange.emit($event)"
6172
- ></ejs-datepicker>
6173
- <co-commit-buttons *ngIf="showSaveCancel && focused && canSaveOrCancel"
6174
- [committing]="committing"
6175
- [commitFinished]="commitFinished"
6176
- (commitClick)="commitClick($event)"
6177
- (cancelClick)="cancelClick($event)"
6178
- >
6179
- </co-commit-buttons>
6180
- <div class="required-indicator"></div>
6181
- <ng-template #validationError></ng-template>
6182
- `,
6183
- providers: [{
6231
+ <ejs-datepicker #ejsDatePicker
6232
+ floatLabelType="Auto"
6233
+ [format]="dateFormat"
6234
+ [placeholder]="placeholder"
6235
+ [ngModel]="model"
6236
+ [readonly]="readonly"
6237
+ (ngModelChange)="modelChange.emit($event)"
6238
+ ></ejs-datepicker>
6239
+ <co-commit-buttons *ngIf="showSaveCancel && focused && canSaveOrCancel"
6240
+ [committing]="committing"
6241
+ [commitFinished]="commitFinished"
6242
+ (commitClick)="commitClick($event)"
6243
+ (cancelClick)="cancelClick($event)"
6244
+ >
6245
+ </co-commit-buttons>
6246
+ <div class="required-indicator"></div>
6247
+ `,
6248
+ providers: [
6249
+ OverlayService, {
6184
6250
  provide: SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME, useExisting: forwardRef(() => InputDatePickerComponent)
6185
6251
  }, {
6186
6252
  provide: BaseInputComponent,
6187
6253
  useExisting: InputDatePickerComponent
6188
- }],
6254
+ }
6255
+ ],
6189
6256
  encapsulation: ViewEncapsulation.None
6190
6257
  },] }
6191
6258
  ];
@@ -6193,20 +6260,21 @@ InputDatePickerComponent.ctorParameters = () => [
6193
6260
  { type: FormComponent, decorators: [{ type: Optional }] },
6194
6261
  { type: IconCacheService },
6195
6262
  { type: ChangeDetectorRef },
6263
+ { type: OverlayService },
6196
6264
  { type: ComponentFactoryResolver },
6197
6265
  { type: FormInputUserModelChangeListenerService },
6198
6266
  { type: NgZoneWrapperService },
6199
6267
  { type: ElementRef }
6200
6268
  ];
6201
6269
  InputDatePickerComponent.propDecorators = {
6202
- ejsDatePicker: [{ type: ViewChild, args: ["ejsDatePicker",] }],
6270
+ ejsDatePicker: [{ type: ViewChild, args: ['ejsDatePicker',] }],
6203
6271
  dateFormat: [{ type: Input }],
6204
6272
  calendarIconName: [{ type: Input }],
6205
6273
  iconHeight: [{ type: Input }],
6206
6274
  placeholder: [{ type: Input }],
6207
6275
  width: [{ type: Input }],
6208
6276
  blur: [{ type: Output }],
6209
- showClass: [{ type: HostBinding, args: ["class.co-input-date",] }],
6277
+ showClass: [{ type: HostBinding, args: ['class.co-input-date',] }],
6210
6278
  isMinimal: [{ type: HostBinding, args: ['class.is-minimal',] }, { type: Input }]
6211
6279
  };
6212
6280
 
@@ -6316,6 +6384,150 @@ CommitButtonsModule.decorators = [
6316
6384
  },] }
6317
6385
  ];
6318
6386
 
6387
+ class OverlayDirective {
6388
+ constructor(elementRef) {
6389
+ this.keepInView = false;
6390
+ this.handleScroll = (event) => {
6391
+ this._checkAndPlaceElement();
6392
+ };
6393
+ this._elementRef = elementRef;
6394
+ }
6395
+ set parent(value) {
6396
+ if (value) {
6397
+ this._parent = value instanceof ElementRef ? value : value.elementRef;
6398
+ }
6399
+ else {
6400
+ if (this._parent) {
6401
+ this._resizeObserver.disconnect();
6402
+ }
6403
+ }
6404
+ }
6405
+ ngOnDestroy() {
6406
+ document.removeEventListener("scroll", this.handleScroll, true);
6407
+ this._intersectionObserver.disconnect();
6408
+ this._resizeObserver.disconnect();
6409
+ this._elementRef = undefined;
6410
+ this._parent = undefined;
6411
+ }
6412
+ ngOnInit() {
6413
+ if (!this._elementRef || !this._elementRef.nativeElement) {
6414
+ return;
6415
+ }
6416
+ document.addEventListener("scroll", this.handleScroll, true);
6417
+ this._checkAndPlaceElement();
6418
+ this._resizeObserver = new ResizeObserver((entries) => {
6419
+ this._checkAndPlaceElement();
6420
+ });
6421
+ this._intersectionObserver = new IntersectionObserver((entries) => {
6422
+ if (entries && entries.length > 0) {
6423
+ if (entries[0].isIntersecting === false) {
6424
+ this._elementRef.nativeElement.style.opacity = 0; // hide cause parent is not visible
6425
+ }
6426
+ else {
6427
+ this._elementRef.nativeElement.style.opacity = 1;
6428
+ }
6429
+ }
6430
+ }, {
6431
+ root: null
6432
+ });
6433
+ this._intersectionObserver.observe(this._parent.nativeElement); // observe parent for visibility
6434
+ this._resizeObserver.observe(document.body);
6435
+ }
6436
+ _checkAndPlaceElement() {
6437
+ if (this._elementRef && this._elementRef.nativeElement && this._parent && this._parent.nativeElement) {
6438
+ const elementRect = this._elementRef.nativeElement.getBoundingClientRect();
6439
+ const parentRect = this._parent.nativeElement.getBoundingClientRect();
6440
+ this._placeElement(window.innerHeight, window.innerWidth, parentRect, elementRect);
6441
+ }
6442
+ }
6443
+ _placeElement(bottom, right, parentRect, elementRect) {
6444
+ if (bottom < parentRect.bottom + elementRect.height) { // make sure it fits at the bottom
6445
+ this._elementRef.nativeElement.style.top = (parentRect.top - elementRect.height) + "px";
6446
+ this._elementRef.nativeElement.classList.add('top');
6447
+ }
6448
+ else {
6449
+ this._elementRef.nativeElement.classList.remove('top');
6450
+ this._elementRef.nativeElement.style.top = parentRect.bottom + "px";
6451
+ }
6452
+ this._elementRef.nativeElement.style.left = parentRect.left + "px";
6453
+ if (this.keepInView) {
6454
+ if (elementRect.right > window.innerWidth) {
6455
+ //see if we can move it to the left
6456
+ if ((window.innerWidth - elementRect.width) > 0) {
6457
+ this._elementRef.nativeElement.style.left = (window.innerWidth - elementRect.width) + "px";
6458
+ }
6459
+ else { //resize so it fits into view
6460
+ this._elementRef.nativeElement.style.width = window.innerWidth + "px";
6461
+ this._elementRef.nativeElement.style.left = 0;
6462
+ }
6463
+ }
6464
+ }
6465
+ }
6466
+ }
6467
+ OverlayDirective.decorators = [
6468
+ { type: Directive, args: [{
6469
+ selector: "[overlay]"
6470
+ },] }
6471
+ ];
6472
+ OverlayDirective.ctorParameters = () => [
6473
+ { type: ElementRef }
6474
+ ];
6475
+ OverlayDirective.propDecorators = {
6476
+ parent: [{ type: Input, args: ["overlay",] }],
6477
+ keepInView: [{ type: Input }]
6478
+ };
6479
+
6480
+ class OverlayParentDirective {
6481
+ constructor(elementRef) {
6482
+ this.elementRef = elementRef;
6483
+ }
6484
+ ngOnDestroy() {
6485
+ this.elementRef = undefined;
6486
+ }
6487
+ }
6488
+ OverlayParentDirective.decorators = [
6489
+ { type: Directive, args: [{
6490
+ selector: '[overlayParent]',
6491
+ exportAs: 'overlayParent'
6492
+ },] }
6493
+ ];
6494
+ OverlayParentDirective.ctorParameters = () => [
6495
+ { type: ElementRef }
6496
+ ];
6497
+
6498
+ class OverlayModule {
6499
+ }
6500
+ OverlayModule.decorators = [
6501
+ { type: NgModule, args: [{
6502
+ declarations: [
6503
+ OverlayDirective,
6504
+ OverlayParentDirective
6505
+ ],
6506
+ exports: [
6507
+ OverlayDirective,
6508
+ OverlayParentDirective
6509
+ ]
6510
+ },] }
6511
+ ];
6512
+
6513
+ class ValidationErrorModule {
6514
+ }
6515
+ ValidationErrorModule.decorators = [
6516
+ { type: NgModule, args: [{
6517
+ imports: [
6518
+ CommonModule,
6519
+ IconModule,
6520
+ OverlayModule
6521
+ ],
6522
+ declarations: [
6523
+ ValidationErrorComponent
6524
+ ],
6525
+ exports: [
6526
+ ValidationErrorComponent
6527
+ ]
6528
+ },] }
6529
+ ];
6530
+
6319
6531
  class InputDatePickerModule {
6320
6532
  }
6321
6533
  InputDatePickerModule.decorators = [
@@ -6327,7 +6539,9 @@ InputDatePickerModule.decorators = [
6327
6539
  IconModule,
6328
6540
  AppendPipeModule,
6329
6541
  DatePickerModule,
6330
- CommitButtonsModule
6542
+ CommitButtonsModule,
6543
+ ValidationErrorModule,
6544
+ OverlayModule
6331
6545
  ],
6332
6546
  schemas: [
6333
6547
  NO_ERRORS_SCHEMA
@@ -6340,8 +6554,8 @@ InputDatePickerModule.decorators = [
6340
6554
  class InputDateRangePickerComponent extends BaseInputComponent {
6341
6555
  constructor() {
6342
6556
  super(...arguments);
6343
- this.dateFormat = "dd-MM-yyyy";
6344
- this.placeholder = "";
6557
+ this.dateFormat = 'dd-MM-yyyy';
6558
+ this.placeholder = '';
6345
6559
  this.startDateChange = new EventEmitter();
6346
6560
  this.endDateChange = new EventEmitter();
6347
6561
  this.dateRangeChange = new EventEmitter();
@@ -6364,31 +6578,33 @@ class InputDateRangePickerComponent extends BaseInputComponent {
6364
6578
  }
6365
6579
  InputDateRangePickerComponent.decorators = [
6366
6580
  { type: Component, args: [{
6367
- selector: "co-input-date-range",
6581
+ selector: 'co-input-date-range',
6368
6582
  template: `
6369
- <ejs-daterangepicker #ejsDateRangePicker
6370
- [format]="dateFormat"
6371
- floatLabelType="Auto"
6372
- [placeholder]="placeholder"
6373
- [ngModel]="model"
6374
- [(startDate)]="startDate"
6375
- [(endDate)]="endDate"
6376
- [readonly]="readonly"
6377
- (ngModelChange)="rangeChange()"
6378
- (close)="close.next($event)"
6379
- (select)="select.next($event)"
6380
- (cleared)="cleared.next($event)"
6381
- ></ejs-daterangepicker>
6382
- <div class="required-indicator"></div>
6383
- <ng-template #validationError></ng-template>
6384
- `,
6385
- providers: [{
6583
+ <ejs-daterangepicker #ejsDateRangePicker
6584
+ [format]="dateFormat"
6585
+ floatLabelType="Auto"
6586
+ [placeholder]="placeholder"
6587
+ [ngModel]="model"
6588
+ [(startDate)]="startDate"
6589
+ [(endDate)]="endDate"
6590
+ [readonly]="readonly"
6591
+ (ngModelChange)="rangeChange()"
6592
+ (close)="close.next($event)"
6593
+ (select)="select.next($event)"
6594
+ (cleared)="cleared.next($event)"
6595
+ ></ejs-daterangepicker>
6596
+ <div class="required-indicator"></div>
6597
+ `,
6598
+ providers: [
6599
+ OverlayService,
6600
+ {
6386
6601
  provide: SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME,
6387
6602
  useExisting: forwardRef(() => InputDateRangePickerComponent)
6388
6603
  }, {
6389
6604
  provide: BaseInputComponent,
6390
6605
  useExisting: InputDateRangePickerComponent
6391
- }],
6606
+ }
6607
+ ],
6392
6608
  encapsulation: ViewEncapsulation.None
6393
6609
  },] }
6394
6610
  ];
@@ -6403,7 +6619,7 @@ InputDateRangePickerComponent.propDecorators = {
6403
6619
  close: [{ type: Output }],
6404
6620
  select: [{ type: Output }],
6405
6621
  cleared: [{ type: Output }],
6406
- showClass: [{ type: HostBinding, args: ["class.co-input-date-range-picker",] }]
6622
+ showClass: [{ type: HostBinding, args: ['class.co-input-date-range-picker',] }]
6407
6623
  };
6408
6624
 
6409
6625
  class InputDateRangePickerModule {
@@ -6413,7 +6629,9 @@ InputDateRangePickerModule.decorators = [
6413
6629
  imports: [
6414
6630
  BaseModule,
6415
6631
  DateRangePickerModule,
6416
- FormsModule
6632
+ FormsModule,
6633
+ ValidationErrorModule,
6634
+ OverlayModule
6417
6635
  ],
6418
6636
  declarations: [
6419
6637
  InputDateRangePickerComponent
@@ -6426,10 +6644,11 @@ InputDateRangePickerModule.decorators = [
6426
6644
 
6427
6645
  ListBoxComponent.Inject(CheckBoxSelection);
6428
6646
  class InputListboxComponent extends BaseInputComponent {
6429
- constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
6430
- super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
6647
+ constructor(formComponent, changeDetector, overlayService, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
6648
+ super(changeDetector, componentFactoryResolver, overlayService, formUserChangeListener, ngZoneWrapper, elementRef);
6431
6649
  this.formComponent = formComponent;
6432
6650
  this.changeDetector = changeDetector;
6651
+ this.overlayService = overlayService;
6433
6652
  this.componentFactoryResolver = componentFactoryResolver;
6434
6653
  this.formUserChangeListener = formUserChangeListener;
6435
6654
  this.ngZoneWrapper = ngZoneWrapper;
@@ -6464,32 +6683,34 @@ InputListboxComponent.decorators = [
6464
6683
  { type: Component, args: [{
6465
6684
  selector: 'co-input-listbox',
6466
6685
  template: `
6467
- <div class="co-input-listbox-header" [textContent]="placeholder"></div>
6468
- <div class="co-input-listbox-content" [ngClass]="customCssClass ? customCssClass : undefined">
6469
- <ejs-listbox
6470
- [ngModel]="value"
6471
- [dataSource]="collection"
6472
- [fields]="fields"
6473
- [disabled]="readonly"
6474
- [selectionSettings]="selectionSettings"
6475
- (ngModelChange)="modelChange.emit($event)"
6476
- ></ejs-listbox>
6477
- </div>
6478
- <div class="required-indicator"></div>
6479
- <ng-template #validationError></ng-template>
6480
- `,
6481
- providers: [{
6686
+ <div class="co-input-listbox-header" [textContent]="placeholder"></div>
6687
+ <div class="co-input-listbox-content" [ngClass]="customCssClass ? customCssClass : undefined">
6688
+ <ejs-listbox
6689
+ [ngModel]="value"
6690
+ [dataSource]="collection"
6691
+ [fields]="fields"
6692
+ [disabled]="readonly"
6693
+ [selectionSettings]="selectionSettings"
6694
+ (ngModelChange)="modelChange.emit($event)"
6695
+ ></ejs-listbox>
6696
+ </div>
6697
+ <div class="required-indicator"></div>
6698
+ `,
6699
+ providers: [
6700
+ OverlayService, {
6482
6701
  provide: SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME, useExisting: forwardRef(() => InputListboxComponent)
6483
6702
  }, {
6484
6703
  provide: BaseInputComponent,
6485
6704
  useExisting: InputListboxComponent
6486
- }],
6705
+ }
6706
+ ],
6487
6707
  encapsulation: ViewEncapsulation.None
6488
6708
  },] }
6489
6709
  ];
6490
6710
  InputListboxComponent.ctorParameters = () => [
6491
6711
  { type: FormComponent, decorators: [{ type: Optional }] },
6492
6712
  { type: ChangeDetectorRef },
6713
+ { type: OverlayService },
6493
6714
  { type: ComponentFactoryResolver },
6494
6715
  { type: FormInputUserModelChangeListenerService },
6495
6716
  { type: NgZoneWrapperService },
@@ -6826,10 +7047,11 @@ var InputNumberPickerButtonShowMode;
6826
7047
 
6827
7048
  // A component that lets users pick a number by increasing and decreasing it with buttons, or by typing.
6828
7049
  class InputNumberPickerComponent extends BaseInputComponent {
6829
- constructor(formComponent, iconCacheService, _ngZone, componentFactoryResolver, changeDetector, formUserChangeListener) {
6830
- super(changeDetector, componentFactoryResolver, formUserChangeListener);
7050
+ constructor(formComponent, iconCacheService, overlayService, _ngZone, componentFactoryResolver, changeDetector, formUserChangeListener) {
7051
+ super(changeDetector, componentFactoryResolver, overlayService, formUserChangeListener);
6831
7052
  this.formComponent = formComponent;
6832
7053
  this.iconCacheService = iconCacheService;
7054
+ this.overlayService = overlayService;
6833
7055
  this._ngZone = _ngZone;
6834
7056
  this.componentFactoryResolver = componentFactoryResolver;
6835
7057
  this.minusIcon = CoreComponentsIcon.MinusSimple;
@@ -7033,34 +7255,36 @@ InputNumberPickerComponent.decorators = [
7033
7255
  { type: Component, args: [{
7034
7256
  selector: 'co-input-number-picker',
7035
7257
  template: `
7036
- <div class="button-wrapper">
7037
- <co-button *ngIf="showButtons" class="minus-operator circle" [class.select]="minSelected"
7038
- [disabled]="readonly"
7039
- [iconData]="iconCacheService.getIcon(minusIcon)"
7040
- (mousedown)="onMinusMouseDown($event)"
7041
- (mouseup)="stopAutoCounting()" (mouseleave)="stopAutoCounting()"></co-button>
7042
- </div>
7043
- <input type="text"
7044
- [ngModel]="model"
7045
- [readonly]="readonly"
7046
- [disabled]="disabled"
7047
- [required]="required"
7048
- (ngModelChange)="handleChangeModel($event)"
7049
- (keydown)="handleKeyDown($event)"/>
7050
- <div class="button-wrapper">
7051
- <co-button *ngIf="showButtons" class="plus-operator circle" [class.select]="plusSelected"
7052
- [disabled]="readonly"
7053
- [iconData]="iconCacheService.getIcon(plusIcon)"
7054
- (mousedown)="onPlusMouseDown($event)"
7055
- (mouseup)="stopAutoCounting()" (mouseleave)="stopAutoCounting()"></co-button>
7056
- </div>
7057
- `,
7058
- providers: [{
7258
+ <div class="button-wrapper">
7259
+ <co-button *ngIf="showButtons" class="minus-operator circle" [class.select]="minSelected"
7260
+ [disabled]="readonly"
7261
+ [iconData]="iconCacheService.getIcon(minusIcon)"
7262
+ (mousedown)="onMinusMouseDown($event)"
7263
+ (mouseup)="stopAutoCounting()" (mouseleave)="stopAutoCounting()"></co-button>
7264
+ </div>
7265
+ <input type="text"
7266
+ [ngModel]="model"
7267
+ [readonly]="readonly"
7268
+ [disabled]="disabled"
7269
+ [required]="required"
7270
+ (ngModelChange)="handleChangeModel($event)"
7271
+ (keydown)="handleKeyDown($event)"/>
7272
+ <div class="button-wrapper">
7273
+ <co-button *ngIf="showButtons" class="plus-operator circle" [class.select]="plusSelected"
7274
+ [disabled]="readonly"
7275
+ [iconData]="iconCacheService.getIcon(plusIcon)"
7276
+ (mousedown)="onPlusMouseDown($event)"
7277
+ (mouseup)="stopAutoCounting()" (mouseleave)="stopAutoCounting()"></co-button>
7278
+ </div>
7279
+ `,
7280
+ providers: [
7281
+ OverlayService, {
7059
7282
  provide: SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME, useExisting: forwardRef(() => InputNumberPickerComponent)
7060
7283
  }, {
7061
7284
  provide: BaseInputComponent,
7062
7285
  useExisting: InputNumberPickerComponent
7063
- }],
7286
+ }
7287
+ ],
7064
7288
  changeDetection: ChangeDetectionStrategy.OnPush,
7065
7289
  encapsulation: ViewEncapsulation.None
7066
7290
  },] }
@@ -7068,6 +7292,7 @@ InputNumberPickerComponent.decorators = [
7068
7292
  InputNumberPickerComponent.ctorParameters = () => [
7069
7293
  { type: FormComponent, decorators: [{ type: Optional }] },
7070
7294
  { type: IconCacheService, decorators: [{ type: Inject, args: [IconCacheService,] }] },
7295
+ { type: OverlayService },
7071
7296
  { type: NgZone },
7072
7297
  { type: ComponentFactoryResolver },
7073
7298
  { type: ChangeDetectorRef },
@@ -7085,8 +7310,8 @@ InputNumberPickerComponent.propDecorators = {
7085
7310
  noValidation: [{ type: Input }],
7086
7311
  decimals: [{ type: Input }],
7087
7312
  modelChange: [{ type: Output }],
7088
- showButtonsOnFocusOnly: [{ type: HostBinding, args: ["class.show-buttons-on-focus-only",] }],
7089
- hasLabel: [{ type: HostBinding, args: ["class.has-label",] }],
7313
+ showButtonsOnFocusOnly: [{ type: HostBinding, args: ['class.show-buttons-on-focus-only',] }],
7314
+ hasLabel: [{ type: HostBinding, args: ['class.has-label',] }],
7090
7315
  showClass: [{ type: HostBinding, args: ['class.co-input-number-picker',] }]
7091
7316
  };
7092
7317
  __decorate([
@@ -7094,16 +7319,17 @@ __decorate([
7094
7319
  ], InputNumberPickerComponent.prototype, "noValidation", void 0);
7095
7320
 
7096
7321
  class InputTextComponent extends BaseInputComponent {
7097
- constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
7098
- super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
7322
+ constructor(formComponent, changeDetector, overlayService, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
7323
+ super(changeDetector, componentFactoryResolver, overlayService, formUserChangeListener, ngZoneWrapper, elementRef);
7099
7324
  this.formComponent = formComponent;
7100
7325
  this.changeDetector = changeDetector;
7326
+ this.overlayService = overlayService;
7101
7327
  this.componentFactoryResolver = componentFactoryResolver;
7102
7328
  this.formUserChangeListener = formUserChangeListener;
7103
7329
  this.ngZoneWrapper = ngZoneWrapper;
7104
7330
  this.elementRef = elementRef;
7105
- this.placeholder = "";
7106
- this.type = "text";
7331
+ this.placeholder = '';
7332
+ this.type = 'text';
7107
7333
  this.digitsOnly = false;
7108
7334
  this.excludePlusMinus = true;
7109
7335
  this.showClearButton = undefined;
@@ -7158,51 +7384,55 @@ class InputTextComponent extends BaseInputComponent {
7158
7384
  }
7159
7385
  InputTextComponent.decorators = [
7160
7386
  { type: Component, args: [{
7161
- selector: "co-input-text",
7387
+ selector: 'co-input-text',
7162
7388
  template: `
7163
- <div class="input-text-wrapper">
7164
- <co-icon *ngIf="leftIcon" class="input-text-left-icon" [icon]="leftIcon" [iconData]="leftIconData" (click)="handleLeftIconClick($event)"></co-icon>
7165
- <div *ngIf="leftIcon" class="spacer"></div>
7166
- <div class="input-wrapper">
7167
- <label *ngIf="showPlaceholderOnFocus || (!showPlaceholderOnFocus && !hasValue && !focused)"
7168
- [textContent]="placeholder"></label>
7169
- <input #input
7170
- [type]="digitsOnly ? 'number' : type"
7171
- [ngModel]="model"
7172
- [min]="type === 'number' && this.min ? this.min : undefined"
7173
- [max]="type === 'number' && this.max ? this.max : undefined"
7174
- [readonly]="readonly"
7175
- [required]="required"
7176
- (ngModelChange)="modelChange.emit($event)"
7177
- (keydown)="digitsOnly ? excludeNonDigitChars($event) : true"
7389
+ <div class="input-text-wrapper" overlayParent #parentForOverlay="overlayParent">
7390
+ <co-icon *ngIf="leftIcon" class="input-text-left-icon" [icon]="leftIcon" [iconData]="leftIconData"
7391
+ (click)="handleLeftIconClick($event)"></co-icon>
7392
+ <div *ngIf="leftIcon" class="spacer"></div>
7393
+ <div class="input-wrapper">
7394
+ <label *ngIf="showPlaceholderOnFocus || (!showPlaceholderOnFocus && !hasValue && !focused)"
7395
+ [textContent]="placeholder"></label>
7396
+ <input #input
7397
+ [type]="digitsOnly ? 'number' : type"
7398
+ [ngModel]="model"
7399
+ [min]="type === 'number' && this.min ? this.min : undefined"
7400
+ [max]="type === 'number' && this.max ? this.max : undefined"
7401
+ [readonly]="readonly"
7402
+ [required]="required"
7403
+ (ngModelChange)="modelChange.emit($event)"
7404
+ (keydown)="digitsOnly ? excludeNonDigitChars($event) : true"
7405
+ >
7406
+ </div>
7407
+ <div *ngIf="rightIcon" class="spacer"></div>
7408
+ <co-icon *ngIf="rightIcon" class="input-text-right-icon" [icon]="rightIcon" [iconData]="rightIconData"
7409
+ (click)="handleRightIconClick($event)"></co-icon>
7410
+ </div>
7411
+ <co-commit-buttons *ngIf="showSaveCancel && focused && canSaveOrCancel"
7412
+ [committing]="committing"
7413
+ [commitFinished]="commitFinished"
7414
+ (commitClick)="commitClick($event)"
7415
+ (cancelClick)="cancelClick($event)"
7178
7416
  >
7179
- </div>
7180
- <div *ngIf="rightIcon" class="spacer"></div>
7181
- <co-icon *ngIf="rightIcon" class="input-text-right-icon" [icon]="rightIcon" [iconData]="rightIconData" (click)="handleRightIconClick($event)"></co-icon>
7182
- </div>
7183
- <co-commit-buttons *ngIf="showSaveCancel && focused && canSaveOrCancel"
7184
- [committing]="committing"
7185
- [commitFinished]="commitFinished"
7186
- (commitClick)="commitClick($event)"
7187
- (cancelClick)="cancelClick($event)"
7188
- >
7189
- </co-commit-buttons>
7190
- <div class="required-indicator"></div>
7191
- <ng-template #validationError></ng-template>
7192
- `,
7193
- providers: [{
7417
+ </co-commit-buttons>
7418
+ <div class="required-indicator"></div>
7419
+ `,
7420
+ providers: [
7421
+ OverlayService, {
7194
7422
  provide: SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME,
7195
7423
  useExisting: forwardRef(() => InputTextComponent)
7196
7424
  }, {
7197
7425
  provide: BaseInputComponent,
7198
7426
  useExisting: InputTextComponent
7199
- }],
7427
+ }
7428
+ ],
7200
7429
  encapsulation: ViewEncapsulation.None
7201
7430
  },] }
7202
7431
  ];
7203
7432
  InputTextComponent.ctorParameters = () => [
7204
7433
  { type: FormComponent, decorators: [{ type: Optional }] },
7205
7434
  { type: ChangeDetectorRef },
7435
+ { type: OverlayService },
7206
7436
  { type: ComponentFactoryResolver },
7207
7437
  { type: FormInputUserModelChangeListenerService },
7208
7438
  { type: NgZoneWrapperService },
@@ -7226,29 +7456,12 @@ InputTextComponent.propDecorators = {
7226
7456
  hideArrowButtons: [{ type: Input }, { type: HostBinding, args: ['class.hide-arrows',] }],
7227
7457
  leftIconClick: [{ type: Output }],
7228
7458
  rightIconClick: [{ type: Output }],
7229
- showClass: [{ type: HostBinding, args: ["class.co-input-text",] }],
7459
+ showClass: [{ type: HostBinding, args: ['class.co-input-text',] }],
7230
7460
  hasLeftIcon: [{ type: HostBinding, args: ['class.has-left-icon',] }],
7231
7461
  hasRightIcon: [{ type: HostBinding, args: ['class.has-right-icon',] }],
7232
- hasOwnLabel: [{ type: HostBinding, args: ["class.has-own-label",] }]
7462
+ hasOwnLabel: [{ type: HostBinding, args: ['class.has-own-label',] }]
7233
7463
  };
7234
7464
 
7235
- class ValidationErrorModule {
7236
- }
7237
- ValidationErrorModule.decorators = [
7238
- { type: NgModule, args: [{
7239
- imports: [
7240
- CommonModule,
7241
- IconModule
7242
- ],
7243
- declarations: [
7244
- ValidationErrorComponent
7245
- ],
7246
- exports: [
7247
- ValidationErrorComponent
7248
- ]
7249
- },] }
7250
- ];
7251
-
7252
7465
  class InputTextModule {
7253
7466
  }
7254
7467
  InputTextModule.decorators = [
@@ -7262,7 +7475,8 @@ InputTextModule.decorators = [
7262
7475
  TextBoxAllModule,
7263
7476
  NumericTextBoxModule,
7264
7477
  ValidationErrorModule,
7265
- CommitButtonsModule
7478
+ CommitButtonsModule,
7479
+ OverlayModule
7266
7480
  ],
7267
7481
  declarations: [
7268
7482
  InputTextComponent
@@ -7289,10 +7503,11 @@ InputNumberPickerModule.decorators = [
7289
7503
  ];
7290
7504
 
7291
7505
  class InputRadioButtonComponent extends BaseInputComponent {
7292
- constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
7293
- super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
7506
+ constructor(formComponent, changeDetector, overlayService, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
7507
+ super(changeDetector, componentFactoryResolver, overlayService, formUserChangeListener, ngZoneWrapper, elementRef);
7294
7508
  this.formComponent = formComponent;
7295
7509
  this.changeDetector = changeDetector;
7510
+ this.overlayService = overlayService;
7296
7511
  this.componentFactoryResolver = componentFactoryResolver;
7297
7512
  this.formUserChangeListener = formUserChangeListener;
7298
7513
  this.ngZoneWrapper = ngZoneWrapper;
@@ -7316,25 +7531,27 @@ class InputRadioButtonComponent extends BaseInputComponent {
7316
7531
  }
7317
7532
  InputRadioButtonComponent.decorators = [
7318
7533
  { type: Component, args: [{
7319
- selector: "co-input-radio-button",
7534
+ selector: 'co-input-radio-button',
7320
7535
  template: `
7321
- <div class="outer-circle" [class.selected]="model">
7322
- <div class="inner-circle" *ngIf="model" @showSelected></div>
7323
- </div>
7324
- <div class="label" *ngIf="label" [textContent]="label"></div>
7325
- <input #input [ngModel]="model" type="hidden">
7326
- `,
7327
- providers: [{
7536
+ <div class="outer-circle" [class.selected]="model">
7537
+ <div class="inner-circle" *ngIf="model" @showSelected></div>
7538
+ </div>
7539
+ <div class="label" *ngIf="label" [textContent]="label"></div>
7540
+ <input #input [ngModel]="model" type="hidden">
7541
+ `,
7542
+ providers: [
7543
+ OverlayService, {
7328
7544
  provide: SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME, useExisting: forwardRef(() => InputRadioButtonComponent)
7329
7545
  }, {
7330
7546
  provide: BaseInputComponent,
7331
7547
  useExisting: InputRadioButtonComponent
7332
- }],
7548
+ }
7549
+ ],
7333
7550
  animations: [
7334
- trigger("showSelected", [
7335
- state("void", style({ transform: "scale(0)" })),
7336
- state("*", style({ transform: "scale(1)" })),
7337
- transition("void <=> *", animate("200ms ease-in-out")),
7551
+ trigger('showSelected', [
7552
+ state('void', style({ transform: 'scale(0)' })),
7553
+ state('*', style({ transform: 'scale(1)' })),
7554
+ transition('void <=> *', animate('200ms ease-in-out')),
7338
7555
  ])
7339
7556
  ],
7340
7557
  encapsulation: ViewEncapsulation.None
@@ -7343,15 +7560,16 @@ InputRadioButtonComponent.decorators = [
7343
7560
  InputRadioButtonComponent.ctorParameters = () => [
7344
7561
  { type: FormComponent, decorators: [{ type: Optional }] },
7345
7562
  { type: ChangeDetectorRef },
7563
+ { type: OverlayService },
7346
7564
  { type: ComponentFactoryResolver },
7347
7565
  { type: FormInputUserModelChangeListenerService },
7348
7566
  { type: NgZoneWrapperService },
7349
7567
  { type: ElementRef }
7350
7568
  ];
7351
7569
  InputRadioButtonComponent.propDecorators = {
7352
- isModelSelected: [{ type: HostBinding, args: ["class.selected",] }],
7353
- showClass: [{ type: HostBinding, args: ["class.co-radio-button",] }],
7354
- handleClick: [{ type: HostListener, args: ["click", ["$event"],] }]
7570
+ isModelSelected: [{ type: HostBinding, args: ['class.selected',] }],
7571
+ showClass: [{ type: HostBinding, args: ['class.co-radio-button',] }],
7572
+ handleClick: [{ type: HostListener, args: ['click', ['$event'],] }]
7355
7573
  };
7356
7574
 
7357
7575
  class InputRadioButtonModule {
@@ -7413,6 +7631,9 @@ InputSearchComponent.decorators = [
7413
7631
  (rightIconClick)="rightIconClick.emit($event)"
7414
7632
  ></co-input-text>
7415
7633
  `,
7634
+ providers: [
7635
+ OverlayService
7636
+ ],
7416
7637
  changeDetection: ChangeDetectionStrategy.OnPush,
7417
7638
  encapsulation: ViewEncapsulation.None
7418
7639
  },] }
@@ -7452,15 +7673,16 @@ InputSearchModule.decorators = [
7452
7673
  ];
7453
7674
 
7454
7675
  class InputTextareaComponent extends BaseInputComponent {
7455
- constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
7456
- super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
7676
+ constructor(formComponent, changeDetector, overlayService, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
7677
+ super(changeDetector, componentFactoryResolver, overlayService, formUserChangeListener, ngZoneWrapper, elementRef);
7457
7678
  this.formComponent = formComponent;
7458
7679
  this.changeDetector = changeDetector;
7680
+ this.overlayService = overlayService;
7459
7681
  this.componentFactoryResolver = componentFactoryResolver;
7460
7682
  this.formUserChangeListener = formUserChangeListener;
7461
7683
  this.ngZoneWrapper = ngZoneWrapper;
7462
7684
  this.elementRef = elementRef;
7463
- this.placeholder = "";
7685
+ this.placeholder = '';
7464
7686
  this.hasOwnLabel = true;
7465
7687
  super._markAsOnPush();
7466
7688
  }
@@ -7470,40 +7692,42 @@ class InputTextareaComponent extends BaseInputComponent {
7470
7692
  }
7471
7693
  InputTextareaComponent.decorators = [
7472
7694
  { type: Component, args: [{
7473
- selector: "co-input-textarea",
7695
+ selector: 'co-input-textarea',
7474
7696
  template: `
7475
- <label [textContent]="placeholder"></label>
7476
- <textarea
7477
- #input
7478
- type="textarea"
7479
- [ngModel]="model"
7480
- [readonly]="readonly"
7481
- [required]="required"
7482
- (ngModelChange)="modelChange.emit($event)"
7483
- ></textarea>
7484
- <co-commit-buttons *ngIf="showSaveCancel && focused && canSaveOrCancel"
7485
- [committing]="committing"
7486
- [commitFinished]="commitFinished"
7487
- (commitClick)="commitClick($event)"
7488
- (cancelClick)="cancelClick($event)"
7489
- >
7490
- </co-commit-buttons>
7491
- <div class="required-indicator"></div>
7492
- <ng-template #validationError></ng-template>
7493
- `,
7494
- providers: [{
7697
+ <label [textContent]="placeholder"></label>
7698
+ <textarea
7699
+ #input
7700
+ type="textarea"
7701
+ [ngModel]="model"
7702
+ [readonly]="readonly"
7703
+ [required]="required"
7704
+ (ngModelChange)="modelChange.emit($event)"
7705
+ ></textarea>
7706
+ <co-commit-buttons *ngIf="showSaveCancel && focused && canSaveOrCancel"
7707
+ [committing]="committing"
7708
+ [commitFinished]="commitFinished"
7709
+ (commitClick)="commitClick($event)"
7710
+ (cancelClick)="cancelClick($event)"
7711
+ >
7712
+ </co-commit-buttons>
7713
+ <div class="required-indicator"></div>
7714
+ `,
7715
+ providers: [
7716
+ OverlayService, {
7495
7717
  provide: SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME,
7496
7718
  useExisting: forwardRef(() => InputTextareaComponent)
7497
7719
  }, {
7498
7720
  provide: BaseInputComponent,
7499
7721
  useExisting: InputTextareaComponent
7500
- }],
7722
+ }
7723
+ ],
7501
7724
  encapsulation: ViewEncapsulation.None
7502
7725
  },] }
7503
7726
  ];
7504
7727
  InputTextareaComponent.ctorParameters = () => [
7505
7728
  { type: FormComponent, decorators: [{ type: Optional }] },
7506
7729
  { type: ChangeDetectorRef },
7730
+ { type: OverlayService },
7507
7731
  { type: ComponentFactoryResolver },
7508
7732
  { type: FormInputUserModelChangeListenerService },
7509
7733
  { type: NgZoneWrapperService },
@@ -7511,8 +7735,8 @@ InputTextareaComponent.ctorParameters = () => [
7511
7735
  ];
7512
7736
  InputTextareaComponent.propDecorators = {
7513
7737
  placeholder: [{ type: Input }],
7514
- showClass: [{ type: HostBinding, args: ["class.co-input-textarea",] }],
7515
- hasOwnLabel: [{ type: HostBinding, args: ["class.has-own-label",] }]
7738
+ showClass: [{ type: HostBinding, args: ['class.co-input-textarea',] }],
7739
+ hasOwnLabel: [{ type: HostBinding, args: ['class.has-own-label',] }]
7516
7740
  };
7517
7741
 
7518
7742
  class InputTextareaModule {
@@ -7535,10 +7759,11 @@ InputTextareaModule.decorators = [
7535
7759
  ];
7536
7760
 
7537
7761
  class MultiSelectListComponent extends BaseInputComponent {
7538
- constructor(formComponent, changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
7539
- super(changeDetector, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef);
7762
+ constructor(formComponent, changeDetector, overlayService, componentFactoryResolver, formUserChangeListener, ngZoneWrapper, elementRef) {
7763
+ super(changeDetector, componentFactoryResolver, overlayService, formUserChangeListener, ngZoneWrapper, elementRef);
7540
7764
  this.formComponent = formComponent;
7541
7765
  this.changeDetector = changeDetector;
7766
+ this.overlayService = overlayService;
7542
7767
  this.componentFactoryResolver = componentFactoryResolver;
7543
7768
  this.formUserChangeListener = formUserChangeListener;
7544
7769
  this.ngZoneWrapper = ngZoneWrapper;
@@ -7549,12 +7774,12 @@ class MultiSelectListComponent extends BaseInputComponent {
7549
7774
  */
7550
7775
  this.fields = {};
7551
7776
  this.showSelectAll = true;
7552
- this.mode = "Default";
7777
+ this.mode = 'Default';
7553
7778
  super._markAsOnPush();
7554
7779
  }
7555
7780
  set showCheckbox(value) {
7556
7781
  if (value) {
7557
- this.mode = "CheckBox";
7782
+ this.mode = 'CheckBox';
7558
7783
  }
7559
7784
  }
7560
7785
  showClass() {
@@ -7571,29 +7796,29 @@ class MultiSelectListComponent extends BaseInputComponent {
7571
7796
  }
7572
7797
  MultiSelectListComponent.decorators = [
7573
7798
  { type: Component, args: [{
7574
- selector: "co-multi-select-list",
7799
+ selector: 'co-multi-select-list',
7575
7800
  template: `
7576
- <ejs-multiselect
7577
- [dataSource]="collection"
7578
- [placeholder]="placeholder"
7579
- [value]="model"
7580
- [mode]="mode"
7581
- [fields]="fields"
7582
- [readonly]="readonly"
7583
- [itemTemplate]="itemTemplate"
7584
- [headerTemplate]="headerTemplate"
7585
- [valueTemplate]="valueTemplate"
7586
- [footerTemplate]="footerTemplate"
7587
- [selectAllText]="'Select All'"
7588
- [showSelectAll]=showSelectAll
7589
- [ngModel]="model"
7590
- (ngModelChange)="handleModelChange($event)"
7591
- (valueChange)="handleModelChange($event)"
7592
- ></ejs-multiselect>
7593
- <div class="required-indicator"></div>
7594
- <ng-template #validationError></ng-template>
7595
- `,
7801
+ <ejs-multiselect
7802
+ [dataSource]="collection"
7803
+ [placeholder]="placeholder"
7804
+ [value]="model"
7805
+ [mode]="mode"
7806
+ [fields]="fields"
7807
+ [readonly]="readonly"
7808
+ [itemTemplate]="itemTemplate"
7809
+ [headerTemplate]="headerTemplate"
7810
+ [valueTemplate]="valueTemplate"
7811
+ [footerTemplate]="footerTemplate"
7812
+ [selectAllText]="'Select All'"
7813
+ [showSelectAll]=showSelectAll
7814
+ [ngModel]="model"
7815
+ (ngModelChange)="handleModelChange($event)"
7816
+ (valueChange)="handleModelChange($event)"
7817
+ ></ejs-multiselect>
7818
+ <div class="required-indicator"></div>
7819
+ `,
7596
7820
  providers: [
7821
+ OverlayService,
7597
7822
  CheckBoxSelectionService,
7598
7823
  {
7599
7824
  provide: SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME,
@@ -7609,6 +7834,7 @@ MultiSelectListComponent.decorators = [
7609
7834
  MultiSelectListComponent.ctorParameters = () => [
7610
7835
  { type: FormComponent, decorators: [{ type: Optional }] },
7611
7836
  { type: ChangeDetectorRef },
7837
+ { type: OverlayService },
7612
7838
  { type: ComponentFactoryResolver },
7613
7839
  { type: FormInputUserModelChangeListenerService },
7614
7840
  { type: NgZoneWrapperService },
@@ -7624,7 +7850,7 @@ MultiSelectListComponent.propDecorators = {
7624
7850
  footerTemplate: [{ type: Input }],
7625
7851
  showSelectAll: [{ type: Input }],
7626
7852
  showCheckbox: [{ type: Input }],
7627
- showClass: [{ type: HostBinding, args: ["class.co-multi-select-list",] }]
7853
+ showClass: [{ type: HostBinding, args: ['class.co-multi-select-list',] }]
7628
7854
  };
7629
7855
 
7630
7856
  class MultiSelectListModule {
@@ -10981,105 +11207,6 @@ ClickoutsideModule.decorators = [
10981
11207
  },] }
10982
11208
  ];
10983
11209
 
10984
- class OverlayDirective {
10985
- constructor(elementRef) {
10986
- this._elementRef = elementRef;
10987
- }
10988
- set parent(value) {
10989
- if (value && value.elementRef) {
10990
- this._parent = value.elementRef;
10991
- }
10992
- else {
10993
- if (this._parent) {
10994
- this._observer.disconnect();
10995
- }
10996
- }
10997
- }
10998
- ngOnDestroy() {
10999
- window.removeEventListener("scroll", (event) => this._handleScroll);
11000
- this._observer.disconnect();
11001
- this._elementRef = undefined;
11002
- this._parent = undefined;
11003
- }
11004
- ngOnInit() {
11005
- window.addEventListener("scroll", (event) => this._handleScroll);
11006
- this._initiallyPlaceElement();
11007
- this._observer = new ResizeObserver((entries) => {
11008
- const entry = entries[0];
11009
- const elementRect = this._elementRef.nativeElement.getBoundingClientRect();
11010
- const parentRect = this._parent.nativeElement.getBoundingClientRect();
11011
- this._placeElement(entry.contentRect.bottom, entry.contentRect.right, parentRect, elementRect);
11012
- });
11013
- this._observer.observe(document.body);
11014
- }
11015
- _initiallyPlaceElement() {
11016
- const elementRect = this._elementRef.nativeElement.getBoundingClientRect();
11017
- const parentRect = this._parent.nativeElement.getBoundingClientRect();
11018
- this._placeElement(window.innerHeight, window.innerWidth, parentRect, elementRect);
11019
- }
11020
- _placeElement(bottom, right, parentRect, elementRect) {
11021
- if (bottom < parentRect.bottom + elementRect.height) { // make sure it fits at the bottom
11022
- this._elementRef.nativeElement.style.top = (parentRect.top - elementRect.height) + "px";
11023
- }
11024
- else {
11025
- this._elementRef.nativeElement.style.top = parentRect.bottom + "px";
11026
- }
11027
- if (right < parentRect.left + elementRect.width) { // make sure it fits at the right
11028
- this._elementRef.nativeElement.style.left = (parentRect.right - elementRect.width) + "px";
11029
- }
11030
- else {
11031
- this._elementRef.nativeElement.style.left = parentRect.left + "px";
11032
- }
11033
- }
11034
- _handleScroll(event) {
11035
- console.log("scroll");
11036
- }
11037
- }
11038
- OverlayDirective.decorators = [
11039
- { type: Directive, args: [{
11040
- selector: "[overlay]"
11041
- },] }
11042
- ];
11043
- OverlayDirective.ctorParameters = () => [
11044
- { type: ElementRef }
11045
- ];
11046
- OverlayDirective.propDecorators = {
11047
- parent: [{ type: Input, args: ["overlay",] }]
11048
- };
11049
-
11050
- class OverlayParentDirective {
11051
- constructor(elementRef) {
11052
- this.elementRef = elementRef;
11053
- }
11054
- ngOnDestroy() {
11055
- this.elementRef = undefined;
11056
- }
11057
- }
11058
- OverlayParentDirective.decorators = [
11059
- { type: Directive, args: [{
11060
- selector: '[overlayParent]',
11061
- exportAs: 'overlayParent'
11062
- },] }
11063
- ];
11064
- OverlayParentDirective.ctorParameters = () => [
11065
- { type: ElementRef }
11066
- ];
11067
-
11068
- class OverlayModule {
11069
- }
11070
- OverlayModule.decorators = [
11071
- { type: NgModule, args: [{
11072
- declarations: [
11073
- OverlayDirective,
11074
- OverlayParentDirective
11075
- ],
11076
- exports: [
11077
- OverlayDirective,
11078
- OverlayParentDirective
11079
- ]
11080
- },] }
11081
- ];
11082
-
11083
11210
  class TooltipComponent {
11084
11211
  constructor(_elementRef, _changeDetector) {
11085
11212
  this._elementRef = _elementRef;
@@ -11467,27 +11594,6 @@ ScreenConfigurationModule.decorators = [
11467
11594
  },] }
11468
11595
  ];
11469
11596
 
11470
- class ColorSequenceService {
11471
- constructor() {
11472
- this.colors = new Map();
11473
- }
11474
- getRandomColor(id) {
11475
- if (this.colors.has(id)) {
11476
- return this.colors.get(id);
11477
- }
11478
- const randomColor = Math.floor(Math.random() * 16777215).toString(16);
11479
- const result = '#' + randomColor;
11480
- this.colors.set(id, result);
11481
- return result;
11482
- }
11483
- }
11484
- ColorSequenceService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ColorSequenceService_Factory() { return new ColorSequenceService(); }, token: ColorSequenceService, providedIn: "root" });
11485
- ColorSequenceService.decorators = [
11486
- { type: Injectable, args: [{
11487
- providedIn: 'root'
11488
- },] }
11489
- ];
11490
-
11491
11597
  class FilterItemViewmodel {
11492
11598
  constructor(code, description, checked, count, valueName) {
11493
11599
  this.checked = false;
@@ -11509,6 +11615,27 @@ class FilterViewmodel {
11509
11615
  }
11510
11616
  }
11511
11617
 
11618
+ class ColorSequenceService {
11619
+ constructor() {
11620
+ this.colors = new Map();
11621
+ }
11622
+ getRandomColor(id) {
11623
+ if (this.colors.has(id)) {
11624
+ return this.colors.get(id);
11625
+ }
11626
+ const randomColor = Math.floor(Math.random() * 16777215).toString(16);
11627
+ const result = '#' + randomColor;
11628
+ this.colors.set(id, result);
11629
+ return result;
11630
+ }
11631
+ }
11632
+ ColorSequenceService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ColorSequenceService_Factory() { return new ColorSequenceService(); }, token: ColorSequenceService, providedIn: "root" });
11633
+ ColorSequenceService.decorators = [
11634
+ { type: Injectable, args: [{
11635
+ providedIn: 'root'
11636
+ },] }
11637
+ ];
11638
+
11512
11639
  /*
11513
11640
  * Public API Surface of corecomponents
11514
11641
  */
@@ -11517,5 +11644,5 @@ class FilterViewmodel {
11517
11644
  * Generated bundle index. Do not edit.
11518
11645
  */
11519
11646
 
11520
- export { ArticleTileComponent, ArticleTileModule, ButtonComponent, ButtonDropDownComponent, ButtonDropDownModule, ButtonModule, CardComponent, CardModule, Carousel3dComponent, Carousel3dModule, CarouselComponent, CarouselHammerConfig, CarouselModule, CheckmarkOverlayModule, ClickoutsideModule, CoDialogComponent, CoDialogModule, CoDialogWizardComponent, CoDialogWizardModule, CoDirection, CoGridComponent, CoGridModule, CoKanbanComponent, CoKanbanModule, CoOrientation, CoPivotComponent, CoPivotModule, CoScheduleComponent, CoScheduleModule, CoSidebarComponent, CoSidebarModule, CoToggleComponent, CoToggleModule, CollapsibleComponent, CollapsibleModule, ColorSequenceService, ColumnAlign, ContentViewMode, CoreComponentsIcon, DropDownListComponent, DropDownModule, FilterItemComponent, FilterItemModule, FilterItemViewmodel, FilterPipe, FilterPipeModule, FilterViewmodel, FormComponent, FormMasterService, FormModule, GridToolbarButtonComponent, GridToolbarButtonModule, GridToolbarComponent, GridToolbarModule, IconCacheService, IconCollapseHandleComponent, IconCollapseHandleModule, IconComponent, IconModule, ImageComponent, ImageModule, InputCheckboxComponent, InputCheckboxModule, InputCheckboxMultiSelectComponent, InputCheckboxMultiSelectModule, InputComboBoxComponent, InputComboBoxModule, InputDatePickerComponent, InputDatePickerModule, InputDateRangePickerComponent, InputDateRangePickerModule, InputListboxComponent, InputListboxModule, InputNumberPickerComponent, InputNumberPickerModule, InputRadioButtonComponent, InputRadioButtonModule, InputSearchComponent, InputSearchModule, InputTextComponent, InputTextModule, InputTextareaComponent, InputTextareaModule, LevelIndicatorComponent, LevelIndicatorModule, MultiSelectListComponent, MultiSelectListModule, ObserveVisibilityModule, OrientationOfDirection, OverlayModule, PaginationBarComponent, PaginationBarModule, PaginationComponent, PaginationModule, PopupButtonsComponent, PopupMessageDisplayComponent, PopupModule, PopupWindowShellComponent, PriceDisplayPipe, PriceDisplayPipeModule, PromptService, SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME, ScreenConfigurationModule, SimpleGridColumnDirective, SimpleGridComponent, SimpleGridModule, TextInputPopupComponent, TileComponent, TileModule, TooltipDirectiveModule, ViewModeButtonsComponent, ViewModeButtonsModule, showHideDialogAnimation, RippleModule as ɵa, MD_RIPPLE_GLOBAL_OPTIONS as ɵb, PaginationService as ɵba, PaginatePipe as ɵbb, SimpleGridCellComponent as ɵbc, PrependPipeModule as ɵbd, PrependPipe as ɵbe, ClickOutsideDirective as ɵbf, ClickOutsideMasterService as ɵbg, OverlayDirective as ɵbh, OverlayParentDirective as ɵbi, TooltipModule as ɵbj, TooltipComponent as ɵbk, TooltipDirective as ɵbl, CheckmarkOverlayComponent as ɵbm, ScreenConfigurationDirective as ɵbn, ScreenConfigComponentWrapper as ɵbo, CoRippleDirective as ɵc, CoViewportRulerService as ɵd, CoScrollDispatcherService as ɵe, CoScrollableDirective as ɵf, StopClickModule as ɵg, StopClickDirective as ɵh, InputBoolean as ɵi, BaseModule as ɵj, FormInputUserModelChangeListenerService as ɵk, NgZoneWrapperService as ɵl, BaseInputComponent as ɵm, BaseSelectionGridComponent as ɵn, BaseInlineEditGridComponent as ɵo, BaseToolbarGridComponent as ɵp, BaseGridComponent as ɵq, AppendPipeModule as ɵr, AppendPipe as ɵs, CommitButtonsModule as ɵt, CommitButtonsComponent as ɵu, ValidationErrorModule as ɵv, ValidationErrorComponent as ɵw, PopupShowerService as ɵx, BaseSimpleGridComponent as ɵy, ObserveVisibilityDirective as ɵz };
11647
+ export { ArticleTileComponent, ArticleTileModule, ButtonComponent, ButtonDropDownComponent, ButtonDropDownModule, ButtonModule, CardComponent, CardModule, Carousel3dComponent, Carousel3dModule, CarouselComponent, CarouselHammerConfig, CarouselModule, CheckmarkOverlayModule, ClickoutsideModule, CoDialogComponent, CoDialogModule, CoDialogWizardComponent, CoDialogWizardModule, CoDirection, CoGridComponent, CoGridModule, CoKanbanComponent, CoKanbanModule, CoOrientation, CoPivotComponent, CoPivotModule, CoScheduleComponent, CoScheduleModule, CoSidebarComponent, CoSidebarModule, CoToggleComponent, CoToggleModule, CollapsibleComponent, CollapsibleModule, ColorSequenceService, ColumnAlign, ContentViewMode, CoreComponentsIcon, DropDownListComponent, DropDownModule, FilterItemComponent, FilterItemModule, FilterItemViewmodel, FilterPipe, FilterPipeModule, FilterViewmodel, FormComponent, FormMasterService, FormModule, GridToolbarButtonComponent, GridToolbarButtonModule, GridToolbarComponent, GridToolbarModule, IconCacheService, IconCollapseHandleComponent, IconCollapseHandleModule, IconComponent, IconModule, ImageComponent, ImageModule, InputCheckboxComponent, InputCheckboxModule, InputCheckboxMultiSelectComponent, InputCheckboxMultiSelectModule, InputComboBoxComponent, InputComboBoxModule, InputDatePickerComponent, InputDatePickerModule, InputDateRangePickerComponent, InputDateRangePickerModule, InputListboxComponent, InputListboxModule, InputNumberPickerComponent, InputNumberPickerModule, InputRadioButtonComponent, InputRadioButtonModule, InputSearchComponent, InputSearchModule, InputTextComponent, InputTextModule, InputTextareaComponent, InputTextareaModule, LevelIndicatorComponent, LevelIndicatorModule, MultiSelectListComponent, MultiSelectListModule, ObserveVisibilityModule, OrientationOfDirection, OverlayModule, OverlayService, PaginationBarComponent, PaginationBarModule, PaginationComponent, PaginationModule, PopupButtonsComponent, PopupMessageDisplayComponent, PopupModule, PopupWindowShellComponent, PriceDisplayPipe, PriceDisplayPipeModule, PromptService, SCREEN_CONFIG_ADAPTER_COMPONENT_INTERFACE_NAME, ScreenConfigurationModule, SimpleGridColumnDirective, SimpleGridComponent, SimpleGridModule, TextInputPopupComponent, TileComponent, TileModule, TooltipDirectiveModule, ViewModeButtonsComponent, ViewModeButtonsModule, showHideDialogAnimation, RippleModule as ɵa, MD_RIPPLE_GLOBAL_OPTIONS as ɵb, BaseSimpleGridComponent as ɵba, ObserveVisibilityDirective as ɵbb, PaginationService as ɵbc, PaginatePipe as ɵbd, SimpleGridCellComponent as ɵbe, PrependPipeModule as ɵbf, PrependPipe as ɵbg, ClickOutsideDirective as ɵbh, ClickOutsideMasterService as ɵbi, TooltipModule as ɵbj, TooltipComponent as ɵbk, TooltipDirective as ɵbl, CheckmarkOverlayComponent as ɵbm, ScreenConfigurationDirective as ɵbn, ScreenConfigComponentWrapper as ɵbo, CoRippleDirective as ɵc, CoViewportRulerService as ɵd, CoScrollDispatcherService as ɵe, CoScrollableDirective as ɵf, StopClickModule as ɵg, StopClickDirective as ɵh, InputBoolean as ɵi, BaseModule as ɵj, FormInputUserModelChangeListenerService as ɵk, NgZoneWrapperService as ɵl, BaseInputComponent as ɵm, BaseSelectionGridComponent as ɵn, BaseInlineEditGridComponent as ɵo, BaseToolbarGridComponent as ɵp, BaseGridComponent as ɵq, AppendPipeModule as ɵr, AppendPipe as ɵs, CommitButtonsModule as ɵt, CommitButtonsComponent as ɵu, ValidationErrorModule as ɵv, OverlayDirective as ɵw, OverlayParentDirective as ɵx, ValidationErrorComponent as ɵy, PopupShowerService as ɵz };
11521
11648
  //# sourceMappingURL=colijnit-corecomponents_v12.js.map