// 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 Lit from '../lit/lit.js';
import {ContextMenu} from './legacy.js';
const {html} = Lit;
export function render(container: HTMLElement) {
const menuDocs = container.createChild('div', 'menu-docs');
const style = document.createElement('style');
style.textContent = `
.menu-docs > div {
width: var(--sys-size-34);
padding: var(--sys-size-11);
display: flex;
align-items: center;
flex-wrap: wrap;
gap: var(--sys-size-5);
background-color: var(--sys-color-neutral-container);
border-radius: var(--sys-shape-corner-medium);
text-align: center;
p {
vertical-align: middle;
}
}
`;
menuDocs.appendChild(style);
const menuButtonSection = document.createElement('div');
const menuButtonHeader = document.createElement('header');
menuButtonHeader.textContent = 'DevTools menu button (lit-html)';
menuDocs.appendChild(menuButtonHeader);
menuDocs.appendChild(menuButtonSection);
Lit.render(
html`
Right-click here
'; const simpleItemsHeader = document.createElement('header'); simpleItemsHeader.textContent = 'Various simple menu items (imperative API)'; menuDocs.appendChild(simpleItemsHeader); menuDocs.appendChild(simpleItemsSection); let checked = true; simpleItemsSection.addEventListener('contextmenu', onSimpleMenu); function onSimpleMenu(event: Event) { const simpleMenu = new 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 customSection = document.createElement('div'); customSection.innerHTML = 'Right-click here
'; const customSectionHeader = document.createElement('header'); customSectionHeader.textContent = 'Custom sections (imperative API)'; menuDocs.appendChild(customSectionHeader); menuDocs.appendChild(customSection); customSection.addEventListener('contextmenu', onCustomSectionMenu); function onCustomSectionMenu(event: Event) { const customSectionMenu = new 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.createElement('div'); subMenuSection.innerHTML = 'Right-click here
'; const subMenuHeader = document.createElement('header'); subMenuHeader.textContent = 'Sub menu (imperative API)'; menuDocs.appendChild(subMenuHeader); menuDocs.appendChild(subMenuSection); subMenuSection.addEventListener('contextmenu', onSubMenu); function onSubMenu(event: Event) { const subMenuMenu = new 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(); } }