From 16db740986bb87e38b2e339ff19d6c0f3b0f012e Mon Sep 17 00:00:00 2001 From: nymkappa Date: Wed, 27 Jul 2022 10:48:27 +0200 Subject: [PATCH] Create shared toggle component to re-use --- .../app/lightning/node/node.component.html | 9 +-- .../app/lightning/node/node.component.scss | 65 +------------------ .../src/app/lightning/node/node.component.ts | 4 +- .../components/toggle/toggle.component.html | 8 +++ .../components/toggle/toggle.component.scss | 62 ++++++++++++++++++ .../components/toggle/toggle.component.ts | 17 +++++ frontend/src/app/shared/shared.module.ts | 3 + 7 files changed, 94 insertions(+), 74 deletions(-) create mode 100644 frontend/src/app/shared/components/toggle/toggle.component.html create mode 100644 frontend/src/app/shared/components/toggle/toggle.component.scss create mode 100644 frontend/src/app/shared/components/toggle/toggle.component.ts diff --git a/frontend/src/app/lightning/node/node.component.html b/frontend/src/app/lightning/node/node.component.html index 774f0aaab..af6fca655 100644 --- a/frontend/src/app/lightning/node/node.component.html +++ b/frontend/src/app/lightning/node/node.component.html @@ -140,14 +140,7 @@

Channels ({{ channelsListStatus === 'open' ? node.channel_active_count : node.channel_closed_count }})

-
- List  - -  Map -
+
diff --git a/frontend/src/app/lightning/node/node.component.scss b/frontend/src/app/lightning/node/node.component.scss index 0bdb263a8..2b171416f 100644 --- a/frontend/src/app/lightning/node/node.component.scss +++ b/frontend/src/app/lightning/node/node.component.scss @@ -56,67 +56,4 @@ app-fiat { display: inline-block; 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%; -} \ No newline at end of file +} \ No newline at end of file diff --git a/frontend/src/app/lightning/node/node.component.ts b/frontend/src/app/lightning/node/node.component.ts index c9971a4cb..a8d487938 100644 --- a/frontend/src/app/lightning/node/node.component.ts +++ b/frontend/src/app/lightning/node/node.component.ts @@ -75,8 +75,8 @@ export class NodeComponent implements OnInit { this.selectedSocketIndex = index; } - channelsListModeChange(e) { - if (e.target.checked === true) { + channelsListModeChange(toggle) { + if (toggle === true) { this.channelsListMode = 'map'; } else { this.channelsListMode = 'list'; diff --git a/frontend/src/app/shared/components/toggle/toggle.component.html b/frontend/src/app/shared/components/toggle/toggle.component.html new file mode 100644 index 000000000..6f8889501 --- /dev/null +++ b/frontend/src/app/shared/components/toggle/toggle.component.html @@ -0,0 +1,8 @@ +
+ {{ textLeft }}  + +  {{ textRight }} +
diff --git a/frontend/src/app/shared/components/toggle/toggle.component.scss b/frontend/src/app/shared/components/toggle/toggle.component.scss new file mode 100644 index 000000000..a9c221290 --- /dev/null +++ b/frontend/src/app/shared/components/toggle/toggle.component.scss @@ -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%; +} \ No newline at end of file diff --git a/frontend/src/app/shared/components/toggle/toggle.component.ts b/frontend/src/app/shared/components/toggle/toggle.component.ts new file mode 100644 index 000000000..a69957366 --- /dev/null +++ b/frontend/src/app/shared/components/toggle/toggle.component.ts @@ -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(); + @Input() textLeft: string; + @Input() textRight: string; + + onToggleStatusChanged(e): void { + this.toggleStatusChanged.emit(e.target.checked); + } +} diff --git a/frontend/src/app/shared/shared.module.ts b/frontend/src/app/shared/shared.module.ts index cd087a3c4..df071033e 100644 --- a/frontend/src/app/shared/shared.module.ts +++ b/frontend/src/app/shared/shared.module.ts @@ -80,6 +80,7 @@ import { ChangeComponent } from '../components/change/change.component'; import { SatsComponent } from './components/sats/sats.component'; import { SearchResultsComponent } from '../components/search-form/search-results/search-results.component'; import { TimestampComponent } from './components/timestamp/timestamp.component'; +import { ToggleComponent } from './components/toggle/toggle.component'; @NgModule({ declarations: [ @@ -154,6 +155,7 @@ import { TimestampComponent } from './components/timestamp/timestamp.component'; SatsComponent, SearchResultsComponent, TimestampComponent, + ToggleComponent, ], imports: [ CommonModule, @@ -255,6 +257,7 @@ import { TimestampComponent } from './components/timestamp/timestamp.component'; SatsComponent, SearchResultsComponent, TimestampComponent, + ToggleComponent, ] }) export class SharedModule {