chrome-devtools-frontend
Version:
Chrome DevTools UI
67 lines (58 loc) • 1.44 kB
text/typescript
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import * as Menus from '../../../../ui/components/menus/menus.js';
const menuItems = [
{
name: 'Opt 1',
value: '1',
selected: true,
group: '',
},
{
name: 'Opt 2',
value: '2',
group: '',
},
{
name: 'Opt 3',
value: '3',
group: '',
},
{
name: 'Opt 4',
value: '4',
group: '',
},
];
const root = document.getElementById('root');
const button = document.createElement('button');
button.innerText = 'Toggle menu';
const menu = new Menus.Menu.Menu();
menu.origin = button;
menu.open = false;
menu.showDivider = true;
menuItems.forEach(item => {
const menuItem = new Menus.Menu.MenuItem();
menuItem.value = item.value;
menuItem.selected = Boolean(item.selected);
const itemContent = document.createElement('div');
itemContent.textContent = item.name;
menuItem.appendChild(itemContent);
menu.appendChild(menuItem);
});
menu.addEventListener('menuitemselected', evt => {
menu.querySelectorAll('devtools-menu-item').forEach(item => {
item.selected = item.value === evt.itemValue;
});
});
menu.addEventListener('menucloserequest', _evt => {
menu.open = false;
});
button.addEventListener('click', _menuEvent => {
menu.open = !menu.open;
});
if (root) {
root.appendChild(menu);
root.appendChild(button);
}