mirror of https://github.com/ghostfolio/ghostfolio
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
268 lines
17 KiB
268 lines
17 KiB
import * as i0 from '@angular/core';
|
|
import { InjectionToken, inject, ElementRef, NgZone, Renderer2, booleanAttribute, Directive, Input, numberAttribute, Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';
|
|
import { FocusMonitor } from '@angular/cdk/a11y';
|
|
import { _CdkPrivateStyleLoader } from '@angular/cdk/private';
|
|
import { MatRippleLoader } from './_ripple-loader-chunk.mjs';
|
|
import { _StructuralStylesLoader } from './_structural-styles-chunk.mjs';
|
|
import { _animationsDisabled } from './_animation-chunk.mjs';
|
|
|
|
const MAT_BUTTON_CONFIG = new InjectionToken('MAT_BUTTON_CONFIG');
|
|
function transformTabIndex(value) {
|
|
return value == null ? undefined : numberAttribute(value);
|
|
}
|
|
class MatButtonBase {
|
|
_elementRef = inject(ElementRef);
|
|
_ngZone = inject(NgZone);
|
|
_animationsDisabled = _animationsDisabled();
|
|
_config = inject(MAT_BUTTON_CONFIG, {
|
|
optional: true
|
|
});
|
|
_focusMonitor = inject(FocusMonitor);
|
|
_cleanupClick;
|
|
_renderer = inject(Renderer2);
|
|
_rippleLoader = inject(MatRippleLoader);
|
|
_isAnchor;
|
|
_isFab = false;
|
|
color;
|
|
get disableRipple() {
|
|
return this._disableRipple;
|
|
}
|
|
set disableRipple(value) {
|
|
this._disableRipple = value;
|
|
this._updateRippleDisabled();
|
|
}
|
|
_disableRipple = false;
|
|
get disabled() {
|
|
return this._disabled;
|
|
}
|
|
set disabled(value) {
|
|
this._disabled = value;
|
|
this._updateRippleDisabled();
|
|
}
|
|
_disabled = false;
|
|
ariaDisabled;
|
|
disabledInteractive;
|
|
tabIndex;
|
|
set _tabindex(value) {
|
|
this.tabIndex = value;
|
|
}
|
|
constructor() {
|
|
inject(_CdkPrivateStyleLoader).load(_StructuralStylesLoader);
|
|
const element = this._elementRef.nativeElement;
|
|
this._isAnchor = element.tagName === 'A';
|
|
this.disabledInteractive = this._config?.disabledInteractive ?? false;
|
|
this.color = this._config?.color ?? null;
|
|
this._rippleLoader?.configureRipple(element, {
|
|
className: 'mat-mdc-button-ripple'
|
|
});
|
|
}
|
|
ngAfterViewInit() {
|
|
this._focusMonitor.monitor(this._elementRef, true);
|
|
if (this._isAnchor) {
|
|
this._setupAsAnchor();
|
|
}
|
|
}
|
|
ngOnDestroy() {
|
|
this._cleanupClick?.();
|
|
this._focusMonitor.stopMonitoring(this._elementRef);
|
|
this._rippleLoader?.destroyRipple(this._elementRef.nativeElement);
|
|
}
|
|
focus(origin = 'program', options) {
|
|
if (origin) {
|
|
this._focusMonitor.focusVia(this._elementRef.nativeElement, origin, options);
|
|
} else {
|
|
this._elementRef.nativeElement.focus(options);
|
|
}
|
|
}
|
|
_getAriaDisabled() {
|
|
if (this.ariaDisabled != null) {
|
|
return this.ariaDisabled;
|
|
}
|
|
if (this._isAnchor) {
|
|
return this.disabled || null;
|
|
}
|
|
return this.disabled && this.disabledInteractive ? true : null;
|
|
}
|
|
_getDisabledAttribute() {
|
|
return this.disabledInteractive || !this.disabled ? null : true;
|
|
}
|
|
_updateRippleDisabled() {
|
|
this._rippleLoader?.setDisabled(this._elementRef.nativeElement, this.disableRipple || this.disabled);
|
|
}
|
|
_getTabIndex() {
|
|
if (this._isAnchor) {
|
|
return this.disabled && !this.disabledInteractive ? -1 : this.tabIndex;
|
|
}
|
|
return this.tabIndex;
|
|
}
|
|
_setupAsAnchor() {
|
|
this._cleanupClick = this._ngZone.runOutsideAngular(() => this._renderer.listen(this._elementRef.nativeElement, 'click', event => {
|
|
if (this.disabled) {
|
|
event.preventDefault();
|
|
event.stopImmediatePropagation();
|
|
}
|
|
}));
|
|
}
|
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
minVersion: "12.0.0",
|
|
version: "21.0.3",
|
|
ngImport: i0,
|
|
type: MatButtonBase,
|
|
deps: [],
|
|
target: i0.ɵɵFactoryTarget.Directive
|
|
});
|
|
static ɵdir = i0.ɵɵngDeclareDirective({
|
|
minVersion: "16.1.0",
|
|
version: "21.0.3",
|
|
type: MatButtonBase,
|
|
isStandalone: true,
|
|
inputs: {
|
|
color: "color",
|
|
disableRipple: ["disableRipple", "disableRipple", booleanAttribute],
|
|
disabled: ["disabled", "disabled", booleanAttribute],
|
|
ariaDisabled: ["aria-disabled", "ariaDisabled", booleanAttribute],
|
|
disabledInteractive: ["disabledInteractive", "disabledInteractive", booleanAttribute],
|
|
tabIndex: ["tabIndex", "tabIndex", transformTabIndex],
|
|
_tabindex: ["tabindex", "_tabindex", transformTabIndex]
|
|
},
|
|
host: {
|
|
properties: {
|
|
"class": "color ? \"mat-\" + color : \"\"",
|
|
"attr.disabled": "_getDisabledAttribute()",
|
|
"attr.aria-disabled": "_getAriaDisabled()",
|
|
"attr.tabindex": "_getTabIndex()",
|
|
"class.mat-mdc-button-disabled": "disabled",
|
|
"class.mat-mdc-button-disabled-interactive": "disabledInteractive",
|
|
"class.mat-unthemed": "!color",
|
|
"class._mat-animation-noopable": "_animationsDisabled"
|
|
},
|
|
classAttribute: "mat-mdc-button-base"
|
|
},
|
|
ngImport: i0
|
|
});
|
|
}
|
|
i0.ɵɵngDeclareClassMetadata({
|
|
minVersion: "12.0.0",
|
|
version: "21.0.3",
|
|
ngImport: i0,
|
|
type: MatButtonBase,
|
|
decorators: [{
|
|
type: Directive,
|
|
args: [{
|
|
host: {
|
|
'class': 'mat-mdc-button-base',
|
|
'[class]': 'color ? "mat-" + color : ""',
|
|
'[attr.disabled]': '_getDisabledAttribute()',
|
|
'[attr.aria-disabled]': '_getAriaDisabled()',
|
|
'[attr.tabindex]': '_getTabIndex()',
|
|
'[class.mat-mdc-button-disabled]': 'disabled',
|
|
'[class.mat-mdc-button-disabled-interactive]': 'disabledInteractive',
|
|
'[class.mat-unthemed]': '!color',
|
|
'[class._mat-animation-noopable]': '_animationsDisabled'
|
|
}
|
|
}]
|
|
}],
|
|
ctorParameters: () => [],
|
|
propDecorators: {
|
|
color: [{
|
|
type: Input
|
|
}],
|
|
disableRipple: [{
|
|
type: Input,
|
|
args: [{
|
|
transform: booleanAttribute
|
|
}]
|
|
}],
|
|
disabled: [{
|
|
type: Input,
|
|
args: [{
|
|
transform: booleanAttribute
|
|
}]
|
|
}],
|
|
ariaDisabled: [{
|
|
type: Input,
|
|
args: [{
|
|
transform: booleanAttribute,
|
|
alias: 'aria-disabled'
|
|
}]
|
|
}],
|
|
disabledInteractive: [{
|
|
type: Input,
|
|
args: [{
|
|
transform: booleanAttribute
|
|
}]
|
|
}],
|
|
tabIndex: [{
|
|
type: Input,
|
|
args: [{
|
|
transform: transformTabIndex
|
|
}]
|
|
}],
|
|
_tabindex: [{
|
|
type: Input,
|
|
args: [{
|
|
alias: 'tabindex',
|
|
transform: transformTabIndex
|
|
}]
|
|
}]
|
|
}
|
|
});
|
|
|
|
class MatIconButton extends MatButtonBase {
|
|
constructor() {
|
|
super();
|
|
this._rippleLoader.configureRipple(this._elementRef.nativeElement, {
|
|
centered: true
|
|
});
|
|
}
|
|
static ɵfac = i0.ɵɵngDeclareFactory({
|
|
minVersion: "12.0.0",
|
|
version: "21.0.3",
|
|
ngImport: i0,
|
|
type: MatIconButton,
|
|
deps: [],
|
|
target: i0.ɵɵFactoryTarget.Component
|
|
});
|
|
static ɵcmp = i0.ɵɵngDeclareComponent({
|
|
minVersion: "14.0.0",
|
|
version: "21.0.3",
|
|
type: MatIconButton,
|
|
isStandalone: true,
|
|
selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]",
|
|
host: {
|
|
classAttribute: "mdc-icon-button mat-mdc-icon-button"
|
|
},
|
|
exportAs: ["matButton", "matAnchor"],
|
|
usesInheritance: true,
|
|
ngImport: i0,
|
|
template: "<span class=\"mat-mdc-button-persistent-ripple mdc-icon-button__ripple\"></span>\n\n<ng-content></ng-content>\n\n<!--\n The indicator can't be directly on the button, because MDC uses ::before for high contrast\n indication and it can't be on the ripple, because it has a border radius and overflow: hidden.\n-->\n<span class=\"mat-focus-indicator\"></span>\n\n<span class=\"mat-mdc-button-touch-target\"></span>\n",
|
|
styles: [".mat-mdc-icon-button{-webkit-user-select:none;user-select:none;display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;text-decoration:none;cursor:pointer;z-index:0;overflow:visible;border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%));flex-shrink:0;text-align:center;width:var(--mat-icon-button-state-layer-size, 40px);height:var(--mat-icon-button-state-layer-size, 40px);padding:calc(calc(var(--mat-icon-button-state-layer-size, 40px) - var(--mat-icon-button-icon-size, 24px)) / 2);font-size:var(--mat-icon-button-icon-size, 24px);color:var(--mat-icon-button-icon-color, var(--mat-sys-on-surface-variant));-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:\"\";opacity:0}.mat-mdc-icon-button .mdc-button__label,.mat-mdc-icon-button .mat-icon{z-index:1;position:relative}.mat-mdc-icon-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit}.mat-mdc-icon-button:focus-visible>.mat-focus-indicator::before{content:\"\";border-radius:inherit}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface-variant) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-icon-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-icon-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-icon-button-touch-target-size, 48px);display:var(--mat-icon-button-touch-target-display, block);left:50%;width:var(--mat-icon-button-touch-target-size, 48px);transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-icon-button-disabled-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button img,.mat-mdc-icon-button svg{width:var(--mat-icon-button-icon-size, 24px);height:var(--mat-icon-button-icon-size, 24px);vertical-align:baseline}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%))}.mat-mdc-icon-button[hidden]{display:none}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}\n", "@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-button-base.mat-tonal-button,.mat-mdc-icon-button.mat-mdc-icon-button,.mat-mdc-outlined-button .mdc-button__ripple{outline:solid 1px}}\n"],
|
|
changeDetection: i0.ChangeDetectionStrategy.OnPush,
|
|
encapsulation: i0.ViewEncapsulation.None
|
|
});
|
|
}
|
|
i0.ɵɵngDeclareClassMetadata({
|
|
minVersion: "12.0.0",
|
|
version: "21.0.3",
|
|
ngImport: i0,
|
|
type: MatIconButton,
|
|
decorators: [{
|
|
type: Component,
|
|
args: [{
|
|
selector: `button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]`,
|
|
host: {
|
|
'class': 'mdc-icon-button mat-mdc-icon-button'
|
|
},
|
|
exportAs: 'matButton, matAnchor',
|
|
encapsulation: ViewEncapsulation.None,
|
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
template: "<span class=\"mat-mdc-button-persistent-ripple mdc-icon-button__ripple\"></span>\n\n<ng-content></ng-content>\n\n<!--\n The indicator can't be directly on the button, because MDC uses ::before for high contrast\n indication and it can't be on the ripple, because it has a border radius and overflow: hidden.\n-->\n<span class=\"mat-focus-indicator\"></span>\n\n<span class=\"mat-mdc-button-touch-target\"></span>\n",
|
|
styles: [".mat-mdc-icon-button{-webkit-user-select:none;user-select:none;display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;text-decoration:none;cursor:pointer;z-index:0;overflow:visible;border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%));flex-shrink:0;text-align:center;width:var(--mat-icon-button-state-layer-size, 40px);height:var(--mat-icon-button-state-layer-size, 40px);padding:calc(calc(var(--mat-icon-button-state-layer-size, 40px) - var(--mat-icon-button-icon-size, 24px)) / 2);font-size:var(--mat-icon-button-icon-size, 24px);color:var(--mat-icon-button-icon-color, var(--mat-sys-on-surface-variant));-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-ripple{overflow:hidden}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:\"\";opacity:0}.mat-mdc-icon-button .mdc-button__label,.mat-mdc-icon-button .mat-icon{z-index:1;position:relative}.mat-mdc-icon-button .mat-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit}.mat-mdc-icon-button:focus-visible>.mat-focus-indicator::before{content:\"\";border-radius:inherit}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-icon-button-ripple-color, color-mix(in srgb, var(--mat-sys-on-surface-variant) calc(var(--mat-sys-pressed-state-layer-opacity) * 100%), transparent))}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button.mat-mdc-button-disabled .mat-mdc-button-persistent-ripple::before{background-color:var(--mat-icon-button-disabled-state-layer-color, var(--mat-sys-on-surface-variant))}.mat-mdc-icon-button:hover>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-hover-state-layer-opacity, var(--mat-sys-hover-state-layer-opacity))}.mat-mdc-icon-button.cdk-program-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.cdk-keyboard-focused>.mat-mdc-button-persistent-ripple::before,.mat-mdc-icon-button.mat-mdc-button-disabled-interactive:focus>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-focus-state-layer-opacity, var(--mat-sys-focus-state-layer-opacity))}.mat-mdc-icon-button:active>.mat-mdc-button-persistent-ripple::before{opacity:var(--mat-icon-button-pressed-state-layer-opacity, var(--mat-sys-pressed-state-layer-opacity))}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:var(--mat-icon-button-touch-target-size, 48px);display:var(--mat-icon-button-touch-target-display, block);left:50%;width:var(--mat-icon-button-touch-target-size, 48px);transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button[disabled],.mat-mdc-icon-button.mat-mdc-button-disabled{cursor:default;pointer-events:none;color:var(--mat-icon-button-disabled-icon-color, color-mix(in srgb, var(--mat-sys-on-surface) 38%, transparent))}.mat-mdc-icon-button.mat-mdc-button-disabled-interactive{pointer-events:auto}.mat-mdc-icon-button img,.mat-mdc-icon-button svg{width:var(--mat-icon-button-icon-size, 24px);height:var(--mat-icon-button-icon-size, 24px);vertical-align:baseline}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:var(--mat-icon-button-container-shape, var(--mat-sys-corner-full, 50%))}.mat-mdc-icon-button[hidden]{display:none}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}\n", "@media(forced-colors: active){.mat-mdc-button:not(.mdc-button--outlined),.mat-mdc-unelevated-button:not(.mdc-button--outlined),.mat-mdc-raised-button:not(.mdc-button--outlined),.mat-mdc-outlined-button:not(.mdc-button--outlined),.mat-mdc-button-base.mat-tonal-button,.mat-mdc-icon-button.mat-mdc-icon-button,.mat-mdc-outlined-button .mdc-button__ripple{outline:solid 1px}}\n"]
|
|
}]
|
|
}],
|
|
ctorParameters: () => []
|
|
});
|
|
const MatIconAnchor = MatIconButton;
|
|
|
|
export { MAT_BUTTON_CONFIG, MatButtonBase, MatIconAnchor, MatIconButton };
|
|
//# sourceMappingURL=_icon-button-chunk.mjs.map
|
|
|