ngx-sfc-common 0.0.21 → 0.0.22

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 (132) hide show
  1. package/components/close/close.component.mixins.scss +9 -0
  2. package/components/collapse-expand/collapse-expand.component.mixins.scss +7 -0
  3. package/components/delimeter/delimeter.component.mixins.scss +37 -0
  4. package/components/load-container/load-container.component.mixins.scss +26 -0
  5. package/components/loader/bounce/bounce-loader.component.mixins.scss +7 -0
  6. package/components/loader/styles/loader.component.mixins.scss +11 -0
  7. package/esm2020/lib/components/checkmark/checkmark.component.mjs +2 -2
  8. package/esm2020/lib/components/close/close.component.mjs +3 -3
  9. package/esm2020/lib/components/collapse-expand/collapse-expand.component.mjs +31 -0
  10. package/esm2020/lib/components/collapse-expand/collapse-expand.constants.mjs +5 -0
  11. package/esm2020/lib/components/collapse-expand-container/collapse-expand-container.component.mjs +31 -0
  12. package/esm2020/lib/components/dots/dots.component.mjs +1 -1
  13. package/esm2020/lib/components/icon/icon.component.mjs +2 -2
  14. package/esm2020/lib/components/index.mjs +8 -6
  15. package/esm2020/lib/components/load-container/enums/load-container-changes-source.enum.mjs +9 -0
  16. package/esm2020/lib/components/load-container/enums/load-container-load-type.enum.mjs +7 -0
  17. package/esm2020/lib/components/load-container/enums/load-container-type.enum.mjs +6 -0
  18. package/esm2020/lib/components/load-container/load-container.component.mjs +110 -60
  19. package/esm2020/lib/components/load-container/load-container.constants.mjs +4 -3
  20. package/esm2020/lib/components/load-container/models/load-container-parameters.model.mjs +2 -0
  21. package/esm2020/lib/components/load-container/models/load-container-predicate-parameters.model.mjs +2 -0
  22. package/esm2020/lib/components/load-container/models/load-container-result.model.mjs +2 -0
  23. package/esm2020/lib/components/load-container/models/load-container.model.mjs +1 -1
  24. package/esm2020/lib/components/load-more-button/load-more-button.component.mjs +2 -2
  25. package/esm2020/lib/components/modal/header/default/default-modal-header.component.mjs +2 -2
  26. package/esm2020/lib/components/modal/modal.component.mjs +3 -3
  27. package/esm2020/lib/components/modal/service/modal.service.mjs +1 -1
  28. package/esm2020/lib/components/pagination/pagination-view.model.mjs +2 -0
  29. package/esm2020/lib/components/pagination/pagination.component.mjs +41 -40
  30. package/esm2020/lib/components/pagination/pagination.constants.mjs +5 -1
  31. package/esm2020/lib/components/pagination/pagination.model.mjs +2 -0
  32. package/esm2020/lib/components/toggle/toggle.component.mjs +30 -0
  33. package/esm2020/lib/components/toggle-switcher/toggle-switcher.component.mjs +3 -3
  34. package/esm2020/lib/components/tooltip/tooltip.component.mjs +12 -7
  35. package/esm2020/lib/constants/common.constants.mjs +3 -1
  36. package/esm2020/lib/constants/date-time.constants.mjs +2 -1
  37. package/esm2020/lib/directives/collapse-expand/collapse-expand.directive.mjs +41 -0
  38. package/esm2020/lib/directives/component-reference/component-reference.directive.mjs +17 -0
  39. package/esm2020/lib/directives/index.mjs +3 -1
  40. package/esm2020/lib/enums/ui.enum.mjs +2 -1
  41. package/esm2020/lib/ngx-sfc-common.module.mjs +32 -12
  42. package/esm2020/lib/pipes/index.mjs +2 -1
  43. package/esm2020/lib/pipes/sort-by/sort-by.pipe.mjs +25 -0
  44. package/esm2020/lib/services/index.mjs +4 -1
  45. package/esm2020/lib/services/load-more/load-more.service.mjs +27 -0
  46. package/esm2020/lib/services/pagination/pagination.service.mjs +27 -0
  47. package/esm2020/lib/services/sorting/sorting.model.mjs +2 -0
  48. package/esm2020/lib/services/sorting/sorting.service.mjs +21 -0
  49. package/esm2020/lib/types/empty.type.mjs +2 -0
  50. package/esm2020/lib/types/index.mjs +2 -0
  51. package/esm2020/lib/utils/collections.utils.mjs +2 -2
  52. package/esm2020/lib/utils/common.utils.mjs +11 -1
  53. package/esm2020/lib/utils/date-time.utils.mjs +25 -1
  54. package/esm2020/lib/utils/http.utils.mjs +30 -0
  55. package/esm2020/lib/utils/index.mjs +4 -3
  56. package/esm2020/public-api.mjs +2 -1
  57. package/fesm2015/ngx-sfc-common.mjs +511 -286
  58. package/fesm2015/ngx-sfc-common.mjs.map +1 -1
  59. package/fesm2020/ngx-sfc-common.mjs +508 -286
  60. package/fesm2020/ngx-sfc-common.mjs.map +1 -1
  61. package/lib/components/close/close.component.d.ts +1 -1
  62. package/lib/components/collapse-expand/collapse-expand.component.d.ts +11 -0
  63. package/lib/components/collapse-expand/collapse-expand.constants.d.ts +4 -0
  64. package/lib/components/collapse-expand-container/collapse-expand-container.component.d.ts +11 -0
  65. package/lib/components/index.d.ts +12 -11
  66. package/lib/components/load-container/enums/load-container-changes-source.enum.d.ts +7 -0
  67. package/lib/components/load-container/enums/load-container-load-type.enum.d.ts +5 -0
  68. package/lib/components/load-container/enums/load-container-type.enum.d.ts +4 -0
  69. package/lib/components/load-container/load-container.component.d.ts +25 -11
  70. package/lib/components/load-container/load-container.constants.d.ts +3 -2
  71. package/lib/components/load-container/models/load-container-parameters.model.d.ts +8 -0
  72. package/lib/components/load-container/models/load-container-predicate-parameters.model.d.ts +3 -0
  73. package/lib/components/load-container/models/load-container-result.model.d.ts +12 -0
  74. package/lib/components/load-container/models/load-container.model.d.ts +16 -11
  75. package/lib/components/modal/service/modal.service.d.ts +2 -1
  76. package/lib/components/pagination/pagination.component.d.ts +11 -9
  77. package/lib/components/pagination/pagination.constants.d.ts +3 -0
  78. package/lib/components/pagination/pagination.model.d.ts +4 -0
  79. package/lib/components/toggle/toggle.component.d.ts +8 -0
  80. package/lib/components/tooltip/tooltip.component.d.ts +4 -2
  81. package/lib/constants/common.constants.d.ts +2 -0
  82. package/lib/constants/date-time.constants.d.ts +1 -0
  83. package/lib/directives/collapse-expand/collapse-expand.directive.d.ts +13 -0
  84. package/lib/directives/component-reference/component-reference.directive.d.ts +8 -0
  85. package/lib/directives/index.d.ts +2 -0
  86. package/lib/enums/ui.enum.d.ts +2 -1
  87. package/lib/ngx-sfc-common.module.d.ts +41 -36
  88. package/lib/pipes/index.d.ts +1 -0
  89. package/lib/pipes/sort-by/sort-by.pipe.d.ts +8 -0
  90. package/lib/services/index.d.ts +4 -0
  91. package/lib/{components/load-container/service → services/load-more}/load-more.service.d.ts +1 -1
  92. package/lib/services/pagination/pagination.service.d.ts +11 -0
  93. package/lib/services/sorting/sorting.model.d.ts +5 -0
  94. package/lib/{components/sorting/service → services/sorting}/sorting.service.d.ts +3 -3
  95. package/lib/types/empty.type.d.ts +1 -0
  96. package/lib/types/index.d.ts +1 -0
  97. package/lib/utils/collections.utils.d.ts +1 -1
  98. package/lib/utils/common.utils.d.ts +5 -0
  99. package/lib/utils/date-time.utils.d.ts +13 -0
  100. package/lib/utils/http.utils.d.ts +7 -0
  101. package/lib/utils/index.d.ts +3 -2
  102. package/package.json +1 -1
  103. package/public-api.d.ts +1 -0
  104. package/styles/_index.scss +0 -2
  105. package/styles/_mixins.scss +48 -2
  106. package/styles/_variables.scss +1 -0
  107. package/esm2020/lib/components/load-container/load-container.enum.mjs +0 -11
  108. package/esm2020/lib/components/load-container/models/load-more-parameters.model.mjs +0 -2
  109. package/esm2020/lib/components/load-container/models/load-more-predicate-parameters.model.mjs +0 -2
  110. package/esm2020/lib/components/load-container/models/load-more.model.mjs +0 -2
  111. package/esm2020/lib/components/load-container/service/load-more.service.mjs +0 -27
  112. package/esm2020/lib/components/pagination/models/pagination-view.model.mjs +0 -2
  113. package/esm2020/lib/components/pagination/service/pagination.event.mjs +0 -2
  114. package/esm2020/lib/components/pagination/service/pagination.service.mjs +0 -47
  115. package/esm2020/lib/components/sorting/service/sorting.event.mjs +0 -2
  116. package/esm2020/lib/components/sorting/service/sorting.service.mjs +0 -21
  117. package/esm2020/lib/components/sorting/sorting.component.mjs +0 -71
  118. package/esm2020/lib/components/sorting/sorting.constants.mjs +0 -6
  119. package/esm2020/lib/components/sorting/sorting.model.mjs +0 -2
  120. package/lib/components/load-container/load-container.enum.d.ts +0 -8
  121. package/lib/components/load-container/models/load-more-parameters.model.d.ts +0 -5
  122. package/lib/components/load-container/models/load-more-predicate-parameters.model.d.ts +0 -3
  123. package/lib/components/load-container/models/load-more.model.d.ts +0 -5
  124. package/lib/components/pagination/service/pagination.event.d.ts +0 -6
  125. package/lib/components/pagination/service/pagination.service.d.ts +0 -25
  126. package/lib/components/sorting/service/sorting.event.d.ts +0 -5
  127. package/lib/components/sorting/sorting.component.d.ts +0 -22
  128. package/lib/components/sorting/sorting.constants.d.ts +0 -4
  129. package/lib/components/sorting/sorting.model.d.ts +0 -12
  130. package/styles/_mixins-delimeter.scss +0 -21
  131. package/styles/_mixins-scroll.scss +0 -38
  132. /package/lib/components/pagination/{models/pagination-view.model.d.ts → pagination-view.model.d.ts} +0 -0
@@ -1,13 +1,14 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, Injectable, PLATFORM_ID, EventEmitter, Directive, Inject, Input, Output, HostListener, Pipe, Component, HostBinding, ContentChildren, ViewChild, NgModule } from '@angular/core';
3
3
  import * as i1$1 from '@angular/common';
4
- import { isPlatformBrowser, CommonModule } from '@angular/common';
5
- import * as i3 from '@fortawesome/angular-fontawesome';
4
+ import { isPlatformBrowser, formatDate, CommonModule } from '@angular/common';
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, combineLatest, tap, switchMap, of } from 'rxjs';
7
+ import { Subject, fromEvent, Observable, distinctUntilChanged, startWith, BehaviorSubject, filter, map, EMPTY, tap, switchMap, combineLatest, of } from 'rxjs';
8
8
  import * as i1 from '@angular/platform-browser';
9
+ import { HttpParams } from '@angular/common/http';
9
10
  import { trigger, state, style, transition, group, query, animate, animateChild } from '@angular/animations';
10
- import { faTimes, faWindowRestore, faCheck, faChevronLeft, faChevronRight, faChevronUp, faChevronDown, faChevronCircleDown } from '@fortawesome/free-solid-svg-icons';
11
+ import { faTimes, faWindowRestore, faCheck, faChevronLeft, faChevronRight, faChevronCircleDown, faChevronUp, faChevronDown } from '@fortawesome/free-solid-svg-icons';
11
12
 
12
13
  /**
13
14
  * Component sizes
@@ -99,6 +100,7 @@ var UIClass;
99
100
  UIClass["Pointer"] = "pointer";
100
101
  UIClass["Default"] = "default";
101
102
  UIClass["Initialization"] = "initialization";
103
+ UIClass["Filled"] = "filled";
102
104
  })(UIClass || (UIClass = {}));
103
105
  ;
104
106
 
@@ -293,6 +295,72 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
293
295
  }]
294
296
  }], ctorParameters: function () { return [{ type: i1.EventManager }]; } });
295
297
 
298
+ class LoadMoreService {
299
+ constructor() {
300
+ this.pageValue = LoadMoreService.START_PAGE;
301
+ this.moreSubject = new Subject();
302
+ this.more$ = this.moreSubject.asObservable();
303
+ }
304
+ more() {
305
+ this.pageValue++;
306
+ this.moreSubject.next(this.pageValue);
307
+ }
308
+ reset() {
309
+ this.pageValue = LoadMoreService.START_PAGE;
310
+ }
311
+ }
312
+ LoadMoreService.START_PAGE = 1;
313
+ LoadMoreService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadMoreService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
314
+ LoadMoreService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadMoreService, providedIn: 'root' });
315
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadMoreService, decorators: [{
316
+ type: Injectable,
317
+ args: [{
318
+ providedIn: 'root'
319
+ }]
320
+ }] });
321
+
322
+ class PaginationService {
323
+ constructor() {
324
+ this.pageValue = PaginationService.START_PAGE;
325
+ this.pageSubject = new Subject();
326
+ this.page$ = this.pageSubject.asObservable();
327
+ }
328
+ page(page) {
329
+ this.pageValue = page;
330
+ this.pageSubject.next(page);
331
+ }
332
+ reset() {
333
+ this.pageValue = PaginationService.START_PAGE;
334
+ }
335
+ }
336
+ PaginationService.START_PAGE = 1;
337
+ PaginationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PaginationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
338
+ PaginationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PaginationService, providedIn: 'root' });
339
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PaginationService, decorators: [{
340
+ type: Injectable,
341
+ args: [{
342
+ providedIn: 'root'
343
+ }]
344
+ }] });
345
+
346
+ class SortingService {
347
+ constructor() {
348
+ this.sortingSubject = new Subject();
349
+ this.sorting$ = this.sortingSubject.asObservable();
350
+ }
351
+ sort(model) {
352
+ this.sortingSubject.next(model);
353
+ }
354
+ }
355
+ SortingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SortingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
356
+ SortingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SortingService, providedIn: 'root' });
357
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SortingService, decorators: [{
358
+ type: Injectable,
359
+ args: [{
360
+ providedIn: 'root'
361
+ }]
362
+ }] });
363
+
296
364
  class ClickOutsideDirective {
297
365
  constructor(elementRef, document) {
298
366
  this.elementRef = elementRef;
@@ -356,10 +424,12 @@ class CommonConstants {
356
424
  }
357
425
  CommonConstants.NOT_FOUND_INDEX = -1;
358
426
  CommonConstants.EMPTY_STRING = '';
427
+ CommonConstants.DEFAULT_KEY_VALUE = 0;
359
428
  CommonConstants.MOUSE_BUTTON_LEFT = 0;
360
429
  CommonConstants.FULL_PERCENTAGE = 100;
361
430
  CommonConstants.COMMON_TEXT_DELIMETER = '/';
362
- CommonConstants.PERCENTAGE_SYMBOL = '%';
431
+ CommonConstants.PERCENTAGE_SYMBOL = '%';
432
+ CommonConstants.DOT = '.';
363
433
 
364
434
  class DateTimeConstants {
365
435
  }
@@ -369,7 +439,8 @@ DateTimeConstants.HOURS_IN_TIME = 24;
369
439
  DateTimeConstants.MIDNIGHT_HOUR = 0;
370
440
  DateTimeConstants.MINUTES_IN_HOUR = 60;
371
441
  DateTimeConstants.DAYS_OF_WEEK = ["S", "M", "T", "W", "T", "F", "S"];
372
- DateTimeConstants.DAYS_OF_WEEK_3 = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
442
+ DateTimeConstants.DAYS_OF_WEEK_3 = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
443
+ DateTimeConstants.DEFAULT_LOCALE = 'en-US';
373
444
 
374
445
  class UIConstants {
375
446
  }
@@ -747,6 +818,29 @@ function convertTimestampToDate(timestamp) {
747
818
  result.setMinutes(+tempTime[1]);
748
819
  result.setSeconds(+tempTime[2]);
749
820
  return result;
821
+ }
822
+ /**
823
+ * Convert Date object to timestamp string
824
+ * @param date Date value
825
+ * @param locale Locale value
826
+ * @returns String representation of date value, for example - 12:23
827
+ */
828
+ function convertDateToTimestamp(date, locale = DateTimeConstants.DEFAULT_LOCALE) {
829
+ return `${formatDate(date, 'HH', locale)}:${formatDate(date, 'mm', locale)}`;
830
+ }
831
+ /**
832
+ * Get age from
833
+ * @param birthdate Date of birth
834
+ * @returns Age
835
+ */
836
+ function getAge(birthdate) {
837
+ const now = new Date();
838
+ let age = now.getFullYear() - birthdate.getFullYear();
839
+ const monthDifference = now.getMonth() - birthdate.getMonth();
840
+ if (monthDifference < 0 || (monthDifference === 0 && now.getDate() < birthdate.getDate())) {
841
+ age--;
842
+ }
843
+ return age;
750
844
  }
751
845
 
752
846
  /**
@@ -929,6 +1023,16 @@ function isEqual(obj1, obj2) {
929
1023
  if (type === 'function')
930
1024
  return areFunctionsEqual();
931
1025
  return arePrimativesEqual();
1026
+ }
1027
+ /**
1028
+ * Generate unique identificator
1029
+ * @returns Random GUID
1030
+ */
1031
+ function generateGuid() {
1032
+ let S4 = function () {
1033
+ return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
1034
+ };
1035
+ return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
932
1036
  }
933
1037
 
934
1038
  /**
@@ -1336,7 +1440,7 @@ function remove(collection, predicate) {
1336
1440
  * @param predicate Function to define if allowed to add new item
1337
1441
  * @returns True if successfully added
1338
1442
  */
1339
- function addItem(collection, item, predicate) {
1443
+ function addItem(collection, item, predicate = null) {
1340
1444
  if (!isDefined(collection))
1341
1445
  collection = new Array();
1342
1446
  if (isDefined(predicate) && predicate(item))
@@ -1398,6 +1502,33 @@ function getCollectionOrEmpty(collection) {
1398
1502
  return isDefined(collection) ? collection : [];
1399
1503
  }
1400
1504
 
1505
+ /**
1506
+ * Build HTTP parameters (GET) from request object
1507
+ * @param value Request object
1508
+ * * @returns HTTP parameters
1509
+ */
1510
+ function buildHttpParams(value) {
1511
+ let params = {}, httpParams = new HttpParams();
1512
+ _build(params, value, CommonConstants.EMPTY_STRING);
1513
+ Object.keys(params).forEach(key => httpParams = httpParams.append(key, params[key]));
1514
+ return httpParams;
1515
+ function _build(params, value, path, isArray = false) {
1516
+ const ARRAY_PART = ']';
1517
+ Object.keys(value).forEach(key => {
1518
+ if (value[key] instanceof Array) {
1519
+ _build(params, value[key], `${path}${key}[`, true);
1520
+ }
1521
+ else if (value[key] instanceof Object) {
1522
+ _build(params, value[key], `${path}${key}${isArray ? `${ARRAY_PART}${CommonConstants.DOT}` : CommonConstants.DOT}`);
1523
+ }
1524
+ else {
1525
+ if (isDefined(value[key]))
1526
+ params[`${path}${key}${isArray ? ARRAY_PART : CommonConstants.EMPTY_STRING}`] = value[key];
1527
+ }
1528
+ });
1529
+ }
1530
+ }
1531
+
1401
1532
  class ThrowElementOnHoverDirective {
1402
1533
  constructor(el) {
1403
1534
  this.el = el;
@@ -1723,6 +1854,58 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
1723
1854
  args: ['load', ['$event']]
1724
1855
  }] } });
1725
1856
 
1857
+ class CollapseExpandDirective {
1858
+ constructor(el) {
1859
+ this.el = el;
1860
+ this.EXPAND_COLLAPSE_TRANSITION_DELAY_DEFAULT = 0.5;
1861
+ this.style.transition = this.getTransitionValue();
1862
+ this.style.overflow = UIClass.Hidden;
1863
+ }
1864
+ set expand(expand) {
1865
+ this.style.maxHeight = expand
1866
+ ? getCssLikeValue(this.el.nativeElement.scrollHeight)
1867
+ : 0;
1868
+ }
1869
+ set delay(value) {
1870
+ this.style.transition = this.getTransitionValue(value);
1871
+ }
1872
+ ;
1873
+ get style() {
1874
+ return this.el.nativeElement.style;
1875
+ }
1876
+ getTransitionValue(delay = this.EXPAND_COLLAPSE_TRANSITION_DELAY_DEFAULT) {
1877
+ return `max-height ${delay}s ease-out`;
1878
+ }
1879
+ }
1880
+ CollapseExpandDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CollapseExpandDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1881
+ CollapseExpandDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: CollapseExpandDirective, selector: "[sfcCollapseExpand]", inputs: { expand: ["sfcCollapseExpand", "expand"], delay: "delay" }, ngImport: i0 });
1882
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CollapseExpandDirective, decorators: [{
1883
+ type: Directive,
1884
+ args: [{
1885
+ selector: '[sfcCollapseExpand]'
1886
+ }]
1887
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { expand: [{
1888
+ type: Input,
1889
+ args: ['sfcCollapseExpand']
1890
+ }], delay: [{
1891
+ type: Input
1892
+ }] } });
1893
+
1894
+ class ComponentReferenceDirective {
1895
+ constructor(elementRef) {
1896
+ this.elementRef = elementRef;
1897
+ }
1898
+ }
1899
+ ComponentReferenceDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ComponentReferenceDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
1900
+ ComponentReferenceDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.4", type: ComponentReferenceDirective, selector: "[sfcComponentReference]", exportAs: ["componentRef"], ngImport: i0 });
1901
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ComponentReferenceDirective, decorators: [{
1902
+ type: Directive,
1903
+ args: [{
1904
+ selector: '[sfcComponentReference]',
1905
+ exportAs: 'componentRef',
1906
+ }]
1907
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; } });
1908
+
1726
1909
  class SwitchMultiCasePipe {
1727
1910
  transform(cases, switchOption) {
1728
1911
  return cases.includes(switchOption) ? switchOption : !switchOption;
@@ -1737,6 +1920,27 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
1737
1920
  }]
1738
1921
  }] });
1739
1922
 
1923
+ class SortByPipe {
1924
+ transform(value, path, direction = SortingDirection.Ascending) {
1925
+ if (!any(value)) {
1926
+ return value;
1927
+ } // no array
1928
+ if (value.length <= 1) {
1929
+ return value;
1930
+ } // array with only one item
1931
+ if (isNullOrEmptyString(path)) {
1932
+ return value;
1933
+ } // no path
1934
+ return sortByPath(value, path, direction);
1935
+ }
1936
+ }
1937
+ 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" });
1939
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SortByPipe, decorators: [{
1940
+ type: Pipe,
1941
+ args: [{ name: 'sfcSortBy' }]
1942
+ }] });
1943
+
1740
1944
  var ButtonType;
1741
1945
  (function (ButtonType) {
1742
1946
  ButtonType["Bordered"] = "bordered";
@@ -1764,7 +1968,7 @@ class ButtonComponent {
1764
1968
  }
1765
1969
  }
1766
1970
  ButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1767
- ButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ButtonComponent, selector: "sfc-button", inputs: { text: "text", iconBefore: "iconBefore", iconAfter: "iconAfter", disabled: "disabled", types: "types" }, host: { properties: { "class.disabled": "this.disabled" } }, ngImport: i0, template: "<a class=\"button\" [ngClass]=\"classes\">\r\n <fa-icon *ngIf=\"iconBefore\" class=\"icon before\" [icon]=\"iconBefore\"></fa-icon>\r\n <span class=\"text\">{{label}}</span>\r\n <fa-icon *ngIf=\"iconAfter\" class=\"icon after\" [icon]=\"iconAfter\"></fa-icon>\r\n</a>", styles: [":host .button.bordered{border:solid 2px;transition:color .5s ease;transition:border-color .5s ease}:host .button.bordered,:host-context(.sfc-default-theme) :host .button.bordered{color:#545e61}:host-context(.sfc-dark-theme) :host .button.bordered{color:#fff}:host .button.bordered,:host-context(.sfc-default-theme) :host .button.bordered{border-color:#545e61}:host-context(.sfc-dark-theme) :host .button.bordered{border-color:#fff}:host .button.filled{color:#fff!important;transition:border-color .5s ease;transition:background .5s ease}:host .button.filled,:host-context(.sfc-default-theme) :host .button.filled{border-color:#545e61}:host-context(.sfc-dark-theme) :host .button.filled{border-color:#545e61}:host .button.filled,:host-context(.sfc-default-theme) :host .button.filled{background:#545e61}:host-context(.sfc-dark-theme) :host .button.filled{background:#545e61}:host.disabled .button.filled{color:#fff!important;transition:border-color .5s ease;transition:background .5s ease}:host.disabled .button.filled,:host-context(.sfc-default-theme) :host.disabled .button.filled{border-color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .button.filled{border-color:#bdbdbd}:host.disabled .button.filled,:host-context(.sfc-default-theme) :host.disabled .button.filled{background:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .button.filled{background:#bdbdbd}:host:hover .button.filled{color:#fff!important;transition:border-color .5s ease;transition:background .5s ease}:host:hover .button.filled,:host-context(.sfc-default-theme) :host:hover .button.filled{border-color:#ffce54}:host-context(.sfc-dark-theme) :host:hover .button.filled{border-color:#ffce54}:host:hover .button.filled,:host-context(.sfc-default-theme) :host:hover .button.filled{background:#ffce54}:host-context(.sfc-dark-theme) :host:hover .button.filled{background:#ffce54}:host .button.rounded{border:solid 2px;transition:color .5s ease;transition:border-color .5s ease;border-radius:1.25em;padding:.4em 1.2em}:host .button.rounded,:host-context(.sfc-default-theme) :host .button.rounded{color:#545e61}:host-context(.sfc-dark-theme) :host .button.rounded{color:#fff}:host .button.rounded,:host-context(.sfc-default-theme) :host .button.rounded{border-color:#545e61}:host-context(.sfc-dark-theme) :host .button.rounded{border-color:#fff}:host .button.rounded.filled{transition:border-color .5s ease}:host .button.rounded.filled,:host-context(.sfc-default-theme) :host .button.rounded.filled{border-color:#545e61}:host-context(.sfc-dark-theme) :host .button.rounded.filled{border-color:#545e61}:host.disabled .button.rounded.filled{border-color:#bdbdbd}:host:not(.disabled):hover .button.rounded.filled{border-color:#ffce54}:host .button.circled{border:solid 2px;transition:color .5s ease;transition:border-color .5s ease;width:5em;height:5em;border-radius:50%}:host .button.circled,:host-context(.sfc-default-theme) :host .button.circled{color:#545e61}:host-context(.sfc-dark-theme) :host .button.circled{color:#fff}:host .button.circled,:host-context(.sfc-default-theme) :host .button.circled{border-color:#545e61}:host-context(.sfc-dark-theme) :host .button.circled{border-color:#fff}:host .button.circled .text{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host{display:inline-block;font-size:1em}:host .button{box-sizing:border-box;display:inline-flex;justify-content:center;flex-wrap:wrap;align-items:center;overflow:hidden;text-align:center;text-decoration:none;white-space:nowrap;font-size:.9em;cursor:pointer;-webkit-user-select:none;user-select:none;width:inherit;transition:color .5s ease;transition:color .5s ease,border-color .5s ease,background .5s ease!important}:host .button,:host-context(.sfc-default-theme) :host .button{color:#545e61}:host-context(.sfc-dark-theme) :host .button{color:#fff}:host .button .icon{padding:3px}:host .button .text{padding:3px;white-space:initial;text-overflow:ellipsis;overflow:hidden}:host .button .text:empty{display:none}:host.disabled{pointer-events:none}:host.disabled .button{transition:color .5s ease;transition:border-color .5s ease}:host.disabled .button,:host-context(.sfc-default-theme) :host.disabled .button{color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .button{color:#656d78}:host.disabled .button,:host-context(.sfc-default-theme) :host.disabled .button{border-color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .button{border-color:#656d78}:host:not(.disabled):hover .button{color:#ffce54;border-color:#ffce54}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] });
1971
+ ButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ButtonComponent, selector: "sfc-button", inputs: { text: "text", iconBefore: "iconBefore", iconAfter: "iconAfter", disabled: "disabled", types: "types" }, host: { properties: { "class.disabled": "this.disabled" } }, ngImport: i0, template: "<a class=\"button\" [ngClass]=\"classes\">\r\n <fa-icon *ngIf=\"iconBefore\" class=\"icon before\" [icon]=\"iconBefore\"></fa-icon>\r\n <span class=\"text\">{{label}}</span>\r\n <fa-icon *ngIf=\"iconAfter\" class=\"icon after\" [icon]=\"iconAfter\"></fa-icon>\r\n</a>", styles: [":host .button.bordered{border:solid 2px;transition:color .5s ease;transition:border-color .5s ease}:host .button.bordered,:host-context(.sfc-default-theme) :host .button.bordered{color:#545e61}:host-context(.sfc-dark-theme) :host .button.bordered{color:#fff}:host .button.bordered,:host-context(.sfc-default-theme) :host .button.bordered{border-color:#545e61}:host-context(.sfc-dark-theme) :host .button.bordered{border-color:#fff}:host .button.filled{color:#fff!important;transition:border-color .5s ease;transition:background .5s ease}:host .button.filled,:host-context(.sfc-default-theme) :host .button.filled{border-color:#545e61}:host-context(.sfc-dark-theme) :host .button.filled{border-color:#545e61}:host .button.filled,:host-context(.sfc-default-theme) :host .button.filled{background:#545e61}:host-context(.sfc-dark-theme) :host .button.filled{background:#545e61}:host.disabled .button.filled{color:#fff!important;transition:border-color .5s ease;transition:background .5s ease}:host.disabled .button.filled,:host-context(.sfc-default-theme) :host.disabled .button.filled{border-color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .button.filled{border-color:#bdbdbd}:host.disabled .button.filled,:host-context(.sfc-default-theme) :host.disabled .button.filled{background:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .button.filled{background:#bdbdbd}:host:hover .button.filled{color:#fff!important;transition:border-color .5s ease;transition:background .5s ease}:host:hover .button.filled,:host-context(.sfc-default-theme) :host:hover .button.filled{border-color:#ffce54}:host-context(.sfc-dark-theme) :host:hover .button.filled{border-color:#ffce54}:host:hover .button.filled,:host-context(.sfc-default-theme) :host:hover .button.filled{background:#ffce54}:host-context(.sfc-dark-theme) :host:hover .button.filled{background:#ffce54}:host .button.rounded{border:solid 2px;transition:color .5s ease;transition:border-color .5s ease;border-radius:1.25em;padding:.4em 1.2em}:host .button.rounded,:host-context(.sfc-default-theme) :host .button.rounded{color:#545e61}:host-context(.sfc-dark-theme) :host .button.rounded{color:#fff}:host .button.rounded,:host-context(.sfc-default-theme) :host .button.rounded{border-color:#545e61}:host-context(.sfc-dark-theme) :host .button.rounded{border-color:#fff}:host .button.rounded.filled{transition:border-color .5s ease}:host .button.rounded.filled,:host-context(.sfc-default-theme) :host .button.rounded.filled{border-color:#545e61}:host-context(.sfc-dark-theme) :host .button.rounded.filled{border-color:#545e61}:host.disabled .button.rounded.filled{border-color:#bdbdbd}:host:not(.disabled):hover .button.rounded.filled{border-color:#ffce54}:host .button.circled{border:solid 2px;transition:color .5s ease;transition:border-color .5s ease;width:5em;height:5em;border-radius:50%}:host .button.circled,:host-context(.sfc-default-theme) :host .button.circled{color:#545e61}:host-context(.sfc-dark-theme) :host .button.circled{color:#fff}:host .button.circled,:host-context(.sfc-default-theme) :host .button.circled{border-color:#545e61}:host-context(.sfc-dark-theme) :host .button.circled{border-color:#fff}:host .button.circled .text{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host{display:inline-block;font-size:1em}:host .button{box-sizing:border-box;display:inline-flex;justify-content:center;flex-wrap:wrap;align-items:center;overflow:hidden;text-align:center;text-decoration:none;white-space:nowrap;font-size:.9em;cursor:pointer;-webkit-user-select:none;user-select:none;width:inherit;transition:color .5s ease;transition:color .5s ease,border-color .5s ease,background .5s ease!important}:host .button,:host-context(.sfc-default-theme) :host .button{color:#545e61}:host-context(.sfc-dark-theme) :host .button{color:#fff}:host .button .icon{padding:3px}:host .button .text{padding:3px;white-space:initial;text-overflow:ellipsis;overflow:hidden}:host .button .text:empty{display:none}:host.disabled{pointer-events:none}:host.disabled .button{transition:color .5s ease;transition:border-color .5s ease}:host.disabled .button,:host-context(.sfc-default-theme) :host.disabled .button{color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .button{color:#656d78}:host.disabled .button,:host-context(.sfc-default-theme) :host.disabled .button{border-color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .button{border-color:#656d78}:host:not(.disabled):hover .button{color:#ffce54;border-color:#ffce54}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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"] }] });
1768
1972
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ButtonComponent, decorators: [{
1769
1973
  type: Component,
1770
1974
  args: [{ selector: 'sfc-button', template: "<a class=\"button\" [ngClass]=\"classes\">\r\n <fa-icon *ngIf=\"iconBefore\" class=\"icon before\" [icon]=\"iconBefore\"></fa-icon>\r\n <span class=\"text\">{{label}}</span>\r\n <fa-icon *ngIf=\"iconAfter\" class=\"icon after\" [icon]=\"iconAfter\"></fa-icon>\r\n</a>", styles: [":host .button.bordered{border:solid 2px;transition:color .5s ease;transition:border-color .5s ease}:host .button.bordered,:host-context(.sfc-default-theme) :host .button.bordered{color:#545e61}:host-context(.sfc-dark-theme) :host .button.bordered{color:#fff}:host .button.bordered,:host-context(.sfc-default-theme) :host .button.bordered{border-color:#545e61}:host-context(.sfc-dark-theme) :host .button.bordered{border-color:#fff}:host .button.filled{color:#fff!important;transition:border-color .5s ease;transition:background .5s ease}:host .button.filled,:host-context(.sfc-default-theme) :host .button.filled{border-color:#545e61}:host-context(.sfc-dark-theme) :host .button.filled{border-color:#545e61}:host .button.filled,:host-context(.sfc-default-theme) :host .button.filled{background:#545e61}:host-context(.sfc-dark-theme) :host .button.filled{background:#545e61}:host.disabled .button.filled{color:#fff!important;transition:border-color .5s ease;transition:background .5s ease}:host.disabled .button.filled,:host-context(.sfc-default-theme) :host.disabled .button.filled{border-color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .button.filled{border-color:#bdbdbd}:host.disabled .button.filled,:host-context(.sfc-default-theme) :host.disabled .button.filled{background:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .button.filled{background:#bdbdbd}:host:hover .button.filled{color:#fff!important;transition:border-color .5s ease;transition:background .5s ease}:host:hover .button.filled,:host-context(.sfc-default-theme) :host:hover .button.filled{border-color:#ffce54}:host-context(.sfc-dark-theme) :host:hover .button.filled{border-color:#ffce54}:host:hover .button.filled,:host-context(.sfc-default-theme) :host:hover .button.filled{background:#ffce54}:host-context(.sfc-dark-theme) :host:hover .button.filled{background:#ffce54}:host .button.rounded{border:solid 2px;transition:color .5s ease;transition:border-color .5s ease;border-radius:1.25em;padding:.4em 1.2em}:host .button.rounded,:host-context(.sfc-default-theme) :host .button.rounded{color:#545e61}:host-context(.sfc-dark-theme) :host .button.rounded{color:#fff}:host .button.rounded,:host-context(.sfc-default-theme) :host .button.rounded{border-color:#545e61}:host-context(.sfc-dark-theme) :host .button.rounded{border-color:#fff}:host .button.rounded.filled{transition:border-color .5s ease}:host .button.rounded.filled,:host-context(.sfc-default-theme) :host .button.rounded.filled{border-color:#545e61}:host-context(.sfc-dark-theme) :host .button.rounded.filled{border-color:#545e61}:host.disabled .button.rounded.filled{border-color:#bdbdbd}:host:not(.disabled):hover .button.rounded.filled{border-color:#ffce54}:host .button.circled{border:solid 2px;transition:color .5s ease;transition:border-color .5s ease;width:5em;height:5em;border-radius:50%}:host .button.circled,:host-context(.sfc-default-theme) :host .button.circled{color:#545e61}:host-context(.sfc-dark-theme) :host .button.circled{color:#fff}:host .button.circled,:host-context(.sfc-default-theme) :host .button.circled{border-color:#545e61}:host-context(.sfc-dark-theme) :host .button.circled{border-color:#fff}:host .button.circled .text{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host{display:inline-block;font-size:1em}:host .button{box-sizing:border-box;display:inline-flex;justify-content:center;flex-wrap:wrap;align-items:center;overflow:hidden;text-align:center;text-decoration:none;white-space:nowrap;font-size:.9em;cursor:pointer;-webkit-user-select:none;user-select:none;width:inherit;transition:color .5s ease;transition:color .5s ease,border-color .5s ease,background .5s ease!important}:host .button,:host-context(.sfc-default-theme) :host .button{color:#545e61}:host-context(.sfc-dark-theme) :host .button{color:#fff}:host .button .icon{padding:3px}:host .button .text{padding:3px;white-space:initial;text-overflow:ellipsis;overflow:hidden}:host .button .text:empty{display:none}:host.disabled{pointer-events:none}:host.disabled .button{transition:color .5s ease;transition:border-color .5s ease}:host.disabled .button,:host-context(.sfc-default-theme) :host.disabled .button{color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .button{color:#656d78}:host.disabled .button,:host-context(.sfc-default-theme) :host.disabled .button{border-color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .button{border-color:#656d78}:host:not(.disabled):hover .button{color:#ffce54;border-color:#ffce54}\n"] }]
@@ -1796,6 +2000,7 @@ class TooltipComponent {
1796
2000
  this.tooltipType = TooltipType.Hover;
1797
2001
  this.tooltipPosition = Position.Top;
1798
2002
  this.tooltipShow = false;
2003
+ this.resize = true;
1799
2004
  // preserved position
1800
2005
  this._position = Position.Top;
1801
2006
  }
@@ -1808,20 +2013,22 @@ class TooltipComponent {
1808
2013
  this._position = this.tooltipPosition;
1809
2014
  }
1810
2015
  ngAfterContentInit() {
1811
- this._resizeSubscription = this.resizeService.onResize$
1812
- .pipe(startWith(this.window))
1813
- .subscribe(window => this.tooltipPosition = window.innerWidth <= MediaLimits.Tablet
1814
- ? Position.Bottom : this._position);
2016
+ if (this.resize) {
2017
+ this._resizeSubscription = this.resizeService.onResize$
2018
+ .pipe(startWith(this.window))
2019
+ .subscribe(window => this.tooltipPosition = window.innerWidth <= MediaLimits.Tablet
2020
+ ? Position.Bottom : this._position);
2021
+ }
1815
2022
  }
1816
2023
  ngOnDestroy() {
1817
2024
  this._resizeSubscription?.unsubscribe();
1818
2025
  }
1819
2026
  }
1820
2027
  TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TooltipComponent, deps: [{ token: ResizeService }, { token: WINDOW }], target: i0.ɵɵFactoryTarget.Component });
1821
- TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: TooltipComponent, selector: "[sfc-tooltip]", inputs: { value: ["sfc-tooltip", "value"], tooltipType: "tooltipType", tooltipPosition: "tooltipPosition", tooltipShow: "tooltipShow" }, host: { listeners: { "click": "click()" }, properties: { "attr.value": "this.value", "attr.type": "this.tooltipType", "attr.position": "this.tooltipPosition", "class.show": "this.tooltipShow" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{position:relative}:host:before,:host:after{position:absolute;left:50%;bottom:calc(100% + 5px);pointer-events:none;transition:.2s;will-change:transform}:host:hover:before,:host.show:before{content:attr(value);padding:.4em .7em;font-size:.8em;font-weight:initial;width:inherit;max-width:18.75em;border-radius:6px;background-color:#545e61;box-shadow:0 0 20.25em #aab2bd;color:#fff;text-align:center;white-space:pre-wrap;overflow:hidden;word-wrap:break-word;z-index:9999}:host:after{content:\"\";border-style:solid;transition-duration:0s;transform:translate(-50%) scaleY(0)}:host[type=hover]:before,:host[type=hover]:after,:host:not(.show):before,:host:not(.show):after{visibility:hidden;opacity:0}:host[type=hover]:hover:before,:host[type=hover]:hover:after,:host.show:before,:host.show:after{visibility:visible;opacity:1}:host[type=hover]:hover:before,:host.show:before{transition-delay:.1s}:host[type=hover]:hover:after,:host.show:after{transition-delay:.3s;transition-duration:.2s;transform:translate(-50%) scaleY(1)}:host[position=top]:before,:host[position=top]:after{left:50%;bottom:calc(100% + 5px)}:host[position=top]:before{transform:translate(-50%,-5px) scale(.5)}:host[position=top]:hover:before,:host[position=top].show:before{transform:translate(-50%,-.25em) scale(1)}:host[position=top]:after{border-width:.25em .25em 0;border-color:#545e61 transparent transparent transparent;transform-origin:top}:host[position=left]:before,:host[position=left]:after{left:auto;right:calc(100% + 5px);bottom:50%}:host[position=left]:before{transform:translate(-.25em,50%) scale(.5)}:host[position=left]:hover:before,:host[position=left].show:before{transform:translate(-.31em,50%) scale(1)}:host[position=left]:after{border-width:.25em 0 .25em .25em;border-color:transparent transparent transparent #545e61;transform-origin:left;transform:translateY(50%) scaleX(0)}:host[position=left]:hover:after,:host[position=left].show:after{transform:translateY(50%) scaleX(1)}:host[position=right]:before,:host[position=right]:after{left:calc(100% + 5px);bottom:50%}:host[position=right]:before{transform:translate(5px,50%) scale(.5)}:host[position=right]:hover:before,:host[position=right].show:before{transform:translate(.31em,50%) scale(1)}:host[position=right]:after{border-width:.25em .25em .25em 0;border-color:transparent #545e61 transparent transparent;transform-origin:right;transform:translateY(50%) scaleX(0)}:host[position=right]:hover:after,:host[position=right].show:after{transform:translateY(50%) scaleX(1)}:host[position=bottom]:before,:host[position=bottom]:after{top:calc(100% + 5px);bottom:auto}:host[position=bottom]:before{transform:translate(-50%,5px) scale(.5)}:host[position=bottom]:hover:before,:host[position=bottom].show:before{transform:translate(-50%,.31em) scale(1)}:host[position=bottom]:after{border-width:0 .25em .25em;border-color:transparent transparent #545e61 transparent;transform-origin:bottom}\n"] });
2028
+ TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: TooltipComponent, selector: "[sfc-tooltip]", inputs: { value: ["sfc-tooltip", "value"], tooltipType: "tooltipType", tooltipPosition: "tooltipPosition", tooltipShow: "tooltipShow", resize: "resize" }, host: { listeners: { "click": "click()" }, properties: { "attr.value": "this.value", "attr.type": "this.tooltipType", "attr.position": "this.tooltipPosition", "class.show": "this.tooltipShow" } }, ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{position:relative}:host:before,:host:after{position:absolute;left:50%;bottom:calc(100% + 5px);pointer-events:none;transition:.2s;will-change:transform}:host:hover:before,:host.show:before{content:attr(value);padding:.4em .7em;font-size:.8em;font-weight:initial;width:inherit;max-width:18.75em;border-radius:6px;background-color:#545e61;box-shadow:0 0 20.25em #aab2bd;color:#fff;text-align:center;white-space:pre-wrap;overflow:hidden;word-wrap:break-word;z-index:9999}:host:after{content:\"\";border-style:solid;transition-duration:0s;transform:translate(-50%) scaleY(0);z-index:9999}:host[type=hover]:before,:host[type=hover]:after,:host:not(.show):before,:host:not(.show):after{visibility:hidden;opacity:0}:host[type=hover]:hover:before,:host[type=hover]:hover:after,:host.show:before,:host.show:after{visibility:visible;opacity:1}:host[type=hover]:hover:before,:host.show:before{transition-delay:.1s}:host[type=hover]:hover:after,:host.show:after{transition-delay:.3s;transition-duration:.2s;transform:translate(-50%) scaleY(1)}:host[position=top]:before,:host[position=top]:after{left:50%;bottom:calc(100% + 5px)}:host[position=top]:before{transform:translate(-50%,-5px) scale(.5)}:host[position=top]:hover:before,:host[position=top].show:before{transform:translate(-50%,-.25em) scale(1)}:host[position=top]:after{border-width:.25em .25em 0;border-color:#545e61 transparent transparent transparent;transform-origin:top}:host[position=left]:before,:host[position=left]:after{left:auto;right:calc(100% + 5px);bottom:50%}:host[position=left]:before{transform:translate(-.25em,50%) scale(.5)}:host[position=left]:hover:before,:host[position=left].show:before{transform:translate(-.31em,50%) scale(1)}:host[position=left]:after{border-width:.25em 0 .25em .25em;border-color:transparent transparent transparent #545e61;transform-origin:left;transform:translateY(50%) scaleX(0)}:host[position=left]:hover:after,:host[position=left].show:after{transform:translateY(50%) scaleX(1)}:host[position=right]:before,:host[position=right]:after{left:calc(100% + 5px);bottom:50%}:host[position=right]:before{transform:translate(5px,50%) scale(.5)}:host[position=right]:hover:before,:host[position=right].show:before{transform:translate(.31em,50%) scale(1)}:host[position=right]:after{border-width:.25em .25em .25em 0;border-color:transparent #545e61 transparent transparent;transform-origin:right;transform:translateY(50%) scaleX(0)}:host[position=right]:hover:after,:host[position=right].show:after{transform:translateY(50%) scaleX(1)}:host[position=bottom]:before,:host[position=bottom]:after{top:calc(100% + 5px);bottom:auto}:host[position=bottom]:before{transform:translate(-50%,5px) scale(.5)}:host[position=bottom]:hover:before,:host[position=bottom].show:before{transform:translate(-50%,.31em) scale(1)}:host[position=bottom]:after{border-width:0 .25em .25em;border-color:transparent transparent #545e61 transparent;transform-origin:bottom}\n"] });
1822
2029
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TooltipComponent, decorators: [{
1823
2030
  type: Component,
1824
- args: [{ selector: '[sfc-tooltip]', template: `<ng-content></ng-content>`, styles: [":host{position:relative}:host:before,:host:after{position:absolute;left:50%;bottom:calc(100% + 5px);pointer-events:none;transition:.2s;will-change:transform}:host:hover:before,:host.show:before{content:attr(value);padding:.4em .7em;font-size:.8em;font-weight:initial;width:inherit;max-width:18.75em;border-radius:6px;background-color:#545e61;box-shadow:0 0 20.25em #aab2bd;color:#fff;text-align:center;white-space:pre-wrap;overflow:hidden;word-wrap:break-word;z-index:9999}:host:after{content:\"\";border-style:solid;transition-duration:0s;transform:translate(-50%) scaleY(0)}:host[type=hover]:before,:host[type=hover]:after,:host:not(.show):before,:host:not(.show):after{visibility:hidden;opacity:0}:host[type=hover]:hover:before,:host[type=hover]:hover:after,:host.show:before,:host.show:after{visibility:visible;opacity:1}:host[type=hover]:hover:before,:host.show:before{transition-delay:.1s}:host[type=hover]:hover:after,:host.show:after{transition-delay:.3s;transition-duration:.2s;transform:translate(-50%) scaleY(1)}:host[position=top]:before,:host[position=top]:after{left:50%;bottom:calc(100% + 5px)}:host[position=top]:before{transform:translate(-50%,-5px) scale(.5)}:host[position=top]:hover:before,:host[position=top].show:before{transform:translate(-50%,-.25em) scale(1)}:host[position=top]:after{border-width:.25em .25em 0;border-color:#545e61 transparent transparent transparent;transform-origin:top}:host[position=left]:before,:host[position=left]:after{left:auto;right:calc(100% + 5px);bottom:50%}:host[position=left]:before{transform:translate(-.25em,50%) scale(.5)}:host[position=left]:hover:before,:host[position=left].show:before{transform:translate(-.31em,50%) scale(1)}:host[position=left]:after{border-width:.25em 0 .25em .25em;border-color:transparent transparent transparent #545e61;transform-origin:left;transform:translateY(50%) scaleX(0)}:host[position=left]:hover:after,:host[position=left].show:after{transform:translateY(50%) scaleX(1)}:host[position=right]:before,:host[position=right]:after{left:calc(100% + 5px);bottom:50%}:host[position=right]:before{transform:translate(5px,50%) scale(.5)}:host[position=right]:hover:before,:host[position=right].show:before{transform:translate(.31em,50%) scale(1)}:host[position=right]:after{border-width:.25em .25em .25em 0;border-color:transparent #545e61 transparent transparent;transform-origin:right;transform:translateY(50%) scaleX(0)}:host[position=right]:hover:after,:host[position=right].show:after{transform:translateY(50%) scaleX(1)}:host[position=bottom]:before,:host[position=bottom]:after{top:calc(100% + 5px);bottom:auto}:host[position=bottom]:before{transform:translate(-50%,5px) scale(.5)}:host[position=bottom]:hover:before,:host[position=bottom].show:before{transform:translate(-50%,.31em) scale(1)}:host[position=bottom]:after{border-width:0 .25em .25em;border-color:transparent transparent #545e61 transparent;transform-origin:bottom}\n"] }]
2031
+ args: [{ selector: '[sfc-tooltip]', template: `<ng-content></ng-content>`, styles: [":host{position:relative}:host:before,:host:after{position:absolute;left:50%;bottom:calc(100% + 5px);pointer-events:none;transition:.2s;will-change:transform}:host:hover:before,:host.show:before{content:attr(value);padding:.4em .7em;font-size:.8em;font-weight:initial;width:inherit;max-width:18.75em;border-radius:6px;background-color:#545e61;box-shadow:0 0 20.25em #aab2bd;color:#fff;text-align:center;white-space:pre-wrap;overflow:hidden;word-wrap:break-word;z-index:9999}:host:after{content:\"\";border-style:solid;transition-duration:0s;transform:translate(-50%) scaleY(0);z-index:9999}:host[type=hover]:before,:host[type=hover]:after,:host:not(.show):before,:host:not(.show):after{visibility:hidden;opacity:0}:host[type=hover]:hover:before,:host[type=hover]:hover:after,:host.show:before,:host.show:after{visibility:visible;opacity:1}:host[type=hover]:hover:before,:host.show:before{transition-delay:.1s}:host[type=hover]:hover:after,:host.show:after{transition-delay:.3s;transition-duration:.2s;transform:translate(-50%) scaleY(1)}:host[position=top]:before,:host[position=top]:after{left:50%;bottom:calc(100% + 5px)}:host[position=top]:before{transform:translate(-50%,-5px) scale(.5)}:host[position=top]:hover:before,:host[position=top].show:before{transform:translate(-50%,-.25em) scale(1)}:host[position=top]:after{border-width:.25em .25em 0;border-color:#545e61 transparent transparent transparent;transform-origin:top}:host[position=left]:before,:host[position=left]:after{left:auto;right:calc(100% + 5px);bottom:50%}:host[position=left]:before{transform:translate(-.25em,50%) scale(.5)}:host[position=left]:hover:before,:host[position=left].show:before{transform:translate(-.31em,50%) scale(1)}:host[position=left]:after{border-width:.25em 0 .25em .25em;border-color:transparent transparent transparent #545e61;transform-origin:left;transform:translateY(50%) scaleX(0)}:host[position=left]:hover:after,:host[position=left].show:after{transform:translateY(50%) scaleX(1)}:host[position=right]:before,:host[position=right]:after{left:calc(100% + 5px);bottom:50%}:host[position=right]:before{transform:translate(5px,50%) scale(.5)}:host[position=right]:hover:before,:host[position=right].show:before{transform:translate(.31em,50%) scale(1)}:host[position=right]:after{border-width:.25em .25em .25em 0;border-color:transparent #545e61 transparent transparent;transform-origin:right;transform:translateY(50%) scaleX(0)}:host[position=right]:hover:after,:host[position=right].show:after{transform:translateY(50%) scaleX(1)}:host[position=bottom]:before,:host[position=bottom]:after{top:calc(100% + 5px);bottom:auto}:host[position=bottom]:before{transform:translate(-50%,5px) scale(.5)}:host[position=bottom]:hover:before,:host[position=bottom].show:before{transform:translate(-50%,.31em) scale(1)}:host[position=bottom]:after{border-width:0 .25em .25em;border-color:transparent transparent #545e61 transparent;transform-origin:bottom}\n"] }]
1825
2032
  }], ctorParameters: function () { return [{ type: ResizeService }, { type: Window, decorators: [{
1826
2033
  type: Inject,
1827
2034
  args: [WINDOW]
@@ -1846,6 +2053,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
1846
2053
  }, {
1847
2054
  type: HostBinding,
1848
2055
  args: ['class.show']
2056
+ }], resize: [{
2057
+ type: Input
1849
2058
  }], click: [{
1850
2059
  type: HostListener,
1851
2060
  args: ['click']
@@ -2095,10 +2304,10 @@ class CloseComponent {
2095
2304
  }
2096
2305
  }
2097
2306
  CloseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CloseComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2098
- CloseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: CloseComponent, selector: "sfc-close", ngImport: i0, template: "<div class=\"container\">\r\n <fa-icon [icon]=\"faTimes\"></fa-icon>\r\n</div>", styles: [":host{color:#545e61;cursor:pointer}:host:hover{color:#ffce54}\n"], dependencies: [{ kind: "component", type: i3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] });
2307
+ CloseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: CloseComponent, selector: "sfc-close", ngImport: i0, template: "<div class=\"container\">\r\n <ng-content></ng-content>\r\n <fa-icon [icon]=\"faTimes\"></fa-icon>\r\n</div>", styles: [":host{transition:color .5s ease;cursor:pointer}:host,:host-context(.sfc-default-theme) :host{color:#545e61}:host-context(.sfc-dark-theme) :host{color:#fff}:host:hover{color:#ffce54}\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"] }] });
2099
2308
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CloseComponent, decorators: [{
2100
2309
  type: Component,
2101
- args: [{ selector: 'sfc-close', template: "<div class=\"container\">\r\n <fa-icon [icon]=\"faTimes\"></fa-icon>\r\n</div>", styles: [":host{color:#545e61;cursor:pointer}:host:hover{color:#ffce54}\n"] }]
2310
+ args: [{ selector: 'sfc-close', template: "<div class=\"container\">\r\n <ng-content></ng-content>\r\n <fa-icon [icon]=\"faTimes\"></fa-icon>\r\n</div>", styles: [":host{transition:color .5s ease;cursor:pointer}:host,:host-context(.sfc-default-theme) :host{color:#545e61}:host-context(.sfc-dark-theme) :host{color:#fff}:host:hover{color:#ffce54}\n"] }]
2102
2311
  }] });
2103
2312
 
2104
2313
  class DefaultModalHeaderComponent {
@@ -2122,10 +2331,10 @@ class DefaultModalHeaderComponent {
2122
2331
  }
2123
2332
  }
2124
2333
  DefaultModalHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DefaultModalHeaderComponent, deps: [{ token: ModalService }], target: i0.ɵɵFactoryTarget.Component });
2125
- 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}:host .container ::ng-deep sfc-delimeter.horizontal:before{transition:border-image .5s ease}:host .container ::ng-deep sfc-delimeter.horizontal:before,:host-context(.sfc-default-theme) :host .container ::ng-deep 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 ::ng-deep 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 ::ng-deep sfc-delimeter.horizontal:after{transition:border-image .5s ease}:host .container ::ng-deep sfc-delimeter.horizontal:after,:host-context(.sfc-default-theme) :host .container ::ng-deep 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 ::ng-deep 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}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.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" }] });
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" }] });
2126
2335
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DefaultModalHeaderComponent, decorators: [{
2127
2336
  type: Component,
2128
- 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}:host .container ::ng-deep sfc-delimeter.horizontal:before{transition:border-image .5s ease}:host .container ::ng-deep sfc-delimeter.horizontal:before,:host-context(.sfc-default-theme) :host .container ::ng-deep 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 ::ng-deep 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 ::ng-deep sfc-delimeter.horizontal:after{transition:border-image .5s ease}:host .container ::ng-deep sfc-delimeter.horizontal:after,:host-context(.sfc-default-theme) :host .container ::ng-deep 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 ::ng-deep 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}\n"] }]
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"] }]
2129
2338
  }], ctorParameters: function () { return [{ type: ModalService }]; }, propDecorators: { model: [{
2130
2339
  type: Input
2131
2340
  }] } });
@@ -2202,7 +2411,7 @@ class ModalComponent {
2202
2411
  }
2203
2412
  }
2204
2413
  ModalComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalComponent, deps: [{ token: ModalService }], target: i0.ɵɵFactoryTarget.Component });
2205
- 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\r\n <sfc-template-content [referenceContent]=\"body\" [templatesContent]=\"templates\"\r\n [templateType]=\"ModalTemplate.Body\">\r\n </sfc-template-content>\r\n\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: [
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: [
2206
2415
  trigger('hideOverlay', [
2207
2416
  state('initial', style({ opacity: 1, visibility: 'visible' })),
2208
2417
  state('void', style({ opacity: 0, visibility: 'hidden' })),
@@ -2247,7 +2456,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2247
2456
  state('void', style({ opacity: 0, visibility: 'hidden', transform: 'scale(1.2)' })),
2248
2457
  transition('* => void', animate('400ms cubic-bezier(.55, 0, .1, 1)'))
2249
2458
  ])
2250
- ], 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\r\n <sfc-template-content [referenceContent]=\"body\" [templatesContent]=\"templates\"\r\n [templateType]=\"ModalTemplate.Body\">\r\n </sfc-template-content>\r\n\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"] }]
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"] }]
2251
2460
  }], ctorParameters: function () { return [{ type: ModalService }]; }, propDecorators: { body: [{
2252
2461
  type: Input
2253
2462
  }], header: [{
@@ -2425,10 +2634,10 @@ class ToggleSwitcherComponent {
2425
2634
  }
2426
2635
  }
2427
2636
  ToggleSwitcherComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ToggleSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2428
- 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\">\r\n <fa-icon *ngIf=\"leftModel.icon\" [icon]=\"leftModel.icon\"></fa-icon>\r\n <span>{{leftModel.label}}</span>\r\n </p>\r\n <p class=\"right\">\r\n <fa-icon *ngIf=\"rightModel.icon\" [icon]=\"rightModel.icon\"></fa-icon>\r\n <span>{{rightModel.label}}</span>\r\n </p>\r\n </div>\r\n</div>", styles: [":host .container,:host .toggle{height:100%;border-radius:100px}:host .container{width:100%;background-color:#e6e9ed;color:#545e61;border-radius:100px;position:relative;cursor:pointer}:host .container .toggle{position:absolute;width:50%;background-color:#fff;box-shadow:0 .125em .5em #656d78;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.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}: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 .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: i3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] });
2637
+ 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"] }] });
2429
2638
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ToggleSwitcherComponent, decorators: [{
2430
2639
  type: Component,
2431
- 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\">\r\n <fa-icon *ngIf=\"leftModel.icon\" [icon]=\"leftModel.icon\"></fa-icon>\r\n <span>{{leftModel.label}}</span>\r\n </p>\r\n <p class=\"right\">\r\n <fa-icon *ngIf=\"rightModel.icon\" [icon]=\"rightModel.icon\"></fa-icon>\r\n <span>{{rightModel.label}}</span>\r\n </p>\r\n </div>\r\n</div>", styles: [":host .container,:host .toggle{height:100%;border-radius:100px}:host .container{width:100%;background-color:#e6e9ed;color:#545e61;border-radius:100px;position:relative;cursor:pointer}:host .container .toggle{position:absolute;width:50%;background-color:#fff;box-shadow:0 .125em .5em #656d78;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.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}: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 .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"] }]
2640
+ 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"] }]
2432
2641
  }], ctorParameters: function () { return []; }, propDecorators: { active: [{
2433
2642
  type: Input
2434
2643
  }, {
@@ -2464,10 +2673,10 @@ class CheckmarkComponent {
2464
2673
  }
2465
2674
  }
2466
2675
  CheckmarkComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CheckmarkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2467
- 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;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;color:#ffce54}: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);color:#fff;-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: i3.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"] }] });
2676
+ 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"] }] });
2468
2677
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CheckmarkComponent, decorators: [{
2469
2678
  type: Component,
2470
- 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;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;color:#ffce54}: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);color:#fff;-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"] }]
2679
+ 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"] }]
2471
2680
  }], propDecorators: { active: [{
2472
2681
  type: Input
2473
2682
  }, {
@@ -2487,53 +2696,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2487
2696
  args: ['class']
2488
2697
  }] } });
2489
2698
 
2699
+ var _a;
2490
2700
  class PaginationConstants {
2491
2701
  }
2702
+ _a = PaginationConstants;
2492
2703
  PaginationConstants.DEFAULT_SIZE = 5;
2493
2704
  PaginationConstants.DEFAULT_PAGE = 1;
2494
- PaginationConstants.DEFAULT_COUNT = 3;
2495
-
2496
- class PaginationService {
2497
- constructor() {
2498
- /**
2499
- * Handle page changing
2500
- */
2501
- this.pageSubject = new Subject();
2502
- this.page$ = this.pageSubject.asObservable();
2503
- }
2504
- /** Need for init pagination observables */
2505
- init(data$, page = PaginationConstants.DEFAULT_PAGE, pageSize = PaginationConstants.DEFAULT_SIZE) {
2506
- if (isDefined(data$))
2507
- this.initObservables(data$, page, pageSize);
2508
- }
2509
- /**
2510
- * Move to page
2511
- */
2512
- page(page) {
2513
- this.pageSubject.next(page);
2514
- }
2515
- initObservables(data$, page, pageSize) {
2516
- this.total$ = data$.pipe(map((p) => p.length));
2517
- this.totalPages$ = this.total$.pipe(map((total) => Math.ceil(total / pageSize)));
2518
- this.pagination$ = combineLatest([this.totalPages$, this.page$.pipe(startWith(page))])
2519
- .pipe(map(([total, page]) => {
2520
- return {
2521
- page: page > total ? PaginationConstants.DEFAULT_PAGE : page,
2522
- next: Math.min(page + 1, total),
2523
- previous: Math.max(1, page - 1),
2524
- total: total
2525
- };
2526
- }));
2527
- }
2528
- }
2529
- PaginationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PaginationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2530
- PaginationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PaginationService, providedIn: 'root' });
2531
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PaginationService, decorators: [{
2532
- type: Injectable,
2533
- args: [{
2534
- providedIn: 'root'
2535
- }]
2536
- }] });
2705
+ PaginationConstants.DEFAULT_COUNT = 3;
2706
+ PaginationConstants.DEFAULT_TOTAL = 0;
2707
+ PaginationConstants.DEFAULT_PAGINATION = { page: _a.DEFAULT_PAGE, size: _a.DEFAULT_SIZE };
2537
2708
 
2538
2709
  class PaginationComponent {
2539
2710
  constructor(service) {
@@ -2550,58 +2721,56 @@ class PaginationComponent {
2550
2721
  * show first and last page's btn
2551
2722
  */
2552
2723
  this.limits = false;
2724
+ this.page = PaginationConstants.DEFAULT_PAGE;
2725
+ this.total = PaginationConstants.DEFAULT_TOTAL;
2726
+ /**
2727
+ * Page size
2728
+ */
2729
+ this.size = PaginationConstants.DEFAULT_SIZE;
2730
+ }
2731
+ get model() {
2732
+ const totalPages = Math.ceil(this.total / this.size), page = this.page > totalPages ? PaginationConstants.DEFAULT_PAGE : this.page, next = Math.min(this.page + 1, totalPages), previous = Math.max(1, this.page - 1), range = this.initRange(totalPages, page);
2733
+ return {
2734
+ range: range,
2735
+ any: totalPages > 0,
2736
+ firstPage: this.showStartLimit(range, page),
2737
+ lastPage: this.showEndLimit(range, totalPages, page),
2738
+ previousPage: page != PaginationConstants.DEFAULT_PAGE,
2739
+ nextPage: totalPages > page,
2740
+ page: page,
2741
+ previous: previous,
2742
+ next: next,
2743
+ total: totalPages
2744
+ };
2553
2745
  }
2554
- ngOnInit() {
2555
- if (!isDefined(this.service.pagination$))
2556
- this.service.init(this.data$);
2557
- if (isDefined(this.service.pagination$)) {
2558
- this.vm$ = this.service.pagination$.pipe(map((event) => {
2559
- const range = this.initRange(event);
2560
- return {
2561
- range: range,
2562
- any: event.total > 0,
2563
- firstPage: this.showStartLimit(range, event),
2564
- lastPage: this.showEndLimit(range, event),
2565
- previousPage: event.page != PaginationConstants.DEFAULT_PAGE,
2566
- nextPage: event.total > event.page,
2567
- page: event.page,
2568
- previous: event.previous,
2569
- next: event.next,
2570
- total: event.total
2571
- };
2572
- }));
2573
- }
2574
- }
2575
- onPageClick(page) {
2576
- this.service.page(page);
2577
- }
2746
+ onPageClick(page) { this.service.page(page); }
2578
2747
  get showLimitPages() {
2579
2748
  return this.limits && !this.full;
2580
2749
  }
2581
- showStartLimit(range, event) {
2582
- return this.showLimitPages && event.page !== PaginationConstants.DEFAULT_PAGE
2750
+ showStartLimit(range, page) {
2751
+ return this.showLimitPages && page !== PaginationConstants.DEFAULT_PAGE
2583
2752
  && !hasItem(range, PaginationConstants.DEFAULT_PAGE);
2584
2753
  }
2585
- showEndLimit(range, event) {
2586
- return this.showLimitPages && event.total !== event.page && !hasItem(range, event.total);
2754
+ showEndLimit(range, total, page) {
2755
+ return this.showLimitPages && total !== page && !hasItem(range, total);
2587
2756
  }
2588
- initRange(event) {
2589
- let start = 1, end = event.total + 1;
2757
+ initRange(total, page) {
2758
+ let start = 1, end = total + 1;
2590
2759
  if (!this.full) {
2591
- const fullRange = this.range(1, event.total + 1), pageIndex = fullRange.indexOf(event.page), pageCount = Math.min(event.total, this.count);
2760
+ const fullRange = this.range(1, total + 1), pageIndex = fullRange.indexOf(page), pageCount = Math.min(total, this.count);
2592
2761
  let rangeStart = 0, rangeEnd = 0;
2593
2762
  if (pageCount == PaginationConstants.DEFAULT_PAGE) {
2594
2763
  rangeStart = rangeEnd = pageIndex;
2595
2764
  }
2596
2765
  else {
2597
2766
  let allowedCount = pageCount - 1, partValue = Math.ceil(allowedCount / 2), leftValue = pageIndex - partValue < 0 ? pageIndex : partValue, rightToExtend = allowedCount - leftValue, rightValue = rightToExtend < 0 ? 0 : rightToExtend;
2598
- if (pageIndex + rightValue >= event.total)
2599
- leftValue += pageIndex + rightValue - event.total + 1;
2767
+ if (pageIndex + rightValue >= total)
2768
+ leftValue += pageIndex + rightValue - total + 1;
2600
2769
  rangeStart = pageIndex - leftValue;
2601
2770
  rangeEnd = pageIndex + rightValue;
2602
2771
  }
2603
2772
  start = rangeStart + 1;
2604
- end = Math.min(event.total + 1, rangeEnd + 2);
2773
+ end = Math.min(total + 1, rangeEnd + 2);
2605
2774
  }
2606
2775
  return this.range(start, end);
2607
2776
  }
@@ -2614,144 +2783,51 @@ class PaginationComponent {
2614
2783
  }
2615
2784
  }
2616
2785
  PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PaginationComponent, deps: [{ token: PaginationService }], target: i0.ɵɵFactoryTarget.Component });
2617
- PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PaginationComponent, selector: "sfc-pagination", inputs: { count: "count", full: "full", limits: "limits", data$: "data$" }, ngImport: i0, template: "<div class=\"container\" *ngIf=\"vm$ | async as vm\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <ul *ngIf=\"vm.any\">\r\n <li [sfcShowHideElement]=\"vm.previousPage\" (click)=\"onPageClick(vm.previous)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronLeft\"></fa-icon>\r\n </button>\r\n </li>\r\n <li *ngIf=\"vm.firstPage\" (click)=\"onPageClick(1)\">\r\n <button>1</button>\r\n </li>\r\n <li *ngIf=\"vm.firstPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngFor=\"let page of vm.range\" (click)=\"onPageClick(page)\">\r\n <button [class.active]=\"vm.page === page\">{{page}}</button>\r\n </li>\r\n <li *ngIf=\"vm.lastPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngIf=\"vm.lastPage\" (click)=\"onPageClick(vm.total)\">\r\n <button>{{vm.total}}</button>\r\n </li>\r\n <li [sfcShowHideElement]=\"vm.nextPage\" (click)=\"onPageClick(vm.next)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronRight\"></fa-icon>\r\n </button>\r\n </li>\r\n </ul>\r\n <sfc-delimeter></sfc-delimeter>\r\n</div>", styles: [":host{width:100%;display:inline-block}:host .container{position:relative;text-align:center}:host .container ul{list-style:none;margin:0;padding:0;display:flex;justify-content:center;-webkit-user-select:none;user-select:none}:host .container ul li{display:block;float:left;padding:.31em}:host .container ul li:first-child{border:none}:host .container ul li button,:host .container ul li span{transition:color .5s ease;background:none;border:none;border-radius:50%;box-sizing:border-box;display:block;font-size:1em;height:2.5em;min-width:2.5em;line-height:2.5em;padding:0}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button,:host .container ul li span,:host-context(.sfc-default-theme) :host .container ul li span{color:#0009}:host-context(.sfc-dark-theme) :host .container ul li button,:host-context(.sfc-dark-theme) :host .container ul li span{color:#fff}:host .container ul li button{transition:color .5s ease;outline:none;position:relative;transition:all .17s linear}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button{color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button{color:#fff}:host .container ul li button:before{transition:background .5s ease;border-radius:50%;content:\"\";cursor:pointer;height:0;left:50%;opacity:0;position:absolute;transform:translate(-50%,-50%);transition:all .17s linear;top:50%;width:0}:host .container ul li button:before,:host-context(.sfc-default-theme) :host .container ul li button:before{background:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:before{background:#f5f7fa}:host .container ul li button:hover:not(.active){transition:color .5s ease}:host .container ul li button:hover:not(.active),:host-context(.sfc-default-theme) :host .container ul li button:hover:not(.active){color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:hover:not(.active){color:#fff}:host .container ul li button:hover:not(.active):before{animation:hover-animation .51s linear forwards;width:2.5em;height:2.5em}:host .container ul li button.active{transition:background .5s ease;color:#545e61!important}:host .container ul li button.active,:host-context(.sfc-default-theme) :host .container ul li button.active{background:rgba(0,0,0,.1019607843)}:host-context(.sfc-dark-theme) :host .container ul li button.active{background:#f5f7fa}@keyframes hover-animation{0%{opacity:1}to{opacity:0}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.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"] }, { kind: "component", type: DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }] });
2786
+ PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PaginationComponent, selector: "sfc-pagination", inputs: { count: "count", full: "full", limits: "limits", page: "page", total: "total", size: "size" }, ngImport: i0, template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <ul *ngIf=\"model.any\">\r\n <li [sfcShowHideElement]=\"model.previousPage\" (click)=\"onPageClick(model.previous)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronLeft\"></fa-icon>\r\n </button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\" (click)=\"onPageClick(1)\">\r\n <button>1</button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngFor=\"let page of model.range\" (click)=\"model.page !== page && onPageClick(page)\">\r\n <button [class.active]=\"model.page === page\">{{page}}</button>\r\n </li>\r\n <li *ngIf=\"model.lastPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngIf=\"model.lastPage\" (click)=\"onPageClick(model.total)\">\r\n <button>{{model.total}}</button>\r\n </li>\r\n <li [sfcShowHideElement]=\"model.nextPage\" (click)=\"onPageClick(model.next)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronRight\"></fa-icon>\r\n </button>\r\n </li>\r\n </ul>\r\n <sfc-delimeter></sfc-delimeter>\r\n</div>", styles: [":host{width:100%;display:inline-block}:host .container{position:relative;text-align:center}:host .container ul{list-style:none;margin:0;padding:0;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;-webkit-user-select:none;user-select:none}:host .container ul li{display:block;float:left;padding:.31em}:host .container ul li:first-child{border:none}:host .container ul li button,:host .container ul li span{transition:color .5s ease;background:none;border:none;border-radius:50%;box-sizing:border-box;display:block;font-size:1em;height:2.5em;min-width:2.5em;line-height:2.5em;padding:0}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button,:host .container ul li span,:host-context(.sfc-default-theme) :host .container ul li span{color:#0009}:host-context(.sfc-dark-theme) :host .container ul li button,:host-context(.sfc-dark-theme) :host .container ul li span{color:#fff}:host .container ul li button{transition:color .5s ease;outline:none;position:relative;transition:all .17s linear}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button{color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button{color:#fff}:host .container ul li button:before{transition:background .5s ease;border-radius:50%;content:\"\";cursor:pointer;height:0;left:50%;opacity:0;position:absolute;transform:translate(-50%,-50%);transition:all .17s linear;top:50%;width:0}:host .container ul li button:before,:host-context(.sfc-default-theme) :host .container ul li button:before{background:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:before{background:#f5f7fa}:host .container ul li button:hover:not(.active){transition:color .5s ease}:host .container ul li button:hover:not(.active),:host-context(.sfc-default-theme) :host .container ul li button:hover:not(.active){color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:hover:not(.active){color:#fff}:host .container ul li button:hover:not(.active):before{animation:hover-animation .51s linear forwards;width:2.5em;height:2.5em}:host .container ul li button.active{transition:background .5s ease;color:#545e61!important}:host .container ul li button.active,:host-context(.sfc-default-theme) :host .container ul li button.active{background:rgba(0,0,0,.1019607843)}:host-context(.sfc-dark-theme) :host .container ul li button.active{background:#f5f7fa}@keyframes hover-animation{0%{opacity:1}to{opacity:0}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { 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: "directive", type: ShowHideElementDirective, selector: "[sfcShowHideElement]", inputs: ["sfcShowHideElement", "delay"] }, { kind: "component", type: DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }] });
2618
2787
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PaginationComponent, decorators: [{
2619
2788
  type: Component,
2620
- args: [{ selector: 'sfc-pagination', template: "<div class=\"container\" *ngIf=\"vm$ | async as vm\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <ul *ngIf=\"vm.any\">\r\n <li [sfcShowHideElement]=\"vm.previousPage\" (click)=\"onPageClick(vm.previous)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronLeft\"></fa-icon>\r\n </button>\r\n </li>\r\n <li *ngIf=\"vm.firstPage\" (click)=\"onPageClick(1)\">\r\n <button>1</button>\r\n </li>\r\n <li *ngIf=\"vm.firstPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngFor=\"let page of vm.range\" (click)=\"onPageClick(page)\">\r\n <button [class.active]=\"vm.page === page\">{{page}}</button>\r\n </li>\r\n <li *ngIf=\"vm.lastPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngIf=\"vm.lastPage\" (click)=\"onPageClick(vm.total)\">\r\n <button>{{vm.total}}</button>\r\n </li>\r\n <li [sfcShowHideElement]=\"vm.nextPage\" (click)=\"onPageClick(vm.next)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronRight\"></fa-icon>\r\n </button>\r\n </li>\r\n </ul>\r\n <sfc-delimeter></sfc-delimeter>\r\n</div>", styles: [":host{width:100%;display:inline-block}:host .container{position:relative;text-align:center}:host .container ul{list-style:none;margin:0;padding:0;display:flex;justify-content:center;-webkit-user-select:none;user-select:none}:host .container ul li{display:block;float:left;padding:.31em}:host .container ul li:first-child{border:none}:host .container ul li button,:host .container ul li span{transition:color .5s ease;background:none;border:none;border-radius:50%;box-sizing:border-box;display:block;font-size:1em;height:2.5em;min-width:2.5em;line-height:2.5em;padding:0}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button,:host .container ul li span,:host-context(.sfc-default-theme) :host .container ul li span{color:#0009}:host-context(.sfc-dark-theme) :host .container ul li button,:host-context(.sfc-dark-theme) :host .container ul li span{color:#fff}:host .container ul li button{transition:color .5s ease;outline:none;position:relative;transition:all .17s linear}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button{color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button{color:#fff}:host .container ul li button:before{transition:background .5s ease;border-radius:50%;content:\"\";cursor:pointer;height:0;left:50%;opacity:0;position:absolute;transform:translate(-50%,-50%);transition:all .17s linear;top:50%;width:0}:host .container ul li button:before,:host-context(.sfc-default-theme) :host .container ul li button:before{background:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:before{background:#f5f7fa}:host .container ul li button:hover:not(.active){transition:color .5s ease}:host .container ul li button:hover:not(.active),:host-context(.sfc-default-theme) :host .container ul li button:hover:not(.active){color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:hover:not(.active){color:#fff}:host .container ul li button:hover:not(.active):before{animation:hover-animation .51s linear forwards;width:2.5em;height:2.5em}:host .container ul li button.active{transition:background .5s ease;color:#545e61!important}:host .container ul li button.active,:host-context(.sfc-default-theme) :host .container ul li button.active{background:rgba(0,0,0,.1019607843)}:host-context(.sfc-dark-theme) :host .container ul li button.active{background:#f5f7fa}@keyframes hover-animation{0%{opacity:1}to{opacity:0}}\n"] }]
2789
+ args: [{ selector: 'sfc-pagination', template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <ul *ngIf=\"model.any\">\r\n <li [sfcShowHideElement]=\"model.previousPage\" (click)=\"onPageClick(model.previous)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronLeft\"></fa-icon>\r\n </button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\" (click)=\"onPageClick(1)\">\r\n <button>1</button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngFor=\"let page of model.range\" (click)=\"model.page !== page && onPageClick(page)\">\r\n <button [class.active]=\"model.page === page\">{{page}}</button>\r\n </li>\r\n <li *ngIf=\"model.lastPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngIf=\"model.lastPage\" (click)=\"onPageClick(model.total)\">\r\n <button>{{model.total}}</button>\r\n </li>\r\n <li [sfcShowHideElement]=\"model.nextPage\" (click)=\"onPageClick(model.next)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronRight\"></fa-icon>\r\n </button>\r\n </li>\r\n </ul>\r\n <sfc-delimeter></sfc-delimeter>\r\n</div>", styles: [":host{width:100%;display:inline-block}:host .container{position:relative;text-align:center}:host .container ul{list-style:none;margin:0;padding:0;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;-webkit-user-select:none;user-select:none}:host .container ul li{display:block;float:left;padding:.31em}:host .container ul li:first-child{border:none}:host .container ul li button,:host .container ul li span{transition:color .5s ease;background:none;border:none;border-radius:50%;box-sizing:border-box;display:block;font-size:1em;height:2.5em;min-width:2.5em;line-height:2.5em;padding:0}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button,:host .container ul li span,:host-context(.sfc-default-theme) :host .container ul li span{color:#0009}:host-context(.sfc-dark-theme) :host .container ul li button,:host-context(.sfc-dark-theme) :host .container ul li span{color:#fff}:host .container ul li button{transition:color .5s ease;outline:none;position:relative;transition:all .17s linear}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button{color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button{color:#fff}:host .container ul li button:before{transition:background .5s ease;border-radius:50%;content:\"\";cursor:pointer;height:0;left:50%;opacity:0;position:absolute;transform:translate(-50%,-50%);transition:all .17s linear;top:50%;width:0}:host .container ul li button:before,:host-context(.sfc-default-theme) :host .container ul li button:before{background:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:before{background:#f5f7fa}:host .container ul li button:hover:not(.active){transition:color .5s ease}:host .container ul li button:hover:not(.active),:host-context(.sfc-default-theme) :host .container ul li button:hover:not(.active){color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:hover:not(.active){color:#fff}:host .container ul li button:hover:not(.active):before{animation:hover-animation .51s linear forwards;width:2.5em;height:2.5em}:host .container ul li button.active{transition:background .5s ease;color:#545e61!important}:host .container ul li button.active,:host-context(.sfc-default-theme) :host .container ul li button.active{background:rgba(0,0,0,.1019607843)}:host-context(.sfc-dark-theme) :host .container ul li button.active{background:#f5f7fa}@keyframes hover-animation{0%{opacity:1}to{opacity:0}}\n"] }]
2621
2790
  }], ctorParameters: function () { return [{ type: PaginationService }]; }, propDecorators: { count: [{
2622
2791
  type: Input
2623
2792
  }], full: [{
2624
2793
  type: Input
2625
2794
  }], limits: [{
2626
2795
  type: Input
2627
- }], data$: [{
2796
+ }], page: [{
2628
2797
  type: Input
2629
- }] } });
2630
-
2631
- class SortingConstants {
2632
- }
2633
- SortingConstants.DEFAULT_ASCENDING_ICON = faChevronUp;
2634
- SortingConstants.DEFAULT_DESCENDING_ICON = faChevronDown;
2635
-
2636
- class SortingService {
2637
- constructor() {
2638
- this.sortingSubject = new Subject();
2639
- this.sorting$ = this.sortingSubject.asObservable();
2640
- }
2641
- sort(event) {
2642
- this.sortingSubject.next(event);
2643
- }
2644
- }
2645
- SortingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SortingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2646
- SortingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SortingService, providedIn: 'root' });
2647
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SortingService, decorators: [{
2648
- type: Injectable,
2649
- args: [{
2650
- providedIn: 'root'
2651
- }]
2652
- }] });
2653
-
2654
- class SortingComponent {
2655
- constructor(service) {
2656
- this.service = service;
2657
- this.SortingDirection = SortingDirection;
2658
- this.id = CommonConstants.EMPTY_STRING;
2659
- this.model = { active: false, enabled: false, direction: SortingDirection.Ascending };
2660
- }
2661
- get enabled() {
2662
- return this.model.enabled;
2663
- }
2664
- get active() {
2665
- return this.model.active || false;
2666
- }
2667
- sort() {
2668
- if (this.enabled) {
2669
- if (this.active) {
2670
- this.model.direction = this.model.direction === SortingDirection.Ascending
2671
- ? SortingDirection.Descending
2672
- : SortingDirection.Ascending;
2673
- }
2674
- this.service.sort({ id: this.id, direction: this.model.direction });
2675
- }
2676
- }
2677
- get icon() {
2678
- const modelIcon = firstOrDefault(this.model.icons, i => i.direction == this.model.direction);
2679
- return modelIcon ? modelIcon.icon : this.model.direction === SortingDirection.Ascending
2680
- ? SortingConstants.DEFAULT_ASCENDING_ICON : SortingConstants.DEFAULT_DESCENDING_ICON;
2681
- }
2682
- ngOnInit() {
2683
- if (!isDefined(this.model))
2684
- this.model = { active: false, enabled: false, direction: SortingDirection.Ascending };
2685
- // subscribe to sort changes so we can react when other columns are sorted
2686
- this._subscription = this.service.sorting$.subscribe(event => {
2687
- // reset this column's sort direction to hide the sort icons
2688
- if (this.id != event.id)
2689
- this.model.direction = SortingDirection.Ascending;
2690
- });
2691
- }
2692
- ngOnDestroy() {
2693
- this._subscription.unsubscribe();
2694
- }
2695
- }
2696
- SortingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SortingComponent, deps: [{ token: SortingService }], target: i0.ɵɵFactoryTarget.Component });
2697
- SortingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SortingComponent, selector: "sfc-sorting", inputs: { id: "id", model: "model" }, host: { listeners: { "click": "sort()" }, properties: { "class.enabled": "this.enabled", "class.active": "this.active" } }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div *ngIf=\"enabled\" class=\"icons\">\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n </div>\r\n</div>", styles: [":host{cursor:default;text-overflow:ellipsis;overflow:hidden}:host.enabled{cursor:pointer}:host .container{display:flex;min-width:0;transition:color .5s ease}:host .container,:host-context(.sfc-default-theme) :host .container{color:#545e61}:host-context(.sfc-dark-theme) :host .container{color:#fff}:host .container:hover{color:#ffce54}:host .container .content{display:flex;-webkit-user-select:none;user-select:none}:host .container .icons{margin:0 .31em;font-size:.7em;display:flex;align-items:center;transition:all .3s}:host.active .container{color:#ffce54}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] });
2698
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SortingComponent, decorators: [{
2699
- type: Component,
2700
- args: [{ selector: 'sfc-sorting', template: "<div class=\"container\">\r\n <div class=\"content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div *ngIf=\"enabled\" class=\"icons\">\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n </div>\r\n</div>", styles: [":host{cursor:default;text-overflow:ellipsis;overflow:hidden}:host.enabled{cursor:pointer}:host .container{display:flex;min-width:0;transition:color .5s ease}:host .container,:host-context(.sfc-default-theme) :host .container{color:#545e61}:host-context(.sfc-dark-theme) :host .container{color:#fff}:host .container:hover{color:#ffce54}:host .container .content{display:flex;-webkit-user-select:none;user-select:none}:host .container .icons{margin:0 .31em;font-size:.7em;display:flex;align-items:center;transition:all .3s}:host.active .container{color:#ffce54}\n"] }]
2701
- }], ctorParameters: function () { return [{ type: SortingService }]; }, propDecorators: { id: [{
2798
+ }], total: [{
2702
2799
  type: Input
2703
- }], model: [{
2800
+ }], size: [{
2704
2801
  type: Input
2705
- }], enabled: [{
2706
- type: HostBinding,
2707
- args: [`class.${UIClass.Enabled}`]
2708
- }], active: [{
2709
- type: HostBinding,
2710
- args: [`class.${UIClass.Active}`]
2711
- }], sort: [{
2712
- type: HostListener,
2713
- args: ['click']
2714
2802
  }] } });
2715
2803
 
2716
- class LoadMoreService {
2717
- constructor() {
2718
- this._page = LoadMoreService.START_PAGE;
2719
- this.moreSubject = new Subject();
2720
- this.more$ = this.moreSubject.asObservable();
2721
- }
2722
- more() {
2723
- this._page++;
2724
- this.moreSubject.next(this._page);
2725
- }
2726
- reset() {
2727
- this._page = LoadMoreService.START_PAGE;
2728
- }
2804
+ var LoadContainerLoadType;
2805
+ (function (LoadContainerLoadType) {
2806
+ LoadContainerLoadType["Button"] = "button";
2807
+ LoadContainerLoadType["Scroll"] = "scroll";
2808
+ LoadContainerLoadType["Pagination"] = "pagination";
2809
+ })(LoadContainerLoadType || (LoadContainerLoadType = {}));
2810
+
2811
+ class LoadContainerConstants {
2729
2812
  }
2730
- LoadMoreService.START_PAGE = 1;
2731
- LoadMoreService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadMoreService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2732
- LoadMoreService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadMoreService, providedIn: 'root' });
2733
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadMoreService, decorators: [{
2734
- type: Injectable,
2735
- args: [{
2736
- providedIn: 'root'
2737
- }]
2738
- }] });
2813
+ LoadContainerConstants.DEFAULT_TOTAL = 0;
2814
+ LoadContainerConstants.DEFAULT_EMPTY_LABEL = 'Not found';
2815
+ LoadContainerConstants.DEFAULT_SHOW_MORE_LABEL = 'Show more';
2816
+
2817
+ var LoadContainerChangesSource;
2818
+ (function (LoadContainerChangesSource) {
2819
+ LoadContainerChangesSource["Initial"] = "initial";
2820
+ LoadContainerChangesSource["Predicate"] = "predicate";
2821
+ LoadContainerChangesSource["Page"] = "page";
2822
+ LoadContainerChangesSource["More"] = "more";
2823
+ LoadContainerChangesSource["Data"] = "data";
2824
+ })(LoadContainerChangesSource || (LoadContainerChangesSource = {}));
2739
2825
 
2740
2826
  var LoadContainerType;
2741
2827
  (function (LoadContainerType) {
2742
2828
  LoadContainerType["Dropdown"] = "dropdown";
2743
2829
  LoadContainerType["Table"] = "table";
2744
- })(LoadContainerType || (LoadContainerType = {}));
2745
- var LoadChangesSource;
2746
- (function (LoadChangesSource) {
2747
- LoadChangesSource["Parameters"] = "parameters";
2748
- LoadChangesSource["Data"] = "data";
2749
- })(LoadChangesSource || (LoadChangesSource = {}));
2750
-
2751
- class LoadContainerConstants {
2752
- }
2753
- LoadContainerConstants.DEFAULT_PAGE_SIZE = 5;
2754
- LoadContainerConstants.DEFAULT_NOT_FOUND_LABEL = 'Not found';
2830
+ })(LoadContainerType || (LoadContainerType = {}));
2755
2831
 
2756
2832
  class LoadMoreButtonComponent {
2757
2833
  constructor() {
@@ -2765,10 +2841,10 @@ class LoadMoreButtonComponent {
2765
2841
  }
2766
2842
  }
2767
2843
  LoadMoreButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadMoreButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2768
- LoadMoreButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LoadMoreButtonComponent, selector: "sfc-load-more-button", inputs: { label: "label", icon: "icon" }, outputs: { more: "more" }, ngImport: i0, template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <div class=\"button\" (sfcMouseDown)=\"more.emit($event)\">\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n <span>{{label}}</span>\r\n </div>\r\n</div>", styles: [":host{cursor:default}:host .container{text-align:center;background-color:#fff}:host .container .button{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;cursor:pointer;transition:color .5s ease;transition:color .5s;padding:.5em 0 1em}:host .container .button,:host-context(.sfc-default-theme) :host .container .button{color:#545e61}:host-context(.sfc-dark-theme) :host .container .button{color:#fff}:host .container .button fa-icon{font-size:.7em;margin-right:.31em}:host .container .button span{font-size:.6em;font-weight:700;text-transform:uppercase}:host .container .button:hover{color:#ffce54}\n"], dependencies: [{ kind: "component", type: i3.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: MouseDownDirective, selector: "[sfcMouseDown]", inputs: ["button"], outputs: ["sfcMouseDown"] }, { kind: "component", type: DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }] });
2844
+ LoadMoreButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LoadMoreButtonComponent, selector: "sfc-load-more-button", inputs: { label: "label", icon: "icon" }, outputs: { more: "more" }, ngImport: i0, template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <div class=\"button\" (sfcMouseDown)=\"more.emit($event)\">\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n <span>{{label}}</span>\r\n </div>\r\n</div>", styles: [":host{cursor:default}:host .container{text-align:center}:host .container,:host-context(.sfc-default-theme) :host .container{background:#fff}:host-context(.sfc-dark-theme) :host .container{background:transparent}:host .container .button{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;cursor:pointer;transition:color .5s ease;transition:color .5s;padding:.5em 0 1em}:host .container .button,:host-context(.sfc-default-theme) :host .container .button{color:#545e61}:host-context(.sfc-dark-theme) :host .container .button{color:#fff}:host .container .button fa-icon{font-size:.7em;margin-right:.31em}:host .container .button span{font-size:.6em;font-weight:700;text-transform:uppercase}:host .container .button:hover{color:#ffce54}\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: MouseDownDirective, selector: "[sfcMouseDown]", inputs: ["button"], outputs: ["sfcMouseDown"] }, { kind: "component", type: DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }] });
2769
2845
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadMoreButtonComponent, decorators: [{
2770
2846
  type: Component,
2771
- args: [{ selector: 'sfc-load-more-button', template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <div class=\"button\" (sfcMouseDown)=\"more.emit($event)\">\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n <span>{{label}}</span>\r\n </div>\r\n</div>", styles: [":host{cursor:default}:host .container{text-align:center;background-color:#fff}:host .container .button{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;cursor:pointer;transition:color .5s ease;transition:color .5s;padding:.5em 0 1em}:host .container .button,:host-context(.sfc-default-theme) :host .container .button{color:#545e61}:host-context(.sfc-dark-theme) :host .container .button{color:#fff}:host .container .button fa-icon{font-size:.7em;margin-right:.31em}:host .container .button span{font-size:.6em;font-weight:700;text-transform:uppercase}:host .container .button:hover{color:#ffce54}\n"] }]
2847
+ args: [{ selector: 'sfc-load-more-button', template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <div class=\"button\" (sfcMouseDown)=\"more.emit($event)\">\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n <span>{{label}}</span>\r\n </div>\r\n</div>", styles: [":host{cursor:default}:host .container{text-align:center}:host .container,:host-context(.sfc-default-theme) :host .container{background:#fff}:host-context(.sfc-dark-theme) :host .container{background:transparent}:host .container .button{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;cursor:pointer;transition:color .5s ease;transition:color .5s;padding:.5em 0 1em}:host .container .button,:host-context(.sfc-default-theme) :host .container .button{color:#545e61}:host-context(.sfc-dark-theme) :host .container .button{color:#fff}:host .container .button fa-icon{font-size:.7em;margin-right:.31em}:host .container .button span{font-size:.6em;font-weight:700;text-transform:uppercase}:host .container .button:hover{color:#ffce54}\n"] }]
2772
2848
  }], propDecorators: { label: [{
2773
2849
  type: Input
2774
2850
  }], icon: [{
@@ -2778,37 +2854,40 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2778
2854
  }] } });
2779
2855
 
2780
2856
  class LoadContainerComponent {
2781
- constructor(loaderService, loadMoreService) {
2857
+ constructor(loaderService, loadMoreService, paginationService, sortingService) {
2782
2858
  this.loaderService = loaderService;
2783
2859
  this.loadMoreService = loadMoreService;
2860
+ this.paginationService = paginationService;
2861
+ this.sortingService = sortingService;
2784
2862
  this.ComponentSize = ComponentSize;
2785
2863
  this.Position = Position;
2786
2864
  this.type = LoadContainerType.Dropdown;
2787
2865
  this.open = false;
2866
+ // outer flag to allow load more or not
2788
2867
  this.loadMore = true;
2868
+ this.loadMoreLabel = LoadContainerConstants.DEFAULT_SHOW_MORE_LABEL;
2789
2869
  this.showEmpty = true;
2790
- this.showLoadMoreButton = true;
2791
- this.notFoundLabel = LoadContainerConstants.DEFAULT_NOT_FOUND_LABEL;
2870
+ this.emptyLabel = LoadContainerConstants.DEFAULT_EMPTY_LABEL;
2871
+ this.paginationCount = PaginationConstants.DEFAULT_COUNT;
2872
+ this.paginationLimits = false;
2873
+ this.showLoading = true;
2792
2874
  this.handleError = new EventEmitter();
2793
2875
  this.handleSuccess = new EventEmitter();
2794
2876
  this.handleLoading = new EventEmitter();
2795
2877
  this.next = false;
2796
2878
  this.empty = false;
2879
+ this.total = LoadContainerConstants.DEFAULT_TOTAL;
2797
2880
  this._loading = false;
2798
- // define what source emit changes for data (1. data changes, 2. predicate conditions)
2799
- this.source = LoadChangesSource.Data;
2800
- }
2801
- set model(model) {
2802
- if (isDefined(model)) {
2803
- const parameters$ = this.buildParameters(model.predicate$), data$ = isDefined(model.loader) ?
2804
- this.buildDynamic(parameters$, model.loader) : this.buildStatic(parameters$, model);
2805
- if (isDefined(this._subscription))
2806
- this._subscription.unsubscribe();
2807
- this._subscription = data$.subscribe({
2808
- next: (result) => this.success(result),
2809
- error: (error) => this.error(error)
2810
- });
2811
- }
2881
+ // define what source emit changes for data
2882
+ this.source = LoadContainerChangesSource.Initial;
2883
+ this.predicateChanged = false;
2884
+ }
2885
+ set model(value) {
2886
+ this._model = value;
2887
+ this.subscribe();
2888
+ }
2889
+ get model() {
2890
+ return this._model;
2812
2891
  }
2813
2892
  get scrollPosition() {
2814
2893
  return !this.allowLoadMore || this.showLoadMoreButton ? [] : [Position.Bottom];
@@ -2816,6 +2895,8 @@ class LoadContainerComponent {
2816
2895
  get allowLoadMore() { return this.next && this.loadMore; }
2817
2896
  get hideLoadMoreButton() { return !(this.allowLoadMore && this.showLoadMoreButton); }
2818
2897
  get isEmpty() { return this.empty && this.showEmpty; }
2898
+ get page() { return this.pagination ? this.paginationService.pageValue : this.loadMoreService.pageValue; }
2899
+ get showPagination() { return Boolean(this.total) && !this.empty && this.pagination; }
2819
2900
  set loading(value) {
2820
2901
  this._loading = value;
2821
2902
  if (value)
@@ -2824,6 +2905,15 @@ class LoadContainerComponent {
2824
2905
  this.loaderService.hide(this.id);
2825
2906
  this.handleLoading.emit(value);
2826
2907
  }
2908
+ get showLoadMoreButton() {
2909
+ return this.model.loadType == LoadContainerLoadType.Button;
2910
+ }
2911
+ get reset() {
2912
+ return this.source == LoadContainerChangesSource.Predicate ||
2913
+ this.source == LoadContainerChangesSource.Page ||
2914
+ this.source == LoadContainerChangesSource.Data;
2915
+ }
2916
+ get pagination() { return this.model.loadType == LoadContainerLoadType.Pagination; }
2827
2917
  ngOnDestroy() {
2828
2918
  if (this._subscription)
2829
2919
  this._subscription.unsubscribe();
@@ -2840,64 +2930,91 @@ class LoadContainerComponent {
2840
2930
  this.next = result.next;
2841
2931
  this.loading = false;
2842
2932
  this.empty = !any(result.items);
2933
+ this.total = result.total;
2934
+ this.loadMore = true;
2843
2935
  this.handleSuccess.emit(result);
2844
2936
  }
2845
2937
  error(error) {
2846
2938
  this.loading = false;
2847
2939
  this.empty = false;
2940
+ this.total = 0;
2848
2941
  this.handleError.emit(error);
2849
2942
  }
2943
+ subscribe() {
2944
+ if (!this.model)
2945
+ return;
2946
+ if (!isDefined(this.model.pagination))
2947
+ this.model.pagination = PaginationConstants.DEFAULT_PAGINATION;
2948
+ else
2949
+ this.paginationService.pageValue = this.model.pagination?.page;
2950
+ const parameters$ = this.buildParameters(this.model.predicate$), data$ = isDefined(this.model.loader)
2951
+ ? this.buildDynamic(parameters$, this.model.loader)
2952
+ : this.buildStatic(parameters$, this.model);
2953
+ if (isDefined(this._subscription))
2954
+ this._subscription.unsubscribe();
2955
+ this._subscription = data$.subscribe({
2956
+ next: (result) => this.success(result),
2957
+ error: (error) => this.error(error)
2958
+ });
2959
+ }
2850
2960
  buildParameters(predicate$) {
2851
- const parameters$ = (predicate$ || EMPTY.pipe(startWith(null))).pipe(tap((predicateParameters) => {
2852
- if (predicateParameters)
2961
+ const parameters$ = (predicate$ || EMPTY.pipe(startWith(null))).pipe(tap(() => {
2962
+ if (this.source != LoadContainerChangesSource.Initial)
2853
2963
  this.resetParameters();
2854
- }), switchMap((value) => {
2855
- return this.loadMoreService.more$.pipe(startWith(LoadMoreService.START_PAGE), tap(() => {
2856
- this.source = LoadChangesSource.Parameters;
2857
- this.loading = true;
2858
- }), map((page) => {
2859
- return { params: value, page: page };
2860
- }));
2964
+ this.source = LoadContainerChangesSource.Predicate;
2965
+ this.predicateChanged = true;
2966
+ }), switchMap((params) => {
2967
+ const more$ = this.loadMoreService.more$.pipe(startWith(PaginationConstants.DEFAULT_PAGE), tap(() => {
2968
+ if (!this.predicateChanged)
2969
+ this.source = LoadContainerChangesSource.More;
2970
+ this.loadMore = false;
2971
+ this.predicateChanged = false;
2972
+ })), pagination$ = this.paginationService.page$.pipe(startWith(this.model.pagination?.page || PaginationConstants.DEFAULT_PAGE), tap(() => {
2973
+ if (!this.predicateChanged)
2974
+ this.source = LoadContainerChangesSource.Page;
2975
+ this.predicateChanged = false;
2976
+ })), loader$ = this.pagination ? pagination$ : more$;
2977
+ return loader$.pipe(map(() => ({ params: params, page: this.page })));
2861
2978
  }));
2862
- return parameters$;
2979
+ return combineLatest([this.sortingService.sorting$.pipe(startWith(this.model.sorting)), parameters$]).pipe(tap(() => this.loading = true), map(([sorting, parameters]) => ({ params: parameters.params, page: parameters.page, sorting: sorting })));
2863
2980
  }
2864
2981
  buildDynamic(parameters$, loader) {
2865
- return parameters$.pipe(switchMap((parameters) => loader(parameters, this.source).pipe(tap((model) => {
2866
- if (model.reset) {
2867
- this.source = LoadChangesSource.Data;
2868
- this.resetParameters();
2869
- }
2870
- }))));
2982
+ return parameters$.pipe(switchMap((parameters) => loader(parameters)), map((model) => ({ ...model, reset: this.reset, page: this.page })));
2871
2983
  }
2872
2984
  buildStatic(parameters$, model) {
2873
- const data$ = (model.data$ || of([])).pipe(tap(_ => this.source = LoadChangesSource.Data));
2985
+ const data$ = (model.data$ || of([])).pipe(map((data, index) => ({ data, index })), tap(model => this.source = model.index ? LoadContainerChangesSource.Data : this.source), map(model => model.data));
2874
2986
  return combineLatest([parameters$, data$]).pipe(map(([parameters, items]) => {
2875
- const reset = this.source == LoadChangesSource.Data;
2876
- if (reset && parameters.page != LoadMoreService.START_PAGE) {
2877
- // if data changed need to start from start
2987
+ // if data changed need to start from start (pagination)
2988
+ if (this.source == LoadContainerChangesSource.Data
2989
+ && parameters.page != LoadMoreService.START_PAGE) {
2878
2990
  this.resetParameters();
2879
- parameters = { params: parameters.params, page: 1 };
2991
+ parameters = { params: parameters.params, page: this.page, sorting: parameters.sorting };
2880
2992
  }
2881
- const filtered = model.filter ? model.filter(items, parameters) : items, size = model.size || LoadContainerConstants.DEFAULT_PAGE_SIZE, data = filtered ? {
2882
- items: skip(filtered, parameters.page, size),
2883
- next: parameters.page < Math.ceil(filtered.length / size),
2884
- reset
2885
- } : { items: [], next: false, reset };
2993
+ const filtered = model.filter ? model.filter(items, parameters) : items, sorted = parameters.sorting ? sortBy([...filtered], parameters.sorting.id, parameters.sorting.direction) : filtered, data = sorted ? {
2994
+ items: skip(sorted, parameters.page, this.model.pagination?.size),
2995
+ next: parameters.page < Math.ceil(sorted.length / this.model.pagination?.size),
2996
+ reset: this.reset,
2997
+ total: sorted.length,
2998
+ page: parameters.page
2999
+ } : { items: [], next: false, reset: this.reset, total: items.length, page: parameters.page };
2886
3000
  return data;
2887
3001
  }));
2888
3002
  }
2889
3003
  resetParameters() {
2890
3004
  if (isDefined(this.contentEl))
2891
3005
  this.contentEl.nativeElement.scrollTop = 0;
2892
- this.loadMoreService.reset();
3006
+ if (this.pagination)
3007
+ this.paginationService.reset();
3008
+ else
3009
+ this.loadMoreService.reset();
2893
3010
  }
2894
3011
  }
2895
- LoadContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadContainerComponent, deps: [{ token: LoaderService }, { token: LoadMoreService }], target: i0.ɵɵFactoryTarget.Component });
2896
- 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", showEmpty: "showEmpty", showLoadMoreButton: "showLoadMoreButton", loadMoreLabel: "loadMoreLabel", notFoundLabel: "notFoundLabel", model: "model", scrollTarget: "scrollTarget" }, 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], viewQueries: [{ propertyName: "contentEl", first: true, predicate: ["content"], descendants: true }], ngImport: i0, template: "<div class=\"container\">\r\n <sfc-bounce-loader [id]=\"id\" [sfcComponentSize]=\"ComponentSize.Small\"></sfc-bounce-loader>\r\n <div #content class=\"content\" [sfcScrollIntoView]=\"scrollTarget\" (sfcScrollTracker)=\"onScroll()\" [positions]=\"scrollPosition\">\r\n <ng-content></ng-content>\r\n <div (sfcMouseDown)=\"$event.preventDefault()\">\r\n <sfc-load-more-button [hidden]=\"hideLoadMoreButton\" (more)=\"more($event)\" [label]=\"loadMoreLabel\">\r\n </sfc-load-more-button>\r\n <div *ngIf=\"isEmpty\" class=\"empty\">{{notFoundLabel}}</div>\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:#fff}:host-context(.sfc-dark-theme) :host .container .content{background:#fff}:host .container .content sfc-load-more-button ::ng-deep .container ::ng-deep sfc-delimeter.horizontal:before{transition:border-image .5s ease}:host .container .content sfc-load-more-button ::ng-deep .container ::ng-deep sfc-delimeter.horizontal:before,:host-context(.sfc-default-theme) :host .container .content sfc-load-more-button ::ng-deep .container ::ng-deep 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 .content sfc-load-more-button ::ng-deep .container ::ng-deep 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 .content sfc-load-more-button ::ng-deep .container ::ng-deep sfc-delimeter.horizontal:after{transition:border-image .5s ease}:host .container .content sfc-load-more-button ::ng-deep .container ::ng-deep sfc-delimeter.horizontal:after,:host-context(.sfc-default-theme) :host .container .content sfc-load-more-button ::ng-deep .container ::ng-deep 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 .content sfc-load-more-button ::ng-deep .container ::ng-deep 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 .content sfc-load-more-button ::ng-deep .container .button{transition:color .5s ease}:host .container .content sfc-load-more-button ::ng-deep .container .button,:host-context(.sfc-default-theme) :host .container .content sfc-load-more-button ::ng-deep .container .button{color:#545e61}:host-context(.sfc-dark-theme) :host .container .content sfc-load-more-button ::ng-deep .container .button{color:#545e61}:host .container .content sfc-load-more-button ::ng-deep .container .button:hover{color:#ffce54}:host .container .content .empty{display:flex;align-items:center;justify-content:center;color:#545e61;cursor:default;height:100%;font-size:.8em;-webkit-user-select:none;user-select:none;padding:.7em}: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: LoadMoreButtonComponent, selector: "sfc-load-more-button", inputs: ["label", "icon"], outputs: ["more"] }, { kind: "component", type: BounceLoaderComponent, selector: "sfc-bounce-loader" }] });
3012
+ 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 });
3013
+ 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{cursor:initial;overflow-y:auto;overflow-x:hidden;height:inherit}:host .container .content,:host-context(.sfc-default-theme) :host .container .content{background:#fff}: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" }] });
2897
3014
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadContainerComponent, decorators: [{
2898
3015
  type: Component,
2899
- args: [{ selector: 'sfc-load-container', providers: [LoadMoreService], template: "<div class=\"container\">\r\n <sfc-bounce-loader [id]=\"id\" [sfcComponentSize]=\"ComponentSize.Small\"></sfc-bounce-loader>\r\n <div #content class=\"content\" [sfcScrollIntoView]=\"scrollTarget\" (sfcScrollTracker)=\"onScroll()\" [positions]=\"scrollPosition\">\r\n <ng-content></ng-content>\r\n <div (sfcMouseDown)=\"$event.preventDefault()\">\r\n <sfc-load-more-button [hidden]=\"hideLoadMoreButton\" (more)=\"more($event)\" [label]=\"loadMoreLabel\">\r\n </sfc-load-more-button>\r\n <div *ngIf=\"isEmpty\" class=\"empty\">{{notFoundLabel}}</div>\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:#fff}:host-context(.sfc-dark-theme) :host .container .content{background:#fff}:host .container .content sfc-load-more-button ::ng-deep .container ::ng-deep sfc-delimeter.horizontal:before{transition:border-image .5s ease}:host .container .content sfc-load-more-button ::ng-deep .container ::ng-deep sfc-delimeter.horizontal:before,:host-context(.sfc-default-theme) :host .container .content sfc-load-more-button ::ng-deep .container ::ng-deep 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 .content sfc-load-more-button ::ng-deep .container ::ng-deep 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 .content sfc-load-more-button ::ng-deep .container ::ng-deep sfc-delimeter.horizontal:after{transition:border-image .5s ease}:host .container .content sfc-load-more-button ::ng-deep .container ::ng-deep sfc-delimeter.horizontal:after,:host-context(.sfc-default-theme) :host .container .content sfc-load-more-button ::ng-deep .container ::ng-deep 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 .content sfc-load-more-button ::ng-deep .container ::ng-deep 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 .content sfc-load-more-button ::ng-deep .container .button{transition:color .5s ease}:host .container .content sfc-load-more-button ::ng-deep .container .button,:host-context(.sfc-default-theme) :host .container .content sfc-load-more-button ::ng-deep .container .button{color:#545e61}:host-context(.sfc-dark-theme) :host .container .content sfc-load-more-button ::ng-deep .container .button{color:#545e61}:host .container .content sfc-load-more-button ::ng-deep .container .button:hover{color:#ffce54}:host .container .content .empty{display:flex;align-items:center;justify-content:center;color:#545e61;cursor:default;height:100%;font-size:.8em;-webkit-user-select:none;user-select:none;padding:.7em}: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"] }]
2900
- }], ctorParameters: function () { return [{ type: LoaderService }, { type: LoadMoreService }]; }, propDecorators: { id: [{
3016
+ 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{cursor:initial;overflow-y:auto;overflow-x:hidden;height:inherit}:host .container .content,:host-context(.sfc-default-theme) :host .container .content{background:#fff}: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"] }]
3017
+ }], ctorParameters: function () { return [{ type: LoaderService }, { type: LoadMoreService }, { type: PaginationService }, { type: SortingService }]; }, propDecorators: { id: [{
2901
3018
  type: Input
2902
3019
  }], type: [{
2903
3020
  type: Input
@@ -2911,18 +3028,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2911
3028
  args: [`class.${UIClass.Open}`]
2912
3029
  }], loadMore: [{
2913
3030
  type: Input
2914
- }], showEmpty: [{
2915
- type: Input
2916
- }], showLoadMoreButton: [{
2917
- type: Input
2918
3031
  }], loadMoreLabel: [{
2919
3032
  type: Input
2920
- }], notFoundLabel: [{
3033
+ }], showEmpty: [{
3034
+ type: Input
3035
+ }], emptyLabel: [{
2921
3036
  type: Input
2922
3037
  }], model: [{
2923
3038
  type: Input
2924
3039
  }], scrollTarget: [{
2925
3040
  type: Input
3041
+ }], paginationCount: [{
3042
+ type: Input
3043
+ }], paginationLimits: [{
3044
+ type: Input
3045
+ }], showLoading: [{
3046
+ type: Input
2926
3047
  }], handleError: [{
2927
3048
  type: Output
2928
3049
  }], handleSuccess: [{
@@ -2950,16 +3071,97 @@ class IconComponent {
2950
3071
  }
2951
3072
  }
2952
3073
  IconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2953
- IconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: IconComponent, selector: "sfc-icon", inputs: { icon: "icon", imageSrc: "imageSrc" }, ngImport: i0, template: "<div class=\"container\">\r\n <fa-icon *ngIf=\"icon\" [icon]=\"icon\"></fa-icon>\r\n <img *ngIf=\"showImage\" [src]=\"imageSrc\">\r\n</div>", styles: [":host{display:inline-block}:host .container{display:flex;align-items:center;justify-content:center}:host .container img{max-width:1.3em}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] });
3074
+ IconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: IconComponent, selector: "sfc-icon", inputs: { icon: "icon", imageSrc: "imageSrc" }, ngImport: i0, template: "<div class=\"container\">\r\n <fa-icon *ngIf=\"icon\" [icon]=\"icon\"></fa-icon>\r\n <img *ngIf=\"showImage\" [src]=\"imageSrc\">\r\n</div>", styles: [":host{display:inline-block}:host .container{display:flex;align-items:center;justify-content:center}:host .container img{max-width:1.3em;max-height:1.3em}\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"] }] });
2954
3075
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: IconComponent, decorators: [{
2955
3076
  type: Component,
2956
- args: [{ selector: 'sfc-icon', template: "<div class=\"container\">\r\n <fa-icon *ngIf=\"icon\" [icon]=\"icon\"></fa-icon>\r\n <img *ngIf=\"showImage\" [src]=\"imageSrc\">\r\n</div>", styles: [":host{display:inline-block}:host .container{display:flex;align-items:center;justify-content:center}:host .container img{max-width:1.3em}\n"] }]
3077
+ args: [{ selector: 'sfc-icon', template: "<div class=\"container\">\r\n <fa-icon *ngIf=\"icon\" [icon]=\"icon\"></fa-icon>\r\n <img *ngIf=\"showImage\" [src]=\"imageSrc\">\r\n</div>", styles: [":host{display:inline-block}:host .container{display:flex;align-items:center;justify-content:center}:host .container img{max-width:1.3em;max-height:1.3em}\n"] }]
2957
3078
  }], propDecorators: { icon: [{
2958
3079
  type: Input
2959
3080
  }], imageSrc: [{
2960
3081
  type: Input
2961
3082
  }] } });
2962
3083
 
3084
+ class CollapseExpandConstants {
3085
+ }
3086
+ CollapseExpandConstants.LABEL_EXPAND_DEFAULT = 'Expand';
3087
+ CollapseExpandConstants.LABEL_COLLAPSE_DEFAULT = 'Collapse';
3088
+
3089
+ class CollapseExpandComponent {
3090
+ constructor() {
3091
+ this.expand = false;
3092
+ this.labelExpand = CollapseExpandConstants.LABEL_EXPAND_DEFAULT;
3093
+ this.labelCollapse = CollapseExpandConstants.LABEL_COLLAPSE_DEFAULT;
3094
+ }
3095
+ get label() {
3096
+ return this.expand ? this.labelCollapse : this.labelExpand;
3097
+ }
3098
+ get icon() {
3099
+ return this.expand ? faChevronUp : faChevronDown;
3100
+ }
3101
+ }
3102
+ CollapseExpandComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CollapseExpandComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3103
+ CollapseExpandComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: CollapseExpandComponent, selector: "sfc-collapse-expand", inputs: { expand: "expand", labelExpand: "labelExpand", labelCollapse: "labelCollapse" }, ngImport: i0, template: "<div class=\"container\">\r\n <span>{{label}}</span>\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n</div>", styles: [":host{-webkit-user-select:none;user-select:none;cursor:pointer}:host .container{display:flex;justify-content:space-between;align-items:center;transition:color .5s ease}:host .container,:host-context(.sfc-default-theme) :host .container{color:#545e61}:host-context(.sfc-dark-theme) :host .container{color:#fff}:host .container span{padding-right:.5em;font-weight:700}:host .container:hover{color:#ffce54}\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"] }] });
3104
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CollapseExpandComponent, decorators: [{
3105
+ type: Component,
3106
+ args: [{ selector: 'sfc-collapse-expand', template: "<div class=\"container\">\r\n <span>{{label}}</span>\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n</div>", styles: [":host{-webkit-user-select:none;user-select:none;cursor:pointer}:host .container{display:flex;justify-content:space-between;align-items:center;transition:color .5s ease}:host .container,:host-context(.sfc-default-theme) :host .container{color:#545e61}:host-context(.sfc-dark-theme) :host .container{color:#fff}:host .container span{padding-right:.5em;font-weight:700}:host .container:hover{color:#ffce54}\n"] }]
3107
+ }], propDecorators: { expand: [{
3108
+ type: Input
3109
+ }], labelExpand: [{
3110
+ type: Input
3111
+ }], labelCollapse: [{
3112
+ type: Input
3113
+ }] } });
3114
+
3115
+ class CollapseExpandContainerComponent {
3116
+ constructor() {
3117
+ this.faChevronDown = faChevronDown;
3118
+ this.faChevronUp = faChevronUp;
3119
+ this.expand = false;
3120
+ this.delimeter = false;
3121
+ }
3122
+ }
3123
+ CollapseExpandContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CollapseExpandContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3124
+ CollapseExpandContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: CollapseExpandContainerComponent, selector: "sfc-collapse-expand-container", inputs: { expand: "expand", labelExpand: "labelExpand", labelCollapse: "labelCollapse", delimeter: "delimeter" }, ngImport: i0, template: "<div class=\"container\">\r\n <sfc-collapse-expand [expand]=\"expand\" [labelExpand]=\"labelExpand\" [labelCollapse]=\"labelCollapse\"\r\n (click)=\"expand = !expand\" [sfcComponentSize] [customSize]=\"0.8\">\r\n </sfc-collapse-expand>\r\n <div class=\"content\" [sfcIf]=\"expand\">\r\n <ng-content></ng-content>\r\n </div>\r\n <sfc-delimeter *ngIf=\"delimeter\"></sfc-delimeter>\r\n</div>", styles: [":host .container{display:flex;flex-direction:column;align-items:flex-end}:host .container sfc-collapse-expand{padding-bottom:.3em}:host .container .content{width:100%}:host .container sfc-delimeter{width:100%}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: IfDirective, selector: "[sfcIf]", inputs: ["sfcIf"] }, { kind: "directive", type: ComponentSizeDirective, selector: "[sfcComponentSize]", inputs: ["sfcComponentSize", "customSize"] }, { kind: "component", type: DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }, { kind: "component", type: CollapseExpandComponent, selector: "sfc-collapse-expand", inputs: ["expand", "labelExpand", "labelCollapse"] }] });
3125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CollapseExpandContainerComponent, decorators: [{
3126
+ type: Component,
3127
+ args: [{ selector: 'sfc-collapse-expand-container', template: "<div class=\"container\">\r\n <sfc-collapse-expand [expand]=\"expand\" [labelExpand]=\"labelExpand\" [labelCollapse]=\"labelCollapse\"\r\n (click)=\"expand = !expand\" [sfcComponentSize] [customSize]=\"0.8\">\r\n </sfc-collapse-expand>\r\n <div class=\"content\" [sfcIf]=\"expand\">\r\n <ng-content></ng-content>\r\n </div>\r\n <sfc-delimeter *ngIf=\"delimeter\"></sfc-delimeter>\r\n</div>", styles: [":host .container{display:flex;flex-direction:column;align-items:flex-end}:host .container sfc-collapse-expand{padding-bottom:.3em}:host .container .content{width:100%}:host .container sfc-delimeter{width:100%}\n"] }]
3128
+ }], propDecorators: { expand: [{
3129
+ type: Input
3130
+ }], labelExpand: [{
3131
+ type: Input
3132
+ }], labelCollapse: [{
3133
+ type: Input
3134
+ }], delimeter: [{
3135
+ type: Input
3136
+ }] } });
3137
+
3138
+ class ToggleComponent {
3139
+ constructor() {
3140
+ this.active = false;
3141
+ this.disabled = false;
3142
+ this.onClick = () => this.active = !this.active;
3143
+ }
3144
+ }
3145
+ ToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ToggleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3146
+ ToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ToggleComponent, selector: "sfc-toggle", inputs: { active: "active", disabled: "disabled" }, host: { listeners: { "click": "onClick()" }, properties: { "class.active": "this.active", "class.disabled": "this.disabled" } }, ngImport: i0, template: `<div class="container"><label></label></div>`, isInline: true, styles: [":host .container label{display:block;width:2.5em;height:1.25em;box-sizing:border-box;cursor:pointer;padding:.125em;background:transparent;border:.1em solid;border-radius:2em;transition:border-color .5s ease;transition:all .5s ease}:host .container label,:host-context(.sfc-default-theme) :host .container label{border-color:#545e61}:host-context(.sfc-dark-theme) :host .container label{border-color:#fff}:host .container label:after,:host .container label:before{content:\"\";position:relative;display:block;width:50%;height:100%}:host .container label:after{content:\"\";left:0;transition:background .5s ease;transition:all .5s ease;border-radius:1em}:host .container label:after,:host-context(.sfc-default-theme) :host .container label:after{background:#545e61}:host-context(.sfc-dark-theme) :host .container label:after{background:#fff}:host .container label:before{display:none}:host.active .container label:after{left:50%}:host.disabled{pointer-events:none}:host.disabled .container label{transition:border-color .5s ease}:host.disabled .container label,:host-context(.sfc-default-theme) :host.disabled .container label{border-color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .container label{border-color:#656d78}:host.disabled .container label:after{transition:background .5s ease}:host.disabled .container label:after,:host-context(.sfc-default-theme) :host.disabled .container label:after{background:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .container label:after{background:#656d78}\n"] });
3147
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ToggleComponent, decorators: [{
3148
+ type: Component,
3149
+ args: [{ selector: 'sfc-toggle', template: `<div class="container"><label></label></div>`, styles: [":host .container label{display:block;width:2.5em;height:1.25em;box-sizing:border-box;cursor:pointer;padding:.125em;background:transparent;border:.1em solid;border-radius:2em;transition:border-color .5s ease;transition:all .5s ease}:host .container label,:host-context(.sfc-default-theme) :host .container label{border-color:#545e61}:host-context(.sfc-dark-theme) :host .container label{border-color:#fff}:host .container label:after,:host .container label:before{content:\"\";position:relative;display:block;width:50%;height:100%}:host .container label:after{content:\"\";left:0;transition:background .5s ease;transition:all .5s ease;border-radius:1em}:host .container label:after,:host-context(.sfc-default-theme) :host .container label:after{background:#545e61}:host-context(.sfc-dark-theme) :host .container label:after{background:#fff}:host .container label:before{display:none}:host.active .container label:after{left:50%}:host.disabled{pointer-events:none}:host.disabled .container label{transition:border-color .5s ease}:host.disabled .container label,:host-context(.sfc-default-theme) :host.disabled .container label{border-color:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .container label{border-color:#656d78}:host.disabled .container label:after{transition:background .5s ease}:host.disabled .container label:after,:host-context(.sfc-default-theme) :host.disabled .container label:after{background:#bdbdbd}:host-context(.sfc-dark-theme) :host.disabled .container label:after{background:#656d78}\n"] }]
3150
+ }], propDecorators: { active: [{
3151
+ type: Input
3152
+ }, {
3153
+ type: HostBinding,
3154
+ args: ['class.' + UIClass.Active]
3155
+ }], disabled: [{
3156
+ type: Input
3157
+ }, {
3158
+ type: HostBinding,
3159
+ args: ['class.' + UIClass.Disabled]
3160
+ }], onClick: [{
3161
+ type: HostListener,
3162
+ args: ['click']
3163
+ }] } });
3164
+
2963
3165
  class NgxSfcCommonModule {
2964
3166
  }
2965
3167
  NgxSfcCommonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NgxSfcCommonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -2967,6 +3169,7 @@ NgxSfcCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
2967
3169
  // directives
2968
3170
  ClickOutsideDirective,
2969
3171
  ShowHideElementDirective,
3172
+ CollapseExpandDirective,
2970
3173
  IfDirective,
2971
3174
  ThrowElementOnHoverDirective,
2972
3175
  TemplateReferenceDirective,
@@ -2977,6 +3180,7 @@ NgxSfcCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
2977
3180
  ScrollTrackerDirective,
2978
3181
  ScrollIntoViewDirective,
2979
3182
  ImageLoadDirective,
3183
+ ComponentReferenceDirective,
2980
3184
  // components
2981
3185
  ButtonComponent,
2982
3186
  TooltipComponent,
@@ -2989,10 +3193,12 @@ NgxSfcCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
2989
3193
  HamburgerMenuComponent,
2990
3194
  DotsComponent,
2991
3195
  PaginationComponent,
2992
- SortingComponent,
2993
3196
  LoadMoreButtonComponent,
2994
3197
  LoadContainerComponent,
2995
3198
  IconComponent,
3199
+ CollapseExpandComponent,
3200
+ CollapseExpandContainerComponent,
3201
+ ToggleComponent,
2996
3202
  // loaders
2997
3203
  BounceLoaderComponent,
2998
3204
  CircleLoaderComponent,
@@ -3003,11 +3209,13 @@ NgxSfcCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
3003
3209
  DefaultModalHeaderComponent,
3004
3210
  DefaultModalFooterComponent,
3005
3211
  // pipes
3006
- SwitchMultiCasePipe], imports: [CommonModule,
3212
+ SwitchMultiCasePipe,
3213
+ SortByPipe], imports: [CommonModule,
3007
3214
  FontAwesomeModule], exports: [
3008
3215
  // directives
3009
3216
  ClickOutsideDirective,
3010
3217
  ShowHideElementDirective,
3218
+ CollapseExpandDirective,
3011
3219
  IfDirective,
3012
3220
  ThrowElementOnHoverDirective,
3013
3221
  TemplateReferenceDirective,
@@ -3018,6 +3226,7 @@ NgxSfcCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
3018
3226
  ScrollTrackerDirective,
3019
3227
  ScrollIntoViewDirective,
3020
3228
  ImageLoadDirective,
3229
+ ComponentReferenceDirective,
3021
3230
  // components
3022
3231
  ButtonComponent,
3023
3232
  TooltipComponent,
@@ -3030,10 +3239,12 @@ NgxSfcCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
3030
3239
  HamburgerComponent,
3031
3240
  HamburgerMenuComponent,
3032
3241
  PaginationComponent,
3033
- SortingComponent,
3034
3242
  LoadMoreButtonComponent,
3035
3243
  LoadContainerComponent,
3036
3244
  IconComponent,
3245
+ CollapseExpandComponent,
3246
+ CollapseExpandContainerComponent,
3247
+ ToggleComponent,
3037
3248
  // loaders
3038
3249
  BounceLoaderComponent,
3039
3250
  CircleLoaderComponent,
@@ -3044,7 +3255,8 @@ NgxSfcCommonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", vers
3044
3255
  DefaultModalHeaderComponent,
3045
3256
  DefaultModalFooterComponent,
3046
3257
  // pipes
3047
- SwitchMultiCasePipe] });
3258
+ SwitchMultiCasePipe,
3259
+ SortByPipe] });
3048
3260
  NgxSfcCommonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NgxSfcCommonModule, providers: [DOCUMENT_PROVIDERS, WINDOW_PROVIDERS], imports: [CommonModule,
3049
3261
  FontAwesomeModule] });
3050
3262
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: NgxSfcCommonModule, decorators: [{
@@ -3054,6 +3266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3054
3266
  // directives
3055
3267
  ClickOutsideDirective,
3056
3268
  ShowHideElementDirective,
3269
+ CollapseExpandDirective,
3057
3270
  IfDirective,
3058
3271
  ThrowElementOnHoverDirective,
3059
3272
  TemplateReferenceDirective,
@@ -3064,6 +3277,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3064
3277
  ScrollTrackerDirective,
3065
3278
  ScrollIntoViewDirective,
3066
3279
  ImageLoadDirective,
3280
+ ComponentReferenceDirective,
3067
3281
  // components
3068
3282
  ButtonComponent,
3069
3283
  TooltipComponent,
@@ -3076,10 +3290,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3076
3290
  HamburgerMenuComponent,
3077
3291
  DotsComponent,
3078
3292
  PaginationComponent,
3079
- SortingComponent,
3080
3293
  LoadMoreButtonComponent,
3081
3294
  LoadContainerComponent,
3082
3295
  IconComponent,
3296
+ CollapseExpandComponent,
3297
+ CollapseExpandContainerComponent,
3298
+ ToggleComponent,
3083
3299
  // loaders
3084
3300
  BounceLoaderComponent,
3085
3301
  CircleLoaderComponent,
@@ -3090,7 +3306,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3090
3306
  DefaultModalHeaderComponent,
3091
3307
  DefaultModalFooterComponent,
3092
3308
  // pipes
3093
- SwitchMultiCasePipe
3309
+ SwitchMultiCasePipe,
3310
+ SortByPipe
3094
3311
  ],
3095
3312
  imports: [
3096
3313
  CommonModule,
@@ -3100,6 +3317,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3100
3317
  // directives
3101
3318
  ClickOutsideDirective,
3102
3319
  ShowHideElementDirective,
3320
+ CollapseExpandDirective,
3103
3321
  IfDirective,
3104
3322
  ThrowElementOnHoverDirective,
3105
3323
  TemplateReferenceDirective,
@@ -3110,6 +3328,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3110
3328
  ScrollTrackerDirective,
3111
3329
  ScrollIntoViewDirective,
3112
3330
  ImageLoadDirective,
3331
+ ComponentReferenceDirective,
3113
3332
  // components
3114
3333
  ButtonComponent,
3115
3334
  TooltipComponent,
@@ -3122,10 +3341,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3122
3341
  HamburgerComponent,
3123
3342
  HamburgerMenuComponent,
3124
3343
  PaginationComponent,
3125
- SortingComponent,
3126
3344
  LoadMoreButtonComponent,
3127
3345
  LoadContainerComponent,
3128
3346
  IconComponent,
3347
+ CollapseExpandComponent,
3348
+ CollapseExpandContainerComponent,
3349
+ ToggleComponent,
3129
3350
  // loaders
3130
3351
  BounceLoaderComponent,
3131
3352
  CircleLoaderComponent,
@@ -3136,7 +3357,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3136
3357
  DefaultModalHeaderComponent,
3137
3358
  DefaultModalFooterComponent,
3138
3359
  // pipes
3139
- SwitchMultiCasePipe
3360
+ SwitchMultiCasePipe,
3361
+ SortByPipe
3140
3362
  ],
3141
3363
  providers: [DOCUMENT_PROVIDERS, WINDOW_PROVIDERS]
3142
3364
  }]
@@ -3150,6 +3372,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3150
3372
  * Generated bundle index. Do not edit.
3151
3373
  */
3152
3374
 
3153
- export { BounceLoaderComponent, BrowserDocumentRef, BrowserWindowRef, ButtonComponent, ButtonType, CheckmarkComponent, CheckmarkType, CircleLoaderComponent, CircleLoaderType, ClickOutsideDirective, CloseComponent, CommonConstants, Compare, ComponentSize, ComponentSizeDirective, DOCUMENT, DOCUMENT_PROVIDERS, DateTimeConstants, DefaultModalFooterComponent, DefaultModalHeaderComponent, DelimeterComponent, DestroyParentDirective, Direction, DocumentRef, DomChangesDirective, DotsComponent, HamburgerComponent, HamburgerMenuComponent, IconComponent, IfDirective, ImageLoadDirective, ImageLoadService, LoadChangesSource, LoadContainerComponent, LoadContainerType, LoadMoreButtonComponent, LoaderService, MediaLimits, ModalComponent, ModalOpenDirective, ModalOpenOnClickDirective, ModalService, ModalTemplate, MouseDownDirective, NgxSfcCommonModule, PaginationComponent, PaginationService, Position, ResizeService, ScrollIntoViewDirective, ScrollTrackerDirective, Sequence, ShowHideElementDirective, SortingComponent, SortingDirection, SortingService, SwitchMultiCasePipe, TemplateContentComponent, TemplateReferenceDirective, Theme, ThrowElementOnHoverDirective, ToggleSwitcherComponent, TooltipComponent, TooltipType, UIClass, UIConstants, WINDOW, WINDOW_PROVIDERS, WindowRef, addClasses, addItem, addPropertyToObject, all, any, browserDocumentProvider, browserWindowProvider, contains, convertFromBase64String, convertTimestampToDate, convertToBase64String, convertUTCDateToLocalDate, count, distinct, documentFactory, documentProvider, firstItem, firstOrDefault, 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 };
3375
+ 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, 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 };
3154
3376
  //# sourceMappingURL=ngx-sfc-common.mjs.map
3155
3377
  //# sourceMappingURL=ngx-sfc-common.mjs.map