From b043ce6c17f65296677c87bcdc1c7315dfe4c84d Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Tue, 23 Apr 2024 14:19:51 +0700 Subject: [PATCH] refactor: branch card (customize with props instead) --- .../01_branch-management/BranchCard.vue | 103 ++++++++++-------- src/pages/01_branch-management/MainPage.vue | 73 ++++++------- 2 files changed, 94 insertions(+), 82 deletions(-) diff --git a/src/components/01_branch-management/BranchCard.vue b/src/components/01_branch-management/BranchCard.vue index 74c85133..77518037 100644 --- a/src/components/01_branch-management/BranchCard.vue +++ b/src/components/01_branch-management/BranchCard.vue @@ -1,18 +1,12 @@ @@ -20,20 +14,24 @@ defineProps<{
@@ -41,18 +39,18 @@ defineProps<{
{{ v }}
@@ -66,22 +64,6 @@ defineProps<{ --_branch-card-row-bg: var(--blue-5-hsl); --_branch-badge-fg: var(--green-8-hsl); --_branch-badge-bg: var(--green-6-hsl); - - &.branch-card__hq { - --_branch-card-row-bg: var(--pink-6-hsl); - } - - &.branch-card__br { - --_branch-card-row-bg: var(--violet-11-hsl); - } - - &.branch-card__inactive { - --_branch-badge-fg: var(--red-4-hsl); - --_branch-badge-bg: var(--red-4-hsl); - filter: grayscale(40%); - opacity: 0.5; - } - display: flex; flex-direction: column; overflow: hidden; @@ -97,14 +79,18 @@ defineProps<{ flex-grow: 1; } - &:not(:first-child):nth-child(2n + 1) { + &:nth-child(2n + 1) { background-color: hsla(var(--_branch-card-row-bg) / 0.1); } - &.branch-card__header { + &.branch-card__header, + &.branch-card__footer { color: hsl(var(--_branch-card-row-fg)); background-color: hsl(var(--_branch-card-row-bg)); - font-weight: 600; + + &:deep(*) { + font-weight: 600; + } } &.branch-card__header > * { @@ -133,5 +119,36 @@ defineProps<{ } } } + + &.branch-card__none { + --_branch-card-row-bg: var(--gray-3-hsl); + + &.branch-card__dark { + --_branch-card-row-bg: var(--gray-9-hsl); + } + + &:not(.branch-card__dark) .branch-card__header { + color: currentColor; + + & .branch-card__view-detail { + color: hsla(var(--gray-10-hsl) / 0.3); + } + } + } + + &.branch-card__hq { + --_branch-card-row-bg: var(--pink-6-hsl); + } + + &.branch-card__br { + --_branch-card-row-bg: var(--violet-11-hsl); + } + + &.branch-card__inactive { + --_branch-badge-fg: var(--red-4-hsl); + --_branch-badge-bg: var(--red-4-hsl); + filter: grayscale(40%); + opacity: 0.5; + } } diff --git a/src/pages/01_branch-management/MainPage.vue b/src/pages/01_branch-management/MainPage.vue index 7701513f..d34cf805 100644 --- a/src/pages/01_branch-management/MainPage.vue +++ b/src/pages/01_branch-management/MainPage.vue @@ -127,7 +127,9 @@ const fieldSelectedBranch = ref<{ value: 'branchHQLabel', }); -const stats = ref<{ count: number; label: string }[]>([]); +const stats = ref< + { count: number; label: string; color?: 'pink' | 'purple' }[] +>([]); const defaultFormData = { headOfficeId: null, @@ -337,11 +339,13 @@ async function onSubmit() { stats.value[0] = { count: _stats.hq, label: 'branchHQLabel', + color: 'pink', }; stats.value[1] = { count: _stats.br, label: 'branchLabel', + color: 'purple', }; } } @@ -726,7 +730,8 @@ watch(locale, () => {
[v, ...v.branch]) .filter((v) => { if ( statusFilter === 'statusACTIVE' && @@ -755,40 +760,13 @@ watch(locale, () => { return !v.isHeadOffice; return false; - }) - .map((v) => ({ - id: v.id, - hq: v.isHeadOffice, - status: v.status, - branchLabelCode: v.code, - branchLabelName: - $i18n.locale === 'en-US' ? v.nameEN : v.name, - branchLabelTel: v.contact - .map((c) => c.telephoneNo) - .join(','), - branchLabelAddress: - $i18n.locale === 'en-US' - ? `${v.addressEN || ''} ${v.subDistrict?.nameEN || ''} ${v.district?.nameEN || ''} ${v.province?.nameEN || ''}` - : `${v.address || ''} ${v.subDistrict?.name || ''} ${v.district?.name || ''} ${v.province?.name || ''}`, - branchLabelType: $t( - v.isHeadOffice ? 'branchHQLabel' : 'branchLabel', - ), - branchLabelStatus: $t(`status${v.status}`), - })) - .sort((a, b) => { - console.log(a); - - if (a.hq) return 1; - // if (!a.hq) return -1; - - return 0; })" @click=" () => { - if (item.hq) { + if (item.isHeadOffice) { fieldSelectedBranch.value = ''; inputSearch = ''; - currentHq = { id: item.id, code: item.branchLabelCode }; + currentHq = { id: item.id, code: item.code }; beforeBranch = { id: '', code: '', @@ -796,18 +774,35 @@ watch(locale, () => { } } " + :metadata="item" + :color="item.isHeadOffice ? 'hq' : 'br'" :key="item.id" - :data="item" + :data="{ + branchLabelCode: item.code, + branchLabelName: + $i18n.locale === 'en-US' ? item.nameEN : item.name, + branchLabelTel: item.contact + .map((c) => c.telephoneNo) + .join(','), + branchLabelAddress: + $i18n.locale === 'en-US' + ? `${item.addressEN || ''} ${item.subDistrict?.nameEN || ''} ${item.district?.nameEN || ''} ${item.province?.nameEN || ''}` + : `${item.address || ''} ${item.subDistrict?.name || ''} ${item.district?.name || ''} ${item.province?.name || ''}`, + branchLabelType: $t( + item.isHeadOffice ? 'branchHQLabel' : 'branchLabel', + ), + branchLabelStatus: $t(`status${item.status}`), + }" :field-selected="fieldSelected" + :badge-field="['branchLabelStatus']" :inactive="item.status === 'INACTIVE'" @view-detail=" - (b) => { - if (b.hq) { - triggerEdit('drawer', b.id, 'headOffice'); - } else { - triggerEdit('drawer', b.id, 'subBranch'); - } - } + (v) => + triggerEdit( + 'drawer', + v.id, + v.hq ? 'headOffice' : 'subBranch', + ) " />