@ojiepermana/angular-theme 22.0.43 → 22.0.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/ojiepermana-angular-theme-layout-services.mjs +6 -6
- package/fesm2022/ojiepermana-angular-theme-layout-wrapper.mjs +27 -27
- package/fesm2022/ojiepermana-angular-theme-layout.mjs +24 -24
- package/fesm2022/ojiepermana-angular-theme-page.mjs +507 -39
- package/fesm2022/ojiepermana-angular-theme-styles.mjs +15 -15
- package/package.json +3 -3
- package/page/README.md +157 -11
- package/types/ojiepermana-angular-theme-page.d.ts +188 -43
|
@@ -2,45 +2,6 @@ import * as _ojiepermana_angular_theme_layout_wrapper from '@ojiepermana/angular
|
|
|
2
2
|
import * as _ojiepermana_angular_navigation_service from '@ojiepermana/angular-navigation/service';
|
|
3
3
|
import * as _angular_core from '@angular/core';
|
|
4
4
|
|
|
5
|
-
declare class PageHeaderComponent {
|
|
6
|
-
private readonly page;
|
|
7
|
-
readonly class: _angular_core.InputSignal<string>;
|
|
8
|
-
protected readonly resolvedHeight: _angular_core.Signal<"auto" | "fix">;
|
|
9
|
-
protected readonly isBorderRail: _angular_core.Signal<boolean>;
|
|
10
|
-
/** Saat tombol apps mengambang di atas header, sisakan ruang kanan agar isi header tidak tertimpa. */
|
|
11
|
-
protected readonly reservesAppsLauncher: _angular_core.Signal<boolean>;
|
|
12
|
-
/** Lebar tombol apps (h-9 w-9 = 36px) + offset kanan (right-2 = 8px) + jarak aman; `null` = tak memesan. */
|
|
13
|
-
protected readonly appsLauncherReservePadding: _angular_core.Signal<"3.5rem" | null>;
|
|
14
|
-
protected readonly classes: _angular_core.Signal<string>;
|
|
15
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageHeaderComponent, never>;
|
|
16
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageHeaderComponent, "PageHeader", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
17
|
-
}
|
|
18
|
-
declare class PageContentComponent {
|
|
19
|
-
private readonly page;
|
|
20
|
-
readonly class: _angular_core.InputSignal<string>;
|
|
21
|
-
protected readonly resolvedScroll: _angular_core.Signal<"content" | "page">;
|
|
22
|
-
protected readonly classes: _angular_core.Signal<string>;
|
|
23
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageContentComponent, never>;
|
|
24
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageContentComponent, "PageContent", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
25
|
-
}
|
|
26
|
-
declare class PageDashboardComponent {
|
|
27
|
-
private readonly page;
|
|
28
|
-
readonly class: _angular_core.InputSignal<string>;
|
|
29
|
-
protected readonly resolvedScroll: _angular_core.Signal<"content" | "page">;
|
|
30
|
-
protected readonly classes: _angular_core.Signal<string>;
|
|
31
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageDashboardComponent, never>;
|
|
32
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageDashboardComponent, "PageDashboard", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
33
|
-
}
|
|
34
|
-
declare class PageFooterComponent {
|
|
35
|
-
private readonly page;
|
|
36
|
-
readonly class: _angular_core.InputSignal<string>;
|
|
37
|
-
protected readonly resolvedHeight: _angular_core.Signal<"auto" | "fix">;
|
|
38
|
-
protected readonly isBorderRail: _angular_core.Signal<boolean>;
|
|
39
|
-
protected readonly classes: _angular_core.Signal<string>;
|
|
40
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageFooterComponent, never>;
|
|
41
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageFooterComponent, "PageFooter", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
5
|
declare const PAGE_VARIANTS: readonly ["stacked", "side"];
|
|
45
6
|
declare const PAGE_SIDE_POSITIONS: readonly ["left", "right"];
|
|
46
7
|
declare const PAGE_SIDE_MODES: readonly ["sticky", "drawer", "overlay"];
|
|
@@ -48,12 +9,15 @@ declare const PAGE_SCROLL_VALUES: readonly ["content", "page"];
|
|
|
48
9
|
declare const PAGE_HEIGHT_VALUES: readonly ["auto", "fix"];
|
|
49
10
|
/** Visual appearance shared with the layout/navigation axes — unifies borders. */
|
|
50
11
|
declare const PAGE_APPEARANCES: readonly ["flat", "border-rail"];
|
|
12
|
+
/** Penempatan `PageFilter`: `stacked` = bar antara header & content; `side` = kolom di samping content. */
|
|
13
|
+
declare const PAGE_FILTER_PLACEMENTS: readonly ["stacked", "side"];
|
|
51
14
|
type PageVariant = (typeof PAGE_VARIANTS)[number];
|
|
52
15
|
type PageSidePosition = (typeof PAGE_SIDE_POSITIONS)[number];
|
|
53
16
|
type PageSideMode = (typeof PAGE_SIDE_MODES)[number];
|
|
54
17
|
type PageScroll = (typeof PAGE_SCROLL_VALUES)[number];
|
|
55
18
|
type PageHeight = (typeof PAGE_HEIGHT_VALUES)[number];
|
|
56
19
|
type PageAppearance = (typeof PAGE_APPEARANCES)[number];
|
|
20
|
+
type PageFilterPlacement = (typeof PAGE_FILTER_PLACEMENTS)[number];
|
|
57
21
|
declare const PAGE_DEFAULT_VARIANT: PageVariant;
|
|
58
22
|
declare const PAGE_DEFAULT_SIDE_POSITION: PageSidePosition;
|
|
59
23
|
declare const PAGE_DEFAULT_SIDE_MODE: PageSideMode;
|
|
@@ -61,12 +25,21 @@ declare const PAGE_DEFAULT_SCROLL: PageScroll;
|
|
|
61
25
|
declare const PAGE_DEFAULT_HEIGHT: PageHeight;
|
|
62
26
|
declare const PAGE_DEFAULT_APPEARANCE: PageAppearance;
|
|
63
27
|
declare const PAGE_DEFAULT_SIDE_WIDTH = "16rem";
|
|
28
|
+
/** Placement default `PageFilter`. */
|
|
29
|
+
declare const PAGE_DEFAULT_FILTER_PLACEMENT: PageFilterPlacement;
|
|
30
|
+
/** Mode default `PageFilter` saat `placement="side"`; `stacked` selalu berperilaku `sticky`. */
|
|
31
|
+
declare const PAGE_DEFAULT_FILTER_MODE: PageSideMode;
|
|
32
|
+
/** Posisi default kolom `PageFilter` saat `placement="side"`. */
|
|
33
|
+
declare const PAGE_DEFAULT_FILTER_POSITION: PageSidePosition;
|
|
34
|
+
/** Lebar default kolom `PageFilter` saat `placement="side"` (sticky/drawer/overlay). */
|
|
35
|
+
declare const PAGE_DEFAULT_FILTER_WIDTH = "18rem";
|
|
64
36
|
declare function isUiPageVariant(value: string | null): value is PageVariant;
|
|
65
37
|
declare function isUiPageSidePosition(value: string | null): value is PageSidePosition;
|
|
66
38
|
declare function isUiPageSideMode(value: string | null): value is PageSideMode;
|
|
67
39
|
declare function isUiPageScroll(value: string | null): value is PageScroll;
|
|
68
40
|
declare function isUiPageHeight(value: string | null): value is PageHeight;
|
|
69
41
|
declare function isUiPageAppearance(value: string | null): value is PageAppearance;
|
|
42
|
+
declare function isUiPageFilterPlacement(value: string | null): value is PageFilterPlacement;
|
|
70
43
|
|
|
71
44
|
declare class PageStateService {
|
|
72
45
|
private readonly variantState;
|
|
@@ -83,6 +56,15 @@ declare class PageStateService {
|
|
|
83
56
|
private readonly sideOpenRequestVersionState;
|
|
84
57
|
/** Aktif saat apps-launcher mengambang di atas `PageHeader`; header memesan ruang kanan agar isinya tidak tertimpa. */
|
|
85
58
|
private readonly appsLauncherReserveState;
|
|
59
|
+
private readonly filterPlacementState;
|
|
60
|
+
private readonly filterModeState;
|
|
61
|
+
private readonly filterPositionState;
|
|
62
|
+
private readonly filterWidthState;
|
|
63
|
+
private readonly filterIdState;
|
|
64
|
+
private readonly internalFilterOpenState;
|
|
65
|
+
private readonly controlledFilterOpenState;
|
|
66
|
+
private readonly filterOpenRequestState;
|
|
67
|
+
private readonly filterOpenRequestVersionState;
|
|
86
68
|
readonly variant: _angular_core.Signal<"stacked" | "side">;
|
|
87
69
|
readonly height: _angular_core.Signal<"auto" | "fix">;
|
|
88
70
|
readonly scroll: _angular_core.Signal<"content" | "page">;
|
|
@@ -97,6 +79,16 @@ declare class PageStateService {
|
|
|
97
79
|
readonly sideOpen: _angular_core.Signal<boolean>;
|
|
98
80
|
readonly isSideInteractive: _angular_core.Signal<boolean>;
|
|
99
81
|
readonly isSideVisible: _angular_core.Signal<boolean>;
|
|
82
|
+
readonly filterPlacement: _angular_core.Signal<"stacked" | "side">;
|
|
83
|
+
readonly filterMode: _angular_core.Signal<"sticky" | "drawer" | "overlay">;
|
|
84
|
+
readonly filterPosition: _angular_core.Signal<"left" | "right">;
|
|
85
|
+
readonly filterWidth: _angular_core.Signal<string>;
|
|
86
|
+
readonly filterId: _angular_core.Signal<string | null>;
|
|
87
|
+
readonly filterOpenRequest: _angular_core.Signal<boolean | null>;
|
|
88
|
+
readonly filterOpenRequestVersion: _angular_core.Signal<number>;
|
|
89
|
+
readonly filterOpen: _angular_core.Signal<boolean>;
|
|
90
|
+
readonly isFilterInteractive: _angular_core.Signal<boolean>;
|
|
91
|
+
readonly isFilterVisible: _angular_core.Signal<boolean>;
|
|
100
92
|
registerRoot(config: {
|
|
101
93
|
variant: PageVariant;
|
|
102
94
|
height: PageHeight;
|
|
@@ -119,18 +111,128 @@ declare class PageStateService {
|
|
|
119
111
|
closeSide(): boolean;
|
|
120
112
|
toggleSide(): boolean;
|
|
121
113
|
private requestSideOpenChange;
|
|
114
|
+
registerFilter(config: {
|
|
115
|
+
placement: PageFilterPlacement;
|
|
116
|
+
mode: PageSideMode;
|
|
117
|
+
position: PageSidePosition;
|
|
118
|
+
width: string;
|
|
119
|
+
id: string;
|
|
120
|
+
}): void;
|
|
121
|
+
setControlledFilterOpen(open: boolean | null): void;
|
|
122
|
+
setFilterOpen(open: boolean): void;
|
|
123
|
+
openFilter(): boolean;
|
|
124
|
+
closeFilter(): boolean;
|
|
125
|
+
toggleFilter(): boolean;
|
|
126
|
+
private requestFilterOpenChange;
|
|
122
127
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageStateService, never>;
|
|
123
128
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<PageStateService>;
|
|
124
129
|
}
|
|
125
130
|
|
|
131
|
+
/**
|
|
132
|
+
* `PageFilter` — slot filter di antara `PageHeader` dan `PageContent` (`placement="stacked"`)
|
|
133
|
+
* atau di samping `PageContent` (`placement="side"`). Pada `stacked`, filter mendorong content
|
|
134
|
+
* ke bawah dan content menyesuaikan tinggi sisa. Pada `side`, filter mendorong content ke samping
|
|
135
|
+
* dengan mode `sticky | drawer | overlay` (mengikuti pola `PageSide`).
|
|
136
|
+
*
|
|
137
|
+
* `placement="stacked"` selalu berperilaku `sticky` — `drawer`/`overlay` hanya berlaku untuk `side`.
|
|
138
|
+
*/
|
|
139
|
+
declare class PageFilterComponent {
|
|
140
|
+
private readonly document;
|
|
141
|
+
private readonly host;
|
|
142
|
+
protected readonly page: PageStateService;
|
|
143
|
+
protected readonly resolvedId: string;
|
|
144
|
+
readonly placement: _angular_core.InputSignal<"stacked" | "side">;
|
|
145
|
+
readonly mode: _angular_core.InputSignal<"sticky" | "drawer" | "overlay">;
|
|
146
|
+
readonly position: _angular_core.InputSignal<"left" | "right" | null>;
|
|
147
|
+
readonly width: _angular_core.InputSignal<string | null>;
|
|
148
|
+
readonly closeOnEsc: _angular_core.InputSignal<boolean>;
|
|
149
|
+
/**
|
|
150
|
+
* Khusus `placement="stacked"`: jadikan bar dapat dibuka/tutup lewat `PageFilterToggle`
|
|
151
|
+
* (default tertutup). Saat tertutup, bar disembunyikan dan content mengisi ruangnya kembali.
|
|
152
|
+
* Diabaikan untuk `placement="side"` (gunakan `mode="drawer"`/`overlay"` untuk side yang bisa ditutup).
|
|
153
|
+
*/
|
|
154
|
+
readonly collapsible: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
155
|
+
/** Nama aksesibilitas untuk panel saat mode `drawer`/`overlay` (dipasang sebagai `aria-label` dialog). */
|
|
156
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
157
|
+
readonly class: _angular_core.InputSignal<string>;
|
|
158
|
+
protected readonly resolvedPlacement: _angular_core.Signal<"stacked" | "side">;
|
|
159
|
+
/** `stacked` adalah bar horizontal — tidak punya drawer/overlay, jadi mode efektifnya selalu `sticky`. */
|
|
160
|
+
protected readonly effectiveMode: _angular_core.Signal<"sticky" | "drawer" | "overlay">;
|
|
161
|
+
protected readonly resolvedPosition: _angular_core.Signal<"left" | "right">;
|
|
162
|
+
protected readonly resolvedWidth: _angular_core.Signal<string>;
|
|
163
|
+
protected readonly resolvedScroll: _angular_core.Signal<"content" | "page">;
|
|
164
|
+
protected readonly isStacked: _angular_core.Signal<boolean>;
|
|
165
|
+
/** Bar stacked yang dapat ditutup dan sedang tertutup → disembunyikan dari layout. */
|
|
166
|
+
protected readonly isCollapsedStacked: _angular_core.Signal<boolean>;
|
|
167
|
+
protected readonly isSticky: _angular_core.Signal<boolean>;
|
|
168
|
+
protected readonly isDrawer: _angular_core.Signal<boolean>;
|
|
169
|
+
protected readonly isOverlay: _angular_core.Signal<boolean>;
|
|
170
|
+
/** Mode mengambang (drawer/overlay) — bersifat dialog dan butuh manajemen fokus + `inert` saat tertutup. */
|
|
171
|
+
protected readonly isInteractive: _angular_core.Signal<boolean>;
|
|
172
|
+
/** Drawer/overlay yang tertutup disembunyikan dari pohon aksesibilitas. */
|
|
173
|
+
protected readonly ariaHidden: _angular_core.Signal<"true" | null>;
|
|
174
|
+
/** Saat panel mengambang tertutup, `inert` mengeluarkan isinya dari tab order & pohon aksesibilitas (AXE). */
|
|
175
|
+
protected readonly inertWhenClosed: _angular_core.Signal<"" | null>;
|
|
176
|
+
protected readonly dialogRole: _angular_core.Signal<"dialog" | null>;
|
|
177
|
+
protected readonly ariaModal: _angular_core.Signal<"true" | null>;
|
|
178
|
+
protected readonly dialogLabel: _angular_core.Signal<string | null>;
|
|
179
|
+
protected readonly dialogTabindex: _angular_core.Signal<"-1" | null>;
|
|
180
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
181
|
+
constructor();
|
|
182
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageFilterComponent, never>;
|
|
183
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageFilterComponent, "PageFilter", never, { "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "closeOnEsc": { "alias": "closeOnEsc"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
declare class PageHeaderComponent {
|
|
187
|
+
private readonly page;
|
|
188
|
+
readonly class: _angular_core.InputSignal<string>;
|
|
189
|
+
protected readonly resolvedHeight: _angular_core.Signal<"auto" | "fix">;
|
|
190
|
+
protected readonly isBorderRail: _angular_core.Signal<boolean>;
|
|
191
|
+
/** Saat tombol apps mengambang di atas header, sisakan ruang kanan agar isi header tidak tertimpa. */
|
|
192
|
+
protected readonly reservesAppsLauncher: _angular_core.Signal<boolean>;
|
|
193
|
+
/** Lebar tombol apps (h-9 w-9 = 36px) + offset kanan (right-2 = 8px) + jarak aman; `null` = tak memesan. */
|
|
194
|
+
protected readonly appsLauncherReservePadding: _angular_core.Signal<"3.5rem" | null>;
|
|
195
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
196
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageHeaderComponent, never>;
|
|
197
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageHeaderComponent, "PageHeader", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
198
|
+
}
|
|
199
|
+
declare class PageContentComponent {
|
|
200
|
+
private readonly page;
|
|
201
|
+
readonly class: _angular_core.InputSignal<string>;
|
|
202
|
+
protected readonly resolvedScroll: _angular_core.Signal<"content" | "page">;
|
|
203
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
204
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageContentComponent, never>;
|
|
205
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageContentComponent, "PageContent", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
206
|
+
}
|
|
207
|
+
declare class PageDashboardComponent {
|
|
208
|
+
private readonly page;
|
|
209
|
+
readonly class: _angular_core.InputSignal<string>;
|
|
210
|
+
protected readonly resolvedScroll: _angular_core.Signal<"content" | "page">;
|
|
211
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
212
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageDashboardComponent, never>;
|
|
213
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageDashboardComponent, "PageDashboard", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
214
|
+
}
|
|
215
|
+
declare class PageFooterComponent {
|
|
216
|
+
private readonly page;
|
|
217
|
+
readonly class: _angular_core.InputSignal<string>;
|
|
218
|
+
protected readonly resolvedHeight: _angular_core.Signal<"auto" | "fix">;
|
|
219
|
+
protected readonly isBorderRail: _angular_core.Signal<boolean>;
|
|
220
|
+
protected readonly classes: _angular_core.Signal<string>;
|
|
221
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageFooterComponent, never>;
|
|
222
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageFooterComponent, "PageFooter", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
223
|
+
}
|
|
224
|
+
|
|
126
225
|
declare class PageSideComponent {
|
|
127
226
|
private readonly document;
|
|
227
|
+
private readonly host;
|
|
128
228
|
protected readonly page: PageStateService;
|
|
129
229
|
protected readonly resolvedId: string;
|
|
130
230
|
readonly mode: _angular_core.InputSignal<"sticky" | "drawer" | "overlay">;
|
|
131
231
|
readonly position: _angular_core.InputSignal<"left" | "right" | null>;
|
|
132
232
|
readonly width: _angular_core.InputSignal<string | null>;
|
|
133
233
|
readonly closeOnEsc: _angular_core.InputSignal<boolean>;
|
|
234
|
+
/** Nama aksesibilitas untuk panel saat mode `drawer`/`overlay` (dipasang sebagai `aria-label` dialog). */
|
|
235
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
134
236
|
readonly class: _angular_core.InputSignal<string>;
|
|
135
237
|
protected readonly resolvedMode: _angular_core.Signal<"sticky" | "drawer" | "overlay">;
|
|
136
238
|
protected readonly resolvedPosition: _angular_core.Signal<"left" | "right">;
|
|
@@ -138,12 +240,20 @@ declare class PageSideComponent {
|
|
|
138
240
|
protected readonly isSticky: _angular_core.Signal<boolean>;
|
|
139
241
|
protected readonly isDrawer: _angular_core.Signal<boolean>;
|
|
140
242
|
protected readonly isOverlay: _angular_core.Signal<boolean>;
|
|
243
|
+
/** Mode mengambang (drawer/overlay) — bersifat dialog dan butuh manajemen fokus + `inert` saat tertutup. */
|
|
244
|
+
protected readonly isInteractive: _angular_core.Signal<boolean>;
|
|
141
245
|
protected readonly resolvedScroll: _angular_core.Signal<"content" | "page">;
|
|
142
246
|
protected readonly ariaHidden: _angular_core.Signal<"true" | null>;
|
|
247
|
+
/** Saat panel mengambang tertutup, `inert` mengeluarkan isinya dari tab order & pohon aksesibilitas (AXE). */
|
|
248
|
+
protected readonly inertWhenClosed: _angular_core.Signal<"" | null>;
|
|
249
|
+
protected readonly dialogRole: _angular_core.Signal<"dialog" | null>;
|
|
250
|
+
protected readonly ariaModal: _angular_core.Signal<"true" | null>;
|
|
251
|
+
protected readonly dialogLabel: _angular_core.Signal<string | null>;
|
|
252
|
+
protected readonly dialogTabindex: _angular_core.Signal<"-1" | null>;
|
|
143
253
|
protected readonly classes: _angular_core.Signal<string>;
|
|
144
254
|
constructor();
|
|
145
255
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageSideComponent, never>;
|
|
146
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageSideComponent, "PageSide", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "closeOnEsc": { "alias": "closeOnEsc"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
256
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageSideComponent, "PageSide", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "closeOnEsc": { "alias": "closeOnEsc"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
147
257
|
}
|
|
148
258
|
|
|
149
259
|
declare class PageComponent {
|
|
@@ -153,6 +263,7 @@ declare class PageComponent {
|
|
|
153
263
|
private readonly identity;
|
|
154
264
|
protected readonly projectedSide: _angular_core.Signal<PageSideComponent | undefined>;
|
|
155
265
|
protected readonly projectedHeader: _angular_core.Signal<PageHeaderComponent | undefined>;
|
|
266
|
+
protected readonly projectedFilter: _angular_core.Signal<PageFilterComponent | undefined>;
|
|
156
267
|
readonly variant: _angular_core.InputSignal<"stacked" | "side">;
|
|
157
268
|
readonly height: _angular_core.InputSignal<"auto" | "fix">;
|
|
158
269
|
readonly scroll: _angular_core.InputSignal<"content" | "page">;
|
|
@@ -162,8 +273,11 @@ declare class PageComponent {
|
|
|
162
273
|
readonly sideMode: _angular_core.InputSignal<"sticky" | "drawer" | "overlay">;
|
|
163
274
|
readonly sideOpen: _angular_core.InputSignal<boolean | null>;
|
|
164
275
|
readonly sideWidth: _angular_core.InputSignal<string>;
|
|
276
|
+
/** Controlled state untuk `PageFilter` drawer/overlay. `null` = uncontrolled (dikelola toggle/backdrop/Esc). */
|
|
277
|
+
readonly filterOpen: _angular_core.InputSignal<boolean | null>;
|
|
165
278
|
readonly class: _angular_core.InputSignal<string>;
|
|
166
279
|
readonly sideOpenChange: _angular_core.OutputEmitterRef<boolean>;
|
|
280
|
+
readonly filterOpenChange: _angular_core.OutputEmitterRef<boolean>;
|
|
167
281
|
/** Saat layout `empty`, munculkan tombol apps (flyout main navigation) di pojok kanan-atas. Set `false` untuk menonaktifkan. */
|
|
168
282
|
readonly appsLauncher: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
169
283
|
/** Id navigasi yang disurface oleh apps-launcher (default `main`). */
|
|
@@ -178,6 +292,14 @@ declare class PageComponent {
|
|
|
178
292
|
protected readonly resolvedSideMode: _angular_core.Signal<"sticky" | "drawer" | "overlay">;
|
|
179
293
|
protected readonly isLeftSide: _angular_core.Signal<boolean>;
|
|
180
294
|
protected readonly isRightSide: _angular_core.Signal<boolean>;
|
|
295
|
+
protected readonly hasFilter: _angular_core.Signal<boolean>;
|
|
296
|
+
protected readonly filterPlacement: _angular_core.Signal<"stacked" | "side">;
|
|
297
|
+
/** Mode efektif: `stacked` selalu `sticky`; `side` memakai mode pada `PageFilter`. */
|
|
298
|
+
protected readonly filterMode: _angular_core.Signal<"sticky" | "drawer" | "overlay">;
|
|
299
|
+
protected readonly filterPosition: _angular_core.Signal<"left" | "right">;
|
|
300
|
+
protected readonly filterWidthVar: _angular_core.Signal<string>;
|
|
301
|
+
protected readonly showsSideOverlayBackdrop: _angular_core.Signal<boolean>;
|
|
302
|
+
protected readonly showsFilterOverlayBackdrop: _angular_core.Signal<boolean>;
|
|
181
303
|
protected readonly showsOverlayBackdrop: _angular_core.Signal<boolean>;
|
|
182
304
|
/** Signal data untuk id yang dipilih; di-recompute hanya saat `appsNavId` berubah. */
|
|
183
305
|
private readonly appsNavSource;
|
|
@@ -198,10 +320,33 @@ declare class PageComponent {
|
|
|
198
320
|
protected readonly hostClasses: _angular_core.Signal<string>;
|
|
199
321
|
protected readonly shellClasses: _angular_core.Signal<string>;
|
|
200
322
|
protected readonly bodyClasses: _angular_core.Signal<string>;
|
|
323
|
+
/**
|
|
324
|
+
* Wrapper di sekitar `PageFilter` + `PageContent`. Tanpa filter, memakai `display: contents`
|
|
325
|
+
* agar transparan (perilaku body lama dipertahankan persis). Dengan filter, menjadi grid/flex
|
|
326
|
+
* yang menata filter (baris untuk `stacked`, kolom untuk `side`); drawer/overlay menjadikannya
|
|
327
|
+
* `relative` sebagai positioning context untuk panel yang mengambang.
|
|
328
|
+
*/
|
|
329
|
+
protected readonly contentRegionClasses: _angular_core.Signal<string>;
|
|
201
330
|
constructor();
|
|
202
331
|
protected handleBackdropClick(): void;
|
|
203
332
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageComponent, never>;
|
|
204
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageComponent, "Page", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "scroll": { "alias": "scroll"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "sideMode": { "alias": "sideMode"; "required": false; "isSignal": true; }; "sideOpen": { "alias": "sideOpen"; "required": false; "isSignal": true; }; "sideWidth": { "alias": "sideWidth"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "appsLauncher": { "alias": "appsLauncher"; "required": false; "isSignal": true; }; "appsNavId": { "alias": "appsNavId"; "required": false; "isSignal": true; }; "appsIcon": { "alias": "appsIcon"; "required": false; "isSignal": true; }; "appsLabel": { "alias": "appsLabel"; "required": false; "isSignal": true; }; }, { "sideOpenChange": "sideOpenChange"; }, ["projectedSide", "projectedHeader"], ["PageHeader", "PageSideToggle", "PageSide", "PageContent, PageDashboard", "PageFooter"], true, never>;
|
|
333
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageComponent, "Page", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "scroll": { "alias": "scroll"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "sideMode": { "alias": "sideMode"; "required": false; "isSignal": true; }; "sideOpen": { "alias": "sideOpen"; "required": false; "isSignal": true; }; "sideWidth": { "alias": "sideWidth"; "required": false; "isSignal": true; }; "filterOpen": { "alias": "filterOpen"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; "appsLauncher": { "alias": "appsLauncher"; "required": false; "isSignal": true; }; "appsNavId": { "alias": "appsNavId"; "required": false; "isSignal": true; }; "appsIcon": { "alias": "appsIcon"; "required": false; "isSignal": true; }; "appsLabel": { "alias": "appsLabel"; "required": false; "isSignal": true; }; }, { "sideOpenChange": "sideOpenChange"; "filterOpenChange": "filterOpenChange"; }, ["projectedSide", "projectedHeader", "projectedFilter"], ["PageHeader", "PageSideToggle, PageFilterToggle", "PageSide", "PageFilter", "PageContent, PageDashboard", "PageFooter"], true, never>;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* `PageFilterToggle` — tombol untuk membuka/menutup `PageFilter` dalam mode `drawer`/`overlay`.
|
|
338
|
+
* Menerima projected content untuk label/ikon kustom; fallback memakai ikon funnel bawaan.
|
|
339
|
+
*/
|
|
340
|
+
declare class PageFilterToggleComponent {
|
|
341
|
+
protected readonly page: PageStateService;
|
|
342
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
343
|
+
readonly class: _angular_core.InputSignal<string>;
|
|
344
|
+
readonly toggled: _angular_core.OutputEmitterRef<boolean>;
|
|
345
|
+
protected readonly hostClasses: _angular_core.Signal<string>;
|
|
346
|
+
protected readonly buttonClasses: _angular_core.Signal<string>;
|
|
347
|
+
protected handleClick(): void;
|
|
348
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PageFilterToggleComponent, never>;
|
|
349
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageFilterToggleComponent, "PageFilterToggle", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "toggled": "toggled"; }, never, ["*"], true, never>;
|
|
205
350
|
}
|
|
206
351
|
|
|
207
352
|
declare class PageSideToggleComponent {
|
|
@@ -216,5 +361,5 @@ declare class PageSideToggleComponent {
|
|
|
216
361
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PageSideToggleComponent, "PageSideToggle", never, { "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "class": { "alias": "class"; "required": false; "isSignal": true; }; }, { "toggled": "toggled"; }, never, ["*"], true, never>;
|
|
217
362
|
}
|
|
218
363
|
|
|
219
|
-
export { PAGE_APPEARANCES, PAGE_DEFAULT_APPEARANCE, PAGE_DEFAULT_HEIGHT, PAGE_DEFAULT_SCROLL, PAGE_DEFAULT_SIDE_MODE, PAGE_DEFAULT_SIDE_POSITION, PAGE_DEFAULT_SIDE_WIDTH, PAGE_DEFAULT_VARIANT, PAGE_HEIGHT_VALUES, PAGE_SCROLL_VALUES, PAGE_SIDE_MODES, PAGE_SIDE_POSITIONS, PAGE_VARIANTS, PageComponent, PageContentComponent, PageDashboardComponent, PageFooterComponent, PageHeaderComponent, PageSideComponent, PageSideToggleComponent, isUiPageAppearance, isUiPageHeight, isUiPageScroll, isUiPageSideMode, isUiPageSidePosition, isUiPageVariant };
|
|
220
|
-
export type { PageAppearance, PageHeight, PageScroll, PageSideMode, PageSidePosition, PageVariant };
|
|
364
|
+
export { PAGE_APPEARANCES, PAGE_DEFAULT_APPEARANCE, PAGE_DEFAULT_FILTER_MODE, PAGE_DEFAULT_FILTER_PLACEMENT, PAGE_DEFAULT_FILTER_POSITION, PAGE_DEFAULT_FILTER_WIDTH, PAGE_DEFAULT_HEIGHT, PAGE_DEFAULT_SCROLL, PAGE_DEFAULT_SIDE_MODE, PAGE_DEFAULT_SIDE_POSITION, PAGE_DEFAULT_SIDE_WIDTH, PAGE_DEFAULT_VARIANT, PAGE_FILTER_PLACEMENTS, PAGE_HEIGHT_VALUES, PAGE_SCROLL_VALUES, PAGE_SIDE_MODES, PAGE_SIDE_POSITIONS, PAGE_VARIANTS, PageComponent, PageContentComponent, PageDashboardComponent, PageFilterComponent, PageFilterToggleComponent, PageFooterComponent, PageHeaderComponent, PageSideComponent, PageSideToggleComponent, isUiPageAppearance, isUiPageFilterPlacement, isUiPageHeight, isUiPageScroll, isUiPageSideMode, isUiPageSidePosition, isUiPageVariant };
|
|
365
|
+
export type { PageAppearance, PageFilterPlacement, PageHeight, PageScroll, PageSideMode, PageSidePosition, PageVariant };
|