Files
react-native-devtools-frontend/front_end/panels/issues/HiddenIssuesRow.ts
T
Tim van der Lippe 965289a90b Migrate to private class members in panels/issues/
R=szuend@chromium.org

Bug: 1222126
Change-Id: I80190d4d6257a9620f099e1d1711e50a7d206387
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3342108
Auto-Submit: Tim Van der Lippe <tvanderlippe@chromium.org>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Commit-Queue: Simon Zünd <szuend@chromium.org>
2021-12-15 16:59:53 +00:00

64 lines
2.2 KiB
TypeScript

// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import * as i18n from '../../core/i18n/i18n.js';
import * as IssuesManager from '../../models/issues_manager/issues_manager.js';
import * as Adorners from '../../ui/components/adorners/adorners.js';
import * as UI from '../../ui/legacy/legacy.js';
const UIStrings = {
/**
* @description Title for the hidden issues row
*/
hiddenIssues: 'Hidden issues',
/**
* @description Label for the button to unhide all hidden issues
*/
unhideAll: 'Unhide all',
};
const str_ = i18n.i18n.registerUIStrings('panels/issues/HiddenIssuesRow.ts', UIStrings);
const i18nString = i18n.i18n.getLocalizedString.bind(undefined, str_);
export class HiddenIssuesRow extends UI.TreeOutline.TreeElement {
#numHiddenAggregatedIssues: HTMLElement;
constructor() {
super(undefined, true);
this.#numHiddenAggregatedIssues = document.createElement('span');
this.toggleOnClick = true;
this.listItemElement.classList.add('issue-category', 'hidden-issues');
this.childrenListElement.classList.add('hidden-issues-body');
this.#appendHeader();
}
#appendHeader(): void {
const unhideAllIssuesBtn = UI.UIUtils.createTextButton(
i18nString(UIStrings.unhideAll),
(): void => IssuesManager.IssuesManager.IssuesManager.instance().unhideAllIssues(),
'unhide-all-issues-button',
);
const countAdorner = new Adorners.Adorner.Adorner();
countAdorner.data = {
name: 'countWrapper',
content: this.#numHiddenAggregatedIssues,
};
countAdorner.classList.add('aggregated-issues-count');
this.#numHiddenAggregatedIssues.textContent = '0';
const header = document.createElement('div');
const title = document.createElement('div');
header.classList.add('header');
title.classList.add('title');
title.textContent = i18nString(UIStrings.hiddenIssues);
header.appendChild(countAdorner);
header.appendChild(title);
header.appendChild(unhideAllIssuesBtn);
this.listItemElement.appendChild(header);
}
update(count: number): void {
this.#numHiddenAggregatedIssues.textContent = `${count}`;
}
}