colorized passwords

This commit is contained in:
Kyle Spearrin 2018-12-08 14:00:18 -05:00
parent 37880c75d1
commit 6c22919bd9
8 changed files with 40 additions and 16 deletions

2
jslib

@ -1 +1 @@
Subproject commit 9283a29d35a18f058f3c84f8aaa919b911f1940a Subproject commit 9694d2922ef033c6c5eead2c7b4a308b6d93bf2f

View File

@ -54,6 +54,7 @@ import { StopClickDirective } from 'jslib/angular/directives/stop-click.directiv
import { StopPropDirective } from 'jslib/angular/directives/stop-prop.directive'; import { StopPropDirective } from 'jslib/angular/directives/stop-prop.directive';
import { TrueFalseValueDirective } from 'jslib/angular/directives/true-false-value.directive'; import { TrueFalseValueDirective } from 'jslib/angular/directives/true-false-value.directive';
import { ColorPasswordPipe } from 'jslib/angular/pipes/color-password.pipe';
import { I18nPipe } from 'jslib/angular/pipes/i18n.pipe'; import { I18nPipe } from 'jslib/angular/pipes/i18n.pipe';
import { SearchCiphersPipe } from 'jslib/angular/pipes/search-ciphers.pipe'; import { SearchCiphersPipe } from 'jslib/angular/pipes/search-ciphers.pipe';
@ -156,6 +157,7 @@ registerLocaleData(localeZhTw, 'zh-TW');
CiphersComponent, CiphersComponent,
CiphersListComponent, CiphersListComponent,
CollectionsComponent, CollectionsComponent,
ColorPasswordPipe,
CurrentTabComponent, CurrentTabComponent,
EnvironmentComponent, EnvironmentComponent,
ExportComponent, ExportComponent,

View File

@ -20,9 +20,8 @@
<div class="box-content-row box-content-row-flex" *ngFor="let h of history"> <div class="box-content-row box-content-row-flex" *ngFor="let h of history">
<div class="row-main"> <div class="row-main">
<div class="row-main-content"> <div class="row-main-content">
<span class="text monospaced no-ellipsis"> <div class="text monospaced password-wrapper no-ellipsis"
{{h.password}} [innerHTML]="h.password | colorPassword"></div>
</span>
<span class="detail">{{h.date | date:'medium'}}</span> <span class="detail">{{h.date | date:'medium'}}</span>
</div> </div>
</div> </div>

View File

@ -11,7 +11,7 @@
</div> </div>
</header> </header>
<content> <content>
<div class="password-block">{{password}}</div> <div class="password-block password-wrapper" [innerHTML]="password | colorPassword"></div>
<div class="box list"> <div class="box list">
<div class="box-content single-line"> <div class="box-content single-line">
<a class="box-content-row text-primary" href="#" appStopClick appBlurClick <a class="box-content-row text-primary" href="#" appStopClick appBlurClick

View File

@ -112,10 +112,6 @@ p.lead {
padding-bottom: 0 !important; padding-bottom: 0 !important;
} }
[hidden] {
display: none !important;
}
.display-block { .display-block {
display: block !important; display: block !important;
} }
@ -134,10 +130,6 @@ p.lead {
border-radius: 6px; border-radius: 6px;
} }
input[type="search"] {
-webkit-appearance: textfield;
}
.sr-only { .sr-only {
position: absolute !important; position: absolute !important;
width: 1px !important; width: 1px !important;
@ -149,6 +141,23 @@ input[type="search"] {
border: 0 !important; border: 0 !important;
} }
.password-wrapper {
display: flex !important;
flex-wrap: wrap;
}
.password-number {
@include themify($themes) {
color: themed('passwordNumberColor');
}
}
.password-special {
@include themify($themes) {
color: themed('passwordSpecialColor');
}
}
#duo-frame { #duo-frame {
background: url('../images/loading.svg') 0 0 no-repeat; background: url('../images/loading.svg') 0 0 no-repeat;
width: 100%; width: 100%;
@ -200,3 +209,7 @@ app-vault-icon {
background-size: 284px 43px; background-size: 284px 43px;
} }
} }
[hidden] {
display: none !important;
}

View File

@ -10,9 +10,13 @@ app-sync {
app-password-generator .password-block { app-password-generator .password-block {
font-size: $font-size-large; font-size: $font-size-large;
word-break: break-all;
font-family: $font-family-monospace; font-family: $font-family-monospace;
text-align: center; text-align: center;
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
text-align: center;
margin: 20px; margin: 20px;
} }

View File

@ -79,6 +79,8 @@ $themes: (
infoColor: $brand-info, infoColor: $brand-info,
warningColor: $brand-warning, warningColor: $brand-warning,
logoSuffix: 'dark', logoSuffix: 'dark',
passwordNumberColor: #007fde,
passwordSpecialColor: #c40800,
), ),
dark: ( dark: (
textColor: #ffffff, textColor: #ffffff,
@ -123,6 +125,8 @@ $themes: (
infoColor: $brand-info, infoColor: $brand-info,
warningColor: $brand-warning, warningColor: $brand-warning,
logoSuffix: 'white', logoSuffix: 'white',
passwordNumberColor: #52bdfb,
passwordSpecialColor: #ff7c70,
), ),
); );

View File

@ -36,8 +36,10 @@
<div class="box-content-row box-content-row-flex" *ngIf="cipher.login.password"> <div class="box-content-row box-content-row-flex" *ngIf="cipher.login.password">
<div class="row-main"> <div class="row-main">
<span class="row-label">{{'password' | i18n}}</span> <span class="row-label">{{'password' | i18n}}</span>
<span [hidden]="showPassword" class="monospaced">{{cipher.login.maskedPassword}}</span> <div [hidden]="showPassword" class="monospaced password-wrapper">
<span [hidden]="!showPassword" class="monospaced">{{cipher.login.password}}</span> {{cipher.login.maskedPassword}}</div>
<div [hidden]="!showPassword" class="monospaced password-wrapper"
[innerHTML]="cipher.login.password | colorPassword"></div>
</div> </div>
<div class="action-buttons"> <div class="action-buttons">
<button type="button" #checkPasswordBtn class="row-btn btn" appBlurClick <button type="button" #checkPasswordBtn class="row-btn btn" appBlurClick