@cute-widgets/base 20.0.4 → 20.0.5
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.
- package/CHANGELOG.md +11 -6
- package/abstract/index.d.ts +8 -2
- package/button/index.d.ts +44 -22
- package/button-toggle/index.d.ts +8 -4
- package/collapse/index.d.ts +49 -48
- package/core/index.d.ts +7 -1
- package/core/layout/index.d.ts +7 -1
- package/dialog/index.d.ts +81 -57
- package/fesm2022/cute-widgets-base-abstract.mjs +4 -14
- package/fesm2022/cute-widgets-base-abstract.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-button-toggle.mjs +36 -29
- package/fesm2022/cute-widgets-base-button-toggle.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-button.mjs +163 -99
- package/fesm2022/cute-widgets-base-button.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-chips.mjs +0 -12
- package/fesm2022/cute-widgets-base-chips.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-collapse.mjs +114 -126
- package/fesm2022/cute-widgets-base-collapse.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-core-layout.mjs +13 -1
- package/fesm2022/cute-widgets-base-core-layout.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-core-theming.mjs +1 -1
- package/fesm2022/cute-widgets-base-core-theming.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-core.mjs +14 -2
- package/fesm2022/cute-widgets-base-core.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-dialog.mjs +152 -117
- package/fesm2022/cute-widgets-base-dialog.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-menu.mjs +5 -27
- package/fesm2022/cute-widgets-base-menu.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-navbar.mjs +82 -42
- package/fesm2022/cute-widgets-base-navbar.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-paginator.mjs +4 -4
- package/fesm2022/cute-widgets-base-paginator.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-tabs.mjs +86 -61
- package/fesm2022/cute-widgets-base-tabs.mjs.map +1 -1
- package/fesm2022/cute-widgets-base.mjs +1 -1
- package/navbar/index.d.ts +24 -9
- package/package.json +13 -13
- package/paginator/index.d.ts +2 -2
- package/tabs/index.d.ts +35 -14
|
@@ -503,20 +503,10 @@ class CuteLayoutControl extends CuteBaseControl {
|
|
|
503
503
|
super.ngOnChanges(changes);
|
|
504
504
|
const change = changes["breakpoint"];
|
|
505
505
|
if (change) {
|
|
506
|
-
this.
|
|
506
|
+
this._bpSubscription?.unsubscribe();
|
|
507
507
|
if (change.currentValue) {
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
bpArray = change.currentValue;
|
|
511
|
-
}
|
|
512
|
-
else {
|
|
513
|
-
bpArray = [change.currentValue];
|
|
514
|
-
}
|
|
515
|
-
const queries = bpArray.map(value => {
|
|
516
|
-
const label = bsBreakpoints.getLabel(value);
|
|
517
|
-
return bsBreakpoints.getQuery(label + "AndDown") ?? "";
|
|
518
|
-
});
|
|
519
|
-
this._subscription = this.breakpointObserver
|
|
508
|
+
const queries = bsBreakpoints.getMediaQueries(change.currentValue);
|
|
509
|
+
this._bpSubscription = this.breakpointObserver
|
|
520
510
|
.observe(queries)
|
|
521
511
|
.subscribe(state => this.breakpointState.emit(state));
|
|
522
512
|
}
|
|
@@ -524,7 +514,7 @@ class CuteLayoutControl extends CuteBaseControl {
|
|
|
524
514
|
}
|
|
525
515
|
ngOnDestroy() {
|
|
526
516
|
super.ngOnDestroy();
|
|
527
|
-
this.
|
|
517
|
+
this._bpSubscription?.unsubscribe();
|
|
528
518
|
}
|
|
529
519
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteLayoutControl, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
530
520
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.15", type: CuteLayoutControl, isStandalone: true, inputs: { clearfix: ["clearfix", "clearfix", booleanAttribute], breakpoint: "breakpoint" }, outputs: { breakpointState: "breakpointState" }, host: { properties: { "class.clearfix": "clearfix", "attr.tabindex": "-1", "attr.aria-label": "ariaLabel || null", "attr.aria-labelledby": "ariaLabelledby || null", "attr.aria-describedby": "ariaDescribedby || null", "attr.role": "role || null", "attr.id": "id || null", "class": "this.classList" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0 }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cute-widgets-base-abstract.mjs","sources":["../../../../projects/cute-widgets/base/abstract/src/base-control.directive.ts","../../../../projects/cute-widgets/base/abstract/src/focusable-control.directive.ts","../../../../projects/cute-widgets/base/abstract/src/input-control.directive.ts","../../../../projects/cute-widgets/base/abstract/src/input-dropdown-control.directive.ts","../../../../projects/cute-widgets/base/abstract/src/layout-control.directive.ts","../../../../projects/cute-widgets/base/abstract/cute-widgets-base-abstract.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {\r\n Directive,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges,\r\n Renderer2, AfterViewInit, OnInit, AfterContentInit, booleanAttribute, isDevMode, InjectionToken, DestroyRef,\r\n} from '@angular/core';\r\nimport {BooleanInput, coerceBooleanProperty} from \"@angular/cdk/coercion\";\r\nimport {Observable, Subscriber} from \"rxjs\";\r\nimport {RichThemeColor} from \"@cute-widgets/base/core\";\r\n\r\nexport interface ThematicControl {\r\n /** Theme color palette for the component. */\r\n color: RichThemeColor | undefined;\r\n /** Adds a linear gradient as background image to the backgrounds. */\r\n gradientFill: boolean;\r\n /** Default color to fall back to if no value is set. */\r\n defaultColor: RichThemeColor | undefined;\r\n}\r\n\r\nexport interface CuteWidget extends ThematicControl {\r\n id: string | undefined;\r\n role: string | undefined;\r\n element: Readonly<ElementRef<HTMLElement>>;\r\n owner: CuteWidget | null;\r\n disabled: boolean;\r\n tag: any;\r\n enable(): void;\r\n disable(): void;\r\n toggleDisabled(): void;\r\n hasClass(name: string): boolean;\r\n toggleClass(name: string, force?: boolean): boolean;\r\n getAttribute(name: string): string | null;\r\n setAttribute(name: string, value: string, namespace?: string | null | undefined): void;\r\n hasAttributes(...attributes: string[]): boolean;\r\n markForCheck(): void;\r\n}\r\n\r\n/** Widget's injection token */\r\nexport const CUTE_WIDGET = new InjectionToken<CuteWidget>(\"CUTE-WIDGET\");\r\n\r\n/**\r\n * This widget base class and each of its descendant should be used as a parent for classes decorated with `@Component`.\r\n * Attribute directives should not extend this class and its descendants to avoid property value conflicts.\r\n */\r\n@Directive({\r\n host: {\r\n 'class': 'cute-widget',\r\n '[class.cute-thematic-widget]': 'color',\r\n '[class.bg-gradient]': 'gradientFill',\r\n },\r\n providers: [{provide: CUTE_WIDGET, useExisting: CuteBaseControl}]\r\n})\r\nexport abstract class CuteBaseControl\r\n implements CuteWidget, OnInit, AfterViewInit, AfterContentInit, OnChanges, OnDestroy\r\n{\r\n private readonly _uniqueId: string | undefined;\r\n\r\n protected readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef);\r\n protected readonly _changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n protected readonly _renderer: Renderer2 = inject(Renderer2);\r\n protected readonly _destroyRef: DestroyRef = inject(DestroyRef);\r\n\r\n /** Owner widget */\r\n readonly owner = inject(CUTE_WIDGET, {skipSelf: true, optional: true})\r\n\r\n /**\r\n * A list of subscribers that subscribed before the directive was initialized.\r\n * Should be notified during markInitialized.\r\n * Set to null after pending subscribers are notified, and should\r\n * not expect to be populated after.\r\n */\r\n private _pendingSubscribers: Subscriber<void>[] | null = [];\r\n\r\n protected get _nativeElement(): HTMLElement {\r\n return this._elementRef.nativeElement;\r\n }\r\n\r\n /**\r\n * Marks the state as initialized and notifies pending subscribers. Should be called at the end\r\n * of ngOnInit.\r\n */\r\n protected _markInitialized(): void {\r\n if (this.isInitialized && isDevMode()) {\r\n throw Error('CuteBaseControl error:/r/n'\r\n +'This directive has already been marked as initialized and '\r\n +'should not be called twice.',\r\n );\r\n }\r\n\r\n this._isInitialized = true;\r\n\r\n if (this._pendingSubscribers != null) {\r\n this._pendingSubscribers.forEach(this._notifySubscriber);\r\n this._pendingSubscribers = null;\r\n }\r\n }\r\n\r\n /** Emits and completes the subscriber stream (should only emit once). */\r\n private _notifySubscriber(subscriber: Subscriber<void>): void {\r\n subscriber.next();\r\n subscriber.complete();\r\n }\r\n\r\n /**\r\n * Observable stream that emits when the directive initializes. If already initialized, the\r\n * subscriber is stored to be notified once _markInitialized is called.\r\n */\r\n readonly initialized$:Observable<void> = new Observable<void>(subscriber => {\r\n // If initialized, immediately notify the subscriber. Otherwise, store the subscriber to notify\r\n // when _markInitialized is called.\r\n if (this.isInitialized) {\r\n this._notifySubscriber(subscriber);\r\n } else {\r\n this._pendingSubscribers!.push(subscriber);\r\n }\r\n });\r\n\r\n /** Whether this directive has been marked as initialized. */\r\n get isInitialized(): boolean {\r\n return this._isInitialized;\r\n }\r\n private _isInitialized: boolean = false;\r\n\r\n /** Gets a reference to the `ElementRef` object */\r\n get element(): Readonly<ElementRef<HTMLElement>> {\r\n return this._elementRef;\r\n }\r\n\r\n /** The element's identifier */\r\n @Input()\r\n get id(): string|undefined {return this._id};\r\n set id(value: string|undefined) {this._id = value;}\r\n private _id: string | undefined;\r\n\r\n /** Default color, which is set when no value is set to the `color` property */\r\n @Input() defaultColor: RichThemeColor | undefined;\r\n\r\n /** Theme color palette for the component. */\r\n @Input()\r\n get color(): RichThemeColor|undefined { return this._color ?? this.defaultColor ?? this.owner?.color; }\r\n set color(value: RichThemeColor|undefined) { this.setColor(value); }\r\n private _color: RichThemeColor | undefined;\r\n\r\n /** Adds a linear gradient as a background image to the backgrounds */\r\n @Input({transform: booleanAttribute})\r\n gradientFill: boolean = false;\r\n\r\n /**\r\n * Makes the host element not mutable, focusable, or even submitted with the form\r\n */\r\n @Input({transform: booleanAttribute})\r\n get disabled(): boolean { return this.getDisabledState(); }\r\n set disabled(value: BooleanInput) {\r\n if (coerceBooleanProperty(value) !== this._disabled) {\r\n this.setDisabledState(value);\r\n }\r\n }\r\n private _disabled: boolean = false;\r\n\r\n /**\r\n * Attached to the aria-label attribute of the host element.In most cases, aria-labelledby will\r\n * take precedence so this may be omitted.\r\n */\r\n @Input('aria-label')\r\n ariaLabel: string | null = null;\r\n /**\r\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\r\n */\r\n @Input('aria-labelledby')\r\n ariaLabelledby: string | null = null;\r\n /**\r\n * The 'aria-describedby' attribute is read after the element's label and field type.\r\n */\r\n @Input('aria-describedby')\r\n ariaDescribedby: string | null = null;\r\n /**\r\n * The 'aria-description' attribute for the content of the element.\r\n */\r\n @Input('aria-description')\r\n ariaDescription: string | null = null;\r\n /**\r\n * Provides semantic meaning to content, allowing screen readers and other tools to present and\r\n * support interaction with an object\r\n */\r\n @Input()\r\n get role(): string | undefined {return this._role;}\r\n set role(value: string|undefined) {\r\n this._role = (typeof value == \"string\" ? value.trim().toLowerCase() : \"\") || undefined;\r\n }\r\n private _role: string | undefined;\r\n\r\n /** Any arbitrary user data */\r\n @Input()\r\n tag: any;\r\n\r\n /** Returns the unique id for the visual hidden input control */\r\n protected get inputId(): string {\r\n return `${this.id || this._uniqueId}-input`;\r\n }\r\n\r\n protected constructor() {\r\n const generatedId = this.generateId().trim();\r\n if (generatedId.length > 0) {\r\n this._id = this._uniqueId = generatedId;\r\n }\r\n }\r\n\r\n /**\r\n * Sets the type of mouse cursor using a keyword, or load a specific icon to use.\r\n * @param cursor A mouse cursor keyword or icon\r\n * @returns The current mouse cursor\r\n */\r\n // async setCursor(cursor: MouseCursor|string): Promise<MouseCursor|string> {\r\n // const oldCursor = <MouseCursor> getComputedStyle(this._nativeElement).cursor;\r\n // this._nativeElement.style.cursor = cursor;\r\n // await yieldToMain();\r\n // return oldCursor;\r\n // }\r\n\r\n /**\r\n * Whether the option is disabled. Can be overridden in descendant classes\r\n * @returns Current disabled state\r\n */\r\n protected getDisabledState(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n /**\r\n * Changes the `disabled` status of the component. Can be overridden in descendant classes\r\n * @param newState New boolean for `disabled` state\r\n * @param emitEvent Emit state change event\r\n * @returns Change result\r\n */\r\n protected setDisabledState(newState: BooleanInput, emitEvent?: boolean): boolean {\r\n const coercedState = coerceBooleanProperty(newState);\r\n if (coercedState !== this.disabled) {\r\n this._disabled = coercedState;\r\n Promise.resolve().then(()=>this.markForCheck());\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Sets a new color value. Can be overridden in descendant classes.\r\n * @param value New `ThemeColor` value\r\n * @returns Old color value\r\n */\r\n protected setColor(value: RichThemeColor | undefined): RichThemeColor | undefined {\r\n const oldColor = this._color;\r\n if (oldColor !== value) {\r\n this._color = value;\r\n this.markForCheck();\r\n }\r\n return oldColor;\r\n }\r\n\r\n /**\r\n * Returns an element's unique identifier that, if not empty, is assigned to `id` property as a default value.\r\n * Must be overridden in the descendant classes.\r\n * @abstract\r\n */\r\n protected abstract generateId(): string;\r\n\r\n /** Returns the root owner widget if it exists */\r\n getRootOwner(): CuteWidget | null {\r\n let root = this.owner;\r\n while (root) {\r\n root = root.owner;\r\n }\r\n return root;\r\n }\r\n\r\n /** Sets a property on a target element using the current Renderer implementation. */\r\n setProperty(key: string, value: unknown): void {\r\n this._renderer.setProperty(this._nativeElement, key, value);\r\n }\r\n /** Returns the value of a specified attribute on the component's host element. */\r\n getAttribute(name: string): string | null {\r\n return this._nativeElement.getAttribute(name);\r\n }\r\n /** Sets the value of an attribute on the component's host element */\r\n setAttribute(name: string, value: string, namespace?: string | null | undefined): void {\r\n this._renderer.setAttribute(this._nativeElement, name, value, namespace);\r\n }\r\n /** Gets whether the component has one of the given attributes. */\r\n hasAttributes(...attributes: string[]): boolean {\r\n return attributes.some(attribute => this._nativeElement.hasAttribute(attribute));\r\n }\r\n /** Adds a class to an element in the DOM. */\r\n addClass(name: string): void {\r\n this._renderer.addClass(this._nativeElement, name);\r\n }\r\n /** Removes a class from an element in the DOM. */\r\n removeClass(name: string): void {\r\n this._renderer.removeClass(this._nativeElement, name);\r\n }\r\n /** Returns a boolean value — _true_ if the element's class list contains the given token, otherwise _false_. */\r\n hasClass(name: string): boolean {\r\n return this._nativeElement.classList.contains(name);\r\n }\r\n /**\r\n * Adds a CSS class if it is not in the element's class list, otherwise remove it\r\n * @param name CSS class name\r\n * @param force If included, turns the toggle into a one way-only operation. If set to _false_, then the class name will only be removed, but not added. If set to _true_, then the class name will only be added, but not removed.\r\n */\r\n toggleClass(name: string, force?: boolean): boolean {\r\n return this._nativeElement.classList.toggle(name, force);\r\n }\r\n /**\r\n * Returns a boolean value indicating whether a _node_ is a descendant of the current node\r\n * @param node HTML element reference to test\r\n * @returns A boolean value that is `true` if _node_ is contained in the current node, `false` if not.\r\n * If the _node_ parameter is `null`, contains() always returns `false`.\r\n */\r\n contains(node: HTMLElement): boolean {\r\n return this._nativeElement.contains(node);\r\n }\r\n\r\n /** Enables the user interaction */\r\n enable(): void {\r\n this.disabled = false;\r\n }\r\n\r\n /** Disables the user interaction */\r\n disable(): void {\r\n this.disabled = true;\r\n }\r\n\r\n /** Explicitly marks the view as changed so that it can be checked again. */\r\n markForCheck(): void {\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n \r\n /** Checks this view and its children. */\r\n detectChanges(): void {\r\n this._changeDetectorRef.detectChanges();\r\n }\r\n\r\n /** Toggles the `disabled` state of the component */\r\n toggleDisabled(): void {\r\n this.disabled = !this.disabled;\r\n }\r\n\r\n ngOnInit() {\r\n this._markInitialized();\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n ngAfterContentInit() {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {Directive, EventEmitter, inject, Input, numberAttribute, Output} from '@angular/core';\r\nimport {FocusableOption, FocusMonitor, FocusOrigin, ListKeyManagerOption} from \"@angular/cdk/a11y\";\r\nimport {CuteBaseControl} from './base-control.directive';\r\nimport {RippleManager} from \"@cute-widgets/base/core/ripple\";\r\n\r\nfunction transformTabIndex(value: unknown): number | undefined {\r\n return value == null ? undefined : numberAttribute(value);\r\n}\r\n\r\n@Directive()\r\nexport abstract class CuteFocusableControl extends CuteBaseControl\r\n implements FocusableOption, ListKeyManagerOption\r\n{\r\n // If necessary, the `monitor` method should be called from descendant classes in one of the\r\n // directive/component's life circle methods\r\n protected readonly _focusMonitor: FocusMonitor = inject(FocusMonitor);\r\n\r\n /**\r\n * Allows making HTML elements un/focusable (usually with the Tab key, hence the name) and\r\n * determines their relative ordering for sequential focus navigation.\r\n */\r\n @Input({transform: transformTabIndex})\r\n get tabIndex(): number | undefined { return this._tabIndex; }\r\n set tabIndex(value: number | undefined) {\r\n if (value !== this._tabIndex) {\r\n this._tabIndex = value;\r\n if (this.isInitialized) {\r\n this.tabIndexChange.emit();\r\n }\r\n }\r\n }\r\n private _tabIndex: number | undefined;\r\n\r\n @Output() tabIndexChange = new EventEmitter<void>();\r\n\r\n protected constructor() {\r\n super();\r\n const tabInd = this.getAttribute(\"tabindex\");\r\n if (tabInd) {\r\n this.tabIndex = numberAttribute(tabInd, 0);\r\n }\r\n }\r\n\r\n /** Set focus on this component */\r\n focus(origin?: FocusOrigin, options?: FocusOptions): void {\r\n if (origin) {\r\n this._focusMonitor.focusVia(this._elementRef.nativeElement, origin, options);\r\n } else if (options && !Array.isArray(options)) {\r\n this._nativeElement.focus(options);\r\n } else {\r\n this._nativeElement.focus();\r\n }\r\n }\r\n\r\n /** Gets the current label of the component. Part of `ListKeyManagerOption` interface. */\r\n getLabel(): string {\r\n return (this._nativeElement.textContent||\"\").trim();\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._focusMonitor.stopMonitoring(this._elementRef);\r\n RippleManager.removeRipple(this._nativeElement);\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {booleanAttribute, Directive, Input} from '@angular/core';\r\nimport {ControlValueAccessor} from \"@angular/forms\";\r\nimport {BooleanInput, coerceBooleanProperty} from \"@angular/cdk/coercion\";\r\nimport {Subject} from \"rxjs\";\r\nimport {CuteFocusableControl} from './focusable-control.directive';\r\n\r\n@Directive()\r\nexport abstract class CuteInputControl extends CuteFocusableControl implements ControlValueAccessor {\r\n\r\n private _isTouched: boolean = false;\r\n\r\n /**\r\n * Emits whenever the component state changes and should cause the parent\r\n * form-field to update. Implemented as part of `CuteFormFieldControl`.\r\n */\r\n readonly stateChanges = new Subject<void>();\r\n\r\n protected _onChange: (value: unknown) => void = () => {};\r\n protected _onTouched: Function = ()=>{};\r\n\r\n /** The value attribute of the native input element */\r\n abstract value: any;\r\n\r\n /** Name value will be applied to the input element if present */\r\n @Input()\r\n name: string | null = null;\r\n\r\n /** Whether the element's value input is required. */\r\n @Input({transform: booleanAttribute})\r\n get required(): boolean {return this._required ?? false;}\r\n set required(newValue: BooleanInput) {\r\n this._required = coerceBooleanProperty(newValue);\r\n this.stateChanges.next();\r\n }\r\n private _required: boolean | undefined;\r\n\r\n override get id(): string|undefined {return super.id;}\r\n override set id(value: string|undefined) {\r\n if (value !== super.id) {\r\n super.id = value;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n protected constructor() { super(); }\r\n\r\n /* ControlValueAccessor interface */\r\n //++\r\n registerOnChange(fn: (value: any) => void): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouched = fn;\r\n }\r\n override setDisabledState(isDisabled: BooleanInput, emitEvent: boolean = true): boolean {\r\n const changed = super.setDisabledState(isDisabled, emitEvent);\r\n if (changed && emitEvent) {\r\n this.stateChanges.next();\r\n }\r\n return changed;\r\n }\r\n abstract writeValue(obj: any): void;\r\n //--\r\n\r\n /**\r\n * Mark widget gets a touched state\r\n * @protected\r\n */\r\n protected markAsTouched() {\r\n if (!this._isTouched) {\r\n this._onTouched();\r\n this._isTouched = true;\r\n }\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n\r\n this.stateChanges.complete();\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {Directive, Input} from \"@angular/core\";\r\nimport {CuteInputControl} from \"./input-control.directive\";\r\nimport {Expandable} from \"./expandable.interface\";\r\n\r\n@Directive()\r\nexport abstract class CuteInputDropdownControl extends CuteInputControl implements Expandable {\r\n\r\n @Input()\r\n withShadow: boolean = false;\r\n\r\n protected constructor() {\r\n super();\r\n }\r\n\r\n /** Expandable interface */\r\n abstract open(): void;\r\n abstract close(): void;\r\n abstract toggle(): void;\r\n\r\n abstract get expanded(): boolean;\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {\r\n booleanAttribute,\r\n Directive,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n Output,\r\n SimpleChanges\r\n} from \"@angular/core\";\r\nimport {CuteBaseControl} from \"./base-control.directive\";\r\nimport {bsBreakpoints, LayoutBreakpoint, toBgCssClass} from \"@cute-widgets/base/core\";\r\nimport {BreakpointObserver, BreakpointState} from '@angular/cdk/layout';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Directive({\r\n host: {\r\n '[class.clearfix]': 'clearfix',\r\n '[attr.tabindex]': '-1',\r\n '[attr.aria-label]': 'ariaLabel || null',\r\n '[attr.aria-labelledby]': 'ariaLabelledby || null',\r\n '[attr.aria-describedby]': 'ariaDescribedby || null',\r\n '[attr.role]': 'role || null',\r\n '[attr.id]': 'id || null',\r\n }\r\n})\r\nexport abstract class CuteLayoutControl extends CuteBaseControl {\r\n protected breakpointObserver = inject(BreakpointObserver);\r\n private _subscription: Subscription | undefined;\r\n\r\n /** Returns CSS-class list */\r\n @HostBinding(\"class\")\r\n protected get classList(): string {\r\n // We interpret `color` value as a background color of the container\r\n return this.color ? toBgCssClass(this.color) : \"\";\r\n }\r\n\r\n /** Clears floated content within a container */\r\n @Input({transform: booleanAttribute}) clearfix: boolean = false;\r\n\r\n /** Symbolic name of the screen minimum width which determines how the responsive layout behaves across device or viewport sizes. */\r\n @Input() breakpoint: LayoutBreakpoint | LayoutBreakpoint[] | undefined;\r\n\r\n /** Event that is raised when the width of viewport is changed and crosses the size of `breakpoint`'s value. */\r\n @Output() breakpointState = new EventEmitter<BreakpointState>();\r\n\r\n override ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n\r\n const change = changes[\"breakpoint\"];\r\n if (change) {\r\n\r\n this._subscription?.unsubscribe();\r\n\r\n if (change.currentValue) {\r\n let bpArray: string[];\r\n if (Array.isArray(change.currentValue)) {\r\n bpArray = change.currentValue;\r\n } else {\r\n bpArray = [change.currentValue];\r\n }\r\n const queries = bpArray.map(value => {\r\n const label = bsBreakpoints.getLabel(value);\r\n return bsBreakpoints.getQuery(label+\"AndDown\") ?? \"\";\r\n });\r\n this._subscription = this.breakpointObserver\r\n .observe( queries )\r\n .subscribe(state => this.breakpointState.emit(state));\r\n }\r\n }\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n\r\n this._subscription?.unsubscribe();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cute-widgets-base-abstract.mjs","sources":["../../../../projects/cute-widgets/base/abstract/src/base-control.directive.ts","../../../../projects/cute-widgets/base/abstract/src/focusable-control.directive.ts","../../../../projects/cute-widgets/base/abstract/src/input-control.directive.ts","../../../../projects/cute-widgets/base/abstract/src/input-dropdown-control.directive.ts","../../../../projects/cute-widgets/base/abstract/src/layout-control.directive.ts","../../../../projects/cute-widgets/base/abstract/cute-widgets-base-abstract.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {\r\n Directive,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n inject,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges,\r\n Renderer2, AfterViewInit, OnInit, AfterContentInit, booleanAttribute, isDevMode, InjectionToken, DestroyRef,\r\n} from '@angular/core';\r\nimport {BooleanInput, coerceBooleanProperty} from \"@angular/cdk/coercion\";\r\nimport {Observable, Subscriber} from \"rxjs\";\r\nimport {RichThemeColor} from \"@cute-widgets/base/core\";\r\n\r\nexport interface ThematicControl {\r\n /** Theme color palette for the component. */\r\n color: RichThemeColor | undefined;\r\n /** Adds a linear gradient as background image to the backgrounds. */\r\n gradientFill: boolean;\r\n /** Default color to fall back to if no value is set. */\r\n defaultColor: RichThemeColor | undefined;\r\n}\r\n\r\nexport interface CuteWidget extends ThematicControl {\r\n id: string | undefined;\r\n role: string | undefined;\r\n element: Readonly<ElementRef<HTMLElement>>;\r\n owner: CuteWidget | null;\r\n disabled: boolean;\r\n tag: any;\r\n enable(): void;\r\n disable(): void;\r\n toggleDisabled(): void;\r\n hasClass(name: string): boolean;\r\n toggleClass(name: string, force?: boolean): boolean;\r\n getAttribute(name: string): string | null;\r\n setAttribute(name: string, value: string, namespace?: string | null | undefined): void;\r\n hasAttributes(...attributes: string[]): boolean;\r\n markForCheck(): void;\r\n}\r\n\r\n/** Widget's injection token */\r\nexport const CUTE_WIDGET = new InjectionToken<CuteWidget>(\"CUTE-WIDGET\");\r\n\r\n/**\r\n * This widget base class and each of its descendant should be used as a parent for classes decorated with `@Component`.\r\n * Attribute directives should not extend this class and its descendants to avoid property value conflicts.\r\n */\r\n@Directive({\r\n host: {\r\n 'class': 'cute-widget',\r\n '[class.cute-thematic-widget]': 'color',\r\n '[class.bg-gradient]': 'gradientFill',\r\n },\r\n providers: [{provide: CUTE_WIDGET, useExisting: CuteBaseControl}]\r\n})\r\nexport abstract class CuteBaseControl\r\n implements CuteWidget, OnInit, AfterViewInit, AfterContentInit, OnChanges, OnDestroy\r\n{\r\n private readonly _uniqueId: string | undefined;\r\n\r\n protected readonly _elementRef: ElementRef<HTMLElement> = inject(ElementRef);\r\n protected readonly _changeDetectorRef: ChangeDetectorRef = inject(ChangeDetectorRef);\r\n protected readonly _renderer: Renderer2 = inject(Renderer2);\r\n protected readonly _destroyRef: DestroyRef = inject(DestroyRef);\r\n\r\n /** Owner widget */\r\n readonly owner = inject(CUTE_WIDGET, {skipSelf: true, optional: true})\r\n\r\n /**\r\n * A list of subscribers that subscribed before the directive was initialized.\r\n * Should be notified during markInitialized.\r\n * Set to null after pending subscribers are notified, and should\r\n * not expect to be populated after.\r\n */\r\n private _pendingSubscribers: Subscriber<void>[] | null = [];\r\n\r\n protected get _nativeElement(): HTMLElement {\r\n return this._elementRef.nativeElement;\r\n }\r\n\r\n /**\r\n * Marks the state as initialized and notifies pending subscribers. Should be called at the end\r\n * of ngOnInit.\r\n */\r\n protected _markInitialized(): void {\r\n if (this.isInitialized && isDevMode()) {\r\n throw Error('CuteBaseControl error:/r/n'\r\n +'This directive has already been marked as initialized and '\r\n +'should not be called twice.',\r\n );\r\n }\r\n\r\n this._isInitialized = true;\r\n\r\n if (this._pendingSubscribers != null) {\r\n this._pendingSubscribers.forEach(this._notifySubscriber);\r\n this._pendingSubscribers = null;\r\n }\r\n }\r\n\r\n /** Emits and completes the subscriber stream (should only emit once). */\r\n private _notifySubscriber(subscriber: Subscriber<void>): void {\r\n subscriber.next();\r\n subscriber.complete();\r\n }\r\n\r\n /**\r\n * Observable stream that emits when the directive initializes. If already initialized, the\r\n * subscriber is stored to be notified once _markInitialized is called.\r\n */\r\n readonly initialized$:Observable<void> = new Observable<void>(subscriber => {\r\n // If initialized, immediately notify the subscriber. Otherwise, store the subscriber to notify\r\n // when _markInitialized is called.\r\n if (this.isInitialized) {\r\n this._notifySubscriber(subscriber);\r\n } else {\r\n this._pendingSubscribers!.push(subscriber);\r\n }\r\n });\r\n\r\n /** Whether this directive has been marked as initialized. */\r\n get isInitialized(): boolean {\r\n return this._isInitialized;\r\n }\r\n private _isInitialized: boolean = false;\r\n\r\n /** Gets a reference to the `ElementRef` object */\r\n get element(): Readonly<ElementRef<HTMLElement>> {\r\n return this._elementRef;\r\n }\r\n\r\n /** The element's identifier */\r\n @Input()\r\n get id(): string|undefined {return this._id};\r\n set id(value: string|undefined) {this._id = value;}\r\n private _id: string | undefined;\r\n\r\n /** Default color, which is set when no value is set to the `color` property */\r\n @Input() defaultColor: RichThemeColor | undefined;\r\n\r\n /** Theme color palette for the component. */\r\n @Input()\r\n get color(): RichThemeColor|undefined { return this._color ?? this.defaultColor ?? this.owner?.color; }\r\n set color(value: RichThemeColor|undefined) { this.setColor(value); }\r\n private _color: RichThemeColor | undefined;\r\n\r\n /** Adds a linear gradient as a background image to the backgrounds */\r\n @Input({transform: booleanAttribute})\r\n gradientFill: boolean = false;\r\n\r\n /**\r\n * Makes the host element not mutable, focusable, or even submitted with the form\r\n */\r\n @Input({transform: booleanAttribute})\r\n get disabled(): boolean { return this.getDisabledState(); }\r\n set disabled(value: BooleanInput) {\r\n if (coerceBooleanProperty(value) !== this._disabled) {\r\n this.setDisabledState(value);\r\n }\r\n }\r\n private _disabled: boolean = false;\r\n\r\n /**\r\n * Attached to the aria-label attribute of the host element.In most cases, aria-labelledby will\r\n * take precedence so this may be omitted.\r\n */\r\n @Input('aria-label')\r\n ariaLabel: string | null = null;\r\n /**\r\n * Users can specify the `aria-labelledby` attribute which will be forwarded to the input element\r\n */\r\n @Input('aria-labelledby')\r\n ariaLabelledby: string | null = null;\r\n /**\r\n * The 'aria-describedby' attribute is read after the element's label and field type.\r\n */\r\n @Input('aria-describedby')\r\n ariaDescribedby: string | null = null;\r\n /**\r\n * The 'aria-description' attribute for the content of the element.\r\n */\r\n @Input('aria-description')\r\n ariaDescription: string | null = null;\r\n /**\r\n * Provides semantic meaning to content, allowing screen readers and other tools to present and\r\n * support interaction with an object\r\n */\r\n @Input()\r\n get role(): string | undefined {return this._role;}\r\n set role(value: string|undefined) {\r\n this._role = (typeof value == \"string\" ? value.trim().toLowerCase() : \"\") || undefined;\r\n }\r\n private _role: string | undefined;\r\n\r\n /** Any arbitrary user data */\r\n @Input()\r\n tag: any;\r\n\r\n /** Returns the unique id for the visual hidden input control */\r\n protected get inputId(): string {\r\n return `${this.id || this._uniqueId}-input`;\r\n }\r\n\r\n protected constructor() {\r\n const generatedId = this.generateId().trim();\r\n if (generatedId.length > 0) {\r\n this._id = this._uniqueId = generatedId;\r\n }\r\n }\r\n\r\n /**\r\n * Sets the type of mouse cursor using a keyword, or load a specific icon to use.\r\n * @param cursor A mouse cursor keyword or icon\r\n * @returns The current mouse cursor\r\n */\r\n // async setCursor(cursor: MouseCursor|string): Promise<MouseCursor|string> {\r\n // const oldCursor = <MouseCursor> getComputedStyle(this._nativeElement).cursor;\r\n // this._nativeElement.style.cursor = cursor;\r\n // await yieldToMain();\r\n // return oldCursor;\r\n // }\r\n\r\n /**\r\n * Whether the option is disabled. Can be overridden in descendant classes\r\n * @returns Current disabled state\r\n */\r\n protected getDisabledState(): boolean {\r\n return this._disabled;\r\n }\r\n\r\n /**\r\n * Changes the `disabled` status of the component. Can be overridden in descendant classes\r\n * @param newState New boolean for `disabled` state\r\n * @param emitEvent Emit state change event\r\n * @returns Change result\r\n */\r\n protected setDisabledState(newState: BooleanInput, emitEvent?: boolean): boolean {\r\n const coercedState = coerceBooleanProperty(newState);\r\n if (coercedState !== this.disabled) {\r\n this._disabled = coercedState;\r\n Promise.resolve().then(()=>this.markForCheck());\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Sets a new color value. Can be overridden in descendant classes.\r\n * @param value New `ThemeColor` value\r\n * @returns Old color value\r\n */\r\n protected setColor(value: RichThemeColor | undefined): RichThemeColor | undefined {\r\n const oldColor = this._color;\r\n if (oldColor !== value) {\r\n this._color = value;\r\n this.markForCheck();\r\n }\r\n return oldColor;\r\n }\r\n\r\n /**\r\n * Returns an element's unique identifier that, if not empty, is assigned to `id` property as a default value.\r\n * Must be overridden in the descendant classes.\r\n * @abstract\r\n */\r\n protected abstract generateId(): string;\r\n\r\n /** Returns the root owner widget if it exists */\r\n getRootOwner(): CuteWidget | null {\r\n let root = this.owner;\r\n while (root) {\r\n root = root.owner;\r\n }\r\n return root;\r\n }\r\n\r\n /** Sets a property on a target element using the current Renderer implementation. */\r\n setProperty(key: string, value: unknown): void {\r\n this._renderer.setProperty(this._nativeElement, key, value);\r\n }\r\n /** Returns the value of a specified attribute on the component's host element. */\r\n getAttribute(name: string): string | null {\r\n return this._nativeElement.getAttribute(name);\r\n }\r\n /** Sets the value of an attribute on the component's host element */\r\n setAttribute(name: string, value: string, namespace?: string | null | undefined): void {\r\n this._renderer.setAttribute(this._nativeElement, name, value, namespace);\r\n }\r\n /** Gets whether the component has one of the given attributes. */\r\n hasAttributes(...attributes: string[]): boolean {\r\n return attributes.some(attribute => this._nativeElement.hasAttribute(attribute));\r\n }\r\n /** Adds a class to an element in the DOM. */\r\n addClass(name: string): void {\r\n this._renderer.addClass(this._nativeElement, name);\r\n }\r\n /** Removes a class from an element in the DOM. */\r\n removeClass(name: string): void {\r\n this._renderer.removeClass(this._nativeElement, name);\r\n }\r\n /** Returns a boolean value — _true_ if the element's class list contains the given token, otherwise _false_. */\r\n hasClass(name: string): boolean {\r\n return this._nativeElement.classList.contains(name);\r\n }\r\n /**\r\n * Adds a CSS class if it is not in the element's class list, otherwise remove it\r\n * @param name CSS class name\r\n * @param force If included, turns the toggle into a one way-only operation. If set to _false_, then the class name will only be removed, but not added. If set to _true_, then the class name will only be added, but not removed.\r\n */\r\n toggleClass(name: string, force?: boolean): boolean {\r\n return this._nativeElement.classList.toggle(name, force);\r\n }\r\n /**\r\n * Returns a boolean value indicating whether a _node_ is a descendant of the current node\r\n * @param node HTML element reference to test\r\n * @returns A boolean value that is `true` if _node_ is contained in the current node, `false` if not.\r\n * If the _node_ parameter is `null`, contains() always returns `false`.\r\n */\r\n contains(node: HTMLElement): boolean {\r\n return this._nativeElement.contains(node);\r\n }\r\n\r\n /** Enables the user interaction */\r\n enable(): void {\r\n this.disabled = false;\r\n }\r\n\r\n /** Disables the user interaction */\r\n disable(): void {\r\n this.disabled = true;\r\n }\r\n\r\n /** Explicitly marks the view as changed so that it can be checked again. */\r\n markForCheck(): void {\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n \r\n /** Checks this view and its children. */\r\n detectChanges(): void {\r\n this._changeDetectorRef.detectChanges();\r\n }\r\n\r\n /** Toggles the `disabled` state of the component */\r\n toggleDisabled(): void {\r\n this.disabled = !this.disabled;\r\n }\r\n\r\n ngOnInit() {\r\n this._markInitialized();\r\n }\r\n\r\n ngAfterViewInit() {\r\n }\r\n\r\n ngAfterContentInit() {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {Directive, EventEmitter, inject, Input, numberAttribute, Output} from '@angular/core';\r\nimport {FocusableOption, FocusMonitor, FocusOrigin, ListKeyManagerOption} from \"@angular/cdk/a11y\";\r\nimport {CuteBaseControl} from './base-control.directive';\r\nimport {RippleManager} from \"@cute-widgets/base/core/ripple\";\r\n\r\nfunction transformTabIndex(value: unknown): number | undefined {\r\n return value == null ? undefined : numberAttribute(value);\r\n}\r\n\r\n@Directive()\r\nexport abstract class CuteFocusableControl extends CuteBaseControl\r\n implements FocusableOption, ListKeyManagerOption\r\n{\r\n // If necessary, the `monitor` method should be called from descendant classes in one of the\r\n // directive/component's life circle methods\r\n protected readonly _focusMonitor: FocusMonitor = inject(FocusMonitor);\r\n\r\n /**\r\n * Allows making HTML elements un/focusable (usually with the Tab key, hence the name) and\r\n * determines their relative ordering for sequential focus navigation.\r\n */\r\n @Input({transform: transformTabIndex})\r\n get tabIndex(): number | undefined { return this._tabIndex; }\r\n set tabIndex(value: number | undefined) {\r\n if (value !== this._tabIndex) {\r\n this._tabIndex = value;\r\n if (this.isInitialized) {\r\n this.tabIndexChange.emit();\r\n }\r\n }\r\n }\r\n private _tabIndex: number | undefined;\r\n\r\n @Output() tabIndexChange = new EventEmitter<void>();\r\n\r\n protected constructor() {\r\n super();\r\n const tabInd = this.getAttribute(\"tabindex\");\r\n if (tabInd) {\r\n this.tabIndex = numberAttribute(tabInd, 0);\r\n }\r\n }\r\n\r\n /** Set focus on this component */\r\n focus(origin?: FocusOrigin, options?: FocusOptions): void {\r\n if (origin) {\r\n this._focusMonitor.focusVia(this._elementRef.nativeElement, origin, options);\r\n } else if (options && !Array.isArray(options)) {\r\n this._nativeElement.focus(options);\r\n } else {\r\n this._nativeElement.focus();\r\n }\r\n }\r\n\r\n /** Gets the current label of the component. Part of `ListKeyManagerOption` interface. */\r\n getLabel(): string {\r\n return (this._nativeElement.textContent||\"\").trim();\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._focusMonitor.stopMonitoring(this._elementRef);\r\n RippleManager.removeRipple(this._nativeElement);\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {booleanAttribute, Directive, Input} from '@angular/core';\r\nimport {ControlValueAccessor} from \"@angular/forms\";\r\nimport {BooleanInput, coerceBooleanProperty} from \"@angular/cdk/coercion\";\r\nimport {Subject} from \"rxjs\";\r\nimport {CuteFocusableControl} from './focusable-control.directive';\r\n\r\n@Directive()\r\nexport abstract class CuteInputControl extends CuteFocusableControl implements ControlValueAccessor {\r\n\r\n private _isTouched: boolean = false;\r\n\r\n /**\r\n * Emits whenever the component state changes and should cause the parent\r\n * form-field to update. Implemented as part of `CuteFormFieldControl`.\r\n */\r\n readonly stateChanges = new Subject<void>();\r\n\r\n protected _onChange: (value: unknown) => void = () => {};\r\n protected _onTouched: Function = ()=>{};\r\n\r\n /** The value attribute of the native input element */\r\n abstract value: any;\r\n\r\n /** Name value will be applied to the input element if present */\r\n @Input()\r\n name: string | null = null;\r\n\r\n /** Whether the element's value input is required. */\r\n @Input({transform: booleanAttribute})\r\n get required(): boolean {return this._required ?? false;}\r\n set required(newValue: BooleanInput) {\r\n this._required = coerceBooleanProperty(newValue);\r\n this.stateChanges.next();\r\n }\r\n private _required: boolean | undefined;\r\n\r\n override get id(): string|undefined {return super.id;}\r\n override set id(value: string|undefined) {\r\n if (value !== super.id) {\r\n super.id = value;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n protected constructor() { super(); }\r\n\r\n /* ControlValueAccessor interface */\r\n //++\r\n registerOnChange(fn: (value: any) => void): void {\r\n this._onChange = fn;\r\n }\r\n registerOnTouched(fn: () => void): void {\r\n this._onTouched = fn;\r\n }\r\n override setDisabledState(isDisabled: BooleanInput, emitEvent: boolean = true): boolean {\r\n const changed = super.setDisabledState(isDisabled, emitEvent);\r\n if (changed && emitEvent) {\r\n this.stateChanges.next();\r\n }\r\n return changed;\r\n }\r\n abstract writeValue(obj: any): void;\r\n //--\r\n\r\n /**\r\n * Mark widget gets a touched state\r\n * @protected\r\n */\r\n protected markAsTouched() {\r\n if (!this._isTouched) {\r\n this._onTouched();\r\n this._isTouched = true;\r\n }\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n\r\n this.stateChanges.complete();\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {Directive, Input} from \"@angular/core\";\r\nimport {CuteInputControl} from \"./input-control.directive\";\r\nimport {Expandable} from \"./expandable.interface\";\r\n\r\n@Directive()\r\nexport abstract class CuteInputDropdownControl extends CuteInputControl implements Expandable {\r\n\r\n @Input()\r\n withShadow: boolean = false;\r\n\r\n protected constructor() {\r\n super();\r\n }\r\n\r\n /** Expandable interface */\r\n abstract open(): void;\r\n abstract close(): void;\r\n abstract toggle(): void;\r\n\r\n abstract get expanded(): boolean;\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {\r\n booleanAttribute,\r\n Directive,\r\n EventEmitter,\r\n HostBinding,\r\n inject,\r\n Input,\r\n Output,\r\n SimpleChanges\r\n} from \"@angular/core\";\r\nimport {CuteBaseControl} from \"./base-control.directive\";\r\nimport {bsBreakpoints, LayoutBreakpoint, toBgCssClass} from \"@cute-widgets/base/core\";\r\nimport {BreakpointObserver, BreakpointState} from '@angular/cdk/layout';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Directive({\r\n host: {\r\n '[class.clearfix]': 'clearfix',\r\n '[attr.tabindex]': '-1',\r\n '[attr.aria-label]': 'ariaLabel || null',\r\n '[attr.aria-labelledby]': 'ariaLabelledby || null',\r\n '[attr.aria-describedby]': 'ariaDescribedby || null',\r\n '[attr.role]': 'role || null',\r\n '[attr.id]': 'id || null',\r\n }\r\n})\r\nexport abstract class CuteLayoutControl extends CuteBaseControl {\r\n protected breakpointObserver = inject(BreakpointObserver);\r\n private _bpSubscription: Subscription | undefined;\r\n\r\n /** Returns CSS-class list */\r\n @HostBinding(\"class\")\r\n protected get classList(): string {\r\n // We interpret `color` value as a background color of the container\r\n return this.color ? toBgCssClass(this.color) : \"\";\r\n }\r\n\r\n /** Clears floated content within a container */\r\n @Input({transform: booleanAttribute}) clearfix: boolean = false;\r\n\r\n /** Symbolic name of the screen minimum width which determines how the responsive layout behaves across device or viewport sizes. */\r\n @Input() breakpoint: LayoutBreakpoint | LayoutBreakpoint[] | undefined;\r\n\r\n /** Event that is raised when the width of viewport is changed and crosses the size of `breakpoint`'s value. */\r\n @Output() breakpointState = new EventEmitter<BreakpointState>();\r\n\r\n override ngOnChanges(changes: SimpleChanges) {\r\n super.ngOnChanges(changes);\r\n\r\n const change = changes[\"breakpoint\"];\r\n if (change) {\r\n\r\n this._bpSubscription?.unsubscribe();\r\n\r\n if (change.currentValue) {\r\n const queries = bsBreakpoints.getMediaQueries(change.currentValue);\r\n\r\n this._bpSubscription = this.breakpointObserver\r\n .observe( queries )\r\n .subscribe(state => this.breakpointState.emit(state));\r\n }\r\n }\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n\r\n this._bpSubscription?.unsubscribe();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { InjectionToken, forwardRef, inject, EventEmitter, isDevMode, booleanAttribute, Output, Input, ContentChildren, Directive, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
|
|
3
|
-
import { CuteButtonGroup, CuteButtonBase, CUTE_BUTTON_BASE } from '@cute-widgets/base/button';
|
|
3
|
+
import { CuteButtonGroup, CUTE_BUTTON_GROUP, CuteButtonBase, CUTE_BUTTON_BASE } from '@cute-widgets/base/button';
|
|
4
4
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
5
5
|
import { SelectionModel } from '@angular/cdk/collections';
|
|
6
6
|
import { hasModifierKey, RIGHT_ARROW, DOWN_ARROW, LEFT_ARROW, UP_ARROW, ENTER, SPACE } from '@angular/cdk/keycodes';
|
|
@@ -152,6 +152,14 @@ class CuteButtonToggleGroup extends CuteButtonGroup {
|
|
|
152
152
|
this._markButtonsForCheck();
|
|
153
153
|
}
|
|
154
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Implemented as part of ControlValueAccessor.
|
|
157
|
+
*
|
|
158
|
+
* @inheritDoc
|
|
159
|
+
*/
|
|
160
|
+
setDisabledState(newState, emitEvent) {
|
|
161
|
+
return super.setDisabledState(newState, emitEvent);
|
|
162
|
+
}
|
|
155
163
|
/**
|
|
156
164
|
* Sets the model value. Implemented as part of ControlValueAccessor.
|
|
157
165
|
* @param value Value to be set to the model.
|
|
@@ -168,14 +176,6 @@ class CuteButtonToggleGroup extends CuteButtonGroup {
|
|
|
168
176
|
registerOnTouched(fn) {
|
|
169
177
|
this._onTouched = fn;
|
|
170
178
|
}
|
|
171
|
-
// Implemented as part of ControlValueAccessor.
|
|
172
|
-
setDisabledState(isDisabled) {
|
|
173
|
-
if (super.setDisabledState(isDisabled)) {
|
|
174
|
-
this._buttonToggles?.forEach(toggle => toggle.disabled = isDisabled);
|
|
175
|
-
this._markButtonsForCheck();
|
|
176
|
-
}
|
|
177
|
-
return false;
|
|
178
|
-
}
|
|
179
179
|
/** Handle keydown event calling to single-select button toggle. */
|
|
180
180
|
_keydown(event) {
|
|
181
181
|
if (this.multiple || this.disabled || hasModifierKey(event) || !this._buttonToggles) {
|
|
@@ -351,13 +351,10 @@ class CuteButtonToggleGroup extends CuteButtonGroup {
|
|
|
351
351
|
// it is used by Angular to sync up the two-way data binding.
|
|
352
352
|
this.valueChange.emit(this.value);
|
|
353
353
|
}
|
|
354
|
-
/** Marks all the child button toggles to be checked. */
|
|
355
|
-
_markButtonsForCheck() {
|
|
356
|
-
this._buttonToggles?.forEach(toggle => toggle.markForCheck());
|
|
357
|
-
}
|
|
358
354
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteButtonToggleGroup, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
359
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.15", type: CuteButtonToggleGroup, isStandalone: true, selector: "cute-button-toggle-group", inputs: { name: "name", value: "value", multiple: ["multiple", "multiple", booleanAttribute], disabledInteractive: ["disabledInteractive", "disabledInteractive", booleanAttribute], hideSingleSelectionIndicator: ["hideSingleSelectionIndicator", "hideSingleSelectionIndicator", booleanAttribute], hideMultipleSelectionIndicator: ["hideMultipleSelectionIndicator", "hideMultipleSelectionIndicator", booleanAttribute] }, outputs: { valueChange: "valueChange", change: "change" }, host: { listeners: { "keydown": "_keydown($event)" }, properties: { "attr.role": "multiple ? \"group\" : \"radiogroup\""
|
|
355
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.15", type: CuteButtonToggleGroup, isStandalone: true, selector: "cute-button-toggle-group", inputs: { name: "name", value: "value", multiple: ["multiple", "multiple", booleanAttribute], disabledInteractive: ["disabledInteractive", "disabledInteractive", booleanAttribute], hideSingleSelectionIndicator: ["hideSingleSelectionIndicator", "hideSingleSelectionIndicator", booleanAttribute], hideMultipleSelectionIndicator: ["hideMultipleSelectionIndicator", "hideMultipleSelectionIndicator", booleanAttribute] }, outputs: { valueChange: "valueChange", change: "change" }, host: { listeners: { "keydown": "_keydown($event)" }, properties: { "attr.role": "multiple ? \"group\" : \"radiogroup\"" }, classAttribute: "cute-button-toggle-group" }, providers: [
|
|
360
356
|
CUTE_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR,
|
|
357
|
+
{ provide: CUTE_BUTTON_GROUP, useExisting: CuteButtonToggleGroup },
|
|
361
358
|
{ provide: CUTE_BUTTON_TOGGLE_GROUP, useExisting: CuteButtonToggleGroup },
|
|
362
359
|
], queries: [{ propertyName: "_buttonToggles", predicate: i0.forwardRef(() => CuteButtonToggle), descendants: true }], exportAs: ["cuteButtonToggleGroup"], usesInheritance: true, ngImport: i0 }); }
|
|
363
360
|
}
|
|
@@ -365,19 +362,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
365
362
|
type: Directive,
|
|
366
363
|
args: [{
|
|
367
364
|
selector: 'cute-button-toggle-group',
|
|
368
|
-
|
|
369
|
-
CUTE_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR,
|
|
370
|
-
{ provide: CUTE_BUTTON_TOGGLE_GROUP, useExisting: CuteButtonToggleGroup },
|
|
371
|
-
],
|
|
365
|
+
exportAs: 'cuteButtonToggleGroup',
|
|
372
366
|
host: {
|
|
373
367
|
'class': 'cute-button-toggle-group',
|
|
374
368
|
'[attr.role]': 'multiple ? "group" : "radiogroup"',
|
|
375
|
-
'[attr.aria-disabled]': 'disabled',
|
|
376
|
-
'[attr.tabindex]': '-1',
|
|
377
369
|
'(keydown)': '_keydown($event)',
|
|
378
370
|
},
|
|
379
|
-
|
|
380
|
-
|
|
371
|
+
providers: [
|
|
372
|
+
CUTE_BUTTON_TOGGLE_GROUP_VALUE_ACCESSOR,
|
|
373
|
+
{ provide: CUTE_BUTTON_GROUP, useExisting: CuteButtonToggleGroup },
|
|
374
|
+
{ provide: CUTE_BUTTON_TOGGLE_GROUP, useExisting: CuteButtonToggleGroup },
|
|
375
|
+
],
|
|
381
376
|
}]
|
|
382
377
|
}], ctorParameters: () => [], propDecorators: { _buttonToggles: [{
|
|
383
378
|
type: ContentChildren,
|
|
@@ -480,6 +475,8 @@ class CuteButtonToggle extends CuteButtonBase {
|
|
|
480
475
|
super();
|
|
481
476
|
this._animationDisabled = _animationsDisabled();
|
|
482
477
|
this._multiple = true;
|
|
478
|
+
/** The parent button toggle group (exclusive selection). Optional. */
|
|
479
|
+
this.buttonToggleGroup = null;
|
|
483
480
|
this._checked = false;
|
|
484
481
|
/** Event emitted when the group value changes. */
|
|
485
482
|
this.change = new EventEmitter();
|
|
@@ -489,6 +486,8 @@ class CuteButtonToggle extends CuteButtonBase {
|
|
|
489
486
|
const defaultOptions = inject(CUTE_BUTTON_TOGGLE_DEFAULT_OPTIONS, { optional: true });
|
|
490
487
|
//this._tabIndex = parseInt(defaultTabIndex) || 0;
|
|
491
488
|
this.buttonToggleGroup = toggleGroup;
|
|
489
|
+
if (!toggleGroup)
|
|
490
|
+
this.inputButtonStyle = "outline-button";
|
|
492
491
|
this.disabledInteractive = defaultOptions?.disabledInteractive ?? false;
|
|
493
492
|
}
|
|
494
493
|
ngOnInit() {
|
|
@@ -548,7 +547,7 @@ class CuteButtonToggle extends CuteButtonBase {
|
|
|
548
547
|
}
|
|
549
548
|
}
|
|
550
549
|
if (this.isSingleSelector()) {
|
|
551
|
-
const focusable = this.buttonToggleGroup
|
|
550
|
+
const focusable = this.buttonToggleGroup?._buttonToggles?.find(toggle => {
|
|
552
551
|
return toggle.tabIndex === 0;
|
|
553
552
|
});
|
|
554
553
|
// Modify the tabindex attribute of the last focusable button toggle to -1.
|
|
@@ -563,26 +562,34 @@ class CuteButtonToggle extends CuteButtonBase {
|
|
|
563
562
|
}
|
|
564
563
|
/** Gets the name that should be assigned to the inner DOM node. */
|
|
565
564
|
_getButtonName() {
|
|
566
|
-
if (this.isSingleSelector()) {
|
|
565
|
+
if (this.buttonToggleGroup && this.isSingleSelector()) {
|
|
567
566
|
return this.buttonToggleGroup.name;
|
|
568
567
|
}
|
|
569
568
|
return this.name || null;
|
|
570
569
|
}
|
|
571
570
|
/** Whether the toggle is in single selection mode. */
|
|
572
571
|
isSingleSelector() {
|
|
573
|
-
return this.buttonToggleGroup && !this.buttonToggleGroup.multiple;
|
|
572
|
+
return (this.buttonToggleGroup && !this.buttonToggleGroup.multiple) ?? false;
|
|
574
573
|
}
|
|
575
574
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteButtonToggle, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
576
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: CuteButtonToggle, isStandalone: true, selector: "cute-button-toggle", inputs: { name: "name", value: "value", checked: ["checked", "checked", booleanAttribute] }, outputs: { change: "change" }, host: { listeners: { "focus": "focus()", "click": "_onButtonClick()" }, properties: { "class.cute-button-toggle-standalone": "!buttonToggleGroup", "class.active": "checked", "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.name": "null", "style.--bs-btn-hover-color": "'var(--bs-'+toThemeColor(color)+'-text-emphasis)'" }, classAttribute: "cute-button-toggle" }, providers: [
|
|
575
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: CuteButtonToggle, isStandalone: true, selector: "cute-button-toggle", inputs: { name: "name", value: "value", checked: ["checked", "checked", booleanAttribute] }, outputs: { change: "change" }, host: { listeners: { "focus": "focus()", "click": "_onButtonClick()" }, properties: { "class.cute-button-toggle-standalone": "!buttonToggleGroup", "class.active": "checked", "class.disabled": "disabled", "class.cute-button-disabled-interactive": "disabledInteractive", "class.cute-button-checked-disabled": "checked && disabled", "class.cute-unthemed": "!color", "attr.disabled": "_getDisabledAttribute()", "attr.aria-disabled": "_getAriaDisabled()", "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.name": "null", "style.--bs-btn-hover-color": "'var(--bs-'+toThemeColor(color)+'-text-emphasis)'" }, classAttribute: "cute-button-toggle cute-button" }, providers: [
|
|
577
576
|
{ provide: CUTE_BUTTON_BASE, useExisting: CuteButtonToggle }
|
|
578
|
-
], exportAs: ["cuteButtonToggle"], usesInheritance: true, ngImport: i0, template: "<!--\r\n For capturing HTML-elements such as <i class..> or <img src=\"\"...> and others\r\n we need apply [cuteButtonIcon] attribute to them.\r\n-->\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons:not([iconPositionEnd]),\r\n .bi:not([iconPositionEnd]),\r\n cute-icon:not([iconPositionEnd]),\r\n cute-avatar:not([iconPositionEnd]),\r\n [cuteButtonIcon]:not([iconPositionEnd])\">\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-button-label\" [class.cute-button-label__wrap]=\"wrapLabel\">\r\n <ng-content>\r\n @if(visuallyHiddenLabel) {\r\n <span class=\"visually-hidden\"> {{visuallyHiddenLabel}} </span>\r\n }\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons[iconPositionEnd],\r\n .bi:[iconPositionEnd],\r\n cute-icon[iconPositionEnd],\r\n cute-avatar:[iconPositionEnd],\r\n [cuteButtonIcon][iconPositionEnd]\">\r\n </ng-content>\r\n</span>\r\n", styles: [".cute-ripple-element{--cute-ripple-duration: .5s;--cute-ripple-bg-color: rgba(255, 255, 255, .18);position:absolute;border-radius:50%;pointer-events:none;transform:scale3d(0,0,0);animation:cute-ripple-element-animation var(--cute-ripple-duration) cubic-bezier(.65,.05,.36,1);background-color:var(--cute-ripple-bg-color);will-change:transform,opacity}@media (forced-colors: active){.cute-ripple-element{display:none}}@keyframes cute-ripple-element-animation{to{transform:scale(8);opacity:0}}.cute-button,.cute-anchor{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;overflow:visible;box-shadow:none}.cute-button:has(>:nth-child(2)),.cute-anchor:has(>:nth-child(2)){gap:.5em}.cute-button.dropdown-toggle,.cute-anchor.dropdown-toggle{gap:.375em}.cute-button.dropdown-toggle-split,.cute-anchor.dropdown-toggle-split{gap:0}.cute-button .cute-icon-wrapper,.cute-anchor .cute-icon-wrapper{display:contents}.cute-button .cute-icon-wrapper:empty,.cute-anchor .cute-icon-wrapper:empty{display:none}.cute-button .cute-button-label:not(.cute-button-label__wrap),.cute-anchor .cute-button-label:not(.cute-button-label__wrap){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cute-button .cute-button-label .badge,.cute-anchor .cute-button-label .badge{line-height:var(--bs-btn-line-height);top:0}.cute-button .cute-button-label:empty,.cute-anchor .cute-button-label:empty{display:none}.cute-button.cute-button-disabled-interactive,.cute-anchor.cute-button-disabled-interactive{cursor:pointer}.cute-button.cute-button-disabled-interactive:disabled,.cute-button.cute-button-disabled-interactive.disabled,.cute-anchor.cute-button-disabled-interactive:disabled,.cute-anchor.cute-button-disabled-interactive.disabled{pointer-events:auto;cursor:default;box-shadow:none;--bs-btn-active-bg: var(--bs-btn-disabled-bg);--bs-btn-active-border-color: var(--bs-btn-disabled-border-color);--bs-btn-active-color: var(--bs-btn-disabled-color)}.cute-button.cute-button-disabled-interactive:disabled.cute-icon-button,.cute-button.cute-button-disabled-interactive.disabled.cute-icon-button,.cute-anchor.cute-button-disabled-interactive:disabled.cute-icon-button,.cute-anchor.cute-button-disabled-interactive.disabled.cute-icon-button{--bs-btn-active-bg: transparent;--bs-btn-active-border-color: transparent;--bs-btn-hover-bg: transparent}.cute-button.cute-base-button,.cute-anchor.cute-base-button{font-weight:500;--cute-base-button-color-rgb: var(--bs-body-color-rgb);--bs-btn-active-bg: rgba(var(--cute-base-button-color-rgb), .08);--bs-btn-active-border-color: rgba(var(--cute-base-button-color-rgb), .12);--bs-btn-disabled-border-color: transparent;--bs-btn-hover-bg: rgba(var(--cute-base-button-color-rgb), .06)}.cute-button.cute-flat-button.cute-unthemed,.cute-anchor.cute-flat-button.cute-unthemed{--bs-btn-bg: var(--bs-tertiary-bg);--bs-btn-hover-bg: var(--bs-secondary-bg);--bs-btn-active-bg: var(--bs-secondary-bg);border-color:transparent}.cute-button.raised,.cute-anchor.raised{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}.cute-button.raised:hover,.cute-button.raised:focus,.cute-anchor.raised:hover,.cute-anchor.raised:focus{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.cute-button.raised:active,.cute-anchor.raised:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cute-button.raised:disabled,.cute-button.raised.disabled,.cute-anchor.raised:disabled,.cute-anchor.raised.disabled{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.cute-button.btn-light:disabled,.cute-button.btn-light.disabled,.cute-anchor.btn-light:disabled,.cute-anchor.btn-light.disabled{background-color:#0000001a}.cute-button>[role=img],.cute-button i[class],.cute-anchor>[role=img],.cute-anchor i[class]{align-self:center;pointer-events:none;overflow:visible}.cute-button.cute-fab-button,.cute-anchor.cute-fab-button{--icon-size: 40px;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);line-height:1;padding:0;padding-top:revert;gap:0;border-radius:50%;flex-shrink:0;-webkit-tap-highlight-color:rgba(0,0,0,0);box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.cute-button.cute-fab-button[magnitude=largest],.cute-anchor.cute-fab-button[magnitude=largest]{--icon-size: 64px}.cute-button.cute-fab-button[magnitude=larger],.cute-anchor.cute-fab-button[magnitude=larger]{--icon-size: 56px}.cute-button.cute-fab-button[magnitude=large],.cute-anchor.cute-fab-button[magnitude=large]{--icon-size: 48px}.cute-button.cute-fab-button[magnitude=middle],.cute-anchor.cute-fab-button[magnitude=middle]{--icon-size: 40px}.cute-button.cute-fab-button[magnitude=small],.cute-anchor.cute-fab-button[magnitude=small]{--icon-size: 32px}.cute-button.cute-fab-button[magnitude=smaller],.cute-anchor.cute-fab-button[magnitude=smaller]{--icon-size: 24px}.cute-button.cute-fab-button[magnitude=smallest],.cute-anchor.cute-fab-button[magnitude=smallest]{--icon-size: 16px}.cute-button.cute-fab-button svg,.cute-anchor.cute-fab-button svg{vertical-align:baseline}.cute-button.cute-fab-button:active,.cute-anchor.cute-fab-button:active{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.cute-button.cute-fab-button:active.btn-light,.cute-anchor.cute-fab-button:active.btn-light{border-color:#00000040}.cute-button.cute-fab-button:hover,.cute-button.cute-fab-button.cdk-focused,.cute-anchor.cute-fab-button:hover,.cute-anchor.cute-fab-button.cdk-focused{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cute-button.cute-fab-button:disabled,.cute-button.cute-fab-button.disabled,.cute-anchor.cute-fab-button:disabled,.cute-anchor.cute-fab-button.disabled{border:0;box-shadow:none}.cute-button.cute-fab-button:disabled>[role=img],.cute-button.cute-fab-button:disabled i[class],.cute-button.cute-fab-button.disabled>[role=img],.cute-button.cute-fab-button.disabled i[class],.cute-anchor.cute-fab-button:disabled>[role=img],.cute-anchor.cute-fab-button:disabled i[class],.cute-anchor.cute-fab-button.disabled>[role=img],.cute-anchor.cute-fab-button.disabled i[class]{color:#00000061!important}.cute-button.cute-icon-button,.cute-anchor.cute-icon-button{overflow:hidden;border-radius:50%;border:0;padding:0;gap:0!important;--icon-size: 40px;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);line-height:1;--cute-icon-button-color-rgb: var(--bs-body-color-rgb);--bs-btn-active-bg: rgba(var(--cute-icon-button-color-rgb), .12);--bs-btn-active-border-color: rgba(var(--cute-icon-button-color-rgb), .12);--bs-btn-hover-bg: rgba(var(--cute-icon-button-color-rgb), .06)}.cute-button.cute-icon-button[magnitude=largest],.cute-anchor.cute-icon-button[magnitude=largest]{--icon-size: 64px}.cute-button.cute-icon-button[magnitude=larger],.cute-anchor.cute-icon-button[magnitude=larger]{--icon-size: 56px}.cute-button.cute-icon-button[magnitude=large],.cute-anchor.cute-icon-button[magnitude=large]{--icon-size: 48px}.cute-button.cute-icon-button[magnitude=middle],.cute-anchor.cute-icon-button[magnitude=middle]{--icon-size: 40px}.cute-button.cute-icon-button[magnitude=small],.cute-anchor.cute-icon-button[magnitude=small]{--icon-size: 32px}.cute-button.cute-icon-button[magnitude=smaller],.cute-anchor.cute-icon-button[magnitude=smaller]{--icon-size: 24px}.cute-button.cute-icon-button[magnitude=smallest],.cute-anchor.cute-icon-button[magnitude=smallest]{--icon-size: 16px}.cute-button.cute-icon-button svg,.cute-anchor.cute-icon-button svg{vertical-align:baseline}.cute-button.cute-icon-button.cdk-focused,.cute-anchor.cute-icon-button.cdk-focused{--bs-btn-hover-bg: rgba(var(--cute-icon-button-color-rgb), .04)}.cute-btn-xxs,.cute-btn-group-xxs>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .5rem}.cute-btn-xs,.cute-btn-group-xs>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .75rem}.cute-btn-xl,.cute-btn-group-xl>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.5rem}.cute-btn-xxl,.cute-btn-group-xxl>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 2.5rem}[dir=rtl] .btn-group>.btn:not(:first-child):not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:last-child,[dir=rtl] .btn-group>.btn-group:not(:first-child)>.btn{border-radius:0}[dir=rtl] .btn-group>.btn:nth-child(n+3),[dir=rtl] .btn-group>:not(.btn-check)+.btn,[dir=rtl] .btn-group>.btn-group:not(:last-child)>.btn{border-radius:0 var(--bs-btn-border-radius) var(--bs-btn-border-radius) 0}[dir=rtl] .btn-group>.btn:first-child:not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:first-child,[dir=rtl] .btn-group>.btn-group:first-child>.btn{border-radius:0 var(--bs-btn-border-radius) var(--bs-btn-border-radius) 0}[dir=rtl] .btn-group>.btn:last-child:not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:last-child,[dir=rtl] .btn-group>.btn-group:last-child>.btn{border-radius:var(--bs-btn-border-radius) 0 0 var(--bs-btn-border-radius)}.cute-button-expandable{padding:.25rem .5rem;font-weight:600;color:var(--bs-emphasis-color);background-color:transparent}.cute-button-expandable:hover,.cute-button-expandable:focus{color:rgba(var(--bs-emphasis-color-rgb),.85);background-color:var(--bs-tertiary-bg)}.cute-button-expandable:before{width:1.25em;line-height:0;content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\");transition:transform .35s ease;transform-origin:.5em 50%;transform:scale(.85)}[data-bs-theme=dark] .cute-button-expandable:before{content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28255,255,255,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\")}[dir=rtl] .cute-button-expandable:before{transform:rotate(180deg) scale(.85);margin-left:.25em;text-align:end}.cute-button-expandable[aria-expanded=true]{color:rgba(var(--bs-emphasis-color-rgb),.85)}.cute-button-expandable[aria-expanded=true]:before{transform:rotate(90deg) scale(.85)}\n", ".cute-button-toggle{--bs-btn-hover-bg: transparent}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
577
|
+
], exportAs: ["cuteButtonToggle"], usesInheritance: true, ngImport: i0, template: "<!--\r\n For capturing HTML-elements such as <i class..> or <img src=\"\"...> and others\r\n we need apply [cuteButtonIcon] attribute to them.\r\n-->\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons:not([iconPositionEnd]),\r\n .bi:not([iconPositionEnd]),\r\n cute-icon:not([iconPositionEnd]),\r\n cute-avatar:not([iconPositionEnd]),\r\n [cuteButtonIcon]:not([iconPositionEnd])\">\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-button-label\" [class.cute-button-label__nowrap]=\"!wrapText\">\r\n <ng-content>\r\n @if(visuallyHiddenLabel) {\r\n <span class=\"visually-hidden\"> {{visuallyHiddenLabel}} </span>\r\n }\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons[iconPositionEnd],\r\n .bi:[iconPositionEnd],\r\n cute-icon[iconPositionEnd],\r\n cute-avatar:[iconPositionEnd],\r\n [cuteButtonIcon][iconPositionEnd]\">\r\n </ng-content>\r\n</span>\r\n", styles: [".cute-ripple-element{--cute-ripple-duration: .5s;--cute-ripple-bg-color: rgba(255, 255, 255, .18);position:absolute;border-radius:50%;pointer-events:none;transform:scale3d(0,0,0);animation:cute-ripple-element-animation var(--cute-ripple-duration) cubic-bezier(.65,.05,.36,1);background-color:var(--cute-ripple-bg-color);will-change:transform,opacity}@media (forced-colors: active){.cute-ripple-element{display:none}}@keyframes cute-ripple-element-animation{to{transform:scale(8);opacity:0}}.cute-button,.cute-anchor{position:relative;display:inline-flex;align-items:center;justify-content:center;overflow:visible;box-shadow:none}.cute-button:not(.btn-close),.cute-anchor:not(.btn-close){box-sizing:border-box}.cute-button:has(>:nth-child(2)),.cute-anchor:has(>:nth-child(2)){gap:.5em}.cute-button.dropdown-toggle,.cute-anchor.dropdown-toggle{gap:.375em}.cute-button.dropdown-toggle-split,.cute-anchor.dropdown-toggle-split{gap:0}.cute-button .cute-icon-wrapper,.cute-anchor .cute-icon-wrapper{display:contents}.cute-button .cute-icon-wrapper:empty,.cute-anchor .cute-icon-wrapper:empty{display:none}.cute-button .cute-button-label.cute-button-label__nowrap,.cute-anchor .cute-button-label.cute-button-label__nowrap{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cute-button .cute-button-label .badge,.cute-anchor .cute-button-label .badge{line-height:var(--bs-btn-line-height);top:0}.cute-button .cute-button-label:empty,.cute-anchor .cute-button-label:empty{display:none}.cute-button.cute-button-disabled-interactive,.cute-anchor.cute-button-disabled-interactive{cursor:pointer}.cute-button.cute-button-disabled-interactive:disabled,.cute-button.cute-button-disabled-interactive.disabled,.cute-anchor.cute-button-disabled-interactive:disabled,.cute-anchor.cute-button-disabled-interactive.disabled{pointer-events:auto;cursor:default;box-shadow:none;--bs-btn-active-bg: var(--bs-btn-disabled-bg);--bs-btn-active-border-color: var(--bs-btn-disabled-border-color);--bs-btn-active-color: var(--bs-btn-disabled-color)}.cute-button.cute-button-disabled-interactive:disabled.cute-icon-button,.cute-button.cute-button-disabled-interactive.disabled.cute-icon-button,.cute-anchor.cute-button-disabled-interactive:disabled.cute-icon-button,.cute-anchor.cute-button-disabled-interactive.disabled.cute-icon-button{--bs-btn-active-bg: transparent;--bs-btn-active-border-color: transparent;--bs-btn-hover-bg: transparent}.cute-button.cute-base-button,.cute-anchor.cute-base-button{font-weight:500;--cute-base-button-color-rgb: var(--bs-body-color-rgb);--bs-btn-active-bg: rgba(var(--cute-base-button-color-rgb), .08);--bs-btn-active-border-color: rgba(var(--cute-base-button-color-rgb), .12);--bs-btn-disabled-border-color: transparent;--bs-btn-hover-bg: rgba(var(--cute-base-button-color-rgb), .06)}.cute-button.cute-flat-button.cute-unthemed,.cute-anchor.cute-flat-button.cute-unthemed{--bs-btn-bg: var(--bs-tertiary-bg);--bs-btn-hover-bg: var(--bs-secondary-bg);--bs-btn-active-bg: var(--bs-secondary-bg);border-color:transparent}.cute-button.raised,.cute-anchor.raised{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}.cute-button.raised:hover,.cute-button.raised:focus,.cute-anchor.raised:hover,.cute-anchor.raised:focus{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.cute-button.raised:active,.cute-anchor.raised:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cute-button.raised:disabled,.cute-button.raised.disabled,.cute-anchor.raised:disabled,.cute-anchor.raised.disabled{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.cute-button.btn-light:disabled,.cute-button.btn-light.disabled,.cute-anchor.btn-light:disabled,.cute-anchor.btn-light.disabled{background-color:#0000001a}.cute-button>[role=img],.cute-button i[class],.cute-anchor>[role=img],.cute-anchor i[class]{align-self:center;pointer-events:none;overflow:visible}.cute-button.cute-fab-button,.cute-anchor.cute-fab-button{--icon-size: 40px;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);line-height:1;padding:0;padding-top:revert;gap:0;border-radius:50%;flex-shrink:0;-webkit-tap-highlight-color:rgba(0,0,0,0);box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.cute-button.cute-fab-button[magnitude=largest],.cute-anchor.cute-fab-button[magnitude=largest]{--icon-size: 64px}.cute-button.cute-fab-button[magnitude=larger],.cute-anchor.cute-fab-button[magnitude=larger]{--icon-size: 56px}.cute-button.cute-fab-button[magnitude=large],.cute-anchor.cute-fab-button[magnitude=large]{--icon-size: 48px}.cute-button.cute-fab-button[magnitude=middle],.cute-anchor.cute-fab-button[magnitude=middle]{--icon-size: 40px}.cute-button.cute-fab-button[magnitude=small],.cute-anchor.cute-fab-button[magnitude=small]{--icon-size: 32px}.cute-button.cute-fab-button[magnitude=smaller],.cute-anchor.cute-fab-button[magnitude=smaller]{--icon-size: 24px}.cute-button.cute-fab-button[magnitude=smallest],.cute-anchor.cute-fab-button[magnitude=smallest]{--icon-size: 16px}.cute-button.cute-fab-button svg,.cute-anchor.cute-fab-button svg{vertical-align:baseline}.cute-button.cute-fab-button:active,.cute-anchor.cute-fab-button:active{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.cute-button.cute-fab-button:active.btn-light,.cute-anchor.cute-fab-button:active.btn-light{border-color:#00000040}.cute-button.cute-fab-button:hover,.cute-button.cute-fab-button.cdk-focused,.cute-anchor.cute-fab-button:hover,.cute-anchor.cute-fab-button.cdk-focused{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cute-button.cute-fab-button:disabled,.cute-button.cute-fab-button.disabled,.cute-anchor.cute-fab-button:disabled,.cute-anchor.cute-fab-button.disabled{border:0;box-shadow:none}.cute-button.cute-fab-button:disabled>[role=img],.cute-button.cute-fab-button:disabled i[class],.cute-button.cute-fab-button.disabled>[role=img],.cute-button.cute-fab-button.disabled i[class],.cute-anchor.cute-fab-button:disabled>[role=img],.cute-anchor.cute-fab-button:disabled i[class],.cute-anchor.cute-fab-button.disabled>[role=img],.cute-anchor.cute-fab-button.disabled i[class]{color:#00000061!important}.cute-button.cute-icon-button,.cute-anchor.cute-icon-button{overflow:hidden;border-radius:50%;border:0;padding:0;gap:0!important;--icon-size: 40px;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);line-height:1;--cute-icon-button-color-rgb: var(--bs-body-color-rgb);--bs-btn-active-bg: rgba(var(--cute-icon-button-color-rgb), .12);--bs-btn-active-border-color: rgba(var(--cute-icon-button-color-rgb), .12);--bs-btn-hover-bg: rgba(var(--cute-icon-button-color-rgb), .06)}.cute-button.cute-icon-button[magnitude=largest],.cute-anchor.cute-icon-button[magnitude=largest]{--icon-size: 64px}.cute-button.cute-icon-button[magnitude=larger],.cute-anchor.cute-icon-button[magnitude=larger]{--icon-size: 56px}.cute-button.cute-icon-button[magnitude=large],.cute-anchor.cute-icon-button[magnitude=large]{--icon-size: 48px}.cute-button.cute-icon-button[magnitude=middle],.cute-anchor.cute-icon-button[magnitude=middle]{--icon-size: 40px}.cute-button.cute-icon-button[magnitude=small],.cute-anchor.cute-icon-button[magnitude=small]{--icon-size: 32px}.cute-button.cute-icon-button[magnitude=smaller],.cute-anchor.cute-icon-button[magnitude=smaller]{--icon-size: 24px}.cute-button.cute-icon-button[magnitude=smallest],.cute-anchor.cute-icon-button[magnitude=smallest]{--icon-size: 16px}.cute-button.cute-icon-button svg,.cute-anchor.cute-icon-button svg{vertical-align:baseline}.cute-button.cute-icon-button.cdk-focused,.cute-anchor.cute-icon-button.cdk-focused{--bs-btn-hover-bg: rgba(var(--cute-icon-button-color-rgb), .04)}.cute-btn-xxs,.cute-btn-group-xxs>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .5rem}.cute-btn-xs,.cute-btn-group-xs>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .75rem}.cute-btn-xl,.cute-btn-group-xl>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.5rem}.cute-btn-xxl,.cute-btn-group-xxl>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 2.5rem}[dir=rtl] .btn-group>.btn:not(:first-child):not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:last-child,[dir=rtl] .btn-group>.btn-group:not(:first-child)>.btn{border-radius:0}[dir=rtl] .btn-group>.btn:nth-child(n+3),[dir=rtl] .btn-group>:not(.btn-check)+.btn,[dir=rtl] .btn-group>.btn-group:not(:last-child)>.btn{border-radius:0 var(--bs-btn-border-radius) var(--bs-btn-border-radius) 0}[dir=rtl] .btn-group>.btn:first-child:not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:first-child,[dir=rtl] .btn-group>.btn-group:first-child>.btn{border-radius:0 var(--bs-btn-border-radius) var(--bs-btn-border-radius) 0}[dir=rtl] .btn-group>.btn:last-child:not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:last-child,[dir=rtl] .btn-group>.btn-group:last-child>.btn{border-radius:var(--bs-btn-border-radius) 0 0 var(--bs-btn-border-radius)}.cute-button-expandable{padding:.25rem .5rem;font-weight:600;color:var(--bs-emphasis-color);background-color:transparent}.cute-button-expandable:hover,.cute-button-expandable:focus{color:rgba(var(--bs-emphasis-color-rgb),.85);background-color:var(--bs-tertiary-bg)}.cute-button-expandable:before{width:1.25em;line-height:0;content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\");transition:transform .35s ease;transform-origin:.5em 50%;transform:scale(.85)}[data-bs-theme=dark] .cute-button-expandable:before{content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28255,255,255,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\")}[dir=rtl] .cute-button-expandable:before{transform:rotate(180deg) scale(.85);margin-left:.25em;text-align:end}.cute-button-expandable[aria-expanded=true]{color:rgba(var(--bs-emphasis-color-rgb),.85)}.cute-button-expandable[aria-expanded=true]:before{transform:rotate(90deg) scale(.85)}\n", ".cute-button-toggle{--bs-btn-hover-bg: transparent}.cute-button-toggle.cute-button-checked-disabled{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);opacity:var(--bs-btn-disabled-opacity)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
579
578
|
}
|
|
580
579
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteButtonToggle, decorators: [{
|
|
581
580
|
type: Component,
|
|
582
581
|
args: [{ selector: 'cute-button-toggle', exportAs: 'cuteButtonToggle', host: {
|
|
583
|
-
'
|
|
582
|
+
// Many CSS properties are in CuteButton component's css file and depend on
|
|
583
|
+
// `cute-button` and `cute-anchor` CSS classes. So, we include ancestor class name `cute-button`.
|
|
584
|
+
'class': 'cute-button-toggle cute-button',
|
|
584
585
|
'[class.cute-button-toggle-standalone]': '!buttonToggleGroup',
|
|
585
586
|
'[class.active]': 'checked',
|
|
587
|
+
'[class.disabled]': 'disabled',
|
|
588
|
+
'[class.cute-button-disabled-interactive]': 'disabledInteractive',
|
|
589
|
+
'[class.cute-button-checked-disabled]': 'checked && disabled',
|
|
590
|
+
'[class.cute-unthemed]': '!color',
|
|
591
|
+
'[attr.disabled]': '_getDisabledAttribute()',
|
|
592
|
+
'[attr.aria-disabled]': '_getAriaDisabled()',
|
|
586
593
|
'[attr.aria-label]': 'null',
|
|
587
594
|
'[attr.aria-labelledby]': 'null',
|
|
588
595
|
'[attr.name]': 'null',
|
|
@@ -592,7 +599,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
592
599
|
//'role': 'presentation',
|
|
593
600
|
}, providers: [
|
|
594
601
|
{ provide: CUTE_BUTTON_BASE, useExisting: CuteButtonToggle }
|
|
595
|
-
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<!--\r\n For capturing HTML-elements such as <i class..> or <img src=\"\"...> and others\r\n we need apply [cuteButtonIcon] attribute to them.\r\n-->\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons:not([iconPositionEnd]),\r\n .bi:not([iconPositionEnd]),\r\n cute-icon:not([iconPositionEnd]),\r\n cute-avatar:not([iconPositionEnd]),\r\n [cuteButtonIcon]:not([iconPositionEnd])\">\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-button-label\" [class.cute-button-label__wrap]=\"wrapLabel\">\r\n <ng-content>\r\n @if(visuallyHiddenLabel) {\r\n <span class=\"visually-hidden\"> {{visuallyHiddenLabel}} </span>\r\n }\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons[iconPositionEnd],\r\n .bi:[iconPositionEnd],\r\n cute-icon[iconPositionEnd],\r\n cute-avatar:[iconPositionEnd],\r\n [cuteButtonIcon][iconPositionEnd]\">\r\n </ng-content>\r\n</span>\r\n", styles: [".cute-ripple-element{--cute-ripple-duration: .5s;--cute-ripple-bg-color: rgba(255, 255, 255, .18);position:absolute;border-radius:50%;pointer-events:none;transform:scale3d(0,0,0);animation:cute-ripple-element-animation var(--cute-ripple-duration) cubic-bezier(.65,.05,.36,1);background-color:var(--cute-ripple-bg-color);will-change:transform,opacity}@media (forced-colors: active){.cute-ripple-element{display:none}}@keyframes cute-ripple-element-animation{to{transform:scale(8);opacity:0}}.cute-button,.cute-anchor{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;overflow:visible;box-shadow:none}.cute-button:has(>:nth-child(2)),.cute-anchor:has(>:nth-child(2)){gap:.5em}.cute-button.dropdown-toggle,.cute-anchor.dropdown-toggle{gap:.375em}.cute-button.dropdown-toggle-split,.cute-anchor.dropdown-toggle-split{gap:0}.cute-button .cute-icon-wrapper,.cute-anchor .cute-icon-wrapper{display:contents}.cute-button .cute-icon-wrapper:empty,.cute-anchor .cute-icon-wrapper:empty{display:none}.cute-button .cute-button-label:not(.cute-button-label__wrap),.cute-anchor .cute-button-label:not(.cute-button-label__wrap){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cute-button .cute-button-label .badge,.cute-anchor .cute-button-label .badge{line-height:var(--bs-btn-line-height);top:0}.cute-button .cute-button-label:empty,.cute-anchor .cute-button-label:empty{display:none}.cute-button.cute-button-disabled-interactive,.cute-anchor.cute-button-disabled-interactive{cursor:pointer}.cute-button.cute-button-disabled-interactive:disabled,.cute-button.cute-button-disabled-interactive.disabled,.cute-anchor.cute-button-disabled-interactive:disabled,.cute-anchor.cute-button-disabled-interactive.disabled{pointer-events:auto;cursor:default;box-shadow:none;--bs-btn-active-bg: var(--bs-btn-disabled-bg);--bs-btn-active-border-color: var(--bs-btn-disabled-border-color);--bs-btn-active-color: var(--bs-btn-disabled-color)}.cute-button.cute-button-disabled-interactive:disabled.cute-icon-button,.cute-button.cute-button-disabled-interactive.disabled.cute-icon-button,.cute-anchor.cute-button-disabled-interactive:disabled.cute-icon-button,.cute-anchor.cute-button-disabled-interactive.disabled.cute-icon-button{--bs-btn-active-bg: transparent;--bs-btn-active-border-color: transparent;--bs-btn-hover-bg: transparent}.cute-button.cute-base-button,.cute-anchor.cute-base-button{font-weight:500;--cute-base-button-color-rgb: var(--bs-body-color-rgb);--bs-btn-active-bg: rgba(var(--cute-base-button-color-rgb), .08);--bs-btn-active-border-color: rgba(var(--cute-base-button-color-rgb), .12);--bs-btn-disabled-border-color: transparent;--bs-btn-hover-bg: rgba(var(--cute-base-button-color-rgb), .06)}.cute-button.cute-flat-button.cute-unthemed,.cute-anchor.cute-flat-button.cute-unthemed{--bs-btn-bg: var(--bs-tertiary-bg);--bs-btn-hover-bg: var(--bs-secondary-bg);--bs-btn-active-bg: var(--bs-secondary-bg);border-color:transparent}.cute-button.raised,.cute-anchor.raised{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}.cute-button.raised:hover,.cute-button.raised:focus,.cute-anchor.raised:hover,.cute-anchor.raised:focus{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.cute-button.raised:active,.cute-anchor.raised:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cute-button.raised:disabled,.cute-button.raised.disabled,.cute-anchor.raised:disabled,.cute-anchor.raised.disabled{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.cute-button.btn-light:disabled,.cute-button.btn-light.disabled,.cute-anchor.btn-light:disabled,.cute-anchor.btn-light.disabled{background-color:#0000001a}.cute-button>[role=img],.cute-button i[class],.cute-anchor>[role=img],.cute-anchor i[class]{align-self:center;pointer-events:none;overflow:visible}.cute-button.cute-fab-button,.cute-anchor.cute-fab-button{--icon-size: 40px;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);line-height:1;padding:0;padding-top:revert;gap:0;border-radius:50%;flex-shrink:0;-webkit-tap-highlight-color:rgba(0,0,0,0);box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.cute-button.cute-fab-button[magnitude=largest],.cute-anchor.cute-fab-button[magnitude=largest]{--icon-size: 64px}.cute-button.cute-fab-button[magnitude=larger],.cute-anchor.cute-fab-button[magnitude=larger]{--icon-size: 56px}.cute-button.cute-fab-button[magnitude=large],.cute-anchor.cute-fab-button[magnitude=large]{--icon-size: 48px}.cute-button.cute-fab-button[magnitude=middle],.cute-anchor.cute-fab-button[magnitude=middle]{--icon-size: 40px}.cute-button.cute-fab-button[magnitude=small],.cute-anchor.cute-fab-button[magnitude=small]{--icon-size: 32px}.cute-button.cute-fab-button[magnitude=smaller],.cute-anchor.cute-fab-button[magnitude=smaller]{--icon-size: 24px}.cute-button.cute-fab-button[magnitude=smallest],.cute-anchor.cute-fab-button[magnitude=smallest]{--icon-size: 16px}.cute-button.cute-fab-button svg,.cute-anchor.cute-fab-button svg{vertical-align:baseline}.cute-button.cute-fab-button:active,.cute-anchor.cute-fab-button:active{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.cute-button.cute-fab-button:active.btn-light,.cute-anchor.cute-fab-button:active.btn-light{border-color:#00000040}.cute-button.cute-fab-button:hover,.cute-button.cute-fab-button.cdk-focused,.cute-anchor.cute-fab-button:hover,.cute-anchor.cute-fab-button.cdk-focused{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cute-button.cute-fab-button:disabled,.cute-button.cute-fab-button.disabled,.cute-anchor.cute-fab-button:disabled,.cute-anchor.cute-fab-button.disabled{border:0;box-shadow:none}.cute-button.cute-fab-button:disabled>[role=img],.cute-button.cute-fab-button:disabled i[class],.cute-button.cute-fab-button.disabled>[role=img],.cute-button.cute-fab-button.disabled i[class],.cute-anchor.cute-fab-button:disabled>[role=img],.cute-anchor.cute-fab-button:disabled i[class],.cute-anchor.cute-fab-button.disabled>[role=img],.cute-anchor.cute-fab-button.disabled i[class]{color:#00000061!important}.cute-button.cute-icon-button,.cute-anchor.cute-icon-button{overflow:hidden;border-radius:50%;border:0;padding:0;gap:0!important;--icon-size: 40px;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);line-height:1;--cute-icon-button-color-rgb: var(--bs-body-color-rgb);--bs-btn-active-bg: rgba(var(--cute-icon-button-color-rgb), .12);--bs-btn-active-border-color: rgba(var(--cute-icon-button-color-rgb), .12);--bs-btn-hover-bg: rgba(var(--cute-icon-button-color-rgb), .06)}.cute-button.cute-icon-button[magnitude=largest],.cute-anchor.cute-icon-button[magnitude=largest]{--icon-size: 64px}.cute-button.cute-icon-button[magnitude=larger],.cute-anchor.cute-icon-button[magnitude=larger]{--icon-size: 56px}.cute-button.cute-icon-button[magnitude=large],.cute-anchor.cute-icon-button[magnitude=large]{--icon-size: 48px}.cute-button.cute-icon-button[magnitude=middle],.cute-anchor.cute-icon-button[magnitude=middle]{--icon-size: 40px}.cute-button.cute-icon-button[magnitude=small],.cute-anchor.cute-icon-button[magnitude=small]{--icon-size: 32px}.cute-button.cute-icon-button[magnitude=smaller],.cute-anchor.cute-icon-button[magnitude=smaller]{--icon-size: 24px}.cute-button.cute-icon-button[magnitude=smallest],.cute-anchor.cute-icon-button[magnitude=smallest]{--icon-size: 16px}.cute-button.cute-icon-button svg,.cute-anchor.cute-icon-button svg{vertical-align:baseline}.cute-button.cute-icon-button.cdk-focused,.cute-anchor.cute-icon-button.cdk-focused{--bs-btn-hover-bg: rgba(var(--cute-icon-button-color-rgb), .04)}.cute-btn-xxs,.cute-btn-group-xxs>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .5rem}.cute-btn-xs,.cute-btn-group-xs>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .75rem}.cute-btn-xl,.cute-btn-group-xl>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.5rem}.cute-btn-xxl,.cute-btn-group-xxl>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 2.5rem}[dir=rtl] .btn-group>.btn:not(:first-child):not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:last-child,[dir=rtl] .btn-group>.btn-group:not(:first-child)>.btn{border-radius:0}[dir=rtl] .btn-group>.btn:nth-child(n+3),[dir=rtl] .btn-group>:not(.btn-check)+.btn,[dir=rtl] .btn-group>.btn-group:not(:last-child)>.btn{border-radius:0 var(--bs-btn-border-radius) var(--bs-btn-border-radius) 0}[dir=rtl] .btn-group>.btn:first-child:not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:first-child,[dir=rtl] .btn-group>.btn-group:first-child>.btn{border-radius:0 var(--bs-btn-border-radius) var(--bs-btn-border-radius) 0}[dir=rtl] .btn-group>.btn:last-child:not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:last-child,[dir=rtl] .btn-group>.btn-group:last-child>.btn{border-radius:var(--bs-btn-border-radius) 0 0 var(--bs-btn-border-radius)}.cute-button-expandable{padding:.25rem .5rem;font-weight:600;color:var(--bs-emphasis-color);background-color:transparent}.cute-button-expandable:hover,.cute-button-expandable:focus{color:rgba(var(--bs-emphasis-color-rgb),.85);background-color:var(--bs-tertiary-bg)}.cute-button-expandable:before{width:1.25em;line-height:0;content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\");transition:transform .35s ease;transform-origin:.5em 50%;transform:scale(.85)}[data-bs-theme=dark] .cute-button-expandable:before{content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28255,255,255,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\")}[dir=rtl] .cute-button-expandable:before{transform:rotate(180deg) scale(.85);margin-left:.25em;text-align:end}.cute-button-expandable[aria-expanded=true]{color:rgba(var(--bs-emphasis-color-rgb),.85)}.cute-button-expandable[aria-expanded=true]:before{transform:rotate(90deg) scale(.85)}\n", ".cute-button-toggle{--bs-btn-hover-bg: transparent}\n"] }]
|
|
602
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<!--\r\n For capturing HTML-elements such as <i class..> or <img src=\"\"...> and others\r\n we need apply [cuteButtonIcon] attribute to them.\r\n-->\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons:not([iconPositionEnd]),\r\n .bi:not([iconPositionEnd]),\r\n cute-icon:not([iconPositionEnd]),\r\n cute-avatar:not([iconPositionEnd]),\r\n [cuteButtonIcon]:not([iconPositionEnd])\">\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-button-label\" [class.cute-button-label__nowrap]=\"!wrapText\">\r\n <ng-content>\r\n @if(visuallyHiddenLabel) {\r\n <span class=\"visually-hidden\"> {{visuallyHiddenLabel}} </span>\r\n }\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons[iconPositionEnd],\r\n .bi:[iconPositionEnd],\r\n cute-icon[iconPositionEnd],\r\n cute-avatar:[iconPositionEnd],\r\n [cuteButtonIcon][iconPositionEnd]\">\r\n </ng-content>\r\n</span>\r\n", styles: [".cute-ripple-element{--cute-ripple-duration: .5s;--cute-ripple-bg-color: rgba(255, 255, 255, .18);position:absolute;border-radius:50%;pointer-events:none;transform:scale3d(0,0,0);animation:cute-ripple-element-animation var(--cute-ripple-duration) cubic-bezier(.65,.05,.36,1);background-color:var(--cute-ripple-bg-color);will-change:transform,opacity}@media (forced-colors: active){.cute-ripple-element{display:none}}@keyframes cute-ripple-element-animation{to{transform:scale(8);opacity:0}}.cute-button,.cute-anchor{position:relative;display:inline-flex;align-items:center;justify-content:center;overflow:visible;box-shadow:none}.cute-button:not(.btn-close),.cute-anchor:not(.btn-close){box-sizing:border-box}.cute-button:has(>:nth-child(2)),.cute-anchor:has(>:nth-child(2)){gap:.5em}.cute-button.dropdown-toggle,.cute-anchor.dropdown-toggle{gap:.375em}.cute-button.dropdown-toggle-split,.cute-anchor.dropdown-toggle-split{gap:0}.cute-button .cute-icon-wrapper,.cute-anchor .cute-icon-wrapper{display:contents}.cute-button .cute-icon-wrapper:empty,.cute-anchor .cute-icon-wrapper:empty{display:none}.cute-button .cute-button-label.cute-button-label__nowrap,.cute-anchor .cute-button-label.cute-button-label__nowrap{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cute-button .cute-button-label .badge,.cute-anchor .cute-button-label .badge{line-height:var(--bs-btn-line-height);top:0}.cute-button .cute-button-label:empty,.cute-anchor .cute-button-label:empty{display:none}.cute-button.cute-button-disabled-interactive,.cute-anchor.cute-button-disabled-interactive{cursor:pointer}.cute-button.cute-button-disabled-interactive:disabled,.cute-button.cute-button-disabled-interactive.disabled,.cute-anchor.cute-button-disabled-interactive:disabled,.cute-anchor.cute-button-disabled-interactive.disabled{pointer-events:auto;cursor:default;box-shadow:none;--bs-btn-active-bg: var(--bs-btn-disabled-bg);--bs-btn-active-border-color: var(--bs-btn-disabled-border-color);--bs-btn-active-color: var(--bs-btn-disabled-color)}.cute-button.cute-button-disabled-interactive:disabled.cute-icon-button,.cute-button.cute-button-disabled-interactive.disabled.cute-icon-button,.cute-anchor.cute-button-disabled-interactive:disabled.cute-icon-button,.cute-anchor.cute-button-disabled-interactive.disabled.cute-icon-button{--bs-btn-active-bg: transparent;--bs-btn-active-border-color: transparent;--bs-btn-hover-bg: transparent}.cute-button.cute-base-button,.cute-anchor.cute-base-button{font-weight:500;--cute-base-button-color-rgb: var(--bs-body-color-rgb);--bs-btn-active-bg: rgba(var(--cute-base-button-color-rgb), .08);--bs-btn-active-border-color: rgba(var(--cute-base-button-color-rgb), .12);--bs-btn-disabled-border-color: transparent;--bs-btn-hover-bg: rgba(var(--cute-base-button-color-rgb), .06)}.cute-button.cute-flat-button.cute-unthemed,.cute-anchor.cute-flat-button.cute-unthemed{--bs-btn-bg: var(--bs-tertiary-bg);--bs-btn-hover-bg: var(--bs-secondary-bg);--bs-btn-active-bg: var(--bs-secondary-bg);border-color:transparent}.cute-button.raised,.cute-anchor.raised{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}.cute-button.raised:hover,.cute-button.raised:focus,.cute-anchor.raised:hover,.cute-anchor.raised:focus{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.cute-button.raised:active,.cute-anchor.raised:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cute-button.raised:disabled,.cute-button.raised.disabled,.cute-anchor.raised:disabled,.cute-anchor.raised.disabled{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.cute-button.btn-light:disabled,.cute-button.btn-light.disabled,.cute-anchor.btn-light:disabled,.cute-anchor.btn-light.disabled{background-color:#0000001a}.cute-button>[role=img],.cute-button i[class],.cute-anchor>[role=img],.cute-anchor i[class]{align-self:center;pointer-events:none;overflow:visible}.cute-button.cute-fab-button,.cute-anchor.cute-fab-button{--icon-size: 40px;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);line-height:1;padding:0;padding-top:revert;gap:0;border-radius:50%;flex-shrink:0;-webkit-tap-highlight-color:rgba(0,0,0,0);box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.cute-button.cute-fab-button[magnitude=largest],.cute-anchor.cute-fab-button[magnitude=largest]{--icon-size: 64px}.cute-button.cute-fab-button[magnitude=larger],.cute-anchor.cute-fab-button[magnitude=larger]{--icon-size: 56px}.cute-button.cute-fab-button[magnitude=large],.cute-anchor.cute-fab-button[magnitude=large]{--icon-size: 48px}.cute-button.cute-fab-button[magnitude=middle],.cute-anchor.cute-fab-button[magnitude=middle]{--icon-size: 40px}.cute-button.cute-fab-button[magnitude=small],.cute-anchor.cute-fab-button[magnitude=small]{--icon-size: 32px}.cute-button.cute-fab-button[magnitude=smaller],.cute-anchor.cute-fab-button[magnitude=smaller]{--icon-size: 24px}.cute-button.cute-fab-button[magnitude=smallest],.cute-anchor.cute-fab-button[magnitude=smallest]{--icon-size: 16px}.cute-button.cute-fab-button svg,.cute-anchor.cute-fab-button svg{vertical-align:baseline}.cute-button.cute-fab-button:active,.cute-anchor.cute-fab-button:active{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.cute-button.cute-fab-button:active.btn-light,.cute-anchor.cute-fab-button:active.btn-light{border-color:#00000040}.cute-button.cute-fab-button:hover,.cute-button.cute-fab-button.cdk-focused,.cute-anchor.cute-fab-button:hover,.cute-anchor.cute-fab-button.cdk-focused{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cute-button.cute-fab-button:disabled,.cute-button.cute-fab-button.disabled,.cute-anchor.cute-fab-button:disabled,.cute-anchor.cute-fab-button.disabled{border:0;box-shadow:none}.cute-button.cute-fab-button:disabled>[role=img],.cute-button.cute-fab-button:disabled i[class],.cute-button.cute-fab-button.disabled>[role=img],.cute-button.cute-fab-button.disabled i[class],.cute-anchor.cute-fab-button:disabled>[role=img],.cute-anchor.cute-fab-button:disabled i[class],.cute-anchor.cute-fab-button.disabled>[role=img],.cute-anchor.cute-fab-button.disabled i[class]{color:#00000061!important}.cute-button.cute-icon-button,.cute-anchor.cute-icon-button{overflow:hidden;border-radius:50%;border:0;padding:0;gap:0!important;--icon-size: 40px;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);line-height:1;--cute-icon-button-color-rgb: var(--bs-body-color-rgb);--bs-btn-active-bg: rgba(var(--cute-icon-button-color-rgb), .12);--bs-btn-active-border-color: rgba(var(--cute-icon-button-color-rgb), .12);--bs-btn-hover-bg: rgba(var(--cute-icon-button-color-rgb), .06)}.cute-button.cute-icon-button[magnitude=largest],.cute-anchor.cute-icon-button[magnitude=largest]{--icon-size: 64px}.cute-button.cute-icon-button[magnitude=larger],.cute-anchor.cute-icon-button[magnitude=larger]{--icon-size: 56px}.cute-button.cute-icon-button[magnitude=large],.cute-anchor.cute-icon-button[magnitude=large]{--icon-size: 48px}.cute-button.cute-icon-button[magnitude=middle],.cute-anchor.cute-icon-button[magnitude=middle]{--icon-size: 40px}.cute-button.cute-icon-button[magnitude=small],.cute-anchor.cute-icon-button[magnitude=small]{--icon-size: 32px}.cute-button.cute-icon-button[magnitude=smaller],.cute-anchor.cute-icon-button[magnitude=smaller]{--icon-size: 24px}.cute-button.cute-icon-button[magnitude=smallest],.cute-anchor.cute-icon-button[magnitude=smallest]{--icon-size: 16px}.cute-button.cute-icon-button svg,.cute-anchor.cute-icon-button svg{vertical-align:baseline}.cute-button.cute-icon-button.cdk-focused,.cute-anchor.cute-icon-button.cdk-focused{--bs-btn-hover-bg: rgba(var(--cute-icon-button-color-rgb), .04)}.cute-btn-xxs,.cute-btn-group-xxs>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .5rem}.cute-btn-xs,.cute-btn-group-xs>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .75rem}.cute-btn-xl,.cute-btn-group-xl>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.5rem}.cute-btn-xxl,.cute-btn-group-xxl>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 2.5rem}[dir=rtl] .btn-group>.btn:not(:first-child):not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:last-child,[dir=rtl] .btn-group>.btn-group:not(:first-child)>.btn{border-radius:0}[dir=rtl] .btn-group>.btn:nth-child(n+3),[dir=rtl] .btn-group>:not(.btn-check)+.btn,[dir=rtl] .btn-group>.btn-group:not(:last-child)>.btn{border-radius:0 var(--bs-btn-border-radius) var(--bs-btn-border-radius) 0}[dir=rtl] .btn-group>.btn:first-child:not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:first-child,[dir=rtl] .btn-group>.btn-group:first-child>.btn{border-radius:0 var(--bs-btn-border-radius) var(--bs-btn-border-radius) 0}[dir=rtl] .btn-group>.btn:last-child:not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:last-child,[dir=rtl] .btn-group>.btn-group:last-child>.btn{border-radius:var(--bs-btn-border-radius) 0 0 var(--bs-btn-border-radius)}.cute-button-expandable{padding:.25rem .5rem;font-weight:600;color:var(--bs-emphasis-color);background-color:transparent}.cute-button-expandable:hover,.cute-button-expandable:focus{color:rgba(var(--bs-emphasis-color-rgb),.85);background-color:var(--bs-tertiary-bg)}.cute-button-expandable:before{width:1.25em;line-height:0;content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\");transition:transform .35s ease;transform-origin:.5em 50%;transform:scale(.85)}[data-bs-theme=dark] .cute-button-expandable:before{content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28255,255,255,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\")}[dir=rtl] .cute-button-expandable:before{transform:rotate(180deg) scale(.85);margin-left:.25em;text-align:end}.cute-button-expandable[aria-expanded=true]{color:rgba(var(--bs-emphasis-color-rgb),.85)}.cute-button-expandable[aria-expanded=true]:before{transform:rotate(90deg) scale(.85)}\n", ".cute-button-toggle{--bs-btn-hover-bg: transparent}.cute-button-toggle.cute-button-checked-disabled{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);opacity:var(--bs-btn-disabled-opacity)}\n"] }]
|
|
596
603
|
}], ctorParameters: () => [], propDecorators: { name: [{
|
|
597
604
|
type: Input
|
|
598
605
|
}], value: [{
|