blob: 556f0478f1cb2ca9205bb7ee270ca50e5c7277f6 [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 './shared_style.css.js';
import 'chrome://resources/cr_elements/cr_drawer/cr_drawer.js';
import 'chrome://resources/cr_elements/cr_toolbar/cr_toolbar.js';
import {CrToolbarElement} from 'chrome://resources/cr_elements/cr_toolbar/cr_toolbar.js';
import {CrToolbarSearchFieldElement} from 'chrome://resources/cr_elements/cr_toolbar/cr_toolbar_search_field.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 './toolbar.html.js';
export interface PasswordManagerToolbarElement {
$: {
mainToolbar: CrToolbarElement,
};
}
export class PasswordManagerToolbarElement extends RouteObserverMixin
(PolymerElement) {
static get is() {
return 'password-manager-toolbar';
}
static get template() {
return getTemplate();
}
static get properties() {
return {
narrow: Boolean,
};
}
narrow: boolean;
override currentRouteChanged(newRoute: Route, _oldRoute: Route): void {
this.updateSearchTerm(newRoute.queryParameters);
}
get searchField(): CrToolbarSearchFieldElement {
return this.$.mainToolbar.getSearchField();
}
private onSearchChanged_(event: CustomEvent<string>) {
const newParams = Router.getInstance().currentRoute.queryParameters;
if (event.detail) {
newParams.set(UrlParam.SEARCH_TERM, event.detail);
// Switch to passwords page, since search is supported only on passwords.
Router.getInstance().navigateTo(Page.PASSWORDS);
} else {
newParams.delete(UrlParam.SEARCH_TERM);
}
Router.getInstance().updateRouterParams(newParams);
}
private updateSearchTerm(query: URLSearchParams) {
const searchTerm = query.get(UrlParam.SEARCH_TERM) || '';
if (searchTerm !== this.searchField.getValue()) {
this.searchField.setValue(searchTerm);
}
}
}
declare global {
interface HTMLElementTagNameMap {
'password-manager-toolbar': PasswordManagerToolbarElement;
}
}
customElements.define(
PasswordManagerToolbarElement.is, PasswordManagerToolbarElement);