@kuzntsv/uikit 1.0.59 → 1.0.61

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.
@@ -1,21 +1,21 @@
1
1
  import * as i0 from "@angular/core";
2
- import { AfterViewInit, ElementRef, EnvironmentProviders, InjectionToken, OnDestroy, OnInit, PipeTransform, WritableSignal } from "@angular/core";
2
+ import { AfterViewInit, ElementRef, EnvironmentProviders, InjectionToken, Injector, OnDestroy, OnInit, PipeTransform, WritableSignal } from "@angular/core";
3
3
  import { NotificationService, RoleService } from "@kuzntsv/uikit";
4
+ import z, { z as z$1 } from "zod";
4
5
  import { HttpClient, HttpContext, HttpParams, HttpResourceRef } from "@angular/common/http";
5
6
  import { Observable, Subject, Subscription } from "rxjs";
7
+ import { FormControl, FormGroup } from "@angular/forms";
8
+ import { MatAutocompleteSelectedEvent } from "@angular/material/autocomplete";
9
+ import { NativeDateAdapter } from "@angular/material/core";
10
+ import { MatDialog, MatDialogRef } from "@angular/material/dialog";
11
+ import { SafeUrl } from "@angular/platform-browser";
6
12
  import { SelectionModel } from "@angular/cdk/collections";
7
13
  import { MatMenuTrigger } from "@angular/material/menu";
8
14
  import { MatPaginator } from "@angular/material/paginator";
9
15
  import { MatSort } from "@angular/material/sort";
10
16
  import { MatTableDataSource } from "@angular/material/table";
11
- import z, { z as z$1 } from "zod";
12
- import { FormControl, FormGroup } from "@angular/forms";
13
- import { MatDialog, MatDialogRef } from "@angular/material/dialog";
14
- import { SafeUrl } from "@angular/platform-browser";
15
17
  import { CanActivateFn, Router } from "@angular/router";
16
18
  import { FieldTree } from "@angular/forms/signals";
17
- import { MatAutocompleteSelectedEvent } from "@angular/material/autocomplete";
18
- import { NativeDateAdapter } from "@angular/material/core";
19
19
  interface Authenticate {
20
20
  username: string;
21
21
  password: string;
@@ -46,588 +46,940 @@ export declare class LoginPageComponent implements OnInit {
46
46
  };
47
47
  }, {}, never, never, true, never>;
48
48
  }
49
- export type ObjectKeys<T extends string | number | symbol = string, K = any> = { [key in T]: K; };
50
- export type fnType<T> = ((data: T, extraData?: any) => void) | undefined;
51
- export type fnCbType<T> = ((callback: () => void, data: T, extraData?: any) => void) | undefined;
52
- export type SortDirection = 'asc' | 'desc' | '';
53
- /** @deprecated */
54
- export type fnGetDataType<T> = () => Observable<T[]>;
55
- /** @deprecated */
56
- export type fnGetCountType<T> = () => Observable<number>;
57
- export type fnGetDataResType<T> = () => HttpResourceRef<T[]>;
58
- export type fnGetCountResType<T> = () => HttpResourceRef<number>;
59
- export type fnMapEntityType<T> = () => (item: T) => T;
60
- export interface ISortState {
61
- sortActive: string;
62
- sortDirection: SortDirection;
63
- }
64
- export interface IPageState {
65
- pageIndex: number;
66
- pageSize: number;
67
- }
68
- export interface ITableState extends ISortState, IPageState {}
69
- /** Настройки действий в колонке таблицы. */
70
- interface IColumnActionOptions<T> {
71
- /** Заголовок. */
72
- title?: string;
73
- /** Подсказка. */
74
- tooltip?: string;
75
- /** Функция обработчик нажатия. */
76
- onClickFn?: (item: T | undefined) => void;
77
- /** Функция обработчик нажатия средней кнопкой мыши. */
78
- onClickMiddleFn?: ($event: MouseEvent, item: T | undefined) => void;
79
- /** Иконка. */
80
- icon?: string;
81
- /** Символ (Material Symbols). */
82
- symbol?: string;
83
- /** Доступность. */
84
- disabled?: boolean;
85
- /** Функция определяющая доступность. */
86
- disabledFn?: (item: T | undefined) => boolean;
87
- /** Видимость. */
88
- hide?: boolean;
89
- /** Функция определяющая видимость. */
90
- hideFn?: (item: T | undefined) => boolean;
91
- /** Классы css*/
92
- classList?: string[];
93
- }
94
- /** Настройки колонки. */
95
- export interface IColumnOptions<T> {
96
- /** Имя. */
97
- name: string;
98
- /** Заголовок. */
99
- title: string;
100
- /**
101
- * Формат колонки {
102
- * '' - текст (по умолчанию) |
103
- * 'pre-wrap' - текст с переносами строк |
104
- * 'link' - гиперссылка |
105
- * 'linkIcon' - гиперссылка (иконка вместо текста) |
106
- * 'routerLink' - ссылка на страницу в приложении |
107
- * 'routerLinkIcon' - ссылка на страницу в приложении (иконка вместо текста) |
108
- * 'checkbox' - чекбокс |
109
- * 'icon' - иконка |
110
- * 'icons' - иконка по значению (отображаются из свойства icons по индексу) |
111
- * 'actions' - действия |
112
- * 'image' - изображение
113
- * }. * */
114
- format?: string;
115
- /** Отключить сортировку по заголовку. */
116
- titleSortDisable?: boolean;
117
- /** Иконка вместо текста, когда format = 'link' | 'routerLink' | 'routerLinkIcon' | 'icon'. */
118
- icon?: string;
119
- /** Иконка вместо текста, когда format = 'icons'. */
120
- icons?: string[];
121
- /** Символ (Material Symbols) вместо текста, когда format = 'link' | 'routerLink' | 'routerLinkIcon' | 'icon'. */
122
- symbol?: string;
123
- /** Символ (Material Symbols) вместо текста, когда format = 'icons'. */
124
- symbols?: string;
125
- /** Скрыть колонку. */
126
- hide?: boolean;
127
- footer?: boolean;
128
- footerTitle?: string;
129
- tooltip?: string;
130
- tooltips?: string[];
131
- classList?: string[];
132
- actions?: IColumnActionOptions<T>[];
133
- imageUrl?: string;
134
- imageAlt?: string;
135
- }
136
- /** Настройки пункта меню. */
137
- export interface IContextMenuOptions<T> {
138
- /** Заголовок. */
139
- title: string;
140
- /** Функция обработчик нажатия. */
141
- onClickFn?: (item: T | undefined) => void;
142
- /** Функция обработчик нажатия средней кнопкой мыши. */
143
- onClickMiddleFn?: ($event: MouseEvent, item: T | undefined, contextMenu: MatMenuTrigger) => void;
144
- /** Иконка. */
145
- icon?: string;
146
- /** Символ (Material Symbols). */
147
- symbol?: string;
148
- /** Доступность. */
149
- disabled?: boolean;
150
- /** Функция определяющая доступность. */
151
- disabledFn?: (item: T | undefined) => boolean;
152
- /** Видимость. */
153
- hide?: boolean;
154
- /** Функция определяющая видимость. */
155
- hideFn?: (item: T | undefined) => boolean;
156
- classList?: string[];
49
+ type FilterValue = string | number | boolean | readonly string[] | readonly number[] | null | undefined;
50
+ type SafeFilterState = Readonly<Record<string, FilterValue>>;
51
+ type CleanFilterValue = Exclude<FilterValue, null | undefined>;
52
+ type CleanFilterState = Readonly<Record<string, CleanFilterValue>>;
53
+ declare function cleanFilterParams(filters: SafeFilterState): CleanFilterState;
54
+ export interface ChipItem {
55
+ value: string;
56
+ viewValue: string;
157
57
  }
158
- export declare class TableComponent<T> implements OnInit, AfterViewInit, OnDestroy {
159
- /** Отображаемые данные. */
160
- data: import("@angular/core").InputSignal<T[]>;
161
- /** Количество записей. */
162
- length: import("@angular/core").InputSignal<number>;
163
- /** Настройки колонок. */
164
- columnOptions: import("@angular/core").InputSignal<IColumnOptions<T>[]>;
165
- /** Состояние сортировки, пагинации. */
166
- tableState: import("@angular/core").InputSignal<ITableState>;
167
- /** Разрешен выбор нескольких строк. */
168
- allowMultiSelect: import("@angular/core").InputSignal<boolean>;
169
- /** Список элементов контекстного меню. */
170
- opt: import("@angular/core").InputSignal<IContextMenuOptions<T>[]>;
171
- /** Отправка события rowDoubleClicked (при двойном щелчке мышью) отключена. */
172
- rowDblClickedDisable: import("@angular/core").InputSignal<boolean>;
173
- /** Отображать строку с итогом. */
174
- footer: import("@angular/core").InputSignal<boolean>;
175
- /** Изменение страницы. */
176
- pageStateChange: import("@angular/core").OutputEmitterRef<IPageState>;
177
- /** Изменение сортировки. */
178
- sortStateChange: import("@angular/core").OutputEmitterRef<ISortState>;
179
- /** Изменение выбранных записей. */
180
- selectionChange: import("@angular/core").OutputEmitterRef<T[]>;
181
- /** Двойной щелчек ЛКМ*/
182
- rowDoubleClicked: import("@angular/core").OutputEmitterRef<T>;
183
- readonly sort: import("@angular/core").Signal<MatSort | undefined>;
184
- readonly paginator: import("@angular/core").Signal<MatPaginator | undefined>;
185
- readonly contextMenu: import("@angular/core").Signal<MatMenuTrigger | undefined>;
186
- pageState: import("@angular/core").WritableSignal<IPageState>;
187
- sortState: import("@angular/core").WritableSignal<ISortState>;
188
- /** Выбранная строка, для которого будет показываться меню при нажатии правой кнопки мыши. */
189
- itemForMenu?: T;
190
- /** Позиция в которой отображается контекстное меню. */
191
- contextMenuPosition: {
192
- x: string;
193
- y: string;
194
- };
195
- defaultPageIndex: number;
196
- defaultPageSize: number;
197
- /** Источник данных для отображения. */
198
- dataSource: MatTableDataSource<T, MatPaginator>;
199
- /** Выбранные записи. */
200
- selection: SelectionModel<T>;
201
- /** Список отображаемых колонок (формируется из @columnOptions). */
202
- displayedColumns?: string[];
203
- subscription: Subscription;
58
+ export declare class BaseMatChipComponent {
59
+ items: import("@angular/core").InputSignal<ChipItem[]>;
60
+ selectedItemsInput: import("@angular/core").InputSignal<string[]>;
61
+ title: import("@angular/core").InputSignal<string>;
62
+ selectedItemsChange: import("@angular/core").OutputEmitterRef<string[]>;
63
+ readonly input: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
64
+ separatorKeysCodes: number[];
65
+ inputCtrl: FormControl<any>;
66
+ filteredItems$?: Observable<ChipItem[]>;
67
+ selectedItems: ChipItem[];
204
68
  constructor();
205
- ngOnInit(): void;
206
- ngOnDestroy(): void;
207
- ngAfterViewInit(): void;
208
- /** Whether the number of selected elements matches the total number of rows. */
209
- isAllSelected(): boolean;
210
- /** Selects all rows if they are not all selected; otherwise clear selection. */
211
- masterToggle(): void;
212
- /** При щелчке по строке. */
213
- onRowClicked(row: T): void;
214
- /** При двойном щелчке по строке. */
215
- onRowDblClicked(row: T): void;
216
- /** При вызове контекстного меню. */
217
- onContextMenu(event: MouseEvent, itemForMenu: T | undefined): void;
218
- getTotal(columnName: string): number | "";
219
- static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent<any>, never>;
220
- static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent<any>, "ngx-uik-table", never, {
221
- "data": {
222
- "alias": "data";
223
- "required": false;
224
- "isSignal": true;
225
- };
226
- "length": {
227
- "alias": "length";
228
- "required": false;
229
- "isSignal": true;
230
- };
231
- "columnOptions": {
232
- "alias": "columnOptions";
233
- "required": false;
234
- "isSignal": true;
235
- };
236
- "tableState": {
237
- "alias": "tableState";
238
- "required": true;
239
- "isSignal": true;
240
- };
241
- "allowMultiSelect": {
242
- "alias": "allowMultiSelect";
243
- "required": false;
244
- "isSignal": true;
245
- };
246
- "opt": {
247
- "alias": "opt";
69
+ remove(value: string): void;
70
+ selected(event: MatAutocompleteSelectedEvent): void;
71
+ private _filter;
72
+ onCloseClick($event: MouseEvent): void;
73
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseMatChipComponent, never>;
74
+ static ɵcmp: i0.ɵɵComponentDeclaration<BaseMatChipComponent, "ngx-uik-chip-input-autocomplete", never, {
75
+ "items": {
76
+ "alias": "items";
248
77
  "required": false;
249
78
  "isSignal": true;
250
79
  };
251
- "rowDblClickedDisable": {
252
- "alias": "rowDblClickedDisable";
80
+ "selectedItemsInput": {
81
+ "alias": "selectedItemsInput";
253
82
  "required": false;
254
83
  "isSignal": true;
255
84
  };
256
- "footer": {
257
- "alias": "footer";
85
+ "title": {
86
+ "alias": "title";
258
87
  "required": false;
259
88
  "isSignal": true;
260
89
  };
261
90
  }, {
262
- "pageStateChange": "pageStateChange";
263
- "sortStateChange": "sortStateChange";
264
- "selectionChange": "selectionChange";
265
- "rowDoubleClicked": "rowDoubleClicked";
91
+ "selectedItemsChange": "selectedItemsChange";
266
92
  }, never, never, true, never>;
267
93
  }
268
- export declare class BaseToolbarComponent {
269
- /**
270
- * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
271
- */
272
- rolesNewBtn: import("@angular/core").InputSignal<string[]>;
273
- /**
274
- * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
275
- */
276
- rolesEditBtn: import("@angular/core").InputSignal<string[]>;
277
- /**
278
- * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
279
- */
280
- rolesRemoveBtn: import("@angular/core").InputSignal<string[]>;
281
- /**
282
- * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
283
- */
284
- rolesCopyBtn: import("@angular/core").InputSignal<string[]>;
285
- /**
286
- * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
287
- */
288
- rolesExcelBtn: import("@angular/core").InputSignal<string[]>;
289
- /**
290
- * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
291
- */
292
- rolesCsvBtn: import("@angular/core").InputSignal<string[]>;
293
- /**
294
- * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
295
- */
296
- rolesPdfBtn: import("@angular/core").InputSignal<string[]>;
297
- /**
298
- * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
299
- */
300
- rolesPrintBtn: import("@angular/core").InputSignal<string[]>;
301
- /**
302
- * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
303
- */
304
- rolesRefreshBtn: import("@angular/core").InputSignal<string[]>;
305
- /**
306
- * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
307
- */
308
- rolesClearBtn: import("@angular/core").InputSignal<string[]>;
309
- newBtnDisabled: import("@angular/core").InputSignal<boolean>;
310
- editBtnDisabled: import("@angular/core").InputSignal<boolean>;
311
- removeBtnDisabled: import("@angular/core").InputSignal<boolean>;
312
- copyBtnDisabled: import("@angular/core").InputSignal<boolean>;
313
- excelBtnDisabled: import("@angular/core").InputSignal<boolean>;
314
- csvBtnDisabled: import("@angular/core").InputSignal<boolean>;
315
- pdfBtnDisabled: import("@angular/core").InputSignal<boolean>;
316
- printBtnDisabled: import("@angular/core").InputSignal<boolean>;
317
- refreshBtnDisabled: import("@angular/core").InputSignal<boolean>;
318
- clearBtnDisabled: import("@angular/core").InputSignal<boolean>;
319
- newBtnTooltip: import("@angular/core").InputSignal<string>;
320
- editBtnTooltip: import("@angular/core").InputSignal<string>;
321
- removeBtnTooltip: import("@angular/core").InputSignal<string>;
322
- copyBtnTooltip: import("@angular/core").InputSignal<string>;
323
- excelBtnTooltip: import("@angular/core").InputSignal<string>;
324
- csvBtnTooltip: import("@angular/core").InputSignal<string>;
325
- pdfBtnTooltip: import("@angular/core").InputSignal<string>;
326
- printBtnTooltip: import("@angular/core").InputSignal<string>;
327
- refreshBtnTooltip: import("@angular/core").InputSignal<string>;
328
- clearBtnTooltip: import("@angular/core").InputSignal<string>;
329
- /** Список элементов контекстного меню. */
330
- newBtnOpt: import("@angular/core").InputSignal<IContextMenuOptions<string>[]>;
331
- clickedNewBtn: import("@angular/core").OutputEmitterRef<void>;
332
- clickedEditBtn: import("@angular/core").OutputEmitterRef<void>;
333
- clickedRemoveBtn: import("@angular/core").OutputEmitterRef<void>;
334
- clickedCopyBtn: import("@angular/core").OutputEmitterRef<void>;
335
- clickedExcelBtn: import("@angular/core").OutputEmitterRef<void>;
336
- clickedCsvBtn: import("@angular/core").OutputEmitterRef<void>;
337
- clickedPdfBtn: import("@angular/core").OutputEmitterRef<void>;
338
- clickedPrintBtn: import("@angular/core").OutputEmitterRef<void>;
339
- clickedRefreshBtn: import("@angular/core").OutputEmitterRef<void>;
340
- clickedClearBtn: import("@angular/core").OutputEmitterRef<void>;
341
- protected roleService: RoleService;
342
- readonly isNewBtnVisible: import("@angular/core").Signal<boolean>;
343
- readonly isEditBtnVisible: import("@angular/core").Signal<boolean>;
344
- readonly isRemoveBtnVisible: import("@angular/core").Signal<boolean>;
345
- readonly isCopyBtnVisible: import("@angular/core").Signal<boolean>;
346
- readonly isExcelBtnVisible: import("@angular/core").Signal<boolean>;
347
- readonly isCsvBtnVisible: import("@angular/core").Signal<boolean>;
348
- readonly isPdfBtnVisible: import("@angular/core").Signal<boolean>;
349
- readonly isPrintBtnVisible: import("@angular/core").Signal<boolean>;
350
- readonly isRefreshBtnVisible: import("@angular/core").Signal<boolean>;
351
- readonly isClearBtnVisible: import("@angular/core").Signal<boolean>;
352
- /**
353
- * Внутренний метод для вычисления видимости.
354
- * Не вызывается напрямую из шаблона, а служит хелпером для декларативных computed.
355
- * Проверяет, заблокирован ли доступ к элементу на основе списка ограничений.
356
- * Возвращает true, если у пользователя есть запрещенная роль или передан маркер 'HIDE'.
357
- * Администратор (ADMIN) всегда игнорирует любые запреты и маркер 'HIDE'.
358
- */
359
- private checkVisibility;
360
- onNewClick(): void;
361
- onEditClick(): void;
362
- onRemoveClick(): void;
363
- onCopyClick(): void;
364
- onExcelClick(): void;
365
- onCsvClick(): void;
366
- onPdfClick(): void;
367
- onPrintClick(): void;
368
- onRefreshGridClick(): void;
369
- onClearClick(): void;
370
- static ɵfac: i0.ɵɵFactoryDeclaration<BaseToolbarComponent, never>;
371
- static ɵcmp: i0.ɵɵComponentDeclaration<BaseToolbarComponent, "ngx-uik-base-toolbar", never, {
372
- "rolesNewBtn": {
373
- "alias": "rolesNewBtn";
374
- "required": false;
375
- "isSignal": true;
376
- };
377
- "rolesEditBtn": {
378
- "alias": "rolesEditBtn";
379
- "required": false;
380
- "isSignal": true;
381
- };
382
- "rolesRemoveBtn": {
383
- "alias": "rolesRemoveBtn";
384
- "required": false;
385
- "isSignal": true;
386
- };
387
- "rolesCopyBtn": {
388
- "alias": "rolesCopyBtn";
389
- "required": false;
390
- "isSignal": true;
94
+ export declare class CustomDateAdapter extends NativeDateAdapter {
95
+ parse(value: any): Date | null;
96
+ format(date: Date, displayFormat: Object): string;
97
+ static ɵfac: i0.ɵɵFactoryDeclaration<CustomDateAdapter, never>;
98
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
99
+ }
100
+ export declare const MY_NATIVE_FORMATS: {
101
+ parse: {
102
+ dateInput: string;
103
+ };
104
+ display: {
105
+ dateInput: string;
106
+ monthYearLabel: {
107
+ year: string;
108
+ month: string;
391
109
  };
392
- "rolesExcelBtn": {
393
- "alias": "rolesExcelBtn";
394
- "required": false;
395
- "isSignal": true;
110
+ dateA11yLabel: {
111
+ year: string;
112
+ month: string;
113
+ day: string;
396
114
  };
397
- "rolesCsvBtn": {
398
- "alias": "rolesCsvBtn";
399
- "required": false;
400
- "isSignal": true;
115
+ monthYearA11yLabel: {
116
+ year: string;
117
+ month: string;
401
118
  };
402
- "rolesPdfBtn": {
403
- "alias": "rolesPdfBtn";
119
+ };
120
+ };
121
+ export interface DateRange {
122
+ begin: string;
123
+ end: string;
124
+ }
125
+ export declare function dateFormat(date: Date | null | undefined): string;
126
+ export declare class DateRangeInputComponent implements OnInit, OnDestroy {
127
+ label: import("@angular/core").InputSignal<string>;
128
+ dateRange: import("@angular/core").InputSignal<DateRange>;
129
+ minDate: import("@angular/core").InputSignal<Date>;
130
+ clearInput: import("@angular/core").InputSignal<any>;
131
+ required: import("@angular/core").InputSignal<boolean>;
132
+ dateRangeChange: import("@angular/core").OutputEmitterRef<DateRange>;
133
+ form: FormGroup<{
134
+ begin: FormControl<any>;
135
+ end: FormControl<any>;
136
+ }>;
137
+ subscription: Subscription;
138
+ constructor();
139
+ ngOnInit(): void;
140
+ ngOnDestroy(): void;
141
+ private rangeToDateDateRange;
142
+ static ɵfac: i0.ɵɵFactoryDeclaration<DateRangeInputComponent, never>;
143
+ static ɵcmp: i0.ɵɵComponentDeclaration<DateRangeInputComponent, "ngx-uik-date-range-input", never, {
144
+ "label": {
145
+ "alias": "label";
404
146
  "required": false;
405
147
  "isSignal": true;
406
148
  };
407
- "rolesPrintBtn": {
408
- "alias": "rolesPrintBtn";
149
+ "dateRange": {
150
+ "alias": "dateRange";
409
151
  "required": false;
410
152
  "isSignal": true;
411
153
  };
412
- "rolesRefreshBtn": {
413
- "alias": "rolesRefreshBtn";
154
+ "minDate": {
155
+ "alias": "minDate";
414
156
  "required": false;
415
157
  "isSignal": true;
416
158
  };
417
- "rolesClearBtn": {
418
- "alias": "rolesClearBtn";
159
+ "clearInput": {
160
+ "alias": "clearInput";
419
161
  "required": false;
420
162
  "isSignal": true;
421
163
  };
422
- "newBtnDisabled": {
423
- "alias": "newBtnDisabled";
164
+ "required": {
165
+ "alias": "required";
424
166
  "required": false;
425
167
  "isSignal": true;
426
168
  };
427
- "editBtnDisabled": {
428
- "alias": "editBtnDisabled";
169
+ }, {
170
+ "dateRangeChange": "dateRangeChange";
171
+ }, never, never, true, never>;
172
+ }
173
+ export declare enum DialogAction {
174
+ Add = "Добавить",
175
+ Edit = "Изменить",
176
+ Delete = "Удалить",
177
+ None = ""
178
+ }
179
+ export interface DialogData {
180
+ id: string;
181
+ title: string;
182
+ message: string;
183
+ btnNoTitle: string;
184
+ btnYesTitle: string;
185
+ }
186
+ export declare class DialogComponent {
187
+ readonly data: DialogData;
188
+ readonly dialogRef: MatDialogRef<any, any>;
189
+ constructor();
190
+ onNoClick(): void;
191
+ static ɵfac: i0.ɵɵFactoryDeclaration<DialogComponent, never>;
192
+ static ɵcmp: i0.ɵɵComponentDeclaration<DialogComponent, "ngx-uik-dialog", never, {}, {}, never, never, true, never>;
193
+ }
194
+ export declare class EmptyComponent {
195
+ static ɵfac: i0.ɵɵFactoryDeclaration<EmptyComponent, never>;
196
+ static ɵcmp: i0.ɵɵComponentDeclaration<EmptyComponent, "app-empty-route-guard-holder", never, {}, {}, never, never, true, never>;
197
+ }
198
+ export declare class NavBarComponent extends BaseNavBarMenuClass {
199
+ /** Видимость панели, когда loggedIn === false. */
200
+ visibleOnLogout: import("@angular/core").InputSignal<boolean>;
201
+ /** Видимость аватара. */
202
+ visibleAvatar: import("@angular/core").InputSignal<boolean>;
203
+ /** Видимость кнопки "Выйти". */
204
+ visibleLogoutBtn: import("@angular/core").InputSignal<boolean>;
205
+ /** Признак, что пользователь авторизован. */
206
+ loggedIn: import("@angular/core").InputSignal<boolean>;
207
+ /** ФИО пользователя. */
208
+ fioUser: import("@angular/core").InputSignal<string>;
209
+ /** Всплывающая подсказка о пользователе. */
210
+ userTooltip: import("@angular/core").InputSignal<string>;
211
+ /** URL аватара */
212
+ avatarURL: import("@angular/core").InputSignal<string | SafeUrl>;
213
+ /** Нажата кнопка "Выйти". */
214
+ logout: import("@angular/core").OutputEmitterRef<string>;
215
+ private readonly dialog;
216
+ constructor();
217
+ onLogout(): void;
218
+ openDialog(): void;
219
+ static ɵfac: i0.ɵɵFactoryDeclaration<NavBarComponent, never>;
220
+ static ɵcmp: i0.ɵɵComponentDeclaration<NavBarComponent, "ngx-uik-navbar", never, {
221
+ "visibleOnLogout": {
222
+ "alias": "visibleOnLogout";
429
223
  "required": false;
430
224
  "isSignal": true;
431
225
  };
432
- "removeBtnDisabled": {
433
- "alias": "removeBtnDisabled";
226
+ "visibleAvatar": {
227
+ "alias": "visibleAvatar";
434
228
  "required": false;
435
229
  "isSignal": true;
436
230
  };
437
- "copyBtnDisabled": {
438
- "alias": "copyBtnDisabled";
231
+ "visibleLogoutBtn": {
232
+ "alias": "visibleLogoutBtn";
439
233
  "required": false;
440
234
  "isSignal": true;
441
235
  };
442
- "excelBtnDisabled": {
443
- "alias": "excelBtnDisabled";
236
+ "loggedIn": {
237
+ "alias": "loggedIn";
444
238
  "required": false;
445
239
  "isSignal": true;
446
240
  };
447
- "csvBtnDisabled": {
448
- "alias": "csvBtnDisabled";
241
+ "fioUser": {
242
+ "alias": "fioUser";
449
243
  "required": false;
450
244
  "isSignal": true;
451
245
  };
452
- "pdfBtnDisabled": {
453
- "alias": "pdfBtnDisabled";
246
+ "userTooltip": {
247
+ "alias": "userTooltip";
454
248
  "required": false;
455
249
  "isSignal": true;
456
250
  };
457
- "printBtnDisabled": {
458
- "alias": "printBtnDisabled";
251
+ "avatarURL": {
252
+ "alias": "avatarURL";
459
253
  "required": false;
460
254
  "isSignal": true;
461
255
  };
462
- "refreshBtnDisabled": {
463
- "alias": "refreshBtnDisabled";
464
- "required": false;
465
- "isSignal": true;
466
- };
467
- "clearBtnDisabled": {
468
- "alias": "clearBtnDisabled";
469
- "required": false;
470
- "isSignal": true;
471
- };
472
- "newBtnTooltip": {
473
- "alias": "newBtnTooltip";
474
- "required": false;
475
- "isSignal": true;
476
- };
477
- "editBtnTooltip": {
478
- "alias": "editBtnTooltip";
256
+ }, {
257
+ "logout": "logout";
258
+ }, never, ["*"], true, never>;
259
+ }
260
+ export declare class NotFoundComponent {
261
+ static ɵfac: i0.ɵɵFactoryDeclaration<NotFoundComponent, never>;
262
+ static ɵcmp: i0.ɵɵComponentDeclaration<NotFoundComponent, "ngx-uik-not-found", never, {}, {}, never, never, true, never>;
263
+ }
264
+ export declare class ProgressSpinnerComponent implements AfterViewInit {
265
+ private readonly cdRef;
266
+ ngAfterViewInit(): void;
267
+ static ɵfac: i0.ɵɵFactoryDeclaration<ProgressSpinnerComponent, never>;
268
+ static ɵcmp: i0.ɵɵComponentDeclaration<ProgressSpinnerComponent, "ngx-uik-loader", never, {}, {}, never, never, true, never>;
269
+ }
270
+ interface SelectItem$1 {
271
+ value: string;
272
+ viewValue: string;
273
+ }
274
+ export declare class BaseSelectAutocompleteWithVsComponent implements OnInit, OnDestroy {
275
+ items: import("@angular/core").InputSignal<SelectItem$1[]>;
276
+ selectedItemInput: import("@angular/core").InputSignal<SelectItem$1 | undefined>;
277
+ title: import("@angular/core").InputSignal<string>;
278
+ isVisible: import("@angular/core").InputSignal<boolean>;
279
+ isRequired: import("@angular/core").InputSignal<boolean>;
280
+ isDisabled: import("@angular/core").InputSignal<boolean>;
281
+ width: import("@angular/core").InputSignal<string>;
282
+ selectedItem: import("@angular/core").WritableSignal<SelectItem$1 | undefined>;
283
+ selectedItemChange: import("@angular/core").OutputEmitterRef<string>;
284
+ height: string;
285
+ inputCtrl: FormControl<any>;
286
+ filteredItems: SelectItem$1[];
287
+ subscription: Subscription;
288
+ constructor();
289
+ ngOnInit(): void;
290
+ ngOnDestroy(): void;
291
+ onSelectedItemChange(item: any): void;
292
+ onClearClick($event: MouseEvent): void;
293
+ displayWithFn(lookup: any): any;
294
+ private setFileredItems;
295
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseSelectAutocompleteWithVsComponent, never>;
296
+ static ɵcmp: i0.ɵɵComponentDeclaration<BaseSelectAutocompleteWithVsComponent, "ngx-uik-select-autocomplete-with-vs", never, {
297
+ "items": {
298
+ "alias": "items";
479
299
  "required": false;
480
300
  "isSignal": true;
481
301
  };
482
- "removeBtnTooltip": {
483
- "alias": "removeBtnTooltip";
302
+ "selectedItemInput": {
303
+ "alias": "selectedItemInput";
484
304
  "required": false;
485
305
  "isSignal": true;
486
306
  };
487
- "copyBtnTooltip": {
488
- "alias": "copyBtnTooltip";
307
+ "title": {
308
+ "alias": "title";
489
309
  "required": false;
490
310
  "isSignal": true;
491
311
  };
492
- "excelBtnTooltip": {
493
- "alias": "excelBtnTooltip";
312
+ "isVisible": {
313
+ "alias": "isVisible";
494
314
  "required": false;
495
315
  "isSignal": true;
496
316
  };
497
- "csvBtnTooltip": {
498
- "alias": "csvBtnTooltip";
317
+ "isRequired": {
318
+ "alias": "isRequired";
499
319
  "required": false;
500
320
  "isSignal": true;
501
321
  };
502
- "pdfBtnTooltip": {
503
- "alias": "pdfBtnTooltip";
322
+ "isDisabled": {
323
+ "alias": "isDisabled";
504
324
  "required": false;
505
325
  "isSignal": true;
506
326
  };
507
- "printBtnTooltip": {
508
- "alias": "printBtnTooltip";
327
+ "width": {
328
+ "alias": "width";
509
329
  "required": false;
510
330
  "isSignal": true;
511
331
  };
512
- "refreshBtnTooltip": {
513
- "alias": "refreshBtnTooltip";
332
+ }, {
333
+ "selectedItemChange": "selectedItemChange";
334
+ }, never, never, true, never>;
335
+ }
336
+ export interface SelectItem {
337
+ value: string;
338
+ viewValue: string;
339
+ }
340
+ export interface SelectGroup {
341
+ name: string;
342
+ items: SelectItem[];
343
+ }
344
+ export declare class BaseSelectWithGroupComponent {
345
+ groups: import("@angular/core").InputSignal<SelectGroup[]>;
346
+ selectedItems: import("@angular/core").InputSignal<string[]>;
347
+ title: import("@angular/core").InputSignal<string>;
348
+ selectedItemsChange: import("@angular/core").OutputEmitterRef<string[]>;
349
+ separatorKeysCodes: number[];
350
+ control: FormControl<number[] | null>;
351
+ constructor();
352
+ selectionChange($event: any): void;
353
+ onClearClick($event: MouseEvent): void;
354
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseSelectWithGroupComponent, never>;
355
+ static ɵcmp: i0.ɵɵComponentDeclaration<BaseSelectWithGroupComponent, "ngx-uik-select-with-group", never, {
356
+ "groups": {
357
+ "alias": "groups";
514
358
  "required": false;
515
359
  "isSignal": true;
516
360
  };
517
- "clearBtnTooltip": {
518
- "alias": "clearBtnTooltip";
361
+ "selectedItems": {
362
+ "alias": "selectedItems";
519
363
  "required": false;
520
364
  "isSignal": true;
521
365
  };
522
- "newBtnOpt": {
523
- "alias": "newBtnOpt";
366
+ "title": {
367
+ "alias": "title";
524
368
  "required": false;
525
369
  "isSignal": true;
526
370
  };
527
371
  }, {
528
- "clickedNewBtn": "clickedNewBtn";
529
- "clickedEditBtn": "clickedEditBtn";
530
- "clickedRemoveBtn": "clickedRemoveBtn";
531
- "clickedCopyBtn": "clickedCopyBtn";
532
- "clickedExcelBtn": "clickedExcelBtn";
533
- "clickedCsvBtn": "clickedCsvBtn";
534
- "clickedPdfBtn": "clickedPdfBtn";
535
- "clickedPrintBtn": "clickedPrintBtn";
536
- "clickedRefreshBtn": "clickedRefreshBtn";
537
- "clickedClearBtn": "clickedClearBtn";
372
+ "selectedItemsChange": "selectedItemsChange";
538
373
  }, never, never, true, never>;
539
374
  }
540
- export declare const BaseSchema: z$1.ZodObject<{
541
- id: z$1.ZodNumber;
542
- }, z$1.core.$strip>;
543
- export type BaseSchemaClass = z$1.infer<typeof BaseSchema>;
375
+ export type ObjectKeys<T extends string | number | symbol = string, K = any> = { [key in T]: K; };
376
+ export type fnType<T> = ((data: T, extraData?: any) => void) | undefined;
377
+ export type fnCbType<T> = ((callback: () => void, data: T, extraData?: any) => void) | undefined;
378
+ export type SortDirection = 'asc' | 'desc' | '';
544
379
  /** @deprecated */
545
- export interface BaseClass {
546
- id: number;
547
- }
548
- /** Объект передаваемый в диалог формы редактирования, оперирует доменной моделью. */
549
- export interface IEditDialogData<T, K = any> {
550
- action: Action;
551
- /** Здесь всегда доменная модель */
552
- entity: T;
553
- /** Дополнительные данные, например, фото. */
554
- extraData?: K;
555
- }
556
- export declare enum Action {
557
- Add = "Добавление",
558
- Edit = "Изменение"
559
- }
560
- export declare class AvatarService {
561
- baseRoute: string;
562
- private readonly http;
563
- getAvatarById(idHuman: number): Observable<ArrayBuffer>;
564
- static ɵfac: i0.ɵɵFactoryDeclaration<AvatarService, never>;
565
- static ɵprov: i0.ɵɵInjectableDeclaration<any>;
566
- }
567
- export declare class LoaderService {
568
- private overlayRef;
569
- private readonly overlay;
570
- show(): void;
571
- hide(): void;
572
- static ɵfac: i0.ɵɵFactoryDeclaration<LoaderService, never>;
573
- static ɵprov: i0.ɵɵInjectableDeclaration<any>;
574
- }
575
- export declare class LocalStorageService {
576
- constructor();
577
- saveData(key: string, value: string): void;
578
- getData(key: string): string | null;
579
- removeData(key: string): void;
580
- clearData(): void;
581
- static ɵfac: i0.ɵɵFactoryDeclaration<LocalStorageService, never>;
582
- static ɵprov: i0.ɵɵInjectableDeclaration<any>;
583
- }
584
- export declare class SecureImageService {
585
- private readonly http;
586
- private readonly sanitizer;
587
- /**
588
- * Загружает защищенное изображение и возвращает SafeUrl
589
- */
590
- getSecureUrl(relativeUrl: string | null | undefined, apiKey?: string): Observable<SafeUrl | string>;
591
- static ɵfac: i0.ɵɵFactoryDeclaration<SecureImageService, never>;
592
- static ɵprov: i0.ɵɵInjectableDeclaration<any>;
593
- }
594
- export declare class ExportService {
595
- exportCSV(data: any, filename: string | undefined, arrHeader: any, newHeaders: any): void;
596
- convertToCSV(objArray: any, headerList: any, newHeaders: any): string;
597
- static ɵfac: i0.ɵɵFactoryDeclaration<ExportService, never>;
598
- static ɵprov: i0.ɵɵInjectableDeclaration<any>;
380
+ export type fnGetDataType<T> = () => Observable<T[]>;
381
+ /** @deprecated */
382
+ export type fnGetCountType<T> = () => Observable<number>;
383
+ export type fnGetDataByStateAndFilterType<T, F extends SafeFilterState = any> = (state: TableState, filters: F) => HttpResourceRef<T[]>;
384
+ export type fnGetCountByFilterType<F extends SafeFilterState = any> = (filters: F) => HttpResourceRef<number>;
385
+ export type fnMapEntityType<T> = () => (item: T) => T;
386
+ export declare const SortDirectionSchema: z.ZodCustom<SortDirection, SortDirection>;
387
+ export declare const SortStateSchema: z.ZodObject<{
388
+ sortActive: z.ZodString;
389
+ sortDirection: z.ZodCustom<SortDirection, SortDirection>;
390
+ }, z.core.$strip>;
391
+ export declare const PageStateSchema: z.ZodObject<{
392
+ pageIndex: z.ZodNumber;
393
+ pageSize: z.ZodNumber;
394
+ }, z.core.$strip>;
395
+ export declare const TableStateSchema: z.ZodObject<{
396
+ sortActive: z.ZodString;
397
+ sortDirection: z.ZodCustom<SortDirection, SortDirection>;
398
+ pageIndex: z.ZodNumber;
399
+ pageSize: z.ZodNumber;
400
+ }, z.core.$strip>;
401
+ export type SortState = z.infer<typeof SortStateSchema>;
402
+ export type PageState = z.infer<typeof PageStateSchema>;
403
+ export type TableState = z.infer<typeof TableStateSchema>;
404
+ /** Настройки действий в колонке таблицы. */
405
+ interface IColumnActionOptions<T> {
406
+ /** Заголовок. */
407
+ title?: string;
408
+ /** Подсказка. */
409
+ tooltip?: string;
410
+ /** Функция обработчик нажатия. */
411
+ onClickFn?: (item: T | undefined) => void;
412
+ /** Функция обработчик нажатия средней кнопкой мыши. */
413
+ onClickMiddleFn?: ($event: MouseEvent, item: T | undefined) => void;
414
+ /** Иконка. */
415
+ icon?: string;
416
+ /** Символ (Material Symbols). */
417
+ symbol?: string;
418
+ /** Доступность. */
419
+ disabled?: boolean;
420
+ /** Функция определяющая доступность. */
421
+ disabledFn?: (item: T | undefined) => boolean;
422
+ /** Видимость. */
423
+ hide?: boolean;
424
+ /** Функция определяющая видимость. */
425
+ hideFn?: (item: T | undefined) => boolean;
426
+ /** Классы css*/
427
+ classList?: string[];
599
428
  }
600
- export interface SseUser {
601
- id: string;
429
+ /** Настройки колонки. */
430
+ export interface IColumnOptions<T> {
431
+ /** Имя. */
602
432
  name: string;
603
- }
604
- export interface Topic {
605
- getTopic(baseUrl: string, user: SseUser): string;
606
- }
607
- export declare class SseService<T> {
608
- private zone;
609
- private eventSource;
610
- private isConnected;
611
- constructor();
612
- createSseEventSource(baseUrl: string, user: SseUser, topic: Topic): Observable<T>;
613
- private reconnectOnError;
614
- closeSseEventSource(): void;
615
- static ɵfac: i0.ɵɵFactoryDeclaration<SseService<any>, never>;
616
- static ɵprov: i0.ɵɵInjectableDeclaration<any>;
617
- }
618
- export declare abstract class BaseEditClass<T> implements OnDestroy {
619
433
  /** Заголовок. */
620
- abstract title: string;
621
- /** Данные диалога. */
622
- protected abstract dialogData?: IEditDialogData<T>;
623
- /** Форма. */
624
- abstract form?: FormGroup<any>;
625
- /** Ссылка на диалог. */
626
- protected abstract dialogRef?: MatDialogRef<any, IEditDialogData<T> | null>;
627
- /** Сервис индикатор загрузки. */
628
- protected loaderService: LoaderService;
629
- /** Сервис уведомлений. */
630
- protected notificationService: NotificationService;
434
+ title: string;
435
+ /**
436
+ * Формат колонки {
437
+ * '' - текст (по умолчанию) |
438
+ * 'pre-wrap' - текст с переносами строк |
439
+ * 'link' - гиперссылка |
440
+ * 'linkIcon' - гиперссылка (иконка вместо текста) |
441
+ * 'routerLink' - ссылка на страницу в приложении |
442
+ * 'routerLinkIcon' - ссылка на страницу в приложении (иконка вместо текста) |
443
+ * 'checkbox' - чекбокс |
444
+ * 'icon' - иконка |
445
+ * 'icons' - иконка по значению (отображаются из свойства icons по индексу) |
446
+ * 'actions' - действия |
447
+ * 'image' - изображение
448
+ * }. * */
449
+ format?: string;
450
+ /** Отключить сортировку по заголовку. */
451
+ titleSortDisable?: boolean;
452
+ /** Иконка вместо текста, когда format = 'link' | 'routerLink' | 'routerLinkIcon' | 'icon'. */
453
+ icon?: string;
454
+ /** Иконка вместо текста, когда format = 'icons'. */
455
+ icons?: string[];
456
+ /** Символ (Material Symbols) вместо текста, когда format = 'link' | 'routerLink' | 'routerLinkIcon' | 'icon'. */
457
+ symbol?: string;
458
+ /** Символ (Material Symbols) вместо текста, когда format = 'icons'. */
459
+ symbols?: string;
460
+ /** Скрыть колонку. */
461
+ hide?: boolean;
462
+ footer?: boolean;
463
+ footerTitle?: string;
464
+ tooltip?: string;
465
+ tooltips?: string[];
466
+ classList?: string[];
467
+ actions?: IColumnActionOptions<T>[];
468
+ imageUrl?: string;
469
+ imageAlt?: string;
470
+ }
471
+ /** Настройки пункта меню. */
472
+ export interface IContextMenuOptions<T> {
473
+ /** Заголовок. */
474
+ title: string;
475
+ /** Функция обработчик нажатия. */
476
+ onClickFn?: (item: T | undefined) => void;
477
+ /** Функция обработчик нажатия средней кнопкой мыши. */
478
+ onClickMiddleFn?: ($event: MouseEvent, item: T | undefined, contextMenu: MatMenuTrigger) => void;
479
+ /** Иконка. */
480
+ icon?: string;
481
+ /** Символ (Material Symbols). */
482
+ symbol?: string;
483
+ /** Доступность. */
484
+ disabled?: boolean;
485
+ /** Функция определяющая доступность. */
486
+ disabledFn?: (item: T | undefined) => boolean;
487
+ /** Видимость. */
488
+ hide?: boolean;
489
+ /** Функция определяющая видимость. */
490
+ hideFn?: (item: T | undefined) => boolean;
491
+ classList?: string[];
492
+ }
493
+ export declare class TableComponent<T> implements OnInit, AfterViewInit, OnDestroy {
494
+ /** Отображаемые данные. */
495
+ data: import("@angular/core").InputSignal<T[]>;
496
+ /** Количество записей. */
497
+ length: import("@angular/core").InputSignal<number>;
498
+ /** Настройки колонок. */
499
+ columnOptions: import("@angular/core").InputSignal<IColumnOptions<T>[]>;
500
+ /** Состояние сортировки, пагинации. */
501
+ tableState: import("@angular/core").InputSignal<{
502
+ sortActive: string;
503
+ sortDirection: import("@kuzntsv/uikit/ui").SortDirection;
504
+ pageIndex: number;
505
+ pageSize: number;
506
+ }>;
507
+ /** Разрешен выбор нескольких строк. */
508
+ allowMultiSelect: import("@angular/core").InputSignal<boolean>;
509
+ /** Список элементов контекстного меню. */
510
+ opt: import("@angular/core").InputSignal<IContextMenuOptions<T>[]>;
511
+ /** Отправка события rowDoubleClicked (при двойном щелчке мышью) отключена. */
512
+ rowDblClickedDisable: import("@angular/core").InputSignal<boolean>;
513
+ /** Отображать строку с итогом. */
514
+ footer: import("@angular/core").InputSignal<boolean>;
515
+ /** Изменение страницы. */
516
+ pageStateChange: import("@angular/core").OutputEmitterRef<{
517
+ pageIndex: number;
518
+ pageSize: number;
519
+ }>;
520
+ /** Изменение сортировки. */
521
+ sortStateChange: import("@angular/core").OutputEmitterRef<{
522
+ sortActive: string;
523
+ sortDirection: import("@kuzntsv/uikit/ui").SortDirection;
524
+ }>;
525
+ /** Изменение выбранных записей. */
526
+ selectionChange: import("@angular/core").OutputEmitterRef<T[]>;
527
+ /** Двойной щелчек ЛКМ*/
528
+ rowDoubleClicked: import("@angular/core").OutputEmitterRef<T>;
529
+ readonly sort: import("@angular/core").Signal<MatSort | undefined>;
530
+ readonly paginator: import("@angular/core").Signal<MatPaginator | undefined>;
531
+ readonly contextMenu: import("@angular/core").Signal<MatMenuTrigger | undefined>;
532
+ pageState: import("@angular/core").WritableSignal<{
533
+ pageIndex: number;
534
+ pageSize: number;
535
+ }>;
536
+ sortState: import("@angular/core").WritableSignal<{
537
+ sortActive: string;
538
+ sortDirection: import("@kuzntsv/uikit/ui").SortDirection;
539
+ }>;
540
+ /** Выбранная строка, для которого будет показываться меню при нажатии правой кнопки мыши. */
541
+ itemForMenu?: T;
542
+ /** Позиция в которой отображается контекстное меню. */
543
+ contextMenuPosition: {
544
+ x: string;
545
+ y: string;
546
+ };
547
+ defaultPageIndex: number;
548
+ defaultPageSize: number;
549
+ /** Источник данных для отображения. */
550
+ dataSource: MatTableDataSource<T, MatPaginator>;
551
+ /** Выбранные записи. */
552
+ selection: SelectionModel<T>;
553
+ /** Список отображаемых колонок (формируется из @columnOptions). */
554
+ displayedColumns?: string[];
555
+ subscription: Subscription;
556
+ constructor();
557
+ ngOnInit(): void;
558
+ ngOnDestroy(): void;
559
+ ngAfterViewInit(): void;
560
+ /** Whether the number of selected elements matches the total number of rows. */
561
+ isAllSelected(): boolean;
562
+ /** Selects all rows if they are not all selected; otherwise clear selection. */
563
+ masterToggle(): void;
564
+ /** При щелчке по строке. */
565
+ onRowClicked(row: T): void;
566
+ /** При двойном щелчке по строке. */
567
+ onRowDblClicked(row: T): void;
568
+ /** При вызове контекстного меню. */
569
+ onContextMenu(event: MouseEvent, itemForMenu: T | undefined): void;
570
+ getTotal(columnName: string): number | "";
571
+ static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent<any>, never>;
572
+ static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent<any>, "ngx-uik-table", never, {
573
+ "data": {
574
+ "alias": "data";
575
+ "required": false;
576
+ "isSignal": true;
577
+ };
578
+ "length": {
579
+ "alias": "length";
580
+ "required": false;
581
+ "isSignal": true;
582
+ };
583
+ "columnOptions": {
584
+ "alias": "columnOptions";
585
+ "required": false;
586
+ "isSignal": true;
587
+ };
588
+ "tableState": {
589
+ "alias": "tableState";
590
+ "required": true;
591
+ "isSignal": true;
592
+ };
593
+ "allowMultiSelect": {
594
+ "alias": "allowMultiSelect";
595
+ "required": false;
596
+ "isSignal": true;
597
+ };
598
+ "opt": {
599
+ "alias": "opt";
600
+ "required": false;
601
+ "isSignal": true;
602
+ };
603
+ "rowDblClickedDisable": {
604
+ "alias": "rowDblClickedDisable";
605
+ "required": false;
606
+ "isSignal": true;
607
+ };
608
+ "footer": {
609
+ "alias": "footer";
610
+ "required": false;
611
+ "isSignal": true;
612
+ };
613
+ }, {
614
+ "pageStateChange": "pageStateChange";
615
+ "sortStateChange": "sortStateChange";
616
+ "selectionChange": "selectionChange";
617
+ "rowDoubleClicked": "rowDoubleClicked";
618
+ }, never, never, true, never>;
619
+ }
620
+ export declare class BaseToolbarComponent {
621
+ /**
622
+ * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
623
+ */
624
+ rolesNewBtn: import("@angular/core").InputSignal<string[]>;
625
+ /**
626
+ * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
627
+ */
628
+ rolesEditBtn: import("@angular/core").InputSignal<string[]>;
629
+ /**
630
+ * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
631
+ */
632
+ rolesRemoveBtn: import("@angular/core").InputSignal<string[]>;
633
+ /**
634
+ * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
635
+ */
636
+ rolesCopyBtn: import("@angular/core").InputSignal<string[]>;
637
+ /**
638
+ * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
639
+ */
640
+ rolesExcelBtn: import("@angular/core").InputSignal<string[]>;
641
+ /**
642
+ * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
643
+ */
644
+ rolesCsvBtn: import("@angular/core").InputSignal<string[]>;
645
+ /**
646
+ * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
647
+ */
648
+ rolesPdfBtn: import("@angular/core").InputSignal<string[]>;
649
+ /**
650
+ * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
651
+ */
652
+ rolesPrintBtn: import("@angular/core").InputSignal<string[]>;
653
+ /**
654
+ * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
655
+ */
656
+ rolesRefreshBtn: import("@angular/core").InputSignal<string[]>;
657
+ /**
658
+ * Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
659
+ */
660
+ rolesClearBtn: import("@angular/core").InputSignal<string[]>;
661
+ newBtnDisabled: import("@angular/core").InputSignal<boolean>;
662
+ editBtnDisabled: import("@angular/core").InputSignal<boolean>;
663
+ removeBtnDisabled: import("@angular/core").InputSignal<boolean>;
664
+ copyBtnDisabled: import("@angular/core").InputSignal<boolean>;
665
+ excelBtnDisabled: import("@angular/core").InputSignal<boolean>;
666
+ csvBtnDisabled: import("@angular/core").InputSignal<boolean>;
667
+ pdfBtnDisabled: import("@angular/core").InputSignal<boolean>;
668
+ printBtnDisabled: import("@angular/core").InputSignal<boolean>;
669
+ refreshBtnDisabled: import("@angular/core").InputSignal<boolean>;
670
+ clearBtnDisabled: import("@angular/core").InputSignal<boolean>;
671
+ newBtnTooltip: import("@angular/core").InputSignal<string>;
672
+ editBtnTooltip: import("@angular/core").InputSignal<string>;
673
+ removeBtnTooltip: import("@angular/core").InputSignal<string>;
674
+ copyBtnTooltip: import("@angular/core").InputSignal<string>;
675
+ excelBtnTooltip: import("@angular/core").InputSignal<string>;
676
+ csvBtnTooltip: import("@angular/core").InputSignal<string>;
677
+ pdfBtnTooltip: import("@angular/core").InputSignal<string>;
678
+ printBtnTooltip: import("@angular/core").InputSignal<string>;
679
+ refreshBtnTooltip: import("@angular/core").InputSignal<string>;
680
+ clearBtnTooltip: import("@angular/core").InputSignal<string>;
681
+ /** Список элементов контекстного меню. */
682
+ newBtnOpt: import("@angular/core").InputSignal<IContextMenuOptions<string>[]>;
683
+ clickedNewBtn: import("@angular/core").OutputEmitterRef<void>;
684
+ clickedEditBtn: import("@angular/core").OutputEmitterRef<void>;
685
+ clickedRemoveBtn: import("@angular/core").OutputEmitterRef<void>;
686
+ clickedCopyBtn: import("@angular/core").OutputEmitterRef<void>;
687
+ clickedExcelBtn: import("@angular/core").OutputEmitterRef<void>;
688
+ clickedCsvBtn: import("@angular/core").OutputEmitterRef<void>;
689
+ clickedPdfBtn: import("@angular/core").OutputEmitterRef<void>;
690
+ clickedPrintBtn: import("@angular/core").OutputEmitterRef<void>;
691
+ clickedRefreshBtn: import("@angular/core").OutputEmitterRef<void>;
692
+ clickedClearBtn: import("@angular/core").OutputEmitterRef<void>;
693
+ protected roleService: RoleService;
694
+ readonly isNewBtnVisible: import("@angular/core").Signal<boolean>;
695
+ readonly isEditBtnVisible: import("@angular/core").Signal<boolean>;
696
+ readonly isRemoveBtnVisible: import("@angular/core").Signal<boolean>;
697
+ readonly isCopyBtnVisible: import("@angular/core").Signal<boolean>;
698
+ readonly isExcelBtnVisible: import("@angular/core").Signal<boolean>;
699
+ readonly isCsvBtnVisible: import("@angular/core").Signal<boolean>;
700
+ readonly isPdfBtnVisible: import("@angular/core").Signal<boolean>;
701
+ readonly isPrintBtnVisible: import("@angular/core").Signal<boolean>;
702
+ readonly isRefreshBtnVisible: import("@angular/core").Signal<boolean>;
703
+ readonly isClearBtnVisible: import("@angular/core").Signal<boolean>;
704
+ /**
705
+ * Внутренний метод для вычисления видимости.
706
+ * Не вызывается напрямую из шаблона, а служит хелпером для декларативных computed.
707
+ * Проверяет, заблокирован ли доступ к элементу на основе списка ограничений.
708
+ * Возвращает true, если у пользователя есть запрещенная роль или передан маркер 'HIDE'.
709
+ * Администратор (ADMIN) всегда игнорирует любые запреты и маркер 'HIDE'.
710
+ */
711
+ private checkVisibility;
712
+ onNewClick(): void;
713
+ onEditClick(): void;
714
+ onRemoveClick(): void;
715
+ onCopyClick(): void;
716
+ onExcelClick(): void;
717
+ onCsvClick(): void;
718
+ onPdfClick(): void;
719
+ onPrintClick(): void;
720
+ onRefreshGridClick(): void;
721
+ onClearClick(): void;
722
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseToolbarComponent, never>;
723
+ static ɵcmp: i0.ɵɵComponentDeclaration<BaseToolbarComponent, "ngx-uik-base-toolbar", never, {
724
+ "rolesNewBtn": {
725
+ "alias": "rolesNewBtn";
726
+ "required": false;
727
+ "isSignal": true;
728
+ };
729
+ "rolesEditBtn": {
730
+ "alias": "rolesEditBtn";
731
+ "required": false;
732
+ "isSignal": true;
733
+ };
734
+ "rolesRemoveBtn": {
735
+ "alias": "rolesRemoveBtn";
736
+ "required": false;
737
+ "isSignal": true;
738
+ };
739
+ "rolesCopyBtn": {
740
+ "alias": "rolesCopyBtn";
741
+ "required": false;
742
+ "isSignal": true;
743
+ };
744
+ "rolesExcelBtn": {
745
+ "alias": "rolesExcelBtn";
746
+ "required": false;
747
+ "isSignal": true;
748
+ };
749
+ "rolesCsvBtn": {
750
+ "alias": "rolesCsvBtn";
751
+ "required": false;
752
+ "isSignal": true;
753
+ };
754
+ "rolesPdfBtn": {
755
+ "alias": "rolesPdfBtn";
756
+ "required": false;
757
+ "isSignal": true;
758
+ };
759
+ "rolesPrintBtn": {
760
+ "alias": "rolesPrintBtn";
761
+ "required": false;
762
+ "isSignal": true;
763
+ };
764
+ "rolesRefreshBtn": {
765
+ "alias": "rolesRefreshBtn";
766
+ "required": false;
767
+ "isSignal": true;
768
+ };
769
+ "rolesClearBtn": {
770
+ "alias": "rolesClearBtn";
771
+ "required": false;
772
+ "isSignal": true;
773
+ };
774
+ "newBtnDisabled": {
775
+ "alias": "newBtnDisabled";
776
+ "required": false;
777
+ "isSignal": true;
778
+ };
779
+ "editBtnDisabled": {
780
+ "alias": "editBtnDisabled";
781
+ "required": false;
782
+ "isSignal": true;
783
+ };
784
+ "removeBtnDisabled": {
785
+ "alias": "removeBtnDisabled";
786
+ "required": false;
787
+ "isSignal": true;
788
+ };
789
+ "copyBtnDisabled": {
790
+ "alias": "copyBtnDisabled";
791
+ "required": false;
792
+ "isSignal": true;
793
+ };
794
+ "excelBtnDisabled": {
795
+ "alias": "excelBtnDisabled";
796
+ "required": false;
797
+ "isSignal": true;
798
+ };
799
+ "csvBtnDisabled": {
800
+ "alias": "csvBtnDisabled";
801
+ "required": false;
802
+ "isSignal": true;
803
+ };
804
+ "pdfBtnDisabled": {
805
+ "alias": "pdfBtnDisabled";
806
+ "required": false;
807
+ "isSignal": true;
808
+ };
809
+ "printBtnDisabled": {
810
+ "alias": "printBtnDisabled";
811
+ "required": false;
812
+ "isSignal": true;
813
+ };
814
+ "refreshBtnDisabled": {
815
+ "alias": "refreshBtnDisabled";
816
+ "required": false;
817
+ "isSignal": true;
818
+ };
819
+ "clearBtnDisabled": {
820
+ "alias": "clearBtnDisabled";
821
+ "required": false;
822
+ "isSignal": true;
823
+ };
824
+ "newBtnTooltip": {
825
+ "alias": "newBtnTooltip";
826
+ "required": false;
827
+ "isSignal": true;
828
+ };
829
+ "editBtnTooltip": {
830
+ "alias": "editBtnTooltip";
831
+ "required": false;
832
+ "isSignal": true;
833
+ };
834
+ "removeBtnTooltip": {
835
+ "alias": "removeBtnTooltip";
836
+ "required": false;
837
+ "isSignal": true;
838
+ };
839
+ "copyBtnTooltip": {
840
+ "alias": "copyBtnTooltip";
841
+ "required": false;
842
+ "isSignal": true;
843
+ };
844
+ "excelBtnTooltip": {
845
+ "alias": "excelBtnTooltip";
846
+ "required": false;
847
+ "isSignal": true;
848
+ };
849
+ "csvBtnTooltip": {
850
+ "alias": "csvBtnTooltip";
851
+ "required": false;
852
+ "isSignal": true;
853
+ };
854
+ "pdfBtnTooltip": {
855
+ "alias": "pdfBtnTooltip";
856
+ "required": false;
857
+ "isSignal": true;
858
+ };
859
+ "printBtnTooltip": {
860
+ "alias": "printBtnTooltip";
861
+ "required": false;
862
+ "isSignal": true;
863
+ };
864
+ "refreshBtnTooltip": {
865
+ "alias": "refreshBtnTooltip";
866
+ "required": false;
867
+ "isSignal": true;
868
+ };
869
+ "clearBtnTooltip": {
870
+ "alias": "clearBtnTooltip";
871
+ "required": false;
872
+ "isSignal": true;
873
+ };
874
+ "newBtnOpt": {
875
+ "alias": "newBtnOpt";
876
+ "required": false;
877
+ "isSignal": true;
878
+ };
879
+ }, {
880
+ "clickedNewBtn": "clickedNewBtn";
881
+ "clickedEditBtn": "clickedEditBtn";
882
+ "clickedRemoveBtn": "clickedRemoveBtn";
883
+ "clickedCopyBtn": "clickedCopyBtn";
884
+ "clickedExcelBtn": "clickedExcelBtn";
885
+ "clickedCsvBtn": "clickedCsvBtn";
886
+ "clickedPdfBtn": "clickedPdfBtn";
887
+ "clickedPrintBtn": "clickedPrintBtn";
888
+ "clickedRefreshBtn": "clickedRefreshBtn";
889
+ "clickedClearBtn": "clickedClearBtn";
890
+ }, never, never, true, never>;
891
+ }
892
+ export declare const BaseSchema: z$1.ZodObject<{
893
+ id: z$1.ZodNumber;
894
+ }, z$1.core.$strip>;
895
+ export type BaseSchemaClass = z$1.infer<typeof BaseSchema>;
896
+ /** @deprecated */
897
+ export interface BaseClass {
898
+ id: number;
899
+ }
900
+ /** Объект передаваемый в диалог формы редактирования, оперирует доменной моделью. */
901
+ export interface IEditDialogData<T, K = any> {
902
+ action: Action;
903
+ /** Здесь всегда доменная модель */
904
+ entity: T;
905
+ /** Дополнительные данные, например, фото. */
906
+ extraData?: K;
907
+ }
908
+ export declare enum Action {
909
+ Add = "Добавление",
910
+ Edit = "Изменение"
911
+ }
912
+ export declare class AvatarService {
913
+ baseRoute: string;
914
+ private readonly http;
915
+ getAvatarById(idHuman: number): Observable<ArrayBuffer>;
916
+ static ɵfac: i0.ɵɵFactoryDeclaration<AvatarService, never>;
917
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
918
+ }
919
+ export declare class LoaderService {
920
+ private overlayRef;
921
+ private readonly overlay;
922
+ show(): void;
923
+ hide(): void;
924
+ static ɵfac: i0.ɵɵFactoryDeclaration<LoaderService, never>;
925
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
926
+ }
927
+ export declare class LocalStorageService {
928
+ constructor();
929
+ saveData(key: string, value: string): void;
930
+ getData(key: string): string | null;
931
+ removeData(key: string): void;
932
+ clearData(): void;
933
+ static ɵfac: i0.ɵɵFactoryDeclaration<LocalStorageService, never>;
934
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
935
+ }
936
+ export declare class SecureImageService {
937
+ private readonly http;
938
+ private readonly sanitizer;
939
+ /**
940
+ * Загружает защищенное изображение и возвращает SafeUrl
941
+ */
942
+ getSecureUrl(relativeUrl: string | null | undefined, apiKey?: string): Observable<SafeUrl | string>;
943
+ static ɵfac: i0.ɵɵFactoryDeclaration<SecureImageService, never>;
944
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
945
+ }
946
+ export declare class ExportService {
947
+ exportCSV(data: any, filename: string | undefined, arrHeader: any, newHeaders: any): void;
948
+ convertToCSV(objArray: any, headerList: any, newHeaders: any): string;
949
+ static ɵfac: i0.ɵɵFactoryDeclaration<ExportService, never>;
950
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
951
+ }
952
+ export interface SseUser {
953
+ id: string;
954
+ name: string;
955
+ }
956
+ export interface Topic {
957
+ getTopic(baseUrl: string, user: SseUser): string;
958
+ }
959
+ export declare class SseService<T> {
960
+ private zone;
961
+ private eventSource;
962
+ private isConnected;
963
+ constructor();
964
+ createSseEventSource(baseUrl: string, user: SseUser, topic: Topic): Observable<T>;
965
+ private reconnectOnError;
966
+ closeSseEventSource(): void;
967
+ static ɵfac: i0.ɵɵFactoryDeclaration<SseService<any>, never>;
968
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
969
+ }
970
+ export declare abstract class BaseEditClass<T> implements OnDestroy {
971
+ /** Заголовок. */
972
+ abstract title: string;
973
+ /** Данные диалога. */
974
+ protected abstract dialogData?: IEditDialogData<T>;
975
+ /** Форма. */
976
+ abstract form?: FormGroup<any>;
977
+ /** Ссылка на диалог. */
978
+ protected abstract dialogRef?: MatDialogRef<any, IEditDialogData<T> | null>;
979
+ /** Сервис индикатор загрузки. */
980
+ protected loaderService: LoaderService;
981
+ /** Сервис уведомлений. */
982
+ protected notificationService: NotificationService;
631
983
  /** Сервис ролей. */
632
984
  protected roleService: RoleService;
633
985
  /** Объект для отписки (вызывается метод unsubscribe при уничтожении компонента). */
@@ -682,41 +1034,20 @@ export declare class BaseNavBarMenuClass {
682
1034
  protected router: Router;
683
1035
  /**
684
1036
  * Определяет видимость пункта меню на основе ЧЕРНОГО списка ролей.
685
- * По умолчанию пункт меню ВИДИМ. Скрывается (возвращает false), если у пользователя
686
- * есть запрещенная роль или если передан маркер скрытия фичи HIDE_ROLE_MARKER.
687
- */
688
- protected isVisibleForForbiddenRoles(forbiddenRoles: string[]): boolean;
689
- /**
690
- * Определяет видимость пункта меню на основе БЕЛОГО списка ролей.
691
- * По умолчанию пункт меню СКРЫТ. Показывается (возвращает true), только если у пользователя
692
- * есть хотя бы одна из разрешенных ролей. Администратор (ADMIN) всегда видит элемент.
693
- */
694
- protected isVisibleForAllowedRoles(allowedRoles: string[]): boolean;
695
- /** Нажата средняя кнопка (открыть ссылку в новой вкладке). */
696
- onMiddleClick(event: MouseEvent, baseUrl: string, menu: MatMenuTrigger): void;
697
- static ɵfac: i0.ɵɵFactoryDeclaration<BaseNavBarMenuClass, never>;
698
- static ɵdir: i0.ɵɵDirectiveDeclaration<BaseNavBarMenuClass, never, never, {}, {}, never, never, true, never>;
699
- }
700
- export declare enum DialogAction {
701
- Add = "Добавить",
702
- Edit = "Изменить",
703
- Delete = "Удалить",
704
- None = ""
705
- }
706
- export interface DialogData {
707
- id: string;
708
- title: string;
709
- message: string;
710
- btnNoTitle: string;
711
- btnYesTitle: string;
712
- }
713
- export declare class DialogComponent {
714
- readonly data: DialogData;
715
- readonly dialogRef: MatDialogRef<any, any>;
716
- constructor();
717
- onNoClick(): void;
718
- static ɵfac: i0.ɵɵFactoryDeclaration<DialogComponent, never>;
719
- static ɵcmp: i0.ɵɵComponentDeclaration<DialogComponent, "ngx-uik-dialog", never, {}, {}, never, never, true, never>;
1037
+ * По умолчанию пункт меню ВИДИМ. Скрывается (возвращает false), если у пользователя
1038
+ * есть запрещенная роль или если передан маркер скрытия фичи HIDE_ROLE_MARKER.
1039
+ */
1040
+ protected isVisibleForForbiddenRoles(forbiddenRoles: string[]): boolean;
1041
+ /**
1042
+ * Определяет видимость пункта меню на основе БЕЛОГО списка ролей.
1043
+ * По умолчанию пункт меню СКРЫТ. Показывается (возвращает true), только если у пользователя
1044
+ * есть хотя бы одна из разрешенных ролей. Администратор (ADMIN) всегда видит элемент.
1045
+ */
1046
+ protected isVisibleForAllowedRoles(allowedRoles: string[]): boolean;
1047
+ /** Нажата средняя кнопка (открыть ссылку в новой вкладке). */
1048
+ onMiddleClick(event: MouseEvent, baseUrl: string, menu: MatMenuTrigger): void;
1049
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseNavBarMenuClass, never>;
1050
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BaseNavBarMenuClass, never, never, {}, {}, never, never, true, never>;
720
1051
  }
721
1052
  export declare class BasePageClass<T> implements OnDestroy {
722
1053
  protected dialog: MatDialog;
@@ -778,7 +1109,7 @@ export declare class BasePageClass<T> implements OnDestroy {
778
1109
  /** Выбранные строки в таблице. */
779
1110
  selected: T[];
780
1111
  /** Состояние сортировки, пагинации. */
781
- tableState: ITableState;
1112
+ tableState: TableState;
782
1113
  /** Доступность кнопки "Изменить". */
783
1114
  editBtnDisabled: boolean;
784
1115
  /** Доступность кнопки "Удалить". */
@@ -798,8 +1129,8 @@ export declare class BasePageClass<T> implements OnDestroy {
798
1129
  constructor();
799
1130
  ngOnDestroy(): void;
800
1131
  subscribeToLoadData(fnGetData: fnGetDataType<T>, fnGetCount: fnGetCountType<T>, fnMapEntity?: fnMapEntityType<T>): void;
801
- onPageChange(pageState: IPageState): void;
802
- onSortChange(sortState: ISortState): void;
1132
+ onPageChange(pageState: PageState): void;
1133
+ onSortChange(sortState: SortState): void;
803
1134
  /** Событие изменение выбранных записей. */
804
1135
  onSelectionChange(selected: T[]): void;
805
1136
  /** Обновление доступности кнопки "Изменить" - вызывается при изменении выбранных записей. */
@@ -906,11 +1237,6 @@ export declare abstract class BaseSignalEditClass<TDomain extends Record<string,
906
1237
  static ɵfac: i0.ɵɵFactoryDeclaration<BaseSignalEditClass<any, any>, never>;
907
1238
  static ɵdir: i0.ɵɵDirectiveDeclaration<BaseSignalEditClass<any, any>, never, never, {}, {}, never, never, true, never>;
908
1239
  }
909
- type FilterValue = string | number | boolean | readonly string[] | readonly number[] | null | undefined;
910
- type SafeFilterState = Readonly<Record<string, FilterValue>>;
911
- type CleanFilterValue = Exclude<FilterValue, null | undefined>;
912
- type CleanFilterState = Readonly<Record<string, CleanFilterValue>>;
913
- declare function cleanFilterParams(filters: SafeFilterState): CleanFilterState;
914
1240
  export declare abstract class BaseSignalFilterClass<F extends SafeFilterState> {
915
1241
  /** Сервис индикатор загрузки. */
916
1242
  protected loaderService: LoaderService;
@@ -978,6 +1304,7 @@ export declare abstract class BaseSignalFilterClass<F extends SafeFilterState> {
978
1304
  }
979
1305
  export declare abstract class BaseSignalPageClass<T extends BaseSchemaClass, F extends SafeFilterState = Record<string, never>> implements OnDestroy {
980
1306
  protected dialog: MatDialog;
1307
+ protected injector: Injector;
981
1308
  protected entityService: any;
982
1309
  protected entityEditComponent?: any;
983
1310
  protected extraData?: any;
@@ -1026,8 +1353,8 @@ export declare abstract class BaseSignalPageClass<T extends BaseSchemaClass, F e
1026
1353
  allowMultiSelect: boolean;
1027
1354
  /** Выбранные строки в таблице. */
1028
1355
  selected: T[];
1029
- protected abstract fnGetData: fnGetDataResType<T>;
1030
- protected abstract fnGetCount: fnGetCountResType<T>;
1356
+ protected abstract fnGetData: fnGetDataByStateAndFilterType<T, F>;
1357
+ protected abstract fnGetCount: fnGetCountByFilterType<F>;
1031
1358
  protected abstract fnMapEntity: fnMapEntityType<T> | undefined;
1032
1359
  protected dataResource: import("@angular/core").Signal<import("@angular/common/http").HttpResourceRef<T[]>>;
1033
1360
  protected countResource: import("@angular/core").Signal<import("@angular/common/http").HttpResourceRef<number>>;
@@ -1065,7 +1392,12 @@ export declare abstract class BaseSignalPageClass<T extends BaseSchemaClass, F e
1065
1392
  /** Очистка фильтра. (для очистки присвоить пустой объект '{}'). */
1066
1393
  clearFilters: import("@angular/core").WritableSignal<any>;
1067
1394
  /** Состояние сортировки, пагинации. */
1068
- tableState: import("@angular/core").WritableSignal<ITableState>;
1395
+ tableState: import("@angular/core").WritableSignal<{
1396
+ sortActive: string;
1397
+ sortDirection: SortDirection;
1398
+ pageIndex: number;
1399
+ pageSize: number;
1400
+ }>;
1069
1401
  constructor();
1070
1402
  ngOnDestroy(): void;
1071
1403
  /** Установка значение фильтра.
@@ -1073,8 +1405,8 @@ export declare abstract class BaseSignalPageClass<T extends BaseSchemaClass, F e
1073
1405
  * @param value - значение.
1074
1406
  */
1075
1407
  setFilter<K extends keyof F>(key: K, value: F[K]): void;
1076
- onPageChange(pageState: IPageState): void;
1077
- onSortChange(sortState: ISortState): void;
1408
+ onPageChange(pageState: PageState): void;
1409
+ onSortChange(sortState: SortState): void;
1078
1410
  /** Событие изменение выбранных записей. */
1079
1411
  onSelectionChange(selected: T[]): void;
1080
1412
  /** Обновление доступности кнопки "Изменить" - вызывается при изменении выбранных записей. */
@@ -1119,17 +1451,18 @@ export declare abstract class BaseSignalServiceClass<T extends BaseSchemaClass>
1119
1451
  getObjects(): HttpResourceRef<T[]>;
1120
1452
  getObject(id: number | (() => number | null | undefined)): HttpResourceRef<T | null>;
1121
1453
  getCount(): HttpResourceRef<number>;
1122
- getObjectsByPaging(pageIndex: number, pageSize: number, sortColumn: string, direction: string): HttpResourceRef<T[]>;
1454
+ getObjectsByPaging(tableState: TableState): HttpResourceRef<T[]>;
1123
1455
  /**
1124
1456
  * Универсальный метод получения пагинированных данных с фильтрацией.
1125
1457
  * Автоматически очищает фильтры от null/undefined/пустых значений с помощью cleanFilterParams.
1126
1458
  */
1127
- getObjectsByFilterPaging<F extends SafeFilterState>(pageIndex: number, pageSize: number, sortColumn: string, direction: string, filters: F): HttpResourceRef<T[]>;
1459
+ getObjectsByFilterPaging<F extends SafeFilterState>(tableState: TableState, filters: F): HttpResourceRef<T[]>;
1128
1460
  /**
1129
1461
  * Универсальный метод получения КОЛИЧЕСТВА записей с фильтрацией.
1130
1462
  * Автоматически очищает фильтры перед отправкой.
1131
1463
  */
1132
1464
  getObjectsCountByFilter<F extends SafeFilterState>(filters: F): HttpResourceRef<number>;
1465
+ protected buildTableParams(tableState: TableState): Record<string, string | number>;
1133
1466
  /**
1134
1467
  * МЕТОД СОЗДАНИЯ (POST)
1135
1468
  * Принимает данные БЕЗ id. Тип формируется автоматически через Zod.
@@ -1148,417 +1481,117 @@ export declare abstract class BaseSignalServiceClass<T extends BaseSchemaClass>
1148
1481
  * Метод DELETE (Переписанный под новую архитектуру)
1149
1482
  * Возвращает Observable. При подписке делает DELETE запрос,
1150
1483
  * а оператор 'tap' автоматически обновляет список getObjects() при успехе.
1151
- */
1152
- deleteObject(entity: T): any;
1153
- protected getParams(pageIndex: number, pageSize: number, sortColumn: string, direction: string): HttpParams;
1154
- protected getHttpContext(): {
1155
- context?: HttpContext;
1156
- };
1157
- static ɵfac: i0.ɵɵFactoryDeclaration<BaseSignalServiceClass<any>, never>;
1158
- static ɵprov: i0.ɵɵInjectableDeclaration<any>;
1159
- }
1160
- export declare class DisableIfRoleDirective {
1161
- readonly forbiddenRoles: import("@angular/core").InputSignal<string[]>;
1162
- private readonly el;
1163
- private readonly roleService;
1164
- constructor();
1165
- static ɵfac: i0.ɵɵFactoryDeclaration<DisableIfRoleDirective, never>;
1166
- static ɵdir: i0.ɵɵDirectiveDeclaration<DisableIfRoleDirective, "[ngxUikDisableIfRole]", never, {
1167
- "forbiddenRoles": {
1168
- "alias": "ngxUikDisableIfRole";
1169
- "required": false;
1170
- "isSignal": true;
1171
- };
1172
- }, {}, never, never, true, never>;
1173
- }
1174
- export declare class HideIfForbiddenRoleDirective {
1175
- readonly forbiddenRoles: import("@angular/core").InputSignal<string[]>;
1176
- private readonly el;
1177
- private readonly roleService;
1178
- constructor();
1179
- static ɵfac: i0.ɵɵFactoryDeclaration<HideIfForbiddenRoleDirective, never>;
1180
- static ɵdir: i0.ɵɵDirectiveDeclaration<HideIfForbiddenRoleDirective, "[ngxUikHideIfForbiddenRole]", never, {
1181
- "forbiddenRoles": {
1182
- "alias": "ngxUikHideIfForbiddenRole";
1183
- "required": false;
1184
- "isSignal": true;
1185
- };
1186
- }, {}, never, never, true, never>;
1187
- }
1188
- export declare class SetValueDirective {
1189
- readonly value: import("@angular/core").InputSignal<any>;
1190
- private readonly ngControl;
1191
- constructor();
1192
- static ɵfac: i0.ɵɵFactoryDeclaration<SetValueDirective, never>;
1193
- static ɵdir: i0.ɵɵDirectiveDeclaration<SetValueDirective, "[setValue]", never, {
1194
- "value": {
1195
- "alias": "setValue";
1196
- "required": false;
1197
- "isSignal": true;
1198
- };
1199
- }, {}, never, never, true, never>;
1200
- }
1201
- export declare const authGuard: (allowedRoles: string[]) => CanActivateFn;
1202
- export declare const redirectGuard: CanActivateFn;
1203
- /**
1204
- * Пускает на роут только тех пользователей, у которых есть роли из списка allowedRoles.
1205
- * ADMIN всегда имеет доступ.
1206
- */
1207
- export declare const roleGuard: (allowedRoles: string[]) => CanActivateFn;
1208
- export declare class LoggerService {
1209
- logPrefix: string;
1210
- private isProduction;
1211
- private readonly config;
1212
- constructor();
1213
- log(message: string, ...args: any[]): void;
1214
- error(message: string, ...args: any[]): void;
1215
- static ɵfac: i0.ɵɵFactoryDeclaration<LoggerService, never>;
1216
- static ɵprov: i0.ɵɵInjectableDeclaration<any>;
1217
- }
1218
- export interface LoggerConfig {
1219
- isProduction: boolean;
1220
- logLevel?: 'debug' | 'info' | 'warn' | 'error';
1221
- }
1222
- export declare const LOGGER_CONFIG: InjectionToken<LoggerConfig>;
1223
- export declare function provideLogger(config: LoggerConfig): EnvironmentProviders;
1224
- /** @deprecated */
1225
- export interface Deserializable {
1226
- deserialize(input: any): this;
1227
- }
1228
- export declare const secUserSchema: z.ZodObject<{
1229
- id: z.ZodDefault<z.ZodNumber>;
1230
- login: z.ZodDefault<z.ZodString>;
1231
- fio: z.ZodDefault<z.ZodString>;
1232
- dept: z.ZodDefault<z.ZodNumber>;
1233
- tabnum: z.ZodDefault<z.ZodNumber>;
1234
- userView: z.ZodOptional<z.ZodObject<{
1235
- id: z.ZodDefault<z.ZodNumber>;
1236
- idHuman: z.ZodDefault<z.ZodNumber>;
1237
- loginAD: z.ZodDefault<z.ZodString>;
1238
- dept: z.ZodDefault<z.ZodNumber>;
1239
- tabnum: z.ZodDefault<z.ZodNumber>;
1240
- lastname: z.ZodDefault<z.ZodString>;
1241
- firstname: z.ZodDefault<z.ZodString>;
1242
- middlename: z.ZodDefault<z.ZodString>;
1243
- fio: z.ZodDefault<z.ZodString>;
1244
- dateHuman: z.ZodOptional<z.ZodDate>;
1245
- profession: z.ZodDefault<z.ZodString>;
1246
- }, z.core.$strip>>;
1247
- }, z.core.$strip>;
1248
- export type SecUser = z.infer<typeof secUserSchema>;
1249
- export declare class SafePipe implements PipeTransform {
1250
- private readonly sanitizer;
1251
- transform(url: string | SafeUrl | null | undefined): SafeUrl;
1252
- static ɵfac: i0.ɵɵFactoryDeclaration<SafePipe, never>;
1253
- static ɵpipe: i0.ɵɵPipeDeclaration<SafePipe, "safe", true>;
1254
- }
1255
- export declare class TimePipe implements PipeTransform {
1256
- transform(value: number): string;
1257
- static ɵfac: i0.ɵɵFactoryDeclaration<TimePipe, never>;
1258
- static ɵpipe: i0.ɵɵPipeDeclaration<TimePipe, "time", true>;
1259
- }
1260
- export declare class TruncatePipe implements PipeTransform {
1261
- transform(value: string, args: any[]): string;
1262
- static ɵfac: i0.ɵɵFactoryDeclaration<TruncatePipe, never>;
1263
- static ɵpipe: i0.ɵɵPipeDeclaration<TruncatePipe, "truncate", true>;
1264
- }
1265
- export interface ChipItem {
1266
- value: string;
1267
- viewValue: string;
1268
- }
1269
- export declare class BaseMatChipComponent {
1270
- items: import("@angular/core").InputSignal<ChipItem[]>;
1271
- selectedItemsInput: import("@angular/core").InputSignal<string[]>;
1272
- title: import("@angular/core").InputSignal<string>;
1273
- selectedItemsChange: import("@angular/core").OutputEmitterRef<string[]>;
1274
- readonly input: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
1275
- separatorKeysCodes: number[];
1276
- inputCtrl: FormControl<any>;
1277
- filteredItems$?: Observable<ChipItem[]>;
1278
- selectedItems: ChipItem[];
1279
- constructor();
1280
- remove(value: string): void;
1281
- selected(event: MatAutocompleteSelectedEvent): void;
1282
- private _filter;
1283
- onCloseClick($event: MouseEvent): void;
1284
- static ɵfac: i0.ɵɵFactoryDeclaration<BaseMatChipComponent, never>;
1285
- static ɵcmp: i0.ɵɵComponentDeclaration<BaseMatChipComponent, "ngx-uik-chip-input-autocomplete", never, {
1286
- "items": {
1287
- "alias": "items";
1288
- "required": false;
1289
- "isSignal": true;
1290
- };
1291
- "selectedItemsInput": {
1292
- "alias": "selectedItemsInput";
1293
- "required": false;
1294
- "isSignal": true;
1295
- };
1296
- "title": {
1297
- "alias": "title";
1298
- "required": false;
1299
- "isSignal": true;
1300
- };
1301
- }, {
1302
- "selectedItemsChange": "selectedItemsChange";
1303
- }, never, never, true, never>;
1304
- }
1305
- export declare class CustomDateAdapter extends NativeDateAdapter {
1306
- parse(value: any): Date | null;
1307
- format(date: Date, displayFormat: Object): string;
1308
- static ɵfac: i0.ɵɵFactoryDeclaration<CustomDateAdapter, never>;
1309
- static ɵprov: i0.ɵɵInjectableDeclaration<any>;
1310
- }
1311
- export declare const MY_NATIVE_FORMATS: {
1312
- parse: {
1313
- dateInput: string;
1314
- };
1315
- display: {
1316
- dateInput: string;
1317
- monthYearLabel: {
1318
- year: string;
1319
- month: string;
1320
- };
1321
- dateA11yLabel: {
1322
- year: string;
1323
- month: string;
1324
- day: string;
1325
- };
1326
- monthYearA11yLabel: {
1327
- year: string;
1328
- month: string;
1329
- };
1330
- };
1331
- };
1332
- export interface DateRange {
1333
- begin: string;
1334
- end: string;
1335
- }
1336
- export declare function dateFormat(date: Date | null | undefined): string;
1337
- export declare class DateRangeInputComponent implements OnInit, OnDestroy {
1338
- label: import("@angular/core").InputSignal<string>;
1339
- dateRange: import("@angular/core").InputSignal<DateRange>;
1340
- minDate: import("@angular/core").InputSignal<Date>;
1341
- clearInput: import("@angular/core").InputSignal<any>;
1342
- required: import("@angular/core").InputSignal<boolean>;
1343
- dateRangeChange: import("@angular/core").OutputEmitterRef<DateRange>;
1344
- form: FormGroup<{
1345
- begin: FormControl<any>;
1346
- end: FormControl<any>;
1347
- }>;
1348
- subscription: Subscription;
1349
- constructor();
1350
- ngOnInit(): void;
1351
- ngOnDestroy(): void;
1352
- private rangeToDateDateRange;
1353
- static ɵfac: i0.ɵɵFactoryDeclaration<DateRangeInputComponent, never>;
1354
- static ɵcmp: i0.ɵɵComponentDeclaration<DateRangeInputComponent, "ngx-uik-date-range-input", never, {
1355
- "label": {
1356
- "alias": "label";
1357
- "required": false;
1358
- "isSignal": true;
1359
- };
1360
- "dateRange": {
1361
- "alias": "dateRange";
1362
- "required": false;
1363
- "isSignal": true;
1364
- };
1365
- "minDate": {
1366
- "alias": "minDate";
1367
- "required": false;
1368
- "isSignal": true;
1369
- };
1370
- "clearInput": {
1371
- "alias": "clearInput";
1372
- "required": false;
1373
- "isSignal": true;
1374
- };
1375
- "required": {
1376
- "alias": "required";
1377
- "required": false;
1378
- "isSignal": true;
1379
- };
1380
- }, {
1381
- "dateRangeChange": "dateRangeChange";
1382
- }, never, never, true, never>;
1383
- }
1384
- export declare class EmptyComponent {
1385
- static ɵfac: i0.ɵɵFactoryDeclaration<EmptyComponent, never>;
1386
- static ɵcmp: i0.ɵɵComponentDeclaration<EmptyComponent, "app-empty-route-guard-holder", never, {}, {}, never, never, true, never>;
1484
+ */
1485
+ deleteObject(entity: T): any;
1486
+ protected getParams(pageIndex: number, pageSize: number, sortColumn: string, direction: string): HttpParams;
1487
+ protected getHttpContext(): {
1488
+ context?: HttpContext;
1489
+ };
1490
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseSignalServiceClass<any>, never>;
1491
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
1387
1492
  }
1388
- export declare class NavBarComponent extends BaseNavBarMenuClass {
1389
- /** Видимость панели, когда loggedIn === false. */
1390
- visibleOnLogout: import("@angular/core").InputSignal<boolean>;
1391
- /** Видимость аватара. */
1392
- visibleAvatar: import("@angular/core").InputSignal<boolean>;
1393
- /** Видимость кнопки "Выйти". */
1394
- visibleLogoutBtn: import("@angular/core").InputSignal<boolean>;
1395
- /** Признак, что пользователь авторизован. */
1396
- loggedIn: import("@angular/core").InputSignal<boolean>;
1397
- /** ФИО пользователя. */
1398
- fioUser: import("@angular/core").InputSignal<string>;
1399
- /** Всплывающая подсказка о пользователе. */
1400
- userTooltip: import("@angular/core").InputSignal<string>;
1401
- /** URL аватара */
1402
- avatarURL: import("@angular/core").InputSignal<string | SafeUrl>;
1403
- /** Нажата кнопка "Выйти". */
1404
- logout: import("@angular/core").OutputEmitterRef<string>;
1405
- private readonly dialog;
1493
+ export declare class DisableIfRoleDirective {
1494
+ readonly forbiddenRoles: import("@angular/core").InputSignal<string[]>;
1495
+ private readonly el;
1496
+ private readonly roleService;
1406
1497
  constructor();
1407
- onLogout(): void;
1408
- openDialog(): void;
1409
- static ɵfac: i0.ɵɵFactoryDeclaration<NavBarComponent, never>;
1410
- static ɵcmp: i0.ɵɵComponentDeclaration<NavBarComponent, "ngx-uik-navbar", never, {
1411
- "visibleOnLogout": {
1412
- "alias": "visibleOnLogout";
1413
- "required": false;
1414
- "isSignal": true;
1415
- };
1416
- "visibleAvatar": {
1417
- "alias": "visibleAvatar";
1418
- "required": false;
1419
- "isSignal": true;
1420
- };
1421
- "visibleLogoutBtn": {
1422
- "alias": "visibleLogoutBtn";
1423
- "required": false;
1424
- "isSignal": true;
1425
- };
1426
- "loggedIn": {
1427
- "alias": "loggedIn";
1428
- "required": false;
1429
- "isSignal": true;
1430
- };
1431
- "fioUser": {
1432
- "alias": "fioUser";
1498
+ static ɵfac: i0.ɵɵFactoryDeclaration<DisableIfRoleDirective, never>;
1499
+ static ɵdir: i0.ɵɵDirectiveDeclaration<DisableIfRoleDirective, "[ngxUikDisableIfRole]", never, {
1500
+ "forbiddenRoles": {
1501
+ "alias": "ngxUikDisableIfRole";
1433
1502
  "required": false;
1434
1503
  "isSignal": true;
1435
1504
  };
1436
- "userTooltip": {
1437
- "alias": "userTooltip";
1505
+ }, {}, never, never, true, never>;
1506
+ }
1507
+ export declare class HideIfForbiddenRoleDirective {
1508
+ readonly forbiddenRoles: import("@angular/core").InputSignal<string[]>;
1509
+ private readonly el;
1510
+ private readonly roleService;
1511
+ constructor();
1512
+ static ɵfac: i0.ɵɵFactoryDeclaration<HideIfForbiddenRoleDirective, never>;
1513
+ static ɵdir: i0.ɵɵDirectiveDeclaration<HideIfForbiddenRoleDirective, "[ngxUikHideIfForbiddenRole]", never, {
1514
+ "forbiddenRoles": {
1515
+ "alias": "ngxUikHideIfForbiddenRole";
1438
1516
  "required": false;
1439
1517
  "isSignal": true;
1440
1518
  };
1441
- "avatarURL": {
1442
- "alias": "avatarURL";
1519
+ }, {}, never, never, true, never>;
1520
+ }
1521
+ export declare class SetValueDirective {
1522
+ readonly value: import("@angular/core").InputSignal<any>;
1523
+ private readonly ngControl;
1524
+ constructor();
1525
+ static ɵfac: i0.ɵɵFactoryDeclaration<SetValueDirective, never>;
1526
+ static ɵdir: i0.ɵɵDirectiveDeclaration<SetValueDirective, "[setValue]", never, {
1527
+ "value": {
1528
+ "alias": "setValue";
1443
1529
  "required": false;
1444
1530
  "isSignal": true;
1445
1531
  };
1446
- }, {
1447
- "logout": "logout";
1448
- }, never, ["*"], true, never>;
1449
- }
1450
- export declare class NotFoundComponent {
1451
- static ɵfac: i0.ɵɵFactoryDeclaration<NotFoundComponent, never>;
1452
- static ɵcmp: i0.ɵɵComponentDeclaration<NotFoundComponent, "ngx-uik-not-found", never, {}, {}, never, never, true, never>;
1532
+ }, {}, never, never, true, never>;
1453
1533
  }
1454
- export declare class ProgressSpinnerComponent implements AfterViewInit {
1455
- private readonly cdRef;
1456
- ngAfterViewInit(): void;
1457
- static ɵfac: i0.ɵɵFactoryDeclaration<ProgressSpinnerComponent, never>;
1458
- static ɵcmp: i0.ɵɵComponentDeclaration<ProgressSpinnerComponent, "ngx-uik-loader", never, {}, {}, never, never, true, never>;
1534
+ export declare const authGuard: (allowedRoles: string[]) => CanActivateFn;
1535
+ export declare const redirectGuard: CanActivateFn;
1536
+ /**
1537
+ * Пускает на роут только тех пользователей, у которых есть роли из списка allowedRoles.
1538
+ * ADMIN всегда имеет доступ.
1539
+ */
1540
+ export declare const roleGuard: (allowedRoles: string[]) => CanActivateFn;
1541
+ export declare class LoggerService {
1542
+ logPrefix: string;
1543
+ private isProduction;
1544
+ private readonly config;
1545
+ constructor();
1546
+ log(message: string, ...args: any[]): void;
1547
+ error(message: string, ...args: any[]): void;
1548
+ static ɵfac: i0.ɵɵFactoryDeclaration<LoggerService, never>;
1549
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
1459
1550
  }
1460
- interface SelectItem$1 {
1461
- value: string;
1462
- viewValue: string;
1551
+ export interface LoggerConfig {
1552
+ isProduction: boolean;
1553
+ logLevel?: 'debug' | 'info' | 'warn' | 'error';
1463
1554
  }
1464
- export declare class BaseSelectAutocompleteWithVsComponent implements OnInit, OnDestroy {
1465
- items: import("@angular/core").InputSignal<SelectItem$1[]>;
1466
- selectedItemInput: import("@angular/core").InputSignal<SelectItem$1 | undefined>;
1467
- title: import("@angular/core").InputSignal<string>;
1468
- isVisible: import("@angular/core").InputSignal<boolean>;
1469
- isRequired: import("@angular/core").InputSignal<boolean>;
1470
- isDisabled: import("@angular/core").InputSignal<boolean>;
1471
- width: import("@angular/core").InputSignal<string>;
1472
- selectedItem: import("@angular/core").WritableSignal<SelectItem$1 | undefined>;
1473
- selectedItemChange: import("@angular/core").OutputEmitterRef<string>;
1474
- height: string;
1475
- inputCtrl: FormControl<any>;
1476
- filteredItems: SelectItem$1[];
1477
- subscription: Subscription;
1478
- constructor();
1479
- ngOnInit(): void;
1480
- ngOnDestroy(): void;
1481
- onSelectedItemChange(item: any): void;
1482
- onClearClick($event: MouseEvent): void;
1483
- displayWithFn(lookup: any): any;
1484
- private setFileredItems;
1485
- static ɵfac: i0.ɵɵFactoryDeclaration<BaseSelectAutocompleteWithVsComponent, never>;
1486
- static ɵcmp: i0.ɵɵComponentDeclaration<BaseSelectAutocompleteWithVsComponent, "ngx-uik-select-autocomplete-with-vs", never, {
1487
- "items": {
1488
- "alias": "items";
1489
- "required": false;
1490
- "isSignal": true;
1491
- };
1492
- "selectedItemInput": {
1493
- "alias": "selectedItemInput";
1494
- "required": false;
1495
- "isSignal": true;
1496
- };
1497
- "title": {
1498
- "alias": "title";
1499
- "required": false;
1500
- "isSignal": true;
1501
- };
1502
- "isVisible": {
1503
- "alias": "isVisible";
1504
- "required": false;
1505
- "isSignal": true;
1506
- };
1507
- "isRequired": {
1508
- "alias": "isRequired";
1509
- "required": false;
1510
- "isSignal": true;
1511
- };
1512
- "isDisabled": {
1513
- "alias": "isDisabled";
1514
- "required": false;
1515
- "isSignal": true;
1516
- };
1517
- "width": {
1518
- "alias": "width";
1519
- "required": false;
1520
- "isSignal": true;
1521
- };
1522
- }, {
1523
- "selectedItemChange": "selectedItemChange";
1524
- }, never, never, true, never>;
1555
+ export declare const LOGGER_CONFIG: InjectionToken<LoggerConfig>;
1556
+ export declare function provideLogger(config: LoggerConfig): EnvironmentProviders;
1557
+ /** @deprecated */
1558
+ export interface Deserializable {
1559
+ deserialize(input: any): this;
1525
1560
  }
1526
- export interface SelectItem {
1527
- value: string;
1528
- viewValue: string;
1561
+ export declare const secUserSchema: z.ZodObject<{
1562
+ id: z.ZodDefault<z.ZodNumber>;
1563
+ login: z.ZodDefault<z.ZodString>;
1564
+ fio: z.ZodDefault<z.ZodString>;
1565
+ dept: z.ZodDefault<z.ZodNumber>;
1566
+ tabnum: z.ZodDefault<z.ZodNumber>;
1567
+ userView: z.ZodOptional<z.ZodObject<{
1568
+ id: z.ZodDefault<z.ZodNumber>;
1569
+ idHuman: z.ZodDefault<z.ZodNumber>;
1570
+ loginAD: z.ZodDefault<z.ZodString>;
1571
+ dept: z.ZodDefault<z.ZodNumber>;
1572
+ tabnum: z.ZodDefault<z.ZodNumber>;
1573
+ lastname: z.ZodDefault<z.ZodString>;
1574
+ firstname: z.ZodDefault<z.ZodString>;
1575
+ middlename: z.ZodDefault<z.ZodString>;
1576
+ fio: z.ZodDefault<z.ZodString>;
1577
+ dateHuman: z.ZodOptional<z.ZodDate>;
1578
+ profession: z.ZodDefault<z.ZodString>;
1579
+ }, z.core.$strip>>;
1580
+ }, z.core.$strip>;
1581
+ export type SecUser = z.infer<typeof secUserSchema>;
1582
+ export declare class SafePipe implements PipeTransform {
1583
+ private readonly sanitizer;
1584
+ transform(url: string | SafeUrl | null | undefined): SafeUrl;
1585
+ static ɵfac: i0.ɵɵFactoryDeclaration<SafePipe, never>;
1586
+ static ɵpipe: i0.ɵɵPipeDeclaration<SafePipe, "safe", true>;
1529
1587
  }
1530
- export interface SelectGroup {
1531
- name: string;
1532
- items: SelectItem[];
1588
+ export declare class TimePipe implements PipeTransform {
1589
+ transform(value: number): string;
1590
+ static ɵfac: i0.ɵɵFactoryDeclaration<TimePipe, never>;
1591
+ static ɵpipe: i0.ɵɵPipeDeclaration<TimePipe, "time", true>;
1533
1592
  }
1534
- export declare class BaseSelectWithGroupComponent {
1535
- groups: import("@angular/core").InputSignal<SelectGroup[]>;
1536
- selectedItems: import("@angular/core").InputSignal<string[]>;
1537
- title: import("@angular/core").InputSignal<string>;
1538
- selectedItemsChange: import("@angular/core").OutputEmitterRef<string[]>;
1539
- separatorKeysCodes: number[];
1540
- control: FormControl<number[] | null>;
1541
- constructor();
1542
- selectionChange($event: any): void;
1543
- onClearClick($event: MouseEvent): void;
1544
- static ɵfac: i0.ɵɵFactoryDeclaration<BaseSelectWithGroupComponent, never>;
1545
- static ɵcmp: i0.ɵɵComponentDeclaration<BaseSelectWithGroupComponent, "ngx-uik-select-with-group", never, {
1546
- "groups": {
1547
- "alias": "groups";
1548
- "required": false;
1549
- "isSignal": true;
1550
- };
1551
- "selectedItems": {
1552
- "alias": "selectedItems";
1553
- "required": false;
1554
- "isSignal": true;
1555
- };
1556
- "title": {
1557
- "alias": "title";
1558
- "required": false;
1559
- "isSignal": true;
1560
- };
1561
- }, {
1562
- "selectedItemsChange": "selectedItemsChange";
1563
- }, never, never, true, never>;
1593
+ export declare class TruncatePipe implements PipeTransform {
1594
+ transform(value: string, args: any[]): string;
1595
+ static ɵfac: i0.ɵɵFactoryDeclaration<TruncatePipe, never>;
1596
+ static ɵpipe: i0.ɵɵPipeDeclaration<TruncatePipe, "truncate", true>;
1564
1597
  }