ngx-sfc-components 0.0.22 → 0.0.24

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 (65) hide show
  1. package/esm2020/lib/components/avatar/avatar.component.mjs +12 -5
  2. package/esm2020/lib/components/avatar/models/avatar-progress.model.mjs +1 -1
  3. package/esm2020/lib/components/avatar/parts/badge/avatar-badge.component.mjs +1 -1
  4. package/esm2020/lib/components/carousel/carousel.component.mjs +14 -6
  5. package/esm2020/lib/components/carousel/models/navigation-context.model.mjs +2 -0
  6. package/esm2020/lib/components/carousel/models/navigation.model.mjs +1 -1
  7. package/esm2020/lib/components/carousel/models/options.model.mjs +1 -1
  8. package/esm2020/lib/components/carousel/parts/stage/carousel-stage.component.mjs +3 -3
  9. package/esm2020/lib/components/carousel/service/carousel/carousel-service.constants.mjs +5 -2
  10. package/esm2020/lib/components/carousel/service/navigation/carousel-navigation.service.mjs +10 -1
  11. package/esm2020/lib/components/index.mjs +4 -2
  12. package/esm2020/lib/components/menu/dropdown/dropdown-menu.component.mjs +3 -3
  13. package/esm2020/lib/components/menu/dropdown/parts/item/dropdown-menu-item.component.mjs +8 -3
  14. package/esm2020/lib/components/menu/router/parts/item/router-menu-item.component.mjs +31 -0
  15. package/esm2020/lib/components/menu/router/parts/item/router-menu-item.model.mjs +2 -0
  16. package/esm2020/lib/components/menu/router/router-menu.component.mjs +32 -0
  17. package/esm2020/lib/components/menu/side/parts/header/side-menu-header.component.mjs +10 -6
  18. package/esm2020/lib/components/menu/side/parts/item/content/side-menu-item-content.component.mjs +7 -4
  19. package/esm2020/lib/components/menu/side/parts/item/side-menu-item.component.mjs +6 -5
  20. package/esm2020/lib/components/menu/side/side-menu.component.mjs +12 -5
  21. package/esm2020/lib/components/menu/side/side-menu.constants.mjs +4 -0
  22. package/esm2020/lib/components/menu/side/side-menu.model.mjs +1 -1
  23. package/esm2020/lib/components/no-export-index.mjs +2 -2
  24. package/esm2020/lib/components/notification/notification.component.mjs +1 -1
  25. package/esm2020/lib/components/progress/circle/progress-circle.component.mjs +6 -3
  26. package/esm2020/lib/components/progress/progress.utils.mjs +2 -2
  27. package/esm2020/lib/components/table/parts/content/rows/expanded/expanded-table-row.component.mjs +2 -2
  28. package/esm2020/lib/components/table/service/select/table-select.event.mjs +1 -1
  29. package/esm2020/lib/components/table/service/select/table-select.service.mjs +17 -7
  30. package/esm2020/lib/components/table/table.component.mjs +35 -11
  31. package/esm2020/lib/components/tabs/tabs.component.mjs +9 -4
  32. package/esm2020/lib/components/tags/parts/tag/tag.component.mjs +4 -4
  33. package/esm2020/lib/components/tags/parts/tag/tag.model.mjs +1 -1
  34. package/esm2020/lib/components/tags/tags.component.mjs +2 -2
  35. package/esm2020/lib/ngx-sfc-components.module.mjs +9 -3
  36. package/fesm2015/ngx-sfc-components.mjs +207 -55
  37. package/fesm2015/ngx-sfc-components.mjs.map +1 -1
  38. package/fesm2020/ngx-sfc-components.mjs +205 -55
  39. package/fesm2020/ngx-sfc-components.mjs.map +1 -1
  40. package/lib/components/avatar/avatar.component.d.ts +4 -2
  41. package/lib/components/avatar/models/avatar-progress.model.d.ts +3 -2
  42. package/lib/components/avatar/parts/badge/avatar-badge.component.d.ts +2 -1
  43. package/lib/components/carousel/carousel.component.d.ts +6 -1
  44. package/lib/components/carousel/models/navigation-context.model.d.ts +9 -0
  45. package/lib/components/carousel/models/navigation.model.d.ts +4 -1
  46. package/lib/components/carousel/models/options.model.d.ts +3 -0
  47. package/lib/components/carousel/service/carousel/carousel-service.constants.d.ts +1 -0
  48. package/lib/components/index.d.ts +5 -2
  49. package/lib/components/menu/router/parts/item/router-menu-item.component.d.ts +9 -0
  50. package/lib/components/menu/router/parts/item/router-menu-item.model.d.ts +9 -0
  51. package/lib/components/menu/router/router-menu.component.d.ts +11 -0
  52. package/lib/components/menu/side/parts/header/side-menu-header.component.d.ts +4 -2
  53. package/lib/components/menu/side/side-menu.component.d.ts +1 -0
  54. package/lib/components/menu/side/side-menu.constants.d.ts +3 -0
  55. package/lib/components/menu/side/side-menu.model.d.ts +10 -4
  56. package/lib/components/no-export-index.d.ts +1 -1
  57. package/lib/components/notification/notification.component.d.ts +1 -1
  58. package/lib/components/progress/circle/progress-circle.component.d.ts +2 -1
  59. package/lib/components/table/service/select/table-select.event.d.ts +1 -0
  60. package/lib/components/table/service/select/table-select.service.d.ts +3 -2
  61. package/lib/components/table/table.component.d.ts +4 -3
  62. package/lib/components/tabs/tabs.component.d.ts +3 -2
  63. package/lib/components/tags/parts/tag/tag.model.d.ts +1 -0
  64. package/lib/ngx-sfc-components.module.d.ts +34 -32
  65. package/package.json +2 -2
@@ -1,10 +1,10 @@
1
1
  import * as i1 from '@angular/common';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import * as i0 from '@angular/core';
4
- import { Component, Input, ContentChildren, Directive, HostBinding, EventEmitter, Output, HostListener, Inject, ViewChild, Injectable, ViewChildren, NgModule } from '@angular/core';
4
+ import { EventEmitter, Component, Input, Output, ContentChildren, Directive, HostBinding, HostListener, Inject, ViewChild, Injectable, ViewChildren, NgModule } from '@angular/core';
5
5
  import { Chart, Title, Tooltip, Filler, Legend, LineController, LineElement, PointElement, LinearScale, CategoryScale, BarController, BarElement, DoughnutController, ArcElement, RadarController, RadialLinearScale, PieController, PolarAreaController, BubbleController, ScatterController, TimeSeriesScale } from 'chart.js';
6
6
  import * as i3 from 'ngx-sfc-common';
7
- import { isDefined, firstOrDefault, CommonConstants, TemplateReferenceDirective, UIClass, isNullOrEmptyString, getCalcValue, UIConstants, any, Position, MediaLimits, WINDOW, getCssLikeValue, ButtonType, replaceRgbOpacity, Theme, mergeDeep, removeItem, addItem, CheckmarkType, SortingDirection, LoadContainerType, PaginationConstants, LoadContainerLoadType, generateGuid, all, hasItem, SortingService, ResizeService, isNumeric, DOCUMENT, NgxSfcCommonModule } from 'ngx-sfc-common';
7
+ import { isDefined, firstOrDefault, CommonConstants, TemplateReferenceDirective, UIClass, isNullOrEmptyString, getCalcValue, UIConstants, any, Position, MediaLimits, WINDOW, all, getCssLikeValue, ButtonType, replaceRgbOpacity, Theme, mergeDeep, ObservableModel, removeItem, addItem, CheckmarkType, SortingDirection, LoadContainerType, PaginationConstants, LoadContainerLoadType, generateGuid, hasItem, SortingService, ResizeService, isNumeric, DOCUMENT, NgxSfcCommonModule } from 'ngx-sfc-common';
8
8
  import { Subject, BehaviorSubject, startWith, combineLatest, map, filter, distinctUntilChanged, fromEvent, tap, merge, of, switchMap, first, from, skip, take, toArray, delay } from 'rxjs';
9
9
  import { faCircle, faAngleUp, faAngleDown, faArrowRight, faArrowLeft, faPauseCircle, faPlayCircle, faEye, faEyeSlash, faChevronUp, faChevronDown, faTableList, faBorderAll } from '@fortawesome/free-solid-svg-icons';
10
10
  import * as i2 from '@fortawesome/angular-fontawesome';
@@ -33,6 +33,8 @@ class TabsComponent {
33
33
  this.tabService = tabService;
34
34
  this.TabsTemplate = TabsTemplate;
35
35
  this.tabs = [];
36
+ // End Template references
37
+ this.selected = new EventEmitter();
36
38
  }
37
39
  ngOnInit() {
38
40
  this.tabsSubject = new BehaviorSubject(this.tabs);
@@ -54,6 +56,7 @@ class TabsComponent {
54
56
  selectTab(tab, index) {
55
57
  if (!tab.disabled && !tab.selected) {
56
58
  this.tabService.select(index);
59
+ this.selected.emit(tab);
57
60
  }
58
61
  }
59
62
  getSelectedIndex(tabs) {
@@ -71,10 +74,10 @@ class TabsComponent {
71
74
  }
72
75
  }
73
76
  TabsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TabsComponent, deps: [{ token: TabService }], target: i0.ɵɵFactoryTarget.Component });
74
- TabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: TabsComponent, selector: "sfc-tabs", inputs: { tabs: "tabs", label: "label", slider: "slider", body: "body" }, providers: [TabService], queries: [{ propertyName: "templates", predicate: TemplateReferenceDirective, read: TemplateReferenceDirective }], ngImport: i0, template: "<div class=\"container\" *ngIf=\"vm$ | async as vm\">\r\n <div class=\"tabs-container\">\r\n <div class=\"tabs\">\r\n <div class=\"tab\" [style.width.%]=\"vm.tabWidth\" *ngFor=\"let tab of vm.tabs; index as index\"\r\n (click)=\"selectTab(tab, index)\">\r\n\r\n <sfc-template-content [referenceContent]=\"label\" [templatesContent]=\"templates\"\r\n [templateType]=\"TabsTemplate.Label\" [defaultContent]=\"defaultLabel\" [contextData]=\"tab\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultLabel>{{ tab.label }}</ng-template>\r\n </div>\r\n </div>\r\n\r\n <sfc-template-content [referenceContent]=\"slider\" [templatesContent]=\"templates\"\r\n [templateType]=\"TabsTemplate.Slider\" [contextData]=\"vm.sliderContextData\"></sfc-template-content>\r\n\r\n </div>\r\n\r\n <div class=\"body-container\">\r\n <ng-container *ngIf=\"vm.selectedTab\">\r\n\r\n <sfc-template-content [referenceContent]=\"body\" [templatesContent]=\"templates\"\r\n [templateType]=\"TabsTemplate.Body\" [contextData]=\"vm.selectedTab.data\">\r\n </sfc-template-content>\r\n\r\n </ng-container>\r\n </div>\r\n</div>", styles: [":host{width:100%}:host .container .tabs{display:flex;flex-wrap:wrap}:host .container .tabs .tab{transition:color .5s ease;text-align:center}:host .container .tabs .tab,:host-context(.sfc-default-theme) :host .container .tabs .tab{color:#545e61}:host-context(.sfc-dark-theme) :host .container .tabs .tab{color:#fff}:host .container .body-container{transition:color .5s ease;margin-top:.6em}:host .container .body-container,:host-context(.sfc-default-theme) :host .container .body-container{color:#545e61}:host-context(.sfc-dark-theme) :host .container .body-container{color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TemplateContentComponent, selector: "sfc-template-content", inputs: ["contextData", "referenceContent", "templateType", "templatesContent", "defaultContent"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
77
+ TabsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: TabsComponent, selector: "sfc-tabs", inputs: { tabs: "tabs", label: "label", slider: "slider", body: "body" }, outputs: { selected: "selected" }, providers: [TabService], queries: [{ propertyName: "templates", predicate: TemplateReferenceDirective, read: TemplateReferenceDirective }], ngImport: i0, template: "<div class=\"container\" *ngIf=\"vm$ | async as vm\">\r\n <div class=\"tabs-container\">\r\n <div class=\"tabs\">\r\n <div class=\"tab\" [style.width.%]=\"vm.tabWidth\" *ngFor=\"let tab of vm.tabs; index as index\"\r\n (click)=\"selectTab(tab, index)\">\r\n\r\n <sfc-template-content [referenceContent]=\"label\" [templatesContent]=\"templates\"\r\n [templateType]=\"TabsTemplate.Label\" [defaultContent]=\"defaultLabel\" [contextData]=\"tab\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultLabel>{{ tab.label }}</ng-template>\r\n </div>\r\n </div>\r\n\r\n <sfc-template-content [referenceContent]=\"slider\" [templatesContent]=\"templates\"\r\n [templateType]=\"TabsTemplate.Slider\" [contextData]=\"vm.sliderContextData\">\r\n </sfc-template-content>\r\n\r\n </div>\r\n\r\n <div class=\"body-container\">\r\n <ng-container *ngIf=\"vm.selectedTab\">\r\n\r\n <sfc-template-content [referenceContent]=\"body\" [templatesContent]=\"templates\"\r\n [templateType]=\"TabsTemplate.Body\" [contextData]=\"vm.selectedTab.data\">\r\n </sfc-template-content>\r\n\r\n </ng-container>\r\n </div>\r\n</div>", styles: [":host{width:100%}:host .container .tabs{display:flex;flex-wrap:wrap}:host .container .tabs .tab{transition:color .5s ease;text-align:center}:host .container .tabs .tab,:host-context(.sfc-default-theme) :host .container .tabs .tab{color:#545e61}:host-context(.sfc-dark-theme) :host .container .tabs .tab{color:#fff}:host .container .body-container{transition:color .5s ease;margin-top:.6em}:host .container .body-container,:host-context(.sfc-default-theme) :host .container .body-container{color:#545e61}:host-context(.sfc-dark-theme) :host .container .body-container{color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TemplateContentComponent, selector: "sfc-template-content", inputs: ["contextData", "referenceContent", "templateType", "templatesContent", "defaultContent"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }] });
75
78
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TabsComponent, decorators: [{
76
79
  type: Component,
77
- args: [{ selector: 'sfc-tabs', providers: [TabService], template: "<div class=\"container\" *ngIf=\"vm$ | async as vm\">\r\n <div class=\"tabs-container\">\r\n <div class=\"tabs\">\r\n <div class=\"tab\" [style.width.%]=\"vm.tabWidth\" *ngFor=\"let tab of vm.tabs; index as index\"\r\n (click)=\"selectTab(tab, index)\">\r\n\r\n <sfc-template-content [referenceContent]=\"label\" [templatesContent]=\"templates\"\r\n [templateType]=\"TabsTemplate.Label\" [defaultContent]=\"defaultLabel\" [contextData]=\"tab\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultLabel>{{ tab.label }}</ng-template>\r\n </div>\r\n </div>\r\n\r\n <sfc-template-content [referenceContent]=\"slider\" [templatesContent]=\"templates\"\r\n [templateType]=\"TabsTemplate.Slider\" [contextData]=\"vm.sliderContextData\"></sfc-template-content>\r\n\r\n </div>\r\n\r\n <div class=\"body-container\">\r\n <ng-container *ngIf=\"vm.selectedTab\">\r\n\r\n <sfc-template-content [referenceContent]=\"body\" [templatesContent]=\"templates\"\r\n [templateType]=\"TabsTemplate.Body\" [contextData]=\"vm.selectedTab.data\">\r\n </sfc-template-content>\r\n\r\n </ng-container>\r\n </div>\r\n</div>", styles: [":host{width:100%}:host .container .tabs{display:flex;flex-wrap:wrap}:host .container .tabs .tab{transition:color .5s ease;text-align:center}:host .container .tabs .tab,:host-context(.sfc-default-theme) :host .container .tabs .tab{color:#545e61}:host-context(.sfc-dark-theme) :host .container .tabs .tab{color:#fff}:host .container .body-container{transition:color .5s ease;margin-top:.6em}:host .container .body-container,:host-context(.sfc-default-theme) :host .container .body-container{color:#545e61}:host-context(.sfc-dark-theme) :host .container .body-container{color:#fff}\n"] }]
80
+ args: [{ selector: 'sfc-tabs', providers: [TabService], template: "<div class=\"container\" *ngIf=\"vm$ | async as vm\">\r\n <div class=\"tabs-container\">\r\n <div class=\"tabs\">\r\n <div class=\"tab\" [style.width.%]=\"vm.tabWidth\" *ngFor=\"let tab of vm.tabs; index as index\"\r\n (click)=\"selectTab(tab, index)\">\r\n\r\n <sfc-template-content [referenceContent]=\"label\" [templatesContent]=\"templates\"\r\n [templateType]=\"TabsTemplate.Label\" [defaultContent]=\"defaultLabel\" [contextData]=\"tab\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultLabel>{{ tab.label }}</ng-template>\r\n </div>\r\n </div>\r\n\r\n <sfc-template-content [referenceContent]=\"slider\" [templatesContent]=\"templates\"\r\n [templateType]=\"TabsTemplate.Slider\" [contextData]=\"vm.sliderContextData\">\r\n </sfc-template-content>\r\n\r\n </div>\r\n\r\n <div class=\"body-container\">\r\n <ng-container *ngIf=\"vm.selectedTab\">\r\n\r\n <sfc-template-content [referenceContent]=\"body\" [templatesContent]=\"templates\"\r\n [templateType]=\"TabsTemplate.Body\" [contextData]=\"vm.selectedTab.data\">\r\n </sfc-template-content>\r\n\r\n </ng-container>\r\n </div>\r\n</div>", styles: [":host{width:100%}:host .container .tabs{display:flex;flex-wrap:wrap}:host .container .tabs .tab{transition:color .5s ease;text-align:center}:host .container .tabs .tab,:host-context(.sfc-default-theme) :host .container .tabs .tab{color:#545e61}:host-context(.sfc-dark-theme) :host .container .tabs .tab{color:#fff}:host .container .body-container{transition:color .5s ease;margin-top:.6em}:host .container .body-container,:host-context(.sfc-default-theme) :host .container .body-container{color:#545e61}:host-context(.sfc-dark-theme) :host .container .body-container{color:#fff}\n"] }]
78
81
  }], ctorParameters: function () { return [{ type: TabService }]; }, propDecorators: { tabs: [{
79
82
  type: Input
80
83
  }], label: [{
@@ -83,6 +86,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
83
86
  type: Input
84
87
  }], body: [{
85
88
  type: Input
89
+ }], selected: [{
90
+ type: Output
86
91
  }], templates: [{
87
92
  type: ContentChildren,
88
93
  args: [TemplateReferenceDirective, { read: TemplateReferenceDirective }]
@@ -190,6 +195,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
190
195
  args: [{ selector: 'sfc-tab-label-line-slider', template: "<div class=\"slider\" [ngStyle]=\"style\"></div>", styles: [":host{position:relative;display:flex}:host .slider{background:#ffce54;height:.125em;position:absolute;left:0;top:calc(100% - .1em);transition:left .3s ease-out}\n"] }]
191
196
  }] });
192
197
 
198
+ class SideMenuConstants {
199
+ }
200
+ SideMenuConstants.CSS_SWITCH_CLASS = 'switch';
201
+
193
202
  var SideMenuItemType;
194
203
  (function (SideMenuItemType) {
195
204
  SideMenuItemType["Item"] = "item";
@@ -200,20 +209,23 @@ class SideMenuHeaderComponent {
200
209
  constructor() {
201
210
  this.DEFAULT_MENU_HEADER_TEXT = 'Menu';
202
211
  this.label = CommonConstants.EMPTY_STRING;
212
+ this.switch = true;
203
213
  this.open = false;
204
214
  this.toggle = new EventEmitter();
205
215
  }
206
216
  ngOnInit() {
207
- this.label = this.label || this.DEFAULT_MENU_HEADER_TEXT;
217
+ this.label = isDefined(this.label) ? this.label : this.DEFAULT_MENU_HEADER_TEXT;
208
218
  }
209
219
  }
210
220
  SideMenuHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SideMenuHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
211
- SideMenuHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SideMenuHeaderComponent, selector: "sfc-side-menu-header", inputs: { label: "label", open: "open" }, outputs: { toggle: "toggle" }, host: { properties: { "class.open": "this.open" } }, ngImport: i0, template: "<li>\r\n <span>{{label}}</span>\r\n <sfc-hamburger [open]=\"open\" (click)=\"toggle.emit()\"></sfc-hamburger>\r\n</li>", styles: [":host li{display:flex;align-items:center;justify-content:center;padding:1.25em}:host li span{display:none;transition:color .5s ease;text-transform:uppercase;font-weight:700;font-size:.8em;-webkit-user-select:none;user-select:none}:host li span,:host-context(.sfc-default-theme) :host li span{color:#545e61}:host-context(.sfc-dark-theme) :host li span{color:#fff}:host.open li{justify-content:space-between}:host.open li span{display:block}\n"], dependencies: [{ kind: "component", type: i3.HamburgerComponent, selector: "sfc-hamburger" }] });
221
+ SideMenuHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SideMenuHeaderComponent, selector: "sfc-side-menu-header", inputs: { label: "label", switch: "switch", open: "open" }, outputs: { toggle: "toggle" }, host: { properties: { "class.open": "this.open" } }, ngImport: i0, template: "<li>\r\n <span>{{label}}</span>\r\n <sfc-hamburger *ngIf=\"switch\" [open]=\"open\" (click)=\"toggle.emit()\"></sfc-hamburger>\r\n</li>", styles: [":host li{display:flex;align-items:center;justify-content:center;padding:1.25em}:host li span{display:none;transition:color .5s ease;font-weight:700;font-size:.9em;-webkit-user-select:none;user-select:none}:host li span,:host-context(.sfc-default-theme) :host li span{color:#545e61}:host-context(.sfc-dark-theme) :host li span{color:#fff}:host.open li{justify-content:space-between}:host.open li span{display:block}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.HamburgerComponent, selector: "sfc-hamburger" }] });
212
222
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SideMenuHeaderComponent, decorators: [{
213
223
  type: Component,
214
- args: [{ selector: 'sfc-side-menu-header', template: "<li>\r\n <span>{{label}}</span>\r\n <sfc-hamburger [open]=\"open\" (click)=\"toggle.emit()\"></sfc-hamburger>\r\n</li>", styles: [":host li{display:flex;align-items:center;justify-content:center;padding:1.25em}:host li span{display:none;transition:color .5s ease;text-transform:uppercase;font-weight:700;font-size:.8em;-webkit-user-select:none;user-select:none}:host li span,:host-context(.sfc-default-theme) :host li span{color:#545e61}:host-context(.sfc-dark-theme) :host li span{color:#fff}:host.open li{justify-content:space-between}:host.open li span{display:block}\n"] }]
224
+ args: [{ selector: 'sfc-side-menu-header', template: "<li>\r\n <span>{{label}}</span>\r\n <sfc-hamburger *ngIf=\"switch\" [open]=\"open\" (click)=\"toggle.emit()\"></sfc-hamburger>\r\n</li>", styles: [":host li{display:flex;align-items:center;justify-content:center;padding:1.25em}:host li span{display:none;transition:color .5s ease;font-weight:700;font-size:.9em;-webkit-user-select:none;user-select:none}:host li span,:host-context(.sfc-default-theme) :host li span{color:#545e61}:host-context(.sfc-dark-theme) :host li span{color:#fff}:host.open li{justify-content:space-between}:host.open li span{display:block}\n"] }]
215
225
  }], propDecorators: { label: [{
216
226
  type: Input
227
+ }], switch: [{
228
+ type: Input
217
229
  }], open: [{
218
230
  type: Input
219
231
  }, {
@@ -228,8 +240,9 @@ class SideMenuItemContentComponent {
228
240
  this.ANGLE_UP_ICON = faAngleUp;
229
241
  this.ANGLE_DOWM_ICON = faAngleDown;
230
242
  this.item = {
231
- icon: undefined,
243
+ id: CommonConstants.EMPTY_STRING,
232
244
  label: CommonConstants.EMPTY_STRING,
245
+ icon: null,
233
246
  type: SideMenuItemType.Item,
234
247
  active: false
235
248
  };
@@ -241,16 +254,18 @@ class SideMenuItemContentComponent {
241
254
  }
242
255
  onClick() {
243
256
  this.selectItem.emit(this.item);
257
+ if (this.item.click)
258
+ this.item.click(this.item);
244
259
  }
245
260
  get expandIcon() {
246
261
  return this.openParent ? this.ANGLE_UP_ICON : this.ANGLE_DOWM_ICON;
247
262
  }
248
263
  }
249
264
  SideMenuItemContentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SideMenuItemContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
250
- SideMenuItemContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SideMenuItemContentComponent, selector: "sfc-side-menu-item-content", inputs: { item: "item", active: "active", open: "open", openParent: "openParent", hasChildren: "hasChildren" }, outputs: { selectItem: "selectItem" }, host: { listeners: { "click": "onClick()" }, properties: { "class.active": "this.active", "class.open": "this.open" } }, ngImport: i0, template: "<li>\r\n <div class=\"item-container\">\r\n <div class=\"item\">\r\n <a>\r\n <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\"></fa-icon>\r\n </a>\r\n </div>\r\n <span class=\"label\">{{item.label}}</span>\r\n </div>\r\n\r\n <div *ngIf=\"hasChildren\" class=\"expand-container\">\r\n <fa-icon [icon]=\"expandIcon\"></fa-icon>\r\n </div>\r\n</li>", styles: [":host li{display:inline-flex;align-items:center;padding:0 1.25em 0 1.5em;cursor:pointer;width:calc(100% - 2.75em);justify-content:space-between;transition:color .5s ease}:host li,:host-context(.sfc-default-theme) :host li{color:#545e61}:host-context(.sfc-dark-theme) :host li{color:#fff}:host li .expand-container{visibility:hidden;opacity:0;transition:color .5s ease;width:0}:host li .expand-container>fa-icon{font-weight:700}:host li .item-container{display:inline-flex;align-items:center}:host li .item-container .item{width:2em;height:1.9em;display:flex;justify-content:center;border-radius:.7em;align-items:center}:host li .item-container .item a{border-radius:.45em;display:flex;align-items:center;justify-content:center;font-size:1.3em;padding:.3em;transition:background-color .5s ease,color .5s ease,margin-right .3s ease-in-out}:host li .item-container .item a>fa-icon{font-size:1em}:host li .item-container .label{font-weight:700;font-size:.9em;visibility:hidden;opacity:0;transition:color .5s,visibility .3s,opacity .5s ease-in-out;-webkit-user-select:none;user-select:none;width:0}:host.active li,:host:hover li{color:#fff}:host.active li .item-container .item a,:host:hover li .item-container .item a{background-color:#ffce54;box-shadow:0 .3em 1em #2bbbad1a}:host.active li .item-container .label,:host:hover li .item-container .label{color:#ffce54}:host.active li .expand-container,:host:hover li .expand-container{color:#ffce54}:host.open li .item-container .item a{margin-right:1em}:host.open li .item-container .label{visibility:visible;opacity:1;width:auto}:host.open li .expand-container{width:auto;visibility:visible;opacity:1}:host :host-context(.children) li{margin:.2em 0}:host :host-context(.children) li .item-container .item a{padding:.3em;border-radius:.35em}:host :host-context(.children) li .item-container .item a>fa-icon{font-size:.5em}:host :host-context(.children) li .item-container .label{font-size:.8em}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] });
265
+ SideMenuItemContentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SideMenuItemContentComponent, selector: "sfc-side-menu-item-content", inputs: { item: "item", active: "active", open: "open", openParent: "openParent", hasChildren: "hasChildren" }, outputs: { selectItem: "selectItem" }, host: { listeners: { "click": "onClick()" }, properties: { "class.active": "this.active", "class.open": "this.open" } }, ngImport: i0, template: "<li>\r\n <div class=\"item-container\">\r\n <div class=\"item\">\r\n <a>\r\n <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\"></fa-icon>\r\n </a>\r\n </div>\r\n <span class=\"label\">{{item.label}}</span>\r\n </div>\r\n\r\n <div *ngIf=\"hasChildren\" class=\"expand-container\">\r\n <fa-icon [icon]=\"expandIcon\"></fa-icon>\r\n </div>\r\n</li>", styles: [":host li{display:inline-flex;align-items:center;padding:0 1.25em 0 1.5em;cursor:pointer;width:calc(100% - 2.75em);justify-content:space-between;transition:color .5s ease}:host li,:host-context(.sfc-default-theme) :host li{color:#545e61}:host-context(.sfc-dark-theme) :host li{color:#fff}:host li .expand-container{visibility:hidden;opacity:0;transition:color .5s ease;width:0;font-size:.8em;margin-left:1em}:host li .expand-container>fa-icon{font-weight:700}:host li .item-container{display:inline-flex;align-items:center}:host li .item-container .item{width:2em;height:1.9em;display:flex;justify-content:center;border-radius:.7em;align-items:center}:host li .item-container .item a{border-radius:.45em;display:flex;align-items:center;justify-content:center;font-size:1.3em;padding:.3em;transition:background-color .5s ease,color .5s ease,margin-right .3s ease-in-out}:host li .item-container .item a>fa-icon{font-size:1em}:host li .item-container .label{font-weight:700;font-size:.9em;visibility:hidden;opacity:0;transition:color .5s,visibility .3s,opacity .5s ease-in-out;-webkit-user-select:none;user-select:none;width:0}:host.active li{color:#fff}:host.active li .item-container .item a{background-color:#ffce54;box-shadow:0 .3em 1em #2bbbad1a}:host.active li .item-container .label{color:#ffce54}:host.active li .expand-container{color:#ffce54}:host.open li .item-container .item a{margin-right:1em}:host.open li .item-container .label{visibility:visible;opacity:1;width:auto}:host.open li .expand-container{width:auto;visibility:visible;opacity:1}:host :host-context(.children) li{margin:.2em 0}:host :host-context(.children) li .item-container .item a{padding:.3em;border-radius:.35em}:host :host-context(.children) li .item-container .item a>fa-icon{font-size:.5em}:host :host-context(.children) li .item-container .label{font-size:.8em}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] });
251
266
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SideMenuItemContentComponent, decorators: [{
252
267
  type: Component,
253
- args: [{ selector: 'sfc-side-menu-item-content', template: "<li>\r\n <div class=\"item-container\">\r\n <div class=\"item\">\r\n <a>\r\n <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\"></fa-icon>\r\n </a>\r\n </div>\r\n <span class=\"label\">{{item.label}}</span>\r\n </div>\r\n\r\n <div *ngIf=\"hasChildren\" class=\"expand-container\">\r\n <fa-icon [icon]=\"expandIcon\"></fa-icon>\r\n </div>\r\n</li>", styles: [":host li{display:inline-flex;align-items:center;padding:0 1.25em 0 1.5em;cursor:pointer;width:calc(100% - 2.75em);justify-content:space-between;transition:color .5s ease}:host li,:host-context(.sfc-default-theme) :host li{color:#545e61}:host-context(.sfc-dark-theme) :host li{color:#fff}:host li .expand-container{visibility:hidden;opacity:0;transition:color .5s ease;width:0}:host li .expand-container>fa-icon{font-weight:700}:host li .item-container{display:inline-flex;align-items:center}:host li .item-container .item{width:2em;height:1.9em;display:flex;justify-content:center;border-radius:.7em;align-items:center}:host li .item-container .item a{border-radius:.45em;display:flex;align-items:center;justify-content:center;font-size:1.3em;padding:.3em;transition:background-color .5s ease,color .5s ease,margin-right .3s ease-in-out}:host li .item-container .item a>fa-icon{font-size:1em}:host li .item-container .label{font-weight:700;font-size:.9em;visibility:hidden;opacity:0;transition:color .5s,visibility .3s,opacity .5s ease-in-out;-webkit-user-select:none;user-select:none;width:0}:host.active li,:host:hover li{color:#fff}:host.active li .item-container .item a,:host:hover li .item-container .item a{background-color:#ffce54;box-shadow:0 .3em 1em #2bbbad1a}:host.active li .item-container .label,:host:hover li .item-container .label{color:#ffce54}:host.active li .expand-container,:host:hover li .expand-container{color:#ffce54}:host.open li .item-container .item a{margin-right:1em}:host.open li .item-container .label{visibility:visible;opacity:1;width:auto}:host.open li .expand-container{width:auto;visibility:visible;opacity:1}:host :host-context(.children) li{margin:.2em 0}:host :host-context(.children) li .item-container .item a{padding:.3em;border-radius:.35em}:host :host-context(.children) li .item-container .item a>fa-icon{font-size:.5em}:host :host-context(.children) li .item-container .label{font-size:.8em}\n"] }]
268
+ args: [{ selector: 'sfc-side-menu-item-content', template: "<li>\r\n <div class=\"item-container\">\r\n <div class=\"item\">\r\n <a>\r\n <fa-icon *ngIf=\"item.icon\" [icon]=\"item.icon\"></fa-icon>\r\n </a>\r\n </div>\r\n <span class=\"label\">{{item.label}}</span>\r\n </div>\r\n\r\n <div *ngIf=\"hasChildren\" class=\"expand-container\">\r\n <fa-icon [icon]=\"expandIcon\"></fa-icon>\r\n </div>\r\n</li>", styles: [":host li{display:inline-flex;align-items:center;padding:0 1.25em 0 1.5em;cursor:pointer;width:calc(100% - 2.75em);justify-content:space-between;transition:color .5s ease}:host li,:host-context(.sfc-default-theme) :host li{color:#545e61}:host-context(.sfc-dark-theme) :host li{color:#fff}:host li .expand-container{visibility:hidden;opacity:0;transition:color .5s ease;width:0;font-size:.8em;margin-left:1em}:host li .expand-container>fa-icon{font-weight:700}:host li .item-container{display:inline-flex;align-items:center}:host li .item-container .item{width:2em;height:1.9em;display:flex;justify-content:center;border-radius:.7em;align-items:center}:host li .item-container .item a{border-radius:.45em;display:flex;align-items:center;justify-content:center;font-size:1.3em;padding:.3em;transition:background-color .5s ease,color .5s ease,margin-right .3s ease-in-out}:host li .item-container .item a>fa-icon{font-size:1em}:host li .item-container .label{font-weight:700;font-size:.9em;visibility:hidden;opacity:0;transition:color .5s,visibility .3s,opacity .5s ease-in-out;-webkit-user-select:none;user-select:none;width:0}:host.active li{color:#fff}:host.active li .item-container .item a{background-color:#ffce54;box-shadow:0 .3em 1em #2bbbad1a}:host.active li .item-container .label{color:#ffce54}:host.active li .expand-container{color:#ffce54}:host.open li .item-container .item a{margin-right:1em}:host.open li .item-container .label{visibility:visible;opacity:1;width:auto}:host.open li .expand-container{width:auto;visibility:visible;opacity:1}:host :host-context(.children) li{margin:.2em 0}:host :host-context(.children) li .item-container .item a{padding:.3em;border-radius:.35em}:host :host-context(.children) li .item-container .item a>fa-icon{font-size:.5em}:host :host-context(.children) li .item-container .label{font-size:.8em}\n"] }]
254
269
  }], propDecorators: { item: [{
255
270
  type: Input
256
271
  }], active: [{
@@ -277,8 +292,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
277
292
  class SideMenuItemComponent {
278
293
  constructor() {
279
294
  this.item = {
280
- icon: undefined,
295
+ id: CommonConstants.EMPTY_STRING,
281
296
  label: CommonConstants.EMPTY_STRING,
297
+ icon: null,
282
298
  type: SideMenuItemType.Item,
283
299
  items: [],
284
300
  active: false
@@ -288,7 +304,7 @@ class SideMenuItemComponent {
288
304
  this.openParent = false;
289
305
  }
290
306
  get hasActiveChild() {
291
- return isDefined(firstOrDefault(this.item.items, (item) => item.active));
307
+ return isDefined(firstOrDefault(this.item.items, (item) => item.active || false));
292
308
  }
293
309
  hasChildren(item) {
294
310
  return any(item.items);
@@ -296,10 +312,10 @@ class SideMenuItemComponent {
296
312
  isActive(item) {
297
313
  return this.hasChildren(item)
298
314
  ? this.hasActiveChild && !this.openParent
299
- : item.active;
315
+ : item.active || false;
300
316
  }
301
317
  ngOnInit() {
302
- this.openParent = this.hasActiveChild;
318
+ this.openParent = this.hasActiveChild || (this.item.open || false);
303
319
  }
304
320
  onParentClick(item) {
305
321
  this.openParent = !this.openParent;
@@ -375,11 +391,14 @@ class SideMenuComponent {
375
391
  this.selected = new EventEmitter();
376
392
  }
377
393
  get open() {
378
- return this.model.open;
394
+ return this.model.open || !this.switch;
379
395
  }
380
396
  set open(value) {
381
397
  this.model.open = value;
382
398
  }
399
+ get switch() {
400
+ return isDefined(this.model.switch) ? this.model.switch : true;
401
+ }
383
402
  onItemSelect(item) {
384
403
  // handle only items without childrens
385
404
  if (!any(item.items)) {
@@ -394,10 +413,10 @@ class SideMenuComponent {
394
413
  }
395
414
  }
396
415
  SideMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SideMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
397
- SideMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SideMenuComponent, selector: "sfc-side-menu", inputs: { model: "model" }, outputs: { selected: "selected" }, host: { properties: { "class.open": "this.open" } }, ngImport: i0, template: "<div class=\"container\">\r\n <ul>\r\n <sfc-side-menu-header [open]=\"open\" (toggle)=\"open =!open\"></sfc-side-menu-header>\r\n\r\n <ng-container *ngFor=\"let item of model.items\" [ngSwitch]=\"item.type\">\r\n <sfc-side-menu-item *ngSwitchCase=\"SideMenuItemType.Item\" [item]=\"item\" [open]=\"open\"\r\n (selectItem)=\"onItemSelect($event)\">\r\n </sfc-side-menu-item>\r\n\r\n <sfc-side-menu-title *ngSwitchCase=\"SideMenuItemType.Title\" [label]=\"item.label\" [open]=\"open\">\r\n </sfc-side-menu-title>\r\n </ng-container>\r\n </ul>\r\n</div>", styles: [":host .container{width:5em;height:inherit;overflow:hidden;transition:background .5s ease,width .5s ease-in-out}:host .container ul{margin:0;padding:0;list-style:none;overflow:hidden;display:flex;flex-direction:column}:host.open .container{width:11.25em}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: SideMenuHeaderComponent, selector: "sfc-side-menu-header", inputs: ["label", "open"], outputs: ["toggle"] }, { kind: "component", type: SideMenuItemComponent, selector: "sfc-side-menu-item", inputs: ["item", "open"], outputs: ["selectItem"] }, { kind: "component", type: SideMenuTitleComponent, selector: "sfc-side-menu-title", inputs: ["label", "open"] }] });
416
+ SideMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: SideMenuComponent, selector: "sfc-side-menu", inputs: { model: "model" }, outputs: { selected: "selected" }, host: { properties: { "class.open": "this.open", "class.switch": "this.switch" } }, ngImport: i0, template: "<div class=\"container\">\r\n <ul>\r\n <sfc-side-menu-header [label]=\"model.label\" [open]=\"open\" [switch]=\"switch\" (toggle)=\"open =!open\">\r\n </sfc-side-menu-header>\r\n\r\n <ng-container *ngFor=\"let item of model.items\" [ngSwitch]=\"item.type\">\r\n <sfc-side-menu-item *ngSwitchCase=\"SideMenuItemType.Item\" [item]=\"item\" [open]=\"open\"\r\n (selectItem)=\"onItemSelect($event)\">\r\n </sfc-side-menu-item>\r\n\r\n <sfc-side-menu-title *ngSwitchCase=\"SideMenuItemType.Title\" [label]=\"item.label\" [open]=\"open\">\r\n </sfc-side-menu-title>\r\n </ng-container>\r\n </ul>\r\n</div>", styles: [":host .container{width:5em;height:inherit;overflow:hidden}:host .container ul{margin:0;padding:0;list-style:none;overflow:hidden;display:flex;flex-direction:column}:host.open .container{width:11.25em}:host.switch .container{transition:background .5s ease,width .5s ease-in-out}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: SideMenuHeaderComponent, selector: "sfc-side-menu-header", inputs: ["label", "switch", "open"], outputs: ["toggle"] }, { kind: "component", type: SideMenuItemComponent, selector: "sfc-side-menu-item", inputs: ["item", "open"], outputs: ["selectItem"] }, { kind: "component", type: SideMenuTitleComponent, selector: "sfc-side-menu-title", inputs: ["label", "open"] }] });
398
417
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: SideMenuComponent, decorators: [{
399
418
  type: Component,
400
- args: [{ selector: 'sfc-side-menu', template: "<div class=\"container\">\r\n <ul>\r\n <sfc-side-menu-header [open]=\"open\" (toggle)=\"open =!open\"></sfc-side-menu-header>\r\n\r\n <ng-container *ngFor=\"let item of model.items\" [ngSwitch]=\"item.type\">\r\n <sfc-side-menu-item *ngSwitchCase=\"SideMenuItemType.Item\" [item]=\"item\" [open]=\"open\"\r\n (selectItem)=\"onItemSelect($event)\">\r\n </sfc-side-menu-item>\r\n\r\n <sfc-side-menu-title *ngSwitchCase=\"SideMenuItemType.Title\" [label]=\"item.label\" [open]=\"open\">\r\n </sfc-side-menu-title>\r\n </ng-container>\r\n </ul>\r\n</div>", styles: [":host .container{width:5em;height:inherit;overflow:hidden;transition:background .5s ease,width .5s ease-in-out}:host .container ul{margin:0;padding:0;list-style:none;overflow:hidden;display:flex;flex-direction:column}:host.open .container{width:11.25em}\n"] }]
419
+ args: [{ selector: 'sfc-side-menu', template: "<div class=\"container\">\r\n <ul>\r\n <sfc-side-menu-header [label]=\"model.label\" [open]=\"open\" [switch]=\"switch\" (toggle)=\"open =!open\">\r\n </sfc-side-menu-header>\r\n\r\n <ng-container *ngFor=\"let item of model.items\" [ngSwitch]=\"item.type\">\r\n <sfc-side-menu-item *ngSwitchCase=\"SideMenuItemType.Item\" [item]=\"item\" [open]=\"open\"\r\n (selectItem)=\"onItemSelect($event)\">\r\n </sfc-side-menu-item>\r\n\r\n <sfc-side-menu-title *ngSwitchCase=\"SideMenuItemType.Title\" [label]=\"item.label\" [open]=\"open\">\r\n </sfc-side-menu-title>\r\n </ng-container>\r\n </ul>\r\n</div>", styles: [":host .container{width:5em;height:inherit;overflow:hidden}:host .container ul{margin:0;padding:0;list-style:none;overflow:hidden;display:flex;flex-direction:column}:host.open .container{width:11.25em}:host.switch .container{transition:background .5s ease,width .5s ease-in-out}\n"] }]
401
420
  }], propDecorators: { model: [{
402
421
  type: Input
403
422
  }], selected: [{
@@ -405,23 +424,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
405
424
  }], open: [{
406
425
  type: HostBinding,
407
426
  args: ['class.' + UIClass.Open]
427
+ }], switch: [{
428
+ type: HostBinding,
429
+ args: [`class.${SideMenuConstants.CSS_SWITCH_CLASS}`]
408
430
  }] } });
409
431
 
410
432
  class DropdownMenuItemComponent {
411
433
  constructor() {
434
+ /* Inputs */
412
435
  this.item = { label: CommonConstants.EMPTY_STRING };
413
436
  }
437
+ /* End Inputs */
438
+ /* Host bindings */
414
439
  get _active() { return this.item.active || false; }
440
+ /* End Host bindings */
441
+ /* Host listeners */
415
442
  click() {
416
443
  if (this.item.click)
417
444
  this.item.click(this.item);
418
445
  }
419
446
  }
420
447
  DropdownMenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DropdownMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
421
- DropdownMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: DropdownMenuItemComponent, selector: "sfc-dropdown-menu-item", inputs: { item: "item" }, host: { listeners: { "click": "click()" }, properties: { "class.active": "this._active" } }, ngImport: i0, template: "<li>\r\n <sfc-icon [icon]=\"item.icon\" [imageSrc]=\"item.image\"></sfc-icon>\r\n <a>{{item.label}}</a>\r\n</li>\r\n\r\n<sfc-delimeter *ngIf=\"item.delimeter\"></sfc-delimeter>", styles: [":host{display:flex;flex-direction:column;padding:.1em 0}:host li{color:#545e61;display:flex;align-items:center;flex-wrap:wrap;padding:.4em;border:.0063em solid transparent;border-radius:.31em;font-weight:700;font-size:.8em;-webkit-user-select:none;user-select:none;transition:color .5s ease,border-color .5s ease,background .5s ease}:host li:hover,:host li:focus-within{background:#f5f7fa;border-color:#f5f7fa;color:#2bbbad;cursor:pointer;outline:none}:host li sfc-icon{padding-right:.625em;width:10%}:host.active li{background:#e6e9ed;border-color:#e6e9ed;color:#2bbbad}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }, { kind: "component", type: i3.IconComponent, selector: "sfc-icon", inputs: ["icon", "imageSrc"] }] });
448
+ DropdownMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: DropdownMenuItemComponent, selector: "sfc-dropdown-menu-item", inputs: { item: "item" }, host: { listeners: { "click": "click()" }, properties: { "class.active": "this._active" } }, ngImport: i0, template: "<li>\r\n <sfc-icon [icon]=\"item.icon\" [imageSrc]=\"item.image\"></sfc-icon>\r\n <a>{{item.label}}</a>\r\n</li>\r\n\r\n<sfc-delimeter *ngIf=\"item.delimeter\"></sfc-delimeter>", styles: [":host{display:flex;flex-direction:column;padding:.1em 0}:host li{color:#545e61;display:flex;align-items:center;padding:.4em;border:.0063em solid transparent;border-radius:.31em;font-weight:700;font-size:.8em;-webkit-user-select:none;user-select:none;transition:color .5s ease,border-color .5s ease,background .5s ease}:host li:hover,:host li:focus-within{background:#f5f7fa;border-color:#f5f7fa;color:#2bbbad;cursor:pointer;outline:none}:host li sfc-icon{padding-right:.625em;width:10%}:host.active li{background:#e6e9ed;border-color:#e6e9ed;color:#2bbbad}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }, { kind: "component", type: i3.IconComponent, selector: "sfc-icon", inputs: ["icon", "imageSrc"] }] });
422
449
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DropdownMenuItemComponent, decorators: [{
423
450
  type: Component,
424
- args: [{ selector: 'sfc-dropdown-menu-item', template: "<li>\r\n <sfc-icon [icon]=\"item.icon\" [imageSrc]=\"item.image\"></sfc-icon>\r\n <a>{{item.label}}</a>\r\n</li>\r\n\r\n<sfc-delimeter *ngIf=\"item.delimeter\"></sfc-delimeter>", styles: [":host{display:flex;flex-direction:column;padding:.1em 0}:host li{color:#545e61;display:flex;align-items:center;flex-wrap:wrap;padding:.4em;border:.0063em solid transparent;border-radius:.31em;font-weight:700;font-size:.8em;-webkit-user-select:none;user-select:none;transition:color .5s ease,border-color .5s ease,background .5s ease}:host li:hover,:host li:focus-within{background:#f5f7fa;border-color:#f5f7fa;color:#2bbbad;cursor:pointer;outline:none}:host li sfc-icon{padding-right:.625em;width:10%}:host.active li{background:#e6e9ed;border-color:#e6e9ed;color:#2bbbad}\n"] }]
451
+ args: [{ selector: 'sfc-dropdown-menu-item', template: "<li>\r\n <sfc-icon [icon]=\"item.icon\" [imageSrc]=\"item.image\"></sfc-icon>\r\n <a>{{item.label}}</a>\r\n</li>\r\n\r\n<sfc-delimeter *ngIf=\"item.delimeter\"></sfc-delimeter>", styles: [":host{display:flex;flex-direction:column;padding:.1em 0}:host li{color:#545e61;display:flex;align-items:center;padding:.4em;border:.0063em solid transparent;border-radius:.31em;font-weight:700;font-size:.8em;-webkit-user-select:none;user-select:none;transition:color .5s ease,border-color .5s ease,background .5s ease}:host li:hover,:host li:focus-within{background:#f5f7fa;border-color:#f5f7fa;color:#2bbbad;cursor:pointer;outline:none}:host li sfc-icon{padding-right:.625em;width:10%}:host.active li{background:#e6e9ed;border-color:#e6e9ed;color:#2bbbad}\n"] }]
425
452
  }], propDecorators: { item: [{
426
453
  type: Input
427
454
  }], _active: [{
@@ -489,7 +516,7 @@ class DropdownMenuComponent {
489
516
  }
490
517
  }
491
518
  DropdownMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: DropdownMenuComponent, deps: [{ token: i3.ResizeService }, { token: WINDOW }], target: i0.ɵɵFactoryTarget.Component });
492
- DropdownMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: DropdownMenuComponent, selector: "sfc-dropdown-menu", inputs: { items: "items", icon: "icon", defaultDots: "defaultDots", label: "label", hideOnClick: "hideOnClick", hideOnClickOutside: "hideOnClickOutside", bordered: "bordered", filled: "filled", position: "position", open: "open", autoResize: "autoResize" }, outputs: { selected: "selected" }, host: { properties: { "class.bordered": "this.bordered", "class.filled": "this.filled", "class": "this.position", "class.open": "this.open" } }, ngImport: i0, template: "<ul [sfcClickOutside]=\"hideOnClickOutside\" (action)=\"onClickOutside($event)\">\r\n <li>\r\n <div class=\"container\" (click)=\"toggle($event)\">\r\n <span *ngIf=\"label\">{{label}}</span>\r\n <fa-icon *ngIf=\"icon\" [icon]=\"icon\"></fa-icon>\r\n <sfc-dots *ngIf=\"showDots\" [open]=\"open\"></sfc-dots>\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <ul *ngIf=\"items.length\" [@openClose]=\"open\" class=\"dropdown-container\">\r\n <sfc-dropdown-menu-item *ngFor=\"let item of items\" [item]=\"item\" (click)=\"onClick(item, $event)\">\r\n </sfc-dropdown-menu-item>\r\n </ul>\r\n </li>\r\n</ul>", styles: [":host{display:inline-flex}:host ul{list-style:none;margin:0;padding-left:0}:host ul li{position:relative}:host ul li .container{display:flex;justify-content:center;align-items:center;cursor:pointer;transition:color .5s ease,background .5s ease;transition:color .5s ease;padding:.3em}:host ul li .container,:host-context(.sfc-default-theme) :host ul li .container{color:#545e61}:host-context(.sfc-dark-theme) :host ul li .container{color:#fff}:host ul li .container span,:host ul li .container fa-icon{font-size:.8em;font-weight:700}:host ul li .container span~fa-icon{margin-left:.3em}:host ul li .container:hover{color:#ffce54}:host ul li .dropdown-container{flex-direction:column;width:max-content;background:#fff;transition:color .5s ease;position:absolute;right:0;transition:opacity .5s ease;margin-top:1em;display:none;padding:.6em;border:.0063em solid #f5f7fa;border-radius:.1875em;box-shadow:0 .125em .625em;z-index:9999}:host ul li .dropdown-container,:host-context(.sfc-default-theme) :host ul li .dropdown-container{color:#e6e9ed}:host-context(.sfc-dark-theme) :host ul li .dropdown-container{color:#656d78}:host.open ul li .dropdown-container{display:flex}:host.bordered ul li .container{width:1.3em;height:1.3em;border:.1em solid;transition:border-color .5s ease;border-radius:.3em;padding:0}:host.bordered ul li .container,:host-context(.sfc-default-theme) :host.bordered ul li .container{border-color:#545e61}:host-context(.sfc-dark-theme) :host.bordered ul li .container{border-color:#fff}:host.bordered ul li .container:hover{border-color:#ffce54}:host.bordered ul li .container:hover ::ng-deep sfc-dots .dot{background:#ffce54}:host.filled ul li .container{width:1.3em;height:1.3em;border:.1em solid transparent;border-radius:1.3em;padding:0}:host.filled ul li .container sfc-dots ::ng-deep>.container>.dots-container>.dot{transition:background .5s ease}:host.filled ul li .container sfc-dots ::ng-deep>.container>.dots-container>.dot,:host-context(.sfc-default-theme) :host.filled ul li .container sfc-dots ::ng-deep>.container>.dots-container>.dot{background:#545e61}:host-context(.sfc-dark-theme) :host.filled ul li .container sfc-dots ::ng-deep>.container>.dots-container>.dot{background:#fff}:host.filled ul li .container:hover{background:#ffce54}:host.top ul li .dropdown-container{bottom:0;margin-bottom:2.18em;margin-top:0}:host.center ul li .dropdown-container{left:50%;transform:translate(-50%)}:host.left ul li .dropdown-container{right:0}:host.right ul li .dropdown-container{left:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.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: i3.ClickOutsideDirective, selector: "[sfcClickOutside]", inputs: ["sfcClickOutside"], outputs: ["action"] }, { kind: "component", type: i3.DotsComponent, selector: "sfc-dots", inputs: ["open", "direction"] }, { kind: "component", type: DropdownMenuItemComponent, selector: "sfc-dropdown-menu-item", inputs: ["item"] }], animations: [
519
+ DropdownMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: DropdownMenuComponent, selector: "sfc-dropdown-menu", inputs: { items: "items", icon: "icon", defaultDots: "defaultDots", label: "label", hideOnClick: "hideOnClick", hideOnClickOutside: "hideOnClickOutside", bordered: "bordered", filled: "filled", position: "position", open: "open", autoResize: "autoResize" }, outputs: { selected: "selected" }, host: { properties: { "class.bordered": "this.bordered", "class.filled": "this.filled", "class": "this.position", "class.open": "this.open" } }, ngImport: i0, template: "<ul [sfcClickOutside]=\"hideOnClickOutside\" (action)=\"onClickOutside($event)\">\r\n <li>\r\n <div class=\"container\" (click)=\"toggle($event)\">\r\n <span *ngIf=\"label\">{{label}}</span>\r\n <fa-icon *ngIf=\"icon\" [icon]=\"icon\"></fa-icon>\r\n <sfc-dots *ngIf=\"showDots\" [open]=\"open\"></sfc-dots>\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <ul *ngIf=\"items.length\" [@openClose]=\"open\" class=\"dropdown-container\">\r\n <sfc-dropdown-menu-item *ngFor=\"let item of items\" [item]=\"item\" (click)=\"onClick(item, $event)\">\r\n </sfc-dropdown-menu-item>\r\n </ul>\r\n </li>\r\n</ul>", styles: [":host{display:inline-flex}:host ul{list-style:none;margin:0;padding-left:0}:host ul li{position:relative}:host ul li .container{display:flex;justify-content:center;align-items:center;cursor:pointer;transition:color .5s ease,background .5s ease;transition:color .5s ease;padding:.3em}:host ul li .container,:host-context(.sfc-default-theme) :host ul li .container{color:#545e61}:host-context(.sfc-dark-theme) :host ul li .container{color:#fff}:host ul li .container span,:host ul li .container fa-icon{font-size:.8em;font-weight:700}:host ul li .container span~fa-icon{margin-left:.3em}:host ul li .container:hover{color:#ffce54}:host ul li .dropdown-container{flex-direction:column;width:max-content;background:#fff;transition:color .5s ease;position:absolute;right:0;transition:opacity .5s ease;margin-top:1em;display:none;padding:.6em;border:.0063em solid #f5f7fa;border-radius:.1875em;box-shadow:0 .125em .625em;z-index:9999}:host ul li .dropdown-container,:host-context(.sfc-default-theme) :host ul li .dropdown-container{color:#e6e9ed}:host-context(.sfc-dark-theme) :host ul li .dropdown-container{color:#656d78}:host.open ul li .dropdown-container{display:flex}:host.bordered ul li .container{width:1.3em;height:1.3em;border:.1em solid;transition:border-color .5s ease;border-radius:.3em;padding:0}:host.bordered ul li .container,:host-context(.sfc-default-theme) :host.bordered ul li .container{border-color:#545e61}:host-context(.sfc-dark-theme) :host.bordered ul li .container{border-color:#fff}:host.bordered ul li .container:hover{border-color:#ffce54}:host.bordered ul li .container:hover ::ng-deep sfc-dots .dot{background:#ffce54}:host.filled ul li .container{width:1.3em;height:1.3em;border:.1em solid transparent;border-radius:1.3em;padding:0}:host.filled ul li .container sfc-dots ::ng-deep>.container>.dots-container>sfc-dot{transition:background .5s ease}:host.filled ul li .container sfc-dots ::ng-deep>.container>.dots-container>sfc-dot,:host-context(.sfc-default-theme) :host.filled ul li .container sfc-dots ::ng-deep>.container>.dots-container>sfc-dot{background:#545e61}:host-context(.sfc-dark-theme) :host.filled ul li .container sfc-dots ::ng-deep>.container>.dots-container>sfc-dot{background:#fff}:host.filled ul li .container:hover{background:#ffce54}:host.filled ul li .container:hover sfc-dots ::ng-deep>.container>.dots-container>sfc-dot{transition:background .5s ease}:host.filled ul li .container:hover sfc-dots ::ng-deep>.container>.dots-container>sfc-dot,:host-context(.sfc-default-theme) :host.filled ul li .container:hover sfc-dots ::ng-deep>.container>.dots-container>sfc-dot{background:#fff}:host-context(.sfc-dark-theme) :host.filled ul li .container:hover sfc-dots ::ng-deep>.container>.dots-container>sfc-dot{background:#fff}:host.top ul li .dropdown-container{bottom:0;margin-bottom:2.18em;margin-top:0}:host.center ul li .dropdown-container{left:50%;transform:translate(-50%)}:host.left ul li .dropdown-container{right:0}:host.right ul li .dropdown-container{left:0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.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: i3.ClickOutsideDirective, selector: "[sfcClickOutside]", inputs: ["sfcClickOutside"], outputs: ["action"] }, { kind: "component", type: i3.DotsComponent, selector: "sfc-dots", inputs: ["open", "direction"] }, { kind: "component", type: DropdownMenuItemComponent, selector: "sfc-dropdown-menu-item", inputs: ["item"] }], animations: [
493
520
  trigger('openClose', [
494
521
  state('true', style({
495
522
  opacity: 1
@@ -516,7 +543,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
516
543
  animate('0.1s')
517
544
  ])
518
545
  ])
519
- ], template: "<ul [sfcClickOutside]=\"hideOnClickOutside\" (action)=\"onClickOutside($event)\">\r\n <li>\r\n <div class=\"container\" (click)=\"toggle($event)\">\r\n <span *ngIf=\"label\">{{label}}</span>\r\n <fa-icon *ngIf=\"icon\" [icon]=\"icon\"></fa-icon>\r\n <sfc-dots *ngIf=\"showDots\" [open]=\"open\"></sfc-dots>\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <ul *ngIf=\"items.length\" [@openClose]=\"open\" class=\"dropdown-container\">\r\n <sfc-dropdown-menu-item *ngFor=\"let item of items\" [item]=\"item\" (click)=\"onClick(item, $event)\">\r\n </sfc-dropdown-menu-item>\r\n </ul>\r\n </li>\r\n</ul>", styles: [":host{display:inline-flex}:host ul{list-style:none;margin:0;padding-left:0}:host ul li{position:relative}:host ul li .container{display:flex;justify-content:center;align-items:center;cursor:pointer;transition:color .5s ease,background .5s ease;transition:color .5s ease;padding:.3em}:host ul li .container,:host-context(.sfc-default-theme) :host ul li .container{color:#545e61}:host-context(.sfc-dark-theme) :host ul li .container{color:#fff}:host ul li .container span,:host ul li .container fa-icon{font-size:.8em;font-weight:700}:host ul li .container span~fa-icon{margin-left:.3em}:host ul li .container:hover{color:#ffce54}:host ul li .dropdown-container{flex-direction:column;width:max-content;background:#fff;transition:color .5s ease;position:absolute;right:0;transition:opacity .5s ease;margin-top:1em;display:none;padding:.6em;border:.0063em solid #f5f7fa;border-radius:.1875em;box-shadow:0 .125em .625em;z-index:9999}:host ul li .dropdown-container,:host-context(.sfc-default-theme) :host ul li .dropdown-container{color:#e6e9ed}:host-context(.sfc-dark-theme) :host ul li .dropdown-container{color:#656d78}:host.open ul li .dropdown-container{display:flex}:host.bordered ul li .container{width:1.3em;height:1.3em;border:.1em solid;transition:border-color .5s ease;border-radius:.3em;padding:0}:host.bordered ul li .container,:host-context(.sfc-default-theme) :host.bordered ul li .container{border-color:#545e61}:host-context(.sfc-dark-theme) :host.bordered ul li .container{border-color:#fff}:host.bordered ul li .container:hover{border-color:#ffce54}:host.bordered ul li .container:hover ::ng-deep sfc-dots .dot{background:#ffce54}:host.filled ul li .container{width:1.3em;height:1.3em;border:.1em solid transparent;border-radius:1.3em;padding:0}:host.filled ul li .container sfc-dots ::ng-deep>.container>.dots-container>.dot{transition:background .5s ease}:host.filled ul li .container sfc-dots ::ng-deep>.container>.dots-container>.dot,:host-context(.sfc-default-theme) :host.filled ul li .container sfc-dots ::ng-deep>.container>.dots-container>.dot{background:#545e61}:host-context(.sfc-dark-theme) :host.filled ul li .container sfc-dots ::ng-deep>.container>.dots-container>.dot{background:#fff}:host.filled ul li .container:hover{background:#ffce54}:host.top ul li .dropdown-container{bottom:0;margin-bottom:2.18em;margin-top:0}:host.center ul li .dropdown-container{left:50%;transform:translate(-50%)}:host.left ul li .dropdown-container{right:0}:host.right ul li .dropdown-container{left:0}\n"] }]
546
+ ], template: "<ul [sfcClickOutside]=\"hideOnClickOutside\" (action)=\"onClickOutside($event)\">\r\n <li>\r\n <div class=\"container\" (click)=\"toggle($event)\">\r\n <span *ngIf=\"label\">{{label}}</span>\r\n <fa-icon *ngIf=\"icon\" [icon]=\"icon\"></fa-icon>\r\n <sfc-dots *ngIf=\"showDots\" [open]=\"open\"></sfc-dots>\r\n <ng-content></ng-content>\r\n </div>\r\n\r\n <ul *ngIf=\"items.length\" [@openClose]=\"open\" class=\"dropdown-container\">\r\n <sfc-dropdown-menu-item *ngFor=\"let item of items\" [item]=\"item\" (click)=\"onClick(item, $event)\">\r\n </sfc-dropdown-menu-item>\r\n </ul>\r\n </li>\r\n</ul>", styles: [":host{display:inline-flex}:host ul{list-style:none;margin:0;padding-left:0}:host ul li{position:relative}:host ul li .container{display:flex;justify-content:center;align-items:center;cursor:pointer;transition:color .5s ease,background .5s ease;transition:color .5s ease;padding:.3em}:host ul li .container,:host-context(.sfc-default-theme) :host ul li .container{color:#545e61}:host-context(.sfc-dark-theme) :host ul li .container{color:#fff}:host ul li .container span,:host ul li .container fa-icon{font-size:.8em;font-weight:700}:host ul li .container span~fa-icon{margin-left:.3em}:host ul li .container:hover{color:#ffce54}:host ul li .dropdown-container{flex-direction:column;width:max-content;background:#fff;transition:color .5s ease;position:absolute;right:0;transition:opacity .5s ease;margin-top:1em;display:none;padding:.6em;border:.0063em solid #f5f7fa;border-radius:.1875em;box-shadow:0 .125em .625em;z-index:9999}:host ul li .dropdown-container,:host-context(.sfc-default-theme) :host ul li .dropdown-container{color:#e6e9ed}:host-context(.sfc-dark-theme) :host ul li .dropdown-container{color:#656d78}:host.open ul li .dropdown-container{display:flex}:host.bordered ul li .container{width:1.3em;height:1.3em;border:.1em solid;transition:border-color .5s ease;border-radius:.3em;padding:0}:host.bordered ul li .container,:host-context(.sfc-default-theme) :host.bordered ul li .container{border-color:#545e61}:host-context(.sfc-dark-theme) :host.bordered ul li .container{border-color:#fff}:host.bordered ul li .container:hover{border-color:#ffce54}:host.bordered ul li .container:hover ::ng-deep sfc-dots .dot{background:#ffce54}:host.filled ul li .container{width:1.3em;height:1.3em;border:.1em solid transparent;border-radius:1.3em;padding:0}:host.filled ul li .container sfc-dots ::ng-deep>.container>.dots-container>sfc-dot{transition:background .5s ease}:host.filled ul li .container sfc-dots ::ng-deep>.container>.dots-container>sfc-dot,:host-context(.sfc-default-theme) :host.filled ul li .container sfc-dots ::ng-deep>.container>.dots-container>sfc-dot{background:#545e61}:host-context(.sfc-dark-theme) :host.filled ul li .container sfc-dots ::ng-deep>.container>.dots-container>sfc-dot{background:#fff}:host.filled ul li .container:hover{background:#ffce54}:host.filled ul li .container:hover sfc-dots ::ng-deep>.container>.dots-container>sfc-dot{transition:background .5s ease}:host.filled ul li .container:hover sfc-dots ::ng-deep>.container>.dots-container>sfc-dot,:host-context(.sfc-default-theme) :host.filled ul li .container:hover sfc-dots ::ng-deep>.container>.dots-container>sfc-dot{background:#fff}:host-context(.sfc-dark-theme) :host.filled ul li .container:hover sfc-dots ::ng-deep>.container>.dots-container>sfc-dot{background:#fff}:host.top ul li .dropdown-container{bottom:0;margin-bottom:2.18em;margin-top:0}:host.center ul li .dropdown-container{left:50%;transform:translate(-50%)}:host.left ul li .dropdown-container{right:0}:host.right ul li .dropdown-container{left:0}\n"] }]
520
547
  }], ctorParameters: function () { return [{ type: i3.ResizeService }, { type: Window, decorators: [{
521
548
  type: Inject,
522
549
  args: [WINDOW]
@@ -607,6 +634,60 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
607
634
  type: Output
608
635
  }] } });
609
636
 
637
+ class RouterMenuItemComponent {
638
+ constructor() {
639
+ this.item = { id: CommonConstants.EMPTY_STRING, label: CommonConstants.EMPTY_STRING, selected: false };
640
+ }
641
+ get _selected() {
642
+ return this.item.selected ?? false;
643
+ }
644
+ click() {
645
+ if (this.item.click)
646
+ this.item.click(this.item);
647
+ }
648
+ }
649
+ RouterMenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: RouterMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
650
+ RouterMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: RouterMenuItemComponent, selector: "sfc-router-menu-item", inputs: { item: "item" }, host: { listeners: { "click": "click()" }, properties: { "class.selected": "this._selected" } }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"content\">\r\n <sfc-icon [icon]=\"item.icon\" [imageSrc]=\"item.image\"></sfc-icon>\r\n <span>{{item.label}}</span>\r\n </div>\r\n</div>", styles: [":host{cursor:pointer;-webkit-user-select:none;user-select:none}:host .container{display:flex;align-items:center;justify-content:center;height:100%}:host .container .content{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;transition:color .5s ease;padding:.5em .8em;width:100%}:host .container .content,:host-context(.sfc-default-theme) :host .container .content{color:#545e61}:host-context(.sfc-dark-theme) :host .container .content{color:#fff}:host .container .content span{font-size:.7em;font-weight:700}:host .container .content sfc-icon{margin-right:.5em}:host.selected .container .content,:host:hover .container .content{color:#ffce54}:host.selected .container .content{border:1px solid #ffce54;border-radius:3em;background:#ffce54;color:#fff}\n"], dependencies: [{ kind: "component", type: i3.IconComponent, selector: "sfc-icon", inputs: ["icon", "imageSrc"] }] });
651
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: RouterMenuItemComponent, decorators: [{
652
+ type: Component,
653
+ args: [{ selector: 'sfc-router-menu-item', template: "<div class=\"container\">\r\n <div class=\"content\">\r\n <sfc-icon [icon]=\"item.icon\" [imageSrc]=\"item.image\"></sfc-icon>\r\n <span>{{item.label}}</span>\r\n </div>\r\n</div>", styles: [":host{cursor:pointer;-webkit-user-select:none;user-select:none}:host .container{display:flex;align-items:center;justify-content:center;height:100%}:host .container .content{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;transition:color .5s ease;padding:.5em .8em;width:100%}:host .container .content,:host-context(.sfc-default-theme) :host .container .content{color:#545e61}:host-context(.sfc-dark-theme) :host .container .content{color:#fff}:host .container .content span{font-size:.7em;font-weight:700}:host .container .content sfc-icon{margin-right:.5em}:host.selected .container .content,:host:hover .container .content{color:#ffce54}:host.selected .container .content{border:1px solid #ffce54;border-radius:3em;background:#ffce54;color:#fff}\n"] }]
654
+ }], propDecorators: { item: [{
655
+ type: Input
656
+ }], _selected: [{
657
+ type: HostBinding,
658
+ args: ['class.' + UIClass.Selected]
659
+ }], click: [{
660
+ type: HostListener,
661
+ args: ['click']
662
+ }] } });
663
+
664
+ class RouterMenuComponent {
665
+ constructor() {
666
+ this.items = [];
667
+ this.selected = new EventEmitter();
668
+ }
669
+ ngOnInit() {
670
+ if (all(this.items, (item) => !(item.selected ?? false))) {
671
+ this.items[0].selected = true;
672
+ }
673
+ }
674
+ onClick(item) {
675
+ this.items.forEach((item) => item.selected = false);
676
+ item.selected = true;
677
+ this.selected.emit(item);
678
+ }
679
+ }
680
+ RouterMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: RouterMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
681
+ RouterMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: RouterMenuComponent, selector: "sfc-router-menu", inputs: { items: "items" }, outputs: { selected: "selected" }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"content\">\r\n <div class=\"items\">\r\n <sfc-router-menu-item *ngFor=\"let item of items\" [item]=\"item\" (click)=\"onClick(item)\">\r\n </sfc-router-menu-item>\r\n </div>\r\n </div> \r\n</div>", styles: [":host{width:100%}:host .container .content .items{display:flex;flex-wrap:wrap;justify-content:space-evenly;padding:.625em}:host .container .content .items sfc-router-menu-item{flex:50%}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: RouterMenuItemComponent, selector: "sfc-router-menu-item", inputs: ["item"] }] });
682
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: RouterMenuComponent, decorators: [{
683
+ type: Component,
684
+ args: [{ selector: 'sfc-router-menu', template: "<div class=\"container\">\r\n <div class=\"content\">\r\n <div class=\"items\">\r\n <sfc-router-menu-item *ngFor=\"let item of items\" [item]=\"item\" (click)=\"onClick(item)\">\r\n </sfc-router-menu-item>\r\n </div>\r\n </div> \r\n</div>", styles: [":host{width:100%}:host .container .content .items{display:flex;flex-wrap:wrap;justify-content:space-evenly;padding:.625em}:host .container .content .items sfc-router-menu-item{flex:50%}\n"] }]
685
+ }], propDecorators: { items: [{
686
+ type: Input
687
+ }], selected: [{
688
+ type: Output
689
+ }] } });
690
+
610
691
  var StarType;
611
692
  (function (StarType) {
612
693
  StarType["None"] = "none";
@@ -810,7 +891,7 @@ class AvatarComponent {
810
891
  * Progress colors model
811
892
  */
812
893
  this._progressModel = this.PROGRESS_MODEL_DEFAULT;
813
- this.data = this.DATA_MODEL_DEFAULT;
894
+ this._data = this.DATA_MODEL_DEFAULT;
814
895
  this.stars = false;
815
896
  this.starsValue = 0;
816
897
  this.badges = [];
@@ -821,19 +902,25 @@ class AvatarComponent {
821
902
  set progressModel(value) {
822
903
  this._progressModel = { ...this.PROGRESS_MODEL_DEFAULT, ...value };
823
904
  }
905
+ set data(value) {
906
+ this._data = { ...this.DATA_MODEL_DEFAULT, ...value };
907
+ if (!isDefined(this._data.image)) {
908
+ this._data.image = AvatarConstants.DATA_DEFAULT_IMAGE;
909
+ }
910
+ }
911
+ get data() { return this._data; }
824
912
  ngOnInit() {
825
913
  this.imageModel = new AvatarImageModel(this.radius, this.stroke, this.data.image);
826
- this.data = { ...this.DATA_MODEL_DEFAULT, ...this.data };
827
914
  }
828
915
  get strokeDashOffset() {
829
916
  return Math.round(this.imageModel.Circumference - (this.progress / 100 * this.imageModel.Circumference));
830
917
  }
831
918
  }
832
919
  AvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
833
- AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AvatarComponent, selector: "sfc-avatar", inputs: { radius: "radius", stroke: "stroke", progress: "progress", progressModel: "progressModel", data: "data", stars: "stars", starsValue: "starsValue", badges: "badges" }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"avatar-image-container\">\r\n <div class=\"avatar\" (mouseenter)=\"stroke = imageModel.Stroke * STROKE_HOVER_VALUE\"\r\n (mouseleave)=\"stroke = imageModel.Stroke\">\r\n\r\n <div class=\"avatar-image\">\r\n <svg [attr.height]=\"imageModel.Height\" [attr.width]=\"imageModel.Width\">\r\n <defs>\r\n <pattern id=\"{{imageModel.ImageId}}\" patternUnits=\"userSpaceOnUse\"\r\n [attr.height]=\"imageModel.Height\" [attr.width]=\"imageModel.Width\">\r\n <image [attr.height]=\"imageModel.Height\" [attr.width]=\"imageModel.Width\"\r\n [attr.xlink:href]=\"data.image\" preserveAspectRatio=\"xMidYMid slice\"></image>\r\n </pattern>\r\n </defs>\r\n <circle class=\"progress\" [attr.stroke]=\"progressModel.color\" [attr.stroke-width]=\"stroke\"\r\n fill=\"transparent\" [attr.r]=\"imageModel.NormalizedRadius\" [attr.cx]=\"radius\"\r\n [attr.cy]=\"radius\" />\r\n <circle class=\"progress\" [attr.stroke]=\"progressModel.filledColor\"\r\n [attr.stroke-dasharray]=\"imageModel.Circumference + ' ' + imageModel.Circumference\"\r\n [ngStyle]=\"{'stroke-dashoffset':strokeDashOffset}\" [attr.stroke-width]=\"stroke\"\r\n fill=\"transparent\" [attr.r]=\"imageModel.NormalizedRadius\" [attr.cx]=\"radius\"\r\n [attr.cy]=\"radius\" />\r\n\r\n <circle [attr.cx]=\"radius\" [attr.cy]=\"radius\" [attr.r]=\"imageModel.ImageRadius\"\r\n attr.fill=\"url('#{{imageModel.ImageId}}')\" />\r\n </svg>\r\n </div>\r\n\r\n <sfc-avatar-badge *ngFor=\"let badge of badges\" [model]=\"badge\" [radius]=\"radius\"\r\n [stroke]=\"imageModel.Stroke\" [normalizedRadius]=\"imageModel.NormalizedRadius\"\r\n [background]=\"progressModel.filledColor\">\r\n </sfc-avatar-badge>\r\n\r\n </div>\r\n\r\n <sfc-stars *ngIf=\"stars\" [value]=\"starsValue\"></sfc-stars>\r\n </div>\r\n\r\n <div class=\"avatar-data-container\">\r\n <div class=\"fullname\" [style.fontSize.px]=\"radius / FULLNAME_PART_VALUE\">\r\n <span>{{data.firstName}} {{data.lastName}}</span>\r\n </div>\r\n <div class=\"title\" [style.fontSize.px]=\"radius / TITLE_PART_VALUE\">\r\n <span>{{data.title}}</span>\r\n </div>\r\n </div>\r\n</div>", styles: [":host .container .avatar-image-container{display:flex;align-items:center;justify-content:center;flex-direction:column}:host .container .avatar-image-container .avatar{position:relative}:host .container .avatar-image-container .avatar .avatar-image{display:flex;align-items:center;justify-content:center;overflow:hidden}:host .container .avatar-image-container .avatar .avatar-image circle{transform-origin:50% 50%;transition:stroke-dashoffset .35s,stroke-width .3s}:host .container .avatar-image-container .avatar .avatar-image circle.progress{transform:rotate(-90deg)}:host .container .avatar-image-container sfc-stars{margin-top:.5em}:host .container .avatar-data-container{display:flex;flex-direction:column;align-items:center;font-size:1em;font-weight:700;-webkit-user-select:none;user-select:none}:host .container .avatar-data-container .fullname{transition:color .5s ease}:host .container .avatar-data-container .fullname,:host-context(.sfc-default-theme) :host .container .avatar-data-container .fullname{color:#545e61}:host-context(.sfc-dark-theme) :host .container .avatar-data-container .fullname{color:#f5f7fa}:host .container .avatar-data-container .title{color:#aab2bd}:host .container .avatar-data-container .fullname,:host .container .avatar-data-container .title{transition:color .5s ease}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: StarsComponent, selector: "sfc-stars", inputs: ["value", "count"] }, { kind: "component", type: AvatarBadgeComponent, selector: "sfc-avatar-badge", inputs: ["background", "model", "radius", "normalizedRadius", "stroke"] }] });
920
+ AvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: AvatarComponent, selector: "sfc-avatar", inputs: { radius: "radius", stroke: "stroke", progress: "progress", progressModel: "progressModel", data: "data", stars: "stars", starsValue: "starsValue", badges: "badges" }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"avatar-image-container\">\r\n <div class=\"avatar\" (mouseenter)=\"stroke = imageModel.Stroke * STROKE_HOVER_VALUE\"\r\n (mouseleave)=\"stroke = imageModel.Stroke\">\r\n\r\n <div class=\"avatar-image\">\r\n <svg [attr.height]=\"imageModel.Height\" [attr.width]=\"imageModel.Width\">\r\n <defs>\r\n <pattern id=\"{{imageModel.ImageId}}\" patternUnits=\"userSpaceOnUse\"\r\n [attr.height]=\"imageModel.Height\" [attr.width]=\"imageModel.Width\">\r\n <image [attr.height]=\"imageModel.Height\" [attr.width]=\"imageModel.Width\"\r\n [attr.xlink:href]=\"data.image\" preserveAspectRatio=\"xMidYMid slice\"></image>\r\n </pattern>\r\n </defs>\r\n <circle class=\"progress\" [attr.stroke]=\"progressModel.color\" [attr.stroke-width]=\"stroke\"\r\n fill=\"transparent\" [attr.r]=\"imageModel.NormalizedRadius\" [attr.cx]=\"radius\"\r\n [attr.cy]=\"radius\" />\r\n <circle class=\"progress\" [attr.stroke]=\"progressModel.filledColor\"\r\n [attr.stroke-dasharray]=\"imageModel.Circumference + ' ' + imageModel.Circumference\"\r\n [ngStyle]=\"{'stroke-dashoffset':strokeDashOffset}\" [attr.stroke-width]=\"stroke\"\r\n fill=\"transparent\" [attr.r]=\"imageModel.NormalizedRadius\" [attr.cx]=\"radius\"\r\n [attr.cy]=\"radius\" />\r\n\r\n <circle [attr.cx]=\"radius\" [attr.cy]=\"radius\" [attr.r]=\"imageModel.ImageRadius\"\r\n attr.fill=\"url('#{{imageModel.ImageId}}')\" />\r\n </svg>\r\n\r\n <ng-content></ng-content>\r\n </div> \r\n\r\n <sfc-avatar-badge *ngFor=\"let badge of badges\" [model]=\"badge\" [radius]=\"radius\"\r\n [stroke]=\"imageModel.Stroke\" [normalizedRadius]=\"imageModel.NormalizedRadius\"\r\n [background]=\"progressModel.filledColor\">\r\n </sfc-avatar-badge>\r\n </div>\r\n\r\n <sfc-stars *ngIf=\"stars\" [value]=\"starsValue\"></sfc-stars>\r\n </div>\r\n\r\n <div class=\"avatar-data-container\">\r\n <div class=\"fullname\" [style.fontSize.px]=\"radius / FULLNAME_PART_VALUE\">\r\n <span>{{data.firstName}} {{data.lastName}}</span>\r\n </div>\r\n <div class=\"title\" [style.fontSize.px]=\"radius / TITLE_PART_VALUE\">\r\n <span>{{data.title}}</span>\r\n </div>\r\n </div>\r\n</div>", styles: [":host .container .avatar-image-container{display:flex;align-items:center;justify-content:center;flex-direction:column}:host .container .avatar-image-container .avatar{position:relative}:host .container .avatar-image-container .avatar .avatar-image{display:flex;align-items:center;justify-content:center;overflow:hidden}:host .container .avatar-image-container .avatar .avatar-image circle{transform-origin:50% 50%;transition:stroke-dashoffset .35s,stroke-width .3s}:host .container .avatar-image-container .avatar .avatar-image circle.progress{transform:rotate(-90deg)}:host .container .avatar-data-container{display:flex;flex-direction:column;align-items:center;font-size:1em;font-weight:700;-webkit-user-select:none;user-select:none}:host .container .avatar-data-container .fullname{transition:color .5s ease}:host .container .avatar-data-container .fullname,:host-context(.sfc-default-theme) :host .container .avatar-data-container .fullname{color:#545e61}:host-context(.sfc-dark-theme) :host .container .avatar-data-container .fullname{color:#f5f7fa}:host .container .avatar-data-container .title{color:#aab2bd}:host .container .avatar-data-container .fullname,:host .container .avatar-data-container .title{transition:color .5s ease}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: StarsComponent, selector: "sfc-stars", inputs: ["value", "count"] }, { kind: "component", type: AvatarBadgeComponent, selector: "sfc-avatar-badge", inputs: ["background", "model", "radius", "normalizedRadius", "stroke"] }] });
834
921
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: AvatarComponent, decorators: [{
835
922
  type: Component,
836
- args: [{ selector: 'sfc-avatar', template: "<div class=\"container\">\r\n <div class=\"avatar-image-container\">\r\n <div class=\"avatar\" (mouseenter)=\"stroke = imageModel.Stroke * STROKE_HOVER_VALUE\"\r\n (mouseleave)=\"stroke = imageModel.Stroke\">\r\n\r\n <div class=\"avatar-image\">\r\n <svg [attr.height]=\"imageModel.Height\" [attr.width]=\"imageModel.Width\">\r\n <defs>\r\n <pattern id=\"{{imageModel.ImageId}}\" patternUnits=\"userSpaceOnUse\"\r\n [attr.height]=\"imageModel.Height\" [attr.width]=\"imageModel.Width\">\r\n <image [attr.height]=\"imageModel.Height\" [attr.width]=\"imageModel.Width\"\r\n [attr.xlink:href]=\"data.image\" preserveAspectRatio=\"xMidYMid slice\"></image>\r\n </pattern>\r\n </defs>\r\n <circle class=\"progress\" [attr.stroke]=\"progressModel.color\" [attr.stroke-width]=\"stroke\"\r\n fill=\"transparent\" [attr.r]=\"imageModel.NormalizedRadius\" [attr.cx]=\"radius\"\r\n [attr.cy]=\"radius\" />\r\n <circle class=\"progress\" [attr.stroke]=\"progressModel.filledColor\"\r\n [attr.stroke-dasharray]=\"imageModel.Circumference + ' ' + imageModel.Circumference\"\r\n [ngStyle]=\"{'stroke-dashoffset':strokeDashOffset}\" [attr.stroke-width]=\"stroke\"\r\n fill=\"transparent\" [attr.r]=\"imageModel.NormalizedRadius\" [attr.cx]=\"radius\"\r\n [attr.cy]=\"radius\" />\r\n\r\n <circle [attr.cx]=\"radius\" [attr.cy]=\"radius\" [attr.r]=\"imageModel.ImageRadius\"\r\n attr.fill=\"url('#{{imageModel.ImageId}}')\" />\r\n </svg>\r\n </div>\r\n\r\n <sfc-avatar-badge *ngFor=\"let badge of badges\" [model]=\"badge\" [radius]=\"radius\"\r\n [stroke]=\"imageModel.Stroke\" [normalizedRadius]=\"imageModel.NormalizedRadius\"\r\n [background]=\"progressModel.filledColor\">\r\n </sfc-avatar-badge>\r\n\r\n </div>\r\n\r\n <sfc-stars *ngIf=\"stars\" [value]=\"starsValue\"></sfc-stars>\r\n </div>\r\n\r\n <div class=\"avatar-data-container\">\r\n <div class=\"fullname\" [style.fontSize.px]=\"radius / FULLNAME_PART_VALUE\">\r\n <span>{{data.firstName}} {{data.lastName}}</span>\r\n </div>\r\n <div class=\"title\" [style.fontSize.px]=\"radius / TITLE_PART_VALUE\">\r\n <span>{{data.title}}</span>\r\n </div>\r\n </div>\r\n</div>", styles: [":host .container .avatar-image-container{display:flex;align-items:center;justify-content:center;flex-direction:column}:host .container .avatar-image-container .avatar{position:relative}:host .container .avatar-image-container .avatar .avatar-image{display:flex;align-items:center;justify-content:center;overflow:hidden}:host .container .avatar-image-container .avatar .avatar-image circle{transform-origin:50% 50%;transition:stroke-dashoffset .35s,stroke-width .3s}:host .container .avatar-image-container .avatar .avatar-image circle.progress{transform:rotate(-90deg)}:host .container .avatar-image-container sfc-stars{margin-top:.5em}:host .container .avatar-data-container{display:flex;flex-direction:column;align-items:center;font-size:1em;font-weight:700;-webkit-user-select:none;user-select:none}:host .container .avatar-data-container .fullname{transition:color .5s ease}:host .container .avatar-data-container .fullname,:host-context(.sfc-default-theme) :host .container .avatar-data-container .fullname{color:#545e61}:host-context(.sfc-dark-theme) :host .container .avatar-data-container .fullname{color:#f5f7fa}:host .container .avatar-data-container .title{color:#aab2bd}:host .container .avatar-data-container .fullname,:host .container .avatar-data-container .title{transition:color .5s ease}\n"] }]
923
+ args: [{ selector: 'sfc-avatar', template: "<div class=\"container\">\r\n <div class=\"avatar-image-container\">\r\n <div class=\"avatar\" (mouseenter)=\"stroke = imageModel.Stroke * STROKE_HOVER_VALUE\"\r\n (mouseleave)=\"stroke = imageModel.Stroke\">\r\n\r\n <div class=\"avatar-image\">\r\n <svg [attr.height]=\"imageModel.Height\" [attr.width]=\"imageModel.Width\">\r\n <defs>\r\n <pattern id=\"{{imageModel.ImageId}}\" patternUnits=\"userSpaceOnUse\"\r\n [attr.height]=\"imageModel.Height\" [attr.width]=\"imageModel.Width\">\r\n <image [attr.height]=\"imageModel.Height\" [attr.width]=\"imageModel.Width\"\r\n [attr.xlink:href]=\"data.image\" preserveAspectRatio=\"xMidYMid slice\"></image>\r\n </pattern>\r\n </defs>\r\n <circle class=\"progress\" [attr.stroke]=\"progressModel.color\" [attr.stroke-width]=\"stroke\"\r\n fill=\"transparent\" [attr.r]=\"imageModel.NormalizedRadius\" [attr.cx]=\"radius\"\r\n [attr.cy]=\"radius\" />\r\n <circle class=\"progress\" [attr.stroke]=\"progressModel.filledColor\"\r\n [attr.stroke-dasharray]=\"imageModel.Circumference + ' ' + imageModel.Circumference\"\r\n [ngStyle]=\"{'stroke-dashoffset':strokeDashOffset}\" [attr.stroke-width]=\"stroke\"\r\n fill=\"transparent\" [attr.r]=\"imageModel.NormalizedRadius\" [attr.cx]=\"radius\"\r\n [attr.cy]=\"radius\" />\r\n\r\n <circle [attr.cx]=\"radius\" [attr.cy]=\"radius\" [attr.r]=\"imageModel.ImageRadius\"\r\n attr.fill=\"url('#{{imageModel.ImageId}}')\" />\r\n </svg>\r\n\r\n <ng-content></ng-content>\r\n </div> \r\n\r\n <sfc-avatar-badge *ngFor=\"let badge of badges\" [model]=\"badge\" [radius]=\"radius\"\r\n [stroke]=\"imageModel.Stroke\" [normalizedRadius]=\"imageModel.NormalizedRadius\"\r\n [background]=\"progressModel.filledColor\">\r\n </sfc-avatar-badge>\r\n </div>\r\n\r\n <sfc-stars *ngIf=\"stars\" [value]=\"starsValue\"></sfc-stars>\r\n </div>\r\n\r\n <div class=\"avatar-data-container\">\r\n <div class=\"fullname\" [style.fontSize.px]=\"radius / FULLNAME_PART_VALUE\">\r\n <span>{{data.firstName}} {{data.lastName}}</span>\r\n </div>\r\n <div class=\"title\" [style.fontSize.px]=\"radius / TITLE_PART_VALUE\">\r\n <span>{{data.title}}</span>\r\n </div>\r\n </div>\r\n</div>", styles: [":host .container .avatar-image-container{display:flex;align-items:center;justify-content:center;flex-direction:column}:host .container .avatar-image-container .avatar{position:relative}:host .container .avatar-image-container .avatar .avatar-image{display:flex;align-items:center;justify-content:center;overflow:hidden}:host .container .avatar-image-container .avatar .avatar-image circle{transform-origin:50% 50%;transition:stroke-dashoffset .35s,stroke-width .3s}:host .container .avatar-image-container .avatar .avatar-image circle.progress{transform:rotate(-90deg)}:host .container .avatar-data-container{display:flex;flex-direction:column;align-items:center;font-size:1em;font-weight:700;-webkit-user-select:none;user-select:none}:host .container .avatar-data-container .fullname{transition:color .5s ease}:host .container .avatar-data-container .fullname,:host-context(.sfc-default-theme) :host .container .avatar-data-container .fullname{color:#545e61}:host-context(.sfc-dark-theme) :host .container .avatar-data-container .fullname{color:#f5f7fa}:host .container .avatar-data-container .title{color:#aab2bd}:host .container .avatar-data-container .fullname,:host .container .avatar-data-container .title{transition:color .5s ease}\n"] }]
837
924
  }], propDecorators: { radius: [{
838
925
  type: Input
839
926
  }], stroke: [{
@@ -895,7 +982,7 @@ function getProgressColorDefaultFunc(value) {
895
982
  }
896
983
  }
897
984
  function getProgressColorDynamicallyFunc(value, total) {
898
- const colorsCount = Object.keys(ProgressColor).length, part = Math.ceil((total || CommonConstants.FULL_PERCENTAGE) / colorsCount);
985
+ const colorsCount = Object.keys(ProgressColor).length, part = (total || CommonConstants.FULL_PERCENTAGE) / colorsCount;
899
986
  if (value < part) {
900
987
  return ProgressColor.MIN_LOW;
901
988
  }
@@ -1024,6 +1111,7 @@ class ProgressCircleComponent extends ProgressBaseComponent {
1024
1111
  constructor() {
1025
1112
  super(...arguments);
1026
1113
  this.total = CommonConstants.FULL_PERCENTAGE;
1114
+ this.partition = false;
1027
1115
  }
1028
1116
  get reversed() {
1029
1117
  return (this.progress / this.total) * CommonConstants.FULL_PERCENTAGE > 50;
@@ -1033,12 +1121,14 @@ class ProgressCircleComponent extends ProgressBaseComponent {
1033
1121
  }
1034
1122
  }
1035
1123
  ProgressCircleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ProgressCircleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1036
- ProgressCircleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ProgressCircleComponent, selector: "sfc-progress-circle", inputs: { total: "total" }, host: { properties: { "class.reversed": "this.reversed" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"container\" [style.background]=\"background\">\r\n <span>{{progress}}</span>\r\n <div class=\"circle\">\r\n <div class=\"bar\" [ngStyle]=\"{'transform': transformRotate, \r\n 'border-color': getColor(progress, total)}\"></div>\r\n <div class=\"fill\" [ngStyle]=\"{'border-color': getColor(progress, total)}\"></div>\r\n </div>\r\n</div>", styles: [":host.reversed .container .circle .fill,:host .container .circle .bar{position:absolute;border:.09em solid;clip:rect(0,.5em,1em,0);border-radius:50%;width:.82em;height:.82em}:host{display:inline-block}:host .container{position:relative;border-radius:50%;background:#e6e9ed;font-size:5em;text-align:initial;width:1em;height:1em}:host .container:after{position:absolute;top:.082em;left:.09em;content:\" \";border-radius:50%;background:#fff;transition-property:all;transition-duration:.2s;transition-timing-function:ease-in;width:.83em;height:.83em}:host .container span{position:absolute;z-index:1;width:5em;line-height:5em;font-size:.2em;color:#545e61;font-weight:700;text-align:center;white-space:nowrap;-webkit-user-select:none;user-select:none;transition-property:all;transition-duration:.2s;transition-timing-function:ease-out}:host .container:hover:after{top:.07em;left:.07em;width:.86em;height:.86em}:host .container:hover span{width:3.33em;line-height:3.33em;font-size:.3em}:host .container .circle{position:absolute;clip:rect(0,1em,1em,.5em);width:1em;height:1em}:host .container .circle .bar{transition:transform .2s ease-out,border-color .2s ease-out}:host.reversed .container .circle{clip:rect(auto,auto,auto,auto)}:host.reversed .container .circle .fill{transform:rotate(180deg)}\n"], dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
1124
+ ProgressCircleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ProgressCircleComponent, selector: "sfc-progress-circle", inputs: { total: "total", partition: "partition" }, host: { properties: { "class.reversed": "this.reversed" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"container\" [style.background]=\"background\">\r\n <span>{{progress}}<ng-container *ngIf=\"partition\">/{{total}}</ng-container></span>\r\n <div class=\"circle\">\r\n <div class=\"bar\" [ngStyle]=\"{'transform': transformRotate, \r\n 'border-color': getColor(progress, total)}\"></div>\r\n <div class=\"fill\" [ngStyle]=\"{'border-color': getColor(progress, total)}\"></div>\r\n </div>\r\n</div>", styles: [":host.reversed .container .circle .fill,:host .container .circle .bar{position:absolute;border:.09em solid;clip:rect(0,.5em,1em,0);border-radius:50%;width:.82em;height:.82em}:host{display:inline-block}:host .container{position:relative;border-radius:50%;background:#e6e9ed;font-size:5em;text-align:initial;width:1em;height:1em}:host .container:after{position:absolute;top:.082em;left:.09em;content:\" \";border-radius:50%;background:#fff;transition-property:all;transition-duration:.2s;transition-timing-function:ease-in;width:.83em;height:.83em}:host .container span{position:absolute;z-index:1;width:5em;line-height:5em;font-size:.2em;color:#545e61;font-weight:700;text-align:center;white-space:nowrap;-webkit-user-select:none;user-select:none;transition-property:all;transition-duration:.2s;transition-timing-function:ease-out}:host .container:hover:after{top:.07em;left:.07em;width:.86em;height:.86em}:host .container:hover span{width:3.33em;line-height:3.33em;font-size:.3em}:host .container .circle{position:absolute;clip:rect(0,1em,1em,.5em);width:1em;height:1em}:host .container .circle .bar{transition:transform .2s ease-out,border-color .2s ease-out}:host.reversed .container .circle{clip:rect(auto,auto,auto,auto)}:host.reversed .container .circle .fill{transform:rotate(180deg)}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
1037
1125
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ProgressCircleComponent, decorators: [{
1038
1126
  type: Component,
1039
- args: [{ selector: 'sfc-progress-circle', template: "<div class=\"container\" [style.background]=\"background\">\r\n <span>{{progress}}</span>\r\n <div class=\"circle\">\r\n <div class=\"bar\" [ngStyle]=\"{'transform': transformRotate, \r\n 'border-color': getColor(progress, total)}\"></div>\r\n <div class=\"fill\" [ngStyle]=\"{'border-color': getColor(progress, total)}\"></div>\r\n </div>\r\n</div>", styles: [":host.reversed .container .circle .fill,:host .container .circle .bar{position:absolute;border:.09em solid;clip:rect(0,.5em,1em,0);border-radius:50%;width:.82em;height:.82em}:host{display:inline-block}:host .container{position:relative;border-radius:50%;background:#e6e9ed;font-size:5em;text-align:initial;width:1em;height:1em}:host .container:after{position:absolute;top:.082em;left:.09em;content:\" \";border-radius:50%;background:#fff;transition-property:all;transition-duration:.2s;transition-timing-function:ease-in;width:.83em;height:.83em}:host .container span{position:absolute;z-index:1;width:5em;line-height:5em;font-size:.2em;color:#545e61;font-weight:700;text-align:center;white-space:nowrap;-webkit-user-select:none;user-select:none;transition-property:all;transition-duration:.2s;transition-timing-function:ease-out}:host .container:hover:after{top:.07em;left:.07em;width:.86em;height:.86em}:host .container:hover span{width:3.33em;line-height:3.33em;font-size:.3em}:host .container .circle{position:absolute;clip:rect(0,1em,1em,.5em);width:1em;height:1em}:host .container .circle .bar{transition:transform .2s ease-out,border-color .2s ease-out}:host.reversed .container .circle{clip:rect(auto,auto,auto,auto)}:host.reversed .container .circle .fill{transform:rotate(180deg)}\n"] }]
1127
+ args: [{ selector: 'sfc-progress-circle', template: "<div class=\"container\" [style.background]=\"background\">\r\n <span>{{progress}}<ng-container *ngIf=\"partition\">/{{total}}</ng-container></span>\r\n <div class=\"circle\">\r\n <div class=\"bar\" [ngStyle]=\"{'transform': transformRotate, \r\n 'border-color': getColor(progress, total)}\"></div>\r\n <div class=\"fill\" [ngStyle]=\"{'border-color': getColor(progress, total)}\"></div>\r\n </div>\r\n</div>", styles: [":host.reversed .container .circle .fill,:host .container .circle .bar{position:absolute;border:.09em solid;clip:rect(0,.5em,1em,0);border-radius:50%;width:.82em;height:.82em}:host{display:inline-block}:host .container{position:relative;border-radius:50%;background:#e6e9ed;font-size:5em;text-align:initial;width:1em;height:1em}:host .container:after{position:absolute;top:.082em;left:.09em;content:\" \";border-radius:50%;background:#fff;transition-property:all;transition-duration:.2s;transition-timing-function:ease-in;width:.83em;height:.83em}:host .container span{position:absolute;z-index:1;width:5em;line-height:5em;font-size:.2em;color:#545e61;font-weight:700;text-align:center;white-space:nowrap;-webkit-user-select:none;user-select:none;transition-property:all;transition-duration:.2s;transition-timing-function:ease-out}:host .container:hover:after{top:.07em;left:.07em;width:.86em;height:.86em}:host .container:hover span{width:3.33em;line-height:3.33em;font-size:.3em}:host .container .circle{position:absolute;clip:rect(0,1em,1em,.5em);width:1em;height:1em}:host .container .circle .bar{transition:transform .2s ease-out,border-color .2s ease-out}:host.reversed .container .circle{clip:rect(auto,auto,auto,auto)}:host.reversed .container .circle .fill{transform:rotate(180deg)}\n"] }]
1040
1128
  }], propDecorators: { total: [{
1041
1129
  type: Input
1130
+ }], partition: [{
1131
+ type: Input
1042
1132
  }], reversed: [{
1043
1133
  type: HostBinding,
1044
1134
  args: ['class.reversed']
@@ -1050,10 +1140,10 @@ class TagComponent {
1050
1140
  }
1051
1141
  }
1052
1142
  TagComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1053
- TagComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: TagComponent, selector: "sfc-tag", inputs: { model: "model" }, ngImport: i0, template: "<div class=\"container\">\r\n <a class=\"tag\">\r\n <div class=\"content\">\r\n <fa-icon *ngIf=\"model.icon\" [icon]=\"model.icon\"></fa-icon>\r\n <span>{{model.label}}</span>\r\n </div>\r\n </a>\r\n</div>", styles: [":host{display:inline-flex;margin:0 .18em}:host .container{margin-top:.3em;font-size:.8em;-webkit-user-select:none;user-select:none}:host .container .tag{display:inline-flex;border-radius:1em;font-weight:700;color:#545e61;transition:color .5s ease;transition:background-color .5s ease;transition:color .5s ease,background-color .5s ease;border:.125em solid transparent;padding:.3em}:host .container .tag,:host-context(.sfc-default-theme) :host .container .tag{color:#fff}:host-context(.sfc-dark-theme) :host .container .tag{color:#545e61}:host .container .tag,:host-context(.sfc-default-theme) :host .container .tag{background-color:#545e61}:host-context(.sfc-dark-theme) :host .container .tag{background-color:#fff}:host .container .tag .content{display:flex;align-items:center;text-align:center;padding:0 .8em}:host .container .tag .content fa-icon{margin-right:.18em}:host .container:hover .tag{background-color:#ffce54;color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }] });
1143
+ TagComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: TagComponent, selector: "sfc-tag", inputs: { model: "model" }, ngImport: i0, template: "<div class=\"container\">\r\n <a class=\"tag\">\r\n <div class=\"content\">\r\n <sfc-icon *ngIf=\"model.icon || model.imageSrc\" [icon]=\"model.icon\" [imageSrc]=\"model.imageSrc\"></sfc-icon>\r\n <span>{{model.label}}</span>\r\n </div>\r\n </a>\r\n</div>", styles: [":host{display:inline-flex;margin:0 .18em}:host .container{margin-top:.3em;font-size:.8em;-webkit-user-select:none;user-select:none}:host .container .tag{display:inline-flex;border-radius:1em;font-weight:700;color:#545e61;transition:color .5s ease;transition:background-color .5s ease;transition:color .5s ease,background-color .5s ease;border:.125em solid transparent;padding:.3em}:host .container .tag,:host-context(.sfc-default-theme) :host .container .tag{color:#fff}:host-context(.sfc-dark-theme) :host .container .tag{color:#545e61}:host .container .tag,:host-context(.sfc-default-theme) :host .container .tag{background-color:#545e61}:host-context(.sfc-dark-theme) :host .container .tag{background-color:#fff}:host .container .tag .content{display:flex;align-items:center;text-align:center;padding:0 .8em}:host .container .tag .content fa-icon{margin-right:.18em}:host .container:hover .tag{background-color:#ffce54;color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.IconComponent, selector: "sfc-icon", inputs: ["icon", "imageSrc"] }] });
1054
1144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TagComponent, decorators: [{
1055
1145
  type: Component,
1056
- args: [{ selector: 'sfc-tag', template: "<div class=\"container\">\r\n <a class=\"tag\">\r\n <div class=\"content\">\r\n <fa-icon *ngIf=\"model.icon\" [icon]=\"model.icon\"></fa-icon>\r\n <span>{{model.label}}</span>\r\n </div>\r\n </a>\r\n</div>", styles: [":host{display:inline-flex;margin:0 .18em}:host .container{margin-top:.3em;font-size:.8em;-webkit-user-select:none;user-select:none}:host .container .tag{display:inline-flex;border-radius:1em;font-weight:700;color:#545e61;transition:color .5s ease;transition:background-color .5s ease;transition:color .5s ease,background-color .5s ease;border:.125em solid transparent;padding:.3em}:host .container .tag,:host-context(.sfc-default-theme) :host .container .tag{color:#fff}:host-context(.sfc-dark-theme) :host .container .tag{color:#545e61}:host .container .tag,:host-context(.sfc-default-theme) :host .container .tag{background-color:#545e61}:host-context(.sfc-dark-theme) :host .container .tag{background-color:#fff}:host .container .tag .content{display:flex;align-items:center;text-align:center;padding:0 .8em}:host .container .tag .content fa-icon{margin-right:.18em}:host .container:hover .tag{background-color:#ffce54;color:#fff}\n"] }]
1146
+ args: [{ selector: 'sfc-tag', template: "<div class=\"container\">\r\n <a class=\"tag\">\r\n <div class=\"content\">\r\n <sfc-icon *ngIf=\"model.icon || model.imageSrc\" [icon]=\"model.icon\" [imageSrc]=\"model.imageSrc\"></sfc-icon>\r\n <span>{{model.label}}</span>\r\n </div>\r\n </a>\r\n</div>", styles: [":host{display:inline-flex;margin:0 .18em}:host .container{margin-top:.3em;font-size:.8em;-webkit-user-select:none;user-select:none}:host .container .tag{display:inline-flex;border-radius:1em;font-weight:700;color:#545e61;transition:color .5s ease;transition:background-color .5s ease;transition:color .5s ease,background-color .5s ease;border:.125em solid transparent;padding:.3em}:host .container .tag,:host-context(.sfc-default-theme) :host .container .tag{color:#fff}:host-context(.sfc-dark-theme) :host .container .tag{color:#545e61}:host .container .tag,:host-context(.sfc-default-theme) :host .container .tag{background-color:#545e61}:host-context(.sfc-dark-theme) :host .container .tag{background-color:#fff}:host .container .tag .content{display:flex;align-items:center;text-align:center;padding:0 .8em}:host .container .tag .content fa-icon{margin-right:.18em}:host .container:hover .tag{background-color:#ffce54;color:#fff}\n"] }]
1057
1147
  }], propDecorators: { model: [{
1058
1148
  type: Input
1059
1149
  }] } });
@@ -1064,10 +1154,10 @@ class TagsComponent {
1064
1154
  }
1065
1155
  }
1066
1156
  TagsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TagsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1067
- TagsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: TagsComponent, selector: "sfc-tags", inputs: { tags: "tags" }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"tags\">\r\n <sfc-tag *ngFor=\"let tag of tags\" [model]=\"tag\"></sfc-tag>\r\n </div>\r\n</div>", styles: [":host .container .tags{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: TagComponent, selector: "sfc-tag", inputs: ["model"] }] });
1157
+ TagsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: TagsComponent, selector: "sfc-tags", inputs: { tags: "tags" }, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"tags\">\r\n <sfc-tag *ngFor=\"let tag of tags\" [model]=\"tag\"></sfc-tag>\r\n </div>\r\n</div>", styles: [":host{display:inline-block}:host .container .tags{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: TagComponent, selector: "sfc-tag", inputs: ["model"] }] });
1068
1158
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TagsComponent, decorators: [{
1069
1159
  type: Component,
1070
- args: [{ selector: 'sfc-tags', template: "<div class=\"container\">\r\n <div class=\"tags\">\r\n <sfc-tag *ngFor=\"let tag of tags\" [model]=\"tag\"></sfc-tag>\r\n </div>\r\n</div>", styles: [":host .container .tags{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}\n"] }]
1160
+ args: [{ selector: 'sfc-tags', template: "<div class=\"container\">\r\n <div class=\"tags\">\r\n <sfc-tag *ngFor=\"let tag of tags\" [model]=\"tag\"></sfc-tag>\r\n </div>\r\n</div>", styles: [":host{display:inline-block}:host .container .tags{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}\n"] }]
1071
1161
  }], propDecorators: { tags: [{
1072
1162
  type: Input
1073
1163
  }] } });
@@ -1850,15 +1940,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
1850
1940
 
1851
1941
  class TableSelectService {
1852
1942
  constructor() {
1853
- this.selectSubject = new Subject();
1854
- this.select$ = this.selectSubject.asObservable();
1943
+ this.model = new ObservableModel();
1855
1944
  this.selectedItems = [];
1856
1945
  this.unselectedItems = [];
1857
1946
  }
1947
+ get select$() { return this.model.value$; }
1858
1948
  selectAll(selected) {
1859
1949
  this.unselectedItems = [];
1860
1950
  this.selectedItems = [];
1861
- this.selectSubject.next({ index: null, selected: selected });
1951
+ this.model.subject.next({ index: null, selected: selected });
1862
1952
  }
1863
1953
  select(index, selected) {
1864
1954
  if (selected) {
@@ -1869,7 +1959,18 @@ class TableSelectService {
1869
1959
  addItem(this.unselectedItems, index);
1870
1960
  removeItem(this.selectedItems, index);
1871
1961
  }
1872
- this.selectSubject.next({ index, selected });
1962
+ this.model.subject.next({ index, selected });
1963
+ }
1964
+ selectSingle(event) {
1965
+ if (event.selected) {
1966
+ this.unselectedItems = [];
1967
+ this.selectedItems = [event.index];
1968
+ }
1969
+ else {
1970
+ this.selectedItems = [];
1971
+ this.unselectedItems = [event.index];
1972
+ }
1973
+ this.model.subject.next(event);
1873
1974
  }
1874
1975
  }
1875
1976
  TableSelectService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TableSelectService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -2207,6 +2308,7 @@ class TableComponent {
2207
2308
  // Selection
2208
2309
  this.selectable = false;
2209
2310
  this.selectOnClick = false;
2311
+ this.selectMultiple = true;
2210
2312
  this.selected = new EventEmitter();
2211
2313
  this.allSelected = false;
2212
2314
  // End Selection
@@ -2287,21 +2389,42 @@ class TableComponent {
2287
2389
  return {
2288
2390
  index: index,
2289
2391
  sequence: sequence,
2290
- selected: this.getItemSelected(sequence),
2392
+ selected: result.reset ? false : this.getItemSelected(sequence),
2291
2393
  data: item
2292
2394
  };
2293
2395
  });
2294
- if (result.reset)
2396
+ if (result.reset) {
2295
2397
  this.items = items;
2296
- else
2398
+ if (this.selectable) {
2399
+ this.selectedService.selectAll(false);
2400
+ }
2401
+ }
2402
+ else {
2297
2403
  this.items = this.items.concat(items);
2404
+ }
2298
2405
  }
2299
2406
  selectionSubscribe() {
2300
2407
  this._allSelectionSubscription = this.selectedService.select$
2301
2408
  .subscribe((event) => {
2302
- if (event.index == null) {
2303
- this.allSelected = event.selected;
2304
- this.items.forEach(item => item.selected = event.selected);
2409
+ if (this.selectMultiple) {
2410
+ if (event.index == null) {
2411
+ this.allSelected = event.selected;
2412
+ this.items.forEach((item) => item.selected = event.selected);
2413
+ }
2414
+ else {
2415
+ this.items.forEach((item) => {
2416
+ if (item.sequence === event.index)
2417
+ item.selected = event.selected;
2418
+ });
2419
+ }
2420
+ }
2421
+ else {
2422
+ this.items.forEach((item) => {
2423
+ if (item.sequence === event.index)
2424
+ item.selected = event.selected;
2425
+ else
2426
+ item.selected = false;
2427
+ });
2305
2428
  }
2306
2429
  this.selected.emit(event);
2307
2430
  });
@@ -2315,7 +2438,7 @@ class TableComponent {
2315
2438
  let tableColumns = JSON.parse(JSON.stringify(columns));
2316
2439
  if (this.sequence)
2317
2440
  tableColumns.unshift(TableConstants.SEQUENCE_COLUMN);
2318
- if (this.selectable)
2441
+ if (this.selectable && this.selectMultiple)
2319
2442
  tableColumns.unshift(TableConstants.SELECTABLE_COLUMN);
2320
2443
  if (this.expanded)
2321
2444
  tableColumns.push(TableConstants.EXPANDED_COLUMN);
@@ -2360,10 +2483,10 @@ class TableComponent {
2360
2483
  }
2361
2484
  }
2362
2485
  TableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TableComponent, deps: [{ token: ColumnsToggleService }, { token: WINDOW }, { token: TableSelectService }, { token: i3.SortingService }, { token: i0.ChangeDetectorRef }, { token: i3.ResizeService }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component });
2363
- TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: TableComponent, selector: "sfc-table", inputs: { position: "position", delimeter: "delimeter", dataType: "dataType", dataToggle: "dataToggle", showColumns: "showColumns", columnsToggle: "columnsToggle", pagination: "pagination", sequence: "sequence", expanded: "expanded", notFoundLabel: "notFoundLabel", loadMoreLabel: "loadMoreLabel", showTotal: "showTotal", totalLabel: "totalLabel", paginationCount: "paginationCount", paginationLimits: "paginationLimits", showLoading: "showLoading", columnContent: "columnContent", rowContent: "rowContent", cardContent: "cardContent", data: "data", data$: "data$", columns: "columns", showColumnsLabel: "showColumnsLabel", hideColumnsLabel: "hideColumnsLabel", resize: "resize", loadType: "loadType", loader: "loader", filter: "filter", predicate$: "predicate$", selectable: "selectable", selectOnClick: "selectOnClick", dataListLabel: "dataListLabel", dataCardsLabel: "dataCardsLabel" }, outputs: { selected: "selected" }, host: { properties: { "class": "this.dataType", "class.loading": "this.loading" } }, providers: [SortingService, TableSelectService, ColumnsToggleService, ResizeService], queries: [{ propertyName: "templates", predicate: TemplateReferenceDirective, read: TemplateReferenceDirective }], ngImport: i0, template: "<div class=\"container\">\r\n <div *ngIf=\"showLoading\" class=\"table-loader\"></div>\r\n <div class=\"columns-container\">\r\n <div class=\"columns-actions\">\r\n <div class=\"left\">\r\n <sfc-columns-toggle *ngIf=\"columnsToggle\" [showLabel]=\"showColumnsLabel\" [hideLabel]=\"hideColumnsLabel\">\r\n </sfc-columns-toggle>\r\n </div>\r\n\r\n <div class=\"right\">\r\n <p *ngIf=\"showTotal\">{{totalLabel}}: <span>{{total}}</span></p>\r\n <sfc-toggle-switcher *ngIf=\"dataToggle\" [active]=\"dataType === TableDataType.Cards\"\r\n [leftModel]=\"toggleSwitcherLeftModel\" [rightModel]=\"toggleSwitcherRightModel\"\r\n (click)=\"onDataTypeToggle()\">\r\n </sfc-toggle-switcher>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showColumns && columnsToggleService.show\" class=\"columns\">\r\n <div class=\"column\" [style.justifyContent]=\"position\" [style.minWidth]=\"column.calculatedWidth\"\r\n *ngFor=\"let column of tableColumns\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <sfc-selectable-table-column *ngSwitchCase=\"TableColumnType.Selectable\"\r\n [selected]=\"allRowsSelected\">\r\n </sfc-selectable-table-column>\r\n\r\n <sfc-sorting-column *ngSwitchDefault [model]=\"column.sorting!\" [id]=\"column.field\">\r\n\r\n <sfc-template-content [referenceContent]=\"columnContent\" [templatesContent]=\"templates\"\r\n [templateType]=\"TableTemplate.Column\" [defaultContent]=\"defaultColumn\"\r\n [contextData]=\"column\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultColumn>\r\n <sfc-default-table-column [model]=\"column\"></sfc-default-table-column>\r\n </ng-template>\r\n\r\n </sfc-sorting-column>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <sfc-delimeter *ngIf=\"delimeter\" class=\"table-delimeter\"></sfc-delimeter>\r\n\r\n <div class=\"rows-container\">\r\n <sfc-load-container [id]=\"loadContainerId\" [type]=\"LoadContainerType.Table\" [model]=\"loadModel\"\r\n [paginationCount]=\"paginationCount\" [paginationLimits]=\"paginationLimits\" [showLoading]=\"showLoading\"\r\n (handleSuccess)=\"handleSuccess($event)\" (handleLoading)=\"loading = $event\" [emptyLabel]=\"notFoundLabel\" [loadMoreLabel]=\"loadMoreLabel\">\r\n <div class=\"row\" *ngFor=\"let item of items; index as i;\">\r\n <ng-container [ngSwitch]=\"dataType\">\r\n <sfc-template-content *ngSwitchCase=\"TableDataType.Rows\" [referenceContent]=\"rowContent\"\r\n [templatesContent]=\"templates\" [templateType]=\"TableTemplate.Row\" [defaultContent]=\"defaultRow\"\r\n [contextData]=\"{model: item, columns: tableColumns, position: position}\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultRow>\r\n <sfc-default-table-row [columns]=\"tableColumns\" [model]=\"item\" [position]=\"position\"\r\n [selectOnClick]=\"selectOnClick\">\r\n </sfc-default-table-row>\r\n </ng-template>\r\n\r\n <sfc-template-content *ngSwitchCase=\"TableDataType.Cards\" [referenceContent]=\"cardContent\"\r\n [templatesContent]=\"templates\" [templateType]=\"TableTemplate.Card\"\r\n [defaultContent]=\"defaultCard\" [contextData]=\"{model: item, columns: tableColumns}\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultCard>\r\n <sfc-default-table-card [columns]=\"tableColumns\" [model]=\"item\" [selectOnClick]=\"selectOnClick\">\r\n </sfc-default-table-card>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n\r\n </sfc-load-container>\r\n </div>\r\n</div>", styles: [":host .container{display:block;margin:2em auto;width:90%;position:relative}:host .container .columns-container{display:flex;flex-flow:row wrap;transition:.5s;justify-content:space-between}:host .container .columns-container .columns-actions{display:flex;align-items:center;width:100%}:host .container .columns-container .columns-actions .right{display:inline-flex;align-items:center;flex-wrap:wrap;justify-content:center;margin-left:auto}:host .container .columns-container .columns-actions .right>p{transition:color .5s ease;margin:0;font-size:.8em;padding-right:1em;font-weight:700;-webkit-user-select:none;user-select:none;text-align:center}:host .container .columns-container .columns-actions .right>p,:host-context(.sfc-default-theme) :host .container .columns-container .columns-actions .right>p{color:#545e61}:host-context(.sfc-dark-theme) :host .container .columns-container .columns-actions .right>p{color:#fff}:host .container .columns-container .columns-actions .right>p span{font-size:1.1em;color:#ffce54}:host .container .columns-container .columns{text-align:center;padding:.5em;width:100%;display:flex;flex-flow:row wrap}:host .container .columns-container .columns .column{text-align:center;padding:.5em;display:flex;align-items:center;justify-content:center;box-sizing:border-box}:host .container .rows-container{display:flex;flex-wrap:wrap;justify-content:center;transition:.5s;gap:1em;margin-block:1em 2em}:host .container .rows-container sfc-load-container ::ng-deep>.content{background:transparent}:host .container .rows-container sfc-load-container.loading{cursor:initial;z-index:9999}:host .container .rows-container sfc-load-container.loading .preloader{transition:background .5s ease}:host .container .rows-container sfc-load-container.loading .preloader,:host-context(.sfc-default-theme) :host .container .rows-container sfc-load-container.loading .preloader{background:#fff}:host-context(.sfc-dark-theme) :host .container .rows-container sfc-load-container.loading .preloader{background:transparent}:host .container .rows-container .row{display:contents}:host.loading .container .table-loader{position:relative;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;z-index:9998;position:absolute;transition:background-color .5s ease;opacity:.7}:host.loading .container .table-loader,:host-context(.sfc-default-theme) :host.loading .container .table-loader{background-color:#fff}:host-context(.sfc-dark-theme) :host.loading .container .table-loader{background-color:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i3.DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }, { kind: "component", type: i3.TemplateContentComponent, selector: "sfc-template-content", inputs: ["contextData", "referenceContent", "templateType", "templatesContent", "defaultContent"] }, { kind: "component", type: i3.ToggleSwitcherComponent, selector: "sfc-toggle-switcher", inputs: ["active", "disabled", "leftModel", "rightModel"] }, { kind: "component", type: i3.LoadContainerComponent, selector: "sfc-load-container", inputs: ["id", "type", "open", "loadMore", "loadMoreLabel", "showEmpty", "emptyLabel", "model", "scrollTarget", "paginationCount", "paginationLimits", "showLoading"], outputs: ["handleError", "handleSuccess", "handleLoading"] }, { kind: "component", type: DefaultTableColumnComponent, selector: "sfc-default-table-column", inputs: ["model"] }, { kind: "component", type: SelectableTableColumnComponent, selector: "sfc-selectable-table-column", inputs: ["selected"] }, { kind: "component", type: ColumnsToggleComponent, selector: "sfc-columns-toggle", inputs: ["showLabel", "hideLabel"] }, { kind: "component", type: SortingColumnComponent, selector: "sfc-sorting-column", inputs: ["id", "model"] }, { kind: "component", type: DefaultTableRowComponent, selector: "sfc-default-table-row" }, { kind: "component", type: DefaultTableCardComponent, selector: "sfc-default-table-card" }] });
2486
+ TableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: TableComponent, selector: "sfc-table", inputs: { position: "position", delimeter: "delimeter", dataType: "dataType", dataToggle: "dataToggle", showColumns: "showColumns", columnsToggle: "columnsToggle", pagination: "pagination", sequence: "sequence", expanded: "expanded", notFoundLabel: "notFoundLabel", loadMoreLabel: "loadMoreLabel", showTotal: "showTotal", totalLabel: "totalLabel", paginationCount: "paginationCount", paginationLimits: "paginationLimits", showLoading: "showLoading", columnContent: "columnContent", rowContent: "rowContent", cardContent: "cardContent", data: "data", data$: "data$", columns: "columns", showColumnsLabel: "showColumnsLabel", hideColumnsLabel: "hideColumnsLabel", resize: "resize", loadType: "loadType", loader: "loader", filter: "filter", predicate$: "predicate$", selectable: "selectable", selectOnClick: "selectOnClick", selectMultiple: "selectMultiple", dataListLabel: "dataListLabel", dataCardsLabel: "dataCardsLabel" }, outputs: { selected: "selected" }, host: { properties: { "class": "this.dataType", "class.loading": "this.loading" } }, providers: [SortingService, TableSelectService, ColumnsToggleService, ResizeService], queries: [{ propertyName: "templates", predicate: TemplateReferenceDirective, read: TemplateReferenceDirective }], ngImport: i0, template: "<div class=\"container\">\r\n <div *ngIf=\"showLoading\" class=\"table-loader\"></div>\r\n <div class=\"columns-container\">\r\n <div class=\"columns-actions\">\r\n <div class=\"left\">\r\n <sfc-columns-toggle *ngIf=\"columnsToggle\" [showLabel]=\"showColumnsLabel\" [hideLabel]=\"hideColumnsLabel\">\r\n </sfc-columns-toggle>\r\n </div>\r\n\r\n <div class=\"right\">\r\n <p *ngIf=\"showTotal\">{{totalLabel}}: <span>{{total}}</span></p>\r\n <sfc-toggle-switcher *ngIf=\"dataToggle\" [active]=\"dataType === TableDataType.Cards\"\r\n [leftModel]=\"toggleSwitcherLeftModel\" [rightModel]=\"toggleSwitcherRightModel\"\r\n (click)=\"onDataTypeToggle()\">\r\n </sfc-toggle-switcher>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showColumns && columnsToggleService.show\" class=\"columns\">\r\n <div class=\"column\" [style.justifyContent]=\"position\" [style.minWidth]=\"column.calculatedWidth\"\r\n *ngFor=\"let column of tableColumns\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <sfc-selectable-table-column *ngSwitchCase=\"TableColumnType.Selectable\"\r\n [selected]=\"allRowsSelected\">\r\n </sfc-selectable-table-column>\r\n\r\n <sfc-sorting-column *ngSwitchDefault [model]=\"column.sorting!\" [id]=\"column.field\">\r\n\r\n <sfc-template-content [referenceContent]=\"columnContent\" [templatesContent]=\"templates\"\r\n [templateType]=\"TableTemplate.Column\" [defaultContent]=\"defaultColumn\"\r\n [contextData]=\"column\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultColumn>\r\n <sfc-default-table-column [model]=\"column\"></sfc-default-table-column>\r\n </ng-template>\r\n\r\n </sfc-sorting-column>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <sfc-delimeter *ngIf=\"delimeter\" class=\"table-delimeter\"></sfc-delimeter>\r\n\r\n <div class=\"rows-container\">\r\n <sfc-load-container [id]=\"loadContainerId\" [type]=\"LoadContainerType.Table\" [model]=\"loadModel\"\r\n [paginationCount]=\"paginationCount\" [paginationLimits]=\"paginationLimits\" [showLoading]=\"showLoading\"\r\n (handleSuccess)=\"handleSuccess($event)\" (handleLoading)=\"loading = $event\" [emptyLabel]=\"notFoundLabel\"\r\n [loadMoreLabel]=\"loadMoreLabel\">\r\n <div class=\"row\" *ngFor=\"let item of items; index as i;\">\r\n <ng-container [ngSwitch]=\"dataType\">\r\n <sfc-template-content *ngSwitchCase=\"TableDataType.Rows\" [referenceContent]=\"rowContent\"\r\n [templatesContent]=\"templates\" [templateType]=\"TableTemplate.Row\" [defaultContent]=\"defaultRow\"\r\n [contextData]=\"{model: item, columns: tableColumns, position: position}\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultRow>\r\n <sfc-default-table-row [columns]=\"tableColumns\" [model]=\"item\" [position]=\"position\"\r\n [selectOnClick]=\"selectOnClick\">\r\n </sfc-default-table-row>\r\n </ng-template>\r\n\r\n <sfc-template-content *ngSwitchCase=\"TableDataType.Cards\" [referenceContent]=\"cardContent\"\r\n [templatesContent]=\"templates\" [templateType]=\"TableTemplate.Card\"\r\n [defaultContent]=\"defaultCard\" [contextData]=\"{model: item, columns: tableColumns}\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultCard>\r\n <sfc-default-table-card [columns]=\"tableColumns\" [model]=\"item\" [selectOnClick]=\"selectOnClick\">\r\n </sfc-default-table-card>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n\r\n </sfc-load-container>\r\n </div>\r\n</div>", styles: [":host .container{display:block;margin:2em auto;width:90%;position:relative}:host .container .columns-container{display:flex;flex-flow:row wrap;transition:.5s;justify-content:space-between}:host .container .columns-container .columns-actions{display:flex;align-items:center;width:100%}:host .container .columns-container .columns-actions .right{display:inline-flex;align-items:center;flex-wrap:wrap;justify-content:center;margin-left:auto}:host .container .columns-container .columns-actions .right>p{transition:color .5s ease;margin:0;font-size:.8em;padding-right:1em;font-weight:700;-webkit-user-select:none;user-select:none;text-align:center}:host .container .columns-container .columns-actions .right>p,:host-context(.sfc-default-theme) :host .container .columns-container .columns-actions .right>p{color:#545e61}:host-context(.sfc-dark-theme) :host .container .columns-container .columns-actions .right>p{color:#fff}:host .container .columns-container .columns-actions .right>p span{font-size:1.1em;color:#ffce54}:host .container .columns-container .columns{text-align:center;padding:.5em;width:100%;display:flex;flex-flow:row wrap}:host .container .columns-container .columns .column{text-align:center;padding:.5em;display:flex;align-items:center;justify-content:center;box-sizing:border-box}:host .container .rows-container{display:flex;flex-wrap:wrap;justify-content:center;transition:.5s;gap:1em;margin-block:1em 2em}:host .container .rows-container sfc-load-container ::ng-deep>.content{background:transparent}:host .container .rows-container sfc-load-container.loading{cursor:initial;z-index:9999}:host .container .rows-container sfc-load-container.loading .preloader{transition:background .5s ease}:host .container .rows-container sfc-load-container.loading .preloader,:host-context(.sfc-default-theme) :host .container .rows-container sfc-load-container.loading .preloader{background:#fff}:host-context(.sfc-dark-theme) :host .container .rows-container sfc-load-container.loading .preloader{background:transparent}:host .container .rows-container .row{display:contents}:host.loading .container .table-loader{position:relative;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;z-index:9998;position:absolute;transition:background-color .5s ease;opacity:.7}:host.loading .container .table-loader,:host-context(.sfc-default-theme) :host.loading .container .table-loader{background-color:#fff}:host-context(.sfc-dark-theme) :host.loading .container .table-loader{background-color:transparent}:host.rows .container .rows-container .row{display:block;width:100%;margin:.5em 0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i1.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "component", type: i3.DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }, { kind: "component", type: i3.TemplateContentComponent, selector: "sfc-template-content", inputs: ["contextData", "referenceContent", "templateType", "templatesContent", "defaultContent"] }, { kind: "component", type: i3.ToggleSwitcherComponent, selector: "sfc-toggle-switcher", inputs: ["active", "disabled", "leftModel", "rightModel"], outputs: ["toggle"] }, { kind: "component", type: i3.LoadContainerComponent, selector: "sfc-load-container", inputs: ["id", "type", "open", "loadMore", "loadMoreLabel", "showEmpty", "emptyLabel", "model", "scrollTarget", "paginationCount", "paginationLimits", "showLoading"], outputs: ["handleError", "handleSuccess", "handleLoading"] }, { kind: "component", type: DefaultTableColumnComponent, selector: "sfc-default-table-column", inputs: ["model"] }, { kind: "component", type: SelectableTableColumnComponent, selector: "sfc-selectable-table-column", inputs: ["selected"] }, { kind: "component", type: ColumnsToggleComponent, selector: "sfc-columns-toggle", inputs: ["showLabel", "hideLabel"] }, { kind: "component", type: SortingColumnComponent, selector: "sfc-sorting-column", inputs: ["id", "model"] }, { kind: "component", type: DefaultTableRowComponent, selector: "sfc-default-table-row" }, { kind: "component", type: DefaultTableCardComponent, selector: "sfc-default-table-card" }] });
2364
2487
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: TableComponent, decorators: [{
2365
2488
  type: Component,
2366
- args: [{ selector: 'sfc-table', providers: [SortingService, TableSelectService, ColumnsToggleService, ResizeService], template: "<div class=\"container\">\r\n <div *ngIf=\"showLoading\" class=\"table-loader\"></div>\r\n <div class=\"columns-container\">\r\n <div class=\"columns-actions\">\r\n <div class=\"left\">\r\n <sfc-columns-toggle *ngIf=\"columnsToggle\" [showLabel]=\"showColumnsLabel\" [hideLabel]=\"hideColumnsLabel\">\r\n </sfc-columns-toggle>\r\n </div>\r\n\r\n <div class=\"right\">\r\n <p *ngIf=\"showTotal\">{{totalLabel}}: <span>{{total}}</span></p>\r\n <sfc-toggle-switcher *ngIf=\"dataToggle\" [active]=\"dataType === TableDataType.Cards\"\r\n [leftModel]=\"toggleSwitcherLeftModel\" [rightModel]=\"toggleSwitcherRightModel\"\r\n (click)=\"onDataTypeToggle()\">\r\n </sfc-toggle-switcher>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showColumns && columnsToggleService.show\" class=\"columns\">\r\n <div class=\"column\" [style.justifyContent]=\"position\" [style.minWidth]=\"column.calculatedWidth\"\r\n *ngFor=\"let column of tableColumns\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <sfc-selectable-table-column *ngSwitchCase=\"TableColumnType.Selectable\"\r\n [selected]=\"allRowsSelected\">\r\n </sfc-selectable-table-column>\r\n\r\n <sfc-sorting-column *ngSwitchDefault [model]=\"column.sorting!\" [id]=\"column.field\">\r\n\r\n <sfc-template-content [referenceContent]=\"columnContent\" [templatesContent]=\"templates\"\r\n [templateType]=\"TableTemplate.Column\" [defaultContent]=\"defaultColumn\"\r\n [contextData]=\"column\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultColumn>\r\n <sfc-default-table-column [model]=\"column\"></sfc-default-table-column>\r\n </ng-template>\r\n\r\n </sfc-sorting-column>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <sfc-delimeter *ngIf=\"delimeter\" class=\"table-delimeter\"></sfc-delimeter>\r\n\r\n <div class=\"rows-container\">\r\n <sfc-load-container [id]=\"loadContainerId\" [type]=\"LoadContainerType.Table\" [model]=\"loadModel\"\r\n [paginationCount]=\"paginationCount\" [paginationLimits]=\"paginationLimits\" [showLoading]=\"showLoading\"\r\n (handleSuccess)=\"handleSuccess($event)\" (handleLoading)=\"loading = $event\" [emptyLabel]=\"notFoundLabel\" [loadMoreLabel]=\"loadMoreLabel\">\r\n <div class=\"row\" *ngFor=\"let item of items; index as i;\">\r\n <ng-container [ngSwitch]=\"dataType\">\r\n <sfc-template-content *ngSwitchCase=\"TableDataType.Rows\" [referenceContent]=\"rowContent\"\r\n [templatesContent]=\"templates\" [templateType]=\"TableTemplate.Row\" [defaultContent]=\"defaultRow\"\r\n [contextData]=\"{model: item, columns: tableColumns, position: position}\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultRow>\r\n <sfc-default-table-row [columns]=\"tableColumns\" [model]=\"item\" [position]=\"position\"\r\n [selectOnClick]=\"selectOnClick\">\r\n </sfc-default-table-row>\r\n </ng-template>\r\n\r\n <sfc-template-content *ngSwitchCase=\"TableDataType.Cards\" [referenceContent]=\"cardContent\"\r\n [templatesContent]=\"templates\" [templateType]=\"TableTemplate.Card\"\r\n [defaultContent]=\"defaultCard\" [contextData]=\"{model: item, columns: tableColumns}\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultCard>\r\n <sfc-default-table-card [columns]=\"tableColumns\" [model]=\"item\" [selectOnClick]=\"selectOnClick\">\r\n </sfc-default-table-card>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n\r\n </sfc-load-container>\r\n </div>\r\n</div>", styles: [":host .container{display:block;margin:2em auto;width:90%;position:relative}:host .container .columns-container{display:flex;flex-flow:row wrap;transition:.5s;justify-content:space-between}:host .container .columns-container .columns-actions{display:flex;align-items:center;width:100%}:host .container .columns-container .columns-actions .right{display:inline-flex;align-items:center;flex-wrap:wrap;justify-content:center;margin-left:auto}:host .container .columns-container .columns-actions .right>p{transition:color .5s ease;margin:0;font-size:.8em;padding-right:1em;font-weight:700;-webkit-user-select:none;user-select:none;text-align:center}:host .container .columns-container .columns-actions .right>p,:host-context(.sfc-default-theme) :host .container .columns-container .columns-actions .right>p{color:#545e61}:host-context(.sfc-dark-theme) :host .container .columns-container .columns-actions .right>p{color:#fff}:host .container .columns-container .columns-actions .right>p span{font-size:1.1em;color:#ffce54}:host .container .columns-container .columns{text-align:center;padding:.5em;width:100%;display:flex;flex-flow:row wrap}:host .container .columns-container .columns .column{text-align:center;padding:.5em;display:flex;align-items:center;justify-content:center;box-sizing:border-box}:host .container .rows-container{display:flex;flex-wrap:wrap;justify-content:center;transition:.5s;gap:1em;margin-block:1em 2em}:host .container .rows-container sfc-load-container ::ng-deep>.content{background:transparent}:host .container .rows-container sfc-load-container.loading{cursor:initial;z-index:9999}:host .container .rows-container sfc-load-container.loading .preloader{transition:background .5s ease}:host .container .rows-container sfc-load-container.loading .preloader,:host-context(.sfc-default-theme) :host .container .rows-container sfc-load-container.loading .preloader{background:#fff}:host-context(.sfc-dark-theme) :host .container .rows-container sfc-load-container.loading .preloader{background:transparent}:host .container .rows-container .row{display:contents}:host.loading .container .table-loader{position:relative;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;z-index:9998;position:absolute;transition:background-color .5s ease;opacity:.7}:host.loading .container .table-loader,:host-context(.sfc-default-theme) :host.loading .container .table-loader{background-color:#fff}:host-context(.sfc-dark-theme) :host.loading .container .table-loader{background-color:transparent}\n"] }]
2489
+ args: [{ selector: 'sfc-table', providers: [SortingService, TableSelectService, ColumnsToggleService, ResizeService], template: "<div class=\"container\">\r\n <div *ngIf=\"showLoading\" class=\"table-loader\"></div>\r\n <div class=\"columns-container\">\r\n <div class=\"columns-actions\">\r\n <div class=\"left\">\r\n <sfc-columns-toggle *ngIf=\"columnsToggle\" [showLabel]=\"showColumnsLabel\" [hideLabel]=\"hideColumnsLabel\">\r\n </sfc-columns-toggle>\r\n </div>\r\n\r\n <div class=\"right\">\r\n <p *ngIf=\"showTotal\">{{totalLabel}}: <span>{{total}}</span></p>\r\n <sfc-toggle-switcher *ngIf=\"dataToggle\" [active]=\"dataType === TableDataType.Cards\"\r\n [leftModel]=\"toggleSwitcherLeftModel\" [rightModel]=\"toggleSwitcherRightModel\"\r\n (click)=\"onDataTypeToggle()\">\r\n </sfc-toggle-switcher>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showColumns && columnsToggleService.show\" class=\"columns\">\r\n <div class=\"column\" [style.justifyContent]=\"position\" [style.minWidth]=\"column.calculatedWidth\"\r\n *ngFor=\"let column of tableColumns\">\r\n <ng-container [ngSwitch]=\"column.type\">\r\n <sfc-selectable-table-column *ngSwitchCase=\"TableColumnType.Selectable\"\r\n [selected]=\"allRowsSelected\">\r\n </sfc-selectable-table-column>\r\n\r\n <sfc-sorting-column *ngSwitchDefault [model]=\"column.sorting!\" [id]=\"column.field\">\r\n\r\n <sfc-template-content [referenceContent]=\"columnContent\" [templatesContent]=\"templates\"\r\n [templateType]=\"TableTemplate.Column\" [defaultContent]=\"defaultColumn\"\r\n [contextData]=\"column\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultColumn>\r\n <sfc-default-table-column [model]=\"column\"></sfc-default-table-column>\r\n </ng-template>\r\n\r\n </sfc-sorting-column>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <sfc-delimeter *ngIf=\"delimeter\" class=\"table-delimeter\"></sfc-delimeter>\r\n\r\n <div class=\"rows-container\">\r\n <sfc-load-container [id]=\"loadContainerId\" [type]=\"LoadContainerType.Table\" [model]=\"loadModel\"\r\n [paginationCount]=\"paginationCount\" [paginationLimits]=\"paginationLimits\" [showLoading]=\"showLoading\"\r\n (handleSuccess)=\"handleSuccess($event)\" (handleLoading)=\"loading = $event\" [emptyLabel]=\"notFoundLabel\"\r\n [loadMoreLabel]=\"loadMoreLabel\">\r\n <div class=\"row\" *ngFor=\"let item of items; index as i;\">\r\n <ng-container [ngSwitch]=\"dataType\">\r\n <sfc-template-content *ngSwitchCase=\"TableDataType.Rows\" [referenceContent]=\"rowContent\"\r\n [templatesContent]=\"templates\" [templateType]=\"TableTemplate.Row\" [defaultContent]=\"defaultRow\"\r\n [contextData]=\"{model: item, columns: tableColumns, position: position}\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultRow>\r\n <sfc-default-table-row [columns]=\"tableColumns\" [model]=\"item\" [position]=\"position\"\r\n [selectOnClick]=\"selectOnClick\">\r\n </sfc-default-table-row>\r\n </ng-template>\r\n\r\n <sfc-template-content *ngSwitchCase=\"TableDataType.Cards\" [referenceContent]=\"cardContent\"\r\n [templatesContent]=\"templates\" [templateType]=\"TableTemplate.Card\"\r\n [defaultContent]=\"defaultCard\" [contextData]=\"{model: item, columns: tableColumns}\">\r\n </sfc-template-content>\r\n\r\n <ng-template #defaultCard>\r\n <sfc-default-table-card [columns]=\"tableColumns\" [model]=\"item\" [selectOnClick]=\"selectOnClick\">\r\n </sfc-default-table-card>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n\r\n </sfc-load-container>\r\n </div>\r\n</div>", styles: [":host .container{display:block;margin:2em auto;width:90%;position:relative}:host .container .columns-container{display:flex;flex-flow:row wrap;transition:.5s;justify-content:space-between}:host .container .columns-container .columns-actions{display:flex;align-items:center;width:100%}:host .container .columns-container .columns-actions .right{display:inline-flex;align-items:center;flex-wrap:wrap;justify-content:center;margin-left:auto}:host .container .columns-container .columns-actions .right>p{transition:color .5s ease;margin:0;font-size:.8em;padding-right:1em;font-weight:700;-webkit-user-select:none;user-select:none;text-align:center}:host .container .columns-container .columns-actions .right>p,:host-context(.sfc-default-theme) :host .container .columns-container .columns-actions .right>p{color:#545e61}:host-context(.sfc-dark-theme) :host .container .columns-container .columns-actions .right>p{color:#fff}:host .container .columns-container .columns-actions .right>p span{font-size:1.1em;color:#ffce54}:host .container .columns-container .columns{text-align:center;padding:.5em;width:100%;display:flex;flex-flow:row wrap}:host .container .columns-container .columns .column{text-align:center;padding:.5em;display:flex;align-items:center;justify-content:center;box-sizing:border-box}:host .container .rows-container{display:flex;flex-wrap:wrap;justify-content:center;transition:.5s;gap:1em;margin-block:1em 2em}:host .container .rows-container sfc-load-container ::ng-deep>.content{background:transparent}:host .container .rows-container sfc-load-container.loading{cursor:initial;z-index:9999}:host .container .rows-container sfc-load-container.loading .preloader{transition:background .5s ease}:host .container .rows-container sfc-load-container.loading .preloader,:host-context(.sfc-default-theme) :host .container .rows-container sfc-load-container.loading .preloader{background:#fff}:host-context(.sfc-dark-theme) :host .container .rows-container sfc-load-container.loading .preloader{background:transparent}:host .container .rows-container .row{display:contents}:host.loading .container .table-loader{position:relative;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;z-index:9998;position:absolute;transition:background-color .5s ease;opacity:.7}:host.loading .container .table-loader,:host-context(.sfc-default-theme) :host.loading .container .table-loader{background-color:#fff}:host-context(.sfc-dark-theme) :host.loading .container .table-loader{background-color:transparent}:host.rows .container .rows-container .row{display:block;width:100%;margin:.5em 0}\n"] }]
2367
2490
  }], ctorParameters: function () { return [{ type: ColumnsToggleService }, { type: Window, decorators: [{
2368
2491
  type: Inject,
2369
2492
  args: [WINDOW]
@@ -2435,6 +2558,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2435
2558
  type: Input
2436
2559
  }], selectOnClick: [{
2437
2560
  type: Input
2561
+ }], selectMultiple: [{
2562
+ type: Input
2438
2563
  }], selected: [{
2439
2564
  type: Output
2440
2565
  }], dataListLabel: [{
@@ -2469,10 +2594,10 @@ class ExpandedTableRowComponent extends BaseDefaultTableContentComponent {
2469
2594
  }
2470
2595
  }
2471
2596
  ExpandedTableRowComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ExpandedTableRowComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2472
- ExpandedTableRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ExpandedTableRowComponent, selector: "sfc-expanded-table-row", inputs: { expanded: "expanded", row: "row", content: "content" }, host: { properties: { "class.expanded": "this.expanded" } }, queries: [{ propertyName: "templates", predicate: TemplateReferenceDirective, read: TemplateReferenceDirective }], usesInheritance: true, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"content\" (click)=\"expanded = !expanded\">\r\n <sfc-template-content [referenceContent]=\"row\" [templatesContent]=\"templates\"\r\n [templateType]=\"ExpandedTemplate.Row\" [contextData]=\"contextData\">\r\n </sfc-template-content>\r\n </div>\r\n <div class=\"expanded\">\r\n <sfc-template-content [referenceContent]=\"content\" [templatesContent]=\"templates\"\r\n [templateType]=\"ExpandedTemplate.Content\" [contextData]=\"contextData\">\r\n </sfc-template-content>\r\n </div>\r\n</div>", styles: [":host{display:block;width:100%;cursor:pointer;-webkit-user-select:none;user-select:none;margin-top:1em}:host .expanded{max-height:0;overflow:hidden}:host.expanded .expanded{max-height:3000px}\n"], dependencies: [{ kind: "component", type: i3.TemplateContentComponent, selector: "sfc-template-content", inputs: ["contextData", "referenceContent", "templateType", "templatesContent", "defaultContent"] }] });
2597
+ ExpandedTableRowComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ExpandedTableRowComponent, selector: "sfc-expanded-table-row", inputs: { expanded: "expanded", row: "row", content: "content" }, host: { properties: { "class.expanded": "this.expanded" } }, queries: [{ propertyName: "templates", predicate: TemplateReferenceDirective, read: TemplateReferenceDirective }], usesInheritance: true, ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"content\" (click)=\"expanded = !expanded\">\r\n <sfc-template-content [referenceContent]=\"row\" [templatesContent]=\"templates\"\r\n [templateType]=\"ExpandedTemplate.Row\" [contextData]=\"contextData\">\r\n </sfc-template-content>\r\n </div>\r\n <div class=\"expanded\">\r\n <sfc-template-content [referenceContent]=\"content\" [templatesContent]=\"templates\"\r\n [templateType]=\"ExpandedTemplate.Content\" [contextData]=\"contextData\">\r\n </sfc-template-content>\r\n </div>\r\n</div>", styles: [":host{display:block;width:100%;cursor:pointer;-webkit-user-select:none;user-select:none}:host .expanded{max-height:0;overflow:hidden}:host.expanded .expanded{max-height:3000px}\n"], dependencies: [{ kind: "component", type: i3.TemplateContentComponent, selector: "sfc-template-content", inputs: ["contextData", "referenceContent", "templateType", "templatesContent", "defaultContent"] }] });
2473
2598
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ExpandedTableRowComponent, decorators: [{
2474
2599
  type: Component,
2475
- args: [{ selector: 'sfc-expanded-table-row', template: "<div class=\"container\">\r\n <div class=\"content\" (click)=\"expanded = !expanded\">\r\n <sfc-template-content [referenceContent]=\"row\" [templatesContent]=\"templates\"\r\n [templateType]=\"ExpandedTemplate.Row\" [contextData]=\"contextData\">\r\n </sfc-template-content>\r\n </div>\r\n <div class=\"expanded\">\r\n <sfc-template-content [referenceContent]=\"content\" [templatesContent]=\"templates\"\r\n [templateType]=\"ExpandedTemplate.Content\" [contextData]=\"contextData\">\r\n </sfc-template-content>\r\n </div>\r\n</div>", styles: [":host{display:block;width:100%;cursor:pointer;-webkit-user-select:none;user-select:none;margin-top:1em}:host .expanded{max-height:0;overflow:hidden}:host.expanded .expanded{max-height:3000px}\n"] }]
2600
+ args: [{ selector: 'sfc-expanded-table-row', template: "<div class=\"container\">\r\n <div class=\"content\" (click)=\"expanded = !expanded\">\r\n <sfc-template-content [referenceContent]=\"row\" [templatesContent]=\"templates\"\r\n [templateType]=\"ExpandedTemplate.Row\" [contextData]=\"contextData\">\r\n </sfc-template-content>\r\n </div>\r\n <div class=\"expanded\">\r\n <sfc-template-content [referenceContent]=\"content\" [templatesContent]=\"templates\"\r\n [templateType]=\"ExpandedTemplate.Content\" [contextData]=\"contextData\">\r\n </sfc-template-content>\r\n </div>\r\n</div>", styles: [":host{display:block;width:100%;cursor:pointer;-webkit-user-select:none;user-select:none}:host .expanded{max-height:0;overflow:hidden}:host.expanded .expanded{max-height:3000px}\n"] }]
2476
2601
  }], propDecorators: { expanded: [{
2477
2602
  type: Input
2478
2603
  }, {
@@ -2551,6 +2676,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
2551
2676
  class CarouselServiceConstants {
2552
2677
  }
2553
2678
  CarouselServiceConstants.CLONE_ID_PREFIX = 'cloned-';
2679
+ CarouselServiceConstants.DEFAULT_NAV_TEXT = ['prev', 'next'];
2554
2680
  CarouselServiceConstants.DEFAULT_OPTIONS = {
2555
2681
  items: 3,
2556
2682
  skip_validateItems: false,
@@ -2568,8 +2694,10 @@ CarouselServiceConstants.DEFAULT_OPTIONS = {
2568
2694
  responsiveRefreshRate: 200,
2569
2695
  // defaults to Navigation
2570
2696
  nav: false,
2571
- navText: ['prev', 'next'],
2697
+ navText: [],
2698
+ navIcons: [],
2572
2699
  navSpeed: false,
2700
+ navBottom: true,
2573
2701
  slideBy: 1,
2574
2702
  dots: true,
2575
2703
  dotsEach: false,
@@ -3628,6 +3756,14 @@ class CarouselNavigationService {
3628
3756
  this.navigationModel.previous.label = this.carouselService.settings.navText[0];
3629
3757
  this.navigationModel.next.label = this.carouselService.settings.navText[1];
3630
3758
  }
3759
+ if (this.carouselService.settings.navIcons) {
3760
+ this.navigationModel.previous.icon = this.carouselService.settings.navIcons[0];
3761
+ this.navigationModel.next.icon = this.carouselService.settings.navIcons[1];
3762
+ }
3763
+ if (!this.carouselService.settings.navText && !this.carouselService.settings.navIcons) {
3764
+ this.navigationModel.previous.label = CarouselServiceConstants.DEFAULT_NAV_TEXT[0];
3765
+ this.navigationModel.next.label = CarouselServiceConstants.DEFAULT_NAV_TEXT[1];
3766
+ }
3631
3767
  this.navigationDotsModel.disabled = true;
3632
3768
  this.carouselService.navigationModel = this.navigationModel;
3633
3769
  this.carouselService.navigationDotsModel = this.navigationDotsModel;
@@ -3800,7 +3936,7 @@ class CarouselStageComponent {
3800
3936
  }
3801
3937
  }
3802
3938
  CarouselStageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CarouselStageComponent, deps: [{ token: CarouselService }, { token: CarouselAnimateService }], target: i0.ɵɵFactoryTarget.Component });
3803
- CarouselStageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: CarouselStageComponent, selector: "sfc-carousel-stage", inputs: { stageModel: "stageModel", slidesModel: "slidesModel" }, ngImport: i0, template: "<div class=\"container\" [ngStyle]=\"styles\" (transitionend)=\"onTransitionEnd()\">\r\n <ng-container *ngFor=\"let slide of slidesModel; let i = index\">\r\n <div class=\"item\" [ngClass]=\"slide.classes\" [ngStyle]=\"getItemStyles(slide)\" (animationend)=\"clear(slide.id)\"\r\n [@autoHeight]=\"slide.heightState\">\r\n <ng-template *ngIf=\"slide.load\" [ngTemplateOutlet]=\"slide.tplRef\"\r\n [ngTemplateOutletContext]=\"{ $implicit: preparePublicSlide(slide), index: i }\">\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n</div>", styles: [":host .container{position:relative;touch-action:pan-y;touch-action:manipulation;-webkit-backface-visibility:hidden;backface-visibility:hidden}:host .container:after{content:\".\";display:block;clear:both;visibility:hidden;line-height:0;height:0}:host .container .item{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0);position:relative;min-height:1px;float:left;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}:host .container .item.center{z-index:5}:host .container .item img{display:block;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
3939
+ CarouselStageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: CarouselStageComponent, selector: "sfc-carousel-stage", inputs: { stageModel: "stageModel", slidesModel: "slidesModel" }, ngImport: i0, template: "<div class=\"container\" [ngStyle]=\"styles\" (transitionend)=\"onTransitionEnd()\">\r\n <ng-container *ngFor=\"let slide of slidesModel; let i = index\">\r\n <div class=\"item\" [ngClass]=\"slide.classes\" [ngStyle]=\"getItemStyles(slide)\" (animationend)=\"clear(slide.id)\"\r\n [@autoHeight]=\"slide.heightState\">\r\n <ng-template *ngIf=\"slide.load\" [ngTemplateOutlet]=\"slide.tplRef\"\r\n [ngTemplateOutletContext]=\"{ $implicit: preparePublicSlide(slide), index: i }\">\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n</div>", styles: [":host .container{position:relative;touch-action:pan-y;touch-action:manipulation;-webkit-backface-visibility:hidden;backface-visibility:hidden}:host .container:after{content:\".\";display:block;clear:both;visibility:hidden;line-height:0;height:0}:host .container .item{display:grid;-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0);position:relative;min-height:1px;float:left;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}:host .container .item.center{z-index:5}:host .container .item img{display:block;width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
3804
3940
  trigger('autoHeight', [
3805
3941
  state('nulled', style({ height: 0 })),
3806
3942
  state('full', style({ height: '*' })),
@@ -3825,7 +3961,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3825
3961
  animate(350)
3826
3962
  ]),
3827
3963
  ])
3828
- ], template: "<div class=\"container\" [ngStyle]=\"styles\" (transitionend)=\"onTransitionEnd()\">\r\n <ng-container *ngFor=\"let slide of slidesModel; let i = index\">\r\n <div class=\"item\" [ngClass]=\"slide.classes\" [ngStyle]=\"getItemStyles(slide)\" (animationend)=\"clear(slide.id)\"\r\n [@autoHeight]=\"slide.heightState\">\r\n <ng-template *ngIf=\"slide.load\" [ngTemplateOutlet]=\"slide.tplRef\"\r\n [ngTemplateOutletContext]=\"{ $implicit: preparePublicSlide(slide), index: i }\">\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n</div>", styles: [":host .container{position:relative;touch-action:pan-y;touch-action:manipulation;-webkit-backface-visibility:hidden;backface-visibility:hidden}:host .container:after{content:\".\";display:block;clear:both;visibility:hidden;line-height:0;height:0}:host .container .item{-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0);position:relative;min-height:1px;float:left;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}:host .container .item.center{z-index:5}:host .container .item img{display:block;width:100%}\n"] }]
3964
+ ], template: "<div class=\"container\" [ngStyle]=\"styles\" (transitionend)=\"onTransitionEnd()\">\r\n <ng-container *ngFor=\"let slide of slidesModel; let i = index\">\r\n <div class=\"item\" [ngClass]=\"slide.classes\" [ngStyle]=\"getItemStyles(slide)\" (animationend)=\"clear(slide.id)\"\r\n [@autoHeight]=\"slide.heightState\">\r\n <ng-template *ngIf=\"slide.load\" [ngTemplateOutlet]=\"slide.tplRef\"\r\n [ngTemplateOutletContext]=\"{ $implicit: preparePublicSlide(slide), index: i }\">\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n</div>", styles: [":host .container{position:relative;touch-action:pan-y;touch-action:manipulation;-webkit-backface-visibility:hidden;backface-visibility:hidden}:host .container:after{content:\".\";display:block;clear:both;visibility:hidden;line-height:0;height:0}:host .container .item{display:grid;-webkit-backface-visibility:hidden;backface-visibility:hidden;transform:translateZ(0);position:relative;min-height:1px;float:left;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}:host .container .item.center{z-index:5}:host .container .item img{display:block;width:100%}\n"] }]
3829
3965
  }], ctorParameters: function () { return [{ type: CarouselService }, { type: CarouselAnimateService }]; }, propDecorators: { stageModel: [{
3830
3966
  type: Input
3831
3967
  }], slidesModel: [{
@@ -3842,6 +3978,8 @@ class CarouselComponent {
3842
3978
  this.lazyLoadService = lazyLoadService;
3843
3979
  this.animateService = animateService;
3844
3980
  this.changeDetectorRef = changeDetectorRef;
3981
+ this.ButtonType = ButtonType;
3982
+ this.disabled = false;
3845
3983
  this.translated = new EventEmitter();
3846
3984
  this.initialized = new EventEmitter();
3847
3985
  this.changing = new EventEmitter();
@@ -3909,6 +4047,10 @@ class CarouselComponent {
3909
4047
  }
3910
4048
  this.navigationModel = data.navigationModel;
3911
4049
  this.navigationDotsModel = data.navigationDotsModel;
4050
+ this.navigationContext = {
4051
+ previous: { model: this.navigationModel?.previous, action: this.previous.bind(this) },
4052
+ next: { model: this.navigationModel?.next, action: this.next.bind(this) }
4053
+ };
3912
4054
  this.changeDetectorRef.markForCheck();
3913
4055
  }));
3914
4056
  const _initializedCarousel$ = this.carouselService.initializedState.pipe(tap(() => {
@@ -4001,13 +4143,13 @@ class CarouselComponent {
4001
4143
  }
4002
4144
  }
4003
4145
  CarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CarouselComponent, deps: [{ token: i0.ElementRef }, { token: i3.ResizeService }, { token: CarouselService }, { token: CarouselNavigationService }, { token: CarouselAutoplayService }, { token: CarouselLazyLoadService }, { token: CarouselAnimateService }, { token: i0.ChangeDetectorRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
4004
- CarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: CarouselComponent, selector: "sfc-carousel", inputs: { options: "options" }, outputs: { translated: "translated", initialized: "initialized", changing: "changing", changed: "changed" }, host: { listeners: { "document:visibilitychange": "onVisibilityChange()" }, properties: { "class.rtl": "this.rtl" } }, providers: [
4146
+ CarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: CarouselComponent, selector: "sfc-carousel", inputs: { options: "options", disabled: "disabled" }, outputs: { translated: "translated", initialized: "initialized", changing: "changing", changed: "changed" }, host: { listeners: { "document:visibilitychange": "onVisibilityChange()" }, properties: { "class.rtl": "this.rtl" } }, providers: [
4005
4147
  CarouselNavigationService,
4006
4148
  CarouselAutoplayService,
4007
4149
  CarouselService,
4008
4150
  CarouselAnimateService,
4009
4151
  CarouselLazyLoadService
4010
- ], queries: [{ propertyName: "slides", predicate: CarouselSlideDirective }], ngImport: i0, template: "<div class=\"container\" (mouseover)=\"pause()\" (mouseleave)=\"play()\">\r\n <div *ngIf=\"carouselLoaded\" class=\"stage\">\r\n <sfc-carousel-stage [stageModel]=\"stageModel\" [slidesModel]=\"slidesModel\"></sfc-carousel-stage>\r\n </div>\r\n <ng-container *ngIf=\"slides.toArray().length\">\r\n <div class=\"navigation\" [class.disabled]=\"navigationModel.disabled\">\r\n <div class=\"action previous\" [class.disabled]=\"navigationModel.previous.disabled\" (click)=\"previous()\">\r\n {{navigationModel.previous.label}}\r\n </div>\r\n <div class=\"action next\" [class.disabled]=\"navigationModel.next.disabled\" (click)=\"next()\">\r\n {{navigationModel.next.label}}\r\n </div>\r\n </div>\r\n <div class=\"dots\" [class.disabled]=\"navigationDotsModel.disabled\">\r\n <div *ngFor=\"let dot of navigationDotsModel?.dots\" class=\"dot\" [class.active]=\"dot.active\"\r\n (click)=\"moveByDot(dot.id)\">\r\n <span></span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>", styles: [":host .container{display:block;width:100%;-webkit-tap-highlight-color:transparent;position:relative;z-index:1}:host .container .stage{position:relative;overflow:hidden;transform:translateZ(0)}:host .container .dots{text-align:center;-webkit-tap-highlight-color:transparent}:host .container .dots.disabled{display:none}:host .container .dots .dot{display:inline-block;zoom:1;cursor:pointer;-webkit-user-select:none;user-select:none}:host .container .dots .dot span{width:10px;height:10px;margin:5px 7px;transition:background .5s ease;display:block;-webkit-backface-visibility:visible;backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}:host .container .dots .dot span,:host-context(.sfc-default-theme) :host .container .dots .dot span{background:#d8d7d7}:host-context(.sfc-dark-theme) :host .container .dots .dot span{background:#f6f6f6}:host .container .dots .dot.active span,:host .container .dots .dot:hover span{transition:background .5s ease}:host .container .dots .dot.active span,:host-context(.sfc-default-theme) :host .container .dots .dot.active span,:host .container .dots .dot:hover span,:host-context(.sfc-default-theme) :host .container .dots .dot:hover span{background:#656d78}:host-context(.sfc-dark-theme) :host .container .dots .dot.active span,:host-context(.sfc-dark-theme) :host .container .dots .dot:hover span{background:#aab2bd}:host .container .navigation{margin-top:10px;text-align:center;-webkit-tap-highlight-color:transparent}:host .container .navigation .action{transition:color .5s ease;font-size:14px;margin:5px;padding:4px 7px;transition:background .5s ease;display:inline-block;cursor:pointer;border-radius:3px}:host .container .navigation .action,:host-context(.sfc-default-theme) :host .container .navigation .action{color:#fff}:host-context(.sfc-dark-theme) :host .container .navigation .action{color:#545e61}:host .container .navigation .action,:host-context(.sfc-default-theme) :host .container .navigation .action{background:#d8d7d7}:host-context(.sfc-dark-theme) :host .container .navigation .action{background:#f6f6f6}:host .container .navigation .action:hover{transition:background .5s ease;text-decoration:none}:host .container .navigation .action:hover,:host-context(.sfc-default-theme) :host .container .navigation .action:hover{background:rgba(0,0,0,.1019607843)}:host-context(.sfc-dark-theme) :host .container .navigation .action:hover{background:#d8d7d7}:host .container .navigation .action.previous,:host .container .navigation .action.next{cursor:pointer;-webkit-user-select:none;user-select:none}:host .container .navigation .action.disabled{opacity:.5;cursor:default}:host .container .navigation.disabled{display:none}:host .container .navigation.disabled+.dots{margin-top:10px}:host.rtl .container{direction:rtl}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CarouselStageComponent, selector: "sfc-carousel-stage", inputs: ["stageModel", "slidesModel"] }] });
4152
+ ], queries: [{ propertyName: "slides", predicate: CarouselSlideDirective, descendants: true }], ngImport: i0, template: "<div class=\"container\" (mouseover)=\"pause()\" (mouseleave)=\"play()\">\r\n <div class=\"upside\">\r\n <ng-container *ngIf=\"slides.toArray().length && !options.navBottom\">\r\n <div class=\"navigation\" [class.disabled]=\"navigationModel.disabled\">\r\n <ng-container *ngTemplateOutlet=\"navigationAction;context:{$implicit: navigationContext.previous}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngIf=\"carouselLoaded\" class=\"stage\">\r\n <sfc-carousel-stage [stageModel]=\"stageModel\" [slidesModel]=\"slidesModel\"></sfc-carousel-stage>\r\n </div>\r\n\r\n <ng-container *ngIf=\"slides.toArray().length && !options.navBottom\">\r\n <div class=\"navigation\" [class.disabled]=\"navigationModel.disabled\">\r\n <ng-container *ngTemplateOutlet=\"navigationAction;context:{$implicit: navigationContext.next}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"downside\">\r\n <ng-container *ngIf=\"slides.toArray().length\">\r\n <div class=\"navigation\" *ngIf=\"options.navBottom\" [class.disabled]=\"navigationModel.disabled\">\r\n <ng-container *ngTemplateOutlet=\"navigationAction;context:{$implicit: navigationContext.previous}\">\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"navigationAction;context:{$implicit: navigationContext.next}\">\r\n </ng-container>\r\n </div>\r\n <div class=\"dots\" *ngIf=\"!navigationDotsModel.disabled\">\r\n <sfc-dot *ngFor=\"let dot of navigationDotsModel?.dots\" [disabled]=\"disabled\" [active]=\"dot.active\"\r\n (click)=\"moveByDot(dot.id)\">\r\n </sfc-dot>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-template #navigationAction let-context>\r\n <sfc-button [disabled]=\"disabled\" [text]=\"context.model?.label\" [iconBefore]=\"context.model?.icon\"\r\n [types]=\"[ButtonType.Rounded]\" (click)=\"context.action()\">\r\n </sfc-button>\r\n </ng-template>\r\n</div>", styles: [":host .container .navigation{text-align:center;align-self:stretch;-webkit-tap-highlight-color:transparent}:host .container .navigation sfc-button{font-size:.6em;height:-webkit-fill-available;height:-moz-available;height:stretch}:host .container .navigation sfc-button ::ng-deep>.button{height:inherit}:host .container .navigation.disabled{display:none}:host .container .upside{display:flex;align-items:center;width:100%;-webkit-tap-highlight-color:transparent;position:relative;z-index:1}:host .container .upside .stage{position:relative;overflow:hidden;transform:translateZ(0)}:host .container .downside .dots{text-align:center;-webkit-tap-highlight-color:transparent}:host .container .downside .dots sfc-dot{cursor:pointer;zoom:1;-webkit-user-select:none;user-select:none;margin:5px 7px;transition:background .5s ease}:host .container .downside .dots sfc-dot,:host-context(.sfc-default-theme) :host .container .downside .dots sfc-dot{background:#d8d7d7}:host-context(.sfc-dark-theme) :host .container .downside .dots sfc-dot{background:#656d78}:host .container .downside .dots sfc-dot.active,:host .container .downside .dots sfc-dot:hover{transition:background .5s ease}:host .container .downside .dots sfc-dot.active,:host-context(.sfc-default-theme) :host .container .downside .dots sfc-dot.active,:host .container .downside .dots sfc-dot:hover,:host-context(.sfc-default-theme) :host .container .downside .dots sfc-dot:hover{background:#656d78}:host-context(.sfc-dark-theme) :host .container .downside .dots sfc-dot.active,:host-context(.sfc-dark-theme) :host .container .downside .dots sfc-dot:hover{background:#f6f6f6}:host .container .downside .navigation{margin:.5em 0}:host .container .downside .navigation sfc-button{margin:0 .5em}:host .container .downside .navigation.disabled+.dots{margin-top:10px}:host .container .downside:not(:empty){margin-top:1em}:host.rtl .container{direction:rtl}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.ButtonComponent, selector: "sfc-button", inputs: ["text", "iconBefore", "iconAfter", "disabled", "types"] }, { kind: "component", type: i3.DotComponent, selector: "sfc-dot", inputs: ["active", "disabled"] }, { kind: "component", type: CarouselStageComponent, selector: "sfc-carousel-stage", inputs: ["stageModel", "slidesModel"] }] });
4011
4153
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: CarouselComponent, decorators: [{
4012
4154
  type: Component,
4013
4155
  args: [{ selector: 'sfc-carousel', providers: [
@@ -4016,12 +4158,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
4016
4158
  CarouselService,
4017
4159
  CarouselAnimateService,
4018
4160
  CarouselLazyLoadService
4019
- ], template: "<div class=\"container\" (mouseover)=\"pause()\" (mouseleave)=\"play()\">\r\n <div *ngIf=\"carouselLoaded\" class=\"stage\">\r\n <sfc-carousel-stage [stageModel]=\"stageModel\" [slidesModel]=\"slidesModel\"></sfc-carousel-stage>\r\n </div>\r\n <ng-container *ngIf=\"slides.toArray().length\">\r\n <div class=\"navigation\" [class.disabled]=\"navigationModel.disabled\">\r\n <div class=\"action previous\" [class.disabled]=\"navigationModel.previous.disabled\" (click)=\"previous()\">\r\n {{navigationModel.previous.label}}\r\n </div>\r\n <div class=\"action next\" [class.disabled]=\"navigationModel.next.disabled\" (click)=\"next()\">\r\n {{navigationModel.next.label}}\r\n </div>\r\n </div>\r\n <div class=\"dots\" [class.disabled]=\"navigationDotsModel.disabled\">\r\n <div *ngFor=\"let dot of navigationDotsModel?.dots\" class=\"dot\" [class.active]=\"dot.active\"\r\n (click)=\"moveByDot(dot.id)\">\r\n <span></span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n</div>", styles: [":host .container{display:block;width:100%;-webkit-tap-highlight-color:transparent;position:relative;z-index:1}:host .container .stage{position:relative;overflow:hidden;transform:translateZ(0)}:host .container .dots{text-align:center;-webkit-tap-highlight-color:transparent}:host .container .dots.disabled{display:none}:host .container .dots .dot{display:inline-block;zoom:1;cursor:pointer;-webkit-user-select:none;user-select:none}:host .container .dots .dot span{width:10px;height:10px;margin:5px 7px;transition:background .5s ease;display:block;-webkit-backface-visibility:visible;backface-visibility:visible;transition:opacity .2s ease;border-radius:30px}:host .container .dots .dot span,:host-context(.sfc-default-theme) :host .container .dots .dot span{background:#d8d7d7}:host-context(.sfc-dark-theme) :host .container .dots .dot span{background:#f6f6f6}:host .container .dots .dot.active span,:host .container .dots .dot:hover span{transition:background .5s ease}:host .container .dots .dot.active span,:host-context(.sfc-default-theme) :host .container .dots .dot.active span,:host .container .dots .dot:hover span,:host-context(.sfc-default-theme) :host .container .dots .dot:hover span{background:#656d78}:host-context(.sfc-dark-theme) :host .container .dots .dot.active span,:host-context(.sfc-dark-theme) :host .container .dots .dot:hover span{background:#aab2bd}:host .container .navigation{margin-top:10px;text-align:center;-webkit-tap-highlight-color:transparent}:host .container .navigation .action{transition:color .5s ease;font-size:14px;margin:5px;padding:4px 7px;transition:background .5s ease;display:inline-block;cursor:pointer;border-radius:3px}:host .container .navigation .action,:host-context(.sfc-default-theme) :host .container .navigation .action{color:#fff}:host-context(.sfc-dark-theme) :host .container .navigation .action{color:#545e61}:host .container .navigation .action,:host-context(.sfc-default-theme) :host .container .navigation .action{background:#d8d7d7}:host-context(.sfc-dark-theme) :host .container .navigation .action{background:#f6f6f6}:host .container .navigation .action:hover{transition:background .5s ease;text-decoration:none}:host .container .navigation .action:hover,:host-context(.sfc-default-theme) :host .container .navigation .action:hover{background:rgba(0,0,0,.1019607843)}:host-context(.sfc-dark-theme) :host .container .navigation .action:hover{background:#d8d7d7}:host .container .navigation .action.previous,:host .container .navigation .action.next{cursor:pointer;-webkit-user-select:none;user-select:none}:host .container .navigation .action.disabled{opacity:.5;cursor:default}:host .container .navigation.disabled{display:none}:host .container .navigation.disabled+.dots{margin-top:10px}:host.rtl .container{direction:rtl}\n"] }]
4161
+ ], template: "<div class=\"container\" (mouseover)=\"pause()\" (mouseleave)=\"play()\">\r\n <div class=\"upside\">\r\n <ng-container *ngIf=\"slides.toArray().length && !options.navBottom\">\r\n <div class=\"navigation\" [class.disabled]=\"navigationModel.disabled\">\r\n <ng-container *ngTemplateOutlet=\"navigationAction;context:{$implicit: navigationContext.previous}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngIf=\"carouselLoaded\" class=\"stage\">\r\n <sfc-carousel-stage [stageModel]=\"stageModel\" [slidesModel]=\"slidesModel\"></sfc-carousel-stage>\r\n </div>\r\n\r\n <ng-container *ngIf=\"slides.toArray().length && !options.navBottom\">\r\n <div class=\"navigation\" [class.disabled]=\"navigationModel.disabled\">\r\n <ng-container *ngTemplateOutlet=\"navigationAction;context:{$implicit: navigationContext.next}\">\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"downside\">\r\n <ng-container *ngIf=\"slides.toArray().length\">\r\n <div class=\"navigation\" *ngIf=\"options.navBottom\" [class.disabled]=\"navigationModel.disabled\">\r\n <ng-container *ngTemplateOutlet=\"navigationAction;context:{$implicit: navigationContext.previous}\">\r\n </ng-container>\r\n <ng-container *ngTemplateOutlet=\"navigationAction;context:{$implicit: navigationContext.next}\">\r\n </ng-container>\r\n </div>\r\n <div class=\"dots\" *ngIf=\"!navigationDotsModel.disabled\">\r\n <sfc-dot *ngFor=\"let dot of navigationDotsModel?.dots\" [disabled]=\"disabled\" [active]=\"dot.active\"\r\n (click)=\"moveByDot(dot.id)\">\r\n </sfc-dot>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <ng-template #navigationAction let-context>\r\n <sfc-button [disabled]=\"disabled\" [text]=\"context.model?.label\" [iconBefore]=\"context.model?.icon\"\r\n [types]=\"[ButtonType.Rounded]\" (click)=\"context.action()\">\r\n </sfc-button>\r\n </ng-template>\r\n</div>", styles: [":host .container .navigation{text-align:center;align-self:stretch;-webkit-tap-highlight-color:transparent}:host .container .navigation sfc-button{font-size:.6em;height:-webkit-fill-available;height:-moz-available;height:stretch}:host .container .navigation sfc-button ::ng-deep>.button{height:inherit}:host .container .navigation.disabled{display:none}:host .container .upside{display:flex;align-items:center;width:100%;-webkit-tap-highlight-color:transparent;position:relative;z-index:1}:host .container .upside .stage{position:relative;overflow:hidden;transform:translateZ(0)}:host .container .downside .dots{text-align:center;-webkit-tap-highlight-color:transparent}:host .container .downside .dots sfc-dot{cursor:pointer;zoom:1;-webkit-user-select:none;user-select:none;margin:5px 7px;transition:background .5s ease}:host .container .downside .dots sfc-dot,:host-context(.sfc-default-theme) :host .container .downside .dots sfc-dot{background:#d8d7d7}:host-context(.sfc-dark-theme) :host .container .downside .dots sfc-dot{background:#656d78}:host .container .downside .dots sfc-dot.active,:host .container .downside .dots sfc-dot:hover{transition:background .5s ease}:host .container .downside .dots sfc-dot.active,:host-context(.sfc-default-theme) :host .container .downside .dots sfc-dot.active,:host .container .downside .dots sfc-dot:hover,:host-context(.sfc-default-theme) :host .container .downside .dots sfc-dot:hover{background:#656d78}:host-context(.sfc-dark-theme) :host .container .downside .dots sfc-dot.active,:host-context(.sfc-dark-theme) :host .container .downside .dots sfc-dot:hover{background:#f6f6f6}:host .container .downside .navigation{margin:.5em 0}:host .container .downside .navigation sfc-button{margin:0 .5em}:host .container .downside .navigation.disabled+.dots{margin-top:10px}:host .container .downside:not(:empty){margin-top:1em}:host.rtl .container{direction:rtl}\n"] }]
4020
4162
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i3.ResizeService }, { type: CarouselService }, { type: CarouselNavigationService }, { type: CarouselAutoplayService }, { type: CarouselLazyLoadService }, { type: CarouselAnimateService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
4021
4163
  type: Inject,
4022
4164
  args: [DOCUMENT]
4023
4165
  }] }]; }, propDecorators: { options: [{
4024
4166
  type: Input
4167
+ }], disabled: [{
4168
+ type: Input
4025
4169
  }], translated: [{
4026
4170
  type: Output
4027
4171
  }], initialized: [{
@@ -4032,7 +4176,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
4032
4176
  type: Output
4033
4177
  }], slides: [{
4034
4178
  type: ContentChildren,
4035
- args: [CarouselSlideDirective]
4179
+ args: [CarouselSlideDirective, { descendants: true }]
4036
4180
  }], rtl: [{
4037
4181
  type: HostBinding,
4038
4182
  args: ['class.rtl']
@@ -4062,6 +4206,8 @@ NgxSfcComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
4062
4206
  DropdownMenuItemComponent,
4063
4207
  NavigationMenuComponent,
4064
4208
  NavigationMenuItemComponent,
4209
+ RouterMenuComponent,
4210
+ RouterMenuItemComponent,
4065
4211
  // Stars
4066
4212
  StarsComponent,
4067
4213
  // Avatar
@@ -4112,6 +4258,7 @@ NgxSfcComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0",
4112
4258
  SideMenuComponent,
4113
4259
  DropdownMenuComponent,
4114
4260
  NavigationMenuComponent,
4261
+ RouterMenuComponent,
4115
4262
  // Stars
4116
4263
  StarsComponent,
4117
4264
  // Avatar
@@ -4159,6 +4306,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
4159
4306
  DropdownMenuItemComponent,
4160
4307
  NavigationMenuComponent,
4161
4308
  NavigationMenuItemComponent,
4309
+ RouterMenuComponent,
4310
+ RouterMenuItemComponent,
4162
4311
  // Stars
4163
4312
  StarsComponent,
4164
4313
  // Avatar
@@ -4214,6 +4363,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
4214
4363
  SideMenuComponent,
4215
4364
  DropdownMenuComponent,
4216
4365
  NavigationMenuComponent,
4366
+ RouterMenuComponent,
4217
4367
  // Stars
4218
4368
  StarsComponent,
4219
4369
  // Avatar
@@ -4250,5 +4400,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
4250
4400
  * Generated bundle index. Do not edit.
4251
4401
  */
4252
4402
 
4253
- export { AvatarBadgePosition, AvatarComponent, CarouselComponent, CarouselSlideDirective, ChartComponent, ChartThemeService, ColumnsToggleComponent, DefaultTableCardComponent, DefaultTableColumnComponent, DefaultTableRowComponent, DropdownMenuComponent, ExpandedTableRowComponent, ExpandedTableRowTemplate, NavigationMenuComponent, NgxSfcComponentsModule, NotificationComponent, NotificationTemplate, NotificationType, ProgressCircleComponent, ProgressLineComponent, ProgressSemiCircleComponent, SelectableTableColumnComponent, SideMenuComponent, SideMenuItemType, SliderComponent, SliderType, StarsComponent, TabLabelIconComponent, TabLabelIconSliderComponent, TabLabelLineComponent, TabLabelLineSliderComponent, TableColumnType, TableComponent, TableDataType, TableSelectService, TableTemplate, TabsComponent, TabsTemplate, TagsComponent, TimelineComponent, TimelineItemPosition, getProgressColorDefaultFunc, getProgressColorDynamicallyFunc };
4403
+ export { AvatarBadgePosition, AvatarComponent, CarouselComponent, CarouselSlideDirective, ChartComponent, ChartThemeService, ColumnsToggleComponent, DefaultTableCardComponent, DefaultTableColumnComponent, DefaultTableRowComponent, DropdownMenuComponent, ExpandedTableRowComponent, ExpandedTableRowTemplate, NavigationMenuComponent, NgxSfcComponentsModule, NotificationComponent, NotificationTemplate, NotificationType, ProgressCircleComponent, ProgressColor, ProgressLineComponent, ProgressSemiCircleComponent, RouterMenuComponent, SelectableTableColumnComponent, SideMenuComponent, SideMenuItemType, SliderComponent, SliderType, StarsComponent, TabLabelIconComponent, TabLabelIconSliderComponent, TabLabelLineComponent, TabLabelLineSliderComponent, TableColumnType, TableComponent, TableDataType, TableSelectService, TableTemplate, TabsComponent, TabsTemplate, TagsComponent, TimelineComponent, TimelineItemPosition, getProgressColorDefaultFunc, getProgressColorDynamicallyFunc };
4254
4404
  //# sourceMappingURL=ngx-sfc-components.mjs.map