@cute-widgets/base 20.0.2 → 20.0.4

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 (63) hide show
  1. package/CHANGELOG.md +35 -1
  2. package/abstract/index.d.ts +5 -2
  3. package/button/index.d.ts +7 -6
  4. package/card/index.d.ts +9 -6
  5. package/core/directives/index.d.ts +2 -32
  6. package/core/index.d.ts +35 -28
  7. package/core/interfaces/index.d.ts +1 -1
  8. package/core/layout/index.d.ts +34 -27
  9. package/core/nav/index.d.ts +1 -2
  10. package/expansion/index.d.ts +5 -18
  11. package/fesm2022/cute-widgets-base-abstract.mjs +20 -5
  12. package/fesm2022/cute-widgets-base-abstract.mjs.map +1 -1
  13. package/fesm2022/cute-widgets-base-button-toggle.mjs +2 -2
  14. package/fesm2022/cute-widgets-base-button-toggle.mjs.map +1 -1
  15. package/fesm2022/cute-widgets-base-button.mjs +12 -11
  16. package/fesm2022/cute-widgets-base-button.mjs.map +1 -1
  17. package/fesm2022/cute-widgets-base-card.mjs +46 -29
  18. package/fesm2022/cute-widgets-base-card.mjs.map +1 -1
  19. package/fesm2022/cute-widgets-base-chips.mjs +6 -6
  20. package/fesm2022/cute-widgets-base-chips.mjs.map +1 -1
  21. package/fesm2022/cute-widgets-base-core-directives.mjs +5 -73
  22. package/fesm2022/cute-widgets-base-core-directives.mjs.map +1 -1
  23. package/fesm2022/cute-widgets-base-core-interfaces.mjs.map +1 -1
  24. package/fesm2022/cute-widgets-base-core-layout.mjs +64 -40
  25. package/fesm2022/cute-widgets-base-core-layout.mjs.map +1 -1
  26. package/fesm2022/cute-widgets-base-core-nav.mjs +1 -2
  27. package/fesm2022/cute-widgets-base-core-nav.mjs.map +1 -1
  28. package/fesm2022/cute-widgets-base-core.mjs +64 -40
  29. package/fesm2022/cute-widgets-base-core.mjs.map +1 -1
  30. package/fesm2022/cute-widgets-base-dialog.mjs +1 -1
  31. package/fesm2022/cute-widgets-base-dialog.mjs.map +1 -1
  32. package/fesm2022/cute-widgets-base-expansion.mjs +19 -13
  33. package/fesm2022/cute-widgets-base-expansion.mjs.map +1 -1
  34. package/fesm2022/cute-widgets-base-list.mjs +2 -2
  35. package/fesm2022/cute-widgets-base-list.mjs.map +1 -1
  36. package/fesm2022/cute-widgets-base-navbar.mjs +6 -0
  37. package/fesm2022/cute-widgets-base-navbar.mjs.map +1 -1
  38. package/fesm2022/cute-widgets-base-paginator.mjs +12 -10
  39. package/fesm2022/cute-widgets-base-paginator.mjs.map +1 -1
  40. package/fesm2022/cute-widgets-base-radio.mjs +1 -2
  41. package/fesm2022/cute-widgets-base-radio.mjs.map +1 -1
  42. package/fesm2022/cute-widgets-base-select.mjs +2 -2
  43. package/fesm2022/cute-widgets-base-select.mjs.map +1 -1
  44. package/fesm2022/cute-widgets-base-sidenav.mjs +31 -30
  45. package/fesm2022/cute-widgets-base-sidenav.mjs.map +1 -1
  46. package/fesm2022/cute-widgets-base-snack-bar.mjs +2 -2
  47. package/fesm2022/cute-widgets-base-snack-bar.mjs.map +1 -1
  48. package/fesm2022/cute-widgets-base-sort.mjs +63 -260
  49. package/fesm2022/cute-widgets-base-sort.mjs.map +1 -1
  50. package/fesm2022/cute-widgets-base-table.mjs +22 -16
  51. package/fesm2022/cute-widgets-base-table.mjs.map +1 -1
  52. package/fesm2022/cute-widgets-base-tree.mjs +11 -2
  53. package/fesm2022/cute-widgets-base-tree.mjs.map +1 -1
  54. package/fesm2022/cute-widgets-base.mjs +3 -1
  55. package/fesm2022/cute-widgets-base.mjs.map +1 -1
  56. package/navbar/index.d.ts +6 -0
  57. package/package.json +18 -17
  58. package/paginator/index.d.ts +5 -16
  59. package/radio/index.d.ts +0 -1
  60. package/sidenav/index.d.ts +1 -2
  61. package/sort/index.d.ts +25 -138
  62. package/table/index.d.ts +24 -21
  63. package/tree/index.d.ts +5 -0
package/CHANGELOG.md CHANGED
@@ -1 +1,35 @@
1
- ## Initial version 20.0.0
1
+ ## Changes in version 20.0.4 (2026-01-30)
2
+
3
+ ---
4
+ ### Fixes:
5
+ * The internal markup of `CuteCardBody` and `CuteCardSubtitle` has been changed.
6
+ * The type of `sort` parameter in `CuteTableDataSource#sortData` has been changed to `Sort` interface.
7
+
8
+ ### Improvements:
9
+ * Add `wrapLabel` input property to the `CuteButton` component. With default value of _false_.
10
+ * `CuteSort` implements the `Sort` interface now and uses native CSS animation.
11
+ * `CuteCardImage` can now be positioned by statically specifying the corresponding attribute: `[cute-card-top-image]`, `[cute-card-bottom-image]`, or `[cute-card-float-image]`.
12
+ * `CutePaginator` and `CuteSelect` are more responsive now.
13
+ * `CuteChips` have become more cute.
14
+ * The `bsBreakpoints` object has been completely redesigned.
15
+
16
+
17
+ ## Changes in version 20.0.3 (2026-01-12)
18
+
19
+ ---
20
+ * Multiple cosmetic changes.
21
+
22
+ ## Changes in version 20.0.2 (2025-12-30)
23
+
24
+ ---
25
+ * `cute-select` now uses native CSS animation.
26
+
27
+ ## Changes in version 20.0.1 (2025-12-26)
28
+
29
+ ---
30
+ * Small changes.
31
+
32
+ ## Version 20.0.0
33
+
34
+ ---
35
+ * Initial version.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ElementRef, InjectionToken, OnInit, AfterViewInit, AfterContentInit, OnChanges, OnDestroy, ChangeDetectorRef, Renderer2, SimpleChanges, Signal, EventEmitter } from '@angular/core';
2
+ import { ElementRef, InjectionToken, OnInit, AfterViewInit, AfterContentInit, OnChanges, OnDestroy, ChangeDetectorRef, Renderer2, DestroyRef, SimpleChanges, Signal, EventEmitter } from '@angular/core';
3
3
  import { BooleanInput } from '@angular/cdk/coercion';
4
4
  import { Observable, Subject } from 'rxjs';
5
5
  import { RichThemeColor, LayoutBreakpoint } from '@cute-widgets/base/core';
@@ -52,6 +52,7 @@ declare abstract class CuteBaseControl implements CuteWidget, OnInit, AfterViewI
52
52
  protected readonly _elementRef: ElementRef<HTMLElement>;
53
53
  protected readonly _changeDetectorRef: ChangeDetectorRef;
54
54
  protected readonly _renderer: Renderer2;
55
+ protected readonly _destroyRef: DestroyRef;
55
56
  /** Owner widget */
56
57
  readonly owner: CuteWidget | null;
57
58
  /**
@@ -190,6 +191,8 @@ declare abstract class CuteBaseControl implements CuteWidget, OnInit, AfterViewI
190
191
  disable(): void;
191
192
  /** Explicitly marks the view as changed so that it can be checked again. */
192
193
  markForCheck(): void;
194
+ /** Checks this view and its children. */
195
+ detectChanges(): void;
193
196
  /** Toggles the `disabled` state of the component */
194
197
  toggleDisabled(): void;
195
198
  ngOnInit(): void;
@@ -313,7 +316,7 @@ declare abstract class CuteLayoutControl extends CuteBaseControl {
313
316
  /** Clears floated content within a container */
314
317
  clearfix: boolean;
315
318
  /** Symbolic name of the screen minimum width which determines how the responsive layout behaves across device or viewport sizes. */
316
- breakpoint: LayoutBreakpoint | undefined;
319
+ breakpoint: LayoutBreakpoint | LayoutBreakpoint[] | undefined;
317
320
  /** Event that is raised when the width of viewport is changed and crosses the size of `breakpoint`'s value. */
318
321
  breakpointState: EventEmitter<BreakpointState>;
319
322
  ngOnChanges(changes: SimpleChanges): void;
package/button/index.d.ts CHANGED
@@ -45,16 +45,16 @@ declare abstract class CuteButtonBase extends CuteFocusableControl implements Do
45
45
  protected readonly _ngZone: NgZone;
46
46
  protected readonly _isAnchor: boolean;
47
47
  private _icons;
48
- /** Button's appearance style in the following format: `{style}-button` */
48
+ /** Button's appearance style in the following format: `{style}-button`. */
49
49
  get inputButtonStyle(): CuteButtonStyle;
50
50
  set inputButtonStyle(value: CuteButtonStyle | undefined | "");
51
51
  private _inputButtonStyle;
52
52
  private _buttonStyle;
53
- /** Relative size of the Button */
53
+ /** Relative size of the Button. */
54
54
  magnitude: RelativeSize7 | undefined;
55
- /** Whether to disable text wrapping */
56
- nowrap: boolean;
57
- /** Whether to disable the ripple effect on button clicking */
55
+ /** Whether to enable label wrapping. */
56
+ wrapLabel: boolean;
57
+ /** Whether to disable the ripple effect on button clicking. */
58
58
  get disableRipple(): boolean;
59
59
  set disableRipple(value: boolean);
60
60
  /** `aria-disabled` value of the button. */
@@ -111,7 +111,8 @@ declare abstract class CuteButtonBase extends CuteFocusableControl implements Do
111
111
  private _onMouseEvent;
112
112
  private _launchRipple;
113
113
  static ɵfac: i0.ɵɵFactoryDeclaration<CuteButtonBase, never>;
114
- static ɵdir: i0.ɵɵDirectiveDeclaration<CuteButtonBase, never, never, { "inputButtonStyle": { "alias": "cuteButton"; "required": false; }; "magnitude": { "alias": "magnitude"; "required": false; }; "nowrap": { "alias": "nowrap"; "required": false; }; "disableRipple": { "alias": "disableRipple"; "required": false; }; "ariaDisabled": { "alias": "aria-disabled"; "required": false; }; "withAriaExpandedIndicator": { "alias": "withAriaExpandedIndicator"; "required": false; }; "disabledInteractive": { "alias": "disabledInteractive"; "required": false; }; "visuallyHiddenLabel": { "alias": "visuallyHiddenLabel"; "required": false; }; }, {}, ["_icons"], never, true, never>;
114
+ static ɵdir: i0.ɵɵDirectiveDeclaration<CuteButtonBase, never, never, { "inputButtonStyle": { "alias": "cuteButton"; "required": false; }; "magnitude": { "alias": "magnitude"; "required": false; }; "wrapLabel": { "alias": "wrapLabel"; "required": false; }; "disableRipple": { "alias": "disableRipple"; "required": false; }; "ariaDisabled": { "alias": "aria-disabled"; "required": false; }; "withAriaExpandedIndicator": { "alias": "withAriaExpandedIndicator"; "required": false; }; "disabledInteractive": { "alias": "disabledInteractive"; "required": false; }; "visuallyHiddenLabel": { "alias": "visuallyHiddenLabel"; "required": false; }; }, {}, ["_icons"], never, true, never>;
115
+ static ngAcceptInputType_wrapLabel: unknown;
115
116
  static ngAcceptInputType_ariaDisabled: unknown;
116
117
  static ngAcceptInputType_withAriaExpandedIndicator: unknown;
117
118
  static ngAcceptInputType_disabledInteractive: unknown;
package/card/index.d.ts CHANGED
@@ -36,13 +36,13 @@ declare class CuteCard extends CuteLayoutControl {
36
36
  set backgroundImage(value: string | undefined);
37
37
  private _backgroundImage;
38
38
  /** `CuteCardHeader` element if it was defined in the `CuteCard` template. */
39
- readonly _header: CuteCardHeader | undefined;
39
+ readonly _header: i0.Signal<CuteCardHeader | undefined>;
40
40
  /** `CuteCardFooter` element if it was defined in the `CuteCard` template. */
41
- readonly _footer: CuteCardFooter | undefined;
41
+ readonly _footer: i0.Signal<CuteCardFooter | undefined>;
42
42
  constructor();
43
43
  protected generateId(): string;
44
44
  static ɵfac: i0.ɵɵFactoryDeclaration<CuteCard, never>;
45
- static ɵcmp: i0.ɵɵComponentDeclaration<CuteCard, "cute-card", ["cuteCard"], { "backgroundImage": { "alias": "backgroundImage"; "required": false; }; }, {}, ["_header", "_footer"], ["cute-card-header", "img[position=top], [role=img][position=top]", "*", "img[position=bottom], [role=img][position=bottom]", "cute-card-footer"], true, never>;
45
+ static ɵcmp: i0.ɵɵComponentDeclaration<CuteCard, "cute-card", ["cuteCard"], { "backgroundImage": { "alias": "backgroundImage"; "required": false; }; }, {}, ["_header", "_footer"], ["cute-card-header", "[cute-card-top-image]", "*", "[cute-card-bottom-image]", "cute-card-footer"], true, never>;
46
46
  }
47
47
 
48
48
  /**
@@ -59,6 +59,7 @@ declare class CuteCardAvatar {
59
59
  static ɵdir: i0.ɵɵDirectiveDeclaration<CuteCardAvatar, "[cute-card-avatar], [cuteCardAvatar]", never, {}, {}, never, never, true, never>;
60
60
  }
61
61
 
62
+ type CuteCardImagePosition = "top" | "bottom" | "fluid";
62
63
  /**
63
64
  * Primary image content for a card, intended for use within `<cute-card>`. Can be applied to
64
65
  * any media element, such as `<img>` or `<picture>`.
@@ -71,13 +72,14 @@ declare class CuteCardAvatar {
71
72
  declare class CuteCardImage {
72
73
  protected card: CuteCard;
73
74
  /** Image position in the card layout */
74
- position: "top" | "bottom" | "fluid";
75
- /** Image height in pixels */
75
+ protected readonly _position: CuteCardImagePosition;
76
+ /** The intrinsic height of the image, in pixels. */
76
77
  get height(): number | undefined;
77
78
  set height(value: number | string | undefined);
78
79
  private _height;
80
+ constructor();
79
81
  static ɵfac: i0.ɵɵFactoryDeclaration<CuteCardImage, never>;
80
- static ɵdir: i0.ɵɵDirectiveDeclaration<CuteCardImage, "[cute-card-image], [cuteCardImage]", never, { "position": { "alias": "position"; "required": false; }; "height": { "alias": "height"; "required": false; }; }, {}, never, never, true, never>;
82
+ static ɵdir: i0.ɵɵDirectiveDeclaration<CuteCardImage, "[cute-card-image], [cute-card-top-image], [cute-card-bottom-image], [cute-card-fluid-image]", never, { "height": { "alias": "height"; "required": false; }; }, {}, never, never, true, never>;
81
83
  }
82
84
 
83
85
  /**
@@ -161,3 +163,4 @@ declare class CuteCardModule {
161
163
  }
162
164
 
163
165
  export { CuteCard, CuteCardActions, CuteCardAvatar, CuteCardBody, CuteCardFooter, CuteCardGroup, CuteCardHeader, CuteCardImage, CuteCardModule, CuteCardOverlay, CuteCardSubtitle, CuteCardTitle };
166
+ export type { CuteCardImagePosition };
@@ -1,6 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { EventEmitter, OnChanges, SimpleChanges, OnInit } from '@angular/core';
3
- import { LayoutBreakpoint } from '@cute-widgets/base/core/types';
4
3
 
5
4
  /**
6
5
  * Allows users to disable the context menu that appears when they right-click
@@ -23,7 +22,7 @@ declare class CuteDisableContextMenu {
23
22
  /**
24
23
  * Tracks a click outside the target element.
25
24
  * @example
26
- * <div cuteClickOutside (clickOutside)="closeDropdown()">
25
+ * <div (cuteClickOutside)="closeDropdown()">
27
26
  * <button (click)="toggleDropdown()">Toggle Dropdown</button>
28
27
  * <div *ngIf="dropdownOpen" class="dropdown">
29
28
  * Dropdown content
@@ -90,35 +89,6 @@ declare class CuteTimeAgo implements OnChanges {
90
89
  static ɵdir: i0.ɵɵDirectiveDeclaration<CuteTimeAgo, "[cuteTimeAgo]", never, { "cuteTimeAgo": { "alias": "cuteTimeAgo"; "required": false; }; }, {}, never, never, true, never>;
91
90
  }
92
91
 
93
- /**
94
- * @license Apache-2.0
95
- *
96
- * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
97
- *
98
- * You may not use this file except in compliance with the License
99
- * that can be found at http://www.apache.org/licenses/LICENSE-2.0
100
- */
101
-
102
- /**
103
- * ```HTML
104
- * <div cuteResponsive="md, lg">
105
- * This content is visible on medium and large screens.
106
- * </div>
107
- * ```
108
- */
109
- declare class CuteResponsive implements OnInit {
110
- private templateRef;
111
- private viewContainer;
112
- /** Comma-separated screen size breakpoints (e.g., 'md, lg') or an array of it. */
113
- breakPoints?: string | LayoutBreakpoint[];
114
- constructor();
115
- ngOnInit(): void;
116
- private detectScreenSize;
117
- private getScreenWidth;
118
- static ɵfac: i0.ɵɵFactoryDeclaration<CuteResponsive, never>;
119
- static ɵdir: i0.ɵɵDirectiveDeclaration<CuteResponsive, "[cuteResponsive]", never, { "breakPoints": { "alias": "cuteResponsive"; "required": false; }; }, {}, never, never, true, never>;
120
- }
121
-
122
92
  /**
123
93
  * @license Apache-2.0
124
94
  *
@@ -165,4 +135,4 @@ declare class CuteFocusInitial {
165
135
  static ɵdir: i0.ɵɵDirectiveDeclaration<CuteFocusInitial, "[cuteFocusInitial]", never, {}, {}, never, never, true, never>;
166
136
  }
167
137
 
168
- export { CuteClickOutside, CuteCopyToClipboard, CuteDisableContextMenu, CuteFocusInitial, CuteIconLink, CuteResponsive, CuteSvgSymbol, CuteTimeAgo };
138
+ export { CuteClickOutside, CuteCopyToClipboard, CuteDisableContextMenu, CuteFocusInitial, CuteIconLink, CuteSvgSymbol, CuteTimeAgo };
package/core/index.d.ts CHANGED
@@ -54,21 +54,28 @@ declare function _animationsDisabled(): boolean;
54
54
  * that can be found at http://www.apache.org/licenses/LICENSE-2.0
55
55
  */
56
56
  /**
57
- * Bootstrap media-queries, or `breakpoints`.
58
- * PascalCase is being used as Breakpoints is used like an enum.
57
+ * Bootstrap media queries, or `breakpoints`.
59
58
  */
60
59
  declare const bsBreakpoints: {
61
- SmallAndDown: string;
62
- MediumAndDown: string;
63
- LargeAndDown: string;
64
- XLargeAndDown: string;
65
- XXLargeAndDown: string;
66
- XSmall: string;
67
- Small: string;
68
- Medium: string;
69
- Large: string;
70
- XLarge: string;
71
- XXLarge: string;
60
+ query: {
61
+ SmallAndDown: string;
62
+ MediumAndDown: string;
63
+ LargeAndDown: string;
64
+ XLargeAndDown: string;
65
+ XXLargeAndDown: string;
66
+ XSmall: string;
67
+ Small: string;
68
+ Medium: string;
69
+ Large: string;
70
+ XLarge: string;
71
+ XXLarge: string;
72
+ readonly xs: string;
73
+ readonly sm: string;
74
+ readonly md: string;
75
+ readonly lg: string;
76
+ readonly xl: string;
77
+ readonly xxl: string;
78
+ };
72
79
  readonly grid: {
73
80
  xs: number;
74
81
  sm: number;
@@ -77,24 +84,24 @@ declare const bsBreakpoints: {
77
84
  xl: number;
78
85
  xxl: number;
79
86
  };
80
- readonly xs: string;
81
- readonly sm: string;
82
- readonly md: string;
83
- readonly lg: string;
84
- readonly xl: string;
85
- readonly xxl: string;
86
- /**
87
- * Gets the object's property name of the media-query by its value
88
- * @param query The media-query text
89
- * @returns The property name of the media-query or _undefined_ if it was not found
90
- */
91
- getQueryName(query: string): string | undefined;
92
87
  /**
93
88
  * Gets the breakpoint label by Bootstrap's breakpoint abbreviation
94
- * @param code Bootstrap's breakpoint abbreviation
95
- * @returns More descriptive text of the abbreviation
89
+ * @param code Bootstrap's breakpoint abbreviation.
90
+ * @returns More descriptive text of the abbreviation.
96
91
  */
97
92
  getLabel(code: string): string;
93
+ /**
94
+ * Returns the media query string for the specified breakpoint symbol.
95
+ * @param code Bootstrap's breakpoint abbreviation.
96
+ * @returns Media query string or _undefined_ if the code has an unknown value.
97
+ */
98
+ getQuery(code: string): string | undefined;
99
+ /**
100
+ * Gets the name of the media-query by its value.
101
+ * @param query The media-query text.
102
+ * @returns The name of the media-query or _undefined_ if it was not found.
103
+ */
104
+ getQueryName(query: string): string | undefined;
98
105
  };
99
106
 
100
107
  /**
@@ -229,7 +236,7 @@ interface TreeNode<D = unknown> {
229
236
  data?: D;
230
237
  /** Router link. */
231
238
  routerLink?: string | string[];
232
- /** Identifies the picture displayed to the left of the item label. */
239
+ /** Identifies the image displayed next to the item label. */
233
240
  icon?: string;
234
241
  /** Icon color. */
235
242
  iconColor?: string;
@@ -39,7 +39,7 @@ interface TreeNode<D = unknown> {
39
39
  data?: D;
40
40
  /** Router link. */
41
41
  routerLink?: string | string[];
42
- /** Identifies the picture displayed to the left of the item label. */
42
+ /** Identifies the image displayed next to the item label. */
43
43
  icon?: string;
44
44
  /** Icon color. */
45
45
  iconColor?: string;
@@ -7,21 +7,28 @@
7
7
  * that can be found at http://www.apache.org/licenses/LICENSE-2.0
8
8
  */
9
9
  /**
10
- * Bootstrap media-queries, or `breakpoints`.
11
- * PascalCase is being used as Breakpoints is used like an enum.
10
+ * Bootstrap media queries, or `breakpoints`.
12
11
  */
13
12
  declare const bsBreakpoints: {
14
- SmallAndDown: string;
15
- MediumAndDown: string;
16
- LargeAndDown: string;
17
- XLargeAndDown: string;
18
- XXLargeAndDown: string;
19
- XSmall: string;
20
- Small: string;
21
- Medium: string;
22
- Large: string;
23
- XLarge: string;
24
- XXLarge: string;
13
+ query: {
14
+ SmallAndDown: string;
15
+ MediumAndDown: string;
16
+ LargeAndDown: string;
17
+ XLargeAndDown: string;
18
+ XXLargeAndDown: string;
19
+ XSmall: string;
20
+ Small: string;
21
+ Medium: string;
22
+ Large: string;
23
+ XLarge: string;
24
+ XXLarge: string;
25
+ readonly xs: string;
26
+ readonly sm: string;
27
+ readonly md: string;
28
+ readonly lg: string;
29
+ readonly xl: string;
30
+ readonly xxl: string;
31
+ };
25
32
  readonly grid: {
26
33
  xs: number;
27
34
  sm: number;
@@ -30,24 +37,24 @@ declare const bsBreakpoints: {
30
37
  xl: number;
31
38
  xxl: number;
32
39
  };
33
- readonly xs: string;
34
- readonly sm: string;
35
- readonly md: string;
36
- readonly lg: string;
37
- readonly xl: string;
38
- readonly xxl: string;
39
- /**
40
- * Gets the object's property name of the media-query by its value
41
- * @param query The media-query text
42
- * @returns The property name of the media-query or _undefined_ if it was not found
43
- */
44
- getQueryName(query: string): string | undefined;
45
40
  /**
46
41
  * Gets the breakpoint label by Bootstrap's breakpoint abbreviation
47
- * @param code Bootstrap's breakpoint abbreviation
48
- * @returns More descriptive text of the abbreviation
42
+ * @param code Bootstrap's breakpoint abbreviation.
43
+ * @returns More descriptive text of the abbreviation.
49
44
  */
50
45
  getLabel(code: string): string;
46
+ /**
47
+ * Returns the media query string for the specified breakpoint symbol.
48
+ * @param code Bootstrap's breakpoint abbreviation.
49
+ * @returns Media query string or _undefined_ if the code has an unknown value.
50
+ */
51
+ getQuery(code: string): string | undefined;
52
+ /**
53
+ * Gets the name of the media-query by its value.
54
+ * @param query The media-query text.
55
+ * @returns The name of the media-query or _undefined_ if it was not found.
56
+ */
57
+ getQueryName(query: string): string | undefined;
51
58
  };
52
59
 
53
60
  export { bsBreakpoints };
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { NgZone, ViewContainerRef, InjectionToken, DestroyRef, QueryList, EventEmitter, TemplateRef, OnDestroy } from '@angular/core';
2
+ import { NgZone, ViewContainerRef, InjectionToken, QueryList, EventEmitter, TemplateRef, OnDestroy } from '@angular/core';
3
3
  import { ListKeyManager, FocusOrigin } from '@angular/cdk/a11y';
4
4
  import { Directionality } from '@angular/cdk/bidi';
5
5
  import { CuteFocusableControl, CuteLayoutControl } from '@cute-widgets/base/abstract';
@@ -170,7 +170,6 @@ declare class CuteNavChangingEvent extends Event {
170
170
  * ```
171
171
  */
172
172
  declare class CuteNav extends CuteLayoutControl {
173
- protected _destroyRef: DestroyRef;
174
173
  protected _dir: Directionality;
175
174
  protected _keyManager: ListKeyManager<CuteNavLink> | undefined;
176
175
  private _oldFocusLink;
@@ -1,11 +1,11 @@
1
1
  import * as i0 from '@angular/core';
2
- import { TemplateRef, AfterContentInit, OnChanges, OnDestroy, EventEmitter, SimpleChanges, ElementRef, InjectionToken, AfterViewInit, QueryList } from '@angular/core';
2
+ import { TemplateRef, AfterContentInit, OnChanges, OnDestroy, EventEmitter, SimpleChanges, ElementRef, InjectionToken, QueryList } from '@angular/core';
3
3
  import { CdkAccordion, CdkAccordionItem } from '@angular/cdk/accordion';
4
4
  import { FocusableOption, FocusOrigin } from '@angular/cdk/a11y';
5
5
  import { BooleanInput } from '@angular/cdk/coercion';
6
6
  import { TemplatePortal } from '@angular/cdk/portal';
7
7
  import { Subject } from 'rxjs';
8
- import { Expandable } from '@cute-widgets/base/abstract';
8
+ import { Expandable, CuteLayoutControl } from '@cute-widgets/base/abstract';
9
9
  import * as i1 from '@angular/common';
10
10
 
11
11
  /**
@@ -177,23 +177,9 @@ declare class CuteExpansionPanel extends CdkAccordionItem implements CuteExpansi
177
177
  static ɵcmp: i0.ɵɵComponentDeclaration<CuteExpansionPanel, "cute-expansion-panel", ["cuteExpansionPanel"], { "hideToggle": { "alias": "hideToggle"; "required": false; }; "togglePosition": { "alias": "togglePosition"; "required": false; }; }, { "afterExpand": "afterExpand"; "afterCollapse": "afterCollapse"; }, ["_lazyContent"], ["cute-expansion-panel-header", "*", "cute-action-row"], true, never>;
178
178
  }
179
179
 
180
- /**
181
- * @license Apache-2.0
182
- *
183
- * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.
184
- *
185
- * You may not use this file except in compliance with the License
186
- * that can be found at http://www.apache.org/licenses/LICENSE-2.0
187
- *
188
- * This code is a modification of the `@angular/material` original
189
- * code licensed under MIT-style License (https://angular.dev/license).
190
- */
191
-
192
- declare class CuteExpansionPanelHeader implements AfterViewInit, OnDestroy, FocusableOption {
180
+ declare class CuteExpansionPanelHeader extends CuteLayoutControl implements FocusableOption {
193
181
  readonly panel: CuteExpansionPanel;
194
- private _element;
195
182
  private _focusMonitor;
196
- private _changeDetectorRef;
197
183
  private _parentChangeSubscription;
198
184
  constructor(...args: unknown[]);
199
185
  /** Height of the header while the panel is expanded. */
@@ -202,8 +188,9 @@ declare class CuteExpansionPanelHeader implements AfterViewInit, OnDestroy, Focu
202
188
  collapsedHeight: string | undefined;
203
189
  /** Tab index of the header. */
204
190
  tabIndex: number;
191
+ protected generateId(): string;
205
192
  /** Whether the associated panel is disabled. Implemented as a part of `FocusableOption`. */
206
- get disabled(): boolean;
193
+ protected getDisabledState(): boolean;
207
194
  /** Toggles the expanded state of the panel. */
208
195
  protected _toggle(): void;
209
196
  /** Gets whether the panel is expanded. */
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, isDevMode, inject, ElementRef, ChangeDetectorRef, Renderer2, booleanAttribute, Input, Directive, numberAttribute, EventEmitter, Output, HostBinding } from '@angular/core';
2
+ import { InjectionToken, isDevMode, inject, ElementRef, ChangeDetectorRef, Renderer2, DestroyRef, booleanAttribute, Input, Directive, numberAttribute, EventEmitter, Output, HostBinding } from '@angular/core';
3
3
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
4
4
  import { Observable, Subject } from 'rxjs';
5
5
  import { FocusMonitor } from '@angular/cdk/a11y';
@@ -59,7 +59,7 @@ class CuteBaseControl {
59
59
  ;
60
60
  set id(value) { this._id = value; }
61
61
  /** Theme color palette for the component. */
62
- get color() { return this._color ?? this.defaultColor; }
62
+ get color() { return this._color ?? this.defaultColor ?? this.owner?.color; }
63
63
  set color(value) { this.setColor(value); }
64
64
  /**
65
65
  * Makes the host element not mutable, focusable, or even submitted with the form
@@ -86,6 +86,7 @@ class CuteBaseControl {
86
86
  this._elementRef = inject(ElementRef);
87
87
  this._changeDetectorRef = inject(ChangeDetectorRef);
88
88
  this._renderer = inject(Renderer2);
89
+ this._destroyRef = inject(DestroyRef);
89
90
  /** Owner widget */
90
91
  this.owner = inject(CUTE_WIDGET, { skipSelf: true, optional: true });
91
92
  /**
@@ -246,6 +247,10 @@ class CuteBaseControl {
246
247
  markForCheck() {
247
248
  this._changeDetectorRef.markForCheck();
248
249
  }
250
+ /** Checks this view and its children. */
251
+ detectChanges() {
252
+ this._changeDetectorRef.detectChanges();
253
+ }
249
254
  /** Toggles the `disabled` state of the component */
250
255
  toggleDisabled() {
251
256
  this.disabled = !this.disabled;
@@ -499,10 +504,20 @@ class CuteLayoutControl extends CuteBaseControl {
499
504
  const change = changes["breakpoint"];
500
505
  if (change) {
501
506
  this._subscription?.unsubscribe();
502
- if (change.currentValue) { // && (change.currentValue !== change.previousValue)) {
503
- const bpName = bsBreakpoints.getLabel(change.currentValue);
507
+ if (change.currentValue) {
508
+ let bpArray;
509
+ if (Array.isArray(change.currentValue)) {
510
+ bpArray = change.currentValue;
511
+ }
512
+ else {
513
+ bpArray = [change.currentValue];
514
+ }
515
+ const queries = bpArray.map(value => {
516
+ const label = bsBreakpoints.getLabel(value);
517
+ return bsBreakpoints.getQuery(label + "AndDown") ?? "";
518
+ });
504
519
  this._subscription = this.breakpointObserver
505
- .observe(bsBreakpoints[bpName + "AndDown"])
520
+ .observe(queries)
506
521
  .subscribe(state => this.breakpointState.emit(state));
507
522
  }
508
523
  }