Settings dialog opening button.

This commit is contained in:
Leo Vasanko 2025-08-23 11:01:39 -06:00
parent 0383ea0a46
commit d555523f42

View File

@ -4,6 +4,7 @@ import { useCalendarStore } from '@/stores/CalendarStore'
import CalendarHeader from '@/components/CalendarHeader.vue' import CalendarHeader from '@/components/CalendarHeader.vue'
import CalendarWeek from '@/components/CalendarWeek.vue' import CalendarWeek from '@/components/CalendarWeek.vue'
import Jogwheel from '@/components/Jogwheel.vue' import Jogwheel from '@/components/Jogwheel.vue'
import SettingsDialog from '@/components/SettingsDialog.vue'
import { import {
isoWeekInfo, isoWeekInfo,
getLocalizedMonthName, getLocalizedMonthName,
@ -21,6 +22,7 @@ import { toLocalString, fromLocalString } from '@/utils/date'
const calendarStore = useCalendarStore() const calendarStore = useCalendarStore()
const viewport = ref(null) const viewport = ref(null)
const settingsDialog = ref(null)
const emit = defineEmits(['create-event', 'edit-event']) const emit = defineEmits(['create-event', 'edit-event'])
@ -424,6 +426,10 @@ const handleHeaderYearChange = ({ scrollTop: st }) => {
scrollTop.value = clamped scrollTop.value = clamped
viewport.value && (viewport.value.scrollTop = clamped) viewport.value && (viewport.value.scrollTop = clamped)
} }
function openSettings() {
settingsDialog.value?.open()
}
</script> </script>
<template> <template>
@ -432,6 +438,15 @@ const handleHeaderYearChange = ({ scrollTop: st }) => {
<h1>Calendar</h1> <h1>Calendar</h1>
<div class="header-controls"> <div class="header-controls">
<div class="today-date" @click="goToToday">{{ todayString }}</div> <div class="today-date" @click="goToToday">{{ todayString }}</div>
<button
type="button"
class="settings-btn"
@click="openSettings"
aria-label="Open settings"
title="Settings"
>
</button>
</div> </div>
</header> </header>
<CalendarHeader <CalendarHeader
@ -480,6 +495,7 @@ const handleHeaderYearChange = ({ scrollTop: st }) => {
@scroll-to="handleJogwheelScrollTo" @scroll-to="handleJogwheelScrollTo"
/> />
</div> </div>
<SettingsDialog ref="settingsDialog" />
</div> </div>
</template> </template>
@ -506,6 +522,33 @@ header h1 {
align-items: center; align-items: center;
} }
.settings-btn {
background: transparent;
border: none;
color: var(--muted);
padding: 0;
margin: 0;
margin-right: 0.6rem;
cursor: pointer;
font-size: 1.5rem;
line-height: 1;
display: inline-flex;
align-items: center;
justify-content: center;
outline: none;
}
.settings-btn:hover {
color: var(--strong);
}
.settings-btn:focus-visible {
/* Keep visual accessibility without background */
outline: 2px solid var(--selected);
outline-offset: 2px;
}
.settings-btn:active {
transform: scale(0.88);
}
.today-date { .today-date {
cursor: pointer; cursor: pointer;
padding: 0.5rem; padding: 0.5rem;