48 lines
1.3 KiB
JavaScript
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
|
|
};
|
|
}); |