@a.nemreen/dga-ui 0.3.13 → 0.3.15
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/CHANGELOG.md +119 -0
- package/README.md +45 -11
- package/fesm2022/a.nemreen-dga-ui-chart.mjs +471 -0
- package/fesm2022/a.nemreen-dga-ui-chatbot.mjs +295 -0
- package/fesm2022/a.nemreen-dga-ui-cookies.mjs +1 -1
- package/fesm2022/a.nemreen-dga-ui-date-picker.mjs +3 -3
- package/fesm2022/a.nemreen-dga-ui-dga-icon-defaults-5A50haok.mjs +1 -0
- package/fesm2022/a.nemreen-dga-ui-header.mjs +26 -8
- package/fesm2022/a.nemreen-dga-ui-page-transition.mjs +1 -0
- package/fesm2022/a.nemreen-dga-ui-saudi-cities.mjs +1 -0
- package/fesm2022/a.nemreen-dga-ui.mjs +4105 -1328
- package/package.json +20 -2
- package/types/a.nemreen-dga-ui-chart.d.ts +169 -0
- package/types/a.nemreen-dga-ui-chatbot.d.ts +102 -0
- package/types/a.nemreen-dga-ui-cookies.d.ts +1 -2
- package/types/a.nemreen-dga-ui-date-picker.d.ts +4 -47
- package/types/a.nemreen-dga-ui-page-transition.d.ts +51 -0
- package/types/a.nemreen-dga-ui-saudi-cities.d.ts +19 -0
- package/types/a.nemreen-dga-ui.d.ts +1610 -350
|
@@ -1,56 +1,11 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { Type, Provider, Signal, OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import { InjectionToken, EnvironmentProviders, Type, Provider, Signal, OnDestroy, OnInit, TemplateRef } from '@angular/core';
|
|
3
3
|
import { SafeHtml, SafeResourceUrl } from '@angular/platform-browser';
|
|
4
4
|
import { ControlValueAccessor } from '@angular/forms';
|
|
5
5
|
export { ControlValueAccessor } from '@angular/forms';
|
|
6
6
|
import * as _a_nemreen_dga_ui from '@a.nemreen/dga-ui';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
declare const DGA_PAGE_TRANSITION_NAMES: readonly ["fade-up", "slide-stack", "curtain-wipe", "zoom-blur", "book-flip", "circle-reveal", "shared-axis", "glitch", "iris-open", "split-reveal", "stagger-cascade", "liquid-swipe", "push-depth", "skew-slide", "bounce-in", "film-strip", "portal-warp", "ripple-expand", "origami-fold", "swipe-cards", "none"];
|
|
10
|
-
type DgaPageTransitionName = (typeof DGA_PAGE_TRANSITION_NAMES)[number];
|
|
11
|
-
/**
|
|
12
|
-
* Easy page / content transition wrapper.
|
|
13
|
-
*
|
|
14
|
-
* ```html
|
|
15
|
-
* <dga-page-transition name="fade-up">
|
|
16
|
-
* <router-outlet />
|
|
17
|
-
* </dga-page-transition>
|
|
18
|
-
* ```
|
|
19
|
-
*
|
|
20
|
-
* Triggers: Angular `NavigationEnd`, or a change to `key` (playground / content swap).
|
|
21
|
-
* Progressive enhancement: sets `view-transition-name: dga-page` so apps using
|
|
22
|
-
* `withViewTransitions()` get named snapshot animations. Keyframe enter runs as fallback.
|
|
23
|
-
* Honors `prefers-reduced-motion` and DGA a11y `reduce-motion`.
|
|
24
|
-
*/
|
|
25
|
-
declare class DgaPageTransition {
|
|
26
|
-
private readonly host;
|
|
27
|
-
private readonly doc;
|
|
28
|
-
private readonly destroyRef;
|
|
29
|
-
private readonly router;
|
|
30
|
-
/** Named creative transition. Unknown values resolve to `none`. */
|
|
31
|
-
readonly name: _angular_core.InputSignal<string>;
|
|
32
|
-
/** Duration in milliseconds (also drives `--dga-pt-ms`). */
|
|
33
|
-
readonly duration: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
34
|
-
/** Skip all motion. */
|
|
35
|
-
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
36
|
-
/**
|
|
37
|
-
* Bump this to re-play the enter animation (content swaps / gallery playground).
|
|
38
|
-
* For View Transition snapshots, wrap the key update in `document.startViewTransition`.
|
|
39
|
-
*/
|
|
40
|
-
readonly key: _angular_core.InputSignal<string | number | null>;
|
|
41
|
-
readonly phase: _angular_core.WritableSignal<"idle" | "enter">;
|
|
42
|
-
readonly resolvedName: _angular_core.Signal<"none" | "fade-up" | "slide-stack" | "curtain-wipe" | "zoom-blur" | "book-flip" | "circle-reveal" | "shared-axis" | "glitch" | "iris-open" | "split-reveal" | "stagger-cascade" | "liquid-swipe" | "push-depth" | "skew-slide" | "bounce-in" | "film-strip" | "portal-warp" | "ripple-expand" | "origami-fold" | "swipe-cards">;
|
|
43
|
-
readonly durationCss: _angular_core.Signal<string>;
|
|
44
|
-
private htmlAttr;
|
|
45
|
-
private keyPrimed;
|
|
46
|
-
constructor();
|
|
47
|
-
/** Re-trigger the enter animation (e.g. from a Play control). */
|
|
48
|
-
play(): void;
|
|
49
|
-
protected onAnimationEnd(event: AnimationEvent): void;
|
|
50
|
-
private shouldReduceMotion;
|
|
51
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaPageTransition, never>;
|
|
52
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaPageTransition, "dga-page-transition", never, { "name": { "alias": "name"; "required": false; "isSignal": true; }; "duration": { "alias": "duration"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "key": { "alias": "key"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
53
|
-
}
|
|
7
|
+
import * as _a_nemreen_dga_tokens from '@a.nemreen/dga-tokens';
|
|
8
|
+
import { DgaLocale } from '@a.nemreen/dga-tokens';
|
|
54
9
|
|
|
55
10
|
type DgaWritingEffect = 'typewriter' | 'glow';
|
|
56
11
|
/**
|
|
@@ -94,14 +49,20 @@ declare class DgaWriting {
|
|
|
94
49
|
|
|
95
50
|
type DgaButtonVariant = 'primary' | 'secondary' | 'subtle' | 'outline' | 'outlineMuted' | 'outlineInverse' | 'ghost' | 'danger' | 'inverse';
|
|
96
51
|
type DgaButtonSize = 'sm' | 'md' | 'lg';
|
|
52
|
+
/** Hover / focus motion. Default `opacity` preserves legacy chrome. */
|
|
53
|
+
type DgaButtonEffect = 'opacity' | 'ripple' | 'lift' | 'scale' | 'glow' | 'press' | 'bounce' | 'slide' | 'shine' | 'pulse' | 'float' | 'wobble' | 'jelly';
|
|
97
54
|
declare class DgaButton {
|
|
98
55
|
private readonly destroyRef;
|
|
99
56
|
private readonly host;
|
|
100
57
|
private readonly renderer;
|
|
101
58
|
readonly variant: _angular_core.InputSignal<DgaButtonVariant>;
|
|
102
59
|
readonly size: _angular_core.InputSignal<DgaButtonSize>;
|
|
60
|
+
/** Hover / focus motion. Default matches legacy opacity chrome. */
|
|
61
|
+
readonly effect: _angular_core.InputSignal<DgaButtonEffect>;
|
|
103
62
|
/** Square control sized to the icon (no horizontal padding). */
|
|
104
63
|
readonly iconOnly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
64
|
+
/** Stretch to the width of the parent (adds `w-full`). */
|
|
65
|
+
readonly fullWidth: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
105
66
|
/** When > 0, disables the host for this many ms after each click and shows a spinner. */
|
|
106
67
|
readonly cooldownMs: _angular_core.InputSignal<number>;
|
|
107
68
|
/** Manual loading state — shows spinner and disables the control. */
|
|
@@ -118,12 +79,14 @@ declare class DgaButton {
|
|
|
118
79
|
readonly busy: _angular_core.Signal<boolean>;
|
|
119
80
|
readonly classes: _angular_core.Signal<string>;
|
|
120
81
|
constructor();
|
|
82
|
+
onPointerDown(event: Event): void;
|
|
121
83
|
onHostClick(): void;
|
|
84
|
+
private spawnRipple;
|
|
122
85
|
private attachSpinner;
|
|
123
86
|
private detachSpinner;
|
|
124
87
|
private clearCooldown;
|
|
125
88
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaButton, never>;
|
|
126
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DgaButton, "button[dgaButton], a[dgaButton]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "iconOnly": { "alias": "iconOnly"; "required": false; "isSignal": true; }; "cooldownMs": { "alias": "cooldownMs"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "buttonClass": { "alias": "dgaButtonClass"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
89
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DgaButton, "button[dgaButton], a[dgaButton]", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "effect": { "alias": "effect"; "required": false; "isSignal": true; }; "iconOnly": { "alias": "iconOnly"; "required": false; "isSignal": true; }; "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "cooldownMs": { "alias": "cooldownMs"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "buttonClass": { "alias": "dgaButtonClass"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
127
90
|
}
|
|
128
91
|
|
|
129
92
|
type DgaBadgeVariant = 'neutral' | 'primary' | 'success' | 'info' | 'warning' | 'error';
|
|
@@ -281,18 +244,12 @@ declare class DgaAvatar {
|
|
|
281
244
|
}
|
|
282
245
|
|
|
283
246
|
/**
|
|
284
|
-
*
|
|
285
|
-
*
|
|
286
|
-
*
|
|
287
|
-
* Content / editorial icons: opt into `@a.nemreen/dga-tokens/styles/icon-font.css` and use
|
|
288
|
-
* `<dga-icon glyph="search-01" />` (or `hgi-stroke hgi-{name}` classes).
|
|
289
|
-
*
|
|
290
|
-
* Regenerated by: node scripts/vendor-dga-icons.mjs
|
|
247
|
+
* Icon name union + RTL-flip set. Kept off the SVG catalog so chrome
|
|
248
|
+
* components can import names without the HugeIcons glyph map.
|
|
291
249
|
*/
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
declare const
|
|
295
|
-
declare const DGA_LOGICAL_ICON_NAMES: Set<DgaIconName>;
|
|
250
|
+
declare const DGA_ICON_NAMES: readonly ["access", "alertCircle", "ambulance", "apple", "arrowDown", "arrowDown02", "arrowLeft", "arrowLeft02", "arrowNext", "arrowNext02", "arrowPrev", "arrowPrev02", "arrowRight", "arrowRight02", "arrowUp", "arrowUp02", "award", "badgeCheck", "bell", "bellAlt", "book", "bookType", "brain", "building", "calendar", "calendarAlt", "cart", "check", "checkCircle", "checkCircleAlt", "chevronDown", "chevronLeft", "chevronRight", "clock", "close", "cloud", "colorPicker", "colors", "cookie", "copy", "desert", "devices", "disability", "door", "download", "droplet", "error", "external", "eye", "eyeOff", "eyeOffSlash", "facebook", "filter", "fire", "flash", "folder", "glasses", "globe", "heading", "headphones", "helpCircle", "highlighter", "home", "huawei", "idCard", "info", "instagram", "letterSpacing", "link", "linkAlt", "linkedin", "location", "lock", "lockPassword", "logout", "mail", "mask", "maximize", "menu", "menuAlt", "message", "mic", "minus", "moon", "moonAlt", "moonCloud", "moreHorizontal", "moreVertical", "paintBoard", "pause", "phone", "playStore", "plus", "plusSign", "police", "printer", "rain", "rainZap", "refresh", "riyal", "search", "share", "shrink", "smartphone", "snow", "sort", "sortDown", "sortUp", "star", "starFilled", "success", "sun", "sunAlt", "sunCloud", "textAlign", "textFont", "textUnderline", "touch", "tradeDown", "tradeUp", "translation", "upload", "user", "users", "warning", "whatsapp", "wheelchair", "wind", "x", "youtube", "zoomIn", "zoomOut"];
|
|
251
|
+
type DgaIconName = (typeof DGA_ICON_NAMES)[number];
|
|
252
|
+
declare const DGA_LOGICAL_ICON_NAMES: Set<"link" | "menu" | "search" | "success" | "info" | "warning" | "error" | "access" | "alertCircle" | "ambulance" | "apple" | "arrowDown" | "arrowDown02" | "arrowLeft" | "arrowLeft02" | "arrowNext" | "arrowNext02" | "arrowPrev" | "arrowPrev02" | "arrowRight" | "arrowRight02" | "arrowUp" | "arrowUp02" | "award" | "badgeCheck" | "bell" | "bellAlt" | "book" | "bookType" | "brain" | "building" | "calendar" | "calendarAlt" | "cart" | "check" | "checkCircle" | "checkCircleAlt" | "chevronDown" | "chevronLeft" | "chevronRight" | "clock" | "close" | "cloud" | "colorPicker" | "colors" | "cookie" | "copy" | "desert" | "devices" | "disability" | "door" | "download" | "droplet" | "external" | "eye" | "eyeOff" | "eyeOffSlash" | "facebook" | "filter" | "fire" | "flash" | "folder" | "glasses" | "globe" | "heading" | "headphones" | "helpCircle" | "highlighter" | "home" | "huawei" | "idCard" | "instagram" | "letterSpacing" | "linkAlt" | "linkedin" | "location" | "lock" | "lockPassword" | "logout" | "mail" | "mask" | "maximize" | "menuAlt" | "message" | "mic" | "minus" | "moon" | "moonAlt" | "moonCloud" | "moreHorizontal" | "moreVertical" | "paintBoard" | "pause" | "phone" | "playStore" | "plus" | "plusSign" | "police" | "printer" | "rain" | "rainZap" | "refresh" | "riyal" | "share" | "shrink" | "smartphone" | "snow" | "sort" | "sortDown" | "sortUp" | "star" | "starFilled" | "sun" | "sunAlt" | "sunCloud" | "textAlign" | "textFont" | "textUnderline" | "touch" | "tradeDown" | "tradeUp" | "translation" | "upload" | "user" | "users" | "whatsapp" | "wheelchair" | "wind" | "x" | "youtube" | "zoomIn" | "zoomOut">;
|
|
296
253
|
|
|
297
254
|
/**
|
|
298
255
|
* Platforms Code icon sizes (px):
|
|
@@ -303,17 +260,22 @@ declare const DGA_LOGICAL_ICON_NAMES: Set<DgaIconName>;
|
|
|
303
260
|
*/
|
|
304
261
|
type DgaIconSize = '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';
|
|
305
262
|
type DgaIconTone = 'current' | 'primary' | 'muted' | 'success' | 'warning' | 'error';
|
|
263
|
+
/** Accept curated names plus app-registered custom names (keeps autocomplete for DgaIconName). */
|
|
264
|
+
type DgaIconNameInput = DgaIconName | (string & {});
|
|
306
265
|
declare class DgaIcon {
|
|
307
266
|
private readonly sanitizer;
|
|
308
267
|
private readonly iconFont;
|
|
268
|
+
private readonly registry;
|
|
309
269
|
/**
|
|
310
|
-
* Curated
|
|
311
|
-
* Required unless `glyph` is set.
|
|
270
|
+
* Curated HugeIcons (Stroke Rounded) / DGA SVG name for chrome / controls.
|
|
271
|
+
* Required unless `glyph` is set. App teams may pass names registered via
|
|
272
|
+
* {@link provideDgaIcons} / {@link DgaIconRegistry.register}.
|
|
312
273
|
*/
|
|
313
|
-
readonly name: _angular_core.InputSignal<
|
|
274
|
+
readonly name: _angular_core.InputSignal<DgaIconNameInput | undefined>;
|
|
314
275
|
/**
|
|
315
276
|
* HugeIcons Stroke Rounded glyph id for content icons (e.g. `search-01`).
|
|
316
277
|
* Requires `@import '@a.nemreen/dga-tokens/styles/icon-font.css'`.
|
|
278
|
+
* Prefer curated `name` for chrome controls so first paint does not wait on the font.
|
|
317
279
|
*/
|
|
318
280
|
readonly glyph: _angular_core.InputSignal<string>;
|
|
319
281
|
/** Default `sm` (16px) - common dense UI size; use `xl` (24px) for standard chrome. */
|
|
@@ -345,6 +307,57 @@ declare class DgaIconFontService {
|
|
|
345
307
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<DgaIconFontService>;
|
|
346
308
|
}
|
|
347
309
|
|
|
310
|
+
/**
|
|
311
|
+
* Multi-provider bag of SVG markup keyed by icon name.
|
|
312
|
+
* Prefer {@link provideDgaIcons} at app bootstrap.
|
|
313
|
+
*/
|
|
314
|
+
declare const DGA_ICON_OVERRIDES: InjectionToken<Readonly<Record<string, string>>[]>;
|
|
315
|
+
/**
|
|
316
|
+
* Register additional or overriding SVG icons for `<dga-icon name="…">`.
|
|
317
|
+
*
|
|
318
|
+
* @example
|
|
319
|
+
* ```ts
|
|
320
|
+
* bootstrapApplication(App, {
|
|
321
|
+
* providers: [
|
|
322
|
+
* provideDgaIcons({
|
|
323
|
+
* myBrand: `<svg …>…</svg>`,
|
|
324
|
+
* }),
|
|
325
|
+
* ],
|
|
326
|
+
* });
|
|
327
|
+
* ```
|
|
328
|
+
*/
|
|
329
|
+
declare function provideDgaIcons(icons: Readonly<Record<string, string>>): EnvironmentProviders;
|
|
330
|
+
|
|
331
|
+
/**
|
|
332
|
+
* Resolves SVG markup for DgaIcon: runtime register → provideDgaIcons → HugeIcons/DGA catalog → core.
|
|
333
|
+
* Non-core catalog icons load once via a shared dynamic import (HugeIcons curated subset).
|
|
334
|
+
*/
|
|
335
|
+
declare class DgaIconRegistry {
|
|
336
|
+
private readonly providerOverrides;
|
|
337
|
+
private readonly runtime;
|
|
338
|
+
private readonly defaults;
|
|
339
|
+
private readonly loading;
|
|
340
|
+
private readonly provided;
|
|
341
|
+
/** Synchronous lookup — empty until defaults finish loading for non-core names. */
|
|
342
|
+
get(name: string): string;
|
|
343
|
+
/** True when the name is in the first-paint core map. */
|
|
344
|
+
isCore(name: string): boolean;
|
|
345
|
+
/**
|
|
346
|
+
* Ensure the HugeIcons + DGA default catalog is loaded when `name` is not core / provided.
|
|
347
|
+
* Safe to call repeatedly; shares one import promise.
|
|
348
|
+
*/
|
|
349
|
+
ensureLoaded(name: string): void;
|
|
350
|
+
/**
|
|
351
|
+
* Register or override an icon at runtime (e.g. after a lazy feature loads).
|
|
352
|
+
* Prefer {@link provideDgaIcons} for bootstrap-time icons.
|
|
353
|
+
*/
|
|
354
|
+
register(name: string, svg: string): void;
|
|
355
|
+
/** Register many icons at once. */
|
|
356
|
+
registerAll(icons: Readonly<Record<string, string>>): void;
|
|
357
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaIconRegistry, never>;
|
|
358
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<DgaIconRegistry>;
|
|
359
|
+
}
|
|
360
|
+
|
|
348
361
|
type DgaIconBadgeSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
349
362
|
type DgaIconBadgeAppearance = 'filled' | 'outline';
|
|
350
363
|
/**
|
|
@@ -409,9 +422,9 @@ declare class DgaFormControl {
|
|
|
409
422
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
410
423
|
readonly filled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
411
424
|
/** Built-in leading icon (logical start). */
|
|
412
|
-
readonly startIcon: _angular_core.InputSignal<
|
|
425
|
+
readonly startIcon: _angular_core.InputSignal<"link" | "menu" | "search" | "success" | "info" | "warning" | "error" | "access" | "alertCircle" | "ambulance" | "apple" | "arrowDown" | "arrowDown02" | "arrowLeft" | "arrowLeft02" | "arrowNext" | "arrowNext02" | "arrowPrev" | "arrowPrev02" | "arrowRight" | "arrowRight02" | "arrowUp" | "arrowUp02" | "award" | "badgeCheck" | "bell" | "bellAlt" | "book" | "bookType" | "brain" | "building" | "calendar" | "calendarAlt" | "cart" | "check" | "checkCircle" | "checkCircleAlt" | "chevronDown" | "chevronLeft" | "chevronRight" | "clock" | "close" | "cloud" | "colorPicker" | "colors" | "cookie" | "copy" | "desert" | "devices" | "disability" | "door" | "download" | "droplet" | "external" | "eye" | "eyeOff" | "eyeOffSlash" | "facebook" | "filter" | "fire" | "flash" | "folder" | "glasses" | "globe" | "heading" | "headphones" | "helpCircle" | "highlighter" | "home" | "huawei" | "idCard" | "instagram" | "letterSpacing" | "linkAlt" | "linkedin" | "location" | "lock" | "lockPassword" | "logout" | "mail" | "mask" | "maximize" | "menuAlt" | "message" | "mic" | "minus" | "moon" | "moonAlt" | "moonCloud" | "moreHorizontal" | "moreVertical" | "paintBoard" | "pause" | "phone" | "playStore" | "plus" | "plusSign" | "police" | "printer" | "rain" | "rainZap" | "refresh" | "riyal" | "share" | "shrink" | "smartphone" | "snow" | "sort" | "sortDown" | "sortUp" | "star" | "starFilled" | "sun" | "sunAlt" | "sunCloud" | "textAlign" | "textFont" | "textUnderline" | "touch" | "tradeDown" | "tradeUp" | "translation" | "upload" | "user" | "users" | "whatsapp" | "wheelchair" | "wind" | "x" | "youtube" | "zoomIn" | "zoomOut" | null>;
|
|
413
426
|
/** Built-in trailing icon (logical end). */
|
|
414
|
-
readonly endIcon: _angular_core.InputSignal<
|
|
427
|
+
readonly endIcon: _angular_core.InputSignal<"link" | "menu" | "search" | "success" | "info" | "warning" | "error" | "access" | "alertCircle" | "ambulance" | "apple" | "arrowDown" | "arrowDown02" | "arrowLeft" | "arrowLeft02" | "arrowNext" | "arrowNext02" | "arrowPrev" | "arrowPrev02" | "arrowRight" | "arrowRight02" | "arrowUp" | "arrowUp02" | "award" | "badgeCheck" | "bell" | "bellAlt" | "book" | "bookType" | "brain" | "building" | "calendar" | "calendarAlt" | "cart" | "check" | "checkCircle" | "checkCircleAlt" | "chevronDown" | "chevronLeft" | "chevronRight" | "clock" | "close" | "cloud" | "colorPicker" | "colors" | "cookie" | "copy" | "desert" | "devices" | "disability" | "door" | "download" | "droplet" | "external" | "eye" | "eyeOff" | "eyeOffSlash" | "facebook" | "filter" | "fire" | "flash" | "folder" | "glasses" | "globe" | "heading" | "headphones" | "helpCircle" | "highlighter" | "home" | "huawei" | "idCard" | "instagram" | "letterSpacing" | "linkAlt" | "linkedin" | "location" | "lock" | "lockPassword" | "logout" | "mail" | "mask" | "maximize" | "menuAlt" | "message" | "mic" | "minus" | "moon" | "moonAlt" | "moonCloud" | "moreHorizontal" | "moreVertical" | "paintBoard" | "pause" | "phone" | "playStore" | "plus" | "plusSign" | "police" | "printer" | "rain" | "rainZap" | "refresh" | "riyal" | "share" | "shrink" | "smartphone" | "snow" | "sort" | "sortDown" | "sortUp" | "star" | "starFilled" | "sun" | "sunAlt" | "sunCloud" | "textAlign" | "textFont" | "textUnderline" | "touch" | "tradeDown" | "tradeUp" | "translation" | "upload" | "user" | "users" | "whatsapp" | "wheelchair" | "wind" | "x" | "youtube" | "zoomIn" | "zoomOut" | null>;
|
|
415
428
|
private readonly focused;
|
|
416
429
|
private readonly typing;
|
|
417
430
|
readonly classes: _angular_core.Signal<string>;
|
|
@@ -473,6 +486,18 @@ declare class DgaRadio {
|
|
|
473
486
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DgaRadio, "input[type=\"radio\"][dgaRadio]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalid": { "alias": "dgaInvalid"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
474
487
|
}
|
|
475
488
|
|
|
489
|
+
type DgaChoiceLayout = 'column' | 'row';
|
|
490
|
+
/**
|
|
491
|
+
* Lays out checkbox or radio options in a column, a wrapping row, or a
|
|
492
|
+
* fixed column count. Narrow screens always fall back to one column.
|
|
493
|
+
*/
|
|
494
|
+
declare class DgaChoiceGroup {
|
|
495
|
+
readonly layout: _angular_core.InputSignal<DgaChoiceLayout>;
|
|
496
|
+
readonly columns: _angular_core.InputSignalWithTransform<number | null, unknown>;
|
|
497
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaChoiceGroup, never>;
|
|
498
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DgaChoiceGroup, "[dgaChoiceGroup]", never, { "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
499
|
+
}
|
|
500
|
+
|
|
476
501
|
type DgaNativeSelectSize = DgaFormControlSize;
|
|
477
502
|
/** Styles a native `<select dgaSelect>` — for simple forms without search/multi. */
|
|
478
503
|
declare class DgaNativeSelect {
|
|
@@ -513,6 +538,12 @@ declare class DgaSelect implements ControlValueAccessor {
|
|
|
513
538
|
readonly removeLabel: _angular_core.InputSignal<string>;
|
|
514
539
|
readonly clearLabel: _angular_core.InputSignal<string>;
|
|
515
540
|
readonly emptyLabel: _angular_core.InputSignal<string>;
|
|
541
|
+
/** Show a spinner row in the list (async / remote options). */
|
|
542
|
+
readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
543
|
+
/** When searchable query matches no option, offer a “Create …” row. */
|
|
544
|
+
readonly creatable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
545
|
+
/** Prefix/label for the create row; `{q}` is replaced with the query. */
|
|
546
|
+
readonly createLabel: _angular_core.InputSignal<string>;
|
|
516
547
|
readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
517
548
|
private readonly cvaDisabled;
|
|
518
549
|
readonly disabled: _angular_core.Signal<boolean>;
|
|
@@ -520,11 +551,16 @@ declare class DgaSelect implements ControlValueAccessor {
|
|
|
520
551
|
readonly valueChange: _angular_core.OutputEmitterRef<string | string[]>;
|
|
521
552
|
/** Emitted when the searchable query changes (remote lookup fields). */
|
|
522
553
|
readonly searchChange: _angular_core.OutputEmitterRef<string>;
|
|
554
|
+
/** Emitted when the user picks the creatable “Create …” option. */
|
|
555
|
+
readonly create: _angular_core.OutputEmitterRef<string>;
|
|
523
556
|
private onChange;
|
|
524
557
|
private onTouched;
|
|
525
558
|
readonly open: _angular_core.WritableSignal<boolean>;
|
|
526
559
|
readonly query: _angular_core.WritableSignal<string>;
|
|
527
560
|
readonly activeIndex: _angular_core.WritableSignal<number>;
|
|
561
|
+
private readonly uiLocale;
|
|
562
|
+
private readonly ar;
|
|
563
|
+
readonly loadingLabel: _angular_core.Signal<"جاري التحميل…" | "Loading…">;
|
|
528
564
|
constructor();
|
|
529
565
|
readonly resolvedStatus: _angular_core.Signal<DgaFormStatus>;
|
|
530
566
|
readonly listVisible: _angular_core.Signal<boolean>;
|
|
@@ -539,6 +575,7 @@ declare class DgaSelect implements ControlValueAccessor {
|
|
|
539
575
|
hasValue(): boolean;
|
|
540
576
|
optionId(index: number): string;
|
|
541
577
|
isSelected(v: string): boolean;
|
|
578
|
+
isCreateOption(opt: DgaSelectOption): boolean;
|
|
542
579
|
selectedValues(): string[];
|
|
543
580
|
toggleOpen(): void;
|
|
544
581
|
onFocus(): void;
|
|
@@ -558,8 +595,100 @@ declare class DgaSelect implements ControlValueAccessor {
|
|
|
558
595
|
private moveActive;
|
|
559
596
|
private firstEnabledIndex;
|
|
560
597
|
private lastEnabledIndex;
|
|
598
|
+
private withCreateOption;
|
|
599
|
+
private formatCreateLabel;
|
|
561
600
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaSelect, never>;
|
|
562
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaSelect, "dga-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "openMode": { "alias": "openMode"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "dgaInvalid"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "searchChange": "searchChange"; }, never, never, true, never>;
|
|
601
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaSelect, "dga-select", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "openMode": { "alias": "openMode"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "creatable": { "alias": "creatable"; "required": false; "isSignal": true; }; "createLabel": { "alias": "createLabel"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "dgaInvalid"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "searchChange": "searchChange"; "create": "create"; }, never, never, true, never>;
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
interface DgaTreeItem {
|
|
605
|
+
id: string;
|
|
606
|
+
label: string;
|
|
607
|
+
children?: DgaTreeItem[];
|
|
608
|
+
disabled?: boolean;
|
|
609
|
+
}
|
|
610
|
+
/** Flatten tree in document order (parents before children). */
|
|
611
|
+
declare function dgaFlattenTree(items: DgaTreeItem[]): DgaTreeItem[];
|
|
612
|
+
/** Visible nodes given expanded ids (document order). */
|
|
613
|
+
declare function dgaVisibleTreeNodes(items: DgaTreeItem[], expandedIds: ReadonlySet<string> | readonly string[]): DgaTreeItem[];
|
|
614
|
+
/** Ancestors of `id` (nearest parent last), or empty if not found. */
|
|
615
|
+
declare function dgaTreeAncestors(items: DgaTreeItem[], id: string): DgaTreeItem[];
|
|
616
|
+
declare function dgaFindTreeItem(items: DgaTreeItem[], id: string): DgaTreeItem | null;
|
|
617
|
+
/** Filter tree: keep nodes matching query (and their ancestors). */
|
|
618
|
+
declare function dgaFilterTree(items: DgaTreeItem[], query: string): DgaTreeItem[];
|
|
619
|
+
|
|
620
|
+
type DgaTreeSelectSize = DgaFormControlSize;
|
|
621
|
+
/**
|
|
622
|
+
* Field trigger + popup tree. Single or multi; optional search filter; CVA.
|
|
623
|
+
*
|
|
624
|
+
* @example
|
|
625
|
+
* ```html
|
|
626
|
+
* <dga-tree-select
|
|
627
|
+
* [items]="org"
|
|
628
|
+
* [(value)]="selected"
|
|
629
|
+
* [searchable]="true"
|
|
630
|
+
* />
|
|
631
|
+
* ```
|
|
632
|
+
*/
|
|
633
|
+
declare class DgaTreeSelect implements ControlValueAccessor {
|
|
634
|
+
private static nextId;
|
|
635
|
+
private readonly host;
|
|
636
|
+
readonly panelId: string;
|
|
637
|
+
readonly items: _angular_core.InputSignal<DgaTreeItem[]>;
|
|
638
|
+
/** Single: `string`. Multiple: `string[]`. */
|
|
639
|
+
readonly valueInput: _angular_core.InputSignal<string | string[]>;
|
|
640
|
+
readonly value: _angular_core.WritableSignal<string | string[]>;
|
|
641
|
+
readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
642
|
+
readonly searchable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
643
|
+
readonly clearable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
644
|
+
readonly size: _angular_core.InputSignal<DgaFormControlSize>;
|
|
645
|
+
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
646
|
+
readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
647
|
+
private readonly cvaDisabled;
|
|
648
|
+
readonly disabled: _angular_core.Signal<boolean>;
|
|
649
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
650
|
+
readonly placeholderInput: _angular_core.InputSignal<string>;
|
|
651
|
+
readonly emptyLabelInput: _angular_core.InputSignal<string>;
|
|
652
|
+
/** When true, only leaf nodes can be selected. */
|
|
653
|
+
readonly onlyLeaves: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
654
|
+
readonly open: _angular_core.ModelSignal<boolean>;
|
|
655
|
+
readonly expandedIds: _angular_core.ModelSignal<string[]>;
|
|
656
|
+
readonly query: _angular_core.WritableSignal<string>;
|
|
657
|
+
readonly valueChange: _angular_core.OutputEmitterRef<string | string[]>;
|
|
658
|
+
readonly selectedIdList: _angular_core.Signal<string[]>;
|
|
659
|
+
readonly filteredItems: _angular_core.Signal<DgaTreeItem[]>;
|
|
660
|
+
readonly selectedItems: _angular_core.Signal<DgaTreeItem[]>;
|
|
661
|
+
readonly resolvedStatus: _angular_core.Signal<_a_nemreen_dga_ui.DgaFormStatus>;
|
|
662
|
+
private onChange;
|
|
663
|
+
private onTouched;
|
|
664
|
+
constructor();
|
|
665
|
+
resolvedPlaceholder(): string;
|
|
666
|
+
searchPlaceholder(): string;
|
|
667
|
+
treeLabel(): string;
|
|
668
|
+
emptyLabel(): string;
|
|
669
|
+
removeLabel(): string;
|
|
670
|
+
clearLabel(): string;
|
|
671
|
+
hasValue(): boolean;
|
|
672
|
+
triggerWrapClasses(): string;
|
|
673
|
+
searchInputClasses(): string;
|
|
674
|
+
buttonClasses(): string;
|
|
675
|
+
onType(raw: string): void;
|
|
676
|
+
openPanel(): void;
|
|
677
|
+
toggleOpen(): void;
|
|
678
|
+
closePanel(): void;
|
|
679
|
+
onBlur(): void;
|
|
680
|
+
onDocClick(event: MouseEvent): void;
|
|
681
|
+
onTriggerKey(event: KeyboardEvent): void;
|
|
682
|
+
onTreeSelect(ids: string[]): void;
|
|
683
|
+
remove(id: string): void;
|
|
684
|
+
clear(): void;
|
|
685
|
+
private commit;
|
|
686
|
+
writeValue(value: string | string[]): void;
|
|
687
|
+
registerOnChange(fn: (value: string | string[]) => void): void;
|
|
688
|
+
registerOnTouched(fn: () => void): void;
|
|
689
|
+
setDisabledState(isDisabled: boolean): void;
|
|
690
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaTreeSelect, never>;
|
|
691
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaTreeSelect, "dga-tree-select", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholderInput": { "alias": "placeholder"; "required": false; "isSignal": true; }; "emptyLabelInput": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "onlyLeaves": { "alias": "onlyLeaves"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "expandedIds": { "alias": "expandedIds"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "expandedIds": "expandedIdsChange"; "valueChange": "valueChange"; }, never, never, true, never>;
|
|
563
692
|
}
|
|
564
693
|
|
|
565
694
|
/**
|
|
@@ -640,9 +769,16 @@ declare class DgaNumberInput implements ControlValueAccessor {
|
|
|
640
769
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaNumberInput, "dga-number-input", never, { "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "stepSize": { "alias": "step"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "controlId": { "alias": "controlId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "incrementLabel": { "alias": "incrementLabel"; "required": false; "isSignal": true; }; "decrementLabel": { "alias": "decrementLabel"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "dgaInvalid"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
641
770
|
}
|
|
642
771
|
|
|
772
|
+
type DgaSliderSize = 'sm' | 'md' | 'lg';
|
|
773
|
+
/**
|
|
774
|
+
* Styles a native range input: primary fill, neutral track, circular thumb.
|
|
775
|
+
* The fill length is a CSS variable updated from the current value.
|
|
776
|
+
*/
|
|
643
777
|
declare class DgaSlider {
|
|
644
|
-
readonly
|
|
645
|
-
readonly
|
|
778
|
+
private readonly el;
|
|
779
|
+
readonly size: _angular_core.InputSignal<DgaSliderSize>;
|
|
780
|
+
constructor();
|
|
781
|
+
paint(): void;
|
|
646
782
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaSlider, never>;
|
|
647
783
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DgaSlider, "input[type=\"range\"][dgaSlider]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
648
784
|
}
|
|
@@ -714,6 +850,177 @@ declare class DgaChipInput implements ControlValueAccessor {
|
|
|
714
850
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaChipInput, "dga-chip-input", never, { "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "removeLabel": { "alias": "removeLabel"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "allowDuplicates": { "alias": "allowDuplicates"; "required": false; "isSignal": true; }; "invalid": { "alias": "dgaInvalid"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
715
851
|
}
|
|
716
852
|
|
|
853
|
+
/**
|
|
854
|
+
* Saudi IBAN helpers (ISO 13616).
|
|
855
|
+
* SA IBANs are 24 characters: `SA` + 2 check digits + 20 BBAN chars.
|
|
856
|
+
*/
|
|
857
|
+
declare const DGA_IBAN_COUNTRY = "SA";
|
|
858
|
+
declare const DGA_IBAN_LENGTH = 24;
|
|
859
|
+
/** Strip spaces and force uppercase A–Z / 0–9. */
|
|
860
|
+
declare function dgaNormalizeIban(raw: string): string;
|
|
861
|
+
/** Format as groups of 4: `SA03 8000 0000 6080 1016 7519`. */
|
|
862
|
+
declare function dgaFormatIban(raw: string): string;
|
|
863
|
+
/**
|
|
864
|
+
* ISO 13616 mod-97 check.
|
|
865
|
+
* Move first 4 chars to the end, map A=10…Z=35, interpret as integer mod 97 === 1.
|
|
866
|
+
*/
|
|
867
|
+
declare function dgaIsValidIban(raw: string): boolean;
|
|
868
|
+
|
|
869
|
+
/**
|
|
870
|
+
* Saudi IBAN field with grouping mask and ISO 13616 checksum.
|
|
871
|
+
* Always LTR so alphanumerics read left-to-right on RTL pages.
|
|
872
|
+
*
|
|
873
|
+
* @example
|
|
874
|
+
* ```html
|
|
875
|
+
* <dga-field label="IBAN">
|
|
876
|
+
* <dga-iban-input [(value)]="iban" />
|
|
877
|
+
* </dga-field>
|
|
878
|
+
* ```
|
|
879
|
+
*/
|
|
880
|
+
declare class DgaIbanInput implements ControlValueAccessor {
|
|
881
|
+
/** Compact IBAN without spaces (`SA03…`). */
|
|
882
|
+
readonly value: _angular_core.ModelSignal<string>;
|
|
883
|
+
readonly controlId: _angular_core.InputSignal<string>;
|
|
884
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
885
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
886
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
887
|
+
/** Fixed country prefix shown before the editable remainder (default `SA`). */
|
|
888
|
+
readonly countryCode: _angular_core.InputSignal<string>;
|
|
889
|
+
readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
890
|
+
private readonly cvaDisabled;
|
|
891
|
+
readonly disabled: _angular_core.Signal<boolean>;
|
|
892
|
+
readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
893
|
+
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
894
|
+
readonly prefix: _angular_core.Signal<string>;
|
|
895
|
+
/** True when length is complete and mod-97 passes. */
|
|
896
|
+
readonly checksumValid: _angular_core.Signal<boolean>;
|
|
897
|
+
readonly displayValue: _angular_core.Signal<string>;
|
|
898
|
+
readonly resolvedStatus: _angular_core.Signal<_a_nemreen_dga_ui.DgaFormStatus>;
|
|
899
|
+
readonly groupClasses: _angular_core.Signal<string>;
|
|
900
|
+
private onChange;
|
|
901
|
+
onTouched: () => void;
|
|
902
|
+
onInput(raw: string): void;
|
|
903
|
+
writeValue(value: string): void;
|
|
904
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
905
|
+
registerOnTouched(fn: () => void): void;
|
|
906
|
+
setDisabledState(isDisabled: boolean): void;
|
|
907
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaIbanInput, never>;
|
|
908
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaIbanInput, "dga-iban-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "controlId": { "alias": "controlId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "countryCode": { "alias": "countryCode"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
/**
|
|
912
|
+
* Saudi National ID / Iqama helpers.
|
|
913
|
+
* 10 digits; starts with `1` (citizen) or `2` (resident); Luhn-style checksum.
|
|
914
|
+
*/
|
|
915
|
+
type DgaNationalIdKind = 'citizen' | 'resident' | 'unknown';
|
|
916
|
+
declare function dgaNormalizeNationalId(raw: string): string;
|
|
917
|
+
declare function dgaNationalIdKind(id: string): DgaNationalIdKind;
|
|
918
|
+
/**
|
|
919
|
+
* Saudi ID checksum (even indices from the left are doubled; digits of product summed).
|
|
920
|
+
* Valid when the total sum is divisible by 10.
|
|
921
|
+
*/
|
|
922
|
+
declare function dgaIsValidNationalId(raw: string): boolean;
|
|
923
|
+
/** Soft grouping for display: `1 234 567 890`. */
|
|
924
|
+
declare function dgaFormatNationalId(raw: string): string;
|
|
925
|
+
|
|
926
|
+
/**
|
|
927
|
+
* Saudi National ID / Iqama field (10 digits, checksum).
|
|
928
|
+
* Always LTR so digits read left-to-right on RTL pages.
|
|
929
|
+
*
|
|
930
|
+
* @example
|
|
931
|
+
* ```html
|
|
932
|
+
* <dga-field label="هوية وطنية">
|
|
933
|
+
* <dga-national-id [(value)]="id" />
|
|
934
|
+
* </dga-field>
|
|
935
|
+
* ```
|
|
936
|
+
*/
|
|
937
|
+
declare class DgaNationalId implements ControlValueAccessor {
|
|
938
|
+
/** Compact 10-digit value. */
|
|
939
|
+
readonly value: _angular_core.ModelSignal<string>;
|
|
940
|
+
readonly controlId: _angular_core.InputSignal<string>;
|
|
941
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
942
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
943
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
944
|
+
readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
945
|
+
private readonly cvaDisabled;
|
|
946
|
+
readonly disabled: _angular_core.Signal<boolean>;
|
|
947
|
+
readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
948
|
+
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
949
|
+
readonly kind: _angular_core.Signal<DgaNationalIdKind>;
|
|
950
|
+
readonly checksumValid: _angular_core.Signal<boolean>;
|
|
951
|
+
readonly displayValue: _angular_core.Signal<string>;
|
|
952
|
+
readonly resolvedStatus: _angular_core.Signal<_a_nemreen_dga_ui.DgaFormStatus>;
|
|
953
|
+
readonly groupClasses: _angular_core.Signal<string>;
|
|
954
|
+
private onChange;
|
|
955
|
+
onTouched: () => void;
|
|
956
|
+
onInput(raw: string): void;
|
|
957
|
+
writeValue(value: string): void;
|
|
958
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
959
|
+
registerOnTouched(fn: () => void): void;
|
|
960
|
+
setDisabledState(isDisabled: boolean): void;
|
|
961
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaNationalId, never>;
|
|
962
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaNationalId, "dga-national-id", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "controlId": { "alias": "controlId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
963
|
+
}
|
|
964
|
+
|
|
965
|
+
type DgaPasswordStrength = 'empty' | 'weak' | 'fair' | 'good' | 'strong';
|
|
966
|
+
interface DgaPasswordStrengthResult {
|
|
967
|
+
level: DgaPasswordStrength;
|
|
968
|
+
/** 0–4 score used for the meter fill. */
|
|
969
|
+
score: number;
|
|
970
|
+
checks: {
|
|
971
|
+
length: boolean;
|
|
972
|
+
lower: boolean;
|
|
973
|
+
upper: boolean;
|
|
974
|
+
digit: boolean;
|
|
975
|
+
special: boolean;
|
|
976
|
+
};
|
|
977
|
+
}
|
|
978
|
+
/** Heuristic password strength (not a substitute for server-side policy). */
|
|
979
|
+
declare function dgaPasswordStrength(raw: string): DgaPasswordStrengthResult;
|
|
980
|
+
|
|
981
|
+
/**
|
|
982
|
+
* Password field with show/hide toggle and optional strength meter.
|
|
983
|
+
*
|
|
984
|
+
* @example
|
|
985
|
+
* ```html
|
|
986
|
+
* <dga-field label="كلمة المرور">
|
|
987
|
+
* <dga-password [(value)]="password" meter />
|
|
988
|
+
* </dga-field>
|
|
989
|
+
* ```
|
|
990
|
+
*/
|
|
991
|
+
declare class DgaPassword implements ControlValueAccessor {
|
|
992
|
+
readonly meterSegments: number[];
|
|
993
|
+
readonly value: _angular_core.ModelSignal<string>;
|
|
994
|
+
readonly controlId: _angular_core.InputSignal<string>;
|
|
995
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
996
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
997
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
998
|
+
/** Show strength meter under the field. */
|
|
999
|
+
readonly meter: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1000
|
+
readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1001
|
+
private readonly cvaDisabled;
|
|
1002
|
+
readonly disabled: _angular_core.Signal<boolean>;
|
|
1003
|
+
readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1004
|
+
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1005
|
+
readonly revealed: _angular_core.WritableSignal<boolean>;
|
|
1006
|
+
readonly strength: _angular_core.Signal<DgaPasswordStrengthResult>;
|
|
1007
|
+
readonly meterId: _angular_core.Signal<string>;
|
|
1008
|
+
readonly resolvedStatus: _angular_core.Signal<_a_nemreen_dga_ui.DgaFormStatus>;
|
|
1009
|
+
readonly groupClasses: _angular_core.Signal<string>;
|
|
1010
|
+
private onChange;
|
|
1011
|
+
onTouched: () => void;
|
|
1012
|
+
toggleLabel(): string;
|
|
1013
|
+
strengthLabel(): string;
|
|
1014
|
+
toggleReveal(): void;
|
|
1015
|
+
onInput(raw: string): void;
|
|
1016
|
+
writeValue(value: string): void;
|
|
1017
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
1018
|
+
registerOnTouched(fn: () => void): void;
|
|
1019
|
+
setDisabledState(isDisabled: boolean): void;
|
|
1020
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaPassword, never>;
|
|
1021
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaPassword, "dga-password", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "controlId": { "alias": "controlId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "meter": { "alias": "meter"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
1022
|
+
}
|
|
1023
|
+
|
|
717
1024
|
interface DgaUploadFile {
|
|
718
1025
|
id: string;
|
|
719
1026
|
name: string;
|
|
@@ -849,10 +1156,20 @@ declare class DgaAutocomplete {
|
|
|
849
1156
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
850
1157
|
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
851
1158
|
readonly status: _angular_core.InputSignal<DgaFormStatus>;
|
|
1159
|
+
/** Async options in flight — spinner in the list. */
|
|
1160
|
+
readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1161
|
+
/** Offer a “Create …” row when the query matches no option. */
|
|
1162
|
+
readonly creatable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1163
|
+
/** Create-row label; `{q}` is replaced with the query. */
|
|
1164
|
+
readonly createLabel: _angular_core.InputSignal<string>;
|
|
852
1165
|
readonly valueChange: _angular_core.OutputEmitterRef<string>;
|
|
1166
|
+
/** Emitted when the search query changes (remote lookup). */
|
|
1167
|
+
readonly search: _angular_core.OutputEmitterRef<string>;
|
|
1168
|
+
/** Emitted when the user picks the creatable option. */
|
|
1169
|
+
readonly create: _angular_core.OutputEmitterRef<string>;
|
|
853
1170
|
onValueChange(next: string | string[]): void;
|
|
854
1171
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaAutocomplete, never>;
|
|
855
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaAutocomplete, "dga-autocomplete", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "dgaInvalid"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
|
|
1172
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaAutocomplete, "dga-autocomplete", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "valueInput": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "dgaInvalid"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "creatable": { "alias": "creatable"; "required": false; "isSignal": true; }; "createLabel": { "alias": "createLabel"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; "search": "search"; "create": "create"; }, never, never, true, never>;
|
|
856
1173
|
}
|
|
857
1174
|
|
|
858
1175
|
/** @deprecated Prefer `DgaSelectOption` — alias kept for existing imports. */
|
|
@@ -919,6 +1236,94 @@ declare class DgaTimePicker {
|
|
|
919
1236
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaTimePicker, "dga-time-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hourLabel": { "alias": "hourLabel"; "required": false; "isSignal": true; }; "minuteLabel": { "alias": "minuteLabel"; "required": false; "isSignal": true; }; "periodLabel": { "alias": "periodLabel"; "required": false; "isSignal": true; }; "amLabel": { "alias": "amLabel"; "required": false; "isSignal": true; }; "pmLabel": { "alias": "pmLabel"; "required": false; "isSignal": true; }; "minuteStep": { "alias": "minuteStep"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "dgaInvalid"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
920
1237
|
}
|
|
921
1238
|
|
|
1239
|
+
/**
|
|
1240
|
+
* Canvas signature pad for Saudi e-services.
|
|
1241
|
+
*
|
|
1242
|
+
* @example
|
|
1243
|
+
* ```html
|
|
1244
|
+
* <dga-signature-pad [(value)]="sig" label="التوقيع" />
|
|
1245
|
+
* ```
|
|
1246
|
+
*/
|
|
1247
|
+
declare class DgaSignaturePad implements ControlValueAccessor {
|
|
1248
|
+
private readonly canvasRef;
|
|
1249
|
+
private readonly host;
|
|
1250
|
+
readonly width: _angular_core.InputSignal<number>;
|
|
1251
|
+
readonly height: _angular_core.InputSignal<number>;
|
|
1252
|
+
readonly penColor: _angular_core.InputSignal<string>;
|
|
1253
|
+
readonly lineWidth: _angular_core.InputSignal<number>;
|
|
1254
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
1255
|
+
readonly clearLabel: _angular_core.InputSignal<string>;
|
|
1256
|
+
readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1257
|
+
private readonly cvaDisabled;
|
|
1258
|
+
readonly disabled: _angular_core.Signal<boolean>;
|
|
1259
|
+
/** PNG data URL. */
|
|
1260
|
+
readonly value: _angular_core.ModelSignal<string>;
|
|
1261
|
+
private readonly uiLocale;
|
|
1262
|
+
private readonly ar;
|
|
1263
|
+
readonly hintText: _angular_core.Signal<"وقّع هنا" | "Sign here">;
|
|
1264
|
+
readonly drawing: _angular_core.WritableSignal<boolean>;
|
|
1265
|
+
private readonly stroked;
|
|
1266
|
+
private lastX;
|
|
1267
|
+
private lastY;
|
|
1268
|
+
/** Skip restoring from `value` while we own the canvas. */
|
|
1269
|
+
private localWrite;
|
|
1270
|
+
private onChange;
|
|
1271
|
+
private onTouched;
|
|
1272
|
+
constructor();
|
|
1273
|
+
readonly wrapClasses: _angular_core.Signal<string>;
|
|
1274
|
+
isEmpty(): boolean;
|
|
1275
|
+
clear(): void;
|
|
1276
|
+
onPointerDown(event: PointerEvent): void;
|
|
1277
|
+
onPointerMove(event: PointerEvent): void;
|
|
1278
|
+
onPointerUp(event: PointerEvent): void;
|
|
1279
|
+
onPointerLeave(event: PointerEvent): void;
|
|
1280
|
+
writeValue(value: string): void;
|
|
1281
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
1282
|
+
registerOnTouched(fn: () => void): void;
|
|
1283
|
+
setDisabledState(isDisabled: boolean): void;
|
|
1284
|
+
private emitStroke;
|
|
1285
|
+
private commit;
|
|
1286
|
+
private resetCanvasSurface;
|
|
1287
|
+
private coords;
|
|
1288
|
+
private resolvePenColor;
|
|
1289
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaSignaturePad, never>;
|
|
1290
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaSignaturePad, "dga-signature-pad", never, { "width": { "alias": "width"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "penColor": { "alias": "penColor"; "required": false; "isSignal": true; }; "lineWidth": { "alias": "lineWidth"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
1291
|
+
}
|
|
1292
|
+
|
|
1293
|
+
type DgaRichTextCmd = 'bold' | 'italic' | 'underline' | 'insertUnorderedList' | 'insertOrderedList';
|
|
1294
|
+
/**
|
|
1295
|
+
* Lightweight contenteditable rich-text field (bold / italic / underline / lists).
|
|
1296
|
+
*/
|
|
1297
|
+
declare class DgaRichText {
|
|
1298
|
+
private readonly editorRef;
|
|
1299
|
+
readonly value: _angular_core.ModelSignal<string>;
|
|
1300
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
1301
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
1302
|
+
readonly minHeight: _angular_core.InputSignal<number>;
|
|
1303
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1304
|
+
private readonly uiLocale;
|
|
1305
|
+
private readonly ar;
|
|
1306
|
+
private readonly syncing;
|
|
1307
|
+
private readonly activeCmds;
|
|
1308
|
+
readonly toolbarLabel: _angular_core.Signal<"شريط التنسيق" | "Formatting toolbar">;
|
|
1309
|
+
readonly labels: _angular_core.Signal<{
|
|
1310
|
+
bold: string;
|
|
1311
|
+
italic: string;
|
|
1312
|
+
underline: string;
|
|
1313
|
+
ul: string;
|
|
1314
|
+
ol: string;
|
|
1315
|
+
}>;
|
|
1316
|
+
constructor();
|
|
1317
|
+
isActive(cmd: DgaRichTextCmd): boolean;
|
|
1318
|
+
exec(cmd: DgaRichTextCmd): void;
|
|
1319
|
+
onInput(): void;
|
|
1320
|
+
onBlur(): void;
|
|
1321
|
+
refreshActive(): void;
|
|
1322
|
+
private emitFromEditor;
|
|
1323
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaRichText, never>;
|
|
1324
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaRichText, "dga-rich-text", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "minHeight": { "alias": "minHeight"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
|
|
1325
|
+
}
|
|
1326
|
+
|
|
922
1327
|
type DgaDialogSize = 'sm' | 'md' | 'lg';
|
|
923
1328
|
declare class DgaDialog {
|
|
924
1329
|
private readonly injector;
|
|
@@ -947,6 +1352,46 @@ declare class DgaDialog {
|
|
|
947
1352
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaDialog, "dga-dialog", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "closed": "closed"; }, never, ["*", "[dgaDialogActions]"], true, never>;
|
|
948
1353
|
}
|
|
949
1354
|
|
|
1355
|
+
type DgaConfirmTone = 'default' | 'danger';
|
|
1356
|
+
/**
|
|
1357
|
+
* Standardized confirm dialog preset (cancel + confirm). Use `tone="danger"` for
|
|
1358
|
+
* destructive deletes.
|
|
1359
|
+
*
|
|
1360
|
+
* @example
|
|
1361
|
+
* ```html
|
|
1362
|
+
* <dga-confirm
|
|
1363
|
+
* [(open)]="open"
|
|
1364
|
+
* tone="danger"
|
|
1365
|
+
* title="حذف الطلب؟"
|
|
1366
|
+
* message="لا يمكن التراجع عن هذا الإجراء."
|
|
1367
|
+
* (confirmed)="onDelete()"
|
|
1368
|
+
* />
|
|
1369
|
+
* ```
|
|
1370
|
+
*/
|
|
1371
|
+
declare class DgaConfirm {
|
|
1372
|
+
readonly open: _angular_core.ModelSignal<boolean>;
|
|
1373
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
1374
|
+
readonly message: _angular_core.InputSignal<string>;
|
|
1375
|
+
readonly size: _angular_core.InputSignal<DgaDialogSize>;
|
|
1376
|
+
readonly tone: _angular_core.InputSignal<DgaConfirmTone>;
|
|
1377
|
+
readonly confirmLabel: _angular_core.InputSignal<string>;
|
|
1378
|
+
readonly cancelLabel: _angular_core.InputSignal<string>;
|
|
1379
|
+
readonly closeLabel: _angular_core.InputSignal<string>;
|
|
1380
|
+
readonly closeOnBackdrop: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1381
|
+
readonly confirmed: _angular_core.OutputEmitterRef<void>;
|
|
1382
|
+
readonly cancelled: _angular_core.OutputEmitterRef<void>;
|
|
1383
|
+
readonly confirmVariant: _angular_core.Signal<"primary" | "danger">;
|
|
1384
|
+
defaultCloseLabel(): string;
|
|
1385
|
+
defaultCancelLabel(): string;
|
|
1386
|
+
defaultConfirmLabel(): string;
|
|
1387
|
+
confirm(): void;
|
|
1388
|
+
cancel(): void;
|
|
1389
|
+
/** Escape / backdrop / X — `closed` only fires from those paths on `dga-dialog`. */
|
|
1390
|
+
onDialogClosed(): void;
|
|
1391
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaConfirm, never>;
|
|
1392
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaConfirm, "dga-confirm", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "confirmLabel": { "alias": "confirmLabel"; "required": false; "isSignal": true; }; "cancelLabel": { "alias": "cancelLabel"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "confirmed": "confirmed"; "cancelled": "cancelled"; }, never, ["*"], true, never>;
|
|
1393
|
+
}
|
|
1394
|
+
|
|
950
1395
|
type DgaModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
951
1396
|
type DgaModalAnimation = 'fade' | 'scale' | 'slide' | 'none';
|
|
952
1397
|
declare class DgaModal {
|
|
@@ -1053,7 +1498,7 @@ declare class DgaToast implements OnDestroy {
|
|
|
1053
1498
|
/** Clear sticky announcement / reserved chrome, then a small gap. */
|
|
1054
1499
|
readonly edgeTop: _angular_core.Signal<"calc(var(--dga-announcement-offset, 0px) + 1rem)" | null>;
|
|
1055
1500
|
readonly edgeBottom: _angular_core.Signal<"1rem" | null>;
|
|
1056
|
-
readonly iconName: _angular_core.Signal<
|
|
1501
|
+
readonly iconName: _angular_core.Signal<"link" | "menu" | "search" | "success" | "info" | "warning" | "error" | "access" | "alertCircle" | "ambulance" | "apple" | "arrowDown" | "arrowDown02" | "arrowLeft" | "arrowLeft02" | "arrowNext" | "arrowNext02" | "arrowPrev" | "arrowPrev02" | "arrowRight" | "arrowRight02" | "arrowUp" | "arrowUp02" | "award" | "badgeCheck" | "bell" | "bellAlt" | "book" | "bookType" | "brain" | "building" | "calendar" | "calendarAlt" | "cart" | "check" | "checkCircle" | "checkCircleAlt" | "chevronDown" | "chevronLeft" | "chevronRight" | "clock" | "close" | "cloud" | "colorPicker" | "colors" | "cookie" | "copy" | "desert" | "devices" | "disability" | "door" | "download" | "droplet" | "external" | "eye" | "eyeOff" | "eyeOffSlash" | "facebook" | "filter" | "fire" | "flash" | "folder" | "glasses" | "globe" | "heading" | "headphones" | "helpCircle" | "highlighter" | "home" | "huawei" | "idCard" | "instagram" | "letterSpacing" | "linkAlt" | "linkedin" | "location" | "lock" | "lockPassword" | "logout" | "mail" | "mask" | "maximize" | "menuAlt" | "message" | "mic" | "minus" | "moon" | "moonAlt" | "moonCloud" | "moreHorizontal" | "moreVertical" | "paintBoard" | "pause" | "phone" | "playStore" | "plus" | "plusSign" | "police" | "printer" | "rain" | "rainZap" | "refresh" | "riyal" | "share" | "shrink" | "smartphone" | "snow" | "sort" | "sortDown" | "sortUp" | "star" | "starFilled" | "sun" | "sunAlt" | "sunCloud" | "textAlign" | "textFont" | "textUnderline" | "touch" | "tradeDown" | "tradeUp" | "translation" | "upload" | "user" | "users" | "whatsapp" | "wheelchair" | "wind" | "x" | "youtube" | "zoomIn" | "zoomOut">;
|
|
1057
1502
|
readonly iconTone: _angular_core.Signal<"success" | "warning" | "error" | "muted" | "current">;
|
|
1058
1503
|
readonly showCountdown: _angular_core.Signal<boolean>;
|
|
1059
1504
|
readonly reduceMotion: _angular_core.WritableSignal<boolean>;
|
|
@@ -1231,8 +1676,13 @@ declare class DgaMenu {
|
|
|
1231
1676
|
readonly open: _angular_core.ModelSignal<boolean>;
|
|
1232
1677
|
readonly triggerLabel: _angular_core.InputSignal<string>;
|
|
1233
1678
|
/** Optional leading glyph (e.g. share on page heroes). */
|
|
1234
|
-
readonly leadingIcon: _angular_core.InputSignal<
|
|
1679
|
+
readonly leadingIcon: _angular_core.InputSignal<"link" | "menu" | "search" | "success" | "info" | "warning" | "error" | "access" | "alertCircle" | "ambulance" | "apple" | "arrowDown" | "arrowDown02" | "arrowLeft" | "arrowLeft02" | "arrowNext" | "arrowNext02" | "arrowPrev" | "arrowPrev02" | "arrowRight" | "arrowRight02" | "arrowUp" | "arrowUp02" | "award" | "badgeCheck" | "bell" | "bellAlt" | "book" | "bookType" | "brain" | "building" | "calendar" | "calendarAlt" | "cart" | "check" | "checkCircle" | "checkCircleAlt" | "chevronDown" | "chevronLeft" | "chevronRight" | "clock" | "close" | "cloud" | "colorPicker" | "colors" | "cookie" | "copy" | "desert" | "devices" | "disability" | "door" | "download" | "droplet" | "external" | "eye" | "eyeOff" | "eyeOffSlash" | "facebook" | "filter" | "fire" | "flash" | "folder" | "glasses" | "globe" | "heading" | "headphones" | "helpCircle" | "highlighter" | "home" | "huawei" | "idCard" | "instagram" | "letterSpacing" | "linkAlt" | "linkedin" | "location" | "lock" | "lockPassword" | "logout" | "mail" | "mask" | "maximize" | "menuAlt" | "message" | "mic" | "minus" | "moon" | "moonAlt" | "moonCloud" | "moreHorizontal" | "moreVertical" | "paintBoard" | "pause" | "phone" | "playStore" | "plus" | "plusSign" | "police" | "printer" | "rain" | "rainZap" | "refresh" | "riyal" | "share" | "shrink" | "smartphone" | "snow" | "sort" | "sortDown" | "sortUp" | "star" | "starFilled" | "sun" | "sunAlt" | "sunCloud" | "textAlign" | "textFont" | "textUnderline" | "touch" | "tradeDown" | "tradeUp" | "translation" | "upload" | "user" | "users" | "whatsapp" | "wheelchair" | "wind" | "x" | "youtube" | "zoomIn" | "zoomOut" | null>;
|
|
1235
1680
|
readonly showChevron: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1681
|
+
/**
|
|
1682
|
+
* `default` = bordered labeled trigger.
|
|
1683
|
+
* `icon` = compact ghost icon button (table row actions).
|
|
1684
|
+
*/
|
|
1685
|
+
readonly appearance: _angular_core.InputSignal<"default" | "icon">;
|
|
1236
1686
|
/** Minimum panel width (e.g. share menus). */
|
|
1237
1687
|
readonly menuMinWidth: _angular_core.InputSignal<string>;
|
|
1238
1688
|
/** Emits the full selected item. */
|
|
@@ -1272,7 +1722,7 @@ declare class DgaMenu {
|
|
|
1272
1722
|
private cssLengthToPx;
|
|
1273
1723
|
private focusItem;
|
|
1274
1724
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaMenu, never>;
|
|
1275
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaMenu, "dga-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; "isSignal": true; }; "leadingIcon": { "alias": "leadingIcon"; "required": false; "isSignal": true; }; "showChevron": { "alias": "showChevron"; "required": false; "isSignal": true; }; "menuMinWidth": { "alias": "menuMinWidth"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "selected": "selected"; "selectedValue": "selectedValue"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
|
|
1725
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaMenu, "dga-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; "isSignal": true; }; "leadingIcon": { "alias": "leadingIcon"; "required": false; "isSignal": true; }; "showChevron": { "alias": "showChevron"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "menuMinWidth": { "alias": "menuMinWidth"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "selected": "selected"; "selectedValue": "selectedValue"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
|
|
1276
1726
|
}
|
|
1277
1727
|
|
|
1278
1728
|
type DgaContextMenuItemType = 'item' | 'checkbox' | 'radio' | 'divider' | 'label';
|
|
@@ -1493,6 +1943,99 @@ declare class DgaDrawer {
|
|
|
1493
1943
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaDrawer, "dga-drawer", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "side": { "alias": "side"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "closed": "closed"; }, never, ["*", "[dgaDrawerActions]"], true, never>;
|
|
1494
1944
|
}
|
|
1495
1945
|
|
|
1946
|
+
type DgaBottomSheetSnap = 'peek' | 'half' | 'full';
|
|
1947
|
+
declare class DgaBottomSheet {
|
|
1948
|
+
private readonly doc;
|
|
1949
|
+
private readonly destroyRef;
|
|
1950
|
+
private readonly injector;
|
|
1951
|
+
private readonly rootRef;
|
|
1952
|
+
private readonly panel;
|
|
1953
|
+
readonly open: _angular_core.ModelSignal<boolean>;
|
|
1954
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
1955
|
+
/** Controls max-height: peek 40%, half 60%, full 85%. */
|
|
1956
|
+
readonly snap: _angular_core.InputSignal<DgaBottomSheetSnap>;
|
|
1957
|
+
readonly closeLabel: _angular_core.InputSignal<string>;
|
|
1958
|
+
readonly closeOnBackdrop: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1959
|
+
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
1960
|
+
readonly titleId: string;
|
|
1961
|
+
readonly dragging: _angular_core.WritableSignal<boolean>;
|
|
1962
|
+
private readonly dragY;
|
|
1963
|
+
private dragPointerId;
|
|
1964
|
+
private dragStartY;
|
|
1965
|
+
private previousFocus;
|
|
1966
|
+
private previousBodyOverflow;
|
|
1967
|
+
private previousHtmlOverflow;
|
|
1968
|
+
private scrollLocked;
|
|
1969
|
+
readonly maxHeight: _angular_core.Signal<string>;
|
|
1970
|
+
readonly panelTransform: _angular_core.Signal<string | null>;
|
|
1971
|
+
readonly panelClasses: _angular_core.Signal<string>;
|
|
1972
|
+
constructor();
|
|
1973
|
+
close(): void;
|
|
1974
|
+
onBackdrop(): void;
|
|
1975
|
+
onKeydown(event: KeyboardEvent): void;
|
|
1976
|
+
onHandlePointerDown(event: PointerEvent): void;
|
|
1977
|
+
onHandlePointerMove(event: PointerEvent): void;
|
|
1978
|
+
onHandlePointerUp(event: PointerEvent): void;
|
|
1979
|
+
private resetDrag;
|
|
1980
|
+
private portalToBody;
|
|
1981
|
+
private removePortaledRoot;
|
|
1982
|
+
private focusInitial;
|
|
1983
|
+
private trapFocus;
|
|
1984
|
+
private getFocusable;
|
|
1985
|
+
private lockScroll;
|
|
1986
|
+
private unlockScroll;
|
|
1987
|
+
private restoreFocus;
|
|
1988
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaBottomSheet, never>;
|
|
1989
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaBottomSheet, "dga-bottom-sheet", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "snap": { "alias": "snap"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "closed": "closed"; }, never, ["*", "[dgaBottomSheetActions]"], true, never>;
|
|
1990
|
+
}
|
|
1991
|
+
|
|
1992
|
+
/** Matches tooltip placements (logical start/end for RTL). */
|
|
1993
|
+
type DgaPopoverPlacement = 'top' | 'bottom' | 'start' | 'end';
|
|
1994
|
+
/**
|
|
1995
|
+
* Anchored popover: default slot = trigger; project the panel with `[dgaPopoverPanel]`.
|
|
1996
|
+
*
|
|
1997
|
+
* @example
|
|
1998
|
+
* ```html
|
|
1999
|
+
* <dga-popover [(open)]="open" placement="bottom">
|
|
2000
|
+
* <button type="button">فتح</button>
|
|
2001
|
+
* <div dgaPopoverPanel class="p-xl">محتوى اللوحة</div>
|
|
2002
|
+
* </dga-popover>
|
|
2003
|
+
* ```
|
|
2004
|
+
*/
|
|
2005
|
+
declare class DgaPopover {
|
|
2006
|
+
private readonly host;
|
|
2007
|
+
private readonly destroyRef;
|
|
2008
|
+
private readonly injector;
|
|
2009
|
+
private readonly triggerRef;
|
|
2010
|
+
private readonly panelRef;
|
|
2011
|
+
readonly open: _angular_core.ModelSignal<boolean>;
|
|
2012
|
+
readonly placement: _angular_core.InputSignal<DgaPopoverPlacement>;
|
|
2013
|
+
readonly closeOnOutside: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2014
|
+
readonly opened: _angular_core.OutputEmitterRef<void>;
|
|
2015
|
+
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
2016
|
+
readonly panelStyle: _angular_core.WritableSignal<Record<string, string>>;
|
|
2017
|
+
private readonly seq;
|
|
2018
|
+
readonly triggerId: string;
|
|
2019
|
+
readonly panelId: string;
|
|
2020
|
+
private readonly onReposition;
|
|
2021
|
+
constructor();
|
|
2022
|
+
panelClasses(): string;
|
|
2023
|
+
onTriggerClick(event: MouseEvent): void;
|
|
2024
|
+
onTriggerKey(event: KeyboardEvent): void;
|
|
2025
|
+
onPanelKey(event: KeyboardEvent): void;
|
|
2026
|
+
toggle(): void;
|
|
2027
|
+
openPanel(): void;
|
|
2028
|
+
close(restoreFocus?: boolean): void;
|
|
2029
|
+
onDocumentPointer(event: PointerEvent): void;
|
|
2030
|
+
onDocumentKeydown(event: KeyboardEvent): void;
|
|
2031
|
+
private portalPanelToBody;
|
|
2032
|
+
private detachPortaledPanel;
|
|
2033
|
+
private focusPanel;
|
|
2034
|
+
private syncPanelPosition;
|
|
2035
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaPopover, never>;
|
|
2036
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaPopover, "dga-popover", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "closeOnOutside": { "alias": "closeOnOutside"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "opened": "opened"; "closed": "closed"; }, never, ["*", "[dgaPopoverPanel]"], true, never>;
|
|
2037
|
+
}
|
|
2038
|
+
|
|
1496
2039
|
interface DgaImagePopupImage {
|
|
1497
2040
|
src: string;
|
|
1498
2041
|
alt?: string;
|
|
@@ -1504,8 +2047,12 @@ type DgaImagePopupAnimation = 'fade' | 'scale' | 'slide' | 'zoom' | 'none';
|
|
|
1504
2047
|
/** Cross-fade when changing the active image. */
|
|
1505
2048
|
type DgaImagePopupImageTransition = 'fade' | 'none';
|
|
1506
2049
|
declare class DgaImagePopup {
|
|
2050
|
+
private readonly doc;
|
|
1507
2051
|
private readonly injector;
|
|
2052
|
+
private readonly host;
|
|
1508
2053
|
private readonly panel;
|
|
2054
|
+
/** Marks the in-page slot while the host is moved to `document.body`. */
|
|
2055
|
+
private anchor;
|
|
1509
2056
|
readonly images: _angular_core.InputSignal<DgaImagePopupSource[]>;
|
|
1510
2057
|
readonly open: _angular_core.ModelSignal<boolean>;
|
|
1511
2058
|
readonly activeIndex: _angular_core.ModelSignal<number>;
|
|
@@ -1548,6 +2095,9 @@ declare class DgaImagePopup {
|
|
|
1548
2095
|
onKeydown(event: KeyboardEvent): void;
|
|
1549
2096
|
onAnimationEnd(event: AnimationEvent): void;
|
|
1550
2097
|
private finishClose;
|
|
2098
|
+
/** Lift the host out of ancestor stacking contexts (docs header / sidebar). */
|
|
2099
|
+
private portalHostToBody;
|
|
2100
|
+
private restoreHost;
|
|
1551
2101
|
private focusInitial;
|
|
1552
2102
|
private trapFocus;
|
|
1553
2103
|
private getFocusable;
|
|
@@ -1558,6 +2108,63 @@ declare class DgaImagePopup {
|
|
|
1558
2108
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaImagePopup, "dga-image-popup", never, { "images": { "alias": "images"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; "animation": { "alias": "animation"; "required": false; "isSignal": true; }; "imageTransition": { "alias": "imageTransition"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; "prevLabel": { "alias": "prevLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "closeOnBackdrop": { "alias": "closeOnBackdrop"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "activeIndex": "activeIndexChange"; "closed": "closed"; "opened": "opened"; }, never, never, true, never>;
|
|
1559
2109
|
}
|
|
1560
2110
|
|
|
2111
|
+
type DgaFilePreviewKind = 'image' | 'pdf' | 'unknown';
|
|
2112
|
+
/** Infer preview kind from MIME type and/or file name / URL path. */
|
|
2113
|
+
declare function dgaDetectFilePreviewKind(src: string, opts?: {
|
|
2114
|
+
fileName?: string;
|
|
2115
|
+
mimeType?: string;
|
|
2116
|
+
}): DgaFilePreviewKind;
|
|
2117
|
+
|
|
2118
|
+
type DgaFilePreviewPresentation = 'inline' | 'dialog' | 'drawer';
|
|
2119
|
+
/**
|
|
2120
|
+
* File preview for images and PDFs. Use `presentation="dialog"|"drawer"` with
|
|
2121
|
+
* `[(open)]` for overlay mode, or `inline` for embedded preview.
|
|
2122
|
+
*
|
|
2123
|
+
* @example
|
|
2124
|
+
* ```html
|
|
2125
|
+
* <dga-file-preview
|
|
2126
|
+
* [(open)]="open"
|
|
2127
|
+
* presentation="dialog"
|
|
2128
|
+
* [src]="url"
|
|
2129
|
+
* fileName="receipt.pdf"
|
|
2130
|
+
* />
|
|
2131
|
+
* ```
|
|
2132
|
+
*/
|
|
2133
|
+
declare class DgaFilePreview {
|
|
2134
|
+
private readonly sanitizer;
|
|
2135
|
+
/** Object URL, remote URL, or data URL to preview. */
|
|
2136
|
+
readonly src: _angular_core.InputSignal<string>;
|
|
2137
|
+
/** Force kind, or `auto` to detect from name/MIME/URL. */
|
|
2138
|
+
readonly type: _angular_core.InputSignal<"auto" | DgaFilePreviewKind>;
|
|
2139
|
+
readonly fileName: _angular_core.InputSignal<string>;
|
|
2140
|
+
readonly mimeType: _angular_core.InputSignal<string>;
|
|
2141
|
+
readonly alt: _angular_core.InputSignal<string>;
|
|
2142
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
2143
|
+
readonly presentation: _angular_core.InputSignal<DgaFilePreviewPresentation>;
|
|
2144
|
+
/** Overlay open state (dialog / drawer). */
|
|
2145
|
+
readonly open: _angular_core.ModelSignal<boolean>;
|
|
2146
|
+
readonly dialogSize: _angular_core.InputSignal<DgaDialogSize>;
|
|
2147
|
+
readonly drawerSide: _angular_core.InputSignal<DgaDrawerSide>;
|
|
2148
|
+
readonly showDownload: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2149
|
+
readonly downloadName: _angular_core.InputSignal<string>;
|
|
2150
|
+
readonly closeLabelInput: _angular_core.InputSignal<string>;
|
|
2151
|
+
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
2152
|
+
readonly downloaded: _angular_core.OutputEmitterRef<string>;
|
|
2153
|
+
readonly resolvedKind: _angular_core.Signal<DgaFilePreviewKind>;
|
|
2154
|
+
readonly safePdfSrc: _angular_core.Signal<SafeResourceUrl | null>;
|
|
2155
|
+
resolvedFileName(): string;
|
|
2156
|
+
resolvedTitle(): string;
|
|
2157
|
+
resolvedAlt(): string;
|
|
2158
|
+
closeLabel(): string;
|
|
2159
|
+
downloadLabel(): string;
|
|
2160
|
+
unknownTitle(): string;
|
|
2161
|
+
bodyClasses(): string;
|
|
2162
|
+
hostInlineClasses(): string;
|
|
2163
|
+
onDownload(): void;
|
|
2164
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaFilePreview, never>;
|
|
2165
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaFilePreview, "dga-file-preview", never, { "src": { "alias": "src"; "required": true; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "mimeType": { "alias": "mimeType"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "presentation": { "alias": "presentation"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "dialogSize": { "alias": "dialogSize"; "required": false; "isSignal": true; }; "drawerSide": { "alias": "drawerSide"; "required": false; "isSignal": true; }; "showDownload": { "alias": "showDownload"; "required": false; "isSignal": true; }; "downloadName": { "alias": "downloadName"; "required": false; "isSignal": true; }; "closeLabelInput": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "closed": "closed"; "downloaded": "downloaded"; }, never, never, true, never>;
|
|
2166
|
+
}
|
|
2167
|
+
|
|
1561
2168
|
/** Logical placements (RTL-aware via inset-inline). */
|
|
1562
2169
|
type DgaTourPlacement = 'top' | 'bottom' | 'start' | 'end' | 'auto';
|
|
1563
2170
|
type DgaTourPersist = 'local' | 'session' | 'none';
|
|
@@ -1686,7 +2293,7 @@ declare class DgaAlert {
|
|
|
1686
2293
|
readonly textClasses: _angular_core.Signal<"flex flex-col gap-xs" | "min-w-0">;
|
|
1687
2294
|
readonly titleClasses: _angular_core.Signal<string>;
|
|
1688
2295
|
readonly descriptionClasses: _angular_core.Signal<string>;
|
|
1689
|
-
readonly iconName: _angular_core.Signal<
|
|
2296
|
+
readonly iconName: _angular_core.Signal<"link" | "menu" | "search" | "success" | "info" | "warning" | "error" | "access" | "alertCircle" | "ambulance" | "apple" | "arrowDown" | "arrowDown02" | "arrowLeft" | "arrowLeft02" | "arrowNext" | "arrowNext02" | "arrowPrev" | "arrowPrev02" | "arrowRight" | "arrowRight02" | "arrowUp" | "arrowUp02" | "award" | "badgeCheck" | "bell" | "bellAlt" | "book" | "bookType" | "brain" | "building" | "calendar" | "calendarAlt" | "cart" | "check" | "checkCircle" | "checkCircleAlt" | "chevronDown" | "chevronLeft" | "chevronRight" | "clock" | "close" | "cloud" | "colorPicker" | "colors" | "cookie" | "copy" | "desert" | "devices" | "disability" | "door" | "download" | "droplet" | "external" | "eye" | "eyeOff" | "eyeOffSlash" | "facebook" | "filter" | "fire" | "flash" | "folder" | "glasses" | "globe" | "heading" | "headphones" | "helpCircle" | "highlighter" | "home" | "huawei" | "idCard" | "instagram" | "letterSpacing" | "linkAlt" | "linkedin" | "location" | "lock" | "lockPassword" | "logout" | "mail" | "mask" | "maximize" | "menuAlt" | "message" | "mic" | "minus" | "moon" | "moonAlt" | "moonCloud" | "moreHorizontal" | "moreVertical" | "paintBoard" | "pause" | "phone" | "playStore" | "plus" | "plusSign" | "police" | "printer" | "rain" | "rainZap" | "refresh" | "riyal" | "share" | "shrink" | "smartphone" | "snow" | "sort" | "sortDown" | "sortUp" | "star" | "starFilled" | "sun" | "sunAlt" | "sunCloud" | "textAlign" | "textFont" | "textUnderline" | "touch" | "tradeDown" | "tradeUp" | "translation" | "upload" | "user" | "users" | "whatsapp" | "wheelchair" | "wind" | "x" | "youtube" | "zoomIn" | "zoomOut">;
|
|
1690
2297
|
readonly iconTone: _angular_core.Signal<"success" | "warning" | "error" | "muted" | "current">;
|
|
1691
2298
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaAlert, never>;
|
|
1692
2299
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaAlert, "dga-alert", never, { "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "shadow": { "alias": "shadow"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "display": { "alias": "display"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "dismissed": "dismissed"; }, never, ["*", "[dgaAlertActions]"], true, never>;
|
|
@@ -1916,116 +2523,134 @@ declare class DgaShare {
|
|
|
1916
2523
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaShare, "dga-share", never, { "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "url": { "alias": "url"; "required": false; "isSignal": true; }; "shareTitle": { "alias": "shareTitle"; "required": false; "isSignal": true; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; "isSignal": true; }; "iconOnly": { "alias": "iconOnly"; "required": false; "isSignal": true; }; "buttonVariant": { "alias": "buttonVariant"; "required": false; "isSignal": true; }; "buttonSize": { "alias": "buttonSize"; "required": false; "isSignal": true; }; }, { "shared": "shared"; "linkCopied": "linkCopied"; }, never, never, true, never>;
|
|
1917
2524
|
}
|
|
1918
2525
|
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
2526
|
+
/**
|
|
2527
|
+
* Print-ready region: wraps ticket/receipt content, hides page chrome on print,
|
|
2528
|
+
* and triggers `window.print()`. Pair with `dga-qr` / `dga-barcode`.
|
|
2529
|
+
*
|
|
2530
|
+
* Mark non-printable chrome inside the region with class `dga-print-hide`
|
|
2531
|
+
* (or put the trigger outside and call `print()`).
|
|
2532
|
+
*
|
|
2533
|
+
* @example
|
|
2534
|
+
* ```html
|
|
2535
|
+
* <dga-print documentTitle="Ticket #42">
|
|
2536
|
+
* <dga-qr value="…" />
|
|
2537
|
+
* <dga-barcode value="TKT-42" />
|
|
2538
|
+
* </dga-print>
|
|
2539
|
+
* ```
|
|
2540
|
+
*/
|
|
2541
|
+
declare class DgaPrint {
|
|
2542
|
+
private readonly host;
|
|
2543
|
+
private readonly destroyRef;
|
|
2544
|
+
/** Document title while the print dialog is open. */
|
|
2545
|
+
readonly documentTitle: _angular_core.InputSignal<string>;
|
|
2546
|
+
/** `@page` margin token (CSS length). */
|
|
2547
|
+
readonly margin: _angular_core.InputSignal<string>;
|
|
2548
|
+
/** Show the built-in print button. */
|
|
2549
|
+
readonly showTrigger: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2550
|
+
/** Override trigger label (defaults to Print / طباعة). */
|
|
2551
|
+
readonly triggerLabel: _angular_core.InputSignal<string>;
|
|
2552
|
+
readonly beforePrint: _angular_core.OutputEmitterRef<void>;
|
|
2553
|
+
readonly afterPrint: _angular_core.OutputEmitterRef<void>;
|
|
2554
|
+
private readonly onAfterPrint;
|
|
2555
|
+
private previousTitle;
|
|
2556
|
+
private printing;
|
|
2557
|
+
private fallbackTimer;
|
|
2558
|
+
constructor();
|
|
2559
|
+
hostClasses(): string;
|
|
2560
|
+
resolvedTriggerLabel(): string;
|
|
2561
|
+
/** Open the browser print dialog for this region. */
|
|
2562
|
+
print(): void;
|
|
2563
|
+
private cleanup;
|
|
2564
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaPrint, never>;
|
|
2565
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaPrint, "dga-print", never, { "documentTitle": { "alias": "documentTitle"; "required": false; "isSignal": true; }; "margin": { "alias": "margin"; "required": false; "isSignal": true; }; "showTrigger": { "alias": "showTrigger"; "required": false; "isSignal": true; }; "triggerLabel": { "alias": "triggerLabel"; "required": false; "isSignal": true; }; }, { "beforePrint": "beforePrint"; "afterPrint": "afterPrint"; }, never, ["*"], true, never>;
|
|
1927
2566
|
}
|
|
2567
|
+
|
|
2568
|
+
type DgaOfflineMode = 'offline' | 'online' | 'both';
|
|
1928
2569
|
/**
|
|
1929
|
-
*
|
|
1930
|
-
*
|
|
2570
|
+
* Connection status banner for field apps. Listens to `online` / `offline`
|
|
2571
|
+
* events; override with `forceOffline` in demos.
|
|
2572
|
+
*
|
|
2573
|
+
* Distinct from site-wide `dga-announcement-bar` — this is a page/app status strip.
|
|
1931
2574
|
*
|
|
1932
|
-
*
|
|
1933
|
-
*
|
|
2575
|
+
* @example
|
|
2576
|
+
* ```html
|
|
2577
|
+
* <dga-offline sticky />
|
|
2578
|
+
* ```
|
|
1934
2579
|
*/
|
|
1935
|
-
declare class
|
|
2580
|
+
declare class DgaOffline {
|
|
1936
2581
|
private readonly destroyRef;
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
readonly
|
|
1944
|
-
|
|
1945
|
-
readonly
|
|
1946
|
-
|
|
1947
|
-
readonly
|
|
1948
|
-
|
|
1949
|
-
readonly
|
|
1950
|
-
|
|
1951
|
-
readonly
|
|
1952
|
-
readonly
|
|
1953
|
-
readonly
|
|
1954
|
-
|
|
1955
|
-
readonly
|
|
1956
|
-
|
|
1957
|
-
readonly overlayClose: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1958
|
-
/** Green online dot on the agent avatar. */
|
|
1959
|
-
readonly online: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1960
|
-
/** Hide launcher while the panel is open (recommended). */
|
|
1961
|
-
readonly hideFabWhenOpen: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1962
|
-
/**
|
|
1963
|
-
* 0-based slot in the shared FAB dock (bottom → top).
|
|
1964
|
-
* Typical: a11y=0, chatbot=1, scroll-top=2.
|
|
1965
|
-
*/
|
|
1966
|
-
readonly stack: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
1967
|
-
/**
|
|
1968
|
-
* @deprecated Prefer `stack`. When true and `stack` is unset legacy path —
|
|
1969
|
-
* kept for callers; `stack` wins.
|
|
1970
|
-
*/
|
|
1971
|
-
readonly clearFab: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1972
|
-
/**
|
|
1973
|
-
* Anchor FAB/panel inside a relative parent (gallery / docs preview)
|
|
1974
|
-
* instead of the viewport — avoids a second global FAB.
|
|
1975
|
-
*/
|
|
1976
|
-
readonly embedded: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1977
|
-
readonly initialMessages: _angular_core.InputSignal<readonly DgaChatbotMessage[]>;
|
|
1978
|
-
readonly sent: _angular_core.OutputEmitterRef<string>;
|
|
1979
|
-
readonly opened: _angular_core.OutputEmitterRef<void>;
|
|
1980
|
-
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
1981
|
-
readonly open: _angular_core.WritableSignal<boolean>;
|
|
1982
|
-
readonly draft: _angular_core.WritableSignal<string>;
|
|
1983
|
-
readonly messages: _angular_core.WritableSignal<DgaChatbotMessage[]>;
|
|
1984
|
-
private readonly seq;
|
|
1985
|
-
readonly panelId: string;
|
|
1986
|
-
private msgSeq;
|
|
1987
|
-
private seeded;
|
|
1988
|
-
private prevOverflow;
|
|
1989
|
-
readonly copy: _angular_core.Signal<{
|
|
1990
|
-
title: string;
|
|
1991
|
-
subtitle: string;
|
|
1992
|
-
open: string;
|
|
1993
|
-
close: string;
|
|
1994
|
-
send: string;
|
|
1995
|
-
input: string;
|
|
1996
|
-
placeholder: string;
|
|
1997
|
-
panelLabel: string;
|
|
1998
|
-
welcome: string;
|
|
1999
|
-
}>;
|
|
2000
|
-
readonly fabBottom: _angular_core.Signal<string>;
|
|
2001
|
-
readonly fabClasses: _angular_core.Signal<string>;
|
|
2002
|
-
readonly panelClasses: _angular_core.Signal<string>;
|
|
2582
|
+
/** Show when offline, when back online, or both. */
|
|
2583
|
+
readonly mode: _angular_core.InputSignal<DgaOfflineMode>;
|
|
2584
|
+
/** Sticky top strip (uses `--z-index-banner`). */
|
|
2585
|
+
readonly sticky: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2586
|
+
/** Allow dismissing the current state until connectivity changes. */
|
|
2587
|
+
readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2588
|
+
readonly dismissLabel: _angular_core.InputSignal<string>;
|
|
2589
|
+
/** Override offline copy. */
|
|
2590
|
+
readonly offlineMessage: _angular_core.InputSignal<string>;
|
|
2591
|
+
/** Override online recovery copy. */
|
|
2592
|
+
readonly onlineMessage: _angular_core.InputSignal<string>;
|
|
2593
|
+
/** Demo / test override — when set, ignores navigator.onLine. */
|
|
2594
|
+
readonly forceOffline: _angular_core.InputSignal<boolean | null>;
|
|
2595
|
+
readonly onlineChange: _angular_core.OutputEmitterRef<boolean>;
|
|
2596
|
+
readonly dismissed: _angular_core.OutputEmitterRef<void>;
|
|
2597
|
+
private readonly navigatorOnline;
|
|
2598
|
+
private readonly dismissedState;
|
|
2599
|
+
readonly isOffline: _angular_core.Signal<boolean>;
|
|
2600
|
+
readonly visible: _angular_core.Signal<boolean>;
|
|
2601
|
+
readonly barClasses: _angular_core.Signal<string>;
|
|
2003
2602
|
constructor();
|
|
2004
|
-
|
|
2005
|
-
|
|
2006
|
-
|
|
2007
|
-
|
|
2008
|
-
|
|
2009
|
-
|
|
2010
|
-
private scrollLogToEnd;
|
|
2011
|
-
private lockScroll;
|
|
2012
|
-
private unlockScroll;
|
|
2013
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaChatbot, never>;
|
|
2014
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaChatbot, "dga-chatbot", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "animation": { "alias": "animation"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "fabLabel": { "alias": "fabLabel"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "fabIcon": { "alias": "fabIcon"; "required": false; "isSignal": true; }; "sendIcon": { "alias": "sendIcon"; "required": false; "isSignal": true; }; "agentIcon": { "alias": "agentIcon"; "required": false; "isSignal": true; }; "fabTone": { "alias": "fabTone"; "required": false; "isSignal": true; }; "overlay": { "alias": "overlay"; "required": false; "isSignal": true; }; "overlayClose": { "alias": "overlayClose"; "required": false; "isSignal": true; }; "online": { "alias": "online"; "required": false; "isSignal": true; }; "hideFabWhenOpen": { "alias": "hideFabWhenOpen"; "required": false; "isSignal": true; }; "stack": { "alias": "stack"; "required": false; "isSignal": true; }; "clearFab": { "alias": "clearFab"; "required": false; "isSignal": true; }; "embedded": { "alias": "embedded"; "required": false; "isSignal": true; }; "initialMessages": { "alias": "initialMessages"; "required": false; "isSignal": true; }; }, { "sent": "sent"; "opened": "opened"; "closed": "closed"; }, never, never, true, never>;
|
|
2603
|
+
resolvedMessage(): string;
|
|
2604
|
+
defaultDismissLabel(): string;
|
|
2605
|
+
dismiss(): void;
|
|
2606
|
+
private setOnline;
|
|
2607
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaOffline, never>;
|
|
2608
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaOffline, "dga-offline", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "dismissible": { "alias": "dismissible"; "required": false; "isSignal": true; }; "dismissLabel": { "alias": "dismissLabel"; "required": false; "isSignal": true; }; "offlineMessage": { "alias": "offlineMessage"; "required": false; "isSignal": true; }; "onlineMessage": { "alias": "onlineMessage"; "required": false; "isSignal": true; }; "forceOffline": { "alias": "forceOffline"; "required": false; "isSignal": true; }; }, { "onlineChange": "onlineChange"; "dismissed": "dismissed"; }, never, never, true, never>;
|
|
2015
2609
|
}
|
|
2016
2610
|
|
|
2017
2611
|
/**
|
|
2018
2612
|
* Visually hidden until focused — first tab stop for keyboard users.
|
|
2019
2613
|
* Place near the top of the document; `href` should target main content id.
|
|
2020
2614
|
*/
|
|
2021
|
-
declare class DgaSkipLink {
|
|
2615
|
+
declare class DgaSkipLink {
|
|
2616
|
+
private readonly uiLocale;
|
|
2617
|
+
readonly href: _angular_core.InputSignal<string>;
|
|
2618
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
2619
|
+
readonly resolvedLabel: _angular_core.Signal<string>;
|
|
2620
|
+
safeHref(href: string | undefined | null): string;
|
|
2621
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaSkipLink, never>;
|
|
2622
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaSkipLink, "dga-skip-link", never, { "href": { "alias": "href"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
2623
|
+
}
|
|
2624
|
+
|
|
2625
|
+
interface DgaNotificationItem {
|
|
2626
|
+
id: string;
|
|
2627
|
+
title: string;
|
|
2628
|
+
body?: string;
|
|
2629
|
+
time?: string;
|
|
2630
|
+
read?: boolean;
|
|
2631
|
+
href?: string;
|
|
2632
|
+
}
|
|
2633
|
+
/**
|
|
2634
|
+
* Page-level notification inbox (distinct from header overlay config).
|
|
2635
|
+
*/
|
|
2636
|
+
declare class DgaNotificationInbox {
|
|
2022
2637
|
private readonly uiLocale;
|
|
2023
|
-
readonly
|
|
2024
|
-
readonly
|
|
2025
|
-
readonly
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2638
|
+
private readonly ar;
|
|
2639
|
+
readonly items: _angular_core.InputSignal<DgaNotificationItem[]>;
|
|
2640
|
+
readonly title: _angular_core.InputSignal<string | undefined>;
|
|
2641
|
+
readonly itemClick: _angular_core.OutputEmitterRef<DgaNotificationItem>;
|
|
2642
|
+
readonly markRead: _angular_core.OutputEmitterRef<DgaNotificationItem>;
|
|
2643
|
+
readonly markAllRead: _angular_core.OutputEmitterRef<void>;
|
|
2644
|
+
readonly resolvedTitle: _angular_core.Signal<string>;
|
|
2645
|
+
readonly unreadCount: _angular_core.Signal<number>;
|
|
2646
|
+
readonly markAllLabel: _angular_core.Signal<"تعيين الكل كمقروء" | "Mark all as read">;
|
|
2647
|
+
readonly emptyTitle: _angular_core.Signal<"لا توجد إشعارات" | "No notifications">;
|
|
2648
|
+
readonly emptyBody: _angular_core.Signal<"ستظهر الإشعارات الجديدة هنا." | "New notifications will appear here.">;
|
|
2649
|
+
readonly unreadLabel: _angular_core.Signal<"غير مقروء" | "Unread">;
|
|
2650
|
+
itemClass(item: DgaNotificationItem): string;
|
|
2651
|
+
onItem(item: DgaNotificationItem): void;
|
|
2652
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaNotificationInbox, never>;
|
|
2653
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaNotificationInbox, "dga-notification-inbox", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; }, { "itemClick": "itemClick"; "markRead": "markRead"; "markAllRead": "markAllRead"; }, never, never, true, never>;
|
|
2029
2654
|
}
|
|
2030
2655
|
|
|
2031
2656
|
declare class DgaAccordionItem {
|
|
@@ -2256,6 +2881,8 @@ declare class DgaStepper {
|
|
|
2256
2881
|
readonly steps: _angular_core.InputSignal<DgaStep[]>;
|
|
2257
2882
|
readonly active: _angular_core.ModelSignal<number>;
|
|
2258
2883
|
readonly label: _angular_core.InputSignal<string>;
|
|
2884
|
+
/** Pulses the current step. Off unless set, and skipped when motion is reduced. */
|
|
2885
|
+
readonly animate: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2259
2886
|
/**
|
|
2260
2887
|
* Optional veto for step clicks (e.g. form wizard validation).
|
|
2261
2888
|
* Return false to keep the current step.
|
|
@@ -2268,7 +2895,7 @@ declare class DgaStepper {
|
|
|
2268
2895
|
railTone(index: number): string;
|
|
2269
2896
|
go(index: number): void;
|
|
2270
2897
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaStepper, never>;
|
|
2271
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaStepper, "dga-stepper", never, { "steps": { "alias": "steps"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "beforeActiveChange": { "alias": "beforeActiveChange"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; }, never, never, true, never>;
|
|
2898
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaStepper, "dga-stepper", never, { "steps": { "alias": "steps"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "animate": { "alias": "animate"; "required": false; "isSignal": true; }; "beforeActiveChange": { "alias": "beforeActiveChange"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; }, never, never, true, never>;
|
|
2272
2899
|
}
|
|
2273
2900
|
|
|
2274
2901
|
interface DgaTocItem {
|
|
@@ -2287,6 +2914,56 @@ declare class DgaToc {
|
|
|
2287
2914
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaToc, "dga-toc", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "activeId": { "alias": "activeId"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "activeId": "activeIdChange"; "navigate": "navigate"; }, never, never, true, never>;
|
|
2288
2915
|
}
|
|
2289
2916
|
|
|
2917
|
+
/**
|
|
2918
|
+
* Accessible tree view (WAI-ARIA tree). Expand/collapse, keyboard navigation,
|
|
2919
|
+
* optional single or multi select.
|
|
2920
|
+
*
|
|
2921
|
+
* @example
|
|
2922
|
+
* ```html
|
|
2923
|
+
* <dga-tree
|
|
2924
|
+
* [items]="org"
|
|
2925
|
+
* [(expandedIds)]="expanded"
|
|
2926
|
+
* [(selectedIds)]="selected"
|
|
2927
|
+
* />
|
|
2928
|
+
* ```
|
|
2929
|
+
*/
|
|
2930
|
+
declare class DgaTree {
|
|
2931
|
+
private static seq;
|
|
2932
|
+
private readonly host;
|
|
2933
|
+
private readonly uid;
|
|
2934
|
+
readonly items: _angular_core.InputSignal<DgaTreeItem[]>;
|
|
2935
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
2936
|
+
readonly expandedIds: _angular_core.ModelSignal<string[]>;
|
|
2937
|
+
readonly selectedIds: _angular_core.ModelSignal<string[]>;
|
|
2938
|
+
readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2939
|
+
readonly selectable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2940
|
+
/** Expand a node when it becomes selected. */
|
|
2941
|
+
readonly expandOnSelect: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2942
|
+
readonly selectionChange: _angular_core.OutputEmitterRef<string[]>;
|
|
2943
|
+
readonly expandChange: _angular_core.OutputEmitterRef<string[]>;
|
|
2944
|
+
readonly focusId: _angular_core.WritableSignal<string | null>;
|
|
2945
|
+
readonly expandedSet: _angular_core.Signal<Set<string>>;
|
|
2946
|
+
readonly selectedSet: _angular_core.Signal<Set<string>>;
|
|
2947
|
+
readonly visibleNodes: _angular_core.Signal<DgaTreeItem[]>;
|
|
2948
|
+
resolvedLabel(): string;
|
|
2949
|
+
nodeDomId(id: string): string;
|
|
2950
|
+
hasChildren(item: DgaTreeItem): boolean;
|
|
2951
|
+
isExpanded(id: string): boolean;
|
|
2952
|
+
isSelected(id: string): boolean;
|
|
2953
|
+
twistIcon(id: string): 'chevronDown' | 'chevronLeft' | 'chevronRight';
|
|
2954
|
+
expandAria(item: DgaTreeItem): string;
|
|
2955
|
+
onNodeFocus(id: string): void;
|
|
2956
|
+
onNodeClick(item: DgaTreeItem, event: MouseEvent): void;
|
|
2957
|
+
toggleExpand(id: string, event?: Event): void;
|
|
2958
|
+
selectNode(id: string): void;
|
|
2959
|
+
onTreeKey(event: KeyboardEvent): void;
|
|
2960
|
+
private parentOf;
|
|
2961
|
+
private moveFocus;
|
|
2962
|
+
private focusNode;
|
|
2963
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaTree, never>;
|
|
2964
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaTree, "dga-tree", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "expandedIds": { "alias": "expandedIds"; "required": false; "isSignal": true; }; "selectedIds": { "alias": "selectedIds"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "expandOnSelect": { "alias": "expandOnSelect"; "required": false; "isSignal": true; }; }, { "expandedIds": "expandedIdsChange"; "selectedIds": "selectedIdsChange"; "selectionChange": "selectionChange"; "expandChange": "expandChange"; }, never, never, true, never>;
|
|
2965
|
+
}
|
|
2966
|
+
|
|
2290
2967
|
interface DgaSideNavItem {
|
|
2291
2968
|
label: string;
|
|
2292
2969
|
value: string;
|
|
@@ -2427,7 +3104,7 @@ declare class DgaNavRail {
|
|
|
2427
3104
|
readonly smoothScroll: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2428
3105
|
readonly select: _angular_core.OutputEmitterRef<DgaNavRailItem>;
|
|
2429
3106
|
readonly expandChange: _angular_core.OutputEmitterRef<boolean>;
|
|
2430
|
-
readonly edgeAttr: _angular_core.Signal<"
|
|
3107
|
+
readonly edgeAttr: _angular_core.Signal<"left" | "start" | "end" | "right" | null>;
|
|
2431
3108
|
readonly offsetCss: _angular_core.Signal<string>;
|
|
2432
3109
|
readonly tooltipPlacement: _angular_core.Signal<"start" | "end">;
|
|
2433
3110
|
readonly iconSize: _angular_core.Signal<"sm" | "md" | "lg">;
|
|
@@ -2467,6 +3144,54 @@ declare class DgaFilterBar {
|
|
|
2467
3144
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaFilterBar, "dga-filter-bar", never, { "filters": { "alias": "filters"; "required": false; "isSignal": true; }; "activeIds": { "alias": "activeIds"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; }, { "activeIds": "activeIdsChange"; }, never, never, true, never>;
|
|
2468
3145
|
}
|
|
2469
3146
|
|
|
3147
|
+
type DgaSearchBarSize = DgaFormControlSize;
|
|
3148
|
+
/**
|
|
3149
|
+
* Composed search chrome: leading icon, field, clear, and submit.
|
|
3150
|
+
* Distinct from `dga-autocomplete` (suggestion picker).
|
|
3151
|
+
*
|
|
3152
|
+
* @example
|
|
3153
|
+
* ```html
|
|
3154
|
+
* <dga-search-bar
|
|
3155
|
+
* [(value)]="q"
|
|
3156
|
+
* [placeholder]="'Search services'"
|
|
3157
|
+
* (submit)="onSearch($event)"
|
|
3158
|
+
* />
|
|
3159
|
+
* ```
|
|
3160
|
+
*/
|
|
3161
|
+
declare class DgaSearchBar implements ControlValueAccessor {
|
|
3162
|
+
readonly value: _angular_core.ModelSignal<string>;
|
|
3163
|
+
readonly controlId: _angular_core.InputSignal<string>;
|
|
3164
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
3165
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
3166
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
3167
|
+
readonly submitLabelInput: _angular_core.InputSignal<string>;
|
|
3168
|
+
readonly size: _angular_core.InputSignal<DgaFormControlSize>;
|
|
3169
|
+
readonly clearable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3170
|
+
readonly showSubmit: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3171
|
+
readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3172
|
+
private readonly cvaDisabled;
|
|
3173
|
+
readonly disabled: _angular_core.Signal<boolean>;
|
|
3174
|
+
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3175
|
+
readonly submit: _angular_core.OutputEmitterRef<string>;
|
|
3176
|
+
readonly cleared: _angular_core.OutputEmitterRef<void>;
|
|
3177
|
+
readonly resolvedStatus: _angular_core.Signal<_a_nemreen_dga_ui.DgaFormStatus>;
|
|
3178
|
+
readonly groupClasses: _angular_core.Signal<string>;
|
|
3179
|
+
private onChange;
|
|
3180
|
+
onTouched: () => void;
|
|
3181
|
+
resolvedLabel(): string;
|
|
3182
|
+
submitLabel(): string;
|
|
3183
|
+
clearAria(): string;
|
|
3184
|
+
onInput(raw: string): void;
|
|
3185
|
+
onClear(): void;
|
|
3186
|
+
onSubmit(event: Event): void;
|
|
3187
|
+
writeValue(value: string): void;
|
|
3188
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
3189
|
+
registerOnTouched(fn: () => void): void;
|
|
3190
|
+
setDisabledState(isDisabled: boolean): void;
|
|
3191
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaSearchBar, never>;
|
|
3192
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaSearchBar, "dga-search-bar", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "controlId": { "alias": "controlId"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "submitLabelInput": { "alias": "submitLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "showSubmit": { "alias": "showSubmit"; "required": false; "isSignal": true; }; "disabledInput": { "alias": "disabled"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "submit": "submit"; "cleared": "cleared"; }, never, never, true, never>;
|
|
3193
|
+
}
|
|
3194
|
+
|
|
2470
3195
|
declare class DgaToolbar {
|
|
2471
3196
|
readonly label: _angular_core.InputSignal<string>;
|
|
2472
3197
|
readonly barClasses: _angular_core.Signal<string>;
|
|
@@ -2568,7 +3293,7 @@ declare class DgaCard {
|
|
|
2568
3293
|
/** Clamp description lines (0 = no clamp). */
|
|
2569
3294
|
readonly descriptionClamp: _angular_core.InputSignal<number>;
|
|
2570
3295
|
/** Featured logo icon (renders `dga-icon-badge` unless `[dgaCardLead]` is projected). */
|
|
2571
|
-
readonly icon: _angular_core.InputSignal<
|
|
3296
|
+
readonly icon: _angular_core.InputSignal<"link" | "menu" | "search" | "success" | "info" | "warning" | "error" | "access" | "alertCircle" | "ambulance" | "apple" | "arrowDown" | "arrowDown02" | "arrowLeft" | "arrowLeft02" | "arrowNext" | "arrowNext02" | "arrowPrev" | "arrowPrev02" | "arrowRight" | "arrowRight02" | "arrowUp" | "arrowUp02" | "award" | "badgeCheck" | "bell" | "bellAlt" | "book" | "bookType" | "brain" | "building" | "calendar" | "calendarAlt" | "cart" | "check" | "checkCircle" | "checkCircleAlt" | "chevronDown" | "chevronLeft" | "chevronRight" | "clock" | "close" | "cloud" | "colorPicker" | "colors" | "cookie" | "copy" | "desert" | "devices" | "disability" | "door" | "download" | "droplet" | "external" | "eye" | "eyeOff" | "eyeOffSlash" | "facebook" | "filter" | "fire" | "flash" | "folder" | "glasses" | "globe" | "heading" | "headphones" | "helpCircle" | "highlighter" | "home" | "huawei" | "idCard" | "instagram" | "letterSpacing" | "linkAlt" | "linkedin" | "location" | "lock" | "lockPassword" | "logout" | "mail" | "mask" | "maximize" | "menuAlt" | "message" | "mic" | "minus" | "moon" | "moonAlt" | "moonCloud" | "moreHorizontal" | "moreVertical" | "paintBoard" | "pause" | "phone" | "playStore" | "plus" | "plusSign" | "police" | "printer" | "rain" | "rainZap" | "refresh" | "riyal" | "share" | "shrink" | "smartphone" | "snow" | "sort" | "sortDown" | "sortUp" | "star" | "starFilled" | "sun" | "sunAlt" | "sunCloud" | "textAlign" | "textFont" | "textUnderline" | "touch" | "tradeDown" | "tradeUp" | "translation" | "upload" | "user" | "users" | "whatsapp" | "wheelchair" | "wind" | "x" | "youtube" | "zoomIn" | "zoomOut" | null>;
|
|
2572
3297
|
readonly iconSize: _angular_core.InputSignal<DgaIconBadgeSize>;
|
|
2573
3298
|
readonly iconAppearance: _angular_core.InputSignal<DgaIconBadgeAppearance>;
|
|
2574
3299
|
readonly badges: _angular_core.InputSignal<DgaCardBadge[]>;
|
|
@@ -2607,7 +3332,7 @@ declare class DgaCardMedia {
|
|
|
2607
3332
|
readonly src: _angular_core.InputSignal<string>;
|
|
2608
3333
|
readonly alt: _angular_core.InputSignal<string>;
|
|
2609
3334
|
/** Aspect ratio utility; default 16/10 portal news cards. */
|
|
2610
|
-
readonly ratio: _angular_core.InputSignal<"video" | "
|
|
3335
|
+
readonly ratio: _angular_core.InputSignal<"video" | "square" | "wide">;
|
|
2611
3336
|
readonly classes: _angular_core.Signal<string>;
|
|
2612
3337
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaCardMedia, never>;
|
|
2613
3338
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaCardMedia, "dga-card-media", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "ratio": { "alias": "ratio"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
@@ -2972,10 +3697,15 @@ interface DgaHeroSlide {
|
|
|
2972
3697
|
}
|
|
2973
3698
|
declare class DgaHero {
|
|
2974
3699
|
private readonly destroyRef;
|
|
3700
|
+
private readonly host;
|
|
3701
|
+
private readonly doc;
|
|
3702
|
+
private readonly swipe;
|
|
2975
3703
|
private autoplayTimer;
|
|
2976
3704
|
private readonly autoplayPaused;
|
|
2977
3705
|
/** Skip CSS transitions on first layout so slides don't animate in like a locale wipe. */
|
|
2978
3706
|
private readonly motionReady;
|
|
3707
|
+
/** First portal image already hinted in `<head>`, so later slides don't compete. */
|
|
3708
|
+
private lcpPreloadHref;
|
|
2979
3709
|
/** Single-slide API. */
|
|
2980
3710
|
readonly title: _angular_core.InputSignal<string>;
|
|
2981
3711
|
readonly description: _angular_core.InputSignal<string>;
|
|
@@ -3029,6 +3759,8 @@ declare class DgaHero {
|
|
|
3029
3759
|
portalCtaVariant(): 'inverse' | 'primary';
|
|
3030
3760
|
/** Secondary is always outline - inverse outline on dark portal surfaces. */
|
|
3031
3761
|
secondaryCtaVariant(): 'outlineInverse' | 'outline';
|
|
3762
|
+
/** Off-screen carousel slides stay in the DOM for the push animation. */
|
|
3763
|
+
slideInactive(i: number): boolean;
|
|
3032
3764
|
slideShellClass(i: number): string;
|
|
3033
3765
|
clampedIndex(): number;
|
|
3034
3766
|
activeTitle(): string;
|
|
@@ -3054,6 +3786,15 @@ declare class DgaHero {
|
|
|
3054
3786
|
goSlide(i: number): void;
|
|
3055
3787
|
nextSlide(): void;
|
|
3056
3788
|
prevSlide(): void;
|
|
3789
|
+
onPointerDown(event: PointerEvent): void;
|
|
3790
|
+
onPointerMove(event: PointerEvent): void;
|
|
3791
|
+
onPointerUp(event: PointerEvent): void;
|
|
3792
|
+
onPointerCancel(event: PointerEvent): void;
|
|
3793
|
+
private isRtl;
|
|
3794
|
+
/** Portal background that should win LCP. Carousels hint the first slide only. */
|
|
3795
|
+
private lcpImage;
|
|
3796
|
+
private mountLcpPreload;
|
|
3797
|
+
private upsertImagePreload;
|
|
3057
3798
|
pauseAutoplay(): void;
|
|
3058
3799
|
resumeAutoplay(): void;
|
|
3059
3800
|
onPrimary(index?: number): void;
|
|
@@ -3110,7 +3851,7 @@ declare class DgaAnnouncementBar {
|
|
|
3110
3851
|
readonly align: _angular_core.InputSignal<DgaAnnouncementAlign>;
|
|
3111
3852
|
readonly actionVariant: _angular_core.InputSignal<DgaAnnouncementActionVariant>;
|
|
3112
3853
|
readonly elevation: _angular_core.InputSignal<DgaAnnouncementElevation>;
|
|
3113
|
-
readonly icon: _angular_core.InputSignal<
|
|
3854
|
+
readonly icon: _angular_core.InputSignal<"link" | "menu" | "search" | "success" | "info" | "warning" | "error" | "access" | "alertCircle" | "ambulance" | "apple" | "arrowDown" | "arrowDown02" | "arrowLeft" | "arrowLeft02" | "arrowNext" | "arrowNext02" | "arrowPrev" | "arrowPrev02" | "arrowRight" | "arrowRight02" | "arrowUp" | "arrowUp02" | "award" | "badgeCheck" | "bell" | "bellAlt" | "book" | "bookType" | "brain" | "building" | "calendar" | "calendarAlt" | "cart" | "check" | "checkCircle" | "checkCircleAlt" | "chevronDown" | "chevronLeft" | "chevronRight" | "clock" | "close" | "cloud" | "colorPicker" | "colors" | "cookie" | "copy" | "desert" | "devices" | "disability" | "door" | "download" | "droplet" | "external" | "eye" | "eyeOff" | "eyeOffSlash" | "facebook" | "filter" | "fire" | "flash" | "folder" | "glasses" | "globe" | "heading" | "headphones" | "helpCircle" | "highlighter" | "home" | "huawei" | "idCard" | "instagram" | "letterSpacing" | "linkAlt" | "linkedin" | "location" | "lock" | "lockPassword" | "logout" | "mail" | "mask" | "maximize" | "menuAlt" | "message" | "mic" | "minus" | "moon" | "moonAlt" | "moonCloud" | "moreHorizontal" | "moreVertical" | "paintBoard" | "pause" | "phone" | "playStore" | "plus" | "plusSign" | "police" | "printer" | "rain" | "rainZap" | "refresh" | "riyal" | "share" | "shrink" | "smartphone" | "snow" | "sort" | "sortDown" | "sortUp" | "star" | "starFilled" | "sun" | "sunAlt" | "sunCloud" | "textAlign" | "textFont" | "textUnderline" | "touch" | "tradeDown" | "tradeUp" | "translation" | "upload" | "user" | "users" | "whatsapp" | "wheelchair" | "wind" | "x" | "youtube" | "zoomIn" | "zoomOut" | null>;
|
|
3114
3855
|
readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3115
3856
|
readonly dismissLabel: _angular_core.InputSignal<string>;
|
|
3116
3857
|
readonly actionLabel: _angular_core.InputSignal<string>;
|
|
@@ -3258,6 +3999,68 @@ declare class DgaLogoTile {
|
|
|
3258
3999
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaLogoTile, "dga-logo-tile", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "src": { "alias": "src"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3259
4000
|
}
|
|
3260
4001
|
|
|
4002
|
+
type DgaThemeToggleSurface = 'default' | 'compact';
|
|
4003
|
+
/**
|
|
4004
|
+
* Dark / light theme toggle wired to {@link DgaThemeService}.
|
|
4005
|
+
* Bind icons and labels to `themeChanges` (updated when the reveal commits).
|
|
4006
|
+
*
|
|
4007
|
+
* @example
|
|
4008
|
+
* ```html
|
|
4009
|
+
* <dga-theme-toggle />
|
|
4010
|
+
* <dga-theme-toggle surface="compact" />
|
|
4011
|
+
* ```
|
|
4012
|
+
*/
|
|
4013
|
+
declare class DgaThemeToggle {
|
|
4014
|
+
private readonly theme;
|
|
4015
|
+
/** Tooltip / aria when switching *to* dark. */
|
|
4016
|
+
readonly darkLabel: _angular_core.InputSignal<string>;
|
|
4017
|
+
/** Tooltip / aria when switching *to* light. */
|
|
4018
|
+
readonly lightLabel: _angular_core.InputSignal<string>;
|
|
4019
|
+
/** Hit-target sizing. */
|
|
4020
|
+
readonly surface: _angular_core.InputSignal<DgaThemeToggleSurface>;
|
|
4021
|
+
readonly isDark: _angular_core.Signal<boolean>;
|
|
4022
|
+
readonly label: _angular_core.Signal<string>;
|
|
4023
|
+
readonly btnSize: _angular_core.Signal<"sm" | "md">;
|
|
4024
|
+
readonly iconSize: _angular_core.Signal<"sm" | "md">;
|
|
4025
|
+
readonly actionClass: _angular_core.Signal<string>;
|
|
4026
|
+
onToggle(event: Event): void;
|
|
4027
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaThemeToggle, never>;
|
|
4028
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaThemeToggle, "dga-theme-toggle", never, { "darkLabel": { "alias": "darkLabel"; "required": false; "isSignal": true; }; "lightLabel": { "alias": "lightLabel"; "required": false; "isSignal": true; }; "surface": { "alias": "surface"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4029
|
+
}
|
|
4030
|
+
|
|
4031
|
+
/**
|
|
4032
|
+
* Language picker listing registered locales from {@link DgaLocaleService}.
|
|
4033
|
+
* Closes on outside pointer / Escape. Dropdown is absolutely positioned.
|
|
4034
|
+
*
|
|
4035
|
+
* @example
|
|
4036
|
+
* ```html
|
|
4037
|
+
* <dga-locale-toggle />
|
|
4038
|
+
* <dga-locale-toggle tooltipLabel="Language" />
|
|
4039
|
+
* ```
|
|
4040
|
+
*/
|
|
4041
|
+
declare class DgaLocaleToggle {
|
|
4042
|
+
private readonly localeService;
|
|
4043
|
+
private readonly hostRef;
|
|
4044
|
+
private readonly destroyRef;
|
|
4045
|
+
/** Override the automatic “Language: …” tooltip. */
|
|
4046
|
+
readonly tooltipLabel: _angular_core.InputSignal<string | undefined>;
|
|
4047
|
+
readonly locales: readonly _a_nemreen_dga_tokens.DgaLocaleDefinition[];
|
|
4048
|
+
readonly open: _angular_core.WritableSignal<boolean>;
|
|
4049
|
+
readonly locale: _angular_core.Signal<string>;
|
|
4050
|
+
private readonly seq;
|
|
4051
|
+
readonly listId: string;
|
|
4052
|
+
readonly triggerClass: string;
|
|
4053
|
+
readonly menuClass: string;
|
|
4054
|
+
readonly tooltip: _angular_core.Signal<string>;
|
|
4055
|
+
constructor();
|
|
4056
|
+
toggleMenu(event: Event): void;
|
|
4057
|
+
pick(code: DgaLocale, event: Event): void;
|
|
4058
|
+
onDocPointer(event: PointerEvent): void;
|
|
4059
|
+
onEscape(): void;
|
|
4060
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaLocaleToggle, never>;
|
|
4061
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaLocaleToggle, "dga-locale-toggle", never, { "tooltipLabel": { "alias": "tooltipLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4062
|
+
}
|
|
4063
|
+
|
|
3261
4064
|
declare class DgaPersona {
|
|
3262
4065
|
readonly name: _angular_core.InputSignal<string>;
|
|
3263
4066
|
readonly subtitle: _angular_core.InputSignal<string>;
|
|
@@ -3509,6 +4312,198 @@ declare class DgaRiyal {
|
|
|
3509
4312
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaRiyal, "dga-riyal", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "tone": { "alias": "tone"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "amount": { "alias": "amount"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3510
4313
|
}
|
|
3511
4314
|
|
|
4315
|
+
type DgaQrErrorCorrection = 'L' | 'M' | 'Q' | 'H';
|
|
4316
|
+
interface DgaQrMatrix {
|
|
4317
|
+
/** Modules per side (21–177). */
|
|
4318
|
+
size: number;
|
|
4319
|
+
/** modules[y][x] — true = dark. */
|
|
4320
|
+
modules: boolean[][];
|
|
4321
|
+
}
|
|
4322
|
+
/**
|
|
4323
|
+
* Encode text/URL into a QR module matrix.
|
|
4324
|
+
* Throws RangeError when the payload exceeds QR capacity.
|
|
4325
|
+
*/
|
|
4326
|
+
declare function dgaEncodeQr(text: string, errorCorrection?: DgaQrErrorCorrection): DgaQrMatrix;
|
|
4327
|
+
|
|
4328
|
+
type DgaQrView = 'svg' | 'canvas' | 'img';
|
|
4329
|
+
type DgaQrSizeToken = 'sm' | 'md' | 'lg' | 'xl';
|
|
4330
|
+
type DgaQrSize = DgaQrSizeToken | number;
|
|
4331
|
+
type DgaQrAnimate = 'none' | 'fade' | 'scale' | 'reveal';
|
|
4332
|
+
|
|
4333
|
+
/**
|
|
4334
|
+
* QR code generator: pass a URL/text via `value` and it renders automatically.
|
|
4335
|
+
*
|
|
4336
|
+
* @example
|
|
4337
|
+
* ```html
|
|
4338
|
+
* <dga-qr value="https://example.gov.sa" size="md" [actions]="true" />
|
|
4339
|
+
* <dga-qr value="https://example.gov.sa" view="canvas" color="#006c35" animate="scale" />
|
|
4340
|
+
* ```
|
|
4341
|
+
*/
|
|
4342
|
+
declare class DgaQr {
|
|
4343
|
+
private readonly toasts;
|
|
4344
|
+
private readonly canvasEl;
|
|
4345
|
+
/** Payload to encode (URL or any text). */
|
|
4346
|
+
readonly value: _angular_core.InputSignal<string>;
|
|
4347
|
+
/** Render target. */
|
|
4348
|
+
readonly view: _angular_core.InputSignal<DgaQrView>;
|
|
4349
|
+
/** Token size or pixel length. */
|
|
4350
|
+
readonly size: _angular_core.InputSignal<DgaQrSize>;
|
|
4351
|
+
/** Dark module color. */
|
|
4352
|
+
readonly color: _angular_core.InputSignal<string>;
|
|
4353
|
+
/** Light / background color. */
|
|
4354
|
+
readonly background: _angular_core.InputSignal<string>;
|
|
4355
|
+
/** Error correction level. */
|
|
4356
|
+
readonly errorCorrection: _angular_core.InputSignal<DgaQrErrorCorrection>;
|
|
4357
|
+
/** Quiet-zone modules around the symbol. */
|
|
4358
|
+
readonly margin: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
4359
|
+
/** Accessible label when the QR is meaningful alone. */
|
|
4360
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
4361
|
+
/** Show Download + Copy buttons. */
|
|
4362
|
+
readonly actions: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4363
|
+
/** Load-in animation; replays when `value` changes. */
|
|
4364
|
+
readonly animate: _angular_core.InputSignal<DgaQrAnimate>;
|
|
4365
|
+
/** Download filename base (extension added automatically). */
|
|
4366
|
+
readonly downloadName: _angular_core.InputSignal<string>;
|
|
4367
|
+
readonly ready: _angular_core.OutputEmitterRef<DgaQrMatrix>;
|
|
4368
|
+
readonly downloaded: _angular_core.OutputEmitterRef<string>;
|
|
4369
|
+
readonly copied: _angular_core.OutputEmitterRef<string>;
|
|
4370
|
+
readonly matrix: _angular_core.WritableSignal<DgaQrMatrix | null>;
|
|
4371
|
+
readonly playTick: _angular_core.WritableSignal<number>;
|
|
4372
|
+
readonly imgSrc: _angular_core.WritableSignal<string>;
|
|
4373
|
+
readonly sizeToken: _angular_core.Signal<DgaQrSizeToken | null>;
|
|
4374
|
+
readonly pixelSize: _angular_core.Signal<number>;
|
|
4375
|
+
readonly sizeCss: _angular_core.Signal<string>;
|
|
4376
|
+
readonly svgViewBox: _angular_core.Signal<string>;
|
|
4377
|
+
readonly svgPath: _angular_core.Signal<string>;
|
|
4378
|
+
constructor();
|
|
4379
|
+
hostClasses(): string;
|
|
4380
|
+
frameClasses(): string;
|
|
4381
|
+
actionsLabel(): string;
|
|
4382
|
+
downloadLabel(): string;
|
|
4383
|
+
copyLabel(): string;
|
|
4384
|
+
onCopy(): Promise<void>;
|
|
4385
|
+
onDownload(): void;
|
|
4386
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaQr, never>;
|
|
4387
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaQr, "dga-qr", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "view": { "alias": "view"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; "errorCorrection": { "alias": "errorCorrection"; "required": false; "isSignal": true; }; "margin": { "alias": "margin"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "animate": { "alias": "animate"; "required": false; "isSignal": true; }; "downloadName": { "alias": "downloadName"; "required": false; "isSignal": true; }; }, { "ready": "ready"; "downloaded": "downloaded"; "copied": "copied"; }, never, never, true, never>;
|
|
4388
|
+
}
|
|
4389
|
+
|
|
4390
|
+
/**
|
|
4391
|
+
* Compact Code 128 encoder (Code Set B + Auto C for digit pairs).
|
|
4392
|
+
* Patterns follow ISO/IEC 15417. Zero npm deps — same approach as dga-qr.
|
|
4393
|
+
*/
|
|
4394
|
+
interface DgaBarcodeMatrix {
|
|
4395
|
+
/** Bar/space modules left→right (true = bar). Includes quiet zones. */
|
|
4396
|
+
modules: boolean[];
|
|
4397
|
+
/** Human-readable payload that was encoded. */
|
|
4398
|
+
text: string;
|
|
4399
|
+
/** Quiet-zone modules on each side. */
|
|
4400
|
+
quietZone: number;
|
|
4401
|
+
}
|
|
4402
|
+
/**
|
|
4403
|
+
* Encode text as Code 128 (auto B/C). Throws if a character cannot be encoded.
|
|
4404
|
+
*/
|
|
4405
|
+
declare function dgaEncodeBarcode(text: string, quietZone?: number): DgaBarcodeMatrix;
|
|
4406
|
+
|
|
4407
|
+
type DgaBarcodeFormat = 'code128';
|
|
4408
|
+
/**
|
|
4409
|
+
* Linear barcode (Code 128). Pair with `dga-qr` on tickets and receipts.
|
|
4410
|
+
*
|
|
4411
|
+
* @example
|
|
4412
|
+
* ```html
|
|
4413
|
+
* <dga-barcode value="TKT-2026-0042" [displayValue]="true" [actions]="true" />
|
|
4414
|
+
* ```
|
|
4415
|
+
*/
|
|
4416
|
+
declare class DgaBarcode {
|
|
4417
|
+
/** Payload to encode (ASCII printable). */
|
|
4418
|
+
readonly value: _angular_core.InputSignal<string>;
|
|
4419
|
+
/** Symbology — Code 128 only for now. */
|
|
4420
|
+
readonly format: _angular_core.InputSignal<"code128">;
|
|
4421
|
+
/** Bar height in CSS pixels. */
|
|
4422
|
+
readonly height: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
4423
|
+
/** Module (bar unit) width in CSS pixels. */
|
|
4424
|
+
readonly moduleWidth: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
4425
|
+
/** Quiet-zone modules on each side. */
|
|
4426
|
+
readonly quietZone: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
4427
|
+
/** Show human-readable text under the bars. */
|
|
4428
|
+
readonly displayValue: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4429
|
+
/** Bar color. */
|
|
4430
|
+
readonly color: _angular_core.InputSignal<string>;
|
|
4431
|
+
/** Background / quiet-zone color. */
|
|
4432
|
+
readonly background: _angular_core.InputSignal<string>;
|
|
4433
|
+
/** Accessible label when the barcode is meaningful alone. */
|
|
4434
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
4435
|
+
/** Show download action. */
|
|
4436
|
+
readonly actions: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4437
|
+
/** Download filename base. */
|
|
4438
|
+
readonly downloadName: _angular_core.InputSignal<string>;
|
|
4439
|
+
readonly ready: _angular_core.OutputEmitterRef<DgaBarcodeMatrix>;
|
|
4440
|
+
readonly downloaded: _angular_core.OutputEmitterRef<string>;
|
|
4441
|
+
readonly matrix: _angular_core.WritableSignal<DgaBarcodeMatrix | null>;
|
|
4442
|
+
readonly barHeight: _angular_core.Signal<number>;
|
|
4443
|
+
readonly modulePx: _angular_core.Signal<number>;
|
|
4444
|
+
readonly svgWidth: _angular_core.Signal<number>;
|
|
4445
|
+
readonly svgViewBox: _angular_core.Signal<string>;
|
|
4446
|
+
readonly svgPath: _angular_core.Signal<string>;
|
|
4447
|
+
constructor();
|
|
4448
|
+
hostClasses(): string;
|
|
4449
|
+
actionsLabel(): string;
|
|
4450
|
+
downloadLabel(): string;
|
|
4451
|
+
onDownload(): void;
|
|
4452
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaBarcode, never>;
|
|
4453
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaBarcode, "dga-barcode", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "format": { "alias": "format"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "moduleWidth": { "alias": "moduleWidth"; "required": false; "isSignal": true; }; "quietZone": { "alias": "quietZone"; "required": false; "isSignal": true; }; "displayValue": { "alias": "displayValue"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "downloadName": { "alias": "downloadName"; "required": false; "isSignal": true; }; }, { "ready": "ready"; "downloaded": "downloaded"; }, never, never, true, never>;
|
|
4454
|
+
}
|
|
4455
|
+
|
|
4456
|
+
type DgaMapEmbedAspect = 'video' | 'wide' | 'square' | 'portrait';
|
|
4457
|
+
/**
|
|
4458
|
+
* Safe map iframe — only allowlisted embed URLs (Google / Apple / OSM / .gov.sa).
|
|
4459
|
+
* Arbitrary iframes are rejected and an accessible error is shown instead.
|
|
4460
|
+
*
|
|
4461
|
+
* @example
|
|
4462
|
+
* ```html
|
|
4463
|
+
* <dga-map-embed
|
|
4464
|
+
* title="Headquarters"
|
|
4465
|
+
* src="https://www.google.com/maps/embed?pb=…"
|
|
4466
|
+
* aspect="video"
|
|
4467
|
+
* />
|
|
4468
|
+
* ```
|
|
4469
|
+
*/
|
|
4470
|
+
declare class DgaMapEmbed {
|
|
4471
|
+
private readonly sanitizer;
|
|
4472
|
+
/** Embed URL — must pass `dgaIsAllowedMapEmbedUrl`. */
|
|
4473
|
+
readonly src: _angular_core.InputSignal<string>;
|
|
4474
|
+
/** Required accessible name for the iframe. */
|
|
4475
|
+
readonly title: _angular_core.InputSignal<string>;
|
|
4476
|
+
/** Aspect-ratio token. */
|
|
4477
|
+
readonly aspect: _angular_core.InputSignal<DgaMapEmbedAspect>;
|
|
4478
|
+
/**
|
|
4479
|
+
* Optional iframe sandbox tokens. Empty by default — Google Maps embeds break
|
|
4480
|
+
* under sandbox; rely on the URL allowlist instead. Set explicitly when needed.
|
|
4481
|
+
*/
|
|
4482
|
+
readonly sandbox: _angular_core.InputSignal<string>;
|
|
4483
|
+
/** Optional fixed height in px (overrides aspect when set). */
|
|
4484
|
+
readonly height: _angular_core.InputSignalWithTransform<number | null, unknown>;
|
|
4485
|
+
readonly allowed: _angular_core.Signal<boolean>;
|
|
4486
|
+
readonly canEmbed: _angular_core.Signal<boolean>;
|
|
4487
|
+
readonly safeSrc: _angular_core.Signal<SafeResourceUrl>;
|
|
4488
|
+
readonly aspectCss: _angular_core.Signal<string | null>;
|
|
4489
|
+
readonly shellStyle: _angular_core.Signal<{
|
|
4490
|
+
height: string | null;
|
|
4491
|
+
aspectRatio: string | null;
|
|
4492
|
+
}>;
|
|
4493
|
+
frameClasses(): string;
|
|
4494
|
+
blockedTitle(): string;
|
|
4495
|
+
blockedBody(): string;
|
|
4496
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaMapEmbed, never>;
|
|
4497
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaMapEmbed, "dga-map-embed", never, { "src": { "alias": "src"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": true; "isSignal": true; }; "aspect": { "alias": "aspect"; "required": false; "isSignal": true; }; "sandbox": { "alias": "sandbox"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4498
|
+
}
|
|
4499
|
+
|
|
4500
|
+
/**
|
|
4501
|
+
* Allowlist check for map embed iframes — never load arbitrary URLs.
|
|
4502
|
+
* Google Maps embed, Apple Maps, OpenStreetMap, and common .gov.sa GIS embeds.
|
|
4503
|
+
*/
|
|
4504
|
+
/** True when `url` is a permitted map embed (https + allowlisted host/path). */
|
|
4505
|
+
declare function dgaIsAllowedMapEmbedUrl(url: string): boolean;
|
|
4506
|
+
|
|
3512
4507
|
type DgaMetricTrend = 'up' | 'down' | 'neutral';
|
|
3513
4508
|
/** `stat` = portal home metrics (icon well, value, label, centered). */
|
|
3514
4509
|
type DgaMetricAppearance = 'default' | 'stat';
|
|
@@ -3527,23 +4522,267 @@ declare class DgaMetric {
|
|
|
3527
4522
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaMetric, "dga-metric", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": true; "isSignal": true; }; "delta": { "alias": "delta"; "required": false; "isSignal": true; }; "trend": { "alias": "trend"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; }, {}, never, ["[dgaMetricIcon]"], true, never>;
|
|
3528
4523
|
}
|
|
3529
4524
|
|
|
4525
|
+
type DgaStatStripTrend = DgaMetricTrend;
|
|
4526
|
+
interface DgaStatStripItem {
|
|
4527
|
+
id?: string;
|
|
4528
|
+
label: string;
|
|
4529
|
+
value: string;
|
|
4530
|
+
delta?: string;
|
|
4531
|
+
trend?: DgaStatStripTrend;
|
|
4532
|
+
}
|
|
4533
|
+
/**
|
|
4534
|
+
* Dense horizontal KPI strip for portal dashboards.
|
|
4535
|
+
* Prefer `dga-metric` when each KPI needs a full card.
|
|
4536
|
+
*
|
|
4537
|
+
* @example
|
|
4538
|
+
* ```html
|
|
4539
|
+
* <dga-stat-strip [items]="stats" />
|
|
4540
|
+
* ```
|
|
4541
|
+
*/
|
|
4542
|
+
declare class DgaStatStrip {
|
|
4543
|
+
private readonly uiLocale;
|
|
4544
|
+
readonly items: _angular_core.InputSignal<DgaStatStripItem[]>;
|
|
4545
|
+
/** Accessible name for the strip. */
|
|
4546
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
4547
|
+
/** `divided` adds separators between items. */
|
|
4548
|
+
readonly appearance: _angular_core.InputSignal<"plain" | "divided" | "card">;
|
|
4549
|
+
readonly listClasses: _angular_core.Signal<string>;
|
|
4550
|
+
readonly itemClasses: _angular_core.Signal<string>;
|
|
4551
|
+
trackItem(item: DgaStatStripItem, index: number): string;
|
|
4552
|
+
deltaClasses(trend: DgaStatStripTrend | undefined): string;
|
|
4553
|
+
trendGlyph(trend: DgaStatStripTrend | undefined): string;
|
|
4554
|
+
trendLabel(trend: DgaStatStripTrend | undefined): string;
|
|
4555
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaStatStrip, never>;
|
|
4556
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaStatStrip, "dga-stat-strip", never, { "items": { "alias": "items"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4557
|
+
}
|
|
4558
|
+
|
|
4559
|
+
interface DgaFaqItem {
|
|
4560
|
+
id: string;
|
|
4561
|
+
question: string;
|
|
4562
|
+
answer: string;
|
|
4563
|
+
/** Open this item on first render. */
|
|
4564
|
+
open?: boolean;
|
|
4565
|
+
}
|
|
4566
|
+
/**
|
|
4567
|
+
* FAQ pattern on top of `dga-accordion`: Q&A sections plus optional FAQPage JSON-LD.
|
|
4568
|
+
*
|
|
4569
|
+
* @example
|
|
4570
|
+
* ```html
|
|
4571
|
+
* <dga-faq [items]="items" heading="الأسئلة الشائعة" />
|
|
4572
|
+
* ```
|
|
4573
|
+
*/
|
|
4574
|
+
declare class DgaFaq {
|
|
4575
|
+
private readonly document;
|
|
4576
|
+
private readonly destroyRef;
|
|
4577
|
+
readonly items: _angular_core.InputSignal<readonly DgaFaqItem[]>;
|
|
4578
|
+
/** Optional visible heading above the accordion. */
|
|
4579
|
+
readonly heading: _angular_core.InputSignal<string>;
|
|
4580
|
+
/** Accessible name when heading is empty. */
|
|
4581
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
4582
|
+
/** Allow multiple answers open at once. */
|
|
4583
|
+
readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4584
|
+
/** Emit FAQPage JSON-LD into `<head>` while mounted. */
|
|
4585
|
+
readonly jsonLd: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4586
|
+
readonly sections: _angular_core.Signal<DgaAccordionSection[]>;
|
|
4587
|
+
private scriptEl;
|
|
4588
|
+
constructor();
|
|
4589
|
+
private writeJsonLd;
|
|
4590
|
+
private removeJsonLd;
|
|
4591
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaFaq, never>;
|
|
4592
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaFaq, "dga-faq", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "heading": { "alias": "heading"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "jsonLd": { "alias": "jsonLd"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4593
|
+
}
|
|
4594
|
+
|
|
4595
|
+
/** Calendar system for date values and the picker UI. */
|
|
4596
|
+
type DgaDateCalendar = 'gregorian' | 'hijri';
|
|
4597
|
+
/** Picker UI mode — inferred from `format` tokens when not set explicitly. */
|
|
4598
|
+
type DgaDatePickerMode = 'day' | 'month' | 'year';
|
|
4599
|
+
type DgaDateLocale = string;
|
|
4600
|
+
interface DgaCalendarParts {
|
|
4601
|
+
year: number;
|
|
4602
|
+
month: number;
|
|
4603
|
+
day: number;
|
|
4604
|
+
}
|
|
4605
|
+
declare const DGA_HIJRI_MONTHS: {
|
|
4606
|
+
readonly ar: readonly ["محرم", "صفر", "ربيع الأول", "ربيع الثاني", "جمادى الأولى", "جمادى الآخرة", "رجب", "شعبان", "رمضان", "شوال", "ذو القعدة", "ذو الحجة"];
|
|
4607
|
+
readonly en: readonly ["Muharram", "Safar", "Rabi I", "Rabi II", "Jumada I", "Jumada II", "Rajab", "Sha'ban", "Ramadan", "Shawwal", "Dhu al-Qi'dah", "Dhu al-Hijjah"];
|
|
4608
|
+
};
|
|
4609
|
+
declare const DGA_GREGORIAN_MONTHS: {
|
|
4610
|
+
readonly ar: readonly ["يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو", "يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر"];
|
|
4611
|
+
readonly en: readonly ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
|
|
4612
|
+
};
|
|
4613
|
+
declare const DGA_WEEKDAYS: {
|
|
4614
|
+
readonly ar: readonly ["أحد", "إثن", "ثلا", "أرب", "خمي", "جمع", "سبت"];
|
|
4615
|
+
readonly en: readonly ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
|
|
4616
|
+
};
|
|
4617
|
+
/** Read calendar parts for a Date (UTC day). */
|
|
4618
|
+
declare function dgaGetCalendarParts(date: Date, calendar: DgaDateCalendar): DgaCalendarParts;
|
|
4619
|
+
/**
|
|
4620
|
+
* Convert calendar parts to a Date (UTC midnight).
|
|
4621
|
+
* Hijri conversion uses binary search against islamic-umalqura.
|
|
4622
|
+
*/
|
|
4623
|
+
declare function dgaPartsToDate(parts: DgaCalendarParts, calendar: DgaDateCalendar): Date;
|
|
4624
|
+
declare function dgaDaysInMonth(year: number, month: number, calendar: DgaDateCalendar): number;
|
|
4625
|
+
declare function dgaAddMonths(parts: DgaCalendarParts, delta: number, calendar: DgaDateCalendar): DgaCalendarParts;
|
|
4626
|
+
/** Infer mode from format tokens (YYYY / MM / DD). */
|
|
4627
|
+
declare function dgaModeFromFormat(format: string): DgaDatePickerMode;
|
|
4628
|
+
declare function dgaFormatDate(date: Date, format: string, calendar: DgaDateCalendar): string;
|
|
4629
|
+
declare function dgaParseDate(value: string, format: string, calendar: DgaDateCalendar): Date | null;
|
|
4630
|
+
declare function dgaSameDay(a: Date | null, b: Date | null, calendar?: DgaDateCalendar): boolean;
|
|
4631
|
+
declare function dgaCompareDays(a: Date | null, b: Date | null, calendar?: DgaDateCalendar): number;
|
|
4632
|
+
declare function dgaClampDate(date: Date, min?: Date | null, max?: Date | null, calendar?: DgaDateCalendar): Date;
|
|
4633
|
+
declare function dgaMonthNames(calendar: DgaDateCalendar, locale: string): readonly string[];
|
|
4634
|
+
/** First weekday (0=Sun) of the given calendar month. */
|
|
4635
|
+
declare function dgaMonthStartWeekday(year: number, month: number, calendar: DgaDateCalendar): number;
|
|
4636
|
+
declare function dgaTodayUtc(): Date;
|
|
4637
|
+
/** Coerce string | Date | null to UTC date using format when string. */
|
|
4638
|
+
declare function dgaCoerceDate(value: string | Date | null | undefined, format: string, calendar: DgaDateCalendar): Date | null;
|
|
4639
|
+
|
|
4640
|
+
interface DgaCalendarEvent {
|
|
4641
|
+
id: string;
|
|
4642
|
+
title: string;
|
|
4643
|
+
/** ISO Gregorian date `yyyy-mm-dd` (events stay Gregorian across calendars). */
|
|
4644
|
+
date: string;
|
|
4645
|
+
/** Optional accent color for the event indicator (CSS color). */
|
|
4646
|
+
tone?: string;
|
|
4647
|
+
}
|
|
4648
|
+
/**
|
|
4649
|
+
* Month grid with events (appointments / queues).
|
|
4650
|
+
* Named `DgaEventCalendar` to avoid clashing with top-bar `DgaCalendar` type.
|
|
4651
|
+
* Supports Gregorian and Hijri (Umm al-Qura) display via `calendar`.
|
|
4652
|
+
*/
|
|
4653
|
+
declare class DgaEventCalendar {
|
|
4654
|
+
private readonly uiLocale;
|
|
4655
|
+
private readonly ar;
|
|
4656
|
+
readonly events: _angular_core.InputSignal<DgaCalendarEvent[]>;
|
|
4657
|
+
/** Anchor date for the visible month (any day in that Gregorian month works). */
|
|
4658
|
+
readonly month: _angular_core.ModelSignal<Date>;
|
|
4659
|
+
readonly selectedDay: _angular_core.ModelSignal<string>;
|
|
4660
|
+
/** Display calendar system. */
|
|
4661
|
+
readonly calendar: _angular_core.ModelSignal<DgaDateCalendar>;
|
|
4662
|
+
readonly daySelect: _angular_core.OutputEmitterRef<string>;
|
|
4663
|
+
readonly eventSelect: _angular_core.OutputEmitterRef<DgaCalendarEvent>;
|
|
4664
|
+
readonly weekdays: _angular_core.Signal<string[]>;
|
|
4665
|
+
readonly monthLabel: _angular_core.Signal<string>;
|
|
4666
|
+
readonly prevLabel: _angular_core.Signal<"الشهر السابق" | "Previous month">;
|
|
4667
|
+
readonly nextLabel: _angular_core.Signal<"الشهر التالي" | "Next month">;
|
|
4668
|
+
readonly todayLabel: _angular_core.Signal<"اليوم" | "Today">;
|
|
4669
|
+
readonly eventsLabel: _angular_core.Signal<"أحداث اليوم" | "Events for day">;
|
|
4670
|
+
readonly pickDayLabel: _angular_core.Signal<"الأحداث" | "Events">;
|
|
4671
|
+
readonly pickDayHint: _angular_core.Signal<"اختر يوماً لعرض الأحداث" | "Select a day to view events">;
|
|
4672
|
+
readonly noEventsLabel: _angular_core.Signal<"لا توجد أحداث في هذا اليوم" | "No events on this day">;
|
|
4673
|
+
readonly gregorianLabel: _angular_core.Signal<"ميلادي" | "Gregorian">;
|
|
4674
|
+
readonly hijriLabel: _angular_core.Signal<"هجري" | "Hijri">;
|
|
4675
|
+
readonly calendarGroupLabel: _angular_core.Signal<"نظام التقويم" | "Calendar system">;
|
|
4676
|
+
readonly selectedDayLabel: _angular_core.Signal<string>;
|
|
4677
|
+
readonly eventsByDate: _angular_core.Signal<Map<string, DgaCalendarEvent[]>>;
|
|
4678
|
+
readonly todayIso: _angular_core.Signal<string>;
|
|
4679
|
+
readonly cells: _angular_core.Signal<{
|
|
4680
|
+
key: string;
|
|
4681
|
+
day: number;
|
|
4682
|
+
iso: string;
|
|
4683
|
+
inMonth: boolean;
|
|
4684
|
+
count: number;
|
|
4685
|
+
tones: string[];
|
|
4686
|
+
isToday: boolean;
|
|
4687
|
+
}[]>;
|
|
4688
|
+
readonly dayEvents: _angular_core.Signal<DgaCalendarEvent[]>;
|
|
4689
|
+
shiftMonth(delta: number): void;
|
|
4690
|
+
goToday(): void;
|
|
4691
|
+
selectDay(iso: string): void;
|
|
4692
|
+
dayClass(cell: {
|
|
4693
|
+
inMonth: boolean;
|
|
4694
|
+
iso: string;
|
|
4695
|
+
count: number;
|
|
4696
|
+
isToday: boolean;
|
|
4697
|
+
}): string;
|
|
4698
|
+
eventCountLabel(n: number): string;
|
|
4699
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaEventCalendar, never>;
|
|
4700
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaEventCalendar, "dga-event-calendar", never, { "events": { "alias": "events"; "required": false; "isSignal": true; }; "month": { "alias": "month"; "required": false; "isSignal": true; }; "selectedDay": { "alias": "selectedDay"; "required": false; "isSignal": true; }; "calendar": { "alias": "calendar"; "required": false; "isSignal": true; }; }, { "month": "monthChange"; "selectedDay": "selectedDayChange"; "calendar": "calendarChange"; "daySelect": "daySelect"; "eventSelect": "eventSelect"; }, never, never, true, never>;
|
|
4701
|
+
}
|
|
4702
|
+
|
|
4703
|
+
/** Cell template: `<ng-template dgaCellDef="status" let-row>…</ng-template>` */
|
|
4704
|
+
declare class DgaCellDef {
|
|
4705
|
+
readonly dgaCellDef: _angular_core.InputSignal<string>;
|
|
4706
|
+
readonly template: TemplateRef<any>;
|
|
4707
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaCellDef, never>;
|
|
4708
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DgaCellDef, "ng-template[dgaCellDef]", never, { "dgaCellDef": { "alias": "dgaCellDef"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
4709
|
+
}
|
|
4710
|
+
/** Expandable row body: `<ng-template dgaExpandDef let-row>…</ng-template>` */
|
|
4711
|
+
declare class DgaExpandDef {
|
|
4712
|
+
readonly template: TemplateRef<any>;
|
|
4713
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaExpandDef, never>;
|
|
4714
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DgaExpandDef, "ng-template[dgaExpandDef]", never, {}, {}, never, never, true, never>;
|
|
4715
|
+
}
|
|
4716
|
+
/** Row overflow actions: `<ng-template dgaRowActions let-row>…</ng-template>` */
|
|
4717
|
+
declare class DgaRowActionsDef {
|
|
4718
|
+
readonly template: TemplateRef<any>;
|
|
4719
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaRowActionsDef, never>;
|
|
4720
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DgaRowActionsDef, "ng-template[dgaRowActions]", never, {}, {}, never, never, true, never>;
|
|
4721
|
+
}
|
|
4722
|
+
/** Custom mobile card: `<ng-template dgaCardDef let-row>…</ng-template>` */
|
|
4723
|
+
declare class DgaCardDef {
|
|
4724
|
+
readonly template: TemplateRef<any>;
|
|
4725
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaCardDef, never>;
|
|
4726
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DgaCardDef, "ng-template[dgaCardDef]", never, {}, {}, never, never, true, never>;
|
|
4727
|
+
}
|
|
4728
|
+
interface DgaCellContext {
|
|
4729
|
+
$implicit: Record<string, unknown>;
|
|
4730
|
+
row: Record<string, unknown>;
|
|
4731
|
+
column?: string;
|
|
4732
|
+
index: number;
|
|
4733
|
+
}
|
|
4734
|
+
|
|
3530
4735
|
interface DgaTableColumn<T = Record<string, unknown>> {
|
|
3531
4736
|
key: string;
|
|
3532
4737
|
label: string;
|
|
3533
4738
|
sortable?: boolean;
|
|
4739
|
+
/** Show a text filter under the header. */
|
|
4740
|
+
filterable?: boolean;
|
|
4741
|
+
/** Pin column to the inline-start or inline-end edge while scrolling. */
|
|
4742
|
+
pinned?: 'start' | 'end';
|
|
4743
|
+
/** Optional CSS width (e.g. `8rem`, `120px`). */
|
|
4744
|
+
width?: string;
|
|
4745
|
+
/** Client sort strategy when not using `compare`. */
|
|
4746
|
+
sortType?: 'string' | 'number' | 'date';
|
|
4747
|
+
/** Custom client comparator (a, b cell values). */
|
|
4748
|
+
compare?: (a: unknown, b: unknown) => number;
|
|
3534
4749
|
}
|
|
3535
4750
|
type DgaSortDir = 'asc' | 'desc';
|
|
3536
4751
|
type DgaTableDensity = 'comfortable' | 'compact';
|
|
4752
|
+
type DgaTableViewMode = 'table' | 'cards' | 'auto';
|
|
4753
|
+
type DgaTableResolvedView = 'table' | 'cards';
|
|
4754
|
+
interface DgaTableSortEvent {
|
|
4755
|
+
key: string;
|
|
4756
|
+
dir: DgaSortDir;
|
|
4757
|
+
}
|
|
4758
|
+
interface DgaTableFilterEvent {
|
|
4759
|
+
/** Column key → filter query (empty string clears). */
|
|
4760
|
+
filters: Record<string, string>;
|
|
4761
|
+
}
|
|
4762
|
+
interface DgaTablePageEvent {
|
|
4763
|
+
page: number;
|
|
4764
|
+
pageSize: number;
|
|
4765
|
+
}
|
|
3537
4766
|
declare class DgaTable {
|
|
4767
|
+
private readonly destroyRef;
|
|
3538
4768
|
private readonly uiLocale;
|
|
3539
4769
|
private readonly ar;
|
|
3540
4770
|
readonly columns: _angular_core.InputSignal<DgaTableColumn<Record<string, unknown>>[]>;
|
|
3541
4771
|
readonly rows: _angular_core.InputSignal<Record<string, unknown>[]>;
|
|
3542
4772
|
readonly selectable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4773
|
+
/** Enables expand controls; requires an `ng-template dgaExpandDef`. */
|
|
4774
|
+
readonly expandable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4775
|
+
/**
|
|
4776
|
+
* When true, sort/filter/page only emit events — host owns the row list
|
|
4777
|
+
* (server-driven tables).
|
|
4778
|
+
*/
|
|
4779
|
+
readonly serverSide: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3543
4780
|
readonly idKey: _angular_core.InputSignal<string>;
|
|
3544
4781
|
readonly selectedKeys: _angular_core.ModelSignal<string[]>;
|
|
3545
4782
|
readonly sortKey: _angular_core.ModelSignal<string>;
|
|
3546
4783
|
readonly sortDir: _angular_core.ModelSignal<DgaSortDir>;
|
|
4784
|
+
readonly columnFilters: _angular_core.ModelSignal<Record<string, string>>;
|
|
4785
|
+
readonly expandedKeys: _angular_core.ModelSignal<string[]>;
|
|
3547
4786
|
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
3548
4787
|
readonly selectAllLabel: _angular_core.InputSignal<string | undefined>;
|
|
3549
4788
|
readonly emptyLabel: _angular_core.InputSignal<string | undefined>;
|
|
@@ -3552,35 +4791,217 @@ declare class DgaTable {
|
|
|
3552
4791
|
readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3553
4792
|
readonly stickyHeader: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3554
4793
|
readonly hiddenKeys: _angular_core.ModelSignal<string[]>;
|
|
4794
|
+
/** 1-based page. Pagination UI shows when `pageSize > 0`. */
|
|
4795
|
+
readonly page: _angular_core.ModelSignal<number>;
|
|
4796
|
+
/** Page size; `0` disables pagination (show all rows). */
|
|
4797
|
+
readonly pageSize: _angular_core.ModelSignal<number>;
|
|
4798
|
+
/** Total rows for server-side pagination; client mode uses filtered length. */
|
|
4799
|
+
readonly total: _angular_core.InputSignal<number | undefined>;
|
|
4800
|
+
readonly pageSizeOptions: _angular_core.InputSignal<number[]>;
|
|
4801
|
+
/** Debounce for `filterChange` output (ms). Model updates stay immediate. */
|
|
4802
|
+
readonly filterDebounceMs: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
4803
|
+
/** Error message; renders alert + retry when set. */
|
|
4804
|
+
readonly error: _angular_core.InputSignal<string | null>;
|
|
4805
|
+
/**
|
|
4806
|
+
* Presentation mode. `auto` follows `cardsBreakpoint` via matchMedia.
|
|
4807
|
+
*/
|
|
4808
|
+
readonly viewMode: _angular_core.ModelSignal<DgaTableViewMode>;
|
|
4809
|
+
readonly cardsBreakpoint: _angular_core.InputSignal<string>;
|
|
4810
|
+
/** Column key used as card title; defaults to first visible column. */
|
|
4811
|
+
readonly cardTitleKey: _angular_core.InputSignal<string | undefined>;
|
|
4812
|
+
readonly sortChange: _angular_core.OutputEmitterRef<DgaTableSortEvent>;
|
|
4813
|
+
readonly filterChange: _angular_core.OutputEmitterRef<DgaTableFilterEvent>;
|
|
4814
|
+
/** Emits when the page index or page size changes (includes both). */
|
|
4815
|
+
readonly pagingChange: _angular_core.OutputEmitterRef<DgaTablePageEvent>;
|
|
4816
|
+
readonly errorRetry: _angular_core.OutputEmitterRef<void>;
|
|
3555
4817
|
readonly skeletonRows: number[];
|
|
4818
|
+
private readonly cellDefs;
|
|
4819
|
+
private readonly expandDef;
|
|
4820
|
+
private readonly rowActionsDef;
|
|
4821
|
+
private readonly cardDef;
|
|
4822
|
+
private readonly selectAllEl;
|
|
4823
|
+
private readonly cellMap;
|
|
4824
|
+
private readonly mqMatches;
|
|
4825
|
+
/** Cards-mode global search (matches any visible column). */
|
|
4826
|
+
readonly cardsQuery: _angular_core.WritableSignal<string>;
|
|
4827
|
+
private filterTimer;
|
|
4828
|
+
private skipPageEmit;
|
|
3556
4829
|
readonly resolvedLabel: _angular_core.Signal<string>;
|
|
3557
4830
|
readonly resolvedSelectAllLabel: _angular_core.Signal<string>;
|
|
3558
4831
|
readonly resolvedEmptyLabel: _angular_core.Signal<string>;
|
|
3559
4832
|
readonly selectedCountLabel: _angular_core.Signal<string>;
|
|
3560
|
-
|
|
4833
|
+
readonly retryLabel: _angular_core.Signal<"إعادة المحاولة" | "Retry">;
|
|
4834
|
+
readonly clearFiltersLabel: _angular_core.Signal<"مسح التصفية" | "Clear filters">;
|
|
4835
|
+
readonly actionsLabel: _angular_core.Signal<"إجراءات" | "Actions">;
|
|
4836
|
+
readonly pageSizeLabel: _angular_core.Signal<"لكل صفحة" | "Per page">;
|
|
4837
|
+
readonly errorTitle: _angular_core.Signal<"تعذر التحميل" | "Failed to load">;
|
|
4838
|
+
readonly cardsSearchLabel: _angular_core.Signal<"بحث" | "Search">;
|
|
4839
|
+
readonly cardsSearchPlaceholder: _angular_core.Signal<"ابحث في النتائج…" | "Search results…">;
|
|
4840
|
+
readonly cardsSortLabel: _angular_core.Signal<"فرز حسب" | "Sort by">;
|
|
4841
|
+
readonly cardsSortPlaceholder: _angular_core.Signal<"بدون فرز" | "No sort">;
|
|
4842
|
+
readonly cardsSortDirLabel: _angular_core.Signal<"تصاعدي — انقر للتبديل" | "Ascending — click to toggle" | "تنازلي — انقر للتبديل" | "Descending — click to toggle">;
|
|
4843
|
+
readonly resolvedView: _angular_core.Signal<DgaTableResolvedView>;
|
|
4844
|
+
readonly paginationEnabled: _angular_core.Signal<boolean>;
|
|
4845
|
+
readonly filteredCount: _angular_core.Signal<number>;
|
|
4846
|
+
readonly totalPages: _angular_core.Signal<number>;
|
|
4847
|
+
readonly rangeLabel: _angular_core.Signal<string>;
|
|
3561
4848
|
constructor();
|
|
4849
|
+
private bindBreakpoint;
|
|
3562
4850
|
readonly visibleColumns: _angular_core.Signal<DgaTableColumn<Record<string, unknown>>[]>;
|
|
4851
|
+
readonly filterableColumns: _angular_core.Signal<DgaTableColumn<Record<string, unknown>>[]>;
|
|
4852
|
+
readonly sortableColumns: _angular_core.Signal<DgaTableColumn<Record<string, unknown>>[]>;
|
|
4853
|
+
readonly cardTitleColumn: _angular_core.Signal<DgaTableColumn<Record<string, unknown>>>;
|
|
4854
|
+
readonly cardBodyColumns: _angular_core.Signal<DgaTableColumn<Record<string, unknown>>[]>;
|
|
3563
4855
|
readonly selectPad: _angular_core.Signal<"w-4xl px-lg py-xs" | "w-4xl px-lg py-md">;
|
|
3564
4856
|
readonly headerPad: _angular_core.Signal<string>;
|
|
3565
4857
|
readonly bodyPad: _angular_core.Signal<string>;
|
|
4858
|
+
readonly cardPad: _angular_core.Signal<"px-md py-sm" | "px-lg py-md">;
|
|
3566
4859
|
readonly rowClasses: _angular_core.Signal<string>;
|
|
3567
|
-
|
|
4860
|
+
/** Filter + sort (client) or raw rows (server). */
|
|
4861
|
+
readonly filteredRows: _angular_core.Signal<Record<string, unknown>[]>;
|
|
4862
|
+
/** Current page of rows (or all when pagination off / serverSide). */
|
|
4863
|
+
readonly displayRows: _angular_core.Signal<Record<string, unknown>[]>;
|
|
3568
4864
|
readonly allSelected: _angular_core.Signal<boolean>;
|
|
3569
4865
|
readonly someSelected: _angular_core.Signal<boolean>;
|
|
4866
|
+
hasRowActions(): boolean;
|
|
4867
|
+
hasFilterOrSortChrome(): boolean;
|
|
4868
|
+
hasActiveFilters(): boolean;
|
|
4869
|
+
onCardsSearch(value: string): void;
|
|
4870
|
+
onCardsSortKey(key: string): void;
|
|
4871
|
+
emptyHint(): string;
|
|
4872
|
+
cellTemplate(key: string): TemplateRef<DgaCellContext> | null;
|
|
4873
|
+
expandTemplate(): TemplateRef<DgaCellContext> | null;
|
|
4874
|
+
rowActionsTemplate(): TemplateRef<DgaCellContext> | null;
|
|
4875
|
+
cardTemplate(): TemplateRef<DgaCellContext> | null;
|
|
4876
|
+
cellContext(row: Record<string, unknown>, column: string | undefined, index: number): DgaCellContext;
|
|
4877
|
+
headerCellClass(col: DgaTableColumn): string;
|
|
4878
|
+
bodyCellClass(col: DgaTableColumn): string;
|
|
4879
|
+
private pinClass;
|
|
4880
|
+
filterPlaceholder(): string;
|
|
4881
|
+
filterAria(col: DgaTableColumn): string;
|
|
3570
4882
|
rowKey(row: Record<string, unknown>): string;
|
|
3571
4883
|
cellValue(row: Record<string, unknown>, key: string): string;
|
|
4884
|
+
cardTitle(row: Record<string, unknown>): string;
|
|
3572
4885
|
isSelected(row: Record<string, unknown>): boolean;
|
|
4886
|
+
isExpanded(row: Record<string, unknown>): boolean;
|
|
4887
|
+
expandLabel(row: Record<string, unknown>): string;
|
|
3573
4888
|
rowSelectLabel(row: Record<string, unknown>): string;
|
|
3574
4889
|
selectAllAria(): 'true' | 'false' | 'mixed';
|
|
3575
4890
|
emptyColspan(): number;
|
|
3576
4891
|
ariaSort(key: string): 'ascending' | 'descending' | 'none' | null;
|
|
3577
4892
|
sortGlyph(key: string): string;
|
|
3578
4893
|
toggleSort(key: string): void;
|
|
4894
|
+
onFilter(key: string, value: string): void;
|
|
4895
|
+
clearFilters(): void;
|
|
4896
|
+
onPageSizeChange(size: number): void;
|
|
4897
|
+
onPageModelChange(next: number): void;
|
|
4898
|
+
toggleExpand(row: Record<string, unknown>): void;
|
|
3579
4899
|
toggleRow(row: Record<string, unknown>): void;
|
|
3580
4900
|
toggleAll(): void;
|
|
3581
4901
|
private rowKeys;
|
|
3582
4902
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaTable, never>;
|
|
3583
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaTable, "dga-table", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "idKey": { "alias": "idKey"; "required": false; "isSignal": true; }; "selectedKeys": { "alias": "selectedKeys"; "required": false; "isSignal": true; }; "sortKey": { "alias": "sortKey"; "required": false; "isSignal": true; }; "sortDir": { "alias": "sortDir"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "hiddenKeys": { "alias": "hiddenKeys"; "required": false; "isSignal": true; }; }, { "selectedKeys": "selectedKeysChange"; "sortKey": "sortKeyChange"; "sortDir": "sortDirChange"; "hiddenKeys": "hiddenKeysChange"; },
|
|
4903
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaTable, "dga-table", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "expandable": { "alias": "expandable"; "required": false; "isSignal": true; }; "serverSide": { "alias": "serverSide"; "required": false; "isSignal": true; }; "idKey": { "alias": "idKey"; "required": false; "isSignal": true; }; "selectedKeys": { "alias": "selectedKeys"; "required": false; "isSignal": true; }; "sortKey": { "alias": "sortKey"; "required": false; "isSignal": true; }; "sortDir": { "alias": "sortDir"; "required": false; "isSignal": true; }; "columnFilters": { "alias": "columnFilters"; "required": false; "isSignal": true; }; "expandedKeys": { "alias": "expandedKeys"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "selectAllLabel": { "alias": "selectAllLabel"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "interactive": { "alias": "interactive"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "stickyHeader": { "alias": "stickyHeader"; "required": false; "isSignal": true; }; "hiddenKeys": { "alias": "hiddenKeys"; "required": false; "isSignal": true; }; "page": { "alias": "page"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "total": { "alias": "total"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "filterDebounceMs": { "alias": "filterDebounceMs"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "viewMode": { "alias": "viewMode"; "required": false; "isSignal": true; }; "cardsBreakpoint": { "alias": "cardsBreakpoint"; "required": false; "isSignal": true; }; "cardTitleKey": { "alias": "cardTitleKey"; "required": false; "isSignal": true; }; }, { "selectedKeys": "selectedKeysChange"; "sortKey": "sortKeyChange"; "sortDir": "sortDirChange"; "columnFilters": "columnFiltersChange"; "expandedKeys": "expandedKeysChange"; "hiddenKeys": "hiddenKeysChange"; "page": "pageChange"; "pageSize": "pageSizeChange"; "viewMode": "viewModeChange"; "sortChange": "sortChange"; "filterChange": "filterChange"; "pagingChange": "pagingChange"; "errorRetry": "errorRetry"; }, ["cellDefs", "expandDef", "rowActionsDef", "cardDef"], ["[dgaTableToolbar]", "[dgaTableError]", "[dgaTableBulk]", "[dgaTableFooter]", "[dgaTableEmpty]"], true, never>;
|
|
4904
|
+
}
|
|
4905
|
+
|
|
4906
|
+
/**
|
|
4907
|
+
* Checkbox list that two-way binds `hiddenKeys` for `dga-table`.
|
|
4908
|
+
* Project into `[dgaTableToolbar]` or place beside the table.
|
|
4909
|
+
*/
|
|
4910
|
+
declare class DgaTableColumnPicker {
|
|
4911
|
+
private readonly uiLocale;
|
|
4912
|
+
private readonly ar;
|
|
4913
|
+
readonly columns: _angular_core.InputSignal<DgaTableColumn<Record<string, unknown>>[]>;
|
|
4914
|
+
readonly hiddenKeys: _angular_core.ModelSignal<string[]>;
|
|
4915
|
+
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
4916
|
+
readonly resolvedLabel: _angular_core.Signal<string>;
|
|
4917
|
+
isVisible(key: string): boolean;
|
|
4918
|
+
toggle(key: string): void;
|
|
4919
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaTableColumnPicker, never>;
|
|
4920
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaTableColumnPicker, "dga-table-column-picker", never, { "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "hiddenKeys": { "alias": "hiddenKeys"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, { "hiddenKeys": "hiddenKeysChange"; }, never, never, true, never>;
|
|
4921
|
+
}
|
|
4922
|
+
|
|
4923
|
+
/** Context for `ng-template dgaVirtualItem let-item let-index="index"`. */
|
|
4924
|
+
interface DgaVirtualItemContext<T = unknown> {
|
|
4925
|
+
$implicit: T;
|
|
4926
|
+
index: number;
|
|
4927
|
+
}
|
|
4928
|
+
/**
|
|
4929
|
+
* Marks the item row template for {@link DgaVirtualList}.
|
|
4930
|
+
*
|
|
4931
|
+
* @example
|
|
4932
|
+
* ```html
|
|
4933
|
+
* <ng-template dgaVirtualItem let-item let-index="index">
|
|
4934
|
+
* {{ index }} — {{ item.name }}
|
|
4935
|
+
* </ng-template>
|
|
4936
|
+
* ```
|
|
4937
|
+
*/
|
|
4938
|
+
declare class DgaVirtualItem<T = unknown> {
|
|
4939
|
+
readonly template: TemplateRef<any>;
|
|
4940
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaVirtualItem<any>, never>;
|
|
4941
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DgaVirtualItem<any>, "ng-template[dgaVirtualItem]", never, {}, {}, never, never, true, never>;
|
|
4942
|
+
}
|
|
4943
|
+
interface VisibleRow {
|
|
4944
|
+
item: unknown;
|
|
4945
|
+
index: number;
|
|
4946
|
+
track: string | number;
|
|
4947
|
+
}
|
|
4948
|
+
/**
|
|
4949
|
+
* Pure Angular virtual list (no CDK). Renders a window of rows with a
|
|
4950
|
+
* transform / total-height spacer. Emits `scrolledToEnd` near the bottom
|
|
4951
|
+
* for infinite-scroll consumers.
|
|
4952
|
+
*
|
|
4953
|
+
* @example
|
|
4954
|
+
* ```html
|
|
4955
|
+
* <dga-virtual-list
|
|
4956
|
+
* [items]="rows"
|
|
4957
|
+
* [itemHeight]="48"
|
|
4958
|
+
* trackByKey="id"
|
|
4959
|
+
* [loadingMore]="busy"
|
|
4960
|
+
* (scrolledToEnd)="loadMore()"
|
|
4961
|
+
* >
|
|
4962
|
+
* <ng-template dgaVirtualItem let-item let-index="index">
|
|
4963
|
+
* <div class="px-lg py-md">{{ item.label }}</div>
|
|
4964
|
+
* </ng-template>
|
|
4965
|
+
* <span dgaVirtualLoading>تحميل المزيد…</span>
|
|
4966
|
+
* </dga-virtual-list>
|
|
4967
|
+
* ```
|
|
4968
|
+
*/
|
|
4969
|
+
declare class DgaVirtualList {
|
|
4970
|
+
private readonly injector;
|
|
4971
|
+
private readonly viewportRef;
|
|
4972
|
+
/** Projected item template (`ng-template dgaVirtualItem`). */
|
|
4973
|
+
readonly itemDef: _angular_core.Signal<DgaVirtualItem<any> | undefined>;
|
|
4974
|
+
/** Full data set (only the visible window is rendered). */
|
|
4975
|
+
readonly items: _angular_core.InputSignal<unknown[]>;
|
|
4976
|
+
/** Fixed row height in pixels. */
|
|
4977
|
+
readonly itemHeight: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
4978
|
+
/** Extra rows above/below the viewport. */
|
|
4979
|
+
readonly overscan: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
4980
|
+
/** CSS height of the scroll viewport. */
|
|
4981
|
+
readonly height: _angular_core.InputSignal<string>;
|
|
4982
|
+
/**
|
|
4983
|
+
* When set, track rows by `item[trackByKey]` (object id field).
|
|
4984
|
+
* Otherwise track by index.
|
|
4985
|
+
*/
|
|
4986
|
+
readonly trackByKey: _angular_core.InputSignal<string | undefined>;
|
|
4987
|
+
/** Show the loading footer (infinite scroll). */
|
|
4988
|
+
readonly loadingMore: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
4989
|
+
/** Fires when the user scrolls near the bottom. */
|
|
4990
|
+
readonly scrolledToEnd: _angular_core.OutputEmitterRef<void>;
|
|
4991
|
+
private readonly scrollTop;
|
|
4992
|
+
private readonly viewportHeight;
|
|
4993
|
+
private endEmittedForLength;
|
|
4994
|
+
readonly totalHeight: _angular_core.Signal<number>;
|
|
4995
|
+
readonly startIndex: _angular_core.Signal<number>;
|
|
4996
|
+
readonly endIndex: _angular_core.Signal<number>;
|
|
4997
|
+
readonly offsetY: _angular_core.Signal<number>;
|
|
4998
|
+
readonly visibleRows: _angular_core.Signal<VisibleRow[]>;
|
|
4999
|
+
constructor();
|
|
5000
|
+
onScroll(): void;
|
|
5001
|
+
private checkScrolledToEnd;
|
|
5002
|
+
private trackOf;
|
|
5003
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaVirtualList, never>;
|
|
5004
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaVirtualList, "dga-virtual-list", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "itemHeight": { "alias": "itemHeight"; "required": false; "isSignal": true; }; "overscan": { "alias": "overscan"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "trackByKey": { "alias": "trackByKey"; "required": false; "isSignal": true; }; "loadingMore": { "alias": "loadingMore"; "required": false; "isSignal": true; }; }, { "scrolledToEnd": "scrolledToEnd"; }, ["itemDef"], ["[dgaVirtualLoading]"], true, never>;
|
|
3584
5005
|
}
|
|
3585
5006
|
|
|
3586
5007
|
interface DgaExportColumn {
|
|
@@ -3658,6 +5079,8 @@ declare class DgaCarouselSlideDirective {
|
|
|
3658
5079
|
declare class DgaCarousel {
|
|
3659
5080
|
private readonly destroyRef;
|
|
3660
5081
|
private readonly host;
|
|
5082
|
+
private readonly swipe;
|
|
5083
|
+
private drag;
|
|
3661
5084
|
private readonly track;
|
|
3662
5085
|
private readonly projected;
|
|
3663
5086
|
/** Simple title/body slides (gallery). When non-empty, enables simple mode. */
|
|
@@ -3708,6 +5131,13 @@ declare class DgaCarousel {
|
|
|
3708
5131
|
prevPage(): void;
|
|
3709
5132
|
nextPage(): void;
|
|
3710
5133
|
onTrackScroll(): void;
|
|
5134
|
+
onSimplePointerDown(event: PointerEvent): void;
|
|
5135
|
+
onSimplePointerMove(event: PointerEvent): void;
|
|
5136
|
+
onSimplePointerUp(event: PointerEvent): void;
|
|
5137
|
+
onSimplePointerCancel(event: PointerEvent): void;
|
|
5138
|
+
onTrackPointerDown(event: PointerEvent): void;
|
|
5139
|
+
onTrackPointerMove(event: PointerEvent): void;
|
|
5140
|
+
onTrackPointerUp(event: PointerEvent): void;
|
|
3711
5141
|
private refreshMetrics;
|
|
3712
5142
|
private resolvePerView;
|
|
3713
5143
|
private pageScrollAmount;
|
|
@@ -3719,176 +5149,6 @@ declare class DgaCarousel {
|
|
|
3719
5149
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaCarousel, "dga-carousel", never, { "slides": { "alias": "slides"; "required": false; "isSignal": true; }; "index": { "alias": "index"; "required": false; "isSignal": true; }; "slidesMax": { "alias": "slidesMax"; "required": false; "isSignal": true; }; "slidesMid": { "alias": "slidesMid"; "required": false; "isSignal": true; }; "slidesMin": { "alias": "slidesMin"; "required": false; "isSignal": true; }; "peek": { "alias": "peek"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "prevLabel": { "alias": "prevLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "dotsLabel": { "alias": "dotsLabel"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; }, { "index": "indexChange"; }, ["projected"], ["*"], true, never>;
|
|
3720
5150
|
}
|
|
3721
5151
|
|
|
3722
|
-
type DgaChartType = 'bar' | 'line' | 'pie' | 'donut';
|
|
3723
|
-
/** Backward-compatible single-series point: `{ label, value }`. */
|
|
3724
|
-
interface DgaChartPoint {
|
|
3725
|
-
label: string;
|
|
3726
|
-
value: number;
|
|
3727
|
-
}
|
|
3728
|
-
/** Multi-series data: one named series of values, aligned with `labels()`. */
|
|
3729
|
-
interface DgaChartDataset {
|
|
3730
|
-
name: string;
|
|
3731
|
-
data: number[];
|
|
3732
|
-
}
|
|
3733
|
-
interface DgaChartBarSlot {
|
|
3734
|
-
seriesIndex: number;
|
|
3735
|
-
categoryIndex: number;
|
|
3736
|
-
x: number;
|
|
3737
|
-
y: number;
|
|
3738
|
-
w: number;
|
|
3739
|
-
h: number;
|
|
3740
|
-
value: number;
|
|
3741
|
-
color: string;
|
|
3742
|
-
name: string;
|
|
3743
|
-
category: string;
|
|
3744
|
-
}
|
|
3745
|
-
interface DgaChartLinePoint {
|
|
3746
|
-
x: number;
|
|
3747
|
-
y: number;
|
|
3748
|
-
value: number;
|
|
3749
|
-
category: string;
|
|
3750
|
-
}
|
|
3751
|
-
interface DgaChartLine {
|
|
3752
|
-
name: string;
|
|
3753
|
-
color: string;
|
|
3754
|
-
points: DgaChartLinePoint[];
|
|
3755
|
-
linePath: string;
|
|
3756
|
-
areaPath: string;
|
|
3757
|
-
}
|
|
3758
|
-
interface DgaChartLegendItem {
|
|
3759
|
-
name: string;
|
|
3760
|
-
color: string;
|
|
3761
|
-
value: number | null;
|
|
3762
|
-
}
|
|
3763
|
-
interface DgaChartTooltip {
|
|
3764
|
-
x: number;
|
|
3765
|
-
y: number;
|
|
3766
|
-
title: string;
|
|
3767
|
-
items: {
|
|
3768
|
-
name: string;
|
|
3769
|
-
color: string;
|
|
3770
|
-
value: number;
|
|
3771
|
-
}[];
|
|
3772
|
-
}
|
|
3773
|
-
declare class DgaChart {
|
|
3774
|
-
readonly type: _angular_core.InputSignal<DgaChartType>;
|
|
3775
|
-
/** BC single-series input: `[{ label, value }]`. */
|
|
3776
|
-
readonly series: _angular_core.InputSignal<DgaChartPoint[]>;
|
|
3777
|
-
/** Category names shared by all `datasets()`. */
|
|
3778
|
-
readonly labels: _angular_core.InputSignal<string[]>;
|
|
3779
|
-
/** Preferred multi-series input for bar/line. */
|
|
3780
|
-
readonly datasets: _angular_core.InputSignal<DgaChartDataset[]>;
|
|
3781
|
-
/** Shown for pie/donut and multi-series bar/line. Set `false` to force-hide. */
|
|
3782
|
-
readonly legend: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3783
|
-
readonly tooltip: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3784
|
-
readonly grid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3785
|
-
readonly stacked: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3786
|
-
readonly smooth: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3787
|
-
readonly area: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3788
|
-
readonly dots: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3789
|
-
/** Overrides the `--dga-chart-color-1..6` token cycle. */
|
|
3790
|
-
readonly colors: _angular_core.InputSignal<string[]>;
|
|
3791
|
-
/** Label for the value row in pie/donut tooltips. Default: `'القيمة'`. */
|
|
3792
|
-
readonly tooltipValueLabel: _angular_core.InputSignal<string>;
|
|
3793
|
-
readonly height: _angular_core.InputSignal<number>;
|
|
3794
|
-
readonly label: _angular_core.InputSignal<string>;
|
|
3795
|
-
/** Fixed drawing width; scales via CSS `w-full`. */
|
|
3796
|
-
readonly width = 400;
|
|
3797
|
-
readonly pieSize = 180;
|
|
3798
|
-
readonly pad: {
|
|
3799
|
-
t: number;
|
|
3800
|
-
r: number;
|
|
3801
|
-
b: number;
|
|
3802
|
-
l: number;
|
|
3803
|
-
};
|
|
3804
|
-
private readonly hiddenNames;
|
|
3805
|
-
readonly hiddenSeries: _angular_core.Signal<Set<string>>;
|
|
3806
|
-
readonly hoveredCategoryIndex: _angular_core.WritableSignal<number | null>;
|
|
3807
|
-
readonly hoveredSlice: _angular_core.WritableSignal<{
|
|
3808
|
-
index: number;
|
|
3809
|
-
label: string;
|
|
3810
|
-
value: number;
|
|
3811
|
-
} | null>;
|
|
3812
|
-
readonly isPieType: _angular_core.Signal<boolean>;
|
|
3813
|
-
/** Category labels: explicit `labels()`, else derived from `datasets()` length, else BC `series()` labels. */
|
|
3814
|
-
readonly categories: _angular_core.Signal<string[]>;
|
|
3815
|
-
/** Normalized series: `datasets()` when present, else one series built from BC `series()`. */
|
|
3816
|
-
readonly seriesList: _angular_core.Signal<DgaChartDataset[]>;
|
|
3817
|
-
readonly visibleSeriesList: _angular_core.Signal<DgaChartDataset[]>;
|
|
3818
|
-
/** Points feeding pie/donut: BC `series()`, else first dataset paired with `labels()`. */
|
|
3819
|
-
readonly piePoints: _angular_core.Signal<DgaChartPoint[]>;
|
|
3820
|
-
readonly visiblePiePoints: _angular_core.Signal<DgaChartPoint[]>;
|
|
3821
|
-
readonly showLegend: _angular_core.Signal<boolean>;
|
|
3822
|
-
readonly legendItems: _angular_core.Signal<DgaChartLegendItem[]>;
|
|
3823
|
-
colorFor(index: number): string;
|
|
3824
|
-
toggleSeries(name: string): void;
|
|
3825
|
-
readonly ariaLabel: _angular_core.Signal<string>;
|
|
3826
|
-
readonly plot: _angular_core.Signal<{
|
|
3827
|
-
x: number;
|
|
3828
|
-
y: number;
|
|
3829
|
-
w: number;
|
|
3830
|
-
h: number;
|
|
3831
|
-
}>;
|
|
3832
|
-
readonly gridYs: _angular_core.Signal<number[]>;
|
|
3833
|
-
readonly maxValue: _angular_core.Signal<number>;
|
|
3834
|
-
/** Layout for one group (category) slot shared by bars and the hover hit-rect. */
|
|
3835
|
-
private readonly groupLayout;
|
|
3836
|
-
readonly categoryTicks: _angular_core.Signal<{
|
|
3837
|
-
index: number;
|
|
3838
|
-
category: string;
|
|
3839
|
-
x: number;
|
|
3840
|
-
hitX: number;
|
|
3841
|
-
hitW: number;
|
|
3842
|
-
}[]>;
|
|
3843
|
-
readonly bars: _angular_core.Signal<DgaChartBarSlot[]>;
|
|
3844
|
-
readonly visibleLines: _angular_core.Signal<DgaChartLine[]>;
|
|
3845
|
-
private straightPathD;
|
|
3846
|
-
/** Piecewise cubic Bezier through the points (Catmull-Rom style tangents). */
|
|
3847
|
-
private smoothPathD;
|
|
3848
|
-
private areaPathD;
|
|
3849
|
-
readonly pieSlices: _angular_core.Signal<{
|
|
3850
|
-
index: number;
|
|
3851
|
-
label: string;
|
|
3852
|
-
value: number;
|
|
3853
|
-
color: string;
|
|
3854
|
-
d: string;
|
|
3855
|
-
midX: number;
|
|
3856
|
-
midY: number;
|
|
3857
|
-
}[]>;
|
|
3858
|
-
onCategoryEnter(index: number): void;
|
|
3859
|
-
onCategoryLeave(): void;
|
|
3860
|
-
onSliceEnter(index: number, slice: {
|
|
3861
|
-
label: string;
|
|
3862
|
-
value: number;
|
|
3863
|
-
}): void;
|
|
3864
|
-
onSliceLeave(): void;
|
|
3865
|
-
categoryAriaLabel(index: number): string;
|
|
3866
|
-
readonly categoryTooltip: _angular_core.Signal<DgaChartTooltip | null>;
|
|
3867
|
-
readonly sliceTooltip: _angular_core.Signal<DgaChartTooltip | null>;
|
|
3868
|
-
formatValue(value: number): string;
|
|
3869
|
-
pieTooltipStyle(tip: DgaChartTooltip): Record<string, string>;
|
|
3870
|
-
plotTooltipStyle(tip: DgaChartTooltip): Record<string, string>;
|
|
3871
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaChart, never>;
|
|
3872
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaChart, "dga-chart", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "datasets": { "alias": "datasets"; "required": false; "isSignal": true; }; "legend": { "alias": "legend"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "grid": { "alias": "grid"; "required": false; "isSignal": true; }; "stacked": { "alias": "stacked"; "required": false; "isSignal": true; }; "smooth": { "alias": "smooth"; "required": false; "isSignal": true; }; "area": { "alias": "area"; "required": false; "isSignal": true; }; "dots": { "alias": "dots"; "required": false; "isSignal": true; }; "colors": { "alias": "colors"; "required": false; "isSignal": true; }; "tooltipValueLabel": { "alias": "tooltipValueLabel"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
3873
|
-
}
|
|
3874
|
-
|
|
3875
|
-
interface DgaSaudiCity {
|
|
3876
|
-
id: number;
|
|
3877
|
-
region: string;
|
|
3878
|
-
regionAr: string;
|
|
3879
|
-
name: string;
|
|
3880
|
-
nameAr: string;
|
|
3881
|
-
}
|
|
3882
|
-
/** Bilingual Saudi cities across all 13 administrative regions. */
|
|
3883
|
-
declare const DGA_SAUDI_CITIES: readonly DgaSaudiCity[];
|
|
3884
|
-
/** Group cities by English region name. */
|
|
3885
|
-
declare function dgaGroupSaudiCitiesByRegion(cities?: readonly DgaSaudiCity[]): Record<string, DgaSaudiCity[]>;
|
|
3886
|
-
/** Autocomplete-ready options (Arabic labels by default). */
|
|
3887
|
-
declare function dgaSaudiCityOptions(locale?: string, cities?: readonly DgaSaudiCity[]): {
|
|
3888
|
-
label: string;
|
|
3889
|
-
value: string;
|
|
3890
|
-
}[];
|
|
3891
|
-
|
|
3892
5152
|
declare function dgaResolveAppHref(href: string, baseHref?: string): string;
|
|
3893
5153
|
/**
|
|
3894
5154
|
* Safe href for config-driven links (CMS / schema).
|
|
@@ -3901,5 +5161,5 @@ declare function dgaSafeCssColor(value: string | null | undefined, fallback?: st
|
|
|
3901
5161
|
/** Join truthy class names. */
|
|
3902
5162
|
declare function dgaCx(...parts: Array<string | false | null | undefined>): string;
|
|
3903
5163
|
|
|
3904
|
-
export { DGA_ICON_NAMES,
|
|
3905
|
-
export type { DgaAccordionSection, DgaAlertDisplay, DgaAlertVariant, DgaAnnouncementActionVariant, DgaAnnouncementAlign, DgaAnnouncementDensity, DgaAnnouncementElevation, DgaAnnouncementPersist, DgaAnnouncementTone, DgaAppShellAppearance, DgaAutocompleteOption, DgaAvatarSize, DgaBadgeSize, DgaBadgeVariant, DgaBreadcrumbItem, DgaBreadcrumbSeparator, DgaButtonSize, DgaButtonVariant, DgaCalendar, DgaCardActionsAlign, DgaCardAppearance, DgaCardBadge, DgaCardBorder, DgaCardPadding, DgaCardShadow, DgaCarouselSlide,
|
|
5164
|
+
export { DGA_GREGORIAN_MONTHS, DGA_HIJRI_MONTHS, DGA_IBAN_COUNTRY, DGA_IBAN_LENGTH, DGA_ICON_NAMES, DGA_ICON_OVERRIDES, DGA_LOGICAL_ICON_NAMES, DGA_PHONE_COUNTRIES, DGA_RIYAL_SVG_PATH, DGA_RIYAL_VIEWBOX, DGA_WEEKDAYS, DgaAccordion, DgaAccordionItem, DgaAlert, DgaAnnouncementBar, DgaAppShell, DgaAuthCard, DgaAutocomplete, DgaAvatar, DgaBadge, DgaBarcode, DgaBottomSheet, DgaBreadcrumb, DgaButton, DgaCard, DgaCardDef, DgaCardMedia, DgaCarousel, DgaCarouselSlideDirective, DgaCellDef, DgaCheckbox, DgaChip, DgaChipInput, DgaChoiceGroup, DgaClamp, DgaCode, DgaCommand, DgaConfirm, DgaContentSwitcher, DgaContentSwitcherPanel, DgaContextMenu, DgaContextMenuTrigger, DgaCopy, DgaDescriptionList, DgaDialog, DgaDivider, DgaDrawer, DgaDualNav, DgaEmpty, DgaEventCalendar, DgaExpandDef, DgaExpandable, DgaExport, DgaExportToolbar, DgaFaq, DgaFeedback, DgaField, DgaFilePreview, DgaFilterBar, DgaFooter, DgaFormControl, DgaFormEnd, DgaFormStart, DgaGrid, DgaHero, DgaIbanInput, DgaIcon, DgaIconBadge, DgaIconFontService, DgaIconRegistry, DgaImagePopup, DgaInfoList, DgaInput, DgaKbd, DgaKbdGroup, DgaLabel, DgaLink, DgaList, DgaLocaleToggle, DgaLogoTile, DgaMapEmbed, DgaMenu, DgaMetric, DgaModal, DgaMultiselect, DgaNationalId, DgaNativeSelect, DgaNavRail, DgaNotificationInbox, DgaNumber, DgaNumberInput, DgaOffline, DgaOtp, DgaPageFeedback, DgaPageHero, DgaPagination, DgaPassword, DgaPersona, DgaPhoneInput, DgaPopover, DgaPreloader, DgaPrint, DgaProgress, DgaQr, DgaQuote, DgaRadio, DgaRating, DgaRichText, DgaRiyal, DgaRowActionsDef, DgaScrollTop, DgaSearchBar, DgaSection, DgaSelect, DgaShare, DgaSideInfo, DgaSideNav, DgaSignaturePad, DgaSkeleton, DgaSkipLink, DgaSlider, DgaSpinner, DgaStatStrip, DgaStepper, DgaSwitch, DgaTab, DgaTable, DgaTableColumnPicker, DgaTabs, DgaThemeToggle, DgaTimePicker, DgaTimeline, DgaToast, DgaToastOutlet, DgaToastService, DgaToc, DgaToolbar, DgaTooltip, DgaTopBar, DgaTour, DgaTree, DgaTreeSelect, DgaUpload, DgaVideoPlayer, DgaVirtualItem, DgaVirtualList, DgaWriting, dgaAddMonths, dgaClampDate, dgaCoerceDate, dgaCompareDays, dgaCurrentLocale, dgaCx, dgaDaysInMonth, dgaDetectFilePreviewKind, dgaEncodeBarcode, dgaEncodeQr, dgaFilterTree, dgaFindTreeItem, dgaFlattenTree, dgaFormStatusFromInvalid, dgaFormatDate, dgaFormatIban, dgaFormatNationalId, dgaGetCalendarParts, dgaIsAllowedMapEmbedUrl, dgaIsArabic, dgaIsRtl, dgaIsValidIban, dgaIsValidNationalId, dgaModeFromFormat, dgaMonthNames, dgaMonthStartWeekday, dgaNationalIdKind, dgaNormalizeIban, dgaNormalizeNationalId, dgaNormalizeTime, dgaParseDate, dgaPartsToDate, dgaPasswordStrength, dgaProvideValueAccessor, dgaResolveAppHref, dgaResolveLocalized, dgaResolveVideoSource, dgaSafeCssColor, dgaSafeHref, dgaSameDay, dgaTodayUtc, dgaTreeAncestors, dgaUiLocale, dgaVisibleTreeNodes, provideDgaIcons };
|
|
5165
|
+
export type { DgaAccordionSection, DgaAlertDisplay, DgaAlertVariant, DgaAnnouncementActionVariant, DgaAnnouncementAlign, DgaAnnouncementDensity, DgaAnnouncementElevation, DgaAnnouncementPersist, DgaAnnouncementTone, DgaAppShellAppearance, DgaAutocompleteOption, DgaAvatarSize, DgaBadgeSize, DgaBadgeVariant, DgaBarcodeFormat, DgaBarcodeMatrix, DgaBottomSheetSnap, DgaBreadcrumbItem, DgaBreadcrumbSeparator, DgaButtonEffect, DgaButtonSize, DgaButtonVariant, DgaCalendar, DgaCalendarEvent, DgaCalendarParts, DgaCardActionsAlign, DgaCardAppearance, DgaCardBadge, DgaCardBorder, DgaCardPadding, DgaCardShadow, DgaCarouselSlide, DgaCellContext, DgaCheckboxSize, DgaChipVariant, DgaChoiceLayout, DgaCommandAppearance, DgaCommandGroup, DgaCommandItem, DgaConfirmTone, DgaContentSwitcherItem, DgaContextMenuItem, DgaContextMenuItemType, DgaCurrency, DgaDateCalendar, DgaDateLocale, DgaDatePickerMode, DgaDescriptionItem, DgaDescriptionLayout, DgaDialogSize, DgaDividerOrientation, DgaDrawerSide, DgaDualNavCategory, DgaDualNavSection, DgaEmptyAppearance, DgaExportColumn, DgaExportData, DgaExportScope, DgaFaqItem, DgaFeedbackSubmit, DgaFilePreviewKind, DgaFilePreviewPresentation, DgaFilterItem, DgaFooterAppearance, DgaFooterColumn, DgaFooterIconGroup, DgaFooterIconLink, DgaFooterLink, DgaFooterLogo, DgaFormControlSize, DgaFormStatus, DgaGridCols, DgaGridGap, DgaHeroAppearance, DgaHeroImageMask, DgaHeroOverlayTone, DgaHeroSlide, DgaHeroTransition, DgaIconBadgeAppearance, DgaIconBadgeSize, DgaIconName, DgaIconNameInput, DgaIconSize, DgaIconTone, DgaImagePopupAnimation, DgaImagePopupImage, DgaImagePopupImageTransition, DgaImagePopupSource, DgaInfoListItem, DgaInputSize, DgaLinkVariant, DgaLocalizedString, DgaMapEmbedAspect, DgaMenuItem, DgaMetricAppearance, DgaMetricTrend, DgaModalAnimation, DgaModalSize, DgaMultiselectOption, DgaNationalIdKind, DgaNativeSelectSize, DgaNavRailActiveStyle, DgaNavRailAppearance, DgaNavRailItem, DgaNavRailPosition, DgaNavRailSize, DgaNotificationItem, DgaOfflineMode, DgaPageFeedbackAgreementLink, DgaPageFeedbackAnswer, DgaPageFeedbackOption, DgaPageFeedbackPhase, DgaPageFeedbackSubmit, DgaPageHeroTone, DgaPasswordStrength, DgaPasswordStrengthResult, DgaPhoneCountry, DgaPhoneCountryName, DgaPopoverPlacement, DgaPreloaderPersist, DgaProgressAppearance, DgaProgressSize, DgaProgressTone, DgaQrAnimate, DgaQrErrorCorrection, DgaQrMatrix, DgaQrSize, DgaQrSizeToken, DgaQrView, DgaRadioSize, DgaRatingSize, DgaRiyalAppearance, DgaRiyalSize, DgaRiyalTone, DgaScrollTopPosition, DgaSearchBarSize, DgaSectionTone, DgaSectionWidth, DgaSelectOpenMode, DgaSelectOption, DgaSelectSize, DgaShareAppearance, DgaSideInfoItem, DgaSideNavGroup, DgaSideNavItem, DgaSkeletonAnimation, DgaSkeletonRadius, DgaSkeletonShape, DgaSkeletonSize, DgaSliderSize, DgaSortDir, DgaSpinnerSize, DgaSpinnerTone, DgaStampNotice, DgaStatStripItem, DgaStatStripTrend, DgaStep, DgaStepStatus, DgaSwitchSize, DgaTabItem, DgaTableColumn, DgaTableDensity, DgaTableFilterEvent, DgaTablePageEvent, DgaTableResolvedView, DgaTableSortEvent, DgaTableViewMode, DgaThemeToggleSurface, DgaTimeFormat, DgaTimePickerFormat, DgaTimePickerSize, DgaTimelineItem, DgaToastAnimation, DgaToastLocation, DgaToastRequest, DgaToastShowOptions, DgaToastVariant, DgaTocItem, DgaTooltipPlacement, DgaTooltipVariant, DgaTourPersist, DgaTourPlacement, DgaTourStep, DgaTreeItem, DgaTreeSelectSize, DgaUploadAppearance, DgaUploadFile, DgaUploadRejectReason, DgaUploadRejection, DgaVideoProvider, DgaVideoRatio, DgaVideoSourceInfo, DgaVirtualItemContext, DgaWritingEffect };
|