Skip to content

Commit 7eaf52c

Browse files
views: Allow toggling views visibility
1 parent 225c24d commit 7eaf52c

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

src/components/EditMenu.vue

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@
7676
>
7777
<p class="overflow-hidden text-sm text-ellipsis ml-7 whitespace-nowrap">{{ view.name }}</p>
7878
<div class="grow" />
79+
<div
80+
class="icon-btn mdi mdi-eye"
81+
:class="{ 'mdi-eye-closed': !view.visible }"
82+
@click.stop="toggleViewVisibility(view)"
83+
/>
7984
<div class="icon-btn mdi mdi-download" @click.stop="store.exportView(view)" />
8085
<div class="icon-btn mdi mdi-content-copy" @click.stop="store.duplicateView(view)" />
8186
<div class="icon-btn mdi mdi-cog" @click.stop="renameView(view)" />
@@ -347,6 +352,14 @@ const renameView = (view: View): void => {
347352
viewRenameDialogRevealed.value = true
348353
}
349354
355+
const toggleViewVisibility = (view: View): void => {
356+
if (view.visible && view === store.currentView) {
357+
Swal.fire({ text: 'You cannot hide the current view.', icon: 'error' })
358+
return
359+
}
360+
view.visible = !view.visible
361+
}
362+
350363
const renameProfile = (profile: Profile): void => {
351364
profileBeingRenamed.value = profile
352365
newProfileName.value = profile.name

src/components/mini-widgets/ViewSelector.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<Dropdown
44
name-key="name"
55
:model-value="widgetStore.currentView"
6-
:options="widgetStore.currentProfile.views"
6+
:options="widgetStore.viewsToShow"
77
class="min-w-[128px]"
88
@update:model-value="widgetStore.selectView"
99
/>

src/stores/widgetManager.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ export const useWidgetManagerStore = defineStore('widget-manager', () => {
6666
const viewsOnShowOrder = currentProfile.value.views.slice()
6767
viewsOnShowOrder.splice(currentViewIndex.value, 1)
6868
viewsOnShowOrder.push(currentProfile.value.views[currentViewIndex.value])
69-
return viewsOnShowOrder
69+
return viewsOnShowOrder.filter((v) => v.visible)
7070
})
7171

7272
const miniWidgetContainersInCurrentView = computed(() => {
@@ -299,6 +299,10 @@ export const useWidgetManagerStore = defineStore('widget-manager', () => {
299299
* @param { View } view - View
300300
*/
301301
const selectView = (view: View): void => {
302+
if (!view.visible) {
303+
Swal.fire({ icon: 'error', text: 'Cannot select a view that is not visible.', timer: 5000 })
304+
return
305+
}
302306
const index = currentProfile.value.views.indexOf(view)
303307
currentViewIndex.value = index
304308
}

0 commit comments

Comments
 (0)