blob: c659aeddbb3111a842ae6291483630422bab4116 [file] [log] [blame]
// Copyright 2022 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_menu_selector/cr_menu_selector.js';
import 'chrome://resources/cr_elements/cr_nav_menu_item_style.css.js';
import 'chrome://resources/cr_elements/icons.html.js';
import 'chrome://resources/polymer/v3_0/iron-icon/iron-icon.js';
import './shared_style.css.js';
import './icons.html.js';
import {CrMenuSelector} from 'chrome://resources/cr_elements/cr_menu_selector/cr_menu_selector.js';
import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
import {Page, Route, RouteObserverMixin, Router, UrlParam} from './router.js';
import {getTemplate} from './side_bar.html.js';
export interface PasswordManagerSideBarElement {
$: {
'menu': CrMenuSelector,
};
}
export class PasswordManagerSideBarElement extends RouteObserverMixin
(PolymerElement) {
static get is() {
return 'password-manager-side-bar';
}
static get template() {
return getTemplate();
}
static get properties() {
return {
// The id of the currently selected page.
selectedPage_: String,
};
}
private selectedPage_: Page;
override currentRouteChanged(route: Route, _: Route): void {
this.selectedPage_ = route.page;
}
private onSelectorActivate_(event: CustomEvent<{selected: Page}>) {
Router.getInstance().navigateTo(event.detail.selected);
if (event.detail.selected === Page.CHECKUP) {
const params = new URLSearchParams();
params.set(UrlParam.START_CHECK, 'true');
Router.getInstance().updateRouterParams(params);
}
}
private getSelectedPage_(): string {
switch (this.selectedPage_) {
case Page.CHECKUP_DETAILS:
return Page.CHECKUP;
case Page.PASSWORD_DETAILS:
return Page.PASSWORDS;
default:
return this.selectedPage_;
}
}
/**
* Prevent clicks on sidebar items from navigating. These are only links for
* accessibility purposes, taps are handled separately by <iron-selector>.
*/
private onItemClick_(e: Event) {
e.preventDefault();
}
}
declare global {
interface HTMLElementTagNameMap {
'password-manager-side-bar': PasswordManagerSideBarElement;
}
}
customElements.define(
PasswordManagerSideBarElement.is, PasswordManagerSideBarElement);