@bnsights/bbsf-controls 1.0.47 → 1.0.50

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 (37) hide show
  1. package/README.md +15 -0
  2. package/bnsights-bbsf-controls-1.0.50.tgz +0 -0
  3. package/bnsights-bbsf-controls.d.ts +1 -0
  4. package/bnsights-bbsf-controls.metadata.json +1 -1
  5. package/bundles/bnsights-bbsf-controls.umd.js +760 -534
  6. package/bundles/bnsights-bbsf-controls.umd.js.map +1 -1
  7. package/esm2015/bnsights-bbsf-controls.js +2 -1
  8. package/esm2015/lib/Shared/Enums/TagInputView.js +7 -0
  9. package/esm2015/lib/Shared/Models/AutocompleteDTO.js +2 -1
  10. package/esm2015/lib/Shared/Models/AutocompleteOptions.js +2 -1
  11. package/esm2015/lib/Shared/Models/TagsInputDTO.js +1 -1
  12. package/esm2015/lib/Shared/Models/TagsInputOptions.js +9 -5
  13. package/esm2015/lib/Shared/components/ng-tag-input.js +307 -0
  14. package/esm2015/lib/Shared/default_intl.js +21 -0
  15. package/esm2015/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.js +3 -2
  16. package/esm2015/lib/controls/DateTimePicker/DateTimePicker.component.js +6 -1
  17. package/esm2015/lib/controls/MapAutoComplete/MapAutoComplete.component.js +36 -8
  18. package/esm2015/lib/controls/Paging/Paging.component.js +21 -16
  19. package/esm2015/lib/controls/TagsInput/TagsInput.component.js +2 -2
  20. package/esm2015/lib/controls/Toggleslide/toggleslide.component.js +2 -2
  21. package/esm2015/lib/controls/bbsf-controls.module.js +6 -4
  22. package/esm2015/public-api.js +3 -1
  23. package/fesm2015/bnsights-bbsf-controls.js +407 -37
  24. package/fesm2015/bnsights-bbsf-controls.js.map +1 -1
  25. package/lib/Shared/Enums/TagInputView.d.ts +5 -0
  26. package/lib/Shared/Models/AutocompleteDTO.d.ts +1 -0
  27. package/lib/Shared/Models/AutocompleteOptions.d.ts +1 -0
  28. package/lib/Shared/Models/TagsInputDTO.d.ts +4 -2
  29. package/lib/Shared/Models/TagsInputOptions.d.ts +3 -0
  30. package/lib/Shared/components/ng-tag-input.d.ts +45 -0
  31. package/lib/Shared/default_intl.d.ts +10 -0
  32. package/lib/controls/AutocompleteTextBox/AutocompleteTextBox.component.d.ts +1 -0
  33. package/lib/controls/MapAutoComplete/MapAutoComplete.component.d.ts +1 -0
  34. package/lib/controls/Paging/Paging.component.d.ts +5 -2
  35. package/package.json +2 -2
  36. package/public-api.d.ts +2 -0
  37. package/bnsights-bbsf-controls-1.0.47.tgz +0 -0
@@ -4,9 +4,9 @@ import timeGridPlugin from '@fullcalendar/timegrid';
4
4
  import listPlugin from '@fullcalendar/list';
5
5
  import interactionPlugin from '@fullcalendar/interaction';
6
6
  import * as i0 from '@angular/core';
7
- import { Injectable, Optional, EventEmitter, Component, Input, Output, ViewChild, NgZone, Directive, TemplateRef, ViewChildren, ComponentFactoryResolver, ViewContainerRef, Pipe, NgModule, NO_ERRORS_SCHEMA, Injector } from '@angular/core';
7
+ import { Injectable, Optional, EventEmitter, Component, Input, Output, ViewChild, NgZone, Directive, TemplateRef, ViewChildren, ComponentFactoryResolver, ViewContainerRef, Pipe, forwardRef, NgModule, NO_ERRORS_SCHEMA, Injector } from '@angular/core';
8
8
  import { BlockUIModule } from 'ng-block-ui';
9
- import { ControlContainer, Validators, FormControl, FormGroupDirective, FormGroup, ReactiveFormsModule, FormsModule } from '@angular/forms';
9
+ import { ControlContainer, Validators, FormControl, FormGroupDirective, FormGroup, NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule } from '@angular/forms';
10
10
  import { Http, HttpModule } from '@angular/http';
11
11
  import { Router, RouterModule } from '@angular/router';
12
12
  import { ToastrModule } from 'ngx-toastr';
@@ -15,10 +15,10 @@ import { OverlayModule } from '@angular/cdk/overlay';
15
15
  import { StoreDevtoolsModule } from '@ngrx/store-devtools';
16
16
  import { DatePipe, CommonModule } from '@angular/common';
17
17
  import { SearchCountryField, NgxIntlTelInputModule } from 'ngx-intl-tel-input';
18
- import { UtilityService, ControlValidationService, BBSFTranslateService, RequestOptionsModel, RequestHandlerService, BBSFUtilitiesModule } from '@bnsights/bbsf-utilities';
18
+ import { UtilityService, ControlValidationService, BBSFTranslateService, RequestOptionsModel, RequestHandlerService, environment as environment$1, BBSFUtilitiesModule } from '@bnsights/bbsf-utilities';
19
19
  import { BsDatepickerModule } from 'ngx-bootstrap/datepicker';
20
- import { Subject, Observable, noop, of } from 'rxjs';
21
- import { DateTimeAdapter, OwlDateTimeModule, OwlNativeDateTimeModule, OWL_DATE_TIME_LOCALE } from 'ng-pick-datetime';
20
+ import { Subject, Observable, noop as noop$1, of, Subscription } from 'rxjs';
21
+ import { OwlDateTimeIntl, DateTimeAdapter, OwlDateTimeModule, OwlNativeDateTimeModule, OWL_DATE_TIME_LOCALE } from 'ng-pick-datetime';
22
22
  import { FileUploader, FileLikeObject, FileUploadModule } from 'ng2-file-upload';
23
23
  import { __decorate, __awaiter } from 'tslib';
24
24
  import { Expose, plainToClass } from 'class-transformer';
@@ -390,6 +390,24 @@ OnPagingFiltersChangeService.decorators = [
390
390
  { type: Injectable, args: [{ providedIn: 'root' },] }
391
391
  ];
392
392
 
393
+ // here is the default text string - just adjust the strings to reflect your preferred language
394
+ class DefaultIntl extends OwlDateTimeIntl {
395
+ constructor(utilityService) {
396
+ super();
397
+ this.utilityService = utilityService;
398
+ /** A label for the range 'from' in picker info */
399
+ this.rangeFromLabel = this.utilityService.getResourceValue("From");
400
+ /** A label for the range 'to' in picker info */
401
+ this.rangeToLabel = this.utilityService.getResourceValue("To");
402
+ }
403
+ }
404
+ DefaultIntl.decorators = [
405
+ { type: Injectable }
406
+ ];
407
+ DefaultIntl.ctorParameters = () => [
408
+ { type: UtilityService }
409
+ ];
410
+
393
411
  class DateInputComponent {
394
412
  // tslint:disable-next-line: max-line-length
395
413
  constructor(datepipe, onChangeService, ErrorHandler, controlUtility, controlContainer, DateInputControlHost, UtilityService, translate, controlValidationService, dateTimeAdapter) {
@@ -565,6 +583,9 @@ DateInputComponent.decorators = [
565
583
  { type: Component, args: [{
566
584
  selector: 'BBSF-DateTimePicker',
567
585
  template: "<div class=\"b-control b-date-picker\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <div class=\"input-group\">\r\n <input autocomplete=\"off\" (dateTimeChange)=\"onDateSelect($event)\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}} \"\r\n [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n formControlName=\"{{options.Name}}\" [owlDateTime]=\"dt1\" [owlDateTimeTrigger]=\"dt1\"\r\n [class.is-invalid]=\"DatePickerFormControl.invalid && DatePickerFormControl.touched\"\r\n [min]=\"options.StartDate\" [max]=\"options.EndDate\" [hour12Timer]=\"options.Hour12Timer\" [selectMode]=\"getSelectMode(options.SelectMode)\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" #Dateinput>\r\n\r\n <owl-date-time [pickerType]=\"getPickerType(options.PickerType)\"\r\n [startView]=\"getStartView(options.StartView)\" [firstDayOfWeek]=\"options.FirstDayOfWeek\"\r\n [hour12Timer]=\"options.Hour12Timer\" #dt1></owl-date-time>\r\n \r\n <div class=\"input-group-append\">\r\n <span class=\"input-group-text\" [owlDateTimeTrigger]=\"dt1\">\r\n <span class=\"svg-icon\">\r\n <svg id=\"Group_356\" data-name=\"Group 356\" xmlns=\"http://www.w3.org/2000/svg\" width=\"15\" height=\"15\" viewBox=\"0 0 48 48\">\r\n <path id=\"Path_6737\" data-name=\"Path 6737\" d=\"M11.583,1a1,1,0,0,0-2,0V5.7h2Z\" style=\"\"></path>\r\n <path id=\"Path_6738\" data-name=\"Path 6738\" d=\"M38.417,1a1,1,0,0,0-2,0V5.7h2Z\"></path>\r\n <path id=\"Path_6739\" data-name=\"Path 6739\" d=\"M0,43.146C0,45.822,1.826,48,4.07,48H43.928C46.174,48,48,45.822,48,43.146V17.121H0Z\" fill=\"#d5d5d5\"></path>\r\n <path id=\"Path_6740\" data-name=\"Path 6740\" d=\"M43.929,5.7H38.417v5.512a1,1,0,1,1-2,0V5.7H11.583v5.512a1,1,0,1,1-2,0V5.7H4.07C1.826,5.7,0,7.877,0,10.555v4.566H48V10.555C48,7.877,46.174,5.7,43.929,5.7Z\" fill=\"#595959\"></path>\r\n </svg>\r\n </span>\r\n </span>\r\n <!--<span class=\"input-group-text\" *ngIf=\"options.EnableCopyToClipboard\"\r\n (click)=\"copyInputMessage(Dateinput)\">\r\n <i class=\"fas fa-copy\"></i>\r\n </span>-->\r\n </div>\r\n </div>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(DatePickerFormControl.invalid && DatePickerFormControl.touched)\">\r\n {{getErrorValidation(DatePickerFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"control-desc\"*ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n \r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n</div>\r\n",
586
+ providers: [
587
+ { provide: OwlDateTimeIntl, useClass: DefaultIntl }
588
+ ],
568
589
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}\n"]
569
590
  },] }
570
591
  ];
@@ -2419,7 +2440,7 @@ ToggleslideComponent.controlContainerstatic = null;
2419
2440
  ToggleslideComponent.decorators = [
2420
2441
  { type: Component, args: [{
2421
2442
  selector: 'BBSF-Toggleslide',
2422
- template: "<div class=\"b-control b-toggle-slide\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n </label>\r\n <mat-slide-toggle [(ngModel)]=\"SlideValue\" dir=\"{{options.ForceDirection==2?'rtl':''}}\" [cssClass]=\"(options.ViewType==1)?'':'col-md-9'\"\r\n formControlName=\"{{options.Name}}\" disableRipple=\"true\" disabled=\"{{options.IsDisabled}}\" (change)=\"changeValueToggle()\">\r\n </mat-slide-toggle>\r\n \r\n </div>\r\n</div>\r\n",
2443
+ template: "<div class=\"b-control b-toggle-slide\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n </label>\r\n <mat-slide-toggle [(ngModel)]=\"SlideValue\" dir=\"{{options.ForceDirection==2?'rtl':''}}\" [cssClass]=\"(options.ViewType==1)?'':'col-md-9'\"\r\n formControlName=\"{{options.Name}}\" disableRipple=\"true\" disabled=\"{{options.IsDisabled}}\" (change)=\"changeValueToggle()\">\r\n </mat-slide-toggle>\r\n <div class=\"control-desc\" *ngIf=\"options.LabelDescription!=null\">{{options.LabelDescription}}</div>\r\n </div>\r\n</div>\r\n",
2423
2444
  styles: [".mat-slide-toggle{padding-left:10px}.mat-slide-toggle.mat-checked .mat-slide-toggle-bar{background-color:#e3f4fe}.mat-slide-toggle-thumb-container{width:25px;height:25px;top:1px;left:-2px}.mat-slide-toggle.mat-checked .mat-slide-toggle-thumb{background-color:#009ef7}.mat-slide-toggle-thumb{height:25px;width:25px;border-radius:50%}.mat-slide-toggle.mat-checked .mat-ripple-element{background-color:#009ef7}.mat-slide-toggle-bar{width:55px;height:30px;border-radius:3.25rem}\n"]
2424
2445
  },] }
2425
2446
  ];
@@ -3703,6 +3724,7 @@ class AutocompleteDTO {
3703
3724
  constructor() {
3704
3725
  this.key = "";
3705
3726
  this.value = "";
3727
+ this.image = "";
3706
3728
  }
3707
3729
  }
3708
3730
 
@@ -3730,6 +3752,7 @@ class AutocompleteTextBoxComponent {
3730
3752
  this.validationRulesasync = [];
3731
3753
  this.dataList = [];
3732
3754
  this.SelectedValue = "";
3755
+ this.avatarImage = "./src/assets/images/userimg.png";
3733
3756
  this.resetError = () => {
3734
3757
  this.controlValidationService.RemoveGlobalError();
3735
3758
  };
@@ -3840,7 +3863,7 @@ class AutocompleteTextBoxComponent {
3840
3863
  requestOptionsModel.disableSuccessNotification = true;
3841
3864
  // using github public api to get users by name
3842
3865
  return this.requestHandlerService.get(this.options.ActionURL, params, null, requestOptionsModel)
3843
- .pipe(map((data) => data || []), tap(() => noop, err => {
3866
+ .pipe(map((data) => data || []), tap(() => noop$1, err => {
3844
3867
  // in case of http error
3845
3868
  this.errorMessage = err && err.message || 'Something goes wrong';
3846
3869
  }));
@@ -3920,7 +3943,7 @@ AutocompleteTextBoxComponent.decorators = [
3920
3943
  { type: Component, args: [{
3921
3944
  // tslint:disable-next-line: component-selector
3922
3945
  selector: 'BBSF-AutocompleteTextBox',
3923
- template: "<div class=\"b-control b-auto-complete-textbox\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\r\n\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n\r\n <!-- <input \r\n[(ngModel)]=\"Search\"\r\n value=\"{{Search}}\" \r\n autocomplete=\"off\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\"\r\n typeaheadOptionField=\"{{Value}}\"\r\n [typeahead]=\"suggestions$\"\r\n [typeaheadAsync]=\"true\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" (typeaheadOnSelect)=\"handleResultSelected($event)\" (blur)=\"onBlur($event.target.value)\" /> -->\r\n <!-- \r\n <input ngxTypeahead autocomplete=\"off\"\r\n value=\"{{Search}}\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" [taUrl]=\"options.ActionURL\"\r\n [taParams]=\"options.Params\" taQueryParam=\"{{QueryParam}}\" taApi=\"{{Api}}\" taListItemLabel=\"{{Value}}\" (taSelected)=\"handleResultSelected($event)\"> -->\r\n\r\n\r\n\r\n <ng-autocomplete *ngIf=\"!options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"itemTemplate\"\r\n [notFoundTemplate]=\"notFoundTemplate\" class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" formControlName=\"{{options.Name}}\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-autocomplete *ngIf=\"options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"itemTemplate\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}}\" dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n formControlName=\"{{options.Name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n\r\n\r\n <ng-template #itemTemplate let-item>\r\n <a [innerHTML]=\"item.value\"></a>\r\n </ng-template>\r\n\r\n <ng-template #notFoundTemplate let-notFound>\r\n <div [innerHTML]=\"notFound\"></div>\r\n </ng-template>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched)\">\r\n {{getErrorValidation(AutocompleteTextBoxControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">{{options.LabelDescription}}</div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n\r\n </div>\r\n </div>\r\n</div>",
3946
+ template: "<div class=\"b-control b-auto-complete-textbox\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\r\n\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n\r\n <!-- <input \r\n[(ngModel)]=\"Search\"\r\n value=\"{{Search}}\" \r\n autocomplete=\"off\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\"\r\n typeaheadOptionField=\"{{Value}}\"\r\n [typeahead]=\"suggestions$\"\r\n [typeaheadAsync]=\"true\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" (typeaheadOnSelect)=\"handleResultSelected($event)\" (blur)=\"onBlur($event.target.value)\" /> -->\r\n <!-- \r\n <input ngxTypeahead autocomplete=\"off\"\r\n value=\"{{Search}}\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"{{options.Name}}\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\" [taUrl]=\"options.ActionURL\"\r\n [taParams]=\"options.Params\" taQueryParam=\"{{QueryParam}}\" taApi=\"{{Api}}\" taListItemLabel=\"{{Value}}\" (taSelected)=\"handleResultSelected($event)\"> -->\r\n\r\n\r\n\r\n <ng-autocomplete *ngIf=\"!options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"itemTemplate\"\r\n [notFoundTemplate]=\"notFoundTemplate\" class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" formControlName=\"{{options.Name}}\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n <ng-autocomplete *ngIf=\"options.AllowNewSelection\" [data]=\"dataList\" [initialValue]=\"SelectedValue\"\r\n [searchKeyword]=\"keyword\" placeholder=\"{{options.Placeholder}}\" (selected)='selectEvent($event)'\r\n (inputChanged)='onChangeSearch($event)' historyIdentifier=\"dataList\" [itemTemplate]=\"itemTemplate\"\r\n class=\"form-control bnsights-control {{options.ExtraClasses}}\" dir=\"{{options.ForceDirection==2?'rtl':''}}\"\r\n formControlName=\"{{options.Name}}\" aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n [class.is-invalid]=\"AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched\">\r\n </ng-autocomplete>\r\n\r\n\r\n\r\n <ng-template #itemTemplate let-item>\r\n <img *ngIf=\"options.ItemWithImage\" style=\"border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;\" src=\"{{(item.image?item.image:avatarImage)}}\" />\r\n <a [innerHTML]=\"item.value\"></a>\r\n </ng-template>\r\n\r\n <ng-template #notFoundTemplate let-notFound>\r\n <div [innerHTML]=\"notFound\"></div>\r\n </ng-template>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(AutocompleteTextBoxControl.invalid && AutocompleteTextBoxControl.touched)\">\r\n {{getErrorValidation(AutocompleteTextBoxControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">{{options.LabelDescription}}</div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n",
3924
3947
  styles: [""]
3925
3948
  },] }
3926
3949
  ];
@@ -4122,7 +4145,7 @@ TagsInputComponent.decorators = [
4122
4145
  { type: Component, args: [{
4123
4146
  // tslint:disable-next-line: component-selector
4124
4147
  selector: 'BBSF-TagsInput',
4125
- template: "<div class=\"b-control b-tags-input\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n <div class=\"form-group row\" [formGroup]=\"TagsFormGroup\">\r\n\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <ngx-tags-input id=\"typeahead-http\" type=\"text\" class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" [disabled]=\"options.IsDisabled\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\" formControlName=\"tags\"\r\n [class.is-invalid]=\"TagsFormControl.invalid && TagsFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\"\r\n (onTagsChanged)=\"onTagsChanged($event)\" [(ngModel)]=\"tags\" removeLastOnBackspace=\"{{options.RemoveLastOnBackspace}}\" (onNoOptionsMatch)=\"onNoOptionsMatch($event)\" [options]=\"searchFunctionFactory(SearchKey.selected)\" #SearchKey scrollableOptions=\"{{options.ScrollableOptions}}\" scrollableOptionsInView=\"{{options.MaxSearchResultsCount}}\" (keypress)=\"AddTag($event.key,SearchKey)\" maxTags=\"{{options.MaxNumberTags}}\" minLengthBeforeOptions=\"{{options.MinSearchLength}}\" displayField=\"{{options.DatasourceItemText}}\" name=\"tags\">\r\n </ngx-tags-input>\r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(TagsFormControl.invalid && TagsFormControl.touched)\">\r\n {{getErrorValidation(TagsFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n \r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">{{options.LabelDescription}}</div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n",
4148
+ template: "<div class=\"b-control b-tags-input\">\r\n <div class=\"form-group validate is-invalid\" [formGroup]=\"group\">\r\n <div class=\"form-group row\" [formGroup]=\"TagsFormGroup\">\r\n\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\"\r\n [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\"\r\n aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <b-tags-input id=\"typeahead-http\" type=\"text\" class=\"form-control bnsights-control {{options.ExtraClasses}}\"\r\n dir=\"{{options.ForceDirection==2?'rtl':''}}\" [disabled]=\"options.IsDisabled\" aria-describedby=\"email-error\"\r\n aria-invalid=\"true\" formControlName=\"tags\"\r\n [class.is-invalid]=\"TagsFormControl.invalid && TagsFormControl.touched\" placeholder=\"{{options.Placeholder}}\"\r\n id=\"{{options.Name}}\" (onTagsChanged)=\"onTagsChanged($event)\" [(ngModel)]=\"tags\"\r\n removeLastOnBackspace=\"{{options.RemoveLastOnBackspace}}\" (onNoOptionsMatch)=\"onNoOptionsMatch($event)\"\r\n [options]=\"searchFunctionFactory(SearchKey.selected)\" #SearchKey\r\n scrollableOptions=\"{{options.ScrollableOptions}}\" scrollableOptionsInView=\"{{options.MaxSearchResultsCount}}\"\r\n (keypress)=\"AddTag($event.key,SearchKey)\" [ViewMode]=\"options.TagInputMode\"\r\n maxTags=\"{{options.MaxNumberTags}}\" minLengthBeforeOptions=\"{{options.MinSearchLength}}\"\r\n [showDescription]=\"options.ShowDescription\" [defaultImageURL]=\"options.DefaultImgUrl\" name=\"tags\">\r\n </b-tags-input>\r\n\r\n <div class=\"text-danger Required-text\" *ngIf=\"(TagsFormControl.invalid && TagsFormControl.touched)\">\r\n {{getErrorValidation(TagsFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">{{options.LabelDescription}}</div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">\r\n {{resetError()}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n",
4126
4149
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}.flip_V{transform:scaleY(-1)}\n"]
4127
4150
  },] }
4128
4151
  ];
@@ -4191,6 +4214,7 @@ class PagingComponent {
4191
4214
  this.direction = '';
4192
4215
  this.IsFirstCall = true;
4193
4216
  this.Items = new EventEmitter();
4217
+ this.subscriptions = new Subscription();
4194
4218
  this.ReinitializePaging = () => {
4195
4219
  this.IsFirstCall = true;
4196
4220
  this.getItemList(1, true);
@@ -4200,30 +4224,33 @@ class PagingComponent {
4200
4224
  this.getItemList(this.CurrentPage);
4201
4225
  };
4202
4226
  }
4227
+ ngOnDestroy() {
4228
+ this.subscriptions.unsubscribe();
4229
+ }
4203
4230
  ngOnInit() {
4204
4231
  if (this.options.IsLoadMoreControl)
4205
4232
  this.Sum = this.options.PageSize;
4206
4233
  if (this.options.DropdownFiltersControlNames != null && this.options.DropdownFiltersControlNames.length > 0) {
4207
4234
  const DropdownFiltersControlNames = this.options.DropdownFiltersControlNames;
4208
- this.onChangeService.GetValue().subscribe((value) => {
4235
+ this.subscriptions.add(this.onChangeService.GetValue().subscribe((value) => {
4209
4236
  let result = this.options.DropdownFiltersControlNames.filter((item) => item == value);
4210
4237
  if (result.length > 0) {
4211
4238
  this.IsFirstCall = true;
4212
4239
  this.CurrentPage = 1;
4213
4240
  this.getItemList(this.CurrentPage, true);
4214
4241
  }
4215
- });
4242
+ }));
4216
4243
  }
4217
4244
  if (this.options.BootstrapDatePickersFiltersControlNames != null && this.options.BootstrapDatePickersFiltersControlNames.length > 0) {
4218
4245
  const BootstrapDatePickersFiltersControlNames = this.options.BootstrapDatePickersFiltersControlNames;
4219
- this.onChangeService.GetValue().subscribe((value) => {
4246
+ this.subscriptions.add(this.onChangeService.GetValue().subscribe((value) => {
4220
4247
  let result = this.options.BootstrapDatePickersFiltersControlNames.filter((item) => item == value);
4221
4248
  if (result.length > 0) {
4222
4249
  this.IsFirstCall = true;
4223
4250
  this.CurrentPage = 1;
4224
4251
  this.getItemList(this.CurrentPage, true);
4225
4252
  }
4226
- });
4253
+ }));
4227
4254
  }
4228
4255
  this.IsFirstCall = true;
4229
4256
  this.getItemList(this.CurrentPage, true);
@@ -4411,21 +4438,21 @@ class PagingComponent {
4411
4438
  let ControlValue = this.group.controls[FormControlName].value;
4412
4439
  if (ControlValue != undefined && ControlValue != null && ControlValue != "") {
4413
4440
  if (this.options.Filters[index].FilterType == FilterType.DatePicker) {
4414
- if (Array.isArray(ControlValue)) {
4415
- for (let element = 0; element < ControlValue.length; element++) {
4416
- const value = ControlValue[element];
4417
- filters[this.options.Filters[index].ActionParameterName] = value;
4418
- }
4419
- }
4420
- else {
4421
- filters[this.options.Filters[index].ActionParameterName] = ControlValue;
4422
- }
4441
+ //if (Array.isArray(ControlValue)) {
4442
+ // for (let element = 0; element < ControlValue.length; element++) {
4443
+ // const value = ControlValue[element];
4444
+ // filters[this.options.Filters[index].ActionParameterName] = value;
4445
+ // }
4446
+ //}
4447
+ //else {
4448
+ filters[this.options.Filters[index].ActionParameterName] = ControlValue;
4449
+ //}
4423
4450
  }
4424
4451
  else {
4425
4452
  if (this.options.Filters[index].FilterType == FilterType.AutocompleteTextBox)
4426
- ControlValue = JSON.stringify(ControlValue);
4453
+ ControlValue = ControlValue;
4427
4454
  if (this.options.Filters[index].FilterType == FilterType.TagInput)
4428
- ControlValue = JSON.stringify(ControlValue);
4455
+ ControlValue = ControlValue;
4429
4456
  filters[this.options.Filters[index].ActionParameterName] = ControlValue;
4430
4457
  }
4431
4458
  }
@@ -5018,7 +5045,7 @@ class MapAutoCompleteComponent {
5018
5045
  if (this.CurrentLanguage == 'en')
5019
5046
  this.mapsAPILoader["_config"]["localeId"] = "en-US";
5020
5047
  this.mapsAPILoader["_scriptLoadingPromise"] = null;
5021
- this.mapsAPILoader["_config"]["apiKey"] = `AIzaSyA75ojhZhEhDaO3vfn3mxTY32sq5flAwlY&language=${this.CurrentLanguage}`;
5048
+ this.mapsAPILoader["_config"]["apiKey"] = `${environment$1.BBSF_GoogleMapKey}&language=${this.CurrentLanguage}`;
5022
5049
  var ScriptTag = document.getElementById(this.mapsAPILoader["_SCRIPT_ID"]);
5023
5050
  if (ScriptTag)
5024
5051
  ScriptTag.remove();
@@ -5029,7 +5056,7 @@ class MapAutoCompleteComponent {
5029
5056
  window.google = null;
5030
5057
  this.LazyMapsAPILoader = new LazyMapsAPILoader({
5031
5058
  // &language=${UtilityService.CurrentLanguage}
5032
- apiKey: `AIzaSyA75ojhZhEhDaO3vfn3mxTY32sq5flAwlY&language=${this.CurrentLanguage}`,
5059
+ apiKey: `${environment$1.BBSF_GoogleMapKey}&language=${this.CurrentLanguage}`,
5033
5060
  libraries: ['places'],
5034
5061
  }, this.mapsAPILoader["_windowRef"], this.mapsAPILoader["_documentRef"], this.mapsAPILoader["_config"]["localeId"]);
5035
5062
  this.LazyMapsAPILoader.load().then(() => {
@@ -5119,18 +5146,17 @@ class MapAutoCompleteComponent {
5119
5146
  }));
5120
5147
  });
5121
5148
  });
5122
- ;
5123
5149
  if (this.CurrentLanguage == 'ar')
5124
5150
  this.mapsAPILoader["_config"]["localeId"] = "ar-EG";
5125
5151
  if (this.CurrentLanguage == 'en')
5126
5152
  this.mapsAPILoader["_config"]["localeId"] = "en-US";
5127
5153
  this.mapsAPILoader["_scriptLoadingPromise"] = null;
5128
- this.mapsAPILoader["_config"]["apiKey"] = `AIzaSyA75ojhZhEhDaO3vfn3mxTY32sq5flAwlY&language=${this.CurrentLanguage}`;
5154
+ this.mapsAPILoader["_config"]["apiKey"] = `${environment$1.BBSF_GoogleMapKey}&language=${this.CurrentLanguage}`;
5129
5155
  var leftSection = document.getElementById(this.mapsAPILoader["_SCRIPT_ID"]);
5130
5156
  if (leftSection)
5131
5157
  leftSection.remove();
5132
5158
  this.LazyMapsAPILoader = new LazyMapsAPILoader({
5133
- apiKey: `AIzaSyA75ojhZhEhDaO3vfn3mxTY32sq5flAwlY&language=${this.CurrentLanguage}`,
5159
+ apiKey: `${environment$1.BBSF_GoogleMapKey}&language=${this.CurrentLanguage}`,
5134
5160
  libraries: ['places'],
5135
5161
  }, this.mapsAPILoader["_windowRef"], this.mapsAPILoader["_documentRef"], this.mapsAPILoader["_config"]["localeId"]);
5136
5162
  this.LazyMapsAPILoader.load();
@@ -5154,6 +5180,33 @@ class MapAutoCompleteComponent {
5154
5180
  this.MapAutoCompleteFormControl.disable();
5155
5181
  }
5156
5182
  if (this.options.Value != null) {
5183
+ let germanAddress = {
5184
+ url: this.options.Value.GoogleMapsURL,
5185
+ placeID: this.options.Value.PlaceID,
5186
+ displayAddress: this.options.Value.Text,
5187
+ name: this.options.Value.Text,
5188
+ locality: {},
5189
+ state: {},
5190
+ country: {},
5191
+ geoLocation: { latitude: -1, longitude: -1 },
5192
+ };
5193
+ germanAddress.geoLocation.latitude = this.options.Value.Latitude;
5194
+ germanAddress.geoLocation.longitude = this.options.Value.Longitude;
5195
+ this.onGermanAddressMapped.emit(germanAddress);
5196
+ this.GermanAddressMapped(germanAddress);
5197
+ this.place = {
5198
+ url: this.options.Value.GoogleMapsURL,
5199
+ place_id: this.options.Value.PlaceID,
5200
+ formatted_address: this.options.Value.Text,
5201
+ name: this.options.Value.Text,
5202
+ };
5203
+ this.onAutocompleteSelected.emit(this.place);
5204
+ this.AutocompleteSelected(this.place);
5205
+ this.onLocationSelected.emit({
5206
+ latitude: this.options.Value.Latitude,
5207
+ longitude: this.options.Value.Longitude
5208
+ });
5209
+ this.group.controls[this.options.Name].setValue(this.MapAutoCompleteModel);
5157
5210
  this.MapAutoCompleteFormControl.setValue(this.options.Value);
5158
5211
  }
5159
5212
  if (this.options.CustomValidation.length > 0) {
@@ -5175,6 +5228,8 @@ class MapAutoCompleteComponent {
5175
5228
  element.setAttribute(this.options.AttributeList[index].Key, this.options.AttributeList[index].value);
5176
5229
  }
5177
5230
  }
5231
+ var elementHTML = document.getElementById(this.options.Name);
5232
+ elementHTML.value = this.MapAutoCompleteModel.Text;
5178
5233
  }
5179
5234
  showGlobalError() {
5180
5235
  this.controlUtility.showGlobalError();
@@ -5218,7 +5273,7 @@ MapAutoCompleteComponent.controlContainerstatic = null;
5218
5273
  MapAutoCompleteComponent.decorators = [
5219
5274
  { type: Component, args: [{
5220
5275
  selector: 'BBSF-MapAutoComplete',
5221
- template: "<div class=\"b-control b-map-auto-complete\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\" [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <input class=\"form-control bnsights-control {{options.ExtraClasses}} \"\r\n value=\"{{MapAutoCompleteModel}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n \r\n [class.is-invalid]=\"MapAutoCompleteFormControl.invalid && MapAutoCompleteFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\"\r\n matGoogleMapsAutocomplete #search\r\n (onAutocompleteSelected)=\"AutocompleteSelected($event)\"\r\n (onLocationSelected)=\"LocationSelected($event)\"\r\n (onGermanAddressMapped)=\"GermanAddressMapped($event)\" />\r\n\r\n \r\n\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(MapAutoCompleteFormControl.invalid && MapAutoCompleteFormControl.touched)\">\r\n {{getErrorValidation(MapAutoCompleteFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">{{options.LabelDescription}}</div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n",
5276
+ template: "<div class=\"b-control b-map-auto-complete\">\r\n <div class=\"form-group row validate is-invalid\" [formGroup]=\"group\">\r\n <label class=\"b-label col-form-label col-sm-12 \" [ngClass]=\"(options.ViewType==1)?'col-md-12':'col-md-3'\" [hidden]=\"options.HideLabel\">\r\n {{options.LabelValue}}\r\n <span *ngIf=\"(options.ShowAsterisk&&options.IsRequired)||(options.IsRequired)\" class=\"text-danger Required-text\" aria-required=\"true\">*</span>\r\n </label>\r\n <div class=\"col-sm-12\" [ngClass]=\"(options.ViewType==1)?'':'col-md-9'\">\r\n <input class=\"form-control bnsights-control {{options.ExtraClasses}} \"\r\n [value]=\"MapAutoCompleteModel.Text\"\r\n [address]=\"MapAutoCompleteModel.Text\"\r\n value=\"{{MapAutoCompleteModel.Text}}\"\r\n aria-describedby=\"email-error\" aria-invalid=\"true\"\r\n [class.is-invalid]=\"MapAutoCompleteFormControl.invalid && MapAutoCompleteFormControl.touched\"\r\n placeholder=\"{{options.Placeholder}}\" id=\"{{options.Name}}\"\r\n matGoogleMapsAutocomplete #search\r\n (onAutocompleteSelected)=\"AutocompleteSelected($event)\"\r\n (onLocationSelected)=\"LocationSelected($event)\"\r\n (onGermanAddressMapped)=\"GermanAddressMapped($event)\"/>\r\n <div class=\"text-danger Required-text\"\r\n *ngIf=\"(MapAutoCompleteFormControl.invalid && MapAutoCompleteFormControl.touched)\">\r\n {{getErrorValidation(MapAutoCompleteFormControl.errors|keyvalue)}}\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <div class=\"control-desc text-dark\">{{options.LabelDescription}}</div>\r\n </div>\r\n\r\n <div *ngIf=\"(group.valid&&group.dirty&&group.touched )||(group.untouched&&group.invalid&&group.dirty) \">{{resetError()}}</div>\r\n\r\n </div>\r\n </div>\r\n</div>\r\n",
5222
5277
  styles: [".example-form{min-width:150px;max-width:500px;width:100%}.example-full-width{width:100%}.flip_V{transform:scaleY(-1)}\n"]
5223
5278
  },] }
5224
5279
  ];
@@ -6857,6 +6912,316 @@ BBSFDatePipe.ctorParameters = () => [
6857
6912
  { type: DatePipe }
6858
6913
  ];
6859
6914
 
6915
+ var TagInputView;
6916
+ (function (TagInputView) {
6917
+ TagInputView[TagInputView["WithImage"] = 1] = "WithImage";
6918
+ TagInputView[TagInputView["WithoutImage"] = 2] = "WithoutImage";
6919
+ TagInputView[TagInputView["WithInitial"] = 3] = "WithInitial";
6920
+ })(TagInputView || (TagInputView = {}));
6921
+
6922
+ const noop = () => { };
6923
+ const ɵ0$1 = noop;
6924
+ const TAGS_INPUT_TEMPLATE = `
6925
+
6926
+ <div class="tags-input">
6927
+ <span class="tags-input__tag label label-primary badge badge-primary" *ngFor="let tag of tags">
6928
+
6929
+ <span [ngSwitch]="ViewMode">
6930
+ <span *ngSwitchCase="tagInputViewEnum.WithImage">
6931
+ <img style="border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;"
6932
+ src="{{(tag.imageURL?tag.imageURL:defaultImageURL)}}" />
6933
+ </span>
6934
+
6935
+ <span *ngSwitchCase="tagInputViewEnum.WithInitial">
6936
+ <div class="user-initials">{{calculateInitials(tag.name)}}</div>
6937
+ </span>
6938
+
6939
+ <span *ngSwitchDefault>
6940
+ </span>
6941
+
6942
+ </span>
6943
+ {{tag[displayField]}}
6944
+ <span *ngIf="isDeleteable(tag)" role="button" class="tags-input__tag-remove-btn" (click)="removeTag(tag)"
6945
+ (touch)="removeTag(tag)">
6946
+ <span aria-hidden="true">&times;</span>
6947
+ <span class="sr-only">Close</span>
6948
+ </span>
6949
+ </span>
6950
+
6951
+ <input *ngIf="options === null; else withTypeahead" class="tags-input__input-field" type="text"
6952
+ [placeholder]="getPlaceholder()" name="tags" (keyup.enter)="addTag(tagInput)"
6953
+ (keydown.backspace)="removeLastTag(tagInput)" [disabled]="!canAddTags || maximumOfTagsReached()"
6954
+ [hidden]="!canAddTags || maximumOfTagsReached()" #tagInput />
6955
+
6956
+ <ng-template #withTypeahead>
6957
+ <span [ngSwitch]="ViewMode">
6958
+
6959
+ <span *ngSwitchCase="tagInputViewEnum.WithImage">
6960
+ <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
6961
+ name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
6962
+ [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
6963
+ (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
6964
+ [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
6965
+ [typeaheadItemTemplate]="itemTemplateWithImage" [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
6966
+ [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
6967
+ #tagInput />
6968
+ </span>
6969
+
6970
+ <span *ngSwitchCase="tagInputViewEnum.WithoutImage">
6971
+ <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
6972
+ name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
6973
+ [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
6974
+ (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
6975
+ [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
6976
+ [typeaheadItemTemplate]="itemTemplateWithoutImage"
6977
+ [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
6978
+ [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
6979
+ #tagInput />
6980
+ </span>
6981
+
6982
+ <span *ngSwitchCase="tagInputViewEnum.WithInitial">
6983
+ <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
6984
+ name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
6985
+ [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
6986
+ (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
6987
+ [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
6988
+ [typeaheadItemTemplate]="itemTemplateWithoutInitial"
6989
+ [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
6990
+ [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
6991
+ #tagInput />
6992
+ </span>
6993
+
6994
+ <span *ngSwitchDefault>
6995
+ <input *ngIf="(options !== null)" class="tags-input__input-field" type="text" [placeholder]="getPlaceholder()"
6996
+ name="tags" (keydown.backspace)="removeLastTag(tagInput)" [(ngModel)]="selected" [typeahead]="options"
6997
+ [typeaheadOptionField]="displayField" (typeaheadOnSelect)="typeaheadOnSelect($event)"
6998
+ (typeaheadNoResults)="typeaheadOnNoMatch($event)" [typeaheadMinLength]="minLengthBeforeOptions"
6999
+ [typeaheadScrollable]="scrollableOptions" [typeaheadLatinize]="true"
7000
+ [typeaheadItemTemplate]="itemTemplateWithoutImage"
7001
+ [typeaheadOptionsInScrollableView]="scrollableOptionsInView"
7002
+ [disabled]="!canAddTags || maximumOfTagsReached()" [hidden]="!canAddTags || maximumOfTagsReached()"
7003
+ #tagInput />
7004
+ </span>
7005
+
7006
+ </span>
7007
+
7008
+ </ng-template>
7009
+
7010
+ <ng-template #itemTemplateWithImage let-model="item" let-index="index">
7011
+ <img
7012
+ style="border-radius:50%; height:40px; width: 40px; float:left; margin-left:5px ; margin-top: 5px;margin-right: 5px;"
7013
+ src="{{(model.imageURL?model.imageURL:defaultImageURL)}}" />
7014
+ <div>
7015
+ <a [innerHTML]="model.name"></a>
7016
+ <p *ngIf="showDescription">
7017
+ {{model.description}}
7018
+ </p>
7019
+ </div>
7020
+ </ng-template>
7021
+
7022
+ <ng-template #itemTemplateWithoutImage let-model="item" let-index="index">
7023
+ <div>
7024
+ <a [innerHTML]="model.name"></a>
7025
+ <p *ngIf="showDescription">
7026
+ {{model.description}}
7027
+ </p>
7028
+ </div>
7029
+ </ng-template>
7030
+
7031
+ <ng-template #itemTemplateWithoutInitial let-model="item" let-index="index">
7032
+ <div class="user-image">
7033
+ <div class="user-initials">{{calculateInitials(model.name)}}</div>
7034
+ </div>
7035
+ <div>
7036
+ <a [innerHTML]="model.name"></a>
7037
+ <p *ngIf="showDescription">
7038
+ {{model.description}}
7039
+ </p>
7040
+ </div>
7041
+ </ng-template>
7042
+ </div>
7043
+ `;
7044
+ const TAGS_INPUT_STYLE = `
7045
+ :host {
7046
+ overflow: auto;
7047
+ white-space: nowrap;
7048
+ }
7049
+
7050
+ .tags-input {
7051
+ align-items: center;
7052
+ display: flex;
7053
+ flex-wrap: wrap;
7054
+ }
7055
+
7056
+ .tags-input__tag {
7057
+ display: inline-block;
7058
+ margin-bottom: 2px;
7059
+ margin-right: 5px;
7060
+ padding-right: 0.3em;
7061
+ }
7062
+
7063
+ .tags-input__tag-remove-btn {
7064
+ cursor: pointer;
7065
+ display: inline-block;
7066
+ font-size: 12px;
7067
+ margin: -3px 0 0 3px;
7068
+ padding: 0;
7069
+ vertical-align: top;
7070
+ }
7071
+
7072
+ .tags-input__input-field {
7073
+ border: none;
7074
+ flex-grow: 1;
7075
+ outline: none;
7076
+ }
7077
+ `;
7078
+ const CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR = {
7079
+ provide: NG_VALUE_ACCESSOR,
7080
+ useExisting: forwardRef(() => BTagsInputComponent),
7081
+ multi: true
7082
+ };
7083
+ class BTagsInputComponent {
7084
+ constructor() {
7085
+ this.selected = '';
7086
+ this.tags = [];
7087
+ this.onTouchedCallback = noop;
7088
+ this.onChangeCallback = noop;
7089
+ this.tagInputViewEnum = TagInputView;
7090
+ this.removeLastOnBackspace = false;
7091
+ this.canDeleteTags = true;
7092
+ this.canAddTags = true;
7093
+ this.ViewMode = TagInputView.WithoutImage;
7094
+ this.placeholder = '';
7095
+ this.showDescription = true;
7096
+ this.options = null;
7097
+ this.defaultImageURL = null;
7098
+ this.displayField = 'name';
7099
+ this.minLengthBeforeOptions = 1;
7100
+ this.scrollableOptions = false;
7101
+ this.scrollableOptionsInView = 5;
7102
+ this.onTagsChanged = new EventEmitter();
7103
+ this.onMaxTagsReached = new EventEmitter();
7104
+ this.onNoOptionsMatch = new EventEmitter();
7105
+ }
7106
+ getPlaceholder() {
7107
+ if (this.tags && this.tags.length > 0) {
7108
+ return '';
7109
+ }
7110
+ return this.placeholder;
7111
+ }
7112
+ tagsChanged(type, tag) {
7113
+ this.onChangeCallback(this.tags);
7114
+ this.onTagsChanged.emit({
7115
+ change: type,
7116
+ tag: tag
7117
+ });
7118
+ if (this.maximumOfTagsReached()) {
7119
+ this.onMaxTagsReached.emit();
7120
+ }
7121
+ }
7122
+ removeLastTag(tagInput) {
7123
+ if (!this.removeLastOnBackspace || !this.tags.length) {
7124
+ return;
7125
+ }
7126
+ if (tagInput.value === '') {
7127
+ this.removeTag(this.tags[this.tags.length - 1]);
7128
+ }
7129
+ }
7130
+ addTag(tagInput) {
7131
+ if (tagInput.value.trim() !== '') {
7132
+ let tag = {
7133
+ [this.displayField]: tagInput.value
7134
+ };
7135
+ this.addPredefinedTag(tag);
7136
+ }
7137
+ tagInput.value = '';
7138
+ }
7139
+ addPredefinedTag(tag) {
7140
+ if (!this.maximumOfTagsReached()) {
7141
+ this.tags.push(tag);
7142
+ this.tagsChanged('add', tag);
7143
+ }
7144
+ }
7145
+ removeTag(tagToRemove) {
7146
+ if (!this.isDeleteable(tagToRemove)) {
7147
+ return;
7148
+ }
7149
+ this.tags = this.tags.filter(tag => tagToRemove !== tag);
7150
+ this.tagsChanged('remove', tagToRemove);
7151
+ }
7152
+ maximumOfTagsReached() {
7153
+ return typeof this.maxTags !== 'undefined' && this.tags && this.tags.length >= this.maxTags;
7154
+ }
7155
+ isDeleteable(tag) {
7156
+ if (typeof tag.deleteable !== "undefined" && !tag.deleteable) {
7157
+ return false;
7158
+ }
7159
+ return this.canDeleteTags;
7160
+ }
7161
+ typeaheadOnSelect(e) {
7162
+ if (typeof e.item === 'string') {
7163
+ this.addPredefinedTag({
7164
+ [this.displayField]: e.value
7165
+ });
7166
+ }
7167
+ else {
7168
+ this.addPredefinedTag(e.item);
7169
+ }
7170
+ this.selected = '';
7171
+ }
7172
+ typeaheadOnNoMatch(e) {
7173
+ if (typeof this.onNoOptionsMatch !== 'undefined') {
7174
+ this.onNoOptionsMatch.emit(e);
7175
+ }
7176
+ }
7177
+ writeValue(value) {
7178
+ if (value !== this.tags) {
7179
+ this.tags = value;
7180
+ }
7181
+ }
7182
+ registerOnChange(fn) {
7183
+ this.onChangeCallback = fn;
7184
+ }
7185
+ registerOnTouched(fn) {
7186
+ this.onTouchedCallback = fn;
7187
+ }
7188
+ calculateInitials(name) {
7189
+ debugger;
7190
+ var fullName = name.split(' ');
7191
+ var initials = "";
7192
+ if (fullName.length > 1)
7193
+ initials = fullName.shift().charAt(0) + fullName.pop().charAt(0);
7194
+ else
7195
+ initials = fullName.shift().charAt(0);
7196
+ return initials.toUpperCase();
7197
+ }
7198
+ }
7199
+ BTagsInputComponent.decorators = [
7200
+ { type: Component, args: [{
7201
+ selector: 'b-tags-input',
7202
+ template: TAGS_INPUT_TEMPLATE,
7203
+ providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR],
7204
+ styles: [TAGS_INPUT_STYLE]
7205
+ },] }
7206
+ ];
7207
+ BTagsInputComponent.propDecorators = {
7208
+ maxTags: [{ type: Input }],
7209
+ removeLastOnBackspace: [{ type: Input }],
7210
+ canDeleteTags: [{ type: Input }],
7211
+ canAddTags: [{ type: Input }],
7212
+ ViewMode: [{ type: Input }],
7213
+ placeholder: [{ type: Input }],
7214
+ showDescription: [{ type: Input }],
7215
+ options: [{ type: Input }],
7216
+ defaultImageURL: [{ type: Input }],
7217
+ minLengthBeforeOptions: [{ type: Input }],
7218
+ scrollableOptions: [{ type: Input }],
7219
+ scrollableOptionsInView: [{ type: Input }],
7220
+ onTagsChanged: [{ type: Output }],
7221
+ onMaxTagsReached: [{ type: Output }],
7222
+ onNoOptionsMatch: [{ type: Output }]
7223
+ };
7224
+
6860
7225
  let options;
6861
7226
  let AppInjector;
6862
7227
  FullCalendarModule.registerPlugins([
@@ -6906,7 +7271,8 @@ BBSFControlsModule.decorators = [
6906
7271
  RepeaterItemFieldComponent,
6907
7272
  RepeaterTableComponent,
6908
7273
  BBSFDateTimePipe,
6909
- BBSFDatePipe
7274
+ BBSFDatePipe,
7275
+ BTagsInputComponent
6910
7276
  ],
6911
7277
  imports: [
6912
7278
  CommonModule,
@@ -6916,7 +7282,7 @@ BBSFControlsModule.decorators = [
6916
7282
  NgxTypeaheadModule,
6917
7283
  AgmCoreModule.forRoot({
6918
7284
  // &language=${UtilityService.CurrentLanguage}
6919
- apiKey: `AIzaSyA75ojhZhEhDaO3vfn3mxTY32sq5flAwlY`,
7285
+ apiKey: environment$1.BBSF_GoogleMapKey,
6920
7286
  libraries: ['places'],
6921
7287
  }),
6922
7288
  MatGoogleMapsAutocompleteModule,
@@ -7170,6 +7536,7 @@ class AutocompleteOptions extends ControlOptionsBase {
7170
7536
  // Params: object={};
7171
7537
  this.QueryParam = 'query';
7172
7538
  this.SelectedValue = null;
7539
+ this.ItemWithImage = false;
7173
7540
  }
7174
7541
  }
7175
7542
 
@@ -7188,26 +7555,29 @@ class TagsInputOptions extends ControlOptionsBase {
7188
7555
  /** Allow User To Add Tags */
7189
7556
  this.CanAddTags = true;
7190
7557
  /** Set Max Number Of Tags That User Can Be Select */
7191
- this.MaxNumberTags = 100;
7558
+ this.MaxNumberTags = 5;
7192
7559
  /** Set Min Length Of Char To Call Search Function */
7193
7560
  this.MinSearchLength = 1;
7194
7561
  /**Allow Scrolle Option In Dropdown */
7195
7562
  this.ScrollableOptions = true;
7196
7563
  /** Set Max Number Of Tags That will Be Appear ON Dropdown */
7197
- this.MaxSearchResultsCount = 5;
7564
+ this.MaxSearchResultsCount = 10;
7198
7565
  /**Value Name Of Tag Option In Dropdown */
7199
- this.DatasourceItemValue = "key";
7566
+ this.DatasourceItemValue = "id";
7200
7567
  /**Text Of Tag That Will Show In Dropdown */
7201
- this.DatasourceItemText = "value";
7568
+ this.DatasourceItemText = "name";
7202
7569
  /**Set Query Param Name By Default It's 'query'*/
7203
7570
  this.QueryParamName = "query";
7204
7571
  /**Set Query Param Name By Default It's 'query'*/
7205
7572
  this.SelectedItemsParamName = "SelectedItems";
7206
7573
  /**Set Filter Param Name By Default It's 'query'*/
7207
7574
  this.FilterParamName = "";
7575
+ this.DefaultImgUrl = "";
7208
7576
  /** allow add value of TagInput dosn't exist in list*/
7209
7577
  this.AllowNewSelection = false;
7210
7578
  this.ValidationToken = null;
7579
+ this.TagInputMode = TagInputView.WithoutImage;
7580
+ this.ShowDescription = true;
7211
7581
  }
7212
7582
  }
7213
7583
 
@@ -7670,5 +8040,5 @@ var FileType;
7670
8040
  * Generated bundle index. Do not edit.
7671
8041
  */
7672
8042
 
7673
- export { AppInjector, Attribute, AutocompleteDTO, AutocompleteOptions, AutocompleteTextBoxComponent, BBSFControlsModule, BBSFDatePipe, BBSFDateTimePipe, CalendarComponent, CalendarEventDTO, CalendarOptions, CalendarView, CancelDTO, CheckBoxComponent, CheckBoxOptions, ConfirmationModalComponent, ConfirmationModalOptions, ControlLayout, ControlOptionsBase, ControlUtility, Country, CustomValidation, CustomValidator, DataType, DateInputComponent, DatePickerOptions, DropdownListComponent, DropdownListItem, DropdownOptions, EditPersonalImage, EnglishArabicDTO, ErrorMassageValidation, FileType, FileUploadComponent, FileUploadModel, FileUploadOptions, FilterItem, FilterType, FontSize, ForceDirection, FormComponent, FormOptions, GlobalSettings, HtmlEditorComponent, HtmlEditorOptions, IconPosition, ImageType, ImageUploadOptions, ImageUploaderComponent, InputType, Insert, JwPaginationComponent, LanguageMode, LanguageValidation, MapAutoCompleteComponent, MapAutoCompleteOptions, MapAutocompleteDTO, MenuListType, Misc, MultiLingualHtmlEditorComponent, MultiLingualHtmlEditorOptions, MultiLingualTextAreaComponent, MultiLingualTextAreaOptions, MultiLingualTextBoxComponent, MultiLingualTextBoxOptions, MultilingualControlOptionsBase, MultipleFileUploadModel, NgTemplateNameDirective, OnPagingFiltersChangeService, PagingActionMode, PagingComponent, PagingDTO, PagingOptions, Para, PermissionSets, PhoneComponent, PhoneOptions, PickerType, ProfileImageUploadOptions, ProfileImageUploaderComponent, ProfilePictureDTO, RadioButtonComponent, RadioButtonItem, RadioButtonOptions, RangeNumber, RenderComponentService, RepeaterComponent, RepeaterField, RepeaterFieldBuilderComponent, RepeaterItemFieldComponent, RepeaterOptions, RepeaterTableComponent, SaveDTO, SelectMode, StartView, Style, StyleConfirmationMode, TagsInputComponent, TagsInputDTO, TagsInputOptions, TextAreaComponent, TextAreaOptions, TextBoxOptions, TextboxComponent, ToggleSlideOptions, ToggleslideComponent, UploadPersonalImage, environment, options, ɵ0 };
8043
+ export { AppInjector, Attribute, AutocompleteDTO, AutocompleteOptions, AutocompleteTextBoxComponent, BBSFControlsModule, BBSFDatePipe, BBSFDateTimePipe, CalendarComponent, CalendarEventDTO, CalendarOptions, CalendarView, CancelDTO, CheckBoxComponent, CheckBoxOptions, ConfirmationModalComponent, ConfirmationModalOptions, ControlLayout, ControlOptionsBase, ControlUtility, Country, CustomValidation, CustomValidator, DataType, DateInputComponent, DatePickerOptions, DefaultIntl, DropdownListComponent, DropdownListItem, DropdownOptions, EditPersonalImage, EnglishArabicDTO, ErrorMassageValidation, FileType, FileUploadComponent, FileUploadModel, FileUploadOptions, FilterItem, FilterType, FontSize, ForceDirection, FormComponent, FormOptions, GlobalSettings, HtmlEditorComponent, HtmlEditorOptions, IconPosition, ImageType, ImageUploadOptions, ImageUploaderComponent, InputType, Insert, JwPaginationComponent, LanguageMode, LanguageValidation, MapAutoCompleteComponent, MapAutoCompleteOptions, MapAutocompleteDTO, MenuListType, Misc, MultiLingualHtmlEditorComponent, MultiLingualHtmlEditorOptions, MultiLingualTextAreaComponent, MultiLingualTextAreaOptions, MultiLingualTextBoxComponent, MultiLingualTextBoxOptions, MultilingualControlOptionsBase, MultipleFileUploadModel, NgTemplateNameDirective, OnPagingFiltersChangeService, PagingActionMode, PagingComponent, PagingDTO, PagingOptions, Para, PermissionSets, PhoneComponent, PhoneOptions, PickerType, ProfileImageUploadOptions, ProfileImageUploaderComponent, ProfilePictureDTO, RadioButtonComponent, RadioButtonItem, RadioButtonOptions, RangeNumber, RenderComponentService, RepeaterComponent, RepeaterField, RepeaterFieldBuilderComponent, RepeaterItemFieldComponent, RepeaterOptions, RepeaterTableComponent, SaveDTO, SelectMode, StartView, Style, StyleConfirmationMode, TagInputView, TagsInputComponent, TagsInputDTO, TagsInputOptions, TextAreaComponent, TextAreaOptions, TextBoxOptions, TextboxComponent, ToggleSlideOptions, ToggleslideComponent, UploadPersonalImage, environment, options, ɵ0, BTagsInputComponent as ɵa };
7674
8044
  //# sourceMappingURL=bnsights-bbsf-controls.js.map