From 3f187e1d1f034a4f358a2d8f70486429fdeee628 Mon Sep 17 00:00:00 2001
From: Artem Dychenko <s192441@student.pg.edu.pl>
Date: Sat, 22 Mar 2025 22:11:32 +0100
Subject: [PATCH] feat: add slide-toggle component, fix color in
 dashboard-settings styles

---
 .../dashboard-settings.component.html         | 26 +++++++++----------
 .../dashboard-settings.component.scss         | 24 ++++++++++++-----
 .../dashboard-settings.component.ts           |  6 +++--
 .../slide-toggle/slide-toggle.component.html  |  4 +++
 .../slide-toggle/slide-toggle.component.scss  | 19 ++++++++++++++
 .../slide-toggle/slide-toggle.component.ts    | 10 +++++++
 6 files changed, 68 insertions(+), 21 deletions(-)
 create mode 100644 src/app/components/slide-toggle/slide-toggle.component.html
 create mode 100644 src/app/components/slide-toggle/slide-toggle.component.scss
 create mode 100644 src/app/components/slide-toggle/slide-toggle.component.ts

diff --git a/src/app/components/dashboard-settings/dashboard-settings.component.html b/src/app/components/dashboard-settings/dashboard-settings.component.html
index 3f428bb..3f7c6f8 100644
--- a/src/app/components/dashboard-settings/dashboard-settings.component.html
+++ b/src/app/components/dashboard-settings/dashboard-settings.component.html
@@ -6,10 +6,10 @@
         Statistics columns
       </div>
       <div class="dialog__content__statistics__columns-content">
-        <mat-slide-toggle [(ngModel)]="isChecked">Total packets</mat-slide-toggle>
-        <mat-slide-toggle [(ngModel)]="isChecked">Packets per seconds</mat-slide-toggle>
-        <mat-slide-toggle [(ngModel)]="isChecked">Total bytes</mat-slide-toggle>
-        <mat-slide-toggle [(ngModel)]="isChecked">Bytes per second</mat-slide-toggle>
+        <app-slide-toggle>Total packets</app-slide-toggle>
+        <app-slide-toggle>Packets per seconds</app-slide-toggle>
+        <app-slide-toggle>Total bytes</app-slide-toggle>
+        <app-slide-toggle>Bytes per second</app-slide-toggle>
       </div>
     </div>
     <div class="dialog__content__statistics__rows">
@@ -17,10 +17,10 @@
         Statistics rows & charts
       </div>
       <div class="dialog__content__statistics__rows-content">
-        <mat-slide-toggle [(ngModel)]="isChecked">ETH</mat-slide-toggle>
-        <mat-slide-toggle [(ngModel)]="isChecked">IPv4</mat-slide-toggle>
-        <mat-slide-toggle [(ngModel)]="isChecked">IPv6</mat-slide-toggle>
-        <mat-slide-toggle [(ngModel)]="isChecked">TCP</mat-slide-toggle>
+        <app-slide-toggle>ETH</app-slide-toggle>
+        <app-slide-toggle>IPv4</app-slide-toggle>
+        <app-slide-toggle >IPv6</app-slide-toggle>
+        <app-slide-toggle >TCP</app-slide-toggle>
       </div>
     </div>
     <div class="dialog__content__statistics__ir">
@@ -28,15 +28,15 @@
         Information Rate
       </div>
       <div class="dialog__content__statistics__ir-content">
-        <mat-slide-toggle [(ngModel)]="isChecked">Min value</mat-slide-toggle>
-        <mat-slide-toggle [(ngModel)]="isChecked">Max value</mat-slide-toggle>
-        <mat-slide-toggle [(ngModel)]="isChecked">Current value</mat-slide-toggle>
+        <app-slide-toggle class="custom" >Min value</app-slide-toggle>
+        <app-slide-toggle >Max value</app-slide-toggle>
+        <app-slide-toggle >Current value</app-slide-toggle>
 
       </div>
     </div>
   </mat-dialog-content>
   <mat-dialog-actions class="dialog__actions">
-    <button mat-flat-button mat-dialog-close>CANCEL</button>
-    <button mat-flat-button mat-dialog-close>SAVE</button>
+    <app-button secondary class="cancel-button">CANCEL</app-button>
+    <app-button class="save-button">SAVE</app-button>
   </mat-dialog-actions>
 </div>
diff --git a/src/app/components/dashboard-settings/dashboard-settings.component.scss b/src/app/components/dashboard-settings/dashboard-settings.component.scss
index 1b093d6..ac32f2e 100644
--- a/src/app/components/dashboard-settings/dashboard-settings.component.scss
+++ b/src/app/components/dashboard-settings/dashboard-settings.component.scss
@@ -29,18 +29,30 @@
         }
       }
     }
-    mat-slide-toggle {
-      width: 25%;
+    ::ng-deep app-slide-toggle {
+      mat-slide-toggle {
+        width: 25% !important;
+      }
     }
   }
   &__actions {
     border-radius: map.get(vars.$radius, 'xs');
     padding: map.get(vars.$spacing, 'xxl') 0 map.get(vars.$spacing, 'xl') 0;
-    button {
-      width: 40%;
-      border-radius: map.get(vars.$radius, 'sm');
-      margin: map.get(vars.$spacing, 'xs') map.get(vars.$spacing, 'xxxl') 0 map.get(vars.$radius, 'xl');
+    display: flex;
+    justify-content: center;
+    gap: 150px;
+
+    ::ng-deep app-button {
+      button {
+        width: 450px;
+      }
+      margin: map.get(vars.$spacing, 'md') 0 0 0;
 
     }
   }
 }
+
+
+
+
+
diff --git a/src/app/components/dashboard-settings/dashboard-settings.component.ts b/src/app/components/dashboard-settings/dashboard-settings.component.ts
index da7902c..f3df6d3 100644
--- a/src/app/components/dashboard-settings/dashboard-settings.component.ts
+++ b/src/app/components/dashboard-settings/dashboard-settings.component.ts
@@ -2,8 +2,9 @@ import { ChangeDetectionStrategy, Component } from '@angular/core';
 import { MatDialogModule } from '@angular/material/dialog';
 import { ToggleSwitchModule } from 'primeng/toggleswitch';
 import { FormsModule } from '@angular/forms';
-import { MatSlideToggle } from '@angular/material/slide-toggle';
 import { MatButtonModule } from '@angular/material/button';
+import { ButtonComponent } from '../button/button.component';
+import { SlideToggleComponent } from '../slide-toggle/slide-toggle.component';
 
 @Component({
   changeDetection: ChangeDetectionStrategy.OnPush,
@@ -11,8 +12,9 @@ import { MatButtonModule } from '@angular/material/button';
     MatDialogModule,
     ToggleSwitchModule,
     FormsModule,
-    MatSlideToggle,
     MatButtonModule,
+    ButtonComponent,
+    SlideToggleComponent,
   ],
   selector: 'app-dashboard-settings',
   styleUrl: './dashboard-settings.component.scss',
diff --git a/src/app/components/slide-toggle/slide-toggle.component.html b/src/app/components/slide-toggle/slide-toggle.component.html
new file mode 100644
index 0000000..edb1a24
--- /dev/null
+++ b/src/app/components/slide-toggle/slide-toggle.component.html
@@ -0,0 +1,4 @@
+<mat-slide-toggle
+  [hideIcon]="true">
+  <ng-content />
+</mat-slide-toggle>
diff --git a/src/app/components/slide-toggle/slide-toggle.component.scss b/src/app/components/slide-toggle/slide-toggle.component.scss
new file mode 100644
index 0000000..88ed7b5
--- /dev/null
+++ b/src/app/components/slide-toggle/slide-toggle.component.scss
@@ -0,0 +1,19 @@
+@use '../../../vars';
+@use 'sass:map';
+
+::ng-deep .mat-mdc-slide-toggle.mat-mdc-slide-toggle-checked:not(.mat-disabled) .mdc-switch__shadow {
+  background-color: map.get(vars.$grey, 10);
+}
+
+::ng-deep .mat-mdc-slide-toggle.mat-mdc-slide-toggle-checked:not(.mat-disabled) .mdc-switch__track::after {
+  background-color: vars.$textPrimary !important;
+}
+
+::ng-deep .mdc-switch__track::before {
+  background-color: map.get(vars.$grey, 30) !important;
+}
+
+//.mat-slide-toggle.mat-checked:not(.mat-disabled) .mat-slide-toggle-thumb:before {
+//  content: "" !important;
+//  font: normal normal normal 14px/1 FontAwesome !important;
+//}
diff --git a/src/app/components/slide-toggle/slide-toggle.component.ts b/src/app/components/slide-toggle/slide-toggle.component.ts
new file mode 100644
index 0000000..05f96f8
--- /dev/null
+++ b/src/app/components/slide-toggle/slide-toggle.component.ts
@@ -0,0 +1,10 @@
+import { Component } from '@angular/core';
+import { MatSlideToggle } from '@angular/material/slide-toggle';
+
+@Component({
+  selector: 'app-slide-toggle',
+  imports: [MatSlideToggle],
+  templateUrl: './slide-toggle.component.html',
+  styleUrl: './slide-toggle.component.scss',
+})
+export class SlideToggleComponent {}
-- 
GitLab