<!--
@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="../../../behaviors/fire-behavior/fire-behavior.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-diff-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-click="_handleCancelDiff">
            Cancel
        </gr-button>
        <gr-button
            id="saveButton"
            link primary
            on-click="_handleSaveDiffPreferences"
            disabled$="[[!_diffPrefsChanged]]">
            Save
        </gr-button>
      </div>
    </gr-overlay>
  </template>
  <script src="gr-diff-preferences-dialog.js"></script>
</dom-module>
