@a.nemreen/dga-ui 0.3.2 → 0.3.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@a.nemreen/dga-ui",
3
- "version": "0.3.2",
3
+ "version": "0.3.4",
4
4
  "description": "DGA Angular UI library — standalone forms, overlays, navigation, and portal shell with RTL-first Tailwind styling",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -124,6 +124,12 @@ interface DgaHeaderNotificationsConfig {
124
124
  items?: DgaHeaderNotification[];
125
125
  }
126
126
  type DgaHeaderNotificationAction = 'read' | 'view' | 'dismiss' | 'select';
127
+ /** Link row inside the login panel footer. */
128
+ interface DgaHeaderLoginLink {
129
+ id?: string;
130
+ label: string;
131
+ href?: string;
132
+ }
127
133
  /** Guest login form opened from the login action. */
128
134
  interface DgaHeaderLoginConfig {
129
135
  actionId?: string;
@@ -142,6 +148,45 @@ interface DgaHeaderLoginConfig {
142
148
  forgotPasswordHref?: string;
143
149
  showPasswordLabel?: string;
144
150
  hidePasswordLabel?: string;
151
+ /** Panel width CSS value. Default: `'24rem'`. */
152
+ panelWidth?: string;
153
+ /** Max inner scroll height. Default: `'44rem'`. */
154
+ maxHeight?: string;
155
+ /** Register prompt (e.g. "Don't have an account?"). */
156
+ registerPrompt?: string;
157
+ registerLabel?: string;
158
+ registerHref?: string;
159
+ /** Extra links below actions (help, SSO, etc.). */
160
+ footerLinks?: DgaHeaderLoginLink[];
161
+ /** Submit button label while loading. Default: `'…'`. */
162
+ submittingLabel?: string;
163
+ /** Form-level error shown above action buttons. */
164
+ errorMessage?: string;
165
+ emailRequiredMessage?: string;
166
+ emailInvalidMessage?: string;
167
+ passwordRequiredMessage?: string;
168
+ /** Show cancel button. Default: `true`. */
169
+ showCancel?: boolean;
170
+ }
171
+ /** Projected content after the login title, before fields. */
172
+ declare class DgaHeaderLoginBeforeForm {
173
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaHeaderLoginBeforeForm, never>;
174
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DgaHeaderLoginBeforeForm, "[dgaHeaderLoginBeforeForm]", never, {}, {}, never, never, true, never>;
175
+ }
176
+ /** Projected content between fields and action buttons. */
177
+ declare class DgaHeaderLoginAfterFields {
178
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaHeaderLoginAfterFields, never>;
179
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DgaHeaderLoginAfterFields, "[dgaHeaderLoginAfterFields]", never, {}, {}, never, never, true, never>;
180
+ }
181
+ /** Projected footer; overrides config register/footer links when present. */
182
+ declare class DgaHeaderLoginFooter {
183
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaHeaderLoginFooter, never>;
184
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DgaHeaderLoginFooter, "[dgaHeaderLoginFooter]", never, {}, {}, never, never, true, never>;
185
+ }
186
+ /** Replaces the built-in email/password form; panel chrome remains. */
187
+ declare class DgaHeaderLoginForm {
188
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaHeaderLoginForm, never>;
189
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<DgaHeaderLoginForm, "[dgaHeaderLoginForm]", never, {}, {}, never, never, true, never>;
145
190
  }
146
191
  interface DgaHeaderUserMenuLink {
147
192
  id: string;
@@ -210,6 +255,10 @@ declare class DgaHeader {
210
255
  readonly user: _angular_core.InputSignal<DgaHeaderUserConfig | null>;
211
256
  /** Whether the user is signed in (two-way). */
212
257
  readonly authenticated: _angular_core.ModelSignal<boolean>;
258
+ /** Login submit loading state (two-way). Parent clears after API response. */
259
+ readonly loginSubmitting: _angular_core.ModelSignal<boolean>;
260
+ /** Form-level login error (two-way). Cleared when the panel closes. */
261
+ readonly loginError: _angular_core.ModelSignal<string>;
213
262
  readonly actionClick: _angular_core.OutputEmitterRef<DgaHeaderAction>;
214
263
  readonly searchSubmit: _angular_core.OutputEmitterRef<string>;
215
264
  readonly searchSuggestionSelect: _angular_core.OutputEmitterRef<DgaHeaderSearchSuggestion>;
@@ -237,9 +286,12 @@ declare class DgaHeader {
237
286
  readonly loginEmail: _angular_core.WritableSignal<string>;
238
287
  readonly loginPassword: _angular_core.WritableSignal<string>;
239
288
  readonly showLoginPassword: _angular_core.WritableSignal<boolean>;
240
- readonly loginSubmitting: _angular_core.WritableSignal<boolean>;
289
+ readonly loginEmailError: _angular_core.WritableSignal<string>;
290
+ readonly loginPasswordError: _angular_core.WritableSignal<string>;
241
291
  /** Fixed coords for notifications / login / user panels (anchored to trigger). */
242
292
  readonly dropdownPanelStyle: _angular_core.WritableSignal<Record<string, string>>;
293
+ private readonly customLoginForm;
294
+ private readonly customLoginFooter;
243
295
  private readonly dismissedNotificationIds;
244
296
  private readonly readNotificationIds;
245
297
  private dropdownTrigger;
@@ -263,6 +315,8 @@ declare class DgaHeader {
263
315
  readonly loginConfig: _angular_core.Signal<DgaHeaderLoginConfig | null>;
264
316
  readonly loginActionId: _angular_core.Signal<string>;
265
317
  readonly userConfig: _angular_core.Signal<DgaHeaderUserConfig | null>;
318
+ readonly hasCustomLoginForm: _angular_core.Signal<boolean>;
319
+ readonly hasCustomLoginFooter: _angular_core.Signal<boolean>;
266
320
  readonly utilityOverlayOpen: _angular_core.Signal<boolean>;
267
321
  readonly visibleNotifications: _angular_core.Signal<{
268
322
  read: boolean;
@@ -337,6 +391,11 @@ declare class DgaHeader {
337
391
  closeLogin(): void;
338
392
  toggleUserMenu(trigger?: HTMLElement | null): void;
339
393
  closeUserMenu(): void;
394
+ onLoginEmailInput(value: string): void;
395
+ onLoginPasswordInput(value: string): void;
396
+ showLoginRegisterRow(lcfg: DgaHeaderLoginConfig): boolean;
397
+ loginPanelOuterStyle(): Record<string, string>;
398
+ loginPanelInnerStyle(): Record<string, string>;
340
399
  onLoginSubmit(event: Event): void;
341
400
  onUserLink(link: DgaHeaderUserMenuLink): void;
342
401
  toggleNotificationExpand(item: DgaHeaderNotification): void;
@@ -353,6 +412,7 @@ declare class DgaHeader {
353
412
  private requestDropdownSync;
354
413
  private clearDropdownAnchor;
355
414
  private findActionTrigger;
415
+ private activeUtilityPanelWidthPx;
356
416
  private syncDropdownPanel;
357
417
  onKey(event: KeyboardEvent): void;
358
418
  onScroll(): void;
@@ -360,8 +420,8 @@ declare class DgaHeader {
360
420
  onNavLinkClick(link: DgaNavLink | DgaNavItem, event: MouseEvent): void;
361
421
  onDocClick(event: MouseEvent): void;
362
422
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaHeader, never>;
363
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaHeader, "dga-header", never, { "brand": { "alias": "brand"; "required": false; "isSignal": true; }; "brandSlogan": { "alias": "brandSlogan"; "required": false; "isSignal": true; }; "brandLogo": { "alias": "brandLogo"; "required": false; "isSignal": true; }; "brandLogoAlt": { "alias": "brandLogoAlt"; "required": false; "isSignal": true; }; "brandPlaceholder": { "alias": "brandPlaceholder"; "required": false; "isSignal": true; }; "brandHref": { "alias": "brandHref"; "required": false; "isSignal": true; }; "navLabel": { "alias": "navLabel"; "required": false; "isSignal": true; }; "menuToggleLabel": { "alias": "menuToggleLabel"; "required": false; "isSignal": true; }; "menuCloseLabel": { "alias": "menuCloseLabel"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "mobileNav": { "alias": "mobileNav"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchQuery": { "alias": "searchQuery"; "required": false; "isSignal": true; }; "notifications": { "alias": "notifications"; "required": false; "isSignal": true; }; "login": { "alias": "login"; "required": false; "isSignal": true; }; "user": { "alias": "user"; "required": false; "isSignal": true; }; "authenticated": { "alias": "authenticated"; "required": false; "isSignal": true; }; }, { "searchQuery": "searchQueryChange"; "authenticated": "authenticatedChange"; "actionClick": "actionClick"; "searchSubmit": "searchSubmit"; "searchSuggestionSelect": "searchSuggestionSelect"; "searchVoice": "searchVoice"; "notificationAction": "notificationAction"; "loginSubmit": "loginSubmit"; "logout": "logout"; "userLinkClick": "userLinkClick"; "navLinkClick": "navLinkClick"; }, never, ["[dgaHeaderBrand]", "*", "[dgaHeaderEnd]"], true, never>;
423
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaHeader, "dga-header", never, { "brand": { "alias": "brand"; "required": false; "isSignal": true; }; "brandSlogan": { "alias": "brandSlogan"; "required": false; "isSignal": true; }; "brandLogo": { "alias": "brandLogo"; "required": false; "isSignal": true; }; "brandLogoAlt": { "alias": "brandLogoAlt"; "required": false; "isSignal": true; }; "brandPlaceholder": { "alias": "brandPlaceholder"; "required": false; "isSignal": true; }; "brandHref": { "alias": "brandHref"; "required": false; "isSignal": true; }; "navLabel": { "alias": "navLabel"; "required": false; "isSignal": true; }; "menuToggleLabel": { "alias": "menuToggleLabel"; "required": false; "isSignal": true; }; "menuCloseLabel": { "alias": "menuCloseLabel"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "mobileNav": { "alias": "mobileNav"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "search": { "alias": "search"; "required": false; "isSignal": true; }; "searchQuery": { "alias": "searchQuery"; "required": false; "isSignal": true; }; "notifications": { "alias": "notifications"; "required": false; "isSignal": true; }; "login": { "alias": "login"; "required": false; "isSignal": true; }; "user": { "alias": "user"; "required": false; "isSignal": true; }; "authenticated": { "alias": "authenticated"; "required": false; "isSignal": true; }; "loginSubmitting": { "alias": "loginSubmitting"; "required": false; "isSignal": true; }; "loginError": { "alias": "loginError"; "required": false; "isSignal": true; }; }, { "searchQuery": "searchQueryChange"; "authenticated": "authenticatedChange"; "loginSubmitting": "loginSubmittingChange"; "loginError": "loginErrorChange"; "actionClick": "actionClick"; "searchSubmit": "searchSubmit"; "searchSuggestionSelect": "searchSuggestionSelect"; "searchVoice": "searchVoice"; "notificationAction": "notificationAction"; "loginSubmit": "loginSubmit"; "logout": "logout"; "userLinkClick": "userLinkClick"; "navLinkClick": "navLinkClick"; }, ["customLoginForm", "customLoginFooter"], ["[dgaHeaderBrand]", "*", "[dgaHeaderEnd]", "[dgaHeaderLoginBeforeForm]", "[dgaHeaderLoginForm]", "[dgaHeaderLoginAfterFields]", "[dgaHeaderLoginFooter]"], true, never>;
364
424
  }
365
425
 
366
- export { DgaHeader };
367
- export type { DgaHeaderAction, DgaHeaderAppearance, DgaHeaderLoginConfig, DgaHeaderNotification, DgaHeaderNotificationAction, DgaHeaderNotificationTone, DgaHeaderNotificationsConfig, DgaHeaderSearchConfig, DgaHeaderSearchSuggestion, DgaHeaderUserConfig, DgaHeaderUserMenuLink, DgaMobileNavMode, DgaNavColumn, DgaNavDropdown, DgaNavDropdownLayout, DgaNavDropdownVariant, DgaNavFeatured, DgaNavItem, DgaNavLink };
426
+ export { DgaHeader, DgaHeaderLoginAfterFields, DgaHeaderLoginBeforeForm, DgaHeaderLoginFooter, DgaHeaderLoginForm };
427
+ export type { DgaHeaderAction, DgaHeaderAppearance, DgaHeaderLoginConfig, DgaHeaderLoginLink, DgaHeaderNotification, DgaHeaderNotificationAction, DgaHeaderNotificationTone, DgaHeaderNotificationsConfig, DgaHeaderSearchConfig, DgaHeaderSearchSuggestion, DgaHeaderUserConfig, DgaHeaderUserMenuLink, DgaMobileNavMode, DgaNavColumn, DgaNavDropdown, DgaNavDropdownLayout, DgaNavDropdownVariant, DgaNavFeatured, DgaNavItem, DgaNavLink };
@@ -513,6 +513,8 @@ declare class DgaSelect implements ControlValueAccessor {
513
513
  readonly disabled: _angular_core.Signal<boolean>;
514
514
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
515
515
  readonly valueChange: _angular_core.OutputEmitterRef<string | string[]>;
516
+ /** Emitted when the searchable query changes (remote lookup fields). */
517
+ readonly searchChange: _angular_core.OutputEmitterRef<string>;
516
518
  private onChange;
517
519
  private onTouched;
518
520
  readonly open: _angular_core.WritableSignal<boolean>;
@@ -552,7 +554,7 @@ declare class DgaSelect implements ControlValueAccessor {
552
554
  private firstEnabledIndex;
553
555
  private lastEnabledIndex;
554
556
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaSelect, never>;
555
- 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"; }, never, never, true, never>;
557
+ 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>;
556
558
  }
557
559
 
558
560
  /**
@@ -686,6 +688,7 @@ declare class DgaChipInput implements ControlValueAccessor {
686
688
  readonly disabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
687
689
  private readonly cvaDisabled;
688
690
  readonly disabled: _angular_core.Signal<boolean>;
691
+ readonly allowDuplicates: _angular_core.InputSignalWithTransform<boolean, unknown>;
689
692
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
690
693
  readonly status: _angular_core.InputSignal<DgaFormStatus>;
691
694
  readonly valueChange: _angular_core.OutputEmitterRef<string[]>;
@@ -703,7 +706,7 @@ declare class DgaChipInput implements ControlValueAccessor {
703
706
  setDisabledState(isDisabled: boolean): void;
704
707
  private emitValue;
705
708
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaChipInput, never>;
706
- 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; }; "invalid": { "alias": "dgaInvalid"; "required": false; "isSignal": true; }; "status": { "alias": "status"; "required": false; "isSignal": true; }; }, { "valueChange": "valueChange"; }, never, never, true, never>;
709
+ 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>;
707
710
  }
708
711
 
709
712
  interface DgaUploadFile {
@@ -1129,13 +1132,22 @@ declare class DgaTooltip {
1129
1132
  readonly hideDelay: _angular_core.InputSignal<number>;
1130
1133
  /** Auto-dismiss after open on touch / click toggle. `0` disables. */
1131
1134
  readonly dismissMs: _angular_core.InputSignal<number>;
1135
+ /**
1136
+ * Render the tip in `document.body` with fixed coordinates so it is not clipped
1137
+ * by overflow containers (nav rails, sidebars).
1138
+ */
1139
+ readonly portaled: _angular_core.InputSignalWithTransform<boolean, unknown>;
1132
1140
  readonly open: _angular_core.WritableSignal<boolean>;
1141
+ readonly portaledStyle: _angular_core.WritableSignal<Record<string, string>>;
1133
1142
  readonly tipId: string;
1143
+ private readonly tipEl;
1144
+ private readonly injector;
1134
1145
  private showTimer;
1135
1146
  private hideTimer;
1136
1147
  private dismissTimer;
1137
1148
  private touchPinned;
1138
1149
  constructor();
1150
+ private readonly onResize;
1139
1151
  /** Capture-phase so overflow containers also dismiss the tip. */
1140
1152
  private readonly onScrollCapture;
1141
1153
  onDocPointer(event: PointerEvent): void;
@@ -1150,6 +1162,7 @@ declare class DgaTooltip {
1150
1162
  hideSoon(): void;
1151
1163
  show(): void;
1152
1164
  hide(): void;
1165
+ private syncPortaledTip;
1153
1166
  toggle(): void;
1154
1167
  private toggleTouch;
1155
1168
  private scheduleDismiss;
@@ -1159,7 +1172,7 @@ declare class DgaTooltip {
1159
1172
  private clearDismiss;
1160
1173
  private clearTimers;
1161
1174
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaTooltip, never>;
1162
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaTooltip, "dga-tooltip", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showIcon": { "alias": "showIcon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showDelay": { "alias": "showDelay"; "required": false; "isSignal": true; }; "hideDelay": { "alias": "hideDelay"; "required": false; "isSignal": true; }; "dismissMs": { "alias": "dismissMs"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1175
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaTooltip, "dga-tooltip", never, { "text": { "alias": "text"; "required": true; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "showIcon": { "alias": "showIcon"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "showDelay": { "alias": "showDelay"; "required": false; "isSignal": true; }; "hideDelay": { "alias": "hideDelay"; "required": false; "isSignal": true; }; "dismissMs": { "alias": "dismissMs"; "required": false; "isSignal": true; }; "portaled": { "alias": "portaled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
1163
1176
  }
1164
1177
 
1165
1178
  interface DgaMenuItem {
@@ -2300,6 +2313,10 @@ declare class DgaDualNav {
2300
2313
  readonly closePanelLabel: _angular_core.InputSignal<string>;
2301
2314
  readonly select: _angular_core.OutputEmitterRef<DgaSideNavItem>;
2302
2315
  readonly activeSection: _angular_core.Signal<DgaDualNavSection>;
2316
+ /** Tooltips open away from the secondary panel (outer rail edge). */
2317
+ readonly railTooltipPlacement: _angular_core.Signal<"start" | "bottom">;
2318
+ /** Hide rail tooltips while the secondary panel is open (labels already visible). */
2319
+ railTooltipDisabled(): boolean;
2303
2320
  constructor();
2304
2321
  selectSection(id: string): void;
2305
2322
  onSelect(item: DgaSideNavItem): void;
@@ -3503,6 +3520,7 @@ declare class DgaCarousel {
3503
3520
  private pageScrollAmount;
3504
3521
  private scrollToPage;
3505
3522
  private isRtl;
3523
+ private normalizedScrollLeft;
3506
3524
  onKeydown(event: KeyboardEvent): void;
3507
3525
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaCarousel, never>;
3508
3526
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaCarousel, "dga-carousel", never, { "slides": { "alias": "slides"; "required": false; "isSignal": true; }; "index": { "alias": "index"; "required": false; "isSignal": true; }; "slidesMax": { "alias": "slidesMax"; "required": false; "isSignal": true; }; "slidesMid": { "alias": "slidesMid"; "required": false; "isSignal": true; }; "slidesMin": { "alias": "slidesMin"; "required": false; "isSignal": true; }; "peek": { "alias": "peek"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "prevLabel": { "alias": "prevLabel"; "required": false; "isSignal": true; }; "nextLabel": { "alias": "nextLabel"; "required": false; "isSignal": true; }; "dotsLabel": { "alias": "dotsLabel"; "required": false; "isSignal": true; }; "emptyLabel": { "alias": "emptyLabel"; "required": false; "isSignal": true; }; }, { "index": "indexChange"; }, ["projected"], ["*"], true, never>;
@@ -3577,6 +3595,8 @@ declare class DgaChart {
3577
3595
  readonly dots: _angular_core.InputSignalWithTransform<boolean, unknown>;
3578
3596
  /** Overrides the `--dga-chart-color-1..6` token cycle. */
3579
3597
  readonly colors: _angular_core.InputSignal<string[]>;
3598
+ /** Label for the value row in pie/donut tooltips. Default: `'القيمة'`. */
3599
+ readonly tooltipValueLabel: _angular_core.InputSignal<string>;
3580
3600
  readonly height: _angular_core.InputSignal<number>;
3581
3601
  readonly label: _angular_core.InputSignal<string>;
3582
3602
  /** Fixed drawing width; scales via CSS `w-full`. */
@@ -3652,12 +3672,11 @@ declare class DgaChart {
3652
3672
  categoryAriaLabel(index: number): string;
3653
3673
  readonly categoryTooltip: _angular_core.Signal<DgaChartTooltip | null>;
3654
3674
  readonly sliceTooltip: _angular_core.Signal<DgaChartTooltip | null>;
3655
- tooltipWidth(tip: DgaChartTooltip): number;
3656
- tooltipHeight(tip: DgaChartTooltip): number;
3657
- tooltipX(tip: DgaChartTooltip): number;
3658
- tooltipY(tip: DgaChartTooltip): number;
3675
+ formatValue(value: number): string;
3676
+ pieTooltipStyle(tip: DgaChartTooltip): Record<string, string>;
3677
+ plotTooltipStyle(tip: DgaChartTooltip): Record<string, string>;
3659
3678
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<DgaChart, never>;
3660
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaChart, "dga-chart", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "datasets": { "alias": "datasets"; "required": false; "isSignal": true; }; "legend": { "alias": "legend"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "grid": { "alias": "grid"; "required": false; "isSignal": true; }; "stacked": { "alias": "stacked"; "required": false; "isSignal": true; }; "smooth": { "alias": "smooth"; "required": false; "isSignal": true; }; "area": { "alias": "area"; "required": false; "isSignal": true; }; "dots": { "alias": "dots"; "required": false; "isSignal": true; }; "colors": { "alias": "colors"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3679
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<DgaChart, "dga-chart", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "datasets": { "alias": "datasets"; "required": false; "isSignal": true; }; "legend": { "alias": "legend"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "grid": { "alias": "grid"; "required": false; "isSignal": true; }; "stacked": { "alias": "stacked"; "required": false; "isSignal": true; }; "smooth": { "alias": "smooth"; "required": false; "isSignal": true; }; "area": { "alias": "area"; "required": false; "isSignal": true; }; "dots": { "alias": "dots"; "required": false; "isSignal": true; }; "colors": { "alias": "colors"; "required": false; "isSignal": true; }; "tooltipValueLabel": { "alias": "tooltipValueLabel"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3661
3680
  }
3662
3681
 
3663
3682
  interface DgaSaudiCity {