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,14 +1,14 @@
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 { HttpParams } from '@angular/common/http';
10
10
  import { trigger, state, style, transition, group, query, animate, animateChild } from '@angular/animations';
11
- import { faTimes, faWindowRestore, faCheck, faChevronLeft, faChevronRight, faChevronCircleDown, faChevronUp, faChevronDown } from '@fortawesome/free-solid-svg-icons';
11
+ import { faWindowRestore, faTimes, faCheck, faChevronLeft, faChevronRight, faChevronCircleDown, faChevronUp, faChevronDown } from '@fortawesome/free-solid-svg-icons';
12
12
 
13
13
  /**
14
14
  * Component sizes
@@ -123,6 +123,32 @@ var Compare;
123
123
  })(Compare || (Compare = {}));
124
124
  ;
125
125
 
126
+ var State;
127
+ (function (State) {
128
+ State["Added"] = "added";
129
+ State["Removed"] = "removed";
130
+ })(State || (State = {}));
131
+
132
+ var NotificationType;
133
+ (function (NotificationType) {
134
+ NotificationType["Info"] = "info";
135
+ NotificationType["Success"] = "success";
136
+ NotificationType["Failed"] = "failed";
137
+ })(NotificationType || (NotificationType = {}));
138
+
139
+ var Select;
140
+ (function (Select) {
141
+ Select["Single"] = "single";
142
+ Select["Multiple"] = "multiple";
143
+ })(Select || (Select = {}));
144
+
145
+ var ItemsView;
146
+ (function (ItemsView) {
147
+ ItemsView["List"] = "list";
148
+ ItemsView["Icons"] = "icons";
149
+ ItemsView["Cards"] = "cards";
150
+ })(ItemsView || (ItemsView = {}));
151
+
126
152
  /**
127
153
  * Create a new injection token for injecting the Document into a component.
128
154
  */
@@ -361,65 +387,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
361
387
  }]
362
388
  }] });
363
389
 
364
- class ClickOutsideDirective {
365
- constructor(elementRef, document) {
366
- this.elementRef = elementRef;
367
- this.document = document;
368
- /**
369
- * Toggler for checking ouside click event
370
- */
371
- this.listening = false;
372
- /**
373
- * Emitter for click event
374
- */
375
- this.action = new EventEmitter();
376
- }
377
- ngAfterViewInit() {
378
- this._clickSubscription = fromEvent(this.document, 'click')
379
- .subscribe(event => this.onClick(event));
380
- }
381
- ngOnDestroy() {
382
- this._clickSubscription?.unsubscribe();
383
- }
384
- onClick(event) {
385
- if (event instanceof MouseEvent && this.listening) {
386
- const clickOutsideEvent = {
387
- target: event.target,
388
- value: !this.isDescendant(this.elementRef.nativeElement, event.target)
389
- };
390
- this.action.emit(clickOutsideEvent);
391
- }
392
- }
393
- isDescendant(parent, child) {
394
- let node = child;
395
- while (node !== null) {
396
- if (node === parent) {
397
- return true;
398
- }
399
- else {
400
- node = node.parentNode;
401
- }
402
- }
403
- return false;
404
- }
405
- }
406
- 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 });
407
- 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 });
408
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ClickOutsideDirective, decorators: [{
409
- type: Directive,
410
- args: [{
411
- selector: '[sfcClickOutside]'
412
- }]
413
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Document, decorators: [{
414
- type: Inject,
415
- args: [DOCUMENT]
416
- }] }]; }, propDecorators: { listening: [{
417
- type: Input,
418
- args: ['sfcClickOutside']
419
- }], action: [{
420
- type: Output
421
- }] } });
422
-
423
390
  class CommonConstants {
424
391
  }
425
392
  CommonConstants.NOT_FOUND_INDEX = -1;
@@ -463,70 +430,9 @@ UIConstants.CSS_CENTER = 'center';
463
430
  UIConstants.CSS_CLASS_FIXED = 'fixed';
464
431
  UIConstants.CSS_CLASS_BACKGROUND = 'background';
465
432
  UIConstants.CSS_CLASS_TOP = 'top';
433
+ UIConstants.CSS_CLASS_SCROLL = 'scroll';
466
434
  UIConstants.RGB_OPACITY_PLACEHOLDER = '{opacity}';
467
435
 
468
- class ShowHideElementDirective {
469
- constructor(el) {
470
- this.el = el;
471
- this.SHOW_HIDE_TRANSITION_DELAY_DEFAULT = 0.5;
472
- this.style.transition = this.getTransitionValue();
473
- }
474
- set showHideElement(show) {
475
- this.style.visibility = show
476
- ? UIConstants.CSS_VISIBILITY_VISIBLE
477
- : UIConstants.CSS_VISIBILITY_HIDDEN;
478
- this.style.opacity = show ? 1 : 0;
479
- }
480
- set delay(value) {
481
- this.style.transition = this.getTransitionValue(value);
482
- }
483
- ;
484
- get style() {
485
- return this.el.nativeElement.style;
486
- }
487
- getTransitionValue(delay = this.SHOW_HIDE_TRANSITION_DELAY_DEFAULT) {
488
- return `visibility ${delay}s,
489
- opacity ${delay}s
490
- linear`;
491
- }
492
- }
493
- ShowHideElementDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ShowHideElementDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
494
- ShowHideElementDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ShowHideElementDirective, selector: "[sfcShowHideElement]", inputs: { showHideElement: ["sfcShowHideElement", "showHideElement"], delay: "delay" }, ngImport: i0 });
495
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ShowHideElementDirective, decorators: [{
496
- type: Directive,
497
- args: [{
498
- selector: '[sfcShowHideElement]'
499
- }]
500
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { showHideElement: [{
501
- type: Input,
502
- args: ['sfcShowHideElement']
503
- }], delay: [{
504
- type: Input
505
- }] } });
506
-
507
- class IfDirective {
508
- constructor(el) {
509
- this.el = el;
510
- this.display = this.style.display;
511
- }
512
- set sfcIf(show) {
513
- this.style.display = show
514
- ? this.display || UIConstants.CSS_INITIAL
515
- : UIConstants.CSS_NONE;
516
- }
517
- get style() { return this.el.nativeElement.style; }
518
- }
519
- IfDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IfDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
520
- IfDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: IfDirective, selector: "[sfcIf]", inputs: { sfcIf: "sfcIf" }, ngImport: i0 });
521
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IfDirective, decorators: [{
522
- type: Directive,
523
- args: [{
524
- selector: '[sfcIf]'
525
- }]
526
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { sfcIf: [{
527
- type: Input
528
- }] } });
529
-
530
436
  /**
531
437
  * Set minutes for date
532
438
  * @param date Date value
@@ -799,6 +705,36 @@ function isDateTimeGreatOrEqual(date1, date2) {
799
705
  return new Date(date1.getFullYear(), date1.getMonth(), date1.getDate(), date1.getHours(), date1.getMinutes())
800
706
  >= new Date(date2.getFullYear(), date2.getMonth(), date2.getDate(), date2.getHours(), date2.getMinutes());
801
707
  }
708
+ /**
709
+ * Return true if first time greater or equal to second time
710
+ * @param date1 First date time value
711
+ * @param date2 Second date time value
712
+ * @returns True if first time greater or equal to second time
713
+ */
714
+ function isTimeGreatOrEqual(date1, date2) {
715
+ return new Date(0, 0, 0, date1.getHours(), date1.getMinutes())
716
+ >= new Date(0, 0, 0, date2.getHours(), date2.getMinutes());
717
+ }
718
+ /**
719
+ * Return true if first time less or equal to second time
720
+ * @param date1 First date time value
721
+ * @param date2 Second date time value
722
+ * @returns True if first time less or equal to second time
723
+ */
724
+ function isDateTimeLessOrEqual(date1, date2) {
725
+ return new Date(0, 0, 0, date1.getHours(), date1.getMinutes())
726
+ <= new Date(0, 0, 0, date2.getHours(), date2.getMinutes());
727
+ }
728
+ /**
729
+ * Return true if first time less or equal to second time
730
+ * @param date1 First date time value
731
+ * @param date2 Second date time value
732
+ * @returns True if first time less or equal to second time
733
+ */
734
+ function isTimeLessOrEqual(date1, date2) {
735
+ return new Date(date1.getFullYear(), date1.getMonth(), date1.getDate(), date1.getHours(), date1.getMinutes())
736
+ <= new Date(date2.getFullYear(), date2.getMonth(), date2.getDate(), date2.getHours(), date2.getMinutes());
737
+ }
802
738
  /**
803
739
  * Convert UTC date to local
804
740
  * @param date Date value
@@ -834,6 +770,8 @@ function convertDateToTimestamp(date, locale = DateTimeConstants.DEFAULT_LOCALE)
834
770
  * @returns Age
835
771
  */
836
772
  function getAge(birthdate) {
773
+ if (!birthdate)
774
+ return null;
837
775
  const now = new Date();
838
776
  let age = now.getFullYear() - birthdate.getFullYear();
839
777
  const monthDifference = now.getMonth() - birthdate.getMonth();
@@ -894,11 +832,6 @@ function removePropertyFromObject(obj, property) {
894
832
  delete obj[property];
895
833
  }
896
834
  }
897
- /**
898
- * Deep merge object with others
899
- * @param target Object to merge
900
- * @param sources
901
- */
902
835
  /**
903
836
  * Deep merge object with others
904
837
  * @param target Object to merge
@@ -931,12 +864,20 @@ function mergeDeep(target, ...sources) {
931
864
  const nameof = (name) => name;
932
865
  /**
933
866
  * Determines if the input is a Number or something that can be coerced to a Number
934
- * @param - The input to be tested
867
+ * @param number The input to be tested
935
868
  * @returns - An indication if the input is a Number or can be coerced to a Number
936
869
  */
937
870
  function isNumeric(number) {
938
871
  return !isNaN(parseFloat(number));
939
872
  }
873
+ /**
874
+ * Determines if the input is a string
875
+ * @param value The input to be tested
876
+ * @returns An indication if the input is a string
877
+ */
878
+ function isString(value) {
879
+ return typeof value === 'string';
880
+ }
940
881
  /**
941
882
  * Return true if current browser is Chrome
942
883
  * @returns If current browser is Chrome
@@ -999,6 +940,11 @@ function isEqual(obj1, obj2) {
999
940
  // If no errors, return true
1000
941
  return true;
1001
942
  }
943
+ function areFilesEqual() {
944
+ return obj1.lastModified === obj2.lastModified
945
+ && obj1.size === obj2.size
946
+ && obj1.type === obj2.type;
947
+ }
1002
948
  function areFunctionsEqual() {
1003
949
  return obj1.toString() === obj2.toString();
1004
950
  }
@@ -1018,6 +964,8 @@ function isEqual(obj1, obj2) {
1018
964
  return areArraysEqual();
1019
965
  if (type === 'date')
1020
966
  return areDatesEqual();
967
+ if (type === 'file')
968
+ return areFilesEqual();
1021
969
  if (type === 'object')
1022
970
  return areObjectsEqual();
1023
971
  if (type === 'function')
@@ -1033,6 +981,28 @@ function generateGuid() {
1033
981
  return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
1034
982
  };
1035
983
  return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
984
+ }
985
+ /**
986
+ * Check if value is Json parsable string
987
+ * @param value string value
988
+ * @returns True if string can be JSON parsed
989
+ */
990
+ function isJsonString(value) {
991
+ try {
992
+ const json = JSON.parse(value);
993
+ return (typeof json === 'object');
994
+ }
995
+ catch (e) {
996
+ return false;
997
+ }
998
+ }
999
+ /**
1000
+ * Stop propagation and prevent default
1001
+ * @param event Event object
1002
+ */
1003
+ function stopAndPreventPropagation(event) {
1004
+ event.preventDefault();
1005
+ event.stopPropagation();
1036
1006
  }
1037
1007
 
1038
1008
  /**
@@ -1266,6 +1236,15 @@ property, value) {
1266
1236
  && collection.findIndex(item => item.hasOwnProperty(property)
1267
1237
  && item[property] === value) !== CommonConstants.NOT_FOUND_INDEX;
1268
1238
  }
1239
+ /**
1240
+ * Return true if first collection has item in second collection
1241
+ * @param collection1 Array of objects where search
1242
+ * @param collection2 Array of objects where try to find
1243
+ * @returns
1244
+ */
1245
+ function hasAnyItem(collection1, collection2) {
1246
+ return collection1.some(item => collection2.includes(item));
1247
+ }
1269
1248
  /**
1270
1249
  * Return value from collection by predicate function
1271
1250
  * @param collection Array of items
@@ -1500,6 +1479,23 @@ function updateItemBy(collection, predicate, newItem) {
1500
1479
  */
1501
1480
  function getCollectionOrEmpty(collection) {
1502
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;
1503
1499
  }
1504
1500
 
1505
1501
  /**
@@ -1514,6 +1510,8 @@ function buildHttpParams(value) {
1514
1510
  return httpParams;
1515
1511
  function _build(params, value, path, isArray = false) {
1516
1512
  const ARRAY_PART = ']';
1513
+ if (!value)
1514
+ return;
1517
1515
  Object.keys(value).forEach(key => {
1518
1516
  if (value[key] instanceof Array) {
1519
1517
  _build(params, value[key], `${path}${key}[`, true);
@@ -1529,6 +1527,163 @@ function buildHttpParams(value) {
1529
1527
  }
1530
1528
  }
1531
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
+ this._clickSubscription?.unsubscribe();
1581
+ }
1582
+ onClick(event) {
1583
+ if (event instanceof MouseEvent && this.listening) {
1584
+ const clickOutsideEvent = {
1585
+ target: event.target,
1586
+ value: !this.isDescendant(this.elementRef.nativeElement, event.target)
1587
+ };
1588
+ this.action.emit(clickOutsideEvent);
1589
+ }
1590
+ }
1591
+ isDescendant(parent, child) {
1592
+ let node = child;
1593
+ while (node !== null) {
1594
+ if (node === parent) {
1595
+ return true;
1596
+ }
1597
+ else {
1598
+ node = node.parentNode;
1599
+ }
1600
+ }
1601
+ return false;
1602
+ }
1603
+ }
1604
+ 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 });
1605
+ 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 });
1606
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ClickOutsideDirective, decorators: [{
1607
+ type: Directive,
1608
+ args: [{
1609
+ selector: '[sfcClickOutside]'
1610
+ }]
1611
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: Document, decorators: [{
1612
+ type: Inject,
1613
+ args: [DOCUMENT]
1614
+ }] }]; }, propDecorators: { listening: [{
1615
+ type: Input,
1616
+ args: ['sfcClickOutside']
1617
+ }], action: [{
1618
+ type: Output
1619
+ }] } });
1620
+
1621
+ class ShowHideElementDirective {
1622
+ constructor(el) {
1623
+ this.el = el;
1624
+ this.SHOW_HIDE_TRANSITION_DELAY_DEFAULT = 0.5;
1625
+ this.style.transition = this.getTransitionValue();
1626
+ }
1627
+ set showHideElement(show) {
1628
+ this.style.visibility = show
1629
+ ? UIConstants.CSS_VISIBILITY_VISIBLE
1630
+ : UIConstants.CSS_VISIBILITY_HIDDEN;
1631
+ this.style.opacity = show ? 1 : 0;
1632
+ }
1633
+ set delay(value) {
1634
+ this.style.transition = this.getTransitionValue(value);
1635
+ }
1636
+ ;
1637
+ get style() {
1638
+ return this.el.nativeElement.style;
1639
+ }
1640
+ getTransitionValue(delay = this.SHOW_HIDE_TRANSITION_DELAY_DEFAULT) {
1641
+ return `visibility ${delay}s,
1642
+ opacity ${delay}s
1643
+ linear`;
1644
+ }
1645
+ }
1646
+ ShowHideElementDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ShowHideElementDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1647
+ ShowHideElementDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ShowHideElementDirective, selector: "[sfcShowHideElement]", inputs: { showHideElement: ["sfcShowHideElement", "showHideElement"], delay: "delay" }, ngImport: i0 });
1648
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ShowHideElementDirective, decorators: [{
1649
+ type: Directive,
1650
+ args: [{
1651
+ selector: '[sfcShowHideElement]'
1652
+ }]
1653
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { showHideElement: [{
1654
+ type: Input,
1655
+ args: ['sfcShowHideElement']
1656
+ }], delay: [{
1657
+ type: Input
1658
+ }] } });
1659
+
1660
+ class IfDirective {
1661
+ /* End Properties */
1662
+ constructor(el) {
1663
+ this.el = el;
1664
+ this.display = this.style.display;
1665
+ }
1666
+ /* Inputs */
1667
+ set sfcIf(show) {
1668
+ this.style.display = show
1669
+ ? this.display || UIConstants.CSS_INITIAL
1670
+ : UIConstants.CSS_NONE;
1671
+ }
1672
+ /* End Inputs */
1673
+ /* Properties */
1674
+ get style() { return this.el.nativeElement.style; }
1675
+ }
1676
+ IfDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IfDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1677
+ IfDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: IfDirective, selector: "[sfcIf]", inputs: { sfcIf: "sfcIf" }, ngImport: i0 });
1678
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IfDirective, decorators: [{
1679
+ type: Directive,
1680
+ args: [{
1681
+ selector: '[sfcIf]'
1682
+ }]
1683
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { sfcIf: [{
1684
+ type: Input
1685
+ }] } });
1686
+
1532
1687
  class ThrowElementOnHoverDirective {
1533
1688
  constructor(el) {
1534
1689
  this.el = el;
@@ -1915,11 +2070,10 @@ SwitchMultiCasePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", vers
1915
2070
  SwitchMultiCasePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: SwitchMultiCasePipe, name: "sfcSwitchMultiCase" });
1916
2071
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SwitchMultiCasePipe, decorators: [{
1917
2072
  type: Pipe,
1918
- args: [{
1919
- name: 'sfcSwitchMultiCase'
1920
- }]
2073
+ args: [{ name: 'sfcSwitchMultiCase' }]
1921
2074
  }] });
1922
2075
 
2076
+ // This pipe has "pure: false" (impure pipe) which has huge impact on performance!
1923
2077
  class SortByPipe {
1924
2078
  transform(value, path, direction = SortingDirection.Ascending) {
1925
2079
  if (!any(value)) {
@@ -1935,10 +2089,22 @@ class SortByPipe {
1935
2089
  }
1936
2090
  }
1937
2091
  SortByPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SortByPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1938
- SortByPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: SortByPipe, name: "sfcSortBy" });
2092
+ SortByPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: SortByPipe, name: "sfcSortBy", pure: false });
1939
2093
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SortByPipe, decorators: [{
1940
2094
  type: Pipe,
1941
- args: [{ name: 'sfcSortBy' }]
2095
+ args: [{ name: 'sfcSortBy', pure: false }]
2096
+ }] });
2097
+
2098
+ class RepeatPipe {
2099
+ transform(value) {
2100
+ return [].constructor(value);
2101
+ }
2102
+ }
2103
+ RepeatPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: RepeatPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2104
+ RepeatPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: RepeatPipe, name: "sfcRepeat" });
2105
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: RepeatPipe, decorators: [{
2106
+ type: Pipe,
2107
+ args: [{ name: 'sfcRepeat' }]
1942
2108
  }] });
1943
2109
 
1944
2110
  var ButtonType;
@@ -2245,21 +2411,25 @@ var ModalTemplate;
2245
2411
 
2246
2412
  class ModalService {
2247
2413
  constructor() {
2248
- this.subject = new BehaviorSubject({ open: false });
2249
- this.modal$ = this.subject.asObservable();
2414
+ this.model = new ObservableModel();
2415
+ this.isOpen = false;
2250
2416
  }
2251
- get isOpen() {
2252
- return this.subject.value.open;
2417
+ /* Properties */
2418
+ get modal$() { return this.model.value$; }
2419
+ /* End Properties */
2420
+ toggle(id, args) {
2421
+ this.emit({ open: !this.isOpen, id: id, args: args });
2253
2422
  }
2254
- toggle() {
2255
- this.subject.next({ open: !this.isOpen });
2423
+ close(id, args) {
2424
+ this.emit({ open: false, id: id, args: args });
2256
2425
  }
2257
- close() {
2258
- this.subject.next({ open: false });
2426
+ open(id, args) {
2427
+ this.emit({ open: true, id: id, args: args });
2259
2428
  }
2260
- open(args) {
2261
- this.args = args;
2262
- this.subject.next({ open: true, args: args });
2429
+ emit(event) {
2430
+ this.args = event.args;
2431
+ this.isOpen = event.open;
2432
+ this.model.subject.next(event);
2263
2433
  }
2264
2434
  }
2265
2435
  ModalService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -2271,6 +2441,83 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2271
2441
  }]
2272
2442
  }] });
2273
2443
 
2444
+ class ModalOpenDirective {
2445
+ /* End Subscriptions */
2446
+ constructor(templateRef, viewContainer, modalService) {
2447
+ this.templateRef = templateRef;
2448
+ this.viewContainer = viewContainer;
2449
+ this.modalService = modalService;
2450
+ this._openSubscription = this.modalService.modal$
2451
+ .pipe(filter((event) => event.id === this.id))
2452
+ .subscribe((event) => {
2453
+ this.viewContainer.clear();
2454
+ if (event.open)
2455
+ this.viewContainer.createEmbeddedView(this.templateRef);
2456
+ });
2457
+ }
2458
+ ngOnDestroy() {
2459
+ this._openSubscription.unsubscribe();
2460
+ }
2461
+ }
2462
+ 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 });
2463
+ ModalOpenDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ModalOpenDirective, selector: "[sfcModalOpen]", inputs: { id: ["sfcModalOpen", "id"] }, ngImport: i0 });
2464
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalOpenDirective, decorators: [{
2465
+ type: Directive,
2466
+ args: [{
2467
+ selector: '[sfcModalOpen]'
2468
+ }]
2469
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: ModalService }]; }, propDecorators: { id: [{
2470
+ type: Input,
2471
+ args: ['sfcModalOpen']
2472
+ }] } });
2473
+
2474
+ class ModalOpenOnClickDirective {
2475
+ /* End Subscriptions */
2476
+ constructor(templateRef, viewContainer, modalService) {
2477
+ this.templateRef = templateRef;
2478
+ this.viewContainer = viewContainer;
2479
+ this.modalService = modalService;
2480
+ this.elements = [];
2481
+ this.clickHandler = (() => {
2482
+ this.viewContainer.clear();
2483
+ this.viewContainer.createEmbeddedView(this.templateRef);
2484
+ this.modalService.toggle(this.id);
2485
+ }).bind(this);
2486
+ }
2487
+ /* Inputs */
2488
+ set modalOpenOnClick(model) {
2489
+ if (!isDefined(model.elements) || !isDefined(model.id))
2490
+ return;
2491
+ this._id = model.id;
2492
+ if (model.elements instanceof HTMLElement)
2493
+ this.elements = [model.elements];
2494
+ else
2495
+ this.elements = model.elements;
2496
+ this.elements.forEach(el => el.addEventListener('click', this.clickHandler));
2497
+ }
2498
+ get id() { return this._id; }
2499
+ ngOnInit() {
2500
+ this._closeSubscription = this.modalService.modal$
2501
+ .pipe(filter((event) => !event.open && this.id === event.id))
2502
+ .subscribe(() => this.viewContainer.clear());
2503
+ }
2504
+ ngOnDestroy() {
2505
+ this._closeSubscription?.unsubscribe();
2506
+ this.elements.forEach(el => el.removeEventListener('click', this.clickHandler));
2507
+ }
2508
+ }
2509
+ 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 });
2510
+ ModalOpenOnClickDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ModalOpenOnClickDirective, selector: "[sfcModalOpenOnClick]", inputs: { modalOpenOnClick: ["sfcModalOpenOnClick", "modalOpenOnClick"] }, ngImport: i0 });
2511
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalOpenOnClickDirective, decorators: [{
2512
+ type: Directive,
2513
+ args: [{
2514
+ selector: '[sfcModalOpenOnClick]'
2515
+ }]
2516
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: ModalService }]; }, propDecorators: { modalOpenOnClick: [{
2517
+ type: Input,
2518
+ args: ['sfcModalOpenOnClick']
2519
+ }] } });
2520
+
2274
2521
  class TemplateContentComponent {
2275
2522
  get showDefault() {
2276
2523
  return !isDefined(this.referenceContent)
@@ -2298,6 +2545,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2298
2545
  type: Input
2299
2546
  }] } });
2300
2547
 
2548
+ class DefaultModalHeaderConstants {
2549
+ }
2550
+ DefaultModalHeaderConstants.DEFAULT_MODAL_HEADER_MODEL = {
2551
+ icon: faWindowRestore,
2552
+ showCloseIcon: true,
2553
+ text: 'Modal'
2554
+ };
2555
+
2301
2556
  class CloseComponent {
2302
2557
  constructor() {
2303
2558
  this.faTimes = faTimes;
@@ -2311,60 +2566,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2311
2566
  }] });
2312
2567
 
2313
2568
  class DefaultModalHeaderComponent {
2569
+ /* End Properties */
2314
2570
  constructor(modalService) {
2315
2571
  this.modalService = modalService;
2316
- this.DEFAULT_MODAL_HEADER_MODEL = {
2317
- icon: faWindowRestore,
2318
- showCloseIcon: true,
2319
- text: 'Modal'
2320
- };
2321
- }
2322
- get icon() {
2323
- return this.model?.icon || faWindowRestore;
2324
2572
  }
2573
+ /* End Inputs */
2574
+ /* Properties */
2575
+ get icon() { return this.model?.icon || faWindowRestore; }
2325
2576
  ngOnInit() {
2326
2577
  if (!isDefined(this.model))
2327
- this.model = this.DEFAULT_MODAL_HEADER_MODEL;
2578
+ this.model = DefaultModalHeaderConstants.DEFAULT_MODAL_HEADER_MODEL;
2328
2579
  }
2329
2580
  onClose() {
2330
- this.modalService.close();
2581
+ this.modalService.close(this.id);
2331
2582
  }
2332
2583
  }
2333
2584
  DefaultModalHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DefaultModalHeaderComponent, deps: [{ token: ModalService }], target: i0.ɵɵFactoryTarget.Component });
2334
- 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" }] });
2585
+ 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" }] });
2335
2586
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DefaultModalHeaderComponent, decorators: [{
2336
2587
  type: Component,
2337
- 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"] }]
2338
- }], ctorParameters: function () { return [{ type: ModalService }]; }, propDecorators: { model: [{
2588
+ 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"] }]
2589
+ }], ctorParameters: function () { return [{ type: ModalService }]; }, propDecorators: { id: [{
2590
+ type: Input
2591
+ }], model: [{
2339
2592
  type: Input
2340
2593
  }] } });
2341
2594
 
2595
+ class DefaultModalFooterConstants {
2596
+ }
2597
+ DefaultModalFooterConstants.BUTTON_CUSTOM_SIZE = 0.9;
2598
+ DefaultModalFooterConstants.DEFAULT_MODAL_FOOTER_MODEL = {
2599
+ cancelButton: true,
2600
+ applyButton: true,
2601
+ applyButtonText: 'Ok',
2602
+ cancelButtonText: 'Cancel'
2603
+ };
2604
+
2342
2605
  class DefaultModalFooterComponent {
2606
+ /* End Inputs */
2343
2607
  constructor(modalService) {
2344
2608
  this.modalService = modalService;
2345
- this.DEFAULT_MODAL_FOOTER_MODEL = {
2346
- cancelButton: true,
2347
- applyButton: true,
2348
- applyButtonText: 'Ok',
2349
- cancelButtonText: 'Cancel'
2350
- };
2351
- this.BUTTON_CUSTOM_SIZE = 0.9;
2352
2609
  this.ComponentSize = ComponentSize;
2353
2610
  this.ButtonType = ButtonType;
2611
+ // component
2612
+ this.Constants = DefaultModalFooterConstants;
2354
2613
  }
2355
2614
  ngOnInit() {
2356
2615
  if (!this.model) {
2357
- this.model = Object.assign({}, this.DEFAULT_MODAL_FOOTER_MODEL);
2616
+ this.model = Object.assign({}, DefaultModalFooterConstants.DEFAULT_MODAL_FOOTER_MODEL);
2358
2617
  }
2359
2618
  else {
2360
2619
  if (isNullOrEmptyString(this.model.applyButtonText))
2361
- this.model.applyButtonText = this.DEFAULT_MODAL_FOOTER_MODEL.applyButtonText;
2620
+ this.model.applyButtonText = DefaultModalFooterConstants.DEFAULT_MODAL_FOOTER_MODEL.applyButtonText;
2362
2621
  if (isNullOrEmptyString(this.model.cancelButtonText))
2363
- this.model.cancelButtonText = this.DEFAULT_MODAL_FOOTER_MODEL.cancelButtonText;
2622
+ this.model.cancelButtonText = DefaultModalFooterConstants.DEFAULT_MODAL_FOOTER_MODEL.cancelButtonText;
2364
2623
  if (!isDefined(this.model.applyButton))
2365
- this.model.applyButton = this.DEFAULT_MODAL_FOOTER_MODEL.applyButton;
2624
+ this.model.applyButton = DefaultModalFooterConstants.DEFAULT_MODAL_FOOTER_MODEL.applyButton;
2366
2625
  if (!isDefined(this.model.cancelButton))
2367
- this.model.cancelButton = this.DEFAULT_MODAL_FOOTER_MODEL.cancelButton;
2626
+ this.model.cancelButton = DefaultModalFooterConstants.DEFAULT_MODAL_FOOTER_MODEL.cancelButton;
2368
2627
  }
2369
2628
  }
2370
2629
  onButtonClick(isCancelButton = false) {
@@ -2378,21 +2637,27 @@ class DefaultModalFooterComponent {
2378
2637
  return this.model.onApply(this.modalService.args);
2379
2638
  }
2380
2639
  }
2381
- this.modalService.toggle();
2640
+ this.modalService.toggle(this.id);
2382
2641
  }
2383
2642
  }
2384
2643
  DefaultModalFooterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DefaultModalFooterComponent, deps: [{ token: ModalService }], target: i0.ɵɵFactoryTarget.Component });
2385
- 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"] }] });
2644
+ 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"] }] });
2386
2645
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DefaultModalFooterComponent, decorators: [{
2387
2646
  type: Component,
2388
- 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"] }]
2389
- }], ctorParameters: function () { return [{ type: ModalService }]; }, propDecorators: { model: [{
2647
+ 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"] }]
2648
+ }], ctorParameters: function () { return [{ type: ModalService }]; }, propDecorators: { id: [{
2649
+ type: Input
2650
+ }], model: [{
2390
2651
  type: Input
2391
2652
  }] } });
2392
2653
 
2393
2654
  class ModalComponent {
2394
- constructor(modalService) {
2655
+ /* End Properties */
2656
+ constructor(modalService, document, openDirective, openOnClickDirective) {
2395
2657
  this.modalService = modalService;
2658
+ this.document = document;
2659
+ this.openDirective = openDirective;
2660
+ this.openOnClickDirective = openOnClickDirective;
2396
2661
  this.ModalTemplate = ModalTemplate;
2397
2662
  // End Defaults
2398
2663
  this.hideOnEsc = true;
@@ -2401,17 +2666,32 @@ class ModalComponent {
2401
2666
  this.showHeader = true;
2402
2667
  // hide modal footer (even default)
2403
2668
  this.showFooter = true;
2669
+ // remember body overflow
2670
+ this.bodyOverflow = this.document.body.style.overflow;
2404
2671
  }
2405
2672
  onEscapeKeyDownHandler() {
2406
2673
  if (this.hideOnEsc)
2407
2674
  this.close();
2408
2675
  }
2676
+ /* Properties */
2677
+ get id() {
2678
+ return isDefined(this.openOnClickDirective)
2679
+ ? this.openOnClickDirective.id : this.openDirective.id;
2680
+ }
2681
+ ngAfterViewInit() {
2682
+ // set body overflow to hidden, to prevent page scrolling
2683
+ this.document.body.style.overflow = UIConstants.CSS_VISIBILITY_HIDDEN;
2684
+ }
2685
+ ngOnDestroy() {
2686
+ // return back body overflow value when modal has closed
2687
+ this.document.body.style.overflow = this.bodyOverflow;
2688
+ }
2409
2689
  close() {
2410
- this.modalService.close();
2690
+ this.modalService.close(this.id);
2411
2691
  }
2412
2692
  }
2413
- ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalComponent, deps: [{ token: ModalService }], target: i0.ɵɵFactoryTarget.Component });
2414
- 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: [
2693
+ 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 });
2694
+ 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: [
2415
2695
  trigger('hideOverlay', [
2416
2696
  state('initial', style({ opacity: 1, visibility: 'visible' })),
2417
2697
  state('void', style({ opacity: 0, visibility: 'hidden' })),
@@ -2456,8 +2736,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2456
2736
  state('void', style({ opacity: 0, visibility: 'hidden', transform: 'scale(1.2)' })),
2457
2737
  transition('* => void', animate('400ms cubic-bezier(.55, 0, .1, 1)'))
2458
2738
  ])
2459
- ], 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"] }]
2460
- }], ctorParameters: function () { return [{ type: ModalService }]; }, propDecorators: { body: [{
2739
+ ], 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"] }]
2740
+ }], ctorParameters: function () { return [{ type: ModalService }, { type: Document, decorators: [{
2741
+ type: Inject,
2742
+ args: [DOCUMENT]
2743
+ }] }, { type: ModalOpenDirective, decorators: [{
2744
+ type: Optional
2745
+ }] }, { type: ModalOpenOnClickDirective, decorators: [{
2746
+ type: Optional
2747
+ }] }]; }, propDecorators: { body: [{
2461
2748
  type: Input
2462
2749
  }], header: [{
2463
2750
  type: Input
@@ -2483,76 +2770,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2483
2770
  args: [TemplateReferenceDirective, { read: TemplateReferenceDirective }]
2484
2771
  }] } });
2485
2772
 
2486
- class ModalOpenOnClickDirective {
2487
- constructor(templateRef, viewContainer, modalService) {
2488
- this.templateRef = templateRef;
2489
- this.viewContainer = viewContainer;
2490
- this.modalService = modalService;
2491
- this.clickHandler = (() => {
2492
- this.viewContainer.clear();
2493
- this.viewContainer.createEmbeddedView(this.templateRef);
2494
- this.modalService.toggle();
2495
- }).bind(this);
2496
- this.elements = [];
2497
- }
2498
- set modalOpenOnClick(elements) {
2499
- if (!isDefined(elements))
2500
- return;
2501
- if (elements instanceof HTMLElement)
2502
- this.elements = [elements];
2503
- else
2504
- this.elements = elements;
2505
- this.elements.forEach(el => {
2506
- el.addEventListener('click', this.clickHandler);
2507
- });
2508
- }
2509
- ngOnInit() {
2510
- this._closeSubscription = this.modalService.modal$
2511
- .pipe(filter((event) => !event.open))
2512
- .subscribe(() => this.viewContainer.clear());
2513
- }
2514
- ngOnDestroy() {
2515
- this._closeSubscription?.unsubscribe();
2516
- this.elements.forEach(el => el.removeEventListener('click', this.clickHandler));
2517
- }
2518
- }
2519
- 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 });
2520
- ModalOpenOnClickDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ModalOpenOnClickDirective, selector: "[sfcModalOpenOnClick]", inputs: { modalOpenOnClick: ["sfcModalOpenOnClick", "modalOpenOnClick"] }, ngImport: i0 });
2521
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalOpenOnClickDirective, decorators: [{
2522
- type: Directive,
2523
- args: [{
2524
- selector: '[sfcModalOpenOnClick]'
2525
- }]
2526
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: ModalService }]; }, propDecorators: { modalOpenOnClick: [{
2527
- type: Input,
2528
- args: ['sfcModalOpenOnClick']
2529
- }] } });
2530
-
2531
- class ModalOpenDirective {
2532
- constructor(templateRef, viewContainer, modalService) {
2533
- this.templateRef = templateRef;
2534
- this.viewContainer = viewContainer;
2535
- this.modalService = modalService;
2536
- this._openSubscription = this.modalService.modal$
2537
- .subscribe((event) => {
2538
- this.viewContainer.clear();
2539
- if (event.open)
2540
- this.viewContainer.createEmbeddedView(this.templateRef);
2541
- });
2542
- }
2543
- ngOnDestroy() {
2544
- this._openSubscription.unsubscribe();
2545
- }
2546
- }
2547
- 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 });
2548
- ModalOpenDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ModalOpenDirective, selector: "[sfcModalOpen]", ngImport: i0 });
2549
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalOpenDirective, decorators: [{
2550
- type: Directive,
2551
- args: [{
2552
- selector: '[sfcModalOpen]'
2553
- }]
2554
- }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }, { type: ModalService }]; } });
2555
-
2556
2773
  class HamburgerBaseComponent {
2557
2774
  constructor() {
2558
2775
  this.open = false;
@@ -2651,13 +2868,17 @@ class ToggleSwitcherComponent {
2651
2868
  constructor() {
2652
2869
  this.active = false;
2653
2870
  this.disabled = false;
2654
- this.onClick = () => this.active = !this.active;
2871
+ this.toggle = new EventEmitter(this.active);
2872
+ this.onClick = () => {
2873
+ this.active = !this.active;
2874
+ this.toggle.emit(this.active);
2875
+ };
2655
2876
  this.leftModel = { label: 'Left' };
2656
2877
  this.rightModel = { label: 'Right' };
2657
2878
  }
2658
2879
  }
2659
2880
  ToggleSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ToggleSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2660
- 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"] }] });
2881
+ 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"] }] });
2661
2882
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ToggleSwitcherComponent, decorators: [{
2662
2883
  type: Component,
2663
2884
  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"] }]
@@ -2675,6 +2896,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2675
2896
  type: Input
2676
2897
  }], rightModel: [{
2677
2898
  type: Input
2899
+ }], toggle: [{
2900
+ type: Output
2678
2901
  }], onClick: [{
2679
2902
  type: HostListener,
2680
2903
  args: ['click']
@@ -2694,12 +2917,13 @@ class CheckmarkComponent {
2694
2917
  this.icon = faCheck;
2695
2918
  this.type = CheckmarkType.Rounded;
2696
2919
  }
2920
+ onClick() { this.active = !this.active; }
2697
2921
  }
2698
2922
  CheckmarkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CheckmarkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2699
- 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"] }] });
2923
+ 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"] }] });
2700
2924
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CheckmarkComponent, decorators: [{
2701
2925
  type: Component,
2702
- 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"] }]
2926
+ 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"] }]
2703
2927
  }], propDecorators: { active: [{
2704
2928
  type: Input
2705
2929
  }, {
@@ -2717,6 +2941,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2717
2941
  }, {
2718
2942
  type: HostBinding,
2719
2943
  args: ['class']
2944
+ }], onClick: [{
2945
+ type: HostListener,
2946
+ args: ['click']
2720
2947
  }] } });
2721
2948
 
2722
2949
  var _a;
@@ -2826,6 +3053,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2826
3053
 
2827
3054
  var LoadContainerLoadType;
2828
3055
  (function (LoadContainerLoadType) {
3056
+ LoadContainerLoadType["Common"] = "common";
2829
3057
  LoadContainerLoadType["Button"] = "button";
2830
3058
  LoadContainerLoadType["Scroll"] = "scroll";
2831
3059
  LoadContainerLoadType["Pagination"] = "pagination";
@@ -2850,6 +3078,7 @@ var LoadContainerType;
2850
3078
  (function (LoadContainerType) {
2851
3079
  LoadContainerType["Dropdown"] = "dropdown";
2852
3080
  LoadContainerType["Table"] = "table";
3081
+ LoadContainerType["Container"] = "container";
2853
3082
  })(LoadContainerType || (LoadContainerType = {}));
2854
3083
 
2855
3084
  class LoadMoreButtonComponent {
@@ -2877,11 +3106,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2877
3106
  }] } });
2878
3107
 
2879
3108
  class LoadContainerComponent {
2880
- constructor(loaderService, loadMoreService, paginationService, sortingService) {
3109
+ constructor(loaderService, loadMoreService, paginationService, sortingService, reloadService) {
2881
3110
  this.loaderService = loaderService;
2882
3111
  this.loadMoreService = loadMoreService;
2883
3112
  this.paginationService = paginationService;
2884
3113
  this.sortingService = sortingService;
3114
+ this.reloadService = reloadService;
2885
3115
  this.ComponentSize = ComponentSize;
2886
3116
  this.Position = Position;
2887
3117
  this.type = LoadContainerType.Dropdown;
@@ -2936,7 +3166,7 @@ class LoadContainerComponent {
2936
3166
  this.source == LoadContainerChangesSource.Page ||
2937
3167
  this.source == LoadContainerChangesSource.Data;
2938
3168
  }
2939
- get pagination() { return this.model.loadType == LoadContainerLoadType.Pagination; }
3169
+ get pagination() { return this.model.loadType == LoadContainerLoadType.Pagination && isDefined(this.model.pagination); }
2940
3170
  ngOnDestroy() {
2941
3171
  if (this._subscription)
2942
3172
  this._subscription.unsubscribe();
@@ -2966,11 +3196,14 @@ class LoadContainerComponent {
2966
3196
  subscribe() {
2967
3197
  if (!this.model)
2968
3198
  return;
2969
- if (!isDefined(this.model.pagination))
2970
- this.model.pagination = PaginationConstants.DEFAULT_PAGINATION;
2971
- else
2972
- this.paginationService.pageValue = this.model.pagination?.page;
2973
- const parameters$ = this.buildParameters(this.model.predicate$), data$ = isDefined(this.model.loader)
3199
+ this.paginationService.pageValue = this.model.pagination?.page || PaginationConstants.DEFAULT_PAGINATION.page;
3200
+ if (!this.model.predicate$) {
3201
+ this.model.predicate$ = EMPTY.pipe(startWith(null));
3202
+ }
3203
+ const predicate$ = combineLatest([
3204
+ this.model.predicate$,
3205
+ this.reloadService.reload$.pipe(startWith(null))
3206
+ ]).pipe(map(([model, _]) => model)), parameters$ = this.buildParameters(predicate$), data$ = isDefined(this.model.loader)
2974
3207
  ? this.buildDynamic(parameters$, this.model.loader)
2975
3208
  : this.buildStatic(parameters$, this.model);
2976
3209
  if (isDefined(this._subscription))
@@ -2981,8 +3214,8 @@ class LoadContainerComponent {
2981
3214
  });
2982
3215
  }
2983
3216
  buildParameters(predicate$) {
2984
- const parameters$ = (predicate$ || EMPTY.pipe(startWith(null))).pipe(tap(() => {
2985
- if (this.source != LoadContainerChangesSource.Initial)
3217
+ const parameters$ = predicate$.pipe(tap((params) => {
3218
+ if (this.source != LoadContainerChangesSource.Initial && !params?.reload)
2986
3219
  this.resetParameters();
2987
3220
  this.source = LoadContainerChangesSource.Predicate;
2988
3221
  this.predicateChanged = true;
@@ -3014,8 +3247,8 @@ class LoadContainerComponent {
3014
3247
  parameters = { params: parameters.params, page: this.page, sorting: parameters.sorting };
3015
3248
  }
3016
3249
  const filtered = model.filter ? model.filter(items, parameters) : items, sorted = parameters.sorting ? sortBy([...filtered], parameters.sorting.id, parameters.sorting.direction) : filtered, data = sorted ? {
3017
- items: skip(sorted, parameters.page, this.model.pagination?.size),
3018
- next: parameters.page < Math.ceil(sorted.length / this.model.pagination?.size),
3250
+ items: this.model.pagination ? skip(sorted, parameters.page, this.model.pagination?.size) : sorted,
3251
+ next: this.model.pagination ? parameters.page < Math.ceil(sorted.length / this.model.pagination?.size) : false,
3019
3252
  reset: this.reset,
3020
3253
  total: sorted.length,
3021
3254
  page: parameters.page
@@ -3032,12 +3265,12 @@ class LoadContainerComponent {
3032
3265
  this.loadMoreService.reset();
3033
3266
  }
3034
3267
  }
3035
- 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 });
3036
- 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" }] });
3268
+ 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 });
3269
+ 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" }] });
3037
3270
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadContainerComponent, decorators: [{
3038
3271
  type: Component,
3039
- 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"] }]
3040
- }], ctorParameters: function () { return [{ type: LoaderService }, { type: LoadMoreService }, { type: PaginationService }, { type: SortingService }]; }, propDecorators: { id: [{
3272
+ 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"] }]
3273
+ }], ctorParameters: function () { return [{ type: LoaderService }, { type: LoadMoreService }, { type: PaginationService }, { type: SortingService }, { type: ReloadService }]; }, propDecorators: { id: [{
3041
3274
  type: Input
3042
3275
  }], type: [{
3043
3276
  type: Input
@@ -3185,6 +3418,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3185
3418
  args: ['click']
3186
3419
  }] } });
3187
3420
 
3421
+ class MessageComponent {
3422
+ constructor() {
3423
+ this.type = NotificationType.Info;
3424
+ }
3425
+ }
3426
+ MessageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MessageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3427
+ 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"] });
3428
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MessageComponent, decorators: [{
3429
+ type: Component,
3430
+ 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"] }]
3431
+ }], propDecorators: { message: [{
3432
+ type: Input
3433
+ }], type: [{
3434
+ type: Input
3435
+ }, {
3436
+ type: HostBinding,
3437
+ args: ['class']
3438
+ }] } });
3439
+
3188
3440
  class NgxSfcCommonModule {
3189
3441
  }
3190
3442
  NgxSfcCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NgxSfcCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -3223,6 +3475,7 @@ NgxSfcCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
3223
3475
  CollapseExpandComponent,
3224
3476
  CollapseExpandContainerComponent,
3225
3477
  ToggleComponent,
3478
+ MessageComponent,
3226
3479
  // loaders
3227
3480
  BounceLoaderComponent,
3228
3481
  CircleLoaderComponent,
@@ -3234,7 +3487,8 @@ NgxSfcCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
3234
3487
  DefaultModalFooterComponent,
3235
3488
  // pipes
3236
3489
  SwitchMultiCasePipe,
3237
- SortByPipe], imports: [CommonModule,
3490
+ SortByPipe,
3491
+ RepeatPipe], imports: [CommonModule,
3238
3492
  FontAwesomeModule], exports: [
3239
3493
  // directives
3240
3494
  ClickOutsideDirective,
@@ -3270,6 +3524,7 @@ NgxSfcCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
3270
3524
  CollapseExpandComponent,
3271
3525
  CollapseExpandContainerComponent,
3272
3526
  ToggleComponent,
3527
+ MessageComponent,
3273
3528
  // loaders
3274
3529
  BounceLoaderComponent,
3275
3530
  CircleLoaderComponent,
@@ -3281,7 +3536,8 @@ NgxSfcCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
3281
3536
  DefaultModalFooterComponent,
3282
3537
  // pipes
3283
3538
  SwitchMultiCasePipe,
3284
- SortByPipe] });
3539
+ SortByPipe,
3540
+ RepeatPipe] });
3285
3541
  NgxSfcCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NgxSfcCommonModule, providers: [DOCUMENT_PROVIDERS, WINDOW_PROVIDERS], imports: [CommonModule,
3286
3542
  FontAwesomeModule] });
3287
3543
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NgxSfcCommonModule, decorators: [{
@@ -3322,6 +3578,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3322
3578
  CollapseExpandComponent,
3323
3579
  CollapseExpandContainerComponent,
3324
3580
  ToggleComponent,
3581
+ MessageComponent,
3325
3582
  // loaders
3326
3583
  BounceLoaderComponent,
3327
3584
  CircleLoaderComponent,
@@ -3333,7 +3590,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3333
3590
  DefaultModalFooterComponent,
3334
3591
  // pipes
3335
3592
  SwitchMultiCasePipe,
3336
- SortByPipe
3593
+ SortByPipe,
3594
+ RepeatPipe
3337
3595
  ],
3338
3596
  imports: [
3339
3597
  CommonModule,
@@ -3374,6 +3632,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3374
3632
  CollapseExpandComponent,
3375
3633
  CollapseExpandContainerComponent,
3376
3634
  ToggleComponent,
3635
+ MessageComponent,
3377
3636
  // loaders
3378
3637
  BounceLoaderComponent,
3379
3638
  CircleLoaderComponent,
@@ -3385,7 +3644,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3385
3644
  DefaultModalFooterComponent,
3386
3645
  // pipes
3387
3646
  SwitchMultiCasePipe,
3388
- SortByPipe
3647
+ SortByPipe,
3648
+ RepeatPipe
3389
3649
  ],
3390
3650
  providers: [DOCUMENT_PROVIDERS, WINDOW_PROVIDERS]
3391
3651
  }]
@@ -3399,5 +3659,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3399
3659
  * Generated bundle index. Do not edit.
3400
3660
  */
3401
3661
 
3402
- 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 };
3662
+ 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 };
3663
+ //# sourceMappingURL=ngx-sfc-common.mjs.map
3403
3664
  //# sourceMappingURL=ngx-sfc-common.mjs.map