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