
This change replace all HTML imports with es6-modules. The only exceptions are: * gr-app.html file, which can be deleted only after updating the gerrit/httpd/raw/PolyGerritIndexHtml.soy file. * dark-theme.html which is loaded via importHref. Must be updated manually later in a separate change. This change was produced automatically by ./es6-modules-converter.sh script. No manual changes were made. Change-Id: I0c447dd8c05757741e2c940720652d01d9fb7d67
295 lines
11 KiB
JavaScript
295 lines
11 KiB
JavaScript
/**
|
|
* @license
|
|
* Copyright (C) 2020 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
import {html} from '@polymer/polymer/lib/utils/html-tag.js';
|
|
|
|
export const htmlTemplate = html`
|
|
<style include="shared-styles">
|
|
:host {
|
|
background-color: var(--view-background-color);
|
|
}
|
|
.hidden {
|
|
display: none;
|
|
}
|
|
gr-patch-range-select {
|
|
display: block;
|
|
}
|
|
gr-diff {
|
|
border: none;
|
|
--diff-container-styles: {
|
|
border-bottom: 1px solid var(--border-color);
|
|
}
|
|
}
|
|
gr-fixed-panel {
|
|
background-color: var(--view-background-color);
|
|
border-bottom: 1px solid var(--border-color);
|
|
z-index: 1;
|
|
}
|
|
header,
|
|
.subHeader {
|
|
align-items: center;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
}
|
|
header {
|
|
padding: var(--spacing-s) var(--spacing-xl);
|
|
border-bottom: 1px solid var(--border-color);
|
|
}
|
|
.changeNumberColon {
|
|
color: transparent;
|
|
}
|
|
.headerSubject {
|
|
margin-right: var(--spacing-m);
|
|
font-weight: var(--font-weight-bold);
|
|
}
|
|
.patchRangeLeft {
|
|
align-items: center;
|
|
display: flex;
|
|
}
|
|
.navLink:not([href]) {
|
|
color: var(--deemphasized-text-color);
|
|
}
|
|
.navLinks {
|
|
align-items: center;
|
|
display: flex;
|
|
white-space: nowrap;
|
|
}
|
|
.navLink {
|
|
padding: 0 var(--spacing-xs);
|
|
}
|
|
.reviewed {
|
|
display: inline-block;
|
|
margin: 0 var(--spacing-xs);
|
|
vertical-align: .15em;
|
|
}
|
|
.jumpToFileContainer {
|
|
display: inline-block;
|
|
}
|
|
.mobile {
|
|
display: none;
|
|
}
|
|
gr-button {
|
|
padding: var(--spacing-s) 0;
|
|
text-decoration: none;
|
|
}
|
|
.loading {
|
|
color: var(--deemphasized-text-color);
|
|
font-family: var(--header-font-family);
|
|
font-size: var(--font-size-h1);
|
|
font-weight: var(--font-weight-h1);
|
|
line-height: var(--line-height-h1);
|
|
height: 100%;
|
|
padding: var(--spacing-l);
|
|
text-align: center;
|
|
}
|
|
.subHeader {
|
|
background-color: var(--background-color-secondary);
|
|
flex-wrap: wrap;
|
|
padding: 0 var(--spacing-l);
|
|
}
|
|
.prefsButton {
|
|
text-align: right;
|
|
}
|
|
.noOverflow {
|
|
display: block;
|
|
overflow: auto;
|
|
}
|
|
.editMode .hideOnEdit {
|
|
display: none;
|
|
}
|
|
.blameLoader,
|
|
.fileNum {
|
|
display: none;
|
|
}
|
|
.blameLoader.show,
|
|
.fileNum.show ,
|
|
.download,
|
|
.preferences,
|
|
.rightControls {
|
|
align-items: center;
|
|
display: flex;
|
|
}
|
|
.diffModeSelector,
|
|
.editButton {
|
|
align-items: center;
|
|
display: flex;
|
|
}
|
|
.diffModeSelector span,
|
|
.editButton span {
|
|
margin-right: var(--spacing-xs);
|
|
}
|
|
.diffModeSelector.hide,
|
|
.separator.hide {
|
|
display: none;
|
|
}
|
|
gr-dropdown-list {
|
|
--trigger-style: {
|
|
text-transform: none;
|
|
}
|
|
}
|
|
.editButtona a {
|
|
text-decoration: none;
|
|
}
|
|
@media screen and (max-width: 50em) {
|
|
header {
|
|
padding: var(--spacing-s) var(--spacing-l);
|
|
}
|
|
.dash {
|
|
display: none;
|
|
}
|
|
.desktop {
|
|
display: none;
|
|
}
|
|
.fileNav {
|
|
align-items: flex-start;
|
|
display: flex;
|
|
margin: 0 var(--spacing-xs);
|
|
}
|
|
.fullFileName {
|
|
display: block;
|
|
font-style: italic;
|
|
min-width: 50%;
|
|
padding: 0 var(--spacing-xxs);
|
|
text-align: center;
|
|
width: 100%;
|
|
word-wrap: break-word;
|
|
}
|
|
.reviewed {
|
|
vertical-align: -1px;
|
|
}
|
|
.mobileNavLink {
|
|
color: var(--primary-text-color);
|
|
font-family: var(--header-font-family);
|
|
font-size: var(--font-size-h2);
|
|
font-weight: var(--font-weight-h2);
|
|
line-height: var(--line-height-h2);
|
|
text-decoration: none;
|
|
}
|
|
.mobileNavLink:not([href]) {
|
|
color: var(--deemphasized-text-color);
|
|
}
|
|
.jumpToFileContainer {
|
|
display: block;
|
|
width: 100%;
|
|
}
|
|
gr-dropdown-list {
|
|
width: 100%;
|
|
--gr-select-style: {
|
|
display: block;
|
|
width: 100%;
|
|
}
|
|
--native-select-style: {
|
|
width: 100%;
|
|
}
|
|
}
|
|
}
|
|
</style>
|
|
<gr-fixed-panel class\$="[[_computeContainerClass(_editMode)]]" floating-disabled="[[_panelFloatingDisabled]]" keep-on-scroll="" ready-for-measure="[[!_loading]]" on-floating-height-changed="_onChangeHeaderPanelHeightChanged">
|
|
<header>
|
|
<div>
|
|
<a href\$="[[_computeChangePath(_change, _patchRange.*, _change.revisions)]]">[[_changeNum]]</a><!--
|
|
--><span class="changeNumberColon">:</span>
|
|
<span class="headerSubject">[[_change.subject]]</span>
|
|
<input id="reviewed" class="reviewed hideOnEdit" type="checkbox" on-change="_handleReviewedChange" hidden\$="[[!_loggedIn]]" hidden=""><!--
|
|
--><div class="jumpToFileContainer">
|
|
<gr-dropdown-list id="dropdown" value="[[_path]]" on-value-change="_handleFileChange" items="[[_formattedFiles]]" initial-count="75">
|
|
</gr-dropdown-list>
|
|
</div>
|
|
</div>
|
|
<div class="navLinks desktop">
|
|
<span class\$="fileNum [[_computeFileNumClass(_fileNum, _formattedFiles)]]">
|
|
File [[_fileNum]] of [[_formattedFiles.length]]
|
|
<span class="separator"></span>
|
|
</span>
|
|
<a class="navLink" title="[[createTitle(Shortcut.PREV_FILE,
|
|
ShortcutSection.NAVIGATION)]]" href\$="[[_computeNavLinkURL(_change, _path, _fileList, -1, 1)]]">
|
|
Prev</a>
|
|
<span class="separator"></span>
|
|
<a class="navLink" title="[[createTitle(Shortcut.UP_TO_CHANGE,
|
|
ShortcutSection.NAVIGATION)]]" href\$="[[_computeChangePath(_change, _patchRange.*, _change.revisions)]]">
|
|
Up</a>
|
|
<span class="separator"></span>
|
|
<a class="navLink" title="[[createTitle(Shortcut.NEXT_FILE,
|
|
ShortcutSection.NAVIGATION)]]" href\$="[[_computeNavLinkURL(_change, _path, _fileList, 1, 1)]]">
|
|
Next</a>
|
|
</div>
|
|
</header>
|
|
<div class="subHeader">
|
|
<div class="patchRangeLeft">
|
|
<gr-patch-range-select id="rangeSelect" change-num="[[_changeNum]]" change-comments="[[_changeComments]]" patch-num="[[_patchRange.patchNum]]" base-patch-num="[[_patchRange.basePatchNum]]" files-weblinks="[[_filesWeblinks]]" available-patches="[[_allPatchSets]]" revisions="[[_change.revisions]]" revision-info="[[_revisionInfo]]" on-patch-range-change="_handlePatchChange">
|
|
</gr-patch-range-select>
|
|
<span class="download desktop">
|
|
<span class="separator"></span>
|
|
<gr-dropdown link="" down-arrow="" items="[[_computeDownloadDropdownLinks(_change.project, _changeNum, _patchRange, _path, _diff)]]" horizontal-align="left">
|
|
<span class="downloadTitle">
|
|
Download
|
|
</span>
|
|
</gr-dropdown>
|
|
</span>
|
|
</div>
|
|
<div class="rightControls">
|
|
<span class\$="blameLoader [[_computeBlameLoaderClass(_isImageDiff, _path)]]">
|
|
<gr-button link="" id="toggleBlame" title="[[createTitle(Shortcut.TOGGLE_BLAME, ShortcutSection.DIFFS)]]" disabled="[[_isBlameLoading]]" on-click="_toggleBlame">[[_computeBlameToggleLabel(_isBlameLoaded, _isBlameLoading)]]</gr-button>
|
|
</span>
|
|
<template is="dom-if" if="[[_computeIsLoggedIn(_loggedIn)]]">
|
|
<span class="separator"></span>
|
|
<span class="editButton">
|
|
<gr-button link="" title="Edit current file" on-click="_goToEditFile">edit</gr-button>
|
|
</span>
|
|
</template>
|
|
<span class="separator"></span>
|
|
<div class\$="diffModeSelector [[_computeModeSelectHideClass(_isImageDiff)]]">
|
|
<span>Diff view:</span>
|
|
<gr-diff-mode-selector id="modeSelect" save-on-change="[[!_diffPrefsDisabled]]" mode="{{changeViewState.diffMode}}"></gr-diff-mode-selector>
|
|
</div>
|
|
<span id="diffPrefsContainer" hidden\$="[[_computePrefsButtonHidden(_prefs, _diffPrefsDisabled)]]" hidden="">
|
|
<span class="preferences desktop">
|
|
<gr-button link="" class="prefsButton" has-tooltip="" title="Diff preferences" on-click="_handlePrefsTap"><iron-icon icon="gr-icons:settings"></iron-icon></gr-button>
|
|
</span>
|
|
</span>
|
|
<gr-endpoint-decorator name="annotation-toggler">
|
|
<span hidden="" id="annotation-span">
|
|
<label for="annotation-checkbox" id="annotation-label"></label>
|
|
<iron-input type="checkbox" disabled="">
|
|
<input is="iron-input" type="checkbox" id="annotation-checkbox" disabled="">
|
|
</iron-input>
|
|
</span>
|
|
</gr-endpoint-decorator>
|
|
</div>
|
|
</div>
|
|
<div class="fileNav mobile">
|
|
<a class="mobileNavLink" href\$="[[_computeNavLinkURL(_change, _path, _fileList, -1, 1)]]">
|
|
<</a>
|
|
<div class="fullFileName mobile">[[computeDisplayPath(_path)]]
|
|
</div>
|
|
<a class="mobileNavLink" href\$="[[_computeNavLinkURL(_change, _path, _fileList, 1, 1)]]">
|
|
></a>
|
|
</div>
|
|
</gr-fixed-panel>
|
|
<div class="loading" hidden\$="[[!_loading]]">Loading...</div>
|
|
<gr-diff-host id="diffHost" hidden="" hidden\$="[[_loading]]" class\$="[[_computeDiffClass(_panelFloatingDisabled)]]" is-image-diff="{{_isImageDiff}}" files-weblinks="{{_filesWeblinks}}" diff="{{_diff}}" change-num="[[_changeNum]]" commit-range="[[_commitRange]]" patch-range="[[_patchRange]]" path="[[_path]]" prefs="[[_prefs]]" project-name="[[_change.project]]" view-mode="[[_diffMode]]" is-blame-loaded="{{_isBlameLoaded}}" on-comment-anchor-tap="_onLineSelected" on-line-selected="_onLineSelected">
|
|
</gr-diff-host>
|
|
<gr-apply-fix-dialog id="applyFixDialog" prefs="[[_prefs]]" change="[[_change]]" change-num="[[_changeNum]]">
|
|
</gr-apply-fix-dialog>
|
|
<gr-diff-preferences-dialog id="diffPreferencesDialog" diff-prefs="{{_prefs}}" on-reload-diff-preference="_handleReloadingDiffPreference">
|
|
</gr-diff-preferences-dialog>
|
|
<gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
|
|
<gr-storage id="storage"></gr-storage>
|
|
<gr-diff-cursor id="cursor" scroll-top-margin="[[_scrollTopMargin]]"></gr-diff-cursor>
|
|
<gr-comment-api id="commentAPI"></gr-comment-api>
|
|
<gr-reporting id="reporting"></gr-reporting>
|
|
`;
|