localhost-front/src/stores/writeVisible.js
2025-02-27 11:23:56 +09:00

48 lines
1.3 KiB
JavaScript

/*
작성자 : 조대원
작성일 : 2025-02-27
수정자 :
수정일 :
설명 : 용어집 작성, 수정 공통관리
*/
import { ref } from 'vue';
import { defineStore } from 'pinia';
export const useWriteVisibleStore = defineStore('writeVisible', () => {
// 현재 열려있는 항목의 ID를 저장 (열린 것이 없으면 null)
const activeItemId = ref(null);
// 특정 항목의 열림/닫힘 상태 확인
function isItemActive(itemId) {
return activeItemId.value === itemId;
}
// 항목 토글 - 현재 열려있으면 닫고, 닫혀있으면 열기
function toggleItem(itemId) {
if (activeItemId.value === itemId) {
// 현재 열려있는 항목을 다시 클릭하면 닫기
activeItemId.value = null;
} else {
// 다른 항목 클릭시 해당 항목을 열고 이전 항목은 자동으로 닫힘
activeItemId.value = itemId;
}
}
// 특정 항목 강제로 열기 (다른 항목은 닫힘)
function setActiveItem(itemId) {
activeItemId.value = itemId;
}
// 모든 항목 닫기
function closeAll() {
activeItemId.value = null;
}
return {
activeItemId,
isItemActive,
toggleItem,
setActiveItem,
closeAll
};
});