style: Apply form compaction to Create/Edit pages
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m13s
TaxBaik CI/CD / build-and-deploy (push) Successful in 1m13s
Standardize all Create and Edit forms with: - card-body p-2 padding - form-control-sm, form-select-sm, form-label-sm for compact layout - btn-sm for buttons - row g-2 spacing instead of g-3 - Consistent empty state and danger action styling Affected pages: Clients, Announcements, FAQs, Inquiries, Blog Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -6,17 +6,17 @@
|
||||
@await Html.PartialAsync("_AdminPageHeader", new TaxBaik.Web.Models.AdminPageHeaderModel("Content", "공지사항 작성", "Tabler 표준 폼으로 공지사항을 등록합니다.", null, null))
|
||||
|
||||
<form method="post" class="card">
|
||||
<div class="card-body">
|
||||
<div class="card-body p-2">
|
||||
@await Html.PartialAsync("_ValidationSummary")
|
||||
<div class="row g-3">
|
||||
<div class="row g-2">
|
||||
<div class="col-lg-8">
|
||||
<label asp-for="Input.Title" class="form-label"></label>
|
||||
<input asp-for="Input.Title" class="form-control" />
|
||||
<label asp-for="Input.Title" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Title" class="form-control form-control-sm" />
|
||||
<span asp-validation-for="Input.Title" class="text-danger small"></span>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<label asp-for="Input.DisplayType" class="form-label"></label>
|
||||
<select asp-for="Input.DisplayType" class="form-select">
|
||||
<label asp-for="Input.DisplayType" class="form-label form-label-sm"></label>
|
||||
<select asp-for="Input.DisplayType" class="form-select form-select-sm">
|
||||
<option value="info">info</option>
|
||||
<option value="success">success</option>
|
||||
<option value="warning">warning</option>
|
||||
@@ -24,33 +24,33 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label asp-for="Input.Content" class="form-label"></label>
|
||||
<textarea asp-for="Input.Content" class="form-control" rows="8"></textarea>
|
||||
<label asp-for="Input.Content" class="form-label form-label-sm"></label>
|
||||
<textarea asp-for="Input.Content" class="form-control form-control-sm" rows="8"></textarea>
|
||||
<span asp-validation-for="Input.Content" class="text-danger small"></span>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label asp-for="Input.SortOrder" class="form-label"></label>
|
||||
<input asp-for="Input.SortOrder" class="form-control" type="number" />
|
||||
<label asp-for="Input.SortOrder" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.SortOrder" class="form-control form-control-sm" type="number" />
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label asp-for="Input.StartsAt" class="form-label"></label>
|
||||
<input asp-for="Input.StartsAt" class="form-control" type="datetime-local" />
|
||||
<label asp-for="Input.StartsAt" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.StartsAt" class="form-control form-control-sm" type="datetime-local" />
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label asp-for="Input.EndsAt" class="form-label"></label>
|
||||
<input asp-for="Input.EndsAt" class="form-control" type="datetime-local" />
|
||||
<label asp-for="Input.EndsAt" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.EndsAt" class="form-control form-control-sm" type="datetime-local" />
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label class="form-check">
|
||||
<input asp-for="Input.IsActive" class="form-check-input" type="checkbox" />
|
||||
<span class="form-check-label">활성</span>
|
||||
<span class="form-check-label form-label-sm">활성</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer d-flex justify-content-end gap-2">
|
||||
<a class="btn btn-outline-secondary" href="/admin/announcements">취소</a>
|
||||
<button class="btn btn-primary" type="submit">저장</button>
|
||||
<a class="btn btn-outline-secondary btn-sm" href="/admin/announcements">취소</a>
|
||||
<button class="btn btn-primary btn-sm" type="submit">저장</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
@await Html.PartialAsync("_AdminPageHeader", new TaxBaik.Web.Models.AdminPageHeaderModel("콘텐츠", "새 글 작성", "블로그 글을 등록합니다.", null, null))
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="card-body p-2">
|
||||
@await Html.PartialAsync("_BlogEditor", new TaxBaik.Web.Pages.Shared.BlogEditorModel(
|
||||
Model.Input.Title,
|
||||
Model.Input.Content,
|
||||
|
||||
@@ -8,51 +8,51 @@
|
||||
@await Html.PartialAsync("_AdminPageHeader", new TaxBaik.Web.Models.AdminPageHeaderModel("고객 관리", "고객 등록", "FluentValidation과 Tabler 표준 폼으로 신규 고객을 등록합니다.", null, null))
|
||||
|
||||
<form method="post" class="card">
|
||||
<div class="card-body">
|
||||
<div class="card-body p-2">
|
||||
@await Html.PartialAsync("_ValidationSummary")
|
||||
<div class="row g-3">
|
||||
<div class="row g-2">
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Input.Name" class="form-label"></label>
|
||||
<input asp-for="Input.Name" class="form-control" />
|
||||
<label asp-for="Input.Name" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Name" class="form-control form-control-sm" />
|
||||
<span asp-validation-for="Input.Name" class="text-danger small"></span>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Input.CompanyName" class="form-label"></label>
|
||||
<input asp-for="Input.CompanyName" class="form-control" />
|
||||
<label asp-for="Input.CompanyName" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.CompanyName" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Input.Phone" class="form-label"></label>
|
||||
<input asp-for="Input.Phone" class="form-control" />
|
||||
<label asp-for="Input.Phone" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Phone" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Input.Email" class="form-label"></label>
|
||||
<input asp-for="Input.Email" class="form-control" />
|
||||
<label asp-for="Input.Email" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Email" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label asp-for="Input.Status" class="form-label"></label>
|
||||
<input asp-for="Input.Status" class="form-control" />
|
||||
<label asp-for="Input.Status" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Status" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label asp-for="Input.ServiceType" class="form-label"></label>
|
||||
<input asp-for="Input.ServiceType" class="form-control" />
|
||||
<label asp-for="Input.ServiceType" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.ServiceType" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label asp-for="Input.TaxType" class="form-label"></label>
|
||||
<input asp-for="Input.TaxType" class="form-control" />
|
||||
<label asp-for="Input.TaxType" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.TaxType" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label asp-for="Input.Source" class="form-label"></label>
|
||||
<input asp-for="Input.Source" class="form-control" />
|
||||
<label asp-for="Input.Source" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Source" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label asp-for="Input.Memo" class="form-label"></label>
|
||||
<textarea asp-for="Input.Memo" class="form-control" rows="5"></textarea>
|
||||
<label asp-for="Input.Memo" class="form-label form-label-sm"></label>
|
||||
<textarea asp-for="Input.Memo" class="form-control form-control-sm" rows="5"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer d-flex justify-content-end gap-2">
|
||||
<a class="btn btn-outline-secondary" href="/admin/clients">취소</a>
|
||||
<button class="btn btn-primary" type="submit">저장</button>
|
||||
<a class="btn btn-outline-secondary btn-sm" href="/admin/clients">취소</a>
|
||||
<button class="btn btn-primary btn-sm" type="submit">저장</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
@@ -7,8 +7,8 @@
|
||||
<section class="admin-page-shell">
|
||||
@await Html.PartialAsync("_AdminPageHeader", new TaxBaik.Web.Models.AdminPageHeaderModel("고객 관리", "고객 수정", "기존 고객 정보를 불러와 Tabler 표준 폼으로 수정합니다.", null, null))
|
||||
|
||||
<div class="card mb-3">
|
||||
<div class="card-body">
|
||||
<div class="card mb-2">
|
||||
<div class="card-body p-2">
|
||||
<div class="text-muted small text-uppercase mb-1">불러온 원본</div>
|
||||
<div class="fw-semibold">@Model.Input.Name</div>
|
||||
<div class="text-muted small">@Model.Input.CompanyName / @Model.Input.Phone</div>
|
||||
@@ -16,63 +16,63 @@
|
||||
</div>
|
||||
|
||||
<form method="post" class="card">
|
||||
<div class="card-body">
|
||||
<div class="card-body p-2">
|
||||
@await Html.PartialAsync("_ValidationSummary")
|
||||
<div class="row g-3">
|
||||
<div class="row g-2">
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Input.Name" class="form-label"></label>
|
||||
<input asp-for="Input.Name" class="form-control" />
|
||||
<label asp-for="Input.Name" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Name" class="form-control form-control-sm" />
|
||||
<span asp-validation-for="Input.Name" class="text-danger small"></span>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Input.CompanyName" class="form-label"></label>
|
||||
<input asp-for="Input.CompanyName" class="form-control" />
|
||||
<label asp-for="Input.CompanyName" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.CompanyName" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Input.Phone" class="form-label"></label>
|
||||
<input asp-for="Input.Phone" class="form-control" />
|
||||
<label asp-for="Input.Phone" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Phone" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Input.Email" class="form-label"></label>
|
||||
<input asp-for="Input.Email" class="form-control" />
|
||||
<label asp-for="Input.Email" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Email" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label asp-for="Input.Status" class="form-label"></label>
|
||||
<input asp-for="Input.Status" class="form-control" />
|
||||
<label asp-for="Input.Status" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Status" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label asp-for="Input.ServiceType" class="form-label"></label>
|
||||
<input asp-for="Input.ServiceType" class="form-control" />
|
||||
<label asp-for="Input.ServiceType" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.ServiceType" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label asp-for="Input.TaxType" class="form-label"></label>
|
||||
<input asp-for="Input.TaxType" class="form-control" />
|
||||
<label asp-for="Input.TaxType" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.TaxType" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label asp-for="Input.Source" class="form-label"></label>
|
||||
<input asp-for="Input.Source" class="form-control" />
|
||||
<label asp-for="Input.Source" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Source" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label asp-for="Input.Memo" class="form-label"></label>
|
||||
<textarea asp-for="Input.Memo" class="form-control" rows="5"></textarea>
|
||||
<label asp-for="Input.Memo" class="form-label form-label-sm"></label>
|
||||
<textarea asp-for="Input.Memo" class="form-control form-control-sm" rows="5"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer d-flex justify-content-end gap-2">
|
||||
<a class="btn btn-outline-secondary" href="/admin/clients/@Model.Id">취소</a>
|
||||
<button class="btn btn-primary" type="submit">저장</button>
|
||||
<a class="btn btn-outline-secondary btn-sm" href="/admin/clients/@Model.Id">취소</a>
|
||||
<button class="btn btn-primary btn-sm" type="submit">저장</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<div class="card mt-3">
|
||||
<div class="card-body d-flex justify-content-between align-items-center gap-3">
|
||||
<div class="card mt-2">
|
||||
<div class="card-body p-2 d-flex justify-content-between align-items-center gap-3">
|
||||
<div>
|
||||
<div class="text-muted small text-uppercase">위험 작업</div>
|
||||
<div class="fw-semibold">고객을 삭제합니다.</div>
|
||||
<div class="fw-semibold small">고객을 삭제합니다.</div>
|
||||
</div>
|
||||
<form method="post" asp-page-handler="Delete" onsubmit="return confirm('정말 삭제하시겠습니까?');">
|
||||
<button class="btn btn-outline-danger" type="submit">삭제</button>
|
||||
<button class="btn btn-outline-danger btn-sm" type="submit">삭제</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -6,16 +6,16 @@
|
||||
@await Html.PartialAsync("_AdminPageHeader", new TaxBaik.Web.Models.AdminPageHeaderModel("Support", "FAQ 작성", "Tabler 표준 폼으로 FAQ를 등록합니다.", null, null))
|
||||
|
||||
<form method="post" class="card">
|
||||
<div class="card-body">
|
||||
<div class="card-body p-2">
|
||||
@await Html.PartialAsync("_ValidationSummary")
|
||||
<div class="row g-3">
|
||||
<div class="row g-2">
|
||||
<div class="col-lg-8">
|
||||
<label asp-for="Input.Question" class="form-label"></label>
|
||||
<input asp-for="Input.Question" class="form-control" />
|
||||
<label asp-for="Input.Question" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Question" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<label asp-for="Input.Category" class="form-label"></label>
|
||||
<input asp-for="Input.Category" class="form-control" list="faq-categories" />
|
||||
<label asp-for="Input.Category" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Category" class="form-control form-control-sm" list="faq-categories" />
|
||||
<datalist id="faq-categories">
|
||||
@foreach (var category in Model.Categories)
|
||||
{
|
||||
@@ -24,24 +24,24 @@
|
||||
</datalist>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label asp-for="Input.Answer" class="form-label"></label>
|
||||
<textarea asp-for="Input.Answer" class="form-control" rows="10"></textarea>
|
||||
<label asp-for="Input.Answer" class="form-label form-label-sm"></label>
|
||||
<textarea asp-for="Input.Answer" class="form-control form-control-sm" rows="10"></textarea>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label asp-for="Input.SortOrder" class="form-label"></label>
|
||||
<input asp-for="Input.SortOrder" class="form-control" type="number" />
|
||||
<label asp-for="Input.SortOrder" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.SortOrder" class="form-control form-control-sm" type="number" />
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label class="form-check">
|
||||
<input asp-for="Input.IsActive" class="form-check-input" type="checkbox" />
|
||||
<span class="form-check-label">활성</span>
|
||||
<span class="form-check-label form-label-sm">활성</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer d-flex justify-content-end gap-2">
|
||||
<a class="btn btn-outline-secondary" href="/admin/faqs">취소</a>
|
||||
<button class="btn btn-primary" type="submit">저장</button>
|
||||
<a class="btn btn-outline-secondary btn-sm" href="/admin/faqs">취소</a>
|
||||
<button class="btn btn-primary btn-sm" type="submit">저장</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
@@ -6,42 +6,42 @@
|
||||
@await Html.PartialAsync("_AdminPageHeader", new TaxBaik.Web.Models.AdminPageHeaderModel("Customer Requests", "문의 등록", "관리자가 직접 상담 요청을 등록할 수 있습니다.", null, null))
|
||||
|
||||
<form method="post" class="card">
|
||||
<div class="card-body">
|
||||
<div class="card-body p-2">
|
||||
@await Html.PartialAsync("_ValidationSummary")
|
||||
<div class="row g-3">
|
||||
<div class="row g-2">
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Input.Name" class="form-label"></label>
|
||||
<input asp-for="Input.Name" class="form-control" />
|
||||
<label asp-for="Input.Name" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Name" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Input.Phone" class="form-label"></label>
|
||||
<input asp-for="Input.Phone" class="form-control" />
|
||||
<label asp-for="Input.Phone" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Phone" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Input.Email" class="form-label"></label>
|
||||
<input asp-for="Input.Email" class="form-control" />
|
||||
<label asp-for="Input.Email" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Email" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Input.ServiceType" class="form-label"></label>
|
||||
<input asp-for="Input.ServiceType" class="form-control" />
|
||||
<label asp-for="Input.ServiceType" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.ServiceType" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label asp-for="Input.Message" class="form-label"></label>
|
||||
<textarea asp-for="Input.Message" class="form-control" rows="8"></textarea>
|
||||
<label asp-for="Input.Message" class="form-label form-label-sm"></label>
|
||||
<textarea asp-for="Input.Message" class="form-control form-control-sm" rows="8"></textarea>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label asp-for="Input.Status" class="form-label"></label>
|
||||
<input asp-for="Input.Status" class="form-control" />
|
||||
<label asp-for="Input.Status" class="form-label form-label-sm"></label>
|
||||
<input asp-for="Input.Status" class="form-control form-control-sm" />
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<label asp-for="Input.AdminMemo" class="form-label"></label>
|
||||
<textarea asp-for="Input.AdminMemo" class="form-control" rows="4"></textarea>
|
||||
<label asp-for="Input.AdminMemo" class="form-label form-label-sm"></label>
|
||||
<textarea asp-for="Input.AdminMemo" class="form-control form-control-sm" rows="4"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer d-flex justify-content-end gap-2">
|
||||
<a class="btn btn-outline-secondary" href="/admin/inquiries">취소</a>
|
||||
<button class="btn btn-primary" type="submit">저장</button>
|
||||
<a class="btn btn-outline-secondary btn-sm" href="/admin/inquiries">취소</a>
|
||||
<button class="btn btn-primary btn-sm" type="submit">저장</button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user