From 63fa78684c2afca310f510bc800f3632e6f65848 Mon Sep 17 00:00:00 2001 From: Thomas Atkins Date: Sat, 8 Feb 2020 15:07:47 -0600 Subject: [PATCH] TASK #67 Dark mode toggle working --- src/app/app.component.html | 16 ++- src/app/app.component.scss | 23 ++++ src/app/app.component.ts | 23 ++-- src/app/components/components.module.ts | 6 +- src/app/pages/editor/editor.page.html | 54 ++++---- src/theme/variables.scss | 158 ++++++++++++++++++++++++ 6 files changed, 236 insertions(+), 44 deletions(-) diff --git a/src/app/app.component.html b/src/app/app.component.html index 4dfa819..77853f2 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,4 +1,4 @@ - + @@ -12,9 +12,15 @@ Navigate - -  Child - + + + + +  Child + + + + @@ -39,4 +45,4 @@ - + \ No newline at end of file diff --git a/src/app/app.component.scss b/src/app/app.component.scss index bd83780..a439a25 100644 --- a/src/app/app.component.scss +++ b/src/app/app.component.scss @@ -1,3 +1,26 @@ .sidebar { max-width: 20em !important; } + +@media (prefers-color-scheme: no-preference) { + ion-toolbar { + --background: black; + color: white; + } + :root { + --background: black; + } +} + +@media (prefers-color-scheme: dark) { + :root { + --background: black; + color: white; + } +} + +/* Fallback for older browsers or manual mode */ +.dark { + --background: black !important; + color: white !important; +} diff --git a/src/app/app.component.ts b/src/app/app.component.ts index a5c4d15..2fefa53 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,10 +1,10 @@ -import {Component, OnInit} from '@angular/core'; +import { Component, OnInit } from '@angular/core'; import { Platform } from '@ionic/angular'; import { SplashScreen } from '@ionic-native/splash-screen/ngx'; import { StatusBar } from '@ionic-native/status-bar/ngx'; import { ApiService } from './service/api.service'; -import {Router} from '@angular/router'; +import { Router } from '@angular/router'; import { TREE_ACTIONS } from 'angular-tree-component'; @Component({ @@ -13,18 +13,17 @@ import { TREE_ACTIONS } from 'angular-tree-component'; styleUrls: ['app.component.scss'] }) export class AppComponent implements OnInit { - public nodes = []; public options = { actionMapping: { mouse: { dblClick: (tree, node, $event) => { - console.log({tree, node, $event}); + console.log({ tree, node, $event }); const id = node.data.id; - this.router.navigate(['/editor', {id}]); + this.router.navigate(['/editor', { id }]); }, click: (tree, node, $event) => { - console.log('click', {tree, node, $event}); + console.log('click', { tree, node, $event }); TREE_ACTIONS.FOCUS(tree, node, $event); } } @@ -32,12 +31,13 @@ export class AppComponent implements OnInit { }; public darkMode = false; + constructor( private platform: Platform, private splashScreen: SplashScreen, private statusBar: StatusBar, private api: ApiService, - protected router: Router, + protected router: Router ) { this.initializeApp(); } @@ -56,12 +56,15 @@ export class AppComponent implements OnInit { } toggleDark() { + const prefersDark = window.matchMedia('(prefers-color-scheme: dark)'); this.darkMode = !this.darkMode; - console.log("toggel Dark mode"); + console.log('toggel Dark mode'); + document.body.classList.toggle('dark', this.darkMode); + if (this.darkMode) { - console.log("Dark Mode On"); + console.log('Dark Mode On'); } else { - console.log("Dark Mode Off"); + console.log('Dark Mode Off'); } } } diff --git a/src/app/components/components.module.ts b/src/app/components/components.module.ts index 155fabd..ed9c617 100644 --- a/src/app/components/components.module.ts +++ b/src/app/components/components.module.ts @@ -1,6 +1,6 @@ -import { NgModule } from "@angular/core"; -import { CommonModule } from "@angular/common"; -import { HostComponent } from "./editor/host/host.component"; +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { HostComponent } from './editor/host/host.component'; @NgModule({ declarations: [HostComponent], diff --git a/src/app/pages/editor/editor.page.html b/src/app/pages/editor/editor.page.html index 289c696..231d02f 100644 --- a/src/app/pages/editor/editor.page.html +++ b/src/app/pages/editor/editor.page.html @@ -1,28 +1,30 @@ - - - - - - - - - - {{ pageRecord.Name }} - - + + + + + + + + + + + {{ pageRecord.Name }} + + - - -
-
- - + + +
+
+ + +
-
-
- Add Node - Save -
- - +
+ Add Node + Save +
+ + + \ No newline at end of file diff --git a/src/theme/variables.scss b/src/theme/variables.scss index 4b39b39..48e5b11 100644 --- a/src/theme/variables.scss +++ b/src/theme/variables.scss @@ -75,3 +75,161 @@ --ion-color-light-shade: #d7d8da; --ion-color-light-tint: #f5f6f9; } +/* + * Dark Colors + * ------------------------------------------- + */ + +body.dark { + --ion-color-primary: #428cff; + --ion-color-primary-rgb: 66, 140, 255; + --ion-color-primary-contrast: #ffffff; + --ion-color-primary-contrast-rgb: 255, 255, 255; + --ion-color-primary-shade: #3a7be0; + --ion-color-primary-tint: #5598ff; + + --ion-color-secondary: #50c8ff; + --ion-color-secondary-rgb: 80, 200, 255; + --ion-color-secondary-contrast: #ffffff; + --ion-color-secondary-contrast-rgb: 255, 255, 255; + --ion-color-secondary-shade: #46b0e0; + --ion-color-secondary-tint: #62ceff; + + --ion-color-tertiary: #6a64ff; + --ion-color-tertiary-rgb: 106, 100, 255; + --ion-color-tertiary-contrast: #ffffff; + --ion-color-tertiary-contrast-rgb: 255, 255, 255; + --ion-color-tertiary-shade: #5d58e0; + --ion-color-tertiary-tint: #7974ff; + + --ion-color-success: #2fdf75; + --ion-color-success-rgb: 47, 223, 117; + --ion-color-success-contrast: #000000; + --ion-color-success-contrast-rgb: 0, 0, 0; + --ion-color-success-shade: #29c467; + --ion-color-success-tint: #44e283; + + --ion-color-warning: #ffd534; + --ion-color-warning-rgb: 255, 213, 52; + --ion-color-warning-contrast: #000000; + --ion-color-warning-contrast-rgb: 0, 0, 0; + --ion-color-warning-shade: #e0bb2e; + --ion-color-warning-tint: #ffd948; + + --ion-color-danger: #ff4961; + --ion-color-danger-rgb: 255, 73, 97; + --ion-color-danger-contrast: #ffffff; + --ion-color-danger-contrast-rgb: 255, 255, 255; + --ion-color-danger-shade: #e04055; + --ion-color-danger-tint: #ff5b71; + + --ion-color-dark: #f4f5f8; + --ion-color-dark-rgb: 244, 245, 248; + --ion-color-dark-contrast: #000000; + --ion-color-dark-contrast-rgb: 0, 0, 0; + --ion-color-dark-shade: #d7d8da; + --ion-color-dark-tint: #f5f6f9; + + --ion-color-medium: #989aa2; + --ion-color-medium-rgb: 152, 154, 162; + --ion-color-medium-contrast: #000000; + --ion-color-medium-contrast-rgb: 0, 0, 0; + --ion-color-medium-shade: #86888f; + --ion-color-medium-tint: #a2a4ab; + + --ion-color-light: #222428; + --ion-color-light-rgb: 34, 36, 40; + --ion-color-light-contrast: #ffffff; + --ion-color-light-contrast-rgb: 255, 255, 255; + --ion-color-light-shade: #1e2023; + --ion-color-light-tint: #383a3e; +} + +/* + * iOS Dark Theme + * ------------------------------------------- + */ + +.ios body.dark { + --ion-background-color: #000000; + --ion-background-color-rgb: 0, 0, 0; + + --ion-text-color: #ffffff; + --ion-text-color-rgb: 255, 255, 255; + + --ion-color-step-50: #0d0d0d; + --ion-color-step-100: #1a1a1a; + --ion-color-step-150: #262626; + --ion-color-step-200: #333333; + --ion-color-step-250: #404040; + --ion-color-step-300: #4d4d4d; + --ion-color-step-350: #595959; + --ion-color-step-400: #666666; + --ion-color-step-450: #737373; + --ion-color-step-500: #808080; + --ion-color-step-550: #8c8c8c; + --ion-color-step-600: #999999; + --ion-color-step-650: #a6a6a6; + --ion-color-step-700: #b3b3b3; + --ion-color-step-750: #bfbfbf; + --ion-color-step-800: #cccccc; + --ion-color-step-850: #d9d9d9; + --ion-color-step-900: #e6e6e6; + --ion-color-step-950: #f2f2f2; + + --ion-toolbar-background: #0d0d0d; + + --ion-item-background: #1c1c1c; + --ion-item-background-activated: #313131; +} + +/* + * Material Design Dark Theme + * ------------------------------------------- + */ + +.md body.dark { + --ion-background-color: #121212; + --ion-background-color-rgb: 18, 18, 18; + + --ion-text-color: #ffffff; + --ion-text-color-rgb: 255, 255, 255; + + --ion-border-color: #222222; + + --ion-color-step-50: #1e1e1e; + --ion-color-step-100: #2a2a2a; + --ion-color-step-150: #363636; + --ion-color-step-200: #414141; + --ion-color-step-250: #4d4d4d; + --ion-color-step-300: #595959; + --ion-color-step-350: #656565; + --ion-color-step-400: #717171; + --ion-color-step-450: #7d7d7d; + --ion-color-step-500: #898989; + --ion-color-step-550: #949494; + --ion-color-step-600: #a0a0a0; + --ion-color-step-650: #acacac; + --ion-color-step-700: #b8b8b8; + --ion-color-step-750: #c4c4c4; + --ion-color-step-800: #d0d0d0; + --ion-color-step-850: #dbdbdb; + --ion-color-step-900: #e7e7e7; + --ion-color-step-950: #f3f3f3; + + --ion-item-background: #1a1b1e; +} + +@media (prefers-color-scheme: dark) { + :root { + --color-toolbar-background: #2a2a2a; + --color-toolbar-text: white; + } +} + +@media (prefers-color-scheme: light) { + :root { + --color-toolbar-background: white; + --color-toolbar-text: dark; + } +}