ngx-pk-ui 0.0.1

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.
@@ -0,0 +1,665 @@
1
+ import * as i0 from '@angular/core';
2
+ import { TemplateRef, AfterContentInit, AfterViewInit, ElementRef, ChangeDetectorRef, OnInit, EventEmitter, ViewContainerRef, DoCheck, OnChanges, OnDestroy, QueryList, SimpleChanges } from '@angular/core';
3
+ import { SafeHtml } from '@angular/platform-browser';
4
+ import * as i10 from '@angular/common';
5
+ import * as i11 from '@angular/forms';
6
+ import { ControlValueAccessor } from '@angular/forms';
7
+ import * as rxjs from 'rxjs';
8
+ import { Observable } from 'rxjs';
9
+
10
+ declare class PkTab {
11
+ label: i0.InputSignal<string>;
12
+ disabled: i0.InputSignal<boolean>;
13
+ content: i0.Signal<TemplateRef<unknown>>;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkTab, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkTab, "pk-tab", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
16
+ }
17
+
18
+ declare class PkTabs implements AfterContentInit {
19
+ tabs: i0.Signal<readonly PkTab[]>;
20
+ activeIndex: i0.WritableSignal<number>;
21
+ ngAfterContentInit(): void;
22
+ selectTab(index: number): void;
23
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkTabs, never>;
24
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkTabs, "pk-tabs", never, {}, {}, ["tabs"], never, true, never>;
25
+ }
26
+
27
+ type ToastType = 'success' | 'error' | 'info' | 'warning';
28
+ interface Toast {
29
+ id: number;
30
+ type: ToastType;
31
+ message: string;
32
+ title?: string;
33
+ duration: number;
34
+ }
35
+
36
+ declare class PkToastrService {
37
+ private _counter;
38
+ toasts: i0.WritableSignal<Toast[]>;
39
+ show(type: ToastType, message: string, title?: string, duration?: number): void;
40
+ success(message: string, title?: string, duration?: number): void;
41
+ error(message: string, title?: string, duration?: number): void;
42
+ info(message: string, title?: string, duration?: number): void;
43
+ warning(message: string, title?: string, duration?: number): void;
44
+ dismiss(id: number): void;
45
+ clear(): void;
46
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkToastrService, never>;
47
+ static ɵprov: i0.ɵɵInjectableDeclaration<PkToastrService>;
48
+ }
49
+
50
+ declare class PkToastr {
51
+ toastr: PkToastrService;
52
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkToastr, never>;
53
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkToastr, "pk-toastr", never, {}, {}, never, never, true, never>;
54
+ }
55
+
56
+ type AlertType = 'success' | 'warn' | 'error' | 'confirm' | 'input';
57
+ type AlertInputType = 'string' | 'number' | 'date' | 'boolean';
58
+ interface AlertConfig {
59
+ type: AlertType;
60
+ title?: string;
61
+ message: string;
62
+ /** Only relevant when type === 'input' */
63
+ inputType?: AlertInputType;
64
+ /** Pre-filled value for input dialogs */
65
+ defaultValue?: string | number | boolean | null;
66
+ confirmLabel?: string;
67
+ cancelLabel?: string;
68
+ }
69
+ /** Resolved value of an alert:
70
+ * - success / warn / error → void (undefined)
71
+ * - confirm → boolean
72
+ * - input → string | number | boolean | null (null = cancelled)
73
+ */
74
+ type AlertResult = void | boolean | string | number | null;
75
+ /** Internal slot kept in the service signal */
76
+ interface AlertSlot {
77
+ config: AlertConfig;
78
+ resolve: (value: AlertResult) => void;
79
+ }
80
+
81
+ declare class PkAlertService {
82
+ /** The component reads this signal to know what (if anything) to display. */
83
+ readonly slot: i0.WritableSignal<AlertSlot | null>;
84
+ private _open;
85
+ success(message: string, title?: string): Promise<void>;
86
+ warn(message: string, title?: string): Promise<void>;
87
+ error(message: string, title?: string): Promise<void>;
88
+ confirm(message: string, title?: string, confirmLabel?: string, cancelLabel?: string): Promise<boolean>;
89
+ input(message: string, inputType?: AlertInputType, title?: string, defaultValue?: string | number | boolean | null): Promise<string | number | boolean | null>;
90
+ /** Called by the component after the user makes a choice. */
91
+ _resolve(value: AlertResult): void;
92
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkAlertService, never>;
93
+ static ɵprov: i0.ɵɵInjectableDeclaration<PkAlertService>;
94
+ }
95
+
96
+ declare class PkAlert {
97
+ svc: PkAlertService;
98
+ /** Local copy of input value while the dialog is open */
99
+ inputValue: i0.WritableSignal<string | number | boolean | null>;
100
+ constructor();
101
+ confirm(): void;
102
+ cancel(): void;
103
+ private _defaultFor;
104
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkAlert, never>;
105
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkAlert, "pk-alert", never, {}, {}, never, never, true, never>;
106
+ }
107
+
108
+ type PkModalSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';
109
+ type PkModalTheme = 'none' | 'white' | 'success' | 'warn' | 'error' | 'sky' | 'blue' | 'gray';
110
+
111
+ declare class PkModalHeader {
112
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkModalHeader, never>;
113
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkModalHeader, "pk-modal-header", never, {}, {}, never, ["*"], true, never>;
114
+ }
115
+
116
+ declare class PkModalBody {
117
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkModalBody, never>;
118
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkModalBody, "pk-modal-body", never, {}, {}, never, ["*"], true, never>;
119
+ }
120
+
121
+ declare class PkModalFooter {
122
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkModalFooter, never>;
123
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkModalFooter, "pk-modal-footer", never, {}, {}, never, ["*"], true, never>;
124
+ }
125
+
126
+ declare class PkModal {
127
+ openModal: i0.InputSignal<boolean>;
128
+ customStyle: i0.InputSignal<Record<string, string> | null>;
129
+ customClass: i0.InputSignal<string | null>;
130
+ blur: i0.InputSignal<boolean>;
131
+ size: i0.InputSignal<PkModalSize>;
132
+ theme: i0.InputSignal<PkModalTheme>;
133
+ closeAny: i0.InputSignal<boolean>;
134
+ closeMarker: i0.InputSignal<boolean>;
135
+ onClose: i0.OutputEmitterRef<void>;
136
+ readonly dialogClass: i0.Signal<string>;
137
+ close(): void;
138
+ onOverlayClick(): void;
139
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkModal, never>;
140
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkModal, "pk-modal", never, { "openModal": { "alias": "openModal"; "required": false; "isSignal": true; }; "customStyle": { "alias": "customStyle"; "required": false; "isSignal": true; }; "customClass": { "alias": "customClass"; "required": false; "isSignal": true; }; "blur": { "alias": "blur"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "closeAny": { "alias": "closeAny"; "required": false; "isSignal": true; }; "closeMarker": { "alias": "closeMarker"; "required": false; "isSignal": true; }; }, { "onClose": "onClose"; }, never, ["pk-modal-header", "pk-modal-body", "pk-modal-footer", "*"], true, never>;
141
+ }
142
+
143
+ type PkIconName = 'search' | 'menu' | 'user' | 'users' | 'profile' | 'close' | 'sort' | 'login' | 'logout' | 'map' | 'map-point' | 'folder-close' | 'folder-open' | 'document' | 'report' | 'chart-pie' | 'chart-bar' | 'dashboard' | 'database' | 'cog' | 'setting' | 'email' | 'upload' | 'download' | 'export' | 'import' | 'csv' | 'xls' | 'pdf' | 'text' | 'link' | 'unlink' | 'reload' | 'phone' | 'check-mark' | 'check-mark-circle' | 'shield' | 'server' | 'eye' | 'eye-off' | 'plus' | 'pencil' | 'save' | 'trash' | 'list' | 'clock' | 'calendar' | 'venn' | 'ambulance' | 'car' | 'car-crash' | 'bed' | 'xray' | 'lab' | 'print' | 'time' | 'wait' | 'success' | 'warning' | 'error' | 'question' | 'youtube' | 'facebook' | 'line' | 'telegram' | 'wechat' | 'linkedin';
144
+ type PkIconSet = 'pk' | 'material-symbols';
145
+ type PkMaterialSymbolVariant = 'outlined' | 'rounded' | 'sharp';
146
+ type PkMaterialSymbolWeight = 100 | 200 | 300 | 400 | 500 | 600 | 700;
147
+ type PkMaterialSymbolGrade = -25 | 0 | 200;
148
+ type PkMaterialSymbolOpticalSize = 20 | 24 | 40 | 48;
149
+ declare const PK_ICONS: Record<PkIconName, string>;
150
+
151
+ declare class PkIcon {
152
+ name: i0.InputSignal<string>;
153
+ iconSet: i0.InputSignal<PkIconSet>;
154
+ size: i0.InputSignal<number>;
155
+ color: i0.InputSignal<string>;
156
+ fillColor: i0.InputSignal<string>;
157
+ viewBox: i0.InputSignal<string>;
158
+ strokeWidth: i0.InputSignal<number>;
159
+ variant: i0.InputSignal<PkMaterialSymbolVariant>;
160
+ fill: i0.InputSignal<0 | 1>;
161
+ weight: i0.InputSignal<PkMaterialSymbolWeight>;
162
+ grade: i0.InputSignal<PkMaterialSymbolGrade>;
163
+ opticalSize: i0.InputSignal<PkMaterialSymbolOpticalSize>;
164
+ private sanitizer;
165
+ svgHtml: i0.Signal<SafeHtml>;
166
+ materialVariantClass: i0.Signal<string>;
167
+ materialVariationSettings: i0.Signal<string>;
168
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkIcon, never>;
169
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkIcon, "pk-icon", never, { "name": { "alias": "name"; "required": true; "isSignal": true; }; "iconSet": { "alias": "iconSet"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "fillColor": { "alias": "fillColor"; "required": false; "isSignal": true; }; "viewBox": { "alias": "viewBox"; "required": false; "isSignal": true; }; "strokeWidth": { "alias": "strokeWidth"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "fill": { "alias": "fill"; "required": false; "isSignal": true; }; "weight": { "alias": "weight"; "required": false; "isSignal": true; }; "grade": { "alias": "grade"; "required": false; "isSignal": true; }; "opticalSize": { "alias": "opticalSize"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
170
+ }
171
+
172
+ declare class PkDgColumnComponent implements AfterViewInit {
173
+ private el;
174
+ pkDgField?: string;
175
+ pkDgFilterKey?: string;
176
+ widthPx?: number;
177
+ width?: string;
178
+ headerText: string;
179
+ constructor(el: ElementRef);
180
+ ngAfterViewInit(): void;
181
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkDgColumnComponent, never>;
182
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkDgColumnComponent, "pk-dg-column", never, { "pkDgField": { "alias": "pkDgField"; "required": false; }; "pkDgFilterKey": { "alias": "pkDgFilterKey"; "required": false; }; "widthPx": { "alias": "style.width.px"; "required": false; }; }, {}, never, ["*"], false, never>;
183
+ }
184
+
185
+ declare class PkDgPageSizeComponent {
186
+ private cdr;
187
+ pkPageSizeOptions: number[];
188
+ pagination: PkDgPaginationComponent | null;
189
+ constructor(cdr: ChangeDetectorRef);
190
+ setPagination(p: PkDgPaginationComponent): void;
191
+ get currentSize(): number;
192
+ onChange(event: Event): void;
193
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkDgPageSizeComponent, never>;
194
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkDgPageSizeComponent, "pk-dg-page-size", never, { "pkPageSizeOptions": { "alias": "pkPageSizeOptions"; "required": false; }; }, {}, never, ["*"], false, never>;
195
+ }
196
+
197
+ declare class PkDgPaginationComponent implements OnInit, AfterContentInit {
198
+ pageSize?: PkDgPageSizeComponent;
199
+ pkDgPageSize: number;
200
+ totalItems: number;
201
+ pkDgPageChange: EventEmitter<number>;
202
+ pkDgPageSizeChange: EventEmitter<number>;
203
+ currentPage: number;
204
+ firstItem: number;
205
+ lastItem: number;
206
+ ngOnInit(): void;
207
+ ngAfterContentInit(): void;
208
+ ngOnChanges(): void;
209
+ updatePagination(): void;
210
+ get totalPages(): number;
211
+ goToPage(page: number): void;
212
+ onPageSizeChange(size: number): void;
213
+ get pages(): number[];
214
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkDgPaginationComponent, never>;
215
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkDgPaginationComponent, "pk-dg-pagination", never, { "pkDgPageSize": { "alias": "pkDgPageSize"; "required": false; }; "totalItems": { "alias": "totalItems"; "required": false; }; }, { "pkDgPageChange": "pkDgPageChange"; "pkDgPageSizeChange": "pkDgPageSizeChange"; }, ["pageSize"], ["*"], false, never>;
216
+ }
217
+
218
+ declare class PkDgRowComponent {
219
+ pkDgItem: any;
220
+ detailTemplate?: TemplateRef<any>;
221
+ isExpanded: boolean;
222
+ hasDetail: boolean;
223
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkDgRowComponent, never>;
224
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkDgRowComponent, "pk-dg-row", never, { "pkDgItem": { "alias": "pkDgItem"; "required": false; }; }, {}, ["detailTemplate"], ["*", "pk-dg-row-detail"], false, never>;
225
+ }
226
+
227
+ declare class PkDgRowDetailComponent implements OnInit {
228
+ row?: PkDgRowComponent | undefined;
229
+ constructor(row?: PkDgRowComponent | undefined);
230
+ ngOnInit(): void;
231
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkDgRowDetailComponent, [{ optional: true; host: true; }]>;
232
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkDgRowDetailComponent, "pk-dg-row-detail", never, {}, {}, never, ["*"], false, never>;
233
+ }
234
+
235
+ declare class PkDgItemsDirective implements DoCheck {
236
+ private templateRef;
237
+ private viewContainer;
238
+ private datagrid?;
239
+ private _items;
240
+ private _lastVersion;
241
+ constructor(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, datagrid?: PkDatagridComponent | undefined);
242
+ ngDoCheck(): void;
243
+ set pkDgItemsOf(items: any[]);
244
+ private renderItems;
245
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkDgItemsDirective, [null, null, { optional: true; }]>;
246
+ static ɵdir: i0.ɵɵDirectiveDeclaration<PkDgItemsDirective, "[pkDgItems]", never, { "pkDgItemsOf": { "alias": "pkDgItemsOf"; "required": false; }; }, {}, never, never, false, never>;
247
+ }
248
+ declare class PkIfExpandedDirective {
249
+ private templateRef;
250
+ private viewContainer;
251
+ private row?;
252
+ constructor(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, row?: PkDgRowComponent | undefined);
253
+ ngAfterViewInit(): void;
254
+ ngDoCheck(): void;
255
+ private updateView;
256
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkIfExpandedDirective, [null, null, { optional: true; host: true; }]>;
257
+ static ɵdir: i0.ɵɵDirectiveDeclaration<PkIfExpandedDirective, "[pkIfExpanded]", never, {}, {}, never, never, false, never>;
258
+ }
259
+ declare class NowrapDirective {
260
+ nowrap: boolean;
261
+ static ɵfac: i0.ɵɵFactoryDeclaration<NowrapDirective, never>;
262
+ static ɵdir: i0.ɵɵDirectiveDeclaration<NowrapDirective, "[nowrap]", never, {}, {}, never, never, false, never>;
263
+ }
264
+
265
+ declare class PkDatagridComponent implements AfterContentInit, AfterViewInit, OnChanges, OnDestroy {
266
+ private cdr;
267
+ columns: QueryList<PkDgColumnComponent>;
268
+ pagination?: PkDgPaginationComponent;
269
+ rowDetails: QueryList<PkDgRowDetailComponent>;
270
+ expandDirectives: QueryList<PkIfExpandedDirective>;
271
+ get hasExpandCol(): boolean;
272
+ pkDgLoading: boolean;
273
+ items: any[];
274
+ filterValues: Record<string, string>;
275
+ pkDgRefresh: EventEmitter<void>;
276
+ filterChange: EventEmitter<{
277
+ key: string;
278
+ value: string;
279
+ }>;
280
+ displayedItems: any[];
281
+ displayedItemsVersion: number;
282
+ expandedRows: Set<any>;
283
+ sortColumn: string | null;
284
+ sortDirection: 'asc' | 'desc' | null;
285
+ activeFilterCol: string | null;
286
+ activeFilterHeader: string;
287
+ filterPopupPos: {
288
+ top: number;
289
+ left: number;
290
+ };
291
+ columnWidths: number[];
292
+ private _resizingIdx;
293
+ private _resizeStartX;
294
+ private _resizeStartWidth;
295
+ private _resizeMoveRef;
296
+ private _resizeEndRef;
297
+ get totalWidth(): number;
298
+ private _initColumnWidths;
299
+ onDocumentClick(): void;
300
+ constructor(cdr: ChangeDetectorRef);
301
+ ngAfterContentInit(): void;
302
+ ngOnChanges(changes: SimpleChanges): void;
303
+ ngAfterViewInit(): void;
304
+ updateDisplayedItems(): void;
305
+ onSort(field: string): void;
306
+ getSortIcon(field: string): string;
307
+ toggleRowExpansion(row: any): void;
308
+ isRowExpanded(row: any): boolean;
309
+ openFilter(key: string, event: MouseEvent, headerText?: string): void;
310
+ onFilterInput(key: string, event: Event): void;
311
+ startResize(colIdx: number, event: MouseEvent): void;
312
+ private _onResizeMove;
313
+ private _onResizeEnd;
314
+ ngOnDestroy(): void;
315
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkDatagridComponent, never>;
316
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkDatagridComponent, "pk-datagrid", never, { "pkDgLoading": { "alias": "pkDgLoading"; "required": false; }; "items": { "alias": "items"; "required": false; }; "filterValues": { "alias": "filterValues"; "required": false; }; }, { "pkDgRefresh": "pkDgRefresh"; "filterChange": "filterChange"; }, ["pagination", "columns", "rowDetails", "expandDirectives"], ["pk-dg-row", "pk-dg-footer"], false, never>;
317
+ }
318
+
319
+ declare class PkDgCellComponent {
320
+ set nowrap(value: boolean);
321
+ get nowrap(): boolean;
322
+ _nowrap: boolean;
323
+ tdStyle: {
324
+ [key: string]: string;
325
+ } | null;
326
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkDgCellComponent, never>;
327
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkDgCellComponent, "pk-dg-cell", never, { "nowrap": { "alias": "nowrap"; "required": false; }; "tdStyle": { "alias": "tdStyle"; "required": false; }; }, {}, never, ["*"], false, never>;
328
+ }
329
+
330
+ declare class PkDgFooterComponent {
331
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkDgFooterComponent, never>;
332
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkDgFooterComponent, "pk-dg-footer", never, {}, {}, never, ["*"], false, never>;
333
+ }
334
+
335
+ declare class PkDatagridModule {
336
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkDatagridModule, never>;
337
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PkDatagridModule, [typeof PkDatagridComponent, typeof PkDgColumnComponent, typeof PkDgRowComponent, typeof PkDgCellComponent, typeof PkDgFooterComponent, typeof PkDgPaginationComponent, typeof PkDgPageSizeComponent, typeof PkDgRowDetailComponent, typeof PkDgItemsDirective, typeof PkIfExpandedDirective, typeof NowrapDirective], [typeof i10.CommonModule, typeof i11.FormsModule, typeof PkIcon], [typeof PkDatagridComponent, typeof PkDgColumnComponent, typeof PkDgRowComponent, typeof PkDgCellComponent, typeof PkDgFooterComponent, typeof PkDgPaginationComponent, typeof PkDgPageSizeComponent, typeof PkDgRowDetailComponent, typeof PkDgItemsDirective, typeof PkIfExpandedDirective, typeof NowrapDirective, typeof PkIcon]>;
338
+ static ɵinj: i0.ɵɵInjectorDeclaration<PkDatagridModule>;
339
+ }
340
+
341
+ declare class DatepickerService {
342
+ private activeDatepicker;
343
+ openDatepicker(component: PkDatepickerComponent): void;
344
+ getActiveDatepicker(): rxjs.Observable<PkDatepickerComponent | null>;
345
+ static ɵfac: i0.ɵɵFactoryDeclaration<DatepickerService, never>;
346
+ static ɵprov: i0.ɵɵInjectableDeclaration<DatepickerService>;
347
+ }
348
+
349
+ interface Holiday {
350
+ date: Date;
351
+ title: string;
352
+ }
353
+ declare class HolidayService {
354
+ constructor();
355
+ getHolidays(year: number): Observable<Holiday[]>;
356
+ static ɵfac: i0.ɵɵFactoryDeclaration<HolidayService, never>;
357
+ static ɵprov: i0.ɵɵInjectableDeclaration<HolidayService>;
358
+ }
359
+
360
+ declare class PkDatepickerComponent implements ControlValueAccessor, OnInit, OnDestroy {
361
+ private elementRef;
362
+ private datepickerService;
363
+ private holidayService;
364
+ disabled: boolean;
365
+ setNull: boolean;
366
+ dateInput: boolean;
367
+ locale: string;
368
+ minDate: Date | null;
369
+ maxDate: Date | null;
370
+ startOfWeek: 'monday' | 'sunday';
371
+ style: string | null;
372
+ placeholder: string;
373
+ onDateChange: EventEmitter<Date | null>;
374
+ private holidays;
375
+ private innerValue;
376
+ isOpen: boolean;
377
+ currentMonth: Date;
378
+ daysInMonth: Date[];
379
+ weekdays: string[];
380
+ months: {
381
+ name: string;
382
+ value: number;
383
+ }[];
384
+ years: number[];
385
+ selectedMonth: number;
386
+ selectedYear: number;
387
+ dropdownStyles: Record<string, string>;
388
+ private onChange;
389
+ private onTouched;
390
+ private subscription?;
391
+ get localeMode(): 'TH' | 'EN';
392
+ constructor(elementRef: ElementRef, datepickerService: DatepickerService, holidayService: HolidayService);
393
+ ngOnInit(): void;
394
+ ngOnDestroy(): void;
395
+ onClickOutside(event: Event): void;
396
+ onWindowResize(): void;
397
+ onWindowScroll(): void;
398
+ get value(): Date | null;
399
+ set value(val: Date | null);
400
+ get formattedDate(): string;
401
+ get currentMonthYear(): string;
402
+ get isTodayDisabled(): boolean;
403
+ get canGoPrevMonth(): boolean;
404
+ get canGoNextMonth(): boolean;
405
+ updateCalendar(): void;
406
+ generateMonths(): void;
407
+ generateYears(): void;
408
+ fetchHolidays(year: number): void;
409
+ onMonthChange(month: number): void;
410
+ onYearChange(year: number): void;
411
+ onChangeDate(event: any): void;
412
+ resetDate(): void;
413
+ prevMonth(): void;
414
+ nextMonth(): void;
415
+ selectToday(): void;
416
+ writeValue(value: Date | null): void;
417
+ registerOnChange(fn: (value: Date | null) => void): void;
418
+ registerOnTouched(fn: () => void): void;
419
+ setDisabledState(isDisabled: boolean): void;
420
+ onDateSelect(date: Date): void;
421
+ togglePicker(event: Event): void;
422
+ private updateDropdownPosition;
423
+ isSelected(date: Date): boolean;
424
+ isCurrentMonth(date: Date): boolean;
425
+ isDateInRange(date: Date | null): boolean;
426
+ isMonthDisabled(month: number): boolean;
427
+ isWeekend(date: Date): boolean;
428
+ isExplicitHoliday(date: Date): boolean;
429
+ getHolidayTitle(date: Date): string;
430
+ adjustCurrentMonthToRange(): void;
431
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkDatepickerComponent, never>;
432
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkDatepickerComponent, "pk-datepicker", never, { "disabled": { "alias": "disabled"; "required": false; }; "setNull": { "alias": "setNull"; "required": false; }; "dateInput": { "alias": "dateInput"; "required": false; }; "locale": { "alias": "locale"; "required": false; }; "minDate": { "alias": "minDate"; "required": false; }; "maxDate": { "alias": "maxDate"; "required": false; }; "startOfWeek": { "alias": "startOfWeek"; "required": false; }; "style": { "alias": "style"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; }, { "onDateChange": "onDateChange"; }, never, never, true, never>;
433
+ }
434
+
435
+ type ProgressType = 'line' | 'circle';
436
+ type ProgressStatus = 'normal' | 'success' | 'error' | 'warning';
437
+ interface ProgressConfig {
438
+ type?: ProgressType;
439
+ percent?: number;
440
+ status?: ProgressStatus;
441
+ showInfo?: boolean;
442
+ strokeWidth?: number;
443
+ striped?: boolean;
444
+ animated?: boolean;
445
+ indeterminate?: boolean;
446
+ label?: string;
447
+ color?: string;
448
+ }
449
+
450
+ declare class PkProgressComponent {
451
+ config: i0.InputSignal<ProgressConfig>;
452
+ circleSize: i0.Signal<number>;
453
+ radius: i0.Signal<number>;
454
+ circumference: i0.Signal<number>;
455
+ offset: i0.Signal<number>;
456
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkProgressComponent, never>;
457
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkProgressComponent, "pk-progress", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
458
+ }
459
+
460
+ type TreeSelectionMode = 'none' | 'single' | 'multi';
461
+ interface TreeNode {
462
+ /** Unique key (auto-assigned if omitted) */
463
+ key?: string;
464
+ label: string;
465
+ /** icon name for pk-icon */
466
+ icon?: string;
467
+ /** route for RouterLink */
468
+ routerLink?: string | string[];
469
+ data?: any;
470
+ children?: TreeNode[];
471
+ /** Runtime state — do not set manually */
472
+ _selected?: boolean;
473
+ _indeterminate?: boolean;
474
+ _expanded?: boolean;
475
+ }
476
+
477
+ declare class PkTreeviewComponent implements OnChanges {
478
+ private cdr;
479
+ /** Tree data */
480
+ nodes: TreeNode[];
481
+ /** 'none' | 'single' | 'multi' */
482
+ selection: TreeSelectionMode;
483
+ /** Show "เลือกทั้งหมด" row (multi only) */
484
+ showSelectAll: boolean;
485
+ /** Initially expanded depth (0 = root collapsed) */
486
+ expandDepth: number;
487
+ selected: EventEmitter<TreeNode[]>;
488
+ nodeToggle: EventEmitter<TreeNode>;
489
+ allSelected: boolean;
490
+ someSelected: boolean;
491
+ constructor(cdr: ChangeDetectorRef);
492
+ ngOnChanges(changes: SimpleChanges): void;
493
+ private initKeys;
494
+ private expandToDepth;
495
+ toggleSelectAll(): void;
496
+ onNodeToggled(node: TreeNode): void;
497
+ onSelectionChanged(selectedNodes: TreeNode[]): void;
498
+ private setAll;
499
+ /** Returns true=all-selected, false=none, 'indeterminate'=some */
500
+ private updateParentStates;
501
+ private updateSelectAllState;
502
+ private calcSelectState;
503
+ private getAllLeafs;
504
+ private getSelected;
505
+ /** Public API: get currently selected nodes */
506
+ getSelection(): TreeNode[];
507
+ /** Public API: clear all selection */
508
+ clearSelection(): void;
509
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkTreeviewComponent, never>;
510
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkTreeviewComponent, "pk-treeview", never, { "nodes": { "alias": "nodes"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; "showSelectAll": { "alias": "showSelectAll"; "required": false; }; "expandDepth": { "alias": "expandDepth"; "required": false; }; }, { "selected": "selected"; "nodeToggle": "nodeToggle"; }, never, never, true, never>;
511
+ }
512
+
513
+ declare class PkTreeviewNodeComponent {
514
+ nodes: TreeNode[];
515
+ selection: TreeSelectionMode;
516
+ nodeToggled: EventEmitter<TreeNode>;
517
+ selectionChanged: EventEmitter<TreeNode[]>;
518
+ toggleExpand(node: TreeNode, e: Event): void;
519
+ onRowClick(node: TreeNode, e: Event): void;
520
+ onCheckClick(node: TreeNode, e: Event): void;
521
+ private clearAllSelection;
522
+ private setNodeAndChildren;
523
+ private getSelected;
524
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkTreeviewNodeComponent, never>;
525
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkTreeviewNodeComponent, "pk-treeview-node", never, { "nodes": { "alias": "nodes"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; }, { "nodeToggled": "nodeToggled"; "selectionChanged": "selectionChanged"; }, never, never, true, never>;
526
+ }
527
+
528
+ declare class PkTreeviewModule {
529
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkTreeviewModule, never>;
530
+ static ɵmod: i0.ɵɵNgModuleDeclaration<PkTreeviewModule, never, [typeof PkTreeviewComponent, typeof PkTreeviewNodeComponent], [typeof PkTreeviewComponent, typeof PkTreeviewNodeComponent]>;
531
+ static ɵinj: i0.ɵɵInjectorDeclaration<PkTreeviewModule>;
532
+ }
533
+
534
+ interface SelectOption {
535
+ label?: string;
536
+ value?: string | number;
537
+ disabled?: boolean;
538
+ [key: string]: any;
539
+ }
540
+ type SelectMode = 'single' | 'multi';
541
+
542
+ declare class PkSelectComponent implements ControlValueAccessor {
543
+ private elementRef;
544
+ options: i0.InputSignal<SelectOption[]>;
545
+ mode: i0.InputSignal<SelectMode>;
546
+ placeholder: i0.InputSignal<string>;
547
+ searchable: i0.InputSignal<boolean>;
548
+ disabled: i0.InputSignal<boolean>;
549
+ labelField: i0.InputSignal<string>;
550
+ valueField: i0.InputSignal<string>;
551
+ returnObjects: i0.InputSignal<boolean>;
552
+ change: i0.OutputEmitterRef<any>;
553
+ isOpen: i0.WritableSignal<boolean>;
554
+ searchQuery: i0.WritableSignal<string>;
555
+ selectedValues: i0.WritableSignal<(string | number)[]>;
556
+ private onChange;
557
+ private onTouched;
558
+ filteredOptions: i0.Signal<SelectOption[]>;
559
+ displayValue: i0.Signal<string>;
560
+ toggleDropdown(): void;
561
+ selectOption(option: SelectOption): void;
562
+ isSelected(value: string | number): boolean;
563
+ onSearchInput(event: Event): void;
564
+ onDocumentClick(event: MouseEvent): void;
565
+ onCheckboxClick(option: SelectOption, event: MouseEvent): void;
566
+ private emitValue;
567
+ writeValue(value: any): void;
568
+ registerOnChange(fn: any): void;
569
+ registerOnTouched(fn: any): void;
570
+ setDisabledState(isDisabled: boolean): void;
571
+ private getOptionLabel;
572
+ getOptionValue(option: SelectOption): string | number;
573
+ private extractIncomingValue;
574
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkSelectComponent, never>;
575
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkSelectComponent, "pk-select", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "labelField": { "alias": "labelField"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "returnObjects": { "alias": "returnObjects"; "required": false; "isSignal": true; }; }, { "change": "change"; }, never, never, true, never>;
576
+ }
577
+
578
+ interface AutocompleteOption {
579
+ label: string;
580
+ value: any;
581
+ disabled?: boolean;
582
+ [key: string]: any;
583
+ }
584
+ type AutocompleteFetchFn = (searchTerm: string) => Promise<AutocompleteOption[]>;
585
+
586
+ declare class PkAutocompleteComponent implements ControlValueAccessor {
587
+ private elementRef;
588
+ options: i0.InputSignal<AutocompleteOption[]>;
589
+ fetchFn: i0.InputSignal<AutocompleteFetchFn | null>;
590
+ placeholder: i0.InputSignal<string>;
591
+ minChars: i0.InputSignal<number>;
592
+ debounceTime: i0.InputSignal<number>;
593
+ disabled: i0.InputSignal<boolean>;
594
+ displayKey: i0.InputSignal<string>;
595
+ searchTerm: i0.WritableSignal<string>;
596
+ isOpen: i0.WritableSignal<boolean>;
597
+ loading: i0.WritableSignal<boolean>;
598
+ highlightedIndex: i0.WritableSignal<number>;
599
+ selectedValue: i0.WritableSignal<any>;
600
+ fetchedOptions: i0.WritableSignal<AutocompleteOption[]>;
601
+ private debounceTimer;
602
+ private onChange;
603
+ private onTouched;
604
+ constructor();
605
+ filteredOptions: i0.Signal<AutocompleteOption[]>;
606
+ displayValue: i0.Signal<string>;
607
+ onClickOutside(event: MouseEvent): void;
608
+ onInput(event: Event): void;
609
+ onFocus(): void;
610
+ onKeyDown(event: KeyboardEvent): void;
611
+ performSearch(term: string): Promise<void>;
612
+ selectOption(option: AutocompleteOption): void;
613
+ clear(): void;
614
+ close(): void;
615
+ isSelected(option: AutocompleteOption): boolean;
616
+ writeValue(value: any): void;
617
+ registerOnChange(fn: any): void;
618
+ registerOnTouched(fn: any): void;
619
+ setDisabledState(isDisabled: boolean): void;
620
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkAutocompleteComponent, never>;
621
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkAutocompleteComponent, "pk-autocomplete", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "fetchFn": { "alias": "fetchFn"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "minChars": { "alias": "minChars"; "required": false; "isSignal": true; }; "debounceTime": { "alias": "debounceTime"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "displayKey": { "alias": "displayKey"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
622
+ }
623
+
624
+ declare class PkTypeaheadComponent implements ControlValueAccessor {
625
+ private elementRef;
626
+ items: any[];
627
+ placeholder: string;
628
+ disabled: boolean;
629
+ style: string;
630
+ customClass: string;
631
+ customStyle: {
632
+ [key: string]: string;
633
+ };
634
+ labelField: string;
635
+ valueField: string;
636
+ allowCustomValue: boolean;
637
+ maxItems: number;
638
+ minChars: number;
639
+ itemSelected: EventEmitter<any>;
640
+ value: string;
641
+ isOpen: boolean;
642
+ highlightedIndex: number;
643
+ onChange: (value: any) => void;
644
+ onTouch: () => void;
645
+ constructor(elementRef: ElementRef);
646
+ get filteredItems(): any[];
647
+ writeValue(value: any): void;
648
+ registerOnChange(fn: any): void;
649
+ registerOnTouched(fn: any): void;
650
+ setDisabledState(isDisabled: boolean): void;
651
+ onInput(event: Event): void;
652
+ onFocus(): void;
653
+ onBlur(): void;
654
+ onKeydown(event: KeyboardEvent): void;
655
+ selectItem(item: any): void;
656
+ getItemLabel(item: any): string;
657
+ getItemValue(item: any): string;
658
+ trackByItem(_: number, item: any): string;
659
+ onDocumentClick(event: Event): void;
660
+ static ɵfac: i0.ɵɵFactoryDeclaration<PkTypeaheadComponent, never>;
661
+ static ɵcmp: i0.ɵɵComponentDeclaration<PkTypeaheadComponent, "pk-typeahead", never, { "items": { "alias": "items"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "style": { "alias": "style"; "required": false; }; "customClass": { "alias": "customClass"; "required": false; }; "customStyle": { "alias": "customStyle"; "required": false; }; "labelField": { "alias": "labelField"; "required": false; }; "valueField": { "alias": "valueField"; "required": false; }; "allowCustomValue": { "alias": "allowCustomValue"; "required": false; }; "maxItems": { "alias": "maxItems"; "required": false; }; "minChars": { "alias": "minChars"; "required": false; }; }, { "itemSelected": "itemSelected"; }, never, never, true, never>;
662
+ }
663
+
664
+ export { DatepickerService, HolidayService, NowrapDirective, PK_ICONS, PkAlert, PkAlertService, PkAutocompleteComponent, PkDatagridComponent, PkDatagridModule, PkDatepickerComponent, PkDgCellComponent, PkDgColumnComponent, PkDgFooterComponent, PkDgItemsDirective, PkDgPageSizeComponent, PkDgPaginationComponent, PkDgRowComponent, PkDgRowDetailComponent, PkIcon, PkIfExpandedDirective, PkModal, PkModalBody, PkModalFooter, PkModalHeader, PkProgressComponent, PkSelectComponent, PkTab, PkTabs, PkToastr, PkToastrService, PkTreeviewComponent, PkTreeviewModule, PkTreeviewNodeComponent, PkTypeaheadComponent };
665
+ export type { AlertConfig, AlertInputType, AlertResult, AlertSlot, AlertType, AutocompleteFetchFn, AutocompleteOption, PkIconName, PkIconSet, PkMaterialSymbolGrade, PkMaterialSymbolOpticalSize, PkMaterialSymbolVariant, PkMaterialSymbolWeight, PkModalSize, PkModalTheme, ProgressConfig, ProgressStatus, ProgressType, SelectMode, SelectOption, Toast, ToastType, TreeNode, TreeSelectionMode };