// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import './strings.m.js';
import {CustomElement} from 'chrome://resources/js/custom_element.js';
import {loadTimeData} from 'chrome://resources/js/load_time_data.js';
import {getTemplate} from './policy_conflict.html.js';
export interface Conflict {
level: string;
scope: string;
source: string;
value: any;
}
export class PolicyConflictElement extends CustomElement {
static override get template() {
return getTemplate();
}
connectedCallback() {
this.toggleAttribute('hidden', true);
this.setAttribute('role', 'rowgroup');
}
initialize(conflict: Conflict, rowLabel: string) {
this.shadowRoot!.querySelector('.scope')!.textContent =
loadTimeData.getString(
conflict.scope === 'user' ? 'scopeUser' : 'scopeDevice');
this.shadowRoot!.querySelector('.level')!.textContent =
loadTimeData.getString(
conflict.level === 'recommended' ? 'levelRecommended' :
'levelMandatory');
this.shadowRoot!.querySelector('.source')!.textContent =
loadTimeData.getString(conflict.source);
this.shadowRoot!.querySelector('.value')!.textContent =
JSON.stringify(conflict.value);
this.shadowRoot!.querySelector('.name')!.textContent =
loadTimeData.getString(rowLabel);
}
}
declare global {
interface HTMLElementTagNameMap {
'policy-conflict': PolicyConflictElement;
}
}
customElements.define('policy-conflict', PolicyConflictElement);