모바일 - 문의사항 목록 디자인 적용

This commit is contained in:
현성필
2025-12-12 15:18:26 +09:00
parent f9b9a2ee43
commit b5670aab62
8 changed files with 389 additions and 8 deletions
+146
View File
@@ -4192,6 +4192,7 @@ select.form-control {
@media (max-width: 768px) { @media (max-width: 768px) {
.search-field { .search-field {
width: 100%; width: 100%;
margin-top: 10px;
} }
} }
.search-field input { .search-field input {
@@ -15768,6 +15769,151 @@ input[type=checkbox]:checked + .custom-checkbox {
font-weight: 700; font-weight: 700;
color: #212529; color: #212529;
} }
.inquiry-list-container .list-table .list-table-header .header-cell:nth-child(1) {
display: none;
}
.inquiry-list-container .list-table .list-table-header .header-cell:nth-child(2) {
flex: 1 !important;
min-width: 100px;
}
.inquiry-list-container .list-table .list-table-header .header-cell:nth-child(3) {
width: 50px !important;
min-width: 50px;
flex: none;
justify-content: center;
}
.inquiry-list-container .list-table .list-table-header .header-cell:nth-child(4) {
width: 65px !important;
min-width: 65px;
flex: none;
justify-content: center;
}
.inquiry-list-container .list-table .list-table-header .header-cell:nth-child(5) {
display: none;
}
.inquiry-list-container .list-table .list-table-row .row-cell:nth-child(1), .inquiry-list-container .list-table .list-table-row .row-cell.row-cell--number {
display: none;
}
.inquiry-list-container .list-table .list-table-row .row-cell:nth-child(2), .inquiry-list-container .list-table .list-table-row .row-cell.row-cell--title {
flex: 1 !important;
min-width: 100px;
justify-content: flex-start;
}
.inquiry-list-container .list-table .list-table-row .row-cell:nth-child(2) .notice-title-link, .inquiry-list-container .list-table .list-table-row .row-cell.row-cell--title .notice-title-link {
display: flex;
align-items: center;
gap: 4px;
overflow: hidden;
}
.inquiry-list-container .list-table .list-table-row .row-cell:nth-child(2) .notice-title-link .notice-number, .inquiry-list-container .list-table .list-table-row .row-cell.row-cell--title .notice-title-link .notice-number {
display: none !important;
}
.inquiry-list-container .list-table .list-table-row .row-cell:nth-child(2) .notice-title-link > span:not(.notice-number):not(.file-icon), .inquiry-list-container .list-table .list-table-row .row-cell.row-cell--title .notice-title-link > span:not(.notice-number):not(.file-icon) {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.inquiry-list-container .list-table .list-table-row .row-cell:nth-child(2) .notice-title-link .file-icon, .inquiry-list-container .list-table .list-table-row .row-cell.row-cell--title .notice-title-link .file-icon {
flex-shrink: 0;
width: 16px;
height: 16px;
}
.inquiry-list-container .list-table .list-table-row .row-cell:nth-child(2) .notice-title-link .file-icon svg, .inquiry-list-container .list-table .list-table-row .row-cell.row-cell--title .notice-title-link .file-icon svg {
width: 16px;
height: 16px;
}
.inquiry-list-container .list-table .list-table-row .row-cell:nth-child(3) {
width: 50px !important;
min-width: 50px;
flex: none;
justify-content: center;
text-align: center;
}
.inquiry-list-container .list-table .list-table-row .row-cell:nth-child(4) {
width: 65px !important;
min-width: 65px;
flex: none;
justify-content: center;
text-align: center;
}
.inquiry-list-container .list-table .list-table-row .row-cell:nth-child(4) .inquiry-status-badge {
height: 24px;
padding: 0 8px;
font-size: 12px;
}
.inquiry-list-container .list-table .list-table-row .row-cell:nth-child(5) {
display: none;
}
.inquiry-list-container .inquiry-actions {
order: 4;
width: 100%;
margin-top: 0;
}
.inquiry-list-container .inquiry-actions .btn {
width: 100%;
height: 44px;
display: flex;
align-items: center;
justify-content: center;
}
.inquiry-list-container .table-controls .search-field {
order: 2;
width: 100%;
}
.notice-list-container .list-table .list-table-header .header-cell:nth-child(1) {
display: none;
}
.notice-list-container .list-table .list-table-header .header-cell:nth-child(2) {
flex: 1 !important;
min-width: 100px;
}
.notice-list-container .list-table .list-table-header .header-cell:nth-child(3) {
width: 70px !important;
min-width: 70px;
flex: none;
}
.notice-list-container .list-table .list-table-row .row-cell:nth-child(1), .notice-list-container .list-table .list-table-row .row-cell.row-cell--number {
display: none;
}
.notice-list-container .list-table .list-table-row .row-cell:nth-child(2), .notice-list-container .list-table .list-table-row .row-cell.row-cell--title {
flex: 1 !important;
min-width: 100px;
justify-content: flex-start;
}
.notice-list-container .list-table .list-table-row .row-cell:nth-child(2) .notice-title-link, .notice-list-container .list-table .list-table-row .row-cell.row-cell--title .notice-title-link {
display: flex;
align-items: center;
gap: 4px;
overflow: hidden;
}
.notice-list-container .list-table .list-table-row .row-cell:nth-child(2) .notice-title-link .notice-number, .notice-list-container .list-table .list-table-row .row-cell.row-cell--title .notice-title-link .notice-number {
display: none !important;
}
.notice-list-container .list-table .list-table-row .row-cell:nth-child(2) .notice-title-link > span:not(.notice-number):not(.file-icon), .notice-list-container .list-table .list-table-row .row-cell.row-cell--title .notice-title-link > span:not(.notice-number):not(.file-icon) {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.notice-list-container .list-table .list-table-row .row-cell:nth-child(2) .notice-title-link .file-icon, .notice-list-container .list-table .list-table-row .row-cell.row-cell--title .notice-title-link .file-icon {
flex-shrink: 0;
width: 16px;
height: 16px;
}
.notice-list-container .list-table .list-table-row .row-cell:nth-child(2) .notice-title-link .file-icon svg, .notice-list-container .list-table .list-table-row .row-cell.row-cell--title .notice-title-link .file-icon svg {
width: 16px;
height: 16px;
}
.notice-list-container .list-table .list-table-row .row-cell:nth-child(3) {
width: 70px !important;
min-width: 70px;
flex: none;
justify-content: center;
text-align: center;
}
.notice-list-container .table-controls .search-field {
order: 2;
width: 100%;
}
.org-register-container { .org-register-container {
padding: 24px 16px; padding: 24px 16px;
} }
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -702,6 +702,7 @@ select.form-control {
@include respond-to('sm') { @include respond-to('sm') {
width: 100%; width: 100%;
margin-top: 10px;
} }
input { input {
@@ -677,6 +677,243 @@
} }
} }
// -----------------------------------------------------------------------------
// Inquiry List Mobile Styles - Q&A 목록 모바일 디자인
// 5 columns: NO, 제목, 작성자, 처리상태, 등록일
// -----------------------------------------------------------------------------
.inquiry-list-container {
.list-table {
.list-table-header {
.header-cell {
// NO 컬럼 - 모바일에서 숨김
&:nth-child(1) {
display: none;
}
// 제목 컬럼 - flex 1
&:nth-child(2) {
flex: 1 !important;
min-width: 100px;
}
// 작성자 컬럼 - 50px, 가운데 정렬
&:nth-child(3) {
width: 50px !important;
min-width: 50px;
flex: none;
justify-content: center;
}
// 처리상태 컬럼 - 65px, 가운데 정렬
&:nth-child(4) {
width: 65px !important;
min-width: 65px;
flex: none;
justify-content: center;
}
// 등록일 컬럼 - 모바일에서 숨김
&:nth-child(5) {
display: none;
}
}
}
.list-table-row {
.row-cell {
// NO 컬럼 - 모바일에서 숨김
&:nth-child(1),
&.row-cell--number {
display: none;
}
// 제목 컬럼 - flex 1
&:nth-child(2),
&.row-cell--title {
flex: 1 !important;
min-width: 100px;
justify-content: flex-start;
.notice-title-link {
display: flex;
align-items: center;
gap: 4px;
overflow: hidden;
// 모바일에서 번호 프리픽스 숨김 (NO 컬럼 대신 표시되는 것 방지)
.notice-number {
display: none !important;
}
> span:not(.notice-number):not(.file-icon) {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.file-icon {
flex-shrink: 0;
width: 16px;
height: 16px;
svg {
width: 16px;
height: 16px;
}
}
}
}
// 작성자 컬럼 - 50px, 가운데 정렬
&:nth-child(3) {
width: 50px !important;
min-width: 50px;
flex: none;
justify-content: center;
text-align: center;
}
// 처리상태 컬럼 - 65px, 가운데 정렬
&:nth-child(4) {
width: 65px !important;
min-width: 65px;
flex: none;
justify-content: center;
text-align: center;
.inquiry-status-badge {
height: 24px;
padding: 0 8px;
font-size: 12px;
}
}
// 등록일 컬럼 - 모바일에서 숨김
&:nth-child(5) {
display: none;
}
}
}
}
// 질문하기 버튼 영역
.inquiry-actions {
order: 4;
width: 100%;
margin-top: 0;
.btn {
width: 100%;
height: 44px;
display: flex;
align-items: center;
justify-content: center;
}
}
// 검색 필드 스타일
.table-controls {
.search-field {
order: 2;
width: 100%;
}
}
}
// -----------------------------------------------------------------------------
// Notice List Mobile Styles - 공지사항 목록 모바일 디자인
// 3 columns: NO, 제목, 등록일
// -----------------------------------------------------------------------------
.notice-list-container {
.list-table {
.list-table-header {
.header-cell {
// NO 컬럼 - 모바일에서 숨김
&:nth-child(1) {
display: none;
}
// 제목 컬럼 - flex 1, 헤더는 가운데 정렬
&:nth-child(2) {
flex: 1 !important;
min-width: 100px;
}
// 등록일 컬럼 - 70px, 가운데 정렬
&:nth-child(3) {
width: 70px !important;
min-width: 70px;
flex: none;
}
}
}
.list-table-row {
.row-cell {
// NO 컬럼 - 모바일에서 숨김
&:nth-child(1),
&.row-cell--number {
display: none;
}
// 제목 컬럼 - flex 1, 데이터는 왼쪽 정렬
&:nth-child(2),
&.row-cell--title {
flex: 1 !important;
min-width: 100px;
justify-content: flex-start;
.notice-title-link {
display: flex;
align-items: center;
gap: 4px;
overflow: hidden;
// 모바일에서 번호 프리픽스 숨김
.notice-number {
display: none !important;
}
> span:not(.notice-number):not(.file-icon) {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.file-icon {
flex-shrink: 0;
width: 16px;
height: 16px;
svg {
width: 16px;
height: 16px;
}
}
}
}
// 등록일 컬럼 - 70px, 가운데 정렬
&:nth-child(3) {
width: 70px !important;
min-width: 70px;
flex: none;
justify-content: center;
text-align: center;
}
}
}
}
// 검색 필드 스타일
.table-controls {
.search-field {
order: 2;
width: 100%;
}
}
}
// ----------------------------------------------------------------------------- // -----------------------------------------------------------------------------
// User Detail Page Mobile Styles - Figma Design // User Detail Page Mobile Styles - Figma Design
// 이용자 상세 페이지 모바일 디자인 // 이용자 상세 페이지 모바일 디자인
@@ -11,7 +11,7 @@
</section> </section>
<th:block layout:fragment="contentFragment"> <th:block layout:fragment="contentFragment">
<section class="user-management-container"> <section class="user-management-container inquiry-list-container">
<!-- Search and Filter Controls --> <!-- Search and Filter Controls -->
<form name="inquiryForm" th:action="@{/inquiry}" method="get" onsubmit="return false;"> <form name="inquiryForm" th:action="@{/inquiry}" method="get" onsubmit="return false;">
@@ -85,9 +85,6 @@
<!-- Empty State --> <!-- Empty State -->
<div class="user-empty-state" th:if="${inquiries.isEmpty()}"> <div class="user-empty-state" th:if="${inquiries.isEmpty()}">
<div class="empty-icon">
<img th:src="@{/img/img_nodata.png}" alt="데이터 없음">
</div>
<h3>조회된 Q&A가 없습니다</h3> <h3>조회된 Q&A가 없습니다</h3>
<p>검색 조건을 변경하거나 새로운 질문을 등록해주세요.</p> <p>검색 조건을 변경하거나 새로운 질문을 등록해주세요.</p>
</div> </div>
@@ -11,7 +11,7 @@
</section> </section>
<th:block layout:fragment="contentFragment"> <th:block layout:fragment="contentFragment">
<section class="user-management-container"> <section class="user-management-container notice-list-container">
<!-- Search and Filter Controls --> <!-- Search and Filter Controls -->
<form name="noticeForm" th:action="@{/portalnotice}" method="get" onsubmit="return false;"> <form name="noticeForm" th:action="@{/portalnotice}" method="get" onsubmit="return false;">