- 태그 AND 검색 도입 - UI/UX 디자인 개선 (칩 & 배지) - 모바일 최적화 및 레이아웃 - 성능 및 리소스 최적화 (Zero-Dependency 아이콘) - 데이터 안정성 및 기타 - 그 외 오류 복구 - Tailwind CDN 제거
27 lines
1.0 KiB
JavaScript
27 lines
1.0 KiB
JavaScript
/** 앱 전역 상태 */
|
|
import products from '../data/index.js';
|
|
import { STATUS_META } from './config.js';
|
|
|
|
export const productsData = products;
|
|
|
|
export const state = {
|
|
currentPage: 1,
|
|
activeCategories: new Set(['All']),
|
|
visibleProducts: [], // 초기값은 빈 배열로 두고 main.js나 filter.js에서 첫 계산
|
|
searchKeyword: '',
|
|
viewMode: 'grid',
|
|
selectedIds: new Set(JSON.parse(sessionStorage.getItem('selectedProductIds') || '[]')),
|
|
activeTags: new Set([]), // 선택된 태그들을 저장 (비어있으면 전체 노출)
|
|
// visible이 true인 상태만 초기 활성 필터로 저장
|
|
activeStatuses: new Set(
|
|
Object.entries(STATUS_META)
|
|
.filter(([_, meta]) => meta.isSystemVisible && meta.isDefaultActive)
|
|
.map(([status]) => status),
|
|
),
|
|
};
|
|
|
|
// 선택 내역이 변경될 때마다 세션 스토리지에 저장하는 헬퍼 함수
|
|
export function saveSelection() {
|
|
sessionStorage.setItem('selectedProductIds', JSON.stringify(Array.from(state.selectedIds)));
|
|
}
|