@rt-tools/ui-kit-v2 0.33.0 → 0.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/README.md +4 -3
  2. package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs +1 -0
  3. package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs.map +1 -1
  4. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs +92 -5
  5. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs.map +1 -1
  6. package/fesm2022/rt-tools-ui-kit-v2-badge.mjs +191 -0
  7. package/fesm2022/rt-tools-ui-kit-v2-badge.mjs.map +1 -0
  8. package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs +3 -2
  9. package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs.map +1 -1
  10. package/fesm2022/rt-tools-ui-kit-v2-button.mjs +6 -1
  11. package/fesm2022/rt-tools-ui-kit-v2-button.mjs.map +1 -1
  12. package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs +35 -4
  13. package/fesm2022/rt-tools-ui-kit-v2-checkbox.mjs.map +1 -1
  14. package/fesm2022/rt-tools-ui-kit-v2-color-palette.mjs +13 -4
  15. package/fesm2022/rt-tools-ui-kit-v2-color-palette.mjs.map +1 -1
  16. package/fesm2022/rt-tools-ui-kit-v2-container.mjs +245 -60
  17. package/fesm2022/rt-tools-ui-kit-v2-container.mjs.map +1 -1
  18. package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs +30 -5
  19. package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs.map +1 -1
  20. package/fesm2022/rt-tools-ui-kit-v2-core.mjs +113 -2
  21. package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
  22. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs +14 -3
  23. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs.map +1 -1
  24. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +17 -3
  25. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -1
  26. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +6 -3
  27. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -1
  28. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +2 -2
  29. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -1
  30. package/fesm2022/rt-tools-ui-kit-v2-divider.mjs +112 -0
  31. package/fesm2022/rt-tools-ui-kit-v2-divider.mjs.map +1 -0
  32. package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs +1 -0
  33. package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs.map +1 -1
  34. package/fesm2022/rt-tools-ui-kit-v2-drawer.mjs +854 -0
  35. package/fesm2022/rt-tools-ui-kit-v2-drawer.mjs.map +1 -0
  36. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs +16 -5
  37. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs.map +1 -1
  38. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +580 -65
  39. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -1
  40. package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs +203 -15
  41. package/fesm2022/rt-tools-ui-kit-v2-expansion-panel.mjs.map +1 -1
  42. package/fesm2022/rt-tools-ui-kit-v2-field.mjs +40 -8
  43. package/fesm2022/rt-tools-ui-kit-v2-field.mjs.map +1 -1
  44. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs +1 -0
  45. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs.map +1 -1
  46. package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs +7 -3
  47. package/fesm2022/rt-tools-ui-kit-v2-filter-control.mjs.map +1 -1
  48. package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs +53 -2
  49. package/fesm2022/rt-tools-ui-kit-v2-form-control.mjs.map +1 -1
  50. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs +14 -4
  51. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs.map +1 -1
  52. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs +6 -3
  53. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs.map +1 -1
  54. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs +16 -5
  55. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs.map +1 -1
  56. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs +1 -0
  57. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs.map +1 -1
  58. package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs +14 -4
  59. package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs.map +1 -1
  60. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +3 -2
  61. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -1
  62. package/fesm2022/rt-tools-ui-kit-v2-input.mjs +207 -7
  63. package/fesm2022/rt-tools-ui-kit-v2-input.mjs.map +1 -1
  64. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs +1 -0
  65. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs.map +1 -1
  66. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs +3 -2
  67. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs.map +1 -1
  68. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +2 -0
  69. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -1
  70. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs +3 -2
  71. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs.map +1 -1
  72. package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs +3 -2
  73. package/fesm2022/rt-tools-ui-kit-v2-profile-menu.mjs.map +1 -1
  74. package/fesm2022/rt-tools-ui-kit-v2-progress-bar.mjs +171 -0
  75. package/fesm2022/rt-tools-ui-kit-v2-progress-bar.mjs.map +1 -0
  76. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs +176 -6
  77. package/fesm2022/rt-tools-ui-kit-v2-radio-button.mjs.map +1 -1
  78. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +2 -1
  79. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  80. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs +1 -0
  81. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs.map +1 -1
  82. package/fesm2022/rt-tools-ui-kit-v2-select.mjs +142 -23
  83. package/fesm2022/rt-tools-ui-kit-v2-select.mjs.map +1 -1
  84. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs +22 -9
  85. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs.map +1 -1
  86. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs +3 -2
  87. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs.map +1 -1
  88. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs +105 -8
  89. package/fesm2022/rt-tools-ui-kit-v2-stepper.mjs.map +1 -1
  90. package/fesm2022/rt-tools-ui-kit-v2-table.mjs +13 -2
  91. package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -1
  92. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +609 -33
  93. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -1
  94. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs +1 -0
  95. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs.map +1 -1
  96. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs +45 -7
  97. package/fesm2022/rt-tools-ui-kit-v2-textarea.mjs.map +1 -1
  98. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs +2 -2
  99. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs.map +1 -1
  100. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +11 -2
  101. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -1
  102. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs +152 -11
  103. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs.map +1 -1
  104. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs +199 -17
  105. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs.map +1 -1
  106. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs +35 -5
  107. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs.map +1 -1
  108. package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs +14 -4
  109. package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs.map +1 -1
  110. package/fesm2022/rt-tools-ui-kit-v2-tree.mjs +6 -3
  111. package/fesm2022/rt-tools-ui-kit-v2-tree.mjs.map +1 -1
  112. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +21 -6
  113. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -1
  114. package/fesm2022/rt-tools-ui-kit-v2.mjs +4 -0
  115. package/package.json +17 -1
  116. package/src/assets/icons/volume-off.svg +2 -1
  117. package/src/lib/components/autocomplete/CONTEXT.md +25 -14
  118. package/src/lib/components/autocomplete/rt-autocomplete.component.scss +19 -0
  119. package/src/lib/components/badge/CONTEXT.md +33 -0
  120. package/src/lib/components/badge/rt-badge.directive.scss +104 -0
  121. package/src/lib/components/breadcrumbs/rt-breadcrumbs.component.scss +2 -2
  122. package/src/lib/components/button/CONTEXT.md +5 -0
  123. package/src/lib/components/button/rt-button.directive.scss +3 -1
  124. package/src/lib/components/checkbox/CONTEXT.md +15 -8
  125. package/src/lib/components/color-palette/rt-color-palette.component.scss +2 -2
  126. package/src/lib/components/container/CONTEXT.md +23 -6
  127. package/src/lib/components/container/rt-container.component.scss +90 -1
  128. package/src/lib/components/copy-value/CONTEXT.md +6 -5
  129. package/src/lib/components/copy-value/rt-copy-value.component.scss +16 -0
  130. package/src/lib/components/date-picker/rt-date-picker.component.scss +7 -0
  131. package/src/lib/components/date-range/rt-date-range.component.scss +7 -0
  132. package/src/lib/components/divider/CONTEXT.md +21 -0
  133. package/src/lib/components/divider/rt-divider.component.scss +34 -0
  134. package/src/lib/components/drawer/CONTEXT.md +73 -0
  135. package/src/lib/components/drawer/rt-drawer-container.component.scss +19 -0
  136. package/src/lib/components/drawer/rt-drawer.component.scss +168 -0
  137. package/src/lib/components/drawer/rt-resize-handle.component.scss +42 -0
  138. package/src/lib/components/dynamic-selector/CONTEXT.md +5 -0
  139. package/src/lib/components/expansion-panel/CONTEXT.md +32 -8
  140. package/src/lib/components/expansion-panel/rt-expansion-panel.component.scss +67 -2
  141. package/src/lib/components/field/CONTEXT.md +43 -0
  142. package/src/lib/components/field/rt-field-label-inside.scss +179 -0
  143. package/src/lib/components/field/rt-field.component.scss +51 -2
  144. package/src/lib/components/icon-button/CONTEXT.md +17 -15
  145. package/src/lib/components/icon-button/rt-icon-button.component.scss +3 -1
  146. package/src/lib/components/inline-edit/rt-inline-edit.component.scss +4 -4
  147. package/src/lib/components/input/CONTEXT.md +45 -11
  148. package/src/lib/components/input/rt-input-floating-label.scss +192 -0
  149. package/src/lib/components/input/rt-input-icons.scss +105 -0
  150. package/src/lib/components/input/rt-input.component.scss +91 -13
  151. package/src/lib/components/input-number/CONTEXT.md +7 -0
  152. package/src/lib/components/input-number/rt-input-number.component.scss +58 -1
  153. package/src/lib/components/menu/CONTEXT.md +1 -0
  154. package/src/lib/components/multiselect/CONTEXT.md +2 -1
  155. package/src/lib/components/multiselect/rt-multiselect.component.scss +7 -0
  156. package/src/lib/components/pagination/CONTEXT.md +3 -0
  157. package/src/lib/components/pagination/rt-pagination.component.scss +7 -0
  158. package/src/lib/components/progress-bar/CONTEXT.md +22 -0
  159. package/src/lib/components/progress-bar/rt-progress-bar.component.scss +77 -0
  160. package/src/lib/components/radio-button/CONTEXT.md +9 -0
  161. package/src/lib/components/radio-button/rt-radio-group.component.scss +13 -0
  162. package/src/lib/components/select/CONTEXT.md +28 -0
  163. package/src/lib/components/select/rt-select-clear.scss +88 -0
  164. package/src/lib/components/select/rt-select-floating-label.scss +155 -0
  165. package/src/lib/components/select/rt-select-material.scss +54 -0
  166. package/src/lib/components/select/rt-select.component.scss +54 -16
  167. package/src/lib/components/side-menu/CONTEXT.md +5 -0
  168. package/src/lib/components/speed-menu/rt-speed-menu.component.scss +5 -5
  169. package/src/lib/components/stepper/CONTEXT.md +13 -5
  170. package/src/lib/components/stepper/rt-stepper.component.scss +93 -0
  171. package/src/lib/components/tabs/CONTEXT.md +57 -9
  172. package/src/lib/components/tabs/rt-tabs.component.scss +201 -5
  173. package/src/lib/components/textarea/CONTEXT.md +12 -1
  174. package/src/lib/components/textarea/rt-textarea.component.scss +116 -1
  175. package/src/lib/components/toast/CONTEXT.md +23 -0
  176. package/src/lib/components/toast/rt-toast.component.scss +37 -0
  177. package/src/lib/components/toggle-button-group/CONTEXT.md +24 -4
  178. package/src/lib/components/toggle-button-group/rt-toggle-button-group-chips.scss +151 -0
  179. package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +35 -0
  180. package/src/lib/components/tooltip/CONTEXT.md +7 -1
  181. package/src/lib/components/tree/rt-tree.component.scss +2 -2
  182. package/src/styles/_color-scheme.scss +1 -1
  183. package/src/styles/_density.scss +48 -0
  184. package/src/styles/_index.scss +8 -0
  185. package/src/styles/_preset-material.scss +160 -70
  186. package/src/styles/_primitives.scss +1 -0
  187. package/src/styles/_semantic-navigation.scss +117 -0
  188. package/src/styles/_semantic.scss +29 -98
  189. package/src/styles/_theme-dark.scss +8 -0
  190. package/styles/tokens.css +2066 -1134
  191. package/types/rt-tools-ui-kit-v2-autocomplete.d.ts +34 -0
  192. package/types/rt-tools-ui-kit-v2-badge.d.ts +71 -0
  193. package/types/rt-tools-ui-kit-v2-checkbox.d.ts +17 -3
  194. package/types/rt-tools-ui-kit-v2-container.d.ts +65 -9
  195. package/types/rt-tools-ui-kit-v2-copy-value.d.ts +11 -1
  196. package/types/rt-tools-ui-kit-v2-core.d.ts +109 -4
  197. package/types/rt-tools-ui-kit-v2-divider.d.ts +29 -0
  198. package/types/rt-tools-ui-kit-v2-drawer.d.ts +257 -0
  199. package/types/rt-tools-ui-kit-v2-dynamic-selector.d.ts +240 -25
  200. package/types/rt-tools-ui-kit-v2-expansion-panel.d.ts +87 -3
  201. package/types/rt-tools-ui-kit-v2-field.d.ts +18 -1
  202. package/types/rt-tools-ui-kit-v2-form-control.d.ts +42 -4
  203. package/types/rt-tools-ui-kit-v2-icon-button.d.ts +2 -1
  204. package/types/rt-tools-ui-kit-v2-input-number.d.ts +1 -0
  205. package/types/rt-tools-ui-kit-v2-input.d.ts +98 -4
  206. package/types/rt-tools-ui-kit-v2-progress-bar.d.ts +53 -0
  207. package/types/rt-tools-ui-kit-v2-radio-button.d.ts +80 -1
  208. package/types/rt-tools-ui-kit-v2-select.d.ts +65 -1
  209. package/types/rt-tools-ui-kit-v2-side-menu.d.ts +3 -0
  210. package/types/rt-tools-ui-kit-v2-stepper.d.ts +57 -4
  211. package/types/rt-tools-ui-kit-v2-tabs.d.ts +291 -6
  212. package/types/rt-tools-ui-kit-v2-textarea.d.ts +16 -0
  213. package/types/rt-tools-ui-kit-v2-toast.d.ts +38 -2
  214. package/types/rt-tools-ui-kit-v2-toggle-button-group.d.ts +83 -3
  215. package/types/rt-tools-ui-kit-v2-tooltip.d.ts +17 -2
  216. package/types/rt-tools-ui-kit-v2.d.ts +4 -0
  217. package/src/lib/components/dynamic-selector/stories/component/test-dynamic-selector-popup-frame.component.scss +0 -6
@@ -318,6 +318,75 @@ export declare class RtDynamicSelectorListComponent<TItem> {
318
318
  static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorListComponent<any>, never>;
319
319
  static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicSelectorListComponent<any>, "rt-dynamic-selector-list", never, {}, {}, never, ["*"], true, never>;
320
320
  }
321
+ /**
322
+ * Что части семьи динамических селекторов берут у корня. Отдельно от модели селектора: модель
323
+ * читают настройки кита в ядре, а эти типы сами читают ядро.
324
+ */
325
+ declare namespace IRtDynamicSelectorParts {
326
+ /** Настройки окна выбора — входы корня под теми же именами. */
327
+ interface PopupSettings<T> {
328
+ readonly keyExp: Signal<keyof T & string>;
329
+ readonly displayExp: Signal<keyof T & string>;
330
+ readonly displayWith: Signal<((entity: T) => string) | null>;
331
+ readonly mode: Signal<IRtDynamicSelector.Mode>;
332
+ readonly multiToggleShown: Signal<boolean>;
333
+ readonly selectAllShown: Signal<boolean>;
334
+ readonly localSearch: Signal<boolean>;
335
+ readonly lazyLoad: Signal<boolean>;
336
+ readonly loading: Signal<boolean>;
337
+ readonly fetching: Signal<boolean>;
338
+ readonly pinnedKeys: Signal<ReadonlyArray<unknown>>;
339
+ readonly navigateTitle: Signal<string>;
340
+ readonly navigateLink: Signal<string>;
341
+ readonly searchTerm: Signal<string>;
342
+ readonly searchAppearance: Signal<IRtInput.Appearance>;
343
+ readonly searchRadius: Signal<TRtRadius | null>;
344
+ readonly emptyResultsText: Signal<string>;
345
+ readonly applyLabel: Signal<string>;
346
+ readonly applyLabelCase: Signal<IRtDynamicSelector.LabelCase>;
347
+ readonly autofocusSearch: Signal<boolean>;
348
+ readonly titleWrap: Signal<boolean>;
349
+ readonly highlightSearch: Signal<boolean>;
350
+ }
351
+ /** Что окно выбора берёт у корня: записи, настройки и куда сообщать о действиях человека. */
352
+ interface PopupSource<T> {
353
+ readonly settings: PopupSettings<T>;
354
+ /** Предлагаемые записи: ещё не выбранные, отсортированные корнем. */
355
+ readonly entities: Signal<ReadonlyArray<T>>;
356
+ /** Применённые ключи в порядке отметок. */
357
+ readonly apply: (keys: unknown[]) => void;
358
+ readonly cancel: () => void;
359
+ /** Запрос для поиска на сервере: через паузу после последней клавиши. */
360
+ readonly search: (query: string) => void;
361
+ readonly loadMore: () => void;
362
+ /** Отмеченные записи, ещё не применённые. */
363
+ readonly temporaryChoice: (entities: T[]) => void;
364
+ }
365
+ /** Что список выбранного берёт у корня: строки, настройки и куда сообщать о действиях человека. */
366
+ interface ListSource<T> {
367
+ readonly rows: Signal<ReadonlyArray<IRtDynamicSelector.ListRow<T>>>;
368
+ readonly draggable: Signal<boolean>;
369
+ readonly editable: Signal<boolean>;
370
+ readonly disabled: Signal<boolean>;
371
+ /** Полоса под строками; приглашение корня встаёт на её место. */
372
+ readonly actionsShown: Signal<boolean>;
373
+ /** Сброс и очистка в полосе; без них в полосе остаётся кнопка добавления. */
374
+ readonly resetClearShown: Signal<boolean>;
375
+ readonly removeShown: Signal<boolean>;
376
+ readonly resetDisabled: Signal<boolean>;
377
+ readonly clearDisabled: Signal<boolean>;
378
+ readonly buttonRadius: Signal<TRtRadius | null>;
379
+ readonly clearIcon: Signal<IRtIcon.Name>;
380
+ readonly titleWrap: Signal<boolean>;
381
+ readonly titleTpl: Signal<TemplateRef<IRtDynamicSelector.RowContext<T>> | null>;
382
+ readonly controlsTpl: Signal<TemplateRef<IRtDynamicSelector.RowContext<T>> | null>;
383
+ readonly remove: (key: unknown) => void;
384
+ readonly move: (move: IRtDynamicSelector.Move) => void;
385
+ readonly edit: (edit: IRtDynamicSelector.TextEdit) => void;
386
+ readonly reset: () => void;
387
+ readonly clear: () => void;
388
+ }
389
+ }
321
390
  /** Сколько ждёт поиск на сервере после последней нажатой клавиши. */
322
391
  export declare const RT_DYNAMIC_SELECTOR_SEARCH_DEBOUNCE: number;
323
392
  /**
@@ -367,29 +436,52 @@ export declare class RtDynamicSelectorPopupComponent<TEntity extends object> imp
367
436
  protected readonly lastPinnedKey: Signal<unknown>;
368
437
  protected readonly isApplyDisabled: Signal<boolean>;
369
438
  protected readonly isNavShown: Signal<boolean>;
370
- protected readonly entities: Signal<ReadonlyArray<TEntity>>;
371
- protected readonly keyExp: Signal<keyof TEntity & string>;
372
- protected readonly displayExp: Signal<keyof TEntity & string>;
373
- protected readonly displayWith: Signal<((entity: TEntity) => string) | null>;
374
- protected readonly mode: Signal<IRtDynamicSelector.Mode>;
375
- protected readonly multiToggleShown: Signal<boolean>;
376
- protected readonly selectAllShown: Signal<boolean>;
377
- protected readonly localSearch: Signal<boolean>;
378
- protected readonly lazyLoad: Signal<boolean>;
379
- protected readonly loading: Signal<boolean>;
380
- protected readonly fetching: Signal<boolean>;
381
- protected readonly pinnedKeys: Signal<ReadonlyArray<unknown>>;
382
- protected readonly navigateTitle: Signal<string>;
383
- protected readonly navigateLink: Signal<string>;
384
- protected readonly searchTerm: Signal<string>;
385
- protected readonly searchAppearance: Signal<IRtInput.Appearance>;
386
- protected readonly searchRadius: Signal<TRtRadius | null>;
387
- protected readonly emptyResultsText: Signal<string>;
388
- protected readonly applyLabel: Signal<string>;
389
- protected readonly applyLabelCase: Signal<IRtDynamicSelector.LabelCase>;
390
- protected readonly autofocusSearch: Signal<boolean>;
391
- protected readonly titleWrap: Signal<boolean>;
392
- protected readonly highlightSearch: Signal<boolean>;
439
+ protected readonly offered: Signal<ReadonlyArray<TEntity>>;
440
+ protected readonly settings: IRtDynamicSelectorParts.PopupSettings<TEntity>;
441
+ /** Предлагаемые записи. Внутри корня его записи важнее. */
442
+ readonly entities: InputSignal<ReadonlyArray<TEntity>>;
443
+ /** Поле ключа записи; окну самому по себе оно обязательно. */
444
+ readonly keyExp: InputSignal<(keyof TEntity & string) | undefined>;
445
+ /** Поле подписи записи; окну самому по себе оно обязательно. */
446
+ readonly displayExp: InputSignal<(keyof TEntity & string) | undefined>;
447
+ /** Подпись записи для пункта и поиска; не задана — поле `displayExp`. */
448
+ readonly displayWith: InputSignal<((entity: TEntity) => string) | null>;
449
+ readonly mode: InputSignal<IRtDynamicSelector.Mode>;
450
+ readonly multiToggleShown: InputSignalWithTransform<boolean, unknown>;
451
+ readonly selectAllShown: InputSignalWithTransform<boolean, unknown>;
452
+ readonly localSearch: InputSignalWithTransform<boolean, unknown>;
453
+ readonly lazyLoad: InputSignalWithTransform<boolean, unknown>;
454
+ readonly loading: InputSignalWithTransform<boolean, unknown>;
455
+ readonly fetching: InputSignalWithTransform<boolean, unknown>;
456
+ readonly pinnedKeys: InputSignal<ReadonlyArray<unknown>>;
457
+ readonly navigateTitle: InputSignal<string>;
458
+ readonly navigateLink: InputSignal<string>;
459
+ /** Запрос, с которым выбор открывается; событием поиска он не уходит — вызывающий его знает. */
460
+ readonly searchTerm: InputSignal<string>;
461
+ /** Вид поля поиска — тот же вход, что у поля кита. */
462
+ readonly searchAppearance: InputSignal<IRtInput.Appearance>;
463
+ /** Шаг скругления поля поиска; null — скругление самого поля. */
464
+ readonly searchRadius: InputSignal<TRtRadius | null>;
465
+ /** Подпись пустого результата поиска; пустая строка оставляет подпись кита. */
466
+ readonly emptyResultsText: InputSignal<string>;
467
+ /** Подпись кнопки применения; пустая строка оставляет подпись кита. */
468
+ readonly applyLabel: InputSignal<string>;
469
+ /** Регистр подписи кнопки применения; `none` оставляет её как есть. */
470
+ readonly applyLabelCase: InputSignal<IRtDynamicSelector.LabelCase>;
471
+ /** Поле поиска получает фокус при открытии окна; по умолчанию фокус остаётся там, где был. */
472
+ readonly autofocusSearch: InputSignalWithTransform<boolean, unknown>;
473
+ /** Подпись пункта переносится; `false` ведёт её одной строкой с многоточием и подсказкой при обрезке. */
474
+ readonly titleWrap: InputSignalWithTransform<boolean, unknown>;
475
+ /** Символы подписи пункта, совпавшие со словами поиска, выделены. */
476
+ readonly highlightSearch: InputSignalWithTransform<boolean, unknown>;
477
+ /** Применённые ключи в порядке отметок. */
478
+ readonly applied: OutputEmitterRef<unknown[]>;
479
+ readonly cancelled: OutputEmitterRef<void>;
480
+ /** Запрос для поиска на сервере: через паузу после последней клавиши, стёртый — пустой строкой. */
481
+ readonly searchChange: OutputEmitterRef<string>;
482
+ readonly loadMore: OutputEmitterRef<void>;
483
+ /** Отмеченные записи: пустой список при открытии и текущие отметки после каждого поиска. */
484
+ readonly temporaryChoiceChange: OutputEmitterRef<TEntity[]>;
393
485
  ngOnInit(): void;
394
486
  protected onQueryChange(value: string | null): void;
395
487
  /** Нажатие строки флажков: при выключенном выборе нескольких без Ctrl или Cmd остаётся одна отметка. */
@@ -403,7 +495,129 @@ export declare class RtDynamicSelectorPopupComponent<TEntity extends object> imp
403
495
  /** Стрелки, Home и End ведут фокус по строкам; в поле поиска Home и End остаются у курсора. */
404
496
  protected onKeydown(event: KeyboardEvent): void;
405
497
  static ɵfac: i0.ɵɵFactoryDeclaration<RtDynamicSelectorPopupComponent<any>, never>;
406
- static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicSelectorPopupComponent<any>, "rt-dynamic-selector-popup", never, {}, {}, never, never, true, never>;
498
+ static ɵcmp: i0.ɵɵComponentDeclaration<RtDynamicSelectorPopupComponent<any>, "rt-dynamic-selector-popup", never, {
499
+ "entities": {
500
+ "alias": "entities";
501
+ "required": false;
502
+ "isSignal": true;
503
+ };
504
+ "keyExp": {
505
+ "alias": "keyExp";
506
+ "required": false;
507
+ "isSignal": true;
508
+ };
509
+ "displayExp": {
510
+ "alias": "displayExp";
511
+ "required": false;
512
+ "isSignal": true;
513
+ };
514
+ "displayWith": {
515
+ "alias": "displayWith";
516
+ "required": false;
517
+ "isSignal": true;
518
+ };
519
+ "mode": {
520
+ "alias": "mode";
521
+ "required": false;
522
+ "isSignal": true;
523
+ };
524
+ "multiToggleShown": {
525
+ "alias": "multiToggleShown";
526
+ "required": false;
527
+ "isSignal": true;
528
+ };
529
+ "selectAllShown": {
530
+ "alias": "selectAllShown";
531
+ "required": false;
532
+ "isSignal": true;
533
+ };
534
+ "localSearch": {
535
+ "alias": "localSearch";
536
+ "required": false;
537
+ "isSignal": true;
538
+ };
539
+ "lazyLoad": {
540
+ "alias": "lazyLoad";
541
+ "required": false;
542
+ "isSignal": true;
543
+ };
544
+ "loading": {
545
+ "alias": "loading";
546
+ "required": false;
547
+ "isSignal": true;
548
+ };
549
+ "fetching": {
550
+ "alias": "fetching";
551
+ "required": false;
552
+ "isSignal": true;
553
+ };
554
+ "pinnedKeys": {
555
+ "alias": "pinnedKeys";
556
+ "required": false;
557
+ "isSignal": true;
558
+ };
559
+ "navigateTitle": {
560
+ "alias": "navigateTitle";
561
+ "required": false;
562
+ "isSignal": true;
563
+ };
564
+ "navigateLink": {
565
+ "alias": "navigateLink";
566
+ "required": false;
567
+ "isSignal": true;
568
+ };
569
+ "searchTerm": {
570
+ "alias": "searchTerm";
571
+ "required": false;
572
+ "isSignal": true;
573
+ };
574
+ "searchAppearance": {
575
+ "alias": "searchAppearance";
576
+ "required": false;
577
+ "isSignal": true;
578
+ };
579
+ "searchRadius": {
580
+ "alias": "searchRadius";
581
+ "required": false;
582
+ "isSignal": true;
583
+ };
584
+ "emptyResultsText": {
585
+ "alias": "emptyResultsText";
586
+ "required": false;
587
+ "isSignal": true;
588
+ };
589
+ "applyLabel": {
590
+ "alias": "applyLabel";
591
+ "required": false;
592
+ "isSignal": true;
593
+ };
594
+ "applyLabelCase": {
595
+ "alias": "applyLabelCase";
596
+ "required": false;
597
+ "isSignal": true;
598
+ };
599
+ "autofocusSearch": {
600
+ "alias": "autofocusSearch";
601
+ "required": false;
602
+ "isSignal": true;
603
+ };
604
+ "titleWrap": {
605
+ "alias": "titleWrap";
606
+ "required": false;
607
+ "isSignal": true;
608
+ };
609
+ "highlightSearch": {
610
+ "alias": "highlightSearch";
611
+ "required": false;
612
+ "isSignal": true;
613
+ };
614
+ }, {
615
+ "applied": "applied";
616
+ "cancelled": "cancelled";
617
+ "searchChange": "searchChange";
618
+ "loadMore": "loadMore";
619
+ "temporaryChoiceChange": "temporaryChoiceChange";
620
+ }, never, never, true, never>;
407
621
  }
408
622
  /**
409
623
  * Динамический селектор: поле формы со списком выбранных записей. Значение — массив ключей в
@@ -744,4 +958,5 @@ export declare class RtDynamicSelectorComponent<TEntity extends object> extends
744
958
  "loadMore": "loadMore";
745
959
  "temporaryChoiceChange": "temporaryChoiceChange";
746
960
  }, ["rowTitle", "rowControls"], never, true, never>;
747
- }
961
+ }
962
+ export {};
@@ -1,5 +1,16 @@
1
1
  import * as i0 from "@angular/core";
2
- import { InputSignal, InputSignalWithTransform, ModelSignal, Signal, TemplateRef } from "@angular/core";
2
+ import { InjectionToken, InputSignal, InputSignalWithTransform, ModelSignal, Signal, TemplateRef, WritableSignal } from "@angular/core";
3
+ /**
4
+ * Действия в заголовке `rt-expansion-panel`: кнопки, флажки, меню. Встают в строку заголовка между
5
+ * подписью и шевроном, но вне кнопки-переключателя — кнопка внутри кнопки недопустима, и нажатие
6
+ * по действию не раскрывает панель.
7
+ */
8
+ export declare class RtExpansionPanelActionsDirective {
9
+ /** Панель, которой принадлежат действия: ближайшая над узлом. */
10
+ readonly owner: object | null;
11
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtExpansionPanelActionsDirective, never>;
12
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RtExpansionPanelActionsDirective, "[rtExpansionPanelActions]", never, {}, {}, never, never, true, never>;
13
+ }
3
14
  /**
4
15
  * Тело `rt-expansion-panel`, собираемое лениво: ставится на `<ng-template>` внутри панели, и его
5
16
  * содержимое создаётся при раскрытии и уходит после сворачивания. Сворачивание при этом доигрывает
@@ -7,9 +18,56 @@ import { InputSignal, InputSignalWithTransform, ModelSignal, Signal, TemplateRef
7
18
  */
8
19
  export declare class RtExpansionPanelContentDirective {
9
20
  readonly templateRef: TemplateRef<unknown>;
21
+ /** Панель, которой принадлежит тело: ближайшая над шаблоном, сколько бы обёрток ни стояло между. */
22
+ readonly owner: object | null;
10
23
  static ɵfac: i0.ɵɵFactoryDeclaration<RtExpansionPanelContentDirective, never>;
11
24
  static ɵdir: i0.ɵɵDirectiveDeclaration<RtExpansionPanelContentDirective, "ng-template[rtExpansionPanelContent]", never, {}, {}, never, never, true, never>;
12
25
  }
26
+ /**
27
+ * Что панель сообщает группе, в которой стоит. Отдельным токеном, а не классом группы: группа сама
28
+ * знает панели по типу, и прямой импорт в обе стороны замкнул бы файлы в круг.
29
+ */
30
+ export interface IRtExpansionPanelGroupHost {
31
+ /** Панель встала в группу. Вложенная в тело другой панели не встаёт: её группа — не эта. */
32
+ readonly register: (panel: IRtExpansionPanelGroupMember) => void;
33
+ /** Панель ушла из разметки. */
34
+ readonly unregister: (panel: IRtExpansionPanelGroupMember) => void;
35
+ /** Панель раскрылась: группа без `multi` сворачивает остальные. */
36
+ readonly opened: (panel: IRtExpansionPanelGroupMember) => void;
37
+ }
38
+ /** Что группа знает о панели: только её раскрытие. */
39
+ export interface IRtExpansionPanelGroupMember {
40
+ readonly expanded: WritableSignal<boolean>;
41
+ }
42
+ /**
43
+ * Ближайшая панель над узлом. Директивы тела и действий запоминают её, и панель берёт из своего
44
+ * содержимого только свои: шаблон в обёртке владельца находится, а шаблон вложенной панели — нет.
45
+ */
46
+ export declare const RT_EXPANSION_PANEL_OWNER: InjectionToken<object>;
47
+ export declare const RT_EXPANSION_PANEL_GROUP: InjectionToken<IRtExpansionPanelGroupHost>;
48
+ /**
49
+ * Группа раскрывающихся панелей, положенных разметкой: раскрытие одной сворачивает остальные, как
50
+ * аккордеон Material. С `multi` панели раскрываются независимо, и группа только собирает их.
51
+ *
52
+ * Ставится на любой узел-обёртку, а не рисует свою: раскладку панелей — промежутки, рамки между
53
+ * ними — задаёт владелец. `rt-accordion` остаётся списком пунктов из входа и группой не служит.
54
+ */
55
+ export declare class RtExpansionPanelGroupDirective implements IRtExpansionPanelGroupHost {
56
+ #private;
57
+ /** Панели раскрываются независимо: группа никого не сворачивает. */
58
+ readonly multi: InputSignalWithTransform<boolean, unknown>;
59
+ register(panel: IRtExpansionPanelGroupMember): void;
60
+ unregister(panel: IRtExpansionPanelGroupMember): void;
61
+ opened(panel: IRtExpansionPanelGroupMember): void;
62
+ static ɵfac: i0.ɵɵFactoryDeclaration<RtExpansionPanelGroupDirective, never>;
63
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RtExpansionPanelGroupDirective, "[rtExpansionPanelGroup]", never, {
64
+ "multi": {
65
+ "alias": "multi";
66
+ "required": false;
67
+ "isSignal": true;
68
+ };
69
+ }, {}, never, never, true, never>;
70
+ }
13
71
  export declare namespace IRtExpansionPanel {
14
72
  /**
15
73
  * Вид панели: `card` — отдельная карточка на фоне поверхности с тенью, как панель Material;
@@ -27,12 +85,27 @@ export declare namespace IRtExpansionPanel {
27
85
  *
28
86
  * Состояние раскрытия — `expanded`, двусторонняя привязка: панель пишет в него сама, а владелец
29
87
  * может держать его в своём сигнале и менять извне.
88
+ *
89
+ * Действия заголовка — узел с `rtExpansionPanelActions`: он стоит в строке заголовка вне кнопки, и
90
+ * нажатие по нему панель не раскрывает. В группе `rtExpansionPanelGroup` раскрытие панели
91
+ * сворачивает соседей.
30
92
  */
31
93
  export declare class RtExpansionPanelComponent {
32
94
  #private;
33
- /** Ленивое тело: шаблон создаётся при раскрытии. */
95
+ /** Ленивые тела в содержимом на любой глубине, свои и вложенных панелей. */
96
+ protected readonly lazyContents: Signal<readonly RtExpansionPanelContentDirective[]>;
97
+ /** Действия в содержимом на любой глубине, свои и вложенных панелей. */
98
+ protected readonly allActions: Signal<readonly RtExpansionPanelActionsDirective[]>;
99
+ /** Ленивое тело: шаблон создаётся при раскрытии. Своё и в обёртке владельца тоже; тело вложенной панели — её. */
34
100
  protected readonly lazyContent: Signal<RtExpansionPanelContentDirective | undefined>;
35
101
  protected readonly bodyId: string;
102
+ /**
103
+ * Действия заголовка: есть они — шеврон выходит из кнопки и встаёт после них. Только свои: действия
104
+ * панели, вложенной в тело, принадлежат ей.
105
+ */
106
+ protected readonly actions: Signal<RtExpansionPanelActionsDirective | undefined>;
107
+ /** Тело есть в разметке: раскрыто, или сохраняется свёрнутым после первого раскрытия. */
108
+ protected readonly bodyRendered: Signal<boolean>;
36
109
  protected readonly headerDomId: Signal<string>;
37
110
  /** Тело раскрыто. Двусторонняя привязка: нажатие на заголовок пишет сюда. */
38
111
  readonly expanded: ModelSignal<boolean>;
@@ -45,6 +118,12 @@ export declare class RtExpansionPanelComponent {
45
118
  readonly headerId: InputSignal<string | null>;
46
119
  /** Имя кнопки заголовка для вспомогательных средств, когда видимой подписи мало. */
47
120
  readonly ariaLabel: InputSignal<string | null>;
121
+ /**
122
+ * Тело не уходит при сворачивании, а прячется: внутри остаются набранный текст, прокрутка и
123
+ * выбор. Ленивое тело создаётся при первом раскрытии и дальше живёт вместе с панелью.
124
+ */
125
+ readonly preserveContent: InputSignalWithTransform<boolean, unknown>;
126
+ constructor();
48
127
  /** Нажатие на заголовок: раскрывает свёрнутую панель и сворачивает раскрытую. */
49
128
  toggle(): void;
50
129
  static ɵfac: i0.ɵɵFactoryDeclaration<RtExpansionPanelComponent, never>;
@@ -79,7 +158,12 @@ export declare class RtExpansionPanelComponent {
79
158
  "required": false;
80
159
  "isSignal": true;
81
160
  };
161
+ "preserveContent": {
162
+ "alias": "preserveContent";
163
+ "required": false;
164
+ "isSignal": true;
165
+ };
82
166
  }, {
83
167
  "expanded": "expandedChange";
84
- }, ["lazyContent"], ["*", "[rtExpansionPanelBody]"], true, never>;
168
+ }, ["lazyContents", "allActions"], ["*", "[rtExpansionPanelActions]", "[rtExpansionPanelBody]"], true, never>;
85
169
  }
@@ -1,5 +1,5 @@
1
1
  import * as i0 from "@angular/core";
2
- import { AfterContentInit, InputSignal, InputSignalWithTransform, Signal } from "@angular/core";
2
+ import { AfterContentInit, ElementRef, InputSignal, InputSignalWithTransform, Signal } from "@angular/core";
3
3
  import { BooleanInput } from "@angular/cdk/coercion";
4
4
  import { TRtKitLabelKey, TRtKitLabelMap } from "@rt-tools/ui-kit-v2/core";
5
5
  import { RtFormControlBase } from "@rt-tools/ui-kit-v2/form-control";
@@ -49,10 +49,27 @@ export declare class RtFieldComponent implements AfterContentInit {
49
49
  protected readonly t: Signal<TRtKitLabelMap>;
50
50
  protected readonly projectedControl: Signal<RtFormControlBase<unknown> | undefined>;
51
51
  protected readonly projectedHint: Signal<RtFieldHintDirective | undefined>;
52
+ /** Строка подписи: по её ширине материальный набор вырезает разрыв в рамке. `#`-поле `viewChild` не принимает. */
53
+ protected readonly labelRow: Signal<ElementRef<HTMLElement> | undefined>;
54
+ /**
55
+ * Ширина подписи на рамке, px. Разрыв рамки под подписью, как у поля Material, режется по этому
56
+ * числу: ширину подписи стили сами не знают.
57
+ */
58
+ protected readonly notchWidth: Signal<number>;
52
59
  /** Итоговый id: явный controlId контрола важнее авто-id. */
53
60
  protected readonly controlId: Signal<string>;
54
61
  protected readonly isRequired: Signal<boolean>;
55
62
  protected readonly showError: Signal<boolean>;
63
+ /**
64
+ * У контрола есть значение. Под материальным набором по нему подпись поднимается на рамку:
65
+ * текст значения есть у всех контролов, поэтому одно правило служит полю, области текста,
66
+ * числу и выбору.
67
+ */
68
+ protected readonly filled: Signal<boolean>;
69
+ /** Поле без рамки ввода — только для чтения или в загрузке: подпись остаётся над значением. */
70
+ protected readonly isStatic: Signal<boolean>;
71
+ /** Подпись материального набора ложится внутрь контрола: только у полей с местом подсказки. */
72
+ protected readonly labelInside: Signal<boolean>;
56
73
  /** Сообщение об ошибке: текст, переданный формой, важнее умолчания */
57
74
  protected readonly errorText: Signal<string>;
58
75
  protected readonly emptyValue: string;
@@ -1,6 +1,6 @@
1
- import { BooleanInput } from "@angular/cdk/coercion";
1
+ import { BooleanInput, NumberInput } from "@angular/cdk/coercion";
2
2
  import * as i0 from "@angular/core";
3
- import { InputSignal, InputSignalWithTransform, OnInit, Signal, WritableSignal } from "@angular/core";
3
+ import { ElementRef, InputSignal, InputSignalWithTransform, OnInit, OutputEmitterRef, Signal, WritableSignal } from "@angular/core";
4
4
  import { ControlValueAccessor, ValidationErrors } from "@angular/forms";
5
5
  import { IRtInput } from "@rt-tools/ui-kit-v2/core";
6
6
  export declare abstract class RtFormControlBase<TValue> implements ControlValueAccessor, OnInit {
@@ -17,6 +17,8 @@ export declare abstract class RtFormControlBase<TValue> implements ControlValueA
17
17
  protected readonly isInvalid: Signal<boolean>;
18
18
  /** Видимость кнопки очистки: включена, есть значение, поле активно. */
19
19
  protected readonly showClearButton: Signal<boolean>;
20
+ /** Tabindex крестика очистки: в порядке обхода только по `clearTabbable`. */
21
+ protected readonly clearTabIndex: Signal<number>;
20
22
  /** Есть ли в поле значение — гейт видимости крестика. */
21
23
  protected abstract readonly hasValue: Signal<boolean>;
22
24
  readonly size: InputSignal<IRtInput.Size>;
@@ -24,6 +26,17 @@ export declare abstract class RtFormControlBase<TValue> implements ControlValueA
24
26
  readonly controlId: InputSignal<string | null>;
25
27
  readonly ariaLabel: InputSignal<string | null>;
26
28
  readonly clearable: InputSignalWithTransform<boolean, BooleanInput>;
29
+ /**
30
+ * Ставит крестик очистки в порядок обхода по Tab. По умолчанию `false`: крестик достаётся мышью,
31
+ * а Tab идёт от поля к полю, как прежде. Учитывают его поле ввода и выбор из списка.
32
+ */
33
+ readonly clearTabbable: InputSignalWithTransform<boolean, BooleanInput>;
34
+ /**
35
+ * Подпись `rt-field` в материальном наборе ложится внутрь этого контрола, на место подсказки.
36
+ * Ставят поле ввода, область текста, число и выбор: у палитры, списка и выбора файла места
37
+ * подсказки нет, и подпись над ними остаётся над контролом.
38
+ */
39
+ readonly fieldLabelInside: boolean;
27
40
  /**
28
41
  * Видимая resting-рамка контрола. По умолчанию `true` — рамка видна на обеих
29
42
  * темах. `false` снимает только resting-рамку; focus/invalid состояния свою
@@ -36,6 +49,11 @@ export declare abstract class RtFormControlBase<TValue> implements ControlValueA
36
49
  readonly isReadonly: Signal<boolean>;
37
50
  /** Публичный invalid для rt-field (touched/dirty учтён в состоянии). */
38
51
  readonly invalid: Signal<boolean>;
52
+ /**
53
+ * Сообщает о сбросе крестиком. Приходит после того, как значение уже пустое и ушло в форму:
54
+ * DOM-событий `input`/`change` сброс не рождает, и хосту, который слушает их, нужен свой сигнал.
55
+ */
56
+ readonly cleared: OutputEmitterRef<void>;
39
57
  /** Текущие ошибки связанного контрола — источник текста ошибки в rt-field. */
40
58
  readonly errors: Signal<ValidationErrors | null>;
41
59
  /** Обязателен ли контрол — по валидатору формы или по слову rt-field. Для авто-«*». */
@@ -93,10 +111,30 @@ export declare abstract class RtFormControlBase<TValue> implements ControlValueA
93
111
  "required": false;
94
112
  "isSignal": true;
95
113
  };
114
+ "clearTabbable": {
115
+ "alias": "clearTabbable";
116
+ "required": false;
117
+ "isSignal": true;
118
+ };
96
119
  "bordered": {
97
120
  "alias": "bordered";
98
121
  "required": false;
99
122
  "isSignal": true;
100
123
  };
101
- }, {}, never, never, true, never>;
102
- }
124
+ }, {
125
+ "cleared": "cleared";
126
+ }, never, never, true, never>;
127
+ }
128
+ /**
129
+ * Внешняя ширина подписи на рамке, px, — по ней материальный набор вырезает разрыв в рамке поля,
130
+ * как у поля Material. Ширину подписи стили сами не знают, поэтому её меряет наблюдатель размера.
131
+ * Подпись появляется и пропадает вместе со входом — наблюдатель переезжает за ней.
132
+ *
133
+ * Зовётся в контексте внедрения: в инициализаторе поля компонента.
134
+ */
135
+ export declare function rtNotchWidth(label: Signal<ElementRef<HTMLElement> | undefined>): Signal<number>;
136
+ /**
137
+ * Предел длины поля из входа `maxlength`: целое не меньше нуля. Пустой атрибут, `null` и не число —
138
+ * предела нет, атрибут на поле не ставится.
139
+ */
140
+ export declare function rtMaxlength(value: NumberInput): number | null;
@@ -89,7 +89,8 @@ export declare class RtIconButtonComponent {
89
89
  readonly tooltip: InputSignal<string>;
90
90
  /**
91
91
  * Прячет ли клик открытую подсказку (`rtTooltipHideOnClick`). `false` — у переключателя:
92
- * подсказка остаётся и показывает новое состояние на месте.
92
+ * подсказка остаётся и показывает новое состояние на месте. Умолчание — из настроек кита
93
+ * `components.tooltip.hideOnClick`, как у самой подсказки: иначе своё `true` кнопки перебивало бы их.
93
94
  */
94
95
  readonly tooltipHideOnClick: InputSignalWithTransform<boolean, BooleanInput>;
95
96
  /**
@@ -25,6 +25,7 @@ export declare class RtInputNumberComponent extends RtFormControlBase<number | n
25
25
  protected readonly displayValue: WritableSignal<string>;
26
26
  protected readonly hasValue: Signal<boolean>;
27
27
  /** Вид рамки: `outline` — рамка со всех сторон, `fill` — залитое поле с чертой снизу. */
28
+ readonly fieldLabelInside: boolean;
28
29
  readonly appearance: InputSignal<IRtInput.Appearance>;
29
30
  readonly displayText: Signal<string>;
30
31
  readonly iconLeft: InputSignal<IRtIcon.Name | null>;