| <style include="cr-shared-style settings-shared iron-flex"> |
| iron-icon, |
| #progressSpinner { |
| --paper-spinner-stroke-width: 2px; |
| height: 1.6em; |
| padding-inline-end: 20px; |
| width: 1.6em; |
| } |
| |
| iron-icon.has-leaks { |
| --iron-icon-fill-color: var(--google-red-600); |
| background: radial-gradient(circle 1.1em at 1.1em, |
| #FCE8E6 100%, |
| transparent 100%); |
| margin-inline-end: 16px; |
| margin-inline-start: -4px; |
| padding-bottom: 0.5em; |
| padding-inline-end: 0.4em; |
| padding-inline-start: 0.3em; |
| padding-top: 0.3em; |
| } |
| |
| @media (prefers-color-scheme: dark) { |
| iron-icon.has-leaks { |
| --iron-icon-fill-color: var(--google-red-refresh-300); |
| background: radial-gradient(circle 1.1em at 1.1em, |
| var(--google-grey-900) 100%, |
| transparent 100%); |
| } |
| } |
| |
| iron-icon.no-leaks { |
| --iron-icon-fill-color: var(--google-blue-600); |
| background-size: 16px 16px; |
| } |
| |
| iron-icon.hidden { |
| display: none; |
| } |
| |
| #leakCheckHeader { |
| border-bottom: var(--cr-separator-line); |
| } |
| |
| #bannerImage { |
| width: 100%; |
| } |
| |
| </style> |
| <!-- The banner is visible if no compromised password was found (yet). --> |
| <template is="dom-if" if="[[shouldShowBanner_(status, leakedPasswords)]]"> |
| <picture> |
| <source srcset="[[bannerImageSrc_(1, status)]]" |
| media="(prefers-color-scheme: dark)"> |
| <img id="bannerImage" src="[[bannerImageSrc_(0, status)]]" alt=""> |
| </picture> |
| </template> |
| |
| <!-- The header showing progress or result of the check--> |
| <div class="cr-row first two-line" id="leakCheckHeader"> |
| <!-- If the password check concluded, show only a status Icon. --> |
| <template is="dom-if" if="[[!isCheckInProgress_(status)]]"> |
| <iron-icon class$="[[getStatusIconClass_(status, leakedPasswords)]]" |
| icon="[[getStatusIcon_(status, leakedPasswords)]]"> |
| </iron-icon> |
| </template> |
| |
| <!-- Show a loader instead of an icon if passwords are still checked. --> |
| <template is="dom-if" if="[[isCheckInProgress_(status)]]"> |
| <paper-spinner-lite id="progressSpinner" active> |
| </paper-spinner-lite> |
| </template> |
| |
| <div class="flex cr-padded-text"> |
| <div id="titleRow"> |
| <span id="title" inner-h-t-m-l="[[title_]]"></span> |
| <span class="secondary inline" id="lastCompletedCheck" |
| hidden$="[[!showsTimestamp_(status)]]"> |
| • [[status.elapsedTimeSinceLastCheck]] |
| </span> |
| </div> |
| <div class="secondary" id="subtitle" |
| hidden$="[[!showsPasswordsCount_(status, leakedPasswords)]]"> |
| [[compromisedPasswordsCount]] |
| </div> |
| </div> |
| <cr-button id="controlPasswordCheckButton" |
| on-click="onPasswordCheckButtonClick_" |
| class$="[[getButtonTypeClass_(status)]] cr-button-gap" |
| hidden$="[[isButtonHidden_]]"> |
| [[getButtonText_(status)]] |
| </cr-button> |
| </div> |
| <div id="noCompromisedCredentials" |
| class="cr-row first" |
| hidden$="[[!showNoCompromisedPasswordsLabel_]]"> |
| <div class="cr-padded-text secondary"> |
| $i18n{noCompromisedCredentials} |
| </div> |
| </div> |
| <div id="passwordCheckBody" |
| hidden$="[[!hasLeakedCredentials_(leakedPasswords)]]"> |
| <div class="cr-row first"> |
| <h2>$i18n{compromisedPasswords}</h2> |
| </div> |
| <div class="list-frame vertical-list"> |
| <div class="list-item secondary"> |
| $i18n{compromisedPasswordsDescription} |
| </div> |
| </div> |
| <div class="list-frame first"> |
| <iron-list id="leakedPasswordList" items="[[leakedPasswords]]"> |
| <template> |
| <password-check-list-item item="[[item]]" |
| on-more-actions-click="onMoreActionsClick_" |
| clicked-change-password= |
| "[[clickedChangePassword_(item, clickedChangePasswordIds_.size)]]" |
| on-change-password-clicked="onChangePasswordClick_" |
| <if expr="chromeos"> |
| token-request-manager="[[tokenRequestManager_]]" |
| </if> |
| on-already-changed-password-click="onAlreadyChangedClick_"> |
| </password-check-list-item> |
| </template> |
| </iron-list> |
| </div> |
| </div> |
| <cr-action-menu id="moreActionsMenu" role-description="$i18n{menu}"> |
| <button id="menuShowPassword" class="dropdown-item" |
| on-click="onMenuShowPasswordClick_"> |
| [[showHideMenuTitle_]] |
| </button> |
| <button id="menuEditPassword" class="dropdown-item" |
| on-click="onEditPasswordClick_"> |
| $i18n{editPassword} |
| </button> |
| <button id="menuRemovePassword" class="dropdown-item" |
| on-click="onMenuRemovePasswordClick_"> |
| $i18n{removeCompromisedPassword} |
| </button> |
| </cr-action-menu> |
| <template is="dom-if" if="[[showPasswordEditDialog_]]" restamp> |
| <settings-password-check-edit-dialog |
| on-close="onPasswordEditDialogClosed_" item="[[activePassword_]]"> |
| </setiings-password-check-edit-dialog> |
| </template> |
| <template is="dom-if" if="[[showPasswordRemoveDialog_]]" restamp> |
| <settings-password-remove-confirmation-dialog |
| on-close="onPasswordRemoveDialogClosed_" item="[[activePassword_]]"> |
| </settings-password-remove-confirmation-dialog> |
| </template> |
| <template is="dom-if" if="[[showPasswordEditDisclaimer_]]" restamp> |
| <settings-password-edit-disclaimer-dialog |
| on-edit-password-click="onEditPasswordClick_" |
| origin="[[activePassword_.formattedOrigin]]" |
| on-close="onEditDisclaimerClosed_"> |
| </settings-password-edit-disclaimer-dialog> |
| </template> |
| <if expr="chromeos"> |
| <template is="dom-if" if="[[showPasswordPromptDialog_]]" restamp> |
| <settings-password-prompt-dialog on-token-obtained="onTokenObtained_" |
| on-close="onPasswordPromptClosed_"> |
| </settings-password-prompt-dialog> |
| </template> |
| </if> |