@rt-tools/ui-kit 0.3.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/rt-tools-ui-kit.mjs +4394 -3750
  3. package/fesm2022/rt-tools-ui-kit.mjs.map +1 -1
  4. package/package.json +3 -4
  5. package/rt-tools-ui-kit-0.5.0.tgz +0 -0
  6. package/src/lib/ui-kit/action-bar/components/bar/rtui-action-bar.component.scss +14 -0
  7. package/src/lib/ui-kit/action-bar/components/container/rtui-action-bar-container.component.scss +47 -0
  8. package/src/lib/ui-kit/action-bar/stories/component/test-action-bar.component.scss +15 -0
  9. package/src/lib/ui-kit/aside/components/container/aside-container.component.scss +4 -1
  10. package/src/lib/ui-kit/aside/components/error-notification/aside-error-box.component.scss +1 -1
  11. package/src/lib/ui-kit/aside/components/panel/aside-panel.component.scss +24 -0
  12. package/src/lib/ui-kit/buttons/unified-button/rtui-button.component.scss +210 -206
  13. package/src/lib/ui-kit/buttons/unified-button/stories/component/test-button-matrix.component.scss +38 -0
  14. package/src/lib/ui-kit/icon/rtui-icon.component.scss +43 -24
  15. package/src/lib/ui-kit/info-badge/info-badge.component.scss +23 -23
  16. package/src/lib/ui-kit/popover/stories/component/test-popover.component.scss +32 -0
  17. package/src/lib/ui-kit/scrollable/scrollable-container.component.scss +57 -0
  18. package/src/lib/ui-kit/scrollable/stories/component/test-scrollable.component.scss +17 -0
  19. package/src/lib/ui-kit/side-menu/menu/rtui-side-menu.component.scss +185 -4
  20. package/src/lib/ui-kit/side-menu/menu-sub-item/rtui-side-menu-sub-item.component.scss +45 -4
  21. package/src/lib/ui-kit/snack-bar/snack-bar.component.scss +20 -0
  22. package/src/lib/ui-kit/spinner/spinner.component.scss +1 -1
  23. package/src/lib/ui-kit/table/components/pagination-view/rtui-pagination.component.scss +20 -17
  24. package/src/lib/ui-kit/table/components/table-base-cell/table-base-cell.component.scss +21 -0
  25. package/src/lib/ui-kit/table/components/table-container/table-container.component.scss +26 -0
  26. package/src/lib/ui-kit/table/stories/dynamic-list/test-dynamic-list.component.scss +18 -0
  27. package/src/lib/ui-kit/toolbar/stories/component/test-toolbar.component.scss +22 -0
  28. package/src/styles/TOKENS.md +25 -16
  29. package/src/styles/base/_base.scss +6 -3
  30. package/src/styles/base/_tokens.scss +24 -0
  31. package/src/styles/color-scheme.spec.ts +4 -1
  32. package/src/styles/components/_rtui_button.scss +13 -547
  33. package/src/styles/components/button/_base.scss +64 -0
  34. package/src/styles/components/button/_map.scss +184 -0
  35. package/src/styles/components/button/_palettes.scss +218 -0
  36. package/src/styles/components/button/_sizes.scss +29 -0
  37. package/src/styles/components/button/_text.scss +68 -0
  38. package/src/styles/main.scss +0 -1
  39. package/styles/tokens.css +11 -0
  40. package/types/rt-tools-ui-kit.d.ts +614 -361
  41. package/rt-tools-ui-kit-0.3.1.tgz +0 -0
  42. package/src/styles/components/_button.scss +0 -372
@@ -1,9 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Type, OnInit, Signal, TemplateRef, WritableSignal, InputSignal, InputSignalWithTransform, OutputEmitterRef, InjectionToken, ModelSignal, AfterViewInit, ElementRef, AfterViewChecked, Provider, AfterContentChecked, OnDestroy } from '@angular/core';
2
+ import { Type, OnInit, Signal, ElementRef, WritableSignal, TemplateRef, InputSignal, InjectionToken, InputSignalWithTransform, OutputEmitterRef, ModelSignal, AfterViewChecked, AfterViewInit, Provider, AfterContentChecked, OnDestroy } from '@angular/core';
3
3
  import { FormControl, ControlValueAccessor, Validator, FormGroup, ValidationErrors } from '@angular/forms';
4
4
  import { ThemePalette } from '@angular/material/core';
5
5
  import { Observable, Subject } from 'rxjs';
6
- import { INullable, IPageModel, ISortModel, FilterOperatorType, IFilterModel, FILTER_OPERATOR_TYPE_ENUM } from '@rt-tools/utils';
6
+ import { TNullable, ISortModel, TFilterOperatorType, IFilterModel, EFilterOperatorType, IPageModel } from '@rt-tools/utils';
7
7
  import { MatDialogConfig } from '@angular/material/dialog';
8
8
  import { MatDrawer } from '@angular/material/sidenav';
9
9
  import { OverlayRef, ComponentType, ConnectedPosition, CdkOverlayOrigin } from '@angular/cdk/overlay';
@@ -13,21 +13,22 @@ import { MatButtonAppearance } from '@angular/material/button';
13
13
  import * as i1 from '@angular/material/tooltip';
14
14
  import { TooltipPosition } from '@angular/material/tooltip';
15
15
  import { MatFormFieldAppearance } from '@angular/material/form-field';
16
- import { AnimationPlayer, AnimationTriggerMetadata } from '@angular/animations';
17
16
  import { MatSnackBarConfig, MatSnackBarRef } from '@angular/material/snack-bar';
18
- import { POSITION_ENUM, OSTypes } from '@rt-tools/core';
17
+ import { EPosition, OSTypes } from '@rt-tools/core';
19
18
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
20
19
  import { MatInput } from '@angular/material/input';
21
20
  import { ImageCroppedEvent } from 'ngx-image-cropper';
22
21
 
23
- declare enum MODAL_WINDOW_SIZE_ENUM {
22
+ declare enum EModalWindowSize {
24
23
  SM = "25rem",
25
24
  MD = "45rem",
26
25
  LG = "65rem",
27
26
  FULL = "100%"
28
27
  }
29
- type ModalWindowSizeType = MODAL_WINDOW_SIZE_ENUM.SM | MODAL_WINDOW_SIZE_ENUM.MD | MODAL_WINDOW_SIZE_ENUM.LG | MODAL_WINDOW_SIZE_ENUM.FULL;
30
- interface Icon {
28
+ type TModalWindowSizeType = EModalWindowSize.SM | EModalWindowSize.MD | EModalWindowSize.LG | EModalWindowSize.FULL;
29
+ /** Вид кнопки окна — набор Material, перечисленный один раз. */
30
+ type TModalButtonAppearance = 'standard' | 'raised' | 'flat' | 'stroked' | 'fab' | 'mini-fab';
31
+ interface IModalIcon {
31
32
  value: string;
32
33
  style?: {
33
34
  [className: string]: string;
@@ -46,8 +47,8 @@ declare namespace IModal {
46
47
  interface Button<T> {
47
48
  text: string;
48
49
  color?: ThemePalette;
49
- value: INullable<T>;
50
- appearance?: 'standard' | 'raised' | 'flat' | 'stroked' | 'fab' | 'mini-fab';
50
+ value: TNullable<T>;
51
+ appearance?: TModalButtonAppearance;
51
52
  validateSelect?: boolean;
52
53
  assignSelectedValue?: boolean;
53
54
  style?: {
@@ -59,7 +60,7 @@ declare namespace IModal {
59
60
  buttonsAlign: 'start' | 'center' | 'end';
60
61
  buttons: Array<Button<T>>;
61
62
  component?: Type<any>;
62
- icon?: Icon;
63
+ icon?: IModalIcon;
63
64
  title?: string;
64
65
  text?: string;
65
66
  confirmation?: string;
@@ -79,11 +80,11 @@ declare namespace IModal {
79
80
  value: T;
80
81
  message: string;
81
82
  }
82
- type ConfirmResponsePredicate<T> = (answer: INullable<IModal.DataAnswer<T>>) => boolean;
83
+ type ConfirmResponsePredicate<T> = (answer: TNullable<IModal.DataAnswer<T>>) => boolean;
83
84
  interface ConfirmResponse<T> {
84
- on(predicate: ConfirmResponsePredicate<T>): Observable<INullable<IModal.DataAnswer<T>>>;
85
- onCancel(cancel?: ConfirmResponsePredicate<T>): Observable<INullable<IModal.DataAnswer<T>>>;
86
- onConfirm(confirm?: ConfirmResponsePredicate<T>): Observable<INullable<IModal.DataAnswer<T>>>;
85
+ on(predicate: ConfirmResponsePredicate<T>): Observable<TNullable<IModal.DataAnswer<T>>>;
86
+ onCancel(cancel?: ConfirmResponsePredicate<T>): Observable<TNullable<IModal.DataAnswer<T>>>;
87
+ onConfirm(confirm?: ConfirmResponsePredicate<T>): Observable<TNullable<IModal.DataAnswer<T>>>;
87
88
  }
88
89
  }
89
90
 
@@ -102,7 +103,7 @@ declare class RtuiModalComponent<T> implements OnInit {
102
103
 
103
104
  declare class RtModalService {
104
105
  #private;
105
- confirm<T>(data: IModal.Data<T>, config?: MatDialogConfig): Observable<INullable<IModal.DataAnswer<T>>>;
106
+ confirm<T>(data: IModal.Data<T>, config?: MatDialogConfig): Observable<TNullable<IModal.DataAnswer<T>>>;
106
107
  with<T>(data: IModal.Data<T>, config?: MatDialogConfig): IModal.ConfirmResponse<T>;
107
108
  static ɵfac: i0.ɵɵFactoryDeclaration<RtModalService, never>;
108
109
  static ɵprov: i0.ɵɵInjectableDeclaration<RtModalService>;
@@ -121,15 +122,63 @@ declare class RtuiScrollableContainerFooterDirective {
121
122
  static ɵdir: i0.ɵɵDirectiveDeclaration<RtuiScrollableContainerFooterDirective, "[rtuiScrollableFooter]", never, {}, {}, never, never, true, never>;
122
123
  }
123
124
  declare class RtuiScrollableContainerComponent {
124
- readonly headerTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
125
- readonly contentTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
126
- readonly footerTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
125
+ #private;
126
+ /** Подпись значка. Словаря у кита нет, и подпись зашита по-английски, как соседние. */
127
+ protected readonly scrollHintLabel: string;
128
+ protected readonly bodyRef: Signal<TNullable<ElementRef<HTMLElement>>>;
129
+ protected readonly footerRef: Signal<TNullable<ElementRef<HTMLElement>>>;
130
+ /**
131
+ * Ниже окна области ещё есть содержимое. Считается по трём числам самого узла, а не по числу
132
+ * пунктов: область не знает, что ей подали, и высота строки у каждого потребителя своя.
133
+ */
134
+ protected readonly hasMoreBelow: WritableSignal<boolean>;
135
+ /**
136
+ * На сколько полоса растушёвки поднята над низом области. Она обязана кончиться там, где
137
+ * начинается содержимое подвала: разделитель потребитель рисует первой его строкой, и полоса,
138
+ * оборвавшаяся выше, оставляет до него чистый фон. Считается замером — верхний отступ подвала
139
+ * потребитель пишет как хочет, и вычесть его в стилях не из чего. Без подвала полоса стоит у
140
+ * самого низа.
141
+ */
142
+ protected readonly hintBottom: WritableSignal<number>;
143
+ readonly headerTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
144
+ readonly contentTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
145
+ readonly footerTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
146
+ /**
147
+ * Признак того, что снизу осталось непоказанное. Выключен по умолчанию: область рисуют
148
+ * десятки экранов, и признак, поставленный безусловно, сдвинул бы вид каждому из них.
149
+ */
150
+ readonly isScrollHintShown: InputSignal<boolean>;
151
+ constructor();
152
+ /**
153
+ * Нажатие на значок уводит список к самому низу. Нажатие останавливается здесь и в список под
154
+ * значком не уходит: под ним живой пункт, и человек, целившийся в подсказку, уехал бы на
155
+ * чужой экран.
156
+ */
157
+ onScrollHintClick(event: Event): void;
158
+ onBodyScroll(): void;
127
159
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiScrollableContainerComponent, never>;
128
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiScrollableContainerComponent, "rtui-scrollable", never, {}, {}, ["headerTpl", "contentTpl", "footerTpl"], never, true, never>;
160
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtuiScrollableContainerComponent, "rtui-scrollable", never, { "isScrollHintShown": { "alias": "isScrollHintShown"; "required": false; "isSignal": true; }; }, {}, ["headerTpl", "contentTpl", "footerTpl"], never, true, never>;
129
161
  }
130
162
 
163
+ /**
164
+ * Меню, в котором стоит подпункт. Токен вместо самого компонента: подпункт брал его классом, а
165
+ * меню объявляет подпункт в своих импортах — получался круг «меню → подпункт → меню».
166
+ *
167
+ * Подпункту нужно от меню два значения: какие пункты сейчас раскрыты и что набрано в поиске —
168
+ * второе затем, чтобы отметить в подписи то, чем она совпала.
169
+ */
170
+ interface IRtuiSideMenuHost {
171
+ readonly activeMenuIds: Signal<Array<string | number>>;
172
+ readonly subMenuQuery: Signal<string>;
173
+ }
174
+ declare const RTUI_SIDE_MENU: InjectionToken<IRtuiSideMenuHost>;
131
175
  declare namespace ISideMenu {
132
176
  type ItemData = string | number | object;
177
+ /**
178
+ * Чем подменю держится открытым: наведением, как было всегда, или закреплением — тогда оно
179
+ * стоит открытым, пока человек сам его не свернёт.
180
+ */
181
+ type SubMenuMode = 'hover' | 'pinned';
133
182
  interface Item {
134
183
  id: string | number;
135
184
  icon?: string;
@@ -143,6 +192,69 @@ declare namespace ISideMenu {
143
192
  }
144
193
  }
145
194
 
195
+ /**
196
+ * Ключ, под которым хранится выбор человека.
197
+ *
198
+ * Назван приставкой кита: хранилище браузера общее на весь адрес, и короткое имя вроде `mode`
199
+ * столкнулось бы с ключом потребителя молча — оба пишут в одно место.
200
+ */
201
+ declare const SUB_MENU_MODE_KEY: string;
202
+ /**
203
+ * Чтение сохранённого выбора.
204
+ *
205
+ * Мода подменю — настройка человека, а не состояние экрана: она обязана переживать перезагрузку.
206
+ * Хранит её потребитель — кит не знает, где у приложения лежат настройки человека, — а эти две
207
+ * функции дают ему готовый и одинаковый способ, чтобы ключ не расходился от приложения к
208
+ * приложению.
209
+ *
210
+ * Отказ хранилища работу не останавливает: браузер отдаёт его закрытым в приватном окне и при
211
+ * запрете данных сайта, и упавшее чтение оставило бы человека без меню вовсе. Незнакомое значение
212
+ * читается так же, как пустое, — прежней модой.
213
+ */
214
+ declare function readSubMenuMode(storage: Storage | null): ISideMenu.SubMenuMode;
215
+ /** Запись выбора. Отказ хранилища глушится по той же причине, что и при чтении. */
216
+ declare function writeSubMenuMode(storage: Storage | null, mode: ISideMenu.SubMenuMode): void;
217
+ /** Ключ ширины закреплённого подменю. Назван приставкой кита по той же причине, что и ключ моды. */
218
+ declare const SUB_MENU_WIDTH_KEY: string;
219
+ /**
220
+ * Пределы ширины подменю в пикселях.
221
+ *
222
+ * Взяты половиной и двойным от оформления по умолчанию: уже нижнего не помещается ни одна подпись
223
+ * пункта, шире верхнего подменю закрывает содержимое страницы, ради которого меню и открывали.
224
+ */
225
+ declare const SUB_MENU_WIDTH_MIN: number;
226
+ declare const SUB_MENU_WIDTH_MAX: number;
227
+ /** Приведение ширины к пределам. Тянут её мышью, и рука уходит за край экрана раньше, чем за предел. */
228
+ declare function clampSubMenuWidth(width: number): number;
229
+ /**
230
+ * Чтение сохранённой ширины.
231
+ *
232
+ * Ширины нет — возвращается пустота, и ширину ставит оформление: своё число здесь подменило бы
233
+ * значение из набора токенов, и правка токена перестала бы что-либо менять.
234
+ *
235
+ * Отказ хранилища и нечисловое значение читаются одинаково — как отсутствие выбора, по той же
236
+ * причине, что и при чтении моды.
237
+ */
238
+ declare function readSubMenuWidth(storage: Storage | null): number | null;
239
+ /** Запись ширины. Пишется приведённая: за пределы её уводит и рука, и чужая правка ключа. */
240
+ declare function writeSubMenuWidth(storage: Storage | null, width: number): void;
241
+ /** Кусок подписи: отмеченный — тот, которым она совпала с запросом. */
242
+ interface ISubMenuTitlePart {
243
+ text: string;
244
+ matched: boolean;
245
+ }
246
+ /**
247
+ * Резка подписи на совпавшие и несовпавшие куски.
248
+ *
249
+ * Отмечается найденное, а не вся подпись: подсвеченная целиком, она говорит ровно то же, что и её
250
+ * присутствие в списке. Отмечаются все вхождения — подпись раздела повторяет слово в себе чаще,
251
+ * чем кажется, и отмеченное одно первое читается как «второго нет».
252
+ *
253
+ * Сравнение регистронезависимое, как и отбор, а куски режутся из оригинала: приведение к нижнему
254
+ * регистру переписало бы чужие названия разделов.
255
+ */
256
+ declare function splitSubMenuTitle(name: string, query: string): ISubMenuTitlePart[];
257
+
146
258
  declare class RtuiSideMenuHeaderDirective {
147
259
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiSideMenuHeaderDirective, never>;
148
260
  static ɵdir: i0.ɵɵDirectiveDeclaration<RtuiSideMenuHeaderDirective, "[rtuiSideMenuHeader]", never, {}, {}, never, never, true, never>;
@@ -153,21 +265,69 @@ declare class RtuiSideMenuFooterDirective {
153
265
  }
154
266
  declare class RtuiSideMenuComponent {
155
267
  #private;
156
- readonly headerTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
157
- readonly footerTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
158
- readonly subMenuRef: Signal<INullable<MatDrawer>>;
268
+ /**
269
+ * Ширина подменю в оформлении. Своего выбора нет — переменная не ставится вовсе, и ширину
270
+ * берёт набор токенов: своё число здесь подменило бы его молча.
271
+ */
272
+ /**
273
+ * Натянутая ширина панели. Кладётся своим свойством, а не тем, каким ширину задаёт
274
+ * потребитель: панель берёт наибольшее из двух, и заданная оформлением ширина остаётся нижним
275
+ * пределом сама по себе. Числом в ките этот предел назвать нечем — ширину знает потребитель.
276
+ */
277
+ protected readonly subMenuWidthStyle: Signal<string | null>;
278
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
279
+ protected readonly narrow: Signal<boolean>;
280
+ /** Подписи зашиты: словаря у кита нет, и кнопка возврата рядом названа тем же способом. */
281
+ protected readonly searchLabel: string;
282
+ protected readonly pinLabel: string;
283
+ protected readonly unpinLabel: string;
284
+ protected readonly nothingFoundLabel: string;
285
+ protected readonly resizeLabel: string;
286
+ /**
287
+ * Закрепление действует. На узком экране подменю занимает экран целиком, закреплять там
288
+ * нечего — и переключателя в узкой разметке нет.
289
+ */
290
+ protected readonly isPinned: Signal<boolean>;
291
+ /**
292
+ * Подменю держится набором запроса: на это время оно шире и уходом указателя не закрывается.
293
+ * Читает это оформление — модификатор на контейнере, — и разметка меню.
294
+ */
295
+ protected readonly isSearchHeld: Signal<boolean>;
296
+ /** Закреплённое подменю открыто, пока ему есть что показать: указатель на это не влияет. */
297
+ protected readonly subMenuOpened: Signal<boolean>;
298
+ /** Что видно в подменю: отобранные пункты того набора, который его сейчас наполняет. */
299
+ protected readonly visibleSubMenuItems: Signal<ISideMenu.Item[]>;
300
+ readonly headerTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
301
+ readonly footerTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
302
+ /** Что набрано в поиске. Публично: подпункт берёт запрос отсюда, чтобы отметить совпавшее. */
303
+ readonly subMenuQuery: WritableSignal<string>;
304
+ readonly subMenuRef: Signal<TNullable<MatDrawer>>;
305
+ readonly subMenuPanelRef: Signal<TNullable<ElementRef<HTMLElement>>>;
159
306
  readonly backToMainMenuButton: Signal<ISideMenu.Item>;
160
- readonly selectedItem: WritableSignal<INullable<ISideMenu.Item>>;
161
- readonly selectedSubMenu: WritableSignal<INullable<ISideMenu.Item[]>>;
307
+ readonly selectedItem: WritableSignal<TNullable<ISideMenu.Item>>;
308
+ readonly selectedSubMenu: WritableSignal<TNullable<ISideMenu.Item[]>>;
162
309
  activeMenuIds: InputSignal<Array<string | number>>;
163
310
  menuItems: InputSignalWithTransform<ISideMenu.Item[], ISideMenu.Item[]>;
164
- isMobile: InputSignalWithTransform<INullable<boolean>, INullable<boolean>>;
311
+ /** Мода подменю. Умолчание — сегодняшнее поведение: открывается наведением. */
312
+ subMenuMode: InputSignal<ISideMenu.SubMenuMode>;
313
+ /**
314
+ * Ширина закреплённого подменю в пикселях. Пустая — ширину ставит оформление; хранит выбор
315
+ * потребитель, как и моду.
316
+ */
317
+ subMenuWidth: InputSignal<number | null>;
165
318
  isSubMenuXScrollEnabled: InputSignalWithTransform<boolean, boolean>;
166
319
  isMainMenuIconsOutlined: InputSignalWithTransform<boolean, boolean>;
167
320
  isSubMenuIconsOutlined: InputSignalWithTransform<boolean, boolean>;
168
321
  isSubMenuButtonIconsOutlined: InputSignalWithTransform<boolean, boolean>;
169
322
  isSubMenuTooltipsShown: InputSignalWithTransform<boolean, boolean>;
170
323
  activeMenuId: Signal<number | string>;
324
+ /**
325
+ * Просьба о моде, а не смена моды: предпочтение хранит потребитель кита и возвращает его
326
+ * входом. Своего состояния о нём меню не заводит.
327
+ */
328
+ readonly subMenuModeChange: OutputEmitterRef<ISideMenu.SubMenuMode>;
329
+ /** Просьба о ширине — по той же причине, что и просьба о моде: своего состояния меню не держит. */
330
+ readonly subMenuWidthChange: OutputEmitterRef<number>;
171
331
  readonly closeMobileMenuAction: OutputEmitterRef<void>;
172
332
  readonly clickSubMenuAction: OutputEmitterRef<{
173
333
  item: ISideMenu.Item;
@@ -185,50 +345,84 @@ declare class RtuiSideMenuComponent {
185
345
  onBackToMainMenu(): void;
186
346
  toggleSubMenu(item?: ISideMenu.Item): void;
187
347
  closeSubMenu(): void;
348
+ /**
349
+ * Человек взялся за поле поиска. Дальше подменю держится открытым, и увести его уходом
350
+ * указателя нельзя — закрывает нажатие снаружи, то есть подложка под незакреплённой панелью.
351
+ */
352
+ onSearchHold(): void;
353
+ /** Нажат переключатель моды: наружу уходит просьба, вход остаётся прежним. */
354
+ onSubMenuModeToggle(): void;
355
+ /**
356
+ * Взята ручка правого края. Слушатели вешаются на документ: рука уходит с узкой полоски
357
+ * ручки в первое же движение, и слушатель на ней самой терял бы тягу сразу.
358
+ */
359
+ onResizeStart(event: MouseEvent): void;
360
+ onSubMenuSearch(query: string): void;
188
361
  closeMobileMenu(): void;
189
362
  clickSubMenuAdditional({ data, event }: {
190
363
  data: ISideMenu.ItemData;
191
364
  event: MouseEvent;
192
365
  }): void;
193
366
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiSideMenuComponent, never>;
194
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiSideMenuComponent, "rtui-side-menu", never, { "activeMenuIds": { "alias": "activeMenuIds"; "required": true; "isSignal": true; }; "menuItems": { "alias": "menuItems"; "required": false; "isSignal": true; }; "isMobile": { "alias": "isMobile"; "required": false; "isSignal": true; }; "isSubMenuXScrollEnabled": { "alias": "isSubMenuXScrollEnabled"; "required": false; "isSignal": true; }; "isMainMenuIconsOutlined": { "alias": "isMainMenuIconsOutlined"; "required": false; "isSignal": true; }; "isSubMenuIconsOutlined": { "alias": "isSubMenuIconsOutlined"; "required": false; "isSignal": true; }; "isSubMenuButtonIconsOutlined": { "alias": "isSubMenuButtonIconsOutlined"; "required": false; "isSignal": true; }; "isSubMenuTooltipsShown": { "alias": "isSubMenuTooltipsShown"; "required": false; "isSignal": true; }; }, { "closeMobileMenuAction": "closeMobileMenuAction"; "clickSubMenuAction": "clickSubMenuAction"; "clickSubMenuAdditionalAction": "clickSubMenuAdditionalAction"; }, ["headerTpl", "footerTpl"], never, true, never>;
367
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtuiSideMenuComponent, "rtui-side-menu", never, { "activeMenuIds": { "alias": "activeMenuIds"; "required": true; "isSignal": true; }; "menuItems": { "alias": "menuItems"; "required": false; "isSignal": true; }; "subMenuMode": { "alias": "subMenuMode"; "required": false; "isSignal": true; }; "subMenuWidth": { "alias": "subMenuWidth"; "required": false; "isSignal": true; }; "isSubMenuXScrollEnabled": { "alias": "isSubMenuXScrollEnabled"; "required": false; "isSignal": true; }; "isMainMenuIconsOutlined": { "alias": "isMainMenuIconsOutlined"; "required": false; "isSignal": true; }; "isSubMenuIconsOutlined": { "alias": "isSubMenuIconsOutlined"; "required": false; "isSignal": true; }; "isSubMenuButtonIconsOutlined": { "alias": "isSubMenuButtonIconsOutlined"; "required": false; "isSignal": true; }; "isSubMenuTooltipsShown": { "alias": "isSubMenuTooltipsShown"; "required": false; "isSignal": true; }; }, { "subMenuModeChange": "subMenuModeChange"; "subMenuWidthChange": "subMenuWidthChange"; "closeMobileMenuAction": "closeMobileMenuAction"; "clickSubMenuAction": "clickSubMenuAction"; "clickSubMenuAdditionalAction": "clickSubMenuAdditionalAction"; }, ["headerTpl", "footerTpl"], never, true, never>;
195
368
  }
196
369
 
197
- declare class RtuiSpinnerComponent {
370
+ declare class RtuiSpinnerComponent implements OnInit {
371
+ #private;
198
372
  diameter: InputSignalWithTransform<number, number>;
199
373
  showBox: InputSignalWithTransform<boolean, boolean>;
200
374
  showBackground: InputSignalWithTransform<boolean, boolean>;
375
+ /**
376
+ * Сколько миллисекунд спиннер ждёт, прежде чем стать видимым.
377
+ *
378
+ * Умолчание — ноль: спиннер, вставленный без задержки, ведёт себя как прежде. Ожидание,
379
+ * кончившееся раньше срока, спиннера не показывает вовсе — вспышки на экране не случается.
380
+ */
381
+ delay: InputSignalWithTransform<number, number>;
382
+ /** Спиннер виден: задержки не назначали или её срок вышел. */
383
+ readonly visible: Signal<boolean>;
384
+ /**
385
+ * Отсчёт начинается на вставке, а не в конструкторе: до первого крючка вход держит своё
386
+ * умолчание, и задержка, названная потребителем, конструктору ещё не видна.
387
+ */
388
+ ngOnInit(): void;
201
389
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiSpinnerComponent, never>;
202
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiSpinnerComponent, "rtui-spinner", never, { "diameter": { "alias": "diameter"; "required": false; "isSignal": true; }; "showBox": { "alias": "showBox"; "required": false; "isSignal": true; }; "showBackground": { "alias": "showBackground"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
390
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtuiSpinnerComponent, "rtui-spinner", never, { "diameter": { "alias": "diameter"; "required": false; "isSignal": true; }; "showBox": { "alias": "showBox"; "required": false; "isSignal": true; }; "showBackground": { "alias": "showBackground"; "required": false; "isSignal": true; }; "delay": { "alias": "delay"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
203
391
  }
204
392
 
205
- type AsidePositions = 'left' | 'right';
393
+ type TAsidePositions = 'left' | 'right';
394
+ /**
395
+ * Чем шторке позволено закрываться. Клавиша по умолчанию не закрывает: её жмут, чтобы снять
396
+ * подсказку или выйти из поля, а закрывалась вся панель вместе с введённым.
397
+ */
398
+ interface IAsideConfig {
399
+ /** Закрывать ли шторку клавишей Esc. По умолчанию — нет. */
400
+ readonly closeOnEscape?: boolean;
401
+ /** Закрывать ли шторку кликом по подложке. По умолчанию — да. */
402
+ readonly closeOnBackdropClick?: boolean;
403
+ }
206
404
  declare class AsideRef<DATA, ANSWER> {
207
405
  private answer;
208
406
  overlayRef: OverlayRef;
209
407
  component: ComponentType<unknown>;
210
- position: AsidePositions;
408
+ position: TAsidePositions;
211
409
  data: DATA;
212
- constructor(answer: Subject<ANSWER | null>, overlayRef: OverlayRef, component: ComponentType<unknown>, position: AsidePositions, data: DATA);
410
+ constructor(answer: Subject<ANSWER | null>, overlayRef: OverlayRef, component: ComponentType<unknown>, position: TAsidePositions, data: DATA);
213
411
  close(answer?: ANSWER): void;
214
412
  }
215
413
  declare const ASIDE_REF: InjectionToken<AsideRef<object, object>>;
216
- declare const ddServices: Array<{
217
- provide: string;
218
- useValue: unknown;
219
- }>;
220
414
 
221
- declare enum ASIDE_BUTTONS_ENUM {
415
+ declare enum EAsideButtons {
222
416
  USER_ACTIVE = "User active",
223
417
  USER_INACTIVE = "User inactive",
224
418
  DELETE = "Delete",
225
419
  RESET = "Reset"
226
420
  }
227
- type AsideButtonsType = ASIDE_BUTTONS_ENUM.USER_ACTIVE | ASIDE_BUTTONS_ENUM.USER_INACTIVE | ASIDE_BUTTONS_ENUM.DELETE | ASIDE_BUTTONS_ENUM.RESET;
421
+ type TAsideButtonsType = EAsideButtons.USER_ACTIVE | EAsideButtons.USER_INACTIVE | EAsideButtons.DELETE | EAsideButtons.RESET;
228
422
 
229
423
  declare namespace IAside {
230
424
  interface HeaderActionButton {
231
- name: AsideButtonsType;
425
+ name: TAsideButtonsType;
232
426
  icon: string;
233
427
  color: string;
234
428
  tooltip: string;
@@ -238,6 +432,13 @@ declare namespace IAside {
238
432
 
239
433
  declare class RtAsideService {
240
434
  #private;
435
+ /**
436
+ * Закрытие каждой открытой панели объявлено один раз, а не заводится вызовом открытия.
437
+ *
438
+ * Потоки сливаются, а не сменяют друг друга: панели живут порознь, и оборванный поток
439
+ * предыдущей оставил бы её на экране — снять её после этого нечем.
440
+ */
441
+ constructor();
241
442
  /**
242
443
  * Opens an aside panel with a specified component, position, and data.
243
444
  *
@@ -251,7 +452,7 @@ declare class RtAsideService {
251
452
  *
252
453
  * @returns An observable that emits the response from the aside panel when it is closed.
253
454
  */
254
- Open<COMPONENT = null, DATA = null, ANSWER = null>(component: ComponentType$1<COMPONENT>, position: AsidePositions, data: DATA): Observable<ANSWER | null>;
455
+ open<COMPONENT = null, DATA = null, ANSWER = null>(component: ComponentType$1<COMPONENT>, position: TAsidePositions, data: DATA, config?: IAsideConfig): Observable<ANSWER | null>;
255
456
  static ɵfac: i0.ɵɵFactoryDeclaration<RtAsideService, never>;
256
457
  static ɵprov: i0.ɵɵInjectableDeclaration<RtAsideService>;
257
458
  }
@@ -261,34 +462,52 @@ declare class RtuiAsideContainerHeaderDirective {
261
462
  static ɵdir: i0.ɵɵDirectiveDeclaration<RtuiAsideContainerHeaderDirective, "[rtuiAsideHeader]", never, {}, {}, never, never, true, never>;
262
463
  }
263
464
  declare class RtuiAsideContainerComponent {
264
- title: InputSignal<INullable<string>>;
265
- isMobile: InputSignalWithTransform<INullable<boolean>, boolean>;
465
+ #private;
466
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
467
+ protected readonly narrow: Signal<boolean>;
468
+ title: InputSignal<TNullable<string>>;
266
469
  isSubmitButtonDisabled: InputSignalWithTransform<boolean, boolean>;
267
470
  isFooterShown: InputSignalWithTransform<boolean, boolean>;
268
471
  pending: InputSignalWithTransform<boolean, boolean>;
269
472
  isRequestErrorShown: InputSignalWithTransform<boolean, boolean>;
270
473
  headerActionsButtons: InputSignalWithTransform<IAside.HeaderActionButton[], IAside.HeaderActionButton[]>;
271
- requestError: InputSignal<INullable<unknown>>;
474
+ requestError: InputSignal<TNullable<unknown>>;
272
475
  submitButtonTitle: InputSignal<string>;
273
476
  cancelButtonTitle: InputSignal<string>;
274
477
  submitButtonTooltip: InputSignal<string>;
275
478
  readonly submitAction: OutputEmitterRef<void>;
276
479
  readonly cancelAction: OutputEmitterRef<void>;
277
- readonly headerAction: OutputEmitterRef<AsideButtonsType>;
278
- readonly headerTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
480
+ readonly headerAction: OutputEmitterRef<TAsideButtonsType>;
481
+ readonly headerTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
279
482
  onSubmit(): void;
280
483
  onCancel(): void;
281
- onHeaderActionClick(buttonName: AsideButtonsType): void;
484
+ onHeaderActionClick(buttonName: TAsideButtonsType): void;
282
485
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiAsideContainerComponent, never>;
283
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiAsideContainerComponent, "rtui-aside-container", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "isMobile": { "alias": "isMobile"; "required": true; "isSignal": true; }; "isSubmitButtonDisabled": { "alias": "isSubmitButtonDisabled"; "required": true; "isSignal": true; }; "isFooterShown": { "alias": "isFooterShown"; "required": false; "isSignal": true; }; "pending": { "alias": "pending"; "required": false; "isSignal": true; }; "isRequestErrorShown": { "alias": "isRequestErrorShown"; "required": false; "isSignal": true; }; "headerActionsButtons": { "alias": "headerActionsButtons"; "required": false; "isSignal": true; }; "requestError": { "alias": "requestError"; "required": false; "isSignal": true; }; "submitButtonTitle": { "alias": "submitButtonTitle"; "required": false; "isSignal": true; }; "cancelButtonTitle": { "alias": "cancelButtonTitle"; "required": false; "isSignal": true; }; "submitButtonTooltip": { "alias": "submitButtonTooltip"; "required": false; "isSignal": true; }; }, { "submitAction": "submitAction"; "cancelAction": "cancelAction"; "headerAction": "headerAction"; }, ["headerTpl"], ["*"], true, never>;
486
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtuiAsideContainerComponent, "rtui-aside-container", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "isSubmitButtonDisabled": { "alias": "isSubmitButtonDisabled"; "required": true; "isSignal": true; }; "isFooterShown": { "alias": "isFooterShown"; "required": false; "isSignal": true; }; "pending": { "alias": "pending"; "required": false; "isSignal": true; }; "isRequestErrorShown": { "alias": "isRequestErrorShown"; "required": false; "isSignal": true; }; "headerActionsButtons": { "alias": "headerActionsButtons"; "required": false; "isSignal": true; }; "requestError": { "alias": "requestError"; "required": false; "isSignal": true; }; "submitButtonTitle": { "alias": "submitButtonTitle"; "required": false; "isSignal": true; }; "cancelButtonTitle": { "alias": "cancelButtonTitle"; "required": false; "isSignal": true; }; "submitButtonTooltip": { "alias": "submitButtonTooltip"; "required": false; "isSignal": true; }; }, { "submitAction": "submitAction"; "cancelAction": "cancelAction"; "headerAction": "headerAction"; }, ["headerTpl"], ["*"], true, never>;
487
+ }
488
+
489
+ /**
490
+ * Виды кнопки — своим файлом, а не в файле компонента.
491
+ *
492
+ * Настройка кита называет вид кнопки по умолчанию и берёт эти же типы: объявленные в файле
493
+ * компонента, они замыкали круг «кнопка → настройка → кнопка». Круг из одних типов сборка
494
+ * переживает, но живёт он ровно до первой правки, которая добавит к нему значение.
495
+ */
496
+ declare namespace IRtuiButton {
497
+ type Type = 'icon' | 'fab' | 'pill';
498
+ type Variant = 'default' | 'primary' | 'danger' | 'success' | 'warning' | 'accent';
499
+ type Size = 'xs' | 'sm' | 'md' | 'lg';
500
+ type Radius = 'none' | 'sm' | 'md' | 'lg' | 'full';
501
+ type Appearance = 'solid' | 'outline' | 'light' | 'text';
502
+ type IconPosition = 'start' | 'end';
284
503
  }
285
504
 
286
- declare enum RT_THEME_ENUM {
505
+ declare enum ERtTheme {
287
506
  LIGHT = "light",
288
507
  DARK = "dark",
289
508
  AUTO = "auto"
290
509
  }
291
- type RtThemeType = `${RT_THEME_ENUM}`;
510
+ type TRtThemeType = `${ERtTheme}`;
292
511
  declare const RT_THEME_STORAGE_KEY: string;
293
512
  declare const RT_DARK_CLASS: string;
294
513
  declare const RT_THEME_AUTO_CLASS: string;
@@ -298,7 +517,7 @@ declare const RT_THEME_ATTRIBUTE: string;
298
517
  * color scheme may override. The semantic accent tier
299
518
  * (`--rt-bg/text/icon/border-accent-*`) derives entirely from these rows.
300
519
  */
301
- declare enum RT_ACCENT_ROLE_ENUM {
520
+ declare enum ERtAccentRole {
302
521
  PRIMARY = "primary",
303
522
  INFO = "info",
304
523
  SUCCESS = "success",
@@ -306,19 +525,19 @@ declare enum RT_ACCENT_ROLE_ENUM {
306
525
  DANGER = "danger",
307
526
  BRAND = "brand"
308
527
  }
309
- type RtAccentRole = `${RT_ACCENT_ROLE_ENUM}`;
528
+ type TRtAccentRole = `${ERtAccentRole}`;
310
529
  /**
311
530
  * A brand palette: per accent role, a tonal ramp mapping tone step (0–100)
312
531
  * to a CSS color. One ramp serves both light and dark (the mode picks the tone).
313
532
  * Partial ramps are allowed — unset tones keep the rt-tools defaults.
314
533
  *
315
534
  * @example
316
- * const teal: RtColorSchemeRamp = {
535
+ * const teal: TRtColorSchemeRamp = {
317
536
  * primary: { 20: '#b3e3e1', 40: '#5cb8b5', 60: '#1a9d99', 100: '#008582' },
318
537
  * brand: { 20: '#e8e8e8', 100: '#008582' },
319
538
  * };
320
539
  */
321
- type RtColorSchemeRamp = Partial<Record<RtAccentRole, Record<number, string>>>;
540
+ type TRtColorSchemeRamp = Partial<Record<TRtAccentRole, Record<number, string>>>;
322
541
  /** `'default'`/`null` clears the active scheme (back to the rt-tools palette). */
323
542
  declare const RT_DEFAULT_SCHEME: string;
324
543
  declare const RT_COLOR_SCHEME_STORAGE_KEY: string;
@@ -331,20 +550,20 @@ declare const RT_SCHEME_ATTRIBUTE: string;
331
550
  * (e.g. the button pill becomes a real `matButton`), for apps that have not
332
551
  * migrated their visual language yet or need to match surrounding Material controls.
333
552
  */
334
- type RtUiDesign = 'material' | 'custom';
553
+ type TRtUiDesign = 'material' | 'custom';
335
554
  declare namespace IRtUiConfig {
336
555
  /** Global defaults applied app-wide unless a component-level setting or an input overrides them. */
337
556
  interface Global {
338
557
  /** Initial theme used when the user has no persisted preference. */
339
- theme?: RtThemeType;
558
+ theme?: TRtThemeType;
340
559
  /** Initial brand color scheme (see `RtThemeService.registerColorScheme`) when none is persisted. */
341
560
  colorScheme?: string;
342
561
  /** Default design for every design-aware control. */
343
- design?: RtUiDesign;
562
+ design?: TRtUiDesign;
344
563
  }
345
564
  /** Per-instance-overridable defaults for `rtui-button`. */
346
565
  interface Button {
347
- design?: RtUiDesign;
566
+ design?: TRtUiDesign;
348
567
  size?: IRtuiButton.Size;
349
568
  radius?: IRtuiButton.Radius;
350
569
  appearance?: IRtuiButton.Appearance;
@@ -383,14 +602,14 @@ declare namespace IRtUiConfig {
383
602
  */
384
603
  declare const RT_UI_CONFIG: InjectionToken<IRtUiConfig.Config>;
385
604
 
386
- type RtuiIconSizeType = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | '3xl';
387
- type RtuiIconThemeType = 'inherit' | 'primary' | 'primary-strong' | 'neutral' | 'disabled' | 'muted' | 'white' | 'danger' | 'success';
605
+ type TRtuiIconSizeType = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | '3xl';
606
+ type TRtuiIconThemeType = 'inherit' | 'primary' | 'primary-strong' | 'neutral' | 'disabled' | 'muted' | 'white' | 'danger' | 'success';
388
607
  declare class RtuiIconComponent {
389
608
  #private;
390
609
  protected readonly fontLoaded: Signal<boolean>;
391
610
  protected readonly hostClasses: Signal<string>;
392
- readonly size: InputSignal<RtuiIconSizeType>;
393
- readonly theme: InputSignal<RtuiIconThemeType>;
611
+ readonly size: InputSignal<TRtuiIconSizeType>;
612
+ readonly theme: InputSignal<TRtuiIconThemeType>;
394
613
  readonly glyph: InputSignalWithTransform<string, unknown>;
395
614
  readonly outlined: InputSignalWithTransform<boolean, BooleanInput>;
396
615
  readonly rotate: InputSignalWithTransform<boolean, BooleanInput>;
@@ -399,35 +618,32 @@ declare class RtuiIconComponent {
399
618
  static ɵcmp: i0.ɵɵComponentDeclaration<RtuiIconComponent, "rtui-icon", never, { "size": { "alias": "size"; "required": false; "isSignal": true; }; "theme": { "alias": "theme"; "required": false; "isSignal": true; }; "glyph": { "alias": "glyph"; "required": false; "isSignal": true; }; "outlined": { "alias": "outlined"; "required": false; "isSignal": true; }; "rotate": { "alias": "rotate"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, [{ directive: typeof i1.MatTooltip; inputs: { "matTooltip": "tooltip"; "matTooltipPosition": "tooltipPosition"; "matTooltipDisabled": "tooltipDisabled"; }; outputs: {}; }]>;
400
619
  }
401
620
 
402
- declare namespace IRtuiButton {
403
- type Type = 'icon' | 'fab' | 'pill';
404
- type Variant = 'default' | 'primary' | 'danger' | 'success' | 'warning' | 'accent';
405
- type Size = 'xs' | 'sm' | 'md' | 'lg';
406
- type Radius = 'none' | 'sm' | 'md' | 'lg' | 'full';
407
- type Appearance = 'solid' | 'outline' | 'light' | 'text';
408
- type IconPosition = 'start' | 'end';
409
- }
410
621
  declare class RtuiButtonComponent {
411
622
  #private;
412
- /** Design system the button renders with — see {@link RtUiDesign}. */
413
- protected readonly resolvedDesign: Signal<RtUiDesign>;
623
+ /** Design system the button renders with — see {@link TRtUiDesign}. */
624
+ protected readonly resolvedDesign: Signal<TRtUiDesign>;
414
625
  protected readonly resolvedSize: Signal<IRtuiButton.Size>;
415
626
  protected readonly resolvedRadius: Signal<IRtuiButton.Radius>;
416
627
  protected readonly resolvedAppearance: Signal<IRtuiButton.Appearance | undefined>;
417
628
  /** Native Material button appearance the pill renders with under `design: 'material'`. */
418
629
  protected readonly materialAppearance: Signal<MatButtonAppearance>;
419
- protected readonly resolvedIconSize: Signal<RtuiIconSizeType>;
630
+ protected readonly resolvedIconSize: Signal<TRtuiIconSizeType>;
420
631
  protected readonly spinnerSize: Signal<number>;
421
632
  protected readonly modifiers: Signal<Record<string, boolean>>;
633
+ /**
634
+ * Те же модификаторы строкой — они висят на хосте, потому что описывают блок целиком.
635
+ * Директива модификатора сюда не дотянется: хост объявлен декоратором, а не разметкой.
636
+ */
637
+ protected readonly hostModifiers: Signal<string>;
422
638
  readonly type: InputSignal<IRtuiButton.Type>;
423
- readonly design: InputSignal<RtUiDesign | undefined>;
639
+ readonly design: InputSignal<TRtUiDesign | undefined>;
424
640
  readonly variant: InputSignal<IRtuiButton.Variant>;
425
641
  readonly appearance: InputSignal<IRtuiButton.Appearance | undefined>;
426
642
  readonly size: InputSignal<IRtuiButton.Size | undefined>;
427
643
  readonly radius: InputSignal<IRtuiButton.Radius | undefined>;
428
644
  readonly icon: InputSignalWithTransform<string, unknown>;
429
645
  readonly iconPosition: InputSignal<IRtuiButton.IconPosition>;
430
- readonly iconSize: InputSignal<RtuiIconSizeType | undefined>;
646
+ readonly iconSize: InputSignal<TRtuiIconSizeType | undefined>;
431
647
  readonly text: InputSignalWithTransform<string, unknown>;
432
648
  readonly loading: InputSignalWithTransform<boolean, BooleanInput>;
433
649
  readonly disabled: InputSignalWithTransform<boolean, BooleanInput>;
@@ -463,10 +679,10 @@ declare class RtuiToolbarRightDirective {
463
679
  }
464
680
  declare class RtuiToolbarComponent {
465
681
  isVisibleToolbar: Signal<boolean>;
466
- readonly leftToolTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
467
- readonly centerToolTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
468
- readonly rightToolTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
469
- sticky: InputSignalWithTransform<INullable<boolean>, boolean>;
682
+ readonly leftToolTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
683
+ readonly centerToolTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
684
+ readonly rightToolTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
685
+ sticky: InputSignalWithTransform<TNullable<boolean>, boolean>;
470
686
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiToolbarComponent, never>;
471
687
  static ɵcmp: i0.ɵɵComponentDeclaration<RtuiToolbarComponent, "rtui-toolbar", never, { "isVisibleToolbar": { "alias": "isVisibleToolbar"; "required": false; "isSignal": true; }; "sticky": { "alias": "sticky"; "required": false; "isSignal": true; }; }, {}, ["leftToolTpl", "centerToolTpl", "rightToolTpl"], never, true, never>;
472
688
  }
@@ -484,73 +700,20 @@ declare class RtuiHeaderRightDirective {
484
700
  static ɵdir: i0.ɵɵDirectiveDeclaration<RtuiHeaderRightDirective, "[rtuiHeaderRight]", never, {}, {}, never, never, true, never>;
485
701
  }
486
702
  declare class RtuiHeaderComponent {
487
- isMobile: InputSignalWithTransform<INullable<boolean>, INullable<boolean>>;
488
- isMobileMenuButtonShown: InputSignalWithTransform<INullable<boolean>, INullable<boolean>>;
489
- readonly leftHeaderTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
490
- readonly centerHeaderTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
491
- readonly rightHeaderTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
703
+ #private;
704
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
705
+ protected readonly narrow: Signal<boolean>;
706
+ isMobileMenuButtonShown: InputSignalWithTransform<TNullable<boolean>, TNullable<boolean>>;
707
+ readonly leftHeaderTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
708
+ readonly centerHeaderTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
709
+ readonly rightHeaderTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
492
710
  readonly openMobileMenuAction: OutputEmitterRef<void>;
493
711
  openSideMenu(): void;
494
712
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiHeaderComponent, never>;
495
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiHeaderComponent, "rtui-header", never, { "isMobile": { "alias": "isMobile"; "required": false; "isSignal": true; }; "isMobileMenuButtonShown": { "alias": "isMobileMenuButtonShown"; "required": false; "isSignal": true; }; }, { "openMobileMenuAction": "openMobileMenuAction"; }, ["leftHeaderTpl", "centerHeaderTpl", "rightHeaderTpl"], never, true, never>;
496
- }
497
-
498
- declare class RtuiClearButtonComponent {
499
- #private;
500
- isMobile: InputSignalWithTransform<INullable<boolean>, boolean>;
501
- isButtonShown: InputSignalWithTransform<INullable<boolean>, boolean>;
502
- tooltip: InputSignalWithTransform<INullable<string>, string>;
503
- tooltipPosition: InputSignal<TooltipPosition>;
504
- readonly keydownAction: OutputEmitterRef<void>;
505
- readonly clickAction: OutputEmitterRef<void>;
506
- onKeydown(): void;
507
- onClick(): void;
508
- static ɵfac: i0.ɵɵFactoryDeclaration<RtuiClearButtonComponent, never>;
509
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiClearButtonComponent, "rtui-clear-button", never, { "isMobile": { "alias": "isMobile"; "required": false; "isSignal": true; }; "isButtonShown": { "alias": "isButtonShown"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; }, { "keydownAction": "keydownAction"; "clickAction": "clickAction"; }, never, never, true, never>;
713
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtuiHeaderComponent, "rtui-header", never, { "isMobileMenuButtonShown": { "alias": "isMobileMenuButtonShown"; "required": false; "isSignal": true; }; }, { "openMobileMenuAction": "openMobileMenuAction"; }, ["leftHeaderTpl", "centerHeaderTpl", "rightHeaderTpl"], never, true, never>;
510
714
  }
511
715
 
512
- declare class RtuiPaginationComponent implements OnInit, AfterViewInit {
513
- #private;
514
- /** Current Page Model */
515
- currentPageModel: InputSignal<IPageModel>;
516
- /** Indicates is mobile view */
517
- isMobile: InputSignalWithTransform<INullable<boolean>, boolean>;
518
- /** Output action when Page Model changed */
519
- readonly pageModelChange: OutputEmitterRef<Partial<IPageModel>>;
520
- /** Form control for selected page size */
521
- control: FormControl<number>;
522
- readonly divider: Signal<string>;
523
- /** Page size options */
524
- readonly pageSizes: Signal<number[]>;
525
- /** Array of current page numbers */
526
- readonly numbers: WritableSignal<Array<number | string>>;
527
- /** Page Model for compare */
528
- readonly previousPageModel: WritableSignal<INullable<IPageModel>>;
529
- /** Value of full content width */
530
- readonly minContentFitWidth: WritableSignal<number>;
531
- /** Indicates is content clipped */
532
- readonly isContentClipped: WritableSignal<boolean>;
533
- /** Container template ref */
534
- readonly containerRef: Signal<INullable<ElementRef<HTMLElement>>>;
535
- /** Set 'isContentClipped' when widow resize */
536
- onResize(): void;
537
- ngOnInit(): void;
538
- /** Set 'isContentClipped' on init */
539
- ngAfterViewInit(): void;
540
- /** Action for change Page Model */
541
- changePageSize(pageSize: number): void;
542
- /** Action for select page */
543
- onChangePageNumber(pageNumber: string | number): void;
544
- static ɵfac: i0.ɵɵFactoryDeclaration<RtuiPaginationComponent, never>;
545
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiPaginationComponent, "rtui-pagination", never, { "currentPageModel": { "alias": "currentPageModel"; "required": true; "isSignal": true; }; "isMobile": { "alias": "isMobile"; "required": true; "isSignal": true; }; }, { "pageModelChange": "pageModelChange"; }, never, never, true, never>;
546
- }
547
-
548
- declare const RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE: string;
549
-
550
- declare const DEFAULT_PAGE_SIZE: number;
551
- declare const DEFAULT_PAGE_MODEL: Readonly<IPageModel>;
552
-
553
- declare enum TABLE_COLUMN_TYPES_ENUM {
716
+ declare enum ETableColumnTypes {
554
717
  DATE = "date",
555
718
  PERCENT = "percent",
556
719
  ARRAY = "array",
@@ -559,13 +722,13 @@ declare enum TABLE_COLUMN_TYPES_ENUM {
559
722
  CURRENCY = "currency",
560
723
  CUSTOM = "custom"
561
724
  }
562
- declare enum TABLE_COLUMN_FILTER_TYPES_ENUM {
725
+ declare enum ETableColumnFilterTypes {
563
726
  TEXT = "text",
564
727
  NUMBER = "number",
565
728
  SELECT = "select",
566
729
  DATE = "date"
567
730
  }
568
- declare enum TEXT_CELL_COLOR_ENUM {
731
+ declare enum ETextCellColor {
569
732
  NEUTRAL = "neutral",
570
733
  DANGER = "danger",
571
734
  WARNING = "warning",
@@ -573,9 +736,9 @@ declare enum TEXT_CELL_COLOR_ENUM {
573
736
  EMPTY = "empty"
574
737
  }
575
738
  declare namespace ITable {
576
- type TextCellColor = TEXT_CELL_COLOR_ENUM.NEUTRAL | TEXT_CELL_COLOR_ENUM.DANGER | TEXT_CELL_COLOR_ENUM.WARNING | TEXT_CELL_COLOR_ENUM.SUCCESS | TEXT_CELL_COLOR_ENUM.EMPTY;
577
- type Type = TABLE_COLUMN_TYPES_ENUM.DATE | TABLE_COLUMN_TYPES_ENUM.PERCENT | TABLE_COLUMN_TYPES_ENUM.ARRAY | TABLE_COLUMN_TYPES_ENUM.BOOLEAN | TABLE_COLUMN_TYPES_ENUM.TEXT | TABLE_COLUMN_TYPES_ENUM.CURRENCY | TABLE_COLUMN_TYPES_ENUM.CUSTOM;
578
- type FilterType = TABLE_COLUMN_FILTER_TYPES_ENUM.TEXT | TABLE_COLUMN_FILTER_TYPES_ENUM.NUMBER | TABLE_COLUMN_FILTER_TYPES_ENUM.SELECT | TABLE_COLUMN_FILTER_TYPES_ENUM.DATE;
739
+ type TextCellColor = ETextCellColor.NEUTRAL | ETextCellColor.DANGER | ETextCellColor.WARNING | ETextCellColor.SUCCESS | ETextCellColor.EMPTY;
740
+ type Type = ETableColumnTypes.DATE | ETableColumnTypes.PERCENT | ETableColumnTypes.ARRAY | ETableColumnTypes.BOOLEAN | ETableColumnTypes.TEXT | ETableColumnTypes.CURRENCY | ETableColumnTypes.CUSTOM;
741
+ type FilterType = ETableColumnFilterTypes.TEXT | ETableColumnFilterTypes.NUMBER | ETableColumnFilterTypes.SELECT | ETableColumnFilterTypes.DATE;
579
742
  interface Column<T = Record<string, unknown>> extends Record<string, unknown> {
580
743
  align: 'right' | 'left' | 'center';
581
744
  propName: keyof T;
@@ -595,8 +758,8 @@ declare namespace ITable {
595
758
  tooltip?: string;
596
759
  transform?: (value: T[keyof T]) => string | number;
597
760
  filterType?: FilterType;
598
- defaultFilterOperator?: FilterOperatorType;
599
- filterOperators?: FilterOperatorType[];
761
+ defaultFilterOperator?: TFilterOperatorType;
762
+ filterOperators?: TFilterOperatorType[];
600
763
  filterSelectOptions?: string[];
601
764
  displayName?: string;
602
765
  orderIndex?: number;
@@ -639,20 +802,20 @@ declare namespace ITable {
639
802
  declare const RTUI_TABLE_COMPONENT_TOKEN: InjectionToken<IRtuiTable<Record<string, unknown>, string, string>>;
640
803
  interface IRtuiTable<ENTITY_TYPE extends Record<string, unknown>, SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>, KEY extends Extract<keyof ENTITY_TYPE, string>> {
641
804
  columns: Signal<Array<ITable.Column<ENTITY_TYPE>>>;
642
- customCellsTpl: Signal<INullable<{
805
+ customCellsTpl: Signal<TNullable<{
643
806
  getTemplateByPropName(propName: keyof ENTITY_TYPE): TemplateRef<{
644
807
  $implicit: ENTITY_TYPE;
645
808
  }>;
646
809
  }>>;
647
- rowActionsTpl: Signal<INullable<TemplateRef<{
810
+ rowActionsTpl: Signal<TNullable<TemplateRef<{
648
811
  $implicit: ENTITY_TYPE;
649
812
  }>>>;
650
- additionalRowActionsTpl: Signal<INullable<TemplateRef<unknown>>>;
651
- isMobile: Signal<boolean>;
813
+ additionalRowActionsTpl: Signal<TNullable<TemplateRef<unknown>>>;
814
+ narrow: Signal<boolean>;
652
815
  isTableRowsClickable: Signal<boolean>;
653
816
  keyExp: Signal<NonNullable<KEY>>;
654
817
  entities: Signal<ENTITY_TYPE[]>;
655
- currentSortModel: Signal<INullable<ISortModel<SORT_PROPERTY>>>;
818
+ currentSortModel: Signal<TNullable<ISortModel<SORT_PROPERTY>>>;
656
819
  appearance: Signal<MatFormFieldAppearance>;
657
820
  filterAppearance: Signal<MatFormFieldAppearance>;
658
821
  filterModel: Signal<IFilterModel<KEY>[]>;
@@ -663,7 +826,7 @@ interface IRtuiTable<ENTITY_TYPE extends Record<string, unknown>, SORT_PROPERTY
663
826
  isMultiSelect: WritableSignal<boolean>;
664
827
  isSelectorsColumnShown: WritableSignal<boolean>;
665
828
  isSelectorsColumnDisabled: WritableSignal<boolean>;
666
- activeRowIndex: WritableSignal<INullable<number>>;
829
+ activeRowIndex: WritableSignal<TNullable<number>>;
667
830
  onSortChange(sortModel: ISortModel): void;
668
831
  onFilterChange(filterModel: IFilterModel<KEY>[]): void;
669
832
  onMenuOpen(index: number): void;
@@ -674,103 +837,6 @@ interface IRtuiTable<ENTITY_TYPE extends Record<string, unknown>, SORT_PROPERTY
674
837
  onTogglePageEntities(checked: boolean): void;
675
838
  }
676
839
 
677
- declare class RtTableConfigService<ENTITY_TYPE> {
678
- #private;
679
- readonly tableConfig: Signal<ITable.Config.Data<ENTITY_TYPE>>;
680
- initConfig(storageKey: string, config: Array<ITable.Column<ENTITY_TYPE>>): void;
681
- updateConfig(storageKey: string, config: ITable.Config.Data<ENTITY_TYPE>): void;
682
- deleteConfig(storageKey: string): void;
683
- static ɵfac: i0.ɵɵFactoryDeclaration<RtTableConfigService<any>, never>;
684
- static ɵprov: i0.ɵɵInjectableDeclaration<RtTableConfigService<any>>;
685
- }
686
-
687
- declare class RtCommonSelectorsDirective<ENTITY_TYPE extends Record<string, unknown>, KEY extends Extract<keyof ENTITY_TYPE, string>> {
688
- /** Indicates is multiselect available */
689
- isMultiSelect: InputSignalWithTransform<boolean, boolean>;
690
- /** Indicates is 'Select all' checkbox shown */
691
- isSelectorColumnShown: InputSignalWithTransform<boolean, boolean>;
692
- /** Indicates is selectors column disabled */
693
- isSelectorsColumnDisabled: InputSignalWithTransform<boolean, boolean>;
694
- /** Selected entities Ids on init */
695
- selectedEntitiesKeys: InputSignalWithTransform<ENTITY_TYPE[KEY][], ENTITY_TYPE[KEY][]>;
696
- /** Key of ENTITY_TYPE for compare entities */
697
- readonly keyExp: WritableSignal<NonNullable<KEY>>;
698
- /** Current list of entities */
699
- readonly entities: WritableSignal<ENTITY_TYPE[]>;
700
- /** Add page entities to list exclude duplicates */
701
- addPageEntitiesToListExcludeDuplicates(list: ENTITY_TYPE[]): ENTITY_TYPE[];
702
- /** Remove page entities from list */
703
- removePageEntitiesFromList(list: ENTITY_TYPE[]): ENTITY_TYPE[];
704
- /** Check is one of page entities exist in selected entities */
705
- isOneExistOnPage(selectedEntitiesIds: ENTITY_TYPE[KEY][]): boolean;
706
- /** Check is all page entities exist in selected entities */
707
- isAllExistOnPage(selectedEntitiesIds: ENTITY_TYPE[KEY][]): boolean;
708
- static ɵfac: i0.ɵɵFactoryDeclaration<RtCommonSelectorsDirective<any, any>, never>;
709
- static ɵdir: i0.ɵɵDirectiveDeclaration<RtCommonSelectorsDirective<any, any>, never, never, { "isMultiSelect": { "alias": "isMultiSelect"; "required": false; "isSignal": true; }; "isSelectorColumnShown": { "alias": "isSelectorColumnShown"; "required": false; "isSignal": true; }; "isSelectorsColumnDisabled": { "alias": "isSelectorsColumnDisabled"; "required": false; "isSignal": true; }; "selectedEntitiesKeys": { "alias": "selectedEntitiesKeys"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
710
- }
711
-
712
- declare class RtDynamicListSelectorsDirective<ENTITY_TYPE extends Record<string, unknown>, SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>, KEY extends Extract<keyof ENTITY_TYPE, string>> extends RtCommonSelectorsDirective<ENTITY_TYPE, KEY> implements OnInit {
713
- #private;
714
- /** Indicates is multiselect extended mod available (use selected and excluded lists) */
715
- isMultiSelectExtendedMod: InputSignalWithTransform<boolean, boolean>;
716
- /** Indicates is 'Select all' checkbox shown */
717
- isSelectAllSelectorShown: InputSignalWithTransform<boolean, boolean>;
718
- /** List of selected entities */
719
- readonly selectedEntities: Signal<ENTITY_TYPE[]>;
720
- /** List of excluded entities */
721
- readonly excludedEntities: Signal<ENTITY_TYPE[]>;
722
- /** List of selected entities ids */
723
- readonly selectedEntitiesIds: Signal<ENTITY_TYPE[KEY][]>;
724
- /** List of excluded entities ids */
725
- readonly excludedEntitiesIds: Signal<ENTITY_TYPE[KEY][]>;
726
- /** Indicates is 'Select All' checkbox selected */
727
- readonly isAllEntitiesSelected: Signal<boolean>;
728
- /** Indicates is all page entities checkbox selected */
729
- readonly isPageEntitiesSelected: Signal<boolean>;
730
- /** Indicates is page entities checkbox indeterminate */
731
- readonly isPageEntitiesIndeterminate: Signal<boolean>;
732
- /** Indicates is multi select extended mod enabled */
733
- readonly isMultiSelectExtendedModEnabled: Signal<boolean>;
734
- ngOnInit(): void;
735
- /** Change selected entities list and 'isAllEntitiesSelected' indicator state */
736
- toggleAllEntities(checked: boolean): void;
737
- /** Change selected and excluded lists, set 'isPageEntitiesSelected' and 'isAllEntitiesSelected' indicators states */
738
- togglePageEntities(checked: boolean): void;
739
- /** Change selected and excluded lists and set is existing selected and is all selected states */
740
- toggleEntity(entity: ENTITY_TYPE, checked: boolean): void;
741
- /** Clear selected list */
742
- clearSelectedList(): void;
743
- /** Clear excluded list */
744
- clearExcludedList(): void;
745
- /** Set is existing selected and indeterminate state */
746
- setExistingEntitiesState(): void;
747
- static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicListSelectorsDirective<any, any, any>, never>;
748
- static ɵdir: i0.ɵɵDirectiveDeclaration<RtDynamicListSelectorsDirective<any, any, any>, "rtui-dynamic-list[rtDynamicListSelectorsDirective]", never, { "isMultiSelectExtendedMod": { "alias": "isMultiSelectExtendedMod"; "required": false; "isSignal": true; }; "isSelectAllSelectorShown": { "alias": "isSelectAllSelectorShown"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
749
- }
750
-
751
- declare class RtTableSelectorsDirective<ENTITY_TYPE extends Record<string, unknown>, SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>, KEY extends Extract<keyof ENTITY_TYPE, string>> extends RtCommonSelectorsDirective<ENTITY_TYPE, KEY> implements OnInit {
752
- #private;
753
- /** List of selected entities */
754
- readonly selectedEntities: Signal<ENTITY_TYPE[]>;
755
- /** List of selected entities ids */
756
- readonly selectedEntitiesIds: Signal<ENTITY_TYPE[KEY][]>;
757
- /** Indicates is all page entities checkbox selected */
758
- readonly isPageEntitiesSelected: Signal<boolean>;
759
- /** Indicates is page entities checkbox indeterminate */
760
- readonly isPageEntitiesIndeterminate: Signal<boolean>;
761
- ngOnInit(): void;
762
- /** Change selected and excluded lists, set 'isPageEntitiesSelected' and 'isAllEntitiesSelected' indicators states */
763
- togglePageEntities(checked: boolean): void;
764
- /** Change selected and excluded lists and set is existing selected and is all selected states */
765
- toggleEntity(entity: ENTITY_TYPE, checked: boolean): void;
766
- /** Clear selected list */
767
- clearSelectedList(): void;
768
- /** Set is existing selected and indeterminate state */
769
- setExistingEntitiesState(): void;
770
- static ɵfac: i0.ɵɵFactoryDeclaration<RtTableSelectorsDirective<any, any, any>, never>;
771
- static ɵdir: i0.ɵɵDirectiveDeclaration<RtTableSelectorsDirective<any, any, any>, "rtui-table[rtTableSelectorsDirective]", never, {}, {}, never, never, true, never>;
772
- }
773
-
774
840
  /** Directive for custom table cells */
775
841
  declare class RtuiCustomTableCellsDirective<ENTITY_TYPE> {
776
842
  cellsTemplates: InputSignal<{
@@ -796,13 +862,14 @@ declare class RtuiTableAdditionalRowActionsDirective {
796
862
  }
797
863
  declare class RtuiTableComponent<ENTITY_TYPE extends Record<string, unknown>, SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>, KEY extends Extract<keyof ENTITY_TYPE, string>> implements IRtuiTable<ENTITY_TYPE, SORT_PROPERTY, KEY>, AfterViewChecked {
798
864
  #private;
799
- protected readonly rowActions: Signal<INullable<ElementRef<HTMLElement>>>;
800
- protected readonly rowActionsHeaderPaddingHelper: Signal<INullable<ElementRef<HTMLElement>>>;
801
- protected readonly rowActionsPaddingHelper: Signal<INullable<ElementRef<HTMLElement>>>;
802
- protected readonly columnTypes: typeof TABLE_COLUMN_TYPES_ENUM;
803
- protected readonly filterOperators: typeof FILTER_OPERATOR_TYPE_ENUM;
865
+ protected readonly rowActions: Signal<TNullable<ElementRef<HTMLElement>>>;
866
+ protected readonly rowActionsHeaderPaddingHelper: Signal<TNullable<ElementRef<HTMLElement>>>;
867
+ protected readonly rowActionsPaddingHelper: Signal<TNullable<ElementRef<HTMLElement>>>;
868
+ protected readonly columnTypes: typeof ETableColumnTypes;
869
+ protected readonly filterOperators: typeof EFilterOperatorType;
804
870
  /** Indicates is mobile view */
805
- isMobile: InputSignalWithTransform<boolean, BooleanInput>;
871
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
872
+ readonly narrow: Signal<boolean>;
806
873
  /** Indicates are table rows clickable */
807
874
  isTableRowsClickable: InputSignalWithTransform<boolean, BooleanInput>;
808
875
  /** Key of ENTITY_TYPE for compare entities */
@@ -810,7 +877,7 @@ declare class RtuiTableComponent<ENTITY_TYPE extends Record<string, unknown>, SO
810
877
  /** List of entities */
811
878
  entities: InputSignalWithTransform<ENTITY_TYPE[], ENTITY_TYPE[]>;
812
879
  /** Current page model from store */
813
- currentSortModel: InputSignal<INullable<ISortModel<SORT_PROPERTY>>>;
880
+ currentSortModel: InputSignal<TNullable<ISortModel<SORT_PROPERTY>>>;
814
881
  /** Current elements appearance */
815
882
  appearance: InputSignal<MatFormFieldAppearance>;
816
883
  /** Filter inputs appearance */
@@ -833,13 +900,13 @@ declare class RtuiTableComponent<ENTITY_TYPE extends Record<string, unknown>, SO
833
900
  /** Columns config for table */
834
901
  columns: Signal<Array<ITable.Column<ENTITY_TYPE>>>;
835
902
  /** Custom cells template */
836
- readonly customCellsTpl: Signal<INullable<RtuiCustomTableCellsDirective<ENTITY_TYPE>>>;
903
+ readonly customCellsTpl: Signal<TNullable<RtuiCustomTableCellsDirective<ENTITY_TYPE>>>;
837
904
  /** Row actions template */
838
- readonly rowActionsTpl: Signal<INullable<TemplateRef<{
905
+ readonly rowActionsTpl: Signal<TNullable<TemplateRef<{
839
906
  $implicit: ENTITY_TYPE;
840
907
  }>>>;
841
908
  /** Additional row actions template */
842
- readonly additionalRowActionsTpl: Signal<INullable<TemplateRef<RtuiTableAdditionalRowActionsDirective>>>;
909
+ readonly additionalRowActionsTpl: Signal<TNullable<TemplateRef<RtuiTableAdditionalRowActionsDirective>>>;
843
910
  /** Fields specified by the directive */
844
911
  /** List of selected entities ids */
845
912
  readonly selectedEntitiesIds: WritableSignal<ENTITY_TYPE[KEY][]>;
@@ -854,9 +921,16 @@ declare class RtuiTableComponent<ENTITY_TYPE extends Record<string, unknown>, SO
854
921
  /** Indicates is selectors column disabled */
855
922
  readonly isSelectorsColumnDisabled: WritableSignal<boolean>;
856
923
  /** Current row index */
857
- readonly activeRowIndex: WritableSignal<INullable<number>>;
924
+ readonly activeRowIndex: WritableSignal<TNullable<number>>;
858
925
  ngAfterViewChecked(): void;
859
- /** Sort change output action */
926
+ /**
927
+ * Sort change output action.
928
+ *
929
+ * Имя колонки приходит строкой, а наружу уходит ключом домена. Приведение здесь принимало
930
+ * любую строку: колонка, которой в наборе нет, уезжала потребителю законным значением, и
931
+ * ни сборка, ни типы этого не видели. Сверяется оно с тем же набором колонок, который
932
+ * рисует таблица, — второго списка имён у неё нет; несовпавшее не отдаётся вовсе.
933
+ */
860
934
  onSortChange(sortModel: ISortModel<string>): void;
861
935
  /** Filter change output action */
862
936
  onFilterChange(filterModel: IFilterModel<KEY>[]): void;
@@ -872,18 +946,18 @@ declare class RtuiTableComponent<ENTITY_TYPE extends Record<string, unknown>, SO
872
946
  onToggleEntity: (entity: ENTITY_TYPE, checked: boolean) => void;
873
947
  onTogglePageEntities: (checked: boolean) => void;
874
948
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiTableComponent<any, any, any>, never>;
875
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiTableComponent<any, any, any>, "rtui-table", never, { "isMobile": { "alias": "isMobile"; "required": false; "isSignal": true; }; "isTableRowsClickable": { "alias": "isTableRowsClickable"; "required": false; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": false; "isSignal": true; }; "entities": { "alias": "entities"; "required": true; "isSignal": true; }; "currentSortModel": { "alias": "currentSortModel"; "required": true; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": true; "isSignal": true; }; "filterAppearance": { "alias": "filterAppearance"; "required": false; "isSignal": true; }; "filterModel": { "alias": "filterModel"; "required": false; "isSignal": true; }; "isFiltersShown": { "alias": "isFiltersShown"; "required": false; "isSignal": true; }; }, { "rowClick": "rowClick"; "rowDoubleClick": "rowDoubleClick"; "sortChange": "sortChange"; "filterChange": "filterChange"; }, ["customCellsTpl", "rowActionsTpl", "additionalRowActionsTpl"], never, true, never>;
949
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtuiTableComponent<any, any, any>, "rtui-table", never, { "isTableRowsClickable": { "alias": "isTableRowsClickable"; "required": false; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": false; "isSignal": true; }; "entities": { "alias": "entities"; "required": true; "isSignal": true; }; "currentSortModel": { "alias": "currentSortModel"; "required": true; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": true; "isSignal": true; }; "filterAppearance": { "alias": "filterAppearance"; "required": false; "isSignal": true; }; "filterModel": { "alias": "filterModel"; "required": false; "isSignal": true; }; "isFiltersShown": { "alias": "isFiltersShown"; "required": false; "isSignal": true; }; }, { "rowClick": "rowClick"; "rowDoubleClick": "rowDoubleClick"; "sortChange": "sortChange"; "filterChange": "filterChange"; }, ["customCellsTpl", "rowActionsTpl", "additionalRowActionsTpl"], never, true, never>;
876
950
  }
877
951
 
878
952
  declare class RtuiTableContainerComponent<ENTITY_TYPE> implements OnInit {
879
953
  #private;
954
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
955
+ protected readonly narrow: Signal<boolean>;
880
956
  appearance: InputSignal<MatFormFieldAppearance>;
881
957
  /** Table config storage key */
882
958
  tableConfigStorageKey: InputSignalWithTransform<string, string>;
883
959
  /** Current page model from store */
884
960
  pageModel: InputSignal<IPageModel>;
885
- /** Indicates is mobile view */
886
- isMobile: InputSignalWithTransform<boolean, BooleanInput>;
887
961
  /** Indicates is loading in progress */
888
962
  loading: InputSignalWithTransform<boolean, BooleanInput>;
889
963
  /** Indicates is fetching in progress */
@@ -903,27 +977,27 @@ declare class RtuiTableContainerComponent<ENTITY_TYPE> implements OnInit {
903
977
  /** Indicates is filters empty */
904
978
  isFiltersEmpty: InputSignalWithTransform<boolean, BooleanInput>;
905
979
  /** Current search term from store */
906
- searchTerm: InputSignalWithTransform<INullable<string>, INullable<string>>;
980
+ searchTerm: InputSignalWithTransform<TNullable<string>, TNullable<string>>;
907
981
  /** Current placeholder icon */
908
982
  placeholderIcon: InputSignal<string>;
909
983
  /** Current placeholder title */
910
984
  placeholderTitle: InputSignal<string>;
911
985
  /** Indicates is a small tablet view */
912
- readonly isSmallTablet: Signal<INullable<boolean>>;
986
+ readonly isSmallTablet: Signal<TNullable<boolean>>;
913
987
  /** Config for table */
914
988
  readonly tableConfig: Signal<ITable.Config.Data<ENTITY_TYPE>>;
915
989
  /** Page model change output action */
916
990
  readonly pageModelChange: OutputEmitterRef<Partial<IPageModel>>;
917
991
  /** Search change output action */
918
- readonly searchChange: OutputEmitterRef<INullable<string>>;
992
+ readonly searchChange: OutputEmitterRef<TNullable<string>>;
919
993
  /** Refresh output action */
920
994
  readonly refreshAction: OutputEmitterRef<void>;
921
995
  /** Clear filters output action */
922
996
  readonly clearFiltersAction: OutputEmitterRef<void>;
923
997
  /** Toolbar selectors template */
924
- readonly toolbarSelectorsTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
998
+ readonly toolbarSelectorsTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
925
999
  /** Toolbar actions template */
926
- readonly toolbarActionsTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
1000
+ readonly toolbarActionsTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
927
1001
  /** Fields specified by the directive */
928
1002
  /** Indicates is multiselect mod enabled */
929
1003
  readonly isMultiSelect: WritableSignal<boolean>;
@@ -938,7 +1012,7 @@ declare class RtuiTableContainerComponent<ENTITY_TYPE> implements OnInit {
938
1012
  /** Current selected entities count */
939
1013
  readonly selectedEntitiesCount: WritableSignal<number>;
940
1014
  /** Control for search */
941
- readonly searchControl: FormControl<INullable<string>>;
1015
+ readonly searchControl: FormControl<TNullable<string>>;
942
1016
  ngOnInit(): void;
943
1017
  /** Page model change output action */
944
1018
  onPageModelChange(pageModel: Partial<IPageModel>): void;
@@ -953,7 +1027,7 @@ declare class RtuiTableContainerComponent<ENTITY_TYPE> implements OnInit {
953
1027
  /** Empty method, set in selectors directive */
954
1028
  onToggleAllEntities: (checked: boolean) => void;
955
1029
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiTableContainerComponent<any>, never>;
956
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiTableContainerComponent<any>, "rtui-table-container", never, { "appearance": { "alias": "appearance"; "required": true; "isSignal": true; }; "tableConfigStorageKey": { "alias": "tableConfigStorageKey"; "required": true; "isSignal": true; }; "pageModel": { "alias": "pageModel"; "required": true; "isSignal": true; }; "isMobile": { "alias": "isMobile"; "required": true; "isSignal": true; }; "loading": { "alias": "loading"; "required": true; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": true; "isSignal": true; }; "isPlaceholderShown": { "alias": "isPlaceholderShown"; "required": true; "isSignal": true; }; "isPaginationShown": { "alias": "isPaginationShown"; "required": false; "isSignal": true; }; "isRefreshButtonShown": { "alias": "isRefreshButtonShown"; "required": false; "isSignal": true; }; "isTableConfigButtonShown": { "alias": "isTableConfigButtonShown"; "required": false; "isSignal": true; }; "isToolbarActionsIconsOutlined": { "alias": "isToolbarActionsIconsOutlined"; "required": false; "isSignal": true; }; "isFiltersShown": { "alias": "isFiltersShown"; "required": false; "isSignal": true; }; "isFiltersEmpty": { "alias": "isFiltersEmpty"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "placeholderIcon": { "alias": "placeholderIcon"; "required": false; "isSignal": true; }; "placeholderTitle": { "alias": "placeholderTitle"; "required": false; "isSignal": true; }; }, { "pageModelChange": "pageModelChange"; "searchChange": "searchChange"; "refreshAction": "refreshAction"; "clearFiltersAction": "clearFiltersAction"; }, ["toolbarSelectorsTpl", "toolbarActionsTpl"], ["*"], true, never>;
1030
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtuiTableContainerComponent<any>, "rtui-table-container", never, { "appearance": { "alias": "appearance"; "required": true; "isSignal": true; }; "tableConfigStorageKey": { "alias": "tableConfigStorageKey"; "required": true; "isSignal": true; }; "pageModel": { "alias": "pageModel"; "required": true; "isSignal": true; }; "loading": { "alias": "loading"; "required": true; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": true; "isSignal": true; }; "isPlaceholderShown": { "alias": "isPlaceholderShown"; "required": true; "isSignal": true; }; "isPaginationShown": { "alias": "isPaginationShown"; "required": false; "isSignal": true; }; "isRefreshButtonShown": { "alias": "isRefreshButtonShown"; "required": false; "isSignal": true; }; "isTableConfigButtonShown": { "alias": "isTableConfigButtonShown"; "required": false; "isSignal": true; }; "isToolbarActionsIconsOutlined": { "alias": "isToolbarActionsIconsOutlined"; "required": false; "isSignal": true; }; "isFiltersShown": { "alias": "isFiltersShown"; "required": false; "isSignal": true; }; "isFiltersEmpty": { "alias": "isFiltersEmpty"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "placeholderIcon": { "alias": "placeholderIcon"; "required": false; "isSignal": true; }; "placeholderTitle": { "alias": "placeholderTitle"; "required": false; "isSignal": true; }; }, { "pageModelChange": "pageModelChange"; "searchChange": "searchChange"; "refreshAction": "refreshAction"; "clearFiltersAction": "clearFiltersAction"; }, ["toolbarSelectorsTpl", "toolbarActionsTpl"], ["*"], true, never>;
957
1031
  }
958
1032
 
959
1033
  /** Directive for selectors of the toolbar located on the left side */
@@ -987,10 +1061,11 @@ declare class RtuiDynamicListRowAdditionalActionsDirective {
987
1061
  static ɵdir: i0.ɵɵDirectiveDeclaration<RtuiDynamicListRowAdditionalActionsDirective, "[rtuiDynamicListRowAdditionalActionsDirective]", never, {}, {}, never, never, true, never>;
988
1062
  }
989
1063
  declare class RtuiDynamicListComponent<ENTITY_TYPE extends Record<string, unknown>, SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>, KEY extends Extract<keyof ENTITY_TYPE, string>> {
1064
+ #private;
990
1065
  /** Table config storage key */
991
1066
  tableConfigStorageKey: InputSignalWithTransform<string, unknown>;
992
- /** Indicates is mobile view */
993
- isMobile: InputSignalWithTransform<INullable<boolean>, BooleanInput>;
1067
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1068
+ readonly narrow: Signal<boolean>;
994
1069
  /** Indicates is loading in progress */
995
1070
  loading: InputSignalWithTransform<boolean, BooleanInput>;
996
1071
  /** Indicates is fetching in progress */
@@ -1012,9 +1087,9 @@ declare class RtuiDynamicListComponent<ENTITY_TYPE extends Record<string, unknow
1012
1087
  /** Current page model from store */
1013
1088
  pageModel: InputSignal<IPageModel>;
1014
1089
  /** Current search term from store */
1015
- searchTerm: InputSignal<INullable<string>>;
1090
+ searchTerm: InputSignal<TNullable<string>>;
1016
1091
  /** Current sort model from store */
1017
- currentSortModel: InputSignal<INullable<ISortModel<NonNullable<KEY>>>>;
1092
+ currentSortModel: InputSignal<TNullable<ISortModel<NonNullable<KEY>>>>;
1018
1093
  /** Inputs appearance */
1019
1094
  appearance: InputSignal<MatFormFieldAppearance>;
1020
1095
  /** Filter inputs appearance */
@@ -1028,7 +1103,7 @@ declare class RtuiDynamicListComponent<ENTITY_TYPE extends Record<string, unknow
1028
1103
  /** Page model change output action */
1029
1104
  readonly pageModelChange: OutputEmitterRef<Partial<IPageModel>>;
1030
1105
  /** Search change output action */
1031
- readonly searchChange: OutputEmitterRef<INullable<string>>;
1106
+ readonly searchChange: OutputEmitterRef<TNullable<string>>;
1032
1107
  /** Refresh output action */
1033
1108
  readonly refresh: OutputEmitterRef<void>;
1034
1109
  /** Clear filters output action */
@@ -1043,27 +1118,27 @@ declare class RtuiDynamicListComponent<ENTITY_TYPE extends Record<string, unknow
1043
1118
  /** Filter change output action */
1044
1119
  readonly filterChange: OutputEmitterRef<IFilterModel<KEY>[]>;
1045
1120
  /** Toolbar selectors template */
1046
- readonly toolbarSelectorsTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
1121
+ readonly toolbarSelectorsTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
1047
1122
  /** Toolbar actions template */
1048
- readonly toolbarActionsTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
1123
+ readonly toolbarActionsTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
1049
1124
  /** Custom cells template */
1050
- readonly customCellsTpl: Signal<INullable<RtuiDynamicListCustomTableCellsDirective<{
1125
+ readonly customCellsTpl: Signal<TNullable<RtuiDynamicListCustomTableCellsDirective<{
1051
1126
  $implicit: ENTITY_TYPE;
1052
1127
  }>>>;
1053
1128
  /** Row actions template */
1054
- readonly rowActionsTpl: Signal<INullable<TemplateRef<{
1129
+ readonly rowActionsTpl: Signal<TNullable<TemplateRef<{
1055
1130
  $implicit: ENTITY_TYPE;
1056
1131
  }>>>;
1057
1132
  /** Additional row actions template */
1058
- readonly additionalRowActionsTpl: Signal<INullable<TemplateRef<{
1133
+ readonly additionalRowActionsTpl: Signal<TNullable<TemplateRef<{
1059
1134
  $implicit: ENTITY_TYPE;
1060
1135
  }>>>;
1061
1136
  /** Table container for selectors directive usage */
1062
- readonly tableContainerTpl: Signal<INullable<RtuiTableContainerComponent<ENTITY_TYPE>>>;
1137
+ readonly tableContainerTpl: Signal<TNullable<RtuiTableContainerComponent<ENTITY_TYPE>>>;
1063
1138
  /** Table selector for selectors directive usage */
1064
- readonly tableTpl: Signal<INullable<RtuiTableComponent<ENTITY_TYPE, SORT_PROPERTY, KEY>>>;
1139
+ readonly tableTpl: Signal<TNullable<RtuiTableComponent<ENTITY_TYPE, SORT_PROPERTY, KEY>>>;
1065
1140
  /** Search change output action */
1066
- onSearchChange(value: INullable<string>): void;
1141
+ onSearchChange(value: TNullable<string>): void;
1067
1142
  /** Sort change output action */
1068
1143
  onSortChange(sortModel: ISortModel<NonNullable<KEY>>): void;
1069
1144
  /** Page model change output action */
@@ -1082,7 +1157,178 @@ declare class RtuiDynamicListComponent<ENTITY_TYPE extends Record<string, unknow
1082
1157
  /** Row doubleClick output action */
1083
1158
  onRowDoubleClick(row: ENTITY_TYPE): void;
1084
1159
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiDynamicListComponent<any, any, any>, never>;
1085
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiDynamicListComponent<any, any, any>, "rtui-dynamic-list", never, { "tableConfigStorageKey": { "alias": "tableConfigStorageKey"; "required": true; "isSignal": true; }; "isMobile": { "alias": "isMobile"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "isTableRowsClickable": { "alias": "isTableRowsClickable"; "required": false; "isSignal": true; }; "isPaginationShown": { "alias": "isPaginationShown"; "required": false; "isSignal": true; }; "isRefreshButtonShown": { "alias": "isRefreshButtonShown"; "required": false; "isSignal": true; }; "isTableConfigButtonShown": { "alias": "isTableConfigButtonShown"; "required": false; "isSignal": true; }; "isToolbarActionsIconsOutlined": { "alias": "isToolbarActionsIconsOutlined"; "required": false; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": false; "isSignal": true; }; "entities": { "alias": "entities"; "required": true; "isSignal": true; }; "pageModel": { "alias": "pageModel"; "required": true; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": true; "isSignal": true; }; "currentSortModel": { "alias": "currentSortModel"; "required": true; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": true; "isSignal": true; }; "filterAppearance": { "alias": "filterAppearance"; "required": false; "isSignal": true; }; "filterModel": { "alias": "filterModel"; "required": false; "isSignal": true; }; "isFiltersShown": { "alias": "isFiltersShown"; "required": false; "isSignal": true; }; }, { "sortChange": "sortChange"; "pageModelChange": "pageModelChange"; "searchChange": "searchChange"; "refresh": "refresh"; "clearFiltersAction": "clearFiltersAction"; "rowClick": "rowClick"; "rowDoubleClick": "rowDoubleClick"; "filterChange": "filterChange"; }, ["toolbarSelectorsTpl", "toolbarActionsTpl", "customCellsTpl", "rowActionsTpl", "additionalRowActionsTpl"], never, true, never>;
1160
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtuiDynamicListComponent<any, any, any>, "rtui-dynamic-list", never, { "tableConfigStorageKey": { "alias": "tableConfigStorageKey"; "required": true; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "isTableRowsClickable": { "alias": "isTableRowsClickable"; "required": false; "isSignal": true; }; "isPaginationShown": { "alias": "isPaginationShown"; "required": false; "isSignal": true; }; "isRefreshButtonShown": { "alias": "isRefreshButtonShown"; "required": false; "isSignal": true; }; "isTableConfigButtonShown": { "alias": "isTableConfigButtonShown"; "required": false; "isSignal": true; }; "isToolbarActionsIconsOutlined": { "alias": "isToolbarActionsIconsOutlined"; "required": false; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": false; "isSignal": true; }; "entities": { "alias": "entities"; "required": true; "isSignal": true; }; "pageModel": { "alias": "pageModel"; "required": true; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": true; "isSignal": true; }; "currentSortModel": { "alias": "currentSortModel"; "required": true; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": true; "isSignal": true; }; "filterAppearance": { "alias": "filterAppearance"; "required": false; "isSignal": true; }; "filterModel": { "alias": "filterModel"; "required": false; "isSignal": true; }; "isFiltersShown": { "alias": "isFiltersShown"; "required": false; "isSignal": true; }; }, { "sortChange": "sortChange"; "pageModelChange": "pageModelChange"; "searchChange": "searchChange"; "refresh": "refresh"; "clearFiltersAction": "clearFiltersAction"; "rowClick": "rowClick"; "rowDoubleClick": "rowDoubleClick"; "filterChange": "filterChange"; }, ["toolbarSelectorsTpl", "toolbarActionsTpl", "customCellsTpl", "rowActionsTpl", "additionalRowActionsTpl"], never, true, never>;
1161
+ }
1162
+
1163
+ declare class RtuiClearButtonComponent {
1164
+ #private;
1165
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1166
+ protected readonly narrow: Signal<boolean>;
1167
+ isButtonShown: InputSignalWithTransform<TNullable<boolean>, boolean>;
1168
+ tooltip: InputSignalWithTransform<TNullable<string>, string>;
1169
+ tooltipPosition: InputSignal<TooltipPosition>;
1170
+ readonly keydownAction: OutputEmitterRef<void>;
1171
+ readonly clickAction: OutputEmitterRef<void>;
1172
+ onKeydown(): void;
1173
+ onClick(): void;
1174
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtuiClearButtonComponent, never>;
1175
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtuiClearButtonComponent, "rtui-clear-button", never, { "isButtonShown": { "alias": "isButtonShown"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; }, { "keydownAction": "keydownAction"; "clickAction": "clickAction"; }, never, never, true, never>;
1176
+ }
1177
+
1178
+ declare class RtuiPaginationComponent implements OnInit, AfterViewInit {
1179
+ #private;
1180
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1181
+ protected readonly narrow: Signal<boolean>;
1182
+ /** Current Page Model */
1183
+ currentPageModel: InputSignal<IPageModel>;
1184
+ /** Output action when Page Model changed */
1185
+ readonly pageModelChange: OutputEmitterRef<Partial<IPageModel>>;
1186
+ /** Form control for selected page size */
1187
+ control: FormControl<number>;
1188
+ readonly divider: Signal<string>;
1189
+ /** Page size options */
1190
+ readonly pageSizes: Signal<number[]>;
1191
+ /** Array of current page numbers */
1192
+ readonly numbers: WritableSignal<Array<number | string>>;
1193
+ /** Page Model for compare */
1194
+ readonly previousPageModel: WritableSignal<TNullable<IPageModel>>;
1195
+ /** Value of full content width */
1196
+ readonly minContentFitWidth: WritableSignal<number>;
1197
+ /** Indicates is content clipped */
1198
+ readonly isContentClipped: WritableSignal<boolean>;
1199
+ /** Container template ref */
1200
+ readonly containerRef: Signal<TNullable<ElementRef<HTMLElement>>>;
1201
+ /** Set 'isContentClipped' when widow resize */
1202
+ onResize(): void;
1203
+ ngOnInit(): void;
1204
+ /** Set 'isContentClipped' on init */
1205
+ ngAfterViewInit(): void;
1206
+ /** Action for change Page Model */
1207
+ changePageSize(pageSize: number): void;
1208
+ /** Action for select page */
1209
+ onChangePageNumber(pageNumber: string | number): void;
1210
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtuiPaginationComponent, never>;
1211
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtuiPaginationComponent, "rtui-pagination", never, { "currentPageModel": { "alias": "currentPageModel"; "required": true; "isSignal": true; }; }, { "pageModelChange": "pageModelChange"; }, never, never, true, never>;
1212
+ }
1213
+
1214
+ declare const RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE: string;
1215
+
1216
+ /**
1217
+ * Порядок имён колонок для сверки двух наборов.
1218
+ *
1219
+ * Какой именно порядок, значения не имеет: оба набора выстраиваются одним и тем же и сравниваются
1220
+ * на равенство. Важно лишь, чтобы порядок был один и не зависел от вида значения, — умолчание
1221
+ * `sort()` приводит элементы к строке по-своему и на числовых ключах даёт лексикографический.
1222
+ */
1223
+ declare function comparePropNames(a: PropertyKey | undefined, b: PropertyKey | undefined): number;
1224
+
1225
+ declare const DEFAULT_PAGE_SIZE: number;
1226
+ declare const DEFAULT_PAGE_MODEL: Readonly<IPageModel>;
1227
+
1228
+ declare class RtTableConfigService<ENTITY_TYPE> {
1229
+ #private;
1230
+ readonly tableConfig: Signal<ITable.Config.Data<ENTITY_TYPE>>;
1231
+ /**
1232
+ * Потоки чтения и записи объявлены один раз, а методы только толкают в них просьбы.
1233
+ *
1234
+ * Чтение — `switchMap`: отвечает последний вызов, потому что настройка, прочитанная под
1235
+ * прежний состав столбцов, к нынешнему уже не относится. Запись и снятие — один поток и
1236
+ * `concatMap`: разведённые по двум, они теряют порядок между собой, и снятие, обогнавшее
1237
+ * запись, оставляет в хранилище снятое.
1238
+ */
1239
+ constructor();
1240
+ initConfig(storageKey: string, config: Array<ITable.Column<ENTITY_TYPE>>): void;
1241
+ updateConfig(storageKey: string, config: ITable.Config.Data<ENTITY_TYPE>): void;
1242
+ deleteConfig(storageKey: string): void;
1243
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtTableConfigService<any>, never>;
1244
+ static ɵprov: i0.ɵɵInjectableDeclaration<RtTableConfigService<any>>;
1245
+ }
1246
+
1247
+ declare class RtCommonSelectorsDirective<ENTITY_TYPE extends Record<string, unknown>, KEY extends Extract<keyof ENTITY_TYPE, string>> {
1248
+ /** Indicates is multiselect available */
1249
+ isMultiSelect: InputSignalWithTransform<boolean, boolean>;
1250
+ /** Indicates is 'Select all' checkbox shown */
1251
+ isSelectorColumnShown: InputSignalWithTransform<boolean, boolean>;
1252
+ /** Indicates is selectors column disabled */
1253
+ isSelectorsColumnDisabled: InputSignalWithTransform<boolean, boolean>;
1254
+ /** Selected entities Ids on init */
1255
+ selectedEntitiesKeys: InputSignalWithTransform<ENTITY_TYPE[KEY][], ENTITY_TYPE[KEY][]>;
1256
+ /** Key of ENTITY_TYPE for compare entities */
1257
+ readonly keyExp: WritableSignal<NonNullable<KEY>>;
1258
+ /** Current list of entities */
1259
+ readonly entities: WritableSignal<ENTITY_TYPE[]>;
1260
+ /** Add page entities to list exclude duplicates */
1261
+ addPageEntitiesToListExcludeDuplicates(list: ENTITY_TYPE[]): ENTITY_TYPE[];
1262
+ /** Remove page entities from list */
1263
+ removePageEntitiesFromList(list: ENTITY_TYPE[]): ENTITY_TYPE[];
1264
+ /** Check is one of page entities exist in selected entities */
1265
+ isOneExistOnPage(selectedEntitiesIds: ENTITY_TYPE[KEY][]): boolean;
1266
+ /** Check is all page entities exist in selected entities */
1267
+ isAllExistOnPage(selectedEntitiesIds: ENTITY_TYPE[KEY][]): boolean;
1268
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtCommonSelectorsDirective<any, any>, never>;
1269
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RtCommonSelectorsDirective<any, any>, never, never, { "isMultiSelect": { "alias": "isMultiSelect"; "required": false; "isSignal": true; }; "isSelectorColumnShown": { "alias": "isSelectorColumnShown"; "required": false; "isSignal": true; }; "isSelectorsColumnDisabled": { "alias": "isSelectorsColumnDisabled"; "required": false; "isSignal": true; }; "selectedEntitiesKeys": { "alias": "selectedEntitiesKeys"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1270
+ }
1271
+
1272
+ declare class RtDynamicListSelectorsDirective<ENTITY_TYPE extends Record<string, unknown>, SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>, KEY extends Extract<keyof ENTITY_TYPE, string>> extends RtCommonSelectorsDirective<ENTITY_TYPE, KEY> implements OnInit {
1273
+ #private;
1274
+ /** Indicates is multiselect extended mod available (use selected and excluded lists) */
1275
+ isMultiSelectExtendedMod: InputSignalWithTransform<boolean, boolean>;
1276
+ /** Indicates is 'Select all' checkbox shown */
1277
+ isSelectAllSelectorShown: InputSignalWithTransform<boolean, boolean>;
1278
+ /** List of selected entities */
1279
+ readonly selectedEntities: Signal<ENTITY_TYPE[]>;
1280
+ /** List of excluded entities */
1281
+ readonly excludedEntities: Signal<ENTITY_TYPE[]>;
1282
+ /** List of selected entities ids */
1283
+ readonly selectedEntitiesIds: Signal<ENTITY_TYPE[KEY][]>;
1284
+ /** List of excluded entities ids */
1285
+ readonly excludedEntitiesIds: Signal<ENTITY_TYPE[KEY][]>;
1286
+ /** Indicates is 'Select All' checkbox selected */
1287
+ readonly isAllEntitiesSelected: Signal<boolean>;
1288
+ /** Indicates is all page entities checkbox selected */
1289
+ readonly isPageEntitiesSelected: Signal<boolean>;
1290
+ /** Indicates is page entities checkbox indeterminate */
1291
+ readonly isPageEntitiesIndeterminate: Signal<boolean>;
1292
+ /** Indicates is multi select extended mod enabled */
1293
+ readonly isMultiSelectExtendedModEnabled: Signal<boolean>;
1294
+ ngOnInit(): void;
1295
+ /** Change selected entities list and 'isAllEntitiesSelected' indicator state */
1296
+ toggleAllEntities(checked: boolean): void;
1297
+ /** Change selected and excluded lists, set 'isPageEntitiesSelected' and 'isAllEntitiesSelected' indicators states */
1298
+ togglePageEntities(checked: boolean): void;
1299
+ /** Change selected and excluded lists and set is existing selected and is all selected states */
1300
+ toggleEntity(entity: ENTITY_TYPE, checked: boolean): void;
1301
+ /** Clear selected list */
1302
+ clearSelectedList(): void;
1303
+ /** Clear excluded list */
1304
+ clearExcludedList(): void;
1305
+ /** Set is existing selected and indeterminate state */
1306
+ setExistingEntitiesState(): void;
1307
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicListSelectorsDirective<any, any, any>, never>;
1308
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RtDynamicListSelectorsDirective<any, any, any>, "rtui-dynamic-list[rtDynamicListSelectorsDirective]", never, { "isMultiSelectExtendedMod": { "alias": "isMultiSelectExtendedMod"; "required": false; "isSignal": true; }; "isSelectAllSelectorShown": { "alias": "isSelectAllSelectorShown"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1309
+ }
1310
+
1311
+ declare class RtTableSelectorsDirective<ENTITY_TYPE extends Record<string, unknown>, SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>, KEY extends Extract<keyof ENTITY_TYPE, string>> extends RtCommonSelectorsDirective<ENTITY_TYPE, KEY> implements OnInit {
1312
+ #private;
1313
+ /** List of selected entities */
1314
+ readonly selectedEntities: Signal<ENTITY_TYPE[]>;
1315
+ /** List of selected entities ids */
1316
+ readonly selectedEntitiesIds: Signal<ENTITY_TYPE[KEY][]>;
1317
+ /** Indicates is all page entities checkbox selected */
1318
+ readonly isPageEntitiesSelected: Signal<boolean>;
1319
+ /** Indicates is page entities checkbox indeterminate */
1320
+ readonly isPageEntitiesIndeterminate: Signal<boolean>;
1321
+ ngOnInit(): void;
1322
+ /** Change selected and excluded lists, set 'isPageEntitiesSelected' and 'isAllEntitiesSelected' indicators states */
1323
+ togglePageEntities(checked: boolean): void;
1324
+ /** Change selected and excluded lists and set is existing selected and is all selected states */
1325
+ toggleEntity(entity: ENTITY_TYPE, checked: boolean): void;
1326
+ /** Clear selected list */
1327
+ clearSelectedList(): void;
1328
+ /** Set is existing selected and indeterminate state */
1329
+ setExistingEntitiesState(): void;
1330
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtTableSelectorsDirective<any, any, any>, never>;
1331
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RtTableSelectorsDirective<any, any, any>, "rtui-table[rtTableSelectorsDirective]", never, {}, {}, never, never, true, never>;
1086
1332
  }
1087
1333
 
1088
1334
  declare class RtuiStopTableRowClickDirective implements OnInit {
@@ -1127,9 +1373,9 @@ declare function provideRtUi(config?: IRtUiConfig.Config): Provider[];
1127
1373
 
1128
1374
  declare namespace IRtSnackBar {
1129
1375
  interface Config extends MatSnackBarConfig {
1130
- icon?: INullable<string>;
1376
+ icon?: string | null;
1131
1377
  isColoredBackground?: boolean;
1132
- action?: INullable<string>;
1378
+ action?: string | null;
1133
1379
  isProgressBarShown?: boolean;
1134
1380
  }
1135
1381
  interface Data extends Config {
@@ -1140,11 +1386,8 @@ declare namespace IRtSnackBar {
1140
1386
  declare class RtuiSnackBarComponent {
1141
1387
  #private;
1142
1388
  readonly data: IRtSnackBar.Data;
1143
- player: AnimationPlayer | undefined;
1144
- readonly progressTplRef: Signal<INullable<ElementRef<HTMLElement>>>;
1145
- constructor();
1146
- onMouseOver(): void;
1147
- onMouseOut(): void;
1389
+ /** Сколько идёт полоса: то же время, что живёт само сообщение. */
1390
+ readonly progressDuration: Signal<string>;
1148
1391
  dismiss(): void;
1149
1392
  close(): void;
1150
1393
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiSnackBarComponent, never>;
@@ -1163,67 +1406,66 @@ declare class RtSnackBarService {
1163
1406
  static ɵprov: i0.ɵɵInjectableDeclaration<RtSnackBarService>;
1164
1407
  }
1165
1408
 
1166
- declare const progressIncreaseAnimation: AnimationTriggerMetadata[];
1167
- declare const progressDecreaseAnimation: AnimationTriggerMetadata[];
1168
-
1169
- declare enum INFO_BADGE_SIZE_ENUM {
1409
+ declare enum EInfoBadgeSize {
1170
1410
  LARGE = "l",
1171
1411
  MEDIUM = "m",
1172
1412
  SMALL = "s"
1173
1413
  }
1174
- type IInfoBadgeSizeType = INFO_BADGE_SIZE_ENUM.LARGE | INFO_BADGE_SIZE_ENUM.MEDIUM | INFO_BADGE_SIZE_ENUM.SMALL;
1414
+ type TInfoBadgeSizeType = EInfoBadgeSize.LARGE | EInfoBadgeSize.MEDIUM | EInfoBadgeSize.SMALL;
1175
1415
 
1176
1416
  declare function darkenHexColor(hex: string, percent: number): string;
1177
1417
  declare function getColorBasedOnBackground(backgroundColor: string): string;
1178
1418
 
1179
- type IconSideType = POSITION_ENUM.LEFT | POSITION_ENUM.RIGHT;
1419
+ type TIconSideType = EPosition.LEFT | EPosition.RIGHT;
1180
1420
 
1181
1421
  declare class RtuiInfoBadgeComponent implements AfterContentChecked {
1182
- size: InputSignal<IInfoBadgeSizeType>;
1422
+ #private;
1423
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1424
+ protected readonly narrow: Signal<boolean>;
1425
+ size: InputSignal<TInfoBadgeSizeType>;
1183
1426
  text: InputSignal<string>;
1184
1427
  glyph: InputSignal<string>;
1185
- iconSide: InputSignal<IconSideType>;
1428
+ iconSide: InputSignal<TIconSideType>;
1186
1429
  isFontBold: InputSignal<boolean>;
1187
- isMobile: InputSignalWithTransform<INullable<boolean>, boolean>;
1188
1430
  isTitleCollapsed: WritableSignal<boolean>;
1189
1431
  readonly contentRef: Signal<ElementRef<HTMLElement> | undefined>;
1190
- get badgeClass(): {
1191
- [key: string]: boolean | string;
1192
- };
1432
+ /** Модификаторы блока значка: ставятся директивой, а не строкой в атрибуте. */
1433
+ readonly badgeModifiers: Signal<Record<string, boolean>>;
1193
1434
  get iconStyles(): {
1194
1435
  [key: string]: string;
1195
1436
  };
1196
1437
  ngAfterContentChecked(): void;
1197
1438
  checkEllipsis(): void;
1198
1439
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiInfoBadgeComponent, never>;
1199
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiInfoBadgeComponent, "rtui-info-badge", never, { "size": { "alias": "size"; "required": true; "isSignal": true; }; "text": { "alias": "text"; "required": true; "isSignal": true; }; "glyph": { "alias": "glyph"; "required": false; "isSignal": true; }; "iconSide": { "alias": "iconSide"; "required": false; "isSignal": true; }; "isFontBold": { "alias": "isFontBold"; "required": false; "isSignal": true; }; "isMobile": { "alias": "isMobile"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1440
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtuiInfoBadgeComponent, "rtui-info-badge", never, { "size": { "alias": "size"; "required": true; "isSignal": true; }; "text": { "alias": "text"; "required": true; "isSignal": true; }; "glyph": { "alias": "glyph"; "required": false; "isSignal": true; }; "iconSide": { "alias": "iconSide"; "required": false; "isSignal": true; }; "isFontBold": { "alias": "isFontBold"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1200
1441
  }
1201
1442
 
1202
- declare enum INFO_BADGE_TYPE_ENUM {
1443
+ declare enum EInfoBadgeType {
1203
1444
  SUCCESS = "success",
1204
1445
  INFO = "info",
1205
1446
  WARNING = "warning",
1206
1447
  PRIMARY = "primary",
1207
1448
  DISABLED = "disabled"
1208
1449
  }
1209
- type InfoBadgeType = INFO_BADGE_TYPE_ENUM.SUCCESS | INFO_BADGE_TYPE_ENUM.INFO | INFO_BADGE_TYPE_ENUM.WARNING | INFO_BADGE_TYPE_ENUM.PRIMARY | INFO_BADGE_TYPE_ENUM.DISABLED;
1450
+ type TInfoBadgeType = EInfoBadgeType.SUCCESS | EInfoBadgeType.INFO | EInfoBadgeType.WARNING | EInfoBadgeType.PRIMARY | EInfoBadgeType.DISABLED;
1210
1451
 
1211
- declare enum TOGGLE_SIZE_TYPE_ENUM {
1452
+ declare enum EToggleSizeType {
1212
1453
  SM = "sm",
1213
1454
  MD = "md"
1214
1455
  }
1215
- type ToggleSizeType = TOGGLE_SIZE_TYPE_ENUM.SM | TOGGLE_SIZE_TYPE_ENUM.MD;
1456
+ type TToggleSizeType = EToggleSizeType.SM | EToggleSizeType.MD;
1216
1457
 
1217
1458
  declare class RtuiToggleComponent implements OnInit, ControlValueAccessor {
1218
1459
  #private;
1460
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1461
+ protected readonly narrow: Signal<TNullable<boolean>>;
1219
1462
  formControl: FormControl<boolean>;
1220
- label: InputSignal<INullable<string>>;
1463
+ label: InputSignal<TNullable<string>>;
1221
1464
  tooltip: InputSignal<string>;
1222
- size: InputSignal<ToggleSizeType>;
1465
+ size: InputSignal<TToggleSizeType>;
1223
1466
  tooltipPosition: InputSignal<TooltipPosition>;
1224
1467
  isDisabled: InputSignalWithTransform<boolean, BooleanInput>;
1225
1468
  tooltipDisabled: InputSignalWithTransform<boolean, BooleanInput>;
1226
- readonly isMobile: Signal<INullable<boolean>>;
1227
1469
  ngOnInit(): void;
1228
1470
  writeValue(value: boolean): void;
1229
1471
  registerOnChange(fn: () => void): void;
@@ -1246,8 +1488,9 @@ declare class RtuiFileUploadComponent {
1246
1488
  }
1247
1489
 
1248
1490
  declare abstract class RtuiDynamicSelectorsDirective {
1249
- /** Indicates if mobile view */
1250
- isMobile: InputSignalWithTransform<INullable<boolean>, boolean>;
1491
+ #private;
1492
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1493
+ protected readonly narrow: Signal<boolean>;
1251
1494
  /** Selections control button title */
1252
1495
  buttonTitle: InputSignalWithTransform<string, string>;
1253
1496
  /** Indicates if only one option can be chosen */
@@ -1270,11 +1513,11 @@ declare abstract class RtuiDynamicSelectorsDirective {
1270
1513
  /** Material elements appearance */
1271
1514
  appearance: InputSignal<MatFormFieldAppearance>;
1272
1515
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiDynamicSelectorsDirective, never>;
1273
- static ɵdir: i0.ɵɵDirectiveDeclaration<RtuiDynamicSelectorsDirective, never, never, { "isMobile": { "alias": "isMobile"; "required": true; "isSignal": true; }; "buttonTitle": { "alias": "buttonTitle"; "required": false; "isSignal": true; }; "isSingleSelection": { "alias": "isSingleSelection"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "useNameBreaking": { "alias": "useNameBreaking"; "required": false; "isSignal": true; }; "useTitleCase": { "alias": "useTitleCase"; "required": false; "isSignal": true; }; "isPlaceholderIconOutlined": { "alias": "isPlaceholderIconOutlined"; "required": false; "isSignal": true; }; "isDeleteButtonShown": { "alias": "isDeleteButtonShown"; "required": false; "isSignal": true; }; "isListDraggable": { "alias": "isListDraggable"; "required": false; "isSignal": true; }; "placeholderIcon": { "alias": "placeholderIcon"; "required": false; "isSignal": true; }; "placeholderDescription": { "alias": "placeholderDescription"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1516
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RtuiDynamicSelectorsDirective, never, never, { "buttonTitle": { "alias": "buttonTitle"; "required": false; "isSignal": true; }; "isSingleSelection": { "alias": "isSingleSelection"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "useNameBreaking": { "alias": "useNameBreaking"; "required": false; "isSignal": true; }; "useTitleCase": { "alias": "useTitleCase"; "required": false; "isSignal": true; }; "isPlaceholderIconOutlined": { "alias": "isPlaceholderIconOutlined"; "required": false; "isSignal": true; }; "isDeleteButtonShown": { "alias": "isDeleteButtonShown"; "required": false; "isSignal": true; }; "isListDraggable": { "alias": "isListDraggable"; "required": false; "isSignal": true; }; "placeholderIcon": { "alias": "placeholderIcon"; "required": false; "isSignal": true; }; "placeholderDescription": { "alias": "placeholderDescription"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1274
1517
  }
1275
1518
 
1276
- interface FormModel$1 {
1277
- autocompleteControl: FormControl<INullable<string>>;
1519
+ interface IFormModel$1 {
1520
+ autocompleteControl: FormControl<TNullable<string>>;
1278
1521
  }
1279
1522
  /** Directive for row actions located outside a row menu button */
1280
1523
  declare class RtuiDynamicSelectorAdditionalControlDirective {
@@ -1290,9 +1533,9 @@ declare class RtuiDynamicSelectorComponent<ENTITY extends Record<string, unknown
1290
1533
  #private;
1291
1534
  /** Config for overlay selector */
1292
1535
  protected readonly connectedOverlayPositions: ConnectedPosition[];
1293
- form: FormGroup<FormModel$1>;
1536
+ form: FormGroup<IFormModel$1>;
1294
1537
  /** Target element for overlay selector */
1295
- selectedOverlayTrigger: INullable<CdkOverlayOrigin>;
1538
+ selectedOverlayTrigger: TNullable<CdkOverlayOrigin>;
1296
1539
  /** A model's field which should be used for http-requests */
1297
1540
  keyExp: InputSignal<KEY>;
1298
1541
  /** A model's field which should be shown in ui */
@@ -1332,7 +1575,7 @@ declare class RtuiDynamicSelectorComponent<ENTITY extends Record<string, unknown
1332
1575
  /** Indicates that an additional control has been changed */
1333
1576
  additionalControlChanged: InputSignal<boolean>;
1334
1577
  /** Custom sort function for entities list in popup */
1335
- sortFn: InputSignal<INullable<(a: ENTITY, b: ENTITY) => number>>;
1578
+ sortFn: InputSignal<TNullable<(a: ENTITY, b: ENTITY) => number>>;
1336
1579
  /** Output search action */
1337
1580
  readonly searchAction: OutputEmitterRef<string>;
1338
1581
  /** Output scroll action, needed for lazy loading */
@@ -1356,11 +1599,11 @@ declare class RtuiDynamicSelectorComponent<ENTITY extends Record<string, unknown
1356
1599
  /** Entities can be chosen, except selected on init */
1357
1600
  readonly entitiesToSelect: Signal<ENTITY[]>;
1358
1601
  /** Additional control for entity */
1359
- readonly additionalControlTpl: Signal<INullable<TemplateRef<{
1602
+ readonly additionalControlTpl: Signal<TNullable<TemplateRef<{
1360
1603
  $implicit: ENTITY;
1361
1604
  }>>>;
1362
1605
  /** Custom item title template */
1363
- readonly itemTitleTpl: Signal<INullable<TemplateRef<{
1606
+ readonly itemTitleTpl: Signal<TNullable<TemplateRef<{
1364
1607
  $implicit: ENTITY;
1365
1608
  }>>>;
1366
1609
  ngOnInit(): void;
@@ -1393,9 +1636,9 @@ declare class RtuiDynamicSelectorComponent<ENTITY extends Record<string, unknown
1393
1636
  static ɵcmp: i0.ɵɵComponentDeclaration<RtuiDynamicSelectorComponent<any, any>, "rtui-dynamic-selector", never, { "keyExp": { "alias": "keyExp"; "required": true; "isSignal": true; }; "displayExp": { "alias": "displayExp"; "required": true; "isSignal": true; }; "entities": { "alias": "entities"; "required": true; "isSignal": true; }; "navigateButtonTitle": { "alias": "navigateButtonTitle"; "required": false; "isSignal": true; }; "navigateLink": { "alias": "navigateLink"; "required": false; "isSignal": true; }; "readonlyEntitiesKeys": { "alias": "readonlyEntitiesKeys"; "required": false; "isSignal": true; }; "chosenEntities": { "alias": "chosenEntities"; "required": false; "isSignal": true; }; "isSelectionAvailable": { "alias": "isSelectionAvailable"; "required": false; "isSignal": true; }; "isPlaceholderShown": { "alias": "isPlaceholderShown"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "pending": { "alias": "pending"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "isLazyLoad": { "alias": "isLazyLoad"; "required": false; "isSignal": true; }; "isLocalSearch": { "alias": "isLocalSearch"; "required": false; "isSignal": true; }; "isMultiToggleShown": { "alias": "isMultiToggleShown"; "required": false; "isSignal": true; }; "isSelectAllButtonShown": { "alias": "isSelectAllButtonShown"; "required": false; "isSignal": true; }; "isOpenPopupButtonShown": { "alias": "isOpenPopupButtonShown"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "additionalControlChanged": { "alias": "additionalControlChanged"; "required": false; "isSignal": true; }; "sortFn": { "alias": "sortFn"; "required": false; "isSignal": true; }; }, { "chosenEntities": "chosenEntitiesChange"; "searchAction": "searchAction"; "scrollAction": "scrollAction"; "temporarySelectAction": "temporarySelectAction"; "resetAction": "resetAction"; "selectionChangeAction": "selectionChangeAction"; }, ["additionalControlTpl", "itemTitleTpl"], never, true, never>;
1394
1637
  }
1395
1638
 
1396
- interface FormModel {
1639
+ interface IFormModel {
1397
1640
  control: FormControl<string[]>;
1398
- controlForUi: FormControl<INullable<string>>;
1641
+ controlForUi: FormControl<TNullable<string>>;
1399
1642
  }
1400
1643
  /** Directive for row actions located outside a row menu button */
1401
1644
  declare class RtuiDynamicInputAdditionalControlDirective {
@@ -1404,9 +1647,9 @@ declare class RtuiDynamicInputAdditionalControlDirective {
1404
1647
  }
1405
1648
  declare class RtuiDynamicInputComponent extends RtuiDynamicSelectorsDirective implements ControlValueAccessor, Validator, OnInit {
1406
1649
  #private;
1407
- form: FormGroup<FormModel>;
1650
+ form: FormGroup<IFormModel>;
1408
1651
  /** Indicates is placeholder shown */
1409
- isPlaceholderShown: ModelSignal<INullable<boolean>>;
1652
+ isPlaceholderShown: ModelSignal<TNullable<boolean>>;
1410
1653
  /** Indicates is inputs-editable */
1411
1654
  isInputsEditable: InputSignalWithTransform<boolean, BooleanInput>;
1412
1655
  /** Input label */
@@ -1424,7 +1667,7 @@ declare class RtuiDynamicInputComponent extends RtuiDynamicSelectorsDirective im
1424
1667
  /** Indicates the reset changes button is disabled */
1425
1668
  readonly isResetButtonDisabled: WritableSignal<boolean>;
1426
1669
  /** Additional control for entity */
1427
- readonly additionalControlTpl: Signal<INullable<TemplateRef<{
1670
+ readonly additionalControlTpl: Signal<TNullable<TemplateRef<{
1428
1671
  $implicit: string;
1429
1672
  }>>>;
1430
1673
  ngOnInit(): void;
@@ -1462,9 +1705,9 @@ declare class RtuiDynamicInputComponent extends RtuiDynamicSelectorsDirective im
1462
1705
 
1463
1706
  declare class RtuiMultiSelectorPopupComponent<ENTITY extends Record<string, unknown>, KEY extends Extract<keyof ENTITY, string>> implements OnInit, AfterViewInit {
1464
1707
  #private;
1708
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1709
+ protected readonly narrow: Signal<boolean>;
1465
1710
  protected readonly oSTypes: typeof OSTypes;
1466
- /** Indicates is mobile view */
1467
- isMobile: InputSignalWithTransform<INullable<boolean>, INullable<boolean>>;
1468
1711
  entitiesToSelect: InputSignalWithTransform<ENTITY[], ENTITY[]>;
1469
1712
  /** Material elements appearance */
1470
1713
  appearance: InputSignal<MatFormFieldAppearance>;
@@ -1491,9 +1734,9 @@ declare class RtuiMultiSelectorPopupComponent<ENTITY extends Record<string, unkn
1491
1734
  /** Indicates is BreakStringPipe used */
1492
1735
  useNameBreaking: InputSignalWithTransform<boolean, BooleanInput>;
1493
1736
  /** Indicates lazy loading is used */
1494
- isLazyLoad: InputSignalWithTransform<INullable<boolean>, boolean>;
1737
+ isLazyLoad: InputSignalWithTransform<TNullable<boolean>, boolean>;
1495
1738
  /** Indicates local search is used */
1496
- isLocalSearch: InputSignalWithTransform<INullable<boolean>, boolean>;
1739
+ isLocalSearch: InputSignalWithTransform<TNullable<boolean>, boolean>;
1497
1740
  /** Keys of a pinned group kept at the top of the list — a trailing divider is drawn after the last visible one */
1498
1741
  pinnedKeys: InputSignalWithTransform<ENTITY[KEY][], ENTITY[KEY][]>;
1499
1742
  /** Send output selected entities ids */
@@ -1507,9 +1750,9 @@ declare class RtuiMultiSelectorPopupComponent<ENTITY extends Record<string, unkn
1507
1750
  /** Output temporary selection action, needed for store values */
1508
1751
  readonly temporarySelectAction: OutputEmitterRef<ENTITY[]>;
1509
1752
  /** Search input Ref for set focus on init */
1510
- readonly searchInputRef: Signal<INullable<ElementRef<HTMLInputElement>>>;
1753
+ readonly searchInputRef: Signal<TNullable<ElementRef<HTMLInputElement>>>;
1511
1754
  /** Form control for search */
1512
- readonly searchControl: FormControl<INullable<string>>;
1755
+ readonly searchControl: FormControl<TNullable<string>>;
1513
1756
  /** Form control for select */
1514
1757
  readonly selectionControl: FormControl<ENTITY[KEY][]>;
1515
1758
  /** Entities filtered by local search */
@@ -1523,7 +1766,7 @@ declare class RtuiMultiSelectorPopupComponent<ENTITY extends Record<string, unkn
1523
1766
  /** Indicates is macOS used */
1524
1767
  readonly isMacOS: Signal<boolean>;
1525
1768
  /** Key of the last visible pinned option — its row gets a trailing divider */
1526
- readonly lastSeparatedKey: Signal<INullable<ENTITY[KEY]>>;
1769
+ readonly lastSeparatedKey: Signal<TNullable<ENTITY[KEY]>>;
1527
1770
  ngOnInit(): void;
1528
1771
  /** Set focus on search input */
1529
1772
  ngAfterViewInit(): void;
@@ -1546,7 +1789,7 @@ declare class RtuiMultiSelectorPopupComponent<ENTITY extends Record<string, unkn
1546
1789
  /** Scroll action, needed for lazy loading mode */
1547
1790
  scroll(): void;
1548
1791
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiMultiSelectorPopupComponent<any, any>, never>;
1549
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiMultiSelectorPopupComponent<any, any>, "rtui-multi-selector-popup", never, { "isMobile": { "alias": "isMobile"; "required": true; "isSignal": true; }; "entitiesToSelect": { "alias": "entitiesToSelect"; "required": true; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": true; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": true; "isSignal": true; }; "displayExp": { "alias": "displayExp"; "required": true; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "navigateButtonTitle": { "alias": "navigateButtonTitle"; "required": false; "isSignal": true; }; "navigateLink": { "alias": "navigateLink"; "required": false; "isSignal": true; }; "isSingleSelection": { "alias": "isSingleSelection"; "required": false; "isSignal": true; }; "isMultiToggleShown": { "alias": "isMultiToggleShown"; "required": false; "isSignal": true; }; "isSelectAllButtonShown": { "alias": "isSelectAllButtonShown"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "useNameBreaking": { "alias": "useNameBreaking"; "required": false; "isSignal": true; }; "isLazyLoad": { "alias": "isLazyLoad"; "required": false; "isSignal": true; }; "isLocalSearch": { "alias": "isLocalSearch"; "required": false; "isSignal": true; }; "pinnedKeys": { "alias": "pinnedKeys"; "required": false; "isSignal": true; }; }, { "submitAction": "submitAction"; "closeAction": "closeAction"; "searchAction": "searchAction"; "scrollAction": "scrollAction"; "temporarySelectAction": "temporarySelectAction"; }, never, never, true, never>;
1792
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtuiMultiSelectorPopupComponent<any, any>, "rtui-multi-selector-popup", never, { "entitiesToSelect": { "alias": "entitiesToSelect"; "required": true; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": true; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": true; "isSignal": true; }; "displayExp": { "alias": "displayExp"; "required": true; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "navigateButtonTitle": { "alias": "navigateButtonTitle"; "required": false; "isSignal": true; }; "navigateLink": { "alias": "navigateLink"; "required": false; "isSignal": true; }; "isSingleSelection": { "alias": "isSingleSelection"; "required": false; "isSignal": true; }; "isMultiToggleShown": { "alias": "isMultiToggleShown"; "required": false; "isSignal": true; }; "isSelectAllButtonShown": { "alias": "isSelectAllButtonShown"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "fetching": { "alias": "fetching"; "required": false; "isSignal": true; }; "useNameBreaking": { "alias": "useNameBreaking"; "required": false; "isSignal": true; }; "isLazyLoad": { "alias": "isLazyLoad"; "required": false; "isSignal": true; }; "isLocalSearch": { "alias": "isLocalSearch"; "required": false; "isSignal": true; }; "pinnedKeys": { "alias": "pinnedKeys"; "required": false; "isSignal": true; }; }, { "submitAction": "submitAction"; "closeAction": "closeAction"; "searchAction": "searchAction"; "scrollAction": "scrollAction"; "temporarySelectAction": "temporarySelectAction"; }, never, never, true, never>;
1550
1793
  }
1551
1794
 
1552
1795
  declare class RtuiDynamicSelectorPlaceholderComponent {
@@ -1563,7 +1806,9 @@ declare class RtuiDynamicSelectorPlaceholderComponent {
1563
1806
  }
1564
1807
 
1565
1808
  declare class RtuiDynamicSelectorListActionsComponent {
1566
- isMobile: InputSignalWithTransform<INullable<boolean>, INullable<boolean>>;
1809
+ #private;
1810
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1811
+ protected readonly narrow: Signal<boolean>;
1567
1812
  isResetButtonDisabled: InputSignalWithTransform<boolean, boolean>;
1568
1813
  isClearButtonDisabled: InputSignalWithTransform<boolean, boolean>;
1569
1814
  disabled: InputSignalWithTransform<boolean, boolean>;
@@ -1572,7 +1817,7 @@ declare class RtuiDynamicSelectorListActionsComponent {
1572
1817
  onReset(): void;
1573
1818
  onClear(): void;
1574
1819
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiDynamicSelectorListActionsComponent, never>;
1575
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiDynamicSelectorListActionsComponent, "rtui-dynamic-selector-list-actions", never, { "isMobile": { "alias": "isMobile"; "required": true; "isSignal": true; }; "isResetButtonDisabled": { "alias": "isResetButtonDisabled"; "required": true; "isSignal": true; }; "isClearButtonDisabled": { "alias": "isClearButtonDisabled"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "resetAction": "resetAction"; "clearAction": "clearAction"; }, never, never, true, never>;
1820
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtuiDynamicSelectorListActionsComponent, "rtui-dynamic-selector-list-actions", never, { "isResetButtonDisabled": { "alias": "isResetButtonDisabled"; "required": true; "isSignal": true; }; "isClearButtonDisabled": { "alias": "isClearButtonDisabled"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "resetAction": "resetAction"; "clearAction": "clearAction"; }, never, never, true, never>;
1576
1821
  }
1577
1822
 
1578
1823
  /** Directive for row actions located outside a row menu button */
@@ -1586,10 +1831,11 @@ declare class RtuiDynamicSelectorItemTitleDirective {
1586
1831
  static ɵdir: i0.ɵɵDirectiveDeclaration<RtuiDynamicSelectorItemTitleDirective, "[rtuiDynamicSelectorItemTitleDirective]", never, {}, {}, never, never, true, never>;
1587
1832
  }
1588
1833
  declare class RtuiDynamicSelectorSelectedListComponent<ENTITY extends Record<string, unknown>, KEY extends Extract<keyof ENTITY, string>> {
1589
- protected readonly editedItemIndex: WritableSignal<INullable<number>>;
1590
- readonly inputRef: Signal<INullable<MatInput>>;
1591
- /** Indicates if mobile view */
1592
- isMobile: InputSignalWithTransform<boolean, BooleanInput>;
1834
+ #private;
1835
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1836
+ protected readonly narrow: Signal<boolean>;
1837
+ protected readonly editedItemIndex: WritableSignal<TNullable<number>>;
1838
+ readonly inputRef: Signal<TNullable<MatInput>>;
1593
1839
  /** A model's field, which should be used for http-requests */
1594
1840
  keyExp: InputSignal<KEY>;
1595
1841
  /** A model's field, which should be shown in ui */
@@ -1617,27 +1863,28 @@ declare class RtuiDynamicSelectorSelectedListComponent<ENTITY extends Record<str
1617
1863
  new: string;
1618
1864
  }>;
1619
1865
  /** Additional control for entity */
1620
- readonly additionalControlTpl: Signal<INullable<TemplateRef<{
1866
+ readonly additionalControlTpl: Signal<TNullable<TemplateRef<{
1621
1867
  $implicit: ENTITY;
1622
1868
  }>>>;
1623
1869
  /** Custom item title template */
1624
- readonly itemTitleTpl: Signal<INullable<TemplateRef<{
1870
+ readonly itemTitleTpl: Signal<TNullable<TemplateRef<{
1625
1871
  $implicit: ENTITY;
1626
1872
  }>>>;
1627
1873
  protected onDelete(value: ENTITY[KEY]): void;
1628
1874
  protected onDrop(event: CdkDragDrop<ENTITY[]>): void;
1629
1875
  protected changeValue(prev: ENTITY[KEY]): void;
1630
- protected setEditModState(index: INullable<number>): void;
1876
+ protected setEditModState(index: TNullable<number>): void;
1631
1877
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiDynamicSelectorSelectedListComponent<any, any>, never>;
1632
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiDynamicSelectorSelectedListComponent<any, any>, "rtui-dynamic-selector-selected-list", never, { "isMobile": { "alias": "isMobile"; "required": true; "isSignal": true; }; "keyExp": { "alias": "keyExp"; "required": true; "isSignal": true; }; "displayExp": { "alias": "displayExp"; "required": true; "isSignal": true; }; "selectedEntities": { "alias": "selectedEntities"; "required": true; "isSignal": true; }; "readonlyEntitiesKeys": { "alias": "readonlyEntitiesKeys"; "required": false; "isSignal": true; }; "isListDraggable": { "alias": "isListDraggable"; "required": false; "isSignal": true; }; "useNameBreaking": { "alias": "useNameBreaking"; "required": false; "isSignal": true; }; "useTitleCase": { "alias": "useTitleCase"; "required": false; "isSignal": true; }; "isDeleteButtonShown": { "alias": "isDeleteButtonShown"; "required": false; "isSignal": true; }; "isItemsEditable": { "alias": "isItemsEditable"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; }, { "deleteFromSelectedAction": "deleteFromSelectedAction"; "dropAction": "dropAction"; "changeValueAction": "changeValueAction"; }, ["additionalControlTpl", "itemTitleTpl"], never, true, never>;
1878
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtuiDynamicSelectorSelectedListComponent<any, any>, "rtui-dynamic-selector-selected-list", never, { "keyExp": { "alias": "keyExp"; "required": true; "isSignal": true; }; "displayExp": { "alias": "displayExp"; "required": true; "isSignal": true; }; "selectedEntities": { "alias": "selectedEntities"; "required": true; "isSignal": true; }; "readonlyEntitiesKeys": { "alias": "readonlyEntitiesKeys"; "required": false; "isSignal": true; }; "isListDraggable": { "alias": "isListDraggable"; "required": false; "isSignal": true; }; "useNameBreaking": { "alias": "useNameBreaking"; "required": false; "isSignal": true; }; "useTitleCase": { "alias": "useTitleCase"; "required": false; "isSignal": true; }; "isDeleteButtonShown": { "alias": "isDeleteButtonShown"; "required": false; "isSignal": true; }; "isItemsEditable": { "alias": "isItemsEditable"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; }, { "deleteFromSelectedAction": "deleteFromSelectedAction"; "dropAction": "dropAction"; "changeValueAction": "changeValueAction"; }, ["additionalControlTpl", "itemTitleTpl"], never, true, never>;
1633
1879
  }
1634
1880
 
1635
- type IImageUploadFormat = 'png' | 'jpeg' | 'webp';
1881
+ type TImageUploadFormat = 'png' | 'jpeg' | 'webp';
1636
1882
  declare class RtuiImageUploadComponent {
1637
1883
  #private;
1638
- protected readonly imageFormat: Signal<IImageUploadFormat>;
1639
- imageUrl: ModelSignal<INullable<string>>;
1640
- isMobile: InputSignalWithTransform<boolean, boolean>;
1884
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1885
+ protected readonly narrow: Signal<boolean>;
1886
+ protected readonly imageFormat: Signal<TImageUploadFormat>;
1887
+ imageUrl: ModelSignal<TNullable<string>>;
1641
1888
  fileName: InputSignalWithTransform<string, string>;
1642
1889
  isActive: InputSignalWithTransform<boolean, BooleanInput>;
1643
1890
  isSaveButtonShown: InputSignalWithTransform<boolean, BooleanInput>;
@@ -1649,8 +1896,8 @@ declare class RtuiImageUploadComponent {
1649
1896
  tooltipPosition: InputSignal<TooltipPosition>;
1650
1897
  imageQuality: InputSignal<number>;
1651
1898
  originalImage: WritableSignal<File | undefined>;
1652
- croppedImage: WritableSignal<INullable<File>>;
1653
- tempImage: WritableSignal<INullable<string>>;
1899
+ croppedImage: WritableSignal<TNullable<File>>;
1900
+ tempImage: WritableSignal<TNullable<string>>;
1654
1901
  readonly imageChanged: OutputEmitterRef<File>;
1655
1902
  readonly save: OutputEmitterRef<void>;
1656
1903
  onFileSelect(event: Event): void;
@@ -1660,16 +1907,16 @@ declare class RtuiImageUploadComponent {
1660
1907
  onCancel(): void;
1661
1908
  onDownloadImage(): void;
1662
1909
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiImageUploadComponent, never>;
1663
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiImageUploadComponent, "rtui-image-upload", never, { "imageUrl": { "alias": "imageUrl"; "required": true; "isSignal": true; }; "isMobile": { "alias": "isMobile"; "required": true; "isSignal": true; }; "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "isActive": { "alias": "isActive"; "required": false; "isSignal": true; }; "isSaveButtonShown": { "alias": "isSaveButtonShown"; "required": false; "isSignal": true; }; "isDownloadButtonEnabled": { "alias": "isDownloadButtonEnabled"; "required": false; "isSignal": true; }; "isTooltipDisabled": { "alias": "isTooltipDisabled"; "required": false; "isSignal": true; }; "isActionsShown": { "alias": "isActionsShown"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; "imageQuality": { "alias": "imageQuality"; "required": false; "isSignal": true; }; }, { "imageUrl": "imageUrlChange"; "imageChanged": "imageChanged"; "save": "save"; }, never, never, true, never>;
1910
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtuiImageUploadComponent, "rtui-image-upload", never, { "imageUrl": { "alias": "imageUrl"; "required": true; "isSignal": true; }; "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "isActive": { "alias": "isActive"; "required": false; "isSignal": true; }; "isSaveButtonShown": { "alias": "isSaveButtonShown"; "required": false; "isSignal": true; }; "isDownloadButtonEnabled": { "alias": "isDownloadButtonEnabled"; "required": false; "isSignal": true; }; "isTooltipDisabled": { "alias": "isTooltipDisabled"; "required": false; "isSignal": true; }; "isActionsShown": { "alias": "isActionsShown"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; "imageQuality": { "alias": "imageQuality"; "required": false; "isSignal": true; }; }, { "imageUrl": "imageUrlChange"; "imageChanged": "imageChanged"; "save": "save"; }, never, never, true, never>;
1664
1911
  }
1665
1912
 
1666
- type MenuItemTrigger = 'click' | 'hover';
1913
+ type TMenuItemTrigger = 'click' | 'hover';
1667
1914
  declare class RtPopoverDirective implements OnInit, OnDestroy {
1668
1915
  #private;
1669
1916
  xOffset: InputSignalWithTransform<number, NumberInput>;
1670
1917
  yOffset: InputSignalWithTransform<number, NumberInput>;
1671
- trigger: InputSignalWithTransform<MenuItemTrigger, MenuItemTrigger>;
1672
- template: InputSignalWithTransform<INullable<TemplateRef<HTMLElement>>, INullable<TemplateRef<HTMLElement>>>;
1918
+ trigger: InputSignalWithTransform<TMenuItemTrigger, TMenuItemTrigger>;
1919
+ template: InputSignalWithTransform<TNullable<TemplateRef<HTMLElement>>, TNullable<TemplateRef<HTMLElement>>>;
1673
1920
  isMouseHoverAllowed: InputSignalWithTransform<boolean, BooleanInput>;
1674
1921
  onClick(element: EventTarget | null): void;
1675
1922
  onMouseEnter(): void;
@@ -1709,6 +1956,12 @@ declare class RtuiActionBarComponent {
1709
1956
  declare class RtuiActionBarContainerComponent {
1710
1957
  #private;
1711
1958
  readonly config: Signal<IRtActionBar.Config>;
1959
+ /** Выбрано ли что-нибудь: этим панель и открывается. */
1960
+ readonly opened: Signal<boolean>;
1961
+ /** Стоит ли панель в разметке: она остаётся в ней и на время ухода. */
1962
+ readonly shown: Signal<boolean>;
1963
+ readonly leaving: Signal<boolean>;
1964
+ constructor();
1712
1965
  closeBar(): void;
1713
1966
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiActionBarContainerComponent, never>;
1714
1967
  static ɵcmp: i0.ɵɵComponentDeclaration<RtuiActionBarContainerComponent, "rtui-action-bar-container", never, {}, {}, never, never, true, never>;
@@ -1739,10 +1992,10 @@ declare class RtActionBarService {
1739
1992
  */
1740
1993
  declare class RtThemeService {
1741
1994
  #private;
1742
- readonly theme: Signal<RtThemeType>;
1995
+ readonly theme: Signal<TRtThemeType>;
1743
1996
  readonly colorScheme: Signal<string | null>;
1744
1997
  constructor();
1745
- setTheme(theme: RtThemeType): void;
1998
+ setTheme(theme: TRtThemeType): void;
1746
1999
  /** Toggles between light and dark (auto resolves to its opposite visual state). */
1747
2000
  toggle(): void;
1748
2001
  /**
@@ -1756,7 +2009,7 @@ declare class RtThemeService {
1756
2009
  * for SSR/brand-critical schemes prefer the Sass path). Does not activate the
1757
2010
  * scheme — call {@link setColorScheme} afterwards.
1758
2011
  */
1759
- registerColorScheme(name: string, ramp: RtColorSchemeRamp): void;
2012
+ registerColorScheme(name: string, ramp: TRtColorSchemeRamp): void;
1760
2013
  static ɵfac: i0.ɵɵFactoryDeclaration<RtThemeService, never>;
1761
2014
  static ɵprov: i0.ɵɵInjectableDeclaration<RtThemeService>;
1762
2015
  }
@@ -1776,7 +2029,7 @@ declare class RtThemeService {
1776
2029
  * on elements inside the context (e.g. `color: var(--rt-text-base-primary)`).
1777
2030
  */
1778
2031
  declare class RtThemeDirective {
1779
- readonly rtTheme: InputSignal<RtThemeType | ''>;
2032
+ readonly rtTheme: InputSignal<TRtThemeType | ''>;
1780
2033
  static ɵfac: i0.ɵɵFactoryDeclaration<RtThemeDirective, never>;
1781
2034
  static ɵdir: i0.ɵɵDirectiveDeclaration<RtThemeDirective, "[rtTheme]", never, { "rtTheme": { "alias": "rtTheme"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1782
2035
  }
@@ -1794,5 +2047,5 @@ declare class RtHideTooltipDirective implements AfterViewInit {
1794
2047
  static ɵdir: i0.ɵɵDirectiveDeclaration<RtHideTooltipDirective, "[rtHideTooltipDirective]", never, { "element": { "alias": "rtHideTooltipDirective"; "required": true; "isSignal": true; }; "isTooltipShown": { "alias": "isTooltipShown"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
1795
2048
  }
1796
2049
 
1797
- export { ASIDE_BUTTONS_ENUM, ASIDE_REF, AsideRef, DEFAULT_PAGE_MODEL, DEFAULT_PAGE_SIZE, IAside, IModal, INFO_BADGE_SIZE_ENUM, INFO_BADGE_TYPE_ENUM, IRtActionBar, IRtSnackBar, IRtUiConfig, IRtuiButton, ISideMenu, ITable, MODAL_WINDOW_SIZE_ENUM, RTUI_TABLE_COMPONENT_TOKEN, RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE, RT_ACCENT_ROLE_ENUM, RT_COLOR_SCHEME_STORAGE_KEY, RT_DARK_CLASS, RT_DEFAULT_SCHEME, RT_SCHEME_ATTRIBUTE, RT_THEME_ATTRIBUTE, RT_THEME_AUTO_CLASS, RT_THEME_ENUM, RT_THEME_STORAGE_KEY, RT_UI_CONFIG, RtActionBarService, RtAsideService, RtDynamicListSelectorsDirective, RtHideTooltipDirective, RtModalService, RtPopoverDirective, RtSnackBarService, RtTableConfigService, RtTableSelectorsDirective, RtThemeDirective, RtThemeService, RtuiActionBarComponent, RtuiActionBarContainerComponent, RtuiAsideContainerComponent, RtuiAsideContainerHeaderDirective, RtuiButtonComponent, RtuiClearButtonComponent, RtuiCustomTableCellsDirective, RtuiDynamicInputAdditionalControlDirective, RtuiDynamicInputComponent, RtuiDynamicListComponent, RtuiDynamicListCustomTableCellsDirective, RtuiDynamicListRowActionsDirective, RtuiDynamicListRowAdditionalActionsDirective, RtuiDynamicListToolbarActionsDirective, RtuiDynamicListToolbarSelectorsDirective, RtuiDynamicSelectorAdditionalControlDirective, RtuiDynamicSelectorComponent, RtuiDynamicSelectorItemAdditionalControlDirective, RtuiDynamicSelectorItemTitleDirective, RtuiDynamicSelectorItemTitleProjectionDirective, RtuiDynamicSelectorListActionsComponent, RtuiDynamicSelectorPlaceholderComponent, RtuiDynamicSelectorSelectedListComponent, RtuiFileUploadComponent, RtuiHeaderCenterDirective, RtuiHeaderComponent, RtuiHeaderLeftDirective, RtuiHeaderRightDirective, RtuiIconComponent, RtuiImageUploadComponent, RtuiInfoBadgeComponent, RtuiModalComponent, RtuiMultiButtonComponent, RtuiMultiSelectorPopupComponent, RtuiPaginationComponent, RtuiScrollableContainerComponent, RtuiScrollableContainerContentDirective, RtuiScrollableContainerFooterDirective, RtuiScrollableContainerHeaderDirective, RtuiSideMenuComponent, RtuiSideMenuFooterDirective, RtuiSideMenuHeaderDirective, RtuiSnackBarComponent, RtuiSpinnerComponent, RtuiStopTableRowClickDirective, RtuiTableAdditionalRowActionsDirective, RtuiTableComponent, RtuiTableRowActionsDirective, RtuiTableRowClickDirective, RtuiToggleComponent, RtuiToolbarCenterDirective, RtuiToolbarComponent, RtuiToolbarLeftDirective, RtuiToolbarRightDirective, TABLE_COLUMN_FILTER_TYPES_ENUM, TABLE_COLUMN_TYPES_ENUM, TEXT_CELL_COLOR_ENUM, TOGGLE_SIZE_TYPE_ENUM, darkenHexColor, ddServices, getColorBasedOnBackground, progressDecreaseAnimation, progressIncreaseAnimation, provideRtUi };
1798
- export type { AsideButtonsType, AsidePositions, IImageUploadFormat, IInfoBadgeSizeType, INameValueType, IRtuiTable, ISelect, Icon, IconSideType, InfoBadgeType, MenuItemTrigger, ModalWindowSizeType, RtAccentRole, RtColorSchemeRamp, RtThemeType, RtUiDesign, RtuiIconSizeType, RtuiIconThemeType, ToggleSizeType };
2050
+ export { ASIDE_REF, AsideRef, DEFAULT_PAGE_MODEL, DEFAULT_PAGE_SIZE, EAsideButtons, EInfoBadgeSize, EInfoBadgeType, EModalWindowSize, ERtAccentRole, ERtTheme, ETableColumnFilterTypes, ETableColumnTypes, ETextCellColor, EToggleSizeType, IAside, IModal, IRtActionBar, IRtSnackBar, IRtUiConfig, IRtuiButton, ISideMenu, ITable, RTUI_SIDE_MENU, RTUI_TABLE_COMPONENT_TOKEN, RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE, RT_COLOR_SCHEME_STORAGE_KEY, RT_DARK_CLASS, RT_DEFAULT_SCHEME, RT_SCHEME_ATTRIBUTE, RT_THEME_ATTRIBUTE, RT_THEME_AUTO_CLASS, RT_THEME_STORAGE_KEY, RT_UI_CONFIG, RtActionBarService, RtAsideService, RtDynamicListSelectorsDirective, RtHideTooltipDirective, RtModalService, RtPopoverDirective, RtSnackBarService, RtTableConfigService, RtTableSelectorsDirective, RtThemeDirective, RtThemeService, RtuiActionBarComponent, RtuiActionBarContainerComponent, RtuiAsideContainerComponent, RtuiAsideContainerHeaderDirective, RtuiButtonComponent, RtuiClearButtonComponent, RtuiCustomTableCellsDirective, RtuiDynamicInputAdditionalControlDirective, RtuiDynamicInputComponent, RtuiDynamicListComponent, RtuiDynamicListCustomTableCellsDirective, RtuiDynamicListRowActionsDirective, RtuiDynamicListRowAdditionalActionsDirective, RtuiDynamicListToolbarActionsDirective, RtuiDynamicListToolbarSelectorsDirective, RtuiDynamicSelectorAdditionalControlDirective, RtuiDynamicSelectorComponent, RtuiDynamicSelectorItemAdditionalControlDirective, RtuiDynamicSelectorItemTitleDirective, RtuiDynamicSelectorItemTitleProjectionDirective, RtuiDynamicSelectorListActionsComponent, RtuiDynamicSelectorPlaceholderComponent, RtuiDynamicSelectorSelectedListComponent, RtuiFileUploadComponent, RtuiHeaderCenterDirective, RtuiHeaderComponent, RtuiHeaderLeftDirective, RtuiHeaderRightDirective, RtuiIconComponent, RtuiImageUploadComponent, RtuiInfoBadgeComponent, RtuiModalComponent, RtuiMultiButtonComponent, RtuiMultiSelectorPopupComponent, RtuiPaginationComponent, RtuiScrollableContainerComponent, RtuiScrollableContainerContentDirective, RtuiScrollableContainerFooterDirective, RtuiScrollableContainerHeaderDirective, RtuiSideMenuComponent, RtuiSideMenuFooterDirective, RtuiSideMenuHeaderDirective, RtuiSnackBarComponent, RtuiSpinnerComponent, RtuiStopTableRowClickDirective, RtuiTableAdditionalRowActionsDirective, RtuiTableComponent, RtuiTableRowActionsDirective, RtuiTableRowClickDirective, RtuiToggleComponent, RtuiToolbarCenterDirective, RtuiToolbarComponent, RtuiToolbarLeftDirective, RtuiToolbarRightDirective, SUB_MENU_MODE_KEY, SUB_MENU_WIDTH_KEY, SUB_MENU_WIDTH_MAX, SUB_MENU_WIDTH_MIN, clampSubMenuWidth, comparePropNames, darkenHexColor, getColorBasedOnBackground, provideRtUi, readSubMenuMode, readSubMenuWidth, splitSubMenuTitle, writeSubMenuMode, writeSubMenuWidth };
2051
+ export type { IAsideConfig, IModalIcon, INameValueType, IRtuiSideMenuHost, IRtuiTable, ISelect, ISubMenuTitlePart, TAsideButtonsType, TAsidePositions, TIconSideType, TImageUploadFormat, TInfoBadgeSizeType, TInfoBadgeType, TMenuItemTrigger, TModalButtonAppearance, TModalWindowSizeType, TRtAccentRole, TRtColorSchemeRamp, TRtThemeType, TRtUiDesign, TRtuiIconSizeType, TRtuiIconThemeType, TToggleSizeType };