@flywheel-io/vision 21.8.1-branch.vision-beta-publishing.8a3e1996.0 → 21.8.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.
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { NgClass, CommonModule,
|
|
1
|
+
import { NgClass, CommonModule, NgTemplateOutlet, NgStyle, DecimalPipe, SlicePipe, Location } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { input, computed, ChangeDetectionStrategy, Component, output, NgModule, HostBinding, model, signal, effect, HostListener,
|
|
3
|
+
import { input, computed, ChangeDetectionStrategy, Component, output, NgModule, HostBinding, model, signal, effect, HostListener, inject, ElementRef, Input, ViewChild, ViewEncapsulation, contentChildren, EventEmitter, Output, ViewContainerRef, Directive, viewChild, ChangeDetectorRef, ContentChildren, forwardRef, DestroyRef, ContentChild, contentChild, NgZone, untracked, Injectable, DOCUMENT, numberAttribute, viewChildren, linkedSignal, ViewChildren, TemplateRef } from '@angular/core';
|
|
4
4
|
import { BehaviorSubject, debounce, timer, distinctUntilChanged, min, Subject, takeUntil, of, Subscription, combineLatest, tap, switchMap, map } from 'rxjs';
|
|
5
5
|
import * as i1$1 from '@angular/cdk/overlay';
|
|
6
6
|
import { CdkConnectedOverlay, OverlayModule, Overlay, CdkOverlayOrigin, OverlayContainer, STANDARD_DROPDOWN_BELOW_POSITIONS } from '@angular/cdk/overlay';
|
|
@@ -407,6 +407,147 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
407
407
|
}]
|
|
408
408
|
}] });
|
|
409
409
|
|
|
410
|
+
/**
|
|
411
|
+
* Component for a circular progress spinner supporting determinate and indeterminate modes
|
|
412
|
+
* @see [Vision storybook](https://cdn.flywheel.io/docs/vision/master/?path=/docs/components-progress-spinner--docs)
|
|
413
|
+
*/
|
|
414
|
+
class FwProgressSpinnerComponent {
|
|
415
|
+
constructor() {
|
|
416
|
+
this._elementRef = inject(ElementRef);
|
|
417
|
+
/** Mode of the progress spinner. **/
|
|
418
|
+
this.mode = input('indeterminate', ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
|
|
419
|
+
/** Size of the progress spinner. **/
|
|
420
|
+
this.size = input('medium', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
421
|
+
/** Color of the progress spinner. **/
|
|
422
|
+
this.color = input('primary', ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
|
|
423
|
+
/** Whether to show the value percentage label on the progress spinner. **/
|
|
424
|
+
this.showValue = input(false, ...(ngDevMode ? [{ debugName: "showValue" }] : /* istanbul ignore next */ []));
|
|
425
|
+
this._value = 0;
|
|
426
|
+
this._diameter = 20;
|
|
427
|
+
this._strokeWidth = 3;
|
|
428
|
+
}
|
|
429
|
+
/** Value of the progress spinner. Defaults to zero. Mirrored to aria-valuenow. **/
|
|
430
|
+
get value() {
|
|
431
|
+
// return this.mode === 'determinate' ? this._value : 0;
|
|
432
|
+
return this._value;
|
|
433
|
+
}
|
|
434
|
+
set value(v) {
|
|
435
|
+
this._value = Math.max(0, Math.min(100, v || 0));
|
|
436
|
+
}
|
|
437
|
+
/** The diameter of the progress spinner (will set width and height of svg). */
|
|
438
|
+
get diameter() {
|
|
439
|
+
switch (this.size()) {
|
|
440
|
+
case 'small':
|
|
441
|
+
this._diameter = 20;
|
|
442
|
+
this._strokeWidth = 3;
|
|
443
|
+
break;
|
|
444
|
+
case 'medium':
|
|
445
|
+
this._diameter = 36;
|
|
446
|
+
this._strokeWidth = 4;
|
|
447
|
+
break;
|
|
448
|
+
}
|
|
449
|
+
return this._diameter;
|
|
450
|
+
}
|
|
451
|
+
/** The radius of the spinner, adjusted for stroke width. */
|
|
452
|
+
_circleRadius() {
|
|
453
|
+
return (this.diameter - 10) / 2;
|
|
454
|
+
}
|
|
455
|
+
/** The view box of the spinner's svg element. */
|
|
456
|
+
_viewBox() {
|
|
457
|
+
const viewBox = this._circleRadius() * 2 + this._strokeWidth;
|
|
458
|
+
return `0 0 ${viewBox} ${viewBox}`;
|
|
459
|
+
}
|
|
460
|
+
/** The stroke circumference of the svg circle. */
|
|
461
|
+
_strokeCircumference() {
|
|
462
|
+
return 2 * Math.PI * this._circleRadius();
|
|
463
|
+
}
|
|
464
|
+
/** The dash offset of the svg circle. */
|
|
465
|
+
_strokeDashOffset() {
|
|
466
|
+
if (this.mode() === 'determinate') {
|
|
467
|
+
return (this._strokeCircumference() * (100 - this._value)) / 100;
|
|
468
|
+
}
|
|
469
|
+
return null;
|
|
470
|
+
}
|
|
471
|
+
/** Stroke width of the circle in percent. */
|
|
472
|
+
_circleStrokeWidth() {
|
|
473
|
+
return (this._strokeWidth / this.diameter) * 100;
|
|
474
|
+
}
|
|
475
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: FwProgressSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
476
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: FwProgressSpinnerComponent, isStandalone: true, selector: "fw-progress-spinner", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, showValue: { classPropertyName: "showValue", publicName: "showValue", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "progressbar", "tabindex": "-1" }, properties: { "class.progress-indeterminate": "mode() === \"indeterminate\"", "class.progress-small": "size() === \"small\"", "class.progress-show-value": "this.showValue", "style.width.px": "diameter", "style.height.px": "diameter", "attr.aria-valuemin": "0", "attr.aria-valuemax": "100", "attr.aria-valuenow": "mode() === \"determinate\" ? value : null", "attr.mode": "mode()" }, classAttribute: "fw-progress-spinner" }, viewQueries: [{ propertyName: "_determinateCircle", first: true, predicate: ["determinateSpinner"], descendants: true }], ngImport: i0, template: "<ng-template #circle>\n <svg\n [attr.viewBox]=\"_viewBox()\"\n [ngClass]=\"['progress-indeterminate-circle-graphic', color()]\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n >\n <circle\n [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"progress-indeterminate-track\"\n cx=\"50%\"\n cy=\"50%\"\n />\n <circle\n [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeCircumference() / 2\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n cx=\"50%\"\n cy=\"50%\"\n />\n </svg>\n</ng-template>\n\n<div class=\"progress-determinate-container\" aria-hidden=\"true\" #determinateSpinner>\n <svg\n [attr.viewBox]=\"_viewBox()\"\n [ngClass]=\"['progress-determinate-circle-graphic', color()]\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n >\n <circle\n [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"progress-determinate-track\"\n cx=\"50%\"\n cy=\"50%\"\n />\n <circle\n [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"progress-determinate-circle\"\n cx=\"50%\"\n cy=\"50%\"\n />\n </svg>\n</div>\n<div class=\"progress-indeterminate-container\" aria-hidden=\"true\">\n <div class=\"progress-spinner-layer\">\n <div class=\"progress-circle-clipper progress-circle-left\">\n <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\n </div>\n <div class=\"progress-circle-clipper progress-circle-right\">\n <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\n </div>\n </div>\n</div>\n@if (showValue()) {\n <p [ngClass]=\"['progress-label', 'size-' + size(), 'mode-' + mode()]\">{{ value }}%</p>\n}\n", styles: [".fw-progress-spinner{display:block;overflow:hidden;line-height:0;position:relative;direction:ltr;transition:opacity .25s cubic-bezier(.4,0,.6,1)}.fw-progress-spinner.progress-small.progress-show-value{overflow:visible}.progress-determinate-container,.progress-indeterminate-circle-graphic,.progress-indeterminate-container,.progress-spinner-layer{position:absolute;width:100%;height:100%}.progress-determinate-container{transform:rotate(-90deg)}.progress-indeterminate .progress-determinate-container{opacity:0}.progress-indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.progress-indeterminate .progress-indeterminate-container{opacity:1;animation:progress-container-rotate 1.5682353s linear infinite}.progress-determinate-circle-graphic,.progress-indeterminate-circle-graphic{fill:transparent;stroke:var(--primary-base);stroke-linecap:round}.progress-determinate-circle-graphic.secondary,.progress-indeterminate-circle-graphic.secondary{stroke:var(--secondary-base)}.progress-determinate-circle-graphic.red,.progress-indeterminate-circle-graphic.red{stroke:var(--red-base)}.progress-determinate-circle-graphic.slate,.progress-indeterminate-circle-graphic.slate{stroke:var(--slate-base)}.progress-determinate-circle-graphic.orange,.progress-indeterminate-circle-graphic.orange{stroke:var(--orange-base)}.progress-determinate-circle-graphic.green,.progress-indeterminate-circle-graphic.green{stroke:var(--green-base)}.progress-determinate-circle{transition:stroke-dashoffset .5s cubic-bezier(0,0,.2,1)}.progress-determinate-track,.progress-indeterminate-track{fill:transparent;stroke:var(--separations-divider);stroke-dasharray:100px!important;stroke-dashoffset:0!important;transition:none}.progress-gap-patch .progress-indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.progress-circle-clipper .progress-indeterminate-circle-graphic{width:200%}.progress-circle-right .progress-indeterminate-circle-graphic{left:-100%}.progress-indeterminate .progress-circle-left .progress-indeterminate-circle-graphic{animation:progress-left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.progress-indeterminate .progress-circle-right .progress-indeterminate-circle-graphic{animation:progress-right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.progress-circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.progress-indeterminate .progress-spinner-layer{animation:progress-spinner-layer-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both}.progress-label{margin:0;font-size:8px;line-height:120%;font-weight:500;width:24px;color:var(--typography-muted);position:absolute;top:calc(50% - 4px);right:calc(50% - 12px);text-align:center}.progress-label.size-small{right:-24px}.progress-label.size-large{font-size:12px;top:calc(50% - 6px)}.progress-label.size-extra-large{font-size:16px;width:40px;top:calc(50% - 8px);right:calc(50% - 20px)}@keyframes progress-container-rotate{to{transform:rotate(360deg)}}@keyframes progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@keyframes progress-left-spin{0%{transform:rotate(260deg)}50%{transform:rotate(130deg)}to{transform:rotate(260deg)}}@keyframes progress-right-spin{0%{transform:rotate(-260deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-260deg)}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
477
|
+
}
|
|
478
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: FwProgressSpinnerComponent, decorators: [{
|
|
479
|
+
type: Component,
|
|
480
|
+
args: [{ selector: 'fw-progress-spinner', host: {
|
|
481
|
+
role: 'progressbar',
|
|
482
|
+
class: 'fw-progress-spinner',
|
|
483
|
+
tabindex: '-1',
|
|
484
|
+
'[class.progress-indeterminate]': 'mode() === "indeterminate"',
|
|
485
|
+
'[class.progress-small]': 'size() === "small"',
|
|
486
|
+
'[class.progress-show-value]': 'this.showValue',
|
|
487
|
+
'[style.width.px]': 'diameter',
|
|
488
|
+
'[style.height.px]': 'diameter',
|
|
489
|
+
// '[style.--progress-size]': 'diameter + "px"',
|
|
490
|
+
// '[style.--progress-active-indicator-width]': 'diameter + "px"',
|
|
491
|
+
'[attr.aria-valuemin]': '0',
|
|
492
|
+
'[attr.aria-valuemax]': '100',
|
|
493
|
+
'[attr.aria-valuenow]': 'mode() === "determinate" ? value : null',
|
|
494
|
+
'[attr.mode]': 'mode()',
|
|
495
|
+
}, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [NgClass, NgTemplateOutlet], template: "<ng-template #circle>\n <svg\n [attr.viewBox]=\"_viewBox()\"\n [ngClass]=\"['progress-indeterminate-circle-graphic', color()]\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n >\n <circle\n [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"progress-indeterminate-track\"\n cx=\"50%\"\n cy=\"50%\"\n />\n <circle\n [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeCircumference() / 2\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n cx=\"50%\"\n cy=\"50%\"\n />\n </svg>\n</ng-template>\n\n<div class=\"progress-determinate-container\" aria-hidden=\"true\" #determinateSpinner>\n <svg\n [attr.viewBox]=\"_viewBox()\"\n [ngClass]=\"['progress-determinate-circle-graphic', color()]\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n >\n <circle\n [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"progress-determinate-track\"\n cx=\"50%\"\n cy=\"50%\"\n />\n <circle\n [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"progress-determinate-circle\"\n cx=\"50%\"\n cy=\"50%\"\n />\n </svg>\n</div>\n<div class=\"progress-indeterminate-container\" aria-hidden=\"true\">\n <div class=\"progress-spinner-layer\">\n <div class=\"progress-circle-clipper progress-circle-left\">\n <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\n </div>\n <div class=\"progress-circle-clipper progress-circle-right\">\n <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\n </div>\n </div>\n</div>\n@if (showValue()) {\n <p [ngClass]=\"['progress-label', 'size-' + size(), 'mode-' + mode()]\">{{ value }}%</p>\n}\n", styles: [".fw-progress-spinner{display:block;overflow:hidden;line-height:0;position:relative;direction:ltr;transition:opacity .25s cubic-bezier(.4,0,.6,1)}.fw-progress-spinner.progress-small.progress-show-value{overflow:visible}.progress-determinate-container,.progress-indeterminate-circle-graphic,.progress-indeterminate-container,.progress-spinner-layer{position:absolute;width:100%;height:100%}.progress-determinate-container{transform:rotate(-90deg)}.progress-indeterminate .progress-determinate-container{opacity:0}.progress-indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.progress-indeterminate .progress-indeterminate-container{opacity:1;animation:progress-container-rotate 1.5682353s linear infinite}.progress-determinate-circle-graphic,.progress-indeterminate-circle-graphic{fill:transparent;stroke:var(--primary-base);stroke-linecap:round}.progress-determinate-circle-graphic.secondary,.progress-indeterminate-circle-graphic.secondary{stroke:var(--secondary-base)}.progress-determinate-circle-graphic.red,.progress-indeterminate-circle-graphic.red{stroke:var(--red-base)}.progress-determinate-circle-graphic.slate,.progress-indeterminate-circle-graphic.slate{stroke:var(--slate-base)}.progress-determinate-circle-graphic.orange,.progress-indeterminate-circle-graphic.orange{stroke:var(--orange-base)}.progress-determinate-circle-graphic.green,.progress-indeterminate-circle-graphic.green{stroke:var(--green-base)}.progress-determinate-circle{transition:stroke-dashoffset .5s cubic-bezier(0,0,.2,1)}.progress-determinate-track,.progress-indeterminate-track{fill:transparent;stroke:var(--separations-divider);stroke-dasharray:100px!important;stroke-dashoffset:0!important;transition:none}.progress-gap-patch .progress-indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.progress-circle-clipper .progress-indeterminate-circle-graphic{width:200%}.progress-circle-right .progress-indeterminate-circle-graphic{left:-100%}.progress-indeterminate .progress-circle-left .progress-indeterminate-circle-graphic{animation:progress-left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.progress-indeterminate .progress-circle-right .progress-indeterminate-circle-graphic{animation:progress-right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.progress-circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.progress-indeterminate .progress-spinner-layer{animation:progress-spinner-layer-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both}.progress-label{margin:0;font-size:8px;line-height:120%;font-weight:500;width:24px;color:var(--typography-muted);position:absolute;top:calc(50% - 4px);right:calc(50% - 12px);text-align:center}.progress-label.size-small{right:-24px}.progress-label.size-large{font-size:12px;top:calc(50% - 6px)}.progress-label.size-extra-large{font-size:16px;width:40px;top:calc(50% - 8px);right:calc(50% - 20px)}@keyframes progress-container-rotate{to{transform:rotate(360deg)}}@keyframes progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@keyframes progress-left-spin{0%{transform:rotate(260deg)}50%{transform:rotate(130deg)}to{transform:rotate(260deg)}}@keyframes progress-right-spin{0%{transform:rotate(-260deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-260deg)}}\n"] }]
|
|
496
|
+
}], propDecorators: { _determinateCircle: [{
|
|
497
|
+
type: ViewChild,
|
|
498
|
+
args: ['determinateSpinner']
|
|
499
|
+
}], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], showValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "showValue", required: false }] }], value: [{
|
|
500
|
+
type: Input
|
|
501
|
+
}] } });
|
|
502
|
+
|
|
503
|
+
/**
|
|
504
|
+
* Component for a styled action button with configurable color, size, variant, and optional icons
|
|
505
|
+
* @see [Vision storybook](https://cdn.flywheel.io/docs/vision/master/?path=/docs/components-button--docs)
|
|
506
|
+
*/
|
|
507
|
+
class FwButtonComponent {
|
|
508
|
+
constructor() {
|
|
509
|
+
this.color = input('primary', ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
|
|
510
|
+
this.size = input('medium', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
511
|
+
this.variant = input('solid', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
512
|
+
this.type = input('button', ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
|
|
513
|
+
this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
514
|
+
this.fullWidth = input(false, ...(ngDevMode ? [{ debugName: "fullWidth" }] : /* istanbul ignore next */ []));
|
|
515
|
+
this.leftIcon = input(undefined, ...(ngDevMode ? [{ debugName: "leftIcon" }] : /* istanbul ignore next */ []));
|
|
516
|
+
this.rightIcon = input(undefined, ...(ngDevMode ? [{ debugName: "rightIcon" }] : /* istanbul ignore next */ []));
|
|
517
|
+
/** When true, marks this button as the initial focus target when it's the first-rendered child of a `cdkTrapFocus`/CDK Dialog focus trap. */
|
|
518
|
+
this.focusInitial = input(false, ...(ngDevMode ? [{ debugName: "focusInitial" }] : /* istanbul ignore next */ []));
|
|
519
|
+
}
|
|
520
|
+
get classes() {
|
|
521
|
+
return ['fw-button', this.size(), this.fullWidth() ? 'full-width' : null].filter(Boolean).join(' ');
|
|
522
|
+
}
|
|
523
|
+
getMappedColor() {
|
|
524
|
+
const color = this.color();
|
|
525
|
+
switch (color) {
|
|
526
|
+
case 'primary':
|
|
527
|
+
case 'secondary':
|
|
528
|
+
case 'slate':
|
|
529
|
+
return color;
|
|
530
|
+
case 'danger':
|
|
531
|
+
return 'red';
|
|
532
|
+
case 'warning':
|
|
533
|
+
return 'orange';
|
|
534
|
+
case 'success':
|
|
535
|
+
return 'green';
|
|
536
|
+
default:
|
|
537
|
+
return undefined;
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: FwButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
541
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: FwButtonComponent, isStandalone: true, selector: "fw-button", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, leftIcon: { classPropertyName: "leftIcon", publicName: "leftIcon", isSignal: true, isRequired: false, transformFunction: null }, rightIcon: { classPropertyName: "rightIcon", publicName: "rightIcon", isSignal: true, isRequired: false, transformFunction: null }, focusInitial: { classPropertyName: "focusInitial", publicName: "focusInitial", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<button\n [type]=\"type()\"\n [class]=\"[color() + '-' + variant(), size()]\"\n [disabled]=\"disabled()\"\n [attr.cdkFocusInitial]=\"focusInitial() ? '' : null\"\n>\n @if (variant() === 'progress') {\n <fw-progress-spinner size=\"small\" [color]=\"getMappedColor()\"></fw-progress-spinner>\n }\n @if (!!leftIcon() && variant() !== 'progress') {\n <fw-icon>{{ leftIcon() }}</fw-icon>\n }\n @if (!leftIcon()) {\n <div class=\"spacer\"></div>\n }\n <span><ng-content></ng-content></span>\n @if (!!rightIcon()) {\n <fw-icon>{{ rightIcon() }}</fw-icon>\n }\n</button>\n", styles: [":host.full-width{flex:1;display:flex}:host.full-width button{flex:1}button{cursor:pointer;font-family:Inter,sans-serif;font-size:14px;line-height:14px;font-style:normal;font-weight:500;display:inline-flex;height:36px;padding:12px;justify-content:center;align-items:center;gap:8px;flex-shrink:0;border:1px solid transparent;border-radius:8px}button .spacer{height:18px;width:0;margin-left:-8px}button fw-icon{height:18px;font-size:20px;width:20px;min-width:20px}button span{white-space:nowrap}button:disabled{opacity:.4;cursor:not-allowed}.large{font-size:16px;height:40px;padding:12px 14px}.large fw-icon{font-size:24px;width:24px;min-width:24px}.small{height:30px;padding:12px 10px}.primary-solid{background-color:var(--primary-base);color:var(--typography-contrast)}.primary-solid:hover{background-color:var(--primary-medium)}.primary-solid:active{background-color:var(--primary-dark)}.primary-ghost{background-color:transparent;color:var(--primary-base)}.primary-ghost:hover{background-color:var(--primary-hover)}.primary-ghost:active{background-color:var(--primary-focus)}.primary-outline{background-color:transparent;color:var(--primary-base)}.primary-outline:hover{background-color:var(--primary-hover)}.primary-outline:active{background-color:var(--primary-focus)}.primary-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.primary-progress{background-color:transparent;color:var(--primary-base)}.primary-progress:hover{background-color:var(--primary-hover)}.primary-progress:active{background-color:var(--primary-focus)}.primary-progress{background-color:var(--primary-hover);color:var(--primary-base)}.primary-progress span{opacity:.6}.primary-progress:disabled{opacity:.6;cursor:not-allowed}.secondary-solid{background-color:var(--secondary-base);color:var(--typography-contrast)}.secondary-solid:hover{background-color:var(--secondary-medium)}.secondary-solid:active{background-color:var(--secondary-dark)}.secondary-ghost{background-color:transparent;color:var(--secondary-base)}.secondary-ghost:hover{background-color:var(--secondary-hover)}.secondary-ghost:active{background-color:var(--secondary-focus)}.secondary-outline{background-color:transparent;color:var(--secondary-base)}.secondary-outline:hover{background-color:var(--secondary-hover)}.secondary-outline:active{background-color:var(--secondary-focus)}.secondary-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.secondary-progress{background-color:transparent;color:var(--secondary-base)}.secondary-progress:hover{background-color:var(--secondary-hover)}.secondary-progress:active{background-color:var(--secondary-focus)}.secondary-progress{background-color:var(--secondary-hover);color:var(--secondary-base)}.secondary-progress span{opacity:.6}.secondary-progress:disabled{opacity:.6;cursor:not-allowed}.slate-solid{background-color:var(--slate-base);color:var(--typography-contrast)}.slate-solid:hover{background-color:var(--slate-medium)}.slate-solid:active{background-color:var(--slate-dark)}.slate-ghost{background-color:transparent;color:var(--slate-base)}.slate-ghost:hover{background-color:var(--slate-hover)}.slate-ghost:active{background-color:var(--slate-focus)}.slate-outline{background-color:transparent;color:var(--slate-base)}.slate-outline:hover{background-color:var(--slate-hover)}.slate-outline:active{background-color:var(--slate-focus)}.slate-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.slate-progress{background-color:transparent;color:var(--slate-base)}.slate-progress:hover{background-color:var(--slate-hover)}.slate-progress:active{background-color:var(--slate-focus)}.slate-progress{background-color:var(--slate-hover);color:var(--slate-base)}.slate-progress span{opacity:.6}.slate-progress:disabled{opacity:.6;cursor:not-allowed}.danger-solid{background-color:var(--red-base);color:var(--typography-contrast)}.danger-solid:hover{background-color:var(--red-medium)}.danger-solid:active{background-color:var(--red-dark)}.danger-ghost{background-color:transparent;color:var(--red-base)}.danger-ghost:hover{background-color:var(--red-hover)}.danger-ghost:active{background-color:var(--red-focus)}.danger-outline{background-color:transparent;color:var(--red-base)}.danger-outline:hover{background-color:var(--red-hover)}.danger-outline:active{background-color:var(--red-focus)}.danger-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.danger-progress{background-color:transparent;color:var(--red-base)}.danger-progress:hover{background-color:var(--red-hover)}.danger-progress:active{background-color:var(--red-focus)}.danger-progress{background-color:var(--red-hover);color:var(--red-base)}.danger-progress span{opacity:.6}.danger-progress:disabled{opacity:.6;cursor:not-allowed}.skeleton-solid{background-color:var(---base);color:var(--typography-contrast)}.skeleton-solid:hover{background-color:var(---medium)}.skeleton-solid:active{background-color:var(---dark)}.skeleton-ghost{background-color:transparent;color:var(---base)}.skeleton-ghost:hover{background-color:var(---hover)}.skeleton-ghost:active{background-color:var(---focus)}.skeleton-outline{background-color:transparent;color:var(---base)}.skeleton-outline:hover{background-color:var(---hover)}.skeleton-outline:active{background-color:var(---focus)}.skeleton-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.skeleton-progress{background-color:transparent;color:var(---base)}.skeleton-progress:hover{background-color:var(---hover)}.skeleton-progress:active{background-color:var(---focus)}.skeleton-progress{background-color:var(---hover);color:var(---base)}.skeleton-progress span{opacity:.6}.skeleton-progress:disabled{opacity:.6;cursor:not-allowed}.warning-solid{background-color:var(--orange-base);color:var(--typography-contrast)}.warning-solid:hover{background-color:var(--orange-medium)}.warning-solid:active{background-color:var(--orange-dark)}.warning-ghost{background-color:transparent;color:var(--orange-base)}.warning-ghost:hover{background-color:var(--orange-hover)}.warning-ghost:active{background-color:var(--orange-focus)}.warning-outline{background-color:transparent;color:var(--orange-base)}.warning-outline:hover{background-color:var(--orange-hover)}.warning-outline:active{background-color:var(--orange-focus)}.warning-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.warning-progress{background-color:transparent;color:var(--orange-base)}.warning-progress:hover{background-color:var(--orange-hover)}.warning-progress:active{background-color:var(--orange-focus)}.warning-progress{background-color:var(--orange-hover);color:var(--orange-base)}.warning-progress span{opacity:.6}.warning-progress:disabled{opacity:.6;cursor:not-allowed}.success-solid{background-color:var(--green-base);color:var(--typography-contrast)}.success-solid:hover{background-color:var(--green-medium)}.success-solid:active{background-color:var(--green-dark)}.success-ghost{background-color:transparent;color:var(--green-base)}.success-ghost:hover{background-color:var(--green-hover)}.success-ghost:active{background-color:var(--green-focus)}.success-outline{background-color:transparent;color:var(--green-base)}.success-outline:hover{background-color:var(--green-hover)}.success-outline:active{background-color:var(--green-focus)}.success-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.success-progress{background-color:transparent;color:var(--green-base)}.success-progress:hover{background-color:var(--green-hover)}.success-progress:active{background-color:var(--green-focus)}.success-progress{background-color:var(--green-hover);color:var(--green-base)}.success-progress span{opacity:.6}.success-progress:disabled{opacity:.6;cursor:not-allowed}\n"], dependencies: [{ kind: "component", type: FwProgressSpinnerComponent, selector: "fw-progress-spinner", inputs: ["mode", "size", "color", "showValue", "value"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon", inputs: ["ariaLabel", "size", "color"] }] }); }
|
|
542
|
+
}
|
|
543
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: FwButtonComponent, decorators: [{
|
|
544
|
+
type: Component,
|
|
545
|
+
args: [{ selector: 'fw-button', imports: [FwProgressSpinnerComponent, FwIconComponent], template: "<button\n [type]=\"type()\"\n [class]=\"[color() + '-' + variant(), size()]\"\n [disabled]=\"disabled()\"\n [attr.cdkFocusInitial]=\"focusInitial() ? '' : null\"\n>\n @if (variant() === 'progress') {\n <fw-progress-spinner size=\"small\" [color]=\"getMappedColor()\"></fw-progress-spinner>\n }\n @if (!!leftIcon() && variant() !== 'progress') {\n <fw-icon>{{ leftIcon() }}</fw-icon>\n }\n @if (!leftIcon()) {\n <div class=\"spacer\"></div>\n }\n <span><ng-content></ng-content></span>\n @if (!!rightIcon()) {\n <fw-icon>{{ rightIcon() }}</fw-icon>\n }\n</button>\n", styles: [":host.full-width{flex:1;display:flex}:host.full-width button{flex:1}button{cursor:pointer;font-family:Inter,sans-serif;font-size:14px;line-height:14px;font-style:normal;font-weight:500;display:inline-flex;height:36px;padding:12px;justify-content:center;align-items:center;gap:8px;flex-shrink:0;border:1px solid transparent;border-radius:8px}button .spacer{height:18px;width:0;margin-left:-8px}button fw-icon{height:18px;font-size:20px;width:20px;min-width:20px}button span{white-space:nowrap}button:disabled{opacity:.4;cursor:not-allowed}.large{font-size:16px;height:40px;padding:12px 14px}.large fw-icon{font-size:24px;width:24px;min-width:24px}.small{height:30px;padding:12px 10px}.primary-solid{background-color:var(--primary-base);color:var(--typography-contrast)}.primary-solid:hover{background-color:var(--primary-medium)}.primary-solid:active{background-color:var(--primary-dark)}.primary-ghost{background-color:transparent;color:var(--primary-base)}.primary-ghost:hover{background-color:var(--primary-hover)}.primary-ghost:active{background-color:var(--primary-focus)}.primary-outline{background-color:transparent;color:var(--primary-base)}.primary-outline:hover{background-color:var(--primary-hover)}.primary-outline:active{background-color:var(--primary-focus)}.primary-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.primary-progress{background-color:transparent;color:var(--primary-base)}.primary-progress:hover{background-color:var(--primary-hover)}.primary-progress:active{background-color:var(--primary-focus)}.primary-progress{background-color:var(--primary-hover);color:var(--primary-base)}.primary-progress span{opacity:.6}.primary-progress:disabled{opacity:.6;cursor:not-allowed}.secondary-solid{background-color:var(--secondary-base);color:var(--typography-contrast)}.secondary-solid:hover{background-color:var(--secondary-medium)}.secondary-solid:active{background-color:var(--secondary-dark)}.secondary-ghost{background-color:transparent;color:var(--secondary-base)}.secondary-ghost:hover{background-color:var(--secondary-hover)}.secondary-ghost:active{background-color:var(--secondary-focus)}.secondary-outline{background-color:transparent;color:var(--secondary-base)}.secondary-outline:hover{background-color:var(--secondary-hover)}.secondary-outline:active{background-color:var(--secondary-focus)}.secondary-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.secondary-progress{background-color:transparent;color:var(--secondary-base)}.secondary-progress:hover{background-color:var(--secondary-hover)}.secondary-progress:active{background-color:var(--secondary-focus)}.secondary-progress{background-color:var(--secondary-hover);color:var(--secondary-base)}.secondary-progress span{opacity:.6}.secondary-progress:disabled{opacity:.6;cursor:not-allowed}.slate-solid{background-color:var(--slate-base);color:var(--typography-contrast)}.slate-solid:hover{background-color:var(--slate-medium)}.slate-solid:active{background-color:var(--slate-dark)}.slate-ghost{background-color:transparent;color:var(--slate-base)}.slate-ghost:hover{background-color:var(--slate-hover)}.slate-ghost:active{background-color:var(--slate-focus)}.slate-outline{background-color:transparent;color:var(--slate-base)}.slate-outline:hover{background-color:var(--slate-hover)}.slate-outline:active{background-color:var(--slate-focus)}.slate-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.slate-progress{background-color:transparent;color:var(--slate-base)}.slate-progress:hover{background-color:var(--slate-hover)}.slate-progress:active{background-color:var(--slate-focus)}.slate-progress{background-color:var(--slate-hover);color:var(--slate-base)}.slate-progress span{opacity:.6}.slate-progress:disabled{opacity:.6;cursor:not-allowed}.danger-solid{background-color:var(--red-base);color:var(--typography-contrast)}.danger-solid:hover{background-color:var(--red-medium)}.danger-solid:active{background-color:var(--red-dark)}.danger-ghost{background-color:transparent;color:var(--red-base)}.danger-ghost:hover{background-color:var(--red-hover)}.danger-ghost:active{background-color:var(--red-focus)}.danger-outline{background-color:transparent;color:var(--red-base)}.danger-outline:hover{background-color:var(--red-hover)}.danger-outline:active{background-color:var(--red-focus)}.danger-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.danger-progress{background-color:transparent;color:var(--red-base)}.danger-progress:hover{background-color:var(--red-hover)}.danger-progress:active{background-color:var(--red-focus)}.danger-progress{background-color:var(--red-hover);color:var(--red-base)}.danger-progress span{opacity:.6}.danger-progress:disabled{opacity:.6;cursor:not-allowed}.skeleton-solid{background-color:var(---base);color:var(--typography-contrast)}.skeleton-solid:hover{background-color:var(---medium)}.skeleton-solid:active{background-color:var(---dark)}.skeleton-ghost{background-color:transparent;color:var(---base)}.skeleton-ghost:hover{background-color:var(---hover)}.skeleton-ghost:active{background-color:var(---focus)}.skeleton-outline{background-color:transparent;color:var(---base)}.skeleton-outline:hover{background-color:var(---hover)}.skeleton-outline:active{background-color:var(---focus)}.skeleton-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.skeleton-progress{background-color:transparent;color:var(---base)}.skeleton-progress:hover{background-color:var(---hover)}.skeleton-progress:active{background-color:var(---focus)}.skeleton-progress{background-color:var(---hover);color:var(---base)}.skeleton-progress span{opacity:.6}.skeleton-progress:disabled{opacity:.6;cursor:not-allowed}.warning-solid{background-color:var(--orange-base);color:var(--typography-contrast)}.warning-solid:hover{background-color:var(--orange-medium)}.warning-solid:active{background-color:var(--orange-dark)}.warning-ghost{background-color:transparent;color:var(--orange-base)}.warning-ghost:hover{background-color:var(--orange-hover)}.warning-ghost:active{background-color:var(--orange-focus)}.warning-outline{background-color:transparent;color:var(--orange-base)}.warning-outline:hover{background-color:var(--orange-hover)}.warning-outline:active{background-color:var(--orange-focus)}.warning-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.warning-progress{background-color:transparent;color:var(--orange-base)}.warning-progress:hover{background-color:var(--orange-hover)}.warning-progress:active{background-color:var(--orange-focus)}.warning-progress{background-color:var(--orange-hover);color:var(--orange-base)}.warning-progress span{opacity:.6}.warning-progress:disabled{opacity:.6;cursor:not-allowed}.success-solid{background-color:var(--green-base);color:var(--typography-contrast)}.success-solid:hover{background-color:var(--green-medium)}.success-solid:active{background-color:var(--green-dark)}.success-ghost{background-color:transparent;color:var(--green-base)}.success-ghost:hover{background-color:var(--green-hover)}.success-ghost:active{background-color:var(--green-focus)}.success-outline{background-color:transparent;color:var(--green-base)}.success-outline:hover{background-color:var(--green-hover)}.success-outline:active{background-color:var(--green-focus)}.success-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.success-progress{background-color:transparent;color:var(--green-base)}.success-progress:hover{background-color:var(--green-hover)}.success-progress:active{background-color:var(--green-focus)}.success-progress{background-color:var(--green-hover);color:var(--green-base)}.success-progress span{opacity:.6}.success-progress:disabled{opacity:.6;cursor:not-allowed}\n"] }]
|
|
546
|
+
}], propDecorators: { classes: [{
|
|
547
|
+
type: HostBinding,
|
|
548
|
+
args: ['attr.class']
|
|
549
|
+
}], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], leftIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "leftIcon", required: false }] }], rightIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "rightIcon", required: false }] }], focusInitial: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusInitial", required: false }] }] } });
|
|
550
|
+
|
|
410
551
|
var LayoutWidth;
|
|
411
552
|
(function (LayoutWidth) {
|
|
412
553
|
LayoutWidth["Small"] = "small";
|
|
@@ -431,6 +572,7 @@ class FwLayoutContextComponent {
|
|
|
431
572
|
};
|
|
432
573
|
return widthMap[this.width()];
|
|
433
574
|
}, ...(ngDevMode ? [{ debugName: "widthPx" }] : /* istanbul ignore next */ []));
|
|
575
|
+
this.actionButtons = contentChildren(FwButtonComponent, ...(ngDevMode ? [{ debugName: "actionButtons" }] : /* istanbul ignore next */ []));
|
|
434
576
|
this.icon = input(...(ngDevMode ? [undefined, { debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
435
577
|
this.iconColor = input('secondary', ...(ngDevMode ? [{ debugName: "iconColor" }] : /* istanbul ignore next */ []));
|
|
436
578
|
this.parsedIconColor = computed(() => {
|
|
@@ -448,7 +590,7 @@ class FwLayoutContextComponent {
|
|
|
448
590
|
this.description = input(...(ngDevMode ? [undefined, { debugName: "description" }] : /* istanbul ignore next */ []));
|
|
449
591
|
}
|
|
450
592
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: FwLayoutContextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
451
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: FwLayoutContextComponent, isStandalone: true, selector: "fw-layout-context", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconColor: { classPropertyName: "iconColor", publicName: "iconColor", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.width": "widthPx()", "attr.title": "null" }, classAttribute: "fw-layout-context" }, ngImport: i0, template: "@if (icon()) {\n <fw-icon [color]=\"parsedIconColor()\">{{ icon() }}</fw-icon>\n}\n\n@if (title()) {\n
|
|
593
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: FwLayoutContextComponent, isStandalone: true, selector: "fw-layout-context", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconColor: { classPropertyName: "iconColor", publicName: "iconColor", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.width": "widthPx()", "attr.title": "null" }, classAttribute: "fw-layout-context" }, queries: [{ propertyName: "actionButtons", predicate: FwButtonComponent, isSignal: true }], ngImport: i0, template: "@if (icon()) {\n <fw-icon [color]=\"parsedIconColor()\">{{ icon() }}</fw-icon>\n}\n\n<div class=\"context-text\">\n @if (title()) {\n <h3>{{ title() }}</h3>\n }\n\n @if (description()) {\n <p class=\"vision-p3\">{{ description() }}</p>\n } @else {\n <ng-content select=\"[slot='description']\"></ng-content>\n }\n</div>\n\n@if (actionButtons().length > 0) {\n <div class=\"context-actions\">\n <ng-content select=\"fw-button\"></ng-content>\n </div>\n}\n\n", styles: [":host{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:50px;max-width:100%}:host fw-icon{font-size:50px;width:50px;max-width:50px}:host .context-text{display:flex;flex-direction:column;align-items:center;width:100%;gap:8px}:host .context-text h3{margin:0}:host .context-text p{margin:0;text-align:center;color:var(--typography-muted)}:host .context-actions{display:flex;gap:8px}\n"], dependencies: [{ kind: "component", type: FwIconComponent, selector: "fw-icon", inputs: ["ariaLabel", "size", "color"] }] }); }
|
|
452
594
|
}
|
|
453
595
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: FwLayoutContextComponent, decorators: [{
|
|
454
596
|
type: Component,
|
|
@@ -456,8 +598,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
456
598
|
class: 'fw-layout-context',
|
|
457
599
|
'[style.width]': 'widthPx()',
|
|
458
600
|
'[attr.title]': 'null',
|
|
459
|
-
}, template: "@if (icon()) {\n <fw-icon [color]=\"parsedIconColor()\">{{ icon() }}</fw-icon>\n}\n\n@if (title()) {\n
|
|
460
|
-
}], propDecorators: { width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconColor", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }] } });
|
|
601
|
+
}, template: "@if (icon()) {\n <fw-icon [color]=\"parsedIconColor()\">{{ icon() }}</fw-icon>\n}\n\n<div class=\"context-text\">\n @if (title()) {\n <h3>{{ title() }}</h3>\n }\n\n @if (description()) {\n <p class=\"vision-p3\">{{ description() }}</p>\n } @else {\n <ng-content select=\"[slot='description']\"></ng-content>\n }\n</div>\n\n@if (actionButtons().length > 0) {\n <div class=\"context-actions\">\n <ng-content select=\"fw-button\"></ng-content>\n </div>\n}\n\n", styles: [":host{box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:50px;max-width:100%}:host fw-icon{font-size:50px;width:50px;max-width:50px}:host .context-text{display:flex;flex-direction:column;align-items:center;width:100%;gap:8px}:host .context-text h3{margin:0}:host .context-text p{margin:0;text-align:center;color:var(--typography-muted)}:host .context-actions{display:flex;gap:8px}\n"] }]
|
|
602
|
+
}], propDecorators: { width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], actionButtons: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => FwButtonComponent), { isSignal: true }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconColor", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }] } });
|
|
461
603
|
|
|
462
604
|
/**
|
|
463
605
|
* Layout component for a 12-column responsive grid container
|
|
@@ -1525,147 +1667,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImpo
|
|
|
1525
1667
|
}]
|
|
1526
1668
|
}] });
|
|
1527
1669
|
|
|
1528
|
-
/**
|
|
1529
|
-
* Component for a circular progress spinner supporting determinate and indeterminate modes
|
|
1530
|
-
* @see [Vision storybook](https://cdn.flywheel.io/docs/vision/master/?path=/docs/components-progress-spinner--docs)
|
|
1531
|
-
*/
|
|
1532
|
-
class FwProgressSpinnerComponent {
|
|
1533
|
-
constructor() {
|
|
1534
|
-
this._elementRef = inject(ElementRef);
|
|
1535
|
-
/** Mode of the progress spinner. **/
|
|
1536
|
-
this.mode = input('indeterminate', ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
|
|
1537
|
-
/** Size of the progress spinner. **/
|
|
1538
|
-
this.size = input('medium', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
1539
|
-
/** Color of the progress spinner. **/
|
|
1540
|
-
this.color = input('primary', ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
|
|
1541
|
-
/** Whether to show the value percentage label on the progress spinner. **/
|
|
1542
|
-
this.showValue = input(false, ...(ngDevMode ? [{ debugName: "showValue" }] : /* istanbul ignore next */ []));
|
|
1543
|
-
this._value = 0;
|
|
1544
|
-
this._diameter = 20;
|
|
1545
|
-
this._strokeWidth = 3;
|
|
1546
|
-
}
|
|
1547
|
-
/** Value of the progress spinner. Defaults to zero. Mirrored to aria-valuenow. **/
|
|
1548
|
-
get value() {
|
|
1549
|
-
// return this.mode === 'determinate' ? this._value : 0;
|
|
1550
|
-
return this._value;
|
|
1551
|
-
}
|
|
1552
|
-
set value(v) {
|
|
1553
|
-
this._value = Math.max(0, Math.min(100, v || 0));
|
|
1554
|
-
}
|
|
1555
|
-
/** The diameter of the progress spinner (will set width and height of svg). */
|
|
1556
|
-
get diameter() {
|
|
1557
|
-
switch (this.size()) {
|
|
1558
|
-
case 'small':
|
|
1559
|
-
this._diameter = 20;
|
|
1560
|
-
this._strokeWidth = 3;
|
|
1561
|
-
break;
|
|
1562
|
-
case 'medium':
|
|
1563
|
-
this._diameter = 36;
|
|
1564
|
-
this._strokeWidth = 4;
|
|
1565
|
-
break;
|
|
1566
|
-
}
|
|
1567
|
-
return this._diameter;
|
|
1568
|
-
}
|
|
1569
|
-
/** The radius of the spinner, adjusted for stroke width. */
|
|
1570
|
-
_circleRadius() {
|
|
1571
|
-
return (this.diameter - 10) / 2;
|
|
1572
|
-
}
|
|
1573
|
-
/** The view box of the spinner's svg element. */
|
|
1574
|
-
_viewBox() {
|
|
1575
|
-
const viewBox = this._circleRadius() * 2 + this._strokeWidth;
|
|
1576
|
-
return `0 0 ${viewBox} ${viewBox}`;
|
|
1577
|
-
}
|
|
1578
|
-
/** The stroke circumference of the svg circle. */
|
|
1579
|
-
_strokeCircumference() {
|
|
1580
|
-
return 2 * Math.PI * this._circleRadius();
|
|
1581
|
-
}
|
|
1582
|
-
/** The dash offset of the svg circle. */
|
|
1583
|
-
_strokeDashOffset() {
|
|
1584
|
-
if (this.mode() === 'determinate') {
|
|
1585
|
-
return (this._strokeCircumference() * (100 - this._value)) / 100;
|
|
1586
|
-
}
|
|
1587
|
-
return null;
|
|
1588
|
-
}
|
|
1589
|
-
/** Stroke width of the circle in percent. */
|
|
1590
|
-
_circleStrokeWidth() {
|
|
1591
|
-
return (this._strokeWidth / this.diameter) * 100;
|
|
1592
|
-
}
|
|
1593
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: FwProgressSpinnerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1594
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: FwProgressSpinnerComponent, isStandalone: true, selector: "fw-progress-spinner", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, showValue: { classPropertyName: "showValue", publicName: "showValue", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: false, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "progressbar", "tabindex": "-1" }, properties: { "class.progress-indeterminate": "mode() === \"indeterminate\"", "class.progress-small": "size() === \"small\"", "class.progress-show-value": "this.showValue", "style.width.px": "diameter", "style.height.px": "diameter", "attr.aria-valuemin": "0", "attr.aria-valuemax": "100", "attr.aria-valuenow": "mode() === \"determinate\" ? value : null", "attr.mode": "mode()" }, classAttribute: "fw-progress-spinner" }, viewQueries: [{ propertyName: "_determinateCircle", first: true, predicate: ["determinateSpinner"], descendants: true }], ngImport: i0, template: "<ng-template #circle>\n <svg\n [attr.viewBox]=\"_viewBox()\"\n [ngClass]=\"['progress-indeterminate-circle-graphic', color()]\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n >\n <circle\n [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"progress-indeterminate-track\"\n cx=\"50%\"\n cy=\"50%\"\n />\n <circle\n [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeCircumference() / 2\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n cx=\"50%\"\n cy=\"50%\"\n />\n </svg>\n</ng-template>\n\n<div class=\"progress-determinate-container\" aria-hidden=\"true\" #determinateSpinner>\n <svg\n [attr.viewBox]=\"_viewBox()\"\n [ngClass]=\"['progress-determinate-circle-graphic', color()]\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n >\n <circle\n [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"progress-determinate-track\"\n cx=\"50%\"\n cy=\"50%\"\n />\n <circle\n [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"progress-determinate-circle\"\n cx=\"50%\"\n cy=\"50%\"\n />\n </svg>\n</div>\n<div class=\"progress-indeterminate-container\" aria-hidden=\"true\">\n <div class=\"progress-spinner-layer\">\n <div class=\"progress-circle-clipper progress-circle-left\">\n <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\n </div>\n <div class=\"progress-circle-clipper progress-circle-right\">\n <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\n </div>\n </div>\n</div>\n@if (showValue()) {\n <p [ngClass]=\"['progress-label', 'size-' + size(), 'mode-' + mode()]\">{{ value }}%</p>\n}\n", styles: [".fw-progress-spinner{display:block;overflow:hidden;line-height:0;position:relative;direction:ltr;transition:opacity .25s cubic-bezier(.4,0,.6,1)}.fw-progress-spinner.progress-small.progress-show-value{overflow:visible}.progress-determinate-container,.progress-indeterminate-circle-graphic,.progress-indeterminate-container,.progress-spinner-layer{position:absolute;width:100%;height:100%}.progress-determinate-container{transform:rotate(-90deg)}.progress-indeterminate .progress-determinate-container{opacity:0}.progress-indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.progress-indeterminate .progress-indeterminate-container{opacity:1;animation:progress-container-rotate 1.5682353s linear infinite}.progress-determinate-circle-graphic,.progress-indeterminate-circle-graphic{fill:transparent;stroke:var(--primary-base);stroke-linecap:round}.progress-determinate-circle-graphic.secondary,.progress-indeterminate-circle-graphic.secondary{stroke:var(--secondary-base)}.progress-determinate-circle-graphic.red,.progress-indeterminate-circle-graphic.red{stroke:var(--red-base)}.progress-determinate-circle-graphic.slate,.progress-indeterminate-circle-graphic.slate{stroke:var(--slate-base)}.progress-determinate-circle-graphic.orange,.progress-indeterminate-circle-graphic.orange{stroke:var(--orange-base)}.progress-determinate-circle-graphic.green,.progress-indeterminate-circle-graphic.green{stroke:var(--green-base)}.progress-determinate-circle{transition:stroke-dashoffset .5s cubic-bezier(0,0,.2,1)}.progress-determinate-track,.progress-indeterminate-track{fill:transparent;stroke:var(--separations-divider);stroke-dasharray:100px!important;stroke-dashoffset:0!important;transition:none}.progress-gap-patch .progress-indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.progress-circle-clipper .progress-indeterminate-circle-graphic{width:200%}.progress-circle-right .progress-indeterminate-circle-graphic{left:-100%}.progress-indeterminate .progress-circle-left .progress-indeterminate-circle-graphic{animation:progress-left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.progress-indeterminate .progress-circle-right .progress-indeterminate-circle-graphic{animation:progress-right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.progress-circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.progress-indeterminate .progress-spinner-layer{animation:progress-spinner-layer-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both}.progress-label{margin:0;font-size:8px;line-height:120%;font-weight:500;width:24px;color:var(--typography-muted);position:absolute;top:calc(50% - 4px);right:calc(50% - 12px);text-align:center}.progress-label.size-small{right:-24px}.progress-label.size-large{font-size:12px;top:calc(50% - 6px)}.progress-label.size-extra-large{font-size:16px;width:40px;top:calc(50% - 8px);right:calc(50% - 20px)}@keyframes progress-container-rotate{to{transform:rotate(360deg)}}@keyframes progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@keyframes progress-left-spin{0%{transform:rotate(260deg)}50%{transform:rotate(130deg)}to{transform:rotate(260deg)}}@keyframes progress-right-spin{0%{transform:rotate(-260deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-260deg)}}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
1595
|
-
}
|
|
1596
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: FwProgressSpinnerComponent, decorators: [{
|
|
1597
|
-
type: Component,
|
|
1598
|
-
args: [{ selector: 'fw-progress-spinner', host: {
|
|
1599
|
-
role: 'progressbar',
|
|
1600
|
-
class: 'fw-progress-spinner',
|
|
1601
|
-
tabindex: '-1',
|
|
1602
|
-
'[class.progress-indeterminate]': 'mode() === "indeterminate"',
|
|
1603
|
-
'[class.progress-small]': 'size() === "small"',
|
|
1604
|
-
'[class.progress-show-value]': 'this.showValue',
|
|
1605
|
-
'[style.width.px]': 'diameter',
|
|
1606
|
-
'[style.height.px]': 'diameter',
|
|
1607
|
-
// '[style.--progress-size]': 'diameter + "px"',
|
|
1608
|
-
// '[style.--progress-active-indicator-width]': 'diameter + "px"',
|
|
1609
|
-
'[attr.aria-valuemin]': '0',
|
|
1610
|
-
'[attr.aria-valuemax]': '100',
|
|
1611
|
-
'[attr.aria-valuenow]': 'mode() === "determinate" ? value : null',
|
|
1612
|
-
'[attr.mode]': 'mode()',
|
|
1613
|
-
}, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [NgClass, NgTemplateOutlet], template: "<ng-template #circle>\n <svg\n [attr.viewBox]=\"_viewBox()\"\n [ngClass]=\"['progress-indeterminate-circle-graphic', color()]\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n >\n <circle\n [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"progress-indeterminate-track\"\n cx=\"50%\"\n cy=\"50%\"\n />\n <circle\n [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeCircumference() / 2\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n cx=\"50%\"\n cy=\"50%\"\n />\n </svg>\n</ng-template>\n\n<div class=\"progress-determinate-container\" aria-hidden=\"true\" #determinateSpinner>\n <svg\n [attr.viewBox]=\"_viewBox()\"\n [ngClass]=\"['progress-determinate-circle-graphic', color()]\"\n xmlns=\"http://www.w3.org/2000/svg\"\n focusable=\"false\"\n >\n <circle\n [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"progress-determinate-track\"\n cx=\"50%\"\n cy=\"50%\"\n />\n <circle\n [attr.r]=\"_circleRadius()\"\n [style.stroke-dasharray.px]=\"_strokeCircumference()\"\n [style.stroke-dashoffset.px]=\"_strokeDashOffset()\"\n [style.stroke-width.%]=\"_circleStrokeWidth()\"\n class=\"progress-determinate-circle\"\n cx=\"50%\"\n cy=\"50%\"\n />\n </svg>\n</div>\n<div class=\"progress-indeterminate-container\" aria-hidden=\"true\">\n <div class=\"progress-spinner-layer\">\n <div class=\"progress-circle-clipper progress-circle-left\">\n <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\n </div>\n <div class=\"progress-circle-clipper progress-circle-right\">\n <ng-container [ngTemplateOutlet]=\"circle\"></ng-container>\n </div>\n </div>\n</div>\n@if (showValue()) {\n <p [ngClass]=\"['progress-label', 'size-' + size(), 'mode-' + mode()]\">{{ value }}%</p>\n}\n", styles: [".fw-progress-spinner{display:block;overflow:hidden;line-height:0;position:relative;direction:ltr;transition:opacity .25s cubic-bezier(.4,0,.6,1)}.fw-progress-spinner.progress-small.progress-show-value{overflow:visible}.progress-determinate-container,.progress-indeterminate-circle-graphic,.progress-indeterminate-container,.progress-spinner-layer{position:absolute;width:100%;height:100%}.progress-determinate-container{transform:rotate(-90deg)}.progress-indeterminate .progress-determinate-container{opacity:0}.progress-indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.progress-indeterminate .progress-indeterminate-container{opacity:1;animation:progress-container-rotate 1.5682353s linear infinite}.progress-determinate-circle-graphic,.progress-indeterminate-circle-graphic{fill:transparent;stroke:var(--primary-base);stroke-linecap:round}.progress-determinate-circle-graphic.secondary,.progress-indeterminate-circle-graphic.secondary{stroke:var(--secondary-base)}.progress-determinate-circle-graphic.red,.progress-indeterminate-circle-graphic.red{stroke:var(--red-base)}.progress-determinate-circle-graphic.slate,.progress-indeterminate-circle-graphic.slate{stroke:var(--slate-base)}.progress-determinate-circle-graphic.orange,.progress-indeterminate-circle-graphic.orange{stroke:var(--orange-base)}.progress-determinate-circle-graphic.green,.progress-indeterminate-circle-graphic.green{stroke:var(--green-base)}.progress-determinate-circle{transition:stroke-dashoffset .5s cubic-bezier(0,0,.2,1)}.progress-determinate-track,.progress-indeterminate-track{fill:transparent;stroke:var(--separations-divider);stroke-dasharray:100px!important;stroke-dashoffset:0!important;transition:none}.progress-gap-patch .progress-indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.progress-circle-clipper .progress-indeterminate-circle-graphic{width:200%}.progress-circle-right .progress-indeterminate-circle-graphic{left:-100%}.progress-indeterminate .progress-circle-left .progress-indeterminate-circle-graphic{animation:progress-left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.progress-indeterminate .progress-circle-right .progress-indeterminate-circle-graphic{animation:progress-right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.progress-circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.progress-indeterminate .progress-spinner-layer{animation:progress-spinner-layer-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both}.progress-label{margin:0;font-size:8px;line-height:120%;font-weight:500;width:24px;color:var(--typography-muted);position:absolute;top:calc(50% - 4px);right:calc(50% - 12px);text-align:center}.progress-label.size-small{right:-24px}.progress-label.size-large{font-size:12px;top:calc(50% - 6px)}.progress-label.size-extra-large{font-size:16px;width:40px;top:calc(50% - 8px);right:calc(50% - 20px)}@keyframes progress-container-rotate{to{transform:rotate(360deg)}}@keyframes progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@keyframes progress-left-spin{0%{transform:rotate(260deg)}50%{transform:rotate(130deg)}to{transform:rotate(260deg)}}@keyframes progress-right-spin{0%{transform:rotate(-260deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-260deg)}}\n"] }]
|
|
1614
|
-
}], propDecorators: { _determinateCircle: [{
|
|
1615
|
-
type: ViewChild,
|
|
1616
|
-
args: ['determinateSpinner']
|
|
1617
|
-
}], mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], showValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "showValue", required: false }] }], value: [{
|
|
1618
|
-
type: Input
|
|
1619
|
-
}] } });
|
|
1620
|
-
|
|
1621
|
-
/**
|
|
1622
|
-
* Component for a styled action button with configurable color, size, variant, and optional icons
|
|
1623
|
-
* @see [Vision storybook](https://cdn.flywheel.io/docs/vision/master/?path=/docs/components-button--docs)
|
|
1624
|
-
*/
|
|
1625
|
-
class FwButtonComponent {
|
|
1626
|
-
constructor() {
|
|
1627
|
-
this.color = input('primary', ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
|
|
1628
|
-
this.size = input('medium', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
1629
|
-
this.variant = input('solid', ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
|
|
1630
|
-
this.type = input('button', ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
|
|
1631
|
-
this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
1632
|
-
this.fullWidth = input(false, ...(ngDevMode ? [{ debugName: "fullWidth" }] : /* istanbul ignore next */ []));
|
|
1633
|
-
this.leftIcon = input(undefined, ...(ngDevMode ? [{ debugName: "leftIcon" }] : /* istanbul ignore next */ []));
|
|
1634
|
-
this.rightIcon = input(undefined, ...(ngDevMode ? [{ debugName: "rightIcon" }] : /* istanbul ignore next */ []));
|
|
1635
|
-
/** When true, marks this button as the initial focus target when it's the first-rendered child of a `cdkTrapFocus`/CDK Dialog focus trap. */
|
|
1636
|
-
this.focusInitial = input(false, ...(ngDevMode ? [{ debugName: "focusInitial" }] : /* istanbul ignore next */ []));
|
|
1637
|
-
}
|
|
1638
|
-
get classes() {
|
|
1639
|
-
return ['fw-button', this.size(), this.fullWidth() ? 'full-width' : null].filter(Boolean).join(' ');
|
|
1640
|
-
}
|
|
1641
|
-
getMappedColor() {
|
|
1642
|
-
const color = this.color();
|
|
1643
|
-
switch (color) {
|
|
1644
|
-
case 'primary':
|
|
1645
|
-
case 'secondary':
|
|
1646
|
-
case 'slate':
|
|
1647
|
-
return color;
|
|
1648
|
-
case 'danger':
|
|
1649
|
-
return 'red';
|
|
1650
|
-
case 'warning':
|
|
1651
|
-
return 'orange';
|
|
1652
|
-
case 'success':
|
|
1653
|
-
return 'green';
|
|
1654
|
-
default:
|
|
1655
|
-
return undefined;
|
|
1656
|
-
}
|
|
1657
|
-
}
|
|
1658
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: FwButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1659
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.18", type: FwButtonComponent, isStandalone: true, selector: "fw-button", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, fullWidth: { classPropertyName: "fullWidth", publicName: "fullWidth", isSignal: true, isRequired: false, transformFunction: null }, leftIcon: { classPropertyName: "leftIcon", publicName: "leftIcon", isSignal: true, isRequired: false, transformFunction: null }, rightIcon: { classPropertyName: "rightIcon", publicName: "rightIcon", isSignal: true, isRequired: false, transformFunction: null }, focusInitial: { classPropertyName: "focusInitial", publicName: "focusInitial", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.class": "this.classes" } }, ngImport: i0, template: "<button\n [type]=\"type()\"\n [class]=\"[color() + '-' + variant(), size()]\"\n [disabled]=\"disabled()\"\n [attr.cdkFocusInitial]=\"focusInitial() ? '' : null\"\n>\n @if (variant() === 'progress') {\n <fw-progress-spinner size=\"small\" [color]=\"getMappedColor()\"></fw-progress-spinner>\n }\n @if (!!leftIcon() && variant() !== 'progress') {\n <fw-icon>{{ leftIcon() }}</fw-icon>\n }\n @if (!leftIcon()) {\n <div class=\"spacer\"></div>\n }\n <span><ng-content></ng-content></span>\n @if (!!rightIcon()) {\n <fw-icon>{{ rightIcon() }}</fw-icon>\n }\n</button>\n", styles: [":host.full-width{flex:1;display:flex}:host.full-width button{flex:1}button{cursor:pointer;font-family:Inter,sans-serif;font-size:14px;line-height:14px;font-style:normal;font-weight:500;display:inline-flex;height:36px;padding:12px;justify-content:center;align-items:center;gap:8px;flex-shrink:0;border:1px solid transparent;border-radius:8px}button .spacer{height:18px;width:0;margin-left:-8px}button fw-icon{height:18px;font-size:20px;width:20px;min-width:20px}button span{white-space:nowrap}button:disabled{opacity:.4;cursor:not-allowed}.large{font-size:16px;height:40px;padding:12px 14px}.large fw-icon{font-size:24px;width:24px;min-width:24px}.small{height:30px;padding:12px 10px}.primary-solid{background-color:var(--primary-base);color:var(--typography-contrast)}.primary-solid:hover{background-color:var(--primary-medium)}.primary-solid:active{background-color:var(--primary-dark)}.primary-ghost{background-color:transparent;color:var(--primary-base)}.primary-ghost:hover{background-color:var(--primary-hover)}.primary-ghost:active{background-color:var(--primary-focus)}.primary-outline{background-color:transparent;color:var(--primary-base)}.primary-outline:hover{background-color:var(--primary-hover)}.primary-outline:active{background-color:var(--primary-focus)}.primary-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.primary-progress{background-color:transparent;color:var(--primary-base)}.primary-progress:hover{background-color:var(--primary-hover)}.primary-progress:active{background-color:var(--primary-focus)}.primary-progress{background-color:var(--primary-hover);color:var(--primary-base)}.primary-progress span{opacity:.6}.primary-progress:disabled{opacity:.6;cursor:not-allowed}.secondary-solid{background-color:var(--secondary-base);color:var(--typography-contrast)}.secondary-solid:hover{background-color:var(--secondary-medium)}.secondary-solid:active{background-color:var(--secondary-dark)}.secondary-ghost{background-color:transparent;color:var(--secondary-base)}.secondary-ghost:hover{background-color:var(--secondary-hover)}.secondary-ghost:active{background-color:var(--secondary-focus)}.secondary-outline{background-color:transparent;color:var(--secondary-base)}.secondary-outline:hover{background-color:var(--secondary-hover)}.secondary-outline:active{background-color:var(--secondary-focus)}.secondary-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.secondary-progress{background-color:transparent;color:var(--secondary-base)}.secondary-progress:hover{background-color:var(--secondary-hover)}.secondary-progress:active{background-color:var(--secondary-focus)}.secondary-progress{background-color:var(--secondary-hover);color:var(--secondary-base)}.secondary-progress span{opacity:.6}.secondary-progress:disabled{opacity:.6;cursor:not-allowed}.slate-solid{background-color:var(--slate-base);color:var(--typography-contrast)}.slate-solid:hover{background-color:var(--slate-medium)}.slate-solid:active{background-color:var(--slate-dark)}.slate-ghost{background-color:transparent;color:var(--slate-base)}.slate-ghost:hover{background-color:var(--slate-hover)}.slate-ghost:active{background-color:var(--slate-focus)}.slate-outline{background-color:transparent;color:var(--slate-base)}.slate-outline:hover{background-color:var(--slate-hover)}.slate-outline:active{background-color:var(--slate-focus)}.slate-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.slate-progress{background-color:transparent;color:var(--slate-base)}.slate-progress:hover{background-color:var(--slate-hover)}.slate-progress:active{background-color:var(--slate-focus)}.slate-progress{background-color:var(--slate-hover);color:var(--slate-base)}.slate-progress span{opacity:.6}.slate-progress:disabled{opacity:.6;cursor:not-allowed}.danger-solid{background-color:var(--red-base);color:var(--typography-contrast)}.danger-solid:hover{background-color:var(--red-medium)}.danger-solid:active{background-color:var(--red-dark)}.danger-ghost{background-color:transparent;color:var(--red-base)}.danger-ghost:hover{background-color:var(--red-hover)}.danger-ghost:active{background-color:var(--red-focus)}.danger-outline{background-color:transparent;color:var(--red-base)}.danger-outline:hover{background-color:var(--red-hover)}.danger-outline:active{background-color:var(--red-focus)}.danger-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.danger-progress{background-color:transparent;color:var(--red-base)}.danger-progress:hover{background-color:var(--red-hover)}.danger-progress:active{background-color:var(--red-focus)}.danger-progress{background-color:var(--red-hover);color:var(--red-base)}.danger-progress span{opacity:.6}.danger-progress:disabled{opacity:.6;cursor:not-allowed}.skeleton-solid{background-color:var(---base);color:var(--typography-contrast)}.skeleton-solid:hover{background-color:var(---medium)}.skeleton-solid:active{background-color:var(---dark)}.skeleton-ghost{background-color:transparent;color:var(---base)}.skeleton-ghost:hover{background-color:var(---hover)}.skeleton-ghost:active{background-color:var(---focus)}.skeleton-outline{background-color:transparent;color:var(---base)}.skeleton-outline:hover{background-color:var(---hover)}.skeleton-outline:active{background-color:var(---focus)}.skeleton-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.skeleton-progress{background-color:transparent;color:var(---base)}.skeleton-progress:hover{background-color:var(---hover)}.skeleton-progress:active{background-color:var(---focus)}.skeleton-progress{background-color:var(---hover);color:var(---base)}.skeleton-progress span{opacity:.6}.skeleton-progress:disabled{opacity:.6;cursor:not-allowed}.warning-solid{background-color:var(--orange-base);color:var(--typography-contrast)}.warning-solid:hover{background-color:var(--orange-medium)}.warning-solid:active{background-color:var(--orange-dark)}.warning-ghost{background-color:transparent;color:var(--orange-base)}.warning-ghost:hover{background-color:var(--orange-hover)}.warning-ghost:active{background-color:var(--orange-focus)}.warning-outline{background-color:transparent;color:var(--orange-base)}.warning-outline:hover{background-color:var(--orange-hover)}.warning-outline:active{background-color:var(--orange-focus)}.warning-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.warning-progress{background-color:transparent;color:var(--orange-base)}.warning-progress:hover{background-color:var(--orange-hover)}.warning-progress:active{background-color:var(--orange-focus)}.warning-progress{background-color:var(--orange-hover);color:var(--orange-base)}.warning-progress span{opacity:.6}.warning-progress:disabled{opacity:.6;cursor:not-allowed}.success-solid{background-color:var(--green-base);color:var(--typography-contrast)}.success-solid:hover{background-color:var(--green-medium)}.success-solid:active{background-color:var(--green-dark)}.success-ghost{background-color:transparent;color:var(--green-base)}.success-ghost:hover{background-color:var(--green-hover)}.success-ghost:active{background-color:var(--green-focus)}.success-outline{background-color:transparent;color:var(--green-base)}.success-outline:hover{background-color:var(--green-hover)}.success-outline:active{background-color:var(--green-focus)}.success-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.success-progress{background-color:transparent;color:var(--green-base)}.success-progress:hover{background-color:var(--green-hover)}.success-progress:active{background-color:var(--green-focus)}.success-progress{background-color:var(--green-hover);color:var(--green-base)}.success-progress span{opacity:.6}.success-progress:disabled{opacity:.6;cursor:not-allowed}\n"], dependencies: [{ kind: "component", type: FwProgressSpinnerComponent, selector: "fw-progress-spinner", inputs: ["mode", "size", "color", "showValue", "value"] }, { kind: "component", type: FwIconComponent, selector: "fw-icon", inputs: ["ariaLabel", "size", "color"] }] }); }
|
|
1660
|
-
}
|
|
1661
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.18", ngImport: i0, type: FwButtonComponent, decorators: [{
|
|
1662
|
-
type: Component,
|
|
1663
|
-
args: [{ selector: 'fw-button', imports: [FwProgressSpinnerComponent, FwIconComponent], template: "<button\n [type]=\"type()\"\n [class]=\"[color() + '-' + variant(), size()]\"\n [disabled]=\"disabled()\"\n [attr.cdkFocusInitial]=\"focusInitial() ? '' : null\"\n>\n @if (variant() === 'progress') {\n <fw-progress-spinner size=\"small\" [color]=\"getMappedColor()\"></fw-progress-spinner>\n }\n @if (!!leftIcon() && variant() !== 'progress') {\n <fw-icon>{{ leftIcon() }}</fw-icon>\n }\n @if (!leftIcon()) {\n <div class=\"spacer\"></div>\n }\n <span><ng-content></ng-content></span>\n @if (!!rightIcon()) {\n <fw-icon>{{ rightIcon() }}</fw-icon>\n }\n</button>\n", styles: [":host.full-width{flex:1;display:flex}:host.full-width button{flex:1}button{cursor:pointer;font-family:Inter,sans-serif;font-size:14px;line-height:14px;font-style:normal;font-weight:500;display:inline-flex;height:36px;padding:12px;justify-content:center;align-items:center;gap:8px;flex-shrink:0;border:1px solid transparent;border-radius:8px}button .spacer{height:18px;width:0;margin-left:-8px}button fw-icon{height:18px;font-size:20px;width:20px;min-width:20px}button span{white-space:nowrap}button:disabled{opacity:.4;cursor:not-allowed}.large{font-size:16px;height:40px;padding:12px 14px}.large fw-icon{font-size:24px;width:24px;min-width:24px}.small{height:30px;padding:12px 10px}.primary-solid{background-color:var(--primary-base);color:var(--typography-contrast)}.primary-solid:hover{background-color:var(--primary-medium)}.primary-solid:active{background-color:var(--primary-dark)}.primary-ghost{background-color:transparent;color:var(--primary-base)}.primary-ghost:hover{background-color:var(--primary-hover)}.primary-ghost:active{background-color:var(--primary-focus)}.primary-outline{background-color:transparent;color:var(--primary-base)}.primary-outline:hover{background-color:var(--primary-hover)}.primary-outline:active{background-color:var(--primary-focus)}.primary-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.primary-progress{background-color:transparent;color:var(--primary-base)}.primary-progress:hover{background-color:var(--primary-hover)}.primary-progress:active{background-color:var(--primary-focus)}.primary-progress{background-color:var(--primary-hover);color:var(--primary-base)}.primary-progress span{opacity:.6}.primary-progress:disabled{opacity:.6;cursor:not-allowed}.secondary-solid{background-color:var(--secondary-base);color:var(--typography-contrast)}.secondary-solid:hover{background-color:var(--secondary-medium)}.secondary-solid:active{background-color:var(--secondary-dark)}.secondary-ghost{background-color:transparent;color:var(--secondary-base)}.secondary-ghost:hover{background-color:var(--secondary-hover)}.secondary-ghost:active{background-color:var(--secondary-focus)}.secondary-outline{background-color:transparent;color:var(--secondary-base)}.secondary-outline:hover{background-color:var(--secondary-hover)}.secondary-outline:active{background-color:var(--secondary-focus)}.secondary-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.secondary-progress{background-color:transparent;color:var(--secondary-base)}.secondary-progress:hover{background-color:var(--secondary-hover)}.secondary-progress:active{background-color:var(--secondary-focus)}.secondary-progress{background-color:var(--secondary-hover);color:var(--secondary-base)}.secondary-progress span{opacity:.6}.secondary-progress:disabled{opacity:.6;cursor:not-allowed}.slate-solid{background-color:var(--slate-base);color:var(--typography-contrast)}.slate-solid:hover{background-color:var(--slate-medium)}.slate-solid:active{background-color:var(--slate-dark)}.slate-ghost{background-color:transparent;color:var(--slate-base)}.slate-ghost:hover{background-color:var(--slate-hover)}.slate-ghost:active{background-color:var(--slate-focus)}.slate-outline{background-color:transparent;color:var(--slate-base)}.slate-outline:hover{background-color:var(--slate-hover)}.slate-outline:active{background-color:var(--slate-focus)}.slate-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.slate-progress{background-color:transparent;color:var(--slate-base)}.slate-progress:hover{background-color:var(--slate-hover)}.slate-progress:active{background-color:var(--slate-focus)}.slate-progress{background-color:var(--slate-hover);color:var(--slate-base)}.slate-progress span{opacity:.6}.slate-progress:disabled{opacity:.6;cursor:not-allowed}.danger-solid{background-color:var(--red-base);color:var(--typography-contrast)}.danger-solid:hover{background-color:var(--red-medium)}.danger-solid:active{background-color:var(--red-dark)}.danger-ghost{background-color:transparent;color:var(--red-base)}.danger-ghost:hover{background-color:var(--red-hover)}.danger-ghost:active{background-color:var(--red-focus)}.danger-outline{background-color:transparent;color:var(--red-base)}.danger-outline:hover{background-color:var(--red-hover)}.danger-outline:active{background-color:var(--red-focus)}.danger-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.danger-progress{background-color:transparent;color:var(--red-base)}.danger-progress:hover{background-color:var(--red-hover)}.danger-progress:active{background-color:var(--red-focus)}.danger-progress{background-color:var(--red-hover);color:var(--red-base)}.danger-progress span{opacity:.6}.danger-progress:disabled{opacity:.6;cursor:not-allowed}.skeleton-solid{background-color:var(---base);color:var(--typography-contrast)}.skeleton-solid:hover{background-color:var(---medium)}.skeleton-solid:active{background-color:var(---dark)}.skeleton-ghost{background-color:transparent;color:var(---base)}.skeleton-ghost:hover{background-color:var(---hover)}.skeleton-ghost:active{background-color:var(---focus)}.skeleton-outline{background-color:transparent;color:var(---base)}.skeleton-outline:hover{background-color:var(---hover)}.skeleton-outline:active{background-color:var(---focus)}.skeleton-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.skeleton-progress{background-color:transparent;color:var(---base)}.skeleton-progress:hover{background-color:var(---hover)}.skeleton-progress:active{background-color:var(---focus)}.skeleton-progress{background-color:var(---hover);color:var(---base)}.skeleton-progress span{opacity:.6}.skeleton-progress:disabled{opacity:.6;cursor:not-allowed}.warning-solid{background-color:var(--orange-base);color:var(--typography-contrast)}.warning-solid:hover{background-color:var(--orange-medium)}.warning-solid:active{background-color:var(--orange-dark)}.warning-ghost{background-color:transparent;color:var(--orange-base)}.warning-ghost:hover{background-color:var(--orange-hover)}.warning-ghost:active{background-color:var(--orange-focus)}.warning-outline{background-color:transparent;color:var(--orange-base)}.warning-outline:hover{background-color:var(--orange-hover)}.warning-outline:active{background-color:var(--orange-focus)}.warning-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.warning-progress{background-color:transparent;color:var(--orange-base)}.warning-progress:hover{background-color:var(--orange-hover)}.warning-progress:active{background-color:var(--orange-focus)}.warning-progress{background-color:var(--orange-hover);color:var(--orange-base)}.warning-progress span{opacity:.6}.warning-progress:disabled{opacity:.6;cursor:not-allowed}.success-solid{background-color:var(--green-base);color:var(--typography-contrast)}.success-solid:hover{background-color:var(--green-medium)}.success-solid:active{background-color:var(--green-dark)}.success-ghost{background-color:transparent;color:var(--green-base)}.success-ghost:hover{background-color:var(--green-hover)}.success-ghost:active{background-color:var(--green-focus)}.success-outline{background-color:transparent;color:var(--green-base)}.success-outline:hover{background-color:var(--green-hover)}.success-outline:active{background-color:var(--green-focus)}.success-outline{border:1px solid var(--separations-base);background-color:var(--page-light)}.success-progress{background-color:transparent;color:var(--green-base)}.success-progress:hover{background-color:var(--green-hover)}.success-progress:active{background-color:var(--green-focus)}.success-progress{background-color:var(--green-hover);color:var(--green-base)}.success-progress span{opacity:.6}.success-progress:disabled{opacity:.6;cursor:not-allowed}\n"] }]
|
|
1664
|
-
}], propDecorators: { classes: [{
|
|
1665
|
-
type: HostBinding,
|
|
1666
|
-
args: ['attr.class']
|
|
1667
|
-
}], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], fullWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "fullWidth", required: false }] }], leftIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "leftIcon", required: false }] }], rightIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "rightIcon", required: false }] }], focusInitial: [{ type: i0.Input, args: [{ isSignal: true, alias: "focusInitial", required: false }] }] } });
|
|
1668
|
-
|
|
1669
1670
|
class FwButtonDirective {
|
|
1670
1671
|
constructor() {
|
|
1671
1672
|
this.sanitizer = inject(DomSanitizer);
|