Skip to content

Commit d45fb6c

Browse files
danilsomsikovDevtools-frontend LUCI CQ
authored andcommitted
Use <devtools-new-data-grid> in the BounceTrackingMitigationView
To make it work properly add an `inline` attribute and use it here and in other inline data grids. Bug: 390346490 Change-Id: I0940dc962a6027936309aadfc85c0fe9211b4dc6 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6207688 Commit-Queue: Danil Somsikov <[email protected]> Reviewed-by: Benedikt Meurer <[email protected]>
1 parent c18a9e9 commit d45fb6c

File tree

8 files changed

+40
-47
lines changed

8 files changed

+40
-47
lines changed

front_end/panels/application/components/BounceTrackingMitigationsView.test.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,23 @@
55
import {getValuesOfAllBodyRows} from '../../../testing/DataGridHelpers.js';
66
import {
77
dispatchClickEvent,
8-
getElementWithinComponent,
98
renderElementIntoDOM,
109
} from '../../../testing/DOMHelpers.js';
1110
import {createTarget} from '../../../testing/EnvironmentHelpers.js';
1211
import {
1312
describeWithMockConnection,
1413
setMockConnectionResponseHandler,
1514
} from '../../../testing/MockConnection.js';
16-
import * as DataGrid from '../../../ui/components/data_grid/data_grid.js';
1715
import * as RenderCoordinator from '../../../ui/components/render_coordinator/render_coordinator.js';
1816

1917
import * as ApplicationComponents from './components.js';
2018

2119
async function renderBounceTrackingMitigationsView():
2220
Promise<ApplicationComponents.BounceTrackingMitigationsView.BounceTrackingMitigationsView> {
2321
const component = new ApplicationComponents.BounceTrackingMitigationsView.BounceTrackingMitigationsView();
22+
component.style.display = 'block';
23+
component.style.width = '640px';
24+
component.style.height = '480px';
2425
renderElementIntoDOM(component);
2526

2627
// The data-grid's renderer is scheduled, so we need to wait until the coordinator
@@ -32,9 +33,7 @@ async function renderBounceTrackingMitigationsView():
3233

3334
function getInternalDataGridShadowRoot(
3435
component: ApplicationComponents.BounceTrackingMitigationsView.BounceTrackingMitigationsView): ShadowRoot {
35-
const dataGridController = getElementWithinComponent(
36-
component, 'devtools-data-grid-controller', DataGrid.DataGridController.DataGridController);
37-
const dataGrid = getElementWithinComponent(dataGridController, 'devtools-data-grid', DataGrid.DataGrid.DataGrid);
36+
const dataGrid = component.shadowRoot!.querySelector('devtools-new-data-grid')!;
3837
assert.isNotNull(dataGrid.shadowRoot);
3938
return dataGrid.shadowRoot;
4039
}
@@ -48,7 +47,7 @@ describeWithMockConnection('BounceTrackingMitigationsView', () => {
4847
const component = await renderBounceTrackingMitigationsView();
4948
await RenderCoordinator.done();
5049

51-
const nullGridElement = component.shadowRoot!.querySelector('devtools-data-grid-controller');
50+
const nullGridElement = component.shadowRoot!.querySelector('devtools-new-data-grid');
5251
assert.isNull(nullGridElement);
5352

5453
const sections = component.shadowRoot!.querySelectorAll('devtools-report-section');
@@ -68,7 +67,7 @@ describeWithMockConnection('BounceTrackingMitigationsView', () => {
6867
const component = await renderBounceTrackingMitigationsView();
6968
await RenderCoordinator.done();
7069

71-
const nullGridElement = component.shadowRoot!.querySelector('devtools-data-grid-controller');
70+
const nullGridElement = component.shadowRoot!.querySelector('devtools-new-data-grid');
7271
assert.isNull(nullGridElement);
7372

7473
const sections = component.shadowRoot!.querySelectorAll('devtools-report-section');
@@ -100,7 +99,7 @@ describeWithMockConnection('BounceTrackingMitigationsView', () => {
10099

101100
await RenderCoordinator.done();
102101

103-
const nullGridElement = component.shadowRoot!.querySelector('devtools-data-grid-controller');
102+
const nullGridElement = component.shadowRoot!.querySelector('devtools-new-data-grid');
104103
assert.isNull(nullGridElement);
105104

106105
const sections = component.shadowRoot!.querySelectorAll('devtools-report-section');

front_end/panels/application/components/BounceTrackingMitigationsView.ts

Lines changed: 13 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
// found in the LICENSE file.
44

55
import '../../../ui/components/report_view/report_view.js';
6+
import '../../../ui/legacy/components/data_grid/data_grid.js';
67

78
import * as i18n from '../../../core/i18n/i18n.js';
89
import type * as Platform from '../../../core/platform/platform.js';
910
import * as SDK from '../../../core/sdk/sdk.js';
1011
import * as Buttons from '../../../ui/components/buttons/buttons.js';
1112
import * as ChromeLink from '../../../ui/components/chrome_link/chrome_link.js';
12-
import * as DataGrid from '../../../ui/components/data_grid/data_grid.js';
1313
import * as LegacyWrapper from '../../../ui/components/legacy_wrapper/legacy_wrapper.js';
1414
import * as LitHtml from '../../../ui/lit-html/lit-html.js';
1515
import * as VisualLogging from '../../../ui/visual_logging/visual_logging.js';
@@ -124,7 +124,7 @@ export class BounceTrackingMitigationsView extends LegacyWrapper.LegacyWrapper.W
124124
<devtools-report-section>
125125
${this.#renderForceRunButton()}
126126
</devtools-report-section>
127-
${this.#renderDeletedSitesOrNoSitesMessage()}
127+
${this.#renderDeletedSitesOrNoSitesMessage()}
128128
<devtools-report-divider>
129129
</devtools-report-divider>
130130
<devtools-report-section>
@@ -176,29 +176,20 @@ export class BounceTrackingMitigationsView extends LegacyWrapper.LegacyWrapper.W
176176
// clang-format on
177177
}
178178

179-
const gridData: DataGrid.DataGridController.DataGridControllerData = {
180-
columns: [
181-
{
182-
id: 'sites',
183-
title: i18nString(UIStrings.stateDeletedFor),
184-
widthWeighting: 10,
185-
hideable: false,
186-
visible: true,
187-
sortable: true,
188-
},
189-
],
190-
rows: this.#buildRowsFromDeletedSites(),
191-
initialSort: {
192-
columnId: 'sites',
193-
direction: DataGrid.DataGridUtils.SortDirection.ASC,
194-
},
195-
};
196-
197179
// clang-format off
198180
return html`
199181
<devtools-report-section>
200-
<devtools-data-grid-controller .data=${gridData}>
201-
</devtools-data-grid-controller>
182+
<devtools-new-data-grid striped inline>
183+
<table>
184+
<tr>
185+
<th id="sites" weight="10" sortable>
186+
${i18nString(UIStrings.stateDeletedFor)}
187+
</th>
188+
</tr>
189+
${this.#trackingSites.map(site => html`
190+
<tr><td>${site}</td></tr>`)}
191+
</table>
192+
</devtools-new-data-grid>
202193
</devtools-report-section>
203194
`;
204195
// clang-format on
@@ -229,15 +220,6 @@ export class BounceTrackingMitigationsView extends LegacyWrapper.LegacyWrapper.W
229220
void this.#render();
230221
}
231222

232-
#buildRowsFromDeletedSites(): DataGrid.DataGridUtils.Row[] {
233-
const trackingSites = this.#trackingSites;
234-
return trackingSites.map(site => ({
235-
cells: [
236-
{columnId: 'sites', value: site},
237-
],
238-
}));
239-
}
240-
241223
async #checkFeatureState(): Promise<void> {
242224
this.#checkedFeature = true;
243225

front_end/panels/application/components/InterestGroupAccessGrid.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ export class InterestGroupAccessGrid extends HTMLElement {
8787
}
8888

8989
return html`
90-
<devtools-new-data-grid @select=${this.#onSelect} striped>
90+
<devtools-new-data-grid @select=${this.#onSelect} striped inline>
9191
<table>
9292
<tr>
9393
<th id="event-time" sortable weight="10">${i18nString(UIStrings.eventTime)}</td>

front_end/panels/application/components/TrustTokensView.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ export class TrustTokensView extends LegacyWrapper.LegacyWrapper.WrappableCompon
102102

103103
// clang-format off
104104
return html`
105-
<devtools-new-data-grid striped>
105+
<devtools-new-data-grid striped inline>
106106
<table>
107107
<tr>
108108
<th id="issuer" weight="10" sortable>${i18nString(UIStrings.issuer)}</th>

front_end/panels/application/components/bounceTrackingMitigationsView.css

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
* Use of this source code is governed by a BSD-style license that can be
44
* found in the LICENSE file.
55
*/
6-
devtools-data-grid-controller {
7-
border: 1px solid var(--sys-color-divider);
6+
devtools-new-data-grid {
87
margin-top: 0;
98
}
109

front_end/panels/application/components/interestGroupAccessGrid.css

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
devtools-new-data-grid {
1515
margin-top: 20px;
16-
height: 200px;
1716
}
1817

1918
.info-icon {

front_end/panels/application/components/trustTokensView.css

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414

1515
devtools-new-data-grid {
1616
margin-top: 20px;
17-
height: 240px;
1817

1918
& devtools-button {
2019
width: 14px;

front_end/ui/legacy/components/data_grid/DataGridElement.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,15 @@ const DUMMY_COLUMN_ID = 'dummy'; // SortableDataGrid.create requires at least o
4040
* @prop filters
4141
*/
4242
class DataGridElement extends HTMLElement {
43-
static readonly observedAttributes = ['striped', 'name'];
43+
static readonly observedAttributes = ['striped', 'name', 'inline'];
4444

4545
#dataGrid = SortableDataGrid.create([DUMMY_COLUMN_ID], [], '') as SortableDataGrid<DataGridElementNode>;
4646
#mutationObserver = new MutationObserver(this.#onChange.bind(this));
47-
#resizeObserver = new ResizeObserver(() => this.#dataGrid.onResize());
47+
#resizeObserver = new ResizeObserver(() => {
48+
if (!this.inline) {
49+
this.#dataGrid.onResize();
50+
}
51+
});
4852
#shadowRoot: ShadowRoot;
4953
#columnsOrder: string[] = [];
5054
#hideableColumns = new Set<string>();
@@ -103,6 +107,9 @@ class DataGridElement extends HTMLElement {
103107
case 'name':
104108
this.#dataGrid.displayName = newValue ?? '';
105109
break;
110+
case 'inline':
111+
this.#dataGrid.renderInline();
112+
break;
106113
}
107114
}
108115

@@ -114,6 +121,14 @@ class DataGridElement extends HTMLElement {
114121
return this.hasAttribute('striped');
115122
}
116123

124+
set inline(striped: boolean) {
125+
this.toggleAttribute('inline', striped);
126+
}
127+
128+
get inline(): boolean {
129+
return this.hasAttribute('inline');
130+
}
131+
117132
set displayName(displayName: string) {
118133
this.setAttribute('name', displayName);
119134
}

0 commit comments

Comments
 (0)