@rt-tools/ui-kit-v2 0.34.5 → 0.35.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 (76) hide show
  1. package/fesm2022/rt-tools-ui-kit-v2-ai-prompt-input.mjs +574 -0
  2. package/fesm2022/rt-tools-ui-kit-v2-ai-prompt-input.mjs.map +1 -0
  3. package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs +2 -1
  4. package/fesm2022/rt-tools-ui-kit-v2-ai-run-status.mjs.map +1 -1
  5. package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs +2 -1
  6. package/fesm2022/rt-tools-ui-kit-v2-breadcrumbs.mjs.map +1 -1
  7. package/fesm2022/rt-tools-ui-kit-v2-core.mjs +62 -3
  8. package/fesm2022/rt-tools-ui-kit-v2-core.mjs.map +1 -1
  9. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +4 -2
  10. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -1
  11. package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs +2 -1
  12. package/fesm2022/rt-tools-ui-kit-v2-draggable-tree.mjs.map +1 -1
  13. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +4 -2
  14. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -1
  15. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs +2 -1
  16. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs.map +1 -1
  17. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs +2 -1
  18. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree-selector.mjs.map +1 -1
  19. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs +2 -1
  20. package/fesm2022/rt-tools-ui-kit-v2-hybrid-tree.mjs.map +1 -1
  21. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs +2 -1
  22. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs.map +1 -1
  23. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs +2 -1
  24. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs.map +1 -1
  25. package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs +2 -1
  26. package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs.map +1 -1
  27. package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs +2 -2
  28. package/fesm2022/rt-tools-ui-kit-v2-markdown-text.mjs.map +1 -1
  29. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs +4 -2
  30. package/fesm2022/rt-tools-ui-kit-v2-page-header.mjs.map +1 -1
  31. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +148 -24
  32. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  33. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs +2 -1
  34. package/fesm2022/rt-tools-ui-kit-v2-scroll-area.mjs.map +1 -1
  35. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs +4 -2
  36. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs.map +1 -1
  37. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs +2 -1
  38. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs.map +1 -1
  39. package/fesm2022/rt-tools-ui-kit-v2-table.mjs +2 -1
  40. package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -1
  41. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs +2 -1
  42. package/fesm2022/rt-tools-ui-kit-v2-tabs.mjs.map +1 -1
  43. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs +2 -1
  44. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs.map +1 -1
  45. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +52 -5
  46. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -1
  47. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs +2 -1
  48. package/fesm2022/rt-tools-ui-kit-v2-toggle-button-group.mjs.map +1 -1
  49. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs +37 -0
  50. package/fesm2022/rt-tools-ui-kit-v2-tooltip.mjs.map +1 -1
  51. package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs +2 -1
  52. package/fesm2022/rt-tools-ui-kit-v2-tree-selector.mjs.map +1 -1
  53. package/fesm2022/rt-tools-ui-kit-v2-tree.mjs +2 -1
  54. package/fesm2022/rt-tools-ui-kit-v2-tree.mjs.map +1 -1
  55. package/fesm2022/rt-tools-ui-kit-v2-usage-ring.mjs +164 -0
  56. package/fesm2022/rt-tools-ui-kit-v2-usage-ring.mjs.map +1 -0
  57. package/fesm2022/rt-tools-ui-kit-v2.mjs +2 -0
  58. package/package.json +9 -1
  59. package/src/lib/components/ai-prompt-input/CONTEXT.md +60 -0
  60. package/src/lib/components/ai-prompt-input/rt-ai-prompt-input.component.scss +113 -0
  61. package/src/lib/components/markdown-text/rt-markdown-text.component.scss +3 -0
  62. package/src/lib/components/thread-list/rt-thread-list.component.scss +26 -11
  63. package/src/lib/components/tooltip/CONTEXT.md +4 -0
  64. package/src/lib/components/usage-ring/CONTEXT.md +33 -0
  65. package/src/lib/components/usage-ring/rt-usage-ring.component.scss +64 -0
  66. package/src/rich-editor/lib/components/ai-chat/CONTEXT.md +1 -1
  67. package/src/rich-editor/lib/components/ai-chat/answer/rt-ai-chat-answer.component.scss +1 -0
  68. package/src/rich-editor/lib/components/ai-chat/rt-ai-chat.component.scss +6 -0
  69. package/src/rich-editor/lib/components/chat/rt-chat.component.scss +25 -0
  70. package/types/rt-tools-ui-kit-v2-ai-prompt-input.d.ts +193 -0
  71. package/types/rt-tools-ui-kit-v2-core.d.ts +4 -0
  72. package/types/rt-tools-ui-kit-v2-rich-editor.d.ts +56 -3
  73. package/types/rt-tools-ui-kit-v2-thread-list.d.ts +7 -1
  74. package/types/rt-tools-ui-kit-v2-tooltip.d.ts +12 -0
  75. package/types/rt-tools-ui-kit-v2-usage-ring.d.ts +47 -0
  76. package/types/rt-tools-ui-kit-v2.d.ts +2 -0
@@ -316,7 +316,8 @@ var RtSpeedMenuComponent = class RtSpeedMenuComponent {
316
316
  "rtTooltipPlacement",
317
317
  "rtTooltipShowDelay",
318
318
  "rtTooltipWhenTruncated",
319
- "rtTooltipHideOnClick"
319
+ "rtTooltipHideOnClick",
320
+ "rtTooltipShowOnTap"
320
321
  ],
321
322
  exportAs: ["rtTooltip"]
322
323
  }
@@ -1 +1 @@
1
- {"version":3,"file":"rt-tools-ui-kit-v2-speed-menu.mjs","names":[],"sources":["../../../projects/ui-kit-v2/src/lib/components/speed-menu/rt-speed-menu.logic.ts","../../../projects/ui-kit-v2/src/lib/components/speed-menu/rt-speed-menu.component.ts","../../../projects/ui-kit-v2/src/lib/components/speed-menu/rt-speed-menu.component.html"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\n\nimport { IRtIconButton } from '@rt-tools/ui-kit-v2/icon-button';\nimport { IRtTooltip } from '@rt-tools/ui-kit-v2/tooltip';\nimport { IRtSpeedMenu } from './rt-speed-menu.model';\n\nconst UP: ConnectedPosition = { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' };\nconst DOWN: ConnectedPosition = { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' };\nconst START: ConnectedPosition = { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' };\nconst END: ConnectedPosition = { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' };\n\nconst POSITIONS: Record<IRtSpeedMenu.Direction, readonly ConnectedPosition[]> = {\n up: [UP, DOWN],\n down: [DOWN, UP],\n start: [START, END],\n end: [END, START],\n};\n\nconst ACTION_SIZE: Record<IRtSpeedMenu.Size, IRtIconButton.Size> = {\n sm: 'xs',\n md: 'sm',\n lg: 'md',\n xl: 'lg',\n};\n\n/** Места панели вокруг кнопки: сторона направления, а у края экрана — противоположная. */\nexport function speedMenuPositions(direction: IRtSpeedMenu.Direction): readonly ConnectedPosition[] {\n return POSITIONS[direction];\n}\n\n/** Размер кнопок действий — на шаг меньше кнопки меню. */\nexport function speedMenuActionSize(size: IRtSpeedMenu.Size): IRtIconButton.Size {\n return ACTION_SIZE[size];\n}\n\n/** Подсказка столбца действий встаёт сбоку, подсказка ряда — сверху: иначе она закрывает соседа. */\nexport function speedMenuTooltipSide(direction: IRtSpeedMenu.Direction): IRtTooltip.Placement {\n return direction === 'up' || direction === 'down' ? 'left' : 'top';\n}\n\n/**\n * Куда клавиша переводит фокус среди доступных действий: стрелки идут по кругу, Home и End берут\n * крайние. `null` — клавиша не про переход.\n */\nexport function speedMenuNextIndex(key: string, current: number, count: number): number | null {\n if (count === 0) {\n return null;\n }\n\n switch (key) {\n case 'ArrowDown':\n case 'ArrowRight':\n return (current + 1) % count;\n case 'ArrowUp':\n case 'ArrowLeft':\n return (current - 1 + count) % count;\n case 'Home':\n return 0;\n case 'End':\n return count - 1;\n default:\n return null;\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n Signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { BlockDirective, ElemDirective, ModDirective } from '@rt-tools/core';\n\nimport { rtKitLabel } from '@rt-tools/ui-kit-v2/core';\nimport { IRtIconButton, RtIconButtonComponent } from '@rt-tools/ui-kit-v2/icon-button';\nimport { RtPopoverDirective } from '@rt-tools/ui-kit-v2/popover';\nimport { IRtTooltip, RtTooltipDirective } from '@rt-tools/ui-kit-v2/tooltip';\nimport { speedMenuActionSize, speedMenuNextIndex, speedMenuPositions, speedMenuTooltipSide } from './rt-speed-menu.logic';\nimport { IRtSpeedMenu } from './rt-speed-menu.model';\n\nconst BEM_BLOCK: string = 'rt-speed-menu';\n\n/** Кнопки действий, которые можно нажать: недоступная кнопка кита несёт нативный `disabled`. */\nconst AVAILABLE_ACTION: string = '.rt-speed-menu__action .rt-icon-button:not(:disabled)';\n\n/**\n * Быстрое меню: круглая кнопка, которая раскрывает рядом несколько круглых кнопок действий. Действия\n * лежат в плавающей панели кита (`rtPopover`) на стороне направления, у края экрана — на\n * противоположной; Escape и нажатие снаружи закрывают меню.\n *\n * Выбор отдаётся выходом `actionSelect`, и меню остаётся открытым: приложение нажимает действие\n * несколько раз подряд. Закрытие на выборе — вход `closeOnSelect`.\n */\n@Component({\n selector: 'rt-speed-menu',\n templateUrl: './rt-speed-menu.component.html',\n styleUrl: './rt-speed-menu.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [BlockDirective, ElemDirective, ModDirective, RtIconButtonComponent, RtPopoverDirective, RtTooltipDirective],\n host: {\n class: BEM_BLOCK,\n '[class.rt-speed-menu--open]': 'isOpen()',\n },\n})\nexport class RtSpeedMenuComponent {\n readonly #host: ElementRef<HTMLElement> = inject(ElementRef);\n readonly #injector: Injector = inject(Injector);\n\n readonly #t_uiActions: Signal<string> = rtKitLabel('uiActions');\n\n protected readonly popover: Signal<RtPopoverDirective | undefined> = viewChild(RtPopoverDirective);\n\n protected readonly panel: Signal<ElementRef<HTMLElement> | undefined> = viewChild<ElementRef<HTMLElement>>('panel');\n\n protected readonly isOpen: Signal<boolean> = computed((): boolean => this.popover()?.isOpen() ?? false);\n\n /** Своё имя кнопки важнее умолчания: приложение знает, что за действия в меню. */\n protected readonly triggerLabel: Signal<string> = computed((): string => this.label() || this.#t_uiActions());\n\n protected readonly positions: Signal<readonly ConnectedPosition[]> = computed((): readonly ConnectedPosition[] =>\n speedMenuPositions(this.direction())\n );\n\n protected readonly actionSize: Signal<IRtIconButton.Size> = computed((): IRtIconButton.Size => speedMenuActionSize(this.size()));\n\n protected readonly tooltipSide: Signal<IRtTooltip.Placement> = computed((): IRtTooltip.Placement =>\n speedMenuTooltipSide(this.direction())\n );\n\n /** Действия меню в порядке чтения: сверху вниз в столбце, от начала к концу в ряду. */\n public readonly actions: InputSignal<readonly IRtSpeedMenu.Action[]> = input.required<readonly IRtSpeedMenu.Action[]>();\n\n /** Значок кнопки меню: имя кита или Material. Открытая кнопка показывает крест. */\n public readonly icon: InputSignal<string> = input<string>('menu');\n\n /** Доступное имя кнопки меню. Пусто — подпись кита «Действия». */\n public readonly label: InputSignal<string> = input<string>('');\n\n /** Сторона, на которую раскрываются действия. */\n public readonly direction: InputSignal<IRtSpeedMenu.Direction> = input<IRtSpeedMenu.Direction>('up');\n\n /** Размер кнопки меню; действия на шаг меньше. */\n public readonly size: InputSignal<IRtSpeedMenu.Size> = input<IRtSpeedMenu.Size>('lg');\n\n /** Палитра кнопки меню. */\n public readonly variant: InputSignal<IRtSpeedMenu.Variant> = input<IRtSpeedMenu.Variant>('primary');\n\n /** Закрывать меню после выбора действия; фокус возвращается на кнопку меню. */\n public readonly closeOnSelect: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Недоступное меню не открывается, а открытое закрывается. */\n public readonly disabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Выбор действия — его `value`. */\n public readonly actionSelect: OutputEmitterRef<string> = output<string>();\n\n /** Меню открылось (`true`) или закрылось (`false`). */\n public readonly openChange: OutputEmitterRef<boolean> = output<boolean>();\n\n constructor() {\n effect((): void => {\n if (this.disabled()) {\n this.popover()?.close();\n }\n });\n }\n\n protected onTrigger(event: MouseEvent): void {\n if (this.isOpen()) {\n this.popover()?.close();\n return;\n }\n if (this.actions().length === 0) {\n return;\n }\n this.popover()?.open();\n // Нажатие с клавиатуры приходит без счёта щелчков: такого человека панель встречает фокусом\n // на первом действии — она лежит в конце страницы, и Tab до неё не дошёл бы.\n if (event.detail === 0) {\n afterNextRender((): void => this.#focusAction(0), { injector: this.#injector });\n }\n }\n\n protected onAction(action: IRtSpeedMenu.Action): void {\n if (action.disabled) {\n return;\n }\n this.actionSelect.emit(action.value);\n if (this.closeOnSelect()) {\n this.#closeToTrigger();\n }\n }\n\n protected onPanelKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' || event.key === 'Tab') {\n event.preventDefault();\n this.#closeToTrigger();\n return;\n }\n const buttons: HTMLElement[] = this.#availableActions();\n // Клавишу ловит кнопка в фокусе, и место в ряду меряется по ней\n const current: number = buttons.findIndex((button: HTMLElement): boolean => button === event.target);\n const next: number | null = speedMenuNextIndex(event.key, current, buttons.length);\n if (next === null) {\n return;\n }\n event.preventDefault();\n buttons[next]?.focus();\n }\n\n protected onOpened(): void {\n this.openChange.emit(true);\n }\n\n protected onClosed(): void {\n this.openChange.emit(false);\n }\n\n #closeToTrigger(): void {\n this.popover()?.close();\n this.#host.nativeElement.querySelector<HTMLElement>('.rt-speed-menu__trigger .rt-icon-button')?.focus();\n }\n\n #focusAction(index: number): void {\n this.#availableActions()[index]?.focus();\n }\n\n #availableActions(): HTMLElement[] {\n const panel: HTMLElement | undefined = this.panel()?.nativeElement;\n return panel ? Array.from(panel.querySelectorAll<HTMLElement>(AVAILABLE_ACTION)) : [];\n }\n}\n","<ng-container rtBlock=\"rt-speed-menu\">\n <!-- Панель висит на кнопке меню: по ней она встаёт и её нажатие не считает нажатием снаружи.\n Открывает и закрывает её сама кнопка — триггер панели ручной. -->\n <rt-icon-button\n rtElem=\"trigger\"\n qa-dataid=\"speed-menu-trigger\"\n radius=\"full\"\n rtPopoverTrigger=\"manual\"\n rtPopoverPanelClass=\"rt-speed-menu-pane\"\n [rtPopover]=\"panelTpl\"\n [rtPopoverPositions]=\"positions()\"\n [glyph]=\"isOpen() ? 'close' : icon()\"\n [ariaLabel]=\"triggerLabel()\"\n [variant]=\"variant()\"\n [size]=\"size()\"\n [disabled]=\"disabled()\"\n [expanded]=\"isOpen()\"\n (rtPopoverOpened)=\"onOpened()\"\n (rtPopoverClosed)=\"onClosed()\"\n (clicked)=\"onTrigger($event)\" />\n\n <ng-template #panelTpl>\n <div\n #panel\n rtElem=\"panel\"\n role=\"group\"\n qa-dataid=\"speed-menu-panel\"\n [rtMod]=\"direction()\"\n [attr.aria-label]=\"triggerLabel()\"\n (keydown)=\"onPanelKeydown($event)\">\n @for (action of actions(); track action.value) {\n <rt-icon-button\n rtElem=\"action\"\n qa-dataid=\"speed-menu-action\"\n radius=\"full\"\n variant=\"secondary\"\n [rtTooltip]=\"action.label\"\n [rtTooltipPlacement]=\"tooltipSide()\"\n [glyph]=\"action.icon\"\n [ariaLabel]=\"action.label\"\n [size]=\"actionSize()\"\n [disabled]=\"action.disabled ?? false\"\n [attr.data-value]=\"action.value\"\n (clicked)=\"onAction(action)\" />\n }\n </div>\n </ng-template>\n</ng-container>\n"],"mappings":"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"}
1
+ {"version":3,"file":"rt-tools-ui-kit-v2-speed-menu.mjs","names":[],"sources":["../../../projects/ui-kit-v2/src/lib/components/speed-menu/rt-speed-menu.logic.ts","../../../projects/ui-kit-v2/src/lib/components/speed-menu/rt-speed-menu.component.ts","../../../projects/ui-kit-v2/src/lib/components/speed-menu/rt-speed-menu.component.html"],"sourcesContent":["import { ConnectedPosition } from '@angular/cdk/overlay';\n\nimport { IRtIconButton } from '@rt-tools/ui-kit-v2/icon-button';\nimport { IRtTooltip } from '@rt-tools/ui-kit-v2/tooltip';\nimport { IRtSpeedMenu } from './rt-speed-menu.model';\n\nconst UP: ConnectedPosition = { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' };\nconst DOWN: ConnectedPosition = { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' };\nconst START: ConnectedPosition = { originX: 'start', originY: 'center', overlayX: 'end', overlayY: 'center' };\nconst END: ConnectedPosition = { originX: 'end', originY: 'center', overlayX: 'start', overlayY: 'center' };\n\nconst POSITIONS: Record<IRtSpeedMenu.Direction, readonly ConnectedPosition[]> = {\n up: [UP, DOWN],\n down: [DOWN, UP],\n start: [START, END],\n end: [END, START],\n};\n\nconst ACTION_SIZE: Record<IRtSpeedMenu.Size, IRtIconButton.Size> = {\n sm: 'xs',\n md: 'sm',\n lg: 'md',\n xl: 'lg',\n};\n\n/** Места панели вокруг кнопки: сторона направления, а у края экрана — противоположная. */\nexport function speedMenuPositions(direction: IRtSpeedMenu.Direction): readonly ConnectedPosition[] {\n return POSITIONS[direction];\n}\n\n/** Размер кнопок действий — на шаг меньше кнопки меню. */\nexport function speedMenuActionSize(size: IRtSpeedMenu.Size): IRtIconButton.Size {\n return ACTION_SIZE[size];\n}\n\n/** Подсказка столбца действий встаёт сбоку, подсказка ряда — сверху: иначе она закрывает соседа. */\nexport function speedMenuTooltipSide(direction: IRtSpeedMenu.Direction): IRtTooltip.Placement {\n return direction === 'up' || direction === 'down' ? 'left' : 'top';\n}\n\n/**\n * Куда клавиша переводит фокус среди доступных действий: стрелки идут по кругу, Home и End берут\n * крайние. `null` — клавиша не про переход.\n */\nexport function speedMenuNextIndex(key: string, current: number, count: number): number | null {\n if (count === 0) {\n return null;\n }\n\n switch (key) {\n case 'ArrowDown':\n case 'ArrowRight':\n return (current + 1) % count;\n case 'ArrowUp':\n case 'ArrowLeft':\n return (current - 1 + count) % count;\n case 'Home':\n return 0;\n case 'End':\n return count - 1;\n default:\n return null;\n }\n}\n","import { BooleanInput } from '@angular/cdk/coercion';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport {\n afterNextRender,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n InputSignal,\n InputSignalWithTransform,\n output,\n OutputEmitterRef,\n Signal,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\n\nimport { BlockDirective, ElemDirective, ModDirective } from '@rt-tools/core';\n\nimport { rtKitLabel } from '@rt-tools/ui-kit-v2/core';\nimport { IRtIconButton, RtIconButtonComponent } from '@rt-tools/ui-kit-v2/icon-button';\nimport { RtPopoverDirective } from '@rt-tools/ui-kit-v2/popover';\nimport { IRtTooltip, RtTooltipDirective } from '@rt-tools/ui-kit-v2/tooltip';\nimport { speedMenuActionSize, speedMenuNextIndex, speedMenuPositions, speedMenuTooltipSide } from './rt-speed-menu.logic';\nimport { IRtSpeedMenu } from './rt-speed-menu.model';\n\nconst BEM_BLOCK: string = 'rt-speed-menu';\n\n/** Кнопки действий, которые можно нажать: недоступная кнопка кита несёт нативный `disabled`. */\nconst AVAILABLE_ACTION: string = '.rt-speed-menu__action .rt-icon-button:not(:disabled)';\n\n/**\n * Быстрое меню: круглая кнопка, которая раскрывает рядом несколько круглых кнопок действий. Действия\n * лежат в плавающей панели кита (`rtPopover`) на стороне направления, у края экрана — на\n * противоположной; Escape и нажатие снаружи закрывают меню.\n *\n * Выбор отдаётся выходом `actionSelect`, и меню остаётся открытым: приложение нажимает действие\n * несколько раз подряд. Закрытие на выборе — вход `closeOnSelect`.\n */\n@Component({\n selector: 'rt-speed-menu',\n templateUrl: './rt-speed-menu.component.html',\n styleUrl: './rt-speed-menu.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n imports: [BlockDirective, ElemDirective, ModDirective, RtIconButtonComponent, RtPopoverDirective, RtTooltipDirective],\n host: {\n class: BEM_BLOCK,\n '[class.rt-speed-menu--open]': 'isOpen()',\n },\n})\nexport class RtSpeedMenuComponent {\n readonly #host: ElementRef<HTMLElement> = inject(ElementRef);\n readonly #injector: Injector = inject(Injector);\n\n readonly #t_uiActions: Signal<string> = rtKitLabel('uiActions');\n\n protected readonly popover: Signal<RtPopoverDirective | undefined> = viewChild(RtPopoverDirective);\n\n protected readonly panel: Signal<ElementRef<HTMLElement> | undefined> = viewChild<ElementRef<HTMLElement>>('panel');\n\n protected readonly isOpen: Signal<boolean> = computed((): boolean => this.popover()?.isOpen() ?? false);\n\n /** Своё имя кнопки важнее умолчания: приложение знает, что за действия в меню. */\n protected readonly triggerLabel: Signal<string> = computed((): string => this.label() || this.#t_uiActions());\n\n protected readonly positions: Signal<readonly ConnectedPosition[]> = computed((): readonly ConnectedPosition[] =>\n speedMenuPositions(this.direction())\n );\n\n protected readonly actionSize: Signal<IRtIconButton.Size> = computed((): IRtIconButton.Size => speedMenuActionSize(this.size()));\n\n protected readonly tooltipSide: Signal<IRtTooltip.Placement> = computed((): IRtTooltip.Placement =>\n speedMenuTooltipSide(this.direction())\n );\n\n /** Действия меню в порядке чтения: сверху вниз в столбце, от начала к концу в ряду. */\n public readonly actions: InputSignal<readonly IRtSpeedMenu.Action[]> = input.required<readonly IRtSpeedMenu.Action[]>();\n\n /** Значок кнопки меню: имя кита или Material. Открытая кнопка показывает крест. */\n public readonly icon: InputSignal<string> = input<string>('menu');\n\n /** Доступное имя кнопки меню. Пусто — подпись кита «Действия». */\n public readonly label: InputSignal<string> = input<string>('');\n\n /** Сторона, на которую раскрываются действия. */\n public readonly direction: InputSignal<IRtSpeedMenu.Direction> = input<IRtSpeedMenu.Direction>('up');\n\n /** Размер кнопки меню; действия на шаг меньше. */\n public readonly size: InputSignal<IRtSpeedMenu.Size> = input<IRtSpeedMenu.Size>('lg');\n\n /** Палитра кнопки меню. */\n public readonly variant: InputSignal<IRtSpeedMenu.Variant> = input<IRtSpeedMenu.Variant>('primary');\n\n /** Закрывать меню после выбора действия; фокус возвращается на кнопку меню. */\n public readonly closeOnSelect: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Недоступное меню не открывается, а открытое закрывается. */\n public readonly disabled: InputSignalWithTransform<boolean, BooleanInput> = input<boolean, BooleanInput>(false, {\n transform: booleanAttribute,\n });\n\n /** Выбор действия — его `value`. */\n public readonly actionSelect: OutputEmitterRef<string> = output<string>();\n\n /** Меню открылось (`true`) или закрылось (`false`). */\n public readonly openChange: OutputEmitterRef<boolean> = output<boolean>();\n\n constructor() {\n effect((): void => {\n if (this.disabled()) {\n this.popover()?.close();\n }\n });\n }\n\n protected onTrigger(event: MouseEvent): void {\n if (this.isOpen()) {\n this.popover()?.close();\n return;\n }\n if (this.actions().length === 0) {\n return;\n }\n this.popover()?.open();\n // Нажатие с клавиатуры приходит без счёта щелчков: такого человека панель встречает фокусом\n // на первом действии — она лежит в конце страницы, и Tab до неё не дошёл бы.\n if (event.detail === 0) {\n afterNextRender((): void => this.#focusAction(0), { injector: this.#injector });\n }\n }\n\n protected onAction(action: IRtSpeedMenu.Action): void {\n if (action.disabled) {\n return;\n }\n this.actionSelect.emit(action.value);\n if (this.closeOnSelect()) {\n this.#closeToTrigger();\n }\n }\n\n protected onPanelKeydown(event: KeyboardEvent): void {\n if (event.key === 'Escape' || event.key === 'Tab') {\n event.preventDefault();\n this.#closeToTrigger();\n return;\n }\n const buttons: HTMLElement[] = this.#availableActions();\n // Клавишу ловит кнопка в фокусе, и место в ряду меряется по ней\n const current: number = buttons.findIndex((button: HTMLElement): boolean => button === event.target);\n const next: number | null = speedMenuNextIndex(event.key, current, buttons.length);\n if (next === null) {\n return;\n }\n event.preventDefault();\n buttons[next]?.focus();\n }\n\n protected onOpened(): void {\n this.openChange.emit(true);\n }\n\n protected onClosed(): void {\n this.openChange.emit(false);\n }\n\n #closeToTrigger(): void {\n this.popover()?.close();\n this.#host.nativeElement.querySelector<HTMLElement>('.rt-speed-menu__trigger .rt-icon-button')?.focus();\n }\n\n #focusAction(index: number): void {\n this.#availableActions()[index]?.focus();\n }\n\n #availableActions(): HTMLElement[] {\n const panel: HTMLElement | undefined = this.panel()?.nativeElement;\n return panel ? Array.from(panel.querySelectorAll<HTMLElement>(AVAILABLE_ACTION)) : [];\n }\n}\n","<ng-container rtBlock=\"rt-speed-menu\">\n <!-- Панель висит на кнопке меню: по ней она встаёт и её нажатие не считает нажатием снаружи.\n Открывает и закрывает её сама кнопка — триггер панели ручной. -->\n <rt-icon-button\n rtElem=\"trigger\"\n qa-dataid=\"speed-menu-trigger\"\n radius=\"full\"\n rtPopoverTrigger=\"manual\"\n rtPopoverPanelClass=\"rt-speed-menu-pane\"\n [rtPopover]=\"panelTpl\"\n [rtPopoverPositions]=\"positions()\"\n [glyph]=\"isOpen() ? 'close' : icon()\"\n [ariaLabel]=\"triggerLabel()\"\n [variant]=\"variant()\"\n [size]=\"size()\"\n [disabled]=\"disabled()\"\n [expanded]=\"isOpen()\"\n (rtPopoverOpened)=\"onOpened()\"\n (rtPopoverClosed)=\"onClosed()\"\n (clicked)=\"onTrigger($event)\" />\n\n <ng-template #panelTpl>\n <div\n #panel\n rtElem=\"panel\"\n role=\"group\"\n qa-dataid=\"speed-menu-panel\"\n [rtMod]=\"direction()\"\n [attr.aria-label]=\"triggerLabel()\"\n (keydown)=\"onPanelKeydown($event)\">\n @for (action of actions(); track action.value) {\n <rt-icon-button\n rtElem=\"action\"\n qa-dataid=\"speed-menu-action\"\n radius=\"full\"\n variant=\"secondary\"\n [rtTooltip]=\"action.label\"\n [rtTooltipPlacement]=\"tooltipSide()\"\n [glyph]=\"action.icon\"\n [ariaLabel]=\"action.label\"\n [size]=\"actionSize()\"\n [disabled]=\"action.disabled ?? false\"\n [attr.data-value]=\"action.value\"\n (clicked)=\"onAction(action)\" />\n }\n </div>\n </ng-template>\n</ng-container>\n"],"mappings":"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"}
@@ -187,7 +187,8 @@ var RtCopyCellComponent = class RtCopyCellComponent {
187
187
  "rtTooltipPlacement",
188
188
  "rtTooltipShowDelay",
189
189
  "rtTooltipWhenTruncated",
190
- "rtTooltipHideOnClick"
190
+ "rtTooltipHideOnClick",
191
+ "rtTooltipShowOnTap"
191
192
  ],
192
193
  exportAs: ["rtTooltip"]
193
194
  }