@yuuvis/material 2.20.0 → 3.0.0-beta.20.0

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 (50) hide show
  1. package/badge/index.d.ts +53 -1
  2. package/fesm2022/yuuvis-material-badge.mjs +8 -9
  3. package/fesm2022/yuuvis-material-badge.mjs.map +1 -1
  4. package/fesm2022/yuuvis-material-layout.mjs +37 -37
  5. package/fesm2022/yuuvis-material-layout.mjs.map +1 -1
  6. package/fesm2022/yuuvis-material-panes.mjs +48 -48
  7. package/fesm2022/yuuvis-material-panes.mjs.map +1 -1
  8. package/fesm2022/yuuvis-material.mjs +81 -88
  9. package/fesm2022/yuuvis-material.mjs.map +1 -1
  10. package/index.d.ts +358 -4
  11. package/layout/index.d.ts +96 -4
  12. package/package.json +6 -6
  13. package/panes/index.d.ts +300 -9
  14. package/badge/badge.component.d.ts +0 -49
  15. package/badge/model/badge.model.d.ts +0 -1
  16. package/layout/lib/components/master-details-layout/master-details-layout.component.d.ts +0 -49
  17. package/layout/lib/directives/area-cover.directive.d.ts +0 -13
  18. package/layout/lib/directives/layout-pane.directive.d.ts +0 -15
  19. package/layout/lib/layout.interface.d.ts +0 -26
  20. package/layout/lib/layout.module.d.ts +0 -8
  21. package/layout/lib/services/layout.service.d.ts +0 -19
  22. package/lib/assets/i18n/ar.json +0 -22
  23. package/lib/components/datepicker/datepicker-toggle.component.d.ts +0 -21
  24. package/lib/components/datepicker/datepicker.component.d.ts +0 -88
  25. package/lib/components/datepicker/index.d.ts +0 -2
  26. package/lib/components/index.d.ts +0 -1
  27. package/lib/directives/button/index.d.ts +0 -2
  28. package/lib/directives/button/ymt-button.directive.d.ts +0 -18
  29. package/lib/directives/button/ymt-button.model.d.ts +0 -4
  30. package/lib/directives/icon-button/index.d.ts +0 -2
  31. package/lib/directives/icon-button/ymt-icon-button.directive.d.ts +0 -15
  32. package/lib/directives/icon-button/ymt-icon-button.model.d.ts +0 -5
  33. package/lib/directives/index.d.ts +0 -2
  34. package/lib/providers/index.d.ts +0 -1
  35. package/lib/providers/material.providers.d.ts +0 -4
  36. package/lib/services/device.interface.d.ts +0 -15
  37. package/lib/services/device.service.d.ts +0 -147
  38. package/lib/services/index.d.ts +0 -5
  39. package/lib/services/ymt-date-adapter.service.d.ts +0 -25
  40. package/lib/services/ymt-datepicker-intl.service.d.ts +0 -11
  41. package/lib/services/ymt-mat-icon-registry.service.d.ts +0 -13
  42. package/lib/services/ymt-mat-paginator-intl.service.d.ts +0 -12
  43. package/panes/lib/pane/fullscreen.directive.d.ts +0 -37
  44. package/panes/lib/pane/pane-aside/pane-aside.component.d.ts +0 -5
  45. package/panes/lib/pane/pane-body/pane-body.component.d.ts +0 -5
  46. package/panes/lib/pane/pane-footer/pane-footer.component.d.ts +0 -5
  47. package/panes/lib/pane/pane-header/pane-header.component.d.ts +0 -74
  48. package/panes/lib/pane/pane-top-bar/pane-top-bar.component.d.ts +0 -10
  49. package/panes/lib/pane/pane.component.d.ts +0 -168
  50. package/panes/lib/panes.module.d.ts +0 -11
@@ -1,18 +0,0 @@
1
- import { AfterViewInit, OnInit } from '@angular/core';
2
- import { YMT_BUTTON_SIZE } from './ymt-button.model';
3
- import * as i0 from "@angular/core";
4
- export type ButtonType = 'primary' | 'secondary' | 'tertiary' | 'danger';
5
- export declare class YmtButtonDirective implements OnInit, AfterViewInit {
6
- #private;
7
- ymtButton: import("@angular/core").InputSignal<ButtonType>;
8
- disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
9
- ariaDisabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
10
- disableRipple: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
11
- disabledInteractive: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
12
- size: import("@angular/core").InputSignal<"small" | "medium" | YMT_BUTTON_SIZE>;
13
- constructor();
14
- ngOnInit(): void;
15
- ngAfterViewInit(): void;
16
- static ɵfac: i0.ɵɵFactoryDeclaration<YmtButtonDirective, never>;
17
- static ɵdir: i0.ɵɵDirectiveDeclaration<YmtButtonDirective, "button[ymtButton], a[ymtButton]", never, { "ymtButton": { "alias": "ymtButton"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "ariaDisabled": { "alias": "aria-disabled"; "required": false; "isSignal": true; }; "disableRipple": { "alias": "disableRipple"; "required": false; "isSignal": true; }; "disabledInteractive": { "alias": "disabledInteractive"; "required": false; "isSignal": true; }; "size": { "alias": "button-size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
18
- }
@@ -1,4 +0,0 @@
1
- export declare enum YMT_BUTTON_SIZE {
2
- small = "small",
3
- medium = "medium"
4
- }
@@ -1,2 +0,0 @@
1
- export * from './ymt-icon-button.directive';
2
- export * from './ymt-icon-button.model';
@@ -1,15 +0,0 @@
1
- import { AfterViewInit } from '@angular/core';
2
- import { YMT_ICON_BUTTON_SIZE } from './ymt-icon-button.model';
3
- import * as i0 from "@angular/core";
4
- export declare class YmtIconButtonDirective implements AfterViewInit {
5
- #private;
6
- disabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
7
- disableRipple: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
8
- ariaDisabled: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
9
- disabledInteractive: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
10
- size: import("@angular/core").InputSignal<"small" | "extra-small" | "medium" | YMT_ICON_BUTTON_SIZE>;
11
- constructor();
12
- ngAfterViewInit(): void;
13
- static ɵfac: i0.ɵɵFactoryDeclaration<YmtIconButtonDirective, never>;
14
- static ɵdir: i0.ɵɵDirectiveDeclaration<YmtIconButtonDirective, "button[ymtIconButton],button[ymt-icon-button],a[ymtIconButton],a[ymt-icon-button]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "disableRipple": { "alias": "disableRipple"; "required": false; "isSignal": true; }; "ariaDisabled": { "alias": "aria-disabled"; "required": false; "isSignal": true; }; "disabledInteractive": { "alias": "disabledInteractive"; "required": false; "isSignal": true; }; "size": { "alias": "icon-button-size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
15
- }
@@ -1,5 +0,0 @@
1
- export declare enum YMT_ICON_BUTTON_SIZE {
2
- extraSmall = "extra-small",
3
- small = "small",
4
- medium = "medium"
5
- }
@@ -1,2 +0,0 @@
1
- export * from './icon-button';
2
- export * from './button';
@@ -1 +0,0 @@
1
- export * from './material.providers';
@@ -1,4 +0,0 @@
1
- import { EnvironmentProviders } from '@angular/core';
2
- export declare const provideYmtMaterial: (customTheme?: any[], options?: {
3
- supportsSmallScreens: boolean;
4
- }) => EnvironmentProviders;
@@ -1,15 +0,0 @@
1
- export declare enum DeviceScreenOrientation {
2
- PORTRAIT = "portrait",
3
- LANDSCAPE = "landscape"
4
- }
5
- export interface DeviceScreen {
6
- size: ScreenSize;
7
- orientation: DeviceScreenOrientation;
8
- width: number;
9
- height: number;
10
- }
11
- export interface DeviceScreenBounds {
12
- width: number;
13
- height: number;
14
- }
15
- export type ScreenSize = 's' | 'm' | 'l' | 'xl';
@@ -1,147 +0,0 @@
1
- import { DeviceInfo } from 'ngx-device-detector';
2
- import { Observable } from 'rxjs';
3
- import { DeviceScreen } from './device.interface';
4
- import * as i0 from "@angular/core";
5
- /**
6
- * Service that adapts the application layout and behavior to different devices,
7
- * screen sizes, orientations, and browser zoom levels.
8
- *
9
- * This service operates globally as a singleton, listening to window resize events
10
- * and maintaining reactive state about the current screen and zoom conditions.
11
- * It also writes attributes to the `<body>` element so that CSS rules can respond
12
- * to screen state without requiring Angular bindings.
13
- *
14
- * **Key Features:**
15
- * - Screen size classification (s / m / l / xl) based on viewport dimensions
16
- * - Orientation detection (portrait / landscape), with native API fallback on mobile
17
- * - Small-screen layout signal for toggling compact UI modes
18
- * - Browser zoom level tracking via `pageZoomPercentage$`
19
- * - Automatic `<body>` attribute management for CSS-driven responsive styles
20
- *
21
- * **Usage:**
22
- * 1. `DeviceService` is initialized automatically by `provideYmtMaterial()` in `app.config.ts`
23
- * 2. Pass `{ supportsSmallScreens: true }` to `provideYmtMaterial()` if the app has a dedicated compact layout
24
- * 3. Inject `DeviceService` wherever needed — it is already initialized
25
- * 4. Subscribe to `screenChange$` or `pageZoomPercentage$` to react to changes
26
- *
27
- * **Body attributes written by this service:**
28
- * - `data-screen-size` — current size bucket: `s` | `m` | `l` | `xl`
29
- * - `data-screen-orientation` — `portrait` | `landscape`
30
- * - `data-touch-enabled` — present only when the device supports touch input
31
- *
32
- * ```html
33
- * <body data-screen-size="l" data-screen-orientation="landscape">
34
- * ...
35
- * </body>
36
- * ```
37
- *
38
- * **Screen size boundaries:**
39
- *
40
- * | Size | Range | Device |
41
- * |------|----------------------------|-----------------------------------|
42
- * | `s` | < 600px | mobile phone |
43
- * | `m` | 600px – 900/1200px | tablet (upper bound by orientation) |
44
- * | `l` | 900/1200px – 1800px | desktop |
45
- * | `xl` | ≥ 1800px | wide / large desktop |
46
- *
47
- * @see {@link DeviceScreen} for the screen state shape emitted by `screenChange$`
48
- */
49
- export declare class DeviceService {
50
- #private;
51
- /**
52
- * Emits the current {@link DeviceScreen} state whenever the window is resized.
53
- *
54
- * The emitted value includes the size bucket (`s` | `m` | `l` | `xl`), orientation,
55
- * and the raw viewport dimensions in pixels. Use this stream to reactively adapt
56
- * layout or behavior whenever the screen state changes.
57
- *
58
- * Replay buffer of 1 — late subscribers always receive the most recent value
59
- * without waiting for the next resize event.
60
- *
61
- * @example
62
- * ```ts
63
- * deviceService.screenChange$.subscribe(screen => {
64
- * console.log(screen.size); // 'l'
65
- * console.log(screen.orientation); // 'landscape'
66
- * console.log(screen.width); // 1440
67
- * });
68
- * ```
69
- */
70
- screenChange$: Observable<DeviceScreen>;
71
- /**
72
- * Signal that indicates whether the app should render in a compact small-screen layout.
73
- *
74
- * This is `true` only when all three conditions are met:
75
- * 1. `supportsSmallScreens` was passed as `true` to {@link init}
76
- * 2. The current screen size bucket is `s` (< 600px viewport width)
77
- * 3. The current orientation is `portrait`
78
- *
79
- * Components that have a dedicated compact mode should read this signal
80
- * and switch their layout accordingly.
81
- *
82
- * @default false
83
- */
84
- smallScreenLayout: import("@angular/core").WritableSignal<boolean>;
85
- /**
86
- * `true` if the current device is a mobile phone (Android, iPhone, Windows Phone, etc.).
87
- * Populated once at service creation from `ngx-device-detector`.
88
- */
89
- isMobile: boolean;
90
- /**
91
- * `true` if the current device is a tablet (e.g. iPad).
92
- * Populated once at service creation from `ngx-device-detector`.
93
- */
94
- isTablet: boolean;
95
- /**
96
- * `true` if the app is running in a desktop browser.
97
- * Populated once at service creation from `ngx-device-detector`.
98
- */
99
- isDesktop: boolean;
100
- /**
101
- * Detailed device and browser information provided by `ngx-device-detector`.
102
- * Includes OS, browser name and version, device type, and user agent.
103
- */
104
- info?: DeviceInfo;
105
- /**
106
- * `true` if the device supports touch input.
107
- * Detected via `ontouchstart` presence or `navigator.maxTouchPoints > 0`.
108
- */
109
- isTouchEnabled: boolean;
110
- /**
111
- * Emits the current browser zoom level as a percentage whenever it changes.
112
- *
113
- * The value is derived from `window.outerWidth / window.innerWidth * 100`.
114
- * At 100% zoom the value is `100`, at 150% it is `150`, and so on.
115
- *
116
- * Emits only when the value actually changes (no duplicate emissions).
117
- * Updates are driven by the window `resize` event, which all major browsers
118
- * fire when the user changes the zoom level via Ctrl+/- or Ctrl+scroll.
119
- * On desktop there is a 500ms debounce; on mobile, no debounce is applied.
120
- *
121
- * @example
122
- * ```ts
123
- * deviceService.pageZoomPercentage$.subscribe(zoom => {
124
- * console.log(`Current zoom: ${zoom}%`); // e.g. "Current zoom: 150%"
125
- * });
126
- * ```
127
- */
128
- pageZoomPercentage$: Observable<number>;
129
- /**
130
- * Initializes the service and performs the first screen state evaluation.
131
- *
132
- * Called automatically by `provideYmtMaterial()` during application startup.
133
- *
134
- * Immediately evaluates the current viewport dimensions, classifies the screen size
135
- * and orientation, writes the result to the `<body>` attributes, and emits the initial
136
- * value on `screenChange$`. Subsequent updates are handled automatically via the
137
- * internal resize listener.
138
- *
139
- * @param supportsSmallScreens - Set to `true` if the application has a dedicated compact
140
- * layout for small portrait screens. When `true`, the {@link smallScreenLayout} signal
141
- * will be set to `true` whenever the screen bucket is `s` and orientation is `portrait`.
142
- * Defaults to `false`.
143
- */
144
- init(supportsSmallScreens?: boolean): void;
145
- static ɵfac: i0.ɵɵFactoryDeclaration<DeviceService, never>;
146
- static ɵprov: i0.ɵɵInjectableDeclaration<DeviceService>;
147
- }
@@ -1,5 +0,0 @@
1
- export * from './ymt-mat-icon-registry.service';
2
- export * from './ymt-datepicker-intl.service';
3
- export * from './ymt-date-adapter.service';
4
- export * from './device.service';
5
- export * from './device.interface';
@@ -1,25 +0,0 @@
1
- import { Provider } from '@angular/core';
2
- import { MatDateFormats, NativeDateAdapter } from '@angular/material/core';
3
- import * as i0 from "@angular/core";
4
- /**
5
- * @deprecated Use `YMT_DATE_FORMATS` instead.
6
- * @see YMT_DATE_FORMATS
7
- * fixes typo in the name
8
- */
9
- export declare const YMT_DATE_FROMATS: MatDateFormats;
10
- export declare const YMT_DATE_FORMATS: MatDateFormats;
11
- export declare function provideYmtDateAdapter(formats?: MatDateFormats): Provider[];
12
- interface IParseFormats {
13
- separator: '.' | '/' | '-' | string;
14
- order: 'mdy' | 'dmy' | 'ymd';
15
- }
16
- export declare class YmtDateAdapterService extends NativeDateAdapter {
17
- #private;
18
- locale: string;
19
- constructor();
20
- parse(value: any, parseFormat?: any): Date | null;
21
- parseDateString(value: string, config: IParseFormats): Date;
22
- static ɵfac: i0.ɵɵFactoryDeclaration<YmtDateAdapterService, never>;
23
- static ɵprov: i0.ɵɵInjectableDeclaration<YmtDateAdapterService>;
24
- }
25
- export {};
@@ -1,11 +0,0 @@
1
- import { MatDatepickerIntl } from '@angular/material/datepicker';
2
- import * as i0 from "@angular/core";
3
- export declare class YmtDatepickerIntlService extends MatDatepickerIntl {
4
- #private;
5
- constructor();
6
- translateLabels(): void;
7
- formatYearRange(start: string, end: string): string;
8
- formatYearRangeLabel(start: string, end: string): string;
9
- static ɵfac: i0.ɵɵFactoryDeclaration<YmtDatepickerIntlService, never>;
10
- static ɵprov: i0.ɵɵInjectableDeclaration<YmtDatepickerIntlService>;
11
- }
@@ -1,13 +0,0 @@
1
- import { ErrorHandler } from '@angular/core';
2
- import { MatIconRegistry } from '@angular/material/icon';
3
- import { HttpClient } from '@angular/common/http';
4
- import { DomSanitizer } from '@angular/platform-browser';
5
- import * as i0 from "@angular/core";
6
- export declare class YmtMatIconRegistryService extends MatIconRegistry {
7
- #private;
8
- constructor(_httpClient: HttpClient, _sanitizer: DomSanitizer, document: any, _errorHandler: ErrorHandler);
9
- setDefaultFontSetClass(...classnames: string[]): this;
10
- static isFontIcon(input: string | null): boolean;
11
- static ɵfac: i0.ɵɵFactoryDeclaration<YmtMatIconRegistryService, never>;
12
- static ɵprov: i0.ɵɵInjectableDeclaration<YmtMatIconRegistryService>;
13
- }
@@ -1,12 +0,0 @@
1
- import { MatPaginatorIntl } from '@angular/material/paginator';
2
- import { TranslateService } from '@ngx-translate/core';
3
- import * as i0 from "@angular/core";
4
- export declare class YmtMatPaginatorIntlService extends MatPaginatorIntl {
5
- #private;
6
- rangeLabelSeparator: string;
7
- getRangeLabel: (page: number, pageSize: number, length: number) => string;
8
- injectTranslateService(translate: TranslateService): void;
9
- translateLabels(): void;
10
- static ɵfac: i0.ɵɵFactoryDeclaration<YmtMatPaginatorIntlService, never>;
11
- static ɵprov: i0.ɵɵInjectableDeclaration<YmtMatPaginatorIntlService>;
12
- }
@@ -1,37 +0,0 @@
1
- import { OnDestroy } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Directive that enables any host element to toggle into a fullscreen overlay
5
- * covering the entire viewport. Background content is made inert and body scroll
6
- * is locked while fullscreen is active.
7
- *
8
- * @example
9
- * ```html
10
- * <div yuvFullscreen #fs="yuvFullscreen">
11
- * <button (click)="fs.toggle()">Toggle</button>
12
- * <p>Content</p>
13
- * </div>
14
- * ```
15
- */
16
- export declare class FullscreenDirective implements OnDestroy {
17
- #private;
18
- /** Whether the fullscreen toggle is disabled. */
19
- disabled: import("@angular/core").InputSignal<boolean>;
20
- /** Emitted when fullscreen mode is entered. */
21
- fullscreenEnter: import("@angular/core").OutputEmitterRef<void>;
22
- /** Emitted when fullscreen mode is exited. */
23
- fullscreenExit: import("@angular/core").OutputEmitterRef<void>;
24
- /** Read-only signal indicating whether fullscreen is currently active. */
25
- active: import("@angular/core").Signal<boolean>;
26
- /** Toggle fullscreen on/off. */
27
- toggle(): void;
28
- /** Enter fullscreen mode. No-op if already active or disabled. */
29
- enter(): void;
30
- /** Exit fullscreen mode. No-op if not active. */
31
- exit(): void;
32
- /** @internal */
33
- onEscape(): void;
34
- ngOnDestroy(): void;
35
- static ɵfac: i0.ɵɵFactoryDeclaration<FullscreenDirective, never>;
36
- static ɵdir: i0.ɵɵDirectiveDeclaration<FullscreenDirective, "[yuvFullscreen]", ["yuvFullscreen"], { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "fullscreenEnter": "fullscreenEnter"; "fullscreenExit": "fullscreenExit"; }, never, never, true, never>;
37
- }
@@ -1,5 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class YmtPaneAsideComponent {
3
- static ɵfac: i0.ɵɵFactoryDeclaration<YmtPaneAsideComponent, never>;
4
- static ɵcmp: i0.ɵɵComponentDeclaration<YmtPaneAsideComponent, "ymt-pane-aside", never, {}, {}, never, never, true, never>;
5
- }
@@ -1,5 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class YmtPaneBodyComponent {
3
- static ɵfac: i0.ɵɵFactoryDeclaration<YmtPaneBodyComponent, never>;
4
- static ɵcmp: i0.ɵɵComponentDeclaration<YmtPaneBodyComponent, "ymt-pane-body", never, {}, {}, never, ["*"], true, never>;
5
- }
@@ -1,5 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class YmtPaneFooterComponent {
3
- static ɵfac: i0.ɵɵFactoryDeclaration<YmtPaneFooterComponent, never>;
4
- static ɵcmp: i0.ɵɵComponentDeclaration<YmtPaneFooterComponent, "ymt-pane-footer", never, {}, {}, never, ["*"], true, never>;
5
- }
@@ -1,74 +0,0 @@
1
- import { TemplateRef } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * Header component for `ymt-pane`. Renders a two-row layout:
5
- *
6
- * - **Top row:** icon (optional), title, and actions area
7
- * - **Bottom row:** subtitle and badges area
8
- *
9
- * ## Title & Subtitle
10
- *
11
- * Can be set as plain strings via the `title` and `subtitle` inputs,
12
- * or as rich content via the `#yuvPaneHeaderTitle` and `#yuvPaneHeaderSubtitle`
13
- * content child templates. When a template is provided it takes precedence
14
- * over the corresponding string input.
15
- *
16
- * ## Icon
17
- *
18
- * Set the `icon` input to a Material Icon ligature to display an icon
19
- * to the left of the title row.
20
- *
21
- * ## Actions & Badges
22
- *
23
- * Pass a `TemplateRef` to the `actions` input to render action buttons
24
- * aligned to the right of the title row. Similarly, pass a `TemplateRef`
25
- * to the `badges` input to render badges aligned to the right of the
26
- * subtitle row.
27
- *
28
- * @example
29
- * ```html
30
- * <!-- Simple usage with string inputs -->
31
- * <ymt-pane-header
32
- * [title]="'Documents'"
33
- * [subtitle]="'12 items'"
34
- * [icon]="'folder'"
35
- * [actions]="headerActions"
36
- * [badges]="headerBadges">
37
- * </ymt-pane-header>
38
- *
39
- * <ng-template #headerActions>
40
- * <button ymt-icon-button icon="add"></button>
41
- * </ng-template>
42
- *
43
- * <ng-template #headerBadges>
44
- * <ymt-badge severity="info">active</ymt-badge>
45
- * </ng-template>
46
- * ```
47
- *
48
- * @example
49
- * ```html
50
- * <!-- Rich content via template projection -->
51
- * <ymt-pane-header [icon]="'lock'">
52
- * <ng-template #yuvPaneHeaderTitle>Custom <strong>title</strong></ng-template>
53
- * <ng-template #yuvPaneHeaderSubtitle><ymt-badge severity="warning">locked</ymt-badge></ng-template>
54
- * </ymt-pane-header>
55
- * ```
56
- */
57
- export declare class YmtPaneHeaderComponent {
58
- /** Plain-text title displayed in the top row. Ignored when a `#yuvPaneHeaderTitle` template is projected. */
59
- title: import("@angular/core").InputSignal<string | undefined>;
60
- /** Material Icon ligature rendered to the left of the title row (e.g. `'folder'`, `'lock'`). */
61
- icon: import("@angular/core").InputSignal<string | undefined>;
62
- /** Plain-text subtitle displayed in the bottom row. Ignored when a `#yuvPaneHeaderSubtitle` template is projected. */
63
- subtitle: import("@angular/core").InputSignal<string | undefined>;
64
- /** Template rendered in the actions area, aligned to the right of the title row. */
65
- actions: import("@angular/core").InputSignal<TemplateRef<unknown> | undefined>;
66
- /** Template rendered in the badges area, aligned to the right of the subtitle row. */
67
- badges: import("@angular/core").InputSignal<TemplateRef<unknown> | undefined>;
68
- /** Content child template for rich title content. Takes precedence over the `title` input. */
69
- titleSlot: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
70
- /** Content child template for rich subtitle content. Takes precedence over the `subtitle` input. */
71
- subtitleSlot: import("@angular/core").Signal<TemplateRef<unknown> | undefined>;
72
- static ɵfac: i0.ɵɵFactoryDeclaration<YmtPaneHeaderComponent, never>;
73
- static ɵcmp: i0.ɵɵComponentDeclaration<YmtPaneHeaderComponent, "ymt-pane-header", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "badges": { "alias": "badges"; "required": false; "isSignal": true; }; }, {}, ["titleSlot", "subtitleSlot"], never, true, never>;
74
- }
@@ -1,10 +0,0 @@
1
- import { TemplateRef } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export declare class YmtPaneTopBarComponent {
4
- /**
5
- * TemplateRef for actions area in the top bar.
6
- */
7
- actions: import("@angular/core").InputSignal<TemplateRef<any> | undefined>;
8
- static ɵfac: i0.ɵɵFactoryDeclaration<YmtPaneTopBarComponent, never>;
9
- static ɵcmp: i0.ɵɵComponentDeclaration<YmtPaneTopBarComponent, "ymt-pane-top-bar", never, { "actions": { "alias": "actions"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
10
- }
@@ -1,168 +0,0 @@
1
- import { TemplateRef } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "./fullscreen.directive";
4
- /**
5
- * A pane is a container component that unifies the appearance and behavior of
6
- * content areas in an app. It renders as a bordered, rounded card with a grid
7
- * layout for its sub-components.
8
- *
9
- * ## Structure
10
- *
11
- * A pane uses a vertical grid layout with four areas. All sub-components are optional:
12
- *
13
- * | Area | Component | Description |
14
- * |----------|--------------------|----------------------------------------------------|
15
- * | top-bar | *(internal)* | Rendered automatically when `topBarActions` is set. |
16
- * | header | `ymt-pane-header` | Title, subtitle, icon, and custom header actions. |
17
- * | main | `ymt-pane-body` | Scrollable main content area. |
18
- * | footer | `ymt-pane-footer` | Right-aligned action bar with a top border. |
19
- *
20
- * ```html
21
- * <ymt-pane>
22
- * <ymt-pane-header title="Users" subtitle="3 selected" [actions]="headerActions" />
23
- * <ymt-pane-body>Main content</ymt-pane-body>
24
- * <ymt-pane-footer>
25
- * <button ymt-button>Save</button>
26
- * </ymt-pane-footer>
27
- * </ymt-pane>
28
- * ```
29
- *
30
- * ### `ymt-pane-header`
31
- *
32
- * Accepts `title`, `subtitle`, and `icon` as string inputs. For richer content,
33
- * use the `#yuvPaneHeaderTitle` and `#yuvPaneHeaderSubtitle` template refs:
34
- *
35
- * ```html
36
- * <ymt-pane-header>
37
- * <ng-template #yuvPaneHeaderTitle><h2>Custom title</h2></ng-template>
38
- * <ng-template #yuvPaneHeaderSubtitle><ymt-badge severity="warning">locked</ymt-badge></ng-template>
39
- * </ymt-pane-header>
40
- * ```
41
- *
42
- * Header actions can be projected via the `[actions]` input (TemplateRef).
43
- *
44
- * ### Top bar actions
45
- *
46
- * Pass a `TemplateRef` to the `[topBarActions]` input to render icon buttons
47
- * in a slim top bar above the header:
48
- *
49
- * ```html
50
- * <ymt-pane [topBarActions]="actions">
51
- * <ymt-pane-body>Content</ymt-pane-body>
52
- * </ymt-pane>
53
- *
54
- * <ng-template #actions>
55
- * <button ymt-icon-button icon-button-size="small"><mat-icon>settings</mat-icon></button>
56
- * </ng-template>
57
- * ```
58
- *
59
- * ## Fullscreen
60
- *
61
- * Every pane supports fullscreen mode. The pane expands to fill the viewport,
62
- * background content becomes inert, and pressing <kbd>Escape</kbd> exits.
63
- *
64
- * ```html
65
- * <ymt-pane #pane>
66
- * <ymt-pane-body>
67
- * <button (click)="pane.toggleFullscreen()">Toggle fullscreen</button>
68
- * </ymt-pane-body>
69
- * </ymt-pane>
70
- * ```
71
- *
72
- * Programmatic API: `enterFullscreen()`, `exitFullscreen()`, `toggleFullscreen()`.
73
- * Read the current state via the `fullscreenActive` signal.
74
- * Listen to transitions via the `(fullscreenEnter)` and `(fullscreenExit)` outputs.
75
- *
76
- * ## Busy state
77
- *
78
- * Set `[busy]="true"` to replace the static border with a rotating
79
- * conic-gradient border that signals a loading state:
80
- *
81
- * ```html
82
- * <ymt-pane [busy]="isLoading()">
83
- * <ymt-pane-body>Content</ymt-pane-body>
84
- * </ymt-pane>
85
- * ```
86
- *
87
- * ## Enter animation
88
- *
89
- * Panes fade in on creation (0.15 s ease-out by default). Customize or delay
90
- * the animation via CSS variables, or disable it entirely with the
91
- * `[noAnimation]` input:
92
- *
93
- * ```css
94
- * ymt-pane {
95
- * --enter-animation-duration: 0.3s;
96
- * --enter-animation-delay: 0.1s;
97
- * }
98
- * ```
99
- *
100
- * ```html
101
- * <ymt-pane [noAnimation]="true"> ... </ymt-pane>
102
- * ```
103
- *
104
- * ## Plain mode
105
- *
106
- * Set `[plain]="true"` to strip the border, border-radius, and background
107
- * while keeping the inner grid structure. Useful when embedding a pane inside
108
- * another styled container.
109
- *
110
- * ## CSS custom properties
111
- *
112
- * | Property | Default | Description |
113
- * |-------------------------------|-------------------------------|--------------------------------------|
114
- * | `--header-area-padding` | `var(--ymt-spacing-xl)` | Padding of the header area. |
115
- * | `--header-area-background` | `transparent` | Background of the header area. |
116
- * | `--header-area-border-color` | `transparent` | Bottom border of the header area. |
117
- * | `--main-area-padding` | `0` | Padding of the body area. |
118
- * | `--pane-background-color` | `var(--ymt-surface)` | Background of the pane. |
119
- * | `--busy-border-width` | `2px` | Width of the busy indicator border. |
120
- * | `--busy-border-color` | `var(--ymt-primary)` | Color of the busy indicator border. |
121
- * | `--enter-animation-duration` | `0.15s` | Duration of the fade-in animation. |
122
- * | `--enter-animation-delay` | `0s` | Delay before the fade-in starts. |
123
- */
124
- export declare class YmtPaneComponent {
125
- #private;
126
- /**
127
- * Template for action buttons rendered in the top bar area of the pane.
128
- * Use `icon-button-size="small"` or `icon-button-size="extra-small"` on icon
129
- * buttons for proper alignment.
130
- *
131
- * ```html
132
- * <ymt-pane [topBarActions]="actions">
133
- * <ymt-pane-body>Content</ymt-pane-body>
134
- * </ymt-pane>
135
- *
136
- * <ng-template #actions>
137
- * <button ymt-icon-button icon-button-size="small"><mat-icon>settings</mat-icon></button>
138
- * </ng-template>
139
- * ```
140
- */
141
- topBarActions: import("@angular/core").InputSignal<TemplateRef<unknown> | undefined>;
142
- /**
143
- * When set to true, the pane border will be replaced with an animated
144
- * conic-gradient border to indicate a busy/loading state.
145
- */
146
- busy: import("@angular/core").InputSignal<boolean>;
147
- /**
148
- * Disable the default fade-in enter animation.
149
- */
150
- noAnimation: import("@angular/core").InputSignal<boolean>;
151
- /**
152
- * Setting this to true will remove the default styles for the pane. So it will
153
- * render without border-radius, border and background color, but keep the inner
154
- * structure. This is useful when you want to use the pane inside another container
155
- * and want to apply custom styles to the pane.
156
- */
157
- plain: import("@angular/core").InputSignal<boolean>;
158
- /** Read-only signal indicating whether fullscreen is currently active. */
159
- fullscreenActive: import("@angular/core").Signal<boolean>;
160
- /** Toggle fullscreen mode on/off. */
161
- toggleFullscreen(): void;
162
- /** Enter fullscreen mode. */
163
- enterFullscreen(): void;
164
- /** Exit fullscreen mode. */
165
- exitFullscreen(): void;
166
- static ɵfac: i0.ɵɵFactoryDeclaration<YmtPaneComponent, never>;
167
- static ɵcmp: i0.ɵɵComponentDeclaration<YmtPaneComponent, "ymt-pane", never, { "topBarActions": { "alias": "topBarActions"; "required": false; "isSignal": true; }; "busy": { "alias": "busy"; "required": false; "isSignal": true; }; "noAnimation": { "alias": "noAnimation"; "required": false; "isSignal": true; }; "plain": { "alias": "plain"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1.FullscreenDirective; inputs: {}; outputs: { "fullscreenEnter": "fullscreenEnter"; "fullscreenExit": "fullscreenExit"; }; }]>;
168
- }
@@ -1,11 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- import * as i1 from "./pane/pane.component";
3
- import * as i2 from "./pane/pane-header/pane-header.component";
4
- import * as i3 from "./pane/pane-body/pane-body.component";
5
- import * as i4 from "./pane/pane-footer/pane-footer.component";
6
- import * as i5 from "./pane/pane-aside/pane-aside.component";
7
- export declare class YmtPanesModule {
8
- static ɵfac: i0.ɵɵFactoryDeclaration<YmtPanesModule, never>;
9
- static ɵmod: i0.ɵɵNgModuleDeclaration<YmtPanesModule, never, [typeof i1.YmtPaneComponent, typeof i2.YmtPaneHeaderComponent, typeof i3.YmtPaneBodyComponent, typeof i4.YmtPaneFooterComponent, typeof i5.YmtPaneAsideComponent], [typeof i1.YmtPaneComponent, typeof i2.YmtPaneHeaderComponent, typeof i3.YmtPaneBodyComponent, typeof i4.YmtPaneFooterComponent, typeof i5.YmtPaneAsideComponent]>;
10
- static ɵinj: i0.ɵɵInjectorDeclaration<YmtPanesModule>;
11
- }