@ziadshalaby/ngx-zs-component 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts ADDED
@@ -0,0 +1,821 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { computed, ElementRef, WritableSignal } from '@angular/core';
3
+ import * as _ziadshalaby_ngx_zs_component from '@ziadshalaby/ngx-zs-component';
4
+
5
+ declare class NgxZsComponent {
6
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxZsComponent, never>;
7
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NgxZsComponent, "lib-ngx-zs-component", never, {}, {}, never, never, true, never>;
8
+ }
9
+
10
+ interface NewAlert extends Omit<AlertType, 'id' | 'progress'> {
11
+ }
12
+ interface BulkAlert extends Omit<AlertType, 'id' | 'progress' | 'message'> {
13
+ }
14
+ declare class AlertService {
15
+ readonly alerts: _angular_core.WritableSignal<AlertType[]>;
16
+ addAlert(newAlert: NewAlert): void;
17
+ bulkAlert(newAlerts: string[], options: BulkAlert): void;
18
+ onAlertClosed(id: string | number): void;
19
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<AlertService, never>;
20
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<AlertService>;
21
+ }
22
+
23
+ type KeyType = 'alert' | 'spinner' | 'modal' | 'themeToggle' | 'navbar' | 'scrollToTop' | 'navItemDropdown' | 'selectDropdown';
24
+ type ZIndicesType = Record<KeyType, `zs:z-${number}`>;
25
+
26
+ interface AlertType {
27
+ id: number | string;
28
+ message: string;
29
+ type: 'success' | 'danger' | 'warning' | 'info';
30
+ autoClose?: boolean;
31
+ duration?: number;
32
+ showCloseButton?: boolean;
33
+ progress?: number;
34
+ }
35
+ interface AlertFullType extends AlertType {
36
+ icon: string;
37
+ bgColor: string;
38
+ textColor: string;
39
+ borderColor: string;
40
+ }
41
+ type OldAlertsType = Set<number | string>;
42
+ declare const ALERT_CONFIG: Record<AlertType['type'], Omit<AlertFullType, keyof AlertType>>;
43
+ type PositionClassType = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
44
+ declare class Alert {
45
+ readonly zIndices: ZIndicesType;
46
+ readonly alertService: AlertService;
47
+ readonly positionClass: _angular_core.InputSignal<PositionClassType>;
48
+ readonly defaultShowCloseButton: _angular_core.InputSignal<boolean>;
49
+ readonly defaultAutoClose: _angular_core.InputSignal<boolean>;
50
+ readonly defaultDuration: _angular_core.InputSignal<number>;
51
+ private readonly oldAlerts;
52
+ private readonly direction;
53
+ readonly positionClasses: _angular_core.Signal<string>;
54
+ readonly alerts: _angular_core.Signal<AlertType[]>;
55
+ readonly alertConfig: ReturnType<typeof computed<AlertFullType[]>>;
56
+ private activeIntervals;
57
+ constructor();
58
+ ngOnDestroy(): void;
59
+ private registerAlert;
60
+ closeAlert(id: string | number): void;
61
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Alert, never>;
62
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Alert, "ZS-alert", never, { "positionClass": { "alias": "positionClass"; "required": false; "isSignal": true; }; "defaultShowCloseButton": { "alias": "defaultShowCloseButton"; "required": false; "isSignal": true; }; "defaultAutoClose": { "alias": "defaultAutoClose"; "required": false; "isSignal": true; }; "defaultDuration": { "alias": "defaultDuration"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
63
+ }
64
+
65
+ interface NavbarItem {
66
+ label: string;
67
+ routerLink?: string;
68
+ routerLinkActive?: string;
69
+ action?: () => void;
70
+ children?: NavbarItem[];
71
+ childrenOpenWindow?: boolean;
72
+ closeMenuAfterClick?: boolean;
73
+ icon?: string;
74
+ iconClass?: string;
75
+ colorClass?: string;
76
+ useDefaultColorClass?: 'text' | 'bg';
77
+ }
78
+ declare class NavItem {
79
+ readonly zIndices: ZIndicesType;
80
+ private readonly znavItemService;
81
+ readonly item: _angular_core.InputSignal<NavbarItem>;
82
+ readonly collectionName: _angular_core.InputSignal<string>;
83
+ readonly anyItemClickedEv: _angular_core.OutputEmitterRef<NavbarItem>;
84
+ readonly index: _angular_core.WritableSignal<string>;
85
+ readonly isOpen: _angular_core.Signal<boolean>;
86
+ constructor();
87
+ toggle(): void;
88
+ onItemClick(): void;
89
+ handleChildClick(child: NavbarItem): void;
90
+ getItemClasses: (item: NavbarItem) => string;
91
+ labelLineClass(item: NavbarItem): "" | "zs:text-xs" | "zs:text-sm";
92
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavItem, never>;
93
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavItem, "ZS-nav-item", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "collectionName": { "alias": "collectionName"; "required": true; "isSignal": true; }; }, { "anyItemClickedEv": "anyItemClickedEv"; }, never, never, true, never>;
94
+ }
95
+
96
+ interface CollectionEntry {
97
+ openIndex: string;
98
+ indexes: string[];
99
+ }
100
+ declare class NavItemService {
101
+ /**
102
+ * Map of collections, where each collection tracks:
103
+ * - openIndex: the currently open item's unique index
104
+ * - indexes: list of all registered item indexes in this collection
105
+ */
106
+ readonly collections: _angular_core.WritableSignal<Map<string, CollectionEntry>>;
107
+ openIndex(collectionName: string): string;
108
+ addItemInCollection(collectionName: string, index: string): void;
109
+ onOpenIndexChange(collectionName: string, index: string): void;
110
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavItemService, never>;
111
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<NavItemService>;
112
+ }
113
+
114
+ type BaseSize = 'sm' | 'md' | 'lg';
115
+ type FormStyle = 'primary' | 'secondary' | 'warning' | 'success' | 'danger' | 'dark' | 'info' | 'violet' | 'teal';
116
+ interface FormPaletteEntry {
117
+ border: string;
118
+ borderHover: string;
119
+ inputBg: string;
120
+ bgSelect: string;
121
+ ring: string;
122
+ btnBG: string;
123
+ btnBGHover: string;
124
+ text: string;
125
+ textHover: string;
126
+ checkBoxText?: string;
127
+ checkBoxTextHover?: string;
128
+ }
129
+ declare const FormPaletteMap: Map<FormStyle, FormPaletteEntry>;
130
+ type BaseColors = 'slate' | 'gray' | 'zinc' | 'neutral' | 'stone' | 'red' | 'orange' | 'amber' | 'yellow' | 'rose' | 'lime' | 'green' | 'emerald' | 'teal' | 'cyan' | 'sky' | 'blue' | 'indigo' | 'violet' | 'purple' | 'fuchsia' | 'pink';
131
+ type BaseColorPrefixes = 'text' | 'bg' | 'border';
132
+ declare const ColorMapping: Map<BaseColors, Record<BaseColorPrefixes, string>>;
133
+
134
+ interface VariantType {
135
+ border?: boolean;
136
+ border_hover?: boolean;
137
+ shadow?: boolean;
138
+ }
139
+ type AnimationType = 'top' | 'bottom' | 'left' | 'right' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'none';
140
+ declare class Card {
141
+ readonly cardStyle: _angular_core.InputSignal<FormStyle>;
142
+ readonly variant: _angular_core.InputSignal<VariantType | undefined>;
143
+ readonly clickable: _angular_core.InputSignal<boolean>;
144
+ readonly animation: _angular_core.InputSignal<AnimationType>;
145
+ readonly bodyClass: _angular_core.InputSignal<string>;
146
+ readonly cardRef: _angular_core.Signal<ElementRef<any> | undefined>;
147
+ readonly isVisible: _angular_core.WritableSignal<boolean>;
148
+ constructor();
149
+ readonly classList: _angular_core.Signal<string>;
150
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Card, never>;
151
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Card, "ZS-card", never, { "cardStyle": { "alias": "cardStyle"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "animation": { "alias": "animation"; "required": false; "isSignal": true; }; "bodyClass": { "alias": "bodyClass"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
152
+ }
153
+
154
+ interface CarouselItem {
155
+ id: number | string;
156
+ name: string;
157
+ image: string;
158
+ description?: string;
159
+ [key: string]: any;
160
+ }
161
+ type ItemShapeType = 'rect' | 'circle';
162
+ declare class Carousel {
163
+ readonly itemsNumber: _angular_core.InputSignal<number>;
164
+ readonly arrows: _angular_core.InputSignal<boolean>;
165
+ readonly arrowColor: _angular_core.InputSignal<BaseColors>;
166
+ readonly showIndicators: _angular_core.InputSignal<boolean>;
167
+ readonly autoPlay: _angular_core.InputSignal<boolean>;
168
+ readonly duration: _angular_core.InputSignal<number>;
169
+ readonly maxItemsPerBox: _angular_core.InputSignal<number>;
170
+ readonly itemMinWidth: _angular_core.InputSignal<number>;
171
+ readonly indexChangeEv: _angular_core.OutputEmitterRef<number>;
172
+ readonly currentIndex: _angular_core.ModelSignal<number>;
173
+ readonly carouselContainer: _angular_core.Signal<ElementRef<HTMLElement> | undefined>;
174
+ readonly carouselTrack: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
175
+ readonly itemsPerBox: _angular_core.WritableSignal<number>;
176
+ readonly currentTranslate: _angular_core.WritableSignal<number>;
177
+ readonly dragging: _angular_core.WritableSignal<boolean>;
178
+ private readonly startX;
179
+ private readonly prevTranslate;
180
+ readonly arrowColorClass: _angular_core.Signal<string>;
181
+ readonly itemsPerBoxWidth: _angular_core.Signal<string>;
182
+ readonly totalBoxes: _angular_core.Signal<number>;
183
+ readonly indicatorBoxes: _angular_core.Signal<number[]>;
184
+ private autoPlayTimer;
185
+ private resizeObserver;
186
+ constructor();
187
+ ngAfterViewInit(): void;
188
+ ngOnDestroy(): void;
189
+ updateIndex(newIndex: number): void;
190
+ next(): void;
191
+ previous(): void;
192
+ startAutoPlay(): void;
193
+ stopAutoPlay(): void;
194
+ restartAutoPlay(): void;
195
+ private updateItemsPerBox;
196
+ onDragStart(event: PointerEvent): void;
197
+ onDragMove(event: PointerEvent): void;
198
+ onDragEnd(): void;
199
+ private applyTranslate;
200
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Carousel, never>;
201
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Carousel, "ZS-carousel", never, { "itemsNumber": { "alias": "itemsNumber"; "required": true; "isSignal": true; }; "arrows": { "alias": "arrows"; "required": false; "isSignal": true; }; "arrowColor": { "alias": "arrowColor"; "required": false; "isSignal": true; }; "showIndicators": { "alias": "showIndicators"; "required": false; "isSignal": true; }; "autoPlay": { "alias": "autoPlay"; "required": false; "isSignal": true; }; "duration": { "alias": "duration"; "required": false; "isSignal": true; }; "maxItemsPerBox": { "alias": "maxItemsPerBox"; "required": false; "isSignal": true; }; "itemMinWidth": { "alias": "itemMinWidth"; "required": false; "isSignal": true; }; "currentIndex": { "alias": "currentIndex"; "required": false; "isSignal": true; }; }, { "indexChangeEv": "indexChangeEv"; "currentIndex": "currentIndexChange"; }, never, ["[carousel-item]"], true, never>;
202
+ }
203
+
204
+ declare class Connection {
205
+ readonly isOnline: _angular_core.WritableSignal<boolean>;
206
+ readonly isOnlineEv: _angular_core.OutputEmitterRef<boolean>;
207
+ private onlineListener;
208
+ private offlineListener;
209
+ constructor();
210
+ private checkOnline;
211
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Connection, never>;
212
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Connection, "ZS-connection", never, {}, { "isOnlineEv": "isOnlineEv"; }, never, never, true, never>;
213
+ }
214
+
215
+ declare class ExtractorService {
216
+ /**
217
+ * Extract all error messages recursively from any structure
218
+ * @param input - could be string | Array | object | | Error | null | undefined
219
+ * @returns string[] - flattened array of all messages
220
+ */
221
+ extract(input: unknown): string[];
222
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ExtractorService, never>;
223
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<ExtractorService>;
224
+ }
225
+
226
+ type ZFormField<T> = WritableSignal<{
227
+ value: T | null;
228
+ valid: boolean;
229
+ }>;
230
+ type ZFormFieldMap<T extends Record<string, any>> = {
231
+ [K in keyof T]: ZFormField<T[K]>;
232
+ };
233
+ declare class Form<T extends Record<string, any>> {
234
+ readonly fields: ZFormFieldMap<T>;
235
+ readonly touched: WritableSignal<boolean>;
236
+ constructor(initial: T);
237
+ set<K extends keyof T>(key: K, value: T[K] | null, valid?: boolean): void;
238
+ patch<K extends keyof T>(key: K, partial: Partial<{
239
+ value: T[K] | null;
240
+ valid: boolean;
241
+ }>): void;
242
+ get<K extends keyof T>(key: K): {
243
+ value: T[K] | null;
244
+ valid: boolean;
245
+ };
246
+ readonly allFilled: _angular_core.Signal<boolean>;
247
+ private markAllTouched;
248
+ getValues(): T;
249
+ getValidations(): Record<keyof T, boolean>;
250
+ submit(callback: (values: T) => void): void;
251
+ }
252
+
253
+ type ButtonVariant = 'solid' | 'outline';
254
+ type BtnSizeType = 'xs' | BaseSize | 'xl';
255
+ declare class Button {
256
+ readonly Id: _angular_core.InputSignal<string>;
257
+ readonly btnStyle: _angular_core.InputSignal<FormStyle>;
258
+ readonly variant: _angular_core.InputSignal<ButtonVariant>;
259
+ readonly size: _angular_core.InputSignal<BtnSizeType>;
260
+ readonly disabled: _angular_core.InputSignal<boolean>;
261
+ readonly icon: _angular_core.InputSignal<string | null>;
262
+ readonly type: _angular_core.InputSignal<"reset" | "submit" | "button">;
263
+ readonly clickedEv: _angular_core.OutputEmitterRef<Event>;
264
+ readonly palette: _angular_core.Signal<_ziadshalaby_ngx_zs_component.FormPaletteEntry>;
265
+ readonly solidTextColor: _angular_core.Signal<string>;
266
+ readonly baseClasses: _angular_core.Signal<string>;
267
+ private join;
268
+ onClick(event: Event): void;
269
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Button, never>;
270
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Button, "ZS-button", never, { "Id": { "alias": "Id"; "required": false; "isSignal": true; }; "btnStyle": { "alias": "btnStyle"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; }, { "clickedEv": "clickedEv"; }, never, ["*"], true, never>;
271
+ }
272
+
273
+ interface BtnType {
274
+ show?: boolean;
275
+ text?: string;
276
+ btnStyle?: FormStyle;
277
+ variant?: ButtonVariant;
278
+ size?: BaseSize;
279
+ icon?: string | null;
280
+ disabled?: boolean;
281
+ }
282
+ type BtnTypeDefault = Required<BtnType>;
283
+ type Position = 'left top' | 'left bot' | 'right top' | 'right bot' | 'center' | 'top' | 'bot';
284
+ declare class Modal {
285
+ readonly zIndices: ZIndicesType;
286
+ /** 🔹 Model لتحديد الفتح والإغلاق */
287
+ readonly open: _angular_core.ModelSignal<boolean>;
288
+ readonly title: _angular_core.InputSignal<string>;
289
+ readonly modalStyle: _angular_core.InputSignal<FormStyle>;
290
+ readonly showCancelIcon: _angular_core.InputSignal<boolean>;
291
+ readonly showFooter: _angular_core.InputSignal<boolean>;
292
+ readonly cancelConfig: _angular_core.InputSignal<BtnType | undefined>;
293
+ readonly confirmConfig: _angular_core.InputSignal<BtnType | undefined>;
294
+ readonly position: _angular_core.InputSignal<Position>;
295
+ readonly closeOnOverlay: _angular_core.InputSignal<boolean>;
296
+ readonly cancelConfigDefault: BtnTypeDefault;
297
+ readonly confirmConfigDefault: BtnTypeDefault;
298
+ readonly cancelMerged: _angular_core.Signal<{
299
+ show: boolean;
300
+ text: string;
301
+ btnStyle: FormStyle;
302
+ variant: ButtonVariant;
303
+ size: BaseSize;
304
+ icon: string | null;
305
+ disabled: boolean;
306
+ }>;
307
+ readonly confirmMerged: _angular_core.Signal<{
308
+ show: boolean;
309
+ text: string;
310
+ btnStyle: FormStyle;
311
+ variant: ButtonVariant;
312
+ size: BaseSize;
313
+ icon: string | null;
314
+ disabled: boolean;
315
+ }>;
316
+ readonly confirmEv: _angular_core.OutputEmitterRef<void>;
317
+ readonly cancelEv: _angular_core.OutputEmitterRef<void>;
318
+ readonly closedEv: _angular_core.OutputEmitterRef<void>;
319
+ readonly palette: _angular_core.Signal<_ziadshalaby_ngx_zs_component.FormPaletteEntry>;
320
+ readonly isOpen: _angular_core.WritableSignal<boolean>;
321
+ readonly positionClass: _angular_core.Signal<string>;
322
+ private setTimeId?;
323
+ constructor();
324
+ close(): void;
325
+ onOverlayClick(event: MouseEvent): void;
326
+ onEscape(): void;
327
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Modal, never>;
328
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Modal, "ZS-modal", never, { "open": { "alias": "open"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "modalStyle": { "alias": "modalStyle"; "required": false; "isSignal": true; }; "showCancelIcon": { "alias": "showCancelIcon"; "required": false; "isSignal": true; }; "showFooter": { "alias": "showFooter"; "required": false; "isSignal": true; }; "cancelConfig": { "alias": "cancelConfig"; "required": false; "isSignal": true; }; "confirmConfig": { "alias": "confirmConfig"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "closeOnOverlay": { "alias": "closeOnOverlay"; "required": false; "isSignal": true; }; }, { "open": "openChange"; "confirmEv": "confirmEv"; "cancelEv": "cancelEv"; "closedEv": "closedEv"; }, never, ["*"], true, never>;
329
+ }
330
+
331
+ interface UserProfile {
332
+ name: string;
333
+ username?: string;
334
+ email?: string;
335
+ imageUrl?: string;
336
+ [key: string]: any;
337
+ }
338
+ type NavbarItemExport = Omit<NavbarItem, 'childrenOpenWindow'>;
339
+ interface navItemsType {
340
+ routerLinkActive?: string;
341
+ colorClass?: string;
342
+ navItems: NavbarItemExport[];
343
+ }
344
+ interface SiteNameConfigType {
345
+ siteName: string;
346
+ siteNameColorClass?: string;
347
+ routerLink?: string;
348
+ }
349
+ interface AuthButtonsType {
350
+ showAuthButtons: boolean;
351
+ login?: {
352
+ btnStyle?: FormStyle;
353
+ variant?: ButtonVariant;
354
+ size?: BaseSize;
355
+ icon?: string | null;
356
+ };
357
+ signup?: {
358
+ btnStyle?: FormStyle;
359
+ variant?: ButtonVariant;
360
+ size?: BaseSize;
361
+ icon?: string | null;
362
+ };
363
+ }
364
+ declare class Navbar {
365
+ readonly zIndices: ZIndicesType;
366
+ readonly fixed: _angular_core.InputSignal<boolean>;
367
+ readonly logoUrl: _angular_core.InputSignal<string | undefined>;
368
+ readonly siteNameConfig: _angular_core.InputSignal<SiteNameConfigType | undefined>;
369
+ readonly authButtons: _angular_core.InputSignal<AuthButtonsType>;
370
+ readonly showUserSection: _angular_core.InputSignal<boolean>;
371
+ readonly showSearchBar: _angular_core.InputSignal<boolean>;
372
+ readonly navItems: _angular_core.InputSignal<navItemsType | undefined>;
373
+ readonly isLoggedIn: _angular_core.InputSignal<boolean>;
374
+ readonly userProfile: _angular_core.InputSignal<UserProfile | undefined>;
375
+ readonly userMenuItems: _angular_core.InputSignal<NavbarItemExport[]>;
376
+ readonly searchPlaceholder: _angular_core.InputSignal<string>;
377
+ readonly loginClickedEv: _angular_core.OutputEmitterRef<void>;
378
+ readonly signupClickedEv: _angular_core.OutputEmitterRef<void>;
379
+ readonly searchSubmittedEv: _angular_core.OutputEmitterRef<string | null>;
380
+ readonly anyItemClickedEv: _angular_core.OutputEmitterRef<NavbarItem>;
381
+ readonly searchValue: _angular_core.ModelSignal<string | null>;
382
+ readonly isMobileMenuOpen: _angular_core.ModelSignal<boolean>;
383
+ readonly isUserMenuOpen: _angular_core.WritableSignal<boolean>;
384
+ readonly isMoreOpen: _angular_core.WritableSignal<boolean>;
385
+ readonly visibleNavItems: _angular_core.Signal<NavbarItem[]>;
386
+ readonly moreNavItems: _angular_core.Signal<NavbarItem[]>;
387
+ readonly mobileNavItems: _angular_core.Signal<NavbarItem[]>;
388
+ readonly getUserMenuItems: _angular_core.Signal<NavbarItem[]>;
389
+ private toNavbarItem;
390
+ onSearchSubmit(): void;
391
+ onLogin(): void;
392
+ onSignup(): void;
393
+ toggleMobileMenu(): void;
394
+ toggleUserMenu(): void;
395
+ closeAllMenus(): void;
396
+ itemClicked(event: NavbarItem): void;
397
+ private resizeObserver;
398
+ ngOnInit(): void;
399
+ ngOnDestroy(): void;
400
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Navbar, never>;
401
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Navbar, "ZS-navbar", never, { "fixed": { "alias": "fixed"; "required": false; "isSignal": true; }; "logoUrl": { "alias": "logoUrl"; "required": false; "isSignal": true; }; "siteNameConfig": { "alias": "siteNameConfig"; "required": false; "isSignal": true; }; "authButtons": { "alias": "authButtons"; "required": false; "isSignal": true; }; "showUserSection": { "alias": "showUserSection"; "required": false; "isSignal": true; }; "showSearchBar": { "alias": "showSearchBar"; "required": false; "isSignal": true; }; "navItems": { "alias": "navItems"; "required": false; "isSignal": true; }; "isLoggedIn": { "alias": "isLoggedIn"; "required": false; "isSignal": true; }; "userProfile": { "alias": "userProfile"; "required": false; "isSignal": true; }; "userMenuItems": { "alias": "userMenuItems"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "searchValue": { "alias": "searchValue"; "required": false; "isSignal": true; }; "isMobileMenuOpen": { "alias": "isMobileMenuOpen"; "required": false; "isSignal": true; }; }, { "loginClickedEv": "loginClickedEv"; "signupClickedEv": "signupClickedEv"; "searchSubmittedEv": "searchSubmittedEv"; "anyItemClickedEv": "anyItemClickedEv"; "searchValue": "searchValueChange"; "isMobileMenuOpen": "isMobileMenuOpenChange"; }, never, never, true, never>;
402
+ }
403
+
404
+ declare class Page404 {
405
+ readonly title: _angular_core.InputSignal<string>;
406
+ readonly message: _angular_core.InputSignal<string>;
407
+ readonly icon: _angular_core.InputSignal<string>;
408
+ readonly showButton: _angular_core.InputSignal<boolean>;
409
+ readonly buttonText: _angular_core.InputSignal<string>;
410
+ readonly routerLink: _angular_core.InputSignal<string>;
411
+ readonly onAction: _angular_core.OutputEmitterRef<void>;
412
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Page404, never>;
413
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Page404, "ZS-page404", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "showButton": { "alias": "showButton"; "required": false; "isSignal": true; }; "buttonText": { "alias": "buttonText"; "required": false; "isSignal": true; }; "routerLink": { "alias": "routerLink"; "required": false; "isSignal": true; }; }, { "onAction": "onAction"; }, never, never, true, never>;
414
+ }
415
+
416
+ declare class Pagination {
417
+ /**
418
+ * Total number of pages (required).
419
+ */
420
+ readonly totalPages: _angular_core.InputSignal<number>;
421
+ /**
422
+ * Current active page (required).
423
+ */
424
+ readonly currentPage: _angular_core.InputSignal<number>;
425
+ /**
426
+ * Whether to display the total items count.
427
+ */
428
+ readonly showTotalItems: _angular_core.InputSignal<boolean>;
429
+ /**
430
+ * Message shown before the total items count.
431
+ */
432
+ readonly totalItemsMessage: _angular_core.InputSignal<string>;
433
+ /**
434
+ * Total number of items (used when `showTotalItems` is true).
435
+ */
436
+ readonly totalItems: _angular_core.InputSignal<number | undefined>;
437
+ /**
438
+ * Emits the new page number when the user navigates.
439
+ */
440
+ readonly pageChangeEv: _angular_core.OutputEmitterRef<number>;
441
+ /**
442
+ * Generates an array of page numbers from 1 to `totalPages`.
443
+ */
444
+ readonly pages: _angular_core.Signal<number[]>;
445
+ /**
446
+ * Navigates to the specified page if it's within valid range.
447
+ */
448
+ goToPage(page: number): void;
449
+ /**
450
+ * Navigates to the next page.
451
+ */
452
+ nextPage(): void;
453
+ /**
454
+ * Navigates to the previous page.
455
+ */
456
+ prevPage(): void;
457
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Pagination, never>;
458
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Pagination, "ZS-pagination", never, { "totalPages": { "alias": "totalPages"; "required": true; "isSignal": true; }; "currentPage": { "alias": "currentPage"; "required": true; "isSignal": true; }; "showTotalItems": { "alias": "showTotalItems"; "required": false; "isSignal": true; }; "totalItemsMessage": { "alias": "totalItemsMessage"; "required": false; "isSignal": true; }; "totalItems": { "alias": "totalItems"; "required": false; "isSignal": true; }; }, { "pageChangeEv": "pageChangeEv"; }, never, never, true, never>;
459
+ }
460
+
461
+ type PositionType = 'left' | 'right';
462
+ declare class ScrollToTop {
463
+ readonly zIndices: ZIndicesType;
464
+ /**
465
+ * Determines the horizontal position of the button ('left' or 'right').
466
+ * Default: 'right'
467
+ */
468
+ readonly position: _angular_core.InputSignal<PositionType>;
469
+ /**
470
+ * Tailwind CSS class for the circle's color (background ring).
471
+ */
472
+ readonly circleColorClass: _angular_core.InputSignal<string>;
473
+ /**
474
+ * BaseColors class for the arrow and progress indicator color.
475
+ */
476
+ readonly arrowProgressColor: _angular_core.InputSignal<BaseColors>;
477
+ private readonly circleRadius;
478
+ readonly circleCircumference: number;
479
+ readonly scrollY: _angular_core.WritableSignal<number>;
480
+ readonly arrowProgressColorClass: _angular_core.Signal<string>;
481
+ /**
482
+ * Computes the stroke-dashoffset for the progress circle based on scroll position.
483
+ */
484
+ readonly progressOffset: _angular_core.Signal<number>;
485
+ /**
486
+ * Returns Tailwind classes to position the button horizontally.
487
+ */
488
+ readonly positionClass: _angular_core.Signal<{
489
+ 'zs:right-4': boolean;
490
+ 'zs:left-4': boolean;
491
+ }>;
492
+ onScroll(event: Event): void;
493
+ scrollToTop(): void;
494
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScrollToTop, never>;
495
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ScrollToTop, "ZS-scroll-to-top", never, { "position": { "alias": "position"; "required": false; "isSignal": true; }; "circleColorClass": { "alias": "circleColorClass"; "required": false; "isSignal": true; }; "arrowProgressColor": { "alias": "arrowProgressColor"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
496
+ }
497
+
498
+ type LoaderType = 'spinner' | 'pro' | 'double' | 'gear' | 'fan' | 'pulse' | 'dots' | 'bars';
499
+ declare class Spinner {
500
+ readonly zIndices: ZIndicesType;
501
+ readonly loading: _angular_core.InputSignal<boolean>;
502
+ readonly isFloating: _angular_core.InputSignal<boolean>;
503
+ readonly color: _angular_core.InputSignal<BaseColors>;
504
+ readonly withBox: _angular_core.InputSignal<boolean>;
505
+ readonly boxColorClass: _angular_core.InputSignal<string>;
506
+ readonly type: _angular_core.InputSignal<LoaderType>;
507
+ readonly size: _angular_core.InputSignal<BaseSize>;
508
+ readonly wrapperClasses: _angular_core.Signal<string>;
509
+ readonly boxClasses: _angular_core.Signal<string>;
510
+ readonly spinnerSizeTextClass: _angular_core.Signal<string>;
511
+ readonly spinnerSizeDotsClass: _angular_core.Signal<string>;
512
+ readonly spinnerSizeBarsClass: (num: number) => string;
513
+ readonly spinnerSizeProClass: _angular_core.Signal<string>;
514
+ readonly spinnerSizePulseClass: _angular_core.Signal<string>;
515
+ readonly spinnerSizeDoubleClass: (num: 1 | 2) => string;
516
+ readonly bgColor: _angular_core.Signal<string | undefined>;
517
+ readonly borderColor: _angular_core.Signal<string | undefined>;
518
+ readonly textColor: _angular_core.Signal<string | undefined>;
519
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Spinner, never>;
520
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Spinner, "ZS-spinner", never, { "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "isFloating": { "alias": "isFloating"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "withBox": { "alias": "withBox"; "required": false; "isSignal": true; }; "boxColorClass": { "alias": "boxColorClass"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
521
+ }
522
+
523
+ type themeTypes = 'light' | 'dark';
524
+ declare class ThemeToggle {
525
+ readonly zIndices: ZIndicesType;
526
+ readonly currentTheme: _angular_core.WritableSignal<themeTypes>;
527
+ readonly isOpen: _angular_core.WritableSignal<boolean>;
528
+ private readonly userSelectedTheme;
529
+ readonly bodyClass: _angular_core.InputSignal<string>;
530
+ readonly themeChangeEv: _angular_core.OutputEmitterRef<themeTypes>;
531
+ constructor();
532
+ toggleOpen(): void;
533
+ setTheme(theme: themeTypes): void;
534
+ onDocumentClick(event: MouseEvent): void;
535
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<ThemeToggle, never>;
536
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<ThemeToggle, "ZS-theme-toggle", never, { "bodyClass": { "alias": "bodyClass"; "required": false; "isSignal": true; }; }, { "themeChangeEv": "themeChangeEv"; }, never, never, true, never>;
537
+ }
538
+
539
+ type ChVariantType = 'solid' | 'regular';
540
+ type ShapeType = 'square' | 'circle';
541
+ declare class Checkbox {
542
+ readonly Id: _angular_core.InputSignal<string>;
543
+ readonly label: _angular_core.InputSignal<string | null>;
544
+ readonly hint: _angular_core.InputSignal<string | null>;
545
+ readonly inputStyle: _angular_core.InputSignal<FormStyle>;
546
+ readonly size: _angular_core.InputSignal<BaseSize>;
547
+ readonly disabled: _angular_core.InputSignal<boolean>;
548
+ readonly isReadonly: _angular_core.InputSignal<boolean>;
549
+ readonly variant: _angular_core.InputSignal<ChVariantType>;
550
+ readonly shape: _angular_core.InputSignal<ShapeType>;
551
+ readonly value: _angular_core.ModelSignal<boolean>;
552
+ readonly palette: _angular_core.Signal<_ziadshalaby_ngx_zs_component.FormPaletteEntry>;
553
+ readonly iconClasses: _angular_core.Signal<string>;
554
+ readonly sizeClass: _angular_core.Signal<string>;
555
+ readonly isChecked: _angular_core.Signal<boolean>;
556
+ readonly disabledOrReadonly: _angular_core.Signal<boolean>;
557
+ toggleChecked(): void;
558
+ onKeyDown(event: KeyboardEvent): void;
559
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Checkbox, never>;
560
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Checkbox, "ZS-checkbox", never, { "Id": { "alias": "Id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "inputStyle": { "alias": "inputStyle"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "isReadonly": { "alias": "isReadonly"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
561
+ }
562
+
563
+ type DateType = 'date' | 'datetime-local' | 'month' | 'week' | 'time';
564
+ type InputType = DateType | 'text' | 'email' | 'password' | 'number' | 'tel' | 'phone' | 'url' | 'search';
565
+ type ValidatorFn<T = string | null> = (value: T) => string[];
566
+ type FormatterFn = (value: string | null) => string | null;
567
+ type SizeClassesType = 'container' | 'field' | 'leftIcon' | 'rightIcon';
568
+ interface ChangeEventType<T = string | null> {
569
+ value: T;
570
+ valid: boolean;
571
+ fromForce: boolean;
572
+ }
573
+ declare class Input {
574
+ readonly Id: _angular_core.InputSignal<string>;
575
+ readonly iName: _angular_core.InputSignal<string | null>;
576
+ readonly label: _angular_core.InputSignal<string | null>;
577
+ readonly hint: _angular_core.InputSignal<string | null>;
578
+ readonly placeholder: _angular_core.InputSignal<string | null>;
579
+ readonly type: _angular_core.InputSignal<InputType>;
580
+ readonly inputStyle: _angular_core.InputSignal<FormStyle>;
581
+ readonly disabled: _angular_core.InputSignal<boolean>;
582
+ readonly isReadonly: _angular_core.InputSignal<boolean>;
583
+ readonly autocomplete: _angular_core.InputSignal<string | null>;
584
+ readonly required: _angular_core.InputSignal<boolean>;
585
+ readonly inputmode: _angular_core.InputSignal<string | null>;
586
+ readonly icon: _angular_core.InputSignal<string | null>;
587
+ readonly showSearchIcon: _angular_core.InputSignal<boolean>;
588
+ readonly showLoaderIconOnSearchInput: _angular_core.InputSignal<boolean>;
589
+ readonly maxlength: _angular_core.InputSignal<number | null>;
590
+ readonly minlength: _angular_core.InputSignal<number | null>;
591
+ readonly spellcheck: _angular_core.InputSignal<boolean>;
592
+ readonly min: _angular_core.InputSignal<string | number | null>;
593
+ readonly max: _angular_core.InputSignal<string | number | null>;
594
+ readonly step: _angular_core.InputSignal<number | null>;
595
+ readonly validateFns: _angular_core.InputSignal<ValidatorFn<string | null>[]>;
596
+ readonly formatFn: _angular_core.InputSignal<FormatterFn>;
597
+ readonly autofocus: _angular_core.InputSignal<boolean>;
598
+ readonly searchDebounceDelay: _angular_core.InputSignal<number>;
599
+ readonly size: _angular_core.InputSignal<BaseSize>;
600
+ readonly inputEl: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
601
+ readonly value: _angular_core.ModelSignal<string | null>;
602
+ readonly touched: _angular_core.ModelSignal<boolean>;
603
+ readonly enterEv: _angular_core.OutputEmitterRef<void>;
604
+ readonly focusEv: _angular_core.OutputEmitterRef<void>;
605
+ readonly blurEv: _angular_core.OutputEmitterRef<void>;
606
+ readonly changedEv: _angular_core.OutputEmitterRef<ChangeEventType<string | null>>;
607
+ readonly searchEv: _angular_core.OutputEmitterRef<string | null>;
608
+ readonly clearedEv: _angular_core.OutputEmitterRef<void>;
609
+ readonly keydownEv: _angular_core.OutputEmitterRef<KeyboardEvent>;
610
+ readonly showPassword: _angular_core.WritableSignal<boolean>;
611
+ private searchDebounceTimer?;
612
+ readonly loaderIconOnSearchInput: _angular_core.WritableSignal<string | null>;
613
+ readonly disabledOrReadonly: _angular_core.Signal<boolean>;
614
+ readonly containerClasses: _angular_core.Signal<string>;
615
+ readonly isDate: _angular_core.Signal<boolean>;
616
+ readonly dateIcon: _angular_core.Signal<string>;
617
+ readonly showClear: _angular_core.Signal<boolean>;
618
+ readonly error: _angular_core.Signal<string[]>;
619
+ readonly supportsMinMaxStep: _angular_core.Signal<boolean>;
620
+ get actualType(): string;
621
+ getSize(type: SizeClassesType): string;
622
+ ngAfterViewInit(): void;
623
+ focusInput(event: MouseEvent): void;
624
+ onInput(event: Event): void;
625
+ onEnter(): void;
626
+ onFocus(): void;
627
+ onBlur(): void;
628
+ onChange(): void;
629
+ onSearch(): void;
630
+ clear(): void;
631
+ togglePassword(): void;
632
+ onKeydown(event: KeyboardEvent): void;
633
+ /** Forces the input to trigger a manual change event */
634
+ forceChange(fromForce?: boolean): void;
635
+ private emitChangeValue;
636
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Input, never>;
637
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Input, "ZS-input", never, { "Id": { "alias": "Id"; "required": false; "isSignal": true; }; "iName": { "alias": "iName"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "inputStyle": { "alias": "inputStyle"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "isReadonly": { "alias": "isReadonly"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "inputmode": { "alias": "inputmode"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "showSearchIcon": { "alias": "showSearchIcon"; "required": false; "isSignal": true; }; "showLoaderIconOnSearchInput": { "alias": "showLoaderIconOnSearchInput"; "required": false; "isSignal": true; }; "maxlength": { "alias": "maxlength"; "required": false; "isSignal": true; }; "minlength": { "alias": "minlength"; "required": false; "isSignal": true; }; "spellcheck": { "alias": "spellcheck"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "validateFns": { "alias": "validateFns"; "required": false; "isSignal": true; }; "formatFn": { "alias": "formatFn"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "searchDebounceDelay": { "alias": "searchDebounceDelay"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; "enterEv": "enterEv"; "focusEv": "focusEv"; "blurEv": "blurEv"; "changedEv": "changedEv"; "searchEv": "searchEv"; "clearedEv": "clearedEv"; "keydownEv": "keydownEv"; }, never, never, true, never>;
638
+ }
639
+
640
+ interface FileData {
641
+ name: string;
642
+ size: number;
643
+ type: string;
644
+ url?: string;
645
+ }
646
+ type FilesType = Map<string, FileData>;
647
+ declare class FileInput {
648
+ readonly Id: _angular_core.InputSignal<string>;
649
+ readonly iName: _angular_core.InputSignal<string | null>;
650
+ readonly label: _angular_core.InputSignal<string | null>;
651
+ readonly hint: _angular_core.InputSignal<string | null>;
652
+ readonly placeholder: _angular_core.InputSignal<string | null>;
653
+ readonly inputStyle: _angular_core.InputSignal<FormStyle>;
654
+ readonly autofocus: _angular_core.InputSignal<boolean>;
655
+ readonly disabled: _angular_core.InputSignal<boolean>;
656
+ readonly isReadonly: _angular_core.InputSignal<boolean>;
657
+ readonly required: _angular_core.InputSignal<boolean>;
658
+ readonly validateFns: _angular_core.InputSignal<ValidatorFn<FileData[]>[]>;
659
+ readonly accept: _angular_core.InputSignal<string>;
660
+ readonly multiple: _angular_core.InputSignal<boolean>;
661
+ readonly maxSize: _angular_core.InputSignal<number>;
662
+ readonly allowPreview: _angular_core.InputSignal<boolean>;
663
+ readonly maxFiles: _angular_core.InputSignal<number | "infinity">;
664
+ readonly changeEv: _angular_core.OutputEmitterRef<ChangeEventType<FileData[]>>;
665
+ readonly files: _angular_core.ModelSignal<FilesType>;
666
+ readonly touched: _angular_core.ModelSignal<boolean>;
667
+ readonly fileInputRef: _angular_core.Signal<ElementRef<HTMLInputElement> | undefined>;
668
+ readonly palette: _angular_core.Signal<_ziadshalaby_ngx_zs_component.FormPaletteEntry>;
669
+ readonly hasFiles: _angular_core.Signal<boolean>;
670
+ readonly totalSize: _angular_core.Signal<number>;
671
+ readonly disabledOrReadonly: _angular_core.Signal<boolean>;
672
+ readonly error: _angular_core.Signal<string[]>;
673
+ readonly filesMapToList: _angular_core.Signal<FileData[]>;
674
+ handleFileChange(event: Event): void;
675
+ removeFile(id: string): void;
676
+ /** Forces the input to trigger a manual change event */
677
+ forceChange(fromForce?: boolean): void;
678
+ formatSize(size: number): string;
679
+ preview(url: string | undefined): void;
680
+ private fileKey;
681
+ private emitChangeValue;
682
+ private matchesAccept;
683
+ ngOnDestroy(): void;
684
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FileInput, never>;
685
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FileInput, "ZS-file", never, { "Id": { "alias": "Id"; "required": false; "isSignal": true; }; "iName": { "alias": "iName"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "inputStyle": { "alias": "inputStyle"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "isReadonly": { "alias": "isReadonly"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "validateFns": { "alias": "validateFns"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "maxSize": { "alias": "maxSize"; "required": false; "isSignal": true; }; "allowPreview": { "alias": "allowPreview"; "required": false; "isSignal": true; }; "maxFiles": { "alias": "maxFiles"; "required": false; "isSignal": true; }; "files": { "alias": "files"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "changeEv": "changeEv"; "files": "filesChange"; "touched": "touchedChange"; }, never, never, true, never>;
686
+ }
687
+
688
+ declare class InputErrors {
689
+ readonly extractorService: ExtractorService;
690
+ readonly Id: _angular_core.InputSignal<string>;
691
+ readonly errors: _angular_core.InputSignal<string[][]>;
692
+ readonly extractedErrors: _angular_core.Signal<string[]>;
693
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<InputErrors, never>;
694
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<InputErrors, "ZS-input-errors", never, { "Id": { "alias": "Id"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
695
+ }
696
+
697
+ declare class Label {
698
+ readonly label: _angular_core.InputSignal<string | null>;
699
+ readonly hint: _angular_core.InputSignal<string | null>;
700
+ readonly hintId: _angular_core.InputSignal<string | null>;
701
+ readonly size: _angular_core.InputSignal<BaseSize>;
702
+ readonly required: _angular_core.InputSignal<boolean>;
703
+ readonly for: _angular_core.InputSignal<string | null>;
704
+ readonly sizeClasses: _angular_core.Signal<{
705
+ label: string;
706
+ hint: string;
707
+ }>;
708
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Label, never>;
709
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Label, "ZS-label", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "hintId": { "alias": "hintId"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "for": { "alias": "for"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
710
+ }
711
+
712
+ declare class Range {
713
+ readonly Id: _angular_core.InputSignal<string>;
714
+ readonly label: _angular_core.InputSignal<string | null>;
715
+ readonly hint: _angular_core.InputSignal<string | null>;
716
+ readonly min: _angular_core.InputSignal<number>;
717
+ readonly max: _angular_core.InputSignal<number>;
718
+ readonly step: _angular_core.InputSignal<number>;
719
+ readonly inputStyle: _angular_core.InputSignal<FormStyle>;
720
+ readonly size: _angular_core.InputSignal<BaseSize>;
721
+ readonly disabled: _angular_core.InputSignal<boolean>;
722
+ readonly isReadonly: _angular_core.InputSignal<boolean>;
723
+ readonly showValue: _angular_core.InputSignal<boolean>;
724
+ readonly value: _angular_core.ModelSignal<number>;
725
+ readonly trackRef: _angular_core.Signal<ElementRef<HTMLDivElement> | undefined>;
726
+ readonly dragging: _angular_core.WritableSignal<boolean>;
727
+ readonly disabledOrReadonly: _angular_core.Signal<boolean>;
728
+ readonly palette: _angular_core.Signal<_ziadshalaby_ngx_zs_component.FormPaletteEntry>;
729
+ readonly percent: _angular_core.Signal<number>;
730
+ rangeSizeClasses: (type: "size" | "height") => string;
731
+ readonly dotCLasses: _angular_core.Signal<string>;
732
+ readonly gapCLasses: _angular_core.Signal<string>;
733
+ readonly rangeClasses: _angular_core.Signal<string>;
734
+ readonly ThumbClasses: _angular_core.Signal<string>;
735
+ onMouseDown(event: MouseEvent): void;
736
+ onMouseMove(event: MouseEvent): void;
737
+ onMouseUp(): void;
738
+ private updateValueFromEvent;
739
+ calcThumbPosition(): string;
740
+ constructor();
741
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Range, never>;
742
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Range, "ZS-range", never, { "Id": { "alias": "Id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "step": { "alias": "step"; "required": false; "isSignal": true; }; "inputStyle": { "alias": "inputStyle"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "isReadonly": { "alias": "isReadonly"; "required": false; "isSignal": true; }; "showValue": { "alias": "showValue"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
743
+ }
744
+
745
+ interface DropdownItem<T> {
746
+ id: T;
747
+ name: string;
748
+ [key: string]: any;
749
+ }
750
+ declare class Select<T> {
751
+ readonly zIndices: ZIndicesType;
752
+ readonly Id: _angular_core.InputSignal<string>;
753
+ readonly items: _angular_core.InputSignal<DropdownItem<T>[]>;
754
+ readonly label: _angular_core.InputSignal<string | null>;
755
+ readonly hint: _angular_core.InputSignal<string | null>;
756
+ readonly required: _angular_core.InputSignal<boolean>;
757
+ readonly disabled: _angular_core.InputSignal<boolean>;
758
+ readonly isReadonly: _angular_core.InputSignal<boolean>;
759
+ readonly inputStyle: _angular_core.InputSignal<FormStyle>;
760
+ readonly placeholder: _angular_core.InputSignal<string>;
761
+ readonly showSearch: _angular_core.InputSignal<boolean>;
762
+ readonly searchPlaceholder: _angular_core.InputSignal<string>;
763
+ readonly noResultsText: _angular_core.InputSignal<string>;
764
+ readonly showClearButton: _angular_core.InputSignal<boolean>;
765
+ readonly searchDebounceDelay: _angular_core.InputSignal<number>;
766
+ readonly showLoaderIconOnSearchInput: _angular_core.InputSignal<boolean>;
767
+ readonly preselectedIds: _angular_core.InputSignal<(string | number)[]>;
768
+ readonly multiple: _angular_core.InputSignal<boolean>;
769
+ readonly validateFns: _angular_core.InputSignal<ValidatorFn<DropdownItem<T>[]>[]>;
770
+ readonly selectedItems: _angular_core.ModelSignal<DropdownItem<T>[]>;
771
+ readonly touched: _angular_core.ModelSignal<boolean>;
772
+ readonly selectedItemsEv: _angular_core.OutputEmitterRef<ChangeEventType<DropdownItem<T>[]>>;
773
+ readonly selectionClearedEv: _angular_core.OutputEmitterRef<void>;
774
+ readonly isOpen: _angular_core.WritableSignal<boolean>;
775
+ readonly searchQuery: _angular_core.WritableSignal<string | null>;
776
+ readonly styleEntry: _angular_core.Signal<FormPaletteEntry>;
777
+ readonly disabledOrReadonly: _angular_core.Signal<boolean>;
778
+ readonly filteredItems: _angular_core.Signal<DropdownItem<T>[]>;
779
+ readonly containerClasses: _angular_core.Signal<string>;
780
+ readonly clearClass: _angular_core.Signal<string>;
781
+ readonly showItemsClass: _angular_core.Signal<string>;
782
+ readonly error: _angular_core.Signal<string[]>;
783
+ readonly getBgSelectClasses: (selected: boolean) => string;
784
+ constructor();
785
+ toggleDropdown(): void;
786
+ selectItem(items: DropdownItem<T>[], isPreselectedIds?: boolean): void;
787
+ clearSelection(): void;
788
+ inSelectItems(item?: DropdownItem<T>): boolean;
789
+ trackByFn(_index: number, item: DropdownItem<T>): T;
790
+ /** Forces the input to trigger a manual change event */
791
+ forceChange(fromForce?: boolean): void;
792
+ emitChangeValue(value: DropdownItem<T>[], fromForce?: boolean): void;
793
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Select<any>, never>;
794
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Select<any>, "ZS-select", never, { "Id": { "alias": "Id"; "required": false; "isSignal": true; }; "items": { "alias": "items"; "required": true; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "isReadonly": { "alias": "isReadonly"; "required": false; "isSignal": true; }; "inputStyle": { "alias": "inputStyle"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; "isSignal": true; }; "noResultsText": { "alias": "noResultsText"; "required": false; "isSignal": true; }; "showClearButton": { "alias": "showClearButton"; "required": false; "isSignal": true; }; "searchDebounceDelay": { "alias": "searchDebounceDelay"; "required": false; "isSignal": true; }; "showLoaderIconOnSearchInput": { "alias": "showLoaderIconOnSearchInput"; "required": false; "isSignal": true; }; "preselectedIds": { "alias": "preselectedIds"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "validateFns": { "alias": "validateFns"; "required": false; "isSignal": true; }; "selectedItems": { "alias": "selectedItems"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; }, { "selectedItems": "selectedItemsChange"; "touched": "touchedChange"; "selectedItemsEv": "selectedItemsEv"; "selectionClearedEv": "selectionClearedEv"; }, never, never, true, never>;
795
+ }
796
+
797
+ declare class Toggle {
798
+ readonly Id: _angular_core.InputSignal<string>;
799
+ readonly label: _angular_core.InputSignal<string | null>;
800
+ readonly hint: _angular_core.InputSignal<string | null>;
801
+ readonly color: _angular_core.InputSignal<BaseColors>;
802
+ readonly disabled: _angular_core.InputSignal<boolean>;
803
+ readonly isReadonly: _angular_core.InputSignal<boolean>;
804
+ readonly icon: _angular_core.InputSignal<string>;
805
+ readonly size: _angular_core.InputSignal<BaseSize>;
806
+ readonly value: _angular_core.ModelSignal<boolean>;
807
+ readonly toggleClasses: _angular_core.Signal<string>;
808
+ readonly colorClasses: (type: "border" | "bg" | "text") => string;
809
+ readonly btnSize: _angular_core.Signal<string>;
810
+ readonly wrapperSize: _angular_core.Signal<string>;
811
+ readonly transSize: _angular_core.Signal<string>;
812
+ readonly isChecked: _angular_core.Signal<boolean>;
813
+ readonly disabledOrReadonly: _angular_core.Signal<boolean>;
814
+ toggleChecked(): void;
815
+ onKeyDown(event: KeyboardEvent): void;
816
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Toggle, never>;
817
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Toggle, "ZS-toggle", never, { "Id": { "alias": "Id"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "isReadonly": { "alias": "isReadonly"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
818
+ }
819
+
820
+ export { ALERT_CONFIG, Alert, AlertService, Button, Card, Carousel, Checkbox, ColorMapping, Connection, ExtractorService, FileInput, Form, FormPaletteMap, Input, InputErrors, Label, Modal, NavItem, NavItemService, Navbar, NgxZsComponent, Page404, Pagination, Range, ScrollToTop, Select, Spinner, ThemeToggle, Toggle };
821
+ export type { AlertFullType, AlertType, AnimationType, AuthButtonsType, BaseColorPrefixes, BaseColors, BaseSize, BtnSizeType, BtnType, BtnTypeDefault, BulkAlert, ButtonVariant, CarouselItem, ChVariantType, ChangeEventType, DateType, DropdownItem, FileData, FilesType, FormPaletteEntry, FormStyle, FormatterFn, InputType, ItemShapeType, LoaderType, NavbarItem, NavbarItemExport, NewAlert, OldAlertsType, Position, PositionClassType, PositionType, ShapeType, SiteNameConfigType, UserProfile, ValidatorFn, VariantType, ZFormField, ZFormFieldMap, navItemsType, themeTypes };