/
githubmirror
/
components
Обзор
Документация
Войти
/
githubmirror
/
components
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/components-examples/aria/menu/menu-context/menu-context-example.ts
52 строки
1 KB
Andrey Dolgachev
refactor(aria/menu): Extend public api with open/close methods
12 ноя 2025, 02:21
12 ноя 2025, 02:21
6cd723e
Код
Авторство
О чём код?
import {Component, viewChild} from '@angular/core'; import {Menu, MenuContent} from '@angular/aria/menu'; import { SimpleMenu, SimpleMenuItem, SimpleMenuItemIcon, SimpleMenuItemShortcut, SimpleMenuItemText, } from '../simple-menu'; /** @title Context menu example. */ @Component({ selector: 'menu-context-example', templateUrl: 'menu-context-example.html', styleUrl: '../menu-example.css', imports: [ SimpleMenu, SimpleMenuItem, SimpleMenuItemText, SimpleMenuItemIcon, SimpleMenuItemShortcut, MenuContent, ], }) export class MenuContextExample { menu = viewChild<Menu<string>>(Menu); close(event: FocusEvent) { const menu = this.menu(); const relatedTarget = event.relatedTarget as HTMLElement | null; if (menu && !menu.element.contains(relatedTarget)) { menu.close(); menu.element.style.visibility = 'hidden'; } } open(event: MouseEvent) { const menu = this.menu(); menu?._pattern.closeAll(); if (menu) { event.preventDefault(); menu.element.style.visibility = 'visible'; menu.element.style.top = `${event.clientY}px`; menu.element.style.left = `${event.clientX}px`; setTimeout(() => menu._pattern.first()); } } }