@flywheel-io/vision 2.7.0-beta.1 → 2.7.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 (42) hide show
  1. package/assets/fonts/Flywheel-Vision-Icons.svg +8 -2
  2. package/assets/fonts/Flywheel-Vision-Icons.ttf +0 -0
  3. package/assets/fonts/Flywheel-Vision-Icons.woff +0 -0
  4. package/assets/svg/documents-file-move-arrow-right.svg +4 -0
  5. package/assets/svg/folder-move.svg +4 -0
  6. package/assets/svg/mouse-scroll.svg +4 -0
  7. package/assets/svg/thumbs-down-dislike.svg +4 -0
  8. package/components/avatar-list/avatar-list.component.d.ts +4 -2
  9. package/components/dialog/dialog-confirm.component.d.ts +2 -1
  10. package/components/form-heading/form-heading.component.d.ts +3 -1
  11. package/components/form-heading/form-heading.module.d.ts +2 -1
  12. package/components/icon/icon.types.d.ts +1 -1
  13. package/components/menu/menu-close-triggers.directive.d.ts +1 -1
  14. package/components/tag/tag.component.d.ts +10 -0
  15. package/components/tag/tag.module.d.ts +9 -0
  16. package/components/tooltip/tooltip-panel/tooltip-panel.component.d.ts +6 -6
  17. package/components/tooltip/tooltip.component.d.ts +2 -1
  18. package/components/tooltip/tooltip.directive.d.ts +39 -6
  19. package/components/wrapped-input/wrapped-input.component.d.ts +4 -1
  20. package/esm2022/components/avatar/avatar.component.mjs +7 -3
  21. package/esm2022/components/avatar-list/avatar-list.component.mjs +16 -9
  22. package/esm2022/components/chip-list/chip-list.component.mjs +3 -2
  23. package/esm2022/components/dialog/dialog-confirm.component.mjs +6 -3
  24. package/esm2022/components/form-heading/form-heading.component.mjs +9 -3
  25. package/esm2022/components/form-heading/form-heading.module.mjs +7 -3
  26. package/esm2022/components/icon/icon.types.mjs +44 -41
  27. package/esm2022/components/menu/menu-close-triggers.directive.mjs +15 -9
  28. package/esm2022/components/paginator/paginator-advanced/paginator-advanced.component.mjs +2 -2
  29. package/esm2022/components/select-menu/multi-select-menu/multi-select-menu.component.mjs +6 -1
  30. package/esm2022/components/tag/tag.component.mjs +25 -0
  31. package/esm2022/components/tag/tag.module.mjs +28 -0
  32. package/esm2022/components/tooltip/tooltip-panel/tooltip-panel.component.mjs +12 -21
  33. package/esm2022/components/tooltip/tooltip.component.mjs +4 -3
  34. package/esm2022/components/tooltip/tooltip.directive.mjs +93 -30
  35. package/esm2022/components/typeahead/typeahead.component.mjs +8 -4
  36. package/esm2022/components/wrapped-input/wrapped-input.component.mjs +10 -3
  37. package/fesm2022/flywheel-io-vision.mjs +265 -118
  38. package/fesm2022/flywheel-io-vision.mjs.map +1 -1
  39. package/package.json +1 -1
  40. package/scss/icons/_icon-glyphs.scss +12 -4
  41. package/styles.css +16 -4
  42. package/flywheel-io-vision-2.7.0-beta.1.tgz +0 -0
@@ -3,7 +3,7 @@ import { HostBinding, Input, ChangeDetectionStrategy, Component, EventEmitter, O
3
3
  import * as i1$1 from '@angular/common';
4
4
  import { CommonModule, NgClass } from '@angular/common';
5
5
  import * as i1 from '@angular/platform-browser';
6
- import { BehaviorSubject, distinctUntilChanged, debounce, timer, of, Subscription, min, startWith, tap, switchMap, map } from 'rxjs';
6
+ import { BehaviorSubject, debounce, timer, distinctUntilChanged, of, Subscription, min, startWith, tap, switchMap, map } from 'rxjs';
7
7
  import * as i1$2 from '@angular/cdk/overlay';
8
8
  import { OverlayModule, Overlay, CdkOverlayOrigin } from '@angular/cdk/overlay';
9
9
  import * as i1$5 from '@angular/cdk/table';
@@ -356,8 +356,12 @@ class FwAvatarComponent {
356
356
  return [this.size, this.variant, this.content, 'selected'].filter(Boolean).join(' ');
357
357
  }
358
358
  ;
359
- get borderClass() { return this.bordered; }
360
- get selectedClassApplied() { return this.selected(); }
359
+ get borderClass() {
360
+ return this.bordered;
361
+ }
362
+ get selectedClassApplied() {
363
+ return this.selected();
364
+ }
361
365
  loadImage() {
362
366
  this.isImageBroken = false;
363
367
  }
@@ -928,24 +932,10 @@ class FwTooltipPanelComponent {
928
932
  this.connectedPosition = computed(() => [positionMap$1[this.position()]]);
929
933
  this.color = 'dark';
930
934
  this.maxWidth = 200;
935
+ this.displayCaret = true;
931
936
  this.mouseLeave = new EventEmitter();
932
937
  this.delay = input('short');
933
938
  this.delayMs = computed(() => delayMap$1[this.delay()]);
934
- /*
935
- <ng-template
936
- cdkConnectedOverlay
937
- [cdkConnectedOverlayOrigin]="trigger"
938
- [cdkConnectedOverlayOpen]="isOpen"
939
- [cdkConnectedOverlayPositions]="connectedPosition()"
940
- [cdkConnectedOverlayScrollStrategy]="this.overlayService.scrollStrategies.close()">
941
- */
942
- this.overlayService = inject(Overlay);
943
- this.updateOverlayOnChange = effect(() => {
944
- // this.overlayRef.origin = this.trigger();
945
- // this.overlayRef.positions = this.connectedPosition();
946
- // this.overlayRef.open = this.isOpen();
947
- // this.overlayRef.scrollStrategy = this.overlayService.scrollStrategies.close();
948
- });
949
939
  }
950
940
  get classes() {
951
941
  return ['fw-tooltip-panel', 'fw-tooltip-' + this.position].join(' ');
@@ -954,7 +944,7 @@ class FwTooltipPanelComponent {
954
944
  this.mouseLeave.emit(e);
955
945
  }
956
946
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTooltipPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
957
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: FwTooltipPanelComponent, selector: "fw-tooltip-panel", inputs: { trigger: { classPropertyName: "trigger", publicName: "trigger", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: false, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mouseLeave: "mouseLeave" }, host: { listeners: { "mouseleave": "hidePopover($event)" }, properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<div\n @fadeInFadeOut\n class=\"fw-tooltip-content-wrapper vision-dark-theme\"\n [ngClass]=\"'fw-tooltip-' + position()\"\n [ngStyle]=\"{'maxWidth': maxWidth+'px'}\">\n <ng-content></ng-content>\n <h5 class=\"vision-h5\">{{ title }}</h5>\n <div class=\"fw-tooltip-caret\"></div>\n</div>\n", styles: [":host{position:absolute;height:0;width:0}.fw-tooltip-content-wrapper{position:relative;border-radius:8px;border:1px solid var(--separations-border);min-width:60px;box-sizing:border-box;padding:4px 8px;background-color:var(--card-header);text-align:center;overflow-wrap:break-word;white-space:pre-wrap}.fw-tooltip-content-wrapper h5{margin:0!important;color:var(--typography-muted)}.fw-tooltip-content-wrapper .fw-tooltip-caret{position:absolute;overflow:hidden;width:16px;height:16px}.fw-tooltip-content-wrapper .fw-tooltip-caret:after{display:block;content:\"\";width:10px;height:10px;background:var(--separations-border);border:1px solid var(--separations-border);transform:rotate(45deg);position:relative}.fw-tooltip-content-wrapper.fw-tooltip-none{margin-bottom:10px}.fw-tooltip-content-wrapper.fw-tooltip-none .fw-tooltip-caret{display:none}.fw-tooltip-content-wrapper.fw-tooltip-above{margin-bottom:10px}.fw-tooltip-content-wrapper.fw-tooltip-above .fw-tooltip-caret{left:calc(50% - 8px);bottom:-10px;height:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-above .fw-tooltip-caret:after{margin:-8px auto;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-below{margin-top:10px}.fw-tooltip-content-wrapper.fw-tooltip-below .fw-tooltip-caret{left:calc(50% - 8px);top:-10px;height:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-below .fw-tooltip-caret:after{top:10px;margin:-4px auto;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-left{margin-right:10px}.fw-tooltip-content-wrapper.fw-tooltip-left .fw-tooltip-caret{right:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-left .fw-tooltip-caret:after{top:calc(50% - 5px);left:-8px;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-right{margin-left:10px}.fw-tooltip-content-wrapper.fw-tooltip-right .fw-tooltip-caret{left:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-right .fw-tooltip-caret:after{top:calc(50% - 5px);right:-6px;width:10px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
947
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FwTooltipPanelComponent, selector: "fw-tooltip-panel", inputs: { trigger: { classPropertyName: "trigger", publicName: "trigger", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: false, isRequired: false, transformFunction: null }, displayCaret: { classPropertyName: "displayCaret", publicName: "displayCaret", isSignal: false, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mouseLeave: "mouseLeave" }, host: { listeners: { "mouseleave": "hidePopover($event)" }, properties: { "@fadeInFadeOut": "this.animation", "attr.class": "this.classes" } }, ngImport: i0, template: "<div\n class=\"fw-tooltip-content-wrapper vision-dark-theme\"\n [ngClass]=\"'fw-tooltip-' + position()\"\n [ngStyle]=\"{'maxWidth': maxWidth+'px'}\">\n <ng-content></ng-content>\n <h5 class=\"vision-h5\">{{ title }}</h5>\n @if (displayCaret) {\n <div class=\"fw-tooltip-caret\"></div>\n }\n</div>\n", styles: [":host{position:absolute;height:0;width:0}.fw-tooltip-content-wrapper{position:relative;border-radius:8px;border:1px solid var(--separations-border);min-width:60px;box-sizing:border-box;padding:4px 8px;background-color:var(--card-header);text-align:center;overflow-wrap:break-word;white-space:pre-wrap}.fw-tooltip-content-wrapper h5{margin:0!important;color:var(--typography-muted)}.fw-tooltip-content-wrapper .fw-tooltip-caret{position:absolute;overflow:hidden;width:16px;height:16px}.fw-tooltip-content-wrapper .fw-tooltip-caret:after{display:block;content:\"\";width:10px;height:10px;background:var(--separations-border);border:1px solid var(--separations-border);transform:rotate(45deg);position:relative}.fw-tooltip-content-wrapper.fw-tooltip-none{margin-bottom:10px}.fw-tooltip-content-wrapper.fw-tooltip-none .fw-tooltip-caret{display:none}.fw-tooltip-content-wrapper.fw-tooltip-above{margin-bottom:10px}.fw-tooltip-content-wrapper.fw-tooltip-above .fw-tooltip-caret{left:calc(50% - 8px);bottom:-10px;height:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-above .fw-tooltip-caret:after{margin:-8px auto;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-below{margin-top:10px}.fw-tooltip-content-wrapper.fw-tooltip-below .fw-tooltip-caret{left:calc(50% - 8px);top:-10px;height:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-below .fw-tooltip-caret:after{top:10px;margin:-4px auto;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-left{margin-right:10px}.fw-tooltip-content-wrapper.fw-tooltip-left .fw-tooltip-caret{right:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-left .fw-tooltip-caret:after{top:calc(50% - 5px);left:-8px;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-right{margin-left:10px}.fw-tooltip-content-wrapper.fw-tooltip-right .fw-tooltip-caret{left:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-right .fw-tooltip-caret:after{top:calc(50% - 5px);right:-6px;width:10px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], animations: [
958
948
  trigger('fadeInFadeOut', [
959
949
  transition(':enter', [
960
950
  style({ opacity: 0 }),
@@ -978,13 +968,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
978
968
  animate('200ms', style({ opacity: 0 })),
979
969
  ]),
980
970
  ]),
981
- ], template: "<div\n @fadeInFadeOut\n class=\"fw-tooltip-content-wrapper vision-dark-theme\"\n [ngClass]=\"'fw-tooltip-' + position()\"\n [ngStyle]=\"{'maxWidth': maxWidth+'px'}\">\n <ng-content></ng-content>\n <h5 class=\"vision-h5\">{{ title }}</h5>\n <div class=\"fw-tooltip-caret\"></div>\n</div>\n", styles: [":host{position:absolute;height:0;width:0}.fw-tooltip-content-wrapper{position:relative;border-radius:8px;border:1px solid var(--separations-border);min-width:60px;box-sizing:border-box;padding:4px 8px;background-color:var(--card-header);text-align:center;overflow-wrap:break-word;white-space:pre-wrap}.fw-tooltip-content-wrapper h5{margin:0!important;color:var(--typography-muted)}.fw-tooltip-content-wrapper .fw-tooltip-caret{position:absolute;overflow:hidden;width:16px;height:16px}.fw-tooltip-content-wrapper .fw-tooltip-caret:after{display:block;content:\"\";width:10px;height:10px;background:var(--separations-border);border:1px solid var(--separations-border);transform:rotate(45deg);position:relative}.fw-tooltip-content-wrapper.fw-tooltip-none{margin-bottom:10px}.fw-tooltip-content-wrapper.fw-tooltip-none .fw-tooltip-caret{display:none}.fw-tooltip-content-wrapper.fw-tooltip-above{margin-bottom:10px}.fw-tooltip-content-wrapper.fw-tooltip-above .fw-tooltip-caret{left:calc(50% - 8px);bottom:-10px;height:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-above .fw-tooltip-caret:after{margin:-8px auto;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-below{margin-top:10px}.fw-tooltip-content-wrapper.fw-tooltip-below .fw-tooltip-caret{left:calc(50% - 8px);top:-10px;height:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-below .fw-tooltip-caret:after{top:10px;margin:-4px auto;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-left{margin-right:10px}.fw-tooltip-content-wrapper.fw-tooltip-left .fw-tooltip-caret{right:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-left .fw-tooltip-caret:after{top:calc(50% - 5px);left:-8px;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-right{margin-left:10px}.fw-tooltip-content-wrapper.fw-tooltip-right .fw-tooltip-caret{left:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-right .fw-tooltip-caret:after{top:calc(50% - 5px);right:-6px;width:10px}\n"] }]
982
- }], propDecorators: { title: [{
971
+ ], template: "<div\n class=\"fw-tooltip-content-wrapper vision-dark-theme\"\n [ngClass]=\"'fw-tooltip-' + position()\"\n [ngStyle]=\"{'maxWidth': maxWidth+'px'}\">\n <ng-content></ng-content>\n <h5 class=\"vision-h5\">{{ title }}</h5>\n @if (displayCaret) {\n <div class=\"fw-tooltip-caret\"></div>\n }\n</div>\n", styles: [":host{position:absolute;height:0;width:0}.fw-tooltip-content-wrapper{position:relative;border-radius:8px;border:1px solid var(--separations-border);min-width:60px;box-sizing:border-box;padding:4px 8px;background-color:var(--card-header);text-align:center;overflow-wrap:break-word;white-space:pre-wrap}.fw-tooltip-content-wrapper h5{margin:0!important;color:var(--typography-muted)}.fw-tooltip-content-wrapper .fw-tooltip-caret{position:absolute;overflow:hidden;width:16px;height:16px}.fw-tooltip-content-wrapper .fw-tooltip-caret:after{display:block;content:\"\";width:10px;height:10px;background:var(--separations-border);border:1px solid var(--separations-border);transform:rotate(45deg);position:relative}.fw-tooltip-content-wrapper.fw-tooltip-none{margin-bottom:10px}.fw-tooltip-content-wrapper.fw-tooltip-none .fw-tooltip-caret{display:none}.fw-tooltip-content-wrapper.fw-tooltip-above{margin-bottom:10px}.fw-tooltip-content-wrapper.fw-tooltip-above .fw-tooltip-caret{left:calc(50% - 8px);bottom:-10px;height:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-above .fw-tooltip-caret:after{margin:-8px auto;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-below{margin-top:10px}.fw-tooltip-content-wrapper.fw-tooltip-below .fw-tooltip-caret{left:calc(50% - 8px);top:-10px;height:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-below .fw-tooltip-caret:after{top:10px;margin:-4px auto;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-left{margin-right:10px}.fw-tooltip-content-wrapper.fw-tooltip-left .fw-tooltip-caret{right:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-left .fw-tooltip-caret:after{top:calc(50% - 5px);left:-8px;width:10px}.fw-tooltip-content-wrapper.fw-tooltip-right{margin-left:10px}.fw-tooltip-content-wrapper.fw-tooltip-right .fw-tooltip-caret{left:-10px;top:max(50% - 10px,3px);width:10px!important}.fw-tooltip-content-wrapper.fw-tooltip-right .fw-tooltip-caret:after{top:calc(50% - 5px);right:-6px;width:10px}\n"] }]
972
+ }], propDecorators: { animation: [{
973
+ type: HostBinding,
974
+ args: ['@fadeInFadeOut']
975
+ }], title: [{
983
976
  type: Input
984
977
  }], color: [{
985
978
  type: Input
986
979
  }], maxWidth: [{
987
980
  type: Input
981
+ }], displayCaret: [{
982
+ type: Input
988
983
  }], mouseLeave: [{
989
984
  type: Output
990
985
  }], classes: [{
@@ -995,13 +990,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
995
990
  args: ['mouseleave', ['$event']]
996
991
  }] } });
997
992
 
998
- const positionMap = {
999
- 'none': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: 3 },
1000
- 'above': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: 3 },
1001
- 'below': { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: -3 },
1002
- 'left': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },
1003
- 'right': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },
1004
- };
1005
993
  const delayMap = {
1006
994
  'none': 0,
1007
995
  'short': 400,
@@ -1010,49 +998,97 @@ const delayMap = {
1010
998
  const delayNameToMs = (name) => {
1011
999
  return delayMap[name];
1012
1000
  };
1001
+ const positionMap = {
1002
+ 'above': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: 3 },
1003
+ 'below': { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top', offsetY: -3 },
1004
+ 'left': { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' },
1005
+ 'right': { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' },
1006
+ 'none': { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom', offsetY: 3 },
1007
+ };
1008
+ /**
1009
+ * Directive for displaying extra context on hover
1010
+ * @see [Vision Docs](https://cdn.flywheel.io/docs/vision/master/?path=/docs/components-tooltip--docs)
1011
+ */
1013
1012
  class FwTooltipDirective {
1014
1013
  constructor() {
1015
- // External Context
1014
+ /***** External Context *****/
1016
1015
  this.elementRef = inject(ElementRef);
1017
1016
  this.viewContainerRef = inject(ViewContainerRef);
1018
1017
  this.overlayService = inject(Overlay);
1019
- // Internal refs
1018
+ /***** Internal Refs *****/
1020
1019
  this.overlayRef = signal(undefined);
1021
1020
  this.tooltipRef = signal(undefined);
1022
- // Inputs
1023
- this.delayMs = input(400, {
1024
- transform: delayNameToMs,
1025
- alias: 'fwTooltipDelay',
1026
- });
1021
+ /***** Inputs *****/
1027
1022
  // a lot of these ideally wouldn't be models,
1028
1023
  // but it makes it easier to interact with this from derivative directives
1029
- this.title = model('undefined', {
1024
+ // VS Code pulls the input that shares a name with the directive for giving context
1025
+ // so putting the top level comment on this input
1026
+ /**
1027
+ * Directive for displaying extra context on hover
1028
+ * @see [Vision Docs](https://cdn.flywheel.io/docs/vision/master/?path=/docs/components-tooltip--docs)
1029
+ */
1030
+ this.title = model('Placeholder', {
1030
1031
  alias: 'fwTooltip',
1031
1032
  });
1033
+ /**
1034
+ * direction relative to the parent component that the tooltip will attempt to position itself to
1035
+ */
1032
1036
  this.position = model('above', {
1033
1037
  alias: 'fwTooltipPosition',
1034
1038
  });
1039
+ /**
1040
+ * maximum width of the tooltip in pixels
1041
+ */
1035
1042
  this.maxWidth = model(200, {
1036
1043
  alias: 'fwTooltipMaxWidthPx',
1037
1044
  });
1045
+ /**
1046
+ * amount of delay before the tooltip displays
1047
+ *
1048
+ * none (0ms),
1049
+ * short (400ms),
1050
+ * long (700ms)
1051
+ */
1052
+ this.delayMs = input(400, {
1053
+ transform: delayNameToMs,
1054
+ alias: 'fwTooltipDelay',
1055
+ });
1056
+ /**
1057
+ * whether or not the tooltip should have a caret
1058
+ */
1059
+ this.displayCaret = input(true, {
1060
+ alias: 'fwTooltipCaret',
1061
+ });
1038
1062
  this.enabled = model(true, {
1039
- alias: 'fwTooltipEnabled'
1063
+ alias: 'fwTooltipEnabled',
1064
+ });
1065
+ /***** Derived State *****/
1066
+ this.connectedPositions = computed(() => {
1067
+ // falback positions for if it doesn't fit in the specified position
1068
+ // tend towards closer first i.e. 'above' will try 'left' and 'right' before resorting to 'below
1069
+ const positionPreferenceOrderMap = {
1070
+ 'above': ['above', 'right', 'left', 'below'],
1071
+ 'right': ['right', 'below', 'above', 'left'],
1072
+ 'below': ['below', 'left', 'right', 'above'],
1073
+ 'left': ['left', 'above', 'below', 'right'],
1074
+ };
1075
+ const fallbackNamedPositions = positionPreferenceOrderMap[this.position()];
1076
+ const connectedPositions = fallbackNamedPositions.map(name => positionMap[name]);
1077
+ return connectedPositions;
1040
1078
  });
1041
- // derived state
1042
- this.connectedPosition = computed(() => [positionMap[this.position()]]);
1043
1079
  this.positionStrategy = computed(() => {
1044
1080
  const positionBuilder = this.overlayService.position();
1045
1081
  const withOrigin = positionBuilder.flexibleConnectedTo(this.elementRef);
1046
- const completedStrategy = withOrigin.withPositions(this.connectedPosition());
1082
+ const completedStrategy = withOrigin.withPositions(this.connectedPositions());
1047
1083
  return completedStrategy;
1048
1084
  });
1049
1085
  this.overlayConfig = computed(() => ({
1050
1086
  positionStrategy: this.positionStrategy(),
1051
- maxWidth: this.maxWidth(),
1087
+ maxWidth: Number(this.maxWidth()),
1052
1088
  ScrollStrategyOptions: this.overlayService.scrollStrategies.close(),
1053
1089
  disposeOnNavigation: true,
1054
1090
  }));
1055
- // effects and methods
1091
+ /***** Effects and Methods *****/
1056
1092
  this.addMouseEventListeners = effect(() => {
1057
1093
  const nativeElement = this.elementRef.nativeElement;
1058
1094
  nativeElement.addEventListener('mouseenter', () => {
@@ -1062,6 +1098,25 @@ class FwTooltipDirective {
1062
1098
  this.hideTooltip();
1063
1099
  });
1064
1100
  });
1101
+ // updates the tooltip panel's caret position if a fallback position is used
1102
+ this.handlePositionChange = effect(() => {
1103
+ this.positionChangeSub?.unsubscribe();
1104
+ this.positionChangeSub = this.positionStrategy().positionChanges.subscribe(positionChange => {
1105
+ const newPosition = positionChange.connectionPair;
1106
+ const positionNames = Object.keys(positionMap);
1107
+ const newPositionName = positionNames.find(name => {
1108
+ const pos = positionMap[name];
1109
+ return pos.originX === newPosition.originX &&
1110
+ pos.originY === newPosition.originY &&
1111
+ pos.overlayX === newPosition.overlayX &&
1112
+ pos.overlayY === newPosition.overlayY;
1113
+ });
1114
+ if (newPositionName) {
1115
+ this.tooltipRef().setInput('position', newPositionName);
1116
+ this.tooltipRef().changeDetectorRef.detectChanges();
1117
+ }
1118
+ });
1119
+ });
1065
1120
  }
1066
1121
  ngOnInit() {
1067
1122
  this.tooltipPortal = new ComponentPortal(FwTooltipPanelComponent, this.viewContainerRef);
@@ -1081,20 +1136,23 @@ class FwTooltipDirective {
1081
1136
  this.tooltipRef.set(tooltipRef);
1082
1137
  tooltipRef.setInput('title', this.title());
1083
1138
  tooltipRef.setInput('position', this.position());
1139
+ tooltipRef.setInput('maxWidth', this.maxWidth());
1140
+ tooltipRef.setInput('displayCaret', this.displayCaret());
1084
1141
  tooltipRef.changeDetectorRef.detectChanges();
1085
1142
  }, this.delayMs());
1086
1143
  }
1087
1144
  hideTooltip() {
1088
- const animationDelayMs = 200;
1089
- this.closeDelayTimer = window.setTimeout(() => {
1090
- window.clearTimeout(this.openDelayTimer);
1091
- this.openDelayTimer = undefined;
1092
- this.overlayRef().detach();
1093
- this.tooltipRef.set(undefined);
1094
- }, animationDelayMs);
1145
+ window.clearTimeout(this.openDelayTimer);
1146
+ this.openDelayTimer = undefined;
1147
+ this.overlayRef().detach();
1148
+ this.tooltipRef.set(undefined);
1149
+ }
1150
+ ngOnDestroy() {
1151
+ this.positionChangeSub?.unsubscribe();
1152
+ this.hideTooltip();
1095
1153
  }
1096
1154
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
1097
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.12", type: FwTooltipDirective, isStandalone: true, selector: "[fwTooltip]", inputs: { delayMs: { classPropertyName: "delayMs", publicName: "fwTooltipDelay", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "fwTooltip", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "fwTooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "fwTooltipMaxWidthPx", isSignal: true, isRequired: false, transformFunction: null }, enabled: { classPropertyName: "enabled", publicName: "fwTooltipEnabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { title: "fwTooltipChange", position: "fwTooltipPositionChange", maxWidth: "fwTooltipMaxWidthPxChange", enabled: "fwTooltipEnabledChange" }, ngImport: i0 }); }
1155
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.12", type: FwTooltipDirective, isStandalone: true, selector: "[fwTooltip]", inputs: { title: { classPropertyName: "title", publicName: "fwTooltip", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "fwTooltipPosition", isSignal: true, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "fwTooltipMaxWidthPx", isSignal: true, isRequired: false, transformFunction: null }, delayMs: { classPropertyName: "delayMs", publicName: "fwTooltipDelay", isSignal: true, isRequired: false, transformFunction: null }, displayCaret: { classPropertyName: "displayCaret", publicName: "fwTooltipCaret", isSignal: true, isRequired: false, transformFunction: null }, enabled: { classPropertyName: "enabled", publicName: "fwTooltipEnabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { title: "fwTooltipChange", position: "fwTooltipPositionChange", maxWidth: "fwTooltipMaxWidthPxChange", enabled: "fwTooltipEnabledChange" }, ngImport: i0 }); }
1098
1156
  }
1099
1157
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTooltipDirective, decorators: [{
1100
1158
  type: Directive,
@@ -1106,7 +1164,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1106
1164
 
1107
1165
  /**
1108
1166
  * component for giving extra context when a user hovers something
1109
- * @see [Vision Docs](https://cdn.flywheel.io/docs/vision/master/?path=/docs/components-tooltip--docs)
1167
+ * @deprecated use the [tooltip directive](https://cdn.flywheel.io/docs/vision/master/?path=/docs/components-tooltip--docs) instead, intend to remove in v3
1168
+ * @see [Vision Docs](https://cdn.flywheel.io/docs/vision/master/?path=/docs/components-wrapped-tooltip--docs)
1110
1169
  */
1111
1170
  class FwTooltipComponent {
1112
1171
  constructor() {
@@ -1131,7 +1190,7 @@ class FwTooltipComponent {
1131
1190
  }
1132
1191
  ;
1133
1192
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTooltipComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1134
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: FwTooltipComponent, selector: "fw-tooltip", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: false, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: false, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: false, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: false, isRequired: false, transformFunction: null }, trigger: { classPropertyName: "trigger", publicName: "trigger", isSignal: false, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.class": "this.classes", "attr.title": "this.attrTitle" } }, ngImport: i0, template: "<div\n [ngClass]=\"['tooltip-trigger',fullWidth?'full-width':'']\"\n [fwTooltip]=\"title\"\n [fwTooltipDelay]=\"delay()\"\n [fwTooltipPosition]=\"position\">\n <ng-content></ng-content>\n</div>\n", styles: [":host.full-width{flex:1;display:flex;width:stretch}:host.full-width button{flex:1}:host .tooltip-trigger{width:fit-content;display:inline-block}:host .tooltip-trigger.full-width{flex:1;display:flex;width:stretch}:host .tooltip-trigger.full-width button{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: FwTooltipDirective, selector: "[fwTooltip]", inputs: ["fwTooltipDelay", "fwTooltip", "fwTooltipPosition", "fwTooltipMaxWidthPx", "fwTooltipEnabled"], outputs: ["fwTooltipChange", "fwTooltipPositionChange", "fwTooltipMaxWidthPxChange", "fwTooltipEnabledChange"] }] }); }
1193
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "17.3.12", type: FwTooltipComponent, selector: "fw-tooltip", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: false, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: false, isRequired: false, transformFunction: null }, maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: false, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: false, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: false, isRequired: false, transformFunction: null }, trigger: { classPropertyName: "trigger", publicName: "trigger", isSignal: false, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.class": "this.classes", "attr.title": "this.attrTitle" } }, ngImport: i0, template: "<div\n [ngClass]=\"['tooltip-trigger',fullWidth?'full-width':'']\"\n [fwTooltip]=\"title\"\n [fwTooltipDelay]=\"delay()\"\n [fwTooltipPosition]=\"position\">\n <ng-content></ng-content>\n</div>\n", styles: [":host.full-width{flex:1;display:flex;width:stretch}:host.full-width button{flex:1}:host .tooltip-trigger{width:fit-content;display:inline-block}:host .tooltip-trigger.full-width{flex:1;display:flex;width:stretch}:host .tooltip-trigger.full-width button{flex:1}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: FwTooltipDirective, selector: "[fwTooltip]", inputs: ["fwTooltip", "fwTooltipPosition", "fwTooltipMaxWidthPx", "fwTooltipDelay", "fwTooltipCaret", "fwTooltipEnabled"], outputs: ["fwTooltipChange", "fwTooltipPositionChange", "fwTooltipMaxWidthPxChange", "fwTooltipEnabledChange"] }] }); }
1135
1194
  }
1136
1195
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTooltipComponent, decorators: [{
1137
1196
  type: Component,
@@ -1207,6 +1266,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1207
1266
  */
1208
1267
  class FwAvatarListComponent {
1209
1268
  constructor() {
1269
+ this.subscriptions = [];
1210
1270
  this.hostElement = inject(ElementRef);
1211
1271
  this.avatars = contentChildren(FwAvatarComponent);
1212
1272
  this.avatarElementRefs = contentChildren(FwAvatarComponent, { read: ElementRef });
@@ -1226,13 +1286,15 @@ class FwAvatarListComponent {
1226
1286
  }
1227
1287
  ngOnInit() {
1228
1288
  // wire up resize observer to rxjs and debouce
1229
- const resize$ = new BehaviorSubject(null);
1230
- const recalcOnResize$ = resize$.pipe(distinctUntilChanged(), debounce(() => timer(this.resizeDebounceMs())));
1289
+ const resize$ = new BehaviorSubject([]);
1290
+ const recalcOnResize$ = resize$.pipe(debounce(() => timer(this.resizeDebounceMs())), // debounce otherwise it can run EVERY frame
1291
+ distinctUntilChanged());
1231
1292
  const resizeObserver = new ResizeObserver((resizeEntries) => {
1232
1293
  resize$.next(resizeEntries);
1233
1294
  });
1234
1295
  resizeObserver.observe(this.hostElement.nativeElement, {});
1235
- recalcOnResize$.subscribe(() => this.calcOverflow());
1296
+ const sub = recalcOnResize$.subscribe(() => this.calcOverflow());
1297
+ this.subscriptions.push(sub);
1236
1298
  }
1237
1299
  calcOverflow() {
1238
1300
  const hostRect = this.hostElement.nativeElement.getBoundingClientRect();
@@ -1252,24 +1314,28 @@ class FwAvatarListComponent {
1252
1314
  overflowingAvatars.push(lastVisibleAvatar);
1253
1315
  }
1254
1316
  this.hiddenAvatars.set(overflowingAvatars);
1255
- overflowingAvatars.forEach(hiddenChip => {
1256
- hiddenChip.classList.add('hidden');
1317
+ overflowingAvatars.forEach(overflowAvatar => {
1318
+ overflowAvatar.classList.add('hidden');
1257
1319
  });
1258
1320
  }
1259
1321
  else {
1260
1322
  this.moreText().nativeElement.classList.add('hidden');
1261
1323
  }
1324
+ // eslint-disable-next-line @rx-angular/no-explicit-change-detection-apis
1262
1325
  this.changeDetector.detectChanges();
1263
1326
  }
1327
+ ngOnDestroy() {
1328
+ this.subscriptions.forEach(sub => sub.unsubscribe());
1329
+ }
1264
1330
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwAvatarListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1265
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "17.3.12", type: FwAvatarListComponent, isStandalone: true, selector: "fw-avatar-list", inputs: { resizeDebounceMs: { classPropertyName: "resizeDebounceMs", publicName: "resizeDebounceMs", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "avatars", predicate: FwAvatarComponent, isSignal: true }, { propertyName: "avatarElementRefs", predicate: FwAvatarComponent, read: ElementRef, isSignal: true }], viewQueries: [{ propertyName: "moreText", first: true, predicate: ["moreText"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content select=\"fw-avatar\"></ng-content>\n<fw-tooltip> <!--TODO: figure out how to get a tooltip-->\n <p #moreText> +{{hiddenAvatars().length}} </p>\n</fw-tooltip>\n", styles: [":host{display:flex;align-items:center;flex-basis:max-content;flex-flow:row nowrap;justify-content:flex-start;max-height:36px;overflow:hidden}:host ::ng-deep fw-avatar:not(:first-child){margin-left:-4px}:host p{line-height:100%;cursor:default;margin:0;padding-left:8px;text-wrap:nowrap;color:var(--typography-muted)}:host::ng-deep .hidden{display:none}\n"], dependencies: [{ kind: "ngmodule", type: FwAvatarModule }, { kind: "ngmodule", type: FwTooltipModule }, { kind: "component", type: FwTooltipComponent, selector: "fw-tooltip", inputs: ["title", "color", "position", "maxWidth", "fullWidth", "isOpen", "trigger", "delay"] }] }); }
1331
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "17.3.12", type: FwAvatarListComponent, isStandalone: true, selector: "fw-avatar-list", inputs: { resizeDebounceMs: { classPropertyName: "resizeDebounceMs", publicName: "resizeDebounceMs", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "avatars", predicate: FwAvatarComponent, isSignal: true }, { propertyName: "avatarElementRefs", predicate: FwAvatarComponent, read: ElementRef, isSignal: true }], viewQueries: [{ propertyName: "moreText", first: true, predicate: ["moreText"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content select=\"fw-avatar\"></ng-content>\n<fw-tooltip> <!--TODO: figure out how to get a tooltip-->\n <p #moreText> +{{hiddenAvatars().length}} </p>\n</fw-tooltip>\n", styles: [":host{display:flex;align-items:center;flex-basis:max-content;flex-flow:row nowrap;justify-content:flex-start;min-height:36px;max-height:36px;overflow:hidden}:host ::ng-deep fw-avatar:not(:first-child){margin-left:-4px}:host p{line-height:100%;cursor:default;margin:0;text-align:center;padding-left:8px;text-wrap:nowrap;color:var(--typography-muted)}:host::ng-deep .hidden{display:none}\n"], dependencies: [{ kind: "ngmodule", type: FwAvatarModule }, { kind: "ngmodule", type: FwTooltipModule }, { kind: "component", type: FwTooltipComponent, selector: "fw-tooltip", inputs: ["title", "color", "position", "maxWidth", "fullWidth", "isOpen", "trigger", "delay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
1266
1332
  }
1267
1333
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwAvatarListComponent, decorators: [{
1268
1334
  type: Component,
1269
1335
  args: [{ selector: 'fw-avatar-list', standalone: true, imports: [
1270
1336
  FwAvatarModule,
1271
1337
  FwTooltipModule,
1272
- ], template: "<ng-content select=\"fw-avatar\"></ng-content>\n<fw-tooltip> <!--TODO: figure out how to get a tooltip-->\n <p #moreText> +{{hiddenAvatars().length}} </p>\n</fw-tooltip>\n", styles: [":host{display:flex;align-items:center;flex-basis:max-content;flex-flow:row nowrap;justify-content:flex-start;max-height:36px;overflow:hidden}:host ::ng-deep fw-avatar:not(:first-child){margin-left:-4px}:host p{line-height:100%;cursor:default;margin:0;padding-left:8px;text-wrap:nowrap;color:var(--typography-muted)}:host::ng-deep .hidden{display:none}\n"] }]
1338
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"fw-avatar\"></ng-content>\n<fw-tooltip> <!--TODO: figure out how to get a tooltip-->\n <p #moreText> +{{hiddenAvatars().length}} </p>\n</fw-tooltip>\n", styles: [":host{display:flex;align-items:center;flex-basis:max-content;flex-flow:row nowrap;justify-content:flex-start;min-height:36px;max-height:36px;overflow:hidden}:host ::ng-deep fw-avatar:not(:first-child){margin-left:-4px}:host p{line-height:100%;cursor:default;margin:0;text-align:center;padding-left:8px;text-wrap:nowrap;color:var(--typography-muted)}:host::ng-deep .hidden{display:none}\n"] }]
1273
1339
  }] });
1274
1340
 
1275
1341
  class FwBadgeComponent {
@@ -3150,6 +3216,7 @@ class FwDialogConfirmComponent {
3150
3216
  this.confirmButtonIcon = 'done-check';
3151
3217
  this.cancelButtonText = 'Cancel';
3152
3218
  this.contentTitle = 'Are you sure?';
3219
+ this.showConfirmButtonIcon = true;
3153
3220
  this.showClose = false;
3154
3221
  this.width = 'extra-small';
3155
3222
  // eslint-disable-next-line @angular-eslint/no-output-native
@@ -3198,11 +3265,11 @@ class FwDialogConfirmComponent {
3198
3265
  }, 300);
3199
3266
  }
3200
3267
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwDialogConfirmComponent, deps: [{ token: i1$3.DialogRef, optional: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
3201
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwDialogConfirmComponent, selector: "fw-dialog-confirm", inputs: { title: "title", icon: "icon", iconColor: "iconColor", confirmColor: "confirmColor", confirmButtonText: "confirmButtonText", confirmButtonIcon: "confirmButtonIcon", cancelButtonText: "cancelButtonText", contentIcon: "contentIcon", contentTitle: "contentTitle", contentText: "contentText", showClose: "showClose", width: "width", externalClasses: ["class", "externalClasses"] }, outputs: { close: "close", confirm: "confirm" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: "<fw-dialog\n [width]=\"width\"\n [title]=\"title\"\n [icon]=\"icon\"\n [iconColor]=\"iconColor\"\n [showClose]=\"showClose\"\n [ngClass]=\"dialogClasses\">\n <fw-dialog-content>\n <div class=\"dialog-content-confirm\">\n <fw-icon class=\"content-icon\" [ngClass]=\"confirmColor\" *ngIf=\"contentIcon\">\n {{ contentIcon }}\n </fw-icon>\n <p class=\"vision-p2 content-title\" *ngIf=\"contentTitle\">\n {{ contentTitle }}\n </p>\n <p class=\"vision-p2 content-text\" *ngIf=\"contentText\">\n {{ contentText }}\n </p>\n </div>\n </fw-dialog-content>\n <fw-dialog-actions>\n <fw-button\n variant=\"outline\"\n *ngIf=\"cancelButtonText\"\n color=\"slate\"\n (click)=\"handleCloseButton()\">\n {{ cancelButtonText }}\n </fw-button>\n <fw-button\n variant=\"solid\"\n *ngIf=\"confirmButtonText\"\n [color]=\"confirmColor\"\n [leftIcon]=\"confirmButtonIcon\"\n (click)=\"confirm.emit()\">\n {{ confirmButtonText }}\n </fw-button>\n </fw-dialog-actions>\n</fw-dialog>\n", styles: ["@keyframes slide-in-from-bottom{0%{opacity:0;transform:translateY(100vh)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-bottom{0%{opacity:1;transform:translateY(0)}99%{opacity:0;transform:translateY(100vh)}to{opacity:0;transform:translateY(100vh)}}:host{box-sizing:border-box;animation:slide-in-from-bottom .3s ease-out}:host.dialog-closing{animation:slide-out-to-bottom .3s ease-in forwards}:host .fw-dialog-confirm{position:relative}.dialog-content-confirm{display:flex;flex-direction:column;padding:50px;align-items:center;justify-content:center}.dialog-content-confirm .content-title{margin-bottom:5px;font-weight:500}.dialog-content-confirm .content-text{margin:0;color:var(--typography-muted)}.dialog-content-confirm .content-icon{font-size:50px}.dialog-content-confirm .content-icon.primary{color:var(--primary-base)}.dialog-content-confirm .content-icon.secondary{color:var(--secondary-base)}.dialog-content-confirm .content-icon.slate{color:var(--slate-base)}.dialog-content-confirm .content-icon.success{color:var(--green-base)}.dialog-content-confirm .content-icon.warning{color:var(--orange-base)}.dialog-content-confirm .content-icon.danger{color:var(--red-base)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwButtonComponent, selector: "fw-button", inputs: ["color", "size", "variant", "type", "disabled", "fullWidth", "leftIcon", "rightIcon"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }, { kind: "component", type: FwDialogActionsComponent, selector: "fw-dialog-actions" }, { kind: "component", type: FwDialogComponent, selector: "fw-dialog", inputs: ["width", "title", "icon", "iconColor", "showClose", "class"], outputs: ["close"] }, { kind: "component", type: FwDialogContentComponent, selector: "fw-dialog-content", inputs: ["padded"] }] }); }
3268
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwDialogConfirmComponent, selector: "fw-dialog-confirm", inputs: { title: "title", icon: "icon", iconColor: "iconColor", confirmColor: "confirmColor", confirmButtonText: "confirmButtonText", confirmButtonIcon: "confirmButtonIcon", cancelButtonText: "cancelButtonText", contentIcon: "contentIcon", contentTitle: "contentTitle", contentText: "contentText", showConfirmButtonIcon: "showConfirmButtonIcon", showClose: "showClose", width: "width", externalClasses: ["class", "externalClasses"] }, outputs: { close: "close", confirm: "confirm" }, host: { properties: { "class": "this.classes" } }, ngImport: i0, template: "<fw-dialog\n [width]=\"width\"\n [title]=\"title\"\n [icon]=\"icon\"\n [iconColor]=\"iconColor\"\n [showClose]=\"showClose\"\n [ngClass]=\"dialogClasses\">\n <fw-dialog-content>\n <div class=\"dialog-content-confirm\">\n <fw-icon class=\"content-icon\" [ngClass]=\"confirmColor\" *ngIf=\"contentIcon\">\n {{ contentIcon }}\n </fw-icon>\n <p class=\"vision-p2 content-title\" *ngIf=\"contentTitle\">\n {{ contentTitle }}\n </p>\n <p class=\"vision-p2 content-text\" *ngIf=\"contentText\">\n {{ contentText }}\n </p>\n </div>\n </fw-dialog-content>\n <fw-dialog-actions>\n <fw-button\n variant=\"outline\"\n *ngIf=\"cancelButtonText\"\n color=\"slate\"\n (click)=\"handleCloseButton()\">\n {{ cancelButtonText }}\n </fw-button>\n <fw-button\n variant=\"solid\"\n *ngIf=\"confirmButtonText\"\n [color]=\"confirmColor\"\n [leftIcon]=\"showConfirmButtonIcon ? confirmButtonIcon : null\"\n (click)=\"confirm.emit()\">\n {{ confirmButtonText }}\n </fw-button>\n </fw-dialog-actions>\n</fw-dialog>\n", styles: ["@keyframes slide-in-from-bottom{0%{opacity:0;transform:translateY(100vh)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-bottom{0%{opacity:1;transform:translateY(0)}99%{opacity:0;transform:translateY(100vh)}to{opacity:0;transform:translateY(100vh)}}:host{box-sizing:border-box;animation:slide-in-from-bottom .3s ease-out}:host.dialog-closing{animation:slide-out-to-bottom .3s ease-in forwards}:host .fw-dialog-confirm{position:relative}.dialog-content-confirm{display:flex;flex-direction:column;padding:50px;align-items:center;justify-content:center}.dialog-content-confirm .content-title{margin-bottom:5px;font-weight:500}.dialog-content-confirm .content-text{margin:0;color:var(--typography-muted)}.dialog-content-confirm .content-icon{font-size:50px}.dialog-content-confirm .content-icon.primary{color:var(--primary-base)}.dialog-content-confirm .content-icon.secondary{color:var(--secondary-base)}.dialog-content-confirm .content-icon.slate{color:var(--slate-base)}.dialog-content-confirm .content-icon.success{color:var(--green-base)}.dialog-content-confirm .content-icon.warning{color:var(--orange-base)}.dialog-content-confirm .content-icon.danger{color:var(--red-base)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwButtonComponent, selector: "fw-button", inputs: ["color", "size", "variant", "type", "disabled", "fullWidth", "leftIcon", "rightIcon"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }, { kind: "component", type: FwDialogActionsComponent, selector: "fw-dialog-actions" }, { kind: "component", type: FwDialogComponent, selector: "fw-dialog", inputs: ["width", "title", "icon", "iconColor", "showClose", "class"], outputs: ["close"] }, { kind: "component", type: FwDialogContentComponent, selector: "fw-dialog-content", inputs: ["padded"] }] }); }
3202
3269
  }
3203
3270
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwDialogConfirmComponent, decorators: [{
3204
3271
  type: Component,
3205
- args: [{ selector: 'fw-dialog-confirm', template: "<fw-dialog\n [width]=\"width\"\n [title]=\"title\"\n [icon]=\"icon\"\n [iconColor]=\"iconColor\"\n [showClose]=\"showClose\"\n [ngClass]=\"dialogClasses\">\n <fw-dialog-content>\n <div class=\"dialog-content-confirm\">\n <fw-icon class=\"content-icon\" [ngClass]=\"confirmColor\" *ngIf=\"contentIcon\">\n {{ contentIcon }}\n </fw-icon>\n <p class=\"vision-p2 content-title\" *ngIf=\"contentTitle\">\n {{ contentTitle }}\n </p>\n <p class=\"vision-p2 content-text\" *ngIf=\"contentText\">\n {{ contentText }}\n </p>\n </div>\n </fw-dialog-content>\n <fw-dialog-actions>\n <fw-button\n variant=\"outline\"\n *ngIf=\"cancelButtonText\"\n color=\"slate\"\n (click)=\"handleCloseButton()\">\n {{ cancelButtonText }}\n </fw-button>\n <fw-button\n variant=\"solid\"\n *ngIf=\"confirmButtonText\"\n [color]=\"confirmColor\"\n [leftIcon]=\"confirmButtonIcon\"\n (click)=\"confirm.emit()\">\n {{ confirmButtonText }}\n </fw-button>\n </fw-dialog-actions>\n</fw-dialog>\n", styles: ["@keyframes slide-in-from-bottom{0%{opacity:0;transform:translateY(100vh)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-bottom{0%{opacity:1;transform:translateY(0)}99%{opacity:0;transform:translateY(100vh)}to{opacity:0;transform:translateY(100vh)}}:host{box-sizing:border-box;animation:slide-in-from-bottom .3s ease-out}:host.dialog-closing{animation:slide-out-to-bottom .3s ease-in forwards}:host .fw-dialog-confirm{position:relative}.dialog-content-confirm{display:flex;flex-direction:column;padding:50px;align-items:center;justify-content:center}.dialog-content-confirm .content-title{margin-bottom:5px;font-weight:500}.dialog-content-confirm .content-text{margin:0;color:var(--typography-muted)}.dialog-content-confirm .content-icon{font-size:50px}.dialog-content-confirm .content-icon.primary{color:var(--primary-base)}.dialog-content-confirm .content-icon.secondary{color:var(--secondary-base)}.dialog-content-confirm .content-icon.slate{color:var(--slate-base)}.dialog-content-confirm .content-icon.success{color:var(--green-base)}.dialog-content-confirm .content-icon.warning{color:var(--orange-base)}.dialog-content-confirm .content-icon.danger{color:var(--red-base)}\n"] }]
3272
+ args: [{ selector: 'fw-dialog-confirm', template: "<fw-dialog\n [width]=\"width\"\n [title]=\"title\"\n [icon]=\"icon\"\n [iconColor]=\"iconColor\"\n [showClose]=\"showClose\"\n [ngClass]=\"dialogClasses\">\n <fw-dialog-content>\n <div class=\"dialog-content-confirm\">\n <fw-icon class=\"content-icon\" [ngClass]=\"confirmColor\" *ngIf=\"contentIcon\">\n {{ contentIcon }}\n </fw-icon>\n <p class=\"vision-p2 content-title\" *ngIf=\"contentTitle\">\n {{ contentTitle }}\n </p>\n <p class=\"vision-p2 content-text\" *ngIf=\"contentText\">\n {{ contentText }}\n </p>\n </div>\n </fw-dialog-content>\n <fw-dialog-actions>\n <fw-button\n variant=\"outline\"\n *ngIf=\"cancelButtonText\"\n color=\"slate\"\n (click)=\"handleCloseButton()\">\n {{ cancelButtonText }}\n </fw-button>\n <fw-button\n variant=\"solid\"\n *ngIf=\"confirmButtonText\"\n [color]=\"confirmColor\"\n [leftIcon]=\"showConfirmButtonIcon ? confirmButtonIcon : null\"\n (click)=\"confirm.emit()\">\n {{ confirmButtonText }}\n </fw-button>\n </fw-dialog-actions>\n</fw-dialog>\n", styles: ["@keyframes slide-in-from-bottom{0%{opacity:0;transform:translateY(100vh)}to{opacity:1;transform:translateY(0)}}@keyframes slide-out-to-bottom{0%{opacity:1;transform:translateY(0)}99%{opacity:0;transform:translateY(100vh)}to{opacity:0;transform:translateY(100vh)}}:host{box-sizing:border-box;animation:slide-in-from-bottom .3s ease-out}:host.dialog-closing{animation:slide-out-to-bottom .3s ease-in forwards}:host .fw-dialog-confirm{position:relative}.dialog-content-confirm{display:flex;flex-direction:column;padding:50px;align-items:center;justify-content:center}.dialog-content-confirm .content-title{margin-bottom:5px;font-weight:500}.dialog-content-confirm .content-text{margin:0;color:var(--typography-muted)}.dialog-content-confirm .content-icon{font-size:50px}.dialog-content-confirm .content-icon.primary{color:var(--primary-base)}.dialog-content-confirm .content-icon.secondary{color:var(--secondary-base)}.dialog-content-confirm .content-icon.slate{color:var(--slate-base)}.dialog-content-confirm .content-icon.success{color:var(--green-base)}.dialog-content-confirm .content-icon.warning{color:var(--orange-base)}.dialog-content-confirm .content-icon.danger{color:var(--red-base)}\n"] }]
3206
3273
  }], ctorParameters: () => [{ type: i1$3.DialogRef, decorators: [{
3207
3274
  type: Optional
3208
3275
  }] }, { type: i0.ElementRef }], propDecorators: { title: [{
@@ -3225,6 +3292,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
3225
3292
  type: Input
3226
3293
  }], contentText: [{
3227
3294
  type: Input
3295
+ }], showConfirmButtonIcon: [{
3296
+ type: Input
3228
3297
  }], showClose: [{
3229
3298
  type: Input
3230
3299
  }], width: [{
@@ -3537,16 +3606,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
3537
3606
  }]
3538
3607
  }] });
3539
3608
 
3609
+ class FwTagComponent {
3610
+ constructor() {
3611
+ this.size = 'small';
3612
+ this.color = 'slate';
3613
+ }
3614
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3615
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwTagComponent, selector: "fw-tag", inputs: { size: "size", color: "color", icon: "icon", title: "title" }, ngImport: i0, template: "<div [ngClass]=\"['tag', 'tag-'+size, 'tag-'+color]\">\n <fw-icon *ngIf=\"icon\" class=\"tag-icon\">{{ icon }}</fw-icon>\n <div class=\"tag-text\" *ngIf=\"title\">\n <span>{{ title }}</span>\n </div>\n</div>\n", styles: [".tag{box-sizing:border-box;border-radius:4px;padding:0 6px 0 4px;display:inline-flex;gap:4px;align-items:center}.tag .tag-text{font-family:Inter,sans-serif;font-size:10px;font-style:normal;font-weight:500;line-height:120%;white-space:wrap}.tag.tag-small{height:16px}.tag.tag-small .tag-icon{align-items:flex-start;font-size:12px;min-width:12px;width:12px}.tag.tag-large{height:24px}.tag.tag-large .tag-icon{align-items:flex-start;font-size:16px;min-width:16px;width:16px}.tag.tag-slate{color:var(--slate-base);background-color:var(--slate-hover)}.tag.tag-slate:hover{background-color:var(--slate-focus)}.tag.tag-primary{color:var(--primary-base);background-color:var(--primary-hover)}.tag.tag-primary:hover{background-color:var(--primary-focus)}.tag.tag-secondary{color:var(--secondary-base);background-color:var(--secondary-hover)}.tag.tag-secondary:hover{background-color:var(--secondary-focus)}.tag.tag-orange{color:var(--orange-base);background-color:var(--orange-hover)}.tag.tag-orange:hover{background-color:var(--orange-focus)}.tag.tag-green{color:var(--green-base);background-color:var(--green-hover)}.tag.tag-green:hover{background-color:var(--green-focus)}.tag.tag-red{color:var(--red-base);background-color:var(--red-hover)}.tag.tag-red:hover{background-color:var(--red-focus)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon", inputs: ["size", "color"] }] }); }
3616
+ }
3617
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTagComponent, decorators: [{
3618
+ type: Component,
3619
+ args: [{ selector: 'fw-tag', template: "<div [ngClass]=\"['tag', 'tag-'+size, 'tag-'+color]\">\n <fw-icon *ngIf=\"icon\" class=\"tag-icon\">{{ icon }}</fw-icon>\n <div class=\"tag-text\" *ngIf=\"title\">\n <span>{{ title }}</span>\n </div>\n</div>\n", styles: [".tag{box-sizing:border-box;border-radius:4px;padding:0 6px 0 4px;display:inline-flex;gap:4px;align-items:center}.tag .tag-text{font-family:Inter,sans-serif;font-size:10px;font-style:normal;font-weight:500;line-height:120%;white-space:wrap}.tag.tag-small{height:16px}.tag.tag-small .tag-icon{align-items:flex-start;font-size:12px;min-width:12px;width:12px}.tag.tag-large{height:24px}.tag.tag-large .tag-icon{align-items:flex-start;font-size:16px;min-width:16px;width:16px}.tag.tag-slate{color:var(--slate-base);background-color:var(--slate-hover)}.tag.tag-slate:hover{background-color:var(--slate-focus)}.tag.tag-primary{color:var(--primary-base);background-color:var(--primary-hover)}.tag.tag-primary:hover{background-color:var(--primary-focus)}.tag.tag-secondary{color:var(--secondary-base);background-color:var(--secondary-hover)}.tag.tag-secondary:hover{background-color:var(--secondary-focus)}.tag.tag-orange{color:var(--orange-base);background-color:var(--orange-hover)}.tag.tag-orange:hover{background-color:var(--orange-focus)}.tag.tag-green{color:var(--green-base);background-color:var(--green-hover)}.tag.tag-green:hover{background-color:var(--green-focus)}.tag.tag-red{color:var(--red-base);background-color:var(--red-hover)}.tag.tag-red:hover{background-color:var(--red-focus)}\n"] }]
3620
+ }], propDecorators: { size: [{
3621
+ type: Input
3622
+ }], color: [{
3623
+ type: Input
3624
+ }], icon: [{
3625
+ type: Input
3626
+ }], title: [{
3627
+ type: Input
3628
+ }] } });
3629
+
3540
3630
  class FwFormHeadingComponent {
3541
3631
  constructor() {
3542
3632
  this.class = 'fw-form-heading';
3633
+ this.statusColor = 'slate';
3543
3634
  }
3544
3635
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwFormHeadingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3545
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwFormHeadingComponent, selector: "fw-form-heading", inputs: { title: "title", description: "description", status: "status" }, host: { properties: { "attr.class": "this.class" } }, ngImport: i0, template: "<div class=\"heading-area\">\n <div>\n <h4 class=\"vision-h4 section-heading\">{{ title }}\n <span *ngIf=\"status\" class=\"status\">{{ status.toUpperCase() }}</span>\n <ng-content select=\"fw-tooltip\"></ng-content>\n <ng-content select=\"fw-icon\"></ng-content>\n <ng-content select=\"fw-chip\"></ng-content>\n </h4>\n <p class=\"vision-p3\" *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-form-heading{width:100%;display:flex;justify-content:space-between;align-items:center;gap:8px}.fw-form-heading .heading-area{display:flex;align-items:center;padding-left:4px;margin-bottom:8px}.fw-form-heading .heading-area h4{color:var(--typography-base);margin:0;display:flex;align-items:center;gap:5px}.fw-form-heading .heading-area h4 .status{color:var(--primary-base)}.fw-form-heading .heading-area p{color:var(--typography-muted);margin:0;line-height:140%;display:flex;align-items:center;gap:3px}.fw-form-heading .heading-area p a{color:var(--typography-muted)}.fw-form-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-form-heading .right-content{display:flex;gap:8px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
3636
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwFormHeadingComponent, selector: "fw-form-heading", inputs: { title: "title", description: "description", required: "required", status: "status", statusColor: "statusColor" }, host: { properties: { "attr.class": "this.class" } }, ngImport: i0, template: "<div class=\"heading-area\">\n <div>\n <div class=\"section-heading\">\n <h4 class=\"vision-h4\">\n <span>{{ title }}</span>\n <span *ngIf=\"required\" class=\"required\">*</span>\n </h4>\n <fw-tag *ngIf=\"status\" [color]=\"statusColor\" [title]=\"status\"></fw-tag>\n <ng-content select=\"fw-tooltip\"></ng-content>\n <ng-content select=\"fw-icon\"></ng-content>\n <ng-content select=\"fw-chip\"></ng-content>\n </div>\n <p class=\"vision-p3\" *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-form-heading{width:100%;display:flex;justify-content:space-between;align-items:center;gap:8px}.fw-form-heading .heading-area{display:flex;align-items:center;padding-left:4px;margin-bottom:8px}.fw-form-heading .heading-area .section-heading{display:flex;align-items:center;gap:5px}.fw-form-heading .heading-area h4{color:var(--typography-base);margin:0}.fw-form-heading .heading-area h4 .required{margin-left:4px;color:var(--red-base)}.fw-form-heading .heading-area p{color:var(--typography-muted);margin:0;line-height:140%;display:flex;align-items:center;gap:3px}.fw-form-heading .heading-area p a{color:var(--typography-muted)}.fw-form-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-form-heading .right-content{display:flex;gap:8px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwTagComponent, selector: "fw-tag", inputs: ["size", "color", "icon", "title"] }], encapsulation: i0.ViewEncapsulation.None }); }
3546
3637
  }
3547
3638
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwFormHeadingComponent, decorators: [{
3548
3639
  type: Component,
3549
- args: [{ selector: 'fw-form-heading', encapsulation: ViewEncapsulation.None, template: "<div class=\"heading-area\">\n <div>\n <h4 class=\"vision-h4 section-heading\">{{ title }}\n <span *ngIf=\"status\" class=\"status\">{{ status.toUpperCase() }}</span>\n <ng-content select=\"fw-tooltip\"></ng-content>\n <ng-content select=\"fw-icon\"></ng-content>\n <ng-content select=\"fw-chip\"></ng-content>\n </h4>\n <p class=\"vision-p3\" *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-form-heading{width:100%;display:flex;justify-content:space-between;align-items:center;gap:8px}.fw-form-heading .heading-area{display:flex;align-items:center;padding-left:4px;margin-bottom:8px}.fw-form-heading .heading-area h4{color:var(--typography-base);margin:0;display:flex;align-items:center;gap:5px}.fw-form-heading .heading-area h4 .status{color:var(--primary-base)}.fw-form-heading .heading-area p{color:var(--typography-muted);margin:0;line-height:140%;display:flex;align-items:center;gap:3px}.fw-form-heading .heading-area p a{color:var(--typography-muted)}.fw-form-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-form-heading .right-content{display:flex;gap:8px}\n"] }]
3640
+ args: [{ selector: 'fw-form-heading', encapsulation: ViewEncapsulation.None, template: "<div class=\"heading-area\">\n <div>\n <div class=\"section-heading\">\n <h4 class=\"vision-h4\">\n <span>{{ title }}</span>\n <span *ngIf=\"required\" class=\"required\">*</span>\n </h4>\n <fw-tag *ngIf=\"status\" [color]=\"statusColor\" [title]=\"status\"></fw-tag>\n <ng-content select=\"fw-tooltip\"></ng-content>\n <ng-content select=\"fw-icon\"></ng-content>\n <ng-content select=\"fw-chip\"></ng-content>\n </div>\n <p class=\"vision-p3\" *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-form-heading{width:100%;display:flex;justify-content:space-between;align-items:center;gap:8px}.fw-form-heading .heading-area{display:flex;align-items:center;padding-left:4px;margin-bottom:8px}.fw-form-heading .heading-area .section-heading{display:flex;align-items:center;gap:5px}.fw-form-heading .heading-area h4{color:var(--typography-base);margin:0}.fw-form-heading .heading-area h4 .required{margin-left:4px;color:var(--red-base)}.fw-form-heading .heading-area p{color:var(--typography-muted);margin:0;line-height:140%;display:flex;align-items:center;gap:3px}.fw-form-heading .heading-area p a{color:var(--typography-muted)}.fw-form-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-form-heading .right-content{display:flex;gap:8px}\n"] }]
3550
3641
  }], ctorParameters: () => [], propDecorators: { class: [{
3551
3642
  type: HostBinding,
3552
3643
  args: ['attr.class']
@@ -3554,18 +3645,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
3554
3645
  type: Input
3555
3646
  }], description: [{
3556
3647
  type: Input
3648
+ }], required: [{
3649
+ type: Input
3557
3650
  }], status: [{
3558
3651
  type: Input
3652
+ }], statusColor: [{
3653
+ type: Input
3559
3654
  }] } });
3560
3655
 
3656
+ class FwTagModule {
3657
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTagModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3658
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FwTagModule, declarations: [FwTagComponent], imports: [CommonModule,
3659
+ FwIconModule], exports: [FwTagComponent] }); }
3660
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTagModule, imports: [CommonModule,
3661
+ FwIconModule] }); }
3662
+ }
3663
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwTagModule, decorators: [{
3664
+ type: NgModule,
3665
+ args: [{
3666
+ imports: [
3667
+ CommonModule,
3668
+ FwIconModule,
3669
+ ],
3670
+ exports: [
3671
+ FwTagComponent,
3672
+ ],
3673
+ declarations: [
3674
+ FwTagComponent,
3675
+ ],
3676
+ }]
3677
+ }] });
3678
+
3561
3679
  class FwFormHeadingModule {
3562
3680
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwFormHeadingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3563
3681
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FwFormHeadingModule, declarations: [FwFormHeadingComponent], imports: [CommonModule,
3564
3682
  FwButtonModule,
3565
- FwIconModule], exports: [FwFormHeadingComponent] }); }
3683
+ FwIconModule,
3684
+ FwTagModule], exports: [FwFormHeadingComponent] }); }
3566
3685
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwFormHeadingModule, imports: [CommonModule,
3567
3686
  FwButtonModule,
3568
- FwIconModule] }); }
3687
+ FwIconModule,
3688
+ FwTagModule] }); }
3569
3689
  }
3570
3690
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwFormHeadingModule, decorators: [{
3571
3691
  type: NgModule,
@@ -3574,6 +3694,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
3574
3694
  CommonModule,
3575
3695
  FwButtonModule,
3576
3696
  FwIconModule,
3697
+ FwTagModule,
3577
3698
  ],
3578
3699
  exports: [
3579
3700
  FwFormHeadingComponent,
@@ -3669,36 +3790,36 @@ const allIcons = [
3669
3790
  'add-new-create',
3670
3791
  'add-row-above',
3671
3792
  'add-row-below',
3672
- 'add-server-databases-endpoint',
3673
3793
  'add-server',
3794
+ 'add-server-databases-endpoint',
3674
3795
  'add-user',
3675
3796
  'ai',
3676
3797
  'apple',
3677
3798
  'apply-copy-duplicate',
3678
3799
  'archive-documents-box-big',
3679
3800
  'arrange-filter-sort',
3801
+ 'arrow',
3680
3802
  'arrow-annotate',
3681
- 'arrow-back-collapse',
3682
3803
  'arrow-back',
3804
+ 'arrow-back-collapse',
3683
3805
  'arrow-down',
3684
- 'arrow-forward-collapse',
3685
3806
  'arrow-forward',
3807
+ 'arrow-forward-collapse',
3686
3808
  'arrow-redo',
3687
- 'arrow-rotate-restore',
3688
3809
  'arrow-rotate',
3810
+ 'arrow-rotate-restore',
3689
3811
  'arrow-undo',
3812
+ 'arrow-up',
3690
3813
  'arrow-up-high-priority',
3691
3814
  'arrow-up-low-priority',
3692
- 'arrow-up',
3693
- 'arrow',
3694
3815
  'barcode-serial',
3695
3816
  'barcode-stack-scan',
3696
3817
  'bell-notification',
3697
3818
  'bezier-curve',
3698
3819
  'blocks-code-test-checkmark',
3699
3820
  'book-lab-flask',
3700
- 'bookmark-plus-add',
3701
3821
  'bookmark',
3822
+ 'bookmark-plus-add',
3702
3823
  'brain',
3703
3824
  'brightness-photo-edit',
3704
3825
  'browser-internet-web-windows',
@@ -3714,22 +3835,22 @@ const allIcons = [
3714
3835
  'chart-trend-square',
3715
3836
  'chat-messages-bubble',
3716
3837
  'check-mark-certificate',
3717
- 'checklist-tasks-chechmark-square',
3718
3838
  'checklist',
3839
+ 'checklist-tasks-chechmark-square',
3719
3840
  'chevron-back',
3720
3841
  'chevron-down',
3721
3842
  'chevron-forward',
3722
3843
  'chevron-input-number',
3723
3844
  'chevron-up',
3724
- 'circle-ellipses',
3725
3845
  'circle',
3846
+ 'circle-ellipses',
3726
3847
  'clap-applause-hands',
3727
3848
  'clip-attachment',
3728
3849
  'clock-history',
3729
3850
  'clock-hour-4',
3730
3851
  'clock-loading',
3731
- 'close-circled',
3732
3852
  'close',
3853
+ 'close-circled',
3733
3854
  'closed-freehand-vector-poly',
3734
3855
  'cloud-network-add',
3735
3856
  'cloud-storage-checkmark',
@@ -3764,21 +3885,22 @@ const allIcons = [
3764
3885
  'document-file-zip',
3765
3886
  'document-status-done-checkmark',
3766
3887
  'document-visible',
3767
- 'documents-file-checkmark',
3768
3888
  'documents-file',
3889
+ 'documents-file-checkmark',
3890
+ 'documents-file-move-arrow-right',
3769
3891
  'documents-files',
3770
- 'done-check-tracked',
3771
3892
  'done-check',
3772
- 'download-status',
3893
+ 'done-check-tracked',
3773
3894
  'download',
3895
+ 'download-status',
3774
3896
  'drag-drop-indicator',
3775
3897
  'draw-rectangle',
3776
3898
  'earth-globe-fail',
3899
+ 'edit',
3777
3900
  'edit-boxed',
3778
3901
  'edit-erase',
3779
- 'edit',
3780
- 'email-mail-checkmark-group',
3781
3902
  'email',
3903
+ 'email-mail-checkmark-group',
3782
3904
  'embed-circle',
3783
3905
  'exchange',
3784
3906
  'expand-pathfinder-dot-square-segmentation',
@@ -3787,13 +3909,13 @@ const allIcons = [
3787
3909
  'file-blank-search',
3788
3910
  'file-download',
3789
3911
  'file-text',
3790
- 'files-library-content',
3791
- 'files-library',
3792
3912
  'files',
3913
+ 'files-library',
3914
+ 'files-library-content',
3915
+ 'filter',
3793
3916
  'filter-sort-add',
3794
3917
  'filter-sort-check-mark',
3795
3918
  'filter-sort-delete',
3796
- 'filter',
3797
3919
  'flag',
3798
3920
  'flip-horizontal',
3799
3921
  'flip-vertical',
@@ -3806,6 +3928,7 @@ const allIcons = [
3806
3928
  'folder-copy-expand-arrow-down',
3807
3929
  'folder-copy-expand-arrow-up',
3808
3930
  'folder-group',
3931
+ 'folder-move',
3809
3932
  'folder-open',
3810
3933
  'folder-share',
3811
3934
  'form-metadata-element',
@@ -3814,15 +3937,15 @@ const allIcons = [
3814
3937
  'full-screen-zoom',
3815
3938
  'git-add-branch',
3816
3939
  'git-branch',
3817
- 'git-merge-draft',
3818
3940
  'git-merge',
3941
+ 'git-merge-draft',
3819
3942
  'git-pull-request-2',
3820
3943
  'github-color-login',
3821
3944
  'gitlab',
3822
3945
  'graduate-hat',
3823
3946
  'grid-dot-square',
3824
- 'grid-layout-9-square',
3825
3947
  'grid-layout',
3948
+ 'grid-layout-9-square',
3826
3949
  'hammer-legal-square',
3827
3950
  'hammer-screwdriver',
3828
3951
  'hand-money-currency',
@@ -3834,8 +3957,8 @@ const allIcons = [
3834
3957
  'image-photo-copy-left-down',
3835
3958
  'image-picture-square',
3836
3959
  'information-circle',
3837
- 'invoice-checkmark-paid',
3838
3960
  'invoice',
3961
+ 'invoice-checkmark-paid',
3839
3962
  'italic',
3840
3963
  'items-group-elements',
3841
3964
  'key',
@@ -3844,22 +3967,21 @@ const allIcons = [
3844
3967
  'label-tag',
3845
3968
  'laptop-health-medical-cross',
3846
3969
  'layers',
3847
- 'layout-grid',
3848
3970
  'layout',
3971
+ 'layout-grid',
3849
3972
  'line',
3850
- 'link-unlink',
3851
3973
  'link',
3974
+ 'link-unlink',
3852
3975
  'linkedin',
3853
3976
  'linux',
3854
- 'list-paragraph-number',
3855
3977
  'list-paragraph',
3978
+ 'list-paragraph-number',
3856
3979
  'list-test-lab-flask',
3857
3980
  'livewire-tool',
3858
3981
  'loading-status-checkmark',
3859
- 'lock-unlock',
3860
3982
  'lock',
3983
+ 'lock-unlock',
3861
3984
  'logout',
3862
- 'lung',
3863
3985
  'lungs',
3864
3986
  'markdown',
3865
3987
  'measure-angle',
@@ -3873,26 +3995,27 @@ const allIcons = [
3873
3995
  'message-chat-question-support',
3874
3996
  'message-checkmark-sent',
3875
3997
  'message-question-checkmark',
3876
- 'microphone-mic-rec-circle',
3877
3998
  'microphone-mic-rec',
3999
+ 'microphone-mic-rec-circle',
3878
4000
  'microphone-mic-recording-circle',
3879
4001
  'minus',
3880
4002
  'modalities',
3881
4003
  'molecule',
4004
+ 'money',
3882
4005
  'money-coin',
3883
4006
  'money-dollar',
3884
- 'money',
3885
4007
  'monitor-computer',
3886
4008
  'mouse-big',
4009
+ 'mouse-scroll',
3887
4010
  'move',
3888
4011
  'music-play-resume',
3889
4012
  'music-stop',
3890
4013
  'mute',
3891
4014
  'network-storage-alert',
4015
+ 'notebook',
3892
4016
  'notebook-add-plus',
3893
4017
  'notebook-open',
3894
4018
  'notebook-pen-edit',
3895
- 'notebook',
3896
4019
  'notes-pen',
3897
4020
  'object-search-zoom-plus',
3898
4021
  'open',
@@ -3910,24 +4033,25 @@ const allIcons = [
3910
4033
  'protective-mask',
3911
4034
  'question-circle',
3912
4035
  'quote',
3913
- 'radiology-scan-circle',
3914
4036
  'radiology-scan',
4037
+ 'radiology-scan-circle',
3915
4038
  'reader-studies',
4039
+ 'rotate',
3916
4040
  'rotate-arrow-manual',
3917
4041
  'rotate-item-left',
3918
4042
  'rotate-item-right',
3919
4043
  'rotate-refresh',
3920
- 'rotate',
3921
- 'ruler-bidirectional',
3922
4044
  'ruler',
4045
+ 'ruler-bidirectional',
3923
4046
  'scanner',
4047
+ 'search',
3924
4048
  'search-loop',
3925
4049
  'search-user-profile-person',
3926
4050
  'search-zoom-minus',
3927
4051
  'search-zoom-plus',
3928
- 'search',
3929
4052
  'section-form-element',
3930
4053
  'send-message-share',
4054
+ 'server',
3931
4055
  'server-checkmark',
3932
4056
  'server-database-endpoint',
3933
4057
  'server-databases-checkmark-user',
@@ -3935,15 +4059,14 @@ const allIcons = [
3935
4059
  'server-databases-download',
3936
4060
  'server-databases-key-protection',
3937
4061
  'server-databases-minimal-download',
3938
- 'server-databases-sync-import',
3939
4062
  'server-databases-sync',
4063
+ 'server-databases-sync-import',
3940
4064
  'server-upload',
3941
- 'server',
3942
4065
  'servers-database',
3943
4066
  'setting-gear',
3944
4067
  'settings-adjust',
3945
- 'settings-gear-square',
3946
4068
  'settings-gear',
4069
+ 'settings-gear-square',
3947
4070
  'settings-select',
3948
4071
  'shapes-objects',
3949
4072
  'share',
@@ -3951,8 +4074,8 @@ const allIcons = [
3951
4074
  'show-visible',
3952
4075
  'smiley-emoji-face',
3953
4076
  'speed-dashboard',
3954
- 'square-fill-outline',
3955
4077
  'square-fill',
4078
+ 'square-fill-outline',
3956
4079
  'square-outline',
3957
4080
  'star',
3958
4081
  'stars-light-sparkle',
@@ -3961,8 +4084,8 @@ const allIcons = [
3961
4084
  'stretch-vertical',
3962
4085
  'substract-group',
3963
4086
  'switch',
3964
- 'target-space-object-select',
3965
4087
  'target',
4088
+ 'target-space-object-select',
3966
4089
  'tasklist-to-do-checkmark',
3967
4090
  'technology-cube-3d',
3968
4091
  'test-lab-flask',
@@ -3974,6 +4097,7 @@ const allIcons = [
3974
4097
  'text-long',
3975
4098
  'text-short-form-element',
3976
4099
  'text-underline',
4100
+ 'thumbs-down-dislike',
3977
4101
  'thumbs-up-like',
3978
4102
  'timer-clock-style',
3979
4103
  'trash-delete',
@@ -3981,6 +4105,7 @@ const allIcons = [
3981
4105
  'undone-uncheck-untracked',
3982
4106
  'unlimited-repeat-subscription-circle',
3983
4107
  'upload',
4108
+ 'user',
3984
4109
  'user-checked',
3985
4110
  'user-delete-cross',
3986
4111
  'user-document',
@@ -3990,12 +4115,11 @@ const allIcons = [
3990
4115
  'user-profile-cards-pool',
3991
4116
  'user-profile-group-discovery',
3992
4117
  'user-setting-gear',
3993
- 'user',
3994
4118
  'video-player-controls',
3995
4119
  'visible-eye-hidden',
3996
4120
  'volume-full',
3997
- 'warning-circle',
3998
4121
  'warning',
4122
+ 'warning-circle',
3999
4123
  'window-finder-resize-arrow-down',
4000
4124
  'window-finder-resize-arrow-up',
4001
4125
  'window-resize-left',
@@ -4718,14 +4842,20 @@ class FwMenuCloseTriggersDirective {
4718
4842
  constructor() {
4719
4843
  this._isOpen = false;
4720
4844
  }
4721
- outsideClick() {
4722
- if (this._isOpen && this.triggers && this.triggers.length > 0) {
4845
+ outsideClick(event) {
4846
+ const target = event.target;
4847
+ // Check is close under fw-menu-container (overlay)
4848
+ const clickedInsideMenu = target.closest('fw-menu-container') !== null;
4849
+ // Check is clicked on trigger
4850
+ const clickedOnTrigger = target.closest('[cdkMenuTriggerFor]') !== null;
4851
+ if (!clickedInsideMenu && !clickedOnTrigger && this._isOpen && this.triggers?.length > 0) {
4852
+ // Close menu if click outside menu and trigger
4723
4853
  this.triggers.forEach(trigger => {
4724
4854
  trigger.close();
4725
4855
  });
4726
4856
  this._isOpen = false;
4727
4857
  }
4728
- if (this.triggers && this.triggers.length > 0) {
4858
+ if (this.triggers?.length > 0) {
4729
4859
  this.triggers.forEach(trigger => {
4730
4860
  if (trigger.isOpen()) {
4731
4861
  this._isOpen = true;
@@ -4734,19 +4864,19 @@ class FwMenuCloseTriggersDirective {
4734
4864
  }
4735
4865
  }
4736
4866
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwMenuCloseTriggersDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
4737
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FwMenuCloseTriggersDirective, selector: "[fwMenuCloseTriggers]", host: { listeners: { "document:click": "outsideClick()" } }, queries: [{ propertyName: "triggers", predicate: CdkMenuTrigger, descendants: true }], ngImport: i0 }); }
4867
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FwMenuCloseTriggersDirective, selector: "[fwMenuCloseTriggers]", host: { listeners: { "document:click": "outsideClick($event)" } }, queries: [{ propertyName: "triggers", predicate: CdkMenuTrigger, descendants: true }], ngImport: i0 }); }
4738
4868
  }
4739
4869
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwMenuCloseTriggersDirective, decorators: [{
4740
4870
  type: Directive,
4741
4871
  args: [{
4742
4872
  selector: '[fwMenuCloseTriggers]',
4743
4873
  }]
4744
- }], propDecorators: { outsideClick: [{
4745
- type: HostListener,
4746
- args: ['document:click']
4747
- }], triggers: [{
4874
+ }], propDecorators: { triggers: [{
4748
4875
  type: ContentChildren,
4749
4876
  args: [CdkMenuTrigger, { descendants: true }]
4877
+ }], outsideClick: [{
4878
+ type: HostListener,
4879
+ args: ['document:click', ['$event']]
4750
4880
  }] } });
4751
4881
 
4752
4882
  class FwMenuContainerComponent {
@@ -5817,6 +5947,11 @@ class FwMultiSelectMenuComponent {
5817
5947
  // handles all the display side effects of a value change
5818
5948
  updateValue(incomingValues) {
5819
5949
  if (!incomingValues) {
5950
+ this.selectedValues.clear();
5951
+ this.selectedOptions = [];
5952
+ this._value = [];
5953
+ this.change.emit(this._value);
5954
+ this.postSelectSideEffects();
5820
5955
  return;
5821
5956
  }
5822
5957
  this.selectedValues.clear();
@@ -6363,7 +6498,7 @@ class FwPaginatorAdvancedComponent {
6363
6498
  };
6364
6499
  }
6365
6500
  firstPage() {
6366
- const evt = this.buildPageEvent(1);
6501
+ const evt = this.buildPageEvent(0);
6367
6502
  this.pageIndex = 0;
6368
6503
  this.page.emit(evt);
6369
6504
  }
@@ -8695,6 +8830,7 @@ class FwChipListComponent {
8695
8830
  else {
8696
8831
  this.moreText().nativeElement.classList.add('hidden');
8697
8832
  }
8833
+ // eslint-disable-next-line @rx-angular/no-explicit-change-detection-apis
8698
8834
  this.changeDetector.detectChanges();
8699
8835
  }
8700
8836
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwChipListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
@@ -8718,8 +8854,10 @@ class FwTypeaheadComponent {
8718
8854
  this.changeDetector = inject(ChangeDetectorRef);
8719
8855
  this.loading = model(false);
8720
8856
  this.disabled = model(false);
8721
- this.onChange = (_) => { };
8722
- this.onTouched = () => { };
8857
+ this.onChange = (_) => {
8858
+ };
8859
+ this.onTouched = () => {
8860
+ };
8723
8861
  this.value = model([]);
8724
8862
  this.optionsInput = input([], { alias: 'options' });
8725
8863
  this.maxOptionsHeight = input('400px');
@@ -8846,12 +8984,14 @@ class FwTypeaheadComponent {
8846
8984
  const newValue = currentValue.filter(val => val !== chipValue);
8847
8985
  this.value.set(newValue);
8848
8986
  this.focusInput();
8987
+ // eslint-disable-next-line @rx-angular/no-explicit-change-detection-apis
8849
8988
  this.changeDetector.detectChanges();
8850
8989
  }
8851
8990
  focusInput(e = null) {
8852
8991
  e?.preventDefault();
8853
8992
  e?.stopPropagation();
8854
8993
  e?.stopImmediatePropagation();
8994
+ // eslint-disable-next-line @rx-angular/prefer-no-layout-sensitive-apis
8855
8995
  this.inputRef().nativeElement.focus();
8856
8996
  }
8857
8997
  /* eslint-enable */
@@ -8922,22 +9062,29 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
8922
9062
 
8923
9063
  class FwWrappedInputComponent {
8924
9064
  constructor() {
9065
+ this.statusColor = 'slate';
8925
9066
  this.class = true;
8926
9067
  }
8927
9068
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwWrappedInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8928
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwWrappedInputComponent, selector: "fw-wrapped-input", inputs: { title: "title", description: "description", helperText: "helperText", errorText: "errorText" }, host: { properties: { "class.fw-wrapped-input": "this.class" } }, ngImport: i0, template: "<label>\n <fw-form-heading *ngIf=\"title\" [title]=\"title\" [description]=\"description\"></fw-form-heading>\n <ng-content select=\"fw-form-heading\"></ng-content>\n</label>\n<div class=\"input-wrapper\">\n <ng-content\n select=\"fw-button-toggle, fw-date-input, fw-text-input, fw-number-input, fw-phone-input, fw-textarea-input, fw-select, fw-multi-select, fw-checkbox, fw-typeahead\"></ng-content>\n</div>\n<p class=\"vision-p4 helper-text\" *ngIf=\"!!helperText && !errorText\">{{ helperText }}</p>\n<p class=\"vision-p4 error-text\" *ngIf=\"!!errorText\">{{ errorText }}</p>\n", styles: [".fw-wrapped-input{display:flex;flex-direction:column;flex:1}.fw-wrapped-input .input-wrapper{max-width:100%;display:flex;flex-direction:row;flex:1;gap:16px}.fw-wrapped-input .input-wrapper>*{flex:1}.fw-wrapped-input .helper-text,.fw-wrapped-input .error-text{margin-top:4px;color:var(--typography-light);line-height:13px;margin-left:6px;margin-bottom:0;text-align:left}.fw-wrapped-input .error-text{color:var(--red-base)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwFormHeadingComponent, selector: "fw-form-heading", inputs: ["title", "description", "status"] }], encapsulation: i0.ViewEncapsulation.None }); }
9069
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FwWrappedInputComponent, selector: "fw-wrapped-input", inputs: { title: "title", status: "status", statusColor: "statusColor", description: "description", helperText: "helperText", errorText: "errorText", required: "required" }, host: { properties: { "class.fw-wrapped-input": "this.class" } }, ngImport: i0, template: "<label>\n <fw-form-heading\n *ngIf=\"title\" [title]=\"title\" [description]=\"description\"\n [required]=\"required\" [status]=\"status\" [statusColor]=\"statusColor\">\n </fw-form-heading>\n <ng-content select=\"fw-form-heading\"></ng-content>\n</label>\n<div class=\"input-wrapper\">\n <ng-content\n select=\"fw-button-toggle, fw-date-input, fw-text-input, fw-number-input, fw-phone-input, fw-textarea-input, fw-select, fw-multi-select, fw-checkbox, fw-typeahead\"></ng-content>\n</div>\n<p class=\"vision-p4 helper-text\" *ngIf=\"!!helperText && !errorText\">{{ helperText }}</p>\n<p class=\"vision-p4 error-text\" *ngIf=\"!!errorText\">{{ errorText }}</p>\n", styles: [".fw-wrapped-input{display:flex;flex-direction:column;flex:1}.fw-wrapped-input .input-wrapper{max-width:100%;display:flex;flex-direction:row;flex:1;gap:16px}.fw-wrapped-input .input-wrapper>*{flex:1}.fw-wrapped-input .helper-text,.fw-wrapped-input .error-text{margin-top:4px;color:var(--typography-light);line-height:13px;margin-left:6px;margin-bottom:0;text-align:left}.fw-wrapped-input .error-text{color:var(--red-base)}\n"], dependencies: [{ kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: FwFormHeadingComponent, selector: "fw-form-heading", inputs: ["title", "description", "required", "status", "statusColor"] }], encapsulation: i0.ViewEncapsulation.None }); }
8929
9070
  }
8930
9071
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FwWrappedInputComponent, decorators: [{
8931
9072
  type: Component,
8932
- args: [{ selector: 'fw-wrapped-input', encapsulation: ViewEncapsulation.None, template: "<label>\n <fw-form-heading *ngIf=\"title\" [title]=\"title\" [description]=\"description\"></fw-form-heading>\n <ng-content select=\"fw-form-heading\"></ng-content>\n</label>\n<div class=\"input-wrapper\">\n <ng-content\n select=\"fw-button-toggle, fw-date-input, fw-text-input, fw-number-input, fw-phone-input, fw-textarea-input, fw-select, fw-multi-select, fw-checkbox, fw-typeahead\"></ng-content>\n</div>\n<p class=\"vision-p4 helper-text\" *ngIf=\"!!helperText && !errorText\">{{ helperText }}</p>\n<p class=\"vision-p4 error-text\" *ngIf=\"!!errorText\">{{ errorText }}</p>\n", styles: [".fw-wrapped-input{display:flex;flex-direction:column;flex:1}.fw-wrapped-input .input-wrapper{max-width:100%;display:flex;flex-direction:row;flex:1;gap:16px}.fw-wrapped-input .input-wrapper>*{flex:1}.fw-wrapped-input .helper-text,.fw-wrapped-input .error-text{margin-top:4px;color:var(--typography-light);line-height:13px;margin-left:6px;margin-bottom:0;text-align:left}.fw-wrapped-input .error-text{color:var(--red-base)}\n"] }]
9073
+ args: [{ selector: 'fw-wrapped-input', encapsulation: ViewEncapsulation.None, template: "<label>\n <fw-form-heading\n *ngIf=\"title\" [title]=\"title\" [description]=\"description\"\n [required]=\"required\" [status]=\"status\" [statusColor]=\"statusColor\">\n </fw-form-heading>\n <ng-content select=\"fw-form-heading\"></ng-content>\n</label>\n<div class=\"input-wrapper\">\n <ng-content\n select=\"fw-button-toggle, fw-date-input, fw-text-input, fw-number-input, fw-phone-input, fw-textarea-input, fw-select, fw-multi-select, fw-checkbox, fw-typeahead\"></ng-content>\n</div>\n<p class=\"vision-p4 helper-text\" *ngIf=\"!!helperText && !errorText\">{{ helperText }}</p>\n<p class=\"vision-p4 error-text\" *ngIf=\"!!errorText\">{{ errorText }}</p>\n", styles: [".fw-wrapped-input{display:flex;flex-direction:column;flex:1}.fw-wrapped-input .input-wrapper{max-width:100%;display:flex;flex-direction:row;flex:1;gap:16px}.fw-wrapped-input .input-wrapper>*{flex:1}.fw-wrapped-input .helper-text,.fw-wrapped-input .error-text{margin-top:4px;color:var(--typography-light);line-height:13px;margin-left:6px;margin-bottom:0;text-align:left}.fw-wrapped-input .error-text{color:var(--red-base)}\n"] }]
8933
9074
  }], propDecorators: { title: [{
8934
9075
  type: Input
9076
+ }], status: [{
9077
+ type: Input
9078
+ }], statusColor: [{
9079
+ type: Input
8935
9080
  }], description: [{
8936
9081
  type: Input
8937
9082
  }], helperText: [{
8938
9083
  type: Input
8939
9084
  }], errorText: [{
8940
9085
  type: Input
9086
+ }], required: [{
9087
+ type: Input
8941
9088
  }], class: [{
8942
9089
  type: HostBinding,
8943
9090
  args: ['class.fw-wrapped-input']