ngx-techlify-core 11.3.0-beta.2 → 11.3.0-beta.6

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 (30) hide show
  1. package/bundles/ngx-techlify-core.umd.js +628 -47
  2. package/bundles/ngx-techlify-core.umd.js.map +1 -1
  3. package/bundles/ngx-techlify-core.umd.min.js +2 -2
  4. package/bundles/ngx-techlify-core.umd.min.js.map +1 -1
  5. package/esm2015/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.js +7 -1
  6. package/esm2015/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.js +9 -1
  7. package/esm2015/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.js +10 -2
  8. package/esm2015/lib/image-for-model/image-for-model.module.js +4 -4
  9. package/esm2015/lib/material.module.js +24 -56
  10. package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.js +15 -0
  11. package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.js +269 -0
  12. package/esm2015/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.js +25 -0
  13. package/esm2015/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.js +168 -0
  14. package/esm2015/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.js +29 -0
  15. package/esm2015/lib/timeline-filter/timeline-filter.component.js +21 -5
  16. package/esm2015/public-api.js +6 -1
  17. package/fesm2015/ngx-techlify-core.js +525 -60
  18. package/fesm2015/ngx-techlify-core.js.map +1 -1
  19. package/lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module.d.ts +5 -0
  20. package/lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module.d.ts +7 -0
  21. package/lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module.d.ts +7 -0
  22. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-config.model.d.ts +12 -0
  23. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.component.d.ts +76 -0
  24. package/lib/techlify-tagger-tag-form-field/techlify-tagger-tag-form-field.module.d.ts +2 -0
  25. package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.component.d.ts +58 -0
  26. package/lib/techlify-tagger-tag-selector/techlify-tagger-tag-selector.module.d.ts +2 -0
  27. package/lib/timeline-filter/timeline-filter.component.d.ts +4 -2
  28. package/ngx-techlify-core.metadata.json +1 -1
  29. package/package.json +1 -1
  30. package/public-api.d.ts +5 -0
@@ -12,37 +12,22 @@ import { catchError, debounceTime, distinctUntilChanged, startWith, switchMap, f
12
12
  import { MAT_SNACK_BAR_DATA, MatSnackBar, MatSnackBarModule, MatSnackBarRef } from '@angular/material/snack-bar';
13
13
  import { FocusMonitor } from '@angular/cdk/a11y';
14
14
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
15
- import { MatFormFieldControl, MatFormFieldModule } from '@angular/material/form-field';
15
+ import { MatFormFieldControl, MatFormFieldModule, MatFormField, MAT_FORM_FIELD } from '@angular/material/form-field';
16
16
  import { SELECT_ITEM_HEIGHT_EM, MatSelect, MatSelectModule } from '@angular/material/select';
17
17
  import { MatIconModule } from '@angular/material/icon';
18
18
  import { Router, RouteReuseStrategy, RouterModule, NavigationEnd, ActivatedRoute } from '@angular/router';
19
+ import { MatTooltipModule } from '@angular/material/tooltip';
19
20
  import { MatCommonModule, MatLineModule, MatNativeDateModule, MatOptionModule, MatPseudoCheckboxModule, MatRippleModule } from '@angular/material/core';
20
- import { MatAutocompleteModule } from '@angular/material/autocomplete';
21
- import { MatBadgeModule } from '@angular/material/badge';
22
21
  import { MatButtonModule } from '@angular/material/button';
23
- import { MatButtonToggleModule } from '@angular/material/button-toggle';
24
- import { MatCardModule } from '@angular/material/card';
25
22
  import { MatCheckboxModule } from '@angular/material/checkbox';
26
- import { MatChipsModule } from '@angular/material/chips';
27
- import { MatDatepickerModule } from '@angular/material/datepicker';
28
- import { MatDividerModule } from '@angular/material/divider';
29
- import { MatExpansionModule } from '@angular/material/expansion';
30
- import { MatGridListModule } from '@angular/material/grid-list';
31
23
  import { MatInputModule } from '@angular/material/input';
32
- import { MatListModule } from '@angular/material/list';
33
24
  import { MatMenuModule } from '@angular/material/menu';
34
- import { MatPaginatorModule } from '@angular/material/paginator';
35
- import { MatProgressBarModule } from '@angular/material/progress-bar';
36
25
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
37
- import { MatRadioModule } from '@angular/material/radio';
38
- import { MatSidenavModule } from '@angular/material/sidenav';
39
- import { MatSlideToggleModule } from '@angular/material/slide-toggle';
40
- import { MatSliderModule } from '@angular/material/slider';
41
- import { MatStepperModule } from '@angular/material/stepper';
42
- import { MatTabsModule } from '@angular/material/tabs';
43
- import { MatToolbarModule } from '@angular/material/toolbar';
44
- import { MatTooltipModule } from '@angular/material/tooltip';
45
- import { MatTreeModule } from '@angular/material/tree';
26
+ import { MatCardModule } from '@angular/material/card';
27
+ import { MatDividerModule } from '@angular/material/divider';
28
+ import { MatChipsModule } from '@angular/material/chips';
29
+ import { MatDatepickerModule } from '@angular/material/datepicker';
30
+ import { MatListModule } from '@angular/material/list';
46
31
  import { FlexLayoutModule } from '@angular/flex-layout';
47
32
  import { InfiniteScrollModule } from 'ngx-infinite-scroll';
48
33
  import { NgxDocViewerModule } from 'ngx-doc-viewer';
@@ -50,6 +35,9 @@ import { Editor, NgxEditorModule } from 'ngx-editor';
50
35
  import { utils, writeFile, read } from 'xlsx';
51
36
  import { DomSanitizer } from '@angular/platform-browser';
52
37
  import { diff, formatters } from 'jsondiffpatch';
38
+ import { ENTER, COMMA } from '@angular/cdk/keycodes';
39
+ import { MatAutocompleteModule } from '@angular/material/autocomplete';
40
+ import { MatButtonToggleModule } from '@angular/material/button-toggle';
53
41
 
54
42
  class ActionPopup {
55
43
  }
@@ -2280,8 +2268,9 @@ Timeline.THIS_YEAR = 10;
2280
2268
  Timeline.LAST_YEAR = 11;
2281
2269
  Timeline.ALL = 12;
2282
2270
 
2283
- class TimelineFilterComponent {
2271
+ let TimelineFilterComponent = class TimelineFilterComponent {
2284
2272
  constructor() {
2273
+ this.timelineValue = new FormControl('');
2285
2274
  this.timelines = [
2286
2275
  { value: 1, viewValue: 'Custom' },
2287
2276
  { value: 2, viewValue: 'Today' },
@@ -2299,13 +2288,17 @@ class TimelineFilterComponent {
2299
2288
  this.labelText = 'Select Timeline';
2300
2289
  this.dateFrom = 'date_from';
2301
2290
  this.dateTo = 'date_to';
2291
+ this.appearance = "legacy";
2292
+ this.showClearbutton = false;
2302
2293
  this.showCustomDateFields = false;
2303
2294
  }
2304
2295
  set defaultValue(value) {
2305
- this.timelineValue = value;
2296
+ this.timelineValue.setValue(value);
2306
2297
  this.changeTimeline(value);
2307
2298
  }
2308
2299
  ngOnInit() {
2300
+ this.timelineValue.valueChanges.
2301
+ pipe(debounceTime(100), distinctUntilChanged(), untilDestroyed(this)).subscribe(value => this.changeTimeline(value));
2309
2302
  }
2310
2303
  resetFieldValue(field) {
2311
2304
  this.form.get(field).setValue('');
@@ -2324,23 +2317,29 @@ class TimelineFilterComponent {
2324
2317
  this.showCustomDateFields = timeline.show_custom_field;
2325
2318
  }
2326
2319
  }
2327
- }
2320
+ };
2328
2321
  TimelineFilterComponent.decorators = [
2329
2322
  { type: Component, args: [{
2330
2323
  selector: 'app-timeline-filter',
2331
- template: "<ng-container [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>{{labelText}}</mat-label>\n <mat-select (selectionChange)=\"changeTimeline($event.value)\" [value]=\"timelineValue\">\n <mat-option *ngFor=\"let timeline of timelines\" [value]=\"timeline.value\">\n {{timeline.viewValue}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <ng-container *ngIf=\"showCustomDateFields\">\n <mat-form-field>\n <input matInput formControlName=\"{{dateFrom}}\" [matDatepicker]=\"fromPicker\" (click)=\"fromPicker.open()\"\n placeholder=\"From Date\" readonly />\n <mat-datepicker-toggle matSuffix [for]=\"fromPicker\"></mat-datepicker-toggle>\n <mat-datepicker #fromPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue(dateFrom)\" matSuffix mat-icon-button\n (click)=\"resetFieldValue(dateFrom)\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field>\n <input matInput formControlName=\"{{dateTo}}\" [matDatepicker]=\"toPicker\" (click)=\"toPicker.open()\"\n placeholder=\"To Date\" readonly />\n <mat-datepicker-toggle matSuffix [for]=\"\"></mat-datepicker-toggle>\n <mat-datepicker #toPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue(dateTo)\" matSuffix mat-icon-button\n (click)=\"resetFieldValue(dateTo)\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n </ng-container>\n</ng-container>",
2324
+ template: "<ng-container [formGroup]=\"form\">\n <mat-form-field [appearance]=\"appearance\">\n <mat-label>{{labelText}}</mat-label>\n <mat-select [formControl]=\"timelineValue\">\n <mat-option *ngFor=\"let timeline of timelines\" [value]=\"timeline.value\">\n {{timeline.viewValue}}\n </mat-option>\n </mat-select>\n <button mat-button *ngIf=\"showClearbutton && timelineValue.value\" matSuffix mat-icon-button\n (click)=\"timelineValue.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <ng-container *ngIf=\"showCustomDateFields\">\n <mat-form-field [appearance]=\"appearance\">\n <mat-label>From Date</mat-label>\n <input matInput formControlName=\"{{dateFrom}}\" [matDatepicker]=\"fromPicker\" (click)=\"fromPicker.open()\"\n placeholder=\"From Date\" readonly />\n <mat-datepicker-toggle matSuffix [for]=\"fromPicker\"></mat-datepicker-toggle>\n <mat-datepicker #fromPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue(dateFrom)\" matSuffix mat-icon-button\n (click)=\"resetFieldValue(dateFrom)\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field [appearance]=\"appearance\">\n <mat-label>To Date</mat-label>\n <input matInput formControlName=\"{{dateTo}}\" [matDatepicker]=\"toPicker\" (click)=\"toPicker.open()\"\n placeholder=\"To Date\" readonly />\n <mat-datepicker-toggle matSuffix [for]=\"\"></mat-datepicker-toggle>\n <mat-datepicker #toPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue(dateTo)\" matSuffix mat-icon-button\n (click)=\"resetFieldValue(dateTo)\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n </ng-container>\n</ng-container>",
2332
2325
  styles: [""]
2333
2326
  },] }
2334
2327
  ];
2335
2328
  TimelineFilterComponent.ctorParameters = () => [];
2336
2329
  TimelineFilterComponent.propDecorators = {
2330
+ timelineValue: [{ type: Input }],
2337
2331
  timelines: [{ type: Input }],
2338
2332
  labelText: [{ type: Input }],
2339
2333
  dateFrom: [{ type: Input }],
2340
2334
  dateTo: [{ type: Input }],
2335
+ appearance: [{ type: Input }],
2336
+ showClearbutton: [{ type: Input }],
2341
2337
  form: [{ type: Input }],
2342
2338
  defaultValue: [{ type: Input }]
2343
2339
  };
2340
+ TimelineFilterComponent = __decorate([
2341
+ UntilDestroy()
2342
+ ], TimelineFilterComponent);
2344
2343
 
2345
2344
  class LoaderComponent {
2346
2345
  constructor() {
@@ -2648,57 +2647,34 @@ DataManager.ctorParameters = () => [
2648
2647
  { type: HttpService }
2649
2648
  ];
2650
2649
 
2651
- /*
2652
- * This module imports and re-exports all Angular Material modules for convenience,
2653
- * so only 1 module import is needed in your feature modules.
2654
- * See https://material.angular.io/guide/getting-started#step-3-import-the-component-modules.
2655
- *
2656
- * To optimize your production builds, you should only import the components used in your app.
2657
- */
2658
2650
  class MaterialModule {
2659
2651
  }
2660
2652
  MaterialModule.decorators = [
2661
2653
  { type: NgModule, args: [{
2662
2654
  exports: [
2663
- MatAutocompleteModule,
2664
- MatBadgeModule,
2665
2655
  MatButtonModule,
2666
- MatButtonToggleModule,
2667
- MatCardModule,
2668
2656
  MatCheckboxModule,
2669
- MatChipsModule,
2670
2657
  MatCommonModule,
2671
- MatDatepickerModule,
2672
2658
  MatDialogModule,
2673
- MatDividerModule,
2674
- MatExpansionModule,
2675
2659
  MatFormFieldModule,
2676
- MatGridListModule,
2677
2660
  MatIconModule,
2678
2661
  MatInputModule,
2679
2662
  MatLineModule,
2680
- MatListModule,
2681
2663
  MatMenuModule,
2682
2664
  MatNativeDateModule,
2683
2665
  MatOptionModule,
2684
- MatPaginatorModule,
2685
- MatProgressBarModule,
2686
2666
  MatProgressSpinnerModule,
2687
2667
  MatPseudoCheckboxModule,
2688
- MatRadioModule,
2689
2668
  MatRippleModule,
2690
2669
  MatSelectModule,
2691
- MatSidenavModule,
2692
- MatSlideToggleModule,
2693
- MatSliderModule,
2694
- MatSnackBarModule,
2695
2670
  MatSortModule,
2696
- MatStepperModule,
2697
2671
  MatTableModule,
2698
- MatTabsModule,
2699
- MatToolbarModule,
2700
- MatTooltipModule,
2701
- MatTreeModule
2672
+ MatCardModule,
2673
+ MatDividerModule,
2674
+ MatChipsModule,
2675
+ MatDatepickerModule,
2676
+ MatListModule,
2677
+ MatTooltipModule
2702
2678
  ]
2703
2679
  },] }
2704
2680
  ];
@@ -3241,11 +3217,19 @@ EmailSubscriptionUserListComponent = __decorate([
3241
3217
  UntilDestroy()
3242
3218
  ], EmailSubscriptionUserListComponent);
3243
3219
 
3220
+ const esulr = {
3221
+ title: 'Email Subscription Users',
3222
+ permissions: {
3223
+ only: ['app_admin'],
3224
+ redirectTo: '/'
3225
+ }
3226
+ };
3244
3227
  const routes$4 = [
3245
3228
  {
3246
3229
  path: '',
3247
3230
  component: EmailSubscriptionUserListComponent,
3248
- canActivate: [AuthenticationGuard]
3231
+ canActivate: [AuthenticationGuard],
3232
+ data: esulr
3249
3233
  },
3250
3234
  ];
3251
3235
  class EmailSubscriptionUserListRoutingModule {
@@ -3632,11 +3616,19 @@ EmailSubscriptionTypeListComponent = __decorate([
3632
3616
  UntilDestroy()
3633
3617
  ], EmailSubscriptionTypeListComponent);
3634
3618
 
3619
+ const estlr = {
3620
+ title: 'Email Subscription Type',
3621
+ permissions: {
3622
+ only: ['client_admin'],
3623
+ redirectTo: '/'
3624
+ }
3625
+ };
3635
3626
  const routes$8 = [
3636
3627
  {
3637
3628
  path: '',
3638
3629
  component: EmailSubscriptionTypeListComponent,
3639
3630
  canActivate: [AuthenticationGuard],
3631
+ data: estlr
3640
3632
  },
3641
3633
  ];
3642
3634
  class EmailSubscriptionTypeListRoutingModule {
@@ -3733,11 +3725,17 @@ EmailSubscriptionForUserComponent = __decorate([
3733
3725
  UntilDestroy()
3734
3726
  ], EmailSubscriptionForUserComponent);
3735
3727
 
3728
+ const esfur = {
3729
+ permissions: {
3730
+ only: ['client_admin']
3731
+ }
3732
+ };
3736
3733
  const routes$9 = [
3737
3734
  {
3738
3735
  path: '',
3739
3736
  component: EmailSubscriptionForUserComponent,
3740
3737
  canActivate: [AuthenticationGuard],
3738
+ data: esfur
3741
3739
  },
3742
3740
  ];
3743
3741
  class EmailSubscriptionForUserRoutingModule {
@@ -5599,6 +5597,473 @@ LoginHistoryForUserModule.decorators = [
5599
5597
  },] }
5600
5598
  ];
5601
5599
 
5600
+ class TechlifyTaggerTagFormConfigModel {
5601
+ constructor() {
5602
+ this.selectable = true;
5603
+ this.removable = true;
5604
+ this.separatorKeysCodes = [ENTER, COMMA];
5605
+ this.placeholder = 'New Tag..';
5606
+ this.apiUrl = 'api/techlify-tagger-tags';
5607
+ this.createApiUrl = 'api/techlify-tagger-tags';
5608
+ this.isCreateable = true;
5609
+ this.isCacheTags = false;
5610
+ this.isSingle = false;
5611
+ }
5612
+ }
5613
+
5614
+ var TechlifyTaggerTagFormFieldComponent_1;
5615
+ let TechlifyTaggerTagFormFieldComponent = TechlifyTaggerTagFormFieldComponent_1 = class TechlifyTaggerTagFormFieldComponent {
5616
+ constructor(_focusMonitor, _elementRef, httpService, _formField, ngControl) {
5617
+ this._focusMonitor = _focusMonitor;
5618
+ this._elementRef = _elementRef;
5619
+ this.httpService = httpService;
5620
+ this._formField = _formField;
5621
+ this.ngControl = ngControl;
5622
+ this.stateChanges = new Subject();
5623
+ this.focused = false;
5624
+ this.controlType = 'techlify-tagger-form-field';
5625
+ this.id = `techlify-tagger-form-field-${TechlifyTaggerTagFormFieldComponent_1.nextId++}`;
5626
+ this.onChange = (_) => { };
5627
+ this.onTouched = () => { };
5628
+ this.tagInputCtrl = new FormControl();
5629
+ /**Pass the configuration for Techlify Tagger */
5630
+ this.config = new TechlifyTaggerTagFormConfigModel();
5631
+ /**Pass the default list of tags */
5632
+ this._allTags = [];
5633
+ /**Pass the Categories to filter for a model */
5634
+ this.categories = [];
5635
+ this._required = false;
5636
+ this._disabled = false;
5637
+ this._value = [];
5638
+ this.tagInputCtrl.valueChanges
5639
+ .subscribe(filterValue => {
5640
+ this.filterString = filterValue;
5641
+ });
5642
+ //Set Focus Monitor
5643
+ _focusMonitor.monitor(_elementRef, true).subscribe(origin => {
5644
+ if (this.focused && !origin) {
5645
+ this.onTouched();
5646
+ }
5647
+ this.focused = !!origin;
5648
+ this.stateChanges.next();
5649
+ });
5650
+ if (this.ngControl != null) {
5651
+ this.ngControl.valueAccessor = this;
5652
+ }
5653
+ }
5654
+ get allTags() {
5655
+ return this._allTags;
5656
+ }
5657
+ set allTags(value) {
5658
+ this._allTags = value;
5659
+ }
5660
+ get tags() {
5661
+ return this.allTags.filter(x => this.value.some(y => y == x.id));
5662
+ }
5663
+ //Default Getter and Setters for a Form Field Implementation
5664
+ get empty() {
5665
+ return this.value.length == 0;
5666
+ }
5667
+ get shouldLabelFloat() {
5668
+ return this.focused || !this.empty || this.tagInputCtrl.value;
5669
+ }
5670
+ get required() {
5671
+ return this._required;
5672
+ }
5673
+ set required(value) {
5674
+ this._required = coerceBooleanProperty(value);
5675
+ this.stateChanges.next();
5676
+ }
5677
+ get disabled() {
5678
+ return this._disabled;
5679
+ }
5680
+ set disabled(value) {
5681
+ this._disabled = coerceBooleanProperty(value);
5682
+ this._disabled ? this.tagInputCtrl.disable() : this.tagInputCtrl.enable();
5683
+ this.stateChanges.next();
5684
+ }
5685
+ get value() {
5686
+ return this._value;
5687
+ }
5688
+ set value(tagIds) {
5689
+ this._value = tagIds || [];
5690
+ this.stateChanges.next();
5691
+ }
5692
+ get errorState() {
5693
+ return this.tagInputCtrl.dirty && this.required && (this.value.length == 0);
5694
+ }
5695
+ get placeholder() {
5696
+ return this._placeholder;
5697
+ }
5698
+ set placeholder(value) {
5699
+ this._placeholder = value;
5700
+ this.stateChanges.next();
5701
+ }
5702
+ ngOnInit() {
5703
+ }
5704
+ ngOnChanges(changes) {
5705
+ //API to load all tags for the model type
5706
+ if (this.allTags.length == 0) {
5707
+ this.httpService
5708
+ .cache(!this.config.isCacheTags)
5709
+ .get(this.config.apiUrl, {
5710
+ params: {
5711
+ categories: this.categories.join(','),
5712
+ perPage: '1000'
5713
+ }
5714
+ }).pipe(debounceTime(500), untilDestroyed(this)).subscribe((result) => {
5715
+ this.allTags = result.data;
5716
+ });
5717
+ }
5718
+ //API to load only the selected tags for the model
5719
+ if (this.modelId && this.value.length == 0) {
5720
+ //Model Id is passed and no tags are present, so we query db for the avilable tags for the model ID.
5721
+ this.httpService
5722
+ .cache(!this.config.isCacheTags)
5723
+ .get(this.config.apiUrl, {
5724
+ params: {
5725
+ categories: this.categories.join(','),
5726
+ model_type: this.modelType,
5727
+ model_id: this.modelId,
5728
+ perPage: '1000'
5729
+ }
5730
+ }).pipe(debounceTime(500), untilDestroyed(this)).subscribe((result) => {
5731
+ this.value = ((result === null || result === void 0 ? void 0 : result.data) || []).map((x) => x.id);
5732
+ this._handleInput();
5733
+ });
5734
+ }
5735
+ }
5736
+ init() {
5737
+ if (this.modelId && this.allTags.length == 0) {
5738
+ //Model Id is passed and no tags are passed, so we query db for the avilable tags for the model ID.
5739
+ this.httpService
5740
+ .cache(!this.config.isCacheTags)
5741
+ .get(this.config.apiUrl, {
5742
+ params: {
5743
+ categories: this.categories.join(','),
5744
+ model_type: this.modelType,
5745
+ model_id: this.modelId
5746
+ }
5747
+ }).pipe(untilDestroyed(this)).subscribe((result) => {
5748
+ this.allTags = result.data;
5749
+ });
5750
+ }
5751
+ }
5752
+ get filteredTags() {
5753
+ return this._filter();
5754
+ }
5755
+ setDescribedByIds(ids) {
5756
+ // Just a empty implementation for Mat Form Field Interface
5757
+ }
5758
+ onContainerClick() {
5759
+ // Just a empty implementation for Mat Form Field Interface
5760
+ }
5761
+ add(event) {
5762
+ return __awaiter(this, void 0, void 0, function* () {
5763
+ const value = (event.value || '').trim();
5764
+ // Add our tag
5765
+ // Validate for single mode
5766
+ if (!this.config.isSingle || (this.value.length === 0)) {
5767
+ if (value && this.config.isCreateable) {
5768
+ const tags = this.allTags;
5769
+ let tag = tags.find((item) => item.title.toLowerCase() == value.toLowerCase());
5770
+ if (!tag) {
5771
+ //No tag present in the list
5772
+ try {
5773
+ const result = yield this.httpService.post(this.config.createApiUrl, {
5774
+ title: value,
5775
+ description: value,
5776
+ category_title: (this.categories.length > 0) ? (this.defaultCreateCategory ? this.defaultCreateCategory : this.categories[0]) : ''
5777
+ }).toPromise();
5778
+ tag = result.item;
5779
+ }
5780
+ catch (error) {
5781
+ return;
5782
+ }
5783
+ this.allTags.push(tag);
5784
+ }
5785
+ else {
5786
+ //Optionally clean the existing value, to avoid duplicate
5787
+ this.remove(tag);
5788
+ }
5789
+ this.value.push(tag.id);
5790
+ this._handleInput();
5791
+ }
5792
+ }
5793
+ // Clear the input value
5794
+ event.input.value = '';
5795
+ this.tagInputCtrl.setValue(null);
5796
+ });
5797
+ }
5798
+ remove(tag) {
5799
+ this.value = this.value.filter(x => x !== tag.id);
5800
+ this._handleInput();
5801
+ }
5802
+ selected(event) {
5803
+ // Validate for single mode
5804
+ if (!this.config.isSingle || (this.value.length === 0)) {
5805
+ //Clean the existing value, to avoid duplicate
5806
+ this.remove({ id: event.option.value });
5807
+ this.value.push(event.option.value);
5808
+ this._handleInput();
5809
+ }
5810
+ this.tagInput.nativeElement.value = '';
5811
+ this.tagInputCtrl.setValue(null);
5812
+ }
5813
+ _filter() {
5814
+ const filterValue = this.filterString ? this.filterString.toString().toLowerCase() : null;
5815
+ const availableTags = this.allTags.filter((tag) => !this.value.some((item) => item == tag.id));
5816
+ return filterValue ? availableTags.filter((tag) => tag.title.toLowerCase().includes(filterValue)) : availableTags;
5817
+ }
5818
+ writeValue(tagIds) {
5819
+ this.value = tagIds || [];
5820
+ }
5821
+ registerOnChange(fn) {
5822
+ this.onChange = fn;
5823
+ }
5824
+ registerOnTouched(fn) {
5825
+ this.onTouched = fn;
5826
+ }
5827
+ setDisabledState(isDisabled) {
5828
+ this.disabled = isDisabled;
5829
+ }
5830
+ _handleInput() {
5831
+ this.onChange(this.value);
5832
+ }
5833
+ ngOnDestroy() {
5834
+ this.stateChanges.complete();
5835
+ this._focusMonitor.stopMonitoring(this._elementRef);
5836
+ }
5837
+ };
5838
+ TechlifyTaggerTagFormFieldComponent.nextId = 0;
5839
+ TechlifyTaggerTagFormFieldComponent.decorators = [
5840
+ { type: Component, args: [{
5841
+ selector: 'app-techlify-tagger-tag-form-field',
5842
+ template: "<mat-chip-list #chipList aria-label=\"Tag Selection\">\n <mat-chip *ngFor=\"let tag of tags\" [selectable]=\"config.selectable\" [removable]=\"config.removable\"\n (removed)=\"remove(tag)\">\n {{tag.title}}\n <button matChipRemove *ngIf=\"config.removable\" class=\"border-0\">\n <mat-icon class=\"mat-relative-icon\">cancel</mat-icon>\n </button>\n </mat-chip>\n <input placeholder=\"{{config.isCreateable? config.placeholder:''}}\" #tagInput [formControl]=\"tagInputCtrl\"\n [matAutocomplete]=\"auto\" [matChipInputFor]=\"chipList\"\n [matChipInputSeparatorKeyCodes]=\"config.separatorKeysCodes\" (matChipInputTokenEnd)=\"add($event)\"\n #trigger=\"matAutocompleteTrigger\" (click)=\"trigger.openPanel()\">\n</mat-chip-list>\n<mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">\n <mat-option *ngFor=\"let tag of filteredTags\" [value]=\"tag.id\">\n {{tag.title}}\n </mat-option>\n</mat-autocomplete>",
5843
+ providers: [{ provide: MatFormFieldControl, useExisting: TechlifyTaggerTagFormFieldComponent_1 }],
5844
+ styles: [".mat-relative-icon{font-size:20px;position:relative;right:7px;top:-3px}"]
5845
+ },] }
5846
+ ];
5847
+ TechlifyTaggerTagFormFieldComponent.ctorParameters = () => [
5848
+ { type: FocusMonitor },
5849
+ { type: ElementRef },
5850
+ { type: HttpService },
5851
+ { type: MatFormField, decorators: [{ type: Optional }, { type: Inject, args: [MAT_FORM_FIELD,] }] },
5852
+ { type: NgControl, decorators: [{ type: Optional }, { type: Self }] }
5853
+ ];
5854
+ TechlifyTaggerTagFormFieldComponent.propDecorators = {
5855
+ tagInput: [{ type: ViewChild, args: ['tagInput',] }],
5856
+ config: [{ type: Input }],
5857
+ modelType: [{ type: Input }],
5858
+ modelId: [{ type: Input }],
5859
+ allTags: [{ type: Input }],
5860
+ categories: [{ type: Input }],
5861
+ defaultCreateCategory: [{ type: Input }],
5862
+ required: [{ type: Input }],
5863
+ disabled: [{ type: Input }],
5864
+ value: [{ type: Input }],
5865
+ placeholder: [{ type: Input }]
5866
+ };
5867
+ TechlifyTaggerTagFormFieldComponent = TechlifyTaggerTagFormFieldComponent_1 = __decorate([
5868
+ UntilDestroy()
5869
+ ], TechlifyTaggerTagFormFieldComponent);
5870
+
5871
+ class TechlifyTaggerTagFormFieldModule {
5872
+ }
5873
+ TechlifyTaggerTagFormFieldModule.decorators = [
5874
+ { type: NgModule, args: [{
5875
+ declarations: [
5876
+ TechlifyTaggerTagFormFieldComponent
5877
+ ],
5878
+ imports: [
5879
+ CommonModule,
5880
+ MaterialModule,
5881
+ FlexLayoutModule,
5882
+ MatAutocompleteModule,
5883
+ ReactiveFormsModule
5884
+ ],
5885
+ exports: [TechlifyTaggerTagFormFieldComponent]
5886
+ },] }
5887
+ ];
5888
+
5889
+ var TechlifyTaggerTagSelectorComponent_1;
5890
+ let TechlifyTaggerTagSelectorComponent = TechlifyTaggerTagSelectorComponent_1 = class TechlifyTaggerTagSelectorComponent {
5891
+ constructor(_focusMonitor, _elementRef, httpService, _formField, ngControl) {
5892
+ this._focusMonitor = _focusMonitor;
5893
+ this._elementRef = _elementRef;
5894
+ this.httpService = httpService;
5895
+ this._formField = _formField;
5896
+ this.ngControl = ngControl;
5897
+ /**Pass the Categories to filter for a model */
5898
+ this.categories = [];
5899
+ this.multiple = false;
5900
+ this.enableSearch = true;
5901
+ this.tagSelectorCtrl = new FormControl();
5902
+ this.showAllTags = false;
5903
+ this.useSelectButtonStyle = false;
5904
+ this.tags = [];
5905
+ this.stateChanges = new Subject();
5906
+ this.focused = false;
5907
+ this.controlType = 'techlify-tagger-selector';
5908
+ this.id = `techlify-tagger-selector-${TechlifyTaggerTagSelectorComponent_1.nextId++}`;
5909
+ this.onChange = (_) => { };
5910
+ this.onTouched = () => { };
5911
+ this._required = false;
5912
+ this._disabled = false;
5913
+ //Set Focus Monitor
5914
+ _focusMonitor.monitor(_elementRef, true).subscribe(origin => {
5915
+ if (this.focused && !origin) {
5916
+ this.onTouched();
5917
+ }
5918
+ this.focused = !!origin;
5919
+ this.stateChanges.next();
5920
+ });
5921
+ if (this.ngControl != null) {
5922
+ this.ngControl.valueAccessor = this;
5923
+ }
5924
+ }
5925
+ get apiUrl() {
5926
+ var _a;
5927
+ if (this.showAllTags) {
5928
+ return 'api/techlify-tagger-tags';
5929
+ }
5930
+ else if (((_a = this.categories) === null || _a === void 0 ? void 0 : _a.length) > 0) {
5931
+ return 'api/techlify-tagger-tags?categories=' + this.categories.join(',');
5932
+ }
5933
+ else {
5934
+ return '';
5935
+ }
5936
+ }
5937
+ //Default Getter and Setters for a Form Field Implementation
5938
+ get empty() {
5939
+ return this.value.length == 0;
5940
+ }
5941
+ get shouldLabelFloat() {
5942
+ return this.focused || !this.empty;
5943
+ }
5944
+ get required() {
5945
+ return this._required;
5946
+ }
5947
+ set required(value) {
5948
+ this._required = coerceBooleanProperty(value);
5949
+ this.stateChanges.next();
5950
+ }
5951
+ get disabled() {
5952
+ return this._disabled;
5953
+ }
5954
+ set disabled(value) {
5955
+ this._disabled = coerceBooleanProperty(value);
5956
+ this._disabled ? this.tagSelectorCtrl.disable() : this.tagSelectorCtrl.enable();
5957
+ this.stateChanges.next();
5958
+ }
5959
+ get value() {
5960
+ return this._value;
5961
+ }
5962
+ set value(val) {
5963
+ this._value = val;
5964
+ this.tagSelectorCtrl.setValue(val);
5965
+ this.stateChanges.next();
5966
+ }
5967
+ get errorState() {
5968
+ return this.tagSelectorCtrl.dirty && this.required && (this.value.length == 0);
5969
+ }
5970
+ get placeholder() {
5971
+ return this._placeholder;
5972
+ }
5973
+ set placeholder(value) {
5974
+ this._placeholder = value;
5975
+ this.stateChanges.next();
5976
+ }
5977
+ ngOnInit() {
5978
+ if (this.useSelectButtonStyle) {
5979
+ this.httpService.get(this.apiUrl)
5980
+ .pipe(untilDestroyed(this))
5981
+ .subscribe((res) => {
5982
+ this.tags = res.data;
5983
+ });
5984
+ }
5985
+ }
5986
+ selectionChange(value) {
5987
+ this.value = value;
5988
+ this._handleInput();
5989
+ }
5990
+ setDescribedByIds(ids) {
5991
+ // Just a empty implementation for Mat Form Field Interface
5992
+ }
5993
+ onContainerClick() {
5994
+ // Just a empty implementation for Mat Form Field Interface
5995
+ }
5996
+ writeValue(val) {
5997
+ this.value = val;
5998
+ }
5999
+ registerOnChange(fn) {
6000
+ this.onChange = fn;
6001
+ }
6002
+ registerOnTouched(fn) {
6003
+ this.onTouched = fn;
6004
+ }
6005
+ setDisabledState(isDisabled) {
6006
+ this.disabled = isDisabled;
6007
+ }
6008
+ _handleInput() {
6009
+ this.onChange(this.value);
6010
+ }
6011
+ ngOnDestroy() {
6012
+ this.stateChanges.complete();
6013
+ this._focusMonitor.stopMonitoring(this._elementRef);
6014
+ }
6015
+ };
6016
+ TechlifyTaggerTagSelectorComponent.nextId = 0;
6017
+ TechlifyTaggerTagSelectorComponent.decorators = [
6018
+ { type: Component, args: [{
6019
+ selector: 'app-techlify-tagger-tag-selector',
6020
+ template: "<app-searchable-selector *ngIf=\"apiUrl && !useSelectButtonStyle\" [formControl]=\"tagSelectorCtrl\" [apiUrl]=\"apiUrl\"\n [enableSearch]=\"enableSearch\" [multiple]=\"multiple\" (selectionChange)=\"selectionChange($event)\">\n</app-searchable-selector>\n\n<mat-button-toggle-group *ngIf=\"apiUrl && useSelectButtonStyle\" [formControl]=\"tagSelectorCtrl\" [multiple]=\"multiple\"\n (change)=\"selectionChange($event.value)\">\n <mat-button-toggle *ngFor=\"let tag of tags\" [value]=\"tag.id\">{{tag.title}}</mat-button-toggle>\n</mat-button-toggle-group>",
6021
+ providers: [{ provide: MatFormFieldControl, useExisting: TechlifyTaggerTagSelectorComponent_1 }],
6022
+ styles: [""]
6023
+ },] }
6024
+ ];
6025
+ TechlifyTaggerTagSelectorComponent.ctorParameters = () => [
6026
+ { type: FocusMonitor },
6027
+ { type: ElementRef },
6028
+ { type: HttpService },
6029
+ { type: MatFormField, decorators: [{ type: Optional }, { type: Inject, args: [MAT_FORM_FIELD,] }] },
6030
+ { type: NgControl, decorators: [{ type: Optional }, { type: Self }] }
6031
+ ];
6032
+ TechlifyTaggerTagSelectorComponent.propDecorators = {
6033
+ categories: [{ type: Input }],
6034
+ multiple: [{ type: Input }],
6035
+ enableSearch: [{ type: Input }],
6036
+ showAllTags: [{ type: Input }],
6037
+ useSelectButtonStyle: [{ type: Input }],
6038
+ required: [{ type: Input }],
6039
+ disabled: [{ type: Input }],
6040
+ value: [{ type: Input }],
6041
+ placeholder: [{ type: Input }]
6042
+ };
6043
+ TechlifyTaggerTagSelectorComponent = TechlifyTaggerTagSelectorComponent_1 = __decorate([
6044
+ UntilDestroy()
6045
+ ], TechlifyTaggerTagSelectorComponent);
6046
+
6047
+ class TechlifyTaggerTagSelectorModule {
6048
+ }
6049
+ TechlifyTaggerTagSelectorModule.decorators = [
6050
+ { type: NgModule, args: [{
6051
+ declarations: [
6052
+ TechlifyTaggerTagSelectorComponent
6053
+ ],
6054
+ imports: [
6055
+ CommonModule,
6056
+ MaterialModule,
6057
+ FlexLayoutModule,
6058
+ MatAutocompleteModule,
6059
+ ReactiveFormsModule,
6060
+ SearchableSelectorModule,
6061
+ MatButtonToggleModule
6062
+ ],
6063
+ exports: [TechlifyTaggerTagSelectorComponent]
6064
+ },] }
6065
+ ];
6066
+
5602
6067
  const routes$n = [];
5603
6068
  class ImageForModelRoutingModule {
5604
6069
  }
@@ -5701,15 +6166,15 @@ class ImageForModelModule {
5701
6166
  }
5702
6167
  ImageForModelModule.decorators = [
5703
6168
  { type: NgModule, args: [{
6169
+ declarations: [ImageForModelComponent],
5704
6170
  imports: [
5705
6171
  CommonModule,
5706
- ImageForModelRoutingModule,
5707
6172
  MaterialModule,
5708
6173
  FlexLayoutModule,
5709
6174
  ReactiveFormsModule,
6175
+ ImageForModelRoutingModule
5710
6176
  ],
5711
- declarations: [ImageForModelComponent],
5712
- exports: [ImageForModelComponent],
6177
+ exports: [ImageForModelComponent]
5713
6178
  },] }
5714
6179
  ];
5715
6180
 
@@ -5721,5 +6186,5 @@ ImageForModelModule.decorators = [
5721
6186
  * Generated bundle index. Do not edit.
5722
6187
  */
5723
6188
 
5724
- export { ActionPopup, ActionPopupComponent, ActionPopupModule, AlertService, ApiPrefixInterceptor, AuditLogForModelComponent, AuditLogForModelModule, AuditLogForModelRoutingModule, AuditLogListComponent, AuditLogListFilterComponent, AuditLogListFilterModule, AuditLogListFilterRoutingModule, AuditLogListModule, AuditLogListRoutingModule, AuditLogModule, AuditLogRoutingModule, AuditLogViewComponent, AuditLogViewModelComponent, AuditLogViewModelModule, AuditLogViewModelRoutingModule, AuditLogViewModule, AuditLogViewRoutingModule, AuditLogsViewModelComponent, AuditLogsViewModelModule, AuditLogsViewModelRoutingModule, AuthenticationGuard, AuthenticationService, CacheInterceptor, ConfigService, CoreModule, CredentialsService, DataManager, DataTable, DataTableComponent, DataTableModule, DateUtils, DateValidator, DocumentViewerComponent, DocumentViewerModule, EmailSubscriptionForUserComponent, EmailSubscriptionForUserModule, EmailSubscriptionForUserRoutingModule, EmailSubscriptionModule, EmailSubscriptionRoutingModule, EmailSubscriptionTypeFormComponent, EmailSubscriptionTypeFormModule, EmailSubscriptionTypeFormRoutingModule, EmailSubscriptionTypeListComponent, EmailSubscriptionTypeListModule, EmailSubscriptionTypeListRoutingModule, EmailSubscriptionTypeModule, EmailSubscriptionTypeRoutingModule, EmailSubscriptionUserFormComponent, EmailSubscriptionUserFormModule, EmailSubscriptionUserFormRoutingModule, EmailSubscriptionUserListComponent, EmailSubscriptionUserListFilterComponent, EmailSubscriptionUserListFilterModule, EmailSubscriptionUserListFilterRoutingModule, EmailSubscriptionUserListModule, EmailSubscriptionUserListRoutingModule, EmailSubscriptionUserModule, EmailSubscriptionUserRoutingModule, EntityFileFormComponent, EntityFilesViewAllComponent, EntityFilesViewAllModule, ErrorHandlerInterceptor, ErrorHandlerService, ErrorSnackComponent, ExportExcelButtonComponent, ExportExcelModule, FailedItemsComponent, FailedItemsModule, FailedItemsRoutingModule, FileDropperComponent, FileDropperConfig, FileDropperModule, FormValidatorService, HTTP_DYNAMIC_INTERCEPTORS, HttpCacheService, HttpService, ImageForModelComponent, ImageForModelModule, ImportConfig, ImportCsvComponent, ImportCsvModule, ImportCsvRoutingModule, ImportItemsComponent, ImportItemsModule, ImportItemsRoutingModule, LoaderComponent, LoaderModule, LogLevel, Logger, LoginHistoryForUserComponent, LoginHistoryForUserModule, LoginHistoryForUserRoutingModule, MatSelectInfiniteScrollDirective, MaterialModule, NoteFormComponent, NoteListComponent, NoteModule, NumItemsSelector, NumberSelector, PageEvent, RouteReusableStrategy, SearchableSelectorComponent, SearchableSelectorModule, SnackModule, StorageService, SuccessSnackComponent, TechlifyConfig, TechlifyUpdateHistoryModule, TechlifyUpdateModule, Timeline, TimelineFilterComponent, TimelineFilterModule, TokenInterceptor, UpdateNotifierComponent, UpdateNotifierModule, UtilityModule, ViewerConfig, calculateTimeline, SnackModule as ɵa, SuccessSnackComponent as ɵb, EmailSubscriptionUserFormComponent as ɵba, EmailSubscriptionUserListComponent as ɵbb, AuthenticationGuard as ɵbc, CredentialsService as ɵbd, ConfigService as ɵbe, TechlifyConfig as ɵbf, EmailSubscriptionUserListFilterComponent as ɵbg, EmailSubscriptionTypeFormComponent as ɵbh, EmailSubscriptionTypeListComponent as ɵbi, EmailSubscriptionForUserComponent as ɵbj, TechlifyUpdatesListComponent as ɵbk, TechlifyUpdateService as ɵbl, TechlifyUpdateRoutingModule as ɵbm, TechlifyUpdateFormModule as ɵbn, TechlifyUpdateFormComponent as ɵbo, ReadMoreModule as ɵbp, ReadMoreComponent as ɵbq, TechlifyUpdateHistoryRoutingModule as ɵbr, TechlifyUpdateHistoryComponent as ɵbs, UpdateNotifierSnackComponent as ɵbt, UpdateViewModule as ɵbu, UpdateViewComponent as ɵbv, DataManager as ɵbw, ImageForModelRoutingModule as ɵbx, ErrorSnackComponent as ɵc, HTTP_DYNAMIC_INTERCEPTORS as ɵd, HttpService as ɵe, RouteReusableStrategy as ɵf, ActionPopupComponent as ɵg, ActionPopup as ɵh, DataTableComponent as ɵi, DocumentViewerComponent as ɵj, EntityFileFormComponent as ɵk, FormValidatorService as ɵl, EntityFileService as ɵm, AlertService as ɵn, EntityFilesViewAllComponent as ɵo, FileDropperComponent as ɵp, NoteListComponent as ɵq, NoteService as ɵr, NoteFormComponent as ɵs, SearchableSelectorComponent as ɵt, MatSelectInfiniteScrollDirective as ɵu, NumItemsSelector as ɵv, NumberSelector as ɵw, TimelineFilterComponent as ɵx, TimelineFilterRoutingModule as ɵy, LoaderComponent as ɵz };
6189
+ export { ActionPopup, ActionPopupComponent, ActionPopupModule, AlertService, ApiPrefixInterceptor, AuditLogForModelComponent, AuditLogForModelModule, AuditLogForModelRoutingModule, AuditLogListComponent, AuditLogListFilterComponent, AuditLogListFilterModule, AuditLogListFilterRoutingModule, AuditLogListModule, AuditLogListRoutingModule, AuditLogModule, AuditLogRoutingModule, AuditLogViewComponent, AuditLogViewModelComponent, AuditLogViewModelModule, AuditLogViewModelRoutingModule, AuditLogViewModule, AuditLogViewRoutingModule, AuditLogsViewModelComponent, AuditLogsViewModelModule, AuditLogsViewModelRoutingModule, AuthenticationGuard, AuthenticationService, CacheInterceptor, ConfigService, CoreModule, CredentialsService, DataManager, DataTable, DataTableComponent, DataTableModule, DateUtils, DateValidator, DocumentViewerComponent, DocumentViewerModule, EmailSubscriptionForUserComponent, EmailSubscriptionForUserModule, EmailSubscriptionForUserRoutingModule, EmailSubscriptionModule, EmailSubscriptionRoutingModule, EmailSubscriptionTypeFormComponent, EmailSubscriptionTypeFormModule, EmailSubscriptionTypeFormRoutingModule, EmailSubscriptionTypeListComponent, EmailSubscriptionTypeListModule, EmailSubscriptionTypeListRoutingModule, EmailSubscriptionTypeModule, EmailSubscriptionTypeRoutingModule, EmailSubscriptionUserFormComponent, EmailSubscriptionUserFormModule, EmailSubscriptionUserFormRoutingModule, EmailSubscriptionUserListComponent, EmailSubscriptionUserListFilterComponent, EmailSubscriptionUserListFilterModule, EmailSubscriptionUserListFilterRoutingModule, EmailSubscriptionUserListModule, EmailSubscriptionUserListRoutingModule, EmailSubscriptionUserModule, EmailSubscriptionUserRoutingModule, EntityFileFormComponent, EntityFilesViewAllComponent, EntityFilesViewAllModule, ErrorHandlerInterceptor, ErrorHandlerService, ErrorSnackComponent, ExportExcelButtonComponent, ExportExcelModule, FailedItemsComponent, FailedItemsModule, FailedItemsRoutingModule, FileDropperComponent, FileDropperConfig, FileDropperModule, FormValidatorService, HTTP_DYNAMIC_INTERCEPTORS, HttpCacheService, HttpService, ImageForModelComponent, ImageForModelModule, ImportConfig, ImportCsvComponent, ImportCsvModule, ImportCsvRoutingModule, ImportItemsComponent, ImportItemsModule, ImportItemsRoutingModule, LoaderComponent, LoaderModule, LogLevel, Logger, LoginHistoryForUserComponent, LoginHistoryForUserModule, LoginHistoryForUserRoutingModule, MatSelectInfiniteScrollDirective, MaterialModule, NoteFormComponent, NoteListComponent, NoteModule, NumItemsSelector, NumberSelector, PageEvent, RouteReusableStrategy, SearchableSelectorComponent, SearchableSelectorModule, SnackModule, StorageService, SuccessSnackComponent, TechlifyConfig, TechlifyTaggerTagFormConfigModel, TechlifyTaggerTagFormFieldComponent, TechlifyTaggerTagFormFieldModule, TechlifyTaggerTagSelectorComponent, TechlifyTaggerTagSelectorModule, TechlifyUpdateHistoryModule, TechlifyUpdateModule, Timeline, TimelineFilterComponent, TimelineFilterModule, TokenInterceptor, UpdateNotifierComponent, UpdateNotifierModule, UtilityModule, ViewerConfig, calculateTimeline, esfur, estlr, esulr, SnackModule as ɵa, SuccessSnackComponent as ɵb, EmailSubscriptionUserFormComponent as ɵba, EmailSubscriptionUserListComponent as ɵbb, AuthenticationGuard as ɵbc, CredentialsService as ɵbd, ConfigService as ɵbe, TechlifyConfig as ɵbf, EmailSubscriptionUserListFilterComponent as ɵbg, EmailSubscriptionTypeFormComponent as ɵbh, EmailSubscriptionTypeListComponent as ɵbi, EmailSubscriptionForUserComponent as ɵbj, TechlifyUpdatesListComponent as ɵbk, TechlifyUpdateService as ɵbl, TechlifyUpdateRoutingModule as ɵbm, TechlifyUpdateFormModule as ɵbn, TechlifyUpdateFormComponent as ɵbo, ReadMoreModule as ɵbp, ReadMoreComponent as ɵbq, TechlifyUpdateHistoryRoutingModule as ɵbr, TechlifyUpdateHistoryComponent as ɵbs, UpdateNotifierSnackComponent as ɵbt, UpdateViewModule as ɵbu, UpdateViewComponent as ɵbv, DataManager as ɵbw, ImageForModelRoutingModule as ɵbx, ErrorSnackComponent as ɵc, HTTP_DYNAMIC_INTERCEPTORS as ɵd, HttpService as ɵe, RouteReusableStrategy as ɵf, ActionPopupComponent as ɵg, ActionPopup as ɵh, DataTableComponent as ɵi, DocumentViewerComponent as ɵj, EntityFileFormComponent as ɵk, FormValidatorService as ɵl, EntityFileService as ɵm, AlertService as ɵn, EntityFilesViewAllComponent as ɵo, FileDropperComponent as ɵp, NoteListComponent as ɵq, NoteService as ɵr, NoteFormComponent as ɵs, SearchableSelectorComponent as ɵt, MatSelectInfiniteScrollDirective as ɵu, NumItemsSelector as ɵv, NumberSelector as ɵw, TimelineFilterComponent as ɵx, TimelineFilterRoutingModule as ɵy, LoaderComponent as ɵz };
5725
6190
  //# sourceMappingURL=ngx-techlify-core.js.map