diff options
Diffstat (limited to 'polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog')
2 files changed, 146 insertions, 0 deletions
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog.html b/polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog.html new file mode 100644 index 0000000000..5cff316dda --- /dev/null +++ b/polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog.html @@ -0,0 +1,80 @@ +<!-- +@license +Copyright (C) 2019 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. +--> + +<link rel="import" href="../../../bower_components/polymer/polymer.html"> +<link rel="import" href="../../../styles/shared-styles.html"> +<link rel="import" href="../../shared/gr-button/gr-button.html"> +<link rel="import" href="../../shared/gr-diff-preferences/gr-preferences.html"> +<link rel="import" href="../../shared/gr-overlay/gr-overlay.html"> + +<dom-module id="gr-diff-preferences-dialog"> + <template> + <style include="shared-styles"> + .diffHeader, + .diffActions { + padding: 1em 1.5em; + } + .diffHeader, + .diffActions { + background-color: var(--dialog-background-color); + } + .diffHeader { + border-bottom: 1px solid var(--border-color); + font-weight: var(--font-weight-bold); + } + .diffActions { + border-top: 1px solid var(--border-color); + display: flex; + justify-content: flex-end; + } + .diffPrefsOverlay gr-button { + margin-left: 1em; + } + div.edited:after { + color: var(--deemphasized-text-color); + content: ' *'; + } + #diffPreferences { + display: flex; + padding: .35em 1.5em; + } + </style> + <gr-overlay id="diffPrefsOverlay" with-backdrop> + <div class$="diffHeader [[_computeHeaderClass(_diffPrefsChanged)]]">Diff Preferences</div> + <gr-diff-preferences + id="diffPreferences" + diff-prefs="{{diffPrefs}}" + has-unsaved-changes="{{_diffPrefsChanged}}"></gr-diff-preferences> + <div class="diffActions"> + <gr-button + id="cancelButton" + link + on-tap="_handleCancelDiff"> + Cancel + </gr-button> + <gr-button + id="saveButton" + link primary + on-tap="_handleSaveDiffPreferences" + disabled$="[[!_diffPrefsChanged]]"> + Save + </gr-button> + </div> + </gr-overlay> + </template> + <script src="gr-diff-preferences-dialog.js"></script> +</dom-module> diff --git a/polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog.js b/polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog.js new file mode 100644 index 0000000000..b50ef692ad --- /dev/null +++ b/polygerrit-ui/app/elements/diff/gr-diff-preferences-dialog/gr-diff-preferences-dialog.js @@ -0,0 +1,66 @@ +/** + * @license + * Copyright (C) 2019 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. + */ +(function() { + 'use strict'; + + Polymer({ + is: 'gr-diff-preferences-dialog', + + properties: { + /** @type {?} */ + diffPrefs: Object, + + _diffPrefsChanged: Boolean, + }, + + getFocusStops() { + return { + start: this.$.contextSelect, + end: this.$.saveButton, + }; + }, + + resetFocus() { + this.$.contextSelect.focus(); + }, + + _computeHeaderClass(changed) { + return changed ? 'edited' : ''; + }, + + _handleCancelDiff(e) { + e.stopPropagation(); + this.$.diffPrefsOverlay.close(); + }, + + open() { + this.$.diffPrefsOverlay.open().then(() => { + const focusStops = this.getFocusStops(); + this.$.diffPrefsOverlay.setFocusStops(focusStops); + this.resetFocus(); + }); + }, + + _handleSaveDiffPreferences() { + this.$.diffPreferences.save().then(() => { + this.fire('reload-diff-preference', null, {bubbles: false}); + + this.$.diffPrefsOverlay.close(); + }); + }, + }); +})(); |