ngx-sfc-common 0.0.26 → 0.0.27

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 (87) hide show
  1. package/components/button/button.component.mixins.scss +28 -0
  2. package/esm2020/lib/components/checkmark/checkmark.component.mjs +8 -4
  3. package/esm2020/lib/components/index.mjs +2 -1
  4. package/esm2020/lib/components/load-container/enums/load-container-load-type.enum.mjs +2 -1
  5. package/esm2020/lib/components/load-container/enums/load-container-type.enum.mjs +2 -1
  6. package/esm2020/lib/components/load-container/load-container.component.mjs +21 -17
  7. package/esm2020/lib/components/load-container/models/load-container-predicate-parameters.model.mjs +1 -1
  8. package/esm2020/lib/components/message/message.component.mjs +22 -0
  9. package/esm2020/lib/components/modal/directive/click/modal-open-on-click.directive.mjs +14 -12
  10. package/esm2020/lib/components/modal/directive/click/modal-open-on-click.model.mjs +2 -0
  11. package/esm2020/lib/components/modal/directive/open/modal-open.directive.mjs +10 -4
  12. package/esm2020/lib/components/modal/footer/default/default-modal-footer.component.mjs +16 -17
  13. package/esm2020/lib/components/modal/footer/default/default-modal-footer.constants.mjs +10 -0
  14. package/esm2020/lib/components/modal/header/default/default-modal-header.component.mjs +13 -14
  15. package/esm2020/lib/components/modal/header/default/default-modal-header.constants.mjs +9 -0
  16. package/esm2020/lib/components/modal/modal.component.mjs +43 -12
  17. package/esm2020/lib/components/modal/service/modal.event.mjs +1 -1
  18. package/esm2020/lib/components/modal/service/modal.service.mjs +17 -13
  19. package/esm2020/lib/components/toggle-switcher/toggle-switcher.component.mjs +10 -4
  20. package/esm2020/lib/constants/ui.constants.mjs +2 -1
  21. package/esm2020/lib/directives/click-outside/click-outside.directive.mjs +3 -2
  22. package/esm2020/lib/directives/if/if.directive.mjs +5 -1
  23. package/esm2020/lib/enums/index.mjs +5 -1
  24. package/esm2020/lib/enums/items-view.enum.mjs +7 -0
  25. package/esm2020/lib/enums/notification-type.enum.mjs +7 -0
  26. package/esm2020/lib/enums/select.enum.mjs +6 -0
  27. package/esm2020/lib/enums/state.enum.mjs +6 -0
  28. package/esm2020/lib/models/index.mjs +2 -2
  29. package/esm2020/lib/models/observable.model.mjs +15 -0
  30. package/esm2020/lib/models/select.model.mjs +2 -0
  31. package/esm2020/lib/ngx-sfc-common.module.mjs +15 -7
  32. package/esm2020/lib/pipes/index.mjs +2 -1
  33. package/esm2020/lib/pipes/repeat/repeat.pipe.mjs +14 -0
  34. package/esm2020/lib/pipes/sort-by/sort-by.pipe.mjs +4 -3
  35. package/esm2020/lib/pipes/switch-multi-case/switch-multi-case.pipe.mjs +2 -4
  36. package/esm2020/lib/services/index.mjs +2 -1
  37. package/esm2020/lib/services/reload/reload.service.mjs +21 -0
  38. package/esm2020/lib/utils/collections.utils.mjs +27 -1
  39. package/esm2020/lib/utils/common.utils.mjs +39 -7
  40. package/esm2020/lib/utils/date-time.utils.mjs +33 -1
  41. package/esm2020/lib/utils/http.utils.mjs +3 -1
  42. package/esm2020/lib/utils/index.mjs +4 -4
  43. package/esm2020/public-api.mjs +2 -1
  44. package/fesm2015/ngx-sfc-common.mjs +542 -280
  45. package/fesm2015/ngx-sfc-common.mjs.map +1 -1
  46. package/fesm2020/ngx-sfc-common.mjs +536 -275
  47. package/fesm2020/ngx-sfc-common.mjs.map +1 -1
  48. package/lib/components/checkmark/checkmark.component.d.ts +1 -0
  49. package/lib/components/index.d.ts +1 -0
  50. package/lib/components/load-container/enums/load-container-load-type.enum.d.ts +1 -0
  51. package/lib/components/load-container/enums/load-container-type.enum.d.ts +2 -1
  52. package/lib/components/load-container/load-container.component.d.ts +3 -2
  53. package/lib/components/load-container/models/load-container-predicate-parameters.model.d.ts +1 -0
  54. package/lib/components/message/message.component.d.ts +9 -0
  55. package/lib/components/modal/directive/click/modal-open-on-click.directive.d.ts +5 -2
  56. package/lib/components/modal/directive/click/modal-open-on-click.model.d.ts +4 -0
  57. package/lib/components/modal/directive/open/modal-open.directive.d.ts +2 -1
  58. package/lib/components/modal/footer/default/default-modal-footer.component.d.ts +4 -3
  59. package/lib/components/modal/footer/default/default-modal-footer.constants.d.ts +5 -0
  60. package/lib/components/modal/header/default/default-modal-header.component.d.ts +2 -2
  61. package/lib/components/modal/header/default/default-modal-header.constants.d.ts +4 -0
  62. package/lib/components/modal/modal.component.d.ts +14 -5
  63. package/lib/components/modal/service/modal.event.d.ts +1 -0
  64. package/lib/components/modal/service/modal.service.d.ts +7 -6
  65. package/lib/components/toggle-switcher/toggle-switcher.component.d.ts +4 -2
  66. package/lib/constants/ui.constants.d.ts +1 -0
  67. package/lib/directives/if/if.directive.d.ts +1 -1
  68. package/lib/enums/index.d.ts +4 -0
  69. package/lib/enums/items-view.enum.d.ts +5 -0
  70. package/lib/enums/notification-type.enum.d.ts +5 -0
  71. package/lib/enums/select.enum.d.ts +4 -0
  72. package/lib/enums/state.enum.d.ts +4 -0
  73. package/lib/models/index.d.ts +2 -0
  74. package/lib/models/observable.model.d.ts +8 -0
  75. package/lib/models/select.model.d.ts +4 -0
  76. package/lib/ngx-sfc-common.module.d.ts +14 -12
  77. package/lib/pipes/index.d.ts +1 -0
  78. package/lib/pipes/repeat/repeat.pipe.d.ts +7 -0
  79. package/lib/services/index.d.ts +1 -0
  80. package/lib/services/reload/reload.service.d.ts +9 -0
  81. package/lib/utils/collections.utils.d.ts +14 -0
  82. package/lib/utils/common.utils.d.ts +18 -6
  83. package/lib/utils/date-time.utils.d.ts +22 -1
  84. package/lib/utils/index.d.ts +3 -3
  85. package/package.json +1 -1
  86. package/public-api.d.ts +1 -0
  87. package/styles/_mixins.scss +11 -0
@@ -1,15 +1,15 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, Injectable, PLATFORM_ID, EventEmitter, Directive, Inject, Input, Output, HostListener, Pipe, Component, HostBinding, ContentChildren, ViewChild, NgModule } from '@angular/core';
2
+ import { InjectionToken, Injectable, PLATFORM_ID, EventEmitter, Directive, Inject, Input, Output, HostListener, Pipe, Component, HostBinding, Optional, ContentChildren, ViewChild, NgModule } from '@angular/core';
3
3
  import * as i1$1 from '@angular/common';
4
4
  import { isPlatformBrowser, formatDate, CommonModule } from '@angular/common';
5
5
  import * as i1$2 from '@fortawesome/angular-fontawesome';
6
6
  import { FontAwesomeModule } from '@fortawesome/angular-fontawesome';
7
- import { Subject, fromEvent, Observable, distinctUntilChanged, startWith, BehaviorSubject, filter, map, EMPTY, tap, switchMap, combineLatest, of } from 'rxjs';
7
+ import { Subject, Observable, BehaviorSubject, fromEvent, distinctUntilChanged, startWith, filter, map, EMPTY, combineLatest, tap, switchMap, of } from 'rxjs';
8
8
  import * as i1 from '@angular/platform-browser';
9
9
  import { __awaiter } from 'tslib';
10
10
  import { HttpParams } from '@angular/common/http';
11
11
  import { trigger, state, style, transition, group, query, animate, animateChild } from '@angular/animations';
12
- import { faTimes, faWindowRestore, faCheck, faChevronLeft, faChevronRight, faChevronCircleDown, faChevronUp, faChevronDown } from '@fortawesome/free-solid-svg-icons';
12
+ import { faWindowRestore, faTimes, faCheck, faChevronLeft, faChevronRight, faChevronCircleDown, faChevronUp, faChevronDown } from '@fortawesome/free-solid-svg-icons';
13
13
 
14
14
  /**
15
15
  * Component sizes
@@ -124,6 +124,32 @@ var Compare;
124
124
  })(Compare || (Compare = {}));
125
125
  ;
126
126
 
127
+ var State;
128
+ (function (State) {
129
+ State["Added"] = "added";
130
+ State["Removed"] = "removed";
131
+ })(State || (State = {}));
132
+
133
+ var NotificationType;
134
+ (function (NotificationType) {
135
+ NotificationType["Info"] = "info";
136
+ NotificationType["Success"] = "success";
137
+ NotificationType["Failed"] = "failed";
138
+ })(NotificationType || (NotificationType = {}));
139
+
140
+ var Select;
141
+ (function (Select) {
142
+ Select["Single"] = "single";
143
+ Select["Multiple"] = "multiple";
144
+ })(Select || (Select = {}));
145
+
146
+ var ItemsView;
147
+ (function (ItemsView) {
148
+ ItemsView["List"] = "list";
149
+ ItemsView["Icons"] = "icons";
150
+ ItemsView["Cards"] = "cards";
151
+ })(ItemsView || (ItemsView = {}));
152
+
127
153
  /**
128
154
  * Create a new injection token for injecting the Document into a component.
129
155
  */
@@ -362,68 +388,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
362
388
  }]
363
389
  }] });
364
390
 
365
- class ClickOutsideDirective {
366
- constructor(elementRef, document) {
367
- this.elementRef = elementRef;
368
- this.document = document;
369
- /**
370
- * Toggler for checking ouside click event
371
- */
372
- this.listening = false;
373
- /**
374
- * Emitter for click event
375
- */
376
- this.action = new EventEmitter();
377
- }
378
- ngAfterViewInit() {
379
- this._clickSubscription = fromEvent(this.document, 'click')
380
- .subscribe(event => this.onClick(event));
381
- }
382
- ngOnDestroy() {
383
- var _a;
384
- (_a = this._clickSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
385
- }
386
- onClick(event) {
387
- if (event instanceof MouseEvent && this.listening) {
388
- const clickOutsideEvent = {
389
- target: event.target,
390
- value: !this.isDescendant(this.elementRef.nativeElement, event.target)
391
- };
392
- this.action.emit(clickOutsideEvent);
393
- }
394
- }
395
- isDescendant(parent, child) {
396
- let node = child;
397
- while (node !== null) {
398
- if (node === parent) {
399
- return true;
400
- }
401
- else {
402
- node = node.parentNode;
403
- }
404
- }
405
- return false;
406
- }
407
- }
408
- ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });
409
- ClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ClickOutsideDirective, selector: "[sfcClickOutside]", inputs: { listening: ["sfcClickOutside", "listening"] }, outputs: { action: "action" }, ngImport: i0 });
410
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ClickOutsideDirective, decorators: [{
411
- type: Directive,
412
- args: [{
413
- selector: '[sfcClickOutside]'
414
- }]
415
- }], ctorParameters: function () {
416
- return [{ type: i0.ElementRef }, { type: Document, decorators: [{
417
- type: Inject,
418
- args: [DOCUMENT]
419
- }] }];
420
- }, propDecorators: { listening: [{
421
- type: Input,
422
- args: ['sfcClickOutside']
423
- }], action: [{
424
- type: Output
425
- }] } });
426
-
427
391
  class CommonConstants {
428
392
  }
429
393
  CommonConstants.NOT_FOUND_INDEX = -1;
@@ -467,70 +431,9 @@ UIConstants.CSS_CENTER = 'center';
467
431
  UIConstants.CSS_CLASS_FIXED = 'fixed';
468
432
  UIConstants.CSS_CLASS_BACKGROUND = 'background';
469
433
  UIConstants.CSS_CLASS_TOP = 'top';
434
+ UIConstants.CSS_CLASS_SCROLL = 'scroll';
470
435
  UIConstants.RGB_OPACITY_PLACEHOLDER = '{opacity}';
471
436
 
472
- class ShowHideElementDirective {
473
- constructor(el) {
474
- this.el = el;
475
- this.SHOW_HIDE_TRANSITION_DELAY_DEFAULT = 0.5;
476
- this.style.transition = this.getTransitionValue();
477
- }
478
- set showHideElement(show) {
479
- this.style.visibility = show
480
- ? UIConstants.CSS_VISIBILITY_VISIBLE
481
- : UIConstants.CSS_VISIBILITY_HIDDEN;
482
- this.style.opacity = show ? 1 : 0;
483
- }
484
- set delay(value) {
485
- this.style.transition = this.getTransitionValue(value);
486
- }
487
- ;
488
- get style() {
489
- return this.el.nativeElement.style;
490
- }
491
- getTransitionValue(delay = this.SHOW_HIDE_TRANSITION_DELAY_DEFAULT) {
492
- return `visibility ${delay}s,
493
- opacity ${delay}s
494
- linear`;
495
- }
496
- }
497
- ShowHideElementDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ShowHideElementDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
498
- ShowHideElementDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ShowHideElementDirective, selector: "[sfcShowHideElement]", inputs: { showHideElement: ["sfcShowHideElement", "showHideElement"], delay: "delay" }, ngImport: i0 });
499
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ShowHideElementDirective, decorators: [{
500
- type: Directive,
501
- args: [{
502
- selector: '[sfcShowHideElement]'
503
- }]
504
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { showHideElement: [{
505
- type: Input,
506
- args: ['sfcShowHideElement']
507
- }], delay: [{
508
- type: Input
509
- }] } });
510
-
511
- class IfDirective {
512
- constructor(el) {
513
- this.el = el;
514
- this.display = this.style.display;
515
- }
516
- set sfcIf(show) {
517
- this.style.display = show
518
- ? this.display || UIConstants.CSS_INITIAL
519
- : UIConstants.CSS_NONE;
520
- }
521
- get style() { return this.el.nativeElement.style; }
522
- }
523
- IfDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IfDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
524
- IfDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: IfDirective, selector: "[sfcIf]", inputs: { sfcIf: "sfcIf" }, ngImport: i0 });
525
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IfDirective, decorators: [{
526
- type: Directive,
527
- args: [{
528
- selector: '[sfcIf]'
529
- }]
530
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { sfcIf: [{
531
- type: Input
532
- }] } });
533
-
534
437
  /**
535
438
  * Set minutes for date
536
439
  * @param date Date value
@@ -803,6 +706,36 @@ function isDateTimeGreatOrEqual(date1, date2) {
803
706
  return new Date(date1.getFullYear(), date1.getMonth(), date1.getDate(), date1.getHours(), date1.getMinutes())
804
707
  >= new Date(date2.getFullYear(), date2.getMonth(), date2.getDate(), date2.getHours(), date2.getMinutes());
805
708
  }
709
+ /**
710
+ * Return true if first time greater or equal to second time
711
+ * @param date1 First date time value
712
+ * @param date2 Second date time value
713
+ * @returns True if first time greater or equal to second time
714
+ */
715
+ function isTimeGreatOrEqual(date1, date2) {
716
+ return new Date(0, 0, 0, date1.getHours(), date1.getMinutes())
717
+ >= new Date(0, 0, 0, date2.getHours(), date2.getMinutes());
718
+ }
719
+ /**
720
+ * Return true if first time less or equal to second time
721
+ * @param date1 First date time value
722
+ * @param date2 Second date time value
723
+ * @returns True if first time less or equal to second time
724
+ */
725
+ function isDateTimeLessOrEqual(date1, date2) {
726
+ return new Date(0, 0, 0, date1.getHours(), date1.getMinutes())
727
+ <= new Date(0, 0, 0, date2.getHours(), date2.getMinutes());
728
+ }
729
+ /**
730
+ * Return true if first time less or equal to second time
731
+ * @param date1 First date time value
732
+ * @param date2 Second date time value
733
+ * @returns True if first time less or equal to second time
734
+ */
735
+ function isTimeLessOrEqual(date1, date2) {
736
+ return new Date(date1.getFullYear(), date1.getMonth(), date1.getDate(), date1.getHours(), date1.getMinutes())
737
+ <= new Date(date2.getFullYear(), date2.getMonth(), date2.getDate(), date2.getHours(), date2.getMinutes());
738
+ }
806
739
  /**
807
740
  * Convert UTC date to local
808
741
  * @param date Date value
@@ -838,6 +771,8 @@ function convertDateToTimestamp(date, locale = DateTimeConstants.DEFAULT_LOCALE)
838
771
  * @returns Age
839
772
  */
840
773
  function getAge(birthdate) {
774
+ if (!birthdate)
775
+ return null;
841
776
  const now = new Date();
842
777
  let age = now.getFullYear() - birthdate.getFullYear();
843
778
  const monthDifference = now.getMonth() - birthdate.getMonth();
@@ -898,11 +833,6 @@ function removePropertyFromObject(obj, property) {
898
833
  delete obj[property];
899
834
  }
900
835
  }
901
- /**
902
- * Deep merge object with others
903
- * @param target Object to merge
904
- * @param sources
905
- */
906
836
  /**
907
837
  * Deep merge object with others
908
838
  * @param target Object to merge
@@ -935,12 +865,20 @@ function mergeDeep(target, ...sources) {
935
865
  const nameof = (name) => name;
936
866
  /**
937
867
  * Determines if the input is a Number or something that can be coerced to a Number
938
- * @param - The input to be tested
868
+ * @param number The input to be tested
939
869
  * @returns - An indication if the input is a Number or can be coerced to a Number
940
870
  */
941
871
  function isNumeric(number) {
942
872
  return !isNaN(parseFloat(number));
943
873
  }
874
+ /**
875
+ * Determines if the input is a string
876
+ * @param value The input to be tested
877
+ * @returns An indication if the input is a string
878
+ */
879
+ function isString(value) {
880
+ return typeof value === 'string';
881
+ }
944
882
  /**
945
883
  * Return true if current browser is Chrome
946
884
  * @returns If current browser is Chrome
@@ -1003,6 +941,11 @@ function isEqual(obj1, obj2) {
1003
941
  // If no errors, return true
1004
942
  return true;
1005
943
  }
944
+ function areFilesEqual() {
945
+ return obj1.lastModified === obj2.lastModified
946
+ && obj1.size === obj2.size
947
+ && obj1.type === obj2.type;
948
+ }
1006
949
  function areFunctionsEqual() {
1007
950
  return obj1.toString() === obj2.toString();
1008
951
  }
@@ -1022,6 +965,8 @@ function isEqual(obj1, obj2) {
1022
965
  return areArraysEqual();
1023
966
  if (type === 'date')
1024
967
  return areDatesEqual();
968
+ if (type === 'file')
969
+ return areFilesEqual();
1025
970
  if (type === 'object')
1026
971
  return areObjectsEqual();
1027
972
  if (type === 'function')
@@ -1037,6 +982,28 @@ function generateGuid() {
1037
982
  return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
1038
983
  };
1039
984
  return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
985
+ }
986
+ /**
987
+ * Check if value is Json parsable string
988
+ * @param value string value
989
+ * @returns True if string can be JSON parsed
990
+ */
991
+ function isJsonString(value) {
992
+ try {
993
+ const json = JSON.parse(value);
994
+ return (typeof json === 'object');
995
+ }
996
+ catch (e) {
997
+ return false;
998
+ }
999
+ }
1000
+ /**
1001
+ * Stop propagation and prevent default
1002
+ * @param event Event object
1003
+ */
1004
+ function stopAndPreventPropagation(event) {
1005
+ event.preventDefault();
1006
+ event.stopPropagation();
1040
1007
  }
1041
1008
 
1042
1009
  /**
@@ -1272,6 +1239,15 @@ property, value) {
1272
1239
  && collection.findIndex(item => item.hasOwnProperty(property)
1273
1240
  && item[property] === value) !== CommonConstants.NOT_FOUND_INDEX;
1274
1241
  }
1242
+ /**
1243
+ * Return true if first collection has item in second collection
1244
+ * @param collection1 Array of objects where search
1245
+ * @param collection2 Array of objects where try to find
1246
+ * @returns
1247
+ */
1248
+ function hasAnyItem(collection1, collection2) {
1249
+ return collection1.some(item => collection2.includes(item));
1250
+ }
1275
1251
  /**
1276
1252
  * Return value from collection by predicate function
1277
1253
  * @param collection Array of items
@@ -1503,6 +1479,23 @@ function updateItemBy(collection, predicate, newItem) {
1503
1479
  */
1504
1480
  function getCollectionOrEmpty(collection) {
1505
1481
  return isDefined(collection) ? collection : [];
1482
+ }
1483
+ /**
1484
+ * Check if arrays are equal
1485
+ * @param a First array
1486
+ * @param b Second array
1487
+ * @returns True if arrays are equal
1488
+ */
1489
+ function isArraysEquals(a, b) {
1490
+ if (a.length !== b.length)
1491
+ return false;
1492
+ a.sort();
1493
+ b.sort();
1494
+ for (let i = 0; i < a.length; i++) {
1495
+ if (a[i] !== b[i])
1496
+ return false;
1497
+ }
1498
+ return true;
1506
1499
  }
1507
1500
 
1508
1501
  /**
@@ -1517,6 +1510,8 @@ function buildHttpParams(value) {
1517
1510
  return httpParams;
1518
1511
  function _build(params, value, path, isArray = false) {
1519
1512
  const ARRAY_PART = ']';
1513
+ if (!value)
1514
+ return;
1520
1515
  Object.keys(value).forEach(key => {
1521
1516
  if (value[key] instanceof Array) {
1522
1517
  _build(params, value[key], `${path}${key}[`, true);
@@ -1532,6 +1527,166 @@ function buildHttpParams(value) {
1532
1527
  }
1533
1528
  }
1534
1529
 
1530
+ class ObservableModel {
1531
+ constructor(defaultValue = null) {
1532
+ this.defaultValue = defaultValue;
1533
+ this.subject = isDefined(this.defaultValue)
1534
+ ? new BehaviorSubject(this.defaultValue) : new Subject();
1535
+ this.value$ = this.subject.asObservable();
1536
+ }
1537
+ get value() {
1538
+ return this.subject instanceof (BehaviorSubject)
1539
+ ? this.subject.value || this.defaultValue : null;
1540
+ }
1541
+ }
1542
+
1543
+ class ReloadService {
1544
+ constructor() {
1545
+ /* Properties */
1546
+ this.model = new ObservableModel();
1547
+ }
1548
+ get reload$() { return this.model.value$; }
1549
+ /* End Properties */
1550
+ reload(...ids) {
1551
+ this.model.subject.next(ids);
1552
+ }
1553
+ }
1554
+ ReloadService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ReloadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1555
+ ReloadService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ReloadService, providedIn: 'root' });
1556
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ReloadService, decorators: [{
1557
+ type: Injectable,
1558
+ args: [{ providedIn: 'root' }]
1559
+ }] });
1560
+
1561
+ class ClickOutsideDirective {
1562
+ constructor(elementRef, document) {
1563
+ this.elementRef = elementRef;
1564
+ this.document = document;
1565
+ /**
1566
+ * Toggler for checking ouside click event
1567
+ */
1568
+ this.listening = false;
1569
+ /**
1570
+ * Emitter for click event
1571
+ */
1572
+ this.action = new EventEmitter();
1573
+ }
1574
+ ngAfterViewInit() {
1575
+ // capture: true allow to catch event in early state (ignore stop propagation)
1576
+ this._clickSubscription = fromEvent(this.document, 'click', { capture: true })
1577
+ .subscribe(event => this.onClick(event));
1578
+ }
1579
+ ngOnDestroy() {
1580
+ var _a;
1581
+ (_a = this._clickSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
1582
+ }
1583
+ onClick(event) {
1584
+ if (event instanceof MouseEvent && this.listening) {
1585
+ const clickOutsideEvent = {
1586
+ target: event.target,
1587
+ value: !this.isDescendant(this.elementRef.nativeElement, event.target)
1588
+ };
1589
+ this.action.emit(clickOutsideEvent);
1590
+ }
1591
+ }
1592
+ isDescendant(parent, child) {
1593
+ let node = child;
1594
+ while (node !== null) {
1595
+ if (node === parent) {
1596
+ return true;
1597
+ }
1598
+ else {
1599
+ node = node.parentNode;
1600
+ }
1601
+ }
1602
+ return false;
1603
+ }
1604
+ }
1605
+ ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ClickOutsideDirective, deps: [{ token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });
1606
+ ClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ClickOutsideDirective, selector: "[sfcClickOutside]", inputs: { listening: ["sfcClickOutside", "listening"] }, outputs: { action: "action" }, ngImport: i0 });
1607
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ClickOutsideDirective, decorators: [{
1608
+ type: Directive,
1609
+ args: [{
1610
+ selector: '[sfcClickOutside]'
1611
+ }]
1612
+ }], ctorParameters: function () {
1613
+ return [{ type: i0.ElementRef }, { type: Document, decorators: [{
1614
+ type: Inject,
1615
+ args: [DOCUMENT]
1616
+ }] }];
1617
+ }, propDecorators: { listening: [{
1618
+ type: Input,
1619
+ args: ['sfcClickOutside']
1620
+ }], action: [{
1621
+ type: Output
1622
+ }] } });
1623
+
1624
+ class ShowHideElementDirective {
1625
+ constructor(el) {
1626
+ this.el = el;
1627
+ this.SHOW_HIDE_TRANSITION_DELAY_DEFAULT = 0.5;
1628
+ this.style.transition = this.getTransitionValue();
1629
+ }
1630
+ set showHideElement(show) {
1631
+ this.style.visibility = show
1632
+ ? UIConstants.CSS_VISIBILITY_VISIBLE
1633
+ : UIConstants.CSS_VISIBILITY_HIDDEN;
1634
+ this.style.opacity = show ? 1 : 0;
1635
+ }
1636
+ set delay(value) {
1637
+ this.style.transition = this.getTransitionValue(value);
1638
+ }
1639
+ ;
1640
+ get style() {
1641
+ return this.el.nativeElement.style;
1642
+ }
1643
+ getTransitionValue(delay = this.SHOW_HIDE_TRANSITION_DELAY_DEFAULT) {
1644
+ return `visibility ${delay}s,
1645
+ opacity ${delay}s
1646
+ linear`;
1647
+ }
1648
+ }
1649
+ ShowHideElementDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ShowHideElementDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1650
+ ShowHideElementDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ShowHideElementDirective, selector: "[sfcShowHideElement]", inputs: { showHideElement: ["sfcShowHideElement", "showHideElement"], delay: "delay" }, ngImport: i0 });
1651
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ShowHideElementDirective, decorators: [{
1652
+ type: Directive,
1653
+ args: [{
1654
+ selector: '[sfcShowHideElement]'
1655
+ }]
1656
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { showHideElement: [{
1657
+ type: Input,
1658
+ args: ['sfcShowHideElement']
1659
+ }], delay: [{
1660
+ type: Input
1661
+ }] } });
1662
+
1663
+ class IfDirective {
1664
+ /* End Properties */
1665
+ constructor(el) {
1666
+ this.el = el;
1667
+ this.display = this.style.display;
1668
+ }
1669
+ /* Inputs */
1670
+ set sfcIf(show) {
1671
+ this.style.display = show
1672
+ ? this.display || UIConstants.CSS_INITIAL
1673
+ : UIConstants.CSS_NONE;
1674
+ }
1675
+ /* End Inputs */
1676
+ /* Properties */
1677
+ get style() { return this.el.nativeElement.style; }
1678
+ }
1679
+ IfDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IfDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1680
+ IfDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: IfDirective, selector: "[sfcIf]", inputs: { sfcIf: "sfcIf" }, ngImport: i0 });
1681
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IfDirective, decorators: [{
1682
+ type: Directive,
1683
+ args: [{
1684
+ selector: '[sfcIf]'
1685
+ }]
1686
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { sfcIf: [{
1687
+ type: Input
1688
+ }] } });
1689
+
1535
1690
  class ThrowElementOnHoverDirective {
1536
1691
  constructor(el) {
1537
1692
  this.el = el;
@@ -1918,11 +2073,10 @@ SwitchMultiCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", vers
1918
2073
  SwitchMultiCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: SwitchMultiCasePipe, name: "sfcSwitchMultiCase" });
1919
2074
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SwitchMultiCasePipe, decorators: [{
1920
2075
  type: Pipe,
1921
- args: [{
1922
- name: 'sfcSwitchMultiCase'
1923
- }]
2076
+ args: [{ name: 'sfcSwitchMultiCase' }]
1924
2077
  }] });
1925
2078
 
2079
+ // This pipe has "pure: false" (impure pipe) which has huge impact on performance!
1926
2080
  class SortByPipe {
1927
2081
  transform(value, path, direction = SortingDirection.Ascending) {
1928
2082
  if (!any(value)) {
@@ -1938,10 +2092,22 @@ class SortByPipe {
1938
2092
  }
1939
2093
  }
1940
2094
  SortByPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SortByPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1941
- SortByPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: SortByPipe, name: "sfcSortBy" });
2095
+ SortByPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: SortByPipe, name: "sfcSortBy", pure: false });
1942
2096
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SortByPipe, decorators: [{
1943
2097
  type: Pipe,
1944
- args: [{ name: 'sfcSortBy' }]
2098
+ args: [{ name: 'sfcSortBy', pure: false }]
2099
+ }] });
2100
+
2101
+ class RepeatPipe {
2102
+ transform(value) {
2103
+ return [].constructor(value);
2104
+ }
2105
+ }
2106
+ RepeatPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: RepeatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2107
+ RepeatPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: RepeatPipe, name: "sfcRepeat" });
2108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: RepeatPipe, decorators: [{
2109
+ type: Pipe,
2110
+ args: [{ name: 'sfcRepeat' }]
1945
2111
  }] });
1946
2112
 
1947
2113
  var ButtonType;
@@ -2251,21 +2417,25 @@ var ModalTemplate;
2251
2417
 
2252
2418
  class ModalService {
2253
2419
  constructor() {
2254
- this.subject = new BehaviorSubject({ open: false });
2255
- this.modal$ = this.subject.asObservable();
2420
+ this.model = new ObservableModel();
2421
+ this.isOpen = false;
2256
2422
  }
2257
- get isOpen() {
2258
- return this.subject.value.open;
2423
+ /* Properties */
2424
+ get modal$() { return this.model.value$; }
2425
+ /* End Properties */
2426
+ toggle(id, args) {
2427
+ this.emit({ open: !this.isOpen, id: id, args: args });
2259
2428
  }
2260
- toggle() {
2261
- this.subject.next({ open: !this.isOpen });
2429
+ close(id, args) {
2430
+ this.emit({ open: false, id: id, args: args });
2262
2431
  }
2263
- close() {
2264
- this.subject.next({ open: false });
2432
+ open(id, args) {
2433
+ this.emit({ open: true, id: id, args: args });
2265
2434
  }
2266
- open(args) {
2267
- this.args = args;
2268
- this.subject.next({ open: true, args: args });
2435
+ emit(event) {
2436
+ this.args = event.args;
2437
+ this.isOpen = event.open;
2438
+ this.model.subject.next(event);
2269
2439
  }
2270
2440
  }
2271
2441
  ModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -2277,6 +2447,84 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2277
2447
  }]
2278
2448
  }] });
2279
2449
 
2450
+ class ModalOpenDirective {
2451
+ /* End Subscriptions */
2452
+ constructor(templateRef, viewContainer, modalService) {
2453
+ this.templateRef = templateRef;
2454
+ this.viewContainer = viewContainer;
2455
+ this.modalService = modalService;
2456
+ this._openSubscription = this.modalService.modal$
2457
+ .pipe(filter((event) => event.id === this.id))
2458
+ .subscribe((event) => {
2459
+ this.viewContainer.clear();
2460
+ if (event.open)
2461
+ this.viewContainer.createEmbeddedView(this.templateRef);
2462
+ });
2463
+ }
2464
+ ngOnDestroy() {
2465
+ this._openSubscription.unsubscribe();
2466
+ }
2467
+ }
2468
+ ModalOpenDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalOpenDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: ModalService }], target: i0.ɵɵFactoryTarget.Directive });
2469
+ ModalOpenDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ModalOpenDirective, selector: "[sfcModalOpen]", inputs: { id: ["sfcModalOpen", "id"] }, ngImport: i0 });
2470
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalOpenDirective, decorators: [{
2471
+ type: Directive,
2472
+ args: [{
2473
+ selector: '[sfcModalOpen]'
2474
+ }]
2475
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: ModalService }]; }, propDecorators: { id: [{
2476
+ type: Input,
2477
+ args: ['sfcModalOpen']
2478
+ }] } });
2479
+
2480
+ class ModalOpenOnClickDirective {
2481
+ /* End Subscriptions */
2482
+ constructor(templateRef, viewContainer, modalService) {
2483
+ this.templateRef = templateRef;
2484
+ this.viewContainer = viewContainer;
2485
+ this.modalService = modalService;
2486
+ this.elements = [];
2487
+ this.clickHandler = (() => {
2488
+ this.viewContainer.clear();
2489
+ this.viewContainer.createEmbeddedView(this.templateRef);
2490
+ this.modalService.toggle(this.id);
2491
+ }).bind(this);
2492
+ }
2493
+ /* Inputs */
2494
+ set modalOpenOnClick(model) {
2495
+ if (!isDefined(model.elements) || !isDefined(model.id))
2496
+ return;
2497
+ this._id = model.id;
2498
+ if (model.elements instanceof HTMLElement)
2499
+ this.elements = [model.elements];
2500
+ else
2501
+ this.elements = model.elements;
2502
+ this.elements.forEach(el => el.addEventListener('click', this.clickHandler));
2503
+ }
2504
+ get id() { return this._id; }
2505
+ ngOnInit() {
2506
+ this._closeSubscription = this.modalService.modal$
2507
+ .pipe(filter((event) => !event.open && this.id === event.id))
2508
+ .subscribe(() => this.viewContainer.clear());
2509
+ }
2510
+ ngOnDestroy() {
2511
+ var _a;
2512
+ (_a = this._closeSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
2513
+ this.elements.forEach(el => el.removeEventListener('click', this.clickHandler));
2514
+ }
2515
+ }
2516
+ ModalOpenOnClickDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalOpenOnClickDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: ModalService }], target: i0.ɵɵFactoryTarget.Directive });
2517
+ ModalOpenOnClickDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ModalOpenOnClickDirective, selector: "[sfcModalOpenOnClick]", inputs: { modalOpenOnClick: ["sfcModalOpenOnClick", "modalOpenOnClick"] }, ngImport: i0 });
2518
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalOpenOnClickDirective, decorators: [{
2519
+ type: Directive,
2520
+ args: [{
2521
+ selector: '[sfcModalOpenOnClick]'
2522
+ }]
2523
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: ModalService }]; }, propDecorators: { modalOpenOnClick: [{
2524
+ type: Input,
2525
+ args: ['sfcModalOpenOnClick']
2526
+ }] } });
2527
+
2280
2528
  class TemplateContentComponent {
2281
2529
  get showDefault() {
2282
2530
  return !isDefined(this.referenceContent)
@@ -2305,6 +2553,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2305
2553
  type: Input
2306
2554
  }] } });
2307
2555
 
2556
+ class DefaultModalHeaderConstants {
2557
+ }
2558
+ DefaultModalHeaderConstants.DEFAULT_MODAL_HEADER_MODEL = {
2559
+ icon: faWindowRestore,
2560
+ showCloseIcon: true,
2561
+ text: 'Modal'
2562
+ };
2563
+
2308
2564
  class CloseComponent {
2309
2565
  constructor() {
2310
2566
  this.faTimes = faTimes;
@@ -2318,61 +2574,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2318
2574
  }] });
2319
2575
 
2320
2576
  class DefaultModalHeaderComponent {
2577
+ /* End Properties */
2321
2578
  constructor(modalService) {
2322
2579
  this.modalService = modalService;
2323
- this.DEFAULT_MODAL_HEADER_MODEL = {
2324
- icon: faWindowRestore,
2325
- showCloseIcon: true,
2326
- text: 'Modal'
2327
- };
2328
- }
2329
- get icon() {
2330
- var _a;
2331
- return ((_a = this.model) === null || _a === void 0 ? void 0 : _a.icon) || faWindowRestore;
2332
2580
  }
2581
+ /* End Inputs */
2582
+ /* Properties */
2583
+ get icon() { var _a; return ((_a = this.model) === null || _a === void 0 ? void 0 : _a.icon) || faWindowRestore; }
2333
2584
  ngOnInit() {
2334
2585
  if (!isDefined(this.model))
2335
- this.model = this.DEFAULT_MODAL_HEADER_MODEL;
2586
+ this.model = DefaultModalHeaderConstants.DEFAULT_MODAL_HEADER_MODEL;
2336
2587
  }
2337
2588
  onClose() {
2338
- this.modalService.close();
2589
+ this.modalService.close(this.id);
2339
2590
  }
2340
2591
  }
2341
2592
  DefaultModalHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DefaultModalHeaderComponent, deps: [{ token: ModalService }], target: i0.ɵɵFactoryTarget.Component });
2342
- DefaultModalHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: DefaultModalHeaderComponent, selector: "sfc-default-modal-header", inputs: { model: "model" }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"content\">\r\n <fa-icon *ngIf=\"icon\" class=\"icon\" [icon]=\"icon\"></fa-icon>\r\n <span *ngIf=\"model.text\" class=\"label\">{{model.text}}</span>\r\n <sfc-close *ngIf=\"model.showCloseIcon\" (click)=\"onClose()\"></sfc-close>\r\n </div>\r\n\r\n <sfc-delimeter></sfc-delimeter>\r\n</div>", styles: [":host{display:inline-flex;width:100%}:host .container{width:100%;padding-bottom:.5em}:host .container .content{display:flex;align-items:center;justify-content:center;padding:.5em 0}:host .container .content .icon{position:absolute;left:1.5em;font-size:1.3em}:host .container .content .label{font-size:1.2em;font-weight:700;-webkit-user-select:none;user-select:none;padding:0 .7em}:host .container .content sfc-close{position:absolute;right:1.5em;color:#545e61}:host .container .content sfc-close:hover{color:#ffce54}:host .container sfc-delimeter.horizontal:before{transition:border-image .5s ease}:host .container sfc-delimeter.horizontal:before,:host-context(.sfc-default-theme) :host .container sfc-delimeter.horizontal:before{border-image:linear-gradient(to right,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 47%,rgba(0,0,0,.3) 53%,rgba(0,0,0,.3) 100%) 100% 1}:host-context(.sfc-dark-theme) :host .container sfc-delimeter.horizontal:before{border-image:linear-gradient(to right,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 47%,rgba(0,0,0,.3) 53%,rgba(0,0,0,.3) 100%) 100% 1}:host .container sfc-delimeter.horizontal:after{transition:border-image .5s ease}:host .container sfc-delimeter.horizontal:after,:host-context(.sfc-default-theme) :host .container sfc-delimeter.horizontal:after{border-image:linear-gradient(to left,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 47%,rgba(0,0,0,.3) 53%,rgba(0,0,0,.3) 100%) 100% 1}:host-context(.sfc-dark-theme) :host .container sfc-delimeter.horizontal:after{border-image:linear-gradient(to left,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 47%,rgba(0,0,0,.3) 53%,rgba(0,0,0,.3) 100%) 100% 1}:host .container sfc-delimeter.horizontal span{color:#545e61}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }, { kind: "component", type: CloseComponent, selector: "sfc-close" }] });
2593
+ DefaultModalHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: DefaultModalHeaderComponent, selector: "sfc-default-modal-header", inputs: { id: "id", model: "model" }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"content\">\r\n <fa-icon *ngIf=\"icon\" class=\"icon\" [icon]=\"icon\"></fa-icon>\r\n <span *ngIf=\"model.text\" class=\"label\">{{model.text}}</span>\r\n <sfc-close *ngIf=\"model.showCloseIcon\" (click)=\"onClose()\"></sfc-close>\r\n </div>\r\n\r\n <sfc-delimeter></sfc-delimeter>\r\n</div>", styles: [":host{display:inline-flex;width:100%}:host .container{width:100%;padding-bottom:.5em}:host .container .content{display:flex;align-items:center;justify-content:center;padding:.5em 0}:host .container .content .icon{position:absolute;left:1.5em;font-size:1.3em}:host .container .content .label{width:80%;font-size:1.2em;font-weight:700;-webkit-user-select:none;user-select:none;padding:0 .7em;white-space:normal;text-align:center}:host .container .content sfc-close{position:absolute;right:1.5em;color:#545e61}:host .container .content sfc-close:hover{color:#ffce54}:host .container sfc-delimeter.horizontal:before{transition:border-image .5s ease}:host .container sfc-delimeter.horizontal:before,:host-context(.sfc-default-theme) :host .container sfc-delimeter.horizontal:before{border-image:linear-gradient(to right,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 47%,rgba(0,0,0,.3) 53%,rgba(0,0,0,.3) 100%) 100% 1}:host-context(.sfc-dark-theme) :host .container sfc-delimeter.horizontal:before{border-image:linear-gradient(to right,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 47%,rgba(0,0,0,.3) 53%,rgba(0,0,0,.3) 100%) 100% 1}:host .container sfc-delimeter.horizontal:after{transition:border-image .5s ease}:host .container sfc-delimeter.horizontal:after,:host-context(.sfc-default-theme) :host .container sfc-delimeter.horizontal:after{border-image:linear-gradient(to left,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 47%,rgba(0,0,0,.3) 53%,rgba(0,0,0,.3) 100%) 100% 1}:host-context(.sfc-dark-theme) :host .container sfc-delimeter.horizontal:after{border-image:linear-gradient(to left,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 47%,rgba(0,0,0,.3) 53%,rgba(0,0,0,.3) 100%) 100% 1}:host .container sfc-delimeter.horizontal span{color:#545e61}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "component", type: DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }, { kind: "component", type: CloseComponent, selector: "sfc-close" }] });
2343
2594
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DefaultModalHeaderComponent, decorators: [{
2344
2595
  type: Component,
2345
- args: [{ selector: 'sfc-default-modal-header', template: "<div class=\"container\">\r\n <div class=\"content\">\r\n <fa-icon *ngIf=\"icon\" class=\"icon\" [icon]=\"icon\"></fa-icon>\r\n <span *ngIf=\"model.text\" class=\"label\">{{model.text}}</span>\r\n <sfc-close *ngIf=\"model.showCloseIcon\" (click)=\"onClose()\"></sfc-close>\r\n </div>\r\n\r\n <sfc-delimeter></sfc-delimeter>\r\n</div>", styles: [":host{display:inline-flex;width:100%}:host .container{width:100%;padding-bottom:.5em}:host .container .content{display:flex;align-items:center;justify-content:center;padding:.5em 0}:host .container .content .icon{position:absolute;left:1.5em;font-size:1.3em}:host .container .content .label{font-size:1.2em;font-weight:700;-webkit-user-select:none;user-select:none;padding:0 .7em}:host .container .content sfc-close{position:absolute;right:1.5em;color:#545e61}:host .container .content sfc-close:hover{color:#ffce54}:host .container sfc-delimeter.horizontal:before{transition:border-image .5s ease}:host .container sfc-delimeter.horizontal:before,:host-context(.sfc-default-theme) :host .container sfc-delimeter.horizontal:before{border-image:linear-gradient(to right,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 47%,rgba(0,0,0,.3) 53%,rgba(0,0,0,.3) 100%) 100% 1}:host-context(.sfc-dark-theme) :host .container sfc-delimeter.horizontal:before{border-image:linear-gradient(to right,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 47%,rgba(0,0,0,.3) 53%,rgba(0,0,0,.3) 100%) 100% 1}:host .container sfc-delimeter.horizontal:after{transition:border-image .5s ease}:host .container sfc-delimeter.horizontal:after,:host-context(.sfc-default-theme) :host .container sfc-delimeter.horizontal:after{border-image:linear-gradient(to left,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 47%,rgba(0,0,0,.3) 53%,rgba(0,0,0,.3) 100%) 100% 1}:host-context(.sfc-dark-theme) :host .container sfc-delimeter.horizontal:after{border-image:linear-gradient(to left,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 47%,rgba(0,0,0,.3) 53%,rgba(0,0,0,.3) 100%) 100% 1}:host .container sfc-delimeter.horizontal span{color:#545e61}\n"] }]
2346
- }], ctorParameters: function () { return [{ type: ModalService }]; }, propDecorators: { model: [{
2596
+ args: [{ selector: 'sfc-default-modal-header', template: "<div class=\"container\">\r\n <div class=\"content\">\r\n <fa-icon *ngIf=\"icon\" class=\"icon\" [icon]=\"icon\"></fa-icon>\r\n <span *ngIf=\"model.text\" class=\"label\">{{model.text}}</span>\r\n <sfc-close *ngIf=\"model.showCloseIcon\" (click)=\"onClose()\"></sfc-close>\r\n </div>\r\n\r\n <sfc-delimeter></sfc-delimeter>\r\n</div>", styles: [":host{display:inline-flex;width:100%}:host .container{width:100%;padding-bottom:.5em}:host .container .content{display:flex;align-items:center;justify-content:center;padding:.5em 0}:host .container .content .icon{position:absolute;left:1.5em;font-size:1.3em}:host .container .content .label{width:80%;font-size:1.2em;font-weight:700;-webkit-user-select:none;user-select:none;padding:0 .7em;white-space:normal;text-align:center}:host .container .content sfc-close{position:absolute;right:1.5em;color:#545e61}:host .container .content sfc-close:hover{color:#ffce54}:host .container sfc-delimeter.horizontal:before{transition:border-image .5s ease}:host .container sfc-delimeter.horizontal:before,:host-context(.sfc-default-theme) :host .container sfc-delimeter.horizontal:before{border-image:linear-gradient(to right,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 47%,rgba(0,0,0,.3) 53%,rgba(0,0,0,.3) 100%) 100% 1}:host-context(.sfc-dark-theme) :host .container sfc-delimeter.horizontal:before{border-image:linear-gradient(to right,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 47%,rgba(0,0,0,.3) 53%,rgba(0,0,0,.3) 100%) 100% 1}:host .container sfc-delimeter.horizontal:after{transition:border-image .5s ease}:host .container sfc-delimeter.horizontal:after,:host-context(.sfc-default-theme) :host .container sfc-delimeter.horizontal:after{border-image:linear-gradient(to left,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 47%,rgba(0,0,0,.3) 53%,rgba(0,0,0,.3) 100%) 100% 1}:host-context(.sfc-dark-theme) :host .container sfc-delimeter.horizontal:after{border-image:linear-gradient(to left,rgba(0,0,0,0) 0%,rgba(0,0,0,.3) 47%,rgba(0,0,0,.3) 53%,rgba(0,0,0,.3) 100%) 100% 1}:host .container sfc-delimeter.horizontal span{color:#545e61}\n"] }]
2597
+ }], ctorParameters: function () { return [{ type: ModalService }]; }, propDecorators: { id: [{
2598
+ type: Input
2599
+ }], model: [{
2347
2600
  type: Input
2348
2601
  }] } });
2349
2602
 
2603
+ class DefaultModalFooterConstants {
2604
+ }
2605
+ DefaultModalFooterConstants.BUTTON_CUSTOM_SIZE = 0.9;
2606
+ DefaultModalFooterConstants.DEFAULT_MODAL_FOOTER_MODEL = {
2607
+ cancelButton: true,
2608
+ applyButton: true,
2609
+ applyButtonText: 'Ok',
2610
+ cancelButtonText: 'Cancel'
2611
+ };
2612
+
2350
2613
  class DefaultModalFooterComponent {
2614
+ /* End Inputs */
2351
2615
  constructor(modalService) {
2352
2616
  this.modalService = modalService;
2353
- this.DEFAULT_MODAL_FOOTER_MODEL = {
2354
- cancelButton: true,
2355
- applyButton: true,
2356
- applyButtonText: 'Ok',
2357
- cancelButtonText: 'Cancel'
2358
- };
2359
- this.BUTTON_CUSTOM_SIZE = 0.9;
2360
2617
  this.ComponentSize = ComponentSize;
2361
2618
  this.ButtonType = ButtonType;
2619
+ // component
2620
+ this.Constants = DefaultModalFooterConstants;
2362
2621
  }
2363
2622
  ngOnInit() {
2364
2623
  if (!this.model) {
2365
- this.model = Object.assign({}, this.DEFAULT_MODAL_FOOTER_MODEL);
2624
+ this.model = Object.assign({}, DefaultModalFooterConstants.DEFAULT_MODAL_FOOTER_MODEL);
2366
2625
  }
2367
2626
  else {
2368
2627
  if (isNullOrEmptyString(this.model.applyButtonText))
2369
- this.model.applyButtonText = this.DEFAULT_MODAL_FOOTER_MODEL.applyButtonText;
2628
+ this.model.applyButtonText = DefaultModalFooterConstants.DEFAULT_MODAL_FOOTER_MODEL.applyButtonText;
2370
2629
  if (isNullOrEmptyString(this.model.cancelButtonText))
2371
- this.model.cancelButtonText = this.DEFAULT_MODAL_FOOTER_MODEL.cancelButtonText;
2630
+ this.model.cancelButtonText = DefaultModalFooterConstants.DEFAULT_MODAL_FOOTER_MODEL.cancelButtonText;
2372
2631
  if (!isDefined(this.model.applyButton))
2373
- this.model.applyButton = this.DEFAULT_MODAL_FOOTER_MODEL.applyButton;
2632
+ this.model.applyButton = DefaultModalFooterConstants.DEFAULT_MODAL_FOOTER_MODEL.applyButton;
2374
2633
  if (!isDefined(this.model.cancelButton))
2375
- this.model.cancelButton = this.DEFAULT_MODAL_FOOTER_MODEL.cancelButton;
2634
+ this.model.cancelButton = DefaultModalFooterConstants.DEFAULT_MODAL_FOOTER_MODEL.cancelButton;
2376
2635
  }
2377
2636
  }
2378
2637
  onButtonClick(isCancelButton = false) {
@@ -2387,21 +2646,27 @@ class DefaultModalFooterComponent {
2387
2646
  return this.model.onApply(this.modalService.args);
2388
2647
  }
2389
2648
  }
2390
- this.modalService.toggle();
2649
+ this.modalService.toggle(this.id);
2391
2650
  }
2392
2651
  }
2393
2652
  DefaultModalFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DefaultModalFooterComponent, deps: [{ token: ModalService }], target: i0.ɵɵFactoryTarget.Component });
2394
- DefaultModalFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: DefaultModalFooterComponent, selector: "sfc-default-modal-footer", inputs: { model: "model" }, ngImport: i0, template: "<div class=\"container\">\r\n <sfc-button *ngIf=\"model.applyButton\" [sfcComponentSize] [customSize]=\"BUTTON_CUSTOM_SIZE\" [text]=\"model.applyButtonText\"\r\n [types]=\"[ButtonType.Rounded]\" (click)=\"onButtonClick()\">\r\n </sfc-button>\r\n <sfc-button *ngIf=\"model.cancelButton\" [sfcComponentSize] [customSize]=\"BUTTON_CUSTOM_SIZE\" [text]=\"model.cancelButtonText\"\r\n [types]=\"[ButtonType.Rounded]\" (click)=\"onButtonClick(true)\">\r\n </sfc-button>\r\n</div>", styles: [":host{display:inline-flex;width:100%}:host .container{display:flex;justify-content:center;align-items:center;width:100%}:host .container sfc-button:first-child{padding-right:.3em}:host .container sfc-button:nth-child(2){padding-left:.3em}:host .container ::ng-deep sfc-button .button.rounded{min-width:5em}:host .container ::ng-deep sfc-button .button:not(:hover){color:#545e61!important;border-color:#545e61!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ComponentSizeDirective, selector: "[sfcComponentSize]", inputs: ["sfcComponentSize", "customSize"] }, { kind: "component", type: ButtonComponent, selector: "sfc-button", inputs: ["text", "iconBefore", "iconAfter", "disabled", "types"] }] });
2653
+ DefaultModalFooterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: DefaultModalFooterComponent, selector: "sfc-default-modal-footer", inputs: { id: "id", model: "model" }, ngImport: i0, template: "<div class=\"container\">\r\n <sfc-button *ngIf=\"model.applyButton\" [sfcComponentSize] [customSize]=\"Constants.BUTTON_CUSTOM_SIZE\"\r\n [text]=\"model.applyButtonText\" [types]=\"[ButtonType.Rounded]\" (click)=\"onButtonClick()\">\r\n </sfc-button>\r\n <sfc-button *ngIf=\"model.cancelButton\" [sfcComponentSize] [customSize]=\"Constants.BUTTON_CUSTOM_SIZE\"\r\n [text]=\"model.cancelButtonText\" [types]=\"[ButtonType.Rounded]\" (click)=\"onButtonClick(true)\">\r\n </sfc-button>\r\n</div>", styles: [":host{display:inline-flex;width:100%}:host .container{display:flex;justify-content:center;align-items:center;width:100%}:host .container sfc-button:first-child{padding-right:.3em}:host .container sfc-button:nth-child(2){padding-left:.3em}:host .container ::ng-deep sfc-button .button.rounded{min-width:5em}:host .container ::ng-deep sfc-button .button:not(:hover){color:#545e61!important;border-color:#545e61!important}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: ComponentSizeDirective, selector: "[sfcComponentSize]", inputs: ["sfcComponentSize", "customSize"] }, { kind: "component", type: ButtonComponent, selector: "sfc-button", inputs: ["text", "iconBefore", "iconAfter", "disabled", "types"] }] });
2395
2654
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DefaultModalFooterComponent, decorators: [{
2396
2655
  type: Component,
2397
- args: [{ selector: 'sfc-default-modal-footer', template: "<div class=\"container\">\r\n <sfc-button *ngIf=\"model.applyButton\" [sfcComponentSize] [customSize]=\"BUTTON_CUSTOM_SIZE\" [text]=\"model.applyButtonText\"\r\n [types]=\"[ButtonType.Rounded]\" (click)=\"onButtonClick()\">\r\n </sfc-button>\r\n <sfc-button *ngIf=\"model.cancelButton\" [sfcComponentSize] [customSize]=\"BUTTON_CUSTOM_SIZE\" [text]=\"model.cancelButtonText\"\r\n [types]=\"[ButtonType.Rounded]\" (click)=\"onButtonClick(true)\">\r\n </sfc-button>\r\n</div>", styles: [":host{display:inline-flex;width:100%}:host .container{display:flex;justify-content:center;align-items:center;width:100%}:host .container sfc-button:first-child{padding-right:.3em}:host .container sfc-button:nth-child(2){padding-left:.3em}:host .container ::ng-deep sfc-button .button.rounded{min-width:5em}:host .container ::ng-deep sfc-button .button:not(:hover){color:#545e61!important;border-color:#545e61!important}\n"] }]
2398
- }], ctorParameters: function () { return [{ type: ModalService }]; }, propDecorators: { model: [{
2656
+ args: [{ selector: 'sfc-default-modal-footer', template: "<div class=\"container\">\r\n <sfc-button *ngIf=\"model.applyButton\" [sfcComponentSize] [customSize]=\"Constants.BUTTON_CUSTOM_SIZE\"\r\n [text]=\"model.applyButtonText\" [types]=\"[ButtonType.Rounded]\" (click)=\"onButtonClick()\">\r\n </sfc-button>\r\n <sfc-button *ngIf=\"model.cancelButton\" [sfcComponentSize] [customSize]=\"Constants.BUTTON_CUSTOM_SIZE\"\r\n [text]=\"model.cancelButtonText\" [types]=\"[ButtonType.Rounded]\" (click)=\"onButtonClick(true)\">\r\n </sfc-button>\r\n</div>", styles: [":host{display:inline-flex;width:100%}:host .container{display:flex;justify-content:center;align-items:center;width:100%}:host .container sfc-button:first-child{padding-right:.3em}:host .container sfc-button:nth-child(2){padding-left:.3em}:host .container ::ng-deep sfc-button .button.rounded{min-width:5em}:host .container ::ng-deep sfc-button .button:not(:hover){color:#545e61!important;border-color:#545e61!important}\n"] }]
2657
+ }], ctorParameters: function () { return [{ type: ModalService }]; }, propDecorators: { id: [{
2658
+ type: Input
2659
+ }], model: [{
2399
2660
  type: Input
2400
2661
  }] } });
2401
2662
 
2402
2663
  class ModalComponent {
2403
- constructor(modalService) {
2664
+ /* End Properties */
2665
+ constructor(modalService, document, openDirective, openOnClickDirective) {
2404
2666
  this.modalService = modalService;
2667
+ this.document = document;
2668
+ this.openDirective = openDirective;
2669
+ this.openOnClickDirective = openOnClickDirective;
2405
2670
  this.ModalTemplate = ModalTemplate;
2406
2671
  // End Defaults
2407
2672
  this.hideOnEsc = true;
@@ -2410,17 +2675,32 @@ class ModalComponent {
2410
2675
  this.showHeader = true;
2411
2676
  // hide modal footer (even default)
2412
2677
  this.showFooter = true;
2678
+ // remember body overflow
2679
+ this.bodyOverflow = this.document.body.style.overflow;
2413
2680
  }
2414
2681
  onEscapeKeyDownHandler() {
2415
2682
  if (this.hideOnEsc)
2416
2683
  this.close();
2417
2684
  }
2685
+ /* Properties */
2686
+ get id() {
2687
+ return isDefined(this.openOnClickDirective)
2688
+ ? this.openOnClickDirective.id : this.openDirective.id;
2689
+ }
2690
+ ngAfterViewInit() {
2691
+ // set body overflow to hidden, to prevent page scrolling
2692
+ this.document.body.style.overflow = UIConstants.CSS_VISIBILITY_HIDDEN;
2693
+ }
2694
+ ngOnDestroy() {
2695
+ // return back body overflow value when modal has closed
2696
+ this.document.body.style.overflow = this.bodyOverflow;
2697
+ }
2418
2698
  close() {
2419
- this.modalService.close();
2699
+ this.modalService.close(this.id);
2420
2700
  }
2421
2701
  }
2422
- ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalComponent, deps: [{ token: ModalService }], target: i0.ɵɵFactoryTarget.Component });
2423
- ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ModalComponent, selector: "sfc-modal", inputs: { body: "body", header: "header", footer: "footer", defaultHeaderModel: "defaultHeaderModel", defaultFooterModel: "defaultFooterModel", hideOnEsc: "hideOnEsc", hideOnClickOutside: "hideOnClickOutside", showHeader: "showHeader", showFooter: "showFooter" }, host: { listeners: { "document:keydown.escape": "onEscapeKeyDownHandler()" } }, queries: [{ propertyName: "templates", predicate: TemplateReferenceDirective, read: TemplateReferenceDirective }], ngImport: i0, template: "<div class=\"overlay\" [@hideOverlay] (click)=\"hideOnClickOutside && close()\">\r\n <div class=\"content\" [@hideContent] (click)=\"$event.stopPropagation()\">\r\n\r\n <div *ngIf=\"showHeader\" class=\"header\">\r\n\r\n <sfc-template-content [referenceContent]=\"header\" [templatesContent]=\"templates\"\r\n [templateType]=\"ModalTemplate.Header\" [defaultContent]=\"defaultHeader\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultHeader>\r\n <sfc-default-modal-header [model]=\"defaultHeaderModel\"> </sfc-default-modal-header>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n <div class=\"body\">\r\n <sfc-template-content [referenceContent]=\"body\" [templatesContent]=\"templates\"\r\n [templateType]=\"ModalTemplate.Body\">\r\n </sfc-template-content>\r\n </div>\r\n\r\n <div *ngIf=\"showFooter\" class=\"footer\">\r\n\r\n <sfc-template-content [referenceContent]=\"footer\" [templatesContent]=\"templates\"\r\n [templateType]=\"ModalTemplate.Footer\" [defaultContent]=\"defaultFooter\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultFooter>\r\n <sfc-default-modal-footer [model]=\"defaultFooterModel\"></sfc-default-modal-footer>\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n</div>", styles: [".overlay{display:flex;align-items:center;justify-content:center;position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;background-color:#0009;-webkit-backface-visibility:visible;backface-visibility:visible;animation:expand-overlay .4s cubic-bezier(.55,0,.1,1)}@keyframes expand-overlay{0%{visibility:hidden;opacity:0}}.overlay .content{display:flex;align-items:center;position:relative;padding:.9em 1.5em;margin:auto;background-color:#f5f7fa;max-width:calc(100% - 3em);max-height:calc(100% - 3em);border-radius:3px;box-shadow:0 .125em .625em #656d78;transform:scale(1);flex-direction:column;animation:expand-modal .4s cubic-bezier(.55,0,.1,1)}@keyframes expand-modal{0%{visibility:hidden;opacity:0;transform:scale(1.2)}}.overlay .content>div{width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:#545e61;flex-direction:row;display:flex;flex:0 0 auto;justify-content:center}.overlay .content>div.body{overflow-y:auto;flex:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TemplateContentComponent, selector: "sfc-template-content", inputs: ["contextData", "referenceContent", "templateType", "templatesContent", "defaultContent"] }, { kind: "component", type: DefaultModalHeaderComponent, selector: "sfc-default-modal-header", inputs: ["model"] }, { kind: "component", type: DefaultModalFooterComponent, selector: "sfc-default-modal-footer", inputs: ["model"] }], animations: [
2702
+ ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalComponent, deps: [{ token: ModalService }, { token: DOCUMENT }, { token: ModalOpenDirective, optional: true }, { token: ModalOpenOnClickDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
2703
+ ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ModalComponent, selector: "sfc-modal", inputs: { body: "body", header: "header", footer: "footer", defaultHeaderModel: "defaultHeaderModel", defaultFooterModel: "defaultFooterModel", hideOnEsc: "hideOnEsc", hideOnClickOutside: "hideOnClickOutside", showHeader: "showHeader", showFooter: "showFooter" }, host: { listeners: { "document:keydown.escape": "onEscapeKeyDownHandler()" } }, queries: [{ propertyName: "templates", predicate: TemplateReferenceDirective, read: TemplateReferenceDirective }], ngImport: i0, template: "<div class=\"overlay\" [@hideOverlay] (click)=\"hideOnClickOutside && close()\">\r\n <div class=\"content\" [@hideContent] (click)=\"$event.stopPropagation()\">\r\n\r\n <div *ngIf=\"showHeader\" class=\"header\">\r\n <sfc-template-content [referenceContent]=\"header\" [templatesContent]=\"templates\"\r\n [templateType]=\"ModalTemplate.Header\" [defaultContent]=\"defaultHeader\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultHeader>\r\n <sfc-default-modal-header [id]=\"id\" [model]=\"defaultHeaderModel\"></sfc-default-modal-header>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"body\">\r\n <sfc-template-content [referenceContent]=\"body\" [templatesContent]=\"templates\"\r\n [templateType]=\"ModalTemplate.Body\" [contextData]=\"modalService.args\">\r\n </sfc-template-content>\r\n </div>\r\n\r\n <div *ngIf=\"showFooter\" class=\"footer\">\r\n <sfc-template-content [referenceContent]=\"footer\" [templatesContent]=\"templates\"\r\n [templateType]=\"ModalTemplate.Footer\" [defaultContent]=\"defaultFooter\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultFooter>\r\n <sfc-default-modal-footer [id]=\"id\" [model]=\"defaultFooterModel\"></sfc-default-modal-footer>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</div>", styles: [".overlay{display:flex;align-items:center;justify-content:center;position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;background-color:#0009;-webkit-backface-visibility:visible;backface-visibility:visible;animation:expand-overlay .4s cubic-bezier(.55,0,.1,1)}@keyframes expand-overlay{0%{visibility:hidden;opacity:0}}.overlay .content{display:flex;align-items:center;position:relative;padding:.9em 1.5em;margin:auto;background-color:#f5f7fa;max-width:calc(100% - 3em);max-height:calc(100% - 3em);border-radius:3px;box-shadow:0 .125em .625em #656d78;transform:scale(1);flex-direction:column;animation:expand-modal .4s cubic-bezier(.55,0,.1,1)}@keyframes expand-modal{0%{visibility:hidden;opacity:0;transform:scale(1.2)}}.overlay .content>div{width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:#545e61;flex-direction:row;display:flex;flex:0 0 auto;justify-content:center}.overlay .content>div.body{overflow-y:auto;flex:0}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: TemplateContentComponent, selector: "sfc-template-content", inputs: ["contextData", "referenceContent", "templateType", "templatesContent", "defaultContent"] }, { kind: "component", type: DefaultModalHeaderComponent, selector: "sfc-default-modal-header", inputs: ["id", "model"] }, { kind: "component", type: DefaultModalFooterComponent, selector: "sfc-default-modal-footer", inputs: ["id", "model"] }], animations: [
2424
2704
  trigger('hideOverlay', [
2425
2705
  state('initial', style({ opacity: 1, visibility: 'visible' })),
2426
2706
  state('void', style({ opacity: 0, visibility: 'hidden' })),
@@ -2465,8 +2745,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2465
2745
  state('void', style({ opacity: 0, visibility: 'hidden', transform: 'scale(1.2)' })),
2466
2746
  transition('* => void', animate('400ms cubic-bezier(.55, 0, .1, 1)'))
2467
2747
  ])
2468
- ], template: "<div class=\"overlay\" [@hideOverlay] (click)=\"hideOnClickOutside && close()\">\r\n <div class=\"content\" [@hideContent] (click)=\"$event.stopPropagation()\">\r\n\r\n <div *ngIf=\"showHeader\" class=\"header\">\r\n\r\n <sfc-template-content [referenceContent]=\"header\" [templatesContent]=\"templates\"\r\n [templateType]=\"ModalTemplate.Header\" [defaultContent]=\"defaultHeader\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultHeader>\r\n <sfc-default-modal-header [model]=\"defaultHeaderModel\"> </sfc-default-modal-header>\r\n </ng-template>\r\n\r\n </div>\r\n\r\n <div class=\"body\">\r\n <sfc-template-content [referenceContent]=\"body\" [templatesContent]=\"templates\"\r\n [templateType]=\"ModalTemplate.Body\">\r\n </sfc-template-content>\r\n </div>\r\n\r\n <div *ngIf=\"showFooter\" class=\"footer\">\r\n\r\n <sfc-template-content [referenceContent]=\"footer\" [templatesContent]=\"templates\"\r\n [templateType]=\"ModalTemplate.Footer\" [defaultContent]=\"defaultFooter\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultFooter>\r\n <sfc-default-modal-footer [model]=\"defaultFooterModel\"></sfc-default-modal-footer>\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n</div>", styles: [".overlay{display:flex;align-items:center;justify-content:center;position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;background-color:#0009;-webkit-backface-visibility:visible;backface-visibility:visible;animation:expand-overlay .4s cubic-bezier(.55,0,.1,1)}@keyframes expand-overlay{0%{visibility:hidden;opacity:0}}.overlay .content{display:flex;align-items:center;position:relative;padding:.9em 1.5em;margin:auto;background-color:#f5f7fa;max-width:calc(100% - 3em);max-height:calc(100% - 3em);border-radius:3px;box-shadow:0 .125em .625em #656d78;transform:scale(1);flex-direction:column;animation:expand-modal .4s cubic-bezier(.55,0,.1,1)}@keyframes expand-modal{0%{visibility:hidden;opacity:0;transform:scale(1.2)}}.overlay .content>div{width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:#545e61;flex-direction:row;display:flex;flex:0 0 auto;justify-content:center}.overlay .content>div.body{overflow-y:auto;flex:0}\n"] }]
2469
- }], ctorParameters: function () { return [{ type: ModalService }]; }, propDecorators: { body: [{
2748
+ ], template: "<div class=\"overlay\" [@hideOverlay] (click)=\"hideOnClickOutside && close()\">\r\n <div class=\"content\" [@hideContent] (click)=\"$event.stopPropagation()\">\r\n\r\n <div *ngIf=\"showHeader\" class=\"header\">\r\n <sfc-template-content [referenceContent]=\"header\" [templatesContent]=\"templates\"\r\n [templateType]=\"ModalTemplate.Header\" [defaultContent]=\"defaultHeader\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultHeader>\r\n <sfc-default-modal-header [id]=\"id\" [model]=\"defaultHeaderModel\"></sfc-default-modal-header>\r\n </ng-template>\r\n </div>\r\n\r\n <div class=\"body\">\r\n <sfc-template-content [referenceContent]=\"body\" [templatesContent]=\"templates\"\r\n [templateType]=\"ModalTemplate.Body\" [contextData]=\"modalService.args\">\r\n </sfc-template-content>\r\n </div>\r\n\r\n <div *ngIf=\"showFooter\" class=\"footer\">\r\n <sfc-template-content [referenceContent]=\"footer\" [templatesContent]=\"templates\"\r\n [templateType]=\"ModalTemplate.Footer\" [defaultContent]=\"defaultFooter\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultFooter>\r\n <sfc-default-modal-footer [id]=\"id\" [model]=\"defaultFooterModel\"></sfc-default-modal-footer>\r\n </ng-template>\r\n </div>\r\n </div>\r\n</div>", styles: [".overlay{display:flex;align-items:center;justify-content:center;position:fixed;top:0;left:0;width:100%;height:100%;z-index:9999;background-color:#0009;-webkit-backface-visibility:visible;backface-visibility:visible;animation:expand-overlay .4s cubic-bezier(.55,0,.1,1)}@keyframes expand-overlay{0%{visibility:hidden;opacity:0}}.overlay .content{display:flex;align-items:center;position:relative;padding:.9em 1.5em;margin:auto;background-color:#f5f7fa;max-width:calc(100% - 3em);max-height:calc(100% - 3em);border-radius:3px;box-shadow:0 .125em .625em #656d78;transform:scale(1);flex-direction:column;animation:expand-modal .4s cubic-bezier(.55,0,.1,1)}@keyframes expand-modal{0%{visibility:hidden;opacity:0;transform:scale(1.2)}}.overlay .content>div{width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:#545e61;flex-direction:row;display:flex;flex:0 0 auto;justify-content:center}.overlay .content>div.body{overflow-y:auto;flex:0}\n"] }]
2749
+ }], ctorParameters: function () {
2750
+ return [{ type: ModalService }, { type: Document, decorators: [{
2751
+ type: Inject,
2752
+ args: [DOCUMENT]
2753
+ }] }, { type: ModalOpenDirective, decorators: [{
2754
+ type: Optional
2755
+ }] }, { type: ModalOpenOnClickDirective, decorators: [{
2756
+ type: Optional
2757
+ }] }];
2758
+ }, propDecorators: { body: [{
2470
2759
  type: Input
2471
2760
  }], header: [{
2472
2761
  type: Input
@@ -2492,77 +2781,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2492
2781
  args: [TemplateReferenceDirective, { read: TemplateReferenceDirective }]
2493
2782
  }] } });
2494
2783
 
2495
- class ModalOpenOnClickDirective {
2496
- constructor(templateRef, viewContainer, modalService) {
2497
- this.templateRef = templateRef;
2498
- this.viewContainer = viewContainer;
2499
- this.modalService = modalService;
2500
- this.clickHandler = (() => {
2501
- this.viewContainer.clear();
2502
- this.viewContainer.createEmbeddedView(this.templateRef);
2503
- this.modalService.toggle();
2504
- }).bind(this);
2505
- this.elements = [];
2506
- }
2507
- set modalOpenOnClick(elements) {
2508
- if (!isDefined(elements))
2509
- return;
2510
- if (elements instanceof HTMLElement)
2511
- this.elements = [elements];
2512
- else
2513
- this.elements = elements;
2514
- this.elements.forEach(el => {
2515
- el.addEventListener('click', this.clickHandler);
2516
- });
2517
- }
2518
- ngOnInit() {
2519
- this._closeSubscription = this.modalService.modal$
2520
- .pipe(filter((event) => !event.open))
2521
- .subscribe(() => this.viewContainer.clear());
2522
- }
2523
- ngOnDestroy() {
2524
- var _a;
2525
- (_a = this._closeSubscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
2526
- this.elements.forEach(el => el.removeEventListener('click', this.clickHandler));
2527
- }
2528
- }
2529
- ModalOpenOnClickDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalOpenOnClickDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: ModalService }], target: i0.ɵɵFactoryTarget.Directive });
2530
- ModalOpenOnClickDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ModalOpenOnClickDirective, selector: "[sfcModalOpenOnClick]", inputs: { modalOpenOnClick: ["sfcModalOpenOnClick", "modalOpenOnClick"] }, ngImport: i0 });
2531
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalOpenOnClickDirective, decorators: [{
2532
- type: Directive,
2533
- args: [{
2534
- selector: '[sfcModalOpenOnClick]'
2535
- }]
2536
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: ModalService }]; }, propDecorators: { modalOpenOnClick: [{
2537
- type: Input,
2538
- args: ['sfcModalOpenOnClick']
2539
- }] } });
2540
-
2541
- class ModalOpenDirective {
2542
- constructor(templateRef, viewContainer, modalService) {
2543
- this.templateRef = templateRef;
2544
- this.viewContainer = viewContainer;
2545
- this.modalService = modalService;
2546
- this._openSubscription = this.modalService.modal$
2547
- .subscribe((event) => {
2548
- this.viewContainer.clear();
2549
- if (event.open)
2550
- this.viewContainer.createEmbeddedView(this.templateRef);
2551
- });
2552
- }
2553
- ngOnDestroy() {
2554
- this._openSubscription.unsubscribe();
2555
- }
2556
- }
2557
- ModalOpenDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalOpenDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }, { token: ModalService }], target: i0.ɵɵFactoryTarget.Directive });
2558
- ModalOpenDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ModalOpenDirective, selector: "[sfcModalOpen]", ngImport: i0 });
2559
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalOpenDirective, decorators: [{
2560
- type: Directive,
2561
- args: [{
2562
- selector: '[sfcModalOpen]'
2563
- }]
2564
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: ModalService }]; } });
2565
-
2566
2784
  class HamburgerBaseComponent {
2567
2785
  constructor() {
2568
2786
  this.open = false;
@@ -2661,13 +2879,17 @@ class ToggleSwitcherComponent {
2661
2879
  constructor() {
2662
2880
  this.active = false;
2663
2881
  this.disabled = false;
2664
- this.onClick = () => this.active = !this.active;
2882
+ this.toggle = new EventEmitter(this.active);
2883
+ this.onClick = () => {
2884
+ this.active = !this.active;
2885
+ this.toggle.emit(this.active);
2886
+ };
2665
2887
  this.leftModel = { label: 'Left' };
2666
2888
  this.rightModel = { label: 'Right' };
2667
2889
  }
2668
2890
  }
2669
2891
  ToggleSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ToggleSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2670
- ToggleSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ToggleSwitcherComponent, selector: "sfc-toggle-switcher", inputs: { active: "active", disabled: "disabled", leftModel: "leftModel", rightModel: "rightModel" }, host: { listeners: { "click": "onClick()" }, properties: { "class.active": "this.active", "class.disabled": "this.disabled" } }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"toggle\"></div>\r\n <div class=\"names\">\r\n <p class=\"left\" *ngIf=\"leftModel\">\r\n <fa-icon *ngIf=\"leftModel.icon\" [icon]=\"leftModel.icon\"></fa-icon>\r\n <span *ngIf=\"leftModel.label\">{{leftModel.label}}</span>\r\n </p>\r\n <p class=\"right\" *ngIf=\"rightModel\">\r\n <fa-icon *ngIf=\"rightModel.icon\" [icon]=\"rightModel.icon\"></fa-icon>\r\n <span *ngIf=\"rightModel.label\">{{rightModel.label}}</span>\r\n </p>\r\n </div>\r\n</div>", styles: [":host .container,:host .toggle{height:100%;border-radius:100px}:host .container{background-color:#e6e9ed;color:#545e61;border:.1875em solid;border-radius:100px;border-color:#e6e9ed;position:relative;cursor:pointer}:host .container .toggle{position:absolute;width:50%;background-color:#fff;transition:transform .3s cubic-bezier(.25,.46,.45,.94)}:host .container .names{font-size:90%;font-weight:bolder;width:100%;height:100%;position:relative;display:flex;justify-content:space-around;align-items:center;-webkit-user-select:none;user-select:none;overflow:hidden}:host .container .names p{font-size:90%;text-align:center;margin:0;padding:.5em 1em}:host .container .names p span{padding-left:.3em}:host .container .names p.right{opacity:.5}:host.active .container{background-color:#e6e9ed}:host.active .container .toggle{transform:translate(100%);background-color:#fff}:host.active .container .names{color:#545e61}:host.active .container .names .left{opacity:.5}:host.active .container .names .right{opacity:1}:host.disabled{pointer-events:none}:host.disabled .container{transition:background-color .5s ease;transition:border-color .5s ease}:host.disabled .container,:host-context(.sfc-default-theme) :host.disabled .container{background-color:#f6f6f6}:host-context(.sfc-dark-theme) :host.disabled .container{background-color:#656d78}:host.disabled .container,:host-context(.sfc-default-theme) :host.disabled .container{border-color:#f6f6f6}:host-context(.sfc-dark-theme) :host.disabled .container{border-color:#656d78}:host.disabled .container .toggle{transition:background-color .5s ease;box-shadow:none}:host.disabled .container .toggle,:host-context(.sfc-default-theme) :host.disabled .container .toggle{background-color:#e6e9ed}:host-context(.sfc-dark-theme) :host.disabled .container .toggle{background-color:#aab2bd}:host.disabled .container .names{transition:color .5s ease}:host.disabled .container .names,:host-context(.sfc-default-theme) :host.disabled .container .names{color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .container .names{color:#e9e9e9}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] });
2892
+ ToggleSwitcherComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ToggleSwitcherComponent, selector: "sfc-toggle-switcher", inputs: { active: "active", disabled: "disabled", leftModel: "leftModel", rightModel: "rightModel" }, outputs: { toggle: "toggle" }, host: { listeners: { "click": "onClick()" }, properties: { "class.active": "this.active", "class.disabled": "this.disabled" } }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"toggle\"></div>\r\n <div class=\"names\">\r\n <p class=\"left\" *ngIf=\"leftModel\">\r\n <fa-icon *ngIf=\"leftModel.icon\" [icon]=\"leftModel.icon\"></fa-icon>\r\n <span *ngIf=\"leftModel.label\">{{leftModel.label}}</span>\r\n </p>\r\n <p class=\"right\" *ngIf=\"rightModel\">\r\n <fa-icon *ngIf=\"rightModel.icon\" [icon]=\"rightModel.icon\"></fa-icon>\r\n <span *ngIf=\"rightModel.label\">{{rightModel.label}}</span>\r\n </p>\r\n </div>\r\n</div>", styles: [":host .container,:host .toggle{height:100%;border-radius:100px}:host .container{background-color:#e6e9ed;color:#545e61;border:.1875em solid;border-radius:100px;border-color:#e6e9ed;position:relative;cursor:pointer}:host .container .toggle{position:absolute;width:50%;background-color:#fff;transition:transform .3s cubic-bezier(.25,.46,.45,.94)}:host .container .names{font-size:90%;font-weight:bolder;width:100%;height:100%;position:relative;display:flex;justify-content:space-around;align-items:center;-webkit-user-select:none;user-select:none;overflow:hidden}:host .container .names p{font-size:90%;text-align:center;margin:0;padding:.5em 1em}:host .container .names p span{padding-left:.3em}:host .container .names p.right{opacity:.5}:host.active .container{background-color:#e6e9ed}:host.active .container .toggle{transform:translate(100%);background-color:#fff}:host.active .container .names{color:#545e61}:host.active .container .names .left{opacity:.5}:host.active .container .names .right{opacity:1}:host.disabled{pointer-events:none}:host.disabled .container{transition:background-color .5s ease;transition:border-color .5s ease}:host.disabled .container,:host-context(.sfc-default-theme) :host.disabled .container{background-color:#f6f6f6}:host-context(.sfc-dark-theme) :host.disabled .container{background-color:#656d78}:host.disabled .container,:host-context(.sfc-default-theme) :host.disabled .container{border-color:#f6f6f6}:host-context(.sfc-dark-theme) :host.disabled .container{border-color:#656d78}:host.disabled .container .toggle{transition:background-color .5s ease;box-shadow:none}:host.disabled .container .toggle,:host-context(.sfc-default-theme) :host.disabled .container .toggle{background-color:#e6e9ed}:host-context(.sfc-dark-theme) :host.disabled .container .toggle{background-color:#aab2bd}:host.disabled .container .names{transition:color .5s ease}:host.disabled .container .names,:host-context(.sfc-default-theme) :host.disabled .container .names{color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .container .names{color:#e9e9e9}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] });
2671
2893
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ToggleSwitcherComponent, decorators: [{
2672
2894
  type: Component,
2673
2895
  args: [{ selector: 'sfc-toggle-switcher', template: "<div class=\"container\">\r\n <div class=\"toggle\"></div>\r\n <div class=\"names\">\r\n <p class=\"left\" *ngIf=\"leftModel\">\r\n <fa-icon *ngIf=\"leftModel.icon\" [icon]=\"leftModel.icon\"></fa-icon>\r\n <span *ngIf=\"leftModel.label\">{{leftModel.label}}</span>\r\n </p>\r\n <p class=\"right\" *ngIf=\"rightModel\">\r\n <fa-icon *ngIf=\"rightModel.icon\" [icon]=\"rightModel.icon\"></fa-icon>\r\n <span *ngIf=\"rightModel.label\">{{rightModel.label}}</span>\r\n </p>\r\n </div>\r\n</div>", styles: [":host .container,:host .toggle{height:100%;border-radius:100px}:host .container{background-color:#e6e9ed;color:#545e61;border:.1875em solid;border-radius:100px;border-color:#e6e9ed;position:relative;cursor:pointer}:host .container .toggle{position:absolute;width:50%;background-color:#fff;transition:transform .3s cubic-bezier(.25,.46,.45,.94)}:host .container .names{font-size:90%;font-weight:bolder;width:100%;height:100%;position:relative;display:flex;justify-content:space-around;align-items:center;-webkit-user-select:none;user-select:none;overflow:hidden}:host .container .names p{font-size:90%;text-align:center;margin:0;padding:.5em 1em}:host .container .names p span{padding-left:.3em}:host .container .names p.right{opacity:.5}:host.active .container{background-color:#e6e9ed}:host.active .container .toggle{transform:translate(100%);background-color:#fff}:host.active .container .names{color:#545e61}:host.active .container .names .left{opacity:.5}:host.active .container .names .right{opacity:1}:host.disabled{pointer-events:none}:host.disabled .container{transition:background-color .5s ease;transition:border-color .5s ease}:host.disabled .container,:host-context(.sfc-default-theme) :host.disabled .container{background-color:#f6f6f6}:host-context(.sfc-dark-theme) :host.disabled .container{background-color:#656d78}:host.disabled .container,:host-context(.sfc-default-theme) :host.disabled .container{border-color:#f6f6f6}:host-context(.sfc-dark-theme) :host.disabled .container{border-color:#656d78}:host.disabled .container .toggle{transition:background-color .5s ease;box-shadow:none}:host.disabled .container .toggle,:host-context(.sfc-default-theme) :host.disabled .container .toggle{background-color:#e6e9ed}:host-context(.sfc-dark-theme) :host.disabled .container .toggle{background-color:#aab2bd}:host.disabled .container .names{transition:color .5s ease}:host.disabled .container .names,:host-context(.sfc-default-theme) :host.disabled .container .names{color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .container .names{color:#e9e9e9}\n"] }]
@@ -2685,6 +2907,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2685
2907
  type: Input
2686
2908
  }], rightModel: [{
2687
2909
  type: Input
2910
+ }], toggle: [{
2911
+ type: Output
2688
2912
  }], onClick: [{
2689
2913
  type: HostListener,
2690
2914
  args: ['click']
@@ -2704,12 +2928,13 @@ class CheckmarkComponent {
2704
2928
  this.icon = faCheck;
2705
2929
  this.type = CheckmarkType.Rounded;
2706
2930
  }
2931
+ onClick() { this.active = !this.active; }
2707
2932
  }
2708
2933
  CheckmarkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CheckmarkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2709
- CheckmarkComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: CheckmarkComponent, selector: "sfc-checkmark", inputs: { active: "active", disabled: "disabled", icon: "icon", type: "type" }, host: { properties: { "class.active": "this.active", "class.disabled": "this.disabled", "class": "this.type" } }, ngImport: i0, template: "<div class=\"container\">\r\n <span class=\"check\">\r\n <fa-icon [sfcShowHideElement]=\"active\" [icon]=\"icon\"></fa-icon>\r\n </span>\r\n</div>", styles: [":host{display:inline-block;transition:color .5s ease}:host,:host-context(.sfc-default-theme) :host{color:#545e61}:host-context(.sfc-dark-theme) :host{color:#fff}:host .check{border:.125em solid;background:transparent;transition:border-color .5s ease,background .5s ease;transition:border-color .5s ease;width:1em;height:1em;cursor:pointer;display:flex;align-items:center;justify-content:center}:host .check,:host-context(.sfc-default-theme) :host .check{border-color:#545e61}:host-context(.sfc-dark-theme) :host .check{border-color:#fff}:host .check fa-icon{transition:opacity .5s ease;color:#fff;font-size:.8em;transition:opacity .3s ease}:host .check fa-icon,:host-context(.sfc-default-theme) :host .check fa-icon{opacity:.5}:host-context(.sfc-dark-theme) :host .check fa-icon{opacity:.8}:host .check:hover{border-color:#ffce54}:host .check:hover fa-icon{transition:opacity .5s ease}:host .check:hover fa-icon,:host-context(.sfc-default-theme) :host .check:hover fa-icon{opacity:.8}:host-context(.sfc-dark-theme) :host .check:hover fa-icon{opacity:1}:host.active .check{border-color:#ffce54;background:#ffce54}:host.active .check fa-icon{opacity:1;transform:scale(0);-webkit-text-stroke:0;animation:icon .3s cubic-bezier(1,.008,.565,1.65) .1s 1 forwards}@keyframes icon{0%{opacity:0;transform:scale(.3)}to{opacity:1;transform:scale(1)}}:host.circle .check{border-radius:50%}:host.rounded .check{border-radius:15%}:host.disabled{pointer-events:none}:host.disabled .check{color:#fff;border-style:dashed;transition:border-color .5s ease}:host.disabled .check,:host-context(.sfc-default-theme) :host.disabled .check{border-color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .check{border-color:#656d78}:host.disabled.active .check{transition:background .5s ease}:host.disabled.active .check,:host-context(.sfc-default-theme) :host.disabled.active .check{background:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled.active .check{background:#656d78}\n"], dependencies: [{ kind: "component", type: i1$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: ShowHideElementDirective, selector: "[sfcShowHideElement]", inputs: ["sfcShowHideElement", "delay"] }] });
2934
+ CheckmarkComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: CheckmarkComponent, selector: "sfc-checkmark", inputs: { active: "active", disabled: "disabled", icon: "icon", type: "type" }, host: { listeners: { "click": "onClick()" }, properties: { "class.active": "this.active", "class.disabled": "this.disabled", "class": "this.type" } }, ngImport: i0, template: "<div class=\"container\">\r\n <span class=\"check\">\r\n <fa-icon [sfcShowHideElement]=\"active\" [icon]=\"icon\"></fa-icon>\r\n </span>\r\n</div>", styles: [":host{display:inline-block;transition:color .5s ease}:host,:host-context(.sfc-default-theme) :host{color:#545e61}:host-context(.sfc-dark-theme) :host{color:#fff}:host .check{border:.125em solid;background:transparent;transition:border-color .5s ease,background .5s ease;transition:border-color .5s ease;width:1em;height:1em;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:.1em}:host .check,:host-context(.sfc-default-theme) :host .check{border-color:#545e61}:host-context(.sfc-dark-theme) :host .check{border-color:#fff}:host .check fa-icon{transition:opacity .5s ease;color:#fff;transition:opacity .3s ease}:host .check fa-icon,:host-context(.sfc-default-theme) :host .check fa-icon{opacity:.5}:host-context(.sfc-dark-theme) :host .check fa-icon{opacity:.8}:host .check:hover{border-color:#ffce54}:host .check:hover fa-icon{transition:opacity .5s ease}:host .check:hover fa-icon,:host-context(.sfc-default-theme) :host .check:hover fa-icon{opacity:.8}:host-context(.sfc-dark-theme) :host .check:hover fa-icon{opacity:1}:host.active .check{border-color:#ffce54;background:#ffce54}:host.active .check fa-icon{opacity:1;transform:scale(0);-webkit-text-stroke:0;animation:icon .3s cubic-bezier(1,.008,.565,1.65) .1s 1 forwards}@keyframes icon{0%{opacity:0;transform:scale(.3)}to{opacity:1;transform:scale(1)}}:host.circle .check{border-radius:50%}:host.rounded .check{border-radius:15%}:host.disabled{pointer-events:none}:host.disabled .check{color:#fff;border-style:dashed;transition:border-color .5s ease}:host.disabled .check,:host-context(.sfc-default-theme) :host.disabled .check{border-color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .check{border-color:#656d78}:host.disabled.active .check{transition:background .5s ease}:host.disabled.active .check,:host-context(.sfc-default-theme) :host.disabled.active .check{background:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled.active .check{background:#656d78}\n"], dependencies: [{ kind: "component", type: i1$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: ShowHideElementDirective, selector: "[sfcShowHideElement]", inputs: ["sfcShowHideElement", "delay"] }] });
2710
2935
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CheckmarkComponent, decorators: [{
2711
2936
  type: Component,
2712
- args: [{ selector: 'sfc-checkmark', template: "<div class=\"container\">\r\n <span class=\"check\">\r\n <fa-icon [sfcShowHideElement]=\"active\" [icon]=\"icon\"></fa-icon>\r\n </span>\r\n</div>", styles: [":host{display:inline-block;transition:color .5s ease}:host,:host-context(.sfc-default-theme) :host{color:#545e61}:host-context(.sfc-dark-theme) :host{color:#fff}:host .check{border:.125em solid;background:transparent;transition:border-color .5s ease,background .5s ease;transition:border-color .5s ease;width:1em;height:1em;cursor:pointer;display:flex;align-items:center;justify-content:center}:host .check,:host-context(.sfc-default-theme) :host .check{border-color:#545e61}:host-context(.sfc-dark-theme) :host .check{border-color:#fff}:host .check fa-icon{transition:opacity .5s ease;color:#fff;font-size:.8em;transition:opacity .3s ease}:host .check fa-icon,:host-context(.sfc-default-theme) :host .check fa-icon{opacity:.5}:host-context(.sfc-dark-theme) :host .check fa-icon{opacity:.8}:host .check:hover{border-color:#ffce54}:host .check:hover fa-icon{transition:opacity .5s ease}:host .check:hover fa-icon,:host-context(.sfc-default-theme) :host .check:hover fa-icon{opacity:.8}:host-context(.sfc-dark-theme) :host .check:hover fa-icon{opacity:1}:host.active .check{border-color:#ffce54;background:#ffce54}:host.active .check fa-icon{opacity:1;transform:scale(0);-webkit-text-stroke:0;animation:icon .3s cubic-bezier(1,.008,.565,1.65) .1s 1 forwards}@keyframes icon{0%{opacity:0;transform:scale(.3)}to{opacity:1;transform:scale(1)}}:host.circle .check{border-radius:50%}:host.rounded .check{border-radius:15%}:host.disabled{pointer-events:none}:host.disabled .check{color:#fff;border-style:dashed;transition:border-color .5s ease}:host.disabled .check,:host-context(.sfc-default-theme) :host.disabled .check{border-color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .check{border-color:#656d78}:host.disabled.active .check{transition:background .5s ease}:host.disabled.active .check,:host-context(.sfc-default-theme) :host.disabled.active .check{background:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled.active .check{background:#656d78}\n"] }]
2937
+ args: [{ selector: 'sfc-checkmark', template: "<div class=\"container\">\r\n <span class=\"check\">\r\n <fa-icon [sfcShowHideElement]=\"active\" [icon]=\"icon\"></fa-icon>\r\n </span>\r\n</div>", styles: [":host{display:inline-block;transition:color .5s ease}:host,:host-context(.sfc-default-theme) :host{color:#545e61}:host-context(.sfc-dark-theme) :host{color:#fff}:host .check{border:.125em solid;background:transparent;transition:border-color .5s ease,background .5s ease;transition:border-color .5s ease;width:1em;height:1em;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:.1em}:host .check,:host-context(.sfc-default-theme) :host .check{border-color:#545e61}:host-context(.sfc-dark-theme) :host .check{border-color:#fff}:host .check fa-icon{transition:opacity .5s ease;color:#fff;transition:opacity .3s ease}:host .check fa-icon,:host-context(.sfc-default-theme) :host .check fa-icon{opacity:.5}:host-context(.sfc-dark-theme) :host .check fa-icon{opacity:.8}:host .check:hover{border-color:#ffce54}:host .check:hover fa-icon{transition:opacity .5s ease}:host .check:hover fa-icon,:host-context(.sfc-default-theme) :host .check:hover fa-icon{opacity:.8}:host-context(.sfc-dark-theme) :host .check:hover fa-icon{opacity:1}:host.active .check{border-color:#ffce54;background:#ffce54}:host.active .check fa-icon{opacity:1;transform:scale(0);-webkit-text-stroke:0;animation:icon .3s cubic-bezier(1,.008,.565,1.65) .1s 1 forwards}@keyframes icon{0%{opacity:0;transform:scale(.3)}to{opacity:1;transform:scale(1)}}:host.circle .check{border-radius:50%}:host.rounded .check{border-radius:15%}:host.disabled{pointer-events:none}:host.disabled .check{color:#fff;border-style:dashed;transition:border-color .5s ease}:host.disabled .check,:host-context(.sfc-default-theme) :host.disabled .check{border-color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .check{border-color:#656d78}:host.disabled.active .check{transition:background .5s ease}:host.disabled.active .check,:host-context(.sfc-default-theme) :host.disabled.active .check{background:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled.active .check{background:#656d78}\n"] }]
2713
2938
  }], propDecorators: { active: [{
2714
2939
  type: Input
2715
2940
  }, {
@@ -2727,6 +2952,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2727
2952
  }, {
2728
2953
  type: HostBinding,
2729
2954
  args: ['class']
2955
+ }], onClick: [{
2956
+ type: HostListener,
2957
+ args: ['click']
2730
2958
  }] } });
2731
2959
 
2732
2960
  var _a;
@@ -2836,6 +3064,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2836
3064
 
2837
3065
  var LoadContainerLoadType;
2838
3066
  (function (LoadContainerLoadType) {
3067
+ LoadContainerLoadType["Common"] = "common";
2839
3068
  LoadContainerLoadType["Button"] = "button";
2840
3069
  LoadContainerLoadType["Scroll"] = "scroll";
2841
3070
  LoadContainerLoadType["Pagination"] = "pagination";
@@ -2860,6 +3089,7 @@ var LoadContainerType;
2860
3089
  (function (LoadContainerType) {
2861
3090
  LoadContainerType["Dropdown"] = "dropdown";
2862
3091
  LoadContainerType["Table"] = "table";
3092
+ LoadContainerType["Container"] = "container";
2863
3093
  })(LoadContainerType || (LoadContainerType = {}));
2864
3094
 
2865
3095
  class LoadMoreButtonComponent {
@@ -2887,11 +3117,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2887
3117
  }] } });
2888
3118
 
2889
3119
  class LoadContainerComponent {
2890
- constructor(loaderService, loadMoreService, paginationService, sortingService) {
3120
+ constructor(loaderService, loadMoreService, paginationService, sortingService, reloadService) {
2891
3121
  this.loaderService = loaderService;
2892
3122
  this.loadMoreService = loadMoreService;
2893
3123
  this.paginationService = paginationService;
2894
3124
  this.sortingService = sortingService;
3125
+ this.reloadService = reloadService;
2895
3126
  this.ComponentSize = ComponentSize;
2896
3127
  this.Position = Position;
2897
3128
  this.type = LoadContainerType.Dropdown;
@@ -2946,7 +3177,7 @@ class LoadContainerComponent {
2946
3177
  this.source == LoadContainerChangesSource.Page ||
2947
3178
  this.source == LoadContainerChangesSource.Data;
2948
3179
  }
2949
- get pagination() { return this.model.loadType == LoadContainerLoadType.Pagination; }
3180
+ get pagination() { return this.model.loadType == LoadContainerLoadType.Pagination && isDefined(this.model.pagination); }
2950
3181
  ngOnDestroy() {
2951
3182
  if (this._subscription)
2952
3183
  this._subscription.unsubscribe();
@@ -2977,11 +3208,14 @@ class LoadContainerComponent {
2977
3208
  var _a;
2978
3209
  if (!this.model)
2979
3210
  return;
2980
- if (!isDefined(this.model.pagination))
2981
- this.model.pagination = PaginationConstants.DEFAULT_PAGINATION;
2982
- else
2983
- this.paginationService.pageValue = (_a = this.model.pagination) === null || _a === void 0 ? void 0 : _a.page;
2984
- const parameters$ = this.buildParameters(this.model.predicate$), data$ = isDefined(this.model.loader)
3211
+ this.paginationService.pageValue = ((_a = this.model.pagination) === null || _a === void 0 ? void 0 : _a.page) || PaginationConstants.DEFAULT_PAGINATION.page;
3212
+ if (!this.model.predicate$) {
3213
+ this.model.predicate$ = EMPTY.pipe(startWith(null));
3214
+ }
3215
+ const predicate$ = combineLatest([
3216
+ this.model.predicate$,
3217
+ this.reloadService.reload$.pipe(startWith(null))
3218
+ ]).pipe(map(([model, _]) => model)), parameters$ = this.buildParameters(predicate$), data$ = isDefined(this.model.loader)
2985
3219
  ? this.buildDynamic(parameters$, this.model.loader)
2986
3220
  : this.buildStatic(parameters$, this.model);
2987
3221
  if (isDefined(this._subscription))
@@ -2992,8 +3226,8 @@ class LoadContainerComponent {
2992
3226
  });
2993
3227
  }
2994
3228
  buildParameters(predicate$) {
2995
- const parameters$ = (predicate$ || EMPTY.pipe(startWith(null))).pipe(tap(() => {
2996
- if (this.source != LoadContainerChangesSource.Initial)
3229
+ const parameters$ = predicate$.pipe(tap((params) => {
3230
+ if (this.source != LoadContainerChangesSource.Initial && !(params === null || params === void 0 ? void 0 : params.reload))
2997
3231
  this.resetParameters();
2998
3232
  this.source = LoadContainerChangesSource.Predicate;
2999
3233
  this.predicateChanged = true;
@@ -3027,8 +3261,8 @@ class LoadContainerComponent {
3027
3261
  parameters = { params: parameters.params, page: this.page, sorting: parameters.sorting };
3028
3262
  }
3029
3263
  const filtered = model.filter ? model.filter(items, parameters) : items, sorted = parameters.sorting ? sortBy([...filtered], parameters.sorting.id, parameters.sorting.direction) : filtered, data = sorted ? {
3030
- items: skip(sorted, parameters.page, (_a = this.model.pagination) === null || _a === void 0 ? void 0 : _a.size),
3031
- next: parameters.page < Math.ceil(sorted.length / ((_b = this.model.pagination) === null || _b === void 0 ? void 0 : _b.size)),
3264
+ items: this.model.pagination ? skip(sorted, parameters.page, (_a = this.model.pagination) === null || _a === void 0 ? void 0 : _a.size) : sorted,
3265
+ next: this.model.pagination ? parameters.page < Math.ceil(sorted.length / ((_b = this.model.pagination) === null || _b === void 0 ? void 0 : _b.size)) : false,
3032
3266
  reset: this.reset,
3033
3267
  total: sorted.length,
3034
3268
  page: parameters.page
@@ -3045,12 +3279,12 @@ class LoadContainerComponent {
3045
3279
  this.loadMoreService.reset();
3046
3280
  }
3047
3281
  }
3048
- LoadContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadContainerComponent, deps: [{ token: LoaderService }, { token: LoadMoreService }, { token: PaginationService }, { token: SortingService }], target: i0.ɵɵFactoryTarget.Component });
3049
- LoadContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LoadContainerComponent, selector: "sfc-load-container", inputs: { id: "id", type: "type", open: "open", loadMore: "loadMore", loadMoreLabel: "loadMoreLabel", showEmpty: "showEmpty", emptyLabel: "emptyLabel", model: "model", scrollTarget: "scrollTarget", paginationCount: "paginationCount", paginationLimits: "paginationLimits", showLoading: "showLoading" }, outputs: { handleError: "handleError", handleSuccess: "handleSuccess", handleLoading: "handleLoading" }, host: { properties: { "class": "this.type", "class.open": "this.open", "class.empty": "this.isEmpty", "class.loading": "this._loading" } }, providers: [LoadMoreService, PaginationService], viewQueries: [{ propertyName: "contentEl", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<div class=\"container\">\r\n <sfc-bounce-loader *ngIf=\"showLoading\" [id]=\"id\" [sfcComponentSize]=\"ComponentSize.Small\"></sfc-bounce-loader>\r\n <div #content class=\"content\" [sfcScrollIntoView]=\"scrollTarget\" (sfcScrollTracker)=\"onScroll()\"\r\n [positions]=\"scrollPosition\">\r\n <div class=\"items\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"actions\" (sfcMouseDown)=\"$event.preventDefault()\">\r\n <sfc-load-more-button [hidden]=\"hideLoadMoreButton\" (more)=\"more($event)\" [label]=\"loadMoreLabel\">\r\n </sfc-load-more-button>\r\n <sfc-pagination *ngIf=\"showPagination\" [limits]=\"paginationLimits\" [count]=\"paginationCount\" [full]=\"false\"\r\n [total]=\"total\" [size]=\"model.pagination?.size!\" [page]=\"page\">\r\n </sfc-pagination>\r\n <sfc-delimeter *ngIf=\"isEmpty\" [label]=\"emptyLabel\"></sfc-delimeter>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{width:100%;height:inherit;position:relative}:host .container{height:inherit}:host .container .content{transition:background .5s ease;cursor:initial;overflow-y:auto;overflow-x:hidden;height:inherit}:host .container .content,:host-context(.sfc-default-theme) :host .container .content{background:transparent}:host-context(.sfc-dark-theme) :host .container .content{background:transparent}:host .container .content sfc-delimeter{font-style:italic;font-weight:700}:host.dropdown .container .content{display:none;opacity:0;max-height:12.5em;box-shadow:0 .125em .125em #00000024,0 .18em .06em -.125em #0000001f,0 .06em .31em #0003}:host.dropdown.open .container .content{display:block;opacity:1}:host ::ng-deep ::-webkit-scrollbar{width:.375em;height:.375em}:host ::ng-deep ::-webkit-scrollbar-track{border-radius:.625em;background:#e9e9e9}:host ::ng-deep ::-webkit-scrollbar-thumb{border-radius:.625em;background:rgba(0,0,0,.2)}:host ::ng-deep ::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.4)}:host ::ng-deep ::-webkit-scrollbar-thumb:active{background:rgba(0,0,0,.6)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MouseDownDirective, selector: "[sfcMouseDown]", inputs: ["button"], outputs: ["sfcMouseDown"] }, { kind: "directive", type: ComponentSizeDirective, selector: "[sfcComponentSize]", inputs: ["sfcComponentSize", "customSize"] }, { kind: "directive", type: ScrollTrackerDirective, selector: "[sfcScrollTracker]", inputs: ["positions"], outputs: ["sfcScrollTracker"] }, { kind: "directive", type: ScrollIntoViewDirective, selector: "[sfcScrollIntoView]", inputs: ["sfcScrollIntoView", "local", "options"] }, { kind: "component", type: DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }, { kind: "component", type: PaginationComponent, selector: "sfc-pagination", inputs: ["count", "full", "limits", "page", "total", "size"] }, { kind: "component", type: LoadMoreButtonComponent, selector: "sfc-load-more-button", inputs: ["label", "icon"], outputs: ["more"] }, { kind: "component", type: BounceLoaderComponent, selector: "sfc-bounce-loader" }] });
3282
+ LoadContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadContainerComponent, deps: [{ token: LoaderService }, { token: LoadMoreService }, { token: PaginationService }, { token: SortingService }, { token: ReloadService }], target: i0.ɵɵFactoryTarget.Component });
3283
+ LoadContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LoadContainerComponent, selector: "sfc-load-container", inputs: { id: "id", type: "type", open: "open", loadMore: "loadMore", loadMoreLabel: "loadMoreLabel", showEmpty: "showEmpty", emptyLabel: "emptyLabel", model: "model", scrollTarget: "scrollTarget", paginationCount: "paginationCount", paginationLimits: "paginationLimits", showLoading: "showLoading" }, outputs: { handleError: "handleError", handleSuccess: "handleSuccess", handleLoading: "handleLoading" }, host: { properties: { "class": "this.type", "class.open": "this.open", "class.empty": "this.isEmpty", "class.loading": "this._loading" } }, providers: [LoadMoreService, PaginationService, ReloadService], viewQueries: [{ propertyName: "contentEl", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<div class=\"container\">\r\n <sfc-bounce-loader *ngIf=\"showLoading\" [id]=\"id\" [sfcComponentSize]=\"ComponentSize.Small\"></sfc-bounce-loader>\r\n <div #content class=\"content\" [sfcScrollIntoView]=\"scrollTarget\" (sfcScrollTracker)=\"onScroll()\"\r\n [positions]=\"scrollPosition\">\r\n <div class=\"items\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"actions\" (sfcMouseDown)=\"$event.preventDefault()\">\r\n <sfc-load-more-button [hidden]=\"hideLoadMoreButton\" (more)=\"more($event)\" [label]=\"loadMoreLabel\">\r\n </sfc-load-more-button>\r\n <sfc-pagination *ngIf=\"showPagination\" [limits]=\"paginationLimits\" [count]=\"paginationCount\" [full]=\"false\"\r\n [total]=\"total\" [size]=\"model.pagination?.size!\" [page]=\"page\">\r\n </sfc-pagination>\r\n <sfc-delimeter *ngIf=\"isEmpty\" [label]=\"emptyLabel\"></sfc-delimeter>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{width:100%;height:inherit;position:relative}:host .container{height:inherit}:host .container .content{transition:background .5s ease;cursor:initial;overflow-y:auto;overflow-x:hidden;height:inherit}:host .container .content,:host-context(.sfc-default-theme) :host .container .content{background:transparent}:host-context(.sfc-dark-theme) :host .container .content{background:transparent}:host .container .content sfc-delimeter{padding:.5em 0;font-size:.8em;font-style:italic;font-weight:700}:host.dropdown .container .content{display:none;opacity:0;max-height:12.5em;box-shadow:0 .125em .125em #00000024,0 .18em .06em -.125em #0000001f,0 .06em .31em #0003}:host.dropdown.open .container .content{display:block;opacity:1}:host ::ng-deep ::-webkit-scrollbar{width:.375em;height:.375em}:host ::ng-deep ::-webkit-scrollbar-track{border-radius:.625em;background:#e9e9e9}:host ::ng-deep ::-webkit-scrollbar-thumb{border-radius:.625em;background:rgba(0,0,0,.2)}:host ::ng-deep ::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.4)}:host ::ng-deep ::-webkit-scrollbar-thumb:active{background:rgba(0,0,0,.6)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: MouseDownDirective, selector: "[sfcMouseDown]", inputs: ["button"], outputs: ["sfcMouseDown"] }, { kind: "directive", type: ComponentSizeDirective, selector: "[sfcComponentSize]", inputs: ["sfcComponentSize", "customSize"] }, { kind: "directive", type: ScrollTrackerDirective, selector: "[sfcScrollTracker]", inputs: ["positions"], outputs: ["sfcScrollTracker"] }, { kind: "directive", type: ScrollIntoViewDirective, selector: "[sfcScrollIntoView]", inputs: ["sfcScrollIntoView", "local", "options"] }, { kind: "component", type: DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }, { kind: "component", type: PaginationComponent, selector: "sfc-pagination", inputs: ["count", "full", "limits", "page", "total", "size"] }, { kind: "component", type: LoadMoreButtonComponent, selector: "sfc-load-more-button", inputs: ["label", "icon"], outputs: ["more"] }, { kind: "component", type: BounceLoaderComponent, selector: "sfc-bounce-loader" }] });
3050
3284
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadContainerComponent, decorators: [{
3051
3285
  type: Component,
3052
- args: [{ selector: 'sfc-load-container', providers: [LoadMoreService, PaginationService], template: "<div class=\"container\">\r\n <sfc-bounce-loader *ngIf=\"showLoading\" [id]=\"id\" [sfcComponentSize]=\"ComponentSize.Small\"></sfc-bounce-loader>\r\n <div #content class=\"content\" [sfcScrollIntoView]=\"scrollTarget\" (sfcScrollTracker)=\"onScroll()\"\r\n [positions]=\"scrollPosition\">\r\n <div class=\"items\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"actions\" (sfcMouseDown)=\"$event.preventDefault()\">\r\n <sfc-load-more-button [hidden]=\"hideLoadMoreButton\" (more)=\"more($event)\" [label]=\"loadMoreLabel\">\r\n </sfc-load-more-button>\r\n <sfc-pagination *ngIf=\"showPagination\" [limits]=\"paginationLimits\" [count]=\"paginationCount\" [full]=\"false\"\r\n [total]=\"total\" [size]=\"model.pagination?.size!\" [page]=\"page\">\r\n </sfc-pagination>\r\n <sfc-delimeter *ngIf=\"isEmpty\" [label]=\"emptyLabel\"></sfc-delimeter>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{width:100%;height:inherit;position:relative}:host .container{height:inherit}:host .container .content{transition:background .5s ease;cursor:initial;overflow-y:auto;overflow-x:hidden;height:inherit}:host .container .content,:host-context(.sfc-default-theme) :host .container .content{background:transparent}:host-context(.sfc-dark-theme) :host .container .content{background:transparent}:host .container .content sfc-delimeter{font-style:italic;font-weight:700}:host.dropdown .container .content{display:none;opacity:0;max-height:12.5em;box-shadow:0 .125em .125em #00000024,0 .18em .06em -.125em #0000001f,0 .06em .31em #0003}:host.dropdown.open .container .content{display:block;opacity:1}:host ::ng-deep ::-webkit-scrollbar{width:.375em;height:.375em}:host ::ng-deep ::-webkit-scrollbar-track{border-radius:.625em;background:#e9e9e9}:host ::ng-deep ::-webkit-scrollbar-thumb{border-radius:.625em;background:rgba(0,0,0,.2)}:host ::ng-deep ::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.4)}:host ::ng-deep ::-webkit-scrollbar-thumb:active{background:rgba(0,0,0,.6)}\n"] }]
3053
- }], ctorParameters: function () { return [{ type: LoaderService }, { type: LoadMoreService }, { type: PaginationService }, { type: SortingService }]; }, propDecorators: { id: [{
3286
+ args: [{ selector: 'sfc-load-container', providers: [LoadMoreService, PaginationService, ReloadService], template: "<div class=\"container\">\r\n <sfc-bounce-loader *ngIf=\"showLoading\" [id]=\"id\" [sfcComponentSize]=\"ComponentSize.Small\"></sfc-bounce-loader>\r\n <div #content class=\"content\" [sfcScrollIntoView]=\"scrollTarget\" (sfcScrollTracker)=\"onScroll()\"\r\n [positions]=\"scrollPosition\">\r\n <div class=\"items\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"actions\" (sfcMouseDown)=\"$event.preventDefault()\">\r\n <sfc-load-more-button [hidden]=\"hideLoadMoreButton\" (more)=\"more($event)\" [label]=\"loadMoreLabel\">\r\n </sfc-load-more-button>\r\n <sfc-pagination *ngIf=\"showPagination\" [limits]=\"paginationLimits\" [count]=\"paginationCount\" [full]=\"false\"\r\n [total]=\"total\" [size]=\"model.pagination?.size!\" [page]=\"page\">\r\n </sfc-pagination>\r\n <sfc-delimeter *ngIf=\"isEmpty\" [label]=\"emptyLabel\"></sfc-delimeter>\r\n </div>\r\n </div>\r\n</div>", styles: [":host{width:100%;height:inherit;position:relative}:host .container{height:inherit}:host .container .content{transition:background .5s ease;cursor:initial;overflow-y:auto;overflow-x:hidden;height:inherit}:host .container .content,:host-context(.sfc-default-theme) :host .container .content{background:transparent}:host-context(.sfc-dark-theme) :host .container .content{background:transparent}:host .container .content sfc-delimeter{padding:.5em 0;font-size:.8em;font-style:italic;font-weight:700}:host.dropdown .container .content{display:none;opacity:0;max-height:12.5em;box-shadow:0 .125em .125em #00000024,0 .18em .06em -.125em #0000001f,0 .06em .31em #0003}:host.dropdown.open .container .content{display:block;opacity:1}:host ::ng-deep ::-webkit-scrollbar{width:.375em;height:.375em}:host ::ng-deep ::-webkit-scrollbar-track{border-radius:.625em;background:#e9e9e9}:host ::ng-deep ::-webkit-scrollbar-thumb{border-radius:.625em;background:rgba(0,0,0,.2)}:host ::ng-deep ::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.4)}:host ::ng-deep ::-webkit-scrollbar-thumb:active{background:rgba(0,0,0,.6)}\n"] }]
3287
+ }], ctorParameters: function () { return [{ type: LoaderService }, { type: LoadMoreService }, { type: PaginationService }, { type: SortingService }, { type: ReloadService }]; }, propDecorators: { id: [{
3054
3288
  type: Input
3055
3289
  }], type: [{
3056
3290
  type: Input
@@ -3198,6 +3432,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3198
3432
  args: ['click']
3199
3433
  }] } });
3200
3434
 
3435
+ class MessageComponent {
3436
+ constructor() {
3437
+ this.type = NotificationType.Info;
3438
+ }
3439
+ }
3440
+ MessageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3441
+ MessageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MessageComponent, selector: "sfc-message", inputs: { message: "message", type: "type" }, host: { properties: { "class": "this.type" } }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"content\">\r\n <span class=\"message\">{{message}}</span>\r\n </div> \r\n</div>", styles: [":host .container .content .message{text-align:center;font-weight:700;font-size:.8em;padding:0}:host .container .content .message:empty{display:none}:host.info .container .content .message{color:#4fc1e9}:host.success .container .content .message{color:#4ec07d}:host.failed .container .content .message{color:#e96075}\n"] });
3442
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MessageComponent, decorators: [{
3443
+ type: Component,
3444
+ args: [{ selector: 'sfc-message', template: "<div class=\"container\">\r\n <div class=\"content\">\r\n <span class=\"message\">{{message}}</span>\r\n </div> \r\n</div>", styles: [":host .container .content .message{text-align:center;font-weight:700;font-size:.8em;padding:0}:host .container .content .message:empty{display:none}:host.info .container .content .message{color:#4fc1e9}:host.success .container .content .message{color:#4ec07d}:host.failed .container .content .message{color:#e96075}\n"] }]
3445
+ }], propDecorators: { message: [{
3446
+ type: Input
3447
+ }], type: [{
3448
+ type: Input
3449
+ }, {
3450
+ type: HostBinding,
3451
+ args: ['class']
3452
+ }] } });
3453
+
3201
3454
  class NgxSfcCommonModule {
3202
3455
  }
3203
3456
  NgxSfcCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NgxSfcCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -3236,6 +3489,7 @@ NgxSfcCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
3236
3489
  CollapseExpandComponent,
3237
3490
  CollapseExpandContainerComponent,
3238
3491
  ToggleComponent,
3492
+ MessageComponent,
3239
3493
  // loaders
3240
3494
  BounceLoaderComponent,
3241
3495
  CircleLoaderComponent,
@@ -3247,7 +3501,8 @@ NgxSfcCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
3247
3501
  DefaultModalFooterComponent,
3248
3502
  // pipes
3249
3503
  SwitchMultiCasePipe,
3250
- SortByPipe
3504
+ SortByPipe,
3505
+ RepeatPipe
3251
3506
  ], imports: [CommonModule,
3252
3507
  FontAwesomeModule], exports: [
3253
3508
  // directives
@@ -3284,6 +3539,7 @@ NgxSfcCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
3284
3539
  CollapseExpandComponent,
3285
3540
  CollapseExpandContainerComponent,
3286
3541
  ToggleComponent,
3542
+ MessageComponent,
3287
3543
  // loaders
3288
3544
  BounceLoaderComponent,
3289
3545
  CircleLoaderComponent,
@@ -3295,7 +3551,8 @@ NgxSfcCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
3295
3551
  DefaultModalFooterComponent,
3296
3552
  // pipes
3297
3553
  SwitchMultiCasePipe,
3298
- SortByPipe
3554
+ SortByPipe,
3555
+ RepeatPipe
3299
3556
  ] });
3300
3557
  NgxSfcCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NgxSfcCommonModule, providers: [DOCUMENT_PROVIDERS, WINDOW_PROVIDERS], imports: [CommonModule,
3301
3558
  FontAwesomeModule] });
@@ -3337,6 +3594,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3337
3594
  CollapseExpandComponent,
3338
3595
  CollapseExpandContainerComponent,
3339
3596
  ToggleComponent,
3597
+ MessageComponent,
3340
3598
  // loaders
3341
3599
  BounceLoaderComponent,
3342
3600
  CircleLoaderComponent,
@@ -3348,7 +3606,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3348
3606
  DefaultModalFooterComponent,
3349
3607
  // pipes
3350
3608
  SwitchMultiCasePipe,
3351
- SortByPipe
3609
+ SortByPipe,
3610
+ RepeatPipe
3352
3611
  ],
3353
3612
  imports: [
3354
3613
  CommonModule,
@@ -3389,6 +3648,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3389
3648
  CollapseExpandComponent,
3390
3649
  CollapseExpandContainerComponent,
3391
3650
  ToggleComponent,
3651
+ MessageComponent,
3392
3652
  // loaders
3393
3653
  BounceLoaderComponent,
3394
3654
  CircleLoaderComponent,
@@ -3400,7 +3660,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3400
3660
  DefaultModalFooterComponent,
3401
3661
  // pipes
3402
3662
  SwitchMultiCasePipe,
3403
- SortByPipe
3663
+ SortByPipe,
3664
+ RepeatPipe
3404
3665
  ],
3405
3666
  providers: [DOCUMENT_PROVIDERS, WINDOW_PROVIDERS]
3406
3667
  }]
@@ -3414,5 +3675,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3414
3675
  * Generated bundle index. Do not edit.
3415
3676
  */
3416
3677
 
3417
- export { BounceLoaderComponent, BrowserDocumentRef, BrowserWindowRef, ButtonComponent, ButtonType, CheckmarkComponent, CheckmarkType, CircleLoaderComponent, CircleLoaderType, ClickOutsideDirective, CloseComponent, CollapseExpandComponent, CollapseExpandContainerComponent, CollapseExpandDirective, CommonConstants, Compare, ComponentReferenceDirective, ComponentSize, ComponentSizeDirective, DOCUMENT, DOCUMENT_PROVIDERS, DateTimeConstants, DefaultModalFooterComponent, DefaultModalHeaderComponent, DelimeterComponent, DestroyParentDirective, Direction, DocumentRef, DomChangesDirective, DotComponent, DotsComponent, HamburgerComponent, HamburgerMenuComponent, IconComponent, IfDirective, ImageLoadDirective, ImageLoadService, LoadContainerChangesSource, LoadContainerComponent, LoadContainerLoadType, LoadContainerType, LoadMoreButtonComponent, LoadMoreService, LoaderService, MediaLimits, ModalComponent, ModalOpenDirective, ModalOpenOnClickDirective, ModalService, ModalTemplate, MouseDownDirective, NgxSfcCommonModule, PaginationComponent, PaginationConstants, PaginationService, Position, ResizeService, ScrollIntoViewDirective, ScrollTrackerDirective, Sequence, ShowHideElementDirective, SortByPipe, SortingDirection, SortingService, SwitchMultiCasePipe, TemplateContentComponent, TemplateReferenceDirective, Theme, ThrowElementOnHoverDirective, ToggleComponent, ToggleSwitcherComponent, TooltipComponent, TooltipType, UIClass, UIConstants, WINDOW, WINDOW_PROVIDERS, WindowRef, addClasses, addItem, addPropertyToObject, all, any, browserDocumentProvider, browserWindowProvider, buildHttpParams, contains, convertDateToTimestamp, convertFromBase64String, convertTimestampToDate, convertToBase64String, convertUTCDateToLocalDate, count, distinct, documentFactory, documentProvider, firstItem, firstOrDefault, generateGuid, getAge, getCalcValue, getCollectionOrEmpty, getCssLikeValue, getFileExtension, getFirstDayOfMonth, getFirstDayOfMonthByYearAndMonth, getFirstDayOfYear, getLastDayOfMonth, getLastDayOfMonthByYearAndMonth, getLastDayOfYear, getNextDate, getNextMonth, getNextYear, getPreviousDate, getPreviousMonth, getPreviousYear, getRotateValue, getValueFromCssLikeValue, getWeeksNumberInMonth, hasItem, hasItemBy, hasObjectItem, hexToRgb, isAsyncData, isChromeBrowser, isDateGreat, isDateGreatOrEqual, isDateTimeGreat, isDateTimeGreatOrEqual, isDefined, isEmail, isEqual, isEqualDateTimes, isEqualDates, isImage, isNullOrEmptyString, isNumeric, isObject, lastItem, max, mergeDeep, nameof, parseBoolean, parseFileSize, readAsDataURL, remove, removeClasses, removeItem, removeItemBy, removePropertyFromObject, replaceRgbOpacity, rgbToHex, setDay, setDefaultSecondsAndMiliseconds, setHours, setMilliseconds, setMinutes, setSeconds, setYear, skip, sort, sortBy, sortByPath, sum, trim, updateItemBy, where, windowFactory, windowProvider };
3678
+ export { BounceLoaderComponent, BrowserDocumentRef, BrowserWindowRef, ButtonComponent, ButtonType, CheckmarkComponent, CheckmarkType, CircleLoaderComponent, CircleLoaderType, ClickOutsideDirective, CloseComponent, CollapseExpandComponent, CollapseExpandContainerComponent, CollapseExpandDirective, CommonConstants, Compare, ComponentReferenceDirective, ComponentSize, ComponentSizeDirective, DOCUMENT, DOCUMENT_PROVIDERS, DateTimeConstants, DefaultModalFooterComponent, DefaultModalHeaderComponent, DelimeterComponent, DestroyParentDirective, Direction, DocumentRef, DomChangesDirective, DotComponent, DotsComponent, HamburgerComponent, HamburgerMenuComponent, IconComponent, IfDirective, ImageLoadDirective, ImageLoadService, ItemsView, LoadContainerChangesSource, LoadContainerComponent, LoadContainerLoadType, LoadContainerType, LoadMoreButtonComponent, LoadMoreService, LoaderService, MediaLimits, MessageComponent, ModalComponent, ModalOpenDirective, ModalOpenOnClickDirective, ModalService, ModalTemplate, MouseDownDirective, NgxSfcCommonModule, NotificationType, ObservableModel, PaginationComponent, PaginationConstants, PaginationService, Position, ReloadService, RepeatPipe, ResizeService, ScrollIntoViewDirective, ScrollTrackerDirective, Select, Sequence, ShowHideElementDirective, SortByPipe, SortingDirection, SortingService, State, SwitchMultiCasePipe, TemplateContentComponent, TemplateReferenceDirective, Theme, ThrowElementOnHoverDirective, ToggleComponent, ToggleSwitcherComponent, TooltipComponent, TooltipType, UIClass, UIConstants, WINDOW, WINDOW_PROVIDERS, WindowRef, addClasses, addItem, addPropertyToObject, all, any, browserDocumentProvider, browserWindowProvider, buildHttpParams, contains, convertDateToTimestamp, convertFromBase64String, convertTimestampToDate, convertToBase64String, convertUTCDateToLocalDate, count, distinct, documentFactory, documentProvider, firstItem, firstOrDefault, generateGuid, getAge, getCalcValue, getCollectionOrEmpty, getCssLikeValue, getFileExtension, getFirstDayOfMonth, getFirstDayOfMonthByYearAndMonth, getFirstDayOfYear, getLastDayOfMonth, getLastDayOfMonthByYearAndMonth, getLastDayOfYear, getNextDate, getNextMonth, getNextYear, getPreviousDate, getPreviousMonth, getPreviousYear, getRotateValue, getValueFromCssLikeValue, getWeeksNumberInMonth, hasAnyItem, hasItem, hasItemBy, hasObjectItem, hexToRgb, isArraysEquals, isAsyncData, isChromeBrowser, isDateGreat, isDateGreatOrEqual, isDateTimeGreat, isDateTimeGreatOrEqual, isDateTimeLessOrEqual, isDefined, isEmail, isEqual, isEqualDateTimes, isEqualDates, isImage, isJsonString, isNullOrEmptyString, isNumeric, isObject, isString, isTimeGreatOrEqual, isTimeLessOrEqual, lastItem, max, mergeDeep, nameof, parseBoolean, parseFileSize, readAsDataURL, remove, removeClasses, removeItem, removeItemBy, removePropertyFromObject, replaceRgbOpacity, rgbToHex, setDay, setDefaultSecondsAndMiliseconds, setHours, setMilliseconds, setMinutes, setSeconds, setYear, skip, sort, sortBy, sortByPath, stopAndPreventPropagation, sum, trim, updateItemBy, where, windowFactory, windowProvider };
3679
+ //# sourceMappingURL=ngx-sfc-common.mjs.map
3418
3680
  //# sourceMappingURL=ngx-sfc-common.mjs.map