|
5 | 5 | <p class="header">Web Activity Time Tracker</p> |
6 | 6 | </div> |
7 | 7 | <div class="icons-block"> |
| 8 | + <img |
| 9 | + class="dark-mode-icon" |
| 10 | + height="25" |
| 11 | + src="../assets/icons/light-mode.svg" |
| 12 | + title="Disable Dark Mode" |
| 13 | + v-if="darkMode == true" |
| 14 | + @click="changeDarkMode(false)" |
| 15 | + /> |
| 16 | + <img |
| 17 | + class="dark-mode-icon" |
| 18 | + title="Enable Dark Mode" |
| 19 | + height="25" |
| 20 | + src="../assets/icons/dark-mode.svg" |
| 21 | + v-if="darkMode == false" |
| 22 | + @click="changeDarkMode(true)" |
| 23 | + /> |
8 | 24 | <a @click="openPage(SettingsTab.Dashboard)" |
9 | 25 | >{{ t('dashboard.message') }}<img height="22" src="../assets/icons/dashboard.svg" |
10 | 26 | /></a> |
@@ -79,25 +95,37 @@ import ByDays from '../components/ByDays.vue'; |
79 | 95 | import Review from '../components/Review.vue'; |
80 | 96 | import { openPage } from '../utils/open-page'; |
81 | 97 | import { SettingsTab, TypeOfList } from '../utils/enums'; |
| 98 | +import { injecStorage } from '../storage/inject-storage'; |
| 99 | +import { DARK_MODE_DEFAULT, StorageParams } from '../storage/storage-params'; |
| 100 | +import { applyDarkMode } from '../utils/dark-mode'; |
82 | 101 |
|
83 | 102 | const { t } = useI18n(); |
| 103 | +const settingsStorage = injecStorage(); |
84 | 104 |
|
85 | 105 | const activeTab = ref<TypeOfList>(); |
| 106 | +const darkMode = ref<boolean>(); |
86 | 107 |
|
87 | | -onMounted(() => { |
| 108 | +onMounted(async () => { |
88 | 109 | activeTab.value = TypeOfList.Today; |
| 110 | + darkMode.value = await settingsStorage.getValue(StorageParams.DARK_MODE, DARK_MODE_DEFAULT); |
| 111 | + if (darkMode.value) applyDarkMode(darkMode.value); |
89 | 112 | }); |
90 | 113 |
|
91 | 114 | function selectTab(type: TypeOfList) { |
92 | 115 | activeTab.value = type; |
93 | 116 | } |
| 117 | +
|
| 118 | +async function changeDarkMode(value: boolean) { |
| 119 | + await settingsStorage.saveValue(StorageParams.DARK_MODE, value); |
| 120 | + darkMode.value = value; |
| 121 | + applyDarkMode(value); |
| 122 | +} |
94 | 123 | </script> |
95 | 124 |
|
96 | 125 | <style scoped> |
97 | 126 | .headerBlock { |
98 | 127 | height: 52px; |
99 | 128 | } |
100 | | -
|
101 | 129 | .headerBlock .header { |
102 | 130 | font-size: 16px; |
103 | 131 | padding: 0 10px; |
@@ -133,4 +161,8 @@ function selectTab(type: TypeOfList) { |
133 | 161 | vertical-align: middle; |
134 | 162 | padding-left: 5px !important; |
135 | 163 | } |
| 164 | +.headerBlock .icons-block .dark-mode-icon { |
| 165 | + vertical-align: middle; |
| 166 | + margin-right: 10px; |
| 167 | +} |
136 | 168 | </style> |
0 commit comments