@kuzntsv/uikit 1.0.60 → 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
4
|
import z, { z as z$1 } from "zod";
|
|
5
5
|
import { HttpClient, HttpContext, HttpParams, HttpResourceRef } from "@angular/common/http";
|
|
6
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";
|
|
7
12
|
import { SelectionModel } from "@angular/cdk/collections";
|
|
8
13
|
import { MatMenuTrigger } from "@angular/material/menu";
|
|
9
14
|
import { MatPaginator } from "@angular/material/paginator";
|
|
10
15
|
import { MatSort } from "@angular/material/sort";
|
|
11
16
|
import { MatTableDataSource } from "@angular/material/table";
|
|
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,1394 +46,1395 @@ export declare class LoginPageComponent implements OnInit {
|
|
|
46
46
|
};
|
|
47
47
|
}, {}, never, never, true, never>;
|
|
48
48
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
export
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
export type fnGetDataResType<T> = () => HttpResourceRef<T[]>;
|
|
58
|
-
export type fnGetCountResType<T> = () => HttpResourceRef<number>;
|
|
59
|
-
export type fnMapEntityType<T> = () => (item: T) => T;
|
|
60
|
-
export declare const SortDirectionSchema: z.ZodCustom<SortDirection, SortDirection>;
|
|
61
|
-
export declare const SortStateSchema: z.ZodObject<{
|
|
62
|
-
sortActive: z.ZodString;
|
|
63
|
-
sortDirection: z.ZodCustom<SortDirection, SortDirection>;
|
|
64
|
-
}, z.core.$strip>;
|
|
65
|
-
export declare const PageStateSchema: z.ZodObject<{
|
|
66
|
-
pageIndex: z.ZodNumber;
|
|
67
|
-
pageSize: z.ZodNumber;
|
|
68
|
-
}, z.core.$strip>;
|
|
69
|
-
export declare const TableStateSchema: z.ZodObject<{
|
|
70
|
-
sortActive: z.ZodString;
|
|
71
|
-
sortDirection: z.ZodCustom<SortDirection, SortDirection>;
|
|
72
|
-
pageIndex: z.ZodNumber;
|
|
73
|
-
pageSize: z.ZodNumber;
|
|
74
|
-
}, z.core.$strip>;
|
|
75
|
-
export type SortState = z.infer<typeof SortStateSchema>;
|
|
76
|
-
export type PageState = z.infer<typeof PageStateSchema>;
|
|
77
|
-
export type TableState = z.infer<typeof TableStateSchema>;
|
|
78
|
-
/** Настройки действий в колонке таблицы. */
|
|
79
|
-
interface IColumnActionOptions<T> {
|
|
80
|
-
/** Заголовок. */
|
|
81
|
-
title?: string;
|
|
82
|
-
/** Подсказка. */
|
|
83
|
-
tooltip?: string;
|
|
84
|
-
/** Функция обработчик нажатия. */
|
|
85
|
-
onClickFn?: (item: T | undefined) => void;
|
|
86
|
-
/** Функция обработчик нажатия средней кнопкой мыши. */
|
|
87
|
-
onClickMiddleFn?: ($event: MouseEvent, item: T | undefined) => void;
|
|
88
|
-
/** Иконка. */
|
|
89
|
-
icon?: string;
|
|
90
|
-
/** Символ (Material Symbols). */
|
|
91
|
-
symbol?: string;
|
|
92
|
-
/** Доступность. */
|
|
93
|
-
disabled?: boolean;
|
|
94
|
-
/** Функция определяющая доступность. */
|
|
95
|
-
disabledFn?: (item: T | undefined) => boolean;
|
|
96
|
-
/** Видимость. */
|
|
97
|
-
hide?: boolean;
|
|
98
|
-
/** Функция определяющая видимость. */
|
|
99
|
-
hideFn?: (item: T | undefined) => boolean;
|
|
100
|
-
/** Классы css*/
|
|
101
|
-
classList?: string[];
|
|
102
|
-
}
|
|
103
|
-
/** Настройки колонки. */
|
|
104
|
-
export interface IColumnOptions<T> {
|
|
105
|
-
/** Имя. */
|
|
106
|
-
name: string;
|
|
107
|
-
/** Заголовок. */
|
|
108
|
-
title: string;
|
|
109
|
-
/**
|
|
110
|
-
* Формат колонки {
|
|
111
|
-
* '' - текст (по умолчанию) |
|
|
112
|
-
* 'pre-wrap' - текст с переносами строк |
|
|
113
|
-
* 'link' - гиперссылка |
|
|
114
|
-
* 'linkIcon' - гиперссылка (иконка вместо текста) |
|
|
115
|
-
* 'routerLink' - ссылка на страницу в приложении |
|
|
116
|
-
* 'routerLinkIcon' - ссылка на страницу в приложении (иконка вместо текста) |
|
|
117
|
-
* 'checkbox' - чекбокс |
|
|
118
|
-
* 'icon' - иконка |
|
|
119
|
-
* 'icons' - иконка по значению (отображаются из свойства icons по индексу) |
|
|
120
|
-
* 'actions' - действия |
|
|
121
|
-
* 'image' - изображение
|
|
122
|
-
* }. * */
|
|
123
|
-
format?: string;
|
|
124
|
-
/** Отключить сортировку по заголовку. */
|
|
125
|
-
titleSortDisable?: boolean;
|
|
126
|
-
/** Иконка вместо текста, когда format = 'link' | 'routerLink' | 'routerLinkIcon' | 'icon'. */
|
|
127
|
-
icon?: string;
|
|
128
|
-
/** Иконка вместо текста, когда format = 'icons'. */
|
|
129
|
-
icons?: string[];
|
|
130
|
-
/** Символ (Material Symbols) вместо текста, когда format = 'link' | 'routerLink' | 'routerLinkIcon' | 'icon'. */
|
|
131
|
-
symbol?: string;
|
|
132
|
-
/** Символ (Material Symbols) вместо текста, когда format = 'icons'. */
|
|
133
|
-
symbols?: string;
|
|
134
|
-
/** Скрыть колонку. */
|
|
135
|
-
hide?: boolean;
|
|
136
|
-
footer?: boolean;
|
|
137
|
-
footerTitle?: string;
|
|
138
|
-
tooltip?: string;
|
|
139
|
-
tooltips?: string[];
|
|
140
|
-
classList?: string[];
|
|
141
|
-
actions?: IColumnActionOptions<T>[];
|
|
142
|
-
imageUrl?: string;
|
|
143
|
-
imageAlt?: string;
|
|
144
|
-
}
|
|
145
|
-
/** Настройки пункта меню. */
|
|
146
|
-
export interface IContextMenuOptions<T> {
|
|
147
|
-
/** Заголовок. */
|
|
148
|
-
title: string;
|
|
149
|
-
/** Функция обработчик нажатия. */
|
|
150
|
-
onClickFn?: (item: T | undefined) => void;
|
|
151
|
-
/** Функция обработчик нажатия средней кнопкой мыши. */
|
|
152
|
-
onClickMiddleFn?: ($event: MouseEvent, item: T | undefined, contextMenu: MatMenuTrigger) => void;
|
|
153
|
-
/** Иконка. */
|
|
154
|
-
icon?: string;
|
|
155
|
-
/** Символ (Material Symbols). */
|
|
156
|
-
symbol?: string;
|
|
157
|
-
/** Доступность. */
|
|
158
|
-
disabled?: boolean;
|
|
159
|
-
/** Функция определяющая доступность. */
|
|
160
|
-
disabledFn?: (item: T | undefined) => boolean;
|
|
161
|
-
/** Видимость. */
|
|
162
|
-
hide?: boolean;
|
|
163
|
-
/** Функция определяющая видимость. */
|
|
164
|
-
hideFn?: (item: T | undefined) => boolean;
|
|
165
|
-
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;
|
|
166
57
|
}
|
|
167
|
-
export declare class
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
sortDirection: import("@kuzntsv/uikit/ui").SortDirection;
|
|
178
|
-
pageIndex: number;
|
|
179
|
-
pageSize: number;
|
|
180
|
-
}>;
|
|
181
|
-
/** Разрешен выбор нескольких строк. */
|
|
182
|
-
allowMultiSelect: import("@angular/core").InputSignal<boolean>;
|
|
183
|
-
/** Список элементов контекстного меню. */
|
|
184
|
-
opt: import("@angular/core").InputSignal<IContextMenuOptions<T>[]>;
|
|
185
|
-
/** Отправка события rowDoubleClicked (при двойном щелчке мышью) отключена. */
|
|
186
|
-
rowDblClickedDisable: import("@angular/core").InputSignal<boolean>;
|
|
187
|
-
/** Отображать строку с итогом. */
|
|
188
|
-
footer: import("@angular/core").InputSignal<boolean>;
|
|
189
|
-
/** Изменение страницы. */
|
|
190
|
-
pageStateChange: import("@angular/core").OutputEmitterRef<{
|
|
191
|
-
pageIndex: number;
|
|
192
|
-
pageSize: number;
|
|
193
|
-
}>;
|
|
194
|
-
/** Изменение сортировки. */
|
|
195
|
-
sortStateChange: import("@angular/core").OutputEmitterRef<{
|
|
196
|
-
sortActive: string;
|
|
197
|
-
sortDirection: import("@kuzntsv/uikit/ui").SortDirection;
|
|
198
|
-
}>;
|
|
199
|
-
/** Изменение выбранных записей. */
|
|
200
|
-
selectionChange: import("@angular/core").OutputEmitterRef<T[]>;
|
|
201
|
-
/** Двойной щелчек ЛКМ*/
|
|
202
|
-
rowDoubleClicked: import("@angular/core").OutputEmitterRef<T>;
|
|
203
|
-
readonly sort: import("@angular/core").Signal<MatSort | undefined>;
|
|
204
|
-
readonly paginator: import("@angular/core").Signal<MatPaginator | undefined>;
|
|
205
|
-
readonly contextMenu: import("@angular/core").Signal<MatMenuTrigger | undefined>;
|
|
206
|
-
pageState: import("@angular/core").WritableSignal<{
|
|
207
|
-
pageIndex: number;
|
|
208
|
-
pageSize: number;
|
|
209
|
-
}>;
|
|
210
|
-
sortState: import("@angular/core").WritableSignal<{
|
|
211
|
-
sortActive: string;
|
|
212
|
-
sortDirection: import("@kuzntsv/uikit/ui").SortDirection;
|
|
213
|
-
}>;
|
|
214
|
-
/** Выбранная строка, для которого будет показываться меню при нажатии правой кнопки мыши. */
|
|
215
|
-
itemForMenu?: T;
|
|
216
|
-
/** Позиция в которой отображается контекстное меню. */
|
|
217
|
-
contextMenuPosition: {
|
|
218
|
-
x: string;
|
|
219
|
-
y: string;
|
|
220
|
-
};
|
|
221
|
-
defaultPageIndex: number;
|
|
222
|
-
defaultPageSize: number;
|
|
223
|
-
/** Источник данных для отображения. */
|
|
224
|
-
dataSource: MatTableDataSource<T, MatPaginator>;
|
|
225
|
-
/** Выбранные записи. */
|
|
226
|
-
selection: SelectionModel<T>;
|
|
227
|
-
/** Список отображаемых колонок (формируется из @columnOptions). */
|
|
228
|
-
displayedColumns?: string[];
|
|
229
|
-
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[];
|
|
230
68
|
constructor();
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
onRowClicked(row: T): void;
|
|
240
|
-
/** При двойном щелчке по строке. */
|
|
241
|
-
onRowDblClicked(row: T): void;
|
|
242
|
-
/** При вызове контекстного меню. */
|
|
243
|
-
onContextMenu(event: MouseEvent, itemForMenu: T | undefined): void;
|
|
244
|
-
getTotal(columnName: string): number | "";
|
|
245
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<TableComponent<any>, never>;
|
|
246
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TableComponent<any>, "ngx-uik-table", never, {
|
|
247
|
-
"data": {
|
|
248
|
-
"alias": "data";
|
|
249
|
-
"required": false;
|
|
250
|
-
"isSignal": true;
|
|
251
|
-
};
|
|
252
|
-
"length": {
|
|
253
|
-
"alias": "length";
|
|
254
|
-
"required": false;
|
|
255
|
-
"isSignal": true;
|
|
256
|
-
};
|
|
257
|
-
"columnOptions": {
|
|
258
|
-
"alias": "columnOptions";
|
|
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";
|
|
259
77
|
"required": false;
|
|
260
78
|
"isSignal": true;
|
|
261
79
|
};
|
|
262
|
-
"
|
|
263
|
-
"alias": "
|
|
264
|
-
"required": true;
|
|
265
|
-
"isSignal": true;
|
|
266
|
-
};
|
|
267
|
-
"allowMultiSelect": {
|
|
268
|
-
"alias": "allowMultiSelect";
|
|
80
|
+
"selectedItemsInput": {
|
|
81
|
+
"alias": "selectedItemsInput";
|
|
269
82
|
"required": false;
|
|
270
83
|
"isSignal": true;
|
|
271
84
|
};
|
|
272
|
-
"
|
|
273
|
-
"alias": "
|
|
274
|
-
"required": false;
|
|
275
|
-
"isSignal": true;
|
|
276
|
-
};
|
|
277
|
-
"rowDblClickedDisable": {
|
|
278
|
-
"alias": "rowDblClickedDisable";
|
|
279
|
-
"required": false;
|
|
280
|
-
"isSignal": true;
|
|
281
|
-
};
|
|
282
|
-
"footer": {
|
|
283
|
-
"alias": "footer";
|
|
85
|
+
"title": {
|
|
86
|
+
"alias": "title";
|
|
284
87
|
"required": false;
|
|
285
88
|
"isSignal": true;
|
|
286
89
|
};
|
|
287
90
|
}, {
|
|
288
|
-
"
|
|
289
|
-
"sortStateChange": "sortStateChange";
|
|
290
|
-
"selectionChange": "selectionChange";
|
|
291
|
-
"rowDoubleClicked": "rowDoubleClicked";
|
|
91
|
+
"selectedItemsChange": "selectedItemsChange";
|
|
292
92
|
}, never, never, true, never>;
|
|
293
93
|
}
|
|
294
|
-
export declare class
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
editBtnTooltip: import("@angular/core").InputSignal<string>;
|
|
347
|
-
removeBtnTooltip: import("@angular/core").InputSignal<string>;
|
|
348
|
-
copyBtnTooltip: import("@angular/core").InputSignal<string>;
|
|
349
|
-
excelBtnTooltip: import("@angular/core").InputSignal<string>;
|
|
350
|
-
csvBtnTooltip: import("@angular/core").InputSignal<string>;
|
|
351
|
-
pdfBtnTooltip: import("@angular/core").InputSignal<string>;
|
|
352
|
-
printBtnTooltip: import("@angular/core").InputSignal<string>;
|
|
353
|
-
refreshBtnTooltip: import("@angular/core").InputSignal<string>;
|
|
354
|
-
clearBtnTooltip: import("@angular/core").InputSignal<string>;
|
|
355
|
-
/** Список элементов контекстного меню. */
|
|
356
|
-
newBtnOpt: import("@angular/core").InputSignal<IContextMenuOptions<string>[]>;
|
|
357
|
-
clickedNewBtn: import("@angular/core").OutputEmitterRef<void>;
|
|
358
|
-
clickedEditBtn: import("@angular/core").OutputEmitterRef<void>;
|
|
359
|
-
clickedRemoveBtn: import("@angular/core").OutputEmitterRef<void>;
|
|
360
|
-
clickedCopyBtn: import("@angular/core").OutputEmitterRef<void>;
|
|
361
|
-
clickedExcelBtn: import("@angular/core").OutputEmitterRef<void>;
|
|
362
|
-
clickedCsvBtn: import("@angular/core").OutputEmitterRef<void>;
|
|
363
|
-
clickedPdfBtn: import("@angular/core").OutputEmitterRef<void>;
|
|
364
|
-
clickedPrintBtn: import("@angular/core").OutputEmitterRef<void>;
|
|
365
|
-
clickedRefreshBtn: import("@angular/core").OutputEmitterRef<void>;
|
|
366
|
-
clickedClearBtn: import("@angular/core").OutputEmitterRef<void>;
|
|
367
|
-
protected roleService: RoleService;
|
|
368
|
-
readonly isNewBtnVisible: import("@angular/core").Signal<boolean>;
|
|
369
|
-
readonly isEditBtnVisible: import("@angular/core").Signal<boolean>;
|
|
370
|
-
readonly isRemoveBtnVisible: import("@angular/core").Signal<boolean>;
|
|
371
|
-
readonly isCopyBtnVisible: import("@angular/core").Signal<boolean>;
|
|
372
|
-
readonly isExcelBtnVisible: import("@angular/core").Signal<boolean>;
|
|
373
|
-
readonly isCsvBtnVisible: import("@angular/core").Signal<boolean>;
|
|
374
|
-
readonly isPdfBtnVisible: import("@angular/core").Signal<boolean>;
|
|
375
|
-
readonly isPrintBtnVisible: import("@angular/core").Signal<boolean>;
|
|
376
|
-
readonly isRefreshBtnVisible: import("@angular/core").Signal<boolean>;
|
|
377
|
-
readonly isClearBtnVisible: import("@angular/core").Signal<boolean>;
|
|
378
|
-
/**
|
|
379
|
-
* Внутренний метод для вычисления видимости.
|
|
380
|
-
* Не вызывается напрямую из шаблона, а служит хелпером для декларативных computed.
|
|
381
|
-
* Проверяет, заблокирован ли доступ к элементу на основе списка ограничений.
|
|
382
|
-
* Возвращает true, если у пользователя есть запрещенная роль или передан маркер 'HIDE'.
|
|
383
|
-
* Администратор (ADMIN) всегда игнорирует любые запреты и маркер 'HIDE'.
|
|
384
|
-
*/
|
|
385
|
-
private checkVisibility;
|
|
386
|
-
onNewClick(): void;
|
|
387
|
-
onEditClick(): void;
|
|
388
|
-
onRemoveClick(): void;
|
|
389
|
-
onCopyClick(): void;
|
|
390
|
-
onExcelClick(): void;
|
|
391
|
-
onCsvClick(): void;
|
|
392
|
-
onPdfClick(): void;
|
|
393
|
-
onPrintClick(): void;
|
|
394
|
-
onRefreshGridClick(): void;
|
|
395
|
-
onClearClick(): void;
|
|
396
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<BaseToolbarComponent, never>;
|
|
397
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<BaseToolbarComponent, "ngx-uik-base-toolbar", never, {
|
|
398
|
-
"rolesNewBtn": {
|
|
399
|
-
"alias": "rolesNewBtn";
|
|
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;
|
|
109
|
+
};
|
|
110
|
+
dateA11yLabel: {
|
|
111
|
+
year: string;
|
|
112
|
+
month: string;
|
|
113
|
+
day: string;
|
|
114
|
+
};
|
|
115
|
+
monthYearA11yLabel: {
|
|
116
|
+
year: string;
|
|
117
|
+
month: string;
|
|
118
|
+
};
|
|
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";
|
|
400
146
|
"required": false;
|
|
401
147
|
"isSignal": true;
|
|
402
148
|
};
|
|
403
|
-
"
|
|
404
|
-
"alias": "
|
|
149
|
+
"dateRange": {
|
|
150
|
+
"alias": "dateRange";
|
|
405
151
|
"required": false;
|
|
406
152
|
"isSignal": true;
|
|
407
153
|
};
|
|
408
|
-
"
|
|
409
|
-
"alias": "
|
|
154
|
+
"minDate": {
|
|
155
|
+
"alias": "minDate";
|
|
410
156
|
"required": false;
|
|
411
157
|
"isSignal": true;
|
|
412
158
|
};
|
|
413
|
-
"
|
|
414
|
-
"alias": "
|
|
159
|
+
"clearInput": {
|
|
160
|
+
"alias": "clearInput";
|
|
415
161
|
"required": false;
|
|
416
162
|
"isSignal": true;
|
|
417
163
|
};
|
|
418
|
-
"
|
|
419
|
-
"alias": "
|
|
164
|
+
"required": {
|
|
165
|
+
"alias": "required";
|
|
420
166
|
"required": false;
|
|
421
167
|
"isSignal": true;
|
|
422
168
|
};
|
|
423
|
-
|
|
424
|
-
|
|
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";
|
|
425
223
|
"required": false;
|
|
426
224
|
"isSignal": true;
|
|
427
225
|
};
|
|
428
|
-
"
|
|
429
|
-
"alias": "
|
|
226
|
+
"visibleAvatar": {
|
|
227
|
+
"alias": "visibleAvatar";
|
|
430
228
|
"required": false;
|
|
431
229
|
"isSignal": true;
|
|
432
230
|
};
|
|
433
|
-
"
|
|
434
|
-
"alias": "
|
|
231
|
+
"visibleLogoutBtn": {
|
|
232
|
+
"alias": "visibleLogoutBtn";
|
|
435
233
|
"required": false;
|
|
436
234
|
"isSignal": true;
|
|
437
235
|
};
|
|
438
|
-
"
|
|
439
|
-
"alias": "
|
|
236
|
+
"loggedIn": {
|
|
237
|
+
"alias": "loggedIn";
|
|
440
238
|
"required": false;
|
|
441
239
|
"isSignal": true;
|
|
442
240
|
};
|
|
443
|
-
"
|
|
444
|
-
"alias": "
|
|
445
|
-
"required": false;
|
|
446
|
-
"isSignal": true;
|
|
447
|
-
};
|
|
448
|
-
"newBtnDisabled": {
|
|
449
|
-
"alias": "newBtnDisabled";
|
|
450
|
-
"required": false;
|
|
451
|
-
"isSignal": true;
|
|
452
|
-
};
|
|
453
|
-
"editBtnDisabled": {
|
|
454
|
-
"alias": "editBtnDisabled";
|
|
455
|
-
"required": false;
|
|
456
|
-
"isSignal": true;
|
|
457
|
-
};
|
|
458
|
-
"removeBtnDisabled": {
|
|
459
|
-
"alias": "removeBtnDisabled";
|
|
460
|
-
"required": false;
|
|
461
|
-
"isSignal": true;
|
|
462
|
-
};
|
|
463
|
-
"copyBtnDisabled": {
|
|
464
|
-
"alias": "copyBtnDisabled";
|
|
465
|
-
"required": false;
|
|
466
|
-
"isSignal": true;
|
|
467
|
-
};
|
|
468
|
-
"excelBtnDisabled": {
|
|
469
|
-
"alias": "excelBtnDisabled";
|
|
470
|
-
"required": false;
|
|
471
|
-
"isSignal": true;
|
|
472
|
-
};
|
|
473
|
-
"csvBtnDisabled": {
|
|
474
|
-
"alias": "csvBtnDisabled";
|
|
475
|
-
"required": false;
|
|
476
|
-
"isSignal": true;
|
|
477
|
-
};
|
|
478
|
-
"pdfBtnDisabled": {
|
|
479
|
-
"alias": "pdfBtnDisabled";
|
|
480
|
-
"required": false;
|
|
481
|
-
"isSignal": true;
|
|
482
|
-
};
|
|
483
|
-
"printBtnDisabled": {
|
|
484
|
-
"alias": "printBtnDisabled";
|
|
485
|
-
"required": false;
|
|
486
|
-
"isSignal": true;
|
|
487
|
-
};
|
|
488
|
-
"refreshBtnDisabled": {
|
|
489
|
-
"alias": "refreshBtnDisabled";
|
|
241
|
+
"fioUser": {
|
|
242
|
+
"alias": "fioUser";
|
|
490
243
|
"required": false;
|
|
491
244
|
"isSignal": true;
|
|
492
245
|
};
|
|
493
|
-
"
|
|
494
|
-
"alias": "
|
|
246
|
+
"userTooltip": {
|
|
247
|
+
"alias": "userTooltip";
|
|
495
248
|
"required": false;
|
|
496
249
|
"isSignal": true;
|
|
497
250
|
};
|
|
498
|
-
"
|
|
499
|
-
"alias": "
|
|
251
|
+
"avatarURL": {
|
|
252
|
+
"alias": "avatarURL";
|
|
500
253
|
"required": false;
|
|
501
254
|
"isSignal": true;
|
|
502
255
|
};
|
|
503
|
-
|
|
504
|
-
|
|
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";
|
|
505
299
|
"required": false;
|
|
506
300
|
"isSignal": true;
|
|
507
301
|
};
|
|
508
|
-
"
|
|
509
|
-
"alias": "
|
|
302
|
+
"selectedItemInput": {
|
|
303
|
+
"alias": "selectedItemInput";
|
|
510
304
|
"required": false;
|
|
511
305
|
"isSignal": true;
|
|
512
306
|
};
|
|
513
|
-
"
|
|
514
|
-
"alias": "
|
|
307
|
+
"title": {
|
|
308
|
+
"alias": "title";
|
|
515
309
|
"required": false;
|
|
516
310
|
"isSignal": true;
|
|
517
311
|
};
|
|
518
|
-
"
|
|
519
|
-
"alias": "
|
|
312
|
+
"isVisible": {
|
|
313
|
+
"alias": "isVisible";
|
|
520
314
|
"required": false;
|
|
521
315
|
"isSignal": true;
|
|
522
316
|
};
|
|
523
|
-
"
|
|
524
|
-
"alias": "
|
|
317
|
+
"isRequired": {
|
|
318
|
+
"alias": "isRequired";
|
|
525
319
|
"required": false;
|
|
526
320
|
"isSignal": true;
|
|
527
321
|
};
|
|
528
|
-
"
|
|
529
|
-
"alias": "
|
|
322
|
+
"isDisabled": {
|
|
323
|
+
"alias": "isDisabled";
|
|
530
324
|
"required": false;
|
|
531
325
|
"isSignal": true;
|
|
532
326
|
};
|
|
533
|
-
"
|
|
534
|
-
"alias": "
|
|
327
|
+
"width": {
|
|
328
|
+
"alias": "width";
|
|
535
329
|
"required": false;
|
|
536
330
|
"isSignal": true;
|
|
537
331
|
};
|
|
538
|
-
|
|
539
|
-
|
|
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";
|
|
540
358
|
"required": false;
|
|
541
359
|
"isSignal": true;
|
|
542
360
|
};
|
|
543
|
-
"
|
|
544
|
-
"alias": "
|
|
361
|
+
"selectedItems": {
|
|
362
|
+
"alias": "selectedItems";
|
|
545
363
|
"required": false;
|
|
546
364
|
"isSignal": true;
|
|
547
365
|
};
|
|
548
|
-
"
|
|
549
|
-
"alias": "
|
|
366
|
+
"title": {
|
|
367
|
+
"alias": "title";
|
|
550
368
|
"required": false;
|
|
551
369
|
"isSignal": true;
|
|
552
370
|
};
|
|
553
371
|
}, {
|
|
554
|
-
"
|
|
555
|
-
"clickedEditBtn": "clickedEditBtn";
|
|
556
|
-
"clickedRemoveBtn": "clickedRemoveBtn";
|
|
557
|
-
"clickedCopyBtn": "clickedCopyBtn";
|
|
558
|
-
"clickedExcelBtn": "clickedExcelBtn";
|
|
559
|
-
"clickedCsvBtn": "clickedCsvBtn";
|
|
560
|
-
"clickedPdfBtn": "clickedPdfBtn";
|
|
561
|
-
"clickedPrintBtn": "clickedPrintBtn";
|
|
562
|
-
"clickedRefreshBtn": "clickedRefreshBtn";
|
|
563
|
-
"clickedClearBtn": "clickedClearBtn";
|
|
372
|
+
"selectedItemsChange": "selectedItemsChange";
|
|
564
373
|
}, never, never, true, never>;
|
|
565
374
|
}
|
|
566
|
-
export
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
export type
|
|
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' | '';
|
|
570
379
|
/** @deprecated */
|
|
571
|
-
export
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
export
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
}
|
|
582
|
-
export declare
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
}
|
|
586
|
-
export declare
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
export
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
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[];
|
|
600
428
|
}
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
getData(key: string): string | null;
|
|
605
|
-
removeData(key: string): void;
|
|
606
|
-
clearData(): void;
|
|
607
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<LocalStorageService, never>;
|
|
608
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
609
|
-
}
|
|
610
|
-
export declare class SecureImageService {
|
|
611
|
-
private readonly http;
|
|
612
|
-
private readonly sanitizer;
|
|
613
|
-
/**
|
|
614
|
-
* Загружает защищенное изображение и возвращает SafeUrl
|
|
615
|
-
*/
|
|
616
|
-
getSecureUrl(relativeUrl: string | null | undefined, apiKey?: string): Observable<SafeUrl | string>;
|
|
617
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SecureImageService, never>;
|
|
618
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
619
|
-
}
|
|
620
|
-
export declare class ExportService {
|
|
621
|
-
exportCSV(data: any, filename: string | undefined, arrHeader: any, newHeaders: any): void;
|
|
622
|
-
convertToCSV(objArray: any, headerList: any, newHeaders: any): string;
|
|
623
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ExportService, never>;
|
|
624
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
625
|
-
}
|
|
626
|
-
export interface SseUser {
|
|
627
|
-
id: string;
|
|
429
|
+
/** Настройки колонки. */
|
|
430
|
+
export interface IColumnOptions<T> {
|
|
431
|
+
/** Имя. */
|
|
628
432
|
name: string;
|
|
629
|
-
}
|
|
630
|
-
export interface Topic {
|
|
631
|
-
getTopic(baseUrl: string, user: SseUser): string;
|
|
632
|
-
}
|
|
633
|
-
export declare class SseService<T> {
|
|
634
|
-
private zone;
|
|
635
|
-
private eventSource;
|
|
636
|
-
private isConnected;
|
|
637
|
-
constructor();
|
|
638
|
-
createSseEventSource(baseUrl: string, user: SseUser, topic: Topic): Observable<T>;
|
|
639
|
-
private reconnectOnError;
|
|
640
|
-
closeSseEventSource(): void;
|
|
641
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SseService<any>, never>;
|
|
642
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
643
|
-
}
|
|
644
|
-
export declare abstract class BaseEditClass<T> implements OnDestroy {
|
|
645
433
|
/** Заголовок. */
|
|
646
|
-
|
|
647
|
-
/** Данные диалога. */
|
|
648
|
-
protected abstract dialogData?: IEditDialogData<T>;
|
|
649
|
-
/** Форма. */
|
|
650
|
-
abstract form?: FormGroup<any>;
|
|
651
|
-
/** Ссылка на диалог. */
|
|
652
|
-
protected abstract dialogRef?: MatDialogRef<any, IEditDialogData<T> | null>;
|
|
653
|
-
/** Сервис индикатор загрузки. */
|
|
654
|
-
protected loaderService: LoaderService;
|
|
655
|
-
/** Сервис уведомлений. */
|
|
656
|
-
protected notificationService: NotificationService;
|
|
657
|
-
/** Сервис ролей. */
|
|
658
|
-
protected roleService: RoleService;
|
|
659
|
-
/** Объект для отписки (вызывается метод unsubscribe при уничтожении компонента). */
|
|
660
|
-
protected subscription: Subscription;
|
|
661
|
-
ngOnDestroy(): void;
|
|
662
|
-
onNoClick(event: MouseEvent): void;
|
|
663
|
-
onSubmit(): void;
|
|
664
|
-
formActionIsAdd(): boolean;
|
|
665
|
-
formActionIsEdit(): boolean;
|
|
666
|
-
/**
|
|
667
|
-
* Определяет видимость элемента на основе ЧЕРНОГО списка ролей.
|
|
668
|
-
* По умолчанию элемент ВИДИМ. Скрывается (возвращает false), если у пользователя
|
|
669
|
-
* есть запрещенная роль или если передан маркер скрытия фичи HIDE_ROLE_MARKER.
|
|
670
|
-
*/
|
|
671
|
-
protected isVisibleForForbiddenRoles(forbiddenRoles: string[]): boolean;
|
|
434
|
+
title: string;
|
|
672
435
|
/**
|
|
673
|
-
*
|
|
674
|
-
*
|
|
675
|
-
*
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
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;
|
|
684
470
|
}
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
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[];
|
|
690
492
|
}
|
|
691
|
-
export declare class
|
|
692
|
-
/**
|
|
693
|
-
|
|
694
|
-
/**
|
|
695
|
-
|
|
696
|
-
/**
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
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[];
|
|
700
555
|
subscription: Subscription;
|
|
701
556
|
constructor();
|
|
557
|
+
ngOnInit(): void;
|
|
702
558
|
ngOnDestroy(): void;
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
}
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
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>;
|
|
746
619
|
}
|
|
747
|
-
export declare class
|
|
748
|
-
protected dialog: MatDialog;
|
|
749
|
-
/** Данные для табличного компонента. */
|
|
750
|
-
data: import("@angular/core").WritableSignal<T[]>;
|
|
751
|
-
/** Количество записей по фильтру. */
|
|
752
|
-
length: import("@angular/core").WritableSignal<number>;
|
|
753
|
-
entityService: any;
|
|
754
|
-
entityType: any;
|
|
755
|
-
entityEditComponent: any;
|
|
756
|
-
extraData?: any;
|
|
757
|
-
defaultPageIndex: number;
|
|
758
|
-
defaultPageSize: number;
|
|
759
|
-
dialogEditWidth: string;
|
|
760
|
-
dialogRemoveWidth: string;
|
|
761
|
-
routeAddress: string;
|
|
762
|
-
/** Сообщение при удалении записи(й). */
|
|
763
|
-
removalMessage: string;
|
|
764
|
-
/** Заголовок страницы. */
|
|
765
|
-
pageTitle: string;
|
|
620
|
+
export declare class BaseToolbarComponent {
|
|
766
621
|
/**
|
|
767
|
-
*
|
|
622
|
+
* Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
|
|
768
623
|
*/
|
|
769
|
-
|
|
624
|
+
rolesNewBtn: import("@angular/core").InputSignal<string[]>;
|
|
770
625
|
/**
|
|
771
|
-
*
|
|
626
|
+
* Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
|
|
772
627
|
*/
|
|
773
|
-
|
|
628
|
+
rolesEditBtn: import("@angular/core").InputSignal<string[]>;
|
|
774
629
|
/**
|
|
775
|
-
*
|
|
630
|
+
* Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
|
|
776
631
|
*/
|
|
777
|
-
|
|
632
|
+
rolesRemoveBtn: import("@angular/core").InputSignal<string[]>;
|
|
778
633
|
/**
|
|
779
|
-
*
|
|
634
|
+
* Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
|
|
780
635
|
*/
|
|
781
|
-
|
|
636
|
+
rolesCopyBtn: import("@angular/core").InputSignal<string[]>;
|
|
782
637
|
/**
|
|
783
|
-
*
|
|
638
|
+
* Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
|
|
784
639
|
*/
|
|
785
|
-
|
|
640
|
+
rolesExcelBtn: import("@angular/core").InputSignal<string[]>;
|
|
786
641
|
/**
|
|
787
|
-
*
|
|
788
|
-
*/
|
|
789
|
-
afterSaveOnEditEvent: fnCbType<T>;
|
|
790
|
-
editorRoles: string[];
|
|
791
|
-
executeRoles: string[];
|
|
792
|
-
/** Список ролей, для которых скрыть элемент. */
|
|
793
|
-
hideRoles: string[];
|
|
794
|
-
/** Загрузка данных. */
|
|
795
|
-
loadData$: Subject<null>;
|
|
796
|
-
/** Загрузка количества записей. */
|
|
797
|
-
loadLength$: Subject<null>;
|
|
798
|
-
/** Очистка фильтра. */
|
|
799
|
-
clearFilter$: Subject<null>;
|
|
800
|
-
/** Очистка фильтра (для очистки присвоить пустой объект '{}'). */
|
|
801
|
-
clearFilter: any;
|
|
802
|
-
/** Разрешен выбор нескольких строк. */
|
|
803
|
-
allowMultiSelect: boolean;
|
|
804
|
-
/** Выбранные строки в таблице. */
|
|
805
|
-
selected: T[];
|
|
806
|
-
/** Состояние сортировки, пагинации. */
|
|
807
|
-
tableState: TableState;
|
|
808
|
-
/** Доступность кнопки "Изменить". */
|
|
809
|
-
editBtnDisabled: boolean;
|
|
810
|
-
/** Доступность кнопки "Удалить". */
|
|
811
|
-
removeBtnDisabled: boolean;
|
|
812
|
-
/** Разрешено ли отправлять событие rowDoubleClicked при двойном щелчке мышью. */
|
|
813
|
-
dblClickedEventEnable: boolean;
|
|
814
|
-
opt: IContextMenuOptions<T>[];
|
|
815
|
-
protected router: Router;
|
|
816
|
-
/** Сервис для работы с LocalStorage. */
|
|
817
|
-
protected localStorageService: LocalStorageService;
|
|
818
|
-
/** Сервис индикатор загрузки. */
|
|
819
|
-
protected loaderService: LoaderService;
|
|
820
|
-
/** Сервис уведомлений. */
|
|
821
|
-
protected notificationService: NotificationService;
|
|
822
|
-
/** Объект для отписки (вызывается метод unsubscribe при уничтожении компонента). */
|
|
823
|
-
subscription: Subscription;
|
|
824
|
-
constructor();
|
|
825
|
-
ngOnDestroy(): void;
|
|
826
|
-
subscribeToLoadData(fnGetData: fnGetDataType<T>, fnGetCount: fnGetCountType<T>, fnMapEntity?: fnMapEntityType<T>): void;
|
|
827
|
-
onPageChange(pageState: PageState): void;
|
|
828
|
-
onSortChange(sortState: SortState): void;
|
|
829
|
-
/** Событие изменение выбранных записей. */
|
|
830
|
-
onSelectionChange(selected: T[]): void;
|
|
831
|
-
/** Обновление доступности кнопки "Изменить" - вызывается при изменении выбранных записей. */
|
|
832
|
-
editBtnDisabledUpdate(selected: T[]): void;
|
|
833
|
-
/** Обновление доступности кнопки "Удалить" - вызывается при изменении выбранных записей. */
|
|
834
|
-
removeBtnDisabledUpdate(selected: T[]): void;
|
|
835
|
-
/** Событие двойной клик. */
|
|
836
|
-
onRowDoubleClicked(): void;
|
|
837
|
-
/** Событие создание. */
|
|
838
|
-
newEvent(): void;
|
|
839
|
-
/** Событие редактирование. */
|
|
840
|
-
editEvent(): void;
|
|
841
|
-
/** Событие удаление. */
|
|
842
|
-
removeEvent(): void;
|
|
843
|
-
/** Событие обновления данных. */
|
|
844
|
-
refreshEvent(): void;
|
|
845
|
-
/** Событие очистки фильтра. */
|
|
846
|
-
clearEvent(): void;
|
|
847
|
-
/** Изменение сообщения об удалении. */
|
|
848
|
-
onRemovalMessageChange(message: string): void;
|
|
849
|
-
/** Изменение заголовка страницы. */
|
|
850
|
-
onPageTitleChange(title: string): void;
|
|
851
|
-
openDialog(entityComponent: any, data: IEditDialogData<T>, dialog: any): any;
|
|
852
|
-
openDialogRemoveConfirm(removalMessage: string): MatDialogRef<DialogComponent> | undefined;
|
|
853
|
-
protected onMiddleButton(baseUrl: string, queryParamName?: string, queryParamValue?: string): ($event: MouseEvent, item: T | undefined, contextMenu: MatMenuTrigger) => void;
|
|
854
|
-
protected onActionMiddleButton(baseUrl: string, queryParamName?: string, queryParamValue?: string): ($event: MouseEvent, item: T | undefined) => void;
|
|
855
|
-
protected dateToString(date: string | number | Date): string | null;
|
|
856
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<BasePageClass<any>, never>;
|
|
857
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<BasePageClass<any>, never, never, {}, {}, never, never, true, never>;
|
|
858
|
-
}
|
|
859
|
-
export declare abstract class BaseServiceClass<T extends BaseClass> {
|
|
860
|
-
abstract baseRoute: string;
|
|
861
|
-
abstract entityType: any;
|
|
862
|
-
protected countRoute: string;
|
|
863
|
-
protected pageIndexParam: string;
|
|
864
|
-
protected pageSizeParam: string;
|
|
865
|
-
protected sortColumnParam: string;
|
|
866
|
-
protected directionParam: string;
|
|
867
|
-
protected apiContextName: string;
|
|
868
|
-
protected http: HttpClient;
|
|
869
|
-
getObjects(): Observable<T[]>;
|
|
870
|
-
getObject(id: number): any;
|
|
871
|
-
getCount(): Observable<number>;
|
|
872
|
-
getObjectsByPaging(pageIndex: number, pageSize: number, sortColumn: string, direction: string): Observable<T[]>;
|
|
873
|
-
newObject(entity: T): any;
|
|
874
|
-
editObject(entity: T): any;
|
|
875
|
-
deleteObject(entity: T): any;
|
|
876
|
-
protected getParams(pageIndex: number, pageSize: number, sortColumn: string, direction: string): HttpParams;
|
|
877
|
-
protected getHttpContext(): {
|
|
878
|
-
context?: HttpContext;
|
|
879
|
-
};
|
|
880
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<BaseServiceClass<any>, never>;
|
|
881
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
882
|
-
}
|
|
883
|
-
export declare abstract class BaseSignalEditClass<TDomain extends Record<string, any>, TForm extends Record<string, any> = TDomain> implements OnDestroy {
|
|
884
|
-
/** Заголовок. */
|
|
885
|
-
abstract title: string;
|
|
886
|
-
/** Данные диалога. */
|
|
887
|
-
protected abstract dialogData: WritableSignal<IEditDialogData<TDomain>>;
|
|
888
|
-
protected formAction: import("@angular/core").Signal<Action>;
|
|
889
|
-
protected formActionIsAdd: import("@angular/core").Signal<boolean>;
|
|
890
|
-
protected formActionIsEdit: import("@angular/core").Signal<boolean>;
|
|
891
|
-
protected domainModel: import("@angular/core").Signal<TDomain>;
|
|
892
|
-
protected formModel: WritableSignal<TForm>;
|
|
893
|
-
/** Форма. */
|
|
894
|
-
protected abstract form: FieldTree<TForm>;
|
|
895
|
-
/** Ссылка на диалог. */
|
|
896
|
-
protected abstract dialogRef?: MatDialogRef<any, IEditDialogData<TDomain> | null>;
|
|
897
|
-
/** Сервис индикатор загрузки. */
|
|
898
|
-
protected loaderService: LoaderService;
|
|
899
|
-
/** Сервис уведомлений. */
|
|
900
|
-
protected notificationService: NotificationService;
|
|
901
|
-
/** Сервис ролей. */
|
|
902
|
-
protected roleService: RoleService;
|
|
903
|
-
/** Объект для отписки (вызывается метод unsubscribe при уничтожении компонента).
|
|
904
|
-
* @deprecated
|
|
642
|
+
* Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
|
|
905
643
|
*/
|
|
906
|
-
|
|
644
|
+
rolesCsvBtn: import("@angular/core").InputSignal<string[]>;
|
|
907
645
|
/**
|
|
908
|
-
*
|
|
909
|
-
* Реализация по умолчанию делает поверхностную копию. Наследник может её переопределить.
|
|
646
|
+
* Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
|
|
910
647
|
*/
|
|
911
|
-
|
|
648
|
+
rolesPdfBtn: import("@angular/core").InputSignal<string[]>;
|
|
912
649
|
/**
|
|
913
|
-
*
|
|
914
|
-
* Реализация по умолчанию объединяет старый домен и новые поля формы.
|
|
650
|
+
* Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
|
|
915
651
|
*/
|
|
916
|
-
|
|
917
|
-
ngOnDestroy(): void;
|
|
918
|
-
onNoClick(event: MouseEvent): void;
|
|
919
|
-
onSubmit(): void;
|
|
652
|
+
rolesPrintBtn: import("@angular/core").InputSignal<string[]>;
|
|
920
653
|
/**
|
|
921
|
-
*
|
|
922
|
-
* По умолчанию элемент ВИДИМ. Скрывается (возвращает false), если у пользователя
|
|
923
|
-
* есть запрещенная роль или если передан маркер скрытия фичи HIDE_ROLE_MARKER.
|
|
654
|
+
* Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
|
|
924
655
|
*/
|
|
925
|
-
|
|
656
|
+
rolesRefreshBtn: import("@angular/core").InputSignal<string[]>;
|
|
926
657
|
/**
|
|
927
|
-
*
|
|
928
|
-
* По умолчанию элемент СКРЫТ. Показывается (возвращает true), только если у пользователя
|
|
929
|
-
* есть хотя бы одна из разрешенных ролей. Администратор (ADMIN) всегда видит элемент.
|
|
658
|
+
* Список Ролей, для которых кнопка видна. Если в списке есть роль 'HIDE', то скрывается.
|
|
930
659
|
*/
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
* });
|
|
976
|
-
*
|
|
977
|
-
* */
|
|
978
|
-
protected internalFilterSignal: import("@angular/core").WritableSignal<F>;
|
|
979
|
-
protected abstract DEFAULT_FILTER: F;
|
|
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>;
|
|
980
704
|
/**
|
|
981
|
-
*
|
|
982
|
-
*
|
|
705
|
+
* Внутренний метод для вычисления видимости.
|
|
706
|
+
* Не вызывается напрямую из шаблона, а служит хелпером для декларативных computed.
|
|
707
|
+
* Проверяет, заблокирован ли доступ к элементу на основе списка ограничений.
|
|
708
|
+
* Возвращает true, если у пользователя есть запрещенная роль или передан маркер 'HIDE'.
|
|
709
|
+
* Администратор (ADMIN) всегда игнорирует любые запреты и маркер 'HIDE'.
|
|
983
710
|
*/
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
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";
|
|
993
726
|
"required": false;
|
|
994
727
|
"isSignal": true;
|
|
995
728
|
};
|
|
996
|
-
"
|
|
997
|
-
"alias": "
|
|
729
|
+
"rolesEditBtn": {
|
|
730
|
+
"alias": "rolesEditBtn";
|
|
998
731
|
"required": false;
|
|
999
732
|
"isSignal": true;
|
|
1000
733
|
};
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
}, never, never, true, never>;
|
|
1004
|
-
}
|
|
1005
|
-
export declare abstract class BaseSignalPageClass<T extends BaseSchemaClass, F extends SafeFilterState = Record<string, never>> implements OnDestroy {
|
|
1006
|
-
protected dialog: MatDialog;
|
|
1007
|
-
protected entityService: any;
|
|
1008
|
-
protected entityEditComponent?: any;
|
|
1009
|
-
protected extraData?: any;
|
|
1010
|
-
protected abstract readonly schema: z.ZodType<T>;
|
|
1011
|
-
protected readonly filterSchema?: z.ZodType<F>;
|
|
1012
|
-
protected readonly defaultFilters?: F;
|
|
1013
|
-
private get storagePrefix();
|
|
1014
|
-
defaultPageIndex: number;
|
|
1015
|
-
defaultPageSize: number;
|
|
1016
|
-
dialogEditWidth: string;
|
|
1017
|
-
dialogRemoveWidth: string;
|
|
1018
|
-
routeAddress: string;
|
|
1019
|
-
/** Сообщение при удалении записи(й). */
|
|
1020
|
-
removalMessage: string;
|
|
1021
|
-
/** Заголовок страницы. */
|
|
1022
|
-
pageTitle: string;
|
|
1023
|
-
/**
|
|
1024
|
-
* Создание записи: вызывается перед открытием диалога.
|
|
1025
|
-
*/
|
|
1026
|
-
beforeOpenDialogOnNewEvent: fnType<T>;
|
|
1027
|
-
/**
|
|
1028
|
-
* Редактирование записи: вызывается перед открытием диалога.
|
|
1029
|
-
*/
|
|
1030
|
-
beforeOpenDialogOnEditEvent: fnType<T>;
|
|
1031
|
-
/**
|
|
1032
|
-
* Создание записи: вызывается перед сохранением объекта.
|
|
1033
|
-
*/
|
|
1034
|
-
beforeSaveOnNewEvent: fnType<T>;
|
|
1035
|
-
/**
|
|
1036
|
-
* Редактирование записи: вызывается перед сохранением объекта.
|
|
1037
|
-
*/
|
|
1038
|
-
beforeSaveOnEditEvent: fnType<T>;
|
|
1039
|
-
/**
|
|
1040
|
-
* Создание записи: вызывается после сохранения объекта.
|
|
1041
|
-
*/
|
|
1042
|
-
afterSaveOnNewEvent: fnCbType<T>;
|
|
1043
|
-
/**
|
|
1044
|
-
* Редактирование записи: вызывается после сохранения объекта.
|
|
1045
|
-
*/
|
|
1046
|
-
afterSaveOnEditEvent: fnCbType<T>;
|
|
1047
|
-
editorRoles: string[];
|
|
1048
|
-
executeRoles: string[];
|
|
1049
|
-
/** Список ролей, для которых скрыть элемент. */
|
|
1050
|
-
hideRoles: string[];
|
|
1051
|
-
/** Разрешен выбор нескольких строк. */
|
|
1052
|
-
allowMultiSelect: boolean;
|
|
1053
|
-
/** Выбранные строки в таблице. */
|
|
1054
|
-
selected: T[];
|
|
1055
|
-
protected abstract fnGetData: fnGetDataResType<T>;
|
|
1056
|
-
protected abstract fnGetCount: fnGetCountResType<T>;
|
|
1057
|
-
protected abstract fnMapEntity: fnMapEntityType<T> | undefined;
|
|
1058
|
-
protected dataResource: import("@angular/core").Signal<import("@angular/common/http").HttpResourceRef<T[]>>;
|
|
1059
|
-
protected countResource: import("@angular/core").Signal<import("@angular/common/http").HttpResourceRef<number>>;
|
|
1060
|
-
/** Данные для табличного компонента. */
|
|
1061
|
-
data: import("@angular/core").Signal<T[]>;
|
|
1062
|
-
/** Количество записей по фильтру. */
|
|
1063
|
-
length: import("@angular/core").Signal<number>;
|
|
1064
|
-
/** Глобальный индикатор загрузки (для спиннера на странице) */
|
|
1065
|
-
isLoading: import("@angular/core").Signal<boolean>;
|
|
1066
|
-
/** Доступность кнопки "Изменить". */
|
|
1067
|
-
editBtnDisabled: boolean;
|
|
1068
|
-
/** Доступность кнопки "Удалить". */
|
|
1069
|
-
removeBtnDisabled: boolean;
|
|
1070
|
-
/** Разрешено ли отправлять событие rowDoubleClicked при двойном щелчке мышью. */
|
|
1071
|
-
dblClickedEventEnable: boolean;
|
|
1072
|
-
opt: IContextMenuOptions<T>[];
|
|
1073
|
-
protected router: Router;
|
|
1074
|
-
/** Сервис для работы с LocalStorage. */
|
|
1075
|
-
protected localStorageService: LocalStorageService;
|
|
1076
|
-
/** Сервис индикатор загрузки. */
|
|
1077
|
-
protected loaderService: LoaderService;
|
|
1078
|
-
/** Сервис уведомлений. */
|
|
1079
|
-
protected notificationService: import("@kuzntsv/uikit").INotificationService;
|
|
1080
|
-
/** Объект для отписки (вызывается метод unsubscribe при уничтожении компонента). */
|
|
1081
|
-
subscription: Subscription;
|
|
1082
|
-
private getInitialFilters;
|
|
1083
|
-
/** Разово прочитать сохраненные значения из localStorage при старте страницы,
|
|
1084
|
-
* провалидировать их через Zod-схему и записать в сигнал filters */
|
|
1085
|
-
protected initFilters(): void;
|
|
1086
|
-
clearEvent(): void;
|
|
1087
|
-
private getInitialFilters2;
|
|
1088
|
-
filters: import("@angular/core").WritableSignal<F>;
|
|
1089
|
-
/** Загрузка данных. */
|
|
1090
|
-
/** Загрузка количества записей. */
|
|
1091
|
-
/** Очистка фильтра. (для очистки присвоить пустой объект '{}'). */
|
|
1092
|
-
clearFilters: import("@angular/core").WritableSignal<any>;
|
|
1093
|
-
/** Состояние сортировки, пагинации. */
|
|
1094
|
-
tableState: import("@angular/core").WritableSignal<{
|
|
1095
|
-
sortActive: string;
|
|
1096
|
-
sortDirection: SortDirection;
|
|
1097
|
-
pageIndex: number;
|
|
1098
|
-
pageSize: number;
|
|
1099
|
-
}>;
|
|
1100
|
-
constructor();
|
|
1101
|
-
ngOnDestroy(): void;
|
|
1102
|
-
/** Установка значение фильтра.
|
|
1103
|
-
* @param key - имя фильтра.
|
|
1104
|
-
* @param value - значение.
|
|
1105
|
-
*/
|
|
1106
|
-
setFilter<K extends keyof F>(key: K, value: F[K]): void;
|
|
1107
|
-
onPageChange(pageState: PageState): void;
|
|
1108
|
-
onSortChange(sortState: SortState): void;
|
|
1109
|
-
/** Событие изменение выбранных записей. */
|
|
1110
|
-
onSelectionChange(selected: T[]): void;
|
|
1111
|
-
/** Обновление доступности кнопки "Изменить" - вызывается при изменении выбранных записей. */
|
|
1112
|
-
editBtnDisabledUpdate(selected: T[]): void;
|
|
1113
|
-
/** Обновление доступности кнопки "Удалить" - вызывается при изменении выбранных записей. */
|
|
1114
|
-
removeBtnDisabledUpdate(selected: T[]): void;
|
|
1115
|
-
/** Событие двойной клик. */
|
|
1116
|
-
onRowDoubleClicked(): void;
|
|
1117
|
-
/** Событие создание. */
|
|
1118
|
-
newEvent(): void;
|
|
1119
|
-
/** Событие редактирование. */
|
|
1120
|
-
editEvent(): void;
|
|
1121
|
-
/** Событие удаление. */
|
|
1122
|
-
removeEvent(): void;
|
|
1123
|
-
/** Событие обновления данных. */
|
|
1124
|
-
refreshEvent(): void;
|
|
1125
|
-
/** Событие очистки фильтра. */
|
|
1126
|
-
/** Изменение сообщения об удалении. */
|
|
1127
|
-
onRemovalMessageChange(message: string): void;
|
|
1128
|
-
/** Изменение заголовка страницы. */
|
|
1129
|
-
onPageTitleChange(title: string): void;
|
|
1130
|
-
openDialog(entityComponent: any, data: IEditDialogData<T>, dialog: any): any;
|
|
1131
|
-
openDialogRemoveConfirm(removalMessage: string): MatDialogRef<DialogComponent> | undefined;
|
|
1132
|
-
protected onMiddleButton(baseUrl: string, queryParamName?: string, queryParamValue?: string): ($event: MouseEvent, item: T | undefined, contextMenu: MatMenuTrigger) => void;
|
|
1133
|
-
protected onActionMiddleButton(baseUrl: string, queryParamName?: string, queryParamValue?: string): ($event: MouseEvent, item: T | undefined) => void;
|
|
1134
|
-
protected dateToString(date: string | number | Date): string | null;
|
|
1135
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<BaseSignalPageClass<any, any>, never>;
|
|
1136
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<BaseSignalPageClass<any, any>, never, never, {}, {}, never, never, true, never>;
|
|
1137
|
-
}
|
|
1138
|
-
export interface ChipItem {
|
|
1139
|
-
value: string;
|
|
1140
|
-
viewValue: string;
|
|
1141
|
-
}
|
|
1142
|
-
export declare class BaseMatChipComponent {
|
|
1143
|
-
items: import("@angular/core").InputSignal<ChipItem[]>;
|
|
1144
|
-
selectedItemsInput: import("@angular/core").InputSignal<string[]>;
|
|
1145
|
-
title: import("@angular/core").InputSignal<string>;
|
|
1146
|
-
selectedItemsChange: import("@angular/core").OutputEmitterRef<string[]>;
|
|
1147
|
-
readonly input: import("@angular/core").Signal<ElementRef<HTMLInputElement> | undefined>;
|
|
1148
|
-
separatorKeysCodes: number[];
|
|
1149
|
-
inputCtrl: FormControl<any>;
|
|
1150
|
-
filteredItems$?: Observable<ChipItem[]>;
|
|
1151
|
-
selectedItems: ChipItem[];
|
|
1152
|
-
constructor();
|
|
1153
|
-
remove(value: string): void;
|
|
1154
|
-
selected(event: MatAutocompleteSelectedEvent): void;
|
|
1155
|
-
private _filter;
|
|
1156
|
-
onCloseClick($event: MouseEvent): void;
|
|
1157
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<BaseMatChipComponent, never>;
|
|
1158
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<BaseMatChipComponent, "ngx-uik-chip-input-autocomplete", never, {
|
|
1159
|
-
"items": {
|
|
1160
|
-
"alias": "items";
|
|
734
|
+
"rolesRemoveBtn": {
|
|
735
|
+
"alias": "rolesRemoveBtn";
|
|
1161
736
|
"required": false;
|
|
1162
737
|
"isSignal": true;
|
|
1163
738
|
};
|
|
1164
|
-
"
|
|
1165
|
-
"alias": "
|
|
739
|
+
"rolesCopyBtn": {
|
|
740
|
+
"alias": "rolesCopyBtn";
|
|
1166
741
|
"required": false;
|
|
1167
742
|
"isSignal": true;
|
|
1168
743
|
};
|
|
1169
|
-
"
|
|
1170
|
-
"alias": "
|
|
744
|
+
"rolesExcelBtn": {
|
|
745
|
+
"alias": "rolesExcelBtn";
|
|
1171
746
|
"required": false;
|
|
1172
747
|
"isSignal": true;
|
|
1173
748
|
};
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
export declare class CustomDateAdapter extends NativeDateAdapter {
|
|
1179
|
-
parse(value: any): Date | null;
|
|
1180
|
-
format(date: Date, displayFormat: Object): string;
|
|
1181
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<CustomDateAdapter, never>;
|
|
1182
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
1183
|
-
}
|
|
1184
|
-
export declare const MY_NATIVE_FORMATS: {
|
|
1185
|
-
parse: {
|
|
1186
|
-
dateInput: string;
|
|
1187
|
-
};
|
|
1188
|
-
display: {
|
|
1189
|
-
dateInput: string;
|
|
1190
|
-
monthYearLabel: {
|
|
1191
|
-
year: string;
|
|
1192
|
-
month: string;
|
|
749
|
+
"rolesCsvBtn": {
|
|
750
|
+
"alias": "rolesCsvBtn";
|
|
751
|
+
"required": false;
|
|
752
|
+
"isSignal": true;
|
|
1193
753
|
};
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
754
|
+
"rolesPdfBtn": {
|
|
755
|
+
"alias": "rolesPdfBtn";
|
|
756
|
+
"required": false;
|
|
757
|
+
"isSignal": true;
|
|
1198
758
|
};
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
759
|
+
"rolesPrintBtn": {
|
|
760
|
+
"alias": "rolesPrintBtn";
|
|
761
|
+
"required": false;
|
|
762
|
+
"isSignal": true;
|
|
1202
763
|
};
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
export interface DateRange {
|
|
1206
|
-
begin: string;
|
|
1207
|
-
end: string;
|
|
1208
|
-
}
|
|
1209
|
-
export declare function dateFormat(date: Date | null | undefined): string;
|
|
1210
|
-
export declare class DateRangeInputComponent implements OnInit, OnDestroy {
|
|
1211
|
-
label: import("@angular/core").InputSignal<string>;
|
|
1212
|
-
dateRange: import("@angular/core").InputSignal<DateRange>;
|
|
1213
|
-
minDate: import("@angular/core").InputSignal<Date>;
|
|
1214
|
-
clearInput: import("@angular/core").InputSignal<any>;
|
|
1215
|
-
required: import("@angular/core").InputSignal<boolean>;
|
|
1216
|
-
dateRangeChange: import("@angular/core").OutputEmitterRef<DateRange>;
|
|
1217
|
-
form: FormGroup<{
|
|
1218
|
-
begin: FormControl<any>;
|
|
1219
|
-
end: FormControl<any>;
|
|
1220
|
-
}>;
|
|
1221
|
-
subscription: Subscription;
|
|
1222
|
-
constructor();
|
|
1223
|
-
ngOnInit(): void;
|
|
1224
|
-
ngOnDestroy(): void;
|
|
1225
|
-
private rangeToDateDateRange;
|
|
1226
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DateRangeInputComponent, never>;
|
|
1227
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DateRangeInputComponent, "ngx-uik-date-range-input", never, {
|
|
1228
|
-
"label": {
|
|
1229
|
-
"alias": "label";
|
|
764
|
+
"rolesRefreshBtn": {
|
|
765
|
+
"alias": "rolesRefreshBtn";
|
|
1230
766
|
"required": false;
|
|
1231
767
|
"isSignal": true;
|
|
1232
768
|
};
|
|
1233
|
-
"
|
|
1234
|
-
"alias": "
|
|
769
|
+
"rolesClearBtn": {
|
|
770
|
+
"alias": "rolesClearBtn";
|
|
1235
771
|
"required": false;
|
|
1236
772
|
"isSignal": true;
|
|
1237
773
|
};
|
|
1238
|
-
"
|
|
1239
|
-
"alias": "
|
|
774
|
+
"newBtnDisabled": {
|
|
775
|
+
"alias": "newBtnDisabled";
|
|
1240
776
|
"required": false;
|
|
1241
777
|
"isSignal": true;
|
|
1242
778
|
};
|
|
1243
|
-
"
|
|
1244
|
-
"alias": "
|
|
779
|
+
"editBtnDisabled": {
|
|
780
|
+
"alias": "editBtnDisabled";
|
|
1245
781
|
"required": false;
|
|
1246
782
|
"isSignal": true;
|
|
1247
783
|
};
|
|
1248
|
-
"
|
|
1249
|
-
"alias": "
|
|
784
|
+
"removeBtnDisabled": {
|
|
785
|
+
"alias": "removeBtnDisabled";
|
|
1250
786
|
"required": false;
|
|
1251
787
|
"isSignal": true;
|
|
1252
788
|
};
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
}, never, never, true, never>;
|
|
1256
|
-
}
|
|
1257
|
-
export declare class EmptyComponent {
|
|
1258
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<EmptyComponent, never>;
|
|
1259
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<EmptyComponent, "app-empty-route-guard-holder", never, {}, {}, never, never, true, never>;
|
|
1260
|
-
}
|
|
1261
|
-
export declare class NavBarComponent extends BaseNavBarMenuClass {
|
|
1262
|
-
/** Видимость панели, когда loggedIn === false. */
|
|
1263
|
-
visibleOnLogout: import("@angular/core").InputSignal<boolean>;
|
|
1264
|
-
/** Видимость аватара. */
|
|
1265
|
-
visibleAvatar: import("@angular/core").InputSignal<boolean>;
|
|
1266
|
-
/** Видимость кнопки "Выйти". */
|
|
1267
|
-
visibleLogoutBtn: import("@angular/core").InputSignal<boolean>;
|
|
1268
|
-
/** Признак, что пользователь авторизован. */
|
|
1269
|
-
loggedIn: import("@angular/core").InputSignal<boolean>;
|
|
1270
|
-
/** ФИО пользователя. */
|
|
1271
|
-
fioUser: import("@angular/core").InputSignal<string>;
|
|
1272
|
-
/** Всплывающая подсказка о пользователе. */
|
|
1273
|
-
userTooltip: import("@angular/core").InputSignal<string>;
|
|
1274
|
-
/** URL аватара */
|
|
1275
|
-
avatarURL: import("@angular/core").InputSignal<string | SafeUrl>;
|
|
1276
|
-
/** Нажата кнопка "Выйти". */
|
|
1277
|
-
logout: import("@angular/core").OutputEmitterRef<string>;
|
|
1278
|
-
private readonly dialog;
|
|
1279
|
-
constructor();
|
|
1280
|
-
onLogout(): void;
|
|
1281
|
-
openDialog(): void;
|
|
1282
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<NavBarComponent, never>;
|
|
1283
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<NavBarComponent, "ngx-uik-navbar", never, {
|
|
1284
|
-
"visibleOnLogout": {
|
|
1285
|
-
"alias": "visibleOnLogout";
|
|
789
|
+
"copyBtnDisabled": {
|
|
790
|
+
"alias": "copyBtnDisabled";
|
|
1286
791
|
"required": false;
|
|
1287
792
|
"isSignal": true;
|
|
1288
793
|
};
|
|
1289
|
-
"
|
|
1290
|
-
"alias": "
|
|
794
|
+
"excelBtnDisabled": {
|
|
795
|
+
"alias": "excelBtnDisabled";
|
|
1291
796
|
"required": false;
|
|
1292
797
|
"isSignal": true;
|
|
1293
798
|
};
|
|
1294
|
-
"
|
|
1295
|
-
"alias": "
|
|
799
|
+
"csvBtnDisabled": {
|
|
800
|
+
"alias": "csvBtnDisabled";
|
|
1296
801
|
"required": false;
|
|
1297
802
|
"isSignal": true;
|
|
1298
803
|
};
|
|
1299
|
-
"
|
|
1300
|
-
"alias": "
|
|
804
|
+
"pdfBtnDisabled": {
|
|
805
|
+
"alias": "pdfBtnDisabled";
|
|
1301
806
|
"required": false;
|
|
1302
807
|
"isSignal": true;
|
|
1303
808
|
};
|
|
1304
|
-
"
|
|
1305
|
-
"alias": "
|
|
809
|
+
"printBtnDisabled": {
|
|
810
|
+
"alias": "printBtnDisabled";
|
|
1306
811
|
"required": false;
|
|
1307
812
|
"isSignal": true;
|
|
1308
813
|
};
|
|
1309
|
-
"
|
|
1310
|
-
"alias": "
|
|
814
|
+
"refreshBtnDisabled": {
|
|
815
|
+
"alias": "refreshBtnDisabled";
|
|
1311
816
|
"required": false;
|
|
1312
817
|
"isSignal": true;
|
|
1313
818
|
};
|
|
1314
|
-
"
|
|
1315
|
-
"alias": "
|
|
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";
|
|
1316
876
|
"required": false;
|
|
1317
877
|
"isSignal": true;
|
|
1318
878
|
};
|
|
1319
879
|
}, {
|
|
1320
|
-
"
|
|
1321
|
-
|
|
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>;
|
|
1322
891
|
}
|
|
1323
|
-
export declare
|
|
1324
|
-
|
|
1325
|
-
|
|
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;
|
|
1326
899
|
}
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
900
|
+
/** Объект передаваемый в диалог формы редактирования, оперирует доменной моделью. */
|
|
901
|
+
export interface IEditDialogData<T, K = any> {
|
|
902
|
+
action: Action;
|
|
903
|
+
/** Здесь всегда доменная модель */
|
|
904
|
+
entity: T;
|
|
905
|
+
/** Дополнительные данные, например, фото. */
|
|
906
|
+
extraData?: K;
|
|
1332
907
|
}
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
908
|
+
export declare enum Action {
|
|
909
|
+
Add = "Добавление",
|
|
910
|
+
Edit = "Изменение"
|
|
1336
911
|
}
|
|
1337
|
-
export declare class
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
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;
|
|
983
|
+
/** Сервис ролей. */
|
|
984
|
+
protected roleService: RoleService;
|
|
985
|
+
/** Объект для отписки (вызывается метод unsubscribe при уничтожении компонента). */
|
|
986
|
+
protected subscription: Subscription;
|
|
987
|
+
ngOnDestroy(): void;
|
|
988
|
+
onNoClick(event: MouseEvent): void;
|
|
989
|
+
onSubmit(): void;
|
|
990
|
+
formActionIsAdd(): boolean;
|
|
991
|
+
formActionIsEdit(): boolean;
|
|
992
|
+
/**
|
|
993
|
+
* Определяет видимость элемента на основе ЧЕРНОГО списка ролей.
|
|
994
|
+
* По умолчанию элемент ВИДИМ. Скрывается (возвращает false), если у пользователя
|
|
995
|
+
* есть запрещенная роль или если передан маркер скрытия фичи HIDE_ROLE_MARKER.
|
|
996
|
+
*/
|
|
997
|
+
protected isVisibleForForbiddenRoles(forbiddenRoles: string[]): boolean;
|
|
998
|
+
/**
|
|
999
|
+
* Определяет видимость элемента на основе БЕЛОГО списка ролей.
|
|
1000
|
+
* По умолчанию элемент СКРЫТ. Показывается (возвращает true), только если у пользователя
|
|
1001
|
+
* есть хотя бы одна из разрешенных ролей. Администратор (ADMIN) всегда видит элемент.
|
|
1002
|
+
*/
|
|
1003
|
+
protected isVisibleForAllowedRoles(allowedRoles: string[]): boolean;
|
|
1004
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BaseEditClass<any>, never>;
|
|
1005
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<BaseEditClass<any>, never, never, {}, {}, never, never, true, never>;
|
|
1006
|
+
}
|
|
1007
|
+
export interface IEntityAction<T> {
|
|
1008
|
+
action: EntityAction;
|
|
1009
|
+
entity: T | undefined;
|
|
1010
|
+
}
|
|
1011
|
+
export declare enum EntityAction {
|
|
1012
|
+
Init = "Инициализация",
|
|
1013
|
+
Add = "Добавление",
|
|
1014
|
+
Edit = "Изменение",
|
|
1015
|
+
Delete = "Удаление"
|
|
1016
|
+
}
|
|
1017
|
+
export declare class BaseFilterClass implements OnDestroy {
|
|
1018
|
+
/** Сервис для работы с LocalStorage. */
|
|
1019
|
+
protected localStorageService: LocalStorageService;
|
|
1020
|
+
/** Сервис индикатор загрузки. */
|
|
1021
|
+
protected loaderService: LoaderService;
|
|
1022
|
+
/** Сервис уведомлений. */
|
|
1023
|
+
protected notificationService: NotificationService;
|
|
1024
|
+
defaultDebounceTime: number;
|
|
1025
|
+
/** Объект для отписки (вызывается метод unsubscribe при уничтожении компонента). */
|
|
1026
|
+
subscription: Subscription;
|
|
1027
|
+
constructor();
|
|
1028
|
+
ngOnDestroy(): void;
|
|
1029
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BaseFilterClass, never>;
|
|
1030
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<BaseFilterClass, never, never, {}, {}, never, never, true, never>;
|
|
1031
|
+
}
|
|
1032
|
+
export declare class BaseNavBarMenuClass {
|
|
1033
|
+
protected roleService: RoleService;
|
|
1034
|
+
protected router: Router;
|
|
1035
|
+
/**
|
|
1036
|
+
* Определяет видимость пункта меню на основе ЧЕРНОГО списка ролей.
|
|
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>;
|
|
1051
|
+
}
|
|
1052
|
+
export declare class BasePageClass<T> implements OnDestroy {
|
|
1053
|
+
protected dialog: MatDialog;
|
|
1054
|
+
/** Данные для табличного компонента. */
|
|
1055
|
+
data: import("@angular/core").WritableSignal<T[]>;
|
|
1056
|
+
/** Количество записей по фильтру. */
|
|
1057
|
+
length: import("@angular/core").WritableSignal<number>;
|
|
1058
|
+
entityService: any;
|
|
1059
|
+
entityType: any;
|
|
1060
|
+
entityEditComponent: any;
|
|
1061
|
+
extraData?: any;
|
|
1062
|
+
defaultPageIndex: number;
|
|
1063
|
+
defaultPageSize: number;
|
|
1064
|
+
dialogEditWidth: string;
|
|
1065
|
+
dialogRemoveWidth: string;
|
|
1066
|
+
routeAddress: string;
|
|
1067
|
+
/** Сообщение при удалении записи(й). */
|
|
1068
|
+
removalMessage: string;
|
|
1069
|
+
/** Заголовок страницы. */
|
|
1070
|
+
pageTitle: string;
|
|
1071
|
+
/**
|
|
1072
|
+
* Создание записи: вызывается перед открытием диалога.
|
|
1073
|
+
*/
|
|
1074
|
+
beforeOpenDialogOnNewEvent: fnType<T>;
|
|
1075
|
+
/**
|
|
1076
|
+
* Редактирование записи: вызывается перед открытием диалога.
|
|
1077
|
+
*/
|
|
1078
|
+
beforeOpenDialogOnEditEvent: fnType<T>;
|
|
1079
|
+
/**
|
|
1080
|
+
* Создание записи: вызывается перед сохранением объекта.
|
|
1081
|
+
*/
|
|
1082
|
+
beforeSaveOnNewEvent: fnType<T>;
|
|
1083
|
+
/**
|
|
1084
|
+
* Редактирование записи: вызывается перед сохранением объекта.
|
|
1085
|
+
*/
|
|
1086
|
+
beforeSaveOnEditEvent: fnType<T>;
|
|
1087
|
+
/**
|
|
1088
|
+
* Создание записи: вызывается после сохранения объекта.
|
|
1089
|
+
*/
|
|
1090
|
+
afterSaveOnNewEvent: fnCbType<T>;
|
|
1091
|
+
/**
|
|
1092
|
+
* Редактирование записи: вызывается после сохранения объекта.
|
|
1093
|
+
*/
|
|
1094
|
+
afterSaveOnEditEvent: fnCbType<T>;
|
|
1095
|
+
editorRoles: string[];
|
|
1096
|
+
executeRoles: string[];
|
|
1097
|
+
/** Список ролей, для которых скрыть элемент. */
|
|
1098
|
+
hideRoles: string[];
|
|
1099
|
+
/** Загрузка данных. */
|
|
1100
|
+
loadData$: Subject<null>;
|
|
1101
|
+
/** Загрузка количества записей. */
|
|
1102
|
+
loadLength$: Subject<null>;
|
|
1103
|
+
/** Очистка фильтра. */
|
|
1104
|
+
clearFilter$: Subject<null>;
|
|
1105
|
+
/** Очистка фильтра (для очистки присвоить пустой объект '{}'). */
|
|
1106
|
+
clearFilter: any;
|
|
1107
|
+
/** Разрешен выбор нескольких строк. */
|
|
1108
|
+
allowMultiSelect: boolean;
|
|
1109
|
+
/** Выбранные строки в таблице. */
|
|
1110
|
+
selected: T[];
|
|
1111
|
+
/** Состояние сортировки, пагинации. */
|
|
1112
|
+
tableState: TableState;
|
|
1113
|
+
/** Доступность кнопки "Изменить". */
|
|
1114
|
+
editBtnDisabled: boolean;
|
|
1115
|
+
/** Доступность кнопки "Удалить". */
|
|
1116
|
+
removeBtnDisabled: boolean;
|
|
1117
|
+
/** Разрешено ли отправлять событие rowDoubleClicked при двойном щелчке мышью. */
|
|
1118
|
+
dblClickedEventEnable: boolean;
|
|
1119
|
+
opt: IContextMenuOptions<T>[];
|
|
1120
|
+
protected router: Router;
|
|
1121
|
+
/** Сервис для работы с LocalStorage. */
|
|
1122
|
+
protected localStorageService: LocalStorageService;
|
|
1123
|
+
/** Сервис индикатор загрузки. */
|
|
1124
|
+
protected loaderService: LoaderService;
|
|
1125
|
+
/** Сервис уведомлений. */
|
|
1126
|
+
protected notificationService: NotificationService;
|
|
1127
|
+
/** Объект для отписки (вызывается метод unsubscribe при уничтожении компонента). */
|
|
1350
1128
|
subscription: Subscription;
|
|
1351
1129
|
constructor();
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1130
|
+
ngOnDestroy(): void;
|
|
1131
|
+
subscribeToLoadData(fnGetData: fnGetDataType<T>, fnGetCount: fnGetCountType<T>, fnMapEntity?: fnMapEntityType<T>): void;
|
|
1132
|
+
onPageChange(pageState: PageState): void;
|
|
1133
|
+
onSortChange(sortState: SortState): void;
|
|
1134
|
+
/** Событие изменение выбранных записей. */
|
|
1135
|
+
onSelectionChange(selected: T[]): void;
|
|
1136
|
+
/** Обновление доступности кнопки "Изменить" - вызывается при изменении выбранных записей. */
|
|
1137
|
+
editBtnDisabledUpdate(selected: T[]): void;
|
|
1138
|
+
/** Обновление доступности кнопки "Удалить" - вызывается при изменении выбранных записей. */
|
|
1139
|
+
removeBtnDisabledUpdate(selected: T[]): void;
|
|
1140
|
+
/** Событие двойной клик. */
|
|
1141
|
+
onRowDoubleClicked(): void;
|
|
1142
|
+
/** Событие создание. */
|
|
1143
|
+
newEvent(): void;
|
|
1144
|
+
/** Событие редактирование. */
|
|
1145
|
+
editEvent(): void;
|
|
1146
|
+
/** Событие удаление. */
|
|
1147
|
+
removeEvent(): void;
|
|
1148
|
+
/** Событие обновления данных. */
|
|
1149
|
+
refreshEvent(): void;
|
|
1150
|
+
/** Событие очистки фильтра. */
|
|
1151
|
+
clearEvent(): void;
|
|
1152
|
+
/** Изменение сообщения об удалении. */
|
|
1153
|
+
onRemovalMessageChange(message: string): void;
|
|
1154
|
+
/** Изменение заголовка страницы. */
|
|
1155
|
+
onPageTitleChange(title: string): void;
|
|
1156
|
+
openDialog(entityComponent: any, data: IEditDialogData<T>, dialog: any): any;
|
|
1157
|
+
openDialogRemoveConfirm(removalMessage: string): MatDialogRef<DialogComponent> | undefined;
|
|
1158
|
+
protected onMiddleButton(baseUrl: string, queryParamName?: string, queryParamValue?: string): ($event: MouseEvent, item: T | undefined, contextMenu: MatMenuTrigger) => void;
|
|
1159
|
+
protected onActionMiddleButton(baseUrl: string, queryParamName?: string, queryParamValue?: string): ($event: MouseEvent, item: T | undefined) => void;
|
|
1160
|
+
protected dateToString(date: string | number | Date): string | null;
|
|
1161
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BasePageClass<any>, never>;
|
|
1162
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<BasePageClass<any>, never, never, {}, {}, never, never, true, never>;
|
|
1163
|
+
}
|
|
1164
|
+
export declare abstract class BaseServiceClass<T extends BaseClass> {
|
|
1165
|
+
abstract baseRoute: string;
|
|
1166
|
+
abstract entityType: any;
|
|
1167
|
+
protected countRoute: string;
|
|
1168
|
+
protected pageIndexParam: string;
|
|
1169
|
+
protected pageSizeParam: string;
|
|
1170
|
+
protected sortColumnParam: string;
|
|
1171
|
+
protected directionParam: string;
|
|
1172
|
+
protected apiContextName: string;
|
|
1173
|
+
protected http: HttpClient;
|
|
1174
|
+
getObjects(): Observable<T[]>;
|
|
1175
|
+
getObject(id: number): any;
|
|
1176
|
+
getCount(): Observable<number>;
|
|
1177
|
+
getObjectsByPaging(pageIndex: number, pageSize: number, sortColumn: string, direction: string): Observable<T[]>;
|
|
1178
|
+
newObject(entity: T): any;
|
|
1179
|
+
editObject(entity: T): any;
|
|
1180
|
+
deleteObject(entity: T): any;
|
|
1181
|
+
protected getParams(pageIndex: number, pageSize: number, sortColumn: string, direction: string): HttpParams;
|
|
1182
|
+
protected getHttpContext(): {
|
|
1183
|
+
context?: HttpContext;
|
|
1184
|
+
};
|
|
1185
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BaseServiceClass<any>, never>;
|
|
1186
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
1187
|
+
}
|
|
1188
|
+
export declare abstract class BaseSignalEditClass<TDomain extends Record<string, any>, TForm extends Record<string, any> = TDomain> implements OnDestroy {
|
|
1189
|
+
/** Заголовок. */
|
|
1190
|
+
abstract title: string;
|
|
1191
|
+
/** Данные диалога. */
|
|
1192
|
+
protected abstract dialogData: WritableSignal<IEditDialogData<TDomain>>;
|
|
1193
|
+
protected formAction: import("@angular/core").Signal<Action>;
|
|
1194
|
+
protected formActionIsAdd: import("@angular/core").Signal<boolean>;
|
|
1195
|
+
protected formActionIsEdit: import("@angular/core").Signal<boolean>;
|
|
1196
|
+
protected domainModel: import("@angular/core").Signal<TDomain>;
|
|
1197
|
+
protected formModel: WritableSignal<TForm>;
|
|
1198
|
+
/** Форма. */
|
|
1199
|
+
protected abstract form: FieldTree<TForm>;
|
|
1200
|
+
/** Ссылка на диалог. */
|
|
1201
|
+
protected abstract dialogRef?: MatDialogRef<any, IEditDialogData<TDomain> | null>;
|
|
1202
|
+
/** Сервис индикатор загрузки. */
|
|
1203
|
+
protected loaderService: LoaderService;
|
|
1204
|
+
/** Сервис уведомлений. */
|
|
1205
|
+
protected notificationService: NotificationService;
|
|
1206
|
+
/** Сервис ролей. */
|
|
1207
|
+
protected roleService: RoleService;
|
|
1208
|
+
/** Объект для отписки (вызывается метод unsubscribe при уничтожении компонента).
|
|
1209
|
+
* @deprecated
|
|
1210
|
+
*/
|
|
1211
|
+
protected subscription: Subscription;
|
|
1212
|
+
/**
|
|
1213
|
+
* Маппинг: Домен -> Форма.
|
|
1214
|
+
* Реализация по умолчанию делает поверхностную копию. Наследник может её переопределить.
|
|
1215
|
+
*/
|
|
1216
|
+
protected domainModelToFormModel(domainModel: TDomain): TForm;
|
|
1217
|
+
/**
|
|
1218
|
+
* Маппинг: Форма -> Домен.
|
|
1219
|
+
* Реализация по умолчанию объединяет старый домен и новые поля формы.
|
|
1220
|
+
*/
|
|
1221
|
+
protected formModelToDomainModel(formModel: TForm, originalDomain?: TDomain): TDomain;
|
|
1222
|
+
ngOnDestroy(): void;
|
|
1223
|
+
onNoClick(event: MouseEvent): void;
|
|
1224
|
+
onSubmit(): void;
|
|
1225
|
+
/**
|
|
1226
|
+
* Определяет видимость элемента на основе ЧЕРНОГО списка ролей.
|
|
1227
|
+
* По умолчанию элемент ВИДИМ. Скрывается (возвращает false), если у пользователя
|
|
1228
|
+
* есть запрещенная роль или если передан маркер скрытия фичи HIDE_ROLE_MARKER.
|
|
1229
|
+
*/
|
|
1230
|
+
protected isVisibleForForbiddenRoles(forbiddenRoles: string[]): boolean;
|
|
1231
|
+
/**
|
|
1232
|
+
* Определяет видимость элемента на основе БЕЛОГО списка ролей.
|
|
1233
|
+
* По умолчанию элемент СКРЫТ. Показывается (возвращает true), только если у пользователя
|
|
1234
|
+
* есть хотя бы одна из разрешенных ролей. Администратор (ADMIN) всегда видит элемент.
|
|
1235
|
+
*/
|
|
1236
|
+
protected isVisibleForAllowedRoles(allowedRoles: string[]): boolean;
|
|
1237
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BaseSignalEditClass<any, any>, never>;
|
|
1238
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<BaseSignalEditClass<any, any>, never, never, {}, {}, never, never, true, never>;
|
|
1239
|
+
}
|
|
1240
|
+
export declare abstract class BaseSignalFilterClass<F extends SafeFilterState> {
|
|
1241
|
+
/** Сервис индикатор загрузки. */
|
|
1242
|
+
protected loaderService: LoaderService;
|
|
1243
|
+
/** Сервис уведомлений. */
|
|
1244
|
+
protected notificationService: NotificationService;
|
|
1245
|
+
/** Время на успокоение значения фильтра. */
|
|
1246
|
+
defaultDebounceTime: number;
|
|
1247
|
+
/**
|
|
1248
|
+
* writable-сигнал, Принимаем текущее реактивное состояние фильтров с родительской страницы.
|
|
1249
|
+
* Родитель передает значение через [(filters)]="pageFilters()".
|
|
1250
|
+
* При любом изменении полей ввода обновляйте сигнал целиком через метод update.
|
|
1251
|
+
*
|
|
1252
|
+
* @example
|
|
1253
|
+
* updateCategory(newCategory: string) {
|
|
1254
|
+
* this.filters.update(prev => ({ ...prev, category: newCategory }));
|
|
1255
|
+
* }
|
|
1256
|
+
*/
|
|
1257
|
+
/** Двусторонняя модель теперь строго типизирована вашим SafeFilterState. */
|
|
1258
|
+
filters: import("@angular/core").ModelSignal<F>;
|
|
1259
|
+
/** Входной сигнал для сброса состояния формы. */
|
|
1260
|
+
clearFilter: import("@angular/core").InputSignal<any>;
|
|
1261
|
+
protected isUseInternalFilterSignal: number;
|
|
1262
|
+
/**
|
|
1263
|
+
* Локальный сигнал формы, чтобы изолировать ввод пользователя
|
|
1264
|
+
* от родительской двусторонней модели filters.
|
|
1265
|
+
*
|
|
1266
|
+
* ### ВАЖНО:
|
|
1267
|
+
* * При использовании для создания формы и в шаблоне, необходимо задать
|
|
1268
|
+
* isUseInternalFilterSignal = 1, чтобы при clearFilter чистилась правильная модель.
|
|
1269
|
+
*
|
|
1270
|
+
* @example
|
|
1271
|
+
* protected isUseInternalFilterSignal = 1;
|
|
1272
|
+
* protected form = form(this.internalFilterSignal, (schemaPath) => {
|
|
1273
|
+
* // Дебаунсим только текстовые инпут dept. Остальные обновятся мгновенно.
|
|
1274
|
+
* debounce(schemaPath.dept, this.defaultDebounceTime);
|
|
1275
|
+
* });
|
|
1276
|
+
*
|
|
1277
|
+
* */
|
|
1278
|
+
protected internalFilterSignal: import("@angular/core").WritableSignal<F>;
|
|
1279
|
+
protected abstract DEFAULT_FILTER: F;
|
|
1280
|
+
/**
|
|
1281
|
+
* Объект для отписки от внутренних подписок (например, valueChanges у FormControl).
|
|
1282
|
+
* Метод unsubscribe вызывается при уничтожении компонента.
|
|
1283
|
+
*/
|
|
1284
|
+
constructor();
|
|
1285
|
+
/** Мгновенная очистка конкретного поля по крестику у двусторонней модели filters. */
|
|
1286
|
+
clearField(fieldName: keyof F, defaultValue: any): void;
|
|
1287
|
+
/** Мгновенная очистка конкретного поля по крестику. */
|
|
1288
|
+
clearFieldInternal(fieldName: keyof F, defaultValue: any): void;
|
|
1289
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BaseSignalFilterClass<any>, never>;
|
|
1290
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<BaseSignalFilterClass<any>, never, never, {
|
|
1291
|
+
"filters": {
|
|
1292
|
+
"alias": "filters";
|
|
1387
1293
|
"required": false;
|
|
1388
1294
|
"isSignal": true;
|
|
1389
1295
|
};
|
|
1390
|
-
"
|
|
1391
|
-
"alias": "
|
|
1296
|
+
"clearFilter": {
|
|
1297
|
+
"alias": "clearFilter";
|
|
1392
1298
|
"required": false;
|
|
1393
1299
|
"isSignal": true;
|
|
1394
1300
|
};
|
|
1395
1301
|
}, {
|
|
1396
|
-
"
|
|
1302
|
+
"filters": "filtersChange";
|
|
1397
1303
|
}, never, never, true, never>;
|
|
1398
1304
|
}
|
|
1399
|
-
export
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1305
|
+
export declare abstract class BaseSignalPageClass<T extends BaseSchemaClass, F extends SafeFilterState = Record<string, never>> implements OnDestroy {
|
|
1306
|
+
protected dialog: MatDialog;
|
|
1307
|
+
protected injector: Injector;
|
|
1308
|
+
protected entityService: any;
|
|
1309
|
+
protected entityEditComponent?: any;
|
|
1310
|
+
protected extraData?: any;
|
|
1311
|
+
protected abstract readonly schema: z.ZodType<T>;
|
|
1312
|
+
protected readonly filterSchema?: z.ZodType<F>;
|
|
1313
|
+
protected readonly defaultFilters?: F;
|
|
1314
|
+
private get storagePrefix();
|
|
1315
|
+
defaultPageIndex: number;
|
|
1316
|
+
defaultPageSize: number;
|
|
1317
|
+
dialogEditWidth: string;
|
|
1318
|
+
dialogRemoveWidth: string;
|
|
1319
|
+
routeAddress: string;
|
|
1320
|
+
/** Сообщение при удалении записи(й). */
|
|
1321
|
+
removalMessage: string;
|
|
1322
|
+
/** Заголовок страницы. */
|
|
1323
|
+
pageTitle: string;
|
|
1324
|
+
/**
|
|
1325
|
+
* Создание записи: вызывается перед открытием диалога.
|
|
1326
|
+
*/
|
|
1327
|
+
beforeOpenDialogOnNewEvent: fnType<T>;
|
|
1328
|
+
/**
|
|
1329
|
+
* Редактирование записи: вызывается перед открытием диалога.
|
|
1330
|
+
*/
|
|
1331
|
+
beforeOpenDialogOnEditEvent: fnType<T>;
|
|
1332
|
+
/**
|
|
1333
|
+
* Создание записи: вызывается перед сохранением объекта.
|
|
1334
|
+
*/
|
|
1335
|
+
beforeSaveOnNewEvent: fnType<T>;
|
|
1336
|
+
/**
|
|
1337
|
+
* Редактирование записи: вызывается перед сохранением объекта.
|
|
1338
|
+
*/
|
|
1339
|
+
beforeSaveOnEditEvent: fnType<T>;
|
|
1340
|
+
/**
|
|
1341
|
+
* Создание записи: вызывается после сохранения объекта.
|
|
1342
|
+
*/
|
|
1343
|
+
afterSaveOnNewEvent: fnCbType<T>;
|
|
1344
|
+
/**
|
|
1345
|
+
* Редактирование записи: вызывается после сохранения объекта.
|
|
1346
|
+
*/
|
|
1347
|
+
afterSaveOnEditEvent: fnCbType<T>;
|
|
1348
|
+
editorRoles: string[];
|
|
1349
|
+
executeRoles: string[];
|
|
1350
|
+
/** Список ролей, для которых скрыть элемент. */
|
|
1351
|
+
hideRoles: string[];
|
|
1352
|
+
/** Разрешен выбор нескольких строк. */
|
|
1353
|
+
allowMultiSelect: boolean;
|
|
1354
|
+
/** Выбранные строки в таблице. */
|
|
1355
|
+
selected: T[];
|
|
1356
|
+
protected abstract fnGetData: fnGetDataByStateAndFilterType<T, F>;
|
|
1357
|
+
protected abstract fnGetCount: fnGetCountByFilterType<F>;
|
|
1358
|
+
protected abstract fnMapEntity: fnMapEntityType<T> | undefined;
|
|
1359
|
+
protected dataResource: import("@angular/core").Signal<import("@angular/common/http").HttpResourceRef<T[]>>;
|
|
1360
|
+
protected countResource: import("@angular/core").Signal<import("@angular/common/http").HttpResourceRef<number>>;
|
|
1361
|
+
/** Данные для табличного компонента. */
|
|
1362
|
+
data: import("@angular/core").Signal<T[]>;
|
|
1363
|
+
/** Количество записей по фильтру. */
|
|
1364
|
+
length: import("@angular/core").Signal<number>;
|
|
1365
|
+
/** Глобальный индикатор загрузки (для спиннера на странице) */
|
|
1366
|
+
isLoading: import("@angular/core").Signal<boolean>;
|
|
1367
|
+
/** Доступность кнопки "Изменить". */
|
|
1368
|
+
editBtnDisabled: boolean;
|
|
1369
|
+
/** Доступность кнопки "Удалить". */
|
|
1370
|
+
removeBtnDisabled: boolean;
|
|
1371
|
+
/** Разрешено ли отправлять событие rowDoubleClicked при двойном щелчке мышью. */
|
|
1372
|
+
dblClickedEventEnable: boolean;
|
|
1373
|
+
opt: IContextMenuOptions<T>[];
|
|
1374
|
+
protected router: Router;
|
|
1375
|
+
/** Сервис для работы с LocalStorage. */
|
|
1376
|
+
protected localStorageService: LocalStorageService;
|
|
1377
|
+
/** Сервис индикатор загрузки. */
|
|
1378
|
+
protected loaderService: LoaderService;
|
|
1379
|
+
/** Сервис уведомлений. */
|
|
1380
|
+
protected notificationService: import("@kuzntsv/uikit").INotificationService;
|
|
1381
|
+
/** Объект для отписки (вызывается метод unsubscribe при уничтожении компонента). */
|
|
1382
|
+
subscription: Subscription;
|
|
1383
|
+
private getInitialFilters;
|
|
1384
|
+
/** Разово прочитать сохраненные значения из localStorage при старте страницы,
|
|
1385
|
+
* провалидировать их через Zod-схему и записать в сигнал filters */
|
|
1386
|
+
protected initFilters(): void;
|
|
1387
|
+
clearEvent(): void;
|
|
1388
|
+
private getInitialFilters2;
|
|
1389
|
+
filters: import("@angular/core").WritableSignal<F>;
|
|
1390
|
+
/** Загрузка данных. */
|
|
1391
|
+
/** Загрузка количества записей. */
|
|
1392
|
+
/** Очистка фильтра. (для очистки присвоить пустой объект '{}'). */
|
|
1393
|
+
clearFilters: import("@angular/core").WritableSignal<any>;
|
|
1394
|
+
/** Состояние сортировки, пагинации. */
|
|
1395
|
+
tableState: import("@angular/core").WritableSignal<{
|
|
1396
|
+
sortActive: string;
|
|
1397
|
+
sortDirection: SortDirection;
|
|
1398
|
+
pageIndex: number;
|
|
1399
|
+
pageSize: number;
|
|
1400
|
+
}>;
|
|
1414
1401
|
constructor();
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1402
|
+
ngOnDestroy(): void;
|
|
1403
|
+
/** Установка значение фильтра.
|
|
1404
|
+
* @param key - имя фильтра.
|
|
1405
|
+
* @param value - значение.
|
|
1406
|
+
*/
|
|
1407
|
+
setFilter<K extends keyof F>(key: K, value: F[K]): void;
|
|
1408
|
+
onPageChange(pageState: PageState): void;
|
|
1409
|
+
onSortChange(sortState: SortState): void;
|
|
1410
|
+
/** Событие изменение выбранных записей. */
|
|
1411
|
+
onSelectionChange(selected: T[]): void;
|
|
1412
|
+
/** Обновление доступности кнопки "Изменить" - вызывается при изменении выбранных записей. */
|
|
1413
|
+
editBtnDisabledUpdate(selected: T[]): void;
|
|
1414
|
+
/** Обновление доступности кнопки "Удалить" - вызывается при изменении выбранных записей. */
|
|
1415
|
+
removeBtnDisabledUpdate(selected: T[]): void;
|
|
1416
|
+
/** Событие двойной клик. */
|
|
1417
|
+
onRowDoubleClicked(): void;
|
|
1418
|
+
/** Событие создание. */
|
|
1419
|
+
newEvent(): void;
|
|
1420
|
+
/** Событие редактирование. */
|
|
1421
|
+
editEvent(): void;
|
|
1422
|
+
/** Событие удаление. */
|
|
1423
|
+
removeEvent(): void;
|
|
1424
|
+
/** Событие обновления данных. */
|
|
1425
|
+
refreshEvent(): void;
|
|
1426
|
+
/** Событие очистки фильтра. */
|
|
1427
|
+
/** Изменение сообщения об удалении. */
|
|
1428
|
+
onRemovalMessageChange(message: string): void;
|
|
1429
|
+
/** Изменение заголовка страницы. */
|
|
1430
|
+
onPageTitleChange(title: string): void;
|
|
1431
|
+
openDialog(entityComponent: any, data: IEditDialogData<T>, dialog: any): any;
|
|
1432
|
+
openDialogRemoveConfirm(removalMessage: string): MatDialogRef<DialogComponent> | undefined;
|
|
1433
|
+
protected onMiddleButton(baseUrl: string, queryParamName?: string, queryParamValue?: string): ($event: MouseEvent, item: T | undefined, contextMenu: MatMenuTrigger) => void;
|
|
1434
|
+
protected onActionMiddleButton(baseUrl: string, queryParamName?: string, queryParamValue?: string): ($event: MouseEvent, item: T | undefined) => void;
|
|
1435
|
+
protected dateToString(date: string | number | Date): string | null;
|
|
1436
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BaseSignalPageClass<any, any>, never>;
|
|
1437
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<BaseSignalPageClass<any, any>, never, never, {}, {}, never, never, true, never>;
|
|
1437
1438
|
}
|
|
1438
1439
|
export declare abstract class BaseSignalServiceClass<T extends BaseSchemaClass> {
|
|
1439
1440
|
abstract baseRoute: string;
|