@rt-tools/ui-kit 0.4.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/README.md +1 -1
  2. package/fesm2022/rt-tools-ui-kit.mjs +3500 -3105
  3. package/fesm2022/rt-tools-ui-kit.mjs.map +1 -1
  4. package/package.json +7 -8
  5. package/rt-tools-ui-kit-0.5.1.tgz +0 -0
  6. package/src/lib/ui-kit/action-bar/components/container/rtui-action-bar-container.component.scss +47 -0
  7. package/src/lib/ui-kit/action-bar/stories/component/test-action-bar.component.scss +15 -0
  8. package/src/lib/ui-kit/aside/components/container/aside-container.component.scss +4 -1
  9. package/src/lib/ui-kit/aside/components/panel/aside-panel.component.scss +24 -0
  10. package/src/lib/ui-kit/popover/stories/component/test-popover.component.scss +32 -0
  11. package/src/lib/ui-kit/scrollable/scrollable-container.component.scss +57 -0
  12. package/src/lib/ui-kit/scrollable/stories/component/test-scrollable.component.scss +17 -0
  13. package/src/lib/ui-kit/side-menu/menu/rtui-side-menu.component.scss +219 -4
  14. package/src/lib/ui-kit/side-menu/menu-sub-item/rtui-side-menu-sub-item.component.scss +45 -4
  15. package/src/lib/ui-kit/snack-bar/snack-bar.component.scss +20 -0
  16. package/src/lib/ui-kit/toolbar/stories/component/test-toolbar.component.scss +22 -0
  17. package/src/styles/base/_tokens.scss +5 -0
  18. package/src/styles/color-scheme.spec.ts +4 -1
  19. package/src/styles/components/_rtui_button.scss +13 -547
  20. package/src/styles/components/button/_base.scss +64 -0
  21. package/src/styles/components/button/_map.scss +184 -0
  22. package/src/styles/components/button/_palettes.scss +218 -0
  23. package/src/styles/components/button/_sizes.scss +29 -0
  24. package/src/styles/components/button/_text.scss +68 -0
  25. package/styles/tokens.css +2 -0
  26. package/types/rt-tools-ui-kit.d.ts +585 -449
  27. package/rt-tools-ui-kit-0.4.0.tgz +0 -0
@@ -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,29 +265,69 @@ declare class RtuiSideMenuFooterDirective {
153
265
  }
154
266
  declare class RtuiSideMenuComponent {
155
267
  #private;
156
- /** Экран узкий: значение входа, если приложение его дало, иначе замер кита. */
268
+ /**
269
+ * Ширина подменю в оформлении. Своего выбора нет — переменная не ставится вовсе, и ширину
270
+ * берёт набор токенов: своё число здесь подменило бы его молча.
271
+ */
272
+ /**
273
+ * Натянутая ширина панели. Кладётся своим свойством, а не тем, каким ширину задаёт
274
+ * потребитель: панель берёт наибольшее из двух, и заданная оформлением ширина остаётся нижним
275
+ * пределом сама по себе. Числом в ките этот предел назвать нечем — ширину знает потребитель.
276
+ */
277
+ protected readonly subMenuWidthStyle: Signal<string | null>;
278
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
157
279
  protected readonly narrow: Signal<boolean>;
158
- readonly headerTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
159
- readonly footerTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
160
- readonly subMenuRef: Signal<INullable<MatDrawer>>;
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>>>;
161
306
  readonly backToMainMenuButton: Signal<ISideMenu.Item>;
162
- readonly selectedItem: WritableSignal<INullable<ISideMenu.Item>>;
163
- readonly selectedSubMenu: WritableSignal<INullable<ISideMenu.Item[]>>;
307
+ readonly selectedItem: WritableSignal<TNullable<ISideMenu.Item>>;
308
+ readonly selectedSubMenu: WritableSignal<TNullable<ISideMenu.Item[]>>;
164
309
  activeMenuIds: InputSignal<Array<string | number>>;
165
310
  menuItems: InputSignalWithTransform<ISideMenu.Item[], ISideMenu.Item[]>;
311
+ /** Мода подменю. Умолчание — сегодняшнее поведение: открывается наведением. */
312
+ subMenuMode: InputSignal<ISideMenu.SubMenuMode>;
166
313
  /**
167
- * Признак узкого экрана.
168
- *
169
- * @deprecated Кит определяет его сам — `BreakpointService` из `@rt-tools/core`. Вход
170
- * оставлен ради приложений, которые уже его передают, и уйдёт в следующем крупном выпуске.
314
+ * Ширина закреплённого подменю в пикселях. Пустая — ширину ставит оформление; хранит выбор
315
+ * потребитель, как и моду.
171
316
  */
172
- isMobile: InputSignal<INullable<boolean>>;
317
+ subMenuWidth: InputSignal<number | null>;
173
318
  isSubMenuXScrollEnabled: InputSignalWithTransform<boolean, boolean>;
174
319
  isMainMenuIconsOutlined: InputSignalWithTransform<boolean, boolean>;
175
320
  isSubMenuIconsOutlined: InputSignalWithTransform<boolean, boolean>;
176
321
  isSubMenuButtonIconsOutlined: InputSignalWithTransform<boolean, boolean>;
177
322
  isSubMenuTooltipsShown: InputSignalWithTransform<boolean, boolean>;
178
323
  activeMenuId: Signal<number | string>;
324
+ /**
325
+ * Просьба о моде, а не смена моды: предпочтение хранит потребитель кита и возвращает его
326
+ * входом. Своего состояния о нём меню не заводит.
327
+ */
328
+ readonly subMenuModeChange: OutputEmitterRef<ISideMenu.SubMenuMode>;
329
+ /** Просьба о ширине — по той же причине, что и просьба о моде: своего состояния меню не держит. */
330
+ readonly subMenuWidthChange: OutputEmitterRef<number>;
179
331
  readonly closeMobileMenuAction: OutputEmitterRef<void>;
180
332
  readonly clickSubMenuAction: OutputEmitterRef<{
181
333
  item: ISideMenu.Item;
@@ -193,50 +345,84 @@ declare class RtuiSideMenuComponent {
193
345
  onBackToMainMenu(): void;
194
346
  toggleSubMenu(item?: ISideMenu.Item): void;
195
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;
196
361
  closeMobileMenu(): void;
197
362
  clickSubMenuAdditional({ data, event }: {
198
363
  data: ISideMenu.ItemData;
199
364
  event: MouseEvent;
200
365
  }): void;
201
366
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiSideMenuComponent, never>;
202
- 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>;
203
368
  }
204
369
 
205
- declare class RtuiSpinnerComponent {
370
+ declare class RtuiSpinnerComponent implements OnInit {
371
+ #private;
206
372
  diameter: InputSignalWithTransform<number, number>;
207
373
  showBox: InputSignalWithTransform<boolean, boolean>;
208
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;
209
389
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiSpinnerComponent, never>;
210
- 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>;
211
391
  }
212
392
 
213
- 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
+ }
214
404
  declare class AsideRef<DATA, ANSWER> {
215
405
  private answer;
216
406
  overlayRef: OverlayRef;
217
407
  component: ComponentType<unknown>;
218
- position: AsidePositions;
408
+ position: TAsidePositions;
219
409
  data: DATA;
220
- 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);
221
411
  close(answer?: ANSWER): void;
222
412
  }
223
413
  declare const ASIDE_REF: InjectionToken<AsideRef<object, object>>;
224
- declare const ddServices: Array<{
225
- provide: string;
226
- useValue: unknown;
227
- }>;
228
414
 
229
- declare enum ASIDE_BUTTONS_ENUM {
415
+ declare enum EAsideButtons {
230
416
  USER_ACTIVE = "User active",
231
417
  USER_INACTIVE = "User inactive",
232
418
  DELETE = "Delete",
233
419
  RESET = "Reset"
234
420
  }
235
- 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;
236
422
 
237
423
  declare namespace IAside {
238
424
  interface HeaderActionButton {
239
- name: AsideButtonsType;
425
+ name: TAsideButtonsType;
240
426
  icon: string;
241
427
  color: string;
242
428
  tooltip: string;
@@ -246,6 +432,13 @@ declare namespace IAside {
246
432
 
247
433
  declare class RtAsideService {
248
434
  #private;
435
+ /**
436
+ * Закрытие каждой открытой панели объявлено один раз, а не заводится вызовом открытия.
437
+ *
438
+ * Потоки сливаются, а не сменяют друг друга: панели живут порознь, и оборванный поток
439
+ * предыдущей оставил бы её на экране — снять её после этого нечем.
440
+ */
441
+ constructor();
249
442
  /**
250
443
  * Opens an aside panel with a specified component, position, and data.
251
444
  *
@@ -259,7 +452,7 @@ declare class RtAsideService {
259
452
  *
260
453
  * @returns An observable that emits the response from the aside panel when it is closed.
261
454
  */
262
- 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>;
263
456
  static ɵfac: i0.ɵɵFactoryDeclaration<RtAsideService, never>;
264
457
  static ɵprov: i0.ɵɵInjectableDeclaration<RtAsideService>;
265
458
  }
@@ -270,42 +463,51 @@ declare class RtuiAsideContainerHeaderDirective {
270
463
  }
271
464
  declare class RtuiAsideContainerComponent {
272
465
  #private;
273
- /** Экран узкий: значение входа, если приложение его дало, иначе замер кита. */
466
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
274
467
  protected readonly narrow: Signal<boolean>;
275
- title: InputSignal<INullable<string>>;
276
- /**
277
- * Признак узкого экрана.
278
- *
279
- * @deprecated Кит определяет его сам — `RtuiBreakpointsService`. Вход оставлен ради
280
- * приложений, которые уже его передают, и уйдёт в следующем крупном выпуске.
281
- */
282
- isMobile: InputSignalWithTransform<INullable<boolean>, INullable<boolean> | string>;
468
+ title: InputSignal<TNullable<string>>;
283
469
  isSubmitButtonDisabled: InputSignalWithTransform<boolean, boolean>;
284
470
  isFooterShown: InputSignalWithTransform<boolean, boolean>;
285
471
  pending: InputSignalWithTransform<boolean, boolean>;
286
472
  isRequestErrorShown: InputSignalWithTransform<boolean, boolean>;
287
473
  headerActionsButtons: InputSignalWithTransform<IAside.HeaderActionButton[], IAside.HeaderActionButton[]>;
288
- requestError: InputSignal<INullable<unknown>>;
474
+ requestError: InputSignal<TNullable<unknown>>;
289
475
  submitButtonTitle: InputSignal<string>;
290
476
  cancelButtonTitle: InputSignal<string>;
291
477
  submitButtonTooltip: InputSignal<string>;
292
478
  readonly submitAction: OutputEmitterRef<void>;
293
479
  readonly cancelAction: OutputEmitterRef<void>;
294
- readonly headerAction: OutputEmitterRef<AsideButtonsType>;
295
- readonly headerTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
480
+ readonly headerAction: OutputEmitterRef<TAsideButtonsType>;
481
+ readonly headerTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
296
482
  onSubmit(): void;
297
483
  onCancel(): void;
298
- onHeaderActionClick(buttonName: AsideButtonsType): void;
484
+ onHeaderActionClick(buttonName: TAsideButtonsType): void;
299
485
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiAsideContainerComponent, never>;
300
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiAsideContainerComponent, "rtui-aside-container", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "isMobile": { "alias": "isMobile"; "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>;
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';
301
503
  }
302
504
 
303
- declare enum RT_THEME_ENUM {
505
+ declare enum ERtTheme {
304
506
  LIGHT = "light",
305
507
  DARK = "dark",
306
508
  AUTO = "auto"
307
509
  }
308
- type RtThemeType = `${RT_THEME_ENUM}`;
510
+ type TRtThemeType = `${ERtTheme}`;
309
511
  declare const RT_THEME_STORAGE_KEY: string;
310
512
  declare const RT_DARK_CLASS: string;
311
513
  declare const RT_THEME_AUTO_CLASS: string;
@@ -315,7 +517,7 @@ declare const RT_THEME_ATTRIBUTE: string;
315
517
  * color scheme may override. The semantic accent tier
316
518
  * (`--rt-bg/text/icon/border-accent-*`) derives entirely from these rows.
317
519
  */
318
- declare enum RT_ACCENT_ROLE_ENUM {
520
+ declare enum ERtAccentRole {
319
521
  PRIMARY = "primary",
320
522
  INFO = "info",
321
523
  SUCCESS = "success",
@@ -323,19 +525,19 @@ declare enum RT_ACCENT_ROLE_ENUM {
323
525
  DANGER = "danger",
324
526
  BRAND = "brand"
325
527
  }
326
- type RtAccentRole = `${RT_ACCENT_ROLE_ENUM}`;
528
+ type TRtAccentRole = `${ERtAccentRole}`;
327
529
  /**
328
530
  * A brand palette: per accent role, a tonal ramp mapping tone step (0–100)
329
531
  * to a CSS color. One ramp serves both light and dark (the mode picks the tone).
330
532
  * Partial ramps are allowed — unset tones keep the rt-tools defaults.
331
533
  *
332
534
  * @example
333
- * const teal: RtColorSchemeRamp = {
535
+ * const teal: TRtColorSchemeRamp = {
334
536
  * primary: { 20: '#b3e3e1', 40: '#5cb8b5', 60: '#1a9d99', 100: '#008582' },
335
537
  * brand: { 20: '#e8e8e8', 100: '#008582' },
336
538
  * };
337
539
  */
338
- type RtColorSchemeRamp = Partial<Record<RtAccentRole, Record<number, string>>>;
540
+ type TRtColorSchemeRamp = Partial<Record<TRtAccentRole, Record<number, string>>>;
339
541
  /** `'default'`/`null` clears the active scheme (back to the rt-tools palette). */
340
542
  declare const RT_DEFAULT_SCHEME: string;
341
543
  declare const RT_COLOR_SCHEME_STORAGE_KEY: string;
@@ -348,20 +550,20 @@ declare const RT_SCHEME_ATTRIBUTE: string;
348
550
  * (e.g. the button pill becomes a real `matButton`), for apps that have not
349
551
  * migrated their visual language yet or need to match surrounding Material controls.
350
552
  */
351
- type RtUiDesign = 'material' | 'custom';
553
+ type TRtUiDesign = 'material' | 'custom';
352
554
  declare namespace IRtUiConfig {
353
555
  /** Global defaults applied app-wide unless a component-level setting or an input overrides them. */
354
556
  interface Global {
355
557
  /** Initial theme used when the user has no persisted preference. */
356
- theme?: RtThemeType;
558
+ theme?: TRtThemeType;
357
559
  /** Initial brand color scheme (see `RtThemeService.registerColorScheme`) when none is persisted. */
358
560
  colorScheme?: string;
359
561
  /** Default design for every design-aware control. */
360
- design?: RtUiDesign;
562
+ design?: TRtUiDesign;
361
563
  }
362
564
  /** Per-instance-overridable defaults for `rtui-button`. */
363
565
  interface Button {
364
- design?: RtUiDesign;
566
+ design?: TRtUiDesign;
365
567
  size?: IRtuiButton.Size;
366
568
  radius?: IRtuiButton.Radius;
367
569
  appearance?: IRtuiButton.Appearance;
@@ -400,14 +602,14 @@ declare namespace IRtUiConfig {
400
602
  */
401
603
  declare const RT_UI_CONFIG: InjectionToken<IRtUiConfig.Config>;
402
604
 
403
- type RtuiIconSizeType = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | '3xl';
404
- 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';
405
607
  declare class RtuiIconComponent {
406
608
  #private;
407
609
  protected readonly fontLoaded: Signal<boolean>;
408
610
  protected readonly hostClasses: Signal<string>;
409
- readonly size: InputSignal<RtuiIconSizeType>;
410
- readonly theme: InputSignal<RtuiIconThemeType>;
611
+ readonly size: InputSignal<TRtuiIconSizeType>;
612
+ readonly theme: InputSignal<TRtuiIconThemeType>;
411
613
  readonly glyph: InputSignalWithTransform<string, unknown>;
412
614
  readonly outlined: InputSignalWithTransform<boolean, BooleanInput>;
413
615
  readonly rotate: InputSignalWithTransform<boolean, BooleanInput>;
@@ -416,24 +618,16 @@ declare class RtuiIconComponent {
416
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: {}; }]>;
417
619
  }
418
620
 
419
- declare namespace IRtuiButton {
420
- type Type = 'icon' | 'fab' | 'pill';
421
- type Variant = 'default' | 'primary' | 'danger' | 'success' | 'warning' | 'accent';
422
- type Size = 'xs' | 'sm' | 'md' | 'lg';
423
- type Radius = 'none' | 'sm' | 'md' | 'lg' | 'full';
424
- type Appearance = 'solid' | 'outline' | 'light' | 'text';
425
- type IconPosition = 'start' | 'end';
426
- }
427
621
  declare class RtuiButtonComponent {
428
622
  #private;
429
- /** Design system the button renders with — see {@link RtUiDesign}. */
430
- protected readonly resolvedDesign: Signal<RtUiDesign>;
623
+ /** Design system the button renders with — see {@link TRtUiDesign}. */
624
+ protected readonly resolvedDesign: Signal<TRtUiDesign>;
431
625
  protected readonly resolvedSize: Signal<IRtuiButton.Size>;
432
626
  protected readonly resolvedRadius: Signal<IRtuiButton.Radius>;
433
627
  protected readonly resolvedAppearance: Signal<IRtuiButton.Appearance | undefined>;
434
628
  /** Native Material button appearance the pill renders with under `design: 'material'`. */
435
629
  protected readonly materialAppearance: Signal<MatButtonAppearance>;
436
- protected readonly resolvedIconSize: Signal<RtuiIconSizeType>;
630
+ protected readonly resolvedIconSize: Signal<TRtuiIconSizeType>;
437
631
  protected readonly spinnerSize: Signal<number>;
438
632
  protected readonly modifiers: Signal<Record<string, boolean>>;
439
633
  /**
@@ -442,14 +636,14 @@ declare class RtuiButtonComponent {
442
636
  */
443
637
  protected readonly hostModifiers: Signal<string>;
444
638
  readonly type: InputSignal<IRtuiButton.Type>;
445
- readonly design: InputSignal<RtUiDesign | undefined>;
639
+ readonly design: InputSignal<TRtUiDesign | undefined>;
446
640
  readonly variant: InputSignal<IRtuiButton.Variant>;
447
641
  readonly appearance: InputSignal<IRtuiButton.Appearance | undefined>;
448
642
  readonly size: InputSignal<IRtuiButton.Size | undefined>;
449
643
  readonly radius: InputSignal<IRtuiButton.Radius | undefined>;
450
644
  readonly icon: InputSignalWithTransform<string, unknown>;
451
645
  readonly iconPosition: InputSignal<IRtuiButton.IconPosition>;
452
- readonly iconSize: InputSignal<RtuiIconSizeType | undefined>;
646
+ readonly iconSize: InputSignal<TRtuiIconSizeType | undefined>;
453
647
  readonly text: InputSignalWithTransform<string, unknown>;
454
648
  readonly loading: InputSignalWithTransform<boolean, BooleanInput>;
455
649
  readonly disabled: InputSignalWithTransform<boolean, BooleanInput>;
@@ -485,10 +679,10 @@ declare class RtuiToolbarRightDirective {
485
679
  }
486
680
  declare class RtuiToolbarComponent {
487
681
  isVisibleToolbar: Signal<boolean>;
488
- readonly leftToolTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
489
- readonly centerToolTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
490
- readonly rightToolTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
491
- 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>;
492
686
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiToolbarComponent, never>;
493
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>;
494
688
  }
@@ -507,96 +701,19 @@ declare class RtuiHeaderRightDirective {
507
701
  }
508
702
  declare class RtuiHeaderComponent {
509
703
  #private;
510
- /** Экран узкий: значение входа, если приложение его дало, иначе замер кита. */
704
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
511
705
  protected readonly narrow: Signal<boolean>;
512
- /**
513
- * Признак узкого экрана.
514
- *
515
- * @deprecated Кит определяет его сам — `BreakpointService` из `@rt-tools/core`. Вход
516
- * оставлен ради приложений, которые уже его передают, и уйдёт в следующем крупном выпуске.
517
- */
518
- isMobile: InputSignal<INullable<boolean>>;
519
- isMobileMenuButtonShown: InputSignalWithTransform<INullable<boolean>, INullable<boolean>>;
520
- readonly leftHeaderTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
521
- readonly centerHeaderTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
522
- readonly rightHeaderTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
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>>>>;
523
710
  readonly openMobileMenuAction: OutputEmitterRef<void>;
524
711
  openSideMenu(): void;
525
712
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiHeaderComponent, never>;
526
- 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>;
713
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtuiHeaderComponent, "rtui-header", never, { "isMobileMenuButtonShown": { "alias": "isMobileMenuButtonShown"; "required": false; "isSignal": true; }; }, { "openMobileMenuAction": "openMobileMenuAction"; }, ["leftHeaderTpl", "centerHeaderTpl", "rightHeaderTpl"], never, true, never>;
527
714
  }
528
715
 
529
- declare class RtuiClearButtonComponent {
530
- #private;
531
- /** Экран узкий: значение входа, если приложение его дало, иначе замер кита. */
532
- protected readonly narrow: Signal<boolean>;
533
- /**
534
- * Признак узкого экрана.
535
- *
536
- * @deprecated Кит определяет его сам — `BreakpointService` из `@rt-tools/core`. Вход
537
- * оставлен ради приложений, которые уже его передают, и уйдёт в следующем крупном выпуске.
538
- */
539
- isMobile: InputSignal<INullable<boolean>>;
540
- isButtonShown: InputSignalWithTransform<INullable<boolean>, boolean>;
541
- tooltip: InputSignalWithTransform<INullable<string>, string>;
542
- tooltipPosition: InputSignal<TooltipPosition>;
543
- readonly keydownAction: OutputEmitterRef<void>;
544
- readonly clickAction: OutputEmitterRef<void>;
545
- onKeydown(): void;
546
- onClick(): void;
547
- static ɵfac: i0.ɵɵFactoryDeclaration<RtuiClearButtonComponent, never>;
548
- 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>;
549
- }
550
-
551
- declare class RtuiPaginationComponent implements OnInit, AfterViewInit {
552
- #private;
553
- /** Экран узкий: значение входа, если приложение его дало, иначе замер кита. */
554
- protected readonly narrow: Signal<boolean>;
555
- /** Current Page Model */
556
- currentPageModel: InputSignal<IPageModel>;
557
- /**
558
- * Признак узкого экрана.
559
- *
560
- * @deprecated Кит определяет его сам — `RtuiBreakpointsService`. Вход оставлен ради
561
- * приложений, которые уже его передают, и уйдёт в следующем крупном выпуске.
562
- */
563
- isMobile: InputSignalWithTransform<INullable<boolean>, INullable<boolean> | string>;
564
- /** Output action when Page Model changed */
565
- readonly pageModelChange: OutputEmitterRef<Partial<IPageModel>>;
566
- /** Form control for selected page size */
567
- control: FormControl<number>;
568
- readonly divider: Signal<string>;
569
- /** Page size options */
570
- readonly pageSizes: Signal<number[]>;
571
- /** Array of current page numbers */
572
- readonly numbers: WritableSignal<Array<number | string>>;
573
- /** Page Model for compare */
574
- readonly previousPageModel: WritableSignal<INullable<IPageModel>>;
575
- /** Value of full content width */
576
- readonly minContentFitWidth: WritableSignal<number>;
577
- /** Indicates is content clipped */
578
- readonly isContentClipped: WritableSignal<boolean>;
579
- /** Container template ref */
580
- readonly containerRef: Signal<INullable<ElementRef<HTMLElement>>>;
581
- /** Set 'isContentClipped' when widow resize */
582
- onResize(): void;
583
- ngOnInit(): void;
584
- /** Set 'isContentClipped' on init */
585
- ngAfterViewInit(): void;
586
- /** Action for change Page Model */
587
- changePageSize(pageSize: number): void;
588
- /** Action for select page */
589
- onChangePageNumber(pageNumber: string | number): void;
590
- static ɵfac: i0.ɵɵFactoryDeclaration<RtuiPaginationComponent, never>;
591
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiPaginationComponent, "rtui-pagination", never, { "currentPageModel": { "alias": "currentPageModel"; "required": true; "isSignal": true; }; "isMobile": { "alias": "isMobile"; "required": false; "isSignal": true; }; }, { "pageModelChange": "pageModelChange"; }, never, never, true, never>;
592
- }
593
-
594
- declare const RTUI_TABLE_STOP_ROW_CLICK_ATTRIBUTE: string;
595
-
596
- declare const DEFAULT_PAGE_SIZE: number;
597
- declare const DEFAULT_PAGE_MODEL: Readonly<IPageModel>;
598
-
599
- declare enum TABLE_COLUMN_TYPES_ENUM {
716
+ declare enum ETableColumnTypes {
600
717
  DATE = "date",
601
718
  PERCENT = "percent",
602
719
  ARRAY = "array",
@@ -605,13 +722,13 @@ declare enum TABLE_COLUMN_TYPES_ENUM {
605
722
  CURRENCY = "currency",
606
723
  CUSTOM = "custom"
607
724
  }
608
- declare enum TABLE_COLUMN_FILTER_TYPES_ENUM {
725
+ declare enum ETableColumnFilterTypes {
609
726
  TEXT = "text",
610
727
  NUMBER = "number",
611
728
  SELECT = "select",
612
729
  DATE = "date"
613
730
  }
614
- declare enum TEXT_CELL_COLOR_ENUM {
731
+ declare enum ETextCellColor {
615
732
  NEUTRAL = "neutral",
616
733
  DANGER = "danger",
617
734
  WARNING = "warning",
@@ -619,9 +736,9 @@ declare enum TEXT_CELL_COLOR_ENUM {
619
736
  EMPTY = "empty"
620
737
  }
621
738
  declare namespace ITable {
622
- 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;
623
- 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;
624
- 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;
625
742
  interface Column<T = Record<string, unknown>> extends Record<string, unknown> {
626
743
  align: 'right' | 'left' | 'center';
627
744
  propName: keyof T;
@@ -641,8 +758,8 @@ declare namespace ITable {
641
758
  tooltip?: string;
642
759
  transform?: (value: T[keyof T]) => string | number;
643
760
  filterType?: FilterType;
644
- defaultFilterOperator?: FilterOperatorType;
645
- filterOperators?: FilterOperatorType[];
761
+ defaultFilterOperator?: TFilterOperatorType;
762
+ filterOperators?: TFilterOperatorType[];
646
763
  filterSelectOptions?: string[];
647
764
  displayName?: string;
648
765
  orderIndex?: number;
@@ -685,20 +802,20 @@ declare namespace ITable {
685
802
  declare const RTUI_TABLE_COMPONENT_TOKEN: InjectionToken<IRtuiTable<Record<string, unknown>, string, string>>;
686
803
  interface IRtuiTable<ENTITY_TYPE extends Record<string, unknown>, SORT_PROPERTY extends Extract<keyof ENTITY_TYPE, string>, KEY extends Extract<keyof ENTITY_TYPE, string>> {
687
804
  columns: Signal<Array<ITable.Column<ENTITY_TYPE>>>;
688
- customCellsTpl: Signal<INullable<{
805
+ customCellsTpl: Signal<TNullable<{
689
806
  getTemplateByPropName(propName: keyof ENTITY_TYPE): TemplateRef<{
690
807
  $implicit: ENTITY_TYPE;
691
808
  }>;
692
809
  }>>;
693
- rowActionsTpl: Signal<INullable<TemplateRef<{
810
+ rowActionsTpl: Signal<TNullable<TemplateRef<{
694
811
  $implicit: ENTITY_TYPE;
695
812
  }>>>;
696
- additionalRowActionsTpl: Signal<INullable<TemplateRef<unknown>>>;
813
+ additionalRowActionsTpl: Signal<TNullable<TemplateRef<unknown>>>;
697
814
  narrow: Signal<boolean>;
698
815
  isTableRowsClickable: Signal<boolean>;
699
816
  keyExp: Signal<NonNullable<KEY>>;
700
817
  entities: Signal<ENTITY_TYPE[]>;
701
- currentSortModel: Signal<INullable<ISortModel<SORT_PROPERTY>>>;
818
+ currentSortModel: Signal<TNullable<ISortModel<SORT_PROPERTY>>>;
702
819
  appearance: Signal<MatFormFieldAppearance>;
703
820
  filterAppearance: Signal<MatFormFieldAppearance>;
704
821
  filterModel: Signal<IFilterModel<KEY>[]>;
@@ -709,7 +826,7 @@ interface IRtuiTable<ENTITY_TYPE extends Record<string, unknown>, SORT_PROPERTY
709
826
  isMultiSelect: WritableSignal<boolean>;
710
827
  isSelectorsColumnShown: WritableSignal<boolean>;
711
828
  isSelectorsColumnDisabled: WritableSignal<boolean>;
712
- activeRowIndex: WritableSignal<INullable<number>>;
829
+ activeRowIndex: WritableSignal<TNullable<number>>;
713
830
  onSortChange(sortModel: ISortModel): void;
714
831
  onFilterChange(filterModel: IFilterModel<KEY>[]): void;
715
832
  onMenuOpen(index: number): void;
@@ -720,103 +837,6 @@ interface IRtuiTable<ENTITY_TYPE extends Record<string, unknown>, SORT_PROPERTY
720
837
  onTogglePageEntities(checked: boolean): void;
721
838
  }
722
839
 
723
- declare class RtTableConfigService<ENTITY_TYPE> {
724
- #private;
725
- readonly tableConfig: Signal<ITable.Config.Data<ENTITY_TYPE>>;
726
- initConfig(storageKey: string, config: Array<ITable.Column<ENTITY_TYPE>>): void;
727
- updateConfig(storageKey: string, config: ITable.Config.Data<ENTITY_TYPE>): void;
728
- deleteConfig(storageKey: string): void;
729
- static ɵfac: i0.ɵɵFactoryDeclaration<RtTableConfigService<any>, never>;
730
- static ɵprov: i0.ɵɵInjectableDeclaration<RtTableConfigService<any>>;
731
- }
732
-
733
- declare class RtCommonSelectorsDirective<ENTITY_TYPE extends Record<string, unknown>, KEY extends Extract<keyof ENTITY_TYPE, string>> {
734
- /** Indicates is multiselect available */
735
- isMultiSelect: InputSignalWithTransform<boolean, boolean>;
736
- /** Indicates is 'Select all' checkbox shown */
737
- isSelectorColumnShown: InputSignalWithTransform<boolean, boolean>;
738
- /** Indicates is selectors column disabled */
739
- isSelectorsColumnDisabled: InputSignalWithTransform<boolean, boolean>;
740
- /** Selected entities Ids on init */
741
- selectedEntitiesKeys: InputSignalWithTransform<ENTITY_TYPE[KEY][], ENTITY_TYPE[KEY][]>;
742
- /** Key of ENTITY_TYPE for compare entities */
743
- readonly keyExp: WritableSignal<NonNullable<KEY>>;
744
- /** Current list of entities */
745
- readonly entities: WritableSignal<ENTITY_TYPE[]>;
746
- /** Add page entities to list exclude duplicates */
747
- addPageEntitiesToListExcludeDuplicates(list: ENTITY_TYPE[]): ENTITY_TYPE[];
748
- /** Remove page entities from list */
749
- removePageEntitiesFromList(list: ENTITY_TYPE[]): ENTITY_TYPE[];
750
- /** Check is one of page entities exist in selected entities */
751
- isOneExistOnPage(selectedEntitiesIds: ENTITY_TYPE[KEY][]): boolean;
752
- /** Check is all page entities exist in selected entities */
753
- isAllExistOnPage(selectedEntitiesIds: ENTITY_TYPE[KEY][]): boolean;
754
- static ɵfac: i0.ɵɵFactoryDeclaration<RtCommonSelectorsDirective<any, any>, never>;
755
- 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>;
756
- }
757
-
758
- 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 {
759
- #private;
760
- /** Indicates is multiselect extended mod available (use selected and excluded lists) */
761
- isMultiSelectExtendedMod: InputSignalWithTransform<boolean, boolean>;
762
- /** Indicates is 'Select all' checkbox shown */
763
- isSelectAllSelectorShown: InputSignalWithTransform<boolean, boolean>;
764
- /** List of selected entities */
765
- readonly selectedEntities: Signal<ENTITY_TYPE[]>;
766
- /** List of excluded entities */
767
- readonly excludedEntities: Signal<ENTITY_TYPE[]>;
768
- /** List of selected entities ids */
769
- readonly selectedEntitiesIds: Signal<ENTITY_TYPE[KEY][]>;
770
- /** List of excluded entities ids */
771
- readonly excludedEntitiesIds: Signal<ENTITY_TYPE[KEY][]>;
772
- /** Indicates is 'Select All' checkbox selected */
773
- readonly isAllEntitiesSelected: Signal<boolean>;
774
- /** Indicates is all page entities checkbox selected */
775
- readonly isPageEntitiesSelected: Signal<boolean>;
776
- /** Indicates is page entities checkbox indeterminate */
777
- readonly isPageEntitiesIndeterminate: Signal<boolean>;
778
- /** Indicates is multi select extended mod enabled */
779
- readonly isMultiSelectExtendedModEnabled: Signal<boolean>;
780
- ngOnInit(): void;
781
- /** Change selected entities list and 'isAllEntitiesSelected' indicator state */
782
- toggleAllEntities(checked: boolean): void;
783
- /** Change selected and excluded lists, set 'isPageEntitiesSelected' and 'isAllEntitiesSelected' indicators states */
784
- togglePageEntities(checked: boolean): void;
785
- /** Change selected and excluded lists and set is existing selected and is all selected states */
786
- toggleEntity(entity: ENTITY_TYPE, checked: boolean): void;
787
- /** Clear selected list */
788
- clearSelectedList(): void;
789
- /** Clear excluded list */
790
- clearExcludedList(): void;
791
- /** Set is existing selected and indeterminate state */
792
- setExistingEntitiesState(): void;
793
- static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicListSelectorsDirective<any, any, any>, never>;
794
- 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>;
795
- }
796
-
797
- 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 {
798
- #private;
799
- /** List of selected entities */
800
- readonly selectedEntities: Signal<ENTITY_TYPE[]>;
801
- /** List of selected entities ids */
802
- readonly selectedEntitiesIds: Signal<ENTITY_TYPE[KEY][]>;
803
- /** Indicates is all page entities checkbox selected */
804
- readonly isPageEntitiesSelected: Signal<boolean>;
805
- /** Indicates is page entities checkbox indeterminate */
806
- readonly isPageEntitiesIndeterminate: Signal<boolean>;
807
- ngOnInit(): void;
808
- /** Change selected and excluded lists, set 'isPageEntitiesSelected' and 'isAllEntitiesSelected' indicators states */
809
- togglePageEntities(checked: boolean): void;
810
- /** Change selected and excluded lists and set is existing selected and is all selected states */
811
- toggleEntity(entity: ENTITY_TYPE, checked: boolean): void;
812
- /** Clear selected list */
813
- clearSelectedList(): void;
814
- /** Set is existing selected and indeterminate state */
815
- setExistingEntitiesState(): void;
816
- static ɵfac: i0.ɵɵFactoryDeclaration<RtTableSelectorsDirective<any, any, any>, never>;
817
- static ɵdir: i0.ɵɵDirectiveDeclaration<RtTableSelectorsDirective<any, any, any>, "rtui-table[rtTableSelectorsDirective]", never, {}, {}, never, never, true, never>;
818
- }
819
-
820
840
  /** Directive for custom table cells */
821
841
  declare class RtuiCustomTableCellsDirective<ENTITY_TYPE> {
822
842
  cellsTemplates: InputSignal<{
@@ -842,20 +862,13 @@ declare class RtuiTableAdditionalRowActionsDirective {
842
862
  }
843
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 {
844
864
  #private;
845
- protected readonly rowActions: Signal<INullable<ElementRef<HTMLElement>>>;
846
- protected readonly rowActionsHeaderPaddingHelper: Signal<INullable<ElementRef<HTMLElement>>>;
847
- protected readonly rowActionsPaddingHelper: Signal<INullable<ElementRef<HTMLElement>>>;
848
- protected readonly columnTypes: typeof TABLE_COLUMN_TYPES_ENUM;
849
- 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;
850
870
  /** Indicates is mobile view */
851
- /**
852
- * Признак узкого экрана.
853
- *
854
- * @deprecated Кит определяет его сам — `BreakpointService` из `@rt-tools/core`. Вход
855
- * оставлен ради приложений, которые уже его передают, и уйдёт в следующем крупном выпуске.
856
- */
857
- isMobile: InputSignal<INullable<boolean>>;
858
- /** Экран узкий: значение входа, если приложение его дало, иначе замер кита. */
871
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
859
872
  readonly narrow: Signal<boolean>;
860
873
  /** Indicates are table rows clickable */
861
874
  isTableRowsClickable: InputSignalWithTransform<boolean, BooleanInput>;
@@ -864,7 +877,7 @@ declare class RtuiTableComponent<ENTITY_TYPE extends Record<string, unknown>, SO
864
877
  /** List of entities */
865
878
  entities: InputSignalWithTransform<ENTITY_TYPE[], ENTITY_TYPE[]>;
866
879
  /** Current page model from store */
867
- currentSortModel: InputSignal<INullable<ISortModel<SORT_PROPERTY>>>;
880
+ currentSortModel: InputSignal<TNullable<ISortModel<SORT_PROPERTY>>>;
868
881
  /** Current elements appearance */
869
882
  appearance: InputSignal<MatFormFieldAppearance>;
870
883
  /** Filter inputs appearance */
@@ -887,13 +900,13 @@ declare class RtuiTableComponent<ENTITY_TYPE extends Record<string, unknown>, SO
887
900
  /** Columns config for table */
888
901
  columns: Signal<Array<ITable.Column<ENTITY_TYPE>>>;
889
902
  /** Custom cells template */
890
- readonly customCellsTpl: Signal<INullable<RtuiCustomTableCellsDirective<ENTITY_TYPE>>>;
903
+ readonly customCellsTpl: Signal<TNullable<RtuiCustomTableCellsDirective<ENTITY_TYPE>>>;
891
904
  /** Row actions template */
892
- readonly rowActionsTpl: Signal<INullable<TemplateRef<{
905
+ readonly rowActionsTpl: Signal<TNullable<TemplateRef<{
893
906
  $implicit: ENTITY_TYPE;
894
907
  }>>>;
895
908
  /** Additional row actions template */
896
- readonly additionalRowActionsTpl: Signal<INullable<TemplateRef<RtuiTableAdditionalRowActionsDirective>>>;
909
+ readonly additionalRowActionsTpl: Signal<TNullable<TemplateRef<RtuiTableAdditionalRowActionsDirective>>>;
897
910
  /** Fields specified by the directive */
898
911
  /** List of selected entities ids */
899
912
  readonly selectedEntitiesIds: WritableSignal<ENTITY_TYPE[KEY][]>;
@@ -908,9 +921,16 @@ declare class RtuiTableComponent<ENTITY_TYPE extends Record<string, unknown>, SO
908
921
  /** Indicates is selectors column disabled */
909
922
  readonly isSelectorsColumnDisabled: WritableSignal<boolean>;
910
923
  /** Current row index */
911
- readonly activeRowIndex: WritableSignal<INullable<number>>;
924
+ readonly activeRowIndex: WritableSignal<TNullable<number>>;
912
925
  ngAfterViewChecked(): void;
913
- /** Sort change output action */
926
+ /**
927
+ * Sort change output action.
928
+ *
929
+ * Имя колонки приходит строкой, а наружу уходит ключом домена. Приведение здесь принимало
930
+ * любую строку: колонка, которой в наборе нет, уезжала потребителю законным значением, и
931
+ * ни сборка, ни типы этого не видели. Сверяется оно с тем же набором колонок, который
932
+ * рисует таблица, — второго списка имён у неё нет; несовпавшее не отдаётся вовсе.
933
+ */
914
934
  onSortChange(sortModel: ISortModel<string>): void;
915
935
  /** Filter change output action */
916
936
  onFilterChange(filterModel: IFilterModel<KEY>[]): void;
@@ -926,25 +946,18 @@ declare class RtuiTableComponent<ENTITY_TYPE extends Record<string, unknown>, SO
926
946
  onToggleEntity: (entity: ENTITY_TYPE, checked: boolean) => void;
927
947
  onTogglePageEntities: (checked: boolean) => void;
928
948
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiTableComponent<any, any, any>, never>;
929
- 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>;
930
950
  }
931
951
 
932
952
  declare class RtuiTableContainerComponent<ENTITY_TYPE> implements OnInit {
933
953
  #private;
934
- /** Экран узкий: значение входа, если приложение его дало, иначе замер кита. */
954
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
935
955
  protected readonly narrow: Signal<boolean>;
936
956
  appearance: InputSignal<MatFormFieldAppearance>;
937
957
  /** Table config storage key */
938
958
  tableConfigStorageKey: InputSignalWithTransform<string, string>;
939
959
  /** Current page model from store */
940
960
  pageModel: InputSignal<IPageModel>;
941
- /**
942
- * Признак узкого экрана.
943
- *
944
- * @deprecated Кит определяет его сам — `RtuiBreakpointsService`. Вход оставлен ради
945
- * приложений, которые уже его передают, и уйдёт в следующем крупном выпуске.
946
- */
947
- isMobile: InputSignalWithTransform<INullable<boolean>, INullable<boolean> | string>;
948
961
  /** Indicates is loading in progress */
949
962
  loading: InputSignalWithTransform<boolean, BooleanInput>;
950
963
  /** Indicates is fetching in progress */
@@ -964,27 +977,27 @@ declare class RtuiTableContainerComponent<ENTITY_TYPE> implements OnInit {
964
977
  /** Indicates is filters empty */
965
978
  isFiltersEmpty: InputSignalWithTransform<boolean, BooleanInput>;
966
979
  /** Current search term from store */
967
- searchTerm: InputSignalWithTransform<INullable<string>, INullable<string>>;
980
+ searchTerm: InputSignalWithTransform<TNullable<string>, TNullable<string>>;
968
981
  /** Current placeholder icon */
969
982
  placeholderIcon: InputSignal<string>;
970
983
  /** Current placeholder title */
971
984
  placeholderTitle: InputSignal<string>;
972
985
  /** Indicates is a small tablet view */
973
- readonly isSmallTablet: Signal<INullable<boolean>>;
986
+ readonly isSmallTablet: Signal<TNullable<boolean>>;
974
987
  /** Config for table */
975
988
  readonly tableConfig: Signal<ITable.Config.Data<ENTITY_TYPE>>;
976
989
  /** Page model change output action */
977
990
  readonly pageModelChange: OutputEmitterRef<Partial<IPageModel>>;
978
991
  /** Search change output action */
979
- readonly searchChange: OutputEmitterRef<INullable<string>>;
992
+ readonly searchChange: OutputEmitterRef<TNullable<string>>;
980
993
  /** Refresh output action */
981
994
  readonly refreshAction: OutputEmitterRef<void>;
982
995
  /** Clear filters output action */
983
996
  readonly clearFiltersAction: OutputEmitterRef<void>;
984
997
  /** Toolbar selectors template */
985
- readonly toolbarSelectorsTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
998
+ readonly toolbarSelectorsTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
986
999
  /** Toolbar actions template */
987
- readonly toolbarActionsTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
1000
+ readonly toolbarActionsTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
988
1001
  /** Fields specified by the directive */
989
1002
  /** Indicates is multiselect mod enabled */
990
1003
  readonly isMultiSelect: WritableSignal<boolean>;
@@ -999,7 +1012,7 @@ declare class RtuiTableContainerComponent<ENTITY_TYPE> implements OnInit {
999
1012
  /** Current selected entities count */
1000
1013
  readonly selectedEntitiesCount: WritableSignal<number>;
1001
1014
  /** Control for search */
1002
- readonly searchControl: FormControl<INullable<string>>;
1015
+ readonly searchControl: FormControl<TNullable<string>>;
1003
1016
  ngOnInit(): void;
1004
1017
  /** Page model change output action */
1005
1018
  onPageModelChange(pageModel: Partial<IPageModel>): void;
@@ -1014,7 +1027,7 @@ declare class RtuiTableContainerComponent<ENTITY_TYPE> implements OnInit {
1014
1027
  /** Empty method, set in selectors directive */
1015
1028
  onToggleAllEntities: (checked: boolean) => void;
1016
1029
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiTableContainerComponent<any>, never>;
1017
- 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": false; "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>;
1018
1031
  }
1019
1032
 
1020
1033
  /** Directive for selectors of the toolbar located on the left side */
@@ -1051,14 +1064,7 @@ declare class RtuiDynamicListComponent<ENTITY_TYPE extends Record<string, unknow
1051
1064
  #private;
1052
1065
  /** Table config storage key */
1053
1066
  tableConfigStorageKey: InputSignalWithTransform<string, unknown>;
1054
- /**
1055
- * Признак узкого экрана.
1056
- *
1057
- * @deprecated Кит определяет его сам — `BreakpointService` из `@rt-tools/core`. Вход
1058
- * оставлен ради приложений, которые уже его передают, и уйдёт в следующем крупном выпуске.
1059
- */
1060
- isMobile: InputSignal<INullable<boolean>>;
1061
- /** Экран узкий: значение входа, если приложение его дало, иначе замер кита. */
1067
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1062
1068
  readonly narrow: Signal<boolean>;
1063
1069
  /** Indicates is loading in progress */
1064
1070
  loading: InputSignalWithTransform<boolean, BooleanInput>;
@@ -1081,9 +1087,9 @@ declare class RtuiDynamicListComponent<ENTITY_TYPE extends Record<string, unknow
1081
1087
  /** Current page model from store */
1082
1088
  pageModel: InputSignal<IPageModel>;
1083
1089
  /** Current search term from store */
1084
- searchTerm: InputSignal<INullable<string>>;
1090
+ searchTerm: InputSignal<TNullable<string>>;
1085
1091
  /** Current sort model from store */
1086
- currentSortModel: InputSignal<INullable<ISortModel<NonNullable<KEY>>>>;
1092
+ currentSortModel: InputSignal<TNullable<ISortModel<NonNullable<KEY>>>>;
1087
1093
  /** Inputs appearance */
1088
1094
  appearance: InputSignal<MatFormFieldAppearance>;
1089
1095
  /** Filter inputs appearance */
@@ -1097,7 +1103,7 @@ declare class RtuiDynamicListComponent<ENTITY_TYPE extends Record<string, unknow
1097
1103
  /** Page model change output action */
1098
1104
  readonly pageModelChange: OutputEmitterRef<Partial<IPageModel>>;
1099
1105
  /** Search change output action */
1100
- readonly searchChange: OutputEmitterRef<INullable<string>>;
1106
+ readonly searchChange: OutputEmitterRef<TNullable<string>>;
1101
1107
  /** Refresh output action */
1102
1108
  readonly refresh: OutputEmitterRef<void>;
1103
1109
  /** Clear filters output action */
@@ -1112,27 +1118,27 @@ declare class RtuiDynamicListComponent<ENTITY_TYPE extends Record<string, unknow
1112
1118
  /** Filter change output action */
1113
1119
  readonly filterChange: OutputEmitterRef<IFilterModel<KEY>[]>;
1114
1120
  /** Toolbar selectors template */
1115
- readonly toolbarSelectorsTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
1121
+ readonly toolbarSelectorsTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
1116
1122
  /** Toolbar actions template */
1117
- readonly toolbarActionsTpl: Signal<INullable<TemplateRef<Type<unknown>>>>;
1123
+ readonly toolbarActionsTpl: Signal<TNullable<TemplateRef<Type<unknown>>>>;
1118
1124
  /** Custom cells template */
1119
- readonly customCellsTpl: Signal<INullable<RtuiDynamicListCustomTableCellsDirective<{
1125
+ readonly customCellsTpl: Signal<TNullable<RtuiDynamicListCustomTableCellsDirective<{
1120
1126
  $implicit: ENTITY_TYPE;
1121
1127
  }>>>;
1122
1128
  /** Row actions template */
1123
- readonly rowActionsTpl: Signal<INullable<TemplateRef<{
1129
+ readonly rowActionsTpl: Signal<TNullable<TemplateRef<{
1124
1130
  $implicit: ENTITY_TYPE;
1125
1131
  }>>>;
1126
1132
  /** Additional row actions template */
1127
- readonly additionalRowActionsTpl: Signal<INullable<TemplateRef<{
1133
+ readonly additionalRowActionsTpl: Signal<TNullable<TemplateRef<{
1128
1134
  $implicit: ENTITY_TYPE;
1129
1135
  }>>>;
1130
1136
  /** Table container for selectors directive usage */
1131
- readonly tableContainerTpl: Signal<INullable<RtuiTableContainerComponent<ENTITY_TYPE>>>;
1137
+ readonly tableContainerTpl: Signal<TNullable<RtuiTableContainerComponent<ENTITY_TYPE>>>;
1132
1138
  /** Table selector for selectors directive usage */
1133
- readonly tableTpl: Signal<INullable<RtuiTableComponent<ENTITY_TYPE, SORT_PROPERTY, KEY>>>;
1139
+ readonly tableTpl: Signal<TNullable<RtuiTableComponent<ENTITY_TYPE, SORT_PROPERTY, KEY>>>;
1134
1140
  /** Search change output action */
1135
- onSearchChange(value: INullable<string>): void;
1141
+ onSearchChange(value: TNullable<string>): void;
1136
1142
  /** Sort change output action */
1137
1143
  onSortChange(sortModel: ISortModel<NonNullable<KEY>>): void;
1138
1144
  /** Page model change output action */
@@ -1151,7 +1157,178 @@ declare class RtuiDynamicListComponent<ENTITY_TYPE extends Record<string, unknow
1151
1157
  /** Row doubleClick output action */
1152
1158
  onRowDoubleClick(row: ENTITY_TYPE): void;
1153
1159
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiDynamicListComponent<any, any, any>, never>;
1154
- 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>;
1155
1332
  }
1156
1333
 
1157
1334
  declare class RtuiStopTableRowClickDirective implements OnInit {
@@ -1196,9 +1373,9 @@ declare function provideRtUi(config?: IRtUiConfig.Config): Provider[];
1196
1373
 
1197
1374
  declare namespace IRtSnackBar {
1198
1375
  interface Config extends MatSnackBarConfig {
1199
- icon?: INullable<string>;
1376
+ icon?: string | null;
1200
1377
  isColoredBackground?: boolean;
1201
- action?: INullable<string>;
1378
+ action?: string | null;
1202
1379
  isProgressBarShown?: boolean;
1203
1380
  }
1204
1381
  interface Data extends Config {
@@ -1209,11 +1386,8 @@ declare namespace IRtSnackBar {
1209
1386
  declare class RtuiSnackBarComponent {
1210
1387
  #private;
1211
1388
  readonly data: IRtSnackBar.Data;
1212
- player: AnimationPlayer | undefined;
1213
- readonly progressTplRef: Signal<INullable<ElementRef<HTMLElement>>>;
1214
- constructor();
1215
- onMouseOver(): void;
1216
- onMouseOut(): void;
1389
+ /** Сколько идёт полоса: то же время, что живёт само сообщение. */
1390
+ readonly progressDuration: Signal<string>;
1217
1391
  dismiss(): void;
1218
1392
  close(): void;
1219
1393
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiSnackBarComponent, never>;
@@ -1232,37 +1406,27 @@ declare class RtSnackBarService {
1232
1406
  static ɵprov: i0.ɵɵInjectableDeclaration<RtSnackBarService>;
1233
1407
  }
1234
1408
 
1235
- declare const progressIncreaseAnimation: AnimationTriggerMetadata[];
1236
- declare const progressDecreaseAnimation: AnimationTriggerMetadata[];
1237
-
1238
- declare enum INFO_BADGE_SIZE_ENUM {
1409
+ declare enum EInfoBadgeSize {
1239
1410
  LARGE = "l",
1240
1411
  MEDIUM = "m",
1241
1412
  SMALL = "s"
1242
1413
  }
1243
- 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;
1244
1415
 
1245
1416
  declare function darkenHexColor(hex: string, percent: number): string;
1246
1417
  declare function getColorBasedOnBackground(backgroundColor: string): string;
1247
1418
 
1248
- type IconSideType = POSITION_ENUM.LEFT | POSITION_ENUM.RIGHT;
1419
+ type TIconSideType = EPosition.LEFT | EPosition.RIGHT;
1249
1420
 
1250
1421
  declare class RtuiInfoBadgeComponent implements AfterContentChecked {
1251
1422
  #private;
1252
- /** Экран узкий: значение входа, если приложение его дало, иначе замер кита. */
1423
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1253
1424
  protected readonly narrow: Signal<boolean>;
1254
- size: InputSignal<IInfoBadgeSizeType>;
1425
+ size: InputSignal<TInfoBadgeSizeType>;
1255
1426
  text: InputSignal<string>;
1256
1427
  glyph: InputSignal<string>;
1257
- iconSide: InputSignal<IconSideType>;
1428
+ iconSide: InputSignal<TIconSideType>;
1258
1429
  isFontBold: InputSignal<boolean>;
1259
- /**
1260
- * Признак узкого экрана.
1261
- *
1262
- * @deprecated Кит определяет его сам — `RtuiBreakpointsService`. Вход оставлен ради
1263
- * приложений, которые уже его передают, и уйдёт в следующем крупном выпуске.
1264
- */
1265
- isMobile: InputSignalWithTransform<INullable<boolean>, INullable<boolean> | string>;
1266
1430
  isTitleCollapsed: WritableSignal<boolean>;
1267
1431
  readonly contentRef: Signal<ElementRef<HTMLElement> | undefined>;
1268
1432
  /** Модификаторы блока значка: ставятся директивой, а не строкой в атрибуте. */
@@ -1273,34 +1437,35 @@ declare class RtuiInfoBadgeComponent implements AfterContentChecked {
1273
1437
  ngAfterContentChecked(): void;
1274
1438
  checkEllipsis(): void;
1275
1439
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiInfoBadgeComponent, never>;
1276
- 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": false; "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>;
1277
1441
  }
1278
1442
 
1279
- declare enum INFO_BADGE_TYPE_ENUM {
1443
+ declare enum EInfoBadgeType {
1280
1444
  SUCCESS = "success",
1281
1445
  INFO = "info",
1282
1446
  WARNING = "warning",
1283
1447
  PRIMARY = "primary",
1284
1448
  DISABLED = "disabled"
1285
1449
  }
1286
- 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;
1287
1451
 
1288
- declare enum TOGGLE_SIZE_TYPE_ENUM {
1452
+ declare enum EToggleSizeType {
1289
1453
  SM = "sm",
1290
1454
  MD = "md"
1291
1455
  }
1292
- type ToggleSizeType = TOGGLE_SIZE_TYPE_ENUM.SM | TOGGLE_SIZE_TYPE_ENUM.MD;
1456
+ type TToggleSizeType = EToggleSizeType.SM | EToggleSizeType.MD;
1293
1457
 
1294
1458
  declare class RtuiToggleComponent implements OnInit, ControlValueAccessor {
1295
1459
  #private;
1460
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1461
+ protected readonly narrow: Signal<TNullable<boolean>>;
1296
1462
  formControl: FormControl<boolean>;
1297
- label: InputSignal<INullable<string>>;
1463
+ label: InputSignal<TNullable<string>>;
1298
1464
  tooltip: InputSignal<string>;
1299
- size: InputSignal<ToggleSizeType>;
1465
+ size: InputSignal<TToggleSizeType>;
1300
1466
  tooltipPosition: InputSignal<TooltipPosition>;
1301
1467
  isDisabled: InputSignalWithTransform<boolean, BooleanInput>;
1302
1468
  tooltipDisabled: InputSignalWithTransform<boolean, BooleanInput>;
1303
- readonly isMobile: Signal<INullable<boolean>>;
1304
1469
  ngOnInit(): void;
1305
1470
  writeValue(value: boolean): void;
1306
1471
  registerOnChange(fn: () => void): void;
@@ -1324,15 +1489,8 @@ declare class RtuiFileUploadComponent {
1324
1489
 
1325
1490
  declare abstract class RtuiDynamicSelectorsDirective {
1326
1491
  #private;
1327
- /** Экран узкий: значение входа, если приложение его дало, иначе замер кита. */
1492
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1328
1493
  protected readonly narrow: Signal<boolean>;
1329
- /**
1330
- * Признак узкого экрана.
1331
- *
1332
- * @deprecated Кит определяет его сам — `RtuiBreakpointsService`. Вход оставлен ради
1333
- * приложений, которые уже его передают, и уйдёт в следующем крупном выпуске.
1334
- */
1335
- isMobile: InputSignalWithTransform<INullable<boolean>, INullable<boolean> | string>;
1336
1494
  /** Selections control button title */
1337
1495
  buttonTitle: InputSignalWithTransform<string, string>;
1338
1496
  /** Indicates if only one option can be chosen */
@@ -1355,11 +1513,11 @@ declare abstract class RtuiDynamicSelectorsDirective {
1355
1513
  /** Material elements appearance */
1356
1514
  appearance: InputSignal<MatFormFieldAppearance>;
1357
1515
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiDynamicSelectorsDirective, never>;
1358
- static ɵdir: i0.ɵɵDirectiveDeclaration<RtuiDynamicSelectorsDirective, never, never, { "isMobile": { "alias": "isMobile"; "required": false; "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>;
1359
1517
  }
1360
1518
 
1361
- interface FormModel$1 {
1362
- autocompleteControl: FormControl<INullable<string>>;
1519
+ interface IFormModel$1 {
1520
+ autocompleteControl: FormControl<TNullable<string>>;
1363
1521
  }
1364
1522
  /** Directive for row actions located outside a row menu button */
1365
1523
  declare class RtuiDynamicSelectorAdditionalControlDirective {
@@ -1375,9 +1533,9 @@ declare class RtuiDynamicSelectorComponent<ENTITY extends Record<string, unknown
1375
1533
  #private;
1376
1534
  /** Config for overlay selector */
1377
1535
  protected readonly connectedOverlayPositions: ConnectedPosition[];
1378
- form: FormGroup<FormModel$1>;
1536
+ form: FormGroup<IFormModel$1>;
1379
1537
  /** Target element for overlay selector */
1380
- selectedOverlayTrigger: INullable<CdkOverlayOrigin>;
1538
+ selectedOverlayTrigger: TNullable<CdkOverlayOrigin>;
1381
1539
  /** A model's field which should be used for http-requests */
1382
1540
  keyExp: InputSignal<KEY>;
1383
1541
  /** A model's field which should be shown in ui */
@@ -1417,7 +1575,7 @@ declare class RtuiDynamicSelectorComponent<ENTITY extends Record<string, unknown
1417
1575
  /** Indicates that an additional control has been changed */
1418
1576
  additionalControlChanged: InputSignal<boolean>;
1419
1577
  /** Custom sort function for entities list in popup */
1420
- sortFn: InputSignal<INullable<(a: ENTITY, b: ENTITY) => number>>;
1578
+ sortFn: InputSignal<TNullable<(a: ENTITY, b: ENTITY) => number>>;
1421
1579
  /** Output search action */
1422
1580
  readonly searchAction: OutputEmitterRef<string>;
1423
1581
  /** Output scroll action, needed for lazy loading */
@@ -1441,11 +1599,11 @@ declare class RtuiDynamicSelectorComponent<ENTITY extends Record<string, unknown
1441
1599
  /** Entities can be chosen, except selected on init */
1442
1600
  readonly entitiesToSelect: Signal<ENTITY[]>;
1443
1601
  /** Additional control for entity */
1444
- readonly additionalControlTpl: Signal<INullable<TemplateRef<{
1602
+ readonly additionalControlTpl: Signal<TNullable<TemplateRef<{
1445
1603
  $implicit: ENTITY;
1446
1604
  }>>>;
1447
1605
  /** Custom item title template */
1448
- readonly itemTitleTpl: Signal<INullable<TemplateRef<{
1606
+ readonly itemTitleTpl: Signal<TNullable<TemplateRef<{
1449
1607
  $implicit: ENTITY;
1450
1608
  }>>>;
1451
1609
  ngOnInit(): void;
@@ -1478,9 +1636,9 @@ declare class RtuiDynamicSelectorComponent<ENTITY extends Record<string, unknown
1478
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>;
1479
1637
  }
1480
1638
 
1481
- interface FormModel {
1639
+ interface IFormModel {
1482
1640
  control: FormControl<string[]>;
1483
- controlForUi: FormControl<INullable<string>>;
1641
+ controlForUi: FormControl<TNullable<string>>;
1484
1642
  }
1485
1643
  /** Directive for row actions located outside a row menu button */
1486
1644
  declare class RtuiDynamicInputAdditionalControlDirective {
@@ -1489,9 +1647,9 @@ declare class RtuiDynamicInputAdditionalControlDirective {
1489
1647
  }
1490
1648
  declare class RtuiDynamicInputComponent extends RtuiDynamicSelectorsDirective implements ControlValueAccessor, Validator, OnInit {
1491
1649
  #private;
1492
- form: FormGroup<FormModel>;
1650
+ form: FormGroup<IFormModel>;
1493
1651
  /** Indicates is placeholder shown */
1494
- isPlaceholderShown: ModelSignal<INullable<boolean>>;
1652
+ isPlaceholderShown: ModelSignal<TNullable<boolean>>;
1495
1653
  /** Indicates is inputs-editable */
1496
1654
  isInputsEditable: InputSignalWithTransform<boolean, BooleanInput>;
1497
1655
  /** Input label */
@@ -1509,7 +1667,7 @@ declare class RtuiDynamicInputComponent extends RtuiDynamicSelectorsDirective im
1509
1667
  /** Indicates the reset changes button is disabled */
1510
1668
  readonly isResetButtonDisabled: WritableSignal<boolean>;
1511
1669
  /** Additional control for entity */
1512
- readonly additionalControlTpl: Signal<INullable<TemplateRef<{
1670
+ readonly additionalControlTpl: Signal<TNullable<TemplateRef<{
1513
1671
  $implicit: string;
1514
1672
  }>>>;
1515
1673
  ngOnInit(): void;
@@ -1547,16 +1705,9 @@ declare class RtuiDynamicInputComponent extends RtuiDynamicSelectorsDirective im
1547
1705
 
1548
1706
  declare class RtuiMultiSelectorPopupComponent<ENTITY extends Record<string, unknown>, KEY extends Extract<keyof ENTITY, string>> implements OnInit, AfterViewInit {
1549
1707
  #private;
1550
- /** Экран узкий: значение входа, если приложение его дало, иначе замер кита. */
1708
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1551
1709
  protected readonly narrow: Signal<boolean>;
1552
1710
  protected readonly oSTypes: typeof OSTypes;
1553
- /**
1554
- * Признак узкого экрана.
1555
- *
1556
- * @deprecated Кит определяет его сам — `RtuiBreakpointsService`. Вход оставлен ради
1557
- * приложений, которые уже его передают, и уйдёт в следующем крупном выпуске.
1558
- */
1559
- isMobile: InputSignalWithTransform<INullable<boolean>, INullable<boolean> | string>;
1560
1711
  entitiesToSelect: InputSignalWithTransform<ENTITY[], ENTITY[]>;
1561
1712
  /** Material elements appearance */
1562
1713
  appearance: InputSignal<MatFormFieldAppearance>;
@@ -1583,9 +1734,9 @@ declare class RtuiMultiSelectorPopupComponent<ENTITY extends Record<string, unkn
1583
1734
  /** Indicates is BreakStringPipe used */
1584
1735
  useNameBreaking: InputSignalWithTransform<boolean, BooleanInput>;
1585
1736
  /** Indicates lazy loading is used */
1586
- isLazyLoad: InputSignalWithTransform<INullable<boolean>, boolean>;
1737
+ isLazyLoad: InputSignalWithTransform<TNullable<boolean>, boolean>;
1587
1738
  /** Indicates local search is used */
1588
- isLocalSearch: InputSignalWithTransform<INullable<boolean>, boolean>;
1739
+ isLocalSearch: InputSignalWithTransform<TNullable<boolean>, boolean>;
1589
1740
  /** Keys of a pinned group kept at the top of the list — a trailing divider is drawn after the last visible one */
1590
1741
  pinnedKeys: InputSignalWithTransform<ENTITY[KEY][], ENTITY[KEY][]>;
1591
1742
  /** Send output selected entities ids */
@@ -1599,9 +1750,9 @@ declare class RtuiMultiSelectorPopupComponent<ENTITY extends Record<string, unkn
1599
1750
  /** Output temporary selection action, needed for store values */
1600
1751
  readonly temporarySelectAction: OutputEmitterRef<ENTITY[]>;
1601
1752
  /** Search input Ref for set focus on init */
1602
- readonly searchInputRef: Signal<INullable<ElementRef<HTMLInputElement>>>;
1753
+ readonly searchInputRef: Signal<TNullable<ElementRef<HTMLInputElement>>>;
1603
1754
  /** Form control for search */
1604
- readonly searchControl: FormControl<INullable<string>>;
1755
+ readonly searchControl: FormControl<TNullable<string>>;
1605
1756
  /** Form control for select */
1606
1757
  readonly selectionControl: FormControl<ENTITY[KEY][]>;
1607
1758
  /** Entities filtered by local search */
@@ -1615,7 +1766,7 @@ declare class RtuiMultiSelectorPopupComponent<ENTITY extends Record<string, unkn
1615
1766
  /** Indicates is macOS used */
1616
1767
  readonly isMacOS: Signal<boolean>;
1617
1768
  /** Key of the last visible pinned option — its row gets a trailing divider */
1618
- readonly lastSeparatedKey: Signal<INullable<ENTITY[KEY]>>;
1769
+ readonly lastSeparatedKey: Signal<TNullable<ENTITY[KEY]>>;
1619
1770
  ngOnInit(): void;
1620
1771
  /** Set focus on search input */
1621
1772
  ngAfterViewInit(): void;
@@ -1638,7 +1789,7 @@ declare class RtuiMultiSelectorPopupComponent<ENTITY extends Record<string, unkn
1638
1789
  /** Scroll action, needed for lazy loading mode */
1639
1790
  scroll(): void;
1640
1791
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiMultiSelectorPopupComponent<any, any>, never>;
1641
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiMultiSelectorPopupComponent<any, any>, "rtui-multi-selector-popup", never, { "isMobile": { "alias": "isMobile"; "required": false; "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>;
1642
1793
  }
1643
1794
 
1644
1795
  declare class RtuiDynamicSelectorPlaceholderComponent {
@@ -1656,15 +1807,8 @@ declare class RtuiDynamicSelectorPlaceholderComponent {
1656
1807
 
1657
1808
  declare class RtuiDynamicSelectorListActionsComponent {
1658
1809
  #private;
1659
- /** Экран узкий: значение входа, если приложение его дало, иначе замер кита. */
1810
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1660
1811
  protected readonly narrow: Signal<boolean>;
1661
- /**
1662
- * Признак узкого экрана.
1663
- *
1664
- * @deprecated Кит определяет его сам — `RtuiBreakpointsService`. Вход оставлен ради
1665
- * приложений, которые уже его передают, и уйдёт в следующем крупном выпуске.
1666
- */
1667
- isMobile: InputSignalWithTransform<INullable<boolean>, INullable<boolean> | string>;
1668
1812
  isResetButtonDisabled: InputSignalWithTransform<boolean, boolean>;
1669
1813
  isClearButtonDisabled: InputSignalWithTransform<boolean, boolean>;
1670
1814
  disabled: InputSignalWithTransform<boolean, boolean>;
@@ -1673,7 +1817,7 @@ declare class RtuiDynamicSelectorListActionsComponent {
1673
1817
  onReset(): void;
1674
1818
  onClear(): void;
1675
1819
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiDynamicSelectorListActionsComponent, never>;
1676
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiDynamicSelectorListActionsComponent, "rtui-dynamic-selector-list-actions", never, { "isMobile": { "alias": "isMobile"; "required": false; "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>;
1677
1821
  }
1678
1822
 
1679
1823
  /** Directive for row actions located outside a row menu button */
@@ -1688,17 +1832,10 @@ declare class RtuiDynamicSelectorItemTitleDirective {
1688
1832
  }
1689
1833
  declare class RtuiDynamicSelectorSelectedListComponent<ENTITY extends Record<string, unknown>, KEY extends Extract<keyof ENTITY, string>> {
1690
1834
  #private;
1691
- /** Экран узкий: значение входа, если приложение его дало, иначе замер кита. */
1835
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1692
1836
  protected readonly narrow: Signal<boolean>;
1693
- protected readonly editedItemIndex: WritableSignal<INullable<number>>;
1694
- readonly inputRef: Signal<INullable<MatInput>>;
1695
- /**
1696
- * Признак узкого экрана.
1697
- *
1698
- * @deprecated Кит определяет его сам — `RtuiBreakpointsService`. Вход оставлен ради
1699
- * приложений, которые уже его передают, и уйдёт в следующем крупном выпуске.
1700
- */
1701
- isMobile: InputSignalWithTransform<INullable<boolean>, INullable<boolean> | string>;
1837
+ protected readonly editedItemIndex: WritableSignal<TNullable<number>>;
1838
+ readonly inputRef: Signal<TNullable<MatInput>>;
1702
1839
  /** A model's field, which should be used for http-requests */
1703
1840
  keyExp: InputSignal<KEY>;
1704
1841
  /** A model's field, which should be shown in ui */
@@ -1726,35 +1863,28 @@ declare class RtuiDynamicSelectorSelectedListComponent<ENTITY extends Record<str
1726
1863
  new: string;
1727
1864
  }>;
1728
1865
  /** Additional control for entity */
1729
- readonly additionalControlTpl: Signal<INullable<TemplateRef<{
1866
+ readonly additionalControlTpl: Signal<TNullable<TemplateRef<{
1730
1867
  $implicit: ENTITY;
1731
1868
  }>>>;
1732
1869
  /** Custom item title template */
1733
- readonly itemTitleTpl: Signal<INullable<TemplateRef<{
1870
+ readonly itemTitleTpl: Signal<TNullable<TemplateRef<{
1734
1871
  $implicit: ENTITY;
1735
1872
  }>>>;
1736
1873
  protected onDelete(value: ENTITY[KEY]): void;
1737
1874
  protected onDrop(event: CdkDragDrop<ENTITY[]>): void;
1738
1875
  protected changeValue(prev: ENTITY[KEY]): void;
1739
- protected setEditModState(index: INullable<number>): void;
1876
+ protected setEditModState(index: TNullable<number>): void;
1740
1877
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiDynamicSelectorSelectedListComponent<any, any>, never>;
1741
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiDynamicSelectorSelectedListComponent<any, any>, "rtui-dynamic-selector-selected-list", never, { "isMobile": { "alias": "isMobile"; "required": false; "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>;
1742
1879
  }
1743
1880
 
1744
- type IImageUploadFormat = 'png' | 'jpeg' | 'webp';
1881
+ type TImageUploadFormat = 'png' | 'jpeg' | 'webp';
1745
1882
  declare class RtuiImageUploadComponent {
1746
1883
  #private;
1747
- /** Экран узкий: значение входа, если приложение его дало, иначе замер кита. */
1884
+ /** Экран узкий: замер кита, и другого источника у этого признака нет. */
1748
1885
  protected readonly narrow: Signal<boolean>;
1749
- protected readonly imageFormat: Signal<IImageUploadFormat>;
1750
- imageUrl: ModelSignal<INullable<string>>;
1751
- /**
1752
- * Признак узкого экрана.
1753
- *
1754
- * @deprecated Кит определяет его сам — `RtuiBreakpointsService`. Вход оставлен ради
1755
- * приложений, которые уже его передают, и уйдёт в следующем крупном выпуске.
1756
- */
1757
- isMobile: InputSignalWithTransform<INullable<boolean>, INullable<boolean> | string>;
1886
+ protected readonly imageFormat: Signal<TImageUploadFormat>;
1887
+ imageUrl: ModelSignal<TNullable<string>>;
1758
1888
  fileName: InputSignalWithTransform<string, string>;
1759
1889
  isActive: InputSignalWithTransform<boolean, BooleanInput>;
1760
1890
  isSaveButtonShown: InputSignalWithTransform<boolean, BooleanInput>;
@@ -1766,8 +1896,8 @@ declare class RtuiImageUploadComponent {
1766
1896
  tooltipPosition: InputSignal<TooltipPosition>;
1767
1897
  imageQuality: InputSignal<number>;
1768
1898
  originalImage: WritableSignal<File | undefined>;
1769
- croppedImage: WritableSignal<INullable<File>>;
1770
- tempImage: WritableSignal<INullable<string>>;
1899
+ croppedImage: WritableSignal<TNullable<File>>;
1900
+ tempImage: WritableSignal<TNullable<string>>;
1771
1901
  readonly imageChanged: OutputEmitterRef<File>;
1772
1902
  readonly save: OutputEmitterRef<void>;
1773
1903
  onFileSelect(event: Event): void;
@@ -1777,16 +1907,16 @@ declare class RtuiImageUploadComponent {
1777
1907
  onCancel(): void;
1778
1908
  onDownloadImage(): void;
1779
1909
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiImageUploadComponent, never>;
1780
- static ɵcmp: i0.ɵɵComponentDeclaration<RtuiImageUploadComponent, "rtui-image-upload", never, { "imageUrl": { "alias": "imageUrl"; "required": true; "isSignal": true; }; "isMobile": { "alias": "isMobile"; "required": false; "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>;
1781
1911
  }
1782
1912
 
1783
- type MenuItemTrigger = 'click' | 'hover';
1913
+ type TMenuItemTrigger = 'click' | 'hover';
1784
1914
  declare class RtPopoverDirective implements OnInit, OnDestroy {
1785
1915
  #private;
1786
1916
  xOffset: InputSignalWithTransform<number, NumberInput>;
1787
1917
  yOffset: InputSignalWithTransform<number, NumberInput>;
1788
- trigger: InputSignalWithTransform<MenuItemTrigger, MenuItemTrigger>;
1789
- template: InputSignalWithTransform<INullable<TemplateRef<HTMLElement>>, INullable<TemplateRef<HTMLElement>>>;
1918
+ trigger: InputSignalWithTransform<TMenuItemTrigger, TMenuItemTrigger>;
1919
+ template: InputSignalWithTransform<TNullable<TemplateRef<HTMLElement>>, TNullable<TemplateRef<HTMLElement>>>;
1790
1920
  isMouseHoverAllowed: InputSignalWithTransform<boolean, BooleanInput>;
1791
1921
  onClick(element: EventTarget | null): void;
1792
1922
  onMouseEnter(): void;
@@ -1826,6 +1956,12 @@ declare class RtuiActionBarComponent {
1826
1956
  declare class RtuiActionBarContainerComponent {
1827
1957
  #private;
1828
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();
1829
1965
  closeBar(): void;
1830
1966
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiActionBarContainerComponent, never>;
1831
1967
  static ɵcmp: i0.ɵɵComponentDeclaration<RtuiActionBarContainerComponent, "rtui-action-bar-container", never, {}, {}, never, never, true, never>;
@@ -1856,10 +1992,10 @@ declare class RtActionBarService {
1856
1992
  */
1857
1993
  declare class RtThemeService {
1858
1994
  #private;
1859
- readonly theme: Signal<RtThemeType>;
1995
+ readonly theme: Signal<TRtThemeType>;
1860
1996
  readonly colorScheme: Signal<string | null>;
1861
1997
  constructor();
1862
- setTheme(theme: RtThemeType): void;
1998
+ setTheme(theme: TRtThemeType): void;
1863
1999
  /** Toggles between light and dark (auto resolves to its opposite visual state). */
1864
2000
  toggle(): void;
1865
2001
  /**
@@ -1873,7 +2009,7 @@ declare class RtThemeService {
1873
2009
  * for SSR/brand-critical schemes prefer the Sass path). Does not activate the
1874
2010
  * scheme — call {@link setColorScheme} afterwards.
1875
2011
  */
1876
- registerColorScheme(name: string, ramp: RtColorSchemeRamp): void;
2012
+ registerColorScheme(name: string, ramp: TRtColorSchemeRamp): void;
1877
2013
  static ɵfac: i0.ɵɵFactoryDeclaration<RtThemeService, never>;
1878
2014
  static ɵprov: i0.ɵɵInjectableDeclaration<RtThemeService>;
1879
2015
  }
@@ -1893,7 +2029,7 @@ declare class RtThemeService {
1893
2029
  * on elements inside the context (e.g. `color: var(--rt-text-base-primary)`).
1894
2030
  */
1895
2031
  declare class RtThemeDirective {
1896
- readonly rtTheme: InputSignal<RtThemeType | ''>;
2032
+ readonly rtTheme: InputSignal<TRtThemeType | ''>;
1897
2033
  static ɵfac: i0.ɵɵFactoryDeclaration<RtThemeDirective, never>;
1898
2034
  static ɵdir: i0.ɵɵDirectiveDeclaration<RtThemeDirective, "[rtTheme]", never, { "rtTheme": { "alias": "rtTheme"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
1899
2035
  }
@@ -1911,5 +2047,5 @@ declare class RtHideTooltipDirective implements AfterViewInit {
1911
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>;
1912
2048
  }
1913
2049
 
1914
- 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 };
1915
- 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 };