blob: 2ea8ff853a6c0f0ce8257eeb812b66192bd45fac [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import {html} from '//resources/lit/v3_0/lit.rollup.js';
import type {TabData} from '../tab_data.js';
import type {DeclutterPageElement} from './declutter_page.js';
enum DeclutterType {
STALE_TABS = 0,
DUPLICATE_TABS = 1,
}
export function getHtml(this: DeclutterPageElement) {
return html`<!--_html_template_start_-->
<div id="declutterPage">
<div id="header">
${
this.showBackButton ? html`
<cr-icon-button
aria-label="${this.getBackButtonAriaLabel_()}"
iron-icon="cr:arrow-back"
@click="${this.onBackClick_}">
</cr-icon-button>
` :
''}
${
this.dedupeEnabled ? html`
<div class="title">$i18n{declutterTitle}</div>
` :
html`
<div class="header-text">
<div class="title">$i18n{declutterInactiveTitleNoDedupe}</div>
${this.staleTabDatas_.length === 0 ? '' : html`
<div class="subheading">$i18n{declutterInactiveBody}</div>
`}
</div>
`}
</div>
${
(this.staleTabDatas_.length === 0 &&
this.duplicateTabDatas_.length === 0) ?
html`
<div class="empty-content">
<div class="empty-title">$i18n{declutterEmptyTitle}</div>
<div class="empty-subheading">${
this.dedupeEnabled ?
html`$i18n{declutterEmptyBody}` :
html`$i18n{declutterEmptyBodyNoDedupe}`}</div>
</div>
` :
html`
<div id="scrollable">
${
this.staleTabDatas_.length > 0 ?
html`
<div class="card">
${
this.dedupeEnabled ? html`
<div class="header-text">
<div class="title">$i18n{declutterInactiveTitle}</div>
<div class="subheading">$i18n{declutterInactiveBody}</div>
</div>
` :
''}
<div id="staleTabList" class="tab-list">
${
this.staleTabDatas_.map(
(item) => getTabSearchItem.bind(this)(
item, DeclutterType.STALE_TABS))}
</div>
</div>
` :
''}
${
this.dedupeEnabled && this.duplicateTabDatas_.length > 0 ?
html`
<div class="card">
<div class="header-text">
<div class="title">$i18n{declutterDuplicateTitle}</div>
<div class="subheading">$i18n{declutterDuplicateBody}</div>
</div>
<div id="duplicateTabList" class="tab-list">
${
this.duplicateTabDatas_.map(
(item) => getTabSearchItem.bind(this)(
item, DeclutterType.DUPLICATE_TABS))}
</div>
</div>
` :
''}
</div>
<cr-button class="action-button" @click="${this.onCloseTabsClick_}">
$i18n{closeTabs}
</cr-button>
`}
</div><!--_html_template_end_-->`;
}
function getTabSearchItem(
this: DeclutterPageElement, data: TabData, declutterType: DeclutterType) {
return html`
<tab-search-item class="mwb-list-item" .data="${data}"
close-button-icon="tab-search:remove"
close-button-aria-label=
"${this.getCloseButtonAriaLabel_(data)}"
close-button-tooltip="${this.getCloseButtonTooltip_()}"
role="option"
@keydown="${this.onTabKeyDown_}"
@close="${
declutterType === DeclutterType.STALE_TABS ? this.onStaleTabExclude_ :
this.onDuplicateTabExclude_}"
@focus="${this.onTabFocus_}"
@blur="${this.onTabBlur_}"
size=${this.dedupeEnabled ? 'compact' : 'medium'}
hide-url>
</tab-search-item>
`;
}