mirror of
https://github.com/mempool/mempool.git
synced 2025-02-24 06:47:52 +01:00
Create shared toggle component to re-use
This commit is contained in:
parent
1b3faa1203
commit
16db740986
7 changed files with 94 additions and 74 deletions
|
@ -140,14 +140,7 @@
|
||||||
|
|
||||||
<div class="d-flex justify-content-between" *ngIf="!error">
|
<div class="d-flex justify-content-between" *ngIf="!error">
|
||||||
<h2>Channels ({{ channelsListStatus === 'open' ? node.channel_active_count : node.channel_closed_count }})</h2>
|
<h2>Channels ({{ channelsListStatus === 'open' ? node.channel_active_count : node.channel_closed_count }})</h2>
|
||||||
<div class="d-flex align-items-center justify-content-end">
|
<app-toggle [textLeft]="'List'" [textRight]="'Map'" (toggleStatusChanged)="channelsListModeChange($event)"></app-toggle>
|
||||||
<span style="margin-bottom: 0.5rem">List</span>
|
|
||||||
<label class="switch">
|
|
||||||
<input type="checkbox" (change)="channelsListModeChange($event)">
|
|
||||||
<span class="slider round"></span>
|
|
||||||
</label>
|
|
||||||
<span style="margin-bottom: 0.5rem">Map</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<app-nodes-channels-map *ngIf="channelsListMode === 'map' && !error" [style]="'nodepage'" [publicKey]="node.public_key">
|
<app-nodes-channels-map *ngIf="channelsListMode === 'map' && !error" [style]="'nodepage'" [publicKey]="node.public_key">
|
||||||
|
|
|
@ -57,66 +57,3 @@ app-fiat {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The switch - the box around the slider */
|
|
||||||
.switch {
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
width: 30px;
|
|
||||||
height: 17px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hide default HTML checkbox */
|
|
||||||
.switch input {
|
|
||||||
opacity: 0;
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* The slider */
|
|
||||||
.slider {
|
|
||||||
position: absolute;
|
|
||||||
cursor: pointer;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background-color: #ccc;
|
|
||||||
-webkit-transition: .4s;
|
|
||||||
transition: .4s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.slider:before {
|
|
||||||
position: absolute;
|
|
||||||
content: "";
|
|
||||||
height: 13px;
|
|
||||||
width: 13px;
|
|
||||||
left: 2px;
|
|
||||||
bottom: 2px;
|
|
||||||
background-color: white;
|
|
||||||
-webkit-transition: .4s;
|
|
||||||
transition: .4s;
|
|
||||||
}
|
|
||||||
|
|
||||||
input:checked + .slider {
|
|
||||||
background-color: #2196F3;
|
|
||||||
}
|
|
||||||
|
|
||||||
input:focus + .slider {
|
|
||||||
box-shadow: 0 0 1px #2196F3;
|
|
||||||
}
|
|
||||||
|
|
||||||
input:checked + .slider:before {
|
|
||||||
-webkit-transform: translateX(13px);
|
|
||||||
-ms-transform: translateX(13px);
|
|
||||||
transform: translateX(13px);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Rounded sliders */
|
|
||||||
.slider.round {
|
|
||||||
border-radius: 17px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.slider.round:before {
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
|
@ -75,8 +75,8 @@ export class NodeComponent implements OnInit {
|
||||||
this.selectedSocketIndex = index;
|
this.selectedSocketIndex = index;
|
||||||
}
|
}
|
||||||
|
|
||||||
channelsListModeChange(e) {
|
channelsListModeChange(toggle) {
|
||||||
if (e.target.checked === true) {
|
if (toggle === true) {
|
||||||
this.channelsListMode = 'map';
|
this.channelsListMode = 'map';
|
||||||
} else {
|
} else {
|
||||||
this.channelsListMode = 'list';
|
this.channelsListMode = 'list';
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
<div class="d-flex align-items-center justify-content-end">
|
||||||
|
<span style="margin-bottom: 0.5rem">{{ textLeft }}</span>
|
||||||
|
<label class="switch">
|
||||||
|
<input type="checkbox" (change)="onToggleStatusChanged($event)">
|
||||||
|
<span class="slider round"></span>
|
||||||
|
</label>
|
||||||
|
<span style="margin-bottom: 0.5rem">{{ textRight }}</span>
|
||||||
|
</div>
|
|
@ -0,0 +1,62 @@
|
||||||
|
/* The switch - the box around the slider */
|
||||||
|
.switch {
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
width: 30px;
|
||||||
|
height: 17px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hide default HTML checkbox */
|
||||||
|
.switch input {
|
||||||
|
opacity: 0;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The slider */
|
||||||
|
.slider {
|
||||||
|
position: absolute;
|
||||||
|
cursor: pointer;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
background-color: #ccc;
|
||||||
|
-webkit-transition: .4s;
|
||||||
|
transition: .4s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slider:before {
|
||||||
|
position: absolute;
|
||||||
|
content: "";
|
||||||
|
height: 13px;
|
||||||
|
width: 13px;
|
||||||
|
left: 2px;
|
||||||
|
bottom: 2px;
|
||||||
|
background-color: white;
|
||||||
|
-webkit-transition: .4s;
|
||||||
|
transition: .4s;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:checked+.slider {
|
||||||
|
background-color: #2196F3;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:focus+.slider {
|
||||||
|
box-shadow: 0 0 1px #2196F3;
|
||||||
|
}
|
||||||
|
|
||||||
|
input:checked+.slider:before {
|
||||||
|
-webkit-transform: translateX(13px);
|
||||||
|
-ms-transform: translateX(13px);
|
||||||
|
transform: translateX(13px);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Rounded sliders */
|
||||||
|
.slider.round {
|
||||||
|
border-radius: 17px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slider.round:before {
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
import { Component, Input, Output, ChangeDetectionStrategy, EventEmitter } from '@angular/core';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'app-toggle',
|
||||||
|
templateUrl: './toggle.component.html',
|
||||||
|
styleUrls: ['./toggle.component.scss'],
|
||||||
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
||||||
|
})
|
||||||
|
export class ToggleComponent {
|
||||||
|
@Output() toggleStatusChanged = new EventEmitter<boolean>();
|
||||||
|
@Input() textLeft: string;
|
||||||
|
@Input() textRight: string;
|
||||||
|
|
||||||
|
onToggleStatusChanged(e): void {
|
||||||
|
this.toggleStatusChanged.emit(e.target.checked);
|
||||||
|
}
|
||||||
|
}
|
|
@ -80,6 +80,7 @@ import { ChangeComponent } from '../components/change/change.component';
|
||||||
import { SatsComponent } from './components/sats/sats.component';
|
import { SatsComponent } from './components/sats/sats.component';
|
||||||
import { SearchResultsComponent } from '../components/search-form/search-results/search-results.component';
|
import { SearchResultsComponent } from '../components/search-form/search-results/search-results.component';
|
||||||
import { TimestampComponent } from './components/timestamp/timestamp.component';
|
import { TimestampComponent } from './components/timestamp/timestamp.component';
|
||||||
|
import { ToggleComponent } from './components/toggle/toggle.component';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
declarations: [
|
declarations: [
|
||||||
|
@ -154,6 +155,7 @@ import { TimestampComponent } from './components/timestamp/timestamp.component';
|
||||||
SatsComponent,
|
SatsComponent,
|
||||||
SearchResultsComponent,
|
SearchResultsComponent,
|
||||||
TimestampComponent,
|
TimestampComponent,
|
||||||
|
ToggleComponent,
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
|
@ -255,6 +257,7 @@ import { TimestampComponent } from './components/timestamp/timestamp.component';
|
||||||
SatsComponent,
|
SatsComponent,
|
||||||
SearchResultsComponent,
|
SearchResultsComponent,
|
||||||
TimestampComponent,
|
TimestampComponent,
|
||||||
|
ToggleComponent,
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class SharedModule {
|
export class SharedModule {
|
||||||
|
|
Loading…
Add table
Reference in a new issue