@rt-tools/ui-kit-v2 0.34.3 → 0.34.4

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 (82) hide show
  1. package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs +2 -0
  2. package/fesm2022/rt-tools-ui-kit-v2-action-bar.mjs.map +1 -1
  3. package/fesm2022/rt-tools-ui-kit-v2-aside.mjs +2 -0
  4. package/fesm2022/rt-tools-ui-kit-v2-aside.mjs.map +1 -1
  5. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs +2 -0
  6. package/fesm2022/rt-tools-ui-kit-v2-autocomplete.mjs.map +1 -1
  7. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs +2 -0
  8. package/fesm2022/rt-tools-ui-kit-v2-calendar.mjs.map +1 -1
  9. package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs +2 -0
  10. package/fesm2022/rt-tools-ui-kit-v2-copy-value.mjs.map +1 -1
  11. package/fesm2022/rt-tools-ui-kit-v2-counter.mjs +2 -0
  12. package/fesm2022/rt-tools-ui-kit-v2-counter.mjs.map +1 -1
  13. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs +4 -0
  14. package/fesm2022/rt-tools-ui-kit-v2-data-list.mjs.map +1 -1
  15. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs +4 -0
  16. package/fesm2022/rt-tools-ui-kit-v2-data-table.mjs.map +1 -1
  17. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs +4 -0
  18. package/fesm2022/rt-tools-ui-kit-v2-date-picker.mjs.map +1 -1
  19. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs +2 -0
  20. package/fesm2022/rt-tools-ui-kit-v2-date-range.mjs.map +1 -1
  21. package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs +2 -0
  22. package/fesm2022/rt-tools-ui-kit-v2-dialog.mjs.map +1 -1
  23. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs +2 -0
  24. package/fesm2022/rt-tools-ui-kit-v2-dynamic-list.mjs.map +1 -1
  25. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs +2 -0
  26. package/fesm2022/rt-tools-ui-kit-v2-dynamic-selector.mjs.map +1 -1
  27. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs +2 -0
  28. package/fesm2022/rt-tools-ui-kit-v2-file-card.mjs.map +1 -1
  29. package/fesm2022/rt-tools-ui-kit-v2-header.mjs +2 -0
  30. package/fesm2022/rt-tools-ui-kit-v2-header.mjs.map +1 -1
  31. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs +103 -6
  32. package/fesm2022/rt-tools-ui-kit-v2-icon-button.mjs.map +1 -1
  33. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs +2 -0
  34. package/fesm2022/rt-tools-ui-kit-v2-image-upload.mjs.map +1 -1
  35. package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs +2 -0
  36. package/fesm2022/rt-tools-ui-kit-v2-inline-edit.mjs.map +1 -1
  37. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs +2 -0
  38. package/fesm2022/rt-tools-ui-kit-v2-input-number.mjs.map +1 -1
  39. package/fesm2022/rt-tools-ui-kit-v2-input.mjs +6 -1
  40. package/fesm2022/rt-tools-ui-kit-v2-input.mjs.map +1 -1
  41. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs +2 -0
  42. package/fesm2022/rt-tools-ui-kit-v2-menu.mjs.map +1 -1
  43. package/fesm2022/rt-tools-ui-kit-v2-message.mjs +2 -0
  44. package/fesm2022/rt-tools-ui-kit-v2-message.mjs.map +1 -1
  45. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs +2 -0
  46. package/fesm2022/rt-tools-ui-kit-v2-multiselect.mjs.map +1 -1
  47. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs +2 -0
  48. package/fesm2022/rt-tools-ui-kit-v2-pagination.mjs.map +1 -1
  49. package/fesm2022/rt-tools-ui-kit-v2-pdf-viewer.mjs +2 -0
  50. package/fesm2022/rt-tools-ui-kit-v2-pdf-viewer.mjs.map +1 -1
  51. package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs +2 -0
  52. package/fesm2022/rt-tools-ui-kit-v2-photo-viewer.mjs.map +1 -1
  53. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs +10 -0
  54. package/fesm2022/rt-tools-ui-kit-v2-rich-editor.mjs.map +1 -1
  55. package/fesm2022/rt-tools-ui-kit-v2-select.mjs +2 -0
  56. package/fesm2022/rt-tools-ui-kit-v2-select.mjs.map +1 -1
  57. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs +6 -0
  58. package/fesm2022/rt-tools-ui-kit-v2-side-menu.mjs.map +1 -1
  59. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs +2 -0
  60. package/fesm2022/rt-tools-ui-kit-v2-speed-menu.mjs.map +1 -1
  61. package/fesm2022/rt-tools-ui-kit-v2-table.mjs +8 -0
  62. package/fesm2022/rt-tools-ui-kit-v2-table.mjs.map +1 -1
  63. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs +2 -0
  64. package/fesm2022/rt-tools-ui-kit-v2-tag.mjs.map +1 -1
  65. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs +2 -0
  66. package/fesm2022/rt-tools-ui-kit-v2-theme-toggle.mjs.map +1 -1
  67. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs +2 -0
  68. package/fesm2022/rt-tools-ui-kit-v2-thread-list.mjs.map +1 -1
  69. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs +2 -0
  70. package/fesm2022/rt-tools-ui-kit-v2-toast.mjs.map +1 -1
  71. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs +2 -0
  72. package/fesm2022/rt-tools-ui-kit-v2-workspace-details.mjs.map +1 -1
  73. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs +2 -0
  74. package/fesm2022/rt-tools-ui-kit-v2-workspace.mjs.map +1 -1
  75. package/package.json +1 -1
  76. package/src/lib/components/icon-button/CONTEXT.md +32 -16
  77. package/src/lib/components/icon-button/rt-icon-button.component.scss +17 -9
  78. package/src/lib/components/input/CONTEXT.md +6 -0
  79. package/src/styles/_form.scss +14 -1
  80. package/styles/tokens.css +13 -1
  81. package/types/rt-tools-ui-kit-v2-icon-button.d.ts +38 -2
  82. package/types/rt-tools-ui-kit-v2-input.d.ts +2 -0
@@ -281,6 +281,8 @@ var RtSpeedMenuComponent = class RtSpeedMenuComponent {
281
281
  "disabled",
282
282
  "active",
283
283
  "expanded",
284
+ "ariaHaspopup",
285
+ "link",
284
286
  "indicator"
285
287
  ],
286
288
  outputs: ["clicked"]
@@ -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":";;;;;;;AAMA,MAAM,KAAwB;CAAE,SAAS;CAAU,SAAS;CAAO,UAAU;CAAU,UAAU;AAAQ;AACzG,MAAM,OAA0B;CAAE,SAAS;CAAU,SAAS;CAAU,UAAU;CAAU,UAAU;AAAK;AAC3G,MAAM,QAA2B;CAAE,SAAS;CAAS,SAAS;CAAU,UAAU;CAAO,UAAU;AAAQ;AAC3G,MAAM,MAAyB;CAAE,SAAS;CAAO,SAAS;CAAU,UAAU;CAAS,UAAU;AAAQ;AAEzG,MAAM,YAA0E;CAC5E,IAAI,CAAC,IAAI,IAAI;CACb,MAAM,CAAC,MAAM,EAAE;CACf,OAAO,CAAC,OAAO,GAAG;CAClB,KAAK,CAAC,KAAK,KAAK;AACnB;AAED,MAAM,cAA6D;CAC/D,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACP;AAGD,SAAgB,mBAAmB,WAAiC;CAChE,OAAO,UAAU;AACrB;AAGA,SAAgB,oBAAoB,MAAuB;CACvD,OAAO,YAAY;AACvB;AAGA,SAAgB,qBAAqB,WAAiC;CAClE,OAAO,cAAc,QAAQ,cAAc,SAAS,SAAS;AACjE;AAMA,SAAgB,mBAAmB,KAAa,SAAiB,OAAa;CAC1E,IAAI,UAAU,GACV,OAAO;CAGX,QAAQ,KAAR;EACI,KAAK;EACL,KAAK,cACD,QAAQ,UAAU,KAAK;EAC3B,KAAK;EACL,KAAK,aACD,QAAQ,UAAU,IAAI,SAAS;EACnC,KAAK,QACD,OAAO;EACX,KAAK,OACD,OAAO,QAAQ;EACnB,SACI,OAAO;CACf;AACJ;AChCA,MAAM,YAAoB;AAG1B,MAAM,mBAA2B;AAsBjC,IAAa,uBAAb,MAAa,qBAAoB;CACpB;CACA;CAEA;CAuDT,cAAA;EA1DS,KAAA,QAAiC,OAAO,UAAU;EAClD,KAAA,YAAsB,OAAO,QAAQ;EAErC,KAAA,eAA+B,WAAW,WAAW;EAE3C,KAAA,UAAkD,UAAU,oBAAmB,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;EAE/E,KAAA,QAAqD,UAAmC,SAAQ,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;EAEhG,KAAA,SAA0B,eAAwB,KAAK,QAAO,CAAE,EAAE,OAAM,KAAM,OAAM,GAAA,YAAA,CAAA,EAAA,WAAA,SAAA,CAAA,+BAAA,CAAA,CAAA;EAGpF,KAAA,eAA+B,eAAuB,KAAK,MAAK,KAAM,KAAK,aAAY,GAAG,GAAA,YAAA,CAAA,EAAA,WAAA,eAAA,CAAA,+BAAA,CAAA,CAAA;EAE1F,KAAA,YAAkD,eACjE,mBAAmB,KAAK,UAAS,CAAE,GACtC,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;EAEkB,KAAA,aAAyC,eAAmC,oBAAoB,KAAK,KAAI,CAAE,GAAE,GAAA,YAAA,CAAA,EAAA,WAAA,aAAA,CAAA,+BAAA,CAAA,CAAA;EAE7G,KAAA,cAA4C,eAC3D,qBAAqB,KAAK,UAAS,CAAE,GACxC,GAAA,YAAA,CAAA,EAAA,WAAA,cAAA,CAAA,+BAAA,CAAA,CAAA;EAGe,KAAA,UAAuD,MAAM,SAA0C,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;EAGvG,KAAA,OAA4B,MAAc,QAAO,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;EAGjD,KAAA,QAA6B,MAAc,IAAG,GAAA,YAAA,CAAA,EAAA,WAAA,QAAA,CAAA,+BAAA,CAAA,CAAA;EAG9C,KAAA,YAAiD,MAA8B,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,YAAA,CAAA,+BAAA,CAAA,CAAA;EAGpF,KAAA,OAAuC,MAAyB,MAAK,GAAA,YAAA,CAAA,EAAA,WAAA,OAAA,CAAA,+BAAA,CAAA,CAAA;EAGrE,KAAA,UAA6C,MAA4B,WAAU,GAAA,YAAA,CAAA,EAAA,WAAA,UAAA,CAAA,+BAAA,CAAA,CAAA;EAGnF,KAAA,gBAAiE,MAA6B,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,gBAAA,+BAAA,CAAA;GAC/G,WAAW;EAAgB,CAAA;EAIf,KAAA,WAA4D,MAA6B,OAAK;GAAA,GAAA,YAAA,EAAA,WAAA,WAAA,+BAAA,CAAA;GAC1G,WAAW;EAAgB,CAAA;EAIf,KAAA,eAAyC,OAAM;EAG/C,KAAA,aAAwC,OAAM;EAG1D,aAAkB;GACd,IAAI,KAAK,SAAQ,GACb,KAAK,QAAO,CAAE,EAAE,MAAK;EAE7B,CAAC;CACL;CAEU,UAAU,OAAiB;EACjC,IAAI,KAAK,OAAM,GAAI;GACf,KAAK,QAAO,CAAE,EAAE,MAAK;GACrB;EACJ;EACA,IAAI,KAAK,QAAO,CAAE,CAAC,WAAW,GAC1B;EAEJ,KAAK,QAAO,CAAE,EAAE,KAAI;EAGpB,IAAI,MAAM,WAAW,GACjB,sBAA4B,KAAK,aAAa,CAAC,GAAG,EAAE,UAAU,KAAK,UAAS,CAAE;CAEtF;CAEU,SAAS,QAA2B;EAC1C,IAAI,OAAO,UACP;EAEJ,KAAK,aAAa,KAAK,OAAO,KAAK;EACnC,IAAI,KAAK,cAAa,GAClB,KAAK,gBAAe;CAE5B;CAEU,eAAe,OAAoB;EACzC,IAAI,MAAM,QAAQ,YAAY,MAAM,QAAQ,OAAO;GAC/C,MAAM,eAAc;GACpB,KAAK,gBAAe;GACpB;EACJ;EACA,MAAM,UAAyB,KAAK,kBAAiB;EAErD,MAAM,UAAkB,QAAQ,WAAW,WAAiC,WAAW,MAAM,MAAM;EACnG,MAAM,OAAsB,mBAAmB,MAAM,KAAK,SAAS,QAAQ,MAAM;EACjF,IAAI,SAAS,MACT;EAEJ,MAAM,eAAc;EACpB,QAAQ,KAAK,EAAE,MAAK;CACxB;CAEU,WAAQ;EACd,KAAK,WAAW,KAAK,IAAI;CAC7B;CAEU,WAAQ;EACd,KAAK,WAAW,KAAK,KAAK;CAC9B;CAEA,kBAAe;EACX,KAAK,QAAO,CAAE,EAAE,MAAK;EACrB,KAAK,MAAM,cAAc,cAA2B,yCAAyC,CAAC,EAAE,MAAK;CACzG;CAEA,aAAa,OAAa;EACtB,KAAK,kBAAiB,CAAE,CAAC,MAAM,EAAE,MAAK;CAC1C;CAEA,oBAAiB;EACb,MAAM,QAAiC,KAAK,MAAK,CAAE,EAAE;EACrD,OAAO,QAAQ,MAAM,KAAK,MAAM,iBAA8B,gBAAgB,CAAC,IAAI,CAAA;CACvF;CAlIS;EAAA,KAAA,OAAA,GAAA,mBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,UAAA;GAAA,MAAA;GAAoB,MAAA,CAAA;GAAA,QAAA,GAAA,gBAAA;EAAA,CAAA;CAAA;CAApB;EAAA,KAAA,OAAA,GAAA,qBAAA;GAAA,YAAA;GAAA,SAAA;GAAA,MAAA;GAAoB,cAAA;GAAA,UAAA;GAAA,QAAA;IAAA,SAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,MAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,OAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,WAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,MAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,SAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,eAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;IAAA,UAAA;KAAA,mBAAA;KAAA,YAAA;KAAA,UAAA;KAAA,YAAA;KAAA,mBAAA;IAAA;GAAA;GAAA,SAAA;IAAA,cAAA;IAAA,YAAA;GAAA;GAAA,MAAA;IAAA,YAAA,EAAA,6BAAA,WAAA;IAAA,gBAAA;GAAA;GAAA,aAAA,CAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAMkD;IAAkB,aAAA;IAAA,UAAA;GAAA,GAAA;IAAA,cAAA;IAAA,OAAA;IAAA,WAAA,CAAA,OAAA;IAAA,aAAA;IAAA,UAAA;GAAA,CAAA;GAAA,UAAA;GAAA,UC9DrG;GAgDA,QAAA,CAAA,umJAAA;GAAA,cAAA;IAAA;KAAA,MAAA;KAAA,MDEc;KAAc,UAAA;KAAA,QAAA,CAAA,OAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;KAAa,UAAA;KAAA,QAAA,CAAA,OAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;KAAY,UAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;KAAqB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA,CAAA,SAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;KAAkB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,SAAA,CAAA,mBAAA,iBAAA;KAAA,UAAA,CAAA,WAAA;IAAA;IAAA;KAAA,MAAA;KAAA,MAAE;KAAkB,UAAA;KAAA,QAAA;MAAA;MAAA;MAAA;MAAA;MAAA;KAAA;KAAA,UAAA,CAAA,WAAA;IAAA;GAAA;GAAA,iBAAA,GAAA,wBAAA;GAAA,eAAA,GAAA,kBAAA;EAAA,CAAA;CAAA;;AAM3G,GAAA,yBAAA;CAAA,YAAA;CAAA,SAAA;CAAA,UAAA;CAAA,MAAA;CAAoB,YAAA,CAAA;EAZhC,MAAA;EACa,MAAA,CAAA;GAAA,UAAA;GAAe,iBAGR,wBAAwB;GAAM,eAChC,kBAAkB;GAAI,SAC5B;IAAC;IAAgB;IAAe;IAAc;IAAuB;IAAoB;GAAkB;GAAC,MAC/G;IACF,OAAO;IACP,+BAA+B;GAClC;GAAA,UAAA;GAAA,QAAA,CAAA,umJAAA;EAAA,CAAA;CAQ8E,CAAA;CAAA,sBAAA,CAAA;CAAA,gBAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,GAAA,iBAAA,kBAAkB,GAAA,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;EAAA,OAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAEU,SAAO,EAAA,UAAA,KAAA,CAAA;EAAA,CAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,MAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,OAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,WAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,MAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,SAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,eAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,UAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA;IAAA,UAAA;IAAA,OAAA;IAAA,UAAA;GAAA,CAAA;EAAA,CAAA;EAAA,cAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,cAAA;EAAA,CAAA;EAAA,YAAA,CAAA;GAAA,MAAA,GAAA;GAAA,MAAA,CAAA,YAAA;EAAA,CAAA;CAAA;AAAA,CAAA"}
@@ -160,6 +160,8 @@ var RtCopyCellComponent = class RtCopyCellComponent {
160
160
  "disabled",
161
161
  "active",
162
162
  "expanded",
163
+ "ariaHaspopup",
164
+ "link",
163
165
  "indicator"
164
166
  ],
165
167
  outputs: ["clicked"]
@@ -576,6 +578,8 @@ var RtTableFilterHeaderComponent = class RtTableFilterHeaderComponent {
576
578
  "disabled",
577
579
  "active",
578
580
  "expanded",
581
+ "ariaHaspopup",
582
+ "link",
579
583
  "indicator"
580
584
  ],
581
585
  outputs: ["clicked"]
@@ -2234,6 +2238,8 @@ var RtTableSettingsPanelComponent = class RtTableSettingsPanelComponent {
2234
2238
  "disabled",
2235
2239
  "active",
2236
2240
  "expanded",
2241
+ "ariaHaspopup",
2242
+ "link",
2237
2243
  "indicator"
2238
2244
  ],
2239
2245
  outputs: ["clicked"]
@@ -2480,6 +2486,8 @@ var RtTableSettingsAsideComponent = class RtTableSettingsAsideComponent extends
2480
2486
  "disabled",
2481
2487
  "active",
2482
2488
  "expanded",
2489
+ "ariaHaspopup",
2490
+ "link",
2483
2491
  "indicator"
2484
2492
  ],
2485
2493
  outputs: ["clicked"]