| // Copyright 2015 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| import 'chrome://resources/cr_elements/cr_icons.css.js'; |
| import 'chrome://resources/cr_elements/cr_hidden_style.css.js'; |
| import 'chrome://resources/polymer/v3_0/iron-selector/iron-selector.js'; |
| import 'chrome://resources/polymer/v3_0/paper-ripple/paper-ripple.js'; |
| import 'chrome://resources/polymer/v3_0/paper-styles/color.js'; |
| |
| import {IronSelectorElement} from 'chrome://resources/polymer/v3_0/iron-selector/iron-selector.js'; |
| import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; |
| |
| import {navigation, Page} from './navigation_helper.js'; |
| import {getTemplate} from './sidebar.html.js'; |
| |
| export interface ExtensionsSidebarElement { |
| $: { |
| sectionMenu: IronSelectorElement, |
| sectionsExtensions: HTMLElement, |
| sectionsShortcuts: HTMLElement, |
| }; |
| } |
| |
| export class ExtensionsSidebarElement extends PolymerElement { |
| static get is() { |
| return 'extensions-sidebar'; |
| } |
| |
| static get template() { |
| return getTemplate(); |
| } |
| |
| static get properties() { |
| return { |
| enableEnhancedSiteControls: Boolean, |
| }; |
| } |
| |
| enableEnhancedSiteControls: boolean; |
| |
| override ready() { |
| super.ready(); |
| this.setAttribute('role', 'navigation'); |
| } |
| |
| override connectedCallback() { |
| super.connectedCallback(); |
| |
| const page = navigation.getCurrentPage().page; |
| let selectIndex = 0; |
| if (page === Page.SITE_PERMISSIONS || |
| page === Page.SITE_PERMISSIONS_ALL_SITES) { |
| selectIndex = 1; |
| } else if (page === Page.SHORTCUTS) { |
| selectIndex = 2; |
| } |
| this.$.sectionMenu.select(selectIndex); |
| } |
| |
| private onLinkTap_(e: Event) { |
| e.preventDefault(); |
| navigation.navigateTo( |
| {page: ((e.target as HTMLElement).dataset['path'] as Page)}); |
| this.dispatchEvent( |
| new CustomEvent('close-drawer', {bubbles: true, composed: true})); |
| } |
| |
| private onMoreExtensionsTap_() { |
| chrome.metricsPrivate.recordUserAction('Options_GetMoreExtensions'); |
| } |
| } |
| |
| declare global { |
| interface HTMLElementTagNameMap { |
| 'extensions-sidebar': ExtensionsSidebarElement; |
| } |
| } |
| |
| customElements.define(ExtensionsSidebarElement.is, ExtensionsSidebarElement); |