@a.nemreen/dga-ui 0.3.14 → 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 +41 -11
- package/fesm2022/a.nemreen-dga-ui-chart.mjs +33 -7
- package/fesm2022/a.nemreen-dga-ui-chatbot.mjs +1 -1
- 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.mjs +4059 -636
- package/package.json +4 -2
- package/types/a.nemreen-dga-ui-chart.d.ts +12 -0
- package/types/a.nemreen-dga-ui-chatbot.d.ts +3 -3
- package/types/a.nemreen-dga-ui-cookies.d.ts +1 -1
- package/types/a.nemreen-dga-ui-date-picker.d.ts +4 -47
- package/types/a.nemreen-dga-ui.d.ts +1594 -30
- package/fesm2022/a.nemreen-dga-ui-dga-icon-registry-sBZfCS6q.mjs +0 -1
|
@@ -1,9 +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
|
+
import * as _a_nemreen_dga_tokens from '@a.nemreen/dga-tokens';
|
|
8
|
+
import { DgaLocale } from '@a.nemreen/dga-tokens';
|
|
7
9
|
|
|
8
10
|
type DgaWritingEffect = 'typewriter' | 'glow';
|
|
9
11
|
/**
|
|
@@ -47,14 +49,20 @@ declare class DgaWriting {
|
|
|
47
49
|
|
|
48
50
|
type DgaButtonVariant = 'primary' | 'secondary' | 'subtle' | 'outline' | 'outlineMuted' | 'outlineInverse' | 'ghost' | 'danger' | 'inverse';
|
|
49
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';
|
|
50
54
|
declare class DgaButton {
|
|
51
55
|
private readonly destroyRef;
|
|
52
56
|
private readonly host;
|
|
53
57
|
private readonly renderer;
|
|
54
58
|
readonly variant: _angular_core.InputSignal<DgaButtonVariant>;
|
|
55
59
|
readonly size: _angular_core.InputSignal<DgaButtonSize>;
|
|
60
|
+
/** Hover / focus motion. Default matches legacy opacity chrome. */
|
|
61
|
+
readonly effect: _angular_core.InputSignal<DgaButtonEffect>;
|
|
56
62
|
/** Square control sized to the icon (no horizontal padding). */
|
|
57
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>;
|
|
58
66
|
/** When > 0, disables the host for this many ms after each click and shows a spinner. */
|
|
59
67
|
readonly cooldownMs: _angular_core.InputSignal<number>;
|
|
60
68
|
/** Manual loading state — shows spinner and disables the control. */
|
|
@@ -71,12 +79,14 @@ declare class DgaButton {
|
|
|
71
79
|
readonly busy: _angular_core.Signal<boolean>;
|
|
72
80
|
readonly classes: _angular_core.Signal<string>;
|
|
73
81
|
constructor();
|
|
82
|
+
onPointerDown(event: Event): void;
|
|
74
83
|
onHostClick(): void;
|
|
84
|
+
private spawnRipple;
|
|
75
85
|
private attachSpinner;
|
|
76
86
|
private detachSpinner;
|
|
77
87
|
private clearCooldown;
|
|
78
88
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaButton, never>;
|
|
79
|
-
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>;
|
|
80
90
|
}
|
|
81
91
|
|
|
82
92
|
type DgaBadgeVariant = 'neutral' | 'primary' | 'success' | 'info' | 'warning' | 'error';
|
|
@@ -234,12 +244,12 @@ declare class DgaAvatar {
|
|
|
234
244
|
}
|
|
235
245
|
|
|
236
246
|
/**
|
|
237
|
-
* Icon name union + RTL-flip set. Kept off the SVG
|
|
238
|
-
* components can import names without the
|
|
247
|
+
* Icon name union + RTL-flip set. Kept off the SVG catalog so chrome
|
|
248
|
+
* components can import names without the HugeIcons glyph map.
|
|
239
249
|
*/
|
|
240
|
-
declare const DGA_ICON_NAMES: readonly ["access", "
|
|
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"];
|
|
241
251
|
type DgaIconName = (typeof DGA_ICON_NAMES)[number];
|
|
242
|
-
declare const DGA_LOGICAL_ICON_NAMES: Set<"
|
|
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">;
|
|
243
253
|
|
|
244
254
|
/**
|
|
245
255
|
* Platforms Code icon sizes (px):
|
|
@@ -250,18 +260,22 @@ declare const DGA_LOGICAL_ICON_NAMES: Set<"success" | "info" | "warning" | "erro
|
|
|
250
260
|
*/
|
|
251
261
|
type DgaIconSize = '2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';
|
|
252
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 & {});
|
|
253
265
|
declare class DgaIcon {
|
|
254
266
|
private readonly sanitizer;
|
|
255
267
|
private readonly iconFont;
|
|
256
|
-
private readonly
|
|
268
|
+
private readonly registry;
|
|
257
269
|
/**
|
|
258
|
-
* Curated
|
|
259
|
-
* 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}.
|
|
260
273
|
*/
|
|
261
|
-
readonly name: _angular_core.InputSignal<
|
|
274
|
+
readonly name: _angular_core.InputSignal<DgaIconNameInput | undefined>;
|
|
262
275
|
/**
|
|
263
276
|
* HugeIcons Stroke Rounded glyph id for content icons (e.g. `search-01`).
|
|
264
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.
|
|
265
279
|
*/
|
|
266
280
|
readonly glyph: _angular_core.InputSignal<string>;
|
|
267
281
|
/** Default `sm` (16px) - common dense UI size; use `xl` (24px) for standard chrome. */
|
|
@@ -293,6 +307,57 @@ declare class DgaIconFontService {
|
|
|
293
307
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<DgaIconFontService>;
|
|
294
308
|
}
|
|
295
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
|
+
|
|
296
361
|
type DgaIconBadgeSize = 'sm' | 'md' | 'lg' | 'xl';
|
|
297
362
|
type DgaIconBadgeAppearance = 'filled' | 'outline';
|
|
298
363
|
/**
|
|
@@ -357,9 +422,9 @@ declare class DgaFormControl {
|
|
|
357
422
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
358
423
|
readonly filled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
359
424
|
/** Built-in leading icon (logical start). */
|
|
360
|
-
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>;
|
|
361
426
|
/** Built-in trailing icon (logical end). */
|
|
362
|
-
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>;
|
|
363
428
|
private readonly focused;
|
|
364
429
|
private readonly typing;
|
|
365
430
|
readonly classes: _angular_core.Signal<string>;
|
|
@@ -421,6 +486,18 @@ declare class DgaRadio {
|
|
|
421
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>;
|
|
422
487
|
}
|
|
423
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
|
+
|
|
424
501
|
type DgaNativeSelectSize = DgaFormControlSize;
|
|
425
502
|
/** Styles a native `<select dgaSelect>` — for simple forms without search/multi. */
|
|
426
503
|
declare class DgaNativeSelect {
|
|
@@ -461,6 +538,12 @@ declare class DgaSelect implements ControlValueAccessor {
|
|
|
461
538
|
readonly removeLabel: _angular_core.InputSignal<string>;
|
|
462
539
|
readonly clearLabel: _angular_core.InputSignal<string>;
|
|
463
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>;
|
|
464
547
|
readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
465
548
|
private readonly cvaDisabled;
|
|
466
549
|
readonly disabled: _angular_core.Signal<boolean>;
|
|
@@ -468,11 +551,16 @@ declare class DgaSelect implements ControlValueAccessor {
|
|
|
468
551
|
readonly valueChange: _angular_core.OutputEmitterRef<string | string[]>;
|
|
469
552
|
/** Emitted when the searchable query changes (remote lookup fields). */
|
|
470
553
|
readonly searchChange: _angular_core.OutputEmitterRef<string>;
|
|
554
|
+
/** Emitted when the user picks the creatable “Create …” option. */
|
|
555
|
+
readonly create: _angular_core.OutputEmitterRef<string>;
|
|
471
556
|
private onChange;
|
|
472
557
|
private onTouched;
|
|
473
558
|
readonly open: _angular_core.WritableSignal<boolean>;
|
|
474
559
|
readonly query: _angular_core.WritableSignal<string>;
|
|
475
560
|
readonly activeIndex: _angular_core.WritableSignal<number>;
|
|
561
|
+
private readonly uiLocale;
|
|
562
|
+
private readonly ar;
|
|
563
|
+
readonly loadingLabel: _angular_core.Signal<"جاري التحميل…" | "Loading…">;
|
|
476
564
|
constructor();
|
|
477
565
|
readonly resolvedStatus: _angular_core.Signal<DgaFormStatus>;
|
|
478
566
|
readonly listVisible: _angular_core.Signal<boolean>;
|
|
@@ -487,6 +575,7 @@ declare class DgaSelect implements ControlValueAccessor {
|
|
|
487
575
|
hasValue(): boolean;
|
|
488
576
|
optionId(index: number): string;
|
|
489
577
|
isSelected(v: string): boolean;
|
|
578
|
+
isCreateOption(opt: DgaSelectOption): boolean;
|
|
490
579
|
selectedValues(): string[];
|
|
491
580
|
toggleOpen(): void;
|
|
492
581
|
onFocus(): void;
|
|
@@ -506,8 +595,100 @@ declare class DgaSelect implements ControlValueAccessor {
|
|
|
506
595
|
private moveActive;
|
|
507
596
|
private firstEnabledIndex;
|
|
508
597
|
private lastEnabledIndex;
|
|
598
|
+
private withCreateOption;
|
|
599
|
+
private formatCreateLabel;
|
|
509
600
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaSelect, never>;
|
|
510
|
-
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>;
|
|
511
692
|
}
|
|
512
693
|
|
|
513
694
|
/**
|
|
@@ -588,9 +769,16 @@ declare class DgaNumberInput implements ControlValueAccessor {
|
|
|
588
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>;
|
|
589
770
|
}
|
|
590
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
|
+
*/
|
|
591
777
|
declare class DgaSlider {
|
|
592
|
-
readonly
|
|
593
|
-
readonly
|
|
778
|
+
private readonly el;
|
|
779
|
+
readonly size: _angular_core.InputSignal<DgaSliderSize>;
|
|
780
|
+
constructor();
|
|
781
|
+
paint(): void;
|
|
594
782
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaSlider, never>;
|
|
595
783
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DgaSlider, "input[type=\"range\"][dgaSlider]", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
596
784
|
}
|
|
@@ -662,6 +850,177 @@ declare class DgaChipInput implements ControlValueAccessor {
|
|
|
662
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>;
|
|
663
851
|
}
|
|
664
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
|
+
|
|
665
1024
|
interface DgaUploadFile {
|
|
666
1025
|
id: string;
|
|
667
1026
|
name: string;
|
|
@@ -797,10 +1156,20 @@ declare class DgaAutocomplete {
|
|
|
797
1156
|
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
798
1157
|
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
799
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>;
|
|
800
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>;
|
|
801
1170
|
onValueChange(next: string | string[]): void;
|
|
802
1171
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaAutocomplete, never>;
|
|
803
|
-
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>;
|
|
804
1173
|
}
|
|
805
1174
|
|
|
806
1175
|
/** @deprecated Prefer `DgaSelectOption` — alias kept for existing imports. */
|
|
@@ -867,6 +1236,94 @@ declare class DgaTimePicker {
|
|
|
867
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>;
|
|
868
1237
|
}
|
|
869
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
|
+
|
|
870
1327
|
type DgaDialogSize = 'sm' | 'md' | 'lg';
|
|
871
1328
|
declare class DgaDialog {
|
|
872
1329
|
private readonly injector;
|
|
@@ -895,6 +1352,46 @@ declare class DgaDialog {
|
|
|
895
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>;
|
|
896
1353
|
}
|
|
897
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
|
+
|
|
898
1395
|
type DgaModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
899
1396
|
type DgaModalAnimation = 'fade' | 'scale' | 'slide' | 'none';
|
|
900
1397
|
declare class DgaModal {
|
|
@@ -1001,7 +1498,7 @@ declare class DgaToast implements OnDestroy {
|
|
|
1001
1498
|
/** Clear sticky announcement / reserved chrome, then a small gap. */
|
|
1002
1499
|
readonly edgeTop: _angular_core.Signal<"calc(var(--dga-announcement-offset, 0px) + 1rem)" | null>;
|
|
1003
1500
|
readonly edgeBottom: _angular_core.Signal<"1rem" | null>;
|
|
1004
|
-
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">;
|
|
1005
1502
|
readonly iconTone: _angular_core.Signal<"success" | "warning" | "error" | "muted" | "current">;
|
|
1006
1503
|
readonly showCountdown: _angular_core.Signal<boolean>;
|
|
1007
1504
|
readonly reduceMotion: _angular_core.WritableSignal<boolean>;
|
|
@@ -1179,8 +1676,13 @@ declare class DgaMenu {
|
|
|
1179
1676
|
readonly open: _angular_core.ModelSignal<boolean>;
|
|
1180
1677
|
readonly triggerLabel: _angular_core.InputSignal<string>;
|
|
1181
1678
|
/** Optional leading glyph (e.g. share on page heroes). */
|
|
1182
|
-
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>;
|
|
1183
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">;
|
|
1184
1686
|
/** Minimum panel width (e.g. share menus). */
|
|
1185
1687
|
readonly menuMinWidth: _angular_core.InputSignal<string>;
|
|
1186
1688
|
/** Emits the full selected item. */
|
|
@@ -1220,7 +1722,7 @@ declare class DgaMenu {
|
|
|
1220
1722
|
private cssLengthToPx;
|
|
1221
1723
|
private focusItem;
|
|
1222
1724
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaMenu, never>;
|
|
1223
|
-
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>;
|
|
1224
1726
|
}
|
|
1225
1727
|
|
|
1226
1728
|
type DgaContextMenuItemType = 'item' | 'checkbox' | 'radio' | 'divider' | 'label';
|
|
@@ -1441,6 +1943,99 @@ declare class DgaDrawer {
|
|
|
1441
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>;
|
|
1442
1944
|
}
|
|
1443
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
|
+
|
|
1444
2039
|
interface DgaImagePopupImage {
|
|
1445
2040
|
src: string;
|
|
1446
2041
|
alt?: string;
|
|
@@ -1452,8 +2047,12 @@ type DgaImagePopupAnimation = 'fade' | 'scale' | 'slide' | 'zoom' | 'none';
|
|
|
1452
2047
|
/** Cross-fade when changing the active image. */
|
|
1453
2048
|
type DgaImagePopupImageTransition = 'fade' | 'none';
|
|
1454
2049
|
declare class DgaImagePopup {
|
|
2050
|
+
private readonly doc;
|
|
1455
2051
|
private readonly injector;
|
|
2052
|
+
private readonly host;
|
|
1456
2053
|
private readonly panel;
|
|
2054
|
+
/** Marks the in-page slot while the host is moved to `document.body`. */
|
|
2055
|
+
private anchor;
|
|
1457
2056
|
readonly images: _angular_core.InputSignal<DgaImagePopupSource[]>;
|
|
1458
2057
|
readonly open: _angular_core.ModelSignal<boolean>;
|
|
1459
2058
|
readonly activeIndex: _angular_core.ModelSignal<number>;
|
|
@@ -1496,6 +2095,9 @@ declare class DgaImagePopup {
|
|
|
1496
2095
|
onKeydown(event: KeyboardEvent): void;
|
|
1497
2096
|
onAnimationEnd(event: AnimationEvent): void;
|
|
1498
2097
|
private finishClose;
|
|
2098
|
+
/** Lift the host out of ancestor stacking contexts (docs header / sidebar). */
|
|
2099
|
+
private portalHostToBody;
|
|
2100
|
+
private restoreHost;
|
|
1499
2101
|
private focusInitial;
|
|
1500
2102
|
private trapFocus;
|
|
1501
2103
|
private getFocusable;
|
|
@@ -1506,6 +2108,63 @@ declare class DgaImagePopup {
|
|
|
1506
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>;
|
|
1507
2109
|
}
|
|
1508
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
|
+
|
|
1509
2168
|
/** Logical placements (RTL-aware via inset-inline). */
|
|
1510
2169
|
type DgaTourPlacement = 'top' | 'bottom' | 'start' | 'end' | 'auto';
|
|
1511
2170
|
type DgaTourPersist = 'local' | 'session' | 'none';
|
|
@@ -1634,7 +2293,7 @@ declare class DgaAlert {
|
|
|
1634
2293
|
readonly textClasses: _angular_core.Signal<"flex flex-col gap-xs" | "min-w-0">;
|
|
1635
2294
|
readonly titleClasses: _angular_core.Signal<string>;
|
|
1636
2295
|
readonly descriptionClasses: _angular_core.Signal<string>;
|
|
1637
|
-
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">;
|
|
1638
2297
|
readonly iconTone: _angular_core.Signal<"success" | "warning" | "error" | "muted" | "current">;
|
|
1639
2298
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaAlert, never>;
|
|
1640
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>;
|
|
@@ -1864,6 +2523,91 @@ declare class DgaShare {
|
|
|
1864
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>;
|
|
1865
2524
|
}
|
|
1866
2525
|
|
|
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>;
|
|
2566
|
+
}
|
|
2567
|
+
|
|
2568
|
+
type DgaOfflineMode = 'offline' | 'online' | 'both';
|
|
2569
|
+
/**
|
|
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.
|
|
2574
|
+
*
|
|
2575
|
+
* @example
|
|
2576
|
+
* ```html
|
|
2577
|
+
* <dga-offline sticky />
|
|
2578
|
+
* ```
|
|
2579
|
+
*/
|
|
2580
|
+
declare class DgaOffline {
|
|
2581
|
+
private readonly destroyRef;
|
|
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>;
|
|
2602
|
+
constructor();
|
|
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>;
|
|
2609
|
+
}
|
|
2610
|
+
|
|
1867
2611
|
/**
|
|
1868
2612
|
* Visually hidden until focused — first tab stop for keyboard users.
|
|
1869
2613
|
* Place near the top of the document; `href` should target main content id.
|
|
@@ -1878,6 +2622,37 @@ declare class DgaSkipLink {
|
|
|
1878
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>;
|
|
1879
2623
|
}
|
|
1880
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 {
|
|
2637
|
+
private readonly uiLocale;
|
|
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>;
|
|
2654
|
+
}
|
|
2655
|
+
|
|
1881
2656
|
declare class DgaAccordionItem {
|
|
1882
2657
|
private readonly accordion;
|
|
1883
2658
|
readonly title: _angular_core.InputSignal<string>;
|
|
@@ -2106,6 +2881,8 @@ declare class DgaStepper {
|
|
|
2106
2881
|
readonly steps: _angular_core.InputSignal<DgaStep[]>;
|
|
2107
2882
|
readonly active: _angular_core.ModelSignal<number>;
|
|
2108
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>;
|
|
2109
2886
|
/**
|
|
2110
2887
|
* Optional veto for step clicks (e.g. form wizard validation).
|
|
2111
2888
|
* Return false to keep the current step.
|
|
@@ -2118,7 +2895,7 @@ declare class DgaStepper {
|
|
|
2118
2895
|
railTone(index: number): string;
|
|
2119
2896
|
go(index: number): void;
|
|
2120
2897
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaStepper, never>;
|
|
2121
|
-
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>;
|
|
2122
2899
|
}
|
|
2123
2900
|
|
|
2124
2901
|
interface DgaTocItem {
|
|
@@ -2137,6 +2914,56 @@ declare class DgaToc {
|
|
|
2137
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>;
|
|
2138
2915
|
}
|
|
2139
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
|
+
|
|
2140
2967
|
interface DgaSideNavItem {
|
|
2141
2968
|
label: string;
|
|
2142
2969
|
value: string;
|
|
@@ -2277,7 +3104,7 @@ declare class DgaNavRail {
|
|
|
2277
3104
|
readonly smoothScroll: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2278
3105
|
readonly select: _angular_core.OutputEmitterRef<DgaNavRailItem>;
|
|
2279
3106
|
readonly expandChange: _angular_core.OutputEmitterRef<boolean>;
|
|
2280
|
-
readonly edgeAttr: _angular_core.Signal<"
|
|
3107
|
+
readonly edgeAttr: _angular_core.Signal<"left" | "start" | "end" | "right" | null>;
|
|
2281
3108
|
readonly offsetCss: _angular_core.Signal<string>;
|
|
2282
3109
|
readonly tooltipPlacement: _angular_core.Signal<"start" | "end">;
|
|
2283
3110
|
readonly iconSize: _angular_core.Signal<"sm" | "md" | "lg">;
|
|
@@ -2317,6 +3144,54 @@ declare class DgaFilterBar {
|
|
|
2317
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>;
|
|
2318
3145
|
}
|
|
2319
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
|
+
|
|
2320
3195
|
declare class DgaToolbar {
|
|
2321
3196
|
readonly label: _angular_core.InputSignal<string>;
|
|
2322
3197
|
readonly barClasses: _angular_core.Signal<string>;
|
|
@@ -2418,7 +3293,7 @@ declare class DgaCard {
|
|
|
2418
3293
|
/** Clamp description lines (0 = no clamp). */
|
|
2419
3294
|
readonly descriptionClamp: _angular_core.InputSignal<number>;
|
|
2420
3295
|
/** Featured logo icon (renders `dga-icon-badge` unless `[dgaCardLead]` is projected). */
|
|
2421
|
-
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>;
|
|
2422
3297
|
readonly iconSize: _angular_core.InputSignal<DgaIconBadgeSize>;
|
|
2423
3298
|
readonly iconAppearance: _angular_core.InputSignal<DgaIconBadgeAppearance>;
|
|
2424
3299
|
readonly badges: _angular_core.InputSignal<DgaCardBadge[]>;
|
|
@@ -2457,7 +3332,7 @@ declare class DgaCardMedia {
|
|
|
2457
3332
|
readonly src: _angular_core.InputSignal<string>;
|
|
2458
3333
|
readonly alt: _angular_core.InputSignal<string>;
|
|
2459
3334
|
/** Aspect ratio utility; default 16/10 portal news cards. */
|
|
2460
|
-
readonly ratio: _angular_core.InputSignal<"video" | "
|
|
3335
|
+
readonly ratio: _angular_core.InputSignal<"video" | "square" | "wide">;
|
|
2461
3336
|
readonly classes: _angular_core.Signal<string>;
|
|
2462
3337
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaCardMedia, never>;
|
|
2463
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>;
|
|
@@ -2823,11 +3698,14 @@ interface DgaHeroSlide {
|
|
|
2823
3698
|
declare class DgaHero {
|
|
2824
3699
|
private readonly destroyRef;
|
|
2825
3700
|
private readonly host;
|
|
3701
|
+
private readonly doc;
|
|
2826
3702
|
private readonly swipe;
|
|
2827
3703
|
private autoplayTimer;
|
|
2828
3704
|
private readonly autoplayPaused;
|
|
2829
3705
|
/** Skip CSS transitions on first layout so slides don't animate in like a locale wipe. */
|
|
2830
3706
|
private readonly motionReady;
|
|
3707
|
+
/** First portal image already hinted in `<head>`, so later slides don't compete. */
|
|
3708
|
+
private lcpPreloadHref;
|
|
2831
3709
|
/** Single-slide API. */
|
|
2832
3710
|
readonly title: _angular_core.InputSignal<string>;
|
|
2833
3711
|
readonly description: _angular_core.InputSignal<string>;
|
|
@@ -2881,6 +3759,8 @@ declare class DgaHero {
|
|
|
2881
3759
|
portalCtaVariant(): 'inverse' | 'primary';
|
|
2882
3760
|
/** Secondary is always outline - inverse outline on dark portal surfaces. */
|
|
2883
3761
|
secondaryCtaVariant(): 'outlineInverse' | 'outline';
|
|
3762
|
+
/** Off-screen carousel slides stay in the DOM for the push animation. */
|
|
3763
|
+
slideInactive(i: number): boolean;
|
|
2884
3764
|
slideShellClass(i: number): string;
|
|
2885
3765
|
clampedIndex(): number;
|
|
2886
3766
|
activeTitle(): string;
|
|
@@ -2911,6 +3791,10 @@ declare class DgaHero {
|
|
|
2911
3791
|
onPointerUp(event: PointerEvent): void;
|
|
2912
3792
|
onPointerCancel(event: PointerEvent): void;
|
|
2913
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;
|
|
2914
3798
|
pauseAutoplay(): void;
|
|
2915
3799
|
resumeAutoplay(): void;
|
|
2916
3800
|
onPrimary(index?: number): void;
|
|
@@ -2967,7 +3851,7 @@ declare class DgaAnnouncementBar {
|
|
|
2967
3851
|
readonly align: _angular_core.InputSignal<DgaAnnouncementAlign>;
|
|
2968
3852
|
readonly actionVariant: _angular_core.InputSignal<DgaAnnouncementActionVariant>;
|
|
2969
3853
|
readonly elevation: _angular_core.InputSignal<DgaAnnouncementElevation>;
|
|
2970
|
-
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>;
|
|
2971
3855
|
readonly dismissible: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
2972
3856
|
readonly dismissLabel: _angular_core.InputSignal<string>;
|
|
2973
3857
|
readonly actionLabel: _angular_core.InputSignal<string>;
|
|
@@ -3115,6 +3999,68 @@ declare class DgaLogoTile {
|
|
|
3115
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>;
|
|
3116
4000
|
}
|
|
3117
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
|
+
|
|
3118
4064
|
declare class DgaPersona {
|
|
3119
4065
|
readonly name: _angular_core.InputSignal<string>;
|
|
3120
4066
|
readonly subtitle: _angular_core.InputSignal<string>;
|
|
@@ -3366,6 +4312,198 @@ declare class DgaRiyal {
|
|
|
3366
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>;
|
|
3367
4313
|
}
|
|
3368
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
|
+
|
|
3369
4507
|
type DgaMetricTrend = 'up' | 'down' | 'neutral';
|
|
3370
4508
|
/** `stat` = portal home metrics (icon well, value, label, centered). */
|
|
3371
4509
|
type DgaMetricAppearance = 'default' | 'stat';
|
|
@@ -3384,23 +4522,267 @@ declare class DgaMetric {
|
|
|
3384
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>;
|
|
3385
4523
|
}
|
|
3386
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
|
+
|
|
3387
4735
|
interface DgaTableColumn<T = Record<string, unknown>> {
|
|
3388
4736
|
key: string;
|
|
3389
4737
|
label: string;
|
|
3390
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;
|
|
3391
4749
|
}
|
|
3392
4750
|
type DgaSortDir = 'asc' | 'desc';
|
|
3393
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
|
+
}
|
|
3394
4766
|
declare class DgaTable {
|
|
4767
|
+
private readonly destroyRef;
|
|
3395
4768
|
private readonly uiLocale;
|
|
3396
4769
|
private readonly ar;
|
|
3397
4770
|
readonly columns: _angular_core.InputSignal<DgaTableColumn<Record<string, unknown>>[]>;
|
|
3398
4771
|
readonly rows: _angular_core.InputSignal<Record<string, unknown>[]>;
|
|
3399
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>;
|
|
3400
4780
|
readonly idKey: _angular_core.InputSignal<string>;
|
|
3401
4781
|
readonly selectedKeys: _angular_core.ModelSignal<string[]>;
|
|
3402
4782
|
readonly sortKey: _angular_core.ModelSignal<string>;
|
|
3403
4783
|
readonly sortDir: _angular_core.ModelSignal<DgaSortDir>;
|
|
4784
|
+
readonly columnFilters: _angular_core.ModelSignal<Record<string, string>>;
|
|
4785
|
+
readonly expandedKeys: _angular_core.ModelSignal<string[]>;
|
|
3404
4786
|
readonly label: _angular_core.InputSignal<string | undefined>;
|
|
3405
4787
|
readonly selectAllLabel: _angular_core.InputSignal<string | undefined>;
|
|
3406
4788
|
readonly emptyLabel: _angular_core.InputSignal<string | undefined>;
|
|
@@ -3409,35 +4791,217 @@ declare class DgaTable {
|
|
|
3409
4791
|
readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3410
4792
|
readonly stickyHeader: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
3411
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>;
|
|
3412
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;
|
|
3413
4829
|
readonly resolvedLabel: _angular_core.Signal<string>;
|
|
3414
4830
|
readonly resolvedSelectAllLabel: _angular_core.Signal<string>;
|
|
3415
4831
|
readonly resolvedEmptyLabel: _angular_core.Signal<string>;
|
|
3416
4832
|
readonly selectedCountLabel: _angular_core.Signal<string>;
|
|
3417
|
-
|
|
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>;
|
|
3418
4848
|
constructor();
|
|
4849
|
+
private bindBreakpoint;
|
|
3419
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>>[]>;
|
|
3420
4855
|
readonly selectPad: _angular_core.Signal<"w-4xl px-lg py-xs" | "w-4xl px-lg py-md">;
|
|
3421
4856
|
readonly headerPad: _angular_core.Signal<string>;
|
|
3422
4857
|
readonly bodyPad: _angular_core.Signal<string>;
|
|
4858
|
+
readonly cardPad: _angular_core.Signal<"px-md py-sm" | "px-lg py-md">;
|
|
3423
4859
|
readonly rowClasses: _angular_core.Signal<string>;
|
|
3424
|
-
|
|
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>[]>;
|
|
3425
4864
|
readonly allSelected: _angular_core.Signal<boolean>;
|
|
3426
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;
|
|
3427
4882
|
rowKey(row: Record<string, unknown>): string;
|
|
3428
4883
|
cellValue(row: Record<string, unknown>, key: string): string;
|
|
4884
|
+
cardTitle(row: Record<string, unknown>): string;
|
|
3429
4885
|
isSelected(row: Record<string, unknown>): boolean;
|
|
4886
|
+
isExpanded(row: Record<string, unknown>): boolean;
|
|
4887
|
+
expandLabel(row: Record<string, unknown>): string;
|
|
3430
4888
|
rowSelectLabel(row: Record<string, unknown>): string;
|
|
3431
4889
|
selectAllAria(): 'true' | 'false' | 'mixed';
|
|
3432
4890
|
emptyColspan(): number;
|
|
3433
4891
|
ariaSort(key: string): 'ascending' | 'descending' | 'none' | null;
|
|
3434
4892
|
sortGlyph(key: string): string;
|
|
3435
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;
|
|
3436
4899
|
toggleRow(row: Record<string, unknown>): void;
|
|
3437
4900
|
toggleAll(): void;
|
|
3438
4901
|
private rowKeys;
|
|
3439
4902
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaTable, never>;
|
|
3440
|
-
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>;
|
|
3441
5005
|
}
|
|
3442
5006
|
|
|
3443
5007
|
interface DgaExportColumn {
|
|
@@ -3597,5 +5161,5 @@ declare function dgaSafeCssColor(value: string | null | undefined, fallback?: st
|
|
|
3597
5161
|
/** Join truthy class names. */
|
|
3598
5162
|
declare function dgaCx(...parts: Array<string | false | null | undefined>): string;
|
|
3599
5163
|
|
|
3600
|
-
export { DGA_ICON_NAMES, DGA_LOGICAL_ICON_NAMES, DGA_PHONE_COUNTRIES, DGA_RIYAL_SVG_PATH, DGA_RIYAL_VIEWBOX, DgaAccordion, DgaAccordionItem, DgaAlert, DgaAnnouncementBar, DgaAppShell, DgaAuthCard, DgaAutocomplete, DgaAvatar, DgaBadge, DgaBreadcrumb, DgaButton, DgaCard, DgaCardMedia, DgaCarousel, DgaCarouselSlideDirective, DgaCheckbox, DgaChip, DgaChipInput, DgaClamp, DgaCode, DgaCommand, DgaContentSwitcher, DgaContentSwitcherPanel, DgaContextMenu, DgaContextMenuTrigger, DgaCopy, DgaDescriptionList, DgaDialog, DgaDivider, DgaDrawer, DgaDualNav, DgaEmpty, DgaExpandable, DgaExport, DgaExportToolbar, DgaFeedback, DgaField, DgaFilterBar, DgaFooter, DgaFormControl, DgaFormEnd, DgaFormStart, DgaGrid, DgaHero, DgaIcon, DgaIconBadge, DgaIconFontService, DgaImagePopup, DgaInfoList, DgaInput, DgaKbd, DgaKbdGroup, DgaLabel, DgaLink, DgaList, DgaLogoTile, DgaMenu, DgaMetric, DgaModal, DgaMultiselect, DgaNativeSelect, DgaNavRail, DgaNumber, DgaNumberInput, DgaOtp, DgaPageFeedback, DgaPageHero, DgaPagination, DgaPersona, DgaPhoneInput, DgaPreloader, DgaProgress, DgaQuote, DgaRadio, DgaRating, DgaRiyal, DgaScrollTop, DgaSection, DgaSelect, DgaShare, DgaSideInfo, DgaSideNav, DgaSkeleton, DgaSkipLink, DgaSlider, DgaSpinner, DgaStepper, DgaSwitch, DgaTab, DgaTable, DgaTabs, DgaTimePicker, DgaTimeline, DgaToast, DgaToastOutlet, DgaToastService, DgaToc, DgaToolbar, DgaTooltip, DgaTopBar, DgaTour, DgaUpload, DgaVideoPlayer, DgaWriting, dgaCurrentLocale, dgaCx, dgaFormStatusFromInvalid, dgaIsArabic, dgaIsRtl, dgaNormalizeTime, dgaProvideValueAccessor, dgaResolveAppHref, dgaResolveLocalized, dgaResolveVideoSource, dgaSafeCssColor, dgaSafeHref, dgaUiLocale };
|
|
3601
|
-
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, DgaCheckboxSize, DgaChipVariant, DgaCommandAppearance, DgaCommandGroup, DgaCommandItem, DgaContentSwitcherItem, DgaContextMenuItem, DgaContextMenuItemType, DgaCurrency, DgaDescriptionItem, DgaDescriptionLayout, DgaDialogSize, DgaDividerOrientation, DgaDrawerSide, DgaDualNavCategory, DgaDualNavSection, DgaEmptyAppearance, DgaExportColumn, DgaExportData, DgaExportScope, DgaFeedbackSubmit, DgaFilterItem, DgaFooterAppearance, DgaFooterColumn, DgaFooterIconGroup, DgaFooterIconLink, DgaFooterLink, DgaFooterLogo, DgaFormControlSize, DgaFormStatus, DgaGridCols, DgaGridGap, DgaHeroAppearance, DgaHeroImageMask, DgaHeroOverlayTone, DgaHeroSlide, DgaHeroTransition, DgaIconBadgeAppearance, DgaIconBadgeSize, DgaIconName, DgaIconSize, DgaIconTone, DgaImagePopupAnimation, DgaImagePopupImage, DgaImagePopupImageTransition, DgaImagePopupSource, DgaInfoListItem, DgaInputSize, DgaLinkVariant, DgaLocalizedString, DgaMenuItem, DgaMetricAppearance, DgaMetricTrend, DgaModalAnimation, DgaModalSize, DgaMultiselectOption, DgaNativeSelectSize, DgaNavRailActiveStyle, DgaNavRailAppearance, DgaNavRailItem, DgaNavRailPosition, DgaNavRailSize, DgaPageFeedbackAgreementLink, DgaPageFeedbackAnswer, DgaPageFeedbackOption, DgaPageFeedbackPhase, DgaPageFeedbackSubmit, DgaPageHeroTone, DgaPhoneCountry, DgaPhoneCountryName, DgaPreloaderPersist, DgaProgressAppearance, DgaProgressSize, DgaProgressTone, DgaRadioSize, DgaRatingSize, DgaRiyalAppearance, DgaRiyalSize, DgaRiyalTone, DgaScrollTopPosition, DgaSectionTone, DgaSectionWidth, DgaSelectOpenMode, DgaSelectOption, DgaSelectSize, DgaShareAppearance, DgaSideInfoItem, DgaSideNavGroup, DgaSideNavItem, DgaSkeletonAnimation, DgaSkeletonRadius, DgaSkeletonShape, DgaSkeletonSize, DgaSortDir, DgaSpinnerSize, DgaSpinnerTone, DgaStampNotice, DgaStep, DgaStepStatus, DgaSwitchSize, DgaTabItem, DgaTableColumn, DgaTableDensity, DgaTimeFormat, DgaTimePickerFormat, DgaTimePickerSize, DgaTimelineItem, DgaToastAnimation, DgaToastLocation, DgaToastRequest, DgaToastShowOptions, DgaToastVariant, DgaTocItem, DgaTooltipPlacement, DgaTooltipVariant, DgaTourPersist, DgaTourPlacement, DgaTourStep, DgaUploadAppearance, DgaUploadFile, DgaUploadRejectReason, DgaUploadRejection, DgaVideoProvider, DgaVideoRatio, DgaVideoSourceInfo, DgaWritingEffect };
|
|
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 };
|