@flywheel-io/vision 1.0.4 → 1.1.1

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 (47) hide show
  1. package/components/button-toggle/button-toggle-item/button-toggle-item.component.d.ts +18 -0
  2. package/components/button-toggle/button-toggle.component.d.ts +22 -0
  3. package/components/button-toggle/button-toggle.module.d.ts +10 -0
  4. package/components/legacy/notification/notification.module.d.ts +3 -4
  5. package/components/menu/menu.component.d.ts +3 -2
  6. package/components/paginator/paginator-advanced/paginator-advanced.component.d.ts +32 -0
  7. package/components/paginator/paginator.component.d.ts +40 -0
  8. package/components/paginator/paginator.model.d.ts +8 -0
  9. package/components/paginator/paginator.module.d.ts +14 -0
  10. package/components/select-menu/multi-select-menu/multi-select-menu.component.d.ts +15 -7
  11. package/components/select-menu/select-menu.component.d.ts +41 -8
  12. package/components/switch/switch.component.d.ts +20 -0
  13. package/components/switch/switch.module.d.ts +8 -0
  14. package/components/text-input/text-input.component.d.ts +4 -1
  15. package/esm2020/components/button-toggle/button-toggle-item/button-toggle-item.component.mjs +49 -0
  16. package/esm2020/components/button-toggle/button-toggle.component.mjs +91 -0
  17. package/esm2020/components/button-toggle/button-toggle.module.mjs +33 -0
  18. package/esm2020/components/legacy/notification/notification-container/notification-container.component.mjs +4 -4
  19. package/esm2020/components/legacy/notification/notification.module.mjs +5 -9
  20. package/esm2020/components/menu/menu-container/menu-container.component.mjs +1 -1
  21. package/esm2020/components/menu/menu-item/menu-item.component.mjs +2 -2
  22. package/esm2020/components/menu/menu.component.mjs +8 -4
  23. package/esm2020/components/paginator/paginator-advanced/paginator-advanced.component.mjs +123 -0
  24. package/esm2020/components/paginator/paginator.component.mjs +133 -0
  25. package/esm2020/components/paginator/paginator.model.mjs +2 -0
  26. package/esm2020/components/paginator/paginator.module.mjs +49 -0
  27. package/esm2020/components/select-menu/multi-select-menu/multi-select-menu.component.mjs +73 -26
  28. package/esm2020/components/select-menu/select-menu.component.mjs +98 -22
  29. package/esm2020/components/snackbar/snackbar-container/snackbar-container.component.mjs +2 -2
  30. package/esm2020/components/stepper/step.component.mjs +2 -2
  31. package/esm2020/components/switch/switch.component.mjs +54 -0
  32. package/esm2020/components/switch/switch.module.mjs +24 -0
  33. package/esm2020/components/text-input/text-input.component.mjs +16 -5
  34. package/esm2020/components/tooltip/tooltip-panel/tooltip-panel.component.mjs +2 -2
  35. package/esm2020/components/tooltip/tooltip.component.mjs +3 -3
  36. package/esm2020/public-api.mjs +9 -1
  37. package/fesm2015/flywheel-io-vision.mjs +915 -309
  38. package/fesm2015/flywheel-io-vision.mjs.map +1 -1
  39. package/fesm2020/flywheel-io-vision.mjs +915 -309
  40. package/fesm2020/flywheel-io-vision.mjs.map +1 -1
  41. package/package.json +1 -1
  42. package/public-api.d.ts +8 -0
  43. package/scss/icons/icons.scss +1 -2
  44. package/components/button-group/button-group.component.d.ts +0 -8
  45. package/components/button-group/button-group.module.d.ts +0 -7
  46. package/esm2020/components/button-group/button-group.component.mjs +0 -32
  47. package/esm2020/components/button-group/button-group.module.mjs +0 -20
@@ -18,7 +18,7 @@ import * as i5 from '@angular/cdk/portal';
18
18
  import { ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';
19
19
  import { takeUntil } from 'rxjs/operators';
20
20
  import { trigger, state, style, transition, animate } from '@angular/animations';
21
- import * as i3$1 from '@angular/forms';
21
+ import * as i4$1 from '@angular/forms';
22
22
  import { NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule } from '@angular/forms';
23
23
  import * as i2$1 from '@angular/cdk/menu';
24
24
  import { CdkMenuModule, CdkMenuTrigger } from '@angular/cdk/menu';
@@ -663,6 +663,167 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
663
663
  }]
664
664
  }] });
665
665
 
666
+ class FwButtonToggleItemComponent {
667
+ constructor() {
668
+ this.selected = false;
669
+ this.disabled = false;
670
+ this.size = 'medium';
671
+ this.color = 'slate';
672
+ this.selectedColor = 'primary';
673
+ // eslint-disable-next-line @angular-eslint/no-output-native
674
+ this.click = new EventEmitter();
675
+ }
676
+ get classes() {
677
+ return ['fw-button-toggle-item', this.title && this.title.length > 0 ? 'has-title' : 'no-title'].filter(Boolean).join(' ');
678
+ }
679
+ ;
680
+ handleClick() {
681
+ this.click.emit(this.value);
682
+ }
683
+ }
684
+ FwButtonToggleItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwButtonToggleItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
685
+ FwButtonToggleItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwButtonToggleItemComponent, selector: "fw-button-toggle-item", inputs: { title: "title", icon: "icon", value: "value", selected: "selected", disabled: "disabled", size: "size", color: "color", selectedColor: "selectedColor" }, outputs: { click: "click" }, host: { properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<fw-button\n [title]=\"title\"\n [leftIcon]=\"icon\"\n [variant]=\"selected?'solid':'outline'\"\n [color]=\"selected?selectedColor:color\"\n [size]=\"size\"\n [disabled]=\"disabled\"\n (click)=\"handleClick()\">\n {{ title }}\n</fw-button>\n", dependencies: [{ kind: "component", type: FwButtonComponent, selector: "fw-button", inputs: ["color", "size", "variant", "disabled", "fullWidth", "leftIcon", "rightIcon"] }] });
686
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwButtonToggleItemComponent, decorators: [{
687
+ type: Component,
688
+ args: [{ selector: 'fw-button-toggle-item', template: "<fw-button\n [title]=\"title\"\n [leftIcon]=\"icon\"\n [variant]=\"selected?'solid':'outline'\"\n [color]=\"selected?selectedColor:color\"\n [size]=\"size\"\n [disabled]=\"disabled\"\n (click)=\"handleClick()\">\n {{ title }}\n</fw-button>\n" }]
689
+ }], ctorParameters: function () { return []; }, propDecorators: { title: [{
690
+ type: Input
691
+ }], icon: [{
692
+ type: Input
693
+ }], value: [{
694
+ type: Input
695
+ }], selected: [{
696
+ type: Input
697
+ }], disabled: [{
698
+ type: Input
699
+ }], size: [{
700
+ type: Input
701
+ }], color: [{
702
+ type: Input
703
+ }], selectedColor: [{
704
+ type: Input
705
+ }], click: [{
706
+ type: Output
707
+ }], classes: [{
708
+ type: HostBinding,
709
+ args: ['attr.class']
710
+ }] } });
711
+
712
+ class FwButtonToggleComponent {
713
+ constructor(cdref) {
714
+ this.cdref = cdref;
715
+ this.layout = 'basic';
716
+ this.size = 'medium';
717
+ this.subscriptions = [];
718
+ }
719
+ get classes() {
720
+ return ['fw-button-toggle', this.size, this.layout].filter(Boolean).join(' ');
721
+ }
722
+ ;
723
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
724
+ ngOnChanges(changes) {
725
+ this.formatToggles();
726
+ }
727
+ ngOnDestroy() {
728
+ for (const subscription of this.subscriptions) {
729
+ subscription.unsubscribe();
730
+ }
731
+ }
732
+ ngAfterContentInit() {
733
+ if (this.toggleButtons.length > 0) {
734
+ this.formatToggles();
735
+ }
736
+ }
737
+ formatToggles() {
738
+ if (this.toggleButtons) {
739
+ this.toggleButtons.forEach(toggle => {
740
+ if (this.multiple && Array.isArray(this.value)) {
741
+ if (this.value.indexOf(toggle.value) >= 0) {
742
+ toggle.selected = true;
743
+ }
744
+ }
745
+ else {
746
+ if (toggle.value === this.value) {
747
+ toggle.selected = true;
748
+ }
749
+ }
750
+ toggle.size = this.size;
751
+ if (this.color) {
752
+ toggle.color = this.color;
753
+ }
754
+ if (this.selectedColor) {
755
+ toggle.selectedColor = this.selectedColor;
756
+ }
757
+ const sub = toggle.click.subscribe(value => {
758
+ if (this.multiple && Array.isArray(this.value)) {
759
+ toggle.selected = !toggle.selected;
760
+ this.value.push(value);
761
+ }
762
+ else {
763
+ this.toggleButtons.forEach(t => {
764
+ t.selected = false;
765
+ });
766
+ toggle.selected = true;
767
+ this.value = value;
768
+ }
769
+ });
770
+ this.subscriptions.push(sub);
771
+ });
772
+ }
773
+ }
774
+ }
775
+ FwButtonToggleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwButtonToggleComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
776
+ FwButtonToggleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwButtonToggleComponent, selector: "fw-button-toggle", inputs: { layout: "layout", size: "size", multiple: "multiple", value: "value", color: "color", selectedColor: "selectedColor" }, host: { properties: { "attr.class": "this.classes" } }, queries: [{ propertyName: "toggleButtons", predicate: FwButtonToggleItemComponent }], usesOnChanges: true, ngImport: i0, template: '<ng-content select="fw-button-toggle-item"></ng-content>', isInline: true, styles: ["fw-button-toggle.fw-button-toggle{box-sizing:border-box;border-radius:8px;overflow:hidden;display:inline-flex;align-items:stretch}fw-button-toggle.fw-button-toggle .fw-button-toggle-item.no-title button{gap:0}fw-button-toggle.fw-button-toggle button{min-width:0;margin:0!important;border-radius:0;border:1px solid var(--separations-input);border-right-width:0}fw-button-toggle.fw-button-toggle>button:first-of-type{border-top-left-radius:8px;border-bottom-left-radius:8px}fw-button-toggle.fw-button-toggle>button:last-of-type{border-top-right-radius:8px;border-bottom-right-radius:8px;border-right-width:1px}fw-button-toggle.fw-button-toggle.compact button{line-height:24px;height:24px}fw-button-toggle.fw-button-toggle.small button{font-size:12px}fw-button-toggle.fw-button-toggle.medium button{font-size:14px}fw-button-toggle.fw-button-toggle.large button{font-size:18px}fw-button-toggle.fw-button-toggle fw-button-toggle-item:last-of-type button{border-top-right-radius:8px;border-bottom-right-radius:8px;border-right-width:1px!important}fw-button-toggle.fw-button-toggle fw-button-toggle-item:first-of-type button{border-top-left-radius:8px;border-bottom-left-radius:8px}\n"], encapsulation: i0.ViewEncapsulation.None });
777
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwButtonToggleComponent, decorators: [{
778
+ type: Component,
779
+ args: [{ selector: 'fw-button-toggle', template: '<ng-content select="fw-button-toggle-item"></ng-content>', encapsulation: ViewEncapsulation.None, styles: ["fw-button-toggle.fw-button-toggle{box-sizing:border-box;border-radius:8px;overflow:hidden;display:inline-flex;align-items:stretch}fw-button-toggle.fw-button-toggle .fw-button-toggle-item.no-title button{gap:0}fw-button-toggle.fw-button-toggle button{min-width:0;margin:0!important;border-radius:0;border:1px solid var(--separations-input);border-right-width:0}fw-button-toggle.fw-button-toggle>button:first-of-type{border-top-left-radius:8px;border-bottom-left-radius:8px}fw-button-toggle.fw-button-toggle>button:last-of-type{border-top-right-radius:8px;border-bottom-right-radius:8px;border-right-width:1px}fw-button-toggle.fw-button-toggle.compact button{line-height:24px;height:24px}fw-button-toggle.fw-button-toggle.small button{font-size:12px}fw-button-toggle.fw-button-toggle.medium button{font-size:14px}fw-button-toggle.fw-button-toggle.large button{font-size:18px}fw-button-toggle.fw-button-toggle fw-button-toggle-item:last-of-type button{border-top-right-radius:8px;border-bottom-right-radius:8px;border-right-width:1px!important}fw-button-toggle.fw-button-toggle fw-button-toggle-item:first-of-type button{border-top-left-radius:8px;border-bottom-left-radius:8px}\n"] }]
780
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { classes: [{
781
+ type: HostBinding,
782
+ args: ['attr.class']
783
+ }], layout: [{
784
+ type: Input
785
+ }], size: [{
786
+ type: Input
787
+ }], multiple: [{
788
+ type: Input
789
+ }], value: [{
790
+ type: Input
791
+ }], color: [{
792
+ type: Input
793
+ }], selectedColor: [{
794
+ type: Input
795
+ }], toggleButtons: [{
796
+ type: ContentChildren,
797
+ args: [FwButtonToggleItemComponent]
798
+ }] } });
799
+
800
+ class FwButtonToggleModule {
801
+ }
802
+ FwButtonToggleModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwButtonToggleModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
803
+ FwButtonToggleModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: FwButtonToggleModule, declarations: [FwButtonToggleComponent,
804
+ FwButtonToggleItemComponent], imports: [FwButtonModule,
805
+ FwIconModule], exports: [FwButtonToggleComponent,
806
+ FwButtonToggleItemComponent] });
807
+ FwButtonToggleModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwButtonToggleModule, imports: [FwButtonModule,
808
+ FwIconModule] });
809
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwButtonToggleModule, decorators: [{
810
+ type: NgModule,
811
+ args: [{
812
+ exports: [
813
+ FwButtonToggleComponent,
814
+ FwButtonToggleItemComponent,
815
+ ],
816
+ declarations: [
817
+ FwButtonToggleComponent,
818
+ FwButtonToggleItemComponent,
819
+ ],
820
+ imports: [
821
+ FwButtonModule,
822
+ FwIconModule,
823
+ ],
824
+ }]
825
+ }] });
826
+
666
827
  class FwCardComponent {
667
828
  constructor() {
668
829
  // eslint-disable-next-line @angular-eslint/no-output-native
@@ -1910,53 +2071,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
1910
2071
  }]
1911
2072
  }] });
1912
2073
 
1913
- class FwButtonGroupComponent {
1914
- constructor() {
1915
- this.layout = 'basic';
1916
- this.size = 'medium';
1917
- }
1918
- get classes() {
1919
- return [
1920
- 'fw-button-group',
1921
- this.size === 'small' ? 'small' : null,
1922
- this.size === 'medium' ? 'medium' : null,
1923
- this.size === 'large' ? 'large' : null,
1924
- this.layout === 'compact' ? 'compact' : null,
1925
- ].filter(Boolean).join(' ');
1926
- }
1927
- ;
1928
- }
1929
- FwButtonGroupComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwButtonGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1930
- FwButtonGroupComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwButtonGroupComponent, selector: "fw-button-group", inputs: { layout: "layout", size: "size" }, host: { properties: { "attr.class": "this.classes" } }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: ["fw-button-group.fw-button-group{box-sizing:border-box;border-radius:8px;overflow:hidden;display:inline-flex;align-items:stretch}fw-button-group.fw-button-group button{min-width:0;margin:0!important;border-radius:0;border:1px solid var(--separations-input);border-right-width:0}fw-button-group.fw-button-group>button:first-of-type{border-top-left-radius:8px;border-bottom-left-radius:8px}fw-button-group.fw-button-group>button:last-of-type{border-top-right-radius:8px;border-bottom-right-radius:8px;border-right-width:1px}fw-button-group.fw-button-group.compact button{line-height:24px;height:24px}fw-button-group.fw-button-group.small button{font-size:12px}fw-button-group.fw-button-group.medium button{font-size:14px}fw-button-group.fw-button-group.large button{font-size:18px}fw-button-group.fw-button-group fw-button:last-of-type button{border-top-right-radius:8px;border-bottom-right-radius:8px;border-right-width:1px!important}fw-button-group.fw-button-group fw-button:first-of-type button{border-top-left-radius:8px;border-bottom-left-radius:8px}fw-button-group.fw-button-group .mat-stroked-button:last-of-type button{border-top-right-radius:8px;border-bottom-right-radius:8px;border-right-width:1px!important}fw-button-group.fw-button-group .mat-stroked-button:first-of-type button{border-top-left-radius:8px;border-bottom-left-radius:8px}\n"], encapsulation: i0.ViewEncapsulation.None });
1931
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwButtonGroupComponent, decorators: [{
1932
- type: Component,
1933
- args: [{ selector: 'fw-button-group', template: '<ng-content></ng-content>', encapsulation: ViewEncapsulation.None, styles: ["fw-button-group.fw-button-group{box-sizing:border-box;border-radius:8px;overflow:hidden;display:inline-flex;align-items:stretch}fw-button-group.fw-button-group button{min-width:0;margin:0!important;border-radius:0;border:1px solid var(--separations-input);border-right-width:0}fw-button-group.fw-button-group>button:first-of-type{border-top-left-radius:8px;border-bottom-left-radius:8px}fw-button-group.fw-button-group>button:last-of-type{border-top-right-radius:8px;border-bottom-right-radius:8px;border-right-width:1px}fw-button-group.fw-button-group.compact button{line-height:24px;height:24px}fw-button-group.fw-button-group.small button{font-size:12px}fw-button-group.fw-button-group.medium button{font-size:14px}fw-button-group.fw-button-group.large button{font-size:18px}fw-button-group.fw-button-group fw-button:last-of-type button{border-top-right-radius:8px;border-bottom-right-radius:8px;border-right-width:1px!important}fw-button-group.fw-button-group fw-button:first-of-type button{border-top-left-radius:8px;border-bottom-left-radius:8px}fw-button-group.fw-button-group .mat-stroked-button:last-of-type button{border-top-right-radius:8px;border-bottom-right-radius:8px;border-right-width:1px!important}fw-button-group.fw-button-group .mat-stroked-button:first-of-type button{border-top-left-radius:8px;border-bottom-left-radius:8px}\n"] }]
1934
- }], propDecorators: { classes: [{
1935
- type: HostBinding,
1936
- args: ['attr.class']
1937
- }], layout: [{
1938
- type: Input
1939
- }], size: [{
1940
- type: Input
1941
- }] } });
1942
-
1943
- class FwButtonGroupModule {
1944
- }
1945
- FwButtonGroupModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwButtonGroupModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
1946
- FwButtonGroupModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: FwButtonGroupModule, declarations: [FwButtonGroupComponent], exports: [FwButtonGroupComponent] });
1947
- FwButtonGroupModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwButtonGroupModule });
1948
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwButtonGroupModule, decorators: [{
1949
- type: NgModule,
1950
- args: [{
1951
- exports: [
1952
- FwButtonGroupComponent,
1953
- ],
1954
- declarations: [
1955
- FwButtonGroupComponent,
1956
- ],
1957
- }]
1958
- }] });
1959
-
1960
2074
  function genId() {
1961
2075
  return String.prototype.padStart(24, Math.floor(Math.random() * Date.now()).toString(16));
1962
2076
  }
@@ -2178,10 +2292,10 @@ class FwNotificationContainerComponent {
2178
2292
  }
2179
2293
  }
2180
2294
  FwNotificationContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwNotificationContainerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: FwNotificationService }], target: i0.ɵɵFactoryTarget.Component });
2181
- FwNotificationContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwNotificationContainerComponent, selector: "fw-notification-container", host: { properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<div role=\"list\">\n <fw-notification *ngFor=\"let notification of notifications; index as $index\"\n (ready)=\"onReady($event)\"\n (dismiss)=\"onDismiss($event)\"\n [class]=\"notificationClass($index)\"\n [notification]=\"expanded || $index === notifications.length - 1 ? notification : getEmptyNotification(notification)\"\n [attr.aria-label]=\"notification.type + ' : ' + notification.message\"\n role=\"listitem\"\n ></fw-notification>\n <div class=\"buttons\">\n <fw-button *ngIf=\"expanded\" (click)=\"onShowLess()\" mat-button aria-label=\"show less\" size=\"small\" color=\"slate\">\n <mat-icon>expand_less</mat-icon>\n </fw-button>\n <fw-button *ngIf=\"!expanded && notifications.length > 1\" (click)=\"onShowMore()\" aria-label=\"show more\" size=\"small\" color=\"slate\">\n <mat-icon>expand_more</mat-icon>\n </fw-button>\n <fw-button *ngIf=\"notifications.length > 0\"(click)=\"clearAll()\" class=\"clear-all\" aria-label=\"clear all\" size=\"small\" color=\"slate\">\n Clear All\n </fw-button>\n </div>\n</div>\n", styles: ["fw-notification-container{position:absolute;right:0;top:0;margin-top:20px;z-index:999999}fw-notification-container>div{display:flex;flex-direction:column-reverse}fw-notification-container .buttons{display:none;position:absolute;top:-5px;right:25px}fw-notification-container .buttons button{color:#fff;background-color:#919292;margin-left:2px}fw-notification-container .buttons button.mat-button{line-height:24px!important;margin:0 0 0 2px!important}fw-notification-container:hover .buttons{display:flex}fw-notification-container .hidden{display:none}fw-notification-container fw-notification:last-of-type{margin-top:24px}fw-notification-container.duo fw-notification.level-0{transform:scale(.95) translateY(-51px)}fw-notification-container.triple fw-notification.level-1{transform:scale(.95) translateY(-51px)}fw-notification-container.triple fw-notification.level-0{transform:scale(.9) translateY(-108px)}\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: FwButtonComponent, selector: "fw-button", inputs: ["color", "size", "variant", "disabled", "fullWidth", "leftIcon", "rightIcon"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: FwNotificationComponent, selector: "fw-notification", inputs: ["notification", "notificationDuration"], outputs: ["ready", "dismiss"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2295
+ FwNotificationContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwNotificationContainerComponent, selector: "fw-notification-container", host: { properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<div role=\"list\">\n <fw-notification\n *ngFor=\"let notification of notifications; index as $index\"\n (ready)=\"onReady($event)\"\n (dismiss)=\"onDismiss($event)\"\n [class]=\"notificationClass($index)\"\n [notification]=\"expanded || $index === notifications.length - 1 ? notification : getEmptyNotification(notification)\"\n [attr.aria-label]=\"notification.type + ' : ' + notification.message\"\n role=\"listitem\">\n </fw-notification>\n <div class=\"buttons\">\n <fw-button *ngIf=\"expanded\" (click)=\"onShowLess()\" aria-label=\"show less\" size=\"small\" color=\"slate\">\n <fw-icon>chevron-up</fw-icon>\n </fw-button>\n <fw-button\n *ngIf=\"!expanded && notifications.length > 1\" (click)=\"onShowMore()\" aria-label=\"show more\" size=\"small\"\n color=\"slate\">\n <fw-icon>chevron-down</fw-icon>\n </fw-button>\n <fw-button\n *ngIf=\"notifications.length > 0\" (click)=\"clearAll()\" class=\"clear-all\" aria-label=\"clear all\" size=\"small\"\n color=\"slate\">\n Clear All\n </fw-button>\n </div>\n</div>\n", styles: ["fw-notification-container{position:absolute;right:0;top:0;margin-top:20px;z-index:999999}fw-notification-container>div{display:flex;flex-direction:column-reverse}fw-notification-container .buttons{display:none;position:absolute;top:-5px;right:25px}fw-notification-container .buttons button{color:#fff;background-color:#919292;margin-left:2px}fw-notification-container .buttons button fw-icon{font-size:24px}fw-notification-container:hover .buttons{display:flex}fw-notification-container .hidden{display:none}fw-notification-container fw-notification:last-of-type{margin-top:24px}fw-notification-container.duo fw-notification.level-0{transform:scale(.95) translateY(-51px)}fw-notification-container.triple fw-notification.level-1{transform:scale(.95) translateY(-51px)}fw-notification-container.triple fw-notification.level-0{transform:scale(.9) translateY(-108px)}\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: FwButtonComponent, selector: "fw-button", inputs: ["color", "size", "variant", "disabled", "fullWidth", "leftIcon", "rightIcon"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon" }, { kind: "component", type: FwNotificationComponent, selector: "fw-notification", inputs: ["notification", "notificationDuration"], outputs: ["ready", "dismiss"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2182
2296
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwNotificationContainerComponent, decorators: [{
2183
2297
  type: Component,
2184
- args: [{ selector: 'fw-notification-container', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div role=\"list\">\n <fw-notification *ngFor=\"let notification of notifications; index as $index\"\n (ready)=\"onReady($event)\"\n (dismiss)=\"onDismiss($event)\"\n [class]=\"notificationClass($index)\"\n [notification]=\"expanded || $index === notifications.length - 1 ? notification : getEmptyNotification(notification)\"\n [attr.aria-label]=\"notification.type + ' : ' + notification.message\"\n role=\"listitem\"\n ></fw-notification>\n <div class=\"buttons\">\n <fw-button *ngIf=\"expanded\" (click)=\"onShowLess()\" mat-button aria-label=\"show less\" size=\"small\" color=\"slate\">\n <mat-icon>expand_less</mat-icon>\n </fw-button>\n <fw-button *ngIf=\"!expanded && notifications.length > 1\" (click)=\"onShowMore()\" aria-label=\"show more\" size=\"small\" color=\"slate\">\n <mat-icon>expand_more</mat-icon>\n </fw-button>\n <fw-button *ngIf=\"notifications.length > 0\"(click)=\"clearAll()\" class=\"clear-all\" aria-label=\"clear all\" size=\"small\" color=\"slate\">\n Clear All\n </fw-button>\n </div>\n</div>\n", styles: ["fw-notification-container{position:absolute;right:0;top:0;margin-top:20px;z-index:999999}fw-notification-container>div{display:flex;flex-direction:column-reverse}fw-notification-container .buttons{display:none;position:absolute;top:-5px;right:25px}fw-notification-container .buttons button{color:#fff;background-color:#919292;margin-left:2px}fw-notification-container .buttons button.mat-button{line-height:24px!important;margin:0 0 0 2px!important}fw-notification-container:hover .buttons{display:flex}fw-notification-container .hidden{display:none}fw-notification-container fw-notification:last-of-type{margin-top:24px}fw-notification-container.duo fw-notification.level-0{transform:scale(.95) translateY(-51px)}fw-notification-container.triple fw-notification.level-1{transform:scale(.95) translateY(-51px)}fw-notification-container.triple fw-notification.level-0{transform:scale(.9) translateY(-108px)}\n"] }]
2298
+ args: [{ selector: 'fw-notification-container', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div role=\"list\">\n <fw-notification\n *ngFor=\"let notification of notifications; index as $index\"\n (ready)=\"onReady($event)\"\n (dismiss)=\"onDismiss($event)\"\n [class]=\"notificationClass($index)\"\n [notification]=\"expanded || $index === notifications.length - 1 ? notification : getEmptyNotification(notification)\"\n [attr.aria-label]=\"notification.type + ' : ' + notification.message\"\n role=\"listitem\">\n </fw-notification>\n <div class=\"buttons\">\n <fw-button *ngIf=\"expanded\" (click)=\"onShowLess()\" aria-label=\"show less\" size=\"small\" color=\"slate\">\n <fw-icon>chevron-up</fw-icon>\n </fw-button>\n <fw-button\n *ngIf=\"!expanded && notifications.length > 1\" (click)=\"onShowMore()\" aria-label=\"show more\" size=\"small\"\n color=\"slate\">\n <fw-icon>chevron-down</fw-icon>\n </fw-button>\n <fw-button\n *ngIf=\"notifications.length > 0\" (click)=\"clearAll()\" class=\"clear-all\" aria-label=\"clear all\" size=\"small\"\n color=\"slate\">\n Clear All\n </fw-button>\n </div>\n</div>\n", styles: ["fw-notification-container{position:absolute;right:0;top:0;margin-top:20px;z-index:999999}fw-notification-container>div{display:flex;flex-direction:column-reverse}fw-notification-container .buttons{display:none;position:absolute;top:-5px;right:25px}fw-notification-container .buttons button{color:#fff;background-color:#919292;margin-left:2px}fw-notification-container .buttons button fw-icon{font-size:24px}fw-notification-container:hover .buttons{display:flex}fw-notification-container .hidden{display:none}fw-notification-container fw-notification:last-of-type{margin-top:24px}fw-notification-container.duo fw-notification.level-0{transform:scale(.95) translateY(-51px)}fw-notification-container.triple fw-notification.level-1{transform:scale(.95) translateY(-51px)}fw-notification-container.triple fw-notification.level-0{transform:scale(.9) translateY(-108px)}\n"] }]
2185
2299
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: FwNotificationService }]; }, propDecorators: { classes: [{
2186
2300
  type: HostBinding,
2187
2301
  args: ['attr.class']
@@ -2193,26 +2307,23 @@ FwNotificationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", ver
2193
2307
  FwNotificationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: FwNotificationModule, declarations: [FwNotificationComponent,
2194
2308
  FwNotificationContainerComponent], imports: [CommonModule,
2195
2309
  FwButtonModule,
2196
- FwButtonGroupModule,
2197
2310
  MatButtonModule,
2198
- MatIconModule], exports: [FwNotificationComponent,
2311
+ FwIconModule], exports: [FwNotificationComponent,
2199
2312
  FwNotificationContainerComponent] });
2200
2313
  FwNotificationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwNotificationModule, providers: [
2201
2314
  FwNotificationService,
2202
2315
  ], imports: [CommonModule,
2203
2316
  FwButtonModule,
2204
- FwButtonGroupModule,
2205
2317
  MatButtonModule,
2206
- MatIconModule] });
2318
+ FwIconModule] });
2207
2319
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwNotificationModule, decorators: [{
2208
2320
  type: NgModule,
2209
2321
  args: [{
2210
2322
  imports: [
2211
2323
  CommonModule,
2212
2324
  FwButtonModule,
2213
- FwButtonGroupModule,
2214
2325
  MatButtonModule,
2215
- MatIconModule,
2326
+ FwIconModule,
2216
2327
  ],
2217
2328
  exports: [
2218
2329
  FwNotificationComponent,
@@ -2257,10 +2368,10 @@ class FwMenuItemComponent {
2257
2368
  }
2258
2369
  }
2259
2370
  FwMenuItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2260
- FwMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwMenuItemComponent, selector: "fw-menu-item", inputs: { value: "value", variant: "variant", size: "size", title: "title", description: "description", icon: "icon", disabled: "disabled", showCheckbox: "showCheckbox", multiSelect: "multiSelect", hidden: "hidden", collapsed: "collapsed", href: "href", target: "target", focused: "focused", selected: "selected" }, outputs: { click: "click" }, host: { properties: { "class.collapsed": "this.collapsed", "class.focused": "this.focused", "class.selected": "this.selected" } }, ngImport: i0, template: "<div (click)=\"handleClick($event)\" *ngIf=\"!hidden\">\n <div\n [ngClass]=\"['menu-item', 'size-'+size, 'variant-'+variant, disabled?'disabled':'']\"\n [class.disabled]=\"disabled\">\n <div class=\"item-checkbox\" *ngIf=\"showCheckbox && multiSelect\">\n <input\n type=\"checkbox\"\n value=\"true\"\n [disabled]=\"disabled\"\n [checked]=\"selected\">\n </div>\n <div class=\"item-radiobutton\" *ngIf=\"showCheckbox && !multiSelect\">\n <input\n type=\"radio\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [checked]=\"selected\">\n </div>\n <fw-icon *ngIf=\"icon\" class=\"menu-icon\">{{ icon }}</fw-icon>\n <ng-content select=\"fw-avatar\"></ng-content>\n <div class=\"menu-text\" *ngIf=\"title\">\n <h4>{{ title }}</h4>\n <p *ngIf=\"description\" class=\"vision-p4 description\">{{ description }}</p>\n </div>\n <div class=\"key-text vision-p2\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{position:relative;display:flex}:host>div{display:flex;flex:1;text-decoration:none}:host:hover:not(.selected) .menu-item:not(.disabled),:host.focused:not(.selected) .menu-item:not(.disabled){background-color:var(--slate-hover);cursor:pointer}:host:hover:not(.selected) .menu-item:not(.disabled) .menu-icon,:host.focused:not(.selected) .menu-item:not(.disabled) .menu-icon{color:var(--primary-base)}:host:hover:not(.selected) .menu-item:not(.disabled) .menu-text h4,:host.focused:not(.selected) .menu-item:not(.disabled) .menu-text h4{color:var(--typography-base)}:host.selected .menu-item{background-color:var(--primary-hover);cursor:pointer}:host.selected .menu-item .menu-icon{color:var(--primary-base)}:host.selected .menu-item .menu-text h4{color:var(--typography-base)}:host.selected .menu-item.variant-modern:before{position:absolute;content:\" \";height:25px;border-left:3px solid var(--primary-base);margin-left:-16px}:host.selected .menu-item.variant-modern.size-compact:before{height:16px;border-left:3px solid var(--primary-base)}:host.selected .menu-item.variant-button:before{position:absolute;content:\" \";height:25px;border-left:3px solid var(--primary-base);margin-left:-14px;margin-top:10px}:host.selected .menu-item.variant-button.size-compact:before{margin-left:-15px;margin-top:4px;border-left:1px solid var(--primary-base)}:host.variant-modern.selected:before{position:absolute;content:\" \";height:25px;border-left:3px solid var(--primary-base);margin-left:-16px}:host.variant-modern.size-compact.selected:before{height:16px;border-left:3px solid var(--primary-base)}:host.collapsed .menu-item{container-name:menuitem;container-type:size}:host .menu-item{box-sizing:border-box;display:flex;flex-direction:row;align-items:center;flex:1;gap:8px;padding:8px;margin:1px 4px;border-radius:4px;color:var(--typography-muted);min-height:40px;width:100%}:host .menu-item .item-checkbox:empty{display:none}:host .menu-item .item-radiobutton:empty{display:none}:host .menu-item .menu-icon{font-size:18px;white-space:nowrap}:host .menu-item .menu-text{flex:1;overflow:hidden;padding:2px 0}:host .menu-item .menu-text h4{margin:0;color:var(--typography-muted);white-space:nowrap;overflow:hidden}:host .menu-item .menu-text p{margin:0}:host .menu-item .menu-text p.description{color:var(--typography-light)}:host .menu-item .key-text{display:flex;align-items:center;gap:8px;color:var(--typography-light)}:host .menu-item.size-compact{min-height:32px}:host .menu-item.size-compact .menu-text .description{display:none}:host .menu-item.disabled{opacity:.4;cursor:not-allowed}:host .menu-item.variant-modern{padding:8px 16px;border-radius:6px}:host .menu-item.variant-modern.size-compact{min-height:34px}:host .menu-item.variant-button{height:52px;width:60px;flex-direction:column;gap:1px;padding:3px 0;border-radius:8px;display:block;text-align:center;flex:unset;white-space:nowrap;overflow:hidden;container-name:menuitem-button}:host .menu-item.variant-button .menu-icon{font-size:32px}:host .menu-item.variant-button .menu-text h4{font-size:10px;font-style:normal;font-weight:400;line-height:130%}:host .menu-item.variant-button .menu-text .description{display:none}:host .menu-item.variant-button.size-compact{min-height:40px;width:50px}:host .menu-item.variant-button.size-compact .menu-icon{font-size:20px}:host .menu-item.variant-button.size-compact .menu-text h4{font-size:10px;font-style:normal;font-weight:400;line-height:130%}@container menuitem (max-width: 60px){.menu-item{gap:0}.menu-item .menu-text{opacity:0}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon" }] });
2371
+ FwMenuItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwMenuItemComponent, selector: "fw-menu-item", inputs: { value: "value", variant: "variant", size: "size", title: "title", description: "description", icon: "icon", disabled: "disabled", showCheckbox: "showCheckbox", multiSelect: "multiSelect", hidden: "hidden", collapsed: "collapsed", href: "href", target: "target", focused: "focused", selected: "selected" }, outputs: { click: "click" }, host: { properties: { "class.collapsed": "this.collapsed", "class.focused": "this.focused", "class.selected": "this.selected" } }, ngImport: i0, template: "<div (click)=\"handleClick($event)\" *ngIf=\"!hidden\">\n <div\n [ngClass]=\"['menu-item', 'size-'+size, 'variant-'+variant, disabled?'disabled':'']\"\n [class.disabled]=\"disabled\">\n <div class=\"item-checkbox\" *ngIf=\"showCheckbox && multiSelect\">\n <input\n type=\"checkbox\"\n value=\"true\"\n [disabled]=\"disabled\"\n [checked]=\"selected\">\n </div>\n <div class=\"item-radiobutton\" *ngIf=\"showCheckbox && !multiSelect\">\n <input\n type=\"radio\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [checked]=\"selected\">\n </div>\n <fw-icon *ngIf=\"icon\" class=\"menu-icon\">{{ icon }}</fw-icon>\n <ng-content select=\"fw-avatar\"></ng-content>\n <div class=\"menu-text\" *ngIf=\"title\">\n <h4>{{ title }}</h4>\n <p *ngIf=\"description\" class=\"vision-p4 description\">{{ description }}</p>\n </div>\n <div class=\"key-text vision-p2\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{position:relative;display:flex}:host>div{display:flex;flex:1;text-decoration:none}:host:hover:not(.selected) .menu-item:not(.disabled),:host.focused:not(.selected) .menu-item:not(.disabled){background-color:var(--slate-hover);cursor:pointer}:host:hover:not(.selected) .menu-item:not(.disabled) .menu-icon,:host.focused:not(.selected) .menu-item:not(.disabled) .menu-icon{color:var(--primary-base)}:host:hover:not(.selected) .menu-item:not(.disabled) .menu-text h4,:host.focused:not(.selected) .menu-item:not(.disabled) .menu-text h4{color:var(--typography-base)}:host.selected .menu-item{background-color:var(--primary-hover);cursor:pointer}:host.selected .menu-item .menu-icon{color:var(--primary-base)}:host.selected .menu-item .menu-text h4{color:var(--typography-base)}:host.selected .menu-item.variant-modern:before{position:absolute;content:\" \";height:25px;border-left:3px solid var(--primary-base);margin-left:-16px}:host.selected .menu-item.variant-modern.size-compact:before{height:16px;border-left:3px solid var(--primary-base)}:host.selected .menu-item.variant-button:before{position:absolute;content:\" \";height:25px;border-left:3px solid var(--primary-base);margin-left:-14px;margin-top:10px}:host.selected .menu-item.variant-button.size-compact:before{margin-left:-15px;margin-top:4px;border-left:1px solid var(--primary-base)}:host.variant-modern.selected:before{position:absolute;content:\" \";height:25px;border-left:3px solid var(--primary-base);margin-left:-16px}:host.variant-modern.size-compact.selected:before{height:16px;border-left:3px solid var(--primary-base)}:host.collapsed .menu-item{container-name:menuitem;container-type:size}:host .menu-item{box-sizing:border-box;display:flex;flex-direction:row;align-items:center;flex:1;gap:8px;padding:8px;margin:1px 4px;border-radius:4px;color:var(--typography-muted);min-height:40px;width:100%}:host .menu-item .item-checkbox:empty{display:none}:host .menu-item .item-radiobutton{padding:0}:host .menu-item .item-radiobutton:empty{display:none}:host .menu-item .menu-icon{font-size:18px;white-space:nowrap}:host .menu-item .menu-text{flex:1;overflow:hidden;padding:2px 0}:host .menu-item .menu-text h4{margin:0;color:var(--typography-muted);white-space:nowrap;overflow:hidden}:host .menu-item .menu-text p{margin:0}:host .menu-item .menu-text p.description{color:var(--typography-light)}:host .menu-item .key-text{display:flex;align-items:center;gap:8px;color:var(--typography-light)}:host .menu-item.size-compact{min-height:32px}:host .menu-item.size-compact .menu-text .description{display:none}:host .menu-item.disabled{opacity:.4;cursor:not-allowed}:host .menu-item.variant-modern{padding:8px 16px;border-radius:6px}:host .menu-item.variant-modern.size-compact{min-height:34px}:host .menu-item.variant-button{height:52px;width:60px;flex-direction:column;gap:1px;padding:3px 0;border-radius:8px;display:block;text-align:center;flex:unset;white-space:nowrap;overflow:hidden;container-name:menuitem-button}:host .menu-item.variant-button .menu-icon{font-size:32px}:host .menu-item.variant-button .menu-text h4{font-size:10px;font-style:normal;font-weight:400;line-height:130%}:host .menu-item.variant-button .menu-text .description{display:none}:host .menu-item.variant-button.size-compact{min-height:40px;width:50px}:host .menu-item.variant-button.size-compact .menu-icon{font-size:20px}:host .menu-item.variant-button.size-compact .menu-text h4{font-size:10px;font-style:normal;font-weight:400;line-height:130%}@container menuitem (max-width: 60px){.menu-item{gap:0}.menu-item .menu-text{opacity:0}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon" }] });
2261
2372
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwMenuItemComponent, decorators: [{
2262
2373
  type: Component,
2263
- args: [{ selector: 'fw-menu-item', template: "<div (click)=\"handleClick($event)\" *ngIf=\"!hidden\">\n <div\n [ngClass]=\"['menu-item', 'size-'+size, 'variant-'+variant, disabled?'disabled':'']\"\n [class.disabled]=\"disabled\">\n <div class=\"item-checkbox\" *ngIf=\"showCheckbox && multiSelect\">\n <input\n type=\"checkbox\"\n value=\"true\"\n [disabled]=\"disabled\"\n [checked]=\"selected\">\n </div>\n <div class=\"item-radiobutton\" *ngIf=\"showCheckbox && !multiSelect\">\n <input\n type=\"radio\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [checked]=\"selected\">\n </div>\n <fw-icon *ngIf=\"icon\" class=\"menu-icon\">{{ icon }}</fw-icon>\n <ng-content select=\"fw-avatar\"></ng-content>\n <div class=\"menu-text\" *ngIf=\"title\">\n <h4>{{ title }}</h4>\n <p *ngIf=\"description\" class=\"vision-p4 description\">{{ description }}</p>\n </div>\n <div class=\"key-text vision-p2\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{position:relative;display:flex}:host>div{display:flex;flex:1;text-decoration:none}:host:hover:not(.selected) .menu-item:not(.disabled),:host.focused:not(.selected) .menu-item:not(.disabled){background-color:var(--slate-hover);cursor:pointer}:host:hover:not(.selected) .menu-item:not(.disabled) .menu-icon,:host.focused:not(.selected) .menu-item:not(.disabled) .menu-icon{color:var(--primary-base)}:host:hover:not(.selected) .menu-item:not(.disabled) .menu-text h4,:host.focused:not(.selected) .menu-item:not(.disabled) .menu-text h4{color:var(--typography-base)}:host.selected .menu-item{background-color:var(--primary-hover);cursor:pointer}:host.selected .menu-item .menu-icon{color:var(--primary-base)}:host.selected .menu-item .menu-text h4{color:var(--typography-base)}:host.selected .menu-item.variant-modern:before{position:absolute;content:\" \";height:25px;border-left:3px solid var(--primary-base);margin-left:-16px}:host.selected .menu-item.variant-modern.size-compact:before{height:16px;border-left:3px solid var(--primary-base)}:host.selected .menu-item.variant-button:before{position:absolute;content:\" \";height:25px;border-left:3px solid var(--primary-base);margin-left:-14px;margin-top:10px}:host.selected .menu-item.variant-button.size-compact:before{margin-left:-15px;margin-top:4px;border-left:1px solid var(--primary-base)}:host.variant-modern.selected:before{position:absolute;content:\" \";height:25px;border-left:3px solid var(--primary-base);margin-left:-16px}:host.variant-modern.size-compact.selected:before{height:16px;border-left:3px solid var(--primary-base)}:host.collapsed .menu-item{container-name:menuitem;container-type:size}:host .menu-item{box-sizing:border-box;display:flex;flex-direction:row;align-items:center;flex:1;gap:8px;padding:8px;margin:1px 4px;border-radius:4px;color:var(--typography-muted);min-height:40px;width:100%}:host .menu-item .item-checkbox:empty{display:none}:host .menu-item .item-radiobutton:empty{display:none}:host .menu-item .menu-icon{font-size:18px;white-space:nowrap}:host .menu-item .menu-text{flex:1;overflow:hidden;padding:2px 0}:host .menu-item .menu-text h4{margin:0;color:var(--typography-muted);white-space:nowrap;overflow:hidden}:host .menu-item .menu-text p{margin:0}:host .menu-item .menu-text p.description{color:var(--typography-light)}:host .menu-item .key-text{display:flex;align-items:center;gap:8px;color:var(--typography-light)}:host .menu-item.size-compact{min-height:32px}:host .menu-item.size-compact .menu-text .description{display:none}:host .menu-item.disabled{opacity:.4;cursor:not-allowed}:host .menu-item.variant-modern{padding:8px 16px;border-radius:6px}:host .menu-item.variant-modern.size-compact{min-height:34px}:host .menu-item.variant-button{height:52px;width:60px;flex-direction:column;gap:1px;padding:3px 0;border-radius:8px;display:block;text-align:center;flex:unset;white-space:nowrap;overflow:hidden;container-name:menuitem-button}:host .menu-item.variant-button .menu-icon{font-size:32px}:host .menu-item.variant-button .menu-text h4{font-size:10px;font-style:normal;font-weight:400;line-height:130%}:host .menu-item.variant-button .menu-text .description{display:none}:host .menu-item.variant-button.size-compact{min-height:40px;width:50px}:host .menu-item.variant-button.size-compact .menu-icon{font-size:20px}:host .menu-item.variant-button.size-compact .menu-text h4{font-size:10px;font-style:normal;font-weight:400;line-height:130%}@container menuitem (max-width: 60px){.menu-item{gap:0}.menu-item .menu-text{opacity:0}}\n"] }]
2374
+ args: [{ selector: 'fw-menu-item', template: "<div (click)=\"handleClick($event)\" *ngIf=\"!hidden\">\n <div\n [ngClass]=\"['menu-item', 'size-'+size, 'variant-'+variant, disabled?'disabled':'']\"\n [class.disabled]=\"disabled\">\n <div class=\"item-checkbox\" *ngIf=\"showCheckbox && multiSelect\">\n <input\n type=\"checkbox\"\n value=\"true\"\n [disabled]=\"disabled\"\n [checked]=\"selected\">\n </div>\n <div class=\"item-radiobutton\" *ngIf=\"showCheckbox && !multiSelect\">\n <input\n type=\"radio\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [checked]=\"selected\">\n </div>\n <fw-icon *ngIf=\"icon\" class=\"menu-icon\">{{ icon }}</fw-icon>\n <ng-content select=\"fw-avatar\"></ng-content>\n <div class=\"menu-text\" *ngIf=\"title\">\n <h4>{{ title }}</h4>\n <p *ngIf=\"description\" class=\"vision-p4 description\">{{ description }}</p>\n </div>\n <div class=\"key-text vision-p2\">\n <ng-content></ng-content>\n </div>\n </div>\n</div>\n", styles: [":host{position:relative;display:flex}:host>div{display:flex;flex:1;text-decoration:none}:host:hover:not(.selected) .menu-item:not(.disabled),:host.focused:not(.selected) .menu-item:not(.disabled){background-color:var(--slate-hover);cursor:pointer}:host:hover:not(.selected) .menu-item:not(.disabled) .menu-icon,:host.focused:not(.selected) .menu-item:not(.disabled) .menu-icon{color:var(--primary-base)}:host:hover:not(.selected) .menu-item:not(.disabled) .menu-text h4,:host.focused:not(.selected) .menu-item:not(.disabled) .menu-text h4{color:var(--typography-base)}:host.selected .menu-item{background-color:var(--primary-hover);cursor:pointer}:host.selected .menu-item .menu-icon{color:var(--primary-base)}:host.selected .menu-item .menu-text h4{color:var(--typography-base)}:host.selected .menu-item.variant-modern:before{position:absolute;content:\" \";height:25px;border-left:3px solid var(--primary-base);margin-left:-16px}:host.selected .menu-item.variant-modern.size-compact:before{height:16px;border-left:3px solid var(--primary-base)}:host.selected .menu-item.variant-button:before{position:absolute;content:\" \";height:25px;border-left:3px solid var(--primary-base);margin-left:-14px;margin-top:10px}:host.selected .menu-item.variant-button.size-compact:before{margin-left:-15px;margin-top:4px;border-left:1px solid var(--primary-base)}:host.variant-modern.selected:before{position:absolute;content:\" \";height:25px;border-left:3px solid var(--primary-base);margin-left:-16px}:host.variant-modern.size-compact.selected:before{height:16px;border-left:3px solid var(--primary-base)}:host.collapsed .menu-item{container-name:menuitem;container-type:size}:host .menu-item{box-sizing:border-box;display:flex;flex-direction:row;align-items:center;flex:1;gap:8px;padding:8px;margin:1px 4px;border-radius:4px;color:var(--typography-muted);min-height:40px;width:100%}:host .menu-item .item-checkbox:empty{display:none}:host .menu-item .item-radiobutton{padding:0}:host .menu-item .item-radiobutton:empty{display:none}:host .menu-item .menu-icon{font-size:18px;white-space:nowrap}:host .menu-item .menu-text{flex:1;overflow:hidden;padding:2px 0}:host .menu-item .menu-text h4{margin:0;color:var(--typography-muted);white-space:nowrap;overflow:hidden}:host .menu-item .menu-text p{margin:0}:host .menu-item .menu-text p.description{color:var(--typography-light)}:host .menu-item .key-text{display:flex;align-items:center;gap:8px;color:var(--typography-light)}:host .menu-item.size-compact{min-height:32px}:host .menu-item.size-compact .menu-text .description{display:none}:host .menu-item.disabled{opacity:.4;cursor:not-allowed}:host .menu-item.variant-modern{padding:8px 16px;border-radius:6px}:host .menu-item.variant-modern.size-compact{min-height:34px}:host .menu-item.variant-button{height:52px;width:60px;flex-direction:column;gap:1px;padding:3px 0;border-radius:8px;display:block;text-align:center;flex:unset;white-space:nowrap;overflow:hidden;container-name:menuitem-button}:host .menu-item.variant-button .menu-icon{font-size:32px}:host .menu-item.variant-button .menu-text h4{font-size:10px;font-style:normal;font-weight:400;line-height:130%}:host .menu-item.variant-button .menu-text .description{display:none}:host .menu-item.variant-button.size-compact{min-height:40px;width:50px}:host .menu-item.variant-button.size-compact .menu-icon{font-size:20px}:host .menu-item.variant-button.size-compact .menu-text h4{font-size:10px;font-style:normal;font-weight:400;line-height:130%}@container menuitem (max-width: 60px){.menu-item{gap:0}.menu-item .menu-text{opacity:0}}\n"] }]
2264
2375
  }], propDecorators: { value: [{
2265
2376
  type: Input
2266
2377
  }], variant: [{
@@ -2314,10 +2425,11 @@ class FwMenuComponent {
2314
2425
  this.useCheckbox = false;
2315
2426
  this.openWidth = 'inherit';
2316
2427
  this.collapsedWidth = '44px';
2428
+ // eslint-disable-next-line @angular-eslint/no-output-native
2429
+ this.change = new EventEmitter();
2317
2430
  this._filterText = '';
2318
2431
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
2319
2432
  this.onChange = (value) => {
2320
- this.updateLayout();
2321
2433
  };
2322
2434
  this.onTouched = () => {
2323
2435
  };
@@ -2342,6 +2454,7 @@ class FwMenuComponent {
2342
2454
  writeValue(value) {
2343
2455
  this.value = value;
2344
2456
  this.onChange(this.value);
2457
+ this.change.emit(this.value);
2345
2458
  this.updateLayout();
2346
2459
  }
2347
2460
  registerOnChange(fn) {
@@ -2405,7 +2518,7 @@ class FwMenuComponent {
2405
2518
  }
2406
2519
  }
2407
2520
  FwMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2408
- FwMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwMenuComponent, selector: "fw-menu", inputs: { disabled: "disabled", size: "size", variant: "variant", collapsed: "collapsed", multiSelect: "multiSelect", useCheckbox: "useCheckbox", openWidth: "openWidth", collapsedWidth: "collapsedWidth", value: "value" }, providers: [{
2521
+ FwMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwMenuComponent, selector: "fw-menu", inputs: { disabled: "disabled", size: "size", variant: "variant", collapsed: "collapsed", multiSelect: "multiSelect", useCheckbox: "useCheckbox", openWidth: "openWidth", collapsedWidth: "collapsedWidth", value: "value" }, outputs: { change: "change" }, providers: [{
2409
2522
  provide: NG_VALUE_ACCESSOR,
2410
2523
  useExisting: FwMenuComponent,
2411
2524
  multi: true,
@@ -2461,6 +2574,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2461
2574
  type: Input
2462
2575
  }], value: [{
2463
2576
  type: Input
2577
+ }], change: [{
2578
+ type: Output
2464
2579
  }], menuItems: [{
2465
2580
  type: ContentChildren,
2466
2581
  args: [FwMenuItemComponent]
@@ -2470,6 +2585,8 @@ class FwTextInputComponent {
2470
2585
  constructor() {
2471
2586
  this.disabled = false;
2472
2587
  this.size = 'medium';
2588
+ this.type = 'text';
2589
+ this.maxLength = 255;
2473
2590
  // we bind this to host because that's where angular form apis put the error classes
2474
2591
  this.error = false;
2475
2592
  this.value = '';
@@ -2504,18 +2621,18 @@ class FwTextInputComponent {
2504
2621
  }
2505
2622
  }
2506
2623
  FwTextInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwTextInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2507
- FwTextInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwTextInputComponent, selector: "fw-text-input", inputs: { disabled: "disabled", leftIcon: "leftIcon", rightIcon: "rightIcon", context: "context", helperText: "helperText", errorText: "errorText", placeholder: "placeholder", readOnly: "readOnly", size: "size", error: "error" }, host: { properties: { "class.errored": "this.error" } }, providers: [{
2624
+ FwTextInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwTextInputComponent, selector: "fw-text-input", inputs: { disabled: "disabled", leftIcon: "leftIcon", rightIcon: "rightIcon", context: "context", helperText: "helperText", errorText: "errorText", placeholder: "placeholder", readOnly: "readOnly", size: "size", type: "type", maxLength: "maxLength", error: "error", value: "value" }, host: { properties: { "class.errored": "this.error" } }, providers: [{
2508
2625
  provide: NG_VALUE_ACCESSOR,
2509
2626
  useExisting: FwTextInputComponent,
2510
2627
  multi: true,
2511
- }], ngImport: i0, template: "<div class=\"full-container\">\n <div class=\"input-container\" [class]=\"size\">\n <fw-icon *ngIf=\"!!leftIcon\">{{ leftIcon }}</fw-icon>\n\n <input\n type=\"text\"\n (keyup)=\"changeHandler($event)\"\n (blur)=\"blurHandler()\"\n [value]=\"value\"\n [placeholder]=\"placeholder || ''\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\">\n\n <p class=\"context\" *ngIf=\"!!context\">{{ context }}</p>\n\n <fw-icon class=\"error-icon\">warning-circle</fw-icon>\n <fw-icon *ngIf=\"!!rightIcon\">{{ rightIcon }}</fw-icon>\n </div>\n <p class=\"helper-text\" *ngIf=\"!!helperText\">{{ helperText }}</p>\n <p class=\"error-text\" *ngIf=\"!!errorText\">{{ errorText }}</p>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700\";.vision-h1{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:22px}.vision-h2{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:18px}.vision-h3{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:16px}.vision-h4{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:14px}.vision-h5{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:12px;line-height:130%}.vision-p1{font-size:18px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p2{font-size:14px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p3{font-size:12px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p4,.full-container .helper-text,.full-container .error-text{font-size:10px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.full-container{display:flex;flex-direction:column;line-height:21px}.full-container .input-container{box-sizing:border-box;color:var(--typography-light);background:var(--page-light);display:flex;padding:8px;align-items:center;gap:5px;border-radius:6px;border:1px solid var(--separations-input);font-family:Inter,sans-serif}.full-container .input-container:focus-within{border:1px solid var(--primary-base)}.full-container .input-container input{min-width:0;font-size:14px;flex-grow:1;color:var(--typography-base);background:var(--page-light);border:none}.full-container .input-container input:focus{outline:none;border:none}.full-container .input-container input::placeholder{color:var(--typography-light)}.full-container .input-container .context{color:var(--typography-light)}.full-container .error-icon{display:none}.full-container .helper-text,.full-container .error-text{margin-top:4px;color:var(--typography-light);line-height:13px;margin-left:6px}.full-container .error-text{color:var(--red-base);display:none}.small{height:30px}.small>fw-icon{font-size:18px}.medium{height:36px}.medium>fw-icon{font-size:20px}.large{height:40px}.large>fw-icon{font-size:24px}:host.errored .input-container,:host.ng-touched.ng-invalid .input-container{border:1px solid var(--red-base)}:host.errored .error-icon,:host.ng-touched.ng-invalid .error-icon{color:var(--red-base);display:inline!important}:host.errored .helper-text,:host.errored .full-container .error-text,:host.ng-touched.ng-invalid .helper-text,:host.ng-touched.ng-invalid .full-container .error-text{display:none}:host.errored .error-text,:host.ng-touched.ng-invalid .error-text{display:block!important}:disabled{opacity:.4;cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon" }] });
2628
+ }], queries: [{ propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true }], ngImport: i0, template: "<div class=\"full-container\">\n <div class=\"input-container\" [class]=\"size\">\n <fw-icon *ngIf=\"!!leftIcon\">{{ leftIcon }}</fw-icon>\n\n <input\n *ngIf=\"!textInput\"\n [type]=\"type\"\n (keyup)=\"changeHandler($event)\"\n (blur)=\"blurHandler()\"\n [value]=\"value\"\n [maxLength]=\"maxLength\"\n [placeholder]=\"placeholder || ''\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\">\n <ng-content select=\"input\"></ng-content>\n <p class=\"context\" *ngIf=\"!!context\">{{ context }}</p>\n\n <fw-icon class=\"error-icon\">warning-circle</fw-icon>\n <fw-icon *ngIf=\"!!rightIcon\">{{ rightIcon }}</fw-icon>\n <ng-content></ng-content>\n </div>\n <p class=\"helper-text\" *ngIf=\"!!helperText\">{{ helperText }}</p>\n <p class=\"error-text\" *ngIf=\"!!errorText\">{{ errorText }}</p>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700\";.vision-h1{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:22px}.vision-h2{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:18px}.vision-h3{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:16px}.vision-h4{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:14px}.vision-h5{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:12px;line-height:130%}.vision-p1{font-size:18px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p2{font-size:14px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p3{font-size:12px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p4,.full-container .helper-text,.full-container .error-text{font-size:10px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.full-container{display:flex;flex-direction:column;line-height:21px}.full-container .input-container{box-sizing:border-box;color:var(--typography-light);background:var(--page-light);display:flex;padding:8px;align-items:center;gap:5px;border-radius:6px;border:1px solid var(--separations-input);font-family:Inter,sans-serif}.full-container .input-container:focus-within{border:1px solid var(--primary-base)}.full-container .input-container input{min-width:0;font-size:14px;flex-grow:1;color:var(--typography-base);background:var(--page-light);border:none}.full-container .input-container input:focus{outline:none;border:none}.full-container .input-container input::placeholder{color:var(--typography-light)}.full-container .input-container .context{color:var(--typography-light)}.full-container .error-icon{display:none}.full-container .helper-text,.full-container .error-text{margin-top:4px;color:var(--typography-light);line-height:13px;margin-left:6px}.full-container .error-text{color:var(--red-base);display:none}.small{height:30px}.small>fw-icon{font-size:18px}.medium{height:36px}.medium>fw-icon{font-size:20px}.large{height:40px}.large>fw-icon{font-size:24px}:host.errored .input-container,:host.ng-touched.ng-invalid .input-container{border:1px solid var(--red-base)}:host.errored .error-icon,:host.ng-touched.ng-invalid .error-icon{color:var(--red-base);display:inline!important}:host.errored .helper-text,:host.errored .full-container .error-text,:host.ng-touched.ng-invalid .helper-text,:host.ng-touched.ng-invalid .full-container .error-text{display:none}:host.errored .error-text,:host.ng-touched.ng-invalid .error-text{display:block!important}:disabled{opacity:.4;cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon" }] });
2512
2629
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwTextInputComponent, decorators: [{
2513
2630
  type: Component,
2514
2631
  args: [{ selector: 'fw-text-input', providers: [{
2515
2632
  provide: NG_VALUE_ACCESSOR,
2516
2633
  useExisting: FwTextInputComponent,
2517
2634
  multi: true,
2518
- }], template: "<div class=\"full-container\">\n <div class=\"input-container\" [class]=\"size\">\n <fw-icon *ngIf=\"!!leftIcon\">{{ leftIcon }}</fw-icon>\n\n <input\n type=\"text\"\n (keyup)=\"changeHandler($event)\"\n (blur)=\"blurHandler()\"\n [value]=\"value\"\n [placeholder]=\"placeholder || ''\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\">\n\n <p class=\"context\" *ngIf=\"!!context\">{{ context }}</p>\n\n <fw-icon class=\"error-icon\">warning-circle</fw-icon>\n <fw-icon *ngIf=\"!!rightIcon\">{{ rightIcon }}</fw-icon>\n </div>\n <p class=\"helper-text\" *ngIf=\"!!helperText\">{{ helperText }}</p>\n <p class=\"error-text\" *ngIf=\"!!errorText\">{{ errorText }}</p>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700\";.vision-h1{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:22px}.vision-h2{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:18px}.vision-h3{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:16px}.vision-h4{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:14px}.vision-h5{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:12px;line-height:130%}.vision-p1{font-size:18px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p2{font-size:14px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p3{font-size:12px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p4,.full-container .helper-text,.full-container .error-text{font-size:10px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.full-container{display:flex;flex-direction:column;line-height:21px}.full-container .input-container{box-sizing:border-box;color:var(--typography-light);background:var(--page-light);display:flex;padding:8px;align-items:center;gap:5px;border-radius:6px;border:1px solid var(--separations-input);font-family:Inter,sans-serif}.full-container .input-container:focus-within{border:1px solid var(--primary-base)}.full-container .input-container input{min-width:0;font-size:14px;flex-grow:1;color:var(--typography-base);background:var(--page-light);border:none}.full-container .input-container input:focus{outline:none;border:none}.full-container .input-container input::placeholder{color:var(--typography-light)}.full-container .input-container .context{color:var(--typography-light)}.full-container .error-icon{display:none}.full-container .helper-text,.full-container .error-text{margin-top:4px;color:var(--typography-light);line-height:13px;margin-left:6px}.full-container .error-text{color:var(--red-base);display:none}.small{height:30px}.small>fw-icon{font-size:18px}.medium{height:36px}.medium>fw-icon{font-size:20px}.large{height:40px}.large>fw-icon{font-size:24px}:host.errored .input-container,:host.ng-touched.ng-invalid .input-container{border:1px solid var(--red-base)}:host.errored .error-icon,:host.ng-touched.ng-invalid .error-icon{color:var(--red-base);display:inline!important}:host.errored .helper-text,:host.errored .full-container .error-text,:host.ng-touched.ng-invalid .helper-text,:host.ng-touched.ng-invalid .full-container .error-text{display:none}:host.errored .error-text,:host.ng-touched.ng-invalid .error-text{display:block!important}:disabled{opacity:.4;cursor:not-allowed}\n"] }]
2635
+ }], template: "<div class=\"full-container\">\n <div class=\"input-container\" [class]=\"size\">\n <fw-icon *ngIf=\"!!leftIcon\">{{ leftIcon }}</fw-icon>\n\n <input\n *ngIf=\"!textInput\"\n [type]=\"type\"\n (keyup)=\"changeHandler($event)\"\n (blur)=\"blurHandler()\"\n [value]=\"value\"\n [maxLength]=\"maxLength\"\n [placeholder]=\"placeholder || ''\"\n [readOnly]=\"readOnly\"\n [disabled]=\"disabled\">\n <ng-content select=\"input\"></ng-content>\n <p class=\"context\" *ngIf=\"!!context\">{{ context }}</p>\n\n <fw-icon class=\"error-icon\">warning-circle</fw-icon>\n <fw-icon *ngIf=\"!!rightIcon\">{{ rightIcon }}</fw-icon>\n <ng-content></ng-content>\n </div>\n <p class=\"helper-text\" *ngIf=\"!!helperText\">{{ helperText }}</p>\n <p class=\"error-text\" *ngIf=\"!!errorText\">{{ errorText }}</p>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700\";.vision-h1{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:22px}.vision-h2{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:18px}.vision-h3{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:16px}.vision-h4{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:14px}.vision-h5{font-family:Inter,sans-serif;color:var(--typography-base);font-weight:500;font-size:12px;line-height:130%}.vision-p1{font-size:18px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p2{font-size:14px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p3{font-size:12px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.vision-p4,.full-container .helper-text,.full-container .error-text{font-size:10px;font-family:Inter,sans-serif;color:var(--typography-base);font-weight:400}.full-container{display:flex;flex-direction:column;line-height:21px}.full-container .input-container{box-sizing:border-box;color:var(--typography-light);background:var(--page-light);display:flex;padding:8px;align-items:center;gap:5px;border-radius:6px;border:1px solid var(--separations-input);font-family:Inter,sans-serif}.full-container .input-container:focus-within{border:1px solid var(--primary-base)}.full-container .input-container input{min-width:0;font-size:14px;flex-grow:1;color:var(--typography-base);background:var(--page-light);border:none}.full-container .input-container input:focus{outline:none;border:none}.full-container .input-container input::placeholder{color:var(--typography-light)}.full-container .input-container .context{color:var(--typography-light)}.full-container .error-icon{display:none}.full-container .helper-text,.full-container .error-text{margin-top:4px;color:var(--typography-light);line-height:13px;margin-left:6px}.full-container .error-text{color:var(--red-base);display:none}.small{height:30px}.small>fw-icon{font-size:18px}.medium{height:36px}.medium>fw-icon{font-size:20px}.large{height:40px}.large>fw-icon{font-size:24px}:host.errored .input-container,:host.ng-touched.ng-invalid .input-container{border:1px solid var(--red-base)}:host.errored .error-icon,:host.ng-touched.ng-invalid .error-icon{color:var(--red-base);display:inline!important}:host.errored .helper-text,:host.errored .full-container .error-text,:host.ng-touched.ng-invalid .helper-text,:host.ng-touched.ng-invalid .full-container .error-text{display:none}:host.errored .error-text,:host.ng-touched.ng-invalid .error-text{display:block!important}:disabled{opacity:.4;cursor:not-allowed}\n"] }]
2519
2636
  }], propDecorators: { disabled: [{
2520
2637
  type: Input
2521
2638
  }], leftIcon: [{
@@ -2534,11 +2651,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2534
2651
  type: Input
2535
2652
  }], size: [{
2536
2653
  type: Input
2654
+ }], type: [{
2655
+ type: Input
2656
+ }], maxLength: [{
2657
+ type: Input
2537
2658
  }], error: [{
2538
2659
  type: HostBinding,
2539
2660
  args: ['class.errored']
2540
2661
  }, {
2541
2662
  type: Input
2663
+ }], textInput: [{
2664
+ type: ContentChild,
2665
+ args: ['textInput', { static: false }]
2666
+ }], value: [{
2667
+ type: Input
2542
2668
  }] } });
2543
2669
 
2544
2670
  class FwTextInputModule {
@@ -2608,7 +2734,7 @@ class FwMenuContainerComponent {
2608
2734
  }
2609
2735
  }
2610
2736
  FwMenuContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwMenuContainerComponent, deps: [{ token: i1$1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
2611
- FwMenuContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwMenuContainerComponent, selector: "fw-menu-container", inputs: { width: "width", maxHeight: "maxHeight", border: "border", shadow: "shadow", showFilter: "showFilter", filterText: "filterText", offset: "offset" }, host: { properties: { "attr.class": "this.classes", "style": "this.style" } }, queries: [{ propertyName: "menu", first: true, predicate: FwMenuComponent, descendants: true }], ngImport: i0, template: "<div>\n <div *ngIf=\"showFilter\" class=\"filter-box\" cdkMenuBar>\n <fw-text-input\n placeholder=\"Search\" leftIcon=\"search\" autofocus\n [(ngModel)]=\"filterText\" (ngModelChange)=\"filterTextChange($event)\">\n </fw-text-input>\n </div>\n <div class=\"menu-wrapper\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".fw-menu-container{display:block;border-radius:8px;background:var(--card-background);overflow:hidden auto}.fw-menu-container.border-default{border:1px solid var(--separations-base)}.fw-menu-container .filter-box{padding:8px;border-bottom:1px solid var(--separations-base)}.fw-menu-container .menu-wrapper{padding:6px 4px}.fw-menu-container fw-menu-separator{margin:6px -8px}\n"], dependencies: [{ kind: "directive", type: i2$1.CdkMenuBar, selector: "[cdkMenuBar]", exportAs: ["cdkMenuBar"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FwTextInputComponent, selector: "fw-text-input", inputs: ["disabled", "leftIcon", "rightIcon", "context", "helperText", "errorText", "placeholder", "readOnly", "size", "error"] }], encapsulation: i0.ViewEncapsulation.None });
2737
+ FwMenuContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwMenuContainerComponent, selector: "fw-menu-container", inputs: { width: "width", maxHeight: "maxHeight", border: "border", shadow: "shadow", showFilter: "showFilter", filterText: "filterText", offset: "offset" }, host: { properties: { "attr.class": "this.classes", "style": "this.style" } }, queries: [{ propertyName: "menu", first: true, predicate: FwMenuComponent, descendants: true }], ngImport: i0, template: "<div>\n <div *ngIf=\"showFilter\" class=\"filter-box\" cdkMenuBar>\n <fw-text-input\n placeholder=\"Search\" leftIcon=\"search\" autofocus\n [(ngModel)]=\"filterText\" (ngModelChange)=\"filterTextChange($event)\">\n </fw-text-input>\n </div>\n <div class=\"menu-wrapper\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".fw-menu-container{display:block;border-radius:8px;background:var(--card-background);overflow:hidden auto}.fw-menu-container.border-default{border:1px solid var(--separations-base)}.fw-menu-container .filter-box{padding:8px;border-bottom:1px solid var(--separations-base)}.fw-menu-container .menu-wrapper{padding:6px 4px}.fw-menu-container fw-menu-separator{margin:6px -8px}\n"], dependencies: [{ kind: "directive", type: i2$1.CdkMenuBar, selector: "[cdkMenuBar]", exportAs: ["cdkMenuBar"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FwTextInputComponent, selector: "fw-text-input", inputs: ["disabled", "leftIcon", "rightIcon", "context", "helperText", "errorText", "placeholder", "readOnly", "size", "type", "maxLength", "error", "value"] }], encapsulation: i0.ViewEncapsulation.None });
2612
2738
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwMenuContainerComponent, decorators: [{
2613
2739
  type: Component,
2614
2740
  args: [{ selector: 'fw-menu-container', encapsulation: ViewEncapsulation.None, template: "<div>\n <div *ngIf=\"showFilter\" class=\"filter-box\" cdkMenuBar>\n <fw-text-input\n placeholder=\"Search\" leftIcon=\"search\" autofocus\n [(ngModel)]=\"filterText\" (ngModelChange)=\"filterTextChange($event)\">\n </fw-text-input>\n </div>\n <div class=\"menu-wrapper\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".fw-menu-container{display:block;border-radius:8px;background:var(--card-background);overflow:hidden auto}.fw-menu-container.border-default{border:1px solid var(--separations-base)}.fw-menu-container .filter-box{padding:8px;border-bottom:1px solid var(--separations-base)}.fw-menu-container .menu-wrapper{padding:6px 4px}.fw-menu-container fw-menu-separator{margin:6px -8px}\n"] }]
@@ -2706,230 +2832,139 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
2706
2832
  }]
2707
2833
  }] });
2708
2834
 
2709
- class FwPopoverPanelComponent {
2835
+ class FwPaginatorComponent {
2710
2836
  constructor() {
2711
- this.mouseLeave = new EventEmitter();
2712
- }
2713
- get classes() {
2714
- return ['fw-popover-panel', 'fw-popover-' + this.position].join(' ');
2837
+ this.size = 'medium';
2838
+ this.color = 'slate';
2839
+ this.shape = 'rounded';
2840
+ this.variant = 'ghost';
2841
+ this.disabled = false;
2842
+ this.showNext = true;
2843
+ this.showPrevious = true;
2844
+ this.showFirst = false;
2845
+ this.showLast = false;
2846
+ this.pageIndex = 0;
2847
+ this.pageSize = 10;
2848
+ this.maxPagesShown = 10;
2849
+ this.length = 0;
2850
+ this.alignment = 'center';
2851
+ this.selectorTitle = 'Items per page:';
2852
+ this.page = new EventEmitter();
2853
+ }
2854
+ buildPageEvent(pageIndex) {
2855
+ return {
2856
+ length: this.length,
2857
+ pageSize: this.pageSize,
2858
+ pageIndex: pageIndex,
2859
+ previousPageIndex: this.pageIndex,
2860
+ rowIndexStart: this.getRowIndexStart(pageIndex),
2861
+ rowIndexEnd: this.getRowIndexEnd(pageIndex),
2862
+ };
2715
2863
  }
2716
- hidePopover(e) {
2717
- this.mouseLeave.emit(e);
2864
+ firstPage() {
2865
+ const evt = this.buildPageEvent(0);
2866
+ this.pageIndex = 0;
2867
+ this.page.emit(evt);
2868
+ }
2869
+ lastPage() {
2870
+ const evt = this.buildPageEvent(this.getNumberOfPages());
2871
+ this.pageIndex = this.getNumberOfPages() - 1;
2872
+ this.page.emit(evt);
2873
+ }
2874
+ nextPage() {
2875
+ if (this.hasNextPage()) {
2876
+ const evt = this.buildPageEvent(this.pageIndex + 1);
2877
+ this.pageIndex++;
2878
+ this.page.emit(evt);
2879
+ }
2718
2880
  }
2719
- }
2720
- FwPopoverPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2721
- FwPopoverPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwPopoverPanelComponent, selector: "fw-popover-panel", inputs: { position: "position" }, outputs: { mouseLeave: "mouseLeave" }, host: { listeners: { "mouseleave": "hidePopover($event)" }, properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<div class=\"fw-popover-content-wrapper\">\n <ng-content></ng-content>\n <div class=\"fw-popover-caret\"></div>\n</div>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,:host .fw-popover-content-wrapper{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}.vision-overlay{background-color:var(--separations-overlay)}:host .fw-popover-content-wrapper{position:relative;background:var(--card-background);border-radius:8px;border:1px solid var(--separations-base);min-width:60px;box-sizing:border-box}:host .fw-popover-content-wrapper .fw-popover-caret{position:absolute;overflow:hidden;width:25px;height:25px}:host .fw-popover-content-wrapper .fw-popover-caret:after{display:block;content:\"\";width:16px;height:16px;background:var(--card-background);border:1px solid var(--separations-base);transform:rotate(45deg);position:relative}:host.fw-popover-above{margin-bottom:16px}:host.fw-popover-above .fw-popover-caret{left:calc(50% - 12.5px);bottom:-16px;height:16px!important}:host.fw-popover-above .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-above-left{margin-bottom:16px}:host.fw-popover-above-left .fw-popover-caret{right:25px;bottom:-16px;height:16px!important}:host.fw-popover-above-left .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-above-right{margin-bottom:16px}:host.fw-popover-above-right .fw-popover-caret{left:25px;bottom:-16px;height:16px!important}:host.fw-popover-above-right .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-below{margin-top:16px}:host.fw-popover-below .fw-popover-caret{left:calc(50% - 12.5px);top:-16px;height:16px!important}:host.fw-popover-below .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-below-left{margin-top:16px}:host.fw-popover-below-left .fw-popover-caret{right:25px;top:-16px;height:16px!important}:host.fw-popover-below-left .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-below-right{margin-top:16px}:host.fw-popover-below-right .fw-popover-caret{left:25px;top:-16px;height:16px!important}:host.fw-popover-below-right .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-left{margin-right:16px}:host.fw-popover-left .fw-popover-caret{right:-16px;top:calc(50% - 12.5px);width:16px!important}:host.fw-popover-left .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-left-above{margin-right:16px}:host.fw-popover-left-above .fw-popover-caret{right:-16px;bottom:25px;width:16px!important}:host.fw-popover-left-above .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-left-below{margin-right:16px}:host.fw-popover-left-below .fw-popover-caret{right:-16px;top:25px;width:16px!important}:host.fw-popover-left-below .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-right{margin-left:16px}:host.fw-popover-right .fw-popover-caret{left:-16px;top:calc(50% - 12.5px);width:16px!important}:host.fw-popover-right .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}:host.fw-popover-right-above{margin-left:16px}:host.fw-popover-right-above .fw-popover-caret{left:-16px;bottom:25px;width:16px!important}:host.fw-popover-right-above .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}:host.fw-popover-right-below{margin-left:16px}:host.fw-popover-right-below .fw-popover-caret{left:-16px;top:25px;width:16px!important}:host.fw-popover-right-below .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}\n"] });
2722
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverPanelComponent, decorators: [{
2723
- type: Component,
2724
- args: [{ selector: 'fw-popover-panel', template: "<div class=\"fw-popover-content-wrapper\">\n <ng-content></ng-content>\n <div class=\"fw-popover-caret\"></div>\n</div>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,:host .fw-popover-content-wrapper{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}.vision-overlay{background-color:var(--separations-overlay)}:host .fw-popover-content-wrapper{position:relative;background:var(--card-background);border-radius:8px;border:1px solid var(--separations-base);min-width:60px;box-sizing:border-box}:host .fw-popover-content-wrapper .fw-popover-caret{position:absolute;overflow:hidden;width:25px;height:25px}:host .fw-popover-content-wrapper .fw-popover-caret:after{display:block;content:\"\";width:16px;height:16px;background:var(--card-background);border:1px solid var(--separations-base);transform:rotate(45deg);position:relative}:host.fw-popover-above{margin-bottom:16px}:host.fw-popover-above .fw-popover-caret{left:calc(50% - 12.5px);bottom:-16px;height:16px!important}:host.fw-popover-above .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-above-left{margin-bottom:16px}:host.fw-popover-above-left .fw-popover-caret{right:25px;bottom:-16px;height:16px!important}:host.fw-popover-above-left .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-above-right{margin-bottom:16px}:host.fw-popover-above-right .fw-popover-caret{left:25px;bottom:-16px;height:16px!important}:host.fw-popover-above-right .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-below{margin-top:16px}:host.fw-popover-below .fw-popover-caret{left:calc(50% - 12.5px);top:-16px;height:16px!important}:host.fw-popover-below .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-below-left{margin-top:16px}:host.fw-popover-below-left .fw-popover-caret{right:25px;top:-16px;height:16px!important}:host.fw-popover-below-left .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-below-right{margin-top:16px}:host.fw-popover-below-right .fw-popover-caret{left:25px;top:-16px;height:16px!important}:host.fw-popover-below-right .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-left{margin-right:16px}:host.fw-popover-left .fw-popover-caret{right:-16px;top:calc(50% - 12.5px);width:16px!important}:host.fw-popover-left .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-left-above{margin-right:16px}:host.fw-popover-left-above .fw-popover-caret{right:-16px;bottom:25px;width:16px!important}:host.fw-popover-left-above .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-left-below{margin-right:16px}:host.fw-popover-left-below .fw-popover-caret{right:-16px;top:25px;width:16px!important}:host.fw-popover-left-below .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-right{margin-left:16px}:host.fw-popover-right .fw-popover-caret{left:-16px;top:calc(50% - 12.5px);width:16px!important}:host.fw-popover-right .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}:host.fw-popover-right-above{margin-left:16px}:host.fw-popover-right-above .fw-popover-caret{left:-16px;bottom:25px;width:16px!important}:host.fw-popover-right-above .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}:host.fw-popover-right-below{margin-left:16px}:host.fw-popover-right-below .fw-popover-caret{left:-16px;top:25px;width:16px!important}:host.fw-popover-right-below .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}\n"] }]
2725
- }], propDecorators: { position: [{
2726
- type: Input
2727
- }], mouseLeave: [{
2728
- type: Output
2729
- }], classes: [{
2730
- type: HostBinding,
2731
- args: ['attr.class']
2732
- }], hidePopover: [{
2733
- type: HostListener,
2734
- args: ['mouseleave', ['$event']]
2735
- }] } });
2736
-
2737
- class FwPopoverComponent {
2738
- constructor() {
2739
- this.position = 'above';
2740
- this.isOpen = false;
2741
- this.action = 'mouseenter';
2742
- this.positionMap = {
2743
- 'above': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' },
2744
- 'above-left': { originX: 'center', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetX: 40 },
2745
- 'above-right': { originX: 'center', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetX: -40 },
2746
- 'below': { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' },
2747
- 'below-left': { originX: 'center', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetX: 40 },
2748
- 'below-right': { originX: 'center', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetX: -40 },
2749
- 'left': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },
2750
- 'left-above': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'bottom', offsetY: 37 },
2751
- 'left-below': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'top', offsetY: -40 },
2752
- 'right': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },
2753
- 'right-above': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'bottom', offsetY: 37 },
2754
- 'right-below': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'top', offsetY: -40 },
2755
- };
2881
+ previousPage() {
2882
+ if (this.hasPreviousPage()) {
2883
+ const evt = this.buildPageEvent(this.pageIndex - 1);
2884
+ this.pageIndex--;
2885
+ this.page.emit(evt);
2886
+ }
2756
2887
  }
2757
- ngOnChanges() {
2758
- if (this.action && this.trigger) {
2759
- const trigger = this.trigger;
2760
- if (this.action === 'mouseenter' && !trigger.onmouseenter) {
2761
- trigger.onclick = undefined;
2762
- trigger.style.cursor = 'pointer';
2763
- trigger.onmouseenter = () => {
2764
- this.isOpen = true;
2765
- };
2766
- // @ts-expect-error MouseEvent
2767
- trigger.onmouseleave = (e) => {
2768
- const relatedTarget = e.relatedTarget;
2769
- if (!relatedTarget.classList.contains('fw-popover-caret') && !relatedTarget.classList.contains('cdk-overlay-pane')) {
2770
- this.isOpen = false;
2771
- }
2772
- };
2773
- }
2774
- if (this.action === 'click' && !trigger.onclick) {
2775
- trigger.onmouseenter = undefined;
2776
- trigger.onmouseleave = undefined;
2777
- trigger.onclick = () => {
2778
- this.isOpen = !this.isOpen;
2779
- };
2888
+ setPage(pageIndex) {
2889
+ const evt = this.buildPageEvent(pageIndex);
2890
+ this.pageIndex = pageIndex;
2891
+ this.page.emit(evt);
2892
+ }
2893
+ getPages() {
2894
+ const pages = [];
2895
+ const currentSet = Math.ceil((this.pageIndex + 1) / this.maxPagesShown);
2896
+ for (let i = 0; i < this.getNumberOfPages(); i++) {
2897
+ if (currentSet === Math.ceil((i + 1) / this.maxPagesShown)) {
2898
+ pages.push({ pageIndex: i, number: i + 1, active: this.pageIndex === i });
2780
2899
  }
2781
2900
  }
2901
+ return pages;
2782
2902
  }
2783
- backdropClick() {
2784
- this.isOpen = false;
2903
+ getNumberOfPages() {
2904
+ return Math.ceil(this.length / this.pageSize);
2785
2905
  }
2786
- handlePanelLeave() {
2787
- if (this.action === 'mouseenter') {
2788
- this.isOpen = false;
2906
+ getRowIndexStart(pageIndex) {
2907
+ const index = pageIndex !== undefined ? pageIndex : this.pageIndex;
2908
+ return index * this.pageSize;
2909
+ }
2910
+ getRowIndexEnd(pageIndex) {
2911
+ const index = pageIndex !== undefined ? pageIndex : this.pageIndex;
2912
+ let indexEnd = (index * this.pageSize) + this.pageSize - 1;
2913
+ if (indexEnd >= this.length) {
2914
+ indexEnd = this.length - 1;
2789
2915
  }
2916
+ return indexEnd;
2917
+ }
2918
+ hasNextPage() {
2919
+ return (this.pageIndex !== this.getNumberOfPages() - 1);
2920
+ }
2921
+ hasPreviousPage() {
2922
+ return (this.pageIndex > 0);
2790
2923
  }
2791
2924
  }
2792
- FwPopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2793
- FwPopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwPopoverComponent, selector: "fw-popover", inputs: { position: "position", trigger: "trigger", isOpen: "isOpen", action: "action", flyoutPanel: "flyoutPanel" }, usesOnChanges: true, ngImport: i0, template: "<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"action==='click'\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayPositions]=\"[positionMap[position]]\"\n (backdropClick)=\"backdropClick()\"\n (detach)=\"backdropClick()\">\n <fw-popover-panel [position]=\"position\" (mouseLeave)=\"handlePanelLeave()\">\n <ng-content></ng-content>\n </fw-popover-panel>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "component", type: FwPopoverPanelComponent, selector: "fw-popover-panel", inputs: ["position"], outputs: ["mouseLeave"] }] });
2794
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverComponent, decorators: [{
2925
+ FwPaginatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPaginatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2926
+ FwPaginatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwPaginatorComponent, selector: "fw-paginator", inputs: { size: "size", color: "color", shape: "shape", variant: "variant", disabled: "disabled", showNext: "showNext", showPrevious: "showPrevious", showFirst: "showFirst", showLast: "showLast", pageIndex: "pageIndex", pageSize: "pageSize", maxPagesShown: "maxPagesShown", length: "length", alignment: "alignment", selectorTitle: "selectorTitle" }, outputs: { page: "page" }, ngImport: i0, template: "<div [ngClass]=\"['paginator', variant, color, size, shape, alignment]\">\n <div class=\"pages-list\">\n <button\n *ngIf=\"showFirst\" class=\"page-item page-action page-first\" [disabled]=\"!hasPreviousPage() || disabled\"\n (click)=\"firstPage()\">\n <fw-icon>arrow-back-collapse</fw-icon>\n </button>\n <button\n *ngIf=\"showPrevious\"\n class=\"page-item page-action page-previous\" [disabled]=\"!hasPreviousPage() || disabled\" (click)=\"previousPage()\">\n <fw-icon>chevron-back</fw-icon>\n </button>\n <button\n [ngClass]=\"['page-item', 'page-number', page.active ? 'page-active': '']\"\n [disabled]=\"disabled\"\n *ngFor=\"let page of getPages()\"\n (click)=\"setPage(page.pageIndex)\"\n >\n <h4>{{ page.number }}</h4>\n </button>\n <button\n *ngIf=\"showNext\" class=\"page-item page-action page-next\" [disabled]=\"!hasNextPage() || disabled\"\n (click)=\"nextPage()\">\n <fw-icon>chevron-forward</fw-icon>\n </button>\n <button\n *ngIf=\"showLast\" class=\"page-item page-action page-last\" [disabled]=\"!hasNextPage() || disabled\"\n (click)=\"lastPage()\">\n <fw-icon>arrow-forward-collapse</fw-icon>\n </button>\n </div>\n</div>\n", styles: [":host .paginator{display:flex}:host .paginator button{border:none;background-color:transparent}:host .paginator .page-item{box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;align-items:center;border-radius:4px}:host .paginator .page-item:disabled{color:var(--typography-muted);cursor:not-allowed}:host .paginator .page-item:disabled h4{opacity:.4}:host .paginator .page-action fw-icon{font-size:22px}:host .paginator .page-action:disabled{opacity:.4}:host .paginator .pages-list{box-sizing:border-box;display:flex;gap:4px}:host .paginator .pages-list .page-number h4{margin:0;color:var(--typography-base)}:host .paginator .pages-list .page-number:disabled h4{color:var(--slate-base)!important}:host .paginator .pages-list .page-active{background-color:var(--slate-focus)}:host .paginator .pages-list .page-active:disabled{background-color:transparent}:host .paginator.start{justify-content:flex-start}:host .paginator.center{justify-content:center}:host .paginator.end{justify-content:flex-end}:host .paginator.large .page-item{width:40px;height:40px}:host .paginator.medium .page-item{width:32px;height:32px}:host .paginator.small .page-item{width:26px;height:26px}:host .paginator.primary .page-active:not(:disabled){background-color:var(--primary-base)!important}:host .paginator.primary .page-active:not(:disabled) h4{color:var(--typography-contrast)!important}:host .paginator.secondary .page-active:not(:disabled){background-color:var(--secondary-base)!important}:host .paginator.secondary .page-active:not(:disabled) h4{color:var(--typography-contrast)!important}:host .paginator.outline .page-item{border:1px solid var(--slate-border)}:host .paginator.outline .page-number:disabled{border:1px solid var(--slate-border)!important;background-color:transparent!important}:host .paginator.outline.primary .page-active{background-color:var(--primary-hover)!important;border-color:var(--primary-border)!important}:host .paginator.outline.primary .page-active h4{color:var(--primary-base)!important}:host .paginator.outline.primary .page-active:disabled{border:1px solid var(--slate-border)!important;background-color:transparent!important}:host .paginator.outline.secondary .page-active{background-color:var(--secondary-hover)!important;border-color:var(--secondary-border)!important}:host .paginator.outline.secondary .page-active h4{color:var(--secondary-base)!important}:host .paginator.outline.secondary .page-active:disabled{border:1px solid var(--slate-border)!important;background-color:transparent!important}:host .paginator.solid .page-item{border:1px solid var(--slate-border);background-color:var(--card-background)}:host .paginator.solid .page-number:disabled{border:1px solid var(--slate-border)!important;background-color:var(--card-background)!important;opacity:.4}:host .paginator.solid .page-number:disabled h4{opacity:1}:host .paginator.circle .page-number{border-radius:999px!important}:host .paginator .pages-selector{display:flex;align-items:center;justify-content:flex-end;gap:16px}:host .paginator .pages-selector>div{display:flex;align-items:center}:host .paginator .pages-selector fw-icon{font-size:22px}:host .paginator .pages-selector .record-count{min-width:130px;text-align:center}:host .paginator .pages-selector p.disabled{color:var(--typography-light)}\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: "component", type: FwIconComponent, selector: "fw-icon" }] });
2927
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPaginatorComponent, decorators: [{
2795
2928
  type: Component,
2796
- args: [{ selector: 'fw-popover', template: "<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"action==='click'\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayPositions]=\"[positionMap[position]]\"\n (backdropClick)=\"backdropClick()\"\n (detach)=\"backdropClick()\">\n <fw-popover-panel [position]=\"position\" (mouseLeave)=\"handlePanelLeave()\">\n <ng-content></ng-content>\n </fw-popover-panel>\n</ng-template>\n" }]
2797
- }], propDecorators: { position: [{
2929
+ args: [{ selector: 'fw-paginator', template: "<div [ngClass]=\"['paginator', variant, color, size, shape, alignment]\">\n <div class=\"pages-list\">\n <button\n *ngIf=\"showFirst\" class=\"page-item page-action page-first\" [disabled]=\"!hasPreviousPage() || disabled\"\n (click)=\"firstPage()\">\n <fw-icon>arrow-back-collapse</fw-icon>\n </button>\n <button\n *ngIf=\"showPrevious\"\n class=\"page-item page-action page-previous\" [disabled]=\"!hasPreviousPage() || disabled\" (click)=\"previousPage()\">\n <fw-icon>chevron-back</fw-icon>\n </button>\n <button\n [ngClass]=\"['page-item', 'page-number', page.active ? 'page-active': '']\"\n [disabled]=\"disabled\"\n *ngFor=\"let page of getPages()\"\n (click)=\"setPage(page.pageIndex)\"\n >\n <h4>{{ page.number }}</h4>\n </button>\n <button\n *ngIf=\"showNext\" class=\"page-item page-action page-next\" [disabled]=\"!hasNextPage() || disabled\"\n (click)=\"nextPage()\">\n <fw-icon>chevron-forward</fw-icon>\n </button>\n <button\n *ngIf=\"showLast\" class=\"page-item page-action page-last\" [disabled]=\"!hasNextPage() || disabled\"\n (click)=\"lastPage()\">\n <fw-icon>arrow-forward-collapse</fw-icon>\n </button>\n </div>\n</div>\n", styles: [":host .paginator{display:flex}:host .paginator button{border:none;background-color:transparent}:host .paginator .page-item{box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;align-items:center;border-radius:4px}:host .paginator .page-item:disabled{color:var(--typography-muted);cursor:not-allowed}:host .paginator .page-item:disabled h4{opacity:.4}:host .paginator .page-action fw-icon{font-size:22px}:host .paginator .page-action:disabled{opacity:.4}:host .paginator .pages-list{box-sizing:border-box;display:flex;gap:4px}:host .paginator .pages-list .page-number h4{margin:0;color:var(--typography-base)}:host .paginator .pages-list .page-number:disabled h4{color:var(--slate-base)!important}:host .paginator .pages-list .page-active{background-color:var(--slate-focus)}:host .paginator .pages-list .page-active:disabled{background-color:transparent}:host .paginator.start{justify-content:flex-start}:host .paginator.center{justify-content:center}:host .paginator.end{justify-content:flex-end}:host .paginator.large .page-item{width:40px;height:40px}:host .paginator.medium .page-item{width:32px;height:32px}:host .paginator.small .page-item{width:26px;height:26px}:host .paginator.primary .page-active:not(:disabled){background-color:var(--primary-base)!important}:host .paginator.primary .page-active:not(:disabled) h4{color:var(--typography-contrast)!important}:host .paginator.secondary .page-active:not(:disabled){background-color:var(--secondary-base)!important}:host .paginator.secondary .page-active:not(:disabled) h4{color:var(--typography-contrast)!important}:host .paginator.outline .page-item{border:1px solid var(--slate-border)}:host .paginator.outline .page-number:disabled{border:1px solid var(--slate-border)!important;background-color:transparent!important}:host .paginator.outline.primary .page-active{background-color:var(--primary-hover)!important;border-color:var(--primary-border)!important}:host .paginator.outline.primary .page-active h4{color:var(--primary-base)!important}:host .paginator.outline.primary .page-active:disabled{border:1px solid var(--slate-border)!important;background-color:transparent!important}:host .paginator.outline.secondary .page-active{background-color:var(--secondary-hover)!important;border-color:var(--secondary-border)!important}:host .paginator.outline.secondary .page-active h4{color:var(--secondary-base)!important}:host .paginator.outline.secondary .page-active:disabled{border:1px solid var(--slate-border)!important;background-color:transparent!important}:host .paginator.solid .page-item{border:1px solid var(--slate-border);background-color:var(--card-background)}:host .paginator.solid .page-number:disabled{border:1px solid var(--slate-border)!important;background-color:var(--card-background)!important;opacity:.4}:host .paginator.solid .page-number:disabled h4{opacity:1}:host .paginator.circle .page-number{border-radius:999px!important}:host .paginator .pages-selector{display:flex;align-items:center;justify-content:flex-end;gap:16px}:host .paginator .pages-selector>div{display:flex;align-items:center}:host .paginator .pages-selector fw-icon{font-size:22px}:host .paginator .pages-selector .record-count{min-width:130px;text-align:center}:host .paginator .pages-selector p.disabled{color:var(--typography-light)}\n"] }]
2930
+ }], propDecorators: { size: [{
2798
2931
  type: Input
2799
- }], trigger: [{
2932
+ }], color: [{
2800
2933
  type: Input
2801
- }], isOpen: [{
2934
+ }], shape: [{
2802
2935
  type: Input
2803
- }], action: [{
2936
+ }], variant: [{
2804
2937
  type: Input
2805
- }], flyoutPanel: [{
2938
+ }], disabled: [{
2939
+ type: Input
2940
+ }], showNext: [{
2941
+ type: Input
2942
+ }], showPrevious: [{
2943
+ type: Input
2944
+ }], showFirst: [{
2945
+ type: Input
2946
+ }], showLast: [{
2947
+ type: Input
2948
+ }], pageIndex: [{
2806
2949
  type: Input
2950
+ }], pageSize: [{
2951
+ type: Input
2952
+ }], maxPagesShown: [{
2953
+ type: Input
2954
+ }], length: [{
2955
+ type: Input
2956
+ }], alignment: [{
2957
+ type: Input
2958
+ }], selectorTitle: [{
2959
+ type: Input
2960
+ }], page: [{
2961
+ type: Output
2807
2962
  }] } });
2808
2963
 
2809
- class FwPopoverModule {
2810
- }
2811
- FwPopoverModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2812
- FwPopoverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverModule, declarations: [FwPopoverComponent,
2813
- FwPopoverPanelComponent], imports: [CommonModule,
2814
- FwLayoutsModule,
2815
- OverlayModule], exports: [FwPopoverComponent,
2816
- FwPopoverPanelComponent] });
2817
- FwPopoverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverModule, providers: [
2818
- Overlay,
2819
- ], imports: [CommonModule,
2820
- FwLayoutsModule,
2821
- OverlayModule] });
2822
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverModule, decorators: [{
2823
- type: NgModule,
2824
- args: [{
2825
- imports: [
2826
- CommonModule,
2827
- FwLayoutsModule,
2828
- OverlayModule,
2829
- ],
2830
- exports: [
2831
- FwPopoverComponent,
2832
- FwPopoverPanelComponent,
2833
- ],
2834
- declarations: [
2835
- FwPopoverComponent,
2836
- FwPopoverPanelComponent,
2837
- ],
2838
- providers: [
2839
- Overlay,
2840
- ],
2841
- }]
2842
- }] });
2843
-
2844
- class BackButtonComponent {
2845
- constructor(location) {
2846
- this.location = location;
2847
- this.class = 'fw-back-button';
2848
- }
2849
- }
2850
- BackButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BackButtonComponent, deps: [{ token: i1.Location }], target: i0.ɵɵFactoryTarget.Component });
2851
- BackButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: BackButtonComponent, selector: "fw-back-button", host: { properties: { "attr.class": "this.class" } }, ngImport: i0, template: "<button (click)=\"location.back()\"><fw-icon>arrow-back</fw-icon></button>", styles: [".fw-back-button button{color:var(--typography-light);background-color:transparent;border:1px solid var(--typography-light);width:44px;height:44px;border-radius:36px;display:flex;align-items:center;justify-content:center}.fw-back-button button fw-icon{line-height:42px;font-size:24px;color:var(--typography-light)}\n"], dependencies: [{ kind: "component", type: FwIconComponent, selector: "fw-icon" }], encapsulation: i0.ViewEncapsulation.None });
2852
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BackButtonComponent, decorators: [{
2853
- type: Component,
2854
- args: [{ selector: 'fw-back-button', encapsulation: ViewEncapsulation.None, template: "<button (click)=\"location.back()\"><fw-icon>arrow-back</fw-icon></button>", styles: [".fw-back-button button{color:var(--typography-light);background-color:transparent;border:1px solid var(--typography-light);width:44px;height:44px;border-radius:36px;display:flex;align-items:center;justify-content:center}.fw-back-button button fw-icon{line-height:42px;font-size:24px;color:var(--typography-light)}\n"] }]
2855
- }], ctorParameters: function () { return [{ type: i1.Location }]; }, propDecorators: { class: [{
2856
- type: HostBinding,
2857
- args: ['attr.class']
2858
- }] } });
2859
-
2860
- class FwSectionHeadingComponent {
2861
- constructor() {
2862
- this.class = 'fw-section-heading';
2863
- this.backButton = false;
2864
- }
2865
- }
2866
- FwSectionHeadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSectionHeadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2867
- FwSectionHeadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwSectionHeadingComponent, selector: "fw-section-heading", inputs: { title: "title", description: "description", backButton: "backButton", icon: "icon" }, host: { properties: { "attr.class": "this.class" } }, ngImport: i0, template: "<div class=\"heading-area\">\n <fw-back-button *ngIf=\"backButton\"></fw-back-button>\n <fw-icon *ngIf=\"icon\" class=\"heading-icon\">{{ icon }}</fw-icon>\n <ng-content select=\"fw-icon\"></ng-content>\n <div>\n <h2 class=\"section-heading\">{{ title }}\n <ng-content select=\"fw-chip\"></ng-content>\n </h2>\n <p *ngIf=\"description\">{{ description }}</p>\n <ng-content select=\"p\"></ng-content>\n </div>\n</div>\n<div class=\"right-content\">\n <ng-content></ng-content>\n</div>\n", styles: [".fw-section-heading{width:100%;display:flex;justify-content:space-between;align-items:center}.fw-section-heading .heading-area{display:flex;align-items:center;gap:20px}.fw-section-heading .heading-area h2{color:var(--typography-base);margin:0;display:flex;align-items:center;gap:8px}.fw-section-heading .heading-area p{color:var(--typography-muted);margin:0;display:flex;align-items:center;gap:8px}.fw-section-heading .heading-area p a{color:var(--typography-muted)}.fw-section-heading .heading-area fw-icon.heading-icon{box-sizing:border-box;color:var(--primary-base);width:44px;height:44px;font-size:32px;text-align:center;justify-content:center;padding:6px}.fw-section-heading .right-content{display:flex;gap:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon" }, { kind: "component", type: BackButtonComponent, selector: "fw-back-button" }], encapsulation: i0.ViewEncapsulation.None });
2868
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSectionHeadingComponent, decorators: [{
2869
- type: Component,
2870
- args: [{ selector: 'fw-section-heading', encapsulation: ViewEncapsulation.None, template: "<div class=\"heading-area\">\n <fw-back-button *ngIf=\"backButton\"></fw-back-button>\n <fw-icon *ngIf=\"icon\" class=\"heading-icon\">{{ icon }}</fw-icon>\n <ng-content select=\"fw-icon\"></ng-content>\n <div>\n <h2 class=\"section-heading\">{{ title }}\n <ng-content select=\"fw-chip\"></ng-content>\n </h2>\n <p *ngIf=\"description\">{{ description }}</p>\n <ng-content select=\"p\"></ng-content>\n </div>\n</div>\n<div class=\"right-content\">\n <ng-content></ng-content>\n</div>\n", styles: [".fw-section-heading{width:100%;display:flex;justify-content:space-between;align-items:center}.fw-section-heading .heading-area{display:flex;align-items:center;gap:20px}.fw-section-heading .heading-area h2{color:var(--typography-base);margin:0;display:flex;align-items:center;gap:8px}.fw-section-heading .heading-area p{color:var(--typography-muted);margin:0;display:flex;align-items:center;gap:8px}.fw-section-heading .heading-area p a{color:var(--typography-muted)}.fw-section-heading .heading-area fw-icon.heading-icon{box-sizing:border-box;color:var(--primary-base);width:44px;height:44px;font-size:32px;text-align:center;justify-content:center;padding:6px}.fw-section-heading .right-content{display:flex;gap:10px}\n"] }]
2871
- }], ctorParameters: function () { return []; }, propDecorators: { class: [{
2872
- type: HostBinding,
2873
- args: ['attr.class']
2874
- }], title: [{
2875
- type: Input
2876
- }], description: [{
2877
- type: Input
2878
- }], backButton: [{
2879
- type: Input
2880
- }], icon: [{
2881
- type: Input
2882
- }] } });
2883
-
2884
- class FwSubsectionHeadingComponent {
2885
- constructor() {
2886
- }
2887
- }
2888
- FwSubsectionHeadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSubsectionHeadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2889
- FwSubsectionHeadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwSubsectionHeadingComponent, selector: "fw-subsection-heading", inputs: { title: "title", icon: "icon" }, ngImport: i0, template: "<div class=\"heading-area\">\n <fw-icon *ngIf=\"icon\">{{ icon }}</fw-icon>\n <h3 class=\"subsection-heading\">{{ title }}</h3>\n</div>\n<div class=\"right-content\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{width:100%;display:flex;justify-content:space-between;align-items:center}:host .heading-area{display:flex;align-items:center;gap:8px}:host .heading-area h3{color:var(--typography-base);margin:0}:host .heading-area fw-icon{color:var(--typography-light);width:24px;height:24px;font-size:24px;text-align:center}:host .right-content{display:flex;gap:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon" }] });
2890
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSubsectionHeadingComponent, decorators: [{
2891
- type: Component,
2892
- args: [{ selector: 'fw-subsection-heading', template: "<div class=\"heading-area\">\n <fw-icon *ngIf=\"icon\">{{ icon }}</fw-icon>\n <h3 class=\"subsection-heading\">{{ title }}</h3>\n</div>\n<div class=\"right-content\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{width:100%;display:flex;justify-content:space-between;align-items:center}:host .heading-area{display:flex;align-items:center;gap:8px}:host .heading-area h3{color:var(--typography-base);margin:0}:host .heading-area fw-icon{color:var(--typography-light);width:24px;height:24px;font-size:24px;text-align:center}:host .right-content{display:flex;gap:10px}\n"] }]
2893
- }], ctorParameters: function () { return []; }, propDecorators: { title: [{
2894
- type: Input
2895
- }], icon: [{
2896
- type: Input
2897
- }] } });
2898
-
2899
- class FwSectionHeadingModule {
2900
- }
2901
- FwSectionHeadingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSectionHeadingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
2902
- FwSectionHeadingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: FwSectionHeadingModule, declarations: [BackButtonComponent,
2903
- FwSectionHeadingComponent,
2904
- FwSubsectionHeadingComponent], imports: [CommonModule,
2905
- FwButtonModule,
2906
- FwIconModule], exports: [FwSectionHeadingComponent,
2907
- FwSubsectionHeadingComponent] });
2908
- FwSectionHeadingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSectionHeadingModule, imports: [CommonModule,
2909
- FwButtonModule,
2910
- FwIconModule] });
2911
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSectionHeadingModule, decorators: [{
2912
- type: NgModule,
2913
- args: [{
2914
- imports: [
2915
- CommonModule,
2916
- FwButtonModule,
2917
- FwIconModule,
2918
- ],
2919
- exports: [
2920
- FwSectionHeadingComponent,
2921
- FwSubsectionHeadingComponent,
2922
- ],
2923
- declarations: [
2924
- BackButtonComponent,
2925
- FwSectionHeadingComponent,
2926
- FwSubsectionHeadingComponent,
2927
- ],
2928
- }]
2929
- }] });
2930
-
2964
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2931
2965
  class FwMultiSelectMenuComponent {
2932
- constructor() {
2966
+ constructor(_changeDetectorRef) {
2967
+ this._changeDetectorRef = _changeDetectorRef;
2933
2968
  this.options = [];
2934
2969
  this.valueProperty = 'value';
2935
2970
  this.titleProperty = 'title';
@@ -2944,15 +2979,34 @@ class FwMultiSelectMenuComponent {
2944
2979
  this.minHeight = '36px';
2945
2980
  this.maxHeight = '200px';
2946
2981
  this.placeholder = 'Select something...';
2947
- this.value = [];
2948
2982
  this.selectedValues = [];
2983
+ this.selectedOptions = [];
2949
2984
  this.filteredOptions = [];
2950
2985
  this.subscriptions = [];
2951
2986
  this.focused = 0;
2952
2987
  this.touched = false;
2988
+ this._isOpen = false;
2953
2989
  this.onTouched = () => {
2954
2990
  };
2955
2991
  }
2992
+ outsideClick() {
2993
+ if (this._isOpen) {
2994
+ this.trigger.close();
2995
+ this._isOpen = false;
2996
+ }
2997
+ if (this.trigger && this.trigger.isOpen()) {
2998
+ this._isOpen = true;
2999
+ }
3000
+ }
3001
+ get value() {
3002
+ return this._value;
3003
+ }
3004
+ set value(newValue) {
3005
+ if (newValue && newValue.length > 0) {
3006
+ this._valueType = typeof newValue[0];
3007
+ }
3008
+ this.updateValue(newValue);
3009
+ }
2956
3010
  registerOnChange(fn) {
2957
3011
  this.onChange = fn;
2958
3012
  }
@@ -2963,7 +3017,8 @@ class FwMultiSelectMenuComponent {
2963
3017
  this.disabled = isDisabled;
2964
3018
  }
2965
3019
  writeValue(value) {
2966
- this.updateValue(value);
3020
+ // this.updateValue(value);
3021
+ this.value = value;
2967
3022
  }
2968
3023
  ngOnChanges(changes) {
2969
3024
  if (changes.options) {
@@ -2976,14 +3031,20 @@ class FwMultiSelectMenuComponent {
2976
3031
  }
2977
3032
  }
2978
3033
  ngAfterContentInit() {
2979
- if (this.options && this.options.length === 0 && this.menuItems && this.menuItems.length > 0) {
2980
- this.options = [];
2981
- this.menuItems.forEach(item => {
2982
- this.options.push({ value: item.value, label: item.title, icon: item.icon });
2983
- const sub = item.click.subscribe(value => this.menu.writeValue(value));
2984
- this.subscriptions.push(sub);
2985
- });
2986
- this.updateFilteredItems();
3034
+ if (this.menuItems && this.menuItems.length > 0) {
3035
+ if (this.options && this.options.length === 0) {
3036
+ this.options = [];
3037
+ this.menuItems.forEach(item => {
3038
+ const opt = { value: item.value, label: item.title, icon: item.icon };
3039
+ this.options.push(opt);
3040
+ if (this.selectedValues.indexOf(item.value.toString()) >= 0) {
3041
+ this.selectedOptions.push(opt);
3042
+ }
3043
+ const sub = item.click.subscribe(value => this.menu.writeValue(value));
3044
+ this.subscriptions.push(sub);
3045
+ });
3046
+ this.updateFilteredItems();
3047
+ }
2987
3048
  }
2988
3049
  }
2989
3050
  handleTouched() {
@@ -3040,11 +3101,26 @@ class FwMultiSelectMenuComponent {
3040
3101
  }
3041
3102
  }
3042
3103
  updateValue(value) {
3043
- this.value = value;
3104
+ this._value = value;
3044
3105
  this.selectedValues = [];
3106
+ this.selectedOptions = [];
3045
3107
  if (value) {
3046
3108
  value.forEach(val => {
3047
- this.selectedValues.push(val[this.valueProperty]);
3109
+ if (value && this._valueType === 'object') {
3110
+ this.selectedValues.push(val[this.valueProperty]);
3111
+ this.selectedOptions.push(val);
3112
+ }
3113
+ else {
3114
+ this.selectedValues.push(val);
3115
+ if (this.options && this.options.length) {
3116
+ this.selectedOptions = [];
3117
+ this.options.forEach(opt => {
3118
+ if (value.indexOf(opt[this.valueProperty]) >= 0) {
3119
+ this.selectedOptions.push(opt);
3120
+ }
3121
+ });
3122
+ }
3123
+ }
3048
3124
  });
3049
3125
  }
3050
3126
  this.updateFilteredItems();
@@ -3128,14 +3204,14 @@ class FwMultiSelectMenuComponent {
3128
3204
  }
3129
3205
  }
3130
3206
  }
3131
- FwMultiSelectMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwMultiSelectMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3132
- FwMultiSelectMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwMultiSelectMenuComponent, selector: "fw-multi-select", inputs: { options: "options", valueProperty: "valueProperty", titleProperty: "titleProperty", iconProperty: "iconProperty", disabled: "disabled", useCheckbox: "useCheckbox", closeOnSelect: "closeOnSelect", filterItemsOnSelect: "filterItemsOnSelect", maxSelectedShown: "maxSelectedShown", width: "width", minHeight: "minHeight", maxHeight: "maxHeight", optionsWidth: "optionsWidth", maxOptionsHeight: "maxOptionsHeight", placeholder: "placeholder" }, providers: [
3207
+ FwMultiSelectMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwMultiSelectMenuComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
3208
+ FwMultiSelectMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwMultiSelectMenuComponent, selector: "fw-multi-select", inputs: { options: "options", valueProperty: "valueProperty", titleProperty: "titleProperty", iconProperty: "iconProperty", disabled: "disabled", useCheckbox: "useCheckbox", closeOnSelect: "closeOnSelect", filterItemsOnSelect: "filterItemsOnSelect", maxSelectedShown: "maxSelectedShown", width: "width", minHeight: "minHeight", maxHeight: "maxHeight", optionsWidth: "optionsWidth", maxOptionsHeight: "maxOptionsHeight", placeholder: "placeholder", value: "value" }, host: { listeners: { "document:click": "outsideClick()" } }, providers: [
3133
3209
  {
3134
3210
  provide: NG_VALUE_ACCESSOR,
3135
3211
  useExisting: forwardRef(() => FwMultiSelectMenuComponent),
3136
3212
  multi: true,
3137
3213
  },
3138
- ], queries: [{ propertyName: "menuItems", predicate: FwMenuItemComponent }], viewQueries: [{ propertyName: "trigger", first: true, predicate: CdkMenuTrigger, descendants: true }, { propertyName: "menu", first: true, predicate: FwMenuComponent, descendants: true }, { propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true }, { propertyName: "textInitialInput", first: true, predicate: ["textInitialInput"], descendants: true }, { propertyName: "renderedMenuItems", predicate: FwMenuItemComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [ngStyle]=\"{width: width}\">\n <div\n class=\"chip-grid\"\n [ngStyle]=\"{minHeight: minHeight, maxHeight: maxHeight}\"\n [cdkMenuTriggerFor]=\"selectMenu\">\n <div class=\"inner-chip-grid\" *ngIf=\"value && value.length>0\">\n <fw-chip\n *ngFor=\"let chip of value | slice:0:maxSelectedShown\"\n [title]=\"chip[titleProperty]\"\n [value]=\"chip[valueProperty]\"\n [icon]=\"chip[iconProperty]\"\n color=\"primary\"\n [showClose]=\"true\"\n (close)=\"handleClose(chip)\"\n [selectable]=\"false\">\n </fw-chip>\n <span *ngIf=\"value.length>maxSelectedShown\" class=\"max-exceeded\">+{{ value.length - maxSelectedShown }}\n more</span>\n <input\n type=\"text\" #textInput\n class=\"placeholder\"\n (keydown)=\"handleKeyDown($event)\" (keyup)=\"handleKeyUp($event)\">\n </div>\n <input\n type=\"text\" #textInitialInput\n *ngIf=\"!value || value.length===0\"\n class=\"placeholder\" [placeholder]=\"placeholder\"\n (focus)=\"handleTouched()\"\n (keydown)=\"handleKeyDown($event)\" (keyup)=\"handleKeyUp($event)\">\n <fw-icon>chevron-down</fw-icon>\n </div>\n <ng-template #selectMenu>\n <fw-menu-container [width]=\"optionsWidth || width\" [maxHeight]=\"maxOptionsHeight\">\n <fw-menu\n [multiSelect]=\"true\"\n [useCheckbox]=\"useCheckbox\"\n [disabled]=\"disabled || (filteredOptions && filteredOptions.length===0)\"\n [ngModel]=\"selectedValues\"\n (ngModelChange)=\"handleClick($event)\">\n <ng-container *ngIf=\"menuItems && menuItems.length===0\">\n <fw-menu-item\n *ngFor=\"let item of filteredOptions\"\n [title]=\"item[titleProperty]\"\n [value]=\"item[valueProperty]\"\n [icon]=\"item[iconProperty]\"\n >\n </fw-menu-item>\n <fw-menu-item\n *ngIf=\"filteredOptions && filteredOptions.length===0\"\n [disabled]=\"true\" label=\"No options\">\n </fw-menu-item>\n </ng-container>\n <ng-content select=\"[fw-menu-item, fw-menu-separator]\"></ng-content>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host .chip-grid{min-height:36px;box-sizing:border-box;color:var(--typography-light);background:var(--page-light);display:flex;padding:6px;align-items:center;border-radius:6px;border:1px solid var(--separations-input);cursor:pointer}:host .chip-grid:focus-within{border-color:var(--primary-base)}:host .chip-grid .inner-chip-grid{display:flex;flex-wrap:wrap;gap:4px;overflow:hidden auto;align-items:center;flex:1}:host .chip-grid .inner-chip-grid input{display:inline-flex;width:10px;flex-grow:1}:host .chip-grid .placeholder{padding:0 2px 0 4px;font-size:14px;color:var(--typography-base);background:var(--page-light);border:0;outline:0;display:inline-flex;width:10px;flex-grow:1}:host .chip-grid .placeholder:focus{outline:none!important}:host .chip-grid .placeholder::placeholder{color:var(--typography-light)}:host .chip-grid fw-icon{font-size:20px}:host .chip-grid .max-exceeded{font-size:12px}\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: "directive", type: i2$1.CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FwChipComponent, selector: "fw-chip", inputs: ["value", "variant", "color", "icon", "title", "description", "showClose", "disabled", "selected", "selectable"], outputs: ["close", "select"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon" }, { kind: "component", type: FwMenuComponent, selector: "fw-menu", inputs: ["disabled", "size", "variant", "collapsed", "multiSelect", "useCheckbox", "openWidth", "collapsedWidth", "value"] }, { kind: "component", type: FwMenuContainerComponent, selector: "fw-menu-container", inputs: ["width", "maxHeight", "border", "shadow", "showFilter", "filterText", "offset"] }, { kind: "component", type: FwMenuItemComponent, selector: "fw-menu-item", inputs: ["value", "variant", "size", "title", "description", "icon", "disabled", "showCheckbox", "multiSelect", "hidden", "collapsed", "href", "target", "focused", "selected"], outputs: ["click"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
3214
+ ], queries: [{ propertyName: "menuItems", predicate: FwMenuItemComponent }], viewQueries: [{ propertyName: "trigger", first: true, predicate: CdkMenuTrigger, descendants: true }, { propertyName: "menu", first: true, predicate: FwMenuComponent, descendants: true }, { propertyName: "textInput", first: true, predicate: ["textInput"], descendants: true }, { propertyName: "textInitialInput", first: true, predicate: ["textInitialInput"], descendants: true }, { propertyName: "renderedMenuItems", predicate: FwMenuItemComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div [ngStyle]=\"{width: width}\">\n <div\n class=\"chip-grid\"\n [ngStyle]=\"{minHeight: minHeight, maxHeight: maxHeight}\"\n [cdkMenuTriggerFor]=\"selectMenu\">\n <div class=\"inner-chip-grid\" *ngIf=\"value && value.length>0\">\n <fw-chip\n *ngFor=\"let chip of selectedOptions | slice:0:maxSelectedShown\"\n [title]=\"chip[titleProperty]\"\n [value]=\"chip[valueProperty]\"\n [icon]=\"chip[iconProperty]\"\n color=\"primary\"\n [showClose]=\"true\"\n (close)=\"handleClose(chip)\"\n [selectable]=\"false\">\n </fw-chip>\n <span *ngIf=\"value.length>maxSelectedShown\" class=\"max-exceeded\">+{{ value.length - maxSelectedShown }}\n more</span>\n <input\n type=\"text\" #textInput\n class=\"placeholder\"\n (keydown)=\"handleKeyDown($event)\" (keyup)=\"handleKeyUp($event)\">\n </div>\n <input\n type=\"text\" #textInitialInput\n *ngIf=\"!value || value.length===0\"\n class=\"placeholder\" [placeholder]=\"placeholder\"\n (focus)=\"handleTouched()\"\n (keydown)=\"handleKeyDown($event)\" (keyup)=\"handleKeyUp($event)\">\n <fw-icon>chevron-down</fw-icon>\n </div>\n <ng-template #selectMenu>\n <fw-menu-container [width]=\"optionsWidth || width\" [maxHeight]=\"maxOptionsHeight\">\n <fw-menu\n [multiSelect]=\"true\"\n [useCheckbox]=\"useCheckbox\"\n [disabled]=\"disabled || (filteredOptions && filteredOptions.length===0)\"\n [value]=\"selectedValues\"\n (change)=\"handleClick($event)\">\n <ng-container *ngIf=\"menuItems && menuItems.length===0\">\n <fw-menu-item\n *ngFor=\"let item of filteredOptions\"\n [title]=\"item[titleProperty]\"\n [value]=\"item[valueProperty]\"\n [icon]=\"item[iconProperty]\"\n >\n </fw-menu-item>\n <fw-menu-item\n *ngIf=\"filteredOptions && filteredOptions.length===0\"\n [disabled]=\"true\" label=\"No options\">\n </fw-menu-item>\n </ng-container>\n <ng-content select=\"[fw-menu-item, fw-menu-separator]\"></ng-content>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host .chip-grid{min-height:36px;box-sizing:border-box;color:var(--typography-light);background:var(--page-light);display:flex;padding:6px;align-items:center;border-radius:6px;border:1px solid var(--separations-input);cursor:pointer}:host .chip-grid:focus-within{border-color:var(--primary-base)}:host .chip-grid .inner-chip-grid{display:flex;flex-wrap:wrap;gap:4px;overflow:hidden auto;align-items:center;flex:1}:host .chip-grid .inner-chip-grid input{display:inline-flex;width:10px;flex-grow:1}:host .chip-grid .placeholder{padding:0 2px 0 4px;font-size:14px;color:var(--typography-base);background:var(--page-light);border:0;outline:0;display:inline-flex;width:10px;flex-grow:1}:host .chip-grid .placeholder:focus{outline:none!important}:host .chip-grid .placeholder::placeholder{color:var(--typography-light)}:host .chip-grid fw-icon{font-size:20px}:host .chip-grid .max-exceeded{font-size:12px}\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: "directive", type: i2$1.CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "component", type: FwChipComponent, selector: "fw-chip", inputs: ["value", "variant", "color", "icon", "title", "description", "showClose", "disabled", "selected", "selectable"], outputs: ["close", "select"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon" }, { kind: "component", type: FwMenuComponent, selector: "fw-menu", inputs: ["disabled", "size", "variant", "collapsed", "multiSelect", "useCheckbox", "openWidth", "collapsedWidth", "value"], outputs: ["change"] }, { kind: "component", type: FwMenuContainerComponent, selector: "fw-menu-container", inputs: ["width", "maxHeight", "border", "shadow", "showFilter", "filterText", "offset"] }, { kind: "component", type: FwMenuItemComponent, selector: "fw-menu-item", inputs: ["value", "variant", "size", "title", "description", "icon", "disabled", "showCheckbox", "multiSelect", "hidden", "collapsed", "href", "target", "focused", "selected"], outputs: ["click"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }] });
3139
3215
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwMultiSelectMenuComponent, decorators: [{
3140
3216
  type: Component,
3141
3217
  args: [{ selector: 'fw-multi-select', providers: [
@@ -3144,8 +3220,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
3144
3220
  useExisting: forwardRef(() => FwMultiSelectMenuComponent),
3145
3221
  multi: true,
3146
3222
  },
3147
- ], template: "<div [ngStyle]=\"{width: width}\">\n <div\n class=\"chip-grid\"\n [ngStyle]=\"{minHeight: minHeight, maxHeight: maxHeight}\"\n [cdkMenuTriggerFor]=\"selectMenu\">\n <div class=\"inner-chip-grid\" *ngIf=\"value && value.length>0\">\n <fw-chip\n *ngFor=\"let chip of value | slice:0:maxSelectedShown\"\n [title]=\"chip[titleProperty]\"\n [value]=\"chip[valueProperty]\"\n [icon]=\"chip[iconProperty]\"\n color=\"primary\"\n [showClose]=\"true\"\n (close)=\"handleClose(chip)\"\n [selectable]=\"false\">\n </fw-chip>\n <span *ngIf=\"value.length>maxSelectedShown\" class=\"max-exceeded\">+{{ value.length - maxSelectedShown }}\n more</span>\n <input\n type=\"text\" #textInput\n class=\"placeholder\"\n (keydown)=\"handleKeyDown($event)\" (keyup)=\"handleKeyUp($event)\">\n </div>\n <input\n type=\"text\" #textInitialInput\n *ngIf=\"!value || value.length===0\"\n class=\"placeholder\" [placeholder]=\"placeholder\"\n (focus)=\"handleTouched()\"\n (keydown)=\"handleKeyDown($event)\" (keyup)=\"handleKeyUp($event)\">\n <fw-icon>chevron-down</fw-icon>\n </div>\n <ng-template #selectMenu>\n <fw-menu-container [width]=\"optionsWidth || width\" [maxHeight]=\"maxOptionsHeight\">\n <fw-menu\n [multiSelect]=\"true\"\n [useCheckbox]=\"useCheckbox\"\n [disabled]=\"disabled || (filteredOptions && filteredOptions.length===0)\"\n [ngModel]=\"selectedValues\"\n (ngModelChange)=\"handleClick($event)\">\n <ng-container *ngIf=\"menuItems && menuItems.length===0\">\n <fw-menu-item\n *ngFor=\"let item of filteredOptions\"\n [title]=\"item[titleProperty]\"\n [value]=\"item[valueProperty]\"\n [icon]=\"item[iconProperty]\"\n >\n </fw-menu-item>\n <fw-menu-item\n *ngIf=\"filteredOptions && filteredOptions.length===0\"\n [disabled]=\"true\" label=\"No options\">\n </fw-menu-item>\n </ng-container>\n <ng-content select=\"[fw-menu-item, fw-menu-separator]\"></ng-content>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host .chip-grid{min-height:36px;box-sizing:border-box;color:var(--typography-light);background:var(--page-light);display:flex;padding:6px;align-items:center;border-radius:6px;border:1px solid var(--separations-input);cursor:pointer}:host .chip-grid:focus-within{border-color:var(--primary-base)}:host .chip-grid .inner-chip-grid{display:flex;flex-wrap:wrap;gap:4px;overflow:hidden auto;align-items:center;flex:1}:host .chip-grid .inner-chip-grid input{display:inline-flex;width:10px;flex-grow:1}:host .chip-grid .placeholder{padding:0 2px 0 4px;font-size:14px;color:var(--typography-base);background:var(--page-light);border:0;outline:0;display:inline-flex;width:10px;flex-grow:1}:host .chip-grid .placeholder:focus{outline:none!important}:host .chip-grid .placeholder::placeholder{color:var(--typography-light)}:host .chip-grid fw-icon{font-size:20px}:host .chip-grid .max-exceeded{font-size:12px}\n"] }]
3148
- }], propDecorators: { options: [{
3223
+ ], template: "<div [ngStyle]=\"{width: width}\">\n <div\n class=\"chip-grid\"\n [ngStyle]=\"{minHeight: minHeight, maxHeight: maxHeight}\"\n [cdkMenuTriggerFor]=\"selectMenu\">\n <div class=\"inner-chip-grid\" *ngIf=\"value && value.length>0\">\n <fw-chip\n *ngFor=\"let chip of selectedOptions | slice:0:maxSelectedShown\"\n [title]=\"chip[titleProperty]\"\n [value]=\"chip[valueProperty]\"\n [icon]=\"chip[iconProperty]\"\n color=\"primary\"\n [showClose]=\"true\"\n (close)=\"handleClose(chip)\"\n [selectable]=\"false\">\n </fw-chip>\n <span *ngIf=\"value.length>maxSelectedShown\" class=\"max-exceeded\">+{{ value.length - maxSelectedShown }}\n more</span>\n <input\n type=\"text\" #textInput\n class=\"placeholder\"\n (keydown)=\"handleKeyDown($event)\" (keyup)=\"handleKeyUp($event)\">\n </div>\n <input\n type=\"text\" #textInitialInput\n *ngIf=\"!value || value.length===0\"\n class=\"placeholder\" [placeholder]=\"placeholder\"\n (focus)=\"handleTouched()\"\n (keydown)=\"handleKeyDown($event)\" (keyup)=\"handleKeyUp($event)\">\n <fw-icon>chevron-down</fw-icon>\n </div>\n <ng-template #selectMenu>\n <fw-menu-container [width]=\"optionsWidth || width\" [maxHeight]=\"maxOptionsHeight\">\n <fw-menu\n [multiSelect]=\"true\"\n [useCheckbox]=\"useCheckbox\"\n [disabled]=\"disabled || (filteredOptions && filteredOptions.length===0)\"\n [value]=\"selectedValues\"\n (change)=\"handleClick($event)\">\n <ng-container *ngIf=\"menuItems && menuItems.length===0\">\n <fw-menu-item\n *ngFor=\"let item of filteredOptions\"\n [title]=\"item[titleProperty]\"\n [value]=\"item[valueProperty]\"\n [icon]=\"item[iconProperty]\"\n >\n </fw-menu-item>\n <fw-menu-item\n *ngIf=\"filteredOptions && filteredOptions.length===0\"\n [disabled]=\"true\" label=\"No options\">\n </fw-menu-item>\n </ng-container>\n <ng-content select=\"[fw-menu-item, fw-menu-separator]\"></ng-content>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host .chip-grid{min-height:36px;box-sizing:border-box;color:var(--typography-light);background:var(--page-light);display:flex;padding:6px;align-items:center;border-radius:6px;border:1px solid var(--separations-input);cursor:pointer}:host .chip-grid:focus-within{border-color:var(--primary-base)}:host .chip-grid .inner-chip-grid{display:flex;flex-wrap:wrap;gap:4px;overflow:hidden auto;align-items:center;flex:1}:host .chip-grid .inner-chip-grid input{display:inline-flex;width:10px;flex-grow:1}:host .chip-grid .placeholder{padding:0 2px 0 4px;font-size:14px;color:var(--typography-base);background:var(--page-light);border:0;outline:0;display:inline-flex;width:10px;flex-grow:1}:host .chip-grid .placeholder:focus{outline:none!important}:host .chip-grid .placeholder::placeholder{color:var(--typography-light)}:host .chip-grid fw-icon{font-size:20px}:host .chip-grid .max-exceeded{font-size:12px}\n"] }]
3224
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { outsideClick: [{
3225
+ type: HostListener,
3226
+ args: ['document:click']
3227
+ }], options: [{
3149
3228
  type: Input
3150
3229
  }], valueProperty: [{
3151
3230
  type: Input
@@ -3193,10 +3272,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
3193
3272
  }], textInitialInput: [{
3194
3273
  type: ViewChild,
3195
3274
  args: ['textInitialInput']
3275
+ }], value: [{
3276
+ type: Input
3196
3277
  }] } });
3197
3278
 
3279
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3198
3280
  class FwSelectMenuComponent {
3199
- constructor() {
3281
+ constructor(_changeDetectorRef) {
3282
+ this._changeDetectorRef = _changeDetectorRef;
3200
3283
  this.options = [];
3201
3284
  this.valueProperty = 'value';
3202
3285
  this.titleProperty = 'title';
@@ -3209,18 +3292,63 @@ class FwSelectMenuComponent {
3209
3292
  this.selectTitle = '';
3210
3293
  this.selectIcon = '';
3211
3294
  this.subscriptions = [];
3295
+ this._isOpen = false;
3212
3296
  this.onTouched = () => {
3213
3297
  };
3214
3298
  }
3299
+ outsideClick() {
3300
+ if (this._isOpen) {
3301
+ this.trigger.close();
3302
+ this._isOpen = false;
3303
+ }
3304
+ if (this.trigger && this.trigger.isOpen()) {
3305
+ this._isOpen = true;
3306
+ }
3307
+ }
3308
+ get value() {
3309
+ return this._value;
3310
+ }
3311
+ set value(newValue) {
3312
+ this._valueType = typeof newValue;
3313
+ this.updateValue(newValue);
3314
+ }
3315
+ /**
3316
+ * Saves a callback function to be invoked when the select's value
3317
+ * changes from user input. Part of the ControlValueAccessor interface
3318
+ * required to integrate with Angular's core forms API.
3319
+ *
3320
+ * @param fn Callback to be triggered when the value changes.
3321
+ */
3215
3322
  registerOnChange(fn) {
3216
3323
  this.onChange = fn;
3217
3324
  }
3325
+ /**
3326
+ * Saves a callback function to be invoked when the select is blurred
3327
+ * by the user. Part of the ControlValueAccessor interface required
3328
+ * to integrate with Angular's core forms API.
3329
+ *
3330
+ * @param fn Callback to be triggered when the component has been touched.
3331
+ */
3218
3332
  registerOnTouched(fn) {
3219
3333
  this.onTouched = fn;
3220
3334
  }
3335
+ /**
3336
+ * Disables the select. Part of the ControlValueAccessor interface required
3337
+ * to integrate with Angular's core forms API.
3338
+ *
3339
+ * @param isDisabled Sets whether the component is disabled.
3340
+ */
3221
3341
  setDisabledState(isDisabled) {
3222
3342
  this.disabled = isDisabled;
3343
+ // eslint-disable-next-line @rx-angular/no-explicit-change-detection-apis
3344
+ this._changeDetectorRef.markForCheck();
3223
3345
  }
3346
+ /**
3347
+ * Sets the select's value. Part of the ControlValueAccessor interface
3348
+ * required to integrate with Angular's core forms API.
3349
+ *
3350
+ * @param value New value to be written to the model.
3351
+ */
3224
3352
  writeValue(value) {
3225
3353
  this.updateValue(value);
3226
3354
  }
@@ -3233,9 +3361,13 @@ class FwSelectMenuComponent {
3233
3361
  if (this.options.length === 0 && this.menuItems.length > 0) {
3234
3362
  this.options = [];
3235
3363
  this.menuItems.forEach(item => {
3236
- this.options.push({ value: item.value, title: item.title, icon: item.icon });
3364
+ this.options.push({ value: item.value.toString(), title: item.title.toString(), icon: item.icon });
3237
3365
  const sub = item.click.subscribe(value => this.menu.writeValue(value));
3238
3366
  this.subscriptions.push(sub);
3367
+ if (item.value.toString() === this.selectValue) {
3368
+ this.selectTitle = item.title.toString();
3369
+ this.selectIcon = item.icon;
3370
+ }
3239
3371
  });
3240
3372
  }
3241
3373
  }
@@ -3243,32 +3375,53 @@ class FwSelectMenuComponent {
3243
3375
  if (e && e.length > 0) {
3244
3376
  if (this.selectValue !== e) {
3245
3377
  this.options.forEach(item => {
3246
- if (item[this.valueProperty] === e) {
3247
- this.updateValue(item);
3248
- this.onChange(item);
3378
+ if (item[this.valueProperty].toString() === e) {
3379
+ if (this._valueType === 'object') {
3380
+ this.updateValue(item);
3381
+ this.onChange(item);
3382
+ }
3383
+ else {
3384
+ this.updateValue(item[this.valueProperty]);
3385
+ this.onChange(item[this.valueProperty]);
3386
+ }
3249
3387
  }
3250
3388
  });
3251
- this.trigger.close();
3389
+ // this.trigger.close();
3252
3390
  }
3253
3391
  }
3254
3392
  }
3255
3393
  updateValue(value) {
3256
- this.value = value;
3257
- if (value) {
3258
- this.selectValue = value[this.valueProperty];
3259
- this.selectTitle = value[this.titleProperty];
3394
+ this._value = value;
3395
+ if (this.trigger) {
3396
+ this.trigger.close();
3397
+ }
3398
+ if (value && this._valueType === 'object') {
3399
+ this.selectValue = value[this.valueProperty].toString();
3400
+ this.selectTitle = value[this.titleProperty].toString();
3260
3401
  this.selectIcon = value[this.iconProperty];
3261
3402
  }
3403
+ else {
3404
+ this.selectValue = value ? value.toString() : '';
3405
+ this.selectTitle = value ? value.toString() : '';
3406
+ if (this.options && this.options.length) {
3407
+ this.options.forEach(opt => {
3408
+ if (opt[this.valueProperty] === value) {
3409
+ this.selectTitle = opt[this.titleProperty].toString();
3410
+ this.selectIcon = opt[this.iconProperty];
3411
+ }
3412
+ });
3413
+ }
3414
+ }
3262
3415
  }
3263
3416
  }
3264
- FwSelectMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSelectMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3265
- FwSelectMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwSelectMenuComponent, selector: "fw-select", inputs: { options: "options", valueProperty: "valueProperty", titleProperty: "titleProperty", iconProperty: "iconProperty", showFilter: "showFilter", disabled: "disabled", width: "width", optionsWidth: "optionsWidth", maxOptionsHeight: "maxOptionsHeight", placeholder: "placeholder" }, providers: [
3417
+ FwSelectMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSelectMenuComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
3418
+ FwSelectMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwSelectMenuComponent, selector: "fw-select", inputs: { options: "options", valueProperty: "valueProperty", titleProperty: "titleProperty", iconProperty: "iconProperty", showFilter: "showFilter", disabled: "disabled", width: "width", optionsWidth: "optionsWidth", maxOptionsHeight: "maxOptionsHeight", placeholder: "placeholder", value: "value" }, host: { listeners: { "document:click": "outsideClick()" } }, providers: [
3266
3419
  {
3267
3420
  provide: NG_VALUE_ACCESSOR,
3268
3421
  useExisting: forwardRef(() => FwSelectMenuComponent),
3269
3422
  multi: true,
3270
3423
  },
3271
- ], queries: [{ propertyName: "menuItems", predicate: FwMenuItemComponent }], viewQueries: [{ propertyName: "trigger", first: true, predicate: CdkMenuTrigger, descendants: true }, { propertyName: "menu", first: true, predicate: FwMenuComponent, descendants: true }], ngImport: i0, template: "<div [ngStyle]=\"{width: width}\">\n <fw-text-input\n [cdkMenuTriggerFor]=\"selectMenu\"\n [(ngModel)]=\"selectTitle\"\n [leftIcon]=\"selectIcon\"\n rightIcon=\"chevron-down\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n readOnly=\"true\">\n </fw-text-input>\n <ng-template #selectMenu>\n <fw-menu-container [showFilter]=\"showFilter\" [width]=\"optionsWidth || width\" [maxHeight]=\"maxOptionsHeight\">\n <fw-menu\n [disabled]=\"disabled\"\n [ngModel]=\"selectValue\"\n (ngModelChange)=\"handleClick($event)\">\n <ng-container *ngIf=\"menuItems.length===0\">\n <fw-menu-item\n *ngFor=\"let item of options\"\n [title]=\"item[titleProperty]\"\n [value]=\"item[valueProperty]\"\n [icon]=\"item[iconProperty]\"\n >\n </fw-menu-item>\n </ng-container>\n <ng-content select=\"[fw-menu-item, fw-menu-separator]\"></ng-content>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host{box-sizing:border-box}\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: "directive", type: i2$1.CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FwMenuComponent, selector: "fw-menu", inputs: ["disabled", "size", "variant", "collapsed", "multiSelect", "useCheckbox", "openWidth", "collapsedWidth", "value"] }, { kind: "component", type: FwMenuContainerComponent, selector: "fw-menu-container", inputs: ["width", "maxHeight", "border", "shadow", "showFilter", "filterText", "offset"] }, { kind: "component", type: FwMenuItemComponent, selector: "fw-menu-item", inputs: ["value", "variant", "size", "title", "description", "icon", "disabled", "showCheckbox", "multiSelect", "hidden", "collapsed", "href", "target", "focused", "selected"], outputs: ["click"] }, { kind: "component", type: FwTextInputComponent, selector: "fw-text-input", inputs: ["disabled", "leftIcon", "rightIcon", "context", "helperText", "errorText", "placeholder", "readOnly", "size", "error"] }] });
3424
+ ], queries: [{ propertyName: "menuItems", predicate: FwMenuItemComponent }], viewQueries: [{ propertyName: "trigger", first: true, predicate: CdkMenuTrigger, descendants: true }, { propertyName: "menu", first: true, predicate: FwMenuComponent, descendants: true }], ngImport: i0, template: "<div [ngStyle]=\"{width: width, cursor: 'pointer'}\">\n <fw-text-input\n [cdkMenuTriggerFor]=\"selectMenu\"\n [value]=\"selectTitle\"\n [leftIcon]=\"selectIcon\"\n rightIcon=\"chevron-down\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n readOnly=\"true\">\n </fw-text-input>\n <ng-template #selectMenu>\n <fw-menu-container [showFilter]=\"showFilter\" [width]=\"optionsWidth || width\" [maxHeight]=\"maxOptionsHeight\">\n <fw-menu\n [disabled]=\"disabled\"\n [value]=\"selectValue\"\n (change)=\"handleClick($event)\">\n <ng-container *ngIf=\"menuItems.length===0\">\n <fw-menu-item\n *ngFor=\"let item of options\"\n [title]=\"item[titleProperty].toString()\"\n [value]=\"item[valueProperty].toString()\"\n [icon]=\"item[iconProperty]\"\n >\n </fw-menu-item>\n </ng-container>\n <ng-content select=\"[fw-menu-item, fw-menu-separator]\"></ng-content>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host{box-sizing:border-box}\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: "directive", type: i2$1.CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "component", type: FwMenuComponent, selector: "fw-menu", inputs: ["disabled", "size", "variant", "collapsed", "multiSelect", "useCheckbox", "openWidth", "collapsedWidth", "value"], outputs: ["change"] }, { kind: "component", type: FwMenuContainerComponent, selector: "fw-menu-container", inputs: ["width", "maxHeight", "border", "shadow", "showFilter", "filterText", "offset"] }, { kind: "component", type: FwMenuItemComponent, selector: "fw-menu-item", inputs: ["value", "variant", "size", "title", "description", "icon", "disabled", "showCheckbox", "multiSelect", "hidden", "collapsed", "href", "target", "focused", "selected"], outputs: ["click"] }, { kind: "component", type: FwTextInputComponent, selector: "fw-text-input", inputs: ["disabled", "leftIcon", "rightIcon", "context", "helperText", "errorText", "placeholder", "readOnly", "size", "type", "maxLength", "error", "value"] }] });
3272
3425
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSelectMenuComponent, decorators: [{
3273
3426
  type: Component,
3274
3427
  args: [{ selector: 'fw-select', providers: [
@@ -3277,8 +3430,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
3277
3430
  useExisting: forwardRef(() => FwSelectMenuComponent),
3278
3431
  multi: true,
3279
3432
  },
3280
- ], template: "<div [ngStyle]=\"{width: width}\">\n <fw-text-input\n [cdkMenuTriggerFor]=\"selectMenu\"\n [(ngModel)]=\"selectTitle\"\n [leftIcon]=\"selectIcon\"\n rightIcon=\"chevron-down\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n readOnly=\"true\">\n </fw-text-input>\n <ng-template #selectMenu>\n <fw-menu-container [showFilter]=\"showFilter\" [width]=\"optionsWidth || width\" [maxHeight]=\"maxOptionsHeight\">\n <fw-menu\n [disabled]=\"disabled\"\n [ngModel]=\"selectValue\"\n (ngModelChange)=\"handleClick($event)\">\n <ng-container *ngIf=\"menuItems.length===0\">\n <fw-menu-item\n *ngFor=\"let item of options\"\n [title]=\"item[titleProperty]\"\n [value]=\"item[valueProperty]\"\n [icon]=\"item[iconProperty]\"\n >\n </fw-menu-item>\n </ng-container>\n <ng-content select=\"[fw-menu-item, fw-menu-separator]\"></ng-content>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host{box-sizing:border-box}\n"] }]
3281
- }], propDecorators: { options: [{
3433
+ ], template: "<div [ngStyle]=\"{width: width, cursor: 'pointer'}\">\n <fw-text-input\n [cdkMenuTriggerFor]=\"selectMenu\"\n [value]=\"selectTitle\"\n [leftIcon]=\"selectIcon\"\n rightIcon=\"chevron-down\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n readOnly=\"true\">\n </fw-text-input>\n <ng-template #selectMenu>\n <fw-menu-container [showFilter]=\"showFilter\" [width]=\"optionsWidth || width\" [maxHeight]=\"maxOptionsHeight\">\n <fw-menu\n [disabled]=\"disabled\"\n [value]=\"selectValue\"\n (change)=\"handleClick($event)\">\n <ng-container *ngIf=\"menuItems.length===0\">\n <fw-menu-item\n *ngFor=\"let item of options\"\n [title]=\"item[titleProperty].toString()\"\n [value]=\"item[valueProperty].toString()\"\n [icon]=\"item[iconProperty]\"\n >\n </fw-menu-item>\n </ng-container>\n <ng-content select=\"[fw-menu-item, fw-menu-separator]\"></ng-content>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host{box-sizing:border-box}\n"] }]
3434
+ }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { outsideClick: [{
3435
+ type: HostListener,
3436
+ args: ['document:click']
3437
+ }], options: [{
3282
3438
  type: Input
3283
3439
  }], valueProperty: [{
3284
3440
  type: Input
@@ -3307,6 +3463,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
3307
3463
  }], menuItems: [{
3308
3464
  type: ContentChildren,
3309
3465
  args: [FwMenuItemComponent]
3466
+ }], value: [{
3467
+ type: Input
3310
3468
  }] } });
3311
3469
 
3312
3470
  class FwSelectMenuModule {
@@ -3351,6 +3509,383 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
3351
3509
  }]
3352
3510
  }] });
3353
3511
 
3512
+ class FwPaginatorAdvancedComponent {
3513
+ constructor() {
3514
+ this.disabled = false;
3515
+ this.showNext = true;
3516
+ this.showPrevious = true;
3517
+ this.showFirst = false;
3518
+ this.showLast = false;
3519
+ this.pageIndex = 0;
3520
+ this.pageSizeOptions = [10, 25, 50, 100];
3521
+ this.length = 0;
3522
+ this.alignment = 'center';
3523
+ this.selectorTitle = 'Items per page:';
3524
+ this._pageSize = 10;
3525
+ this.page = new EventEmitter();
3526
+ }
3527
+ get pageSize() {
3528
+ return this._pageSize;
3529
+ }
3530
+ set pageSize(newSize) {
3531
+ this._pageSize = parseInt(newSize.toString());
3532
+ this.pageIndex = 0;
3533
+ const pageEvt = this.buildPageEvent(0);
3534
+ this.page.emit(pageEvt);
3535
+ }
3536
+ buildPageEvent(pageIndex) {
3537
+ return {
3538
+ length: this.length,
3539
+ pageSize: this.pageSize,
3540
+ pageIndex: pageIndex,
3541
+ previousPageIndex: this.pageIndex,
3542
+ rowIndexStart: this.getRowIndexStart(pageIndex),
3543
+ rowIndexEnd: this.getRowIndexEnd(pageIndex),
3544
+ };
3545
+ }
3546
+ firstPage() {
3547
+ const evt = this.buildPageEvent(1);
3548
+ this.pageIndex = 0;
3549
+ this.page.emit(evt);
3550
+ }
3551
+ lastPage() {
3552
+ const evt = this.buildPageEvent(this.getNumberOfPages());
3553
+ this.pageIndex = this.getNumberOfPages() - 1;
3554
+ this.page.emit(evt);
3555
+ }
3556
+ nextPage() {
3557
+ if (this.hasNextPage()) {
3558
+ const evt = this.buildPageEvent(this.pageIndex + 1);
3559
+ this.pageIndex++;
3560
+ this.page.emit(evt);
3561
+ }
3562
+ }
3563
+ previousPage() {
3564
+ if (this.hasPreviousPage()) {
3565
+ const evt = this.buildPageEvent(this.pageIndex - 1);
3566
+ this.pageIndex--;
3567
+ this.page.emit(evt);
3568
+ }
3569
+ }
3570
+ setPage(pageNumber) {
3571
+ const evt = this.buildPageEvent(pageNumber);
3572
+ this.pageIndex = pageNumber;
3573
+ this.page.emit(evt);
3574
+ }
3575
+ getNumberOfPages() {
3576
+ return Math.ceil(this.length / this.pageSize);
3577
+ }
3578
+ getRowIndexStart(pageIndex) {
3579
+ const index = pageIndex !== undefined ? pageIndex : this.pageIndex;
3580
+ return index * this.pageSize;
3581
+ }
3582
+ getRowIndexEnd(pageIndex) {
3583
+ const index = pageIndex !== undefined ? pageIndex : this.pageIndex;
3584
+ let indexEnd = (index * this.pageSize) + this.pageSize - 1;
3585
+ if (indexEnd > this.length) {
3586
+ indexEnd = this.length - 1;
3587
+ }
3588
+ return indexEnd;
3589
+ }
3590
+ hasNextPage() {
3591
+ return (this.pageIndex !== this.getNumberOfPages() - 1);
3592
+ }
3593
+ hasPreviousPage() {
3594
+ return (this.pageIndex > 0);
3595
+ }
3596
+ }
3597
+ FwPaginatorAdvancedComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPaginatorAdvancedComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3598
+ FwPaginatorAdvancedComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwPaginatorAdvancedComponent, selector: "fw-paginator-advanced", inputs: { disabled: "disabled", showNext: "showNext", showPrevious: "showPrevious", showFirst: "showFirst", showLast: "showLast", pageIndex: "pageIndex", pageSizeOptions: "pageSizeOptions", length: "length", alignment: "alignment", selectorTitle: "selectorTitle", pageSize: "pageSize" }, outputs: { page: "page" }, ngImport: i0, template: "<div [ngClass]=\"['paginator', alignment]\">\n <div class=\"pages-selector\">\n <div>\n <p class=\"vision-p2\" [ngClass]=\"disabled?'disabled':''\">{{ selectorTitle }}</p>\n &nbsp;\n <fw-select\n [disabled]=\"disabled\" width=\"80px\" placeholder=\"Size\"\n [(ngModel)]=\"pageSize\">\n <fw-menu-item\n *ngFor=\"let size of pageSizeOptions\"\n [value]=\"size.toString()\"\n [title]=\"size.toString()\"\n [selected]=\"pageSize.toString()===size.toString()\"\n [disabled]=\"disabled\"\n ></fw-menu-item>\n </fw-select>\n </div>\n <p class=\"vision-p2 record-count\" [ngClass]=\"disabled?'disabled':''\">\n {{ getRowIndexStart() + 1 }}-{{ getRowIndexEnd() + 1 }}\n of {{ length }}</p>\n <div>\n <button\n *ngIf=\"showFirst\"\n class=\"page-item page-action page-first\" [disabled]=\"!hasPreviousPage() || disabled\" (click)=\"firstPage()\">\n <fw-icon>arrow-back-collapse</fw-icon>\n </button>\n <button\n *ngIf=\"showPrevious\"\n class=\"page-item page-action page-previous\" [disabled]=\"!hasPreviousPage() || disabled\"\n (click)=\"previousPage()\">\n <fw-icon>chevron-back</fw-icon>\n </button>\n <button\n *ngIf=\"showNext\" class=\"page-item page-action page-next\" [disabled]=\"!hasNextPage() || disabled\"\n (click)=\"nextPage()\">\n <fw-icon>chevron-forward</fw-icon>\n </button>\n <button\n *ngIf=\"showLast\" class=\"page-item page-action page-last\" [disabled]=\"!hasNextPage() || disabled\"\n (click)=\"lastPage()\">\n <fw-icon>arrow-forward-collapse</fw-icon>\n </button>\n </div>\n </div>\n</div>\n", styles: [":host .paginator{display:flex}:host .paginator button{border:none;background-color:transparent}:host .paginator .page-item{box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;align-items:center;border-radius:4px}:host .paginator .page-item:disabled{color:var(--typography-muted);cursor:not-allowed}:host .paginator .page-item:disabled h4{opacity:.4}:host .paginator .page-action fw-icon{font-size:22px}:host .paginator .page-action:disabled{opacity:.4}:host .paginator .pages-list{box-sizing:border-box;display:flex;gap:4px}:host .paginator .pages-list .page-number h4{margin:0;color:var(--typography-base)}:host .paginator .pages-list .page-number:disabled h4{color:var(--slate-base)!important}:host .paginator .pages-list .page-active{background-color:var(--slate-focus)}:host .paginator .pages-list .page-active:disabled{background-color:transparent}:host .paginator.start{justify-content:flex-start}:host .paginator.center{justify-content:center}:host .paginator.end{justify-content:flex-end}:host .paginator.large .page-item{width:40px;height:40px}:host .paginator.medium .page-item{width:32px;height:32px}:host .paginator.small .page-item{width:26px;height:26px}:host .paginator.primary .page-active:not(:disabled){background-color:var(--primary-base)!important}:host .paginator.primary .page-active:not(:disabled) h4{color:var(--typography-contrast)!important}:host .paginator.secondary .page-active:not(:disabled){background-color:var(--secondary-base)!important}:host .paginator.secondary .page-active:not(:disabled) h4{color:var(--typography-contrast)!important}:host .paginator.outline .page-item{border:1px solid var(--slate-border)}:host .paginator.outline .page-number:disabled{border:1px solid var(--slate-border)!important;background-color:transparent!important}:host .paginator.outline.primary .page-active{background-color:var(--primary-hover)!important;border-color:var(--primary-border)!important}:host .paginator.outline.primary .page-active h4{color:var(--primary-base)!important}:host .paginator.outline.primary .page-active:disabled{border:1px solid var(--slate-border)!important;background-color:transparent!important}:host .paginator.outline.secondary .page-active{background-color:var(--secondary-hover)!important;border-color:var(--secondary-border)!important}:host .paginator.outline.secondary .page-active h4{color:var(--secondary-base)!important}:host .paginator.outline.secondary .page-active:disabled{border:1px solid var(--slate-border)!important;background-color:transparent!important}:host .paginator.solid .page-item{border:1px solid var(--slate-border);background-color:var(--card-background)}:host .paginator.solid .page-number:disabled{border:1px solid var(--slate-border)!important;background-color:var(--card-background)!important;opacity:.4}:host .paginator.solid .page-number:disabled h4{opacity:1}:host .paginator.circle .page-number{border-radius:999px!important}:host .paginator .pages-selector{display:flex;align-items:center;justify-content:flex-end;gap:16px}:host .paginator .pages-selector>div{display:flex;align-items:center}:host .paginator .pages-selector fw-icon{font-size:22px}:host .paginator .pages-selector .record-count{min-width:130px;text-align:center}:host .paginator .pages-selector p.disabled{color:var(--typography-light)}\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: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon" }, { kind: "component", type: FwMenuItemComponent, selector: "fw-menu-item", inputs: ["value", "variant", "size", "title", "description", "icon", "disabled", "showCheckbox", "multiSelect", "hidden", "collapsed", "href", "target", "focused", "selected"], outputs: ["click"] }, { kind: "component", type: FwSelectMenuComponent, selector: "fw-select", inputs: ["options", "valueProperty", "titleProperty", "iconProperty", "showFilter", "disabled", "width", "optionsWidth", "maxOptionsHeight", "placeholder", "value"] }] });
3599
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPaginatorAdvancedComponent, decorators: [{
3600
+ type: Component,
3601
+ args: [{ selector: 'fw-paginator-advanced', template: "<div [ngClass]=\"['paginator', alignment]\">\n <div class=\"pages-selector\">\n <div>\n <p class=\"vision-p2\" [ngClass]=\"disabled?'disabled':''\">{{ selectorTitle }}</p>\n &nbsp;\n <fw-select\n [disabled]=\"disabled\" width=\"80px\" placeholder=\"Size\"\n [(ngModel)]=\"pageSize\">\n <fw-menu-item\n *ngFor=\"let size of pageSizeOptions\"\n [value]=\"size.toString()\"\n [title]=\"size.toString()\"\n [selected]=\"pageSize.toString()===size.toString()\"\n [disabled]=\"disabled\"\n ></fw-menu-item>\n </fw-select>\n </div>\n <p class=\"vision-p2 record-count\" [ngClass]=\"disabled?'disabled':''\">\n {{ getRowIndexStart() + 1 }}-{{ getRowIndexEnd() + 1 }}\n of {{ length }}</p>\n <div>\n <button\n *ngIf=\"showFirst\"\n class=\"page-item page-action page-first\" [disabled]=\"!hasPreviousPage() || disabled\" (click)=\"firstPage()\">\n <fw-icon>arrow-back-collapse</fw-icon>\n </button>\n <button\n *ngIf=\"showPrevious\"\n class=\"page-item page-action page-previous\" [disabled]=\"!hasPreviousPage() || disabled\"\n (click)=\"previousPage()\">\n <fw-icon>chevron-back</fw-icon>\n </button>\n <button\n *ngIf=\"showNext\" class=\"page-item page-action page-next\" [disabled]=\"!hasNextPage() || disabled\"\n (click)=\"nextPage()\">\n <fw-icon>chevron-forward</fw-icon>\n </button>\n <button\n *ngIf=\"showLast\" class=\"page-item page-action page-last\" [disabled]=\"!hasNextPage() || disabled\"\n (click)=\"lastPage()\">\n <fw-icon>arrow-forward-collapse</fw-icon>\n </button>\n </div>\n </div>\n</div>\n", styles: [":host .paginator{display:flex}:host .paginator button{border:none;background-color:transparent}:host .paginator .page-item{box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;align-items:center;border-radius:4px}:host .paginator .page-item:disabled{color:var(--typography-muted);cursor:not-allowed}:host .paginator .page-item:disabled h4{opacity:.4}:host .paginator .page-action fw-icon{font-size:22px}:host .paginator .page-action:disabled{opacity:.4}:host .paginator .pages-list{box-sizing:border-box;display:flex;gap:4px}:host .paginator .pages-list .page-number h4{margin:0;color:var(--typography-base)}:host .paginator .pages-list .page-number:disabled h4{color:var(--slate-base)!important}:host .paginator .pages-list .page-active{background-color:var(--slate-focus)}:host .paginator .pages-list .page-active:disabled{background-color:transparent}:host .paginator.start{justify-content:flex-start}:host .paginator.center{justify-content:center}:host .paginator.end{justify-content:flex-end}:host .paginator.large .page-item{width:40px;height:40px}:host .paginator.medium .page-item{width:32px;height:32px}:host .paginator.small .page-item{width:26px;height:26px}:host .paginator.primary .page-active:not(:disabled){background-color:var(--primary-base)!important}:host .paginator.primary .page-active:not(:disabled) h4{color:var(--typography-contrast)!important}:host .paginator.secondary .page-active:not(:disabled){background-color:var(--secondary-base)!important}:host .paginator.secondary .page-active:not(:disabled) h4{color:var(--typography-contrast)!important}:host .paginator.outline .page-item{border:1px solid var(--slate-border)}:host .paginator.outline .page-number:disabled{border:1px solid var(--slate-border)!important;background-color:transparent!important}:host .paginator.outline.primary .page-active{background-color:var(--primary-hover)!important;border-color:var(--primary-border)!important}:host .paginator.outline.primary .page-active h4{color:var(--primary-base)!important}:host .paginator.outline.primary .page-active:disabled{border:1px solid var(--slate-border)!important;background-color:transparent!important}:host .paginator.outline.secondary .page-active{background-color:var(--secondary-hover)!important;border-color:var(--secondary-border)!important}:host .paginator.outline.secondary .page-active h4{color:var(--secondary-base)!important}:host .paginator.outline.secondary .page-active:disabled{border:1px solid var(--slate-border)!important;background-color:transparent!important}:host .paginator.solid .page-item{border:1px solid var(--slate-border);background-color:var(--card-background)}:host .paginator.solid .page-number:disabled{border:1px solid var(--slate-border)!important;background-color:var(--card-background)!important;opacity:.4}:host .paginator.solid .page-number:disabled h4{opacity:1}:host .paginator.circle .page-number{border-radius:999px!important}:host .paginator .pages-selector{display:flex;align-items:center;justify-content:flex-end;gap:16px}:host .paginator .pages-selector>div{display:flex;align-items:center}:host .paginator .pages-selector fw-icon{font-size:22px}:host .paginator .pages-selector .record-count{min-width:130px;text-align:center}:host .paginator .pages-selector p.disabled{color:var(--typography-light)}\n"] }]
3602
+ }], propDecorators: { disabled: [{
3603
+ type: Input
3604
+ }], showNext: [{
3605
+ type: Input
3606
+ }], showPrevious: [{
3607
+ type: Input
3608
+ }], showFirst: [{
3609
+ type: Input
3610
+ }], showLast: [{
3611
+ type: Input
3612
+ }], pageIndex: [{
3613
+ type: Input
3614
+ }], pageSizeOptions: [{
3615
+ type: Input
3616
+ }], length: [{
3617
+ type: Input
3618
+ }], alignment: [{
3619
+ type: Input
3620
+ }], selectorTitle: [{
3621
+ type: Input
3622
+ }], pageSize: [{
3623
+ type: Input
3624
+ }], page: [{
3625
+ type: Output
3626
+ }] } });
3627
+
3628
+ class FwPaginatorModule {
3629
+ }
3630
+ FwPaginatorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPaginatorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3631
+ FwPaginatorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: FwPaginatorModule, declarations: [FwPaginatorComponent,
3632
+ FwPaginatorAdvancedComponent], imports: [CommonModule,
3633
+ FormsModule,
3634
+ FwIconButtonModule,
3635
+ FwIconModule,
3636
+ FwMenuModule,
3637
+ FwSelectMenuModule], exports: [FwPaginatorComponent,
3638
+ FwPaginatorAdvancedComponent] });
3639
+ FwPaginatorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPaginatorModule, imports: [CommonModule,
3640
+ FormsModule,
3641
+ FwIconButtonModule,
3642
+ FwIconModule,
3643
+ FwMenuModule,
3644
+ FwSelectMenuModule] });
3645
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPaginatorModule, decorators: [{
3646
+ type: NgModule,
3647
+ args: [{
3648
+ imports: [
3649
+ CommonModule,
3650
+ FormsModule,
3651
+ FwIconButtonModule,
3652
+ FwIconModule,
3653
+ FwMenuModule,
3654
+ FwSelectMenuModule,
3655
+ ],
3656
+ exports: [
3657
+ FwPaginatorComponent,
3658
+ FwPaginatorAdvancedComponent,
3659
+ ],
3660
+ declarations: [
3661
+ FwPaginatorComponent,
3662
+ FwPaginatorAdvancedComponent,
3663
+ ],
3664
+ }]
3665
+ }] });
3666
+
3667
+ class FwPopoverPanelComponent {
3668
+ constructor() {
3669
+ this.mouseLeave = new EventEmitter();
3670
+ }
3671
+ get classes() {
3672
+ return ['fw-popover-panel', 'fw-popover-' + this.position].join(' ');
3673
+ }
3674
+ hidePopover(e) {
3675
+ this.mouseLeave.emit(e);
3676
+ }
3677
+ }
3678
+ FwPopoverPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3679
+ FwPopoverPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwPopoverPanelComponent, selector: "fw-popover-panel", inputs: { position: "position" }, outputs: { mouseLeave: "mouseLeave" }, host: { listeners: { "mouseleave": "hidePopover($event)" }, properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<div class=\"fw-popover-content-wrapper\">\n <ng-content></ng-content>\n <div class=\"fw-popover-caret\"></div>\n</div>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,:host .fw-popover-content-wrapper{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}.vision-overlay{background-color:var(--separations-overlay)}:host .fw-popover-content-wrapper{position:relative;background:var(--card-background);border-radius:8px;border:1px solid var(--separations-base);min-width:60px;box-sizing:border-box}:host .fw-popover-content-wrapper .fw-popover-caret{position:absolute;overflow:hidden;width:25px;height:25px}:host .fw-popover-content-wrapper .fw-popover-caret:after{display:block;content:\"\";width:16px;height:16px;background:var(--card-background);border:1px solid var(--separations-base);transform:rotate(45deg);position:relative}:host.fw-popover-above{margin-bottom:16px}:host.fw-popover-above .fw-popover-caret{left:calc(50% - 12.5px);bottom:-16px;height:16px!important}:host.fw-popover-above .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-above-left{margin-bottom:16px}:host.fw-popover-above-left .fw-popover-caret{right:25px;bottom:-16px;height:16px!important}:host.fw-popover-above-left .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-above-right{margin-bottom:16px}:host.fw-popover-above-right .fw-popover-caret{left:25px;bottom:-16px;height:16px!important}:host.fw-popover-above-right .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-below{margin-top:16px}:host.fw-popover-below .fw-popover-caret{left:calc(50% - 12.5px);top:-16px;height:16px!important}:host.fw-popover-below .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-below-left{margin-top:16px}:host.fw-popover-below-left .fw-popover-caret{right:25px;top:-16px;height:16px!important}:host.fw-popover-below-left .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-below-right{margin-top:16px}:host.fw-popover-below-right .fw-popover-caret{left:25px;top:-16px;height:16px!important}:host.fw-popover-below-right .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-left{margin-right:16px}:host.fw-popover-left .fw-popover-caret{right:-16px;top:calc(50% - 12.5px);width:16px!important}:host.fw-popover-left .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-left-above{margin-right:16px}:host.fw-popover-left-above .fw-popover-caret{right:-16px;bottom:25px;width:16px!important}:host.fw-popover-left-above .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-left-below{margin-right:16px}:host.fw-popover-left-below .fw-popover-caret{right:-16px;top:25px;width:16px!important}:host.fw-popover-left-below .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-right{margin-left:16px}:host.fw-popover-right .fw-popover-caret{left:-16px;top:calc(50% - 12.5px);width:16px!important}:host.fw-popover-right .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}:host.fw-popover-right-above{margin-left:16px}:host.fw-popover-right-above .fw-popover-caret{left:-16px;bottom:25px;width:16px!important}:host.fw-popover-right-above .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}:host.fw-popover-right-below{margin-left:16px}:host.fw-popover-right-below .fw-popover-caret{left:-16px;top:25px;width:16px!important}:host.fw-popover-right-below .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}\n"] });
3680
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverPanelComponent, decorators: [{
3681
+ type: Component,
3682
+ args: [{ selector: 'fw-popover-panel', template: "<div class=\"fw-popover-content-wrapper\">\n <ng-content></ng-content>\n <div class=\"fw-popover-caret\"></div>\n</div>\n", styles: [".vision-shadow-extra-large{box-shadow:0 8px 25px #0000001a}.vision-shadow-large,:host .fw-popover-content-wrapper{box-shadow:0 5px 15px #0000001a}.vision-shadow-medium{box-shadow:0 2px 5px #0000001a}.vision-shadow-small{box-shadow:0 1px 2px #0000000d}.vision-shadow-inner{box-shadow:0 2px 4px #00000014 inset}.vision-overlay{background-color:var(--separations-overlay)}:host .fw-popover-content-wrapper{position:relative;background:var(--card-background);border-radius:8px;border:1px solid var(--separations-base);min-width:60px;box-sizing:border-box}:host .fw-popover-content-wrapper .fw-popover-caret{position:absolute;overflow:hidden;width:25px;height:25px}:host .fw-popover-content-wrapper .fw-popover-caret:after{display:block;content:\"\";width:16px;height:16px;background:var(--card-background);border:1px solid var(--separations-base);transform:rotate(45deg);position:relative}:host.fw-popover-above{margin-bottom:16px}:host.fw-popover-above .fw-popover-caret{left:calc(50% - 12.5px);bottom:-16px;height:16px!important}:host.fw-popover-above .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-above-left{margin-bottom:16px}:host.fw-popover-above-left .fw-popover-caret{right:25px;bottom:-16px;height:16px!important}:host.fw-popover-above-left .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-above-right{margin-bottom:16px}:host.fw-popover-above-right .fw-popover-caret{left:25px;bottom:-16px;height:16px!important}:host.fw-popover-above-right .fw-popover-caret:after{margin:-9px auto;width:16px}:host.fw-popover-below{margin-top:16px}:host.fw-popover-below .fw-popover-caret{left:calc(50% - 12.5px);top:-16px;height:16px!important}:host.fw-popover-below .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-below-left{margin-top:16px}:host.fw-popover-below-left .fw-popover-caret{right:25px;top:-16px;height:16px!important}:host.fw-popover-below-left .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-below-right{margin-top:16px}:host.fw-popover-below-right .fw-popover-caret{left:25px;top:-16px;height:16px!important}:host.fw-popover-below-right .fw-popover-caret:after{top:16px;margin:-9px auto;width:16px}:host.fw-popover-left{margin-right:16px}:host.fw-popover-left .fw-popover-caret{right:-16px;top:calc(50% - 12.5px);width:16px!important}:host.fw-popover-left .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-left-above{margin-right:16px}:host.fw-popover-left-above .fw-popover-caret{right:-16px;bottom:25px;width:16px!important}:host.fw-popover-left-above .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-left-below{margin-right:16px}:host.fw-popover-left-below .fw-popover-caret{right:-16px;top:25px;width:16px!important}:host.fw-popover-left-below .fw-popover-caret:after{top:calc(50% - 8px);left:-9px;width:16px}:host.fw-popover-right{margin-left:16px}:host.fw-popover-right .fw-popover-caret{left:-16px;top:calc(50% - 12.5px);width:16px!important}:host.fw-popover-right .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}:host.fw-popover-right-above{margin-left:16px}:host.fw-popover-right-above .fw-popover-caret{left:-16px;bottom:25px;width:16px!important}:host.fw-popover-right-above .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}:host.fw-popover-right-below{margin-left:16px}:host.fw-popover-right-below .fw-popover-caret{left:-16px;top:25px;width:16px!important}:host.fw-popover-right-below .fw-popover-caret:after{top:calc(50% - 8px);right:-9px;width:16px}\n"] }]
3683
+ }], propDecorators: { position: [{
3684
+ type: Input
3685
+ }], mouseLeave: [{
3686
+ type: Output
3687
+ }], classes: [{
3688
+ type: HostBinding,
3689
+ args: ['attr.class']
3690
+ }], hidePopover: [{
3691
+ type: HostListener,
3692
+ args: ['mouseleave', ['$event']]
3693
+ }] } });
3694
+
3695
+ class FwPopoverComponent {
3696
+ constructor() {
3697
+ this.position = 'above';
3698
+ this.isOpen = false;
3699
+ this.action = 'mouseenter';
3700
+ this.positionMap = {
3701
+ 'above': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' },
3702
+ 'above-left': { originX: 'center', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetX: 40 },
3703
+ 'above-right': { originX: 'center', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetX: -40 },
3704
+ 'below': { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' },
3705
+ 'below-left': { originX: 'center', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetX: 40 },
3706
+ 'below-right': { originX: 'center', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetX: -40 },
3707
+ 'left': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },
3708
+ 'left-above': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'bottom', offsetY: 37 },
3709
+ 'left-below': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'top', offsetY: -40 },
3710
+ 'right': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },
3711
+ 'right-above': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'bottom', offsetY: 37 },
3712
+ 'right-below': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'top', offsetY: -40 },
3713
+ };
3714
+ }
3715
+ ngOnChanges() {
3716
+ if (this.action && this.trigger) {
3717
+ const trigger = this.trigger;
3718
+ if (this.action === 'mouseenter' && !trigger.onmouseenter) {
3719
+ trigger.onclick = undefined;
3720
+ trigger.style.cursor = 'pointer';
3721
+ trigger.onmouseenter = () => {
3722
+ this.isOpen = true;
3723
+ };
3724
+ // @ts-expect-error MouseEvent
3725
+ trigger.onmouseleave = (e) => {
3726
+ const relatedTarget = e.relatedTarget;
3727
+ if (!relatedTarget.classList.contains('fw-popover-caret') && !relatedTarget.classList.contains('cdk-overlay-pane')) {
3728
+ this.isOpen = false;
3729
+ }
3730
+ };
3731
+ }
3732
+ if (this.action === 'click' && !trigger.onclick) {
3733
+ trigger.onmouseenter = undefined;
3734
+ trigger.onmouseleave = undefined;
3735
+ trigger.onclick = () => {
3736
+ this.isOpen = !this.isOpen;
3737
+ };
3738
+ }
3739
+ }
3740
+ }
3741
+ backdropClick() {
3742
+ this.isOpen = false;
3743
+ }
3744
+ handlePanelLeave() {
3745
+ if (this.action === 'mouseenter') {
3746
+ this.isOpen = false;
3747
+ }
3748
+ }
3749
+ }
3750
+ FwPopoverComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3751
+ FwPopoverComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwPopoverComponent, selector: "fw-popover", inputs: { position: "position", trigger: "trigger", isOpen: "isOpen", action: "action", flyoutPanel: "flyoutPanel" }, usesOnChanges: true, ngImport: i0, template: "<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"action==='click'\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayPositions]=\"[positionMap[position]]\"\n (backdropClick)=\"backdropClick()\"\n (detach)=\"backdropClick()\">\n <fw-popover-panel [position]=\"position\" (mouseLeave)=\"handlePanelLeave()\">\n <ng-content></ng-content>\n </fw-popover-panel>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i1$3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "component", type: FwPopoverPanelComponent, selector: "fw-popover-panel", inputs: ["position"], outputs: ["mouseLeave"] }] });
3752
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverComponent, decorators: [{
3753
+ type: Component,
3754
+ args: [{ selector: 'fw-popover', template: "<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayHasBackdrop]=\"action==='click'\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayPositions]=\"[positionMap[position]]\"\n (backdropClick)=\"backdropClick()\"\n (detach)=\"backdropClick()\">\n <fw-popover-panel [position]=\"position\" (mouseLeave)=\"handlePanelLeave()\">\n <ng-content></ng-content>\n </fw-popover-panel>\n</ng-template>\n" }]
3755
+ }], propDecorators: { position: [{
3756
+ type: Input
3757
+ }], trigger: [{
3758
+ type: Input
3759
+ }], isOpen: [{
3760
+ type: Input
3761
+ }], action: [{
3762
+ type: Input
3763
+ }], flyoutPanel: [{
3764
+ type: Input
3765
+ }] } });
3766
+
3767
+ class FwPopoverModule {
3768
+ }
3769
+ FwPopoverModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3770
+ FwPopoverModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverModule, declarations: [FwPopoverComponent,
3771
+ FwPopoverPanelComponent], imports: [CommonModule,
3772
+ FwLayoutsModule,
3773
+ OverlayModule], exports: [FwPopoverComponent,
3774
+ FwPopoverPanelComponent] });
3775
+ FwPopoverModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverModule, providers: [
3776
+ Overlay,
3777
+ ], imports: [CommonModule,
3778
+ FwLayoutsModule,
3779
+ OverlayModule] });
3780
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwPopoverModule, decorators: [{
3781
+ type: NgModule,
3782
+ args: [{
3783
+ imports: [
3784
+ CommonModule,
3785
+ FwLayoutsModule,
3786
+ OverlayModule,
3787
+ ],
3788
+ exports: [
3789
+ FwPopoverComponent,
3790
+ FwPopoverPanelComponent,
3791
+ ],
3792
+ declarations: [
3793
+ FwPopoverComponent,
3794
+ FwPopoverPanelComponent,
3795
+ ],
3796
+ providers: [
3797
+ Overlay,
3798
+ ],
3799
+ }]
3800
+ }] });
3801
+
3802
+ class BackButtonComponent {
3803
+ constructor(location) {
3804
+ this.location = location;
3805
+ this.class = 'fw-back-button';
3806
+ }
3807
+ }
3808
+ BackButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BackButtonComponent, deps: [{ token: i1.Location }], target: i0.ɵɵFactoryTarget.Component });
3809
+ BackButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: BackButtonComponent, selector: "fw-back-button", host: { properties: { "attr.class": "this.class" } }, ngImport: i0, template: "<button (click)=\"location.back()\"><fw-icon>arrow-back</fw-icon></button>", styles: [".fw-back-button button{color:var(--typography-light);background-color:transparent;border:1px solid var(--typography-light);width:44px;height:44px;border-radius:36px;display:flex;align-items:center;justify-content:center}.fw-back-button button fw-icon{line-height:42px;font-size:24px;color:var(--typography-light)}\n"], dependencies: [{ kind: "component", type: FwIconComponent, selector: "fw-icon" }], encapsulation: i0.ViewEncapsulation.None });
3810
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: BackButtonComponent, decorators: [{
3811
+ type: Component,
3812
+ args: [{ selector: 'fw-back-button', encapsulation: ViewEncapsulation.None, template: "<button (click)=\"location.back()\"><fw-icon>arrow-back</fw-icon></button>", styles: [".fw-back-button button{color:var(--typography-light);background-color:transparent;border:1px solid var(--typography-light);width:44px;height:44px;border-radius:36px;display:flex;align-items:center;justify-content:center}.fw-back-button button fw-icon{line-height:42px;font-size:24px;color:var(--typography-light)}\n"] }]
3813
+ }], ctorParameters: function () { return [{ type: i1.Location }]; }, propDecorators: { class: [{
3814
+ type: HostBinding,
3815
+ args: ['attr.class']
3816
+ }] } });
3817
+
3818
+ class FwSectionHeadingComponent {
3819
+ constructor() {
3820
+ this.class = 'fw-section-heading';
3821
+ this.backButton = false;
3822
+ }
3823
+ }
3824
+ FwSectionHeadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSectionHeadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3825
+ FwSectionHeadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwSectionHeadingComponent, selector: "fw-section-heading", inputs: { title: "title", description: "description", backButton: "backButton", icon: "icon" }, host: { properties: { "attr.class": "this.class" } }, ngImport: i0, template: "<div class=\"heading-area\">\n <fw-back-button *ngIf=\"backButton\"></fw-back-button>\n <fw-icon *ngIf=\"icon\" class=\"heading-icon\">{{ icon }}</fw-icon>\n <ng-content select=\"fw-icon\"></ng-content>\n <div>\n <h2 class=\"section-heading\">{{ title }}\n <ng-content select=\"fw-chip\"></ng-content>\n </h2>\n <p *ngIf=\"description\">{{ description }}</p>\n <ng-content select=\"p\"></ng-content>\n </div>\n</div>\n<div class=\"right-content\">\n <ng-content></ng-content>\n</div>\n", styles: [".fw-section-heading{width:100%;display:flex;justify-content:space-between;align-items:center}.fw-section-heading .heading-area{display:flex;align-items:center;gap:20px}.fw-section-heading .heading-area h2{color:var(--typography-base);margin:0;display:flex;align-items:center;gap:8px}.fw-section-heading .heading-area p{color:var(--typography-muted);margin:0;display:flex;align-items:center;gap:8px}.fw-section-heading .heading-area p a{color:var(--typography-muted)}.fw-section-heading .heading-area fw-icon.heading-icon{box-sizing:border-box;color:var(--primary-base);width:44px;height:44px;font-size:32px;text-align:center;justify-content:center;padding:6px}.fw-section-heading .right-content{display:flex;gap:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon" }, { kind: "component", type: BackButtonComponent, selector: "fw-back-button" }], encapsulation: i0.ViewEncapsulation.None });
3826
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSectionHeadingComponent, decorators: [{
3827
+ type: Component,
3828
+ args: [{ selector: 'fw-section-heading', encapsulation: ViewEncapsulation.None, template: "<div class=\"heading-area\">\n <fw-back-button *ngIf=\"backButton\"></fw-back-button>\n <fw-icon *ngIf=\"icon\" class=\"heading-icon\">{{ icon }}</fw-icon>\n <ng-content select=\"fw-icon\"></ng-content>\n <div>\n <h2 class=\"section-heading\">{{ title }}\n <ng-content select=\"fw-chip\"></ng-content>\n </h2>\n <p *ngIf=\"description\">{{ description }}</p>\n <ng-content select=\"p\"></ng-content>\n </div>\n</div>\n<div class=\"right-content\">\n <ng-content></ng-content>\n</div>\n", styles: [".fw-section-heading{width:100%;display:flex;justify-content:space-between;align-items:center}.fw-section-heading .heading-area{display:flex;align-items:center;gap:20px}.fw-section-heading .heading-area h2{color:var(--typography-base);margin:0;display:flex;align-items:center;gap:8px}.fw-section-heading .heading-area p{color:var(--typography-muted);margin:0;display:flex;align-items:center;gap:8px}.fw-section-heading .heading-area p a{color:var(--typography-muted)}.fw-section-heading .heading-area fw-icon.heading-icon{box-sizing:border-box;color:var(--primary-base);width:44px;height:44px;font-size:32px;text-align:center;justify-content:center;padding:6px}.fw-section-heading .right-content{display:flex;gap:10px}\n"] }]
3829
+ }], ctorParameters: function () { return []; }, propDecorators: { class: [{
3830
+ type: HostBinding,
3831
+ args: ['attr.class']
3832
+ }], title: [{
3833
+ type: Input
3834
+ }], description: [{
3835
+ type: Input
3836
+ }], backButton: [{
3837
+ type: Input
3838
+ }], icon: [{
3839
+ type: Input
3840
+ }] } });
3841
+
3842
+ class FwSubsectionHeadingComponent {
3843
+ constructor() {
3844
+ }
3845
+ }
3846
+ FwSubsectionHeadingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSubsectionHeadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3847
+ FwSubsectionHeadingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwSubsectionHeadingComponent, selector: "fw-subsection-heading", inputs: { title: "title", icon: "icon" }, ngImport: i0, template: "<div class=\"heading-area\">\n <fw-icon *ngIf=\"icon\">{{ icon }}</fw-icon>\n <h3 class=\"subsection-heading\">{{ title }}</h3>\n</div>\n<div class=\"right-content\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{width:100%;display:flex;justify-content:space-between;align-items:center}:host .heading-area{display:flex;align-items:center;gap:8px}:host .heading-area h3{color:var(--typography-base);margin:0}:host .heading-area fw-icon{color:var(--typography-light);width:24px;height:24px;font-size:24px;text-align:center}:host .right-content{display:flex;gap:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon" }] });
3848
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSubsectionHeadingComponent, decorators: [{
3849
+ type: Component,
3850
+ args: [{ selector: 'fw-subsection-heading', template: "<div class=\"heading-area\">\n <fw-icon *ngIf=\"icon\">{{ icon }}</fw-icon>\n <h3 class=\"subsection-heading\">{{ title }}</h3>\n</div>\n<div class=\"right-content\">\n <ng-content></ng-content>\n</div>\n", styles: [":host{width:100%;display:flex;justify-content:space-between;align-items:center}:host .heading-area{display:flex;align-items:center;gap:8px}:host .heading-area h3{color:var(--typography-base);margin:0}:host .heading-area fw-icon{color:var(--typography-light);width:24px;height:24px;font-size:24px;text-align:center}:host .right-content{display:flex;gap:10px}\n"] }]
3851
+ }], ctorParameters: function () { return []; }, propDecorators: { title: [{
3852
+ type: Input
3853
+ }], icon: [{
3854
+ type: Input
3855
+ }] } });
3856
+
3857
+ class FwSectionHeadingModule {
3858
+ }
3859
+ FwSectionHeadingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSectionHeadingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
3860
+ FwSectionHeadingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: FwSectionHeadingModule, declarations: [BackButtonComponent,
3861
+ FwSectionHeadingComponent,
3862
+ FwSubsectionHeadingComponent], imports: [CommonModule,
3863
+ FwButtonModule,
3864
+ FwIconModule], exports: [FwSectionHeadingComponent,
3865
+ FwSubsectionHeadingComponent] });
3866
+ FwSectionHeadingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSectionHeadingModule, imports: [CommonModule,
3867
+ FwButtonModule,
3868
+ FwIconModule] });
3869
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSectionHeadingModule, decorators: [{
3870
+ type: NgModule,
3871
+ args: [{
3872
+ imports: [
3873
+ CommonModule,
3874
+ FwButtonModule,
3875
+ FwIconModule,
3876
+ ],
3877
+ exports: [
3878
+ FwSectionHeadingComponent,
3879
+ FwSubsectionHeadingComponent,
3880
+ ],
3881
+ declarations: [
3882
+ BackButtonComponent,
3883
+ FwSectionHeadingComponent,
3884
+ FwSubsectionHeadingComponent,
3885
+ ],
3886
+ }]
3887
+ }] });
3888
+
3354
3889
  function genMessageId() {
3355
3890
  return String.prototype.padStart(24, Math.floor(Math.random() * Date.now()).toString(16));
3356
3891
  }
@@ -3563,10 +4098,10 @@ class FwSnackbarContainerComponent {
3563
4098
  }
3564
4099
  }
3565
4100
  FwSnackbarContainerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSnackbarContainerComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: FwSnackbarService }], target: i0.ɵɵFactoryTarget.Component });
3566
- FwSnackbarContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwSnackbarContainerComponent, selector: "fw-snackbar-container", host: { properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<div role=\"list\">\n <div class=\"buttons\">\n <fw-button\n *ngIf=\"messages.length > 5\" (click)=\"clearAll()\"\n class=\"clear-all\" aria-label=\"clear all\"\n color=\"slate\" size=\"small\" type=\"ghost\">\n Clear All\n </fw-button>\n </div>\n <fw-snackbar\n *ngFor=\"let message of messages; index as $index\"\n (ready)=\"onReady($event)\"\n (dismiss)=\"onDismiss($event)\"\n [message]=\"message\"\n [attr.aria-label]=\"message.message\"\n role=\"listitem\"\n ></fw-snackbar>\n</div>\n", styles: ["fw-snackbar-container{position:absolute;right:6px;bottom:10px;z-index:999999}fw-snackbar-container .buttons{text-align:right;padding-right:10px}\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: FwButtonComponent, selector: "fw-button", inputs: ["color", "size", "variant", "disabled", "fullWidth", "leftIcon", "rightIcon"] }, { kind: "component", type: FwSnackbarComponent, selector: "fw-snackbar", inputs: ["message", "messageDuration"], outputs: ["ready", "dismiss", "action"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
4101
+ FwSnackbarContainerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwSnackbarContainerComponent, selector: "fw-snackbar-container", host: { properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<div role=\"list\">\n <div class=\"buttons\">\n <fw-button\n *ngIf=\"messages.length > 5\" (click)=\"clearAll()\"\n class=\"clear-all\" aria-label=\"clear all\"\n color=\"slate\" size=\"small\" type=\"ghost\">\n Clear All\n </fw-button>\n </div>\n <fw-snackbar\n *ngFor=\"let message of messages; index as $index\"\n (ready)=\"onReady($event)\"\n (dismiss)=\"onDismiss($event)\"\n [message]=\"message\"\n [attr.aria-label]=\"message.message\"\n role=\"listitem\"\n ></fw-snackbar>\n</div>\n", styles: ["fw-snackbar-container{position:fixed;right:6px;bottom:10px;z-index:999999}fw-snackbar-container .buttons{text-align:right;padding-right:10px}\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: FwButtonComponent, selector: "fw-button", inputs: ["color", "size", "variant", "disabled", "fullWidth", "leftIcon", "rightIcon"] }, { kind: "component", type: FwSnackbarComponent, selector: "fw-snackbar", inputs: ["message", "messageDuration"], outputs: ["ready", "dismiss", "action"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
3567
4102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSnackbarContainerComponent, decorators: [{
3568
4103
  type: Component,
3569
- args: [{ selector: 'fw-snackbar-container', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div role=\"list\">\n <div class=\"buttons\">\n <fw-button\n *ngIf=\"messages.length > 5\" (click)=\"clearAll()\"\n class=\"clear-all\" aria-label=\"clear all\"\n color=\"slate\" size=\"small\" type=\"ghost\">\n Clear All\n </fw-button>\n </div>\n <fw-snackbar\n *ngFor=\"let message of messages; index as $index\"\n (ready)=\"onReady($event)\"\n (dismiss)=\"onDismiss($event)\"\n [message]=\"message\"\n [attr.aria-label]=\"message.message\"\n role=\"listitem\"\n ></fw-snackbar>\n</div>\n", styles: ["fw-snackbar-container{position:absolute;right:6px;bottom:10px;z-index:999999}fw-snackbar-container .buttons{text-align:right;padding-right:10px}\n"] }]
4104
+ args: [{ selector: 'fw-snackbar-container', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div role=\"list\">\n <div class=\"buttons\">\n <fw-button\n *ngIf=\"messages.length > 5\" (click)=\"clearAll()\"\n class=\"clear-all\" aria-label=\"clear all\"\n color=\"slate\" size=\"small\" type=\"ghost\">\n Clear All\n </fw-button>\n </div>\n <fw-snackbar\n *ngFor=\"let message of messages; index as $index\"\n (ready)=\"onReady($event)\"\n (dismiss)=\"onDismiss($event)\"\n [message]=\"message\"\n [attr.aria-label]=\"message.message\"\n role=\"listitem\"\n ></fw-snackbar>\n</div>\n", styles: ["fw-snackbar-container{position:fixed;right:6px;bottom:10px;z-index:999999}fw-snackbar-container .buttons{text-align:right;padding-right:10px}\n"] }]
3570
4105
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: FwSnackbarService }]; }, propDecorators: { classes: [{
3571
4106
  type: HostBinding,
3572
4107
  args: ['attr.class']
@@ -3683,10 +4218,10 @@ class FwStepComponent {
3683
4218
  }
3684
4219
  }
3685
4220
  FwStepComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwStepComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3686
- FwStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwStepComponent, selector: "fw-step", inputs: { stepNumber: "stepNumber", color: "color", variant: "variant", alignment: "alignment", backgroundColor: "backgroundColor", title: "title", description: "description", icon: "icon", disabled: "disabled", active: "active", completed: "completed", done: "done", status: "status" }, outputs: { select: "select" }, usesOnChanges: true, ngImport: i0, template: "<div\n [ngClass]=\"['step-wrapper', 'step-color-'+color, 'step-alignment-'+alignment]\"\n [class.disabled]=\"disabled\"\n [class.active]=\"active\"\n [class.completed]=\"completed\"\n [class.done]=\"done\"\n (click)=\"handleClick()\">\n <div class=\"step-connector\"></div>\n <div class=\"step-content\" [style]=\"{backgroundColor: backgroundColor}\">\n <div\n class=\"step-decorator-wrapper\"\n [style]=\"{outlineColor: backgroundColor, backgroundColor: backgroundColor}\">\n <div *ngIf=\"done; else notDone\" class=\"step-done\" [style]=\"{outlineColor: backgroundColor}\">\n <fw-icon>done-check</fw-icon>\n </div>\n </div>\n <ng-template #notDone>\n <div *ngIf=\"variant==='number'\" class=\"step-number\">\n <h5>{{ stepNumber }}</h5>\n </div>\n <div *ngIf=\"variant==='icon'\" class=\"step-icon\">\n <fw-icon>{{ icon }}</fw-icon>\n </div>\n <div *ngIf=\"variant==='decorator'\" class=\"step-decorator\">\n <ng-content select=\"fw-step-decorator\"></ng-content>\n </div>\n </ng-template>\n <div class=\"step-text\">\n <h4>{{ title }}</h4>\n <p *ngIf=\"description\" class=\"vision-p4 description\">{{ description }}</p>\n </div>\n </div>\n</div>\n", styles: [":host{box-sizing:border-box;position:relative;flex:1;display:flex;align-items:flex-start;justify-content:center}:host .step-connector{position:absolute;left:-50%;right:0;top:17px;height:1px;width:100%;background-color:var(--separations-base);z-index:49}:host:first-of-type .step-connector{display:none}:host .step-content{position:relative;z-index:50}:host .step-number{box-sizing:border-box;display:flex;width:24px;height:24px;margin:5px 8px;padding:9px;flex-direction:column;justify-content:center;align-items:center;border-radius:64px;border:1px solid var(--separations-base);background:var(--slate-hover)}:host .step-number h5{color:inherit;margin:0}:host .step-icon{box-sizing:border-box;display:flex;width:24px;height:24px;margin:5px 8px;flex-direction:column;justify-content:center;align-items:center;background-color:var(--card-background);color:var(--typography-muted);font-size:24px}:host .step-decorator{box-sizing:border-box;display:flex;width:24px;height:24px;margin:5px 8px;flex-direction:column;justify-content:center;align-items:center;background-color:var(--card-background);font-size:24px}:host .step-done{box-sizing:border-box;display:flex;width:24px;height:24px;margin:5px 8px;flex-direction:column;justify-content:center;align-items:center;border-radius:64px;color:var(--typography-contrast);background-color:var(--green-base);font-size:16px}:host .step-text{flex:1;display:flex;flex-direction:column;justify-content:center;color:var(--typography-muted);font-size:14px;font-weight:500;line-height:130%}:host .step-text h4{margin:0;white-space:nowrap;color:var(--typography-muted)}:host .step-text p{margin:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-y:hidden;text-overflow:ellipsis}:host .step-text .description{color:var(--typography-muted);font-size:10px;font-weight:400;line-height:12px}:host .step-alignment-center .step-content{background-color:transparent!important;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}:host .step-alignment-center .step-content .step-text{align-items:center}:host .step-alignment-left .step-content{background-color:var(--card-background);padding-right:10px;display:flex;flex-direction:row}:host .active .step-number{background-color:transparent;border:1px solid var(--primary-base);color:var(--primary-base)}:host .active .step-icon{color:var(--primary-base)}:host .active .step-text{color:var(--primary-base)}:host .active .step-text h4{color:var(--primary-base)}:host .active .step-connector{background-color:var(--primary-base)}:host .completed .step-number,:host .completed .step-icon{background-color:var(--primary-base);border:1px solid var(--primary-base);color:var(--typography-contrast)}:host .completed .step-icon{background-color:transparent;border:none;color:var(--primary-base)}:host .completed .step-text{color:var(--typography-base)}:host .completed .step-text h4{color:var(--typography-base)}:host .completed .step-connector{background-color:var(--primary-base)}:host .completed:not(.done){cursor:pointer}:host .done .step-connector{background-color:var(--green-base)}:host .step-color-error .step-number{background-color:var(--red-hover);color:var(--red-base)}:host .step-color-error .step-icon{color:var(--red-base)}:host .step-color-error .step-text{color:var(--red-base)}:host .step-color-error .step-text h4{color:var(--red-base)}:host .step-color-error .step-text .description{color:var(--red-base)}:host .step-color-error.active{color:var(--red-base)}:host .step-color-error.active .step-number{border-color:var(--red-base);color:var(--red-base)}:host .step-color-error.completed .step-number{color:var(--typography-contrast);border-color:var(--red-base);background-color:var(--red-base)}:host .step-color-error.completed .step-icon{background-color:transparent;border:none}:host .step-color-warning .step-number{background-color:var(--orange-hover);color:var(--orange-base)}:host .step-color-warning .step-icon{color:var(--orange-base)}:host .step-color-warning .step-text{color:var(--orange-base)}:host .step-color-warning .step-text h4{color:var(--orange-base)}:host .step-color-warning .step-text .description{color:var(--orange-base)}:host .step-color-warning.active{color:var(--orange-base)}:host .step-color-warning.active .step-number{border-color:var(--orange-base);color:var(--orange-base)}:host .step-color-warning.completed .step-number{color:var(--typography-contrast);border-color:var(--orange-base);background-color:var(--orange-base)}:host .step-color-warning.completed .step-icon{background-color:transparent;border:none}:host .step-color-success .step-number{background-color:var(--green-hover);color:var(--green-base)}:host .step-color-success .step-icon{color:var(--green-base)}:host .step-color-success .step-text{color:var(--green-base)}:host .step-color-success .step-text h4{color:var(--green-base)}:host .step-color-success .step-text .description{color:var(--green-base)}:host .step-color-success.active{color:var(--green-base)}:host .step-color-success.active .step-number{border-color:var(--green-base);color:var(--green-base)}:host .step-color-success.completed .step-number{color:var(--typography-contrast);border-color:var(--green-base);background-color:var(--green-base)}:host .step-color-success.completed .step-icon{background-color:transparent;border:none}:host .step-color-info .step-number{background-color:var(--primary-hover);color:var(--primary-base)}:host .step-color-info .step-icon{color:var(--primary-base)}:host .step-color-info .step-text{color:var(--primary-base)}:host .step-color-info .step-text h4{color:var(--primary-base)}:host .step-color-info .step-text .description{color:var(--primary-base)}:host .step-color-info.active{color:var(--primary-base)}:host .step-color-info.active .step-number{background-color:var(--typography-contrast);border-color:var(--primary-base);color:var(--primary-base)}:host .step-color-info.completed .step-number{color:var(--typography-contrast);border-color:var(--primary-base);background-color:var(--primary-base)}:host .step-color-info.completed .step-icon{background-color:transparent;border:none}:host .disabled .step-icon{opacity:.4}:host .disabled .step-text{color:var(--typography-muted);opacity:.4}:host .disabled .step-text h4{color:var(--typography-muted)}:host .disabled .step-text .description{color:var(--typography-muted)}:host .disabled .step-number{color:var(--typography-muted);border-color:var(--separations-base);background-color:var(--slate-focus)}:host .disabled .step-icon{color:var(--typography-muted);background-color:var(--typography-contrast);border-color:var(--typography-contrast)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon" }] });
4221
+ FwStepComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwStepComponent, selector: "fw-step", inputs: { stepNumber: "stepNumber", color: "color", variant: "variant", alignment: "alignment", backgroundColor: "backgroundColor", title: "title", description: "description", icon: "icon", disabled: "disabled", active: "active", completed: "completed", done: "done", status: "status" }, outputs: { select: "select" }, usesOnChanges: true, ngImport: i0, template: "<div\n [ngClass]=\"['step-wrapper', 'step-color-'+color, 'step-alignment-'+alignment]\"\n [class.disabled]=\"disabled\"\n [class.active]=\"active\"\n [class.completed]=\"completed\"\n [class.done]=\"done\"\n (click)=\"handleClick()\">\n <div class=\"step-connector\"></div>\n <div class=\"step-content\" [style]=\"{backgroundColor: backgroundColor}\">\n <div\n class=\"step-decorator-wrapper\"\n [style]=\"{outlineColor: backgroundColor, backgroundColor: backgroundColor}\">\n <div *ngIf=\"done; else notDone\" class=\"step-done\" [style]=\"{outlineColor: backgroundColor}\">\n <fw-icon>done-check</fw-icon>\n </div>\n </div>\n <ng-template #notDone>\n <div *ngIf=\"variant==='number'\" class=\"step-number\">\n <h5>{{ stepNumber }}</h5>\n </div>\n <div *ngIf=\"variant==='icon'\" class=\"step-icon\">\n <fw-icon>{{ icon }}</fw-icon>\n </div>\n <div *ngIf=\"variant==='decorator'\" class=\"step-decorator\">\n <ng-content select=\"fw-step-decorator\"></ng-content>\n </div>\n </ng-template>\n <div class=\"step-text\">\n <h4>{{ title }}</h4>\n <p *ngIf=\"description\" class=\"vision-p4 description\">{{ description }}</p>\n </div>\n </div>\n</div>\n", styles: [":host{box-sizing:border-box;position:relative;flex:1;display:flex;align-items:flex-start;justify-content:center}:host .step-connector{position:absolute;left:-50%;right:0;top:17px;height:1px;width:100%;background-color:var(--separations-base);z-index:49}:host:first-of-type .step-connector{display:none}:host .step-content{position:relative;z-index:50}:host .step-number{box-sizing:border-box;display:flex;width:24px;height:24px;margin:5px 8px;padding:9px;flex-direction:column;justify-content:center;align-items:center;border-radius:64px;border:1px solid var(--separations-base);background:var(--slate-hover)}:host .step-number h5{color:inherit;margin:0}:host .step-icon{box-sizing:border-box;display:flex;width:24px;height:24px;margin:5px 8px;flex-direction:column;justify-content:center;align-items:center;background-color:var(--card-background);color:var(--typography-muted);font-size:24px}:host .step-decorator{box-sizing:border-box;display:flex;width:24px;height:24px;margin:5px 8px;flex-direction:column;justify-content:center;align-items:center;background-color:var(--card-background);font-size:24px}:host .step-done{box-sizing:border-box;display:flex;width:24px;height:24px;margin:5px 8px;flex-direction:column;justify-content:center;align-items:center;border-radius:64px;color:var(--typography-contrast);background-color:var(--green-base);font-size:16px}:host .step-text{flex:1;display:flex;flex-direction:column;justify-content:center;color:var(--typography-muted);font-size:14px;font-weight:500;line-height:130%}:host .step-text h4{margin:0;white-space:nowrap;color:var(--typography-muted)}:host .step-text p{margin:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-y:hidden;text-overflow:ellipsis}:host .step-text .description{color:var(--typography-muted);font-size:10px;font-weight:400;line-height:12px}:host .step-alignment-center .step-content{background-color:transparent!important;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}:host .step-alignment-center .step-content .step-text{align-items:center}:host .step-alignment-left .step-content{background-color:var(--card-background);padding-right:10px;display:flex;flex-direction:row}:host .active .step-number{background-color:transparent;border:1px solid var(--primary-base);color:var(--primary-base)}:host .active .step-icon{color:var(--primary-base)}:host .active .step-text{color:var(--primary-base)}:host .active .step-text h4{color:var(--primary-base)}:host .active .step-connector{background-color:var(--primary-base)}:host .completed .step-number,:host .completed .step-icon{background-color:var(--primary-base);border:1px solid var(--primary-base);color:var(--typography-contrast)}:host .completed .step-icon{background-color:transparent;border:none;color:var(--primary-base)}:host .completed .step-text{color:var(--typography-base)}:host .completed .step-text h4{color:var(--typography-base)}:host .completed .step-connector{background-color:var(--primary-base)}:host .completed:not(.done){cursor:pointer}:host .done .step-connector{background-color:var(--green-base)}:host .step-color-error .step-number{background-color:var(--red-hover);color:var(--red-base)}:host .step-color-error .step-icon{color:var(--red-base)}:host .step-color-error .step-text{color:var(--red-base)}:host .step-color-error .step-text h4{color:var(--red-base)}:host .step-color-error .step-text .description{color:var(--red-base)}:host .step-color-error.active{color:var(--red-base)}:host .step-color-error.active .step-number{border-color:var(--red-base);color:var(--red-base)}:host .step-color-error.completed .step-number{color:var(--typography-contrast);border-color:var(--red-base);background-color:var(--red-base)}:host .step-color-error.completed .step-icon{background-color:transparent;border:none}:host .step-color-warning .step-number{background-color:var(--orange-hover);color:var(--orange-base)}:host .step-color-warning .step-icon{color:var(--orange-base)}:host .step-color-warning .step-text{color:var(--orange-base)}:host .step-color-warning .step-text h4{color:var(--orange-base)}:host .step-color-warning .step-text .description{color:var(--orange-base)}:host .step-color-warning.active{color:var(--orange-base)}:host .step-color-warning.active .step-number{border-color:var(--orange-base);color:var(--orange-base)}:host .step-color-warning.completed .step-number{color:var(--typography-contrast);border-color:var(--orange-base);background-color:var(--orange-base)}:host .step-color-warning.completed .step-icon{background-color:transparent;border:none}:host .step-color-success .step-number{background-color:var(--green-hover);color:var(--green-base)}:host .step-color-success .step-icon{color:var(--green-base)}:host .step-color-success .step-text{color:var(--green-base)}:host .step-color-success .step-text h4{color:var(--green-base)}:host .step-color-success .step-text .description{color:var(--green-base)}:host .step-color-success.active{color:var(--green-base)}:host .step-color-success.active .step-number{border-color:var(--green-base);color:var(--green-base)}:host .step-color-success.completed .step-number{color:var(--typography-contrast);border-color:var(--green-base);background-color:var(--green-base)}:host .step-color-success.completed .step-icon{background-color:transparent;border:none}:host .step-color-info .step-number{background-color:var(--primary-hover);color:var(--primary-base)}:host .step-color-info .step-icon{color:var(--primary-base)}:host .step-color-info .step-text{color:var(--primary-base)}:host .step-color-info .step-text h4{color:var(--primary-base)}:host .step-color-info .step-text .description{color:var(--primary-base)}:host .step-color-info.active{color:var(--primary-base)}:host .step-color-info.active .step-number{background-color:var(--typography-contrast);border-color:var(--primary-base);color:var(--primary-base)}:host .step-color-info.completed .step-number{color:var(--typography-contrast);border-color:var(--primary-base);background-color:var(--primary-base)}:host .step-color-info.completed .step-icon{background-color:transparent;border:none}:host .disabled .step-text{color:var(--typography-muted);opacity:.4}:host .disabled .step-text h4{color:var(--typography-muted)}:host .disabled .step-text .description{color:var(--typography-muted)}:host .disabled .step-number{color:var(--typography-muted);border-color:var(--separations-base);background-color:var(--slate-focus)}:host .disabled .step-icon{opacity:.4;color:var(--typography-muted);background-color:var(--typography-contrast);border-color:var(--typography-contrast)}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon" }] });
3687
4222
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwStepComponent, decorators: [{
3688
4223
  type: Component,
3689
- args: [{ selector: 'fw-step', template: "<div\n [ngClass]=\"['step-wrapper', 'step-color-'+color, 'step-alignment-'+alignment]\"\n [class.disabled]=\"disabled\"\n [class.active]=\"active\"\n [class.completed]=\"completed\"\n [class.done]=\"done\"\n (click)=\"handleClick()\">\n <div class=\"step-connector\"></div>\n <div class=\"step-content\" [style]=\"{backgroundColor: backgroundColor}\">\n <div\n class=\"step-decorator-wrapper\"\n [style]=\"{outlineColor: backgroundColor, backgroundColor: backgroundColor}\">\n <div *ngIf=\"done; else notDone\" class=\"step-done\" [style]=\"{outlineColor: backgroundColor}\">\n <fw-icon>done-check</fw-icon>\n </div>\n </div>\n <ng-template #notDone>\n <div *ngIf=\"variant==='number'\" class=\"step-number\">\n <h5>{{ stepNumber }}</h5>\n </div>\n <div *ngIf=\"variant==='icon'\" class=\"step-icon\">\n <fw-icon>{{ icon }}</fw-icon>\n </div>\n <div *ngIf=\"variant==='decorator'\" class=\"step-decorator\">\n <ng-content select=\"fw-step-decorator\"></ng-content>\n </div>\n </ng-template>\n <div class=\"step-text\">\n <h4>{{ title }}</h4>\n <p *ngIf=\"description\" class=\"vision-p4 description\">{{ description }}</p>\n </div>\n </div>\n</div>\n", styles: [":host{box-sizing:border-box;position:relative;flex:1;display:flex;align-items:flex-start;justify-content:center}:host .step-connector{position:absolute;left:-50%;right:0;top:17px;height:1px;width:100%;background-color:var(--separations-base);z-index:49}:host:first-of-type .step-connector{display:none}:host .step-content{position:relative;z-index:50}:host .step-number{box-sizing:border-box;display:flex;width:24px;height:24px;margin:5px 8px;padding:9px;flex-direction:column;justify-content:center;align-items:center;border-radius:64px;border:1px solid var(--separations-base);background:var(--slate-hover)}:host .step-number h5{color:inherit;margin:0}:host .step-icon{box-sizing:border-box;display:flex;width:24px;height:24px;margin:5px 8px;flex-direction:column;justify-content:center;align-items:center;background-color:var(--card-background);color:var(--typography-muted);font-size:24px}:host .step-decorator{box-sizing:border-box;display:flex;width:24px;height:24px;margin:5px 8px;flex-direction:column;justify-content:center;align-items:center;background-color:var(--card-background);font-size:24px}:host .step-done{box-sizing:border-box;display:flex;width:24px;height:24px;margin:5px 8px;flex-direction:column;justify-content:center;align-items:center;border-radius:64px;color:var(--typography-contrast);background-color:var(--green-base);font-size:16px}:host .step-text{flex:1;display:flex;flex-direction:column;justify-content:center;color:var(--typography-muted);font-size:14px;font-weight:500;line-height:130%}:host .step-text h4{margin:0;white-space:nowrap;color:var(--typography-muted)}:host .step-text p{margin:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-y:hidden;text-overflow:ellipsis}:host .step-text .description{color:var(--typography-muted);font-size:10px;font-weight:400;line-height:12px}:host .step-alignment-center .step-content{background-color:transparent!important;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}:host .step-alignment-center .step-content .step-text{align-items:center}:host .step-alignment-left .step-content{background-color:var(--card-background);padding-right:10px;display:flex;flex-direction:row}:host .active .step-number{background-color:transparent;border:1px solid var(--primary-base);color:var(--primary-base)}:host .active .step-icon{color:var(--primary-base)}:host .active .step-text{color:var(--primary-base)}:host .active .step-text h4{color:var(--primary-base)}:host .active .step-connector{background-color:var(--primary-base)}:host .completed .step-number,:host .completed .step-icon{background-color:var(--primary-base);border:1px solid var(--primary-base);color:var(--typography-contrast)}:host .completed .step-icon{background-color:transparent;border:none;color:var(--primary-base)}:host .completed .step-text{color:var(--typography-base)}:host .completed .step-text h4{color:var(--typography-base)}:host .completed .step-connector{background-color:var(--primary-base)}:host .completed:not(.done){cursor:pointer}:host .done .step-connector{background-color:var(--green-base)}:host .step-color-error .step-number{background-color:var(--red-hover);color:var(--red-base)}:host .step-color-error .step-icon{color:var(--red-base)}:host .step-color-error .step-text{color:var(--red-base)}:host .step-color-error .step-text h4{color:var(--red-base)}:host .step-color-error .step-text .description{color:var(--red-base)}:host .step-color-error.active{color:var(--red-base)}:host .step-color-error.active .step-number{border-color:var(--red-base);color:var(--red-base)}:host .step-color-error.completed .step-number{color:var(--typography-contrast);border-color:var(--red-base);background-color:var(--red-base)}:host .step-color-error.completed .step-icon{background-color:transparent;border:none}:host .step-color-warning .step-number{background-color:var(--orange-hover);color:var(--orange-base)}:host .step-color-warning .step-icon{color:var(--orange-base)}:host .step-color-warning .step-text{color:var(--orange-base)}:host .step-color-warning .step-text h4{color:var(--orange-base)}:host .step-color-warning .step-text .description{color:var(--orange-base)}:host .step-color-warning.active{color:var(--orange-base)}:host .step-color-warning.active .step-number{border-color:var(--orange-base);color:var(--orange-base)}:host .step-color-warning.completed .step-number{color:var(--typography-contrast);border-color:var(--orange-base);background-color:var(--orange-base)}:host .step-color-warning.completed .step-icon{background-color:transparent;border:none}:host .step-color-success .step-number{background-color:var(--green-hover);color:var(--green-base)}:host .step-color-success .step-icon{color:var(--green-base)}:host .step-color-success .step-text{color:var(--green-base)}:host .step-color-success .step-text h4{color:var(--green-base)}:host .step-color-success .step-text .description{color:var(--green-base)}:host .step-color-success.active{color:var(--green-base)}:host .step-color-success.active .step-number{border-color:var(--green-base);color:var(--green-base)}:host .step-color-success.completed .step-number{color:var(--typography-contrast);border-color:var(--green-base);background-color:var(--green-base)}:host .step-color-success.completed .step-icon{background-color:transparent;border:none}:host .step-color-info .step-number{background-color:var(--primary-hover);color:var(--primary-base)}:host .step-color-info .step-icon{color:var(--primary-base)}:host .step-color-info .step-text{color:var(--primary-base)}:host .step-color-info .step-text h4{color:var(--primary-base)}:host .step-color-info .step-text .description{color:var(--primary-base)}:host .step-color-info.active{color:var(--primary-base)}:host .step-color-info.active .step-number{background-color:var(--typography-contrast);border-color:var(--primary-base);color:var(--primary-base)}:host .step-color-info.completed .step-number{color:var(--typography-contrast);border-color:var(--primary-base);background-color:var(--primary-base)}:host .step-color-info.completed .step-icon{background-color:transparent;border:none}:host .disabled .step-icon{opacity:.4}:host .disabled .step-text{color:var(--typography-muted);opacity:.4}:host .disabled .step-text h4{color:var(--typography-muted)}:host .disabled .step-text .description{color:var(--typography-muted)}:host .disabled .step-number{color:var(--typography-muted);border-color:var(--separations-base);background-color:var(--slate-focus)}:host .disabled .step-icon{color:var(--typography-muted);background-color:var(--typography-contrast);border-color:var(--typography-contrast)}\n"] }]
4224
+ args: [{ selector: 'fw-step', template: "<div\n [ngClass]=\"['step-wrapper', 'step-color-'+color, 'step-alignment-'+alignment]\"\n [class.disabled]=\"disabled\"\n [class.active]=\"active\"\n [class.completed]=\"completed\"\n [class.done]=\"done\"\n (click)=\"handleClick()\">\n <div class=\"step-connector\"></div>\n <div class=\"step-content\" [style]=\"{backgroundColor: backgroundColor}\">\n <div\n class=\"step-decorator-wrapper\"\n [style]=\"{outlineColor: backgroundColor, backgroundColor: backgroundColor}\">\n <div *ngIf=\"done; else notDone\" class=\"step-done\" [style]=\"{outlineColor: backgroundColor}\">\n <fw-icon>done-check</fw-icon>\n </div>\n </div>\n <ng-template #notDone>\n <div *ngIf=\"variant==='number'\" class=\"step-number\">\n <h5>{{ stepNumber }}</h5>\n </div>\n <div *ngIf=\"variant==='icon'\" class=\"step-icon\">\n <fw-icon>{{ icon }}</fw-icon>\n </div>\n <div *ngIf=\"variant==='decorator'\" class=\"step-decorator\">\n <ng-content select=\"fw-step-decorator\"></ng-content>\n </div>\n </ng-template>\n <div class=\"step-text\">\n <h4>{{ title }}</h4>\n <p *ngIf=\"description\" class=\"vision-p4 description\">{{ description }}</p>\n </div>\n </div>\n</div>\n", styles: [":host{box-sizing:border-box;position:relative;flex:1;display:flex;align-items:flex-start;justify-content:center}:host .step-connector{position:absolute;left:-50%;right:0;top:17px;height:1px;width:100%;background-color:var(--separations-base);z-index:49}:host:first-of-type .step-connector{display:none}:host .step-content{position:relative;z-index:50}:host .step-number{box-sizing:border-box;display:flex;width:24px;height:24px;margin:5px 8px;padding:9px;flex-direction:column;justify-content:center;align-items:center;border-radius:64px;border:1px solid var(--separations-base);background:var(--slate-hover)}:host .step-number h5{color:inherit;margin:0}:host .step-icon{box-sizing:border-box;display:flex;width:24px;height:24px;margin:5px 8px;flex-direction:column;justify-content:center;align-items:center;background-color:var(--card-background);color:var(--typography-muted);font-size:24px}:host .step-decorator{box-sizing:border-box;display:flex;width:24px;height:24px;margin:5px 8px;flex-direction:column;justify-content:center;align-items:center;background-color:var(--card-background);font-size:24px}:host .step-done{box-sizing:border-box;display:flex;width:24px;height:24px;margin:5px 8px;flex-direction:column;justify-content:center;align-items:center;border-radius:64px;color:var(--typography-contrast);background-color:var(--green-base);font-size:16px}:host .step-text{flex:1;display:flex;flex-direction:column;justify-content:center;color:var(--typography-muted);font-size:14px;font-weight:500;line-height:130%}:host .step-text h4{margin:0;white-space:nowrap;color:var(--typography-muted)}:host .step-text p{margin:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-y:hidden;text-overflow:ellipsis}:host .step-text .description{color:var(--typography-muted);font-size:10px;font-weight:400;line-height:12px}:host .step-alignment-center .step-content{background-color:transparent!important;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}:host .step-alignment-center .step-content .step-text{align-items:center}:host .step-alignment-left .step-content{background-color:var(--card-background);padding-right:10px;display:flex;flex-direction:row}:host .active .step-number{background-color:transparent;border:1px solid var(--primary-base);color:var(--primary-base)}:host .active .step-icon{color:var(--primary-base)}:host .active .step-text{color:var(--primary-base)}:host .active .step-text h4{color:var(--primary-base)}:host .active .step-connector{background-color:var(--primary-base)}:host .completed .step-number,:host .completed .step-icon{background-color:var(--primary-base);border:1px solid var(--primary-base);color:var(--typography-contrast)}:host .completed .step-icon{background-color:transparent;border:none;color:var(--primary-base)}:host .completed .step-text{color:var(--typography-base)}:host .completed .step-text h4{color:var(--typography-base)}:host .completed .step-connector{background-color:var(--primary-base)}:host .completed:not(.done){cursor:pointer}:host .done .step-connector{background-color:var(--green-base)}:host .step-color-error .step-number{background-color:var(--red-hover);color:var(--red-base)}:host .step-color-error .step-icon{color:var(--red-base)}:host .step-color-error .step-text{color:var(--red-base)}:host .step-color-error .step-text h4{color:var(--red-base)}:host .step-color-error .step-text .description{color:var(--red-base)}:host .step-color-error.active{color:var(--red-base)}:host .step-color-error.active .step-number{border-color:var(--red-base);color:var(--red-base)}:host .step-color-error.completed .step-number{color:var(--typography-contrast);border-color:var(--red-base);background-color:var(--red-base)}:host .step-color-error.completed .step-icon{background-color:transparent;border:none}:host .step-color-warning .step-number{background-color:var(--orange-hover);color:var(--orange-base)}:host .step-color-warning .step-icon{color:var(--orange-base)}:host .step-color-warning .step-text{color:var(--orange-base)}:host .step-color-warning .step-text h4{color:var(--orange-base)}:host .step-color-warning .step-text .description{color:var(--orange-base)}:host .step-color-warning.active{color:var(--orange-base)}:host .step-color-warning.active .step-number{border-color:var(--orange-base);color:var(--orange-base)}:host .step-color-warning.completed .step-number{color:var(--typography-contrast);border-color:var(--orange-base);background-color:var(--orange-base)}:host .step-color-warning.completed .step-icon{background-color:transparent;border:none}:host .step-color-success .step-number{background-color:var(--green-hover);color:var(--green-base)}:host .step-color-success .step-icon{color:var(--green-base)}:host .step-color-success .step-text{color:var(--green-base)}:host .step-color-success .step-text h4{color:var(--green-base)}:host .step-color-success .step-text .description{color:var(--green-base)}:host .step-color-success.active{color:var(--green-base)}:host .step-color-success.active .step-number{border-color:var(--green-base);color:var(--green-base)}:host .step-color-success.completed .step-number{color:var(--typography-contrast);border-color:var(--green-base);background-color:var(--green-base)}:host .step-color-success.completed .step-icon{background-color:transparent;border:none}:host .step-color-info .step-number{background-color:var(--primary-hover);color:var(--primary-base)}:host .step-color-info .step-icon{color:var(--primary-base)}:host .step-color-info .step-text{color:var(--primary-base)}:host .step-color-info .step-text h4{color:var(--primary-base)}:host .step-color-info .step-text .description{color:var(--primary-base)}:host .step-color-info.active{color:var(--primary-base)}:host .step-color-info.active .step-number{background-color:var(--typography-contrast);border-color:var(--primary-base);color:var(--primary-base)}:host .step-color-info.completed .step-number{color:var(--typography-contrast);border-color:var(--primary-base);background-color:var(--primary-base)}:host .step-color-info.completed .step-icon{background-color:transparent;border:none}:host .disabled .step-text{color:var(--typography-muted);opacity:.4}:host .disabled .step-text h4{color:var(--typography-muted)}:host .disabled .step-text .description{color:var(--typography-muted)}:host .disabled .step-number{color:var(--typography-muted);border-color:var(--separations-base);background-color:var(--slate-focus)}:host .disabled .step-icon{opacity:.4;color:var(--typography-muted);background-color:var(--typography-contrast);border-color:var(--typography-contrast)}\n"] }]
3690
4225
  }], propDecorators: { stepNumber: [{
3691
4226
  type: Input
3692
4227
  }], color: [{
@@ -3850,6 +4385,77 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
3850
4385
  }]
3851
4386
  }] });
3852
4387
 
4388
+ class FwSwitchComponent {
4389
+ constructor() {
4390
+ this.titlePosition = 'end';
4391
+ this.size = 'medium';
4392
+ this.color = 'default';
4393
+ this.onTouched = () => {
4394
+ };
4395
+ }
4396
+ registerOnChange(fn) {
4397
+ this.onChange = fn;
4398
+ }
4399
+ registerOnTouched(fn) {
4400
+ this.onTouched = fn;
4401
+ }
4402
+ setDisabledState(isDisabled) {
4403
+ this.disabled = isDisabled;
4404
+ }
4405
+ writeValue(checked) {
4406
+ this.checked = checked;
4407
+ }
4408
+ handleClick() {
4409
+ this.onTouched();
4410
+ if (!this.disabled) {
4411
+ this.checked = !this.checked;
4412
+ if (this.onChange) {
4413
+ this.onChange(this.checked);
4414
+ }
4415
+ }
4416
+ }
4417
+ }
4418
+ FwSwitchComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSwitchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4419
+ FwSwitchComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwSwitchComponent, selector: "fw-switch", inputs: { name: "name", title: "title", titlePosition: "titlePosition", size: "size", color: "color", disabled: "disabled", checked: "checked" }, ngImport: i0, template: "<div\n [ngClass]=\"['fw-switch', 'size-'+size, 'title-'+titlePosition, color, disabled?'disabled':'']\"\n (click)=\"handleClick()\">\n <div class=\"switch-track\" [ngClass]=\"[checked?'checked':'']\">\n <div class=\"switch-slide\"></div>\n <div class=\"switch-knob\"></div>\n </div>\n <input type=\"checkbox\" [checked]=\"checked\" [disabled]=\"disabled\" [name]=\"name\">\n <label *ngIf=\"title\"><p>{{ title }}</p></label>\n</div>\n", styles: [".fw-switch{display:inline-flex;align-items:center;cursor:pointer;margin-left:12px;margin-right:8px}.fw-switch p{margin:0}.fw-switch input{display:none}.fw-switch label{margin-left:8px;margin-right:8px;cursor:pointer}.fw-switch .switch-track{position:relative;width:34px;height:14px;transition:all .4s ease}.fw-switch .switch-track .switch-slide{width:34px;height:14px;border-radius:10px;opacity:.1;background:var(--slate-dark);position:absolute;top:0;left:0;transition:background-color .2s linear,opacity .2s linear}.fw-switch .switch-track .switch-knob{width:20px;height:20px;background-color:var(--slate-light);border-radius:10px;filter:drop-shadow(0 1px 3px rgba(0,0,0,.12)) drop-shadow(0 1px 1px rgba(0,0,0,.14)) drop-shadow(0 2px 1px rgba(0,0,0,.2));position:absolute;top:-3px;left:-3px;transition:left .5s cubic-bezier(.175,.885,.32,1.275),padding .3s ease,margin .3s ease}.fw-switch .switch-track .switch-knob:hover{outline:9px solid var(--slate-hover)}.fw-switch .switch-track.checked .switch-slide{background-color:var(--slate-dark);opacity:.6;transition:background-color .2s linear,opacity .2s linear}.fw-switch .switch-track.checked .switch-knob{transition:background-color .2s linear,opacity .2s linear,left .5s cubic-bezier(.175,.885,.32,1.275),padding .3s ease,margin .3s ease;left:16px}.fw-switch.primary .switch-track.checked .switch-slide{background-color:var(--primary-base);transition:background-color .2s linear,opacity .2s linear}.fw-switch.primary .switch-track.checked .switch-knob{background-color:var(--primary-base)}.fw-switch.primary .switch-track.checked .switch-knob:hover{outline:9px solid var(--primary-hover)}.fw-switch.secondary .switch-track.checked .switch-slide,.fw-switch.secondary .switch-track.checked .switch-knob{background-color:var(--secondary-base)}.fw-switch.secondary .switch-track.checked .switch-knob:hover{outline:9px solid var(--secondary-hover)}.fw-switch.title-start{flex-direction:row-reverse}.fw-switch.title-start label{margin-right:10px;margin-left:0}.fw-switch.size-small .switch-track{position:relative;width:26px;height:10px}.fw-switch.size-small .switch-track .switch-slide{width:26px;height:10px;border-radius:10px}.fw-switch.size-small .switch-track .switch-knob{width:16px;height:16px;border-radius:8px}.fw-switch.size-small .switch-track .switch-knob:hover{outline-width:7px}.fw-switch.size-small .switch-track.checked .switch-knob{left:13px}.fw-switch.disabled{cursor:not-allowed}.fw-switch.disabled p{color:var(--typography-light)}.fw-switch.disabled .switch-track{opacity:.5}.fw-switch.disabled .switch-track.checked .switch-slide{background-color:var(--slate-base)}.fw-switch.disabled .switch-track.checked .switch-knob{background-color:var(--slate-light)}.fw-switch.disabled .switch-track.checked .switch-knob:hover{outline:9px solid transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
4420
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSwitchComponent, decorators: [{
4421
+ type: Component,
4422
+ args: [{ selector: 'fw-switch', template: "<div\n [ngClass]=\"['fw-switch', 'size-'+size, 'title-'+titlePosition, color, disabled?'disabled':'']\"\n (click)=\"handleClick()\">\n <div class=\"switch-track\" [ngClass]=\"[checked?'checked':'']\">\n <div class=\"switch-slide\"></div>\n <div class=\"switch-knob\"></div>\n </div>\n <input type=\"checkbox\" [checked]=\"checked\" [disabled]=\"disabled\" [name]=\"name\">\n <label *ngIf=\"title\"><p>{{ title }}</p></label>\n</div>\n", styles: [".fw-switch{display:inline-flex;align-items:center;cursor:pointer;margin-left:12px;margin-right:8px}.fw-switch p{margin:0}.fw-switch input{display:none}.fw-switch label{margin-left:8px;margin-right:8px;cursor:pointer}.fw-switch .switch-track{position:relative;width:34px;height:14px;transition:all .4s ease}.fw-switch .switch-track .switch-slide{width:34px;height:14px;border-radius:10px;opacity:.1;background:var(--slate-dark);position:absolute;top:0;left:0;transition:background-color .2s linear,opacity .2s linear}.fw-switch .switch-track .switch-knob{width:20px;height:20px;background-color:var(--slate-light);border-radius:10px;filter:drop-shadow(0 1px 3px rgba(0,0,0,.12)) drop-shadow(0 1px 1px rgba(0,0,0,.14)) drop-shadow(0 2px 1px rgba(0,0,0,.2));position:absolute;top:-3px;left:-3px;transition:left .5s cubic-bezier(.175,.885,.32,1.275),padding .3s ease,margin .3s ease}.fw-switch .switch-track .switch-knob:hover{outline:9px solid var(--slate-hover)}.fw-switch .switch-track.checked .switch-slide{background-color:var(--slate-dark);opacity:.6;transition:background-color .2s linear,opacity .2s linear}.fw-switch .switch-track.checked .switch-knob{transition:background-color .2s linear,opacity .2s linear,left .5s cubic-bezier(.175,.885,.32,1.275),padding .3s ease,margin .3s ease;left:16px}.fw-switch.primary .switch-track.checked .switch-slide{background-color:var(--primary-base);transition:background-color .2s linear,opacity .2s linear}.fw-switch.primary .switch-track.checked .switch-knob{background-color:var(--primary-base)}.fw-switch.primary .switch-track.checked .switch-knob:hover{outline:9px solid var(--primary-hover)}.fw-switch.secondary .switch-track.checked .switch-slide,.fw-switch.secondary .switch-track.checked .switch-knob{background-color:var(--secondary-base)}.fw-switch.secondary .switch-track.checked .switch-knob:hover{outline:9px solid var(--secondary-hover)}.fw-switch.title-start{flex-direction:row-reverse}.fw-switch.title-start label{margin-right:10px;margin-left:0}.fw-switch.size-small .switch-track{position:relative;width:26px;height:10px}.fw-switch.size-small .switch-track .switch-slide{width:26px;height:10px;border-radius:10px}.fw-switch.size-small .switch-track .switch-knob{width:16px;height:16px;border-radius:8px}.fw-switch.size-small .switch-track .switch-knob:hover{outline-width:7px}.fw-switch.size-small .switch-track.checked .switch-knob{left:13px}.fw-switch.disabled{cursor:not-allowed}.fw-switch.disabled p{color:var(--typography-light)}.fw-switch.disabled .switch-track{opacity:.5}.fw-switch.disabled .switch-track.checked .switch-slide{background-color:var(--slate-base)}.fw-switch.disabled .switch-track.checked .switch-knob{background-color:var(--slate-light)}.fw-switch.disabled .switch-track.checked .switch-knob:hover{outline:9px solid transparent}\n"] }]
4423
+ }], propDecorators: { name: [{
4424
+ type: Input
4425
+ }], title: [{
4426
+ type: Input
4427
+ }], titlePosition: [{
4428
+ type: Input
4429
+ }], size: [{
4430
+ type: Input
4431
+ }], color: [{
4432
+ type: Input
4433
+ }], disabled: [{
4434
+ type: Input
4435
+ }], checked: [{
4436
+ type: Input
4437
+ }] } });
4438
+
4439
+ class FwSwitchModule {
4440
+ }
4441
+ FwSwitchModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSwitchModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
4442
+ FwSwitchModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: FwSwitchModule, declarations: [FwSwitchComponent], imports: [CommonModule], exports: [FwSwitchComponent] });
4443
+ FwSwitchModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSwitchModule, imports: [CommonModule] });
4444
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwSwitchModule, decorators: [{
4445
+ type: NgModule,
4446
+ args: [{
4447
+ imports: [
4448
+ CommonModule,
4449
+ ],
4450
+ exports: [
4451
+ FwSwitchComponent,
4452
+ ],
4453
+ declarations: [
4454
+ FwSwitchComponent,
4455
+ ],
4456
+ }]
4457
+ }] });
4458
+
3853
4459
  class FwTabComponent {
3854
4460
  constructor() {
3855
4461
  this.color = 'primary';
@@ -4052,10 +4658,10 @@ class FwTooltipPanelComponent {
4052
4658
  }
4053
4659
  }
4054
4660
  FwTooltipPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwTooltipPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4055
- FwTooltipPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwTooltipPanelComponent, selector: "fw-tooltip-panel", inputs: { position: "position", color: "color", maxWidth: "maxWidth" }, outputs: { mouseLeave: "mouseLeave" }, host: { listeners: { "mouseleave": "hidePopover($event)" }, properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<div\n class=\"fw-tooltip-content-wrapper\" [ngClass]=\"color==='dark'?'vision-dark-theme':''\"\n [ngStyle]=\"{'maxWidth': maxWidth+'px'}\">\n <ng-content></ng-content>\n <div class=\"fw-tooltip-caret\"></div>\n</div>\n", styles: [".fw-tooltip-panel .fw-tooltip-content-wrapper{position:relative;background:var(--card-background);border-radius:8px;border:1px solid var(--separations-base);min-width:60px;box-sizing:border-box;padding:4px 8px;background-color:var(--card-header);text-align:center}.fw-tooltip-panel .fw-tooltip-content-wrapper h5{margin:0!important;color:var(--typography-muted)}.fw-tooltip-panel .fw-tooltip-content-wrapper .fw-tooltip-caret{position:absolute;overflow:hidden;width:16px;height:16px}.fw-tooltip-panel .fw-tooltip-content-wrapper .fw-tooltip-caret:after{display:block;content:\"\";width:10px;height:10px;background:var(--separations-base);border:1px solid var(--separations-base);transform:rotate(45deg);position:relative}.fw-tooltip-panel.fw-tooltip-none{margin-bottom:10px}.fw-tooltip-panel.fw-tooltip-none .fw-tooltip-caret{display:none}.fw-tooltip-panel.fw-tooltip-above{margin-bottom:10px}.fw-tooltip-panel.fw-tooltip-above .fw-tooltip-caret{left:calc(50% - 5px);bottom:-10px;height:10px!important}.fw-tooltip-panel.fw-tooltip-above .fw-tooltip-caret:after{margin:-8px auto;width:10px}.fw-tooltip-panel.fw-tooltip-below{margin-top:10px}.fw-tooltip-panel.fw-tooltip-below .fw-tooltip-caret{left:calc(50% - 5px);top:-10px;height:10px!important}.fw-tooltip-panel.fw-tooltip-below .fw-tooltip-caret:after{top:10px;margin:-4px auto;width:10px}.fw-tooltip-panel.fw-tooltip-left{margin-right:10px}.fw-tooltip-panel.fw-tooltip-left .fw-tooltip-caret{right:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-panel.fw-tooltip-left .fw-tooltip-caret:after{top:calc(50% - 5px);left:-8px;width:10px}.fw-tooltip-panel.fw-tooltip-right{margin-left:10px}.fw-tooltip-panel.fw-tooltip-right .fw-tooltip-caret{left:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-panel.fw-tooltip-right .fw-tooltip-caret:after{top:calc(50% - 5px);right:-6px;width:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], encapsulation: i0.ViewEncapsulation.None });
4661
+ FwTooltipPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwTooltipPanelComponent, selector: "fw-tooltip-panel", inputs: { position: "position", color: "color", maxWidth: "maxWidth" }, outputs: { mouseLeave: "mouseLeave" }, host: { listeners: { "mouseleave": "hidePopover($event)" }, properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<div\n class=\"fw-tooltip-content-wrapper\" [ngClass]=\"color==='dark'?'vision-dark-theme':''\"\n [ngStyle]=\"{'maxWidth': maxWidth+'px'}\">\n <ng-content></ng-content>\n <div class=\"fw-tooltip-caret\"></div>\n</div>\n", styles: [".fw-tooltip-panel .fw-tooltip-content-wrapper{position:relative;background:var(--card-background);border-radius:8px;border:1px solid var(--separations-base);min-width:60px;box-sizing:border-box;padding:4px 8px;background-color:var(--card-header);text-align:center;overflow-wrap:break-word}.fw-tooltip-panel .fw-tooltip-content-wrapper h5{margin:0!important;color:var(--typography-muted)}.fw-tooltip-panel .fw-tooltip-content-wrapper .fw-tooltip-caret{position:absolute;overflow:hidden;width:16px;height:16px}.fw-tooltip-panel .fw-tooltip-content-wrapper .fw-tooltip-caret:after{display:block;content:\"\";width:10px;height:10px;background:var(--separations-base);border:1px solid var(--separations-base);transform:rotate(45deg);position:relative}.fw-tooltip-panel.fw-tooltip-none{margin-bottom:10px}.fw-tooltip-panel.fw-tooltip-none .fw-tooltip-caret{display:none}.fw-tooltip-panel.fw-tooltip-above{margin-bottom:10px}.fw-tooltip-panel.fw-tooltip-above .fw-tooltip-caret{left:calc(50% - 8px);bottom:-10px;height:10px!important}.fw-tooltip-panel.fw-tooltip-above .fw-tooltip-caret:after{margin:-8px auto;width:10px}.fw-tooltip-panel.fw-tooltip-below{margin-top:10px}.fw-tooltip-panel.fw-tooltip-below .fw-tooltip-caret{left:calc(50% - 8px);top:-10px;height:10px!important}.fw-tooltip-panel.fw-tooltip-below .fw-tooltip-caret:after{top:10px;margin:-4px auto;width:10px}.fw-tooltip-panel.fw-tooltip-left{margin-right:10px}.fw-tooltip-panel.fw-tooltip-left .fw-tooltip-caret{right:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-panel.fw-tooltip-left .fw-tooltip-caret:after{top:calc(50% - 5px);left:-8px;width:10px}.fw-tooltip-panel.fw-tooltip-right{margin-left:10px}.fw-tooltip-panel.fw-tooltip-right .fw-tooltip-caret{left:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-panel.fw-tooltip-right .fw-tooltip-caret:after{top:calc(50% - 5px);right:-6px;width:10px}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], encapsulation: i0.ViewEncapsulation.None });
4056
4662
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwTooltipPanelComponent, decorators: [{
4057
4663
  type: Component,
4058
- args: [{ selector: 'fw-tooltip-panel', encapsulation: ViewEncapsulation.None, template: "<div\n class=\"fw-tooltip-content-wrapper\" [ngClass]=\"color==='dark'?'vision-dark-theme':''\"\n [ngStyle]=\"{'maxWidth': maxWidth+'px'}\">\n <ng-content></ng-content>\n <div class=\"fw-tooltip-caret\"></div>\n</div>\n", styles: [".fw-tooltip-panel .fw-tooltip-content-wrapper{position:relative;background:var(--card-background);border-radius:8px;border:1px solid var(--separations-base);min-width:60px;box-sizing:border-box;padding:4px 8px;background-color:var(--card-header);text-align:center}.fw-tooltip-panel .fw-tooltip-content-wrapper h5{margin:0!important;color:var(--typography-muted)}.fw-tooltip-panel .fw-tooltip-content-wrapper .fw-tooltip-caret{position:absolute;overflow:hidden;width:16px;height:16px}.fw-tooltip-panel .fw-tooltip-content-wrapper .fw-tooltip-caret:after{display:block;content:\"\";width:10px;height:10px;background:var(--separations-base);border:1px solid var(--separations-base);transform:rotate(45deg);position:relative}.fw-tooltip-panel.fw-tooltip-none{margin-bottom:10px}.fw-tooltip-panel.fw-tooltip-none .fw-tooltip-caret{display:none}.fw-tooltip-panel.fw-tooltip-above{margin-bottom:10px}.fw-tooltip-panel.fw-tooltip-above .fw-tooltip-caret{left:calc(50% - 5px);bottom:-10px;height:10px!important}.fw-tooltip-panel.fw-tooltip-above .fw-tooltip-caret:after{margin:-8px auto;width:10px}.fw-tooltip-panel.fw-tooltip-below{margin-top:10px}.fw-tooltip-panel.fw-tooltip-below .fw-tooltip-caret{left:calc(50% - 5px);top:-10px;height:10px!important}.fw-tooltip-panel.fw-tooltip-below .fw-tooltip-caret:after{top:10px;margin:-4px auto;width:10px}.fw-tooltip-panel.fw-tooltip-left{margin-right:10px}.fw-tooltip-panel.fw-tooltip-left .fw-tooltip-caret{right:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-panel.fw-tooltip-left .fw-tooltip-caret:after{top:calc(50% - 5px);left:-8px;width:10px}.fw-tooltip-panel.fw-tooltip-right{margin-left:10px}.fw-tooltip-panel.fw-tooltip-right .fw-tooltip-caret{left:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-panel.fw-tooltip-right .fw-tooltip-caret:after{top:calc(50% - 5px);right:-6px;width:10px}\n"] }]
4664
+ args: [{ selector: 'fw-tooltip-panel', encapsulation: ViewEncapsulation.None, template: "<div\n class=\"fw-tooltip-content-wrapper\" [ngClass]=\"color==='dark'?'vision-dark-theme':''\"\n [ngStyle]=\"{'maxWidth': maxWidth+'px'}\">\n <ng-content></ng-content>\n <div class=\"fw-tooltip-caret\"></div>\n</div>\n", styles: [".fw-tooltip-panel .fw-tooltip-content-wrapper{position:relative;background:var(--card-background);border-radius:8px;border:1px solid var(--separations-base);min-width:60px;box-sizing:border-box;padding:4px 8px;background-color:var(--card-header);text-align:center;overflow-wrap:break-word}.fw-tooltip-panel .fw-tooltip-content-wrapper h5{margin:0!important;color:var(--typography-muted)}.fw-tooltip-panel .fw-tooltip-content-wrapper .fw-tooltip-caret{position:absolute;overflow:hidden;width:16px;height:16px}.fw-tooltip-panel .fw-tooltip-content-wrapper .fw-tooltip-caret:after{display:block;content:\"\";width:10px;height:10px;background:var(--separations-base);border:1px solid var(--separations-base);transform:rotate(45deg);position:relative}.fw-tooltip-panel.fw-tooltip-none{margin-bottom:10px}.fw-tooltip-panel.fw-tooltip-none .fw-tooltip-caret{display:none}.fw-tooltip-panel.fw-tooltip-above{margin-bottom:10px}.fw-tooltip-panel.fw-tooltip-above .fw-tooltip-caret{left:calc(50% - 8px);bottom:-10px;height:10px!important}.fw-tooltip-panel.fw-tooltip-above .fw-tooltip-caret:after{margin:-8px auto;width:10px}.fw-tooltip-panel.fw-tooltip-below{margin-top:10px}.fw-tooltip-panel.fw-tooltip-below .fw-tooltip-caret{left:calc(50% - 8px);top:-10px;height:10px!important}.fw-tooltip-panel.fw-tooltip-below .fw-tooltip-caret:after{top:10px;margin:-4px auto;width:10px}.fw-tooltip-panel.fw-tooltip-left{margin-right:10px}.fw-tooltip-panel.fw-tooltip-left .fw-tooltip-caret{right:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-panel.fw-tooltip-left .fw-tooltip-caret:after{top:calc(50% - 5px);left:-8px;width:10px}.fw-tooltip-panel.fw-tooltip-right{margin-left:10px}.fw-tooltip-panel.fw-tooltip-right .fw-tooltip-caret{left:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-panel.fw-tooltip-right .fw-tooltip-caret:after{top:calc(50% - 5px);right:-6px;width:10px}\n"] }]
4059
4665
  }], propDecorators: { position: [{
4060
4666
  type: Input
4061
4667
  }], color: [{
@@ -4088,10 +4694,10 @@ class FwTooltipComponent {
4088
4694
  }
4089
4695
  }
4090
4696
  FwTooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4091
- FwTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwTooltipComponent, selector: "fw-tooltip", inputs: { title: "title", color: "color", position: "position", maxWidth: "maxWidth", isOpen: "isOpen", trigger: "trigger" }, ngImport: i0, template: "<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"[positionMap[position]]\">\n <fw-tooltip-panel [position]=\"position\" [color]=\"color\" [maxWidth]=\"maxWidth\" *ngIf=\"title\">\n <h5>{{ title }}</h5>\n </fw-tooltip-panel>\n</ng-template>\n\n<div\n class=\"tooltip-trigger\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\"\n (mouseenter)=\"isOpen=true\" (mouseleave)=\"isOpen=false\">\n <ng-content></ng-content>\n</div>\n", styles: [".tooltip-trigger{width:-moz-fit-content;width:fit-content}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: FwTooltipPanelComponent, selector: "fw-tooltip-panel", inputs: ["position", "color", "maxWidth"], outputs: ["mouseLeave"] }] });
4697
+ FwTooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: FwTooltipComponent, selector: "fw-tooltip", inputs: { title: "title", color: "color", position: "position", maxWidth: "maxWidth", isOpen: "isOpen", trigger: "trigger" }, ngImport: i0, template: "<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"[positionMap[position]]\">\n <fw-tooltip-panel [position]=\"position\" [color]=\"color\" [maxWidth]=\"maxWidth\" *ngIf=\"title\">\n <h5>{{ title }}</h5>\n </fw-tooltip-panel>\n</ng-template>\n\n<div\n title=\"\" class=\"tooltip-trigger\"\n cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\"\n (mouseenter)=\"isOpen=true\" (mouseleave)=\"isOpen=false\">\n <ng-content></ng-content>\n</div>\n", styles: [".tooltip-trigger{width:-moz-fit-content;width:fit-content;display:inline-block}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i1$3.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: FwTooltipPanelComponent, selector: "fw-tooltip-panel", inputs: ["position", "color", "maxWidth"], outputs: ["mouseLeave"] }] });
4092
4698
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FwTooltipComponent, decorators: [{
4093
4699
  type: Component,
4094
- args: [{ selector: 'fw-tooltip', template: "<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"[positionMap[position]]\">\n <fw-tooltip-panel [position]=\"position\" [color]=\"color\" [maxWidth]=\"maxWidth\" *ngIf=\"title\">\n <h5>{{ title }}</h5>\n </fw-tooltip-panel>\n</ng-template>\n\n<div\n class=\"tooltip-trigger\" cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\"\n (mouseenter)=\"isOpen=true\" (mouseleave)=\"isOpen=false\">\n <ng-content></ng-content>\n</div>\n", styles: [".tooltip-trigger{width:-moz-fit-content;width:fit-content}\n"] }]
4700
+ args: [{ selector: 'fw-tooltip', template: "<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen\"\n [cdkConnectedOverlayPositions]=\"[positionMap[position]]\">\n <fw-tooltip-panel [position]=\"position\" [color]=\"color\" [maxWidth]=\"maxWidth\" *ngIf=\"title\">\n <h5>{{ title }}</h5>\n </fw-tooltip-panel>\n</ng-template>\n\n<div\n title=\"\" class=\"tooltip-trigger\"\n cdkOverlayOrigin #trigger=\"cdkOverlayOrigin\"\n (mouseenter)=\"isOpen=true\" (mouseleave)=\"isOpen=false\">\n <ng-content></ng-content>\n</div>\n", styles: [".tooltip-trigger{width:-moz-fit-content;width:fit-content;display:inline-block}\n"] }]
4095
4701
  }], propDecorators: { title: [{
4096
4702
  type: Input
4097
4703
  }], color: [{
@@ -4145,5 +4751,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
4145
4751
  * Generated bundle index. Do not edit.
4146
4752
  */
4147
4753
 
4148
- export { DialogWidth, FwAlertComponent, FwAlertModule, FwAppIconComponent, FwAppIconModule, FwAvatarComponent, FwAvatarModule, FwBadgeComponent, FwBadgeModule, FwBreadcrumbsComponent, FwBreadcrumbsModule, FwButtonComponent, FwButtonDangerDirective, FwButtonDirective, FwButtonModule, FwButtonPrimaryDirective, FwButtonSecondaryDirective, FwButtonSuccessDirective, FwCardAttributeComponent, FwCardAuthorComponent, FwCardComponent, FwCardContentComponent, FwCardFooterComponent, FwCardHeaderComponent, FwCardModule, FwChipComponent, FwChipModule, FwCrumbComponent, FwDialogActionsComponent, FwDialogComponent, FwDialogConfirmComponent, FwDialogContentComponent, FwDialogHeaderComponent, FwDialogService, FwDialogSimpleComponent, FwDialogsModule, FwGridComponent, FwGridItemComponent, FwIconButtonComponent, FwIconButtonModule, FwIconComponent, FwIconModule, FwLayoutContextComponent, FwLayoutGroupComponent, FwLayoutToolbarComponent, FwLayoutsModule, FwLegacyChoiceDialogComponent, FwLegacyConfirmDialogComponent, FwLegacyDialogModule, FwLegacyDialogService, FwLegacyErrorDialogComponent, FwLegacyPortalDialogComponent, FwMenuComponent, FwMenuContainerComponent, FwMenuHeaderComponent, FwMenuItemComponent, FwMenuModule, FwMenuSeparatorComponent, FwMultiSelectMenuComponent, FwNotificationComponent, FwNotificationContainerComponent, FwNotificationModule, FwNotificationService, FwNotificationType, FwPopoverComponent, FwPopoverModule, FwPopoverPanelComponent, FwSectionHeadingComponent, FwSectionHeadingModule, FwSelectMenuComponent, FwSelectMenuModule, FwSnackbarComponent, FwSnackbarContainerComponent, FwSnackbarModule, FwSnackbarService, FwStepComponent, FwStepDecoratorComponent, FwStepperComponent, FwStepperModule, FwSubsectionHeadingComponent, FwTabComponent, FwTabPanelComponent, FwTabsComponent, FwTabsModule, FwTextInputComponent, FwTextInputModule, FwTooltipComponent, FwTooltipModule, FwTooltipPanelComponent, MinimalTranslationService, TranslationService, genId, genMessageId };
4754
+ export { DialogWidth, FwAlertComponent, FwAlertModule, FwAppIconComponent, FwAppIconModule, FwAvatarComponent, FwAvatarModule, FwBadgeComponent, FwBadgeModule, FwBreadcrumbsComponent, FwBreadcrumbsModule, FwButtonComponent, FwButtonDangerDirective, FwButtonDirective, FwButtonModule, FwButtonPrimaryDirective, FwButtonSecondaryDirective, FwButtonSuccessDirective, FwButtonToggleComponent, FwButtonToggleItemComponent, FwButtonToggleModule, FwCardAttributeComponent, FwCardAuthorComponent, FwCardComponent, FwCardContentComponent, FwCardFooterComponent, FwCardHeaderComponent, FwCardModule, FwChipComponent, FwChipModule, FwCrumbComponent, FwDialogActionsComponent, FwDialogComponent, FwDialogConfirmComponent, FwDialogContentComponent, FwDialogHeaderComponent, FwDialogService, FwDialogSimpleComponent, FwDialogsModule, FwGridComponent, FwGridItemComponent, FwIconButtonComponent, FwIconButtonModule, FwIconComponent, FwIconModule, FwLayoutContextComponent, FwLayoutGroupComponent, FwLayoutToolbarComponent, FwLayoutsModule, FwLegacyChoiceDialogComponent, FwLegacyConfirmDialogComponent, FwLegacyDialogModule, FwLegacyDialogService, FwLegacyErrorDialogComponent, FwLegacyPortalDialogComponent, FwMenuComponent, FwMenuContainerComponent, FwMenuHeaderComponent, FwMenuItemComponent, FwMenuModule, FwMenuSeparatorComponent, FwMultiSelectMenuComponent, FwNotificationComponent, FwNotificationContainerComponent, FwNotificationModule, FwNotificationService, FwNotificationType, FwPaginatorAdvancedComponent, FwPaginatorComponent, FwPaginatorModule, FwPopoverComponent, FwPopoverModule, FwPopoverPanelComponent, FwSectionHeadingComponent, FwSectionHeadingModule, FwSelectMenuComponent, FwSelectMenuModule, FwSnackbarComponent, FwSnackbarContainerComponent, FwSnackbarModule, FwSnackbarService, FwStepComponent, FwStepDecoratorComponent, FwStepperComponent, FwStepperModule, FwSubsectionHeadingComponent, FwSwitchComponent, FwSwitchModule, FwTabComponent, FwTabPanelComponent, FwTabsComponent, FwTabsModule, FwTextInputComponent, FwTextInputModule, FwTooltipComponent, FwTooltipModule, FwTooltipPanelComponent, MinimalTranslationService, TranslationService, genId, genMessageId };
4149
4755
  //# sourceMappingURL=flywheel-io-vision.mjs.map