@cute-widgets/base 20.0.3 → 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.
Files changed (72) hide show
  1. package/CHANGELOG.md +31 -4
  2. package/abstract/index.d.ts +13 -4
  3. package/button/index.d.ts +47 -24
  4. package/button-toggle/index.d.ts +8 -4
  5. package/card/index.d.ts +9 -6
  6. package/collapse/index.d.ts +49 -48
  7. package/core/directives/index.d.ts +1 -31
  8. package/core/index.d.ts +41 -28
  9. package/core/interfaces/index.d.ts +1 -1
  10. package/core/layout/index.d.ts +40 -27
  11. package/core/nav/index.d.ts +1 -2
  12. package/dialog/index.d.ts +81 -57
  13. package/expansion/index.d.ts +5 -18
  14. package/fesm2022/cute-widgets-base-abstract.mjs +13 -8
  15. package/fesm2022/cute-widgets-base-abstract.mjs.map +1 -1
  16. package/fesm2022/cute-widgets-base-button-toggle.mjs +36 -29
  17. package/fesm2022/cute-widgets-base-button-toggle.mjs.map +1 -1
  18. package/fesm2022/cute-widgets-base-button.mjs +169 -104
  19. package/fesm2022/cute-widgets-base-button.mjs.map +1 -1
  20. package/fesm2022/cute-widgets-base-card.mjs +46 -29
  21. package/fesm2022/cute-widgets-base-card.mjs.map +1 -1
  22. package/fesm2022/cute-widgets-base-chips.mjs +6 -18
  23. package/fesm2022/cute-widgets-base-chips.mjs.map +1 -1
  24. package/fesm2022/cute-widgets-base-collapse.mjs +114 -126
  25. package/fesm2022/cute-widgets-base-collapse.mjs.map +1 -1
  26. package/fesm2022/cute-widgets-base-core-directives.mjs +4 -72
  27. package/fesm2022/cute-widgets-base-core-directives.mjs.map +1 -1
  28. package/fesm2022/cute-widgets-base-core-interfaces.mjs.map +1 -1
  29. package/fesm2022/cute-widgets-base-core-layout.mjs +76 -40
  30. package/fesm2022/cute-widgets-base-core-layout.mjs.map +1 -1
  31. package/fesm2022/cute-widgets-base-core-nav.mjs +1 -2
  32. package/fesm2022/cute-widgets-base-core-nav.mjs.map +1 -1
  33. package/fesm2022/cute-widgets-base-core-theming.mjs +1 -1
  34. package/fesm2022/cute-widgets-base-core-theming.mjs.map +1 -1
  35. package/fesm2022/cute-widgets-base-core.mjs +77 -41
  36. package/fesm2022/cute-widgets-base-core.mjs.map +1 -1
  37. package/fesm2022/cute-widgets-base-dialog.mjs +152 -117
  38. package/fesm2022/cute-widgets-base-dialog.mjs.map +1 -1
  39. package/fesm2022/cute-widgets-base-expansion.mjs +19 -13
  40. package/fesm2022/cute-widgets-base-expansion.mjs.map +1 -1
  41. package/fesm2022/cute-widgets-base-list.mjs +2 -2
  42. package/fesm2022/cute-widgets-base-list.mjs.map +1 -1
  43. package/fesm2022/cute-widgets-base-menu.mjs +5 -27
  44. package/fesm2022/cute-widgets-base-menu.mjs.map +1 -1
  45. package/fesm2022/cute-widgets-base-navbar.mjs +88 -42
  46. package/fesm2022/cute-widgets-base-navbar.mjs.map +1 -1
  47. package/fesm2022/cute-widgets-base-paginator.mjs +13 -11
  48. package/fesm2022/cute-widgets-base-paginator.mjs.map +1 -1
  49. package/fesm2022/cute-widgets-base-radio.mjs +1 -2
  50. package/fesm2022/cute-widgets-base-radio.mjs.map +1 -1
  51. package/fesm2022/cute-widgets-base-select.mjs +2 -2
  52. package/fesm2022/cute-widgets-base-select.mjs.map +1 -1
  53. package/fesm2022/cute-widgets-base-sidenav.mjs +31 -30
  54. package/fesm2022/cute-widgets-base-sidenav.mjs.map +1 -1
  55. package/fesm2022/cute-widgets-base-snack-bar.mjs +2 -2
  56. package/fesm2022/cute-widgets-base-snack-bar.mjs.map +1 -1
  57. package/fesm2022/cute-widgets-base-sort.mjs +60 -257
  58. package/fesm2022/cute-widgets-base-sort.mjs.map +1 -1
  59. package/fesm2022/cute-widgets-base-table.mjs +6 -3
  60. package/fesm2022/cute-widgets-base-table.mjs.map +1 -1
  61. package/fesm2022/cute-widgets-base-tabs.mjs +86 -61
  62. package/fesm2022/cute-widgets-base-tabs.mjs.map +1 -1
  63. package/fesm2022/cute-widgets-base.mjs +3 -1
  64. package/fesm2022/cute-widgets-base.mjs.map +1 -1
  65. package/navbar/index.d.ts +30 -9
  66. package/package.json +6 -5
  67. package/paginator/index.d.ts +6 -17
  68. package/radio/index.d.ts +0 -1
  69. package/sidenav/index.d.ts +1 -2
  70. package/sort/index.d.ts +22 -135
  71. package/table/index.d.ts +8 -8
  72. package/tabs/index.d.ts +35 -14
@@ -1 +1 @@
1
- {"version":3,"file":"cute-widgets-base-button.mjs","sources":["../../../../projects/cute-widgets/base/button/src/button-base.directive.ts","../../../../projects/cute-widgets/base/button/src/button.component.ts","../../../../projects/cute-widgets/base/button/src/button.component.html","../../../../projects/cute-widgets/base/button/src/button-group.directive.ts","../../../../projects/cute-widgets/base/button/src/button-toolbar.directive.ts","../../../../projects/cute-widgets/base/button/src/button.module.ts","../../../../projects/cute-widgets/base/button/cute-widgets-base-button.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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n Directive,\r\n inject,\r\n Input,\r\n NgZone,\r\n HostBinding,\r\n InjectionToken,\r\n ContentChildren,\r\n QueryList,\r\n booleanAttribute, DoCheck,\r\n} from \"@angular/core\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {CuteIcon} from \"@cute-widgets/base/icon\";\r\nimport {RelativeSize7, ThemeColor} from \"@cute-widgets/base/core\";\r\nimport {Ripple, RippleManager, RippleOptions} from \"@cute-widgets/base/core/ripple\";\r\nimport {fromEvent, Subject} from \"rxjs\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {toColorCssClass, toThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n/** Button's appearance style */\r\nexport type CuteButtonStyle =\r\n \"base-button\"\r\n |\"flat-button\"\r\n |\"outline-button\"\r\n |\"raised-button\"\r\n |\"pill-button\"\r\n |\"circle-button\"\r\n |\"close-button\"\r\n |\"icon-button\"\r\n |\"fab-button\"\r\n /** Appearance styles for Angular Material compatibility */\r\n |\"text\"\r\n |\"filled\"\r\n |\"elevated\"\r\n |\"outlined\"\r\n |\"tonal\";\r\n\r\n\r\n/** Object that can be used to configure the default options for the button component. */\r\nexport interface CuteButtonConfig {\r\n /** Whether disabled buttons should be interactive. */\r\n disabledInteractive?: boolean;\r\n\r\n /** Default palette color to apply to buttons. */\r\n color?: ThemeColor;\r\n}\r\n\r\n/** Injection token that can be used to provide the default options the button component. */\r\nexport const CUTE_BUTTON_CONFIG = new InjectionToken<CuteButtonConfig>('CUTE_BUTTON_CONFIG');\r\n\r\n/**\r\n * Injection token that can be used to reference instances of `CuteButtonBase`.\r\n * It serves as an alternative token to the actual `CuteButtonBase` class, which\r\n * could cause unnecessary retention of the class and its component metadata.\r\n */\r\nexport const CUTE_BUTTON_BASE = new InjectionToken<CuteButtonBase>(\r\n 'CuteButtonBase'\r\n);\r\n\r\n\r\n@Directive({\r\n host: {\r\n class: 'btn',\r\n '[style.--bs-focus-ring-color]': 'color? \"rgba(var(\"+bsColorVarName+\"), var(--bs-focus-ring-opacity))\" : \"var(--bs-border-color-translucent)\"',\r\n '(keydown)': '_haltDisabledEvents($event)',\r\n }\r\n})\r\nexport abstract class CuteButtonBase extends CuteFocusableControl implements DoCheck {\r\n\r\n private _cleanupClick: (() => void) | undefined;\r\n private _destroyed$ = new Subject<void>()\r\n\r\n protected readonly _ripple: Ripple;\r\n protected readonly _ngZone: NgZone = inject(NgZone);\r\n protected readonly _isAnchor: boolean = false;\r\n\r\n @ContentChildren(CuteIcon) private _icons: QueryList<CuteIcon> | undefined;\r\n\r\n /** Button's appearance style in the following format: `{style}-button` */\r\n @Input(\"cuteButton\") //, transform: (v: any): ButtonStyle=>{return !v ? \"base-button\" : v}})\r\n get inputButtonStyle(): CuteButtonStyle {return this._inputButtonStyle;}\r\n set inputButtonStyle(value: CuteButtonStyle | undefined | \"\") {\r\n this._inputButtonStyle = value || \"base-button\";\r\n\r\n // Transform Angular Material's style\r\n switch (this._inputButtonStyle) {\r\n case \"text\": this._inputButtonStyle = \"base-button\"; break;\r\n case \"elevated\": this._inputButtonStyle = \"raised-button\"; break;\r\n case \"outlined\": this._inputButtonStyle = \"outline-button\"; break;\r\n case \"filled\": this._inputButtonStyle = \"flat-button\"; break;\r\n case \"tonal\": this._inputButtonStyle = \"flat-button\"; break;\r\n }\r\n\r\n const dashPos = this._inputButtonStyle.lastIndexOf(\"-\");\r\n if (dashPos >= 0) {\r\n // Format: {style}-button\r\n this._buttonStyle = this._inputButtonStyle.substring(0, dashPos).trim().toLowerCase() || \"base\";\r\n } else {\r\n this._buttonStyle = this._inputButtonStyle;\r\n }\r\n }\r\n private _inputButtonStyle: CuteButtonStyle = \"base-button\";\r\n private _buttonStyle: string = \"base\";\r\n\r\n /** Relative size of the Button */\r\n @Input() magnitude: RelativeSize7 | undefined;\r\n\r\n /** Whether to disable text wrapping */\r\n @Input() nowrap: boolean = false;\r\n\r\n /** Whether to disable the ripple effect on button clicking */\r\n @Input()\r\n get disableRipple(): boolean {return this._ripple.disabled}\r\n set disableRipple(value: boolean) { this._ripple.disabled = value; }\r\n\r\n /** `aria-disabled` value of the button. */\r\n @Input({transform: booleanAttribute, alias: 'aria-disabled'})\r\n ariaDisabled: boolean | undefined;\r\n\r\n /** Whether to show the collapse/expand indicator based on the `aria-expanded` current value. */\r\n @Input({transform: booleanAttribute})\r\n withAriaExpandedIndicator: boolean = false;\r\n\r\n /**\r\n * Natively disabled buttons prevent focus and any pointer events from reaching the button.\r\n * In some scenarios, this might not be desirable, because it can prevent users from finding out\r\n * why the button is disabled (e.g., via tooltip).\r\n *\r\n * Enabling this input will change the button so that it is styled to be disabled and will be\r\n * marked as `aria-disabled`, but it will allow the button to receive events and focus.\r\n *\r\n * Note that by enabling this, you need to set the `tabindex` yourself if the button isn't\r\n * meant to be tabbable, and you have to prevent the button action (e.g., form submissions).\r\n */\r\n @Input({transform: booleanAttribute})\r\n get disabledInteractive(): boolean | undefined {return this._disabledInteractive;}\r\n set disabledInteractive(value: boolean | undefined) {this._disabledInteractive = value;}\r\n private _disabledInteractive: boolean | undefined;\r\n\r\n /** Label text that applied for visually hidden button */\r\n @Input()\r\n visuallyHiddenLabel: string | undefined;\r\n\r\n @HostBinding(\"class\")\r\n protected get classNames(): string {\r\n let classes = \"cute-\"+this._inputButtonStyle; // e.g. `cute-outline-button`\r\n if (this.color) {\r\n classes += [\"base\",\"close\",\"icon\"].indexOf(this.buttonStyle)==-1\r\n ? \" btn-\"+(this.buttonStyle==\"outline\" ? \"outline-\" : \"\") + toThemeColor(this.color)\r\n : this.buttonStyle==\"base\"\r\n ? (\" \" + (this.color==\"link\" ? \"btn-link\" : toColorCssClass(this.color)))\r\n : \"\";\r\n }\r\n return classes;\r\n }\r\n\r\n /** Focus shadow color for `close-button` */\r\n @HostBinding(\"style.--bs-btn-close-focus-shadow\")\r\n protected get _closeButtonShadowColor(): string {\r\n return (this.color && this.buttonStyle == \"close\") ? \"0 0 0 0.25rem rgba(var(--bs-\"+this.color+\"-rgb), 0.25)\" : \"\";\r\n }\r\n\r\n @HostBinding(\"class.cute-btn-xxl\")\r\n protected get buttonLargestBinding(): boolean {return this.magnitude == \"largest\"}\r\n @HostBinding(\"class.cute-btn-xl\")\r\n protected get buttonLargerBinding(): boolean {return this.magnitude == \"larger\"}\r\n @HostBinding(\"class.btn-lg\")\r\n protected get buttonLargeBinding(): boolean {return this.magnitude == \"large\"}\r\n @HostBinding(\"class.btn-sm\")\r\n protected get buttonSmallBinding(): boolean {return this.magnitude == \"small\"}\r\n @HostBinding(\"class.cute-btn-xs\")\r\n protected get buttonSmallerBinding(): boolean {return this.magnitude == \"smaller\"}\r\n @HostBinding(\"class.cute-btn-xxs\")\r\n protected get buttonSmallestBinding(): boolean {return this.magnitude == \"smallest\"}\r\n\r\n @HostBinding(\"style.--cute-icon-button-color-rgb\")\r\n protected get iconButtonColorBinding(): string {\r\n return this.buttonStyle==\"icon\" ? \"var(\"+(this.color ? this.bsColorVarName : \"--bs-body-color-rgb\")+\")\" : \"\";\r\n }\r\n @HostBinding(\"style.--cute-base-button-color-rgb\")\r\n protected get baseButtonColorBinding(): string {\r\n return this.buttonStyle==\"base\" ? \"var(\"+(this.color ? this.bsColorVarName : \"--bs-body-color-rgb\")+\")\" : \"\";\r\n }\r\n\r\n /** Returns button style name. */\r\n get buttonStyle(): string {\r\n return this._buttonStyle;\r\n }\r\n\r\n protected get bsColorVarName(): string {\r\n if (this.color) {\r\n if (this.color==\"link\") {\r\n return `--bs-${this.color}-color-rgb`;\r\n }\r\n return `--bs-${this.color}-rgb`;\r\n }\r\n return \"\";\r\n }\r\n\r\n protected constructor(...args: unknown[]);\r\n protected constructor() {\r\n super();\r\n const config = inject(CUTE_BUTTON_CONFIG, {optional: true});\r\n this.disabledInteractive = config?.disabledInteractive ?? false;\r\n this._ripple = RippleManager.getInstance(this._nativeElement);\r\n\r\n this._isAnchor = (this._nativeElement.tagName == \"A\");\r\n }\r\n\r\n protected override generateId(): string {\r\n return \"\"; // `cute-button-${++nextUniqueId}`;\r\n }\r\n\r\n protected _getTabIndex() {\r\n if (this._isAnchor) {\r\n return this.disabled && !this.disabledInteractive ? -1 : this.tabIndex;\r\n }\r\n return this.tabIndex;\r\n }\r\n\r\n private _setupAsAnchor() {\r\n this._cleanupClick = this._ngZone.runOutsideAngular(() =>\r\n this._renderer.listen(this._nativeElement, 'click', (event: Event) => {\r\n if (this.disabled) {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n }),\r\n );\r\n }\r\n\r\n protected override setDisabledState(newState: boolean): boolean {\r\n if (this._isAnchor) {\r\n if (newState) {\r\n this._savedTabIndex = this.tabIndex;\r\n this.tabIndex = -1;\r\n } else {\r\n this.tabIndex = this._savedTabIndex;\r\n }\r\n }\r\n return super.setDisabledState(newState);\r\n }\r\n private _savedTabIndex: number|undefined;\r\n\r\n protected _getAriaDisabled() {\r\n if (this.ariaDisabled != null) {\r\n return this.ariaDisabled;\r\n }\r\n if (this._isAnchor) {\r\n return this.disabled || null;\r\n }\r\n return this.disabled && this.disabledInteractive ? true : null;\r\n }\r\n\r\n protected _getDisabledAttribute() {\r\n //return this.disabledInteractive || !this.disabled ? null : true;\r\n return this.disabled ? true : null;\r\n }\r\n\r\n protected _haltDisabledEvents (event: Event): void {\r\n // A disabled button shouldn't apply any actions\r\n if (this.disabled && (this.disabledInteractive || this._isAnchor)) {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n };\r\n\r\n /** Whether to apply a `focus-ring` css-class to the button when it focused via keyboard interaction */\r\n protected get displayFocusRing(): boolean {\r\n return this.buttonStyle == \"base\" && this.hasClass(\"cdk-keyboard-focused\");\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this._focusMonitor.monitor(this._elementRef, true);\r\n\r\n [\"mousedown\", \"mouseup\", \"click\"].forEach((type) => {\r\n fromEvent<MouseEvent>(this._nativeElement, type, { capture: true })\r\n .pipe(takeUntil(this._destroyed$))\r\n .subscribe((ev)=> this._onMouseEvent(ev));\r\n });\r\n }\r\n\r\n override ngAfterContentInit() {\r\n super.ngAfterContentInit();\r\n\r\n if (this._icons && this.buttonStyle == \"icon\") {\r\n this._icons.forEach(icon => {icon.defaultColor = this.color;});\r\n }\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n\r\n // Some internal tests depend on the timing of this,\r\n // otherwise we could bind it in the constructor.\r\n if (this._isAnchor) {\r\n this._setupAsAnchor();\r\n }\r\n }\r\n\r\n ngDoCheck() {\r\n // This line was added due to \"Expression Changed After Checked...\" error raised if we place it in the @HostBinding\r\n this.toggleClass(\"focus-ring\", this.displayFocusRing);\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._cleanupClick?.();\r\n this._ripple.stop();\r\n this._destroyed$.next();\r\n this._destroyed$.complete();\r\n }\r\n\r\n /** mouse events handler */\r\n private _onMouseEvent(event: MouseEvent) {\r\n\r\n this._haltDisabledEvents(event);\r\n\r\n if (!event.defaultPrevented && event.type == \"mousedown\") {\r\n this._launchRipple(event);\r\n }\r\n }\r\n\r\n private _launchRipple(event: MouseEvent): void {\r\n if (this._ripple && !this._ripple.disabled) {\r\n const options: RippleOptions = {};\r\n if (this.buttonStyle == \"icon\") {\r\n options.centered = true;\r\n options.color = \"rgba(var(--cute-icon-button-color), 0.25)\";\r\n }\r\n this._ripple.launch(event, options);\r\n }\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {CuteButtonBase, CUTE_BUTTON_BASE} from \"./button-base.directive\";\r\nimport {toThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n@Component({\r\n selector: `button[cuteButton],\r\n button[cute-button],\r\n a[cuteButton],\r\n a[cute-button],\r\n `,\r\n templateUrl: './button.component.html',\r\n styleUrls: ['./button.component.scss'],\r\n exportAs: \"cuteButton\",\r\n imports: [CommonModule],\r\n host: {\r\n 'class': 'cute-button',\r\n '[class.cute-anchor]': '_isAnchor',\r\n '[class.btn-close]': 'buttonStyle == \"close\"',\r\n '[class.rounded-pill]': 'buttonStyle==\"pill\"',\r\n '[class.rounded-circle]': 'buttonStyle==\"circle\"',\r\n '[class.raised]': 'buttonStyle==\"raised\" && !disabled',\r\n '[class.icon-link]': 'toThemeColor(color)==\"link\"',\r\n '[class.cute-button-expandable]': 'withAriaExpandedIndicator',\r\n //'[class.focus-ring]': 'buttonStyle==\"base\" && hasClass(\"cdk-keyboard-focused\")', // See: CuteButtonBase.ngDoCheck()\r\n '[class.nowrap]': 'nowrap',\r\n '[class.disabled]': '(_isAnchor || buttonStyle==\"icon\" || disabledInteractive) && disabled',\r\n '[class.cute-button-disabled-interactive]': 'disabledInteractive',\r\n '[class.cute-unthemed]': '!color',\r\n '[attr.tabindex]': '_getTabIndex()', //'disabled ? -1 : tabIndex',\r\n '[attr.disabled]': '_getDisabledAttribute()',\r\n '[attr.aria-disabled]': '_getAriaDisabled()',\r\n '[attr.id]': 'id || null',\r\n '[attr.aria-label]': 'ariaLabel || null',\r\n },\r\n providers: [\r\n { provide: CUTE_BUTTON_BASE, useExisting: CuteButton }\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuteButton extends CuteButtonBase {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected readonly toThemeColor = toThemeColor;\r\n}\r\n","<!--\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\">\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","/**\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 ContentChildren,\r\n Directive,\r\n HostBinding,\r\n Input,\r\n QueryList\r\n} from \"@angular/core\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {RelativeSize5} from \"@cute-widgets/base/core/types\";\r\nimport {CUTE_BUTTON_BASE, CuteButtonBase, CuteButtonStyle} from \"./button-base.directive\";\r\nimport {BooleanInput, coerceBooleanProperty} from \"@angular/cdk/coercion\";\r\n\r\n// Counter used to generate unique IDs.\r\nlet uniqueIdCounter = 0;\r\n\r\n/**\r\n * Group a series of buttons together on a single line or stack them in a vertical column.\r\n */\r\n@Directive({\r\n selector: \"cute-button-group\",\r\n exportAs: \"cuteButtonGroup\",\r\n host: {\r\n 'role': 'group',\r\n 'class': 'cute-button-group',\r\n '[class]': '\"btn-group\" +(vertical?\"-vertical\":\"\")',\r\n '[attr.aria-label]': 'ariaLabel || null',\r\n '[attr.aria-labelledby]': 'ariaLabelledby || null',\r\n '[attr.aria-describedby]': 'ariaDescribedby || null',\r\n '[id]': 'id || null'\r\n },\r\n standalone: true\r\n})\r\nexport class CuteButtonGroup extends CuteFocusableControl {\r\n\r\n /** Whether to place the nested buttons in the vertical direction. */\r\n @Input({transform: booleanAttribute}) vertical: boolean = false;\r\n\r\n /** The relative size of the buttons group. */\r\n @Input() magnitude: RelativeSize5 | undefined;\r\n\r\n /** Default style for the content buttons */\r\n @Input() buttonStyle: CuteButtonStyle | undefined;\r\n\r\n @HostBinding(\"class.cute-btn-group-xl\")\r\n protected get buttonLargerBinding(): boolean {return this.magnitude == \"larger\"}\r\n @HostBinding(\"class.btn-group-lg\")\r\n protected get buttonLargeBinding(): boolean {return this.magnitude == \"large\"}\r\n @HostBinding(\"class.cute-btn-group-xs\")\r\n protected get buttonSmallerBinding(): boolean {return this.magnitude == \"smaller\"}\r\n @HostBinding(\"class.btn-group-sm\")\r\n protected get buttonSmallBinding(): boolean {return this.magnitude == \"small\"}\r\n\r\n /** Child buttons. */\r\n @ContentChildren(CUTE_BUTTON_BASE, {descendants: true})\r\n _buttons: QueryList<CuteButtonBase> | undefined;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected override generateId(): string {\r\n return `button-group-${++uniqueIdCounter}`;\r\n }\r\n\r\n protected override setDisabledState(newState: BooleanInput, emitEvent?: boolean): boolean {\r\n let res = super.setDisabledState(newState, emitEvent);\r\n if (res && this._buttons) {\r\n this._buttons.forEach(btn => {\r\n btn.disabled = coerceBooleanProperty(newState);\r\n });\r\n }\r\n return res;\r\n }\r\n\r\n override ngAfterContentInit() {\r\n super.ngAfterContentInit();\r\n\r\n this._buttons?.forEach(b => {\r\n b.defaultColor = this.color ?? \"primary\";\r\n b.disabled = this.disabled;\r\n if (b.buttonStyle == \"base\") {\r\n b.inputButtonStyle = this.buttonStyle ?? \"flat-button\";\r\n }\r\n });\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 {\r\n Directive,\r\n Input, numberAttribute,\r\n} from \"@angular/core\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {RelativeSize5} from \"@cute-widgets/base/core/types\";\r\n\r\n// Counter used to generate unique IDs.\r\nlet uniqueIdCounter = 0;\r\n\r\n@Directive({\r\n selector: \"cute-button-toolbar\",\r\n exportAs: \"cuteButtonToolbar\",\r\n host: {\r\n 'role': 'toolbar',\r\n 'class': 'btn-toolbar',\r\n '[class]': '\"gap-\"+gap',\r\n '[attr.gap]': 'null',\r\n '[attr.aria-label]': 'ariaLabel || null',\r\n '[attr.aria-labelledby]': 'ariaLabelledby || null',\r\n '[attr.aria-describedby]': 'ariaDescribedby || null',\r\n '[id]': 'id || null'\r\n },\r\n standalone: true\r\n})\r\nexport class CuteButtonToolbar extends CuteFocusableControl {\r\n\r\n //@Input({transform: booleanAttribute}) vertical: boolean = false;\r\n\r\n private _gap:number = 0;\r\n\r\n /** The gutter between buttons */\r\n @Input({transform: numberAttribute})\r\n get gap(): number {return this._gap;}\r\n set gap(value: number) {\r\n const MAX_GAP= 5;\r\n value = Math.round(value);\r\n if (value >= 0 && value <= MAX_GAP) {\r\n this._gap = value;\r\n } else if (value > MAX_GAP) {\r\n this._gap = MAX_GAP;\r\n } else {\r\n this._gap = 0;\r\n }\r\n }\r\n\r\n @Input() magnitude: RelativeSize5 | undefined;\r\n\r\n /** Child buttons. */\r\n //@ContentChildren(CUTE_BUTTON_BASE, {descendants: true})\r\n //_buttons: QueryList<ButtonBase> | undefined;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected override generateId(): string {\r\n return `button-toolbar-${++uniqueIdCounter}`;\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 {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CuteButton} from \"./button.component\";\r\nimport {CuteButtonGroup} from \"./button-group.directive\";\r\nimport {CuteButtonToolbar} from \"./button-toolbar.directive\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteButton,\r\n CuteButtonGroup,\r\n CuteButtonToolbar,\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: TYPES,\r\n declarations: [],\r\n})\r\nexport class CuteButtonModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uniqueIdCounter"],"mappings":"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"}
1
+ {"version":3,"file":"cute-widgets-base-button.mjs","sources":["../../../../projects/cute-widgets/base/button/src/button-group.directive.ts","../../../../projects/cute-widgets/base/button/src/button-base.directive.ts","../../../../projects/cute-widgets/base/button/src/button.component.ts","../../../../projects/cute-widgets/base/button/src/button.component.html","../../../../projects/cute-widgets/base/button/src/button-toolbar.directive.ts","../../../../projects/cute-widgets/base/button/src/button.module.ts","../../../../projects/cute-widgets/base/button/cute-widgets-base-button.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 booleanAttribute,\r\n ContentChildren,\r\n Directive, EventEmitter,\r\n HostBinding, InjectionToken,\r\n Input, Output,\r\n QueryList\r\n} from \"@angular/core\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {RelativeSize5} from \"@cute-widgets/base/core/types\";\r\nimport {CUTE_BUTTON_BASE, CuteButtonBase, CuteButtonStyle} from \"./button-base.directive\";\r\nimport {BooleanInput, coerceBooleanProperty} from \"@angular/cdk/coercion\";\r\n\r\n// Counter used to generate unique IDs.\r\nlet uniqueIdCounter = 0;\r\n\r\n/**\r\n * Injection token that can be used to reference instances of `CuteButtonGroup`.\r\n * It serves as an alternative token to the actual `CuteButtonGroup` class which\r\n * could cause unnecessary retention of the class and its component metadata.\r\n */\r\nexport const CUTE_BUTTON_GROUP = new InjectionToken<CuteButtonGroup>(\r\n 'CuteButtonGroup',\r\n);\r\n\r\n\r\n/**\r\n * Group a series of buttons together on a single line or stack them in a vertical column.\r\n */\r\n@Directive({\r\n selector: \"cute-button-group\",\r\n exportAs: \"cuteButtonGroup\",\r\n host: {\r\n 'role': 'group',\r\n 'class': 'cute-button-group',\r\n '[class]': '\"btn-group\" +(vertical?\"-vertical\":\"\")',\r\n '[class.disabled]': 'disabled',\r\n '[attr.aria-disabled]': 'disabled',\r\n '[attr.aria-label]': 'ariaLabel || null',\r\n '[attr.aria-labelledby]': 'ariaLabelledby || null',\r\n '[attr.aria-describedby]': 'ariaDescribedby || null',\r\n '[attr.tabindex]': '-1',\r\n '[id]': 'id || null'\r\n },\r\n providers: [{provide: CUTE_BUTTON_GROUP, useExisting: CuteButtonGroup}],\r\n standalone: true\r\n})\r\nexport class CuteButtonGroup extends CuteFocusableControl {\r\n\r\n /** Whether to place the nested buttons in the vertical direction. */\r\n @Input({transform: booleanAttribute}) vertical: boolean = false;\r\n\r\n /** The relative size of the buttons group. */\r\n @Input() magnitude: RelativeSize5 | undefined;\r\n\r\n /** Default style for the content buttons */\r\n @Input() buttonStyle: CuteButtonStyle | undefined;\r\n\r\n @HostBinding(\"class.cute-btn-group-xl\")\r\n protected get buttonLargerBinding(): boolean {return this.magnitude == \"larger\"}\r\n @HostBinding(\"class.btn-group-lg\")\r\n protected get buttonLargeBinding(): boolean {return this.magnitude == \"large\"}\r\n @HostBinding(\"class.cute-btn-group-xs\")\r\n protected get buttonSmallerBinding(): boolean {return this.magnitude == \"smaller\"}\r\n @HostBinding(\"class.btn-group-sm\")\r\n protected get buttonSmallBinding(): boolean {return this.magnitude == \"small\"}\r\n\r\n /** Child buttons. */\r\n @ContentChildren(CUTE_BUTTON_BASE, {descendants: true})\r\n _buttons: QueryList<CuteButtonBase> | undefined;\r\n\r\n /** Raised when the disabled state of a component group changes. */\r\n @Output() disabledChange = new EventEmitter<boolean>();\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected override generateId(): string {\r\n return `button-group-${++uniqueIdCounter}`;\r\n }\r\n\r\n // Buttons that have `disabled` states before the group is disabled as a whole. Uses to restore `disabled` states\r\n // when the group's state will be enabled again.\r\n // CuteButtonToggleGroup, as an ancestor, uses this algo too.\r\n #disablesCache = new Set<CuteButtonBase>();\r\n\r\n protected override setDisabledState(newState: BooleanInput, emitEvent?: boolean): boolean {\r\n let res = super.setDisabledState(newState, emitEvent);\r\n if (res && this._buttons) {\r\n const isDisabled = coerceBooleanProperty(newState);\r\n if (isDisabled) {\r\n this._buttons.forEach(btn => {\r\n if (btn.disabled) {\r\n this.#disablesCache.add(btn);\r\n }\r\n btn.disabled = isDisabled;\r\n });\r\n } else {\r\n this._buttons.forEach(btn => {\r\n if (!this.#disablesCache.has(btn)) {\r\n btn.disabled = false;\r\n }\r\n });\r\n this.#disablesCache.clear();\r\n }\r\n\r\n this._markButtonsForCheck();\r\n\r\n this.disabledChange.emit(isDisabled);\r\n }\r\n return res;\r\n }\r\n\r\n override ngAfterContentInit() {\r\n super.ngAfterContentInit();\r\n\r\n this._buttons?.forEach(b => {\r\n b.defaultColor = this.color ?? \"primary\";\r\n\r\n if (this.disabled) {\r\n b.disabled = this.disabled;\r\n }\r\n\r\n if (b.buttonStyle == \"base\") {\r\n b.inputButtonStyle = this.buttonStyle ?? \"flat-button\";\r\n }\r\n });\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n\r\n this.#disablesCache.clear();\r\n }\r\n\r\n /** Marks all the child button toggles to be checked. */\r\n protected _markButtonsForCheck() {\r\n this._buttons?.forEach(btn => btn.markForCheck());\r\n }\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n Directive,\r\n inject,\r\n Input,\r\n NgZone,\r\n HostBinding,\r\n InjectionToken,\r\n ContentChildren,\r\n QueryList,\r\n booleanAttribute, DoCheck,\r\n} from \"@angular/core\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {CuteIcon} from \"@cute-widgets/base/icon\";\r\nimport {RelativeSize7, ThemeColor} from \"@cute-widgets/base/core\";\r\nimport {Ripple, RippleManager, RippleOptions} from \"@cute-widgets/base/core/ripple\";\r\nimport {fromEvent, Subject} from \"rxjs\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {toColorCssClass, toThemeColor} from \"@cute-widgets/base/core\";\r\nimport {BooleanInput, coerceBooleanProperty} from '@angular/cdk/coercion';\r\nimport {CUTE_BUTTON_GROUP} from './button-group.directive';\r\n\r\n/** Button's appearance style */\r\nexport type CuteButtonStyle =\r\n \"base-button\"\r\n |\"flat-button\"\r\n |\"outline-button\"\r\n |\"raised-button\"\r\n |\"pill-button\"\r\n |\"circle-button\"\r\n |\"close-button\"\r\n |\"icon-button\"\r\n |\"fab-button\"\r\n /** Appearance styles for Angular Material compatibility */\r\n |\"text\"\r\n |\"filled\"\r\n |\"elevated\"\r\n |\"outlined\"\r\n |\"tonal\";\r\n\r\n\r\n/** Object that can be used to configure the default options for the button component. */\r\nexport interface CuteButtonConfig {\r\n /** Whether disabled buttons should be interactive. */\r\n disabledInteractive?: boolean;\r\n\r\n /** Default palette color to apply to buttons. */\r\n color?: ThemeColor;\r\n\r\n /** Whether to enable text wrapping. */\r\n wrapText?: boolean;\r\n}\r\n\r\n/** Injection token that can be used to provide the default options the button component. */\r\nexport const CUTE_BUTTON_CONFIG = new InjectionToken<CuteButtonConfig>('CUTE_BUTTON_CONFIG');\r\n\r\n/**\r\n * Injection token that can be used to reference instances of `CuteButtonBase`.\r\n * It serves as an alternative token to the actual `CuteButtonBase` class, which\r\n * could cause unnecessary retention of the class and its component metadata.\r\n */\r\nexport const CUTE_BUTTON_BASE = new InjectionToken<CuteButtonBase>(\r\n 'CuteButtonBase'\r\n);\r\n\r\n\r\n@Directive({\r\n host: {\r\n class: 'btn',\r\n '[attr.magnitude]': 'magnitude',\r\n '[style.--bs-focus-ring-color]': 'color? \"rgba(var(\"+bsColorVarName+\"), var(--bs-focus-ring-opacity))\" : \"var(--bs-border-color-translucent)\"',\r\n '(keydown)': '_haltDisabledEvents($event)',\r\n }\r\n})\r\nexport abstract class CuteButtonBase extends CuteFocusableControl implements DoCheck {\r\n\r\n private _cleanupClick: (() => void) | undefined;\r\n private _destroyed$ = new Subject<void>()\r\n\r\n protected readonly _ripple: Ripple;\r\n protected readonly _ngZone: NgZone = inject(NgZone);\r\n protected readonly _group = inject(CUTE_BUTTON_GROUP, {optional: true, host: true});\r\n protected readonly _isAnchor: boolean = false;\r\n\r\n @ContentChildren(CuteIcon) private _icons: QueryList<CuteIcon> | undefined;\r\n\r\n /** Button's appearance style in the following format: `{style}-button`. */\r\n @Input(\"cuteButton\") //, transform: (v: any): ButtonStyle=>{return !v ? \"base-button\" : v}})\r\n get inputButtonStyle(): CuteButtonStyle {return this._inputButtonStyle;}\r\n set inputButtonStyle(value: CuteButtonStyle | undefined | \"\") {\r\n this._inputButtonStyle = value || \"base-button\";\r\n\r\n // Transform Angular Material's style\r\n switch (this._inputButtonStyle) {\r\n case \"text\": this._inputButtonStyle = \"base-button\"; break;\r\n case \"elevated\": this._inputButtonStyle = \"raised-button\"; break;\r\n case \"outlined\": this._inputButtonStyle = \"outline-button\"; break;\r\n case \"filled\": this._inputButtonStyle = \"flat-button\"; break;\r\n case \"tonal\": this._inputButtonStyle = \"flat-button\"; break;\r\n }\r\n\r\n const dashPos = this._inputButtonStyle.lastIndexOf(\"-\");\r\n if (dashPos >= 0) {\r\n // Format: {style}-button\r\n this._buttonStyle = this._inputButtonStyle.substring(0, dashPos).trim().toLowerCase() || \"base\";\r\n } else {\r\n this._buttonStyle = this._inputButtonStyle;\r\n }\r\n }\r\n private _inputButtonStyle: CuteButtonStyle = \"base-button\";\r\n private _buttonStyle: string = \"base\";\r\n\r\n /** Relative size of the Button. */\r\n @Input() magnitude: RelativeSize7 | undefined;\r\n\r\n /** Whether to enable text wrapping. */\r\n @Input({transform: booleanAttribute})\r\n wrapText: boolean = false;\r\n\r\n /** Whether to disable the ripple effect on button clicking. */\r\n @Input()\r\n get disableRipple(): boolean {return this._ripple.disabled}\r\n set disableRipple(value: boolean) { this._ripple.disabled = value; }\r\n\r\n /** `aria-disabled` value of the button. */\r\n @Input({transform: booleanAttribute, alias: 'aria-disabled'})\r\n ariaDisabled: boolean | undefined;\r\n\r\n /** Whether to show the collapse/expand indicator based on the `aria-expanded` current value. */\r\n @Input({transform: booleanAttribute})\r\n withAriaExpandedIndicator: boolean = false;\r\n\r\n /**\r\n * Natively disabled buttons prevent focus and any pointer events from reaching the button.\r\n * In some scenarios, this might not be desirable, because it can prevent users from finding out\r\n * why the button is disabled (e.g., via tooltip).\r\n *\r\n * Enabling this input will change the button so that it is styled to be disabled and will be\r\n * marked as `aria-disabled`, but it will allow the button to receive events and focus.\r\n *\r\n * Note that by enabling this, you need to set the `tabindex` yourself if the button isn't\r\n * meant to be tabbable, and you have to prevent the button action (e.g., form submissions).\r\n */\r\n @Input({transform: booleanAttribute})\r\n get disabledInteractive(): boolean | undefined {return this._disabledInteractive;}\r\n set disabledInteractive(value: boolean | undefined) {this._disabledInteractive = value;}\r\n private _disabledInteractive: boolean | undefined;\r\n\r\n /** Label text that applied for visually hidden button */\r\n @Input()\r\n visuallyHiddenLabel: string | undefined;\r\n\r\n @HostBinding(\"class\")\r\n protected get classNames(): string {\r\n let classes = \"cute-\"+this._inputButtonStyle; // e.g. `cute-outline-button`\r\n if (this.color) {\r\n classes += [\"base\",\"close\",\"icon\"].indexOf(this.buttonStyle)==-1\r\n ? \" btn-\"+(this.buttonStyle==\"outline\" ? \"outline-\" : \"\") + toThemeColor(this.color)\r\n : this.buttonStyle==\"base\"\r\n ? (\" \" + (this.color==\"link\" ? \"btn-link\" : toColorCssClass(this.color)))\r\n : \"\";\r\n }\r\n return classes;\r\n }\r\n\r\n /** Focus shadow color for `close-button` */\r\n @HostBinding(\"style.--bs-btn-close-focus-shadow\")\r\n protected get _closeButtonShadowColor(): string {\r\n return (this.color && this.buttonStyle == \"close\") ? \"0 0 0 0.25rem rgba(var(--bs-\"+this.color+\"-rgb), 0.25)\" : \"\";\r\n }\r\n\r\n @HostBinding(\"class.cute-btn-xxl\")\r\n protected get buttonLargestBinding(): boolean {return this.magnitude == \"largest\"}\r\n @HostBinding(\"class.cute-btn-xl\")\r\n protected get buttonLargerBinding(): boolean {return this.magnitude == \"larger\"}\r\n @HostBinding(\"class.btn-lg\")\r\n protected get buttonLargeBinding(): boolean {return this.magnitude == \"large\"}\r\n @HostBinding(\"class.btn-sm\")\r\n protected get buttonSmallBinding(): boolean {return this.magnitude == \"small\"}\r\n @HostBinding(\"class.cute-btn-xs\")\r\n protected get buttonSmallerBinding(): boolean {return this.magnitude == \"smaller\"}\r\n @HostBinding(\"class.cute-btn-xxs\")\r\n protected get buttonSmallestBinding(): boolean {return this.magnitude == \"smallest\"}\r\n\r\n @HostBinding(\"style.--cute-icon-button-color-rgb\")\r\n protected get iconButtonColorBinding(): string {\r\n return this.buttonStyle==\"icon\" ? \"var(\"+(this.color ? this.bsColorVarName : \"--bs-body-color-rgb\")+\")\" : \"\";\r\n }\r\n @HostBinding(\"style.--cute-base-button-color-rgb\")\r\n protected get baseButtonColorBinding(): string {\r\n return this.buttonStyle==\"base\" ? \"var(\"+(this.color ? this.bsColorVarName : \"--bs-body-color-rgb\")+\")\" : \"\";\r\n }\r\n\r\n /** Returns button style name. */\r\n get buttonStyle(): string {\r\n return this._buttonStyle;\r\n }\r\n\r\n protected get bsColorVarName(): string {\r\n if (this.color) {\r\n if (this.color==\"link\") {\r\n return `--bs-${this.color}-color-rgb`;\r\n }\r\n return `--bs-${this.color}-rgb`;\r\n }\r\n return \"\";\r\n }\r\n\r\n protected constructor(...args: unknown[]);\r\n protected constructor() {\r\n super();\r\n const config = inject(CUTE_BUTTON_CONFIG, {optional: true});\r\n this.disabledInteractive = config?.disabledInteractive ?? false;\r\n this.wrapText = config?.wrapText ?? false;\r\n this._ripple = RippleManager.getInstance(this._nativeElement);\r\n\r\n this._isAnchor = (this._nativeElement.tagName == \"A\");\r\n }\r\n\r\n protected override generateId(): string {\r\n return \"\"; // `cute-button-${++nextUniqueId}`;\r\n }\r\n\r\n protected _getTabIndex() {\r\n if (this._isAnchor) {\r\n return this.disabled && !this.disabledInteractive ? -1 : this.tabIndex;\r\n }\r\n return this.tabIndex;\r\n }\r\n\r\n private _setupAsAnchor() {\r\n this._cleanupClick = this._ngZone.runOutsideAngular(() =>\r\n this._renderer.listen(this._nativeElement, 'click', (event: Event) => {\r\n if (this.disabled) {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n }),\r\n );\r\n }\r\n\r\n protected override setDisabledState(newState: BooleanInput): boolean {\r\n if (this._isAnchor) {\r\n const isDisabled = coerceBooleanProperty(newState);\r\n if (isDisabled) {\r\n this._savedTabIndex = this.tabIndex;\r\n this.tabIndex = -1;\r\n } else {\r\n this.tabIndex = this._savedTabIndex;\r\n }\r\n }\r\n return super.setDisabledState(newState);\r\n }\r\n private _savedTabIndex: number|undefined;\r\n\r\n protected _getAriaDisabled() {\r\n if (this.ariaDisabled != null) {\r\n return this.ariaDisabled;\r\n }\r\n if (this._isAnchor) {\r\n return this.disabled || null;\r\n }\r\n return this.disabled && this.disabledInteractive ? true : null;\r\n }\r\n\r\n protected _getDisabledAttribute() {\r\n //return this.disabledInteractive || !this.disabled ? null : true;\r\n return this.disabled ? true : null;\r\n }\r\n\r\n protected _haltDisabledEvents (event: Event): void {\r\n // A disabled button shouldn't apply any actions\r\n if (this.disabled && (this.disabledInteractive || this._isAnchor)) {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n };\r\n\r\n /** Whether to apply a `focus-ring` css-class to the button when it focused via keyboard interaction */\r\n protected get displayFocusRing(): boolean {\r\n return this.buttonStyle == \"base\" && this.hasClass(\"cdk-keyboard-focused\");\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n\r\n if (this._group) {\r\n this.defaultColor = this._group.color;\r\n }\r\n\r\n this._focusMonitor.monitor(this._elementRef, true);\r\n\r\n [\"mousedown\", \"mouseup\", \"click\"].forEach((type) => {\r\n fromEvent<MouseEvent>(this._nativeElement, type, { capture: true })\r\n .pipe(takeUntil(this._destroyed$))\r\n .subscribe((ev)=> this._onMouseEvent(ev));\r\n });\r\n }\r\n\r\n override ngAfterContentInit() {\r\n super.ngAfterContentInit();\r\n\r\n if (this._icons && this.buttonStyle == \"icon\") {\r\n this._icons.forEach(icon => {icon.defaultColor = this.color;});\r\n }\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n\r\n // Some internal tests depend on the timing of this,\r\n // otherwise we could bind it in the constructor.\r\n if (this._isAnchor) {\r\n this._setupAsAnchor();\r\n }\r\n }\r\n\r\n ngDoCheck() {\r\n // This line was added due to \"Expression Changed After Checked...\" error raised if we place it in the @HostBinding\r\n this.toggleClass(\"focus-ring\", this.displayFocusRing);\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._cleanupClick?.();\r\n this._ripple.stop();\r\n this._destroyed$.next();\r\n this._destroyed$.complete();\r\n }\r\n\r\n /** mouse events handler */\r\n private _onMouseEvent(event: MouseEvent) {\r\n\r\n this._haltDisabledEvents(event);\r\n\r\n if (!event.defaultPrevented && event.type == \"mousedown\") {\r\n this._launchRipple(event);\r\n }\r\n }\r\n\r\n private _launchRipple(event: MouseEvent): void {\r\n if (this._ripple && !this._ripple.disabled) {\r\n const options: RippleOptions = {};\r\n if (this.buttonStyle == \"icon\") {\r\n options.centered = true;\r\n options.color = \"rgba(var(--cute-icon-button-color), 0.25)\";\r\n }\r\n this._ripple.launch(event, options);\r\n }\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {CuteButtonBase, CUTE_BUTTON_BASE} from \"./button-base.directive\";\r\nimport {toThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n@Component({\r\n selector: `button[cuteButton],\r\n button[cute-button],\r\n a[cuteButton],\r\n a[cute-button],\r\n `,\r\n templateUrl: './button.component.html',\r\n styleUrls: ['./button.component.scss'],\r\n exportAs: \"cuteButton\",\r\n imports: [CommonModule],\r\n host: {\r\n 'class': 'cute-button',\r\n '[class.cute-anchor]': '_isAnchor',\r\n '[class.btn-close]': 'buttonStyle == \"close\"',\r\n '[class.rounded-pill]': 'buttonStyle==\"pill\"',\r\n '[class.rounded-circle]': 'buttonStyle==\"circle\"',\r\n '[class.raised]': 'buttonStyle==\"raised\" && !disabled',\r\n '[class.icon-link]': 'toThemeColor(color)==\"link\"',\r\n '[class.cute-button-expandable]': 'withAriaExpandedIndicator',\r\n //'[class.focus-ring]': 'buttonStyle==\"base\" && hasClass(\"cdk-keyboard-focused\")', // See: CuteButtonBase.ngDoCheck()\r\n '[class.disabled]': '(_isAnchor || buttonStyle==\"icon\" || disabledInteractive) && disabled',\r\n '[class.cute-button-disabled-interactive]': 'disabledInteractive',\r\n '[class.cute-unthemed]': '!color',\r\n '[attr.tabindex]': '_getTabIndex()', //'disabled ? -1 : tabIndex',\r\n '[attr.disabled]': '_getDisabledAttribute()',\r\n '[attr.aria-disabled]': '_getAriaDisabled()',\r\n '[attr.id]': 'id || null',\r\n '[attr.aria-label]': 'ariaLabel || null',\r\n },\r\n providers: [\r\n { provide: CUTE_BUTTON_BASE, useExisting: CuteButton }\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuteButton extends CuteButtonBase {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected readonly toThemeColor = toThemeColor;\r\n}\r\n","<!--\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","/**\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, InjectionToken,\r\n Input, numberAttribute,\r\n} from \"@angular/core\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {RelativeSize5} from \"@cute-widgets/base/core/types\";\r\n\r\n// Counter used to generate unique IDs.\r\nlet uniqueIdCounter = 0;\r\n\r\n/**\r\n * Injection token that can be used to reference instances of `CuteButtonToolbar`.\r\n * It serves as an alternative token to the actual `CuteButtonToolbar` class which\r\n * could cause unnecessary retention of the class and its component metadata.\r\n */\r\nexport const CUTE_BUTTON_TOOLBAR = new InjectionToken<CuteButtonToolbar>(\r\n 'CuteButtonToolbar',\r\n);\r\n\r\n\r\n/**\r\n * Combines sets of button groups into button toolbars for more complex components.\r\n */\r\n@Directive({\r\n selector: \"cute-button-toolbar\",\r\n exportAs: \"cuteButtonToolbar\",\r\n host: {\r\n 'class': 'cute-button-toolbar btn-toolbar',\r\n '[class]': '\"gap-\"+gap',\r\n '[attr.gap]': 'null',\r\n '[attr.aria-label]': 'ariaLabel || null',\r\n '[attr.aria-labelledby]': 'ariaLabelledby || null',\r\n '[attr.aria-describedby]': 'ariaDescribedby || null',\r\n '[id]': 'id || null',\r\n 'role': 'toolbar',\r\n },\r\n providers: [{provide: CUTE_BUTTON_TOOLBAR, useExisting: CuteButtonToolbar}],\r\n standalone: true\r\n})\r\nexport class CuteButtonToolbar extends CuteFocusableControl {\r\n\r\n //@Input({transform: booleanAttribute}) vertical: boolean = false;\r\n\r\n private _gap:number = 0;\r\n\r\n /** The gutter between button groups. */\r\n @Input({transform: numberAttribute})\r\n get gap(): number {return this._gap;}\r\n set gap(value: number) {\r\n const MAX_GAP= 5;\r\n value = Math.round(value);\r\n if (value >= 0 && value <= MAX_GAP) {\r\n this._gap = value;\r\n } else if (value > MAX_GAP) {\r\n this._gap = MAX_GAP;\r\n } else {\r\n this._gap = 0;\r\n }\r\n }\r\n\r\n @Input() magnitude: RelativeSize5 | undefined;\r\n\r\n /** Child buttons. */\r\n //@ContentChildren(CUTE_BUTTON_BASE, {descendants: true})\r\n //_buttons: QueryList<ButtonBase> | undefined;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected override generateId(): string {\r\n return `button-toolbar-${++uniqueIdCounter}`;\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 {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CuteButton} from \"./button.component\";\r\nimport {CuteButtonGroup} from \"./button-group.directive\";\r\nimport {CuteButtonToolbar} from \"./button-toolbar.directive\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteButton,\r\n CuteButtonGroup,\r\n CuteButtonToolbar,\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: TYPES,\r\n declarations: [],\r\n})\r\nexport class CuteButtonModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uniqueIdCounter"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, SecurityContext, inject, ContentChild, Input, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
2
+ import { Directive, SecurityContext, inject, contentChild, Input, ChangeDetectionStrategy, ViewEncapsulation, Component, HostAttributeToken, isDevMode, NgModule } from '@angular/core';
3
3
  import { CuteLayoutControl } from '@cute-widgets/base/abstract';
4
4
  import { DomSanitizer } from '@angular/platform-browser';
5
5
  import { CommonModule } from '@angular/common';
@@ -98,12 +98,16 @@ class CuteCard extends CuteLayoutControl {
98
98
  constructor() {
99
99
  super();
100
100
  this._sanitizer = inject(DomSanitizer);
101
+ /** `CuteCardHeader` element if it was defined in the `CuteCard` template. */
102
+ this._header = contentChild(CuteCardHeader, ...(ngDevMode ? [{ debugName: "_header", descendants: false }] : [{ descendants: false }]));
103
+ /** `CuteCardFooter` element if it was defined in the `CuteCard` template. */
104
+ this._footer = contentChild(CuteCardFooter, ...(ngDevMode ? [{ debugName: "_footer", descendants: false }] : [{ descendants: false }]));
101
105
  }
102
106
  generateId() {
103
107
  return `cute-card-${++nextId}`;
104
108
  }
105
109
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCard, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
106
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: CuteCard, isStandalone: true, selector: "cute-card", inputs: { backgroundImage: "backgroundImage" }, host: { properties: { "class.cute-card-with-background-image": "backgroundImage", "attr.backgroundImage": "null" }, classAttribute: "cute-card card" }, queries: [{ propertyName: "_header", first: true, predicate: CuteCardHeader }, { propertyName: "_footer", first: true, predicate: CuteCardFooter }], exportAs: ["cuteCard"], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"cute-card-header\"></ng-content>\r\n<ng-content select=\"img[position=top], [role=img][position=top]\"></ng-content>\r\n<ng-content></ng-content>\r\n<ng-content select=\"img[position=bottom], [role=img][position=bottom]\"></ng-content>\r\n<ng-content select=\"cute-card-footer\"></ng-content>\r\n", styles: [".cute-card{--cute-card-image-height: 200px;padding:0;overflow:hidden;background-repeat:no-repeat;background-position:center center;background-size:cover}.cute-card .cute-card-image{height:var(--cute-card-image-height);object-fit:cover}.cute-card .cute-card-image.img-fluid{height:auto}.cute-card.cute-card-with-background-image .list-group-item,.cute-card .card-img-overlay .list-group-item{opacity:.65}.cute-card .cute-card-avatar{border-radius:50%}.cute-card .cute-card-actions{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;width:100%;min-height:52px;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x)}.cute-card .cute-card-footer{display:flex;flex-direction:row;align-items:center;box-sizing:border-box}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
110
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.15", type: CuteCard, isStandalone: true, selector: "cute-card", inputs: { backgroundImage: "backgroundImage" }, host: { properties: { "class.cute-card-with-background-image": "backgroundImage", "attr.backgroundImage": "null" }, classAttribute: "cute-card card" }, queries: [{ propertyName: "_header", first: true, predicate: CuteCardHeader, isSignal: true }, { propertyName: "_footer", first: true, predicate: CuteCardFooter, isSignal: true }], exportAs: ["cuteCard"], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"cute-card-header\"></ng-content>\r\n<ng-content select=\"[cute-card-top-image]\"></ng-content>\r\n<ng-content></ng-content>\r\n<ng-content select=\"[cute-card-bottom-image]\"></ng-content>\r\n<ng-content select=\"cute-card-footer\"></ng-content>\r\n", styles: [".cute-card{--cute-card-image-height: auto;padding:0;overflow:hidden;background-repeat:no-repeat;background-position:center center;background-size:cover}.cute-card .cute-card-image{height:var(--cute-card-image-height);object-fit:cover}.cute-card .cute-card-image.img-fluid{height:auto}.cute-card.cute-thematic-widget .list-group-item{opacity:.65}.cute-card.cute-card-with-background-image,.cute-card .card-img-overlay{background-color:transparent!important}.cute-card.cute-card-with-background-image .list-group,.cute-card .card-img-overlay .list-group{--bs-bg-opacity: .25}.cute-card.cute-card-with-background-image .list-group-item,.cute-card .card-img-overlay .list-group-item{opacity:.65}.cute-card .cute-card-avatar{border-radius:50%}.cute-card .cute-card-actions{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;width:100%;min-height:52px;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x)}.cute-card .cute-card-footer{display:flex;flex-direction:row;align-items:center;box-sizing:border-box}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
107
111
  }
108
112
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCard, decorators: [{
109
113
  type: Component,
@@ -111,16 +115,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
111
115
  'class': 'cute-card card',
112
116
  '[class.cute-card-with-background-image]': 'backgroundImage',
113
117
  '[attr.backgroundImage]': 'null',
114
- }, standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"cute-card-header\"></ng-content>\r\n<ng-content select=\"img[position=top], [role=img][position=top]\"></ng-content>\r\n<ng-content></ng-content>\r\n<ng-content select=\"img[position=bottom], [role=img][position=bottom]\"></ng-content>\r\n<ng-content select=\"cute-card-footer\"></ng-content>\r\n", styles: [".cute-card{--cute-card-image-height: 200px;padding:0;overflow:hidden;background-repeat:no-repeat;background-position:center center;background-size:cover}.cute-card .cute-card-image{height:var(--cute-card-image-height);object-fit:cover}.cute-card .cute-card-image.img-fluid{height:auto}.cute-card.cute-card-with-background-image .list-group-item,.cute-card .card-img-overlay .list-group-item{opacity:.65}.cute-card .cute-card-avatar{border-radius:50%}.cute-card .cute-card-actions{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;width:100%;min-height:52px;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x)}.cute-card .cute-card-footer{display:flex;flex-direction:row;align-items:center;box-sizing:border-box}\n"] }]
118
+ }, standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"cute-card-header\"></ng-content>\r\n<ng-content select=\"[cute-card-top-image]\"></ng-content>\r\n<ng-content></ng-content>\r\n<ng-content select=\"[cute-card-bottom-image]\"></ng-content>\r\n<ng-content select=\"cute-card-footer\"></ng-content>\r\n", styles: [".cute-card{--cute-card-image-height: auto;padding:0;overflow:hidden;background-repeat:no-repeat;background-position:center center;background-size:cover}.cute-card .cute-card-image{height:var(--cute-card-image-height);object-fit:cover}.cute-card .cute-card-image.img-fluid{height:auto}.cute-card.cute-thematic-widget .list-group-item{opacity:.65}.cute-card.cute-card-with-background-image,.cute-card .card-img-overlay{background-color:transparent!important}.cute-card.cute-card-with-background-image .list-group,.cute-card .card-img-overlay .list-group{--bs-bg-opacity: .25}.cute-card.cute-card-with-background-image .list-group-item,.cute-card .card-img-overlay .list-group-item{opacity:.65}.cute-card .cute-card-avatar{border-radius:50%}.cute-card .cute-card-actions{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;width:100%;min-height:52px;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x)}.cute-card .cute-card-footer{display:flex;flex-direction:row;align-items:center;box-sizing:border-box}\n"] }]
115
119
  }], ctorParameters: () => [], propDecorators: { backgroundImage: [{
116
120
  type: Input
117
- }], _header: [{
118
- type: ContentChild,
119
- args: [CuteCardHeader, { descendants: false }]
120
- }], _footer: [{
121
- type: ContentChild,
122
- args: [CuteCardFooter, { descendants: false }]
123
- }] } });
121
+ }], _header: [{ type: i0.ContentChild, args: [i0.forwardRef(() => CuteCardHeader), { ...{ descendants: false }, isSignal: true }] }], _footer: [{ type: i0.ContentChild, args: [i0.forwardRef(() => CuteCardFooter), { ...{ descendants: false }, isSignal: true }] }] } });
124
122
 
125
123
  /**
126
124
  * @license Apache-2.0
@@ -176,12 +174,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
176
174
  * `CuteCardImage` provides no behaviors, instead serving as a purely visual treatment.
177
175
  */
178
176
  class CuteCardImage {
179
- constructor() {
180
- this.card = inject(CuteCard);
181
- /** Image position in the card layout */
182
- this.position = "top";
183
- }
184
- /** Image height in pixels */
177
+ /** The intrinsic height of the image, in pixels. */
185
178
  get height() { return this._height; }
186
179
  set height(value) {
187
180
  if (typeof value === "string") {
@@ -191,26 +184,50 @@ class CuteCardImage {
191
184
  }
192
185
  this._height = value;
193
186
  }
187
+ constructor() {
188
+ this.card = inject(CuteCard);
189
+ /** Image position in the card layout */
190
+ this._position = "top";
191
+ let attribs = [];
192
+ attribs[0] = inject(new HostAttributeToken("cute-card-top-image"), { optional: true });
193
+ attribs[1] = inject(new HostAttributeToken("cute-card-bottom-image"), { optional: true });
194
+ attribs[2] = inject(new HostAttributeToken("cute-card-fluid-image"), { optional: true });
195
+ if (attribs.filter(v => v != null).length > 1 && isDevMode()) {
196
+ throw new Error("Only one attribute with name 'cute-card-*-image' should be applied.");
197
+ }
198
+ // We take into account the first value only
199
+ const attrInd = attribs.findIndex(v => v != null);
200
+ switch (attrInd) {
201
+ case 0:
202
+ this._position = "top";
203
+ break;
204
+ case 1:
205
+ this._position = "bottom";
206
+ break;
207
+ case 2:
208
+ this._position = "fluid";
209
+ break;
210
+ }
211
+ this.card.markForCheck();
212
+ }
194
213
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCardImage, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
195
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteCardImage, isStandalone: true, selector: "[cute-card-image], [cuteCardImage]", inputs: { position: "position", height: "height" }, host: { properties: { "class": "'card-img'+(position=='top'||position=='bottom' ? '-'+position : '')", "class.img-fluid": "position==\"fluid\"", "style.border-radius": "position=='top' && card?._header ? 0 : (position=='bottom' && card?._footer ? 0 : undefined)", "style.--cute-card-image-height": "height>=0 ? height+\"px\" : undefined" }, classAttribute: "cute-card-image" }, ngImport: i0 }); }
214
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteCardImage, isStandalone: true, selector: "[cute-card-image], [cute-card-top-image], [cute-card-bottom-image], [cute-card-fluid-image]", inputs: { height: "height" }, host: { properties: { "class": "'card-img'+(_position=='top'||_position=='bottom' ? '-'+_position : '')", "class.img-fluid": "_position==\"fluid\"", "attr.height": "height", "style.border-radius": "_position=='top' && card?._header() ? 0 : (_position=='bottom' && card?._footer() ? 0 : undefined)", "style.--cute-card-image-height": "height>=0 ? height+\"px\" : undefined" }, classAttribute: "cute-card-image" }, ngImport: i0 }); }
196
215
  }
197
216
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCardImage, decorators: [{
198
217
  type: Directive,
199
218
  args: [{
200
- selector: '[cute-card-image], [cuteCardImage]',
219
+ selector: '[cute-card-image], [cute-card-top-image], [cute-card-bottom-image], [cute-card-fluid-image]',
201
220
  host: {
202
221
  'class': 'cute-card-image',
203
- '[class]': "'card-img'+(position=='top'||position=='bottom' ? '-'+position : '')",
204
- //'[class.cute-card-image-cover]': 'position=="cover"',
205
- '[class.img-fluid]': 'position=="fluid"',
206
- '[style.border-radius]': "position=='top' && card?._header ? 0 : (position=='bottom' && card?._footer ? 0 : undefined)",
222
+ '[class]': "'card-img'+(_position=='top'||_position=='bottom' ? '-'+_position : '')",
223
+ '[class.img-fluid]': '_position=="fluid"',
224
+ '[attr.height]': 'height',
225
+ '[style.border-radius]': "_position=='top' && card?._header() ? 0 : (_position=='bottom' && card?._footer() ? 0 : undefined)",
207
226
  '[style.--cute-card-image-height]': 'height>=0 ? height+"px" : undefined'
208
227
  },
209
228
  standalone: true,
210
229
  }]
211
- }], propDecorators: { position: [{
212
- type: Input
213
- }], height: [{
230
+ }], ctorParameters: () => [], propDecorators: { height: [{
214
231
  type: Input
215
232
  }] } });
216
233
 
@@ -234,14 +251,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
234
251
  */
235
252
  class CuteCardBody {
236
253
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCardBody, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
237
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: CuteCardBody, isStandalone: true, selector: "cute-card-body, cute-card-content", inputs: { color: "color" }, host: { properties: { "class": "color ? \"text-\"+color : \"\"" }, classAttribute: "cute-card-body card-body" }, exportAs: ["cuteCardBody"], ngImport: i0, template: "<ng-content select=\"cute-card-title, cute-card-subtitle,\r\n [cute-card-title], [cute-card-subtitle],\r\n [cuteCardTitle], [cuteCardSubtitle]\">\r\n</ng-content>\r\n<div class=\"card-text mt-2\">\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".cute-card-body{display:flex;flex-direction:column;position:relative}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
254
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: CuteCardBody, isStandalone: true, selector: "cute-card-body, cute-card-content", inputs: { color: "color" }, host: { properties: { "class": "color ? \"text-\"+color : \"\"" }, classAttribute: "cute-card-body card-body" }, exportAs: ["cuteCardBody"], ngImport: i0, template: "<div class=\"cute-card-title__wrapper\">\r\n <ng-content select=\"cute-card-title, cute-card-subtitle,\r\n [cute-card-title], [cute-card-subtitle],\r\n [cuteCardTitle], [cuteCardSubtitle]\">\r\n </ng-content>\r\n</div>\r\n<div class=\"card-text\">\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".cute-card-body{display:flex;flex-direction:column;position:relative;gap:.5rem}.cute-card-body .cute-card-title__wrapper:empty{display:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
238
255
  }
239
256
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCardBody, decorators: [{
240
257
  type: Component,
241
258
  args: [{ selector: 'cute-card-body, cute-card-content', exportAs: 'cuteCardBody', host: {
242
259
  'class': 'cute-card-body card-body',
243
260
  '[class]': 'color ? "text-"+color : ""',
244
- }, standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"cute-card-title, cute-card-subtitle,\r\n [cute-card-title], [cute-card-subtitle],\r\n [cuteCardTitle], [cuteCardSubtitle]\">\r\n</ng-content>\r\n<div class=\"card-text mt-2\">\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".cute-card-body{display:flex;flex-direction:column;position:relative}\n"] }]
261
+ }, standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cute-card-title__wrapper\">\r\n <ng-content select=\"cute-card-title, cute-card-subtitle,\r\n [cute-card-title], [cute-card-subtitle],\r\n [cuteCardTitle], [cuteCardSubtitle]\">\r\n </ng-content>\r\n</div>\r\n<div class=\"card-text\">\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".cute-card-body{display:flex;flex-direction:column;position:relative;gap:.5rem}.cute-card-body .cute-card-title__wrapper:empty{display:none}\n"] }]
245
262
  }], propDecorators: { color: [{
246
263
  type: Input
247
264
  }] } });
@@ -371,14 +388,14 @@ class CuteCardSubtitle {
371
388
  this.color = "secondary";
372
389
  }
373
390
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCardSubtitle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
374
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteCardSubtitle, isStandalone: true, selector: "cute-card-subtitle, [cute-card-subtitle], [cuteCardSubtitle]", inputs: { color: "color" }, host: { properties: { "class": "color ? \"text-\"+color : \"\"" }, classAttribute: "cute-card-subtitle card-subtitle mb-2" }, ngImport: i0 }); }
391
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteCardSubtitle, isStandalone: true, selector: "cute-card-subtitle, [cute-card-subtitle], [cuteCardSubtitle]", inputs: { color: "color" }, host: { properties: { "class": "color ? \"text-\"+color : \"\"" }, classAttribute: "cute-card-subtitle card-subtitle" }, ngImport: i0 }); }
375
392
  }
376
393
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCardSubtitle, decorators: [{
377
394
  type: Directive,
378
395
  args: [{
379
396
  selector: `cute-card-subtitle, [cute-card-subtitle], [cuteCardSubtitle]`,
380
397
  host: {
381
- 'class': 'cute-card-subtitle card-subtitle mb-2',
398
+ 'class': 'cute-card-subtitle card-subtitle',
382
399
  '[class]': 'color ? "text-"+color : ""',
383
400
  },
384
401
  standalone: true
@@ -1 +1 @@
1
- {"version":3,"file":"cute-widgets-base-card.mjs","sources":["../../../../projects/cute-widgets/base/card/src/card-header.directive.ts","../../../../projects/cute-widgets/base/card/src/card-footer.directive.ts","../../../../projects/cute-widgets/base/card/src/card.component.ts","../../../../projects/cute-widgets/base/card/src/card.component.html","../../../../projects/cute-widgets/base/card/src/card-avatar.directive.ts","../../../../projects/cute-widgets/base/card/src/card-image.directive.ts","../../../../projects/cute-widgets/base/card/src/card-body.component.ts","../../../../projects/cute-widgets/base/card/src/card-body.component.html","../../../../projects/cute-widgets/base/card/src/card-actions.directive.ts","../../../../projects/cute-widgets/base/card/src/card-group.component.ts","../../../../projects/cute-widgets/base/card/src/card-title.directive.ts","../../../../projects/cute-widgets/base/card/src/card-subtitle.directive.ts","../../../../projects/cute-widgets/base/card/src/card-overlay.directive.ts","../../../../projects/cute-widgets/base/card/src/card.module.ts","../../../../projects/cute-widgets/base/card/cute-widgets-base-card.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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive} from \"@angular/core\";\r\n\r\n/**\r\n * Header region of a card, intended for use within `<cute-card>`.\r\n * This component is an optional convenience for use with other convenience elements, such as `<cute-card-footer>`;\r\n * any custom header block element may be used in its place.\r\n *\r\n * `CuteCardHeader` provides no behaviors, instead serving as a purely visual treatment.\r\n */\r\n@Directive({\r\n selector: 'cute-card-header',\r\n host: {'class': 'cute-card-header card-header'},\r\n standalone: true\r\n})\r\nexport class CuteCardHeader {}\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive} from \"@angular/core\";\r\n\r\n/**\r\n * Footer area a card, intended for use within `<cute-card>`.\r\n * This component is an optional convenience for use with other convenience elements, such as\r\n * `<cute-card-content>`; any custom footer block element may be used in its place.\r\n *\r\n * CuteCardFooter provides no behaviors, instead serving as a purely visual treatment.\r\n */\r\n@Directive({\r\n selector: 'cute-card-footer',\r\n host: {'class': 'cute-card-footer card-footer text-body-secondary'},\r\n standalone: true\r\n})\r\nexport class CuteCardFooter {}\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ContentChild,\r\n inject,\r\n Input,\r\n SecurityContext,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {CuteCardHeader} from \"./card-header.directive\";\r\nimport {CuteCardFooter} from \"./card-footer.directive\";\r\nimport {CuteLayoutControl} from \"@cute-widgets/base/abstract\";\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\n\r\nlet nextId: number = -1;\r\n\r\n/**\r\n * A flexible and extensible content container with multiple variants and options.\r\n */\r\n@Component({\r\n selector: 'cute-card',\r\n templateUrl: './card.component.html',\r\n styleUrl: './card.component.scss',\r\n exportAs: 'cuteCard',\r\n host: {\r\n 'class': 'cute-card card',\r\n '[class.cute-card-with-background-image]': 'backgroundImage',\r\n '[attr.backgroundImage]': 'null',\r\n },\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuteCard extends CuteLayoutControl {\r\n private _sanitizer = inject(DomSanitizer);\r\n\r\n @Input()\r\n get backgroundImage(): string | undefined {return this._backgroundImage;}\r\n set backgroundImage(value: string | undefined) {\r\n if (value) {\r\n this._backgroundImage = this._sanitizer.sanitize(SecurityContext.URL, value) ?? undefined;\r\n if (this._backgroundImage) {\r\n this._nativeElement.style.backgroundImage = `url('${this._backgroundImage.trim()}')`;\r\n }\r\n } else {\r\n this._nativeElement.style.backgroundImage = \"none\";\r\n this._backgroundImage = undefined;\r\n }\r\n }\r\n private _backgroundImage: string | undefined;\r\n\r\n /** `CuteCardHeader` element if it was defined in the `CuteCard` template. */\r\n @ContentChild(CuteCardHeader, {descendants: false}) readonly _header: CuteCardHeader | undefined;\r\n /** `CuteCardFooter` element if it was defined in the `CuteCard` template. */\r\n @ContentChild(CuteCardFooter, {descendants: false}) readonly _footer: CuteCardFooter | undefined;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected override generateId(): string {\r\n return `cute-card-${++nextId}`;\r\n }\r\n\r\n}\r\n","<ng-content select=\"cute-card-header\"></ng-content>\r\n<ng-content select=\"img[position=top], [role=img][position=top]\"></ng-content>\r\n<ng-content></ng-content>\r\n<ng-content select=\"img[position=bottom], [role=img][position=bottom]\"></ng-content>\r\n<ng-content select=\"cute-card-footer\"></ng-content>\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive} from \"@angular/core\";\r\n\r\n/**\r\n * Avatar image content for a card, intended for use within `<cute-card>`. Can be applied to\r\n * any media element, such as `<img>` or `<picture>`.\r\n *\r\n * This component is an optional convenience for use with other convenience elements, such as\r\n * `<cute-card-title>`; any custom media element may be used in its place.\r\n *\r\n * CuteCardAvatar provides no behaviors, instead serving as a purely visual treatment.\r\n */\r\n@Directive({\r\n selector: '[cute-card-avatar], [cuteCardAvatar]',\r\n host: {'class': 'cute-card-avatar card-avatar shadow'},\r\n standalone: true,\r\n})\r\nexport class CuteCardAvatar {}\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive, inject, Input} from \"@angular/core\";\r\nimport {CuteCard} from \"./card.component\";\r\n\r\n/**\r\n * Primary image content for a card, intended for use within `<cute-card>`. Can be applied to\r\n * any media element, such as `<img>` or `<picture>`.\r\n *\r\n * This component is an optional convenience for use with other convenience elements, such as\r\n * `<cute-card-body>`; any custom media element may be used in its place.\r\n *\r\n * `CuteCardImage` provides no behaviors, instead serving as a purely visual treatment.\r\n */\r\n@Directive({\r\n selector: '[cute-card-image], [cuteCardImage]',\r\n host: {\r\n 'class': 'cute-card-image',\r\n '[class]': \"'card-img'+(position=='top'||position=='bottom' ? '-'+position : '')\",\r\n //'[class.cute-card-image-cover]': 'position==\"cover\"',\r\n '[class.img-fluid]': 'position==\"fluid\"',\r\n '[style.border-radius]': \"position=='top' && card?._header ? 0 : (position=='bottom' && card?._footer ? 0 : undefined)\",\r\n '[style.--cute-card-image-height]': 'height>=0 ? height+\"px\" : undefined'\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteCardImage {\r\n protected card= inject(CuteCard);\r\n\r\n /** Image position in the card layout */\r\n @Input() position: \"top\"|\"bottom\"|\"fluid\" = \"top\";\r\n\r\n /** Image height in pixels */\r\n @Input()\r\n get height(): number|undefined {return this._height;}\r\n set height(value: number|string|undefined) {\r\n if (typeof value===\"string\") {\r\n value = parseInt(value);\r\n if (isNaN(value)) value = undefined;\r\n }\r\n this._height = value;\r\n }\r\n private _height: number | undefined;\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from \"@angular/core\";\r\nimport {ThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n/**\r\n * Content of a card, intended for use within `<cute-card>`. This component is an optional\r\n * convenience for use with other convenience elements, such as `<cute-card-title>`; any custom\r\n * content block element may be used in its place.\r\n *\r\n * CuteCardContent provides no behaviors, instead serving as a purely visual treatment.\r\n */\r\n@Component({\r\n selector: 'cute-card-body, cute-card-content',\r\n templateUrl: './card-body.component.html',\r\n styleUrls: ['./card-body.component.scss'],\r\n exportAs: 'cuteCardBody',\r\n host: {\r\n 'class': 'cute-card-body card-body',\r\n '[class]': 'color ? \"text-\"+color : \"\"',\r\n },\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuteCardBody {\r\n /** Card body text color */\r\n @Input() color: ThemeColor | undefined;\r\n}\r\n","<ng-content select=\"cute-card-title, cute-card-subtitle,\r\n [cute-card-title], [cute-card-subtitle],\r\n [cuteCardTitle], [cuteCardSubtitle]\">\r\n</ng-content>\r\n<div class=\"card-text mt-2\">\r\n <ng-content></ng-content>\r\n</div>\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive, Input} from \"@angular/core\";\r\nimport {ContentAlignment} from \"@cute-widgets/base/core\";\r\n\r\n/**\r\n * Bottom area of a card that contains action buttons, intended for use within `<cute-card>`.\r\n * This component is an optional convenience for use with other convenience elements, such as\r\n * `<cute-card-content>`; any custom action block element may be used in its place.\r\n *\r\n * `CuteCardActions` provides no behaviors, instead serving as a purely visual treatment.\r\n */\r\n@Directive({\r\n selector: 'cute-card-actions, [cute-card-actions], [cuteCardActions]',\r\n exportAs: 'cuteCardActions',\r\n host: {\r\n 'class': 'cute-card-actions card-actions',\r\n '[class]': \"'justify-content-'+align\",\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteCardActions {\r\n /** Position of the actions inside the card. */\r\n @Input() align: ContentAlignment = \"start\";\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 {Component} from \"@angular/core\";\r\n\r\n/**\r\n * Use _card groups_ to render cards as a single, attached element with equal width and height columns.\r\n * When using card groups with footers, their content will automatically line up.\r\n */\r\n@Component({\r\n selector: 'cute-card-group',\r\n exportAs: 'cuteCardGroup',\r\n template: '<ng-content></ng-content>',\r\n styles: [`\r\n :host { display: block; }\r\n `],\r\n host: {\r\n 'class': 'cute-card-group card-group'\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteCardGroup /* extends ... */ {\r\n\r\n constructor() {\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive, Input} from \"@angular/core\";\r\nimport {ThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n/**\r\n * Title of a card, intended for use within `<cute-card-body>`. This component is an optional\r\n * convenience for one variety of card titles; any custom title element may be used in its place.\r\n *\r\n * CuteCardTitle provides no behaviors, instead serving as a purely visual treatment.\r\n */\r\n@Directive({\r\n selector: `cute-card-title, [cute-card-title], [cuteCardTitle]`,\r\n host: {\r\n 'class': 'cute-card-title card-title',\r\n '[class]': 'color ? \"text-\"+color : \"\"',\r\n },\r\n standalone: true\r\n})\r\nexport class CuteCardTitle {\r\n /** Title text color */\r\n @Input() color: ThemeColor | undefined;\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive, Input} from \"@angular/core\";\r\nimport {ThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n/**\r\n * Subtitle of a card, intended for use within `<cute-card-body>` beneath a `<cute-card-title>`. This\r\n * component is an optional convenience for use with other convenience elements, such as\r\n * `<cute-card-title>`.\r\n *\r\n * CuteCardSubtitle provides no behaviors, instead serving as a purely visual treatment.\r\n */\r\n@Directive({\r\n selector: `cute-card-subtitle, [cute-card-subtitle], [cuteCardSubtitle]`,\r\n host: {\r\n 'class': 'cute-card-subtitle card-subtitle mb-2',\r\n '[class]': 'color ? \"text-\"+color : \"\"',\r\n },\r\n standalone: true\r\n})\r\nexport class CuteCardSubtitle {\r\n /** Subtitle text color */\r\n @Input() color: ThemeColor = \"secondary\";\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} from \"@angular/core\";\r\n\r\n/**\r\n * Turn an image into a card background and overlay the card’s text.\r\n */\r\n@Directive({\r\n selector: 'cute-card-overlay',\r\n exportAs: 'cuteCardOverlay',\r\n host: {\r\n 'class': 'card-img-overlay d-flex flex-column'\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteCardOverlay /* extends ... */ {\r\n\r\n constructor() {\r\n }\r\n\r\n}\r\n","import {NgModule, Type} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {CuteCard} from \"./card.component\";\r\nimport {CuteCardTitle} from \"./card-title.directive\";\r\nimport {CuteCardSubtitle} from \"./card-subtitle.directive\";\r\nimport {CuteCardFooter} from \"./card-footer.directive\";\r\nimport {CuteCardHeader} from \"./card-header.directive\";\r\nimport {CuteCardActions} from \"./card-actions.directive\";\r\nimport {CuteCardBody} from \"./card-body.component\";\r\nimport {CuteCardImage} from \"./card-image.directive\";\r\nimport {CuteCardAvatar} from \"./card-avatar.directive\";\r\nimport {CuteCardGroup} from \"./card-group.component\";\r\nimport {CuteCardOverlay} from \"./card-overlay.directive\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteCard,\r\n CuteCardTitle,\r\n CuteCardSubtitle,\r\n CuteCardFooter,\r\n CuteCardHeader,\r\n CuteCardActions,\r\n CuteCardBody,\r\n CuteCardOverlay,\r\n CuteCardImage,\r\n CuteCardAvatar,\r\n CuteCardGroup,\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: [TYPES],\r\n declarations: [],\r\n})\r\nexport class CuteCardModule { }\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-card.mjs","sources":["../../../../projects/cute-widgets/base/card/src/card-header.directive.ts","../../../../projects/cute-widgets/base/card/src/card-footer.directive.ts","../../../../projects/cute-widgets/base/card/src/card.component.ts","../../../../projects/cute-widgets/base/card/src/card.component.html","../../../../projects/cute-widgets/base/card/src/card-avatar.directive.ts","../../../../projects/cute-widgets/base/card/src/card-image.directive.ts","../../../../projects/cute-widgets/base/card/src/card-body.component.ts","../../../../projects/cute-widgets/base/card/src/card-body.component.html","../../../../projects/cute-widgets/base/card/src/card-actions.directive.ts","../../../../projects/cute-widgets/base/card/src/card-group.component.ts","../../../../projects/cute-widgets/base/card/src/card-title.directive.ts","../../../../projects/cute-widgets/base/card/src/card-subtitle.directive.ts","../../../../projects/cute-widgets/base/card/src/card-overlay.directive.ts","../../../../projects/cute-widgets/base/card/src/card.module.ts","../../../../projects/cute-widgets/base/card/cute-widgets-base-card.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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive} from \"@angular/core\";\r\n\r\n/**\r\n * Header region of a card, intended for use within `<cute-card>`.\r\n * This component is an optional convenience for use with other convenience elements, such as `<cute-card-footer>`;\r\n * any custom header block element may be used in its place.\r\n *\r\n * `CuteCardHeader` provides no behaviors, instead serving as a purely visual treatment.\r\n */\r\n@Directive({\r\n selector: 'cute-card-header',\r\n host: {'class': 'cute-card-header card-header'},\r\n standalone: true\r\n})\r\nexport class CuteCardHeader {}\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive} from \"@angular/core\";\r\n\r\n/**\r\n * Footer area a card, intended for use within `<cute-card>`.\r\n * This component is an optional convenience for use with other convenience elements, such as\r\n * `<cute-card-content>`; any custom footer block element may be used in its place.\r\n *\r\n * CuteCardFooter provides no behaviors, instead serving as a purely visual treatment.\r\n */\r\n@Directive({\r\n selector: 'cute-card-footer',\r\n host: {'class': 'cute-card-footer card-footer text-body-secondary'},\r\n standalone: true\r\n})\r\nexport class CuteCardFooter {}\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component, contentChild,\r\n ContentChild,\r\n inject,\r\n Input,\r\n SecurityContext,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport {CuteCardHeader} from \"./card-header.directive\";\r\nimport {CuteCardFooter} from \"./card-footer.directive\";\r\nimport {CuteLayoutControl} from \"@cute-widgets/base/abstract\";\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\n\r\nlet nextId: number = -1;\r\n\r\n/**\r\n * A flexible and extensible content container with multiple variants and options.\r\n */\r\n@Component({\r\n selector: 'cute-card',\r\n templateUrl: './card.component.html',\r\n styleUrl: './card.component.scss',\r\n exportAs: 'cuteCard',\r\n host: {\r\n 'class': 'cute-card card',\r\n '[class.cute-card-with-background-image]': 'backgroundImage',\r\n '[attr.backgroundImage]': 'null',\r\n },\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuteCard extends CuteLayoutControl {\r\n private _sanitizer = inject(DomSanitizer);\r\n\r\n @Input()\r\n get backgroundImage(): string | undefined {return this._backgroundImage;}\r\n set backgroundImage(value: string | undefined) {\r\n if (value) {\r\n this._backgroundImage = this._sanitizer.sanitize(SecurityContext.URL, value) ?? undefined;\r\n if (this._backgroundImage) {\r\n this._nativeElement.style.backgroundImage = `url('${this._backgroundImage.trim()}')`;\r\n }\r\n } else {\r\n this._nativeElement.style.backgroundImage = \"none\";\r\n this._backgroundImage = undefined;\r\n }\r\n }\r\n private _backgroundImage: string | undefined;\r\n\r\n /** `CuteCardHeader` element if it was defined in the `CuteCard` template. */\r\n readonly _header = contentChild(CuteCardHeader, {descendants: false});\r\n\r\n /** `CuteCardFooter` element if it was defined in the `CuteCard` template. */\r\n readonly _footer = contentChild(CuteCardFooter, {descendants: false});\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected override generateId(): string {\r\n return `cute-card-${++nextId}`;\r\n }\r\n\r\n}\r\n","<ng-content select=\"cute-card-header\"></ng-content>\r\n<ng-content select=\"[cute-card-top-image]\"></ng-content>\r\n<ng-content></ng-content>\r\n<ng-content select=\"[cute-card-bottom-image]\"></ng-content>\r\n<ng-content select=\"cute-card-footer\"></ng-content>\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive} from \"@angular/core\";\r\n\r\n/**\r\n * Avatar image content for a card, intended for use within `<cute-card>`. Can be applied to\r\n * any media element, such as `<img>` or `<picture>`.\r\n *\r\n * This component is an optional convenience for use with other convenience elements, such as\r\n * `<cute-card-title>`; any custom media element may be used in its place.\r\n *\r\n * CuteCardAvatar provides no behaviors, instead serving as a purely visual treatment.\r\n */\r\n@Directive({\r\n selector: '[cute-card-avatar], [cuteCardAvatar]',\r\n host: {'class': 'cute-card-avatar card-avatar shadow'},\r\n standalone: true,\r\n})\r\nexport class CuteCardAvatar {}\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {ChangeDetectorRef, Directive, HostAttributeToken, inject, input, Input, isDevMode} from \"@angular/core\";\r\nimport {CuteCard} from \"./card.component\";\r\n\r\nexport type CuteCardImagePosition = \"top\"|\"bottom\"|\"fluid\";\r\n\r\n/**\r\n * Primary image content for a card, intended for use within `<cute-card>`. Can be applied to\r\n * any media element, such as `<img>` or `<picture>`.\r\n *\r\n * This component is an optional convenience for use with other convenience elements, such as\r\n * `<cute-card-body>`; any custom media element may be used in its place.\r\n *\r\n * `CuteCardImage` provides no behaviors, instead serving as a purely visual treatment.\r\n */\r\n@Directive({\r\n selector: '[cute-card-image], [cute-card-top-image], [cute-card-bottom-image], [cute-card-fluid-image]',\r\n host: {\r\n 'class': 'cute-card-image',\r\n '[class]': \"'card-img'+(_position=='top'||_position=='bottom' ? '-'+_position : '')\",\r\n '[class.img-fluid]': '_position==\"fluid\"',\r\n '[attr.height]': 'height',\r\n '[style.border-radius]': \"_position=='top' && card?._header() ? 0 : (_position=='bottom' && card?._footer() ? 0 : undefined)\",\r\n '[style.--cute-card-image-height]': 'height>=0 ? height+\"px\" : undefined'\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteCardImage {\r\n protected card= inject(CuteCard);\r\n\r\n /** Image position in the card layout */\r\n protected readonly _position: CuteCardImagePosition = \"top\";\r\n\r\n /** The intrinsic height of the image, in pixels. */\r\n @Input()\r\n get height(): number|undefined {return this._height;}\r\n set height(value: number|string|undefined) {\r\n if (typeof value===\"string\") {\r\n value = parseInt(value);\r\n if (isNaN(value)) value = undefined;\r\n }\r\n this._height = value;\r\n }\r\n private _height: number | undefined;\r\n\r\n constructor() {\r\n let attribs: (string|null)[] = [];\r\n attribs[0] = inject(new HostAttributeToken(\"cute-card-top-image\"), {optional: true});\r\n attribs[1] = inject(new HostAttributeToken(\"cute-card-bottom-image\"), {optional: true});\r\n attribs[2] = inject(new HostAttributeToken(\"cute-card-fluid-image\"), {optional: true});\r\n\r\n if (attribs.filter(v => v != null).length > 1 && isDevMode()) {\r\n throw new Error(\"Only one attribute with name 'cute-card-*-image' should be applied.\")\r\n }\r\n\r\n // We take into account the first value only\r\n const attrInd = attribs.findIndex(v => v != null);\r\n switch (attrInd) {\r\n case 0: this._position = \"top\"; break;\r\n case 1: this._position = \"bottom\"; break;\r\n case 2: this._position = \"fluid\"; break;\r\n }\r\n this.card.markForCheck();\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {ChangeDetectionStrategy, Component, Input, ViewEncapsulation} from \"@angular/core\";\r\nimport {ThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n/**\r\n * Content of a card, intended for use within `<cute-card>`. This component is an optional\r\n * convenience for use with other convenience elements, such as `<cute-card-title>`; any custom\r\n * content block element may be used in its place.\r\n *\r\n * CuteCardContent provides no behaviors, instead serving as a purely visual treatment.\r\n */\r\n@Component({\r\n selector: 'cute-card-body, cute-card-content',\r\n templateUrl: './card-body.component.html',\r\n styleUrls: ['./card-body.component.scss'],\r\n exportAs: 'cuteCardBody',\r\n host: {\r\n 'class': 'cute-card-body card-body',\r\n '[class]': 'color ? \"text-\"+color : \"\"',\r\n },\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuteCardBody {\r\n /** Card body text color */\r\n @Input() color: ThemeColor | undefined;\r\n}\r\n","<div class=\"cute-card-title__wrapper\">\r\n <ng-content select=\"cute-card-title, cute-card-subtitle,\r\n [cute-card-title], [cute-card-subtitle],\r\n [cuteCardTitle], [cuteCardSubtitle]\">\r\n </ng-content>\r\n</div>\r\n<div class=\"card-text\">\r\n <ng-content></ng-content>\r\n</div>\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive, Input} from \"@angular/core\";\r\nimport {ContentAlignment} from \"@cute-widgets/base/core\";\r\n\r\n/**\r\n * Bottom area of a card that contains action buttons, intended for use within `<cute-card>`.\r\n * This component is an optional convenience for use with other convenience elements, such as\r\n * `<cute-card-content>`; any custom action block element may be used in its place.\r\n *\r\n * `CuteCardActions` provides no behaviors, instead serving as a purely visual treatment.\r\n */\r\n@Directive({\r\n selector: 'cute-card-actions, [cute-card-actions], [cuteCardActions]',\r\n exportAs: 'cuteCardActions',\r\n host: {\r\n 'class': 'cute-card-actions card-actions',\r\n '[class]': \"'justify-content-'+align\",\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteCardActions {\r\n /** Position of the actions inside the card. */\r\n @Input() align: ContentAlignment = \"start\";\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 {Component} from \"@angular/core\";\r\n\r\n/**\r\n * Use _card groups_ to render cards as a single, attached element with equal width and height columns.\r\n * When using card groups with footers, their content will automatically line up.\r\n */\r\n@Component({\r\n selector: 'cute-card-group',\r\n exportAs: 'cuteCardGroup',\r\n template: '<ng-content></ng-content>',\r\n styles: [`\r\n :host { display: block; }\r\n `],\r\n host: {\r\n 'class': 'cute-card-group card-group'\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteCardGroup /* extends ... */ {\r\n\r\n constructor() {\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive, Input} from \"@angular/core\";\r\nimport {ThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n/**\r\n * Title of a card, intended for use within `<cute-card-body>`. This component is an optional\r\n * convenience for one variety of card titles; any custom title element may be used in its place.\r\n *\r\n * CuteCardTitle provides no behaviors, instead serving as a purely visual treatment.\r\n */\r\n@Directive({\r\n selector: `cute-card-title, [cute-card-title], [cuteCardTitle]`,\r\n host: {\r\n 'class': 'cute-card-title card-title',\r\n '[class]': 'color ? \"text-\"+color : \"\"',\r\n },\r\n standalone: true\r\n})\r\nexport class CuteCardTitle {\r\n /** Title text color */\r\n @Input() color: ThemeColor | undefined;\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\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {Directive, Input} from \"@angular/core\";\r\nimport {ThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n/**\r\n * Subtitle of a card, intended for use within `<cute-card-body>` beneath a `<cute-card-title>`. This\r\n * component is an optional convenience for use with other convenience elements, such as\r\n * `<cute-card-title>`.\r\n *\r\n * CuteCardSubtitle provides no behaviors, instead serving as a purely visual treatment.\r\n */\r\n@Directive({\r\n selector: `cute-card-subtitle, [cute-card-subtitle], [cuteCardSubtitle]`,\r\n host: {\r\n 'class': 'cute-card-subtitle card-subtitle',\r\n '[class]': 'color ? \"text-\"+color : \"\"',\r\n },\r\n standalone: true\r\n})\r\nexport class CuteCardSubtitle {\r\n /** Subtitle text color */\r\n @Input() color: ThemeColor = \"secondary\";\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} from \"@angular/core\";\r\n\r\n/**\r\n * Turn an image into a card background and overlay the card’s text.\r\n */\r\n@Directive({\r\n selector: 'cute-card-overlay',\r\n exportAs: 'cuteCardOverlay',\r\n host: {\r\n 'class': 'card-img-overlay d-flex flex-column'\r\n },\r\n standalone: true,\r\n})\r\nexport class CuteCardOverlay /* extends ... */ {\r\n\r\n constructor() {\r\n }\r\n\r\n}\r\n","import {NgModule, Type} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {CuteCard} from \"./card.component\";\r\nimport {CuteCardTitle} from \"./card-title.directive\";\r\nimport {CuteCardSubtitle} from \"./card-subtitle.directive\";\r\nimport {CuteCardFooter} from \"./card-footer.directive\";\r\nimport {CuteCardHeader} from \"./card-header.directive\";\r\nimport {CuteCardActions} from \"./card-actions.directive\";\r\nimport {CuteCardBody} from \"./card-body.component\";\r\nimport {CuteCardImage} from \"./card-image.directive\";\r\nimport {CuteCardAvatar} from \"./card-avatar.directive\";\r\nimport {CuteCardGroup} from \"./card-group.component\";\r\nimport {CuteCardOverlay} from \"./card-overlay.directive\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteCard,\r\n CuteCardTitle,\r\n CuteCardSubtitle,\r\n CuteCardFooter,\r\n CuteCardHeader,\r\n CuteCardActions,\r\n CuteCardBody,\r\n CuteCardOverlay,\r\n CuteCardImage,\r\n CuteCardAvatar,\r\n CuteCardGroup,\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: [TYPES],\r\n declarations: [],\r\n})\r\nexport class CuteCardModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}