@rt-tools/ui-kit 0.5.1 → 0.6.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.
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@rt-tools/ui-kit",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Yauheni Krumin",
6
6
  "type": "module",
7
7
  "dependencies": {
8
8
  "tslib": "^2.8.0",
9
- "@rt-tools/core": "^0.4.0",
9
+ "@rt-tools/core": "^0.5.0",
10
10
  "@rt-tools/store": "^0.3.2",
11
11
  "@rt-tools/utils": "^0.4.0"
12
12
  },
13
13
  "peerDependencies": {
14
- "@rt-tools/core": "^0.4.0",
14
+ "@rt-tools/core": "^0.5.0",
15
15
  "@rt-tools/store": "^0.3.2",
16
16
  "@rt-tools/utils": "^0.4.0",
17
17
  "@angular/cdk": "^22.0.0",
Binary file
@@ -266,7 +266,12 @@ $side-menu: (
266
266
  // Component-local elevation token for the slide-out sub-menu drawer.
267
267
  --rt-side-menu-sub-content-shadow: 14px 0 28px rgb(0 0 0 / 25%), 10px 0 10px rgb(0 0 0 / 22%);
268
268
 
269
- position: relative;
269
+ // Расположение шторки оставлено за Material: `absolute` с растяжкой по верху и низу, а
270
+ // место под боковую шторку оно освобождает отступом на содержимом контейнера. Стоявший
271
+ // здесь `relative` возвращал шторку в поток, она вставала над содержимым, и контейнер
272
+ // получал вдвое большую высоту прокрутки. Прокручивать его хватало одного
273
+ // `scrollIntoView` на активном пункте подменю: панель уезжала вверх на ширину рельсы и
274
+ // обратно не возвращалась.
270
275
  width: max(var(--rt-side-menu-sub-menu-width), var(--rt-side-menu-sub-menu-dragged-width, 0px));
271
276
  min-width: max(var(--rt-side-menu-sub-menu-width), var(--rt-side-menu-sub-menu-dragged-width, 0px));
272
277
  height: 100%;
@@ -317,10 +322,17 @@ $side-menu: (
317
322
  &--pinned {
318
323
  position: relative;
319
324
  left: 0;
320
- width: var(--rt-side-menu-sub-menu-shown-width);
325
+ width: 0;
321
326
  height: 100%;
322
327
  flex: 0 0 auto;
323
328
 
329
+ // Ширину закреплённая панель занимает, только пока ей есть что показать. Ширина,
330
+ // поставленная одним лишь закреплением, оставляла пустую полосу слева от страницы на
331
+ // каждом адресе, у которого разделов нет: панели там не видно, а место она держала.
332
+ &.rtui-sub-side-menu--opened {
333
+ width: var(--rt-side-menu-sub-menu-shown-width);
334
+ }
335
+
324
336
  .rtui-sub-side-menu-content {
325
337
  box-shadow: none;
326
338
 
@@ -10,9 +10,9 @@ import { OverlayRef, ComponentType, ConnectedPosition, CdkOverlayOrigin } from '
10
10
  import { ComponentType as ComponentType$1 } from '@angular/cdk/portal';
11
11
  import { BooleanInput, NumberInput } from '@angular/cdk/coercion';
12
12
  import { MatButtonAppearance } from '@angular/material/button';
13
+ import { MatFormFieldAppearance } from '@angular/material/form-field';
13
14
  import * as i1 from '@angular/material/tooltip';
14
15
  import { TooltipPosition } from '@angular/material/tooltip';
15
- import { MatFormFieldAppearance } from '@angular/material/form-field';
16
16
  import { MatSnackBarConfig, MatSnackBarRef } from '@angular/material/snack-bar';
17
17
  import { EPosition, OSTypes } from '@rt-tools/core';
18
18
  import { CdkDragDrop } from '@angular/cdk/drag-drop';
@@ -568,9 +568,33 @@ declare namespace IRtUiConfig {
568
568
  radius?: IRtuiButton.Radius;
569
569
  appearance?: IRtuiButton.Appearance;
570
570
  }
571
+ /** Per-instance-overridable defaults for the dynamic selectors family. */
572
+ interface DynamicSelectors {
573
+ /**
574
+ * Appearance every form field of the family renders with.
575
+ *
576
+ * The family nests: a selector holds an input, an input opens a popup, a popup holds a
577
+ * list. Set once here, the look reaches all of them; passed as an input, it has to be
578
+ * repeated at every use, and the one that was missed differs from the rest.
579
+ */
580
+ appearance?: MatFormFieldAppearance;
581
+ }
582
+ /** Per-instance-overridable defaults for the aside curtain. */
583
+ interface Aside {
584
+ /**
585
+ * Whether Esc closes an open curtain.
586
+ *
587
+ * The kit default is `false`: the key is pressed to lift a hint or to leave a field, and
588
+ * the whole panel closed together with what was entered. An application that needs the
589
+ * former behaviour names it here once instead of naming it at every call.
590
+ */
591
+ closeOnEscape?: boolean;
592
+ }
571
593
  /** Component-level settings. Each entry overrides `global` for that component only. */
572
594
  interface Components {
573
595
  button?: Button;
596
+ dynamicSelectors?: DynamicSelectors;
597
+ aside?: Aside;
574
598
  }
575
599
  interface Config {
576
600
  global?: Global;
@@ -1510,8 +1534,22 @@ declare abstract class RtuiDynamicSelectorsDirective {
1510
1534
  placeholderIcon: InputSignalWithTransform<string, string>;
1511
1535
  /** Placeholder description */
1512
1536
  placeholderDescription: InputSignalWithTransform<string, string>;
1513
- /** Material elements appearance */
1514
- appearance: InputSignal<MatFormFieldAppearance>;
1537
+ /**
1538
+ * Material elements appearance.
1539
+ *
1540
+ * Пустота умолчанием, а не прежнее значение: значение, оставленное умолчанием входа, побеждает
1541
+ * настройку всегда — вход задан, и цепочка разрешения на нём кончается, а настройка не
1542
+ * срабатывает ни разу и выглядит сломанной.
1543
+ */
1544
+ appearance: InputSignal<MatFormFieldAppearance | undefined>;
1545
+ /**
1546
+ * Вид поля, с которым семейство рисуется: вход на месте, потом раздел настройки, потом
1547
+ * умолчание кита.
1548
+ *
1549
+ * Считается один раз здесь, а шаблоны читают готовое: повторённая в каждом из пяти шаблонов
1550
+ * семейства, эта цепочка разъехалась бы с настройкой в первом же месте, куда забыли заглянуть.
1551
+ */
1552
+ readonly resolvedAppearance: Signal<MatFormFieldAppearance>;
1515
1553
  static ɵfac: i0.ɵɵFactoryDeclaration<RtuiDynamicSelectorsDirective, never>;
1516
1554
  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>;
1517
1555
  }
@@ -1854,7 +1892,13 @@ declare class RtuiDynamicSelectorSelectedListComponent<ENTITY extends Record<str
1854
1892
  isDeleteButtonShown: InputSignalWithTransform<boolean, BooleanInput>;
1855
1893
  /** Indicates is items editable */
1856
1894
  isItemsEditable: InputSignalWithTransform<boolean, BooleanInput>;
1857
- /** Material elements appearance */
1895
+ /**
1896
+ * Material elements appearance.
1897
+ *
1898
+ * Значение приходит уже разрешённым — от того, кто список рисует: вложенный компонент,
1899
+ * разрешающий вид заново, заводит свою цепочку, и вид поля внутри списка отличается от вида
1900
+ * поля под ним. Прежнее умолчание оставлено на случай одиночного употребления списка.
1901
+ */
1858
1902
  appearance: InputSignal<MatFormFieldAppearance>;
1859
1903
  readonly deleteFromSelectedAction: OutputEmitterRef<ENTITY[KEY]>;
1860
1904
  readonly dropAction: OutputEmitterRef<CdkDragDrop<ENTITY[]>>;
Binary file