diff --git a/components/admin/AdminSelectInput.vue b/components/admin/AdminSelectInput.vue new file mode 100644 index 0000000..c5bee96 --- /dev/null +++ b/components/admin/AdminSelectInput.vue @@ -0,0 +1,67 @@ + + + diff --git a/docs/map.md b/docs/map.md index 82f3f3f..451bd62 100644 --- a/docs/map.md +++ b/docs/map.md @@ -189,6 +189,7 @@ | components/admin/AdminConfirmModal.vue | 관리자 공통 확인 모달(제목·본문 슬롯·확인/취소 버튼, primary/danger 톤) | | components/admin/AdminToast.vue | 관리자 공통 우측 상단 토스트 표시(성공·오류·안내 톤, 화면별 상단 위치 조정) | | components/admin/AdminSearchInput.vue | 관리자 공통 검색 입력(돋보기 아이콘, IME 검색 이벤트 전달, 외부 focus/select 노출) | +| components/admin/AdminSelectInput.vue | 관리자 공통 select 입력(기본 필터·정렬 옵션, chevron 아이콘, `v-model` 전달) | | components/admin/AdminPagination.vue | 관리자 공통 번호형 페이지네이션(이전·다음 화살표, 첫/끝/현재 주변 페이지, ellipsis 접기) | | components/admin/AdminAnalyticsTrendChart.vue | 관리자 통계 추이 막대 차트(축 라벨·증감 툴팁·기간 페이지 이동) | | lib/analytics-chart-ui.js | 통계 차트 라벨·페이지네이션·증감 계산 유틸 | diff --git a/docs/todo.md b/docs/todo.md index eaf022d..02582fb 100644 --- a/docs/todo.md +++ b/docs/todo.md @@ -10,7 +10,7 @@ - `pages/admin/media/index.vue`: 미디어 목록, 폴더 트리, 상세 모달, 재생성 액션을 작은 단위로 분리. - 관리자 UI 공통 컴포넌트 정리. - 모달 패널, 필터 팝오버의 radius·shadow·z-index·색상 규칙을 공통화. - - 게시글/페이지/미디어 목록의 필터·정렬 레이아웃을 같은 패턴으로 유지. + - 게시글/페이지/미디어 목록의 고급 필터 레이아웃을 같은 패턴으로 유지. - 최근 브라우저 회귀 테스트 추가. - 태그 추천 선택 후 다음 태그 후보가 포커스 해제 없이 유지되는지 확인. - 관리자 미디어 대표 이미지/본문 이미지 탭 전환 중 역할 배지가 노출되지 않는지 확인. diff --git a/docs/update.md b/docs/update.md index bf245d5..dca7878 100644 --- a/docs/update.md +++ b/docs/update.md @@ -1,5 +1,10 @@ # 업데이트 이력 +## v1.11.8 + +- 관리자 목록 select 입력을 공용 `AdminSelectInput` 컴포넌트로 분리. +- 게시글·페이지 목록의 상태·추천·노출·정렬 필터 select 마크업과 chevron 중복 제거. + ## v1.11.7 - 관리자 목록 검색 입력을 공용 `AdminSearchInput` 컴포넌트로 분리. diff --git a/package-lock.json b/package-lock.json index f47f6d3..ab6b7c2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "sori.studio", - "version": "1.11.7", + "version": "1.11.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sori.studio", - "version": "1.11.7", + "version": "1.11.8", "hasInstallScript": true, "dependencies": { "@nuxtjs/tailwindcss": "^6.14.0", diff --git a/package.json b/package.json index 4473c59..c76b5b3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sori.studio", - "version": "1.11.7", + "version": "1.11.8", "private": true, "type": "module", "imports": { diff --git a/pages/admin/pages/index.vue b/pages/admin/pages/index.vue index e8f7cdd..cc4a1d7 100644 --- a/pages/admin/pages/index.vue +++ b/pages/admin/pages/index.vue @@ -40,6 +40,27 @@ const analyticsMetricOptions = [ { label: '방문자', value: 'visitors' } ] +/** 페이지 상태 필터 옵션 */ +const pageStatusFilterOptions = [ + { value: 'all', label: '전체 상태' }, + { value: 'published', label: '공개' }, + { value: 'draft', label: '초안' }, + { value: 'private', label: '비공개' } +] + +/** 페이지 홈 노출 필터 옵션 */ +const pageListedFilterOptions = [ + { value: 'all', label: '전체 페이지' }, + { value: 'listed', label: '홈 표시' }, + { value: 'featured', label: '추천만' } +] + +/** 페이지 목록 정렬 옵션 */ +const pageSortOptions = [ + { value: 'newest', label: '최신순' }, + { value: 'oldest', label: '오래된순' } +] + /** * 페이지별 통계 기본값을 생성한다. * @returns {Object} 페이지별 통계 기본값 @@ -384,39 +405,27 @@ const deletePage = async (page) => { @compositionupdate="onSearchInput" @compositionend="onSearchCompositionEnd" /> - - - + + + 새 페이지 diff --git a/pages/admin/posts/index.vue b/pages/admin/posts/index.vue index 451872e..74e5ddd 100644 --- a/pages/admin/posts/index.vue +++ b/pages/admin/posts/index.vue @@ -94,6 +94,28 @@ const analyticsMetricOptions = [ { label: '방문자', value: 'visitors' } ] +/** 게시글 상태 필터 옵션 */ +const postStatusFilterOptions = [ + { value: 'all', label: '전체 상태' }, + { value: 'published', label: '공개' }, + { value: 'draft', label: '초안' }, + { value: 'scheduled', label: '예약' }, + { value: 'members', label: '멤버십' }, + { value: 'private', label: '비공개' } +] + +/** 게시글 추천 필터 옵션 */ +const postFeaturedFilterOptions = [ + { value: 'all', label: '전체 글' }, + { value: 'featured', label: '추천만' } +] + +/** 게시글 목록 정렬 옵션 */ +const postSortOptions = [ + { value: 'newest', label: '최신순' }, + { value: 'oldest', label: '오래된순' } +] + /** * 게시물별 통계 기본값을 생성한다. * @returns {Object} 게시물별 통계 기본값 @@ -1000,20 +1022,13 @@ watch(postPageCount, (pageCount) => { @compositionupdate="onSearchInput" @compositionend="onSearchCompositionEnd" /> - +
{ 일치하는 태그가 없습니다.

- - + + 새 글