From 1b5292a7f02abdb1be09e65aaf9402f1d6e9964c Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Sun, 8 Jul 2018 19:13:21 +0530 Subject: [PATCH] feat(theme): Add dark theme Add a new stylesheet which overrides the css variables in the core stylesheet to obtain a dark theme --- index.html | 20 ++++++++++++++++++++ src/dark.css | 17 +++++++++++++++++ src/style.css | 21 +++++++++++++-------- 3 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 src/dark.css diff --git a/index.html b/index.html index 36cee9e..1a3588e 100644 --- a/index.html +++ b/index.html @@ -23,6 +23,10 @@ Large Data +
@@ -48,6 +52,22 @@ makeDatatable(); }); + document.querySelector('#dark-theme').addEventListener('change', (e) => { + const enabled = document.querySelector('#dark-theme:checked'); + if (enabled) { + const link = document.createElement('link'); + link.href = 'src/dark.css'; + link.rel = 'stylesheet' + link.id = 'dark-theme-stylesheet' + document.head.appendChild(link); + + link.onload = () => datatable.setDimensions() + } else { + document.getElementById('dark-theme-stylesheet').remove(); + setTimeout(() => datatable.setDimensions()) + } + }) + function buildData() { columns = [ { name: "Name" }, diff --git a/src/dark.css b/src/dark.css new file mode 100644 index 0000000..447da04 --- /dev/null +++ b/src/dark.css @@ -0,0 +1,17 @@ +.datatable { + --border-color: #424242; + --light-bg: #2e3538; + --text-color: #dfe2e5; + --text-light: #dfe2e5; + --cell-bg: #1c1f20; + --focus-border-width: 1px; + --selection-highlight-color: var(--light-bg); +} + +.dt-header .dt-cell:not(.dt-cell--highlight) { + background-color: #262c2e; +} + +.dt-toast__message { + border: 1px solid var(--border-color); +} \ No newline at end of file diff --git a/src/style.css b/src/style.css index cc82a3e..8e893ff 100644 --- a/src/style.css +++ b/src/style.css @@ -1,4 +1,4 @@ -:root { +.datatable { --border-color: #d1d8dd; --primary-color: rgb(82, 146, 247); --light-bg: #f5f7fa; @@ -15,6 +15,8 @@ --border-radius: 3px; --cell-bg: #fff; + --focus-border-width: 2px; + --selection-highlight-color: var(--light-yellow); } .datatable { @@ -35,7 +37,6 @@ position: absolute; top: 0; left: 0; - background-color: var(--cell-bg); } .dt-body { @@ -48,7 +49,7 @@ border-bottom: 1px solid var(--border-color); &--highlight-all { - background-color: var(--light-yellow); + background-color: var(--selection-highlight-color); } &__no-data { @@ -60,11 +61,11 @@ } .dt-row { - &--highlight { - background-color: var(--light-yellow); + &--highlight .dt-cell { + background-color: var(--selection-highlight-color); } - &--unhighlight { + &--unhighlight .dt-cell { background-color: var(--cell-bg); } @@ -78,10 +79,12 @@ position: relative; outline: none; padding: 0; + background-color: var(--cell-bg); + color: var(--text-color); &__content { padding: var(--spacer-2); - border: 2px solid transparent; + border: var(--focus-border-width) solid transparent; height: 100%; user-select: none; text-overflow: ellipsis; @@ -93,7 +96,7 @@ display: none; padding: var(--spacer-2); background-color: var(--cell-bg); - border: 2px solid var(--orange); + border: var(--focus-border-width) solid var(--orange); z-index: 1; height: 100%; } @@ -225,6 +228,8 @@ font-family: inherit; font-size: inherit; line-height: inherit; + background-color: inherit; + color: inherit; margin: 0; padding: 0; }