chrome-devtools-frontend
Version:
Chrome DevTools UI
103 lines (81 loc) • 3.65 kB
text/typescript
// Copyright 2021 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 FrontendHelpers from '../../../../testing/EnvironmentHelpers.js';
import * as UI from '../../../legacy/legacy.js';
import * as Lit from '../../../lit/lit.js';
import * as ComponentHelpers from '../../helpers/helpers.js';
const {html} = Lit;
await ComponentHelpers.ComponentServerSetup.setup();
await FrontendHelpers.initializeGlobalVars();
{
const menuButtonSection = document.querySelector('#menu-button') as HTMLElement;
Lit.render(
html`
<devtools-menu-button
icon-name="bin"
.populateMenuCall=${(menu: UI.ContextMenu.ContextMenu) => {
menu.defaultSection().appendItem('Item', () => {
alert('Item clicked');
}, {jslogContext: 'item'});
}}
jslogContext="my-menu-button"
></devtools-menu-button>
`,
menuButtonSection);
}
{
let checked = true;
const simpleItemMenuSection = document.querySelector('#simple-items');
simpleItemMenuSection?.addEventListener('contextmenu', onSimpleMenu.bind(this));
function onSimpleMenu(event: Event) {
const simpleMenu = new UI.ContextMenu.ContextMenu(event);
// Regular item
simpleMenu.defaultSection().appendItem('Regular item', () => {
alert('Regular item clicked ');
}, {jslogContext: 'regular-item'});
// Disabled item
simpleMenu.defaultSection().appendItem('Disabled item', () => {
alert('Will not be printed');
}, {jslogContext: 'disabled-item', disabled: true});
// Experimental item
simpleMenu.defaultSection().appendItem('Experimental item', () => {
alert('Experimental item clicked');
}, {jslogContext: 'experimental-item', isPreviewFeature: true});
// Separator
simpleMenu.defaultSection().appendSeparator();
// Checkbox item
simpleMenu.defaultSection().appendCheckboxItem('Checkbox item', () => {
alert('Checkbox item clicked');
checked = !checked;
}, {checked, jslogContext: 'checkbox-item'});
void simpleMenu.show();
}
}
{
const customSectionMenuSection = document.querySelector('#custom-section');
customSectionMenuSection?.addEventListener('contextmenu', onCustomSectionMenu.bind(this));
function onCustomSectionMenu(event: Event) {
const customSectionMenu = new UI.ContextMenu.ContextMenu(event);
// First custom section
const customSection = customSectionMenu.section('Custom section');
customSection.appendItem('Section inner item 1', () => {/* ... */}, {jslogContext: 'my-inner-item-1'});
customSection.appendItem('Section inner item 2', () => {/* ... */}, {jslogContext: 'my-inner-item-2'});
// Second custom section
const customSection2 = customSectionMenu.section('Custom section 2');
customSection2.appendItem('Section inner item 1', () => {/* ... */}, {jslogContext: 'my-inner-item-3'});
void customSectionMenu.show();
}
}
{
const subMenuSection = document.querySelector('#sub-menu');
subMenuSection?.addEventListener('contextmenu', onCustomSectionMenu.bind(this));
function onCustomSectionMenu(event: Event) {
const subMenuMenu = new UI.ContextMenu.ContextMenu(event);
const subMenu =
subMenuMenu.defaultSection().appendSubMenuItem('Item to open sub menu', /* disabled */ false, 'my-sub-menu');
subMenu.defaultSection().appendItem('Sub menu inner item 1', () => {/* ... */}, {jslogContext: 'my-inner-item-1'});
subMenu.defaultSection().appendItem('Sub menu inner item 2', () => {/* ... */}, {jslogContext: 'my-inner-item-2'});
void subMenuMenu.show();
}
}