Skip to content

Commit

Permalink
Theme selector for the viewer UI
Browse files Browse the repository at this point in the history
  • Loading branch information
ltouroumov committed Oct 21, 2024
1 parent 5111748 commit bef4474
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 18 deletions.
41 changes: 28 additions & 13 deletions components/viewer/utils/ViewerSettings.vue
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,35 @@
<div>
<h5 class="text-center">Viewer</h5>
<ul class="list-group mb-5 shadow">
<li
class="list-group-item d-flex justify-content-between align-items-center"
>
<div class="form-check form-switch">
<input
id="lightThemeUI"
v-model="lightThemeUI"
class="form-check-input me-1"
type="checkbox"
role="switch"
/>
<label class="form-check-label" for="lightThemeUI">
Light Theme UI
<small class="text-body-secondary ms-3">
When enabled, the viewer UI will use the light theme.
</small>
</label>
</div>
</li>
<li
class="list-group-item d-flex justify-content-between align-items-center"
>
<div class="form-check form-switch">
<input
id="hideDisabledAddons"
v-model="disabledAddons"
class="form-check-input me-1"
type="checkbox"
role="switch"
:checked="disabledAddons"
@change="toggleHideDisabledAddons()"
/>
<label class="form-check-label" for="hideDisabledAddons">
Hide Disabled Addons
Expand Down Expand Up @@ -49,11 +67,10 @@
<div class="form-check form-switch">
<input
id="showDisabledAddons"
v-model="disabledAddonsInBackpack"
class="form-check-input me-1"
type="checkbox"
role="switch"
:checked="disabledAddonsInBackpack"
@change="toggleDisabledAddonsInBackpack()"
/>
<label class="form-check-label">
Show Disabled Addons
Expand All @@ -69,11 +86,10 @@
<div class="form-check form-switch">
<input
id="lockBackpackObjects"
v-model="lockBackpackObjects"
class="form-check-input me-1"
type="checkbox"
role="switch"
:checked="lockBackpackObjects"
@change="toggleLockBackpackObjects()"
/>
<label class="form-check-label" for="lockBackpackObjects">
Lock Objects in Backpack
Expand All @@ -85,7 +101,7 @@
</template>

<script setup lang="ts">
import { useSettingRefs, useSettingStore } from '~/composables/store/settings';
import { useSettingRefs } from '~/composables/store/settings';
import { useViewerRefs } from '~/composables/store/viewer';
const { viewerProjectList } = useViewerRefs();
Expand All @@ -98,11 +114,10 @@ const cyoaPreferences = computed({
const projectList = computed(() => viewerProjectList.value);
const { disabledAddons, disabledAddonsInBackpack, lockBackpackObjects } =
useSettingRefs();
const {
toggleHideDisabledAddons,
toggleDisabledAddonsInBackpack,
toggleLockBackpackObjects,
} = useSettingStore();
disabledAddons,
disabledAddonsInBackpack,
lockBackpackObjects,
lightThemeUI,
} = useSettingRefs();
</script>
2 changes: 2 additions & 0 deletions composables/store/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ export const useSettingStore = defineStore(
const disabledAddonsInBackpack = ref<boolean>(true);
const lockBackpackObjects = ref<boolean>(true);
const cyoaPreference = ref<string>('');
const lightThemeUI = ref<boolean>(false);

const hasPreference = (): boolean => {
return R.isNotEmpty(cyoaPreference.value);
Expand All @@ -30,6 +31,7 @@ export const useSettingStore = defineStore(
disabledAddonsInBackpack,
lockBackpackObjects,
cyoaPreference,
lightThemeUI,
hasPreference,
toggleLockBackpackObjects,
toggleDisabledAddonsInBackpack,
Expand Down
26 changes: 21 additions & 5 deletions pages/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,26 @@
import { definePageMeta } from '#imports';
import ProjectViewWrapper from '~/components/viewer/ProjectViewWrapper.vue';
import { useProjectRefs } from '~/composables/store/project';
import { useSettingRefs } from '~/composables/store/settings';
import { useViewerRefs } from '~/composables/store/viewer';
const { store, buildModified } = useProjectRefs();
const { viewerProjectList } = useViewerRefs();
const { lightThemeUI } = useSettingRefs();
const projectList = computed(() => viewerProjectList.value);
definePageMeta({
layout: false,
});
useHead({
bodyAttrs: {
'data-bs-theme': 'dark',
},
});
function setBodyTheme(lightTheme: boolean) {
if (lightTheme) {
document.body.setAttribute('data-bs-theme', 'light');
} else {
document.body.setAttribute('data-bs-theme', 'dark');
}
}
onMounted(() => {
window.addEventListener('beforeunload', (event: BeforeUnloadEvent) => {
Expand All @@ -36,7 +41,18 @@ onMounted(() => {
return false;
}
});
const lightTheme = lightThemeUI.value;
console.log('LT', lightTheme);
setBodyTheme(lightTheme);
});
watch(
() => lightThemeUI.value,
(newValue: boolean) => {
setBodyTheme(newValue);
},
);
</script>

<style lang="scss">
Expand Down

0 comments on commit bef4474

Please sign in to comment.