style: Integrate search form and table into single card container
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m3s
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m3s
- Consolidate filter/search form with data table in one card - Separate with <hr class='my-0'> for visual hierarchy - Remove redundant card-mb spacing and gaps - Unified layout for Blog, Clients, Inquiries pages - Cleaner, more cohesive data display Applied to: - Blog/Index.cshtml - Clients/Index.cshtml - Inquiries/Index.cshtml Announcements and Faqs already have integrated structure (no search form) Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -7,33 +7,25 @@
|
||||
<section class="admin-page-shell">
|
||||
@await Html.PartialAsync("_AdminPageHeader", new TaxBaik.Web.Models.AdminPageHeaderModel("콘텐츠", "블로그 관리", "검색, 발행 상태, 작성일 기준의 블로그 목록입니다.", "/admin/blog/create", "새 글 작성"))
|
||||
|
||||
<form method="get" class="card mb-3">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row g-3 align-items-end">
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="SearchQuery">검색</label>
|
||||
<input class="form-control" id="SearchQuery" name="searchQuery" value="@Model.SearchQuery" placeholder="제목 또는 본문 검색" />
|
||||
<form method="get">
|
||||
<div class="row g-3 align-items-end">
|
||||
<div class="col-md-6">
|
||||
<label class="form-label" for="SearchQuery">검색</label>
|
||||
<input class="form-control" id="SearchQuery" name="searchQuery" value="@Model.SearchQuery" placeholder="제목 또는 본문 검색" />
|
||||
</div>
|
||||
<div class="col-md-6 d-flex gap-2">
|
||||
<button class="btn btn-primary" type="submit">검색</button>
|
||||
<a class="btn btn-outline-secondary" href="/admin/blog">초기화</a>
|
||||
<a class="btn btn-outline-secondary" href="/admin/blog?showArchived=true">내린 글 보기</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 d-flex gap-2">
|
||||
<button class="btn btn-primary" type="submit">검색</button>
|
||||
<a class="btn btn-outline-secondary" href="/admin/blog">초기화</a>
|
||||
<a class="btn btn-outline-secondary" href="/admin/blog?showArchived=true">내린 글 보기</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@if (Model.Items.Count == 0)
|
||||
{
|
||||
<div class="card">
|
||||
<div class="card-body py-4">
|
||||
@await Html.PartialAsync("_EmptyState", "블로그 글이 없습니다.")
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="card">
|
||||
@if (Model.Items.Count > 0)
|
||||
{
|
||||
<hr class="my-0" />
|
||||
<div class="table-responsive">
|
||||
<table class="table table-vcenter card-table table-hover">
|
||||
<thead>
|
||||
@@ -67,8 +59,14 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="card-body py-4">
|
||||
@await Html.PartialAsync("_EmptyState", "블로그 글이 없습니다.")
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
@@ -7,48 +7,40 @@
|
||||
<section class="admin-page-shell">
|
||||
@await Html.PartialAsync("_AdminPageHeader", new TaxBaik.Web.Models.AdminPageHeaderModel("고객 관리", "고객 목록", "검색, 상태 필터, 페이지네이션 기준의 고객 목록입니다.", "/admin/clients/create", "고객 등록"))
|
||||
|
||||
<form method="get" class="card mb-4">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row g-3 align-items-end">
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" for="Search">검색</label>
|
||||
<input class="form-control" id="Search" name="search" value="@Model.Search" placeholder="이름, 전화, 회사명" />
|
||||
<form method="get">
|
||||
<div class="row g-3 align-items-end">
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" for="Search">검색</label>
|
||||
<input class="form-control" id="Search" name="search" value="@Model.Search" placeholder="이름, 전화, 회사명" />
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label" for="Status">상태</label>
|
||||
<select class="form-select" id="Status" name="status">
|
||||
<option value="" selected="@(string.IsNullOrWhiteSpace(Model.Status))">전체</option>
|
||||
<option value="active" selected="@(Model.Status == "active")">active</option>
|
||||
<option value="inactive" selected="@(Model.Status == "inactive")">inactive</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<label class="form-label" for="PageSize">페이지 크기</label>
|
||||
<select class="form-select" id="PageSize" name="pageSize">
|
||||
<option value="10" selected="@(Model.PageSize == 10)">10</option>
|
||||
<option value="20" selected="@(Model.PageSize == 20)">20</option>
|
||||
<option value="50" selected="@(Model.PageSize == 50)">50</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-3 d-grid d-sm-flex gap-2">
|
||||
<button class="btn btn-primary" type="submit">검색</button>
|
||||
<a class="btn btn-outline-secondary" href="/admin/clients">초기화</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label class="form-label" for="Status">상태</label>
|
||||
<select class="form-select" id="Status" name="status">
|
||||
<option value="" selected="@(string.IsNullOrWhiteSpace(Model.Status))">전체</option>
|
||||
<option value="active" selected="@(Model.Status == "active")">active</option>
|
||||
<option value="inactive" selected="@(Model.Status == "inactive")">inactive</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<label class="form-label" for="PageSize">페이지 크기</label>
|
||||
<select class="form-select" id="PageSize" name="pageSize">
|
||||
<option value="10" selected="@(Model.PageSize == 10)">10</option>
|
||||
<option value="20" selected="@(Model.PageSize == 20)">20</option>
|
||||
<option value="50" selected="@(Model.PageSize == 50)">50</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-3 d-grid d-sm-flex gap-2">
|
||||
<button class="btn btn-primary" type="submit">검색</button>
|
||||
<a class="btn btn-outline-secondary" href="/admin/clients">초기화</a>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@if (Model.Items.Count == 0)
|
||||
{
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
@await Html.PartialAsync("_EmptyState", "검색 결과가 없습니다.")
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="card">
|
||||
@if (Model.Items.Count > 0)
|
||||
{
|
||||
<hr class="my-0" />
|
||||
<div class="table-responsive">
|
||||
<table class="table table-vcenter card-table table-hover">
|
||||
<thead>
|
||||
@@ -81,8 +73,14 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="card-body">
|
||||
@await Html.PartialAsync("_EmptyState", "검색 결과가 없습니다.")
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
|
||||
@await Html.PartialAsync("_Pagination", new TaxBaik.Web.Pages.Shared.PaginationModel(Model.CurrentPage, Model.TotalPages, Model.BuildPageUrl))
|
||||
</section>
|
||||
|
||||
@@ -4,30 +4,23 @@
|
||||
|
||||
<section class="admin-page-shell">
|
||||
@await Html.PartialAsync("_AdminPageHeader", new TaxBaik.Web.Models.AdminPageHeaderModel("Customer Requests", "문의 관리", "상담 요청을 상태별로 확인합니다.", "/admin/inquiries/create", "문의 등록"))
|
||||
<form method="get" class="card mb-3">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="row g-3 align-items-end">
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" for="Status">상태</label>
|
||||
<input class="form-control" id="Status" name="status" value="@Model.Status" placeholder="new / consulting / contracted ..." />
|
||||
<form method="get">
|
||||
<div class="row g-3 align-items-end">
|
||||
<div class="col-md-4">
|
||||
<label class="form-label" for="Status">상태</label>
|
||||
<input class="form-control" id="Status" name="status" value="@Model.Status" placeholder="new / consulting / contracted ..." />
|
||||
</div>
|
||||
<div class="col-md-2 d-grid">
|
||||
<button class="btn btn-primary" type="submit">필터</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-2 d-grid">
|
||||
<button class="btn btn-primary" type="submit">필터</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
@if (Model.Items.Count == 0)
|
||||
{
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
@await Html.PartialAsync("_EmptyState", "문의 목록이 없습니다.")
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="card">
|
||||
@if (Model.Items.Count > 0)
|
||||
{
|
||||
<hr class="my-0" />
|
||||
<div class="table-responsive">
|
||||
<table class="table table-vcenter card-table table-hover">
|
||||
<thead>
|
||||
@@ -60,8 +53,14 @@
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
<div class="card-body">
|
||||
@await Html.PartialAsync("_EmptyState", "문의 목록이 없습니다.")
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user