Wallet fixes #5 (3, 5, 6, 7, 9, 10, 11)

This commit is contained in:
wildkif 2019-03-18 17:04:17 +02:00
parent a811ee6367
commit 87be459ccc
24 changed files with 4465 additions and 100 deletions

View file

@ -15,7 +15,7 @@
"BACK": "Go back" "BACK": "Go back"
}, },
"BREADCRUMBS": { "BREADCRUMBS": {
"ADD_WALLET": "Add new wallet", "ADD_WALLET": "Add wallet",
"CREATE_WALLET": "Create new wallet", "CREATE_WALLET": "Create new wallet",
"SAVE_PHRASE": "Save your seed phrase", "SAVE_PHRASE": "Save your seed phrase",
"OPEN_WALLET": "Open existing wallet", "OPEN_WALLET": "Open existing wallet",
@ -30,7 +30,7 @@
}, },
"SIDEBAR": { "SIDEBAR": {
"TITLE": "Wallets", "TITLE": "Wallets",
"ADD_NEW": "+ Add new", "ADD_NEW": "+ Add",
"ACCOUNT": { "ACCOUNT": {
"STAKING": "Staking", "STAKING": "Staking",
"MESSAGES": "New offers/Messages", "MESSAGES": "New offers/Messages",
@ -109,6 +109,13 @@
"DARK_THEME": "Dark theme", "DARK_THEME": "Dark theme",
"WHITE_THEME": "White theme", "WHITE_THEME": "White theme",
"GRAY_THEME": "Grey theme", "GRAY_THEME": "Grey theme",
"APP_LOCK": {
"TITLE": "Lock app after:",
"TIME1": "5 min",
"TIME2": "15 min",
"TIME3": "1 hour",
"TIME4": "Never"
},
"MASTER_PASSWORD": { "MASTER_PASSWORD": {
"TITLE": "Update master password", "TITLE": "Update master password",
"OLD": "Old password", "OLD": "Old password",
@ -145,7 +152,7 @@
"LABEL_SEED_PHRASE": "Seed phrase", "LABEL_SEED_PHRASE": "Seed phrase",
"SEED_PHRASE_HINT": "Click to reveal the seed phrase", "SEED_PHRASE_HINT": "Click to reveal the seed phrase",
"BUTTON_SAVE": "Save", "BUTTON_SAVE": "Save",
"BUTTON_REMOVE": "Remove wallet", "BUTTON_REMOVE": "Close wallet",
"FORM_ERRORS": { "FORM_ERRORS": {
"NAME_REQUIRED": "Name is required.", "NAME_REQUIRED": "Name is required.",
"NAME_DUPLICATE": "Name is duplicate." "NAME_DUPLICATE": "Name is duplicate."
@ -234,7 +241,7 @@
}, },
"HISTORY": { "HISTORY": {
"STATUS": "Status", "STATUS": "Status",
"STATUS_TOOLTIP": "Approved {{current}}/{{total}}", "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
"SEND": "Send", "SEND": "Send",
"RECEIVED": "Received", "RECEIVED": "Received",
"DATE": "Date", "DATE": "Date",

View file

@ -546,6 +546,69 @@ input[type='checkbox'].style-checkbox {
} }
} }
.ng-select {
&.lock-selection-select {
width: 100%;
.ng-select-container {
border: none;
border-radius: 0;
cursor: pointer;
font-size: 1.4rem;
outline: none;
padding: 0 1rem;
height: 4.2rem;
@include themify($themes) {
background-color: themed(inputBackgroundColor);
color: themed(mainTextColor);
}
.ng-value-container {
padding: 0;
}
}
.ng-dropdown-panel {
border: none;
@include themify($themes) {
background-color: themed(inputBackgroundColor);
}
.ng-dropdown-panel-items {
.ng-option {
font-size: 1.4rem;
padding: 1rem;
@include themify($themes) {
background-color: themed(inputBackgroundColor);
color: themed(mainTextColor);
}
&.ng-option-marked {
@include themify($themes) {
background-color: themed(selectHoverColor);
color: themed(mainTextColor);
}
}
&.ng-option-selected {
@include themify($themes) {
background-color: themed(selectSelectedColor);
color: themed(mainTextColor);
}
}
}
}
}
}
}
app-modal-container { app-modal-container {
.modal { .modal {

View file

@ -22,6 +22,8 @@ $themes: (
turquoiseButtonHoverColor: #52d9ea, turquoiseButtonHoverColor: #52d9ea,
transparentButtonBorderColor: #2b3644, transparentButtonBorderColor: #2b3644,
inputBackgroundColor: #171e27, inputBackgroundColor: #171e27,
selectHoverColor: rgba(58, 72, 90, 0.5),
selectSelectedColor: rgba(43, 54, 68, 0.5),
switchBackgroundColor: #000000, switchBackgroundColor: #000000,
accountBackgroundColor: rgba(43, 54, 68, 0.5), accountBackgroundColor: rgba(43, 54, 68, 0.5),
accountHoverBackgroundColor: rgba(58, 72, 90, 0.5), accountHoverBackgroundColor: rgba(58, 72, 90, 0.5),
@ -66,6 +68,8 @@ $themes: (
turquoiseButtonHoverColor: #43cee0, turquoiseButtonHoverColor: #43cee0,
transparentButtonBorderColor: #2f3438, transparentButtonBorderColor: #2f3438,
inputBackgroundColor: #292d31, inputBackgroundColor: #292d31,
selectHoverColor: rgba(70, 76, 81, 0.5),
selectSelectedColor: rgba(37, 40, 43, 0.5),
switchBackgroundColor: #000000, switchBackgroundColor: #000000,
accountBackgroundColor: rgba(37, 40, 43, 0.5), accountBackgroundColor: rgba(37, 40, 43, 0.5),
accountHoverBackgroundColor: rgba(70, 76, 81, 0.5), accountHoverBackgroundColor: rgba(70, 76, 81, 0.5),
@ -110,6 +114,8 @@ $themes: (
turquoiseButtonHoverColor: #2bbdcf, turquoiseButtonHoverColor: #2bbdcf,
transparentButtonBorderColor: #ebebeb, transparentButtonBorderColor: #ebebeb,
inputBackgroundColor: #e6e6e6, inputBackgroundColor: #e6e6e6,
selectHoverColor: rgba(240, 240, 240, 0.5),
selectSelectedColor: rgba(224, 224, 224, 0.5),
switchBackgroundColor: #e0e0e0, switchBackgroundColor: #e0e0e0,
accountBackgroundColor: rgba(30, 136, 229, 1), accountBackgroundColor: rgba(30, 136, 229, 1),
accountHoverBackgroundColor: rgba(240, 240, 240, 0.5), accountHoverBackgroundColor: rgba(240, 240, 240, 0.5),

View file

@ -138,16 +138,37 @@ app-sidebar {
border-bottom: 0.2rem solid themed(sidebarBorderColor); border-bottom: 0.2rem solid themed(sidebarBorderColor);
} }
button { .wrap-button {
@include themify($themes) { button {
color: themed(mainTextColor);
}
.icon {
@include themify($themes) { @include themify($themes) {
background-color: themed(blueTextColor); color: themed(mainTextColor);
}
.icon {
@include themify($themes) {
background-color: themed(blueTextColor);
}
}
}
&.active {
button {
@include themify($themes) {
background-color: themed(accountBackgroundColor)!important;
color: themed(accountMainTextColor)!important;
}
.icon {
@include themify($themes) {
background-color: themed(accountIndicatorBackgroundColor)!important;
}
}
} }
} }
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -23,6 +23,7 @@
"@angular/platform-browser": "~7.0.0", "@angular/platform-browser": "~7.0.0",
"@angular/platform-browser-dynamic": "~7.0.0", "@angular/platform-browser-dynamic": "~7.0.0",
"@angular/router": "~7.0.0", "@angular/router": "~7.0.0",
"@ng-select/ng-select": "^2.16.2",
"@ngx-translate/core": "^11.0.0", "@ngx-translate/core": "^11.0.0",
"@ngx-translate/http-loader": "^4.0.0", "@ngx-translate/http-loader": "^4.0.0",
"angular-highcharts": "^7.0.2", "angular-highcharts": "^7.0.2",

View file

@ -29,6 +29,7 @@ export class VariablesService {
public default_fee_big = new BigNumber('10000000000'); public default_fee_big = new BigNumber('10000000000');
public settings = { public settings = {
appLockTime: 15,
theme: '', theme: '',
language: 'en', language: 'en',
default_path: '/', default_path: '/',
@ -48,7 +49,6 @@ export class VariablesService {
public idle = new Idle() public idle = new Idle()
.whenNotInteractive() .whenNotInteractive()
.within(15)
.do(() => { .do(() => {
this.ngZone.run(() => { this.ngZone.run(() => {
this.idle.stop(); this.idle.stop();
@ -96,13 +96,17 @@ export class VariablesService {
} }
startCountdown() { startCountdown() {
this.idle.start(); this.idle.within(this.settings.appLockTime).start();
} }
stopCountdown() { stopCountdown() {
this.idle.stop(); this.idle.stop();
} }
restartCountdown() {
this.idle.within(this.settings.appLockTime).restart();
}
public onContextMenu($event: MouseEvent): void { public onContextMenu($event: MouseEvent): void {
$event.target['contextSelectionStart'] = $event.target['selectionStart']; $event.target['contextSelectionStart'] = $event.target['selectionStart'];
$event.target['contextSelectionEnd'] = $event.target['selectionEnd']; $event.target['contextSelectionEnd'] = $event.target['selectionEnd'];

View file

@ -30,6 +30,7 @@ import { HttpClient, HttpClientModule } from '@angular/common/http';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { TranslateHttpLoader } from '@ngx-translate/http-loader'; import { TranslateHttpLoader } from '@ngx-translate/http-loader';
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { NgSelectModule } from '@ng-select/ng-select';
import { BackendService } from './_helpers/services/backend.service'; import { BackendService } from './_helpers/services/backend.service';
import { ModalService } from './_helpers/services/modal.service'; import { ModalService } from './_helpers/services/modal.service';
@ -109,6 +110,7 @@ Highcharts.setOptions({
}), }),
FormsModule, FormsModule,
ReactiveFormsModule, ReactiveFormsModule,
NgSelectModule,
ChartModule, ChartModule,
ContextMenuModule.forRoot() ContextMenuModule.forRoot()
], ],

View file

@ -35,7 +35,7 @@ export class MainComponent implements OnInit {
} }
openInBrowser() { openInBrowser() {
this.backend.openUrlInBrowser('zano.org'); this.backend.openUrlInBrowser('docs.zano.org/v1.0/docs/how-to-create-wallet');
} }
} }

View file

@ -24,6 +24,25 @@
</div> </div>
</div> </div>
<div class="lock-selection">
<label class="lock-selection-title">{{ 'SETTINGS.APP_LOCK.TITLE' | translate }}</label>
<ng-select class="lock-selection-select"
[items]="appLockOptions"
bindValue="id"
bindLabel="name"
[(ngModel)]="variablesService.settings.appLockTime"
[clearable]="false"
[searchable]="false"
(change)="onLockChange()">
<ng-template ng-label-tmp let-item="item">
{{item.name | translate}}
</ng-template>
<ng-template ng-option-tmp let-item="item" let-index="index">
{{item.name | translate}}
</ng-template>
</ng-select>
</div>
<form class="master-password" [formGroup]="changeForm" (ngSubmit)="onSubmitChangePass()"> <form class="master-password" [formGroup]="changeForm" (ngSubmit)="onSubmitChangePass()">
<span class="master-password-title">{{ 'SETTINGS.MASTER_PASSWORD.TITLE' | translate }}</span> <span class="master-password-title">{{ 'SETTINGS.MASTER_PASSWORD.TITLE' | translate }}</span>
@ -32,7 +51,7 @@
<label for="old-password">{{ 'SETTINGS.MASTER_PASSWORD.OLD' | translate }}</label> <label for="old-password">{{ 'SETTINGS.MASTER_PASSWORD.OLD' | translate }}</label>
<input type="password" id="old-password" formControlName="password"/> <input type="password" id="old-password" formControlName="password"/>
<div class="error-block" *ngIf="changeForm.controls['password'].invalid && (changeForm.controls['password'].dirty || changeForm.controls['password'].touched)"> <div class="error-block" *ngIf="changeForm.controls['password'].invalid && (changeForm.controls['password'].dirty || changeForm.controls['password'].touched)">
<div *ngIf="changeForm.controls['password'].errors.required"> <div *ngIf="changeForm.controls['password'].errors['required']">
{{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }} {{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }}
</div> </div>
</div> </div>
@ -45,7 +64,7 @@
<label for="new-password">{{ 'SETTINGS.MASTER_PASSWORD.NEW' | translate }}</label> <label for="new-password">{{ 'SETTINGS.MASTER_PASSWORD.NEW' | translate }}</label>
<input type="password" id="new-password" formControlName="new_password"/> <input type="password" id="new-password" formControlName="new_password"/>
<div class="error-block" *ngIf="changeForm.controls['new_password'].invalid && (changeForm.controls['new_password'].dirty || changeForm.controls['new_password'].touched)"> <div class="error-block" *ngIf="changeForm.controls['new_password'].invalid && (changeForm.controls['new_password'].dirty || changeForm.controls['new_password'].touched)">
<div *ngIf="changeForm.controls['new_password'].errors.required"> <div *ngIf="changeForm.controls['new_password'].errors['required']">
{{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }} {{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }}
</div> </div>
</div> </div>
@ -55,7 +74,7 @@
<label for="confirm-password">{{ 'SETTINGS.MASTER_PASSWORD.CONFIRM' | translate }}</label> <label for="confirm-password">{{ 'SETTINGS.MASTER_PASSWORD.CONFIRM' | translate }}</label>
<input type="password" id="confirm-password" formControlName="new_confirmation"/> <input type="password" id="confirm-password" formControlName="new_confirmation"/>
<div class="error-block" *ngIf="changeForm.controls['new_confirmation'].invalid && (changeForm.controls['new_confirmation'].dirty || changeForm.controls['new_confirmation'].touched)"> <div class="error-block" *ngIf="changeForm.controls['new_confirmation'].invalid && (changeForm.controls['new_confirmation'].dirty || changeForm.controls['new_confirmation'].touched)">
<div *ngIf="changeForm.controls['new_confirmation'].errors.required"> <div *ngIf="changeForm.controls['new_confirmation'].errors['required']">
{{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }} {{ 'SETTINGS.FORM_ERRORS.PASS_REQUIRED' | translate }}
</div> </div>
</div> </div>

View file

@ -22,6 +22,21 @@
} }
} }
.lock-selection {
display: flex;
flex-direction: column;
align-items: flex-start;
margin: 2.4rem 0;
width: 50%;
.lock-selection-title {
display: flex;
font-size: 1.5rem;
line-height: 2.7rem;
margin-bottom: 1rem;
}
}
.master-password { .master-password {
width: 50%; width: 50%;
@ -42,6 +57,6 @@
.last-build { .last-build {
position: absolute; position: absolute;
bottom: 3rem; bottom: 3rem;
right: 3rem; left: 3rem;
font-size: 1.3rem; font-size: 1rem;
} }

View file

@ -10,10 +10,29 @@ import {Location} from '@angular/common';
styleUrls: ['./settings.component.scss'] styleUrls: ['./settings.component.scss']
}) })
export class SettingsComponent implements OnInit { export class SettingsComponent implements OnInit {
theme: string; theme: string;
changeForm: any; changeForm: any;
appLockOptions = [
{
id: 5,
name: 'SETTINGS.APP_LOCK.TIME1'
},
{
id: 15,
name: 'SETTINGS.APP_LOCK.TIME2'
},
{
id: 60,
name: 'SETTINGS.APP_LOCK.TIME3'
},
{
id: 0,
name: 'SETTINGS.APP_LOCK.TIME4'
}
];
constructor(private renderer: Renderer2, private variablesService: VariablesService, private backend: BackendService, private location: Location) { constructor(private renderer: Renderer2, public variablesService: VariablesService, private backend: BackendService, private location: Location) {
this.theme = this.variablesService.settings.theme; this.theme = this.variablesService.settings.theme;
this.changeForm = new FormGroup({ this.changeForm = new FormGroup({
password: new FormControl('', Validators.required), password: new FormControl('', Validators.required),
@ -49,6 +68,11 @@ export class SettingsComponent implements OnInit {
} }
} }
onLockChange() {
this.variablesService.restartCountdown();
this.backend.storeAppData();
}
back() { back() {
this.location.back(); this.location.back();
} }

View file

@ -38,14 +38,18 @@
</div> </div>
</div> </div>
<div class="sidebar-settings"> <div class="sidebar-settings">
<button [routerLink]="['/settings']" routerLinkActive="active"> <div class="wrap-button" routerLinkActive="active">
<i class="icon settings"></i> <button [routerLink]="['/settings']">
<span>{{ 'SIDEBAR.SETTINGS' | translate }}</span> <i class="icon settings"></i>
</button> <span>{{ 'SIDEBAR.SETTINGS' | translate }}</span>
<button (click)="logOut()"> </button>
<i class="icon logout"></i> </div>
<span>{{ 'SIDEBAR.LOG_OUT' | translate }}</span> <div class="wrap-button">
</button> <button (click)="logOut()">
<i class="icon logout"></i>
<span>{{ 'SIDEBAR.LOG_OUT' | translate }}</span>
</button>
</div>
</div> </div>
<div class="sidebar-synchronization-status"> <div class="sidebar-synchronization-status">
<div class="status-container"> <div class="status-container">

View file

@ -150,27 +150,32 @@
flex: 0 0 auto; flex: 0 0 auto;
padding-bottom: 1rem; padding-bottom: 1rem;
button { .wrap-button {
display: flex; margin: 0 -3rem;
align-items: center;
background: transparent;
border: none;
line-height: 3rem;
outline: none;
padding: 0;
font-weight: 400;
.icon { button {
margin-right: 1.2rem; display: flex;
width: 1.7rem; align-items: center;
height: 1.7rem; background: transparent;
border: none;
font-weight: 400;
line-height: 3rem;
outline: none;
padding: 0 3rem;
width: 100%;
&.settings { .icon {
mask: url(../../assets/icons/settings.svg) no-repeat center; margin-right: 1.2rem;
} width: 1.7rem;
height: 1.7rem;
&.logout { &.settings {
mask: url(../../assets/icons/logout.svg) no-repeat center; mask: url(../../assets/icons/settings.svg) no-repeat center;
}
&.logout {
mask: url(../../assets/icons/logout.svg) no-repeat center;
}
} }
} }
} }

View file

@ -15,7 +15,7 @@
"BACK": "Go back" "BACK": "Go back"
}, },
"BREADCRUMBS": { "BREADCRUMBS": {
"ADD_WALLET": "Add new wallet", "ADD_WALLET": "Add wallet",
"CREATE_WALLET": "Create new wallet", "CREATE_WALLET": "Create new wallet",
"SAVE_PHRASE": "Save your seed phrase", "SAVE_PHRASE": "Save your seed phrase",
"OPEN_WALLET": "Open existing wallet", "OPEN_WALLET": "Open existing wallet",
@ -30,7 +30,7 @@
}, },
"SIDEBAR": { "SIDEBAR": {
"TITLE": "Wallets", "TITLE": "Wallets",
"ADD_NEW": "+ Add new", "ADD_NEW": "+ Add",
"ACCOUNT": { "ACCOUNT": {
"STAKING": "Staking", "STAKING": "Staking",
"MESSAGES": "New offers/Messages", "MESSAGES": "New offers/Messages",
@ -109,6 +109,13 @@
"DARK_THEME": "Dark theme", "DARK_THEME": "Dark theme",
"WHITE_THEME": "White theme", "WHITE_THEME": "White theme",
"GRAY_THEME": "Grey theme", "GRAY_THEME": "Grey theme",
"APP_LOCK": {
"TITLE": "Lock app after:",
"TIME1": "5 min",
"TIME2": "15 min",
"TIME3": "1 hour",
"TIME4": "Never"
},
"MASTER_PASSWORD": { "MASTER_PASSWORD": {
"TITLE": "Update master password", "TITLE": "Update master password",
"OLD": "Old password", "OLD": "Old password",
@ -145,7 +152,7 @@
"LABEL_SEED_PHRASE": "Seed phrase", "LABEL_SEED_PHRASE": "Seed phrase",
"SEED_PHRASE_HINT": "Click to reveal the seed phrase", "SEED_PHRASE_HINT": "Click to reveal the seed phrase",
"BUTTON_SAVE": "Save", "BUTTON_SAVE": "Save",
"BUTTON_REMOVE": "Remove wallet", "BUTTON_REMOVE": "Close wallet",
"FORM_ERRORS": { "FORM_ERRORS": {
"NAME_REQUIRED": "Name is required.", "NAME_REQUIRED": "Name is required.",
"NAME_DUPLICATE": "Name is duplicate." "NAME_DUPLICATE": "Name is duplicate."
@ -234,7 +241,7 @@
}, },
"HISTORY": { "HISTORY": {
"STATUS": "Status", "STATUS": "Status",
"STATUS_TOOLTIP": "Approved {{current}}/{{total}}", "STATUS_TOOLTIP": "Confirmations {{current}}/{{total}}",
"SEND": "Send", "SEND": "Send",
"RECEIVED": "Received", "RECEIVED": "Received",
"DATE": "Date", "DATE": "Date",

View file

@ -546,6 +546,69 @@ input[type='checkbox'].style-checkbox {
} }
} }
.ng-select {
&.lock-selection-select {
width: 100%;
.ng-select-container {
border: none;
border-radius: 0;
cursor: pointer;
font-size: 1.4rem;
outline: none;
padding: 0 1rem;
height: 4.2rem;
@include themify($themes) {
background-color: themed(inputBackgroundColor);
color: themed(mainTextColor);
}
.ng-value-container {
padding: 0;
}
}
.ng-dropdown-panel {
border: none;
@include themify($themes) {
background-color: themed(inputBackgroundColor);
}
.ng-dropdown-panel-items {
.ng-option {
font-size: 1.4rem;
padding: 1rem;
@include themify($themes) {
background-color: themed(inputBackgroundColor);
color: themed(mainTextColor);
}
&.ng-option-marked {
@include themify($themes) {
background-color: themed(selectHoverColor);
color: themed(mainTextColor);
}
}
&.ng-option-selected {
@include themify($themes) {
background-color: themed(selectSelectedColor);
color: themed(mainTextColor);
}
}
}
}
}
}
}
app-modal-container { app-modal-container {
.modal { .modal {

View file

@ -22,6 +22,8 @@ $themes: (
turquoiseButtonHoverColor: #52d9ea, turquoiseButtonHoverColor: #52d9ea,
transparentButtonBorderColor: #2b3644, transparentButtonBorderColor: #2b3644,
inputBackgroundColor: #171e27, inputBackgroundColor: #171e27,
selectHoverColor: rgba(58, 72, 90, 0.5),
selectSelectedColor: rgba(43, 54, 68, 0.5),
switchBackgroundColor: #000000, switchBackgroundColor: #000000,
accountBackgroundColor: rgba(43, 54, 68, 0.5), accountBackgroundColor: rgba(43, 54, 68, 0.5),
accountHoverBackgroundColor: rgba(58, 72, 90, 0.5), accountHoverBackgroundColor: rgba(58, 72, 90, 0.5),
@ -66,6 +68,8 @@ $themes: (
turquoiseButtonHoverColor: #43cee0, turquoiseButtonHoverColor: #43cee0,
transparentButtonBorderColor: #2f3438, transparentButtonBorderColor: #2f3438,
inputBackgroundColor: #292d31, inputBackgroundColor: #292d31,
selectHoverColor: rgba(70, 76, 81, 0.5),
selectSelectedColor: rgba(37, 40, 43, 0.5),
switchBackgroundColor: #000000, switchBackgroundColor: #000000,
accountBackgroundColor: rgba(37, 40, 43, 0.5), accountBackgroundColor: rgba(37, 40, 43, 0.5),
accountHoverBackgroundColor: rgba(70, 76, 81, 0.5), accountHoverBackgroundColor: rgba(70, 76, 81, 0.5),
@ -110,6 +114,8 @@ $themes: (
turquoiseButtonHoverColor: #2bbdcf, turquoiseButtonHoverColor: #2bbdcf,
transparentButtonBorderColor: #ebebeb, transparentButtonBorderColor: #ebebeb,
inputBackgroundColor: #e6e6e6, inputBackgroundColor: #e6e6e6,
selectHoverColor: rgba(240, 240, 240, 0.5),
selectSelectedColor: rgba(224, 224, 224, 0.5),
switchBackgroundColor: #e0e0e0, switchBackgroundColor: #e0e0e0,
accountBackgroundColor: rgba(30, 136, 229, 1), accountBackgroundColor: rgba(30, 136, 229, 1),
accountHoverBackgroundColor: rgba(240, 240, 240, 0.5), accountHoverBackgroundColor: rgba(240, 240, 240, 0.5),

View file

@ -138,16 +138,37 @@ app-sidebar {
border-bottom: 0.2rem solid themed(sidebarBorderColor); border-bottom: 0.2rem solid themed(sidebarBorderColor);
} }
button { .wrap-button {
@include themify($themes) { button {
color: themed(mainTextColor);
}
.icon {
@include themify($themes) { @include themify($themes) {
background-color: themed(blueTextColor); color: themed(mainTextColor);
}
.icon {
@include themify($themes) {
background-color: themed(blueTextColor);
}
}
}
&.active {
button {
@include themify($themes) {
background-color: themed(accountBackgroundColor)!important;
color: themed(accountMainTextColor)!important;
}
.icon {
@include themify($themes) {
background-color: themed(accountIndicatorBackgroundColor)!important;
}
}
} }
} }
} }

View file

@ -15,6 +15,8 @@
@import 'assets/scss/modules/scroll'; @import 'assets/scss/modules/scroll';
@import 'assets/scss/modules/table'; @import 'assets/scss/modules/table';
@import "~@ng-select/ng-select/themes/default.theme.css";
@font-face { @font-face {
font-family: OpenSans; font-family: OpenSans;
src: url(~src/assets/fonts/OpenSans-Light.ttf); src: url(~src/assets/fonts/OpenSans-Light.ttf);