diff options
author | Birte Kristina Friesel <derf@finalrewind.org> | 2024-03-23 15:23:26 +0100 |
---|---|---|
committer | Birte Kristina Friesel <derf@finalrewind.org> | 2024-03-23 15:23:26 +0100 |
commit | 2539e9f0aec1a54dae2646d8a02d27d71c660966 (patch) | |
tree | a15b43bbe37db4e9a77995ff0d8245d66e117165 | |
parent | 150c5a137f8c34faf6936c8c64a4949224c319c9 (diff) |
Allow light/dark/auto rather than just light/dark for theme
Replaces the theme switcher in the nav bar with a less intrusive link at the
bottom.
Closes #125
-rw-r--r-- | public/static/js/travelynx-actions.js | 9 | ||||
-rw-r--r-- | sass/src/common/local.scss | 4 | ||||
-rw-r--r-- | templates/layouts/default.html.ep | 20 |
3 files changed, 23 insertions, 10 deletions
diff --git a/public/static/js/travelynx-actions.js b/public/static/js/travelynx-actions.js index 52ca482..d20eab7 100644 --- a/public/static/js/travelynx-actions.js +++ b/public/static/js/travelynx-actions.js @@ -9,6 +9,15 @@ var j_arrival = 0; var j_dest = ''; var j_stops = []; var j_token = ''; + +function setTheme(theme) { + localStorage.setItem('theme', theme); + if (!otherTheme.hasOwnProperty(theme)) { + theme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; + } + addStyleSheet(theme, 'theme'); +} + function upd_journey_data() { $('.countdown').each(function() { const journey_token = $(this).data('token'); diff --git a/sass/src/common/local.scss b/sass/src/common/local.scss index 244da6a..5a5adda 100644 --- a/sass/src/common/local.scss +++ b/sass/src/common/local.scss @@ -7,6 +7,10 @@ cursor: pointer; } +.config a { + cursor: pointer; +} + .navbar-fixed { z-index: 1001; } diff --git a/templates/layouts/default.html.ep b/templates/layouts/default.html.ep index 64550c2..472ac38 100644 --- a/templates/layouts/default.html.ep +++ b/templates/layouts/default.html.ep @@ -46,12 +46,6 @@ currentTheme = window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'; } addStyleSheet(currentTheme, 'theme'); - - function toggleTheme() { - currentTheme = otherTheme[currentTheme] || 'light'; - localStorage.setItem('theme', currentTheme); - addStyleSheet(currentTheme, 'theme'); - } </script> %= stylesheet "/static/${av}/css/material-icons.css" % if (stash('with_map')) { @@ -95,9 +89,6 @@ </div> </div> </li> - <li class="waves-effect waves-light"> - <a onClick="javascript:toggleTheme()" title="Farbschema invertieren"><i class="material-icons" aria-label="Farbschema invertieren">invert_colors</i></a> - </li> % if ($acc) { <li class="<%= navbar_class('/history') %>"><a href='/history' title="Vergangene Zugfahrten"><i class="material-icons" aria-label="Vergangene Zugfahrten">history</i></a></li> <li class="<%= navbar_class('/account') %>"><a href="/account" title="Account"><i class="material-icons" aria-label="Account"><%= $acc->{notifications} ? 'notifications' : 'account_circle' %></i></a></li> @@ -147,8 +138,17 @@ <a href="/legend">Legende</a> </div> </div> + <div class="row"> + <div class="col s12 center-align grey-text config"> + Farbschema: + <a onClick="javascript:setTheme('light')">hell</a> + · + <a onClick="javascript:setTheme('dark')">dunkel</a> + · + <a onClick="javascript:setTheme('default')">automatisch</a> + </div> + </div> </div> - <script> if ('serviceWorker' in navigator) { window.addEventListener('load', () => { |