summaryrefslogtreecommitdiff
path: root/src/components/transactions
diff options
context:
space:
mode:
authorRafi Zadanly <zadanlyr@gmail.com>2023-01-25 13:38:59 +0700
committerRafi Zadanly <zadanlyr@gmail.com>2023-01-25 13:38:59 +0700
commitfbf2043c00f560d6614f282aeb4512364c6c387c (patch)
treef7ab00f845f0cfd4bcfd25c873d69f9bb8aa829f /src/components/transactions
parent8081cceafa40ecb84779df0d9eb4555547d99b98 (diff)
optimize render cost
Diffstat (limited to 'src/components/transactions')
-rw-r--r--src/components/transactions/TransactionDetail.js56
1 files changed, 51 insertions, 5 deletions
diff --git a/src/components/transactions/TransactionDetail.js b/src/components/transactions/TransactionDetail.js
index 6d304d31..7659a321 100644
--- a/src/components/transactions/TransactionDetail.js
+++ b/src/components/transactions/TransactionDetail.js
@@ -1,13 +1,15 @@
+import { useState } from "react";
import DescriptionRow from "../elements/DescriptionRow";
+import Disclosure from "../elements/Disclosure";
-const CustomerSection = ({ address }) => {
+const DetailAddress = ({ address }) => {
const fullAddress = [];
if (address?.street) fullAddress.push(address.street);
if (address?.sub_district?.name) fullAddress.push(address.sub_district.name);
if (address?.district?.name) fullAddress.push(address.district.name);
if (address?.city?.name) fullAddress.push(address.city.name);
return (
- <div className="px-4 pb-4 flex flex-col gap-y-4">
+ <div className="p-4 flex flex-col gap-y-4">
<DescriptionRow label="Nama">{ address?.name }</DescriptionRow>
<DescriptionRow label="Email">{ address?.email || '-' }</DescriptionRow>
<DescriptionRow label="No Telepon">{ address?.mobile || '-' }</DescriptionRow>
@@ -16,6 +18,50 @@ const CustomerSection = ({ address }) => {
);
};
-export {
- CustomerSection
-}; \ No newline at end of file
+const TransactionDetailAddress = ({ transaction }) => {
+ const [ activeSection, setActiveSection ] = useState({
+ purchase: false,
+ shipping: false,
+ invoice: false,
+ });
+
+ const toggleSection = ( name ) => {
+ setActiveSection({
+ ...activeSection,
+ [name]: !activeSection[name]
+ });
+ };
+
+ return (
+ <div className="m-4 rounded border border-gray_r-6 divide-y divide-gray_r-6">
+ <Disclosure
+ label="Detail Pelanggan"
+ active={activeSection.purchase}
+ onClick={() => toggleSection('purchase')}
+ />
+ { activeSection.purchase && (
+ <DetailAddress address={transaction?.address?.customer} />
+ ) }
+
+ <Disclosure
+ label="Detail Pengiriman"
+ active={activeSection.shipping}
+ onClick={() => toggleSection('shipping')}
+ />
+ { activeSection.shipping && (
+ <DetailAddress address={transaction?.address?.shipping} />
+ ) }
+
+ <Disclosure
+ label="Detail Penagihan"
+ active={activeSection.invoice}
+ onClick={() => toggleSection('invoice')}
+ />
+ { activeSection.invoice && (
+ <DetailAddress address={transaction?.address?.invoice} />
+ ) }
+ </div>
+ );
+};
+
+export { TransactionDetailAddress }; \ No newline at end of file