@a.nemreen/dga-ui 0.2.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.
- package/README.md +400 -0
- package/fesm2022/a.nemreen-dga-ui.mjs +9855 -0
- package/index.d.ts +5 -0
- package/lib/content/code/dga-code.d.ts +8 -0
- package/lib/content/list/dga-description-list.d.ts +13 -0
- package/lib/content/list/dga-list.d.ts +7 -0
- package/lib/content/metric/dga-metric.d.ts +17 -0
- package/lib/content/number/dga-number.d.ts +36 -0
- package/lib/content/persona/dga-persona.d.ts +11 -0
- package/lib/content/quote/dga-quote.d.ts +7 -0
- package/lib/data/carousel/dga-carousel.d.ts +79 -0
- package/lib/data/chart/dga-chart.d.ts +153 -0
- package/lib/data/export/dga-export-toolbar.d.ts +19 -0
- package/lib/data/export/dga-export.d.ts +26 -0
- package/lib/data/table/dga-table.d.ts +50 -0
- package/lib/domain/saudi-cities/dga-saudi-cities.d.ts +16 -0
- package/lib/feedback/a11y/dga-skip-link.d.ts +11 -0
- package/lib/feedback/accessibility/dga-accessibility.d.ts +133 -0
- package/lib/feedback/accessibility/dga-accessibility.service.d.ts +78 -0
- package/lib/feedback/alert/dga-alert.d.ts +27 -0
- package/lib/feedback/cookies/dga-cookies.d.ts +64 -0
- package/lib/feedback/copy/dga-copy.d.ts +43 -0
- package/lib/feedback/empty/dga-empty.d.ts +11 -0
- package/lib/feedback/feedback/dga-feedback.d.ts +30 -0
- package/lib/feedback/page-feedback/dga-page-feedback.d.ts +72 -0
- package/lib/feedback/rating/dga-rating.d.ts +17 -0
- package/lib/feedback/share/dga-share.d.ts +39 -0
- package/lib/forms/autocomplete/dga-autocomplete.d.ts +19 -0
- package/lib/forms/checkbox/dga-checkbox.d.ts +9 -0
- package/lib/forms/chip-input/dga-chip-input.d.ts +20 -0
- package/lib/forms/date-picker/dga-date-calendar.d.ts +44 -0
- package/lib/forms/date-picker/dga-date-picker.d.ts +152 -0
- package/lib/forms/field/dga-field.d.ts +22 -0
- package/lib/forms/form/dga-form-control.d.ts +50 -0
- package/lib/forms/form/form-control.styles.d.ts +16 -0
- package/lib/forms/input/dga-input.d.ts +13 -0
- package/lib/forms/label/dga-label.d.ts +8 -0
- package/lib/forms/multiselect/dga-multiselect.d.ts +20 -0
- package/lib/forms/number-input/dga-number-input.d.ts +25 -0
- package/lib/forms/otp/dga-otp.d.ts +19 -0
- package/lib/forms/phone-input/dga-phone-input.d.ts +33 -0
- package/lib/forms/radio/dga-radio.d.ts +9 -0
- package/lib/forms/select/dga-native-select.d.ts +15 -0
- package/lib/forms/select/dga-select.d.ts +65 -0
- package/lib/forms/slider/dga-slider.d.ts +7 -0
- package/lib/forms/switch/dga-switch.d.ts +14 -0
- package/lib/forms/upload/dga-upload.d.ts +32 -0
- package/lib/layout/card/dga-card-media.d.ts +13 -0
- package/lib/layout/card/dga-card.d.ts +89 -0
- package/lib/layout/clamp/dga-clamp.d.ts +11 -0
- package/lib/layout/expandable/dga-expandable.d.ts +14 -0
- package/lib/layout/grid/dga-grid.d.ts +10 -0
- package/lib/layout/section/dga-section.d.ts +22 -0
- package/lib/navigation/accordion/dga-accordion-item.d.ts +12 -0
- package/lib/navigation/accordion/dga-accordion.d.ts +10 -0
- package/lib/navigation/breadcrumb/dga-breadcrumb.d.ts +13 -0
- package/lib/navigation/filter-bar/dga-filter-bar.d.ts +18 -0
- package/lib/navigation/pagination/dga-pagination.d.ts +14 -0
- package/lib/navigation/scroll-top/dga-scroll-top.d.ts +35 -0
- package/lib/navigation/side-nav/dga-side-nav.d.ts +21 -0
- package/lib/navigation/stepper/dga-stepper.d.ts +15 -0
- package/lib/navigation/tabs/dga-tab.d.ts +12 -0
- package/lib/navigation/tabs/dga-tabs.d.ts +14 -0
- package/lib/navigation/toc/dga-toc.d.ts +16 -0
- package/lib/navigation/toolbar/dga-toolbar.d.ts +7 -0
- package/lib/overlays/dialog/dga-dialog.d.ts +28 -0
- package/lib/overlays/drawer/dga-drawer.d.ts +28 -0
- package/lib/overlays/image-popup/dga-image-popup.d.ts +65 -0
- package/lib/overlays/menu/dga-menu.d.ts +50 -0
- package/lib/overlays/modal/dga-modal.d.ts +44 -0
- package/lib/overlays/toast/dga-toast-outlet.d.ts +11 -0
- package/lib/overlays/toast/dga-toast.d.ts +24 -0
- package/lib/overlays/toast/dga-toast.service.d.ts +39 -0
- package/lib/overlays/tooltip/dga-tooltip.d.ts +60 -0
- package/lib/primitives/avatar/dga-avatar.d.ts +13 -0
- package/lib/primitives/badge/dga-badge.d.ts +10 -0
- package/lib/primitives/button/dga-button.d.ts +20 -0
- package/lib/primitives/chip/dga-chip.d.ts +11 -0
- package/lib/primitives/divider/dga-divider.d.ts +10 -0
- package/lib/primitives/icon/dga-icon-badge.d.ts +14 -0
- package/lib/primitives/icon/dga-icon-font.service.d.ts +14 -0
- package/lib/primitives/icon/dga-icon-registry.d.ts +9 -0
- package/lib/primitives/icon/dga-icon.d.ts +40 -0
- package/lib/primitives/link/dga-link.d.ts +10 -0
- package/lib/primitives/progress/dga-progress.d.ts +25 -0
- package/lib/primitives/skeleton/dga-skeleton.d.ts +30 -0
- package/lib/primitives/spinner/dga-spinner.d.ts +12 -0
- package/lib/shell/footer/dga-footer.d.ts +60 -0
- package/lib/shell/header/dga-header.d.ts +343 -0
- package/lib/shell/hero/dga-hero.d.ts +128 -0
- package/lib/shell/logo-tile/dga-logo-tile.d.ts +11 -0
- package/lib/shell/preloader/dga-preloader.d.ts +55 -0
- package/lib/shell/side-info/dga-side-info.d.ts +19 -0
- package/lib/shell/top-bar/dga-top-bar.d.ts +63 -0
- package/lib/shell/top-bar/sa-flag.d.ts +2 -0
- package/lib/utils/cx.d.ts +2 -0
- package/lib/utils/locale.d.ts +2 -0
- package/package.json +61 -0
- package/public-api.d.ts +91 -0
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
import { type DgaBadgeVariant } from '../../primitives/badge/dga-badge';
|
|
2
|
+
import { type DgaIconName } from '../../primitives/icon/dga-icon';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export type DgaHeaderAppearance = 'default' | 'portal';
|
|
5
|
+
/**
|
|
6
|
+
* Mobile / narrow navigation chrome (portal header, `md` and below):
|
|
7
|
+
* - `sheet` - side drawer from the inline-end (burger) edge
|
|
8
|
+
* - `fullscreen` - full-viewport overlay panel
|
|
9
|
+
* - `push` - panel expands under the header bar (inline dropdown)
|
|
10
|
+
*/
|
|
11
|
+
export type DgaMobileNavMode = 'sheet' | 'fullscreen' | 'push';
|
|
12
|
+
/** Panel chrome: compact under trigger, full-bleed mega, or mega + featured lead. */
|
|
13
|
+
export type DgaNavDropdownVariant = 'menu' | 'mega' | 'featured';
|
|
14
|
+
/** How links are arranged inside the panel. */
|
|
15
|
+
export type DgaNavDropdownLayout = 'list' | 'columns' | 'rows';
|
|
16
|
+
export interface DgaNavLink {
|
|
17
|
+
label: string;
|
|
18
|
+
href?: string;
|
|
19
|
+
description?: string;
|
|
20
|
+
current?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface DgaNavColumn {
|
|
23
|
+
title?: string;
|
|
24
|
+
links: DgaNavLink[];
|
|
25
|
+
}
|
|
26
|
+
/** Lead / promo block for `variant: 'featured'`. */
|
|
27
|
+
export interface DgaNavFeatured {
|
|
28
|
+
title: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
href?: string;
|
|
31
|
+
cta?: string;
|
|
32
|
+
imageUrl?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface DgaNavDropdown {
|
|
35
|
+
/**
|
|
36
|
+
* Panel width/placement:
|
|
37
|
+
* - `menu` - compact panel anchored under the trigger (default for simple lists)
|
|
38
|
+
* - `mega` - full-width under the header
|
|
39
|
+
* - `featured` - full-width mega with a lead promo column
|
|
40
|
+
*/
|
|
41
|
+
variant?: DgaNavDropdownVariant;
|
|
42
|
+
/** Inner arrangement: `list` | `columns` | `rows`. */
|
|
43
|
+
layout?: DgaNavDropdownLayout;
|
|
44
|
+
columns?: DgaNavColumn[];
|
|
45
|
+
links?: DgaNavLink[];
|
|
46
|
+
featured?: DgaNavFeatured;
|
|
47
|
+
}
|
|
48
|
+
export interface DgaNavItem {
|
|
49
|
+
label: string;
|
|
50
|
+
href?: string;
|
|
51
|
+
current?: boolean;
|
|
52
|
+
dropdown?: DgaNavDropdown;
|
|
53
|
+
}
|
|
54
|
+
export interface DgaHeaderAction {
|
|
55
|
+
id: string;
|
|
56
|
+
label: string;
|
|
57
|
+
icon?: DgaIconName;
|
|
58
|
+
href?: string;
|
|
59
|
+
badge?: number;
|
|
60
|
+
iconOnly?: boolean;
|
|
61
|
+
}
|
|
62
|
+
/** Suggestion chip shown under the header search field. */
|
|
63
|
+
export interface DgaHeaderSearchSuggestion {
|
|
64
|
+
label: string;
|
|
65
|
+
/** Value written into the query (defaults to `label`). */
|
|
66
|
+
value?: string;
|
|
67
|
+
icon?: DgaIconName;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Built-in header search panel (opens from the action whose `id` matches `actionId`).
|
|
71
|
+
* Pass this to `[search]` to enable the dropdown search experience.
|
|
72
|
+
*/
|
|
73
|
+
export interface DgaHeaderSearchConfig {
|
|
74
|
+
/** Action id that toggles the panel. Default: `'search'`. */
|
|
75
|
+
actionId?: string;
|
|
76
|
+
placeholder?: string;
|
|
77
|
+
submitLabel?: string;
|
|
78
|
+
suggestionsLabel?: string;
|
|
79
|
+
clearLabel?: string;
|
|
80
|
+
voiceLabel?: string;
|
|
81
|
+
/** Show microphone control (uses Web Speech API when available). Default: true. */
|
|
82
|
+
voice?: boolean;
|
|
83
|
+
suggestions?: DgaHeaderSearchSuggestion[];
|
|
84
|
+
/**
|
|
85
|
+
* Optional results URL. On submit, navigates to
|
|
86
|
+
* `{resultsHref}?{queryParam}={query}` when set.
|
|
87
|
+
*/
|
|
88
|
+
resultsHref?: string;
|
|
89
|
+
/** Query string key. Default: `'q'`. */
|
|
90
|
+
queryParam?: string;
|
|
91
|
+
}
|
|
92
|
+
export type DgaHeaderNotificationTone = DgaBadgeVariant;
|
|
93
|
+
/** Single item in the header notifications panel. */
|
|
94
|
+
export interface DgaHeaderNotification {
|
|
95
|
+
id: string;
|
|
96
|
+
title: string;
|
|
97
|
+
message: string;
|
|
98
|
+
statusLabel?: string;
|
|
99
|
+
tone?: DgaHeaderNotificationTone;
|
|
100
|
+
icon?: DgaIconName;
|
|
101
|
+
href?: string;
|
|
102
|
+
read?: boolean;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Built-in notifications dropdown for the action whose `id` matches `actionId`
|
|
106
|
+
* (default `'notifications'`).
|
|
107
|
+
*/
|
|
108
|
+
export interface DgaHeaderNotificationsConfig {
|
|
109
|
+
actionId?: string;
|
|
110
|
+
/** Panel heading. Default: `'Notifications'`. */
|
|
111
|
+
title?: string;
|
|
112
|
+
emptyLabel?: string;
|
|
113
|
+
viewAllLabel?: string;
|
|
114
|
+
viewAllHref?: string;
|
|
115
|
+
markReadLabel?: string;
|
|
116
|
+
markAllReadLabel?: string;
|
|
117
|
+
viewLabel?: string;
|
|
118
|
+
dismissLabel?: string;
|
|
119
|
+
closeLabel?: string;
|
|
120
|
+
items?: DgaHeaderNotification[];
|
|
121
|
+
}
|
|
122
|
+
export type DgaHeaderNotificationAction = 'read' | 'view' | 'dismiss' | 'select';
|
|
123
|
+
/** Guest login form opened from the login action. */
|
|
124
|
+
export interface DgaHeaderLoginConfig {
|
|
125
|
+
actionId?: string;
|
|
126
|
+
title?: string;
|
|
127
|
+
description?: string;
|
|
128
|
+
emailLabel?: string;
|
|
129
|
+
emailPlaceholder?: string;
|
|
130
|
+
emailHint?: string;
|
|
131
|
+
passwordLabel?: string;
|
|
132
|
+
passwordPlaceholder?: string;
|
|
133
|
+
passwordHint?: string;
|
|
134
|
+
submitLabel?: string;
|
|
135
|
+
cancelLabel?: string;
|
|
136
|
+
closeLabel?: string;
|
|
137
|
+
forgotPasswordLabel?: string;
|
|
138
|
+
forgotPasswordHref?: string;
|
|
139
|
+
showPasswordLabel?: string;
|
|
140
|
+
hidePasswordLabel?: string;
|
|
141
|
+
}
|
|
142
|
+
export interface DgaHeaderUserMenuLink {
|
|
143
|
+
id: string;
|
|
144
|
+
label: string;
|
|
145
|
+
href?: string;
|
|
146
|
+
icon?: DgaIconName;
|
|
147
|
+
danger?: boolean;
|
|
148
|
+
}
|
|
149
|
+
/** Authenticated user menu shown after login (same action id as login). */
|
|
150
|
+
export interface DgaHeaderUserConfig {
|
|
151
|
+
name: string;
|
|
152
|
+
role?: string;
|
|
153
|
+
email?: string;
|
|
154
|
+
avatarSrc?: string;
|
|
155
|
+
links?: DgaHeaderUserMenuLink[];
|
|
156
|
+
}
|
|
157
|
+
export declare class DgaHeader {
|
|
158
|
+
private readonly host;
|
|
159
|
+
private closeTimer;
|
|
160
|
+
private dropdownSyncFrame;
|
|
161
|
+
private lastDropdownStyleKey;
|
|
162
|
+
readonly collapseId = "dga-nav-collapse";
|
|
163
|
+
readonly dropLink: string;
|
|
164
|
+
readonly dropTile: string;
|
|
165
|
+
readonly mobileLink: string;
|
|
166
|
+
readonly brand: import("@angular/core").InputSignal<string>;
|
|
167
|
+
readonly brandSlogan: import("@angular/core").InputSignal<string>;
|
|
168
|
+
readonly brandLogo: import("@angular/core").InputSignal<string>;
|
|
169
|
+
readonly brandLogoAlt: import("@angular/core").InputSignal<string>;
|
|
170
|
+
/** When true and no `brandLogo`, portal headers show a home-icon placeholder beside the brand text. */
|
|
171
|
+
readonly brandPlaceholder: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
172
|
+
readonly brandHref: import("@angular/core").InputSignal<string>;
|
|
173
|
+
readonly navLabel: import("@angular/core").InputSignal<string>;
|
|
174
|
+
readonly menuToggleLabel: import("@angular/core").InputSignal<string>;
|
|
175
|
+
readonly menuCloseLabel: import("@angular/core").InputSignal<string>;
|
|
176
|
+
readonly appearance: import("@angular/core").InputSignal<DgaHeaderAppearance>;
|
|
177
|
+
/**
|
|
178
|
+
* Portal mobile navigation layout. Ignored for `appearance="default"`.
|
|
179
|
+
* - `sheet` - side drawer (narrow, page peeks beside)
|
|
180
|
+
* - `fullscreen` - covers the whole screen with its own close control
|
|
181
|
+
* - `push` - accordion panel under the header
|
|
182
|
+
*/
|
|
183
|
+
readonly mobileNav: import("@angular/core").InputSignal<DgaMobileNavMode>;
|
|
184
|
+
readonly sticky: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
185
|
+
readonly items: import("@angular/core").InputSignal<DgaNavItem[]>;
|
|
186
|
+
readonly actions: import("@angular/core").InputSignal<DgaHeaderAction[]>;
|
|
187
|
+
/**
|
|
188
|
+
* When set, the header action matching `search.actionId` (default `'search'`)
|
|
189
|
+
* opens a full-width search panel with suggestions instead of a no-op click.
|
|
190
|
+
*/
|
|
191
|
+
readonly search: import("@angular/core").InputSignal<DgaHeaderSearchConfig | null>;
|
|
192
|
+
/** Bound query for the header search panel. */
|
|
193
|
+
readonly searchQuery: import("@angular/core").ModelSignal<string>;
|
|
194
|
+
/**
|
|
195
|
+
* When set, the header action matching `notifications.actionId`
|
|
196
|
+
* (default `'notifications'`) opens the notifications dropdown.
|
|
197
|
+
*/
|
|
198
|
+
readonly notifications: import("@angular/core").InputSignal<DgaHeaderNotificationsConfig | null>;
|
|
199
|
+
/**
|
|
200
|
+
* Guest login panel config. Opens from the action matching `login.actionId`
|
|
201
|
+
* (default `'login'`). After auth, the same action opens the user menu.
|
|
202
|
+
*/
|
|
203
|
+
readonly login: import("@angular/core").InputSignal<DgaHeaderLoginConfig | null>;
|
|
204
|
+
/** Authenticated user profile shown in the account menu. */
|
|
205
|
+
readonly user: import("@angular/core").InputSignal<DgaHeaderUserConfig | null>;
|
|
206
|
+
/** Whether the user is signed in (two-way). */
|
|
207
|
+
readonly authenticated: import("@angular/core").ModelSignal<boolean>;
|
|
208
|
+
readonly actionClick: import("@angular/core").OutputEmitterRef<DgaHeaderAction>;
|
|
209
|
+
readonly searchSubmit: import("@angular/core").OutputEmitterRef<string>;
|
|
210
|
+
readonly searchSuggestionSelect: import("@angular/core").OutputEmitterRef<DgaHeaderSearchSuggestion>;
|
|
211
|
+
readonly searchVoice: import("@angular/core").OutputEmitterRef<void>;
|
|
212
|
+
readonly notificationAction: import("@angular/core").OutputEmitterRef<{
|
|
213
|
+
item: DgaHeaderNotification;
|
|
214
|
+
action: DgaHeaderNotificationAction;
|
|
215
|
+
}>;
|
|
216
|
+
readonly loginSubmit: import("@angular/core").OutputEmitterRef<{
|
|
217
|
+
email: string;
|
|
218
|
+
password: string;
|
|
219
|
+
}>;
|
|
220
|
+
readonly logout: import("@angular/core").OutputEmitterRef<void>;
|
|
221
|
+
readonly userLinkClick: import("@angular/core").OutputEmitterRef<DgaHeaderUserMenuLink>;
|
|
222
|
+
readonly mobileOpen: import("@angular/core").WritableSignal<boolean>;
|
|
223
|
+
readonly openDropdown: import("@angular/core").WritableSignal<number | null>;
|
|
224
|
+
readonly searchOpen: import("@angular/core").WritableSignal<boolean>;
|
|
225
|
+
readonly notificationsOpen: import("@angular/core").WritableSignal<boolean>;
|
|
226
|
+
readonly loginOpen: import("@angular/core").WritableSignal<boolean>;
|
|
227
|
+
readonly userMenuOpen: import("@angular/core").WritableSignal<boolean>;
|
|
228
|
+
readonly voiceListening: import("@angular/core").WritableSignal<boolean>;
|
|
229
|
+
readonly expandedNotificationId: import("@angular/core").WritableSignal<string | null>;
|
|
230
|
+
readonly loginEmail: import("@angular/core").WritableSignal<string>;
|
|
231
|
+
readonly loginPassword: import("@angular/core").WritableSignal<string>;
|
|
232
|
+
readonly showLoginPassword: import("@angular/core").WritableSignal<boolean>;
|
|
233
|
+
readonly loginSubmitting: import("@angular/core").WritableSignal<boolean>;
|
|
234
|
+
/** Fixed coords for notifications / login / user panels (anchored to trigger). */
|
|
235
|
+
readonly dropdownPanelStyle: import("@angular/core").WritableSignal<Record<string, string>>;
|
|
236
|
+
private readonly dismissedNotificationIds;
|
|
237
|
+
private readonly readNotificationIds;
|
|
238
|
+
private dropdownTrigger;
|
|
239
|
+
private dropdownActionId;
|
|
240
|
+
private readonly injector;
|
|
241
|
+
private readonly searchInputRef;
|
|
242
|
+
readonly searchPanelId = "dga-header-search-panel";
|
|
243
|
+
readonly notificationsPanelId = "dga-header-notifications-panel";
|
|
244
|
+
readonly loginPanelId = "dga-header-login-panel";
|
|
245
|
+
readonly userPanelId = "dga-header-user-panel";
|
|
246
|
+
readonly isPortal: import("@angular/core").Signal<boolean>;
|
|
247
|
+
readonly searchConfig: import("@angular/core").Signal<DgaHeaderSearchConfig | null>;
|
|
248
|
+
readonly searchActionId: import("@angular/core").Signal<string>;
|
|
249
|
+
readonly notificationsConfig: import("@angular/core").Signal<DgaHeaderNotificationsConfig | null>;
|
|
250
|
+
readonly notificationsActionId: import("@angular/core").Signal<string>;
|
|
251
|
+
readonly loginConfig: import("@angular/core").Signal<DgaHeaderLoginConfig | null>;
|
|
252
|
+
readonly loginActionId: import("@angular/core").Signal<string>;
|
|
253
|
+
readonly userConfig: import("@angular/core").Signal<DgaHeaderUserConfig | null>;
|
|
254
|
+
readonly utilityOverlayOpen: import("@angular/core").Signal<boolean>;
|
|
255
|
+
readonly visibleNotifications: import("@angular/core").Signal<{
|
|
256
|
+
read: boolean;
|
|
257
|
+
id: string;
|
|
258
|
+
title: string;
|
|
259
|
+
message: string;
|
|
260
|
+
statusLabel?: string;
|
|
261
|
+
tone?: DgaHeaderNotificationTone;
|
|
262
|
+
icon?: DgaIconName;
|
|
263
|
+
href?: string;
|
|
264
|
+
}[]>;
|
|
265
|
+
readonly unreadNotificationCount: import("@angular/core").Signal<number>;
|
|
266
|
+
constructor();
|
|
267
|
+
/** Compact under-trigger menus are rendered inside the `<li>` (desktop only). */
|
|
268
|
+
readonly activeWideDropdown: import("@angular/core").Signal<{
|
|
269
|
+
index: number;
|
|
270
|
+
item: DgaNavItem;
|
|
271
|
+
variant: "mega" | "featured";
|
|
272
|
+
} | null>;
|
|
273
|
+
readonly hostClasses: import("@angular/core").Signal<string>;
|
|
274
|
+
readonly innerClasses: import("@angular/core").Signal<string>;
|
|
275
|
+
readonly desktopNavClasses: import("@angular/core").Signal<string>;
|
|
276
|
+
readonly actionsClasses: import("@angular/core").Signal<string>;
|
|
277
|
+
mobilePanelClass(): string;
|
|
278
|
+
hoverMenus(): boolean;
|
|
279
|
+
isMobileViewport(): boolean;
|
|
280
|
+
resolveVariant(item: DgaNavItem): DgaNavDropdownVariant;
|
|
281
|
+
resolveLayout(item: DgaNavItem): DgaNavDropdownLayout;
|
|
282
|
+
colCount(item: DgaNavItem): number;
|
|
283
|
+
flatLinks(item: DgaNavItem): DgaNavLink[];
|
|
284
|
+
columnsGridClass(count: number): string;
|
|
285
|
+
featuredGridClass(variant: DgaNavDropdownVariant, hasFeatured: boolean): string;
|
|
286
|
+
navItemClass(current: boolean, open?: boolean): string;
|
|
287
|
+
mobileItemClass(current: boolean, open?: boolean): string;
|
|
288
|
+
indicatorClass(active: boolean): string;
|
|
289
|
+
actionClass(_action: DgaHeaderAction): string;
|
|
290
|
+
badgeClass(): string;
|
|
291
|
+
isIconOnly(action: DgaHeaderAction): boolean;
|
|
292
|
+
isSearchAction(action: DgaHeaderAction): boolean;
|
|
293
|
+
isNotificationsAction(action: DgaHeaderAction): boolean;
|
|
294
|
+
isLoginAction(action: DgaHeaderAction): boolean;
|
|
295
|
+
actionTooltip(action: DgaHeaderAction): string;
|
|
296
|
+
actionAriaLabel(action: DgaHeaderAction): string;
|
|
297
|
+
actionExpanded(action: DgaHeaderAction): boolean | null;
|
|
298
|
+
actionControls(action: DgaHeaderAction): string | null;
|
|
299
|
+
actionIndicatorActive(action: DgaHeaderAction): boolean;
|
|
300
|
+
private clearCloseTimer;
|
|
301
|
+
private scheduleClose;
|
|
302
|
+
private setBodyScrollLocked;
|
|
303
|
+
onItemEnter(i: number): void;
|
|
304
|
+
onPanelEnter(): void;
|
|
305
|
+
onHostLeave(event: MouseEvent): void;
|
|
306
|
+
toggleMobile(): void;
|
|
307
|
+
toggleDropdown(i: number, event: Event): void;
|
|
308
|
+
closeAll(): void;
|
|
309
|
+
onAction(action: DgaHeaderAction, event?: Event): void;
|
|
310
|
+
onMobileAction(action: DgaHeaderAction, event?: Event): void;
|
|
311
|
+
closeUtilityOverlays(): void;
|
|
312
|
+
toggleSearch(): void;
|
|
313
|
+
closeSearch(clearVoice?: boolean): void;
|
|
314
|
+
toggleNotifications(trigger?: HTMLElement | null): void;
|
|
315
|
+
closeNotifications(): void;
|
|
316
|
+
toggleLogin(trigger?: HTMLElement | null): void;
|
|
317
|
+
closeLogin(): void;
|
|
318
|
+
toggleUserMenu(trigger?: HTMLElement | null): void;
|
|
319
|
+
closeUserMenu(): void;
|
|
320
|
+
onLoginSubmit(event: Event): void;
|
|
321
|
+
onUserLink(link: DgaHeaderUserMenuLink): void;
|
|
322
|
+
toggleNotificationExpand(item: DgaHeaderNotification): void;
|
|
323
|
+
onNotificationAction(item: DgaHeaderNotification, action: DgaHeaderNotificationAction): void;
|
|
324
|
+
markAllNotificationsRead(): void;
|
|
325
|
+
clearSearchQuery(): void;
|
|
326
|
+
applySearchSuggestion(item: DgaHeaderSearchSuggestion): void;
|
|
327
|
+
onSearchFormSubmit(event: Event): void;
|
|
328
|
+
onSearchVoice(): void;
|
|
329
|
+
private speechRecognition;
|
|
330
|
+
private stopVoice;
|
|
331
|
+
private triggerFromEvent;
|
|
332
|
+
private scheduleDropdownSync;
|
|
333
|
+
private requestDropdownSync;
|
|
334
|
+
private clearDropdownAnchor;
|
|
335
|
+
private findActionTrigger;
|
|
336
|
+
private syncDropdownPanel;
|
|
337
|
+
onKey(event: KeyboardEvent): void;
|
|
338
|
+
onScroll(): void;
|
|
339
|
+
onResize(): void;
|
|
340
|
+
onDocClick(event: MouseEvent): void;
|
|
341
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DgaHeader, never>;
|
|
342
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DgaHeader, "dga-header", never, { "brand": { "alias": "brand"; "required": false; "isSignal": true; }; "brandSlogan": { "alias": "brandSlogan"; "required": false; "isSignal": true; }; "brandLogo": { "alias": "brandLogo"; "required": false; "isSignal": true; }; "brandLogoAlt": { "alias": "brandLogoAlt"; "required": false; "isSignal": true; }; "brandPlaceholder": { "alias": "brandPlaceholder"; "required": false; "isSignal": true; }; "brandHref": { "alias": "brandHref"; "required": false; "isSignal": true; }; "navLabel": { "alias": "navLabel"; "required": false; "isSignal": true; }; "menuToggleLabel": { "alias": "menuToggleLabel"; "required": false; "isSignal": true; }; "menuCloseLabel": { "alias": "menuCloseLabel"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "mobileNav": { "alias": "mobileNav"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchQuery": { "alias": "searchQuery"; "required": false; "isSignal": true; }; "notifications": { "alias": "notifications"; "required": false; "isSignal": true; }; "login": { "alias": "login"; "required": false; "isSignal": true; }; "user": { "alias": "user"; "required": false; "isSignal": true; }; "authenticated": { "alias": "authenticated"; "required": false; "isSignal": true; }; }, { "searchQuery": "searchQueryChange"; "authenticated": "authenticatedChange"; "actionClick": "actionClick"; "searchSubmit": "searchSubmit"; "searchSuggestionSelect": "searchSuggestionSelect"; "searchVoice": "searchVoice"; "notificationAction": "notificationAction"; "loginSubmit": "loginSubmit"; "logout": "logout"; "userLinkClick": "userLinkClick"; }, never, ["[dgaHeaderBrand]", "*", "[dgaHeaderEnd]"], true, never>;
|
|
343
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* `default` / `portal` - original full page headers.
|
|
4
|
+
* `sub` / `flat` - compact page-header band (breadcrumb + optional float/actions slot).
|
|
5
|
+
* `aside` - text + side media, two columns.
|
|
6
|
+
* `brief` - shorter title/description density, same layout as `default`.
|
|
7
|
+
*/
|
|
8
|
+
export type DgaHeroAppearance = 'default' | 'portal' | 'sub' | 'flat' | 'aside' | 'brief';
|
|
9
|
+
/** Carousel motion between slides. */
|
|
10
|
+
export type DgaHeroTransition = 'fade' | 'push';
|
|
11
|
+
/** Overlay tint drawn above the hero image. `none` skips the overlay entirely. */
|
|
12
|
+
export type DgaHeroOverlayTone = 'primary' | 'dark' | 'none';
|
|
13
|
+
/** Decorative edge mask applied to the hero image (CSS mask / clip-path). */
|
|
14
|
+
export type DgaHeroImageMask = 'none' | 'fade' | 'angle' | 'wave';
|
|
15
|
+
export interface DgaHeroSlide {
|
|
16
|
+
/** Main headline. */
|
|
17
|
+
title: string;
|
|
18
|
+
/** Supporting copy - prefer over legacy `subtitle`. */
|
|
19
|
+
description?: string;
|
|
20
|
+
/** @deprecated Prefer `description`. */
|
|
21
|
+
subtitle?: string;
|
|
22
|
+
/** Primary / main action label. */
|
|
23
|
+
primaryCta?: string;
|
|
24
|
+
/** Secondary action label. */
|
|
25
|
+
secondaryCta?: string;
|
|
26
|
+
primaryHref?: string;
|
|
27
|
+
secondaryHref?: string;
|
|
28
|
+
/** Desktop / large viewport image. Falls back to `imageUrl`. */
|
|
29
|
+
imageDesktop?: string;
|
|
30
|
+
/** Mobile image - falls back to desktop. */
|
|
31
|
+
imageMobile?: string;
|
|
32
|
+
/** @deprecated Prefer `imageDesktop`. */
|
|
33
|
+
imageUrl?: string;
|
|
34
|
+
/** Per-slide overlay tint - falls back to the hero's `imageOverlay` input. */
|
|
35
|
+
overlay?: DgaHeroOverlayTone;
|
|
36
|
+
}
|
|
37
|
+
export declare class DgaHero {
|
|
38
|
+
private readonly destroyRef;
|
|
39
|
+
private autoplayTimer;
|
|
40
|
+
private readonly autoplayPaused;
|
|
41
|
+
/** Skip CSS transitions on first layout so slides don't animate in like a locale wipe. */
|
|
42
|
+
private readonly motionReady;
|
|
43
|
+
/** Single-slide API. */
|
|
44
|
+
readonly title: import("@angular/core").InputSignal<string>;
|
|
45
|
+
readonly description: import("@angular/core").InputSignal<string>;
|
|
46
|
+
/** @deprecated Prefer `description`. */
|
|
47
|
+
readonly subtitle: import("@angular/core").InputSignal<string>;
|
|
48
|
+
readonly primaryCta: import("@angular/core").InputSignal<string>;
|
|
49
|
+
readonly secondaryCta: import("@angular/core").InputSignal<string>;
|
|
50
|
+
readonly primaryHref: import("@angular/core").InputSignal<string>;
|
|
51
|
+
readonly secondaryHref: import("@angular/core").InputSignal<string>;
|
|
52
|
+
readonly imageDesktop: import("@angular/core").InputSignal<string>;
|
|
53
|
+
readonly imageMobile: import("@angular/core").InputSignal<string>;
|
|
54
|
+
/** @deprecated Prefer `imageDesktop`. */
|
|
55
|
+
readonly imageUrl: import("@angular/core").InputSignal<string>;
|
|
56
|
+
/** Overlay tint drawn above the single (non-carousel) hero image. */
|
|
57
|
+
readonly imageOverlay: import("@angular/core").InputSignal<DgaHeroOverlayTone>;
|
|
58
|
+
/** Decorative edge mask applied to the hero image(s). */
|
|
59
|
+
readonly imageMaskVariant: import("@angular/core").InputSignal<DgaHeroImageMask>;
|
|
60
|
+
/**
|
|
61
|
+
* Portal carousel slides. When length > 0, each slide supplies its own
|
|
62
|
+
* title / description / CTAs / images.
|
|
63
|
+
*/
|
|
64
|
+
readonly slides: import("@angular/core").InputSignal<DgaHeroSlide[]>;
|
|
65
|
+
readonly activeIndex: import("@angular/core").ModelSignal<number>;
|
|
66
|
+
readonly appearance: import("@angular/core").InputSignal<DgaHeroAppearance>;
|
|
67
|
+
/** Carousel motion - default `push`. Also `fade`. */
|
|
68
|
+
readonly transition: import("@angular/core").InputSignal<DgaHeroTransition>;
|
|
69
|
+
readonly autoplay: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
70
|
+
readonly autoplayMs: import("@angular/core").InputSignal<number>;
|
|
71
|
+
/** Dot pagination under the carousel. Default `true`. */
|
|
72
|
+
readonly showDots: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
73
|
+
/** Prev / next arrow controls. Default `false`. */
|
|
74
|
+
readonly showArrows: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
75
|
+
readonly dotsLabel: import("@angular/core").InputSignal<string>;
|
|
76
|
+
readonly prevLabel: import("@angular/core").InputSignal<string>;
|
|
77
|
+
readonly nextLabel: import("@angular/core").InputSignal<string>;
|
|
78
|
+
readonly primaryClick: import("@angular/core").OutputEmitterRef<number | void>;
|
|
79
|
+
readonly secondaryClick: import("@angular/core").OutputEmitterRef<number | void>;
|
|
80
|
+
readonly slideChange: import("@angular/core").OutputEmitterRef<number>;
|
|
81
|
+
readonly slideCount: import("@angular/core").Signal<number>;
|
|
82
|
+
readonly isCarousel: import("@angular/core").Signal<boolean>;
|
|
83
|
+
/** Compact page-header band variants (breadcrumb + float/actions slot, no media column). */
|
|
84
|
+
readonly isCompactBand: import("@angular/core").Signal<boolean>;
|
|
85
|
+
readonly slideIndexes: import("@angular/core").Signal<number[]>;
|
|
86
|
+
readonly hostClasses: import("@angular/core").Signal<string>;
|
|
87
|
+
readonly innerClasses: import("@angular/core").Signal<string>;
|
|
88
|
+
readonly titleClasses: import("@angular/core").Signal<string>;
|
|
89
|
+
readonly subtitleClasses: import("@angular/core").Signal<string>;
|
|
90
|
+
/** Precomputed inline `mask-image` / `clip-path` for the current `imageMaskVariant`. */
|
|
91
|
+
readonly imageMaskStyle: import("@angular/core").Signal<Record<string, string>>;
|
|
92
|
+
constructor();
|
|
93
|
+
portalCtaVariant(): 'inverse' | 'primary';
|
|
94
|
+
/** Secondary is always outline - inverse outline on dark portal surfaces. */
|
|
95
|
+
secondaryCtaVariant(): 'outlineInverse' | 'outline';
|
|
96
|
+
slideShellClass(i: number): string;
|
|
97
|
+
clampedIndex(): number;
|
|
98
|
+
activeTitle(): string;
|
|
99
|
+
activeDescription(): string;
|
|
100
|
+
singleDesktopImage(): string;
|
|
101
|
+
singleMobileImage(): string;
|
|
102
|
+
slideTitle(slide: DgaHeroSlide): string;
|
|
103
|
+
slideDescription(slide: DgaHeroSlide): string;
|
|
104
|
+
slideDesktop(slide: DgaHeroSlide): string;
|
|
105
|
+
slideMobile(slide: DgaHeroSlide): string;
|
|
106
|
+
ctaPrimary(slide: DgaHeroSlide): string;
|
|
107
|
+
ctaSecondary(slide: DgaHeroSlide): string;
|
|
108
|
+
ctaPrimaryHref(slide: DgaHeroSlide): string;
|
|
109
|
+
ctaSecondaryHref(slide: DgaHeroSlide): string;
|
|
110
|
+
dotLabel(i: number): string;
|
|
111
|
+
dotClass(i: number): string;
|
|
112
|
+
/** Overlay class for the given tone (falls back to `imageOverlay`); `''` renders no overlay. */
|
|
113
|
+
overlayClass(tone?: DgaHeroOverlayTone): string;
|
|
114
|
+
/** Per-slide overlay - falls back to the hero-level `imageOverlay` input. */
|
|
115
|
+
slideOverlayClass(slide: DgaHeroSlide): string;
|
|
116
|
+
/** Push direction follows document direction (RTL slides the other way). */
|
|
117
|
+
pushOffset(i: number): string;
|
|
118
|
+
goSlide(i: number): void;
|
|
119
|
+
nextSlide(): void;
|
|
120
|
+
prevSlide(): void;
|
|
121
|
+
pauseAutoplay(): void;
|
|
122
|
+
resumeAutoplay(): void;
|
|
123
|
+
onPrimary(index?: number): void;
|
|
124
|
+
onSecondary(index?: number): void;
|
|
125
|
+
private clearAutoplay;
|
|
126
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DgaHero, never>;
|
|
127
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DgaHero, "dga-hero", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "primaryCta": { "alias": "primaryCta"; "required": false; "isSignal": true; }; "secondaryCta": { "alias": "secondaryCta"; "required": false; "isSignal": true; }; "primaryHref": { "alias": "primaryHref"; "required": false; "isSignal": true; }; "secondaryHref": { "alias": "secondaryHref"; "required": false; "isSignal": true; }; "imageDesktop": { "alias": "imageDesktop"; "required": false; "isSignal": true; }; "imageMobile": { "alias": "imageMobile"; "required": false; "isSignal": true; }; "imageUrl": { "alias": "imageUrl"; "required": false; "isSignal": true; }; "imageOverlay": { "alias": "imageOverlay"; "required": false; "isSignal": true; }; "imageMaskVariant": { "alias": "imageMaskVariant"; "required": false; "isSignal": true; }; "slides": { "alias": "slides"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "transition": { "alias": "transition"; "required": false; "isSignal": true; }; "autoplay": { "alias": "autoplay"; "required": false; "isSignal": true; }; "autoplayMs": { "alias": "autoplayMs"; "required": false; "isSignal": true; }; "showDots": { "alias": "showDots"; "required": false; "isSignal": true; }; "showArrows": { "alias": "showArrows"; "required": false; "isSignal": true; }; "dotsLabel": { "alias": "dotsLabel"; "required": false; "isSignal": true; }; "prevLabel": { "alias": "prevLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; }, { "activeIndex": "activeIndexChange"; "primaryClick": "primaryClick"; "secondaryClick": "secondaryClick"; "slideChange": "slideChange"; }, never, ["[dgaHeroBreadcrumb]", "[dgaHeroFloat]", "*", "*"], true, never>;
|
|
128
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
/**
|
|
3
|
+
* Partner / logo tile used in portal “قسم الشركاء” carousels.
|
|
4
|
+
*/
|
|
5
|
+
export declare class DgaLogoTile {
|
|
6
|
+
readonly label: import("@angular/core").InputSignal<string>;
|
|
7
|
+
readonly src: import("@angular/core").InputSignal<string>;
|
|
8
|
+
readonly classes: import("@angular/core").Signal<string>;
|
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DgaLogoTile, never>;
|
|
10
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DgaLogoTile, "dga-logo-tile", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export type DgaPreloaderPersist = 'local' | 'session' | 'none';
|
|
4
|
+
/**
|
|
5
|
+
* Optional full-screen first-load preloader.
|
|
6
|
+
*
|
|
7
|
+
* Brand mark + soft fade exit.
|
|
8
|
+
* Auto-hides once the document is ready and `minDuration` has elapsed.
|
|
9
|
+
* By default shows once per visitor (`once` + `persist="local"`); returning visits skip it.
|
|
10
|
+
* Drop it near the app root - omit the element entirely if unused.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```html
|
|
14
|
+
* <dga-preloader brand="بوابة الخدمات" [minDuration]="1000" />
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare class DgaPreloader implements OnInit {
|
|
18
|
+
private readonly doc;
|
|
19
|
+
private readonly destroyRef;
|
|
20
|
+
/** Brand / product name under the mark. */
|
|
21
|
+
readonly brand: import("@angular/core").InputSignal<string>;
|
|
22
|
+
/** Optional logo image (overrides the default geometric mark). */
|
|
23
|
+
readonly logoSrc: import("@angular/core").InputSignal<string | undefined>;
|
|
24
|
+
/** Accessible status label. */
|
|
25
|
+
readonly label: import("@angular/core").InputSignal<string>;
|
|
26
|
+
/** Minimum time on screen before exit (ms). */
|
|
27
|
+
readonly minDuration: import("@angular/core").InputSignal<number>;
|
|
28
|
+
/** Skip after the first visit (persist in storage). */
|
|
29
|
+
readonly once: import("@angular/core").InputSignalWithTransform<boolean, unknown>;
|
|
30
|
+
/** Storage used when `once` is true. */
|
|
31
|
+
readonly persist: import("@angular/core").InputSignal<DgaPreloaderPersist>;
|
|
32
|
+
/** Storage key for the seen flag. */
|
|
33
|
+
readonly storageKey: import("@angular/core").InputSignal<string>;
|
|
34
|
+
/** Fires after the exit animation finishes and the overlay is removed. */
|
|
35
|
+
readonly closed: import("@angular/core").OutputEmitterRef<void>;
|
|
36
|
+
readonly active: import("@angular/core").WritableSignal<boolean>;
|
|
37
|
+
readonly exiting: import("@angular/core").WritableSignal<boolean>;
|
|
38
|
+
private startedAt;
|
|
39
|
+
private ready;
|
|
40
|
+
private exitArmed;
|
|
41
|
+
private timers;
|
|
42
|
+
ngOnInit(): void;
|
|
43
|
+
/** Force an exit (e.g. from the host after data is ready). */
|
|
44
|
+
dismiss(): void;
|
|
45
|
+
onAnimEnd(event: AnimationEvent): void;
|
|
46
|
+
private watchReady;
|
|
47
|
+
private tryExit;
|
|
48
|
+
private finish;
|
|
49
|
+
private shouldSkip;
|
|
50
|
+
private markSeen;
|
|
51
|
+
private lockScroll;
|
|
52
|
+
private clearTimers;
|
|
53
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DgaPreloader, never>;
|
|
54
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DgaPreloader, "dga-preloader", never, { "brand": { "alias": "brand"; "required": false; "isSignal": true; }; "logoSrc": { "alias": "logoSrc"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "minDuration": { "alias": "minDuration"; "required": false; "isSignal": true; }; "once": { "alias": "once"; "required": false; "isSignal": true; }; "persist": { "alias": "persist"; "required": false; "isSignal": true; }; "storageKey": { "alias": "storageKey"; "required": false; "isSignal": true; }; }, { "closed": "closed"; }, never, never, true, never>;
|
|
55
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export interface DgaSideInfoItem {
|
|
3
|
+
label: string;
|
|
4
|
+
href?: string;
|
|
5
|
+
value?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class DgaSideInfo {
|
|
8
|
+
readonly title: import("@angular/core").InputSignal<string>;
|
|
9
|
+
readonly items: import("@angular/core").InputSignal<DgaSideInfoItem[]>;
|
|
10
|
+
readonly active: import("@angular/core").ModelSignal<string>;
|
|
11
|
+
readonly label: import("@angular/core").InputSignal<string>;
|
|
12
|
+
readonly select: import("@angular/core").OutputEmitterRef<DgaSideInfoItem>;
|
|
13
|
+
trackItem(item: DgaSideInfoItem, index: number): string;
|
|
14
|
+
isActive(item: DgaSideInfoItem): boolean;
|
|
15
|
+
itemClasses(item: DgaSideInfoItem): string;
|
|
16
|
+
onSelect(item: DgaSideInfoItem): void;
|
|
17
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DgaSideInfo, never>;
|
|
18
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DgaSideInfo, "dga-side-info", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; "select": "select"; }, never, ["*"], true, never>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export interface DgaStampNotice {
|
|
4
|
+
title: string;
|
|
5
|
+
/** Substring of `title` rendered bold in the primary color (e.g. `gov.sa`). */
|
|
6
|
+
highlight?: string;
|
|
7
|
+
body: string;
|
|
8
|
+
icon: 'link' | 'lock' | 'info';
|
|
9
|
+
}
|
|
10
|
+
export type DgaCalendar = 'hijri' | 'gregorian';
|
|
11
|
+
export type DgaTimeFormat = '12' | '24';
|
|
12
|
+
/**
|
|
13
|
+
* Exact shell size: 40px tall, sunken fill, 14px stamp copy.
|
|
14
|
+
* Expand panel uses grid-template-rows for a smooth open/close.
|
|
15
|
+
* Optional date + live clock sit in the end cluster (Hijri ↔ Gregorian).
|
|
16
|
+
*/
|
|
17
|
+
export declare class DgaTopBar implements OnInit {
|
|
18
|
+
private readonly destroyRef;
|
|
19
|
+
readonly saFlagSrc: string;
|
|
20
|
+
readonly panelId = "dga-digital-stamp";
|
|
21
|
+
readonly open: import("@angular/core").ModelSignal<boolean>;
|
|
22
|
+
/** Active calendar for the date widget. Click the date to switch. */
|
|
23
|
+
readonly calendar: import("@angular/core").ModelSignal<DgaCalendar>;
|
|
24
|
+
/** Clock display. Click the time to switch 12h ↔ 24h. */
|
|
25
|
+
readonly timeFormat: import("@angular/core").ModelSignal<DgaTimeFormat>;
|
|
26
|
+
readonly showDate: import("@angular/core").InputSignal<boolean>;
|
|
27
|
+
readonly showTime: import("@angular/core").InputSignal<boolean>;
|
|
28
|
+
/** `ar` → Arabic labels; `en` → English. */
|
|
29
|
+
readonly locale: import("@angular/core").InputSignal<"ar" | "en">;
|
|
30
|
+
readonly regionLabel: import("@angular/core").InputSignal<string>;
|
|
31
|
+
readonly stampLabel: import("@angular/core").InputSignal<string>;
|
|
32
|
+
readonly tabTextLg: import("@angular/core").InputSignal<string>;
|
|
33
|
+
readonly tabTextSm: import("@angular/core").InputSignal<string>;
|
|
34
|
+
readonly verifyText: import("@angular/core").InputSignal<string>;
|
|
35
|
+
readonly registrationLabel: import("@angular/core").InputSignal<string>;
|
|
36
|
+
/** DGA platform registration / license number shown in the expanded stamp. */
|
|
37
|
+
readonly registrationId: import("@angular/core").InputSignal<string>;
|
|
38
|
+
/**
|
|
39
|
+
* License page on raqmi.dga.gov.sa (opens in a new tab).
|
|
40
|
+
* @example https://raqmi.dga.gov.sa/platforms/platforms/…/platform-license
|
|
41
|
+
*/
|
|
42
|
+
readonly registrationHref: import("@angular/core").InputSignal<string>;
|
|
43
|
+
readonly notices: import("@angular/core").InputSignal<DgaStampNotice[]>;
|
|
44
|
+
private readonly now;
|
|
45
|
+
readonly dateLabel: import("@angular/core").Signal<string>;
|
|
46
|
+
readonly timeLabel: import("@angular/core").Signal<string>;
|
|
47
|
+
readonly calendarToggleLabel: import("@angular/core").Signal<"التبديل إلى التقويم الميلادي" | "Switch to Gregorian calendar" | "التبديل إلى التقويم الهجري" | "Switch to Hijri calendar">;
|
|
48
|
+
readonly timeToggleLabel: import("@angular/core").Signal<"التبديل إلى تنسيق 24 ساعة" | "Switch to 24-hour format" | "التبديل إلى تنسيق 12 ساعة" | "Switch to 12-hour format">;
|
|
49
|
+
readonly hostClasses: import("@angular/core").Signal<string>;
|
|
50
|
+
ngOnInit(): void;
|
|
51
|
+
private clockTimer;
|
|
52
|
+
private tick;
|
|
53
|
+
private scheduleMinuteTick;
|
|
54
|
+
titleParts(n: DgaStampNotice): {
|
|
55
|
+
text: string;
|
|
56
|
+
hl: boolean;
|
|
57
|
+
}[];
|
|
58
|
+
toggle(): void;
|
|
59
|
+
toggleCalendar(): void;
|
|
60
|
+
toggleTimeFormat(): void;
|
|
61
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DgaTopBar, never>;
|
|
62
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DgaTopBar, "dga-top-bar", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "calendar": { "alias": "calendar"; "required": false; "isSignal": true; }; "timeFormat": { "alias": "timeFormat"; "required": false; "isSignal": true; }; "showDate": { "alias": "showDate"; "required": false; "isSignal": true; }; "showTime": { "alias": "showTime"; "required": false; "isSignal": true; }; "locale": { "alias": "locale"; "required": false; "isSignal": true; }; "regionLabel": { "alias": "regionLabel"; "required": false; "isSignal": true; }; "stampLabel": { "alias": "stampLabel"; "required": false; "isSignal": true; }; "tabTextLg": { "alias": "tabTextLg"; "required": false; "isSignal": true; }; "tabTextSm": { "alias": "tabTextSm"; "required": false; "isSignal": true; }; "verifyText": { "alias": "verifyText"; "required": false; "isSignal": true; }; "registrationLabel": { "alias": "registrationLabel"; "required": false; "isSignal": true; }; "registrationId": { "alias": "registrationId"; "required": false; "isSignal": true; }; "registrationHref": { "alias": "registrationHref"; "required": false; "isSignal": true; }; "notices": { "alias": "notices"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "calendar": "calendarChange"; "timeFormat": "timeFormatChange"; }, never, ["*"], true, never>;
|
|
63
|
+
}
|