Layout composable changes

This commit is contained in:
tugcekucukoglu
2024-12-06 16:04:53 +03:00
parent 1c65a74541
commit 6fd2e4d96e
5 changed files with 26 additions and 36 deletions

View File

@@ -5,7 +5,7 @@ import Aura from '@primevue/themes/aura';
import Lara from '@primevue/themes/lara'; import Lara from '@primevue/themes/lara';
import { ref } from 'vue'; import { ref } from 'vue';
const { layoutConfig, setPrimary, setSurface, setPreset, isDarkTheme, setMenuMode } = useLayout(); const { layoutConfig, isDarkTheme } = useLayout();
const presets = { const presets = {
Aura, Aura,
@@ -167,9 +167,9 @@ function getPresetExt() {
function updateColors(type, color) { function updateColors(type, color) {
if (type === 'primary') { if (type === 'primary') {
setPrimary(color.name); layoutConfig.primary = color.name;
} else if (type === 'surface') { } else if (type === 'surface') {
setSurface(color.name); layoutConfig.surface = color.name;
} }
applyTheme(type, color); applyTheme(type, color);
@@ -184,7 +184,7 @@ function applyTheme(type, color) {
} }
function onPresetChange() { function onPresetChange() {
setPreset(preset.value); layoutConfig.preset = preset.value;
const presetValue = presets[preset.value]; const presetValue = presets[preset.value];
const surfacePalette = surfaces.value.find((s) => s.name === layoutConfig.surface)?.palette; const surfacePalette = surfaces.value.find((s) => s.name === layoutConfig.surface)?.palette;
@@ -192,7 +192,7 @@ function onPresetChange() {
} }
function onMenuModeChange() { function onMenuModeChange() {
setMenuMode(menuMode.value); layoutConfig.menuMode = menuMode.value;
} }
</script> </script>

View File

@@ -5,7 +5,7 @@ import AppFooter from './AppFooter.vue';
import AppSidebar from './AppSidebar.vue'; import AppSidebar from './AppSidebar.vue';
import AppTopbar from './AppTopbar.vue'; import AppTopbar from './AppTopbar.vue';
const { layoutConfig, layoutState, isSidebarActive, resetMenu } = useLayout(); const { layoutConfig, layoutState, isSidebarActive } = useLayout();
const outsideClickListener = ref(null); const outsideClickListener = ref(null);
@@ -31,7 +31,9 @@ function bindOutsideClickListener() {
if (!outsideClickListener.value) { if (!outsideClickListener.value) {
outsideClickListener.value = (event) => { outsideClickListener.value = (event) => {
if (isOutsideClicked(event)) { if (isOutsideClicked(event)) {
resetMenu(); layoutState.overlayMenuActive = false;
layoutState.staticMenuMobileActive = false;
layoutState.menuHoverActive = false;
} }
}; };
document.addEventListener('click', outsideClickListener.value); document.addEventListener('click', outsideClickListener.value);

View File

@@ -5,7 +5,7 @@ import { useRoute } from 'vue-router';
const route = useRoute(); const route = useRoute();
const { layoutState, setActiveMenuItem, onMenuToggle } = useLayout(); const { layoutState, setActiveMenuItem, toggleMenu } = useLayout();
const props = defineProps({ const props = defineProps({
item: { item: {
@@ -51,7 +51,7 @@ function itemClick(event, item) {
} }
if ((item.to || item.url) && (layoutState.staticMenuMobileActive || layoutState.overlayMenuActive)) { if ((item.to || item.url) && (layoutState.staticMenuMobileActive || layoutState.overlayMenuActive)) {
onMenuToggle(); toggleMenu();
} }
if (item.command) { if (item.command) {

View File

@@ -2,13 +2,13 @@
import { useLayout } from '@/layout/composables/layout'; import { useLayout } from '@/layout/composables/layout';
import AppConfigurator from './AppConfigurator.vue'; import AppConfigurator from './AppConfigurator.vue';
const { onMenuToggle, toggleDarkMode, isDarkTheme } = useLayout(); const { toggleMenu, toggleDarkMode, isDarkTheme } = useLayout();
</script> </script>
<template> <template>
<div class="layout-topbar"> <div class="layout-topbar">
<div class="layout-topbar-logo-container"> <div class="layout-topbar-logo-container">
<button class="layout-menu-button layout-topbar-action" @click="onMenuToggle"> <button class="layout-menu-button layout-topbar-action" @click="toggleMenu">
<i class="pi pi-bars"></i> <i class="pi pi-bars"></i>
</button> </button>
<router-link to="/" class="layout-topbar-logo"> <router-link to="/" class="layout-topbar-logo">

View File

@@ -1,4 +1,4 @@
import { computed, reactive, readonly } from 'vue'; import { computed, reactive } from 'vue';
const layoutConfig = reactive({ const layoutConfig = reactive({
preset: 'Aura', preset: 'Aura',
@@ -19,26 +19,10 @@ const layoutState = reactive({
}); });
export function useLayout() { export function useLayout() {
const setPrimary = (value) => {
layoutConfig.primary = value;
};
const setSurface = (value) => {
layoutConfig.surface = value;
};
const setPreset = (value) => {
layoutConfig.preset = value;
};
const setActiveMenuItem = (item) => { const setActiveMenuItem = (item) => {
layoutState.activeMenuItem = item.value || item; layoutState.activeMenuItem = item.value || item;
}; };
const setMenuMode = (mode) => {
layoutConfig.menuMode = mode;
};
const toggleDarkMode = () => { const toggleDarkMode = () => {
if (!document.startViewTransition) { if (!document.startViewTransition) {
executeDarkModeToggle(); executeDarkModeToggle();
@@ -54,7 +38,7 @@ export function useLayout() {
document.documentElement.classList.toggle('app-dark'); document.documentElement.classList.toggle('app-dark');
}; };
const onMenuToggle = () => { const toggleMenu = () => {
if (layoutConfig.menuMode === 'overlay') { if (layoutConfig.menuMode === 'overlay') {
layoutState.overlayMenuActive = !layoutState.overlayMenuActive; layoutState.overlayMenuActive = !layoutState.overlayMenuActive;
} }
@@ -66,12 +50,6 @@ export function useLayout() {
} }
}; };
const resetMenu = () => {
layoutState.overlayMenuActive = false;
layoutState.staticMenuMobileActive = false;
layoutState.menuHoverActive = false;
};
const isSidebarActive = computed(() => layoutState.overlayMenuActive || layoutState.staticMenuMobileActive); const isSidebarActive = computed(() => layoutState.overlayMenuActive || layoutState.staticMenuMobileActive);
const isDarkTheme = computed(() => layoutConfig.darkTheme); const isDarkTheme = computed(() => layoutConfig.darkTheme);
@@ -80,5 +58,15 @@ export function useLayout() {
const getSurface = computed(() => layoutConfig.surface); const getSurface = computed(() => layoutConfig.surface);
return { layoutConfig: readonly(layoutConfig), layoutState: readonly(layoutState), onMenuToggle, isSidebarActive, isDarkTheme, getPrimary, getSurface, setActiveMenuItem, toggleDarkMode, setPrimary, setSurface, setPreset, resetMenu, setMenuMode }; return {
layoutConfig,
layoutState,
toggleMenu,
isSidebarActive,
isDarkTheme,
getPrimary,
getSurface,
setActiveMenuItem,
toggleDarkMode
};
} }