From 6c49de9e4a5d8addd3b6d614bf8a045186322be3 Mon Sep 17 00:00:00 2001 From: bagusajisaputroo Date: Fri, 2 May 2025 14:44:58 +0700 Subject: [PATCH 01/15] fixing clear filter transfer type --- .../transfertype/blocks/ListToolBar.tsx | 175 ++++++++---------- .../hooks/ManageTransferTypeContext.tsx | 2 +- 2 files changed, 80 insertions(+), 97 deletions(-) diff --git a/src/pages/transfer/transfertype/blocks/ListToolBar.tsx b/src/pages/transfer/transfertype/blocks/ListToolBar.tsx index c1c116c..d57d2a4 100644 --- a/src/pages/transfer/transfertype/blocks/ListToolBar.tsx +++ b/src/pages/transfer/transfertype/blocks/ListToolBar.tsx @@ -23,6 +23,31 @@ interface TransferType { const API_URL = apiConfig.service_transaction; +const typeLabelMap: Record = { + D: 'Disbursement', + O: 'Other', + CA: 'Change Group Emoney Customer to Agent', + AC: 'Change Group Emoney Agent to Customer', + PC: 'Change Group Point Agent to Customer', + PA: 'Change Group Point Customer to Agent', + CE: 'Return Customer Emoney', + AD: 'Return Agent Deposit', + AM: 'Return Agent Merchant', + AE: 'Return Agent Emoney', + R: 'Reward Point', + TE: 'Top Up Escrow', + TM: 'Top Up Master Agent', + TA: 'Top Up Agent', + PL: 'Purchase Loja', + DE: 'Disbursment Escrow', + DM: 'Disbursment Master Agent', + DA: 'Disbursment Agent', + WI: 'Withdraw Merchant', + IC: 'Income Merchant' +}; + +// Import section remains the same... + const ListToolbar = () => { const { table, reload } = useDataGrid(); const { handleAddDialog } = useManageTransferTypeContext(); @@ -31,40 +56,10 @@ const ListToolbar = () => { const [searchValue, setSearchValue] = useState(''); const [statusTypes, setStatusTypes] = useState(''); - const [walletOrigins, setWalletOrigin] = useState(''); - const [walletDestinations, setWalletDestination] = useState(''); const [approval, setApproval] = useState(''); const unique = (arr: string[]) => Array.from(new Set(arr)); const types = unique(transferTypes.map((t) => t.type)); - const origins = unique(transferTypes.map((t) => t.wallet_origin.name)); - const destinations = unique(transferTypes.map((t) => t.wallet_destination.name)); - const typeLabelMap: Record = { - D: 'Disbursement', - O: 'Other', - CA: 'Change Group Emoney Customer to Agent', - AC: 'Change Group Emoney Agent to Customer', - PC: 'Change Group Point Agent to Customer', - PA: 'Change Group Point Customer to Agent', - CE: 'Return Customer Emoney', - AD: 'Return Agent Deposit', - AM: 'Return Agent Merchant', - AE: 'Return Agent Emoney', - R: 'Reward Point', - TE: 'Top Up Escrow', - TM: 'Top Up Master Agent', - TA: 'Top Up Agent', - PL: 'Purchase Loja', - DE: 'Disbursment Escrow', - DM: 'Disbursment Master Agent', - DA: 'Disbursment Agent', - WI: 'Withdraw Merchant', - IC: 'Income Merchant' - }; - const approvalLabelMap: Record = { - Y: 'Yes', - N: 'No' - }; useEffect(() => { const timer = setTimeout(() => { @@ -78,18 +73,6 @@ const ListToolbar = () => { table.getColumn('type')?.setFilterValue(statusTypes); }, [statusTypes]); - useEffect(() => { - table - .getColumn('wallet_origin') - ?.setFilterValue(walletOrigins === '__all__' ? '' : walletOrigins); - }, [walletOrigins]); - - useEffect(() => { - table - .getColumn('wallet_destination') - ?.setFilterValue(walletDestinations === '__all__' ? '' : walletDestinations); - }, [walletDestinations]); - useEffect(() => { table.getColumn('status_approval')?.setFilterValue(approval); }, [approval]); @@ -114,46 +97,30 @@ const ListToolbar = () => { }, []); const handleClearFilter = () => { + // Reset state variables setSearchValue(''); - setStatusTypes('__all__'); - setWalletOrigin('__all__'); - setWalletDestination('__all__'); - setApproval('__all__'); + setStatusTypes(''); + setApproval(''); + + // Clear all column filters table.getColumn('name')?.setFilterValue(''); table.getColumn('type')?.setFilterValue(''); - table.getColumn('wallet_origin')?.setFilterValue(''); - table.getColumn('wallet_destination')?.setFilterValue(''); table.getColumn('status_approval')?.setFilterValue(''); - table.setPageIndex(0); - }; - const renderSelect = ( - placeholder: string, - value: string, - onChange: (val: string) => void, - options: string[], - labelMap?: Record - ) => ( -
- -
- ); - + // Force reset the Select components by using setTimeout + // This ensures the state updates are processed before resetting the UI + setTimeout(() => { + // Reset to first page + table.setPageIndex(0); + // Reload the data + reload(); + }, 0); + }; return (
+ {/* Top bar */}
diff --git a/src/pages/transfer/transfertype/hooks/ManageTransferTypeContext.tsx b/src/pages/transfer/transfertype/hooks/ManageTransferTypeContext.tsx index 8ae1aed..0d7982a 100644 --- a/src/pages/transfer/transfertype/hooks/ManageTransferTypeContext.tsx +++ b/src/pages/transfer/transfertype/hooks/ManageTransferTypeContext.tsx @@ -325,7 +325,7 @@ const ManageTransferTypeContextProvider = ({ children }: { children: React.React order_direction: orderDirection, filter: JSON.stringify(filterObject) }); - // console.log(response); + console.log(response); return { data: response?.data.list, totalCount: response?.data.total_count }; }; From c596f1b6007d1850ed5ec82291748ff8f71fb373 Mon Sep 17 00:00:00 2001 From: benhur Date: Fri, 2 May 2025 15:47:04 +0800 Subject: [PATCH 02/15] revert 94f6d65dfea10accf6c99b87fe23f1160011369a revert fix detail member --- package-lock.json | 11 - .../manage-members/blocks/DetailMember.tsx | 3 +- yarn.lock | 458 +++++++++--------- 3 files changed, 228 insertions(+), 244 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7f10a96..50a3b44 100644 --- a/package-lock.json +++ b/package-lock.json @@ -74,7 +74,6 @@ "styled-components": "^6.1.13", "stylis": "^4.3.4", "stylis-plugin-rtl": "^2.1.1", - "sweetalert2": "^11.19.1", "tabs": "^0.2.0", "tailwind-merge": "^2.5.4", "tailwindcss-animate": "^1.0.7", @@ -9041,16 +9040,6 @@ "node": ">= 0.8.0" } }, - "node_modules/sweetalert2": { - "version": "11.19.1", - "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.19.1.tgz", - "integrity": "sha512-+8yws3Sc1srAZbrgdhmEIZny1I1UOYhJOIOdtOlv4TYaP5kkwQ9Zm8/BT23Qg+KdByCNOazltxEJAHzXVu8mhA==", - "license": "MIT", - "funding": { - "type": "individual", - "url": "https://github.com/sponsors/limonte" - } - }, "node_modules/synckit": { "version": "0.9.2", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", diff --git a/src/pages/members/manage-members/blocks/DetailMember.tsx b/src/pages/members/manage-members/blocks/DetailMember.tsx index d7e963c..ffb4efc 100644 --- a/src/pages/members/manage-members/blocks/DetailMember.tsx +++ b/src/pages/members/manage-members/blocks/DetailMember.tsx @@ -65,7 +65,7 @@ const DetailMember = ({ showAddDialog, setShowAddDialog, handleSubmit, initialDa const handleChange = async (e: any) => { const { name, value } = e.target; if (name === "file_selfie" || name === "photouser" || name === 'file_document_id' || name === "file_document_id_selfie" || - name === "file_commercial_license" || name === 'photomerchant') { // FOR FILE ONLY + name === "file_commercial_license") { // FOR FILE ONLY setFormData({ ...formData, [name]: e.target.files[0] }); } else if(name === "nationality") { setFormData({ ...formData, [name]: value }); @@ -258,7 +258,6 @@ const DetailMember = ({ showAddDialog, setShowAddDialog, handleSubmit, initialDa {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Merchant Address', 'merchantaddress', 'text', false, viewOnly): ''} {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Longitude Merchant', 'longitudemerchant', 'text', false, viewOnly): ''} {(formData.id || dialogType === "create") ? generateInput(formData, handleChange, 'Latitude Merchant', 'latitudemerchant', 'text', false, viewOnly): ''} - {(formData.id || dialogType === "create") ? generateImage(formData, handleChange, 'Photo Merchant', 'photomerchant', previewImg, setPreviewImg): ''} {(formData.id || dialogType === "create") ? generateImage(formData, handleChange, 'File Selfie', 'file_selfie', previewImg, setPreviewImg): ''} {(formData.id || dialogType === "create") ? generateImage(formData, handleChange, 'File Document', 'file_document_id', previewImg, setPreviewImg): ''} {(formData.id || dialogType === "create") ? generateImage(formData, handleChange, 'File Document & Selfie', 'file_document_id_selfie', previewImg, setPreviewImg): ''} diff --git a/yarn.lock b/yarn.lock index ee15ede..52913b9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39,7 +39,7 @@ resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.0.tgz" integrity sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA== -"@babel/core@^7.25.2": +"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.25.2": version "7.26.0" resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz" integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg== @@ -564,7 +564,7 @@ resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz" integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ== -"@emotion/react@^11.13.3": +"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.13.3", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0": version "11.13.3" resolved "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz" integrity sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg== @@ -594,7 +594,7 @@ resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz" integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg== -"@emotion/styled@^11.13.0": +"@emotion/styled@^11.13.0", "@emotion/styled@^11.3.0": version "11.13.0" resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz" integrity sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA== @@ -631,6 +631,116 @@ resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz" integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg== +"@esbuild/aix-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz" + integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== + +"@esbuild/android-arm@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz" + integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== + +"@esbuild/android-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz" + integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + +"@esbuild/android-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz" + integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== + +"@esbuild/darwin-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz" + integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== + +"@esbuild/darwin-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz" + integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== + +"@esbuild/freebsd-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz" + integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== + +"@esbuild/freebsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz" + integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== + +"@esbuild/linux-arm@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz" + integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== + +"@esbuild/linux-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz" + integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + +"@esbuild/linux-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz" + integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== + +"@esbuild/linux-loong64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz" + integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== + +"@esbuild/linux-mips64el@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz" + integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== + +"@esbuild/linux-ppc64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz" + integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== + +"@esbuild/linux-riscv64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz" + integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== + +"@esbuild/linux-s390x@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz" + integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== + +"@esbuild/linux-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz" + integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + +"@esbuild/netbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz" + integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== + +"@esbuild/openbsd-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz" + integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== + +"@esbuild/sunos-x64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz" + integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== + +"@esbuild/win32-arm64@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz" + integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== + +"@esbuild/win32-ia32@0.21.5": + version "0.21.5" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz" + integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== + "@esbuild/win32-x64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz" @@ -704,7 +814,7 @@ resolved "https://registry.npmjs.org/@faker-js/faker/-/faker-9.1.0.tgz" integrity sha512-GJvX9iM9PBtKScJVlXQ0tWpihK3i0pha/XAhzQa1hPK/ILLa1Wq3I63Ij7lRtqTwmdTxRCyrUhLC5Sly9SLbug== -"@firebase/app@^0.10.15": +"@firebase/app@^0.10.15", "@firebase/app@0.x": version "0.10.15" resolved "https://registry.npmjs.org/@firebase/app/-/app-0.10.15.tgz" integrity sha512-he6qlG3pmwL+LHdG/BrSMBQeJzzutciq4fpXN3lGa1uSwYSijJ24VtakS/bP2X9SiDf8jGywJ4u+OgXAenJsNg== @@ -991,7 +1101,7 @@ dependencies: "@babel/runtime" "^7.26.0" -"@mui/material@^6.1.6": +"@mui/material@^6.1.6", "@mui/material@^6.4.6": version "6.4.8" resolved "https://registry.npmjs.org/@mui/material/-/material-6.4.8.tgz" integrity sha512-5S9UTjKZZBd9GfbcYh/nYfD9cv6OXmj5Y7NgKYfk7JcSoshp8/pW5zP4wecRiroBSZX8wcrywSgogpVNO+5W0Q== @@ -1580,6 +1690,91 @@ resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.21.0.tgz" integrity sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA== +"@rollup/rollup-android-arm-eabi@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.2.tgz" + integrity sha512-ufoveNTKDg9t/b7nqI3lwbCG/9IJMhADBNjjz/Jn6LxIZxD7T5L8l2uO/wD99945F1Oo8FvgbbZJRguyk/BdzA== + +"@rollup/rollup-android-arm64@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.2.tgz" + integrity sha512-iZoYCiJz3Uek4NI0J06/ZxUgwAfNzqltK0MptPDO4OR0a88R4h0DSELMsflS6ibMCJ4PnLvq8f7O1d7WexUvIA== + +"@rollup/rollup-darwin-arm64@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.2.tgz" + integrity sha512-/UhrIxobHYCBfhi5paTkUDQ0w+jckjRZDZ1kcBL132WeHZQ6+S5v9jQPVGLVrLbNUebdIRpIt00lQ+4Z7ys4Rg== + +"@rollup/rollup-darwin-x64@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.2.tgz" + integrity sha512-1F/jrfhxJtWILusgx63WeTvGTwE4vmsT9+e/z7cZLKU8sBMddwqw3UV5ERfOV+H1FuRK3YREZ46J4Gy0aP3qDA== + +"@rollup/rollup-freebsd-arm64@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.2.tgz" + integrity sha512-1YWOpFcGuC6iGAS4EI+o3BV2/6S0H+m9kFOIlyFtp4xIX5rjSnL3AwbTBxROX0c8yWtiWM7ZI6mEPTI7VkSpZw== + +"@rollup/rollup-freebsd-x64@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.2.tgz" + integrity sha512-3qAqTewYrCdnOD9Gl9yvPoAoFAVmPJsBvleabvx4bnu1Kt6DrB2OALeRVag7BdWGWLhP1yooeMLEi6r2nYSOjg== + +"@rollup/rollup-linux-arm-gnueabihf@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.2.tgz" + integrity sha512-ArdGtPHjLqWkqQuoVQ6a5UC5ebdX8INPuJuJNWRe0RGa/YNhVvxeWmCTFQ7LdmNCSUzVZzxAvUznKaYx645Rig== + +"@rollup/rollup-linux-arm-musleabihf@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.2.tgz" + integrity sha512-B6UHHeNnnih8xH6wRKB0mOcJGvjZTww1FV59HqJoTJ5da9LCG6R4SEBt6uPqzlawv1LoEXSS0d4fBlHNWl6iYw== + +"@rollup/rollup-linux-arm64-gnu@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.2.tgz" + integrity sha512-kr3gqzczJjSAncwOS6i7fpb4dlqcvLidqrX5hpGBIM1wtt0QEVtf4wFaAwVv8QygFU8iWUMYEoJZWuWxyua4GQ== + +"@rollup/rollup-linux-arm64-musl@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.2.tgz" + integrity sha512-TDdHLKCWgPuq9vQcmyLrhg/bgbOvIQ8rtWQK7MRxJ9nvaxKx38NvY7/Lo6cYuEnNHqf6rMqnivOIPIQt6H2AoA== + +"@rollup/rollup-linux-powerpc64le-gnu@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.2.tgz" + integrity sha512-xv9vS648T3X4AxFFZGWeB5Dou8ilsv4VVqJ0+loOIgDO20zIhYfDLkk5xoQiej2RiSQkld9ijF/fhLeonrz2mw== + +"@rollup/rollup-linux-riscv64-gnu@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.2.tgz" + integrity sha512-tbtXwnofRoTt223WUZYiUnbxhGAOVul/3StZ947U4A5NNjnQJV5irKMm76G0LGItWs6y+SCjUn/Q0WaMLkEskg== + +"@rollup/rollup-linux-s390x-gnu@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.2.tgz" + integrity sha512-gc97UebApwdsSNT3q79glOSPdfwgwj5ELuiyuiMY3pEWMxeVqLGKfpDFoum4ujivzxn6veUPzkGuSYoh5deQ2Q== + +"@rollup/rollup-linux-x64-gnu@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.2.tgz" + integrity sha512-jOG/0nXb3z+EM6SioY8RofqqmZ+9NKYvJ6QQaa9Mvd3RQxlH68/jcB/lpyVt4lCiqr04IyaC34NzhUqcXbB5FQ== + +"@rollup/rollup-linux-x64-musl@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.2.tgz" + integrity sha512-XAo7cJec80NWx9LlZFEJQxqKOMz/lX3geWs2iNT5CHIERLFfd90f3RYLLjiCBm1IMaQ4VOX/lTC9lWfzzQm14Q== + +"@rollup/rollup-win32-arm64-msvc@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.2.tgz" + integrity sha512-A+JAs4+EhsTjnPQvo9XY/DC0ztaws3vfqzrMNMKlwQXuniBKOIIvAAI8M0fBYiTCxQnElYu7mLk7JrhlQ+HeOw== + +"@rollup/rollup-win32-ia32-msvc@4.24.2": + version "4.24.2" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.2.tgz" + integrity sha512-ZhcrakbqA1SCiJRMKSU64AZcYzlZ/9M5LaYil9QWxx9vLnkQ9Vnkve17Qn4SjlipqIIBFKjBES6Zxhnvh0EAEw== + "@rollup/rollup-win32-x64-msvc@4.24.2": version "4.24.2" resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.2.tgz" @@ -1642,57 +1837,6 @@ dependencies: "@babel/types" "^7.20.7" -"@types/d3-array@^3.0.3": - version "3.2.1" - resolved "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz" - integrity sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg== - -"@types/d3-color@*": - version "3.1.3" - resolved "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz" - integrity sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A== - -"@types/d3-ease@^3.0.0": - version "3.0.2" - resolved "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz" - integrity sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA== - -"@types/d3-interpolate@^3.0.1": - version "3.0.4" - resolved "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz" - integrity sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA== - dependencies: - "@types/d3-color" "*" - -"@types/d3-path@*": - version "3.1.1" - resolved "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz" - integrity sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg== - -"@types/d3-scale@^4.0.2": - version "4.0.9" - resolved "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz" - integrity sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw== - dependencies: - "@types/d3-time" "*" - -"@types/d3-shape@^3.1.0": - version "3.1.7" - resolved "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz" - integrity sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg== - dependencies: - "@types/d3-path" "*" - -"@types/d3-time@*", "@types/d3-time@^3.0.0": - version "3.0.4" - resolved "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz" - integrity sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g== - -"@types/d3-timer@^3.0.0": - version "3.0.2" - resolved "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz" - integrity sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw== - "@types/estree@^1.0.6", "@types/estree@1.0.6": version "1.0.6" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz" @@ -1723,7 +1867,7 @@ dependencies: "@types/geojson" "*" -"@types/node@^22.9.0", "@types/node@>=12.12.47", "@types/node@>=13.7.0": +"@types/node@^18.0.0 || >=20.0.0", "@types/node@^22.9.0", "@types/node@>=12.12.47", "@types/node@>=13.7.0": version "22.9.0" resolved "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz" integrity sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ== @@ -1740,7 +1884,7 @@ resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz" integrity sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ== -"@types/react-dom@^18.3.1": +"@types/react-dom@*", "@types/react-dom@^18.3.1": version "18.3.1" resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ== @@ -1759,7 +1903,7 @@ resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz" integrity sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w== -"@types/react@*", "@types/react@^18.3.12", "@types/react@16 || 17 || 18": +"@types/react@*", "@types/react@^16.8.0 || ^17.0.0 || ^18.0.0", "@types/react@^16.9.0 || ^17.0.0 || ^18.0.0", "@types/react@^17.0.0 || ^18.0.0", "@types/react@^17.0.0 || ^18.0.0 || ^19.0.0", "@types/react@^18.3.12", "@types/react@16 || 17 || 18": version "18.3.12" resolved "https://registry.npmjs.org/@types/react/-/react-18.3.12.tgz" integrity sha512-D2wOSq/d6Agt28q7rSI3jhU7G6aiuzljDGZ2hTZHIkrTLUI+AF3WMeKkEZ9nN2fkBAlcktT6vcZjDFiIhMYEQw== @@ -1801,7 +1945,7 @@ natural-compare "^1.4.0" ts-api-utils "^1.3.0" -"@typescript-eslint/parser@^8.14.0", "@typescript-eslint/parser@8.14.0": +"@typescript-eslint/parser@^8.0.0 || ^8.0.0-alpha.0", "@typescript-eslint/parser@^8.14.0", "@typescript-eslint/parser@8.14.0": version "8.14.0" resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.14.0.tgz" integrity sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA== @@ -1910,7 +2054,7 @@ acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn@^8.12.0: +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.12.0: version "8.14.0" resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz" integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== @@ -1960,7 +2104,7 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apexcharts@3.52.0: +apexcharts@^3.41.0, apexcharts@3.52.0: version "3.52.0" resolved "https://registry.npmjs.org/apexcharts/-/apexcharts-3.52.0.tgz" integrity sha512-7dg0ADKs8AA89iYMZMe2sFDG0XK5PfqllKV9N+i3hKHm3vEtdhwz8AlXGm+/b0nJ6jKiaXsqci5LfVxNhtB+dA== @@ -2076,7 +2220,7 @@ broadcast-channel@^3.4.1: rimraf "3.0.2" unload "2.2.0" -browserslist@^4.23.1, browserslist@^4.23.3, browserslist@^4.24.0: +browserslist@^4.23.1, browserslist@^4.23.3, browserslist@^4.24.0, "browserslist@>= 4.21.0": version "4.24.2" resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz" integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== @@ -2161,7 +2305,7 @@ clsx@^1.1.0: resolved "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz" integrity sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg== -clsx@^2.0.0, clsx@^2.1.0, clsx@^2.1.1: +clsx@^2.1.0, clsx@^2.1.1: version "2.1.1" resolved "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz" integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== @@ -2290,83 +2434,12 @@ cssjanus@^2.0.1: resolved "https://registry.npmjs.org/cssjanus/-/cssjanus-2.3.0.tgz" integrity sha512-ZZXXn51SnxRxAZ6fdY7mBDPmA4OZd83q/J9Gdqz3YmE9TUq+9tZl+tdOnCi7PpNygI6PEkehj9rgifv5+W8a5A== -csstype@^3.0.2, csstype@^3.1.3, csstype@3.1.3: +csstype@^3.0.10, csstype@^3.0.2, csstype@^3.1.3, csstype@3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -d3-array@^3.1.6, "d3-array@2 - 3", "d3-array@2.10.0 - 3": - version "3.2.4" - resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz" - integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== - dependencies: - internmap "1 - 2" - -"d3-color@1 - 3": - version "3.1.0" - resolved "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz" - integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== - -d3-ease@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz" - integrity sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w== - -"d3-format@1 - 3": - version "3.1.0" - resolved "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz" - integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== - -d3-interpolate@^3.0.1, "d3-interpolate@1.2.0 - 3": - version "3.0.1" - resolved "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz" - integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== - dependencies: - d3-color "1 - 3" - -d3-path@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz" - integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ== - -d3-scale@^4.0.2: - version "4.0.2" - resolved "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz" - integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== - dependencies: - d3-array "2.10.0 - 3" - d3-format "1 - 3" - d3-interpolate "1.2.0 - 3" - d3-time "2.1.1 - 3" - d3-time-format "2 - 4" - -d3-shape@^3.1.0: - version "3.2.0" - resolved "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz" - integrity sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA== - dependencies: - d3-path "^3.1.0" - -"d3-time-format@2 - 4": - version "4.1.0" - resolved "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz" - integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== - dependencies: - d3-time "1 - 3" - -d3-time@^3.0.0, "d3-time@1 - 3", "d3-time@2.1.1 - 3": - version "3.1.0" - resolved "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz" - integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== - dependencies: - d3-array "2 - 3" - -d3-timer@^3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz" - integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA== - -date-fns@^3.0.0: +"date-fns@^2.28.0 || ^3.0.0", date-fns@^3.0.0: version "3.6.0" resolved "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz" integrity sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww== @@ -2378,11 +2451,6 @@ debug@^4.1.0, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: dependencies: ms "^2.1.3" -decimal.js-light@^2.4.1: - version "2.5.1" - resolved "https://registry.npmjs.org/decimal.js-light/-/decimal.js-light-2.5.1.tgz" - integrity sha512-qIMFpTMZmny+MMIitAB6D7iVPEorVw6YQRWkvarTkT4tBeSLLiHzcwj6q0MmYSFCiVpiqPJTJEYIrpcPzVEIvg== - deep-is@^0.1.3: version "0.1.4" resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" @@ -2513,7 +2581,7 @@ escape-string-regexp@^4.0.0: resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== -eslint-config-prettier@^9.1.0: +eslint-config-prettier@*, eslint-config-prettier@^9.1.0: version "9.1.0" resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz" integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw== @@ -2554,7 +2622,7 @@ eslint-visitor-keys@^4.1.0: resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz" integrity sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg== -eslint@^9.13.0: +"eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.57.0 || ^9.0.0", eslint@^9.13.0, eslint@>=7, eslint@>=7.0.0, eslint@>=8.0.0: version "9.13.0" resolved "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz" integrity sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA== @@ -2628,11 +2696,6 @@ esutils@^2.0.2: resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -eventemitter3@^4.0.1: - version "4.0.7" - resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" @@ -2643,11 +2706,6 @@ fast-diff@^1.1.2: resolved "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-equals@^5.0.1: - version "5.2.2" - resolved "https://registry.npmjs.org/fast-equals/-/fast-equals-5.2.2.tgz" - integrity sha512-V7/RktU11J3I36Nwq2JnZEM7tNm17eBJz+u25qdxBZeCKiX6BkVSZQjwWIr+IobgnZy+ag73tTZgZi7tr0LrBw== - fast-glob@^3.2.12, fast-glob@^3.3.0, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" @@ -2762,6 +2820,11 @@ fs.realpath@^1.0.0: resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + function-bind@^1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" @@ -2947,11 +3010,6 @@ inherits@2: resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -"internmap@1 - 2": - version "2.0.3" - resolved "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz" - integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== - intl-messageformat@10.7.6: version "10.7.6" resolved "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.7.6.tgz" @@ -3024,7 +3082,7 @@ jackspeak@^3.1.2: optionalDependencies: "@pkgjs/parseargs" "^0.11.0" -jiti@^1.18.2, jiti@^1.21.0: +jiti@*, jiti@^1.18.2, jiti@^1.21.0: version "1.21.6" resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz" integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== @@ -3088,7 +3146,7 @@ kolorist@^1.8.0: resolved "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz" integrity sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ== -leaflet@^1.9.4: +leaflet@^1.9.0, leaflet@^1.9.4: version "1.9.4" resolved "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz" integrity sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA== @@ -3256,12 +3314,10 @@ merge2@^1.3.0: react-query "^3.39.3" react-router "^6.28.0" react-router-dom "^6.28.0" - recharts "^2.15.3" sonner "^1.7.0" styled-components "^6.1.13" stylis "^4.3.4" stylis-plugin-rtl "^2.1.1" - sweetalert2 "^11.19.1" tabs "^0.2.0" tailwind-merge "^2.5.4" tailwindcss-animate "^1.0.7" @@ -3835,7 +3891,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.4.23, postcss@^8.4.43, postcss@^8.4.49: +postcss@^8, postcss@^8.0.0, postcss@^8.0.3, postcss@^8.1.0, postcss@^8.2.14, postcss@^8.4, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.43, postcss@^8.4.49, postcss@^8.4.6, postcss@>=8.0.9: version "8.4.49" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz" integrity sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA== @@ -3865,7 +3921,7 @@ prettier-linter-helpers@^1.0.0: dependencies: fast-diff "^1.1.2" -prettier@^3.3.3: +prettier@^3.3.3, prettier@>=3.0.0: version "3.3.3" resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz" integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== @@ -3936,7 +3992,7 @@ react-day-picker@^8.10.1: resolved "https://registry.npmjs.org/react-day-picker/-/react-day-picker-8.10.1.tgz" integrity sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA== -react-dom@^18.3.1: +"react-dom@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react-dom@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^17.0.0 || ^18.0.0", "react-dom@^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^18 || ^19 || ^19.0.0-rc", react-dom@^18.0.0, "react-dom@^18.0.0 || ^19.0.0 || ^19.0.0-rc", react-dom@^18.3.1, "react-dom@>= 16.8.0", react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0: version "18.3.1" resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz" integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw== @@ -4091,15 +4147,6 @@ react-side-effect@^2.1.0: resolved "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.2.tgz" integrity sha512-PVjOcvVOyIILrYoyGEpDN3vmYNLdy1CajSFNt4TDsVQC5KpTijDvWVoR+/7Rz2xT978D8/ZtFceXxzsPwZEDvw== -react-smooth@^4.0.4: - version "4.0.4" - resolved "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz" - integrity sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q== - dependencies: - fast-equals "^5.0.1" - prop-types "^15.8.1" - react-transition-group "^4.4.5" - react-style-singleton@^2.2.1: version "2.2.1" resolved "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz" @@ -4119,7 +4166,7 @@ react-transition-group@^4.4.5: loose-envify "^1.4.0" prop-types "^15.6.2" -react@^18.3.1: +"react@^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.3.0 || ^17.0.0 || ^18.0.0", "react@^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc", "react@^16.6.0 || ^17.0.0 || ^18.0.0", "react@^16.6.0 || 17 || 18", "react@^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", "react@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^18.0.0", "react@^17.0.0 || ^18.0.0 || ^19.0.0", "react@^18 || ^19", "react@^18 || ^19 || ^19.0.0-rc", react@^18.0.0, "react@^18.0.0 || ^19.0.0 || ^19.0.0-rc", react@^18.3.1, "react@>= 16.8.0", react@>=0.13, react@>=16.3.0, react@>=16.6.0, react@>=16.8, react@>=16.8.0, "react@16.8 - 18": version "18.3.1" resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz" integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ== @@ -4140,27 +4187,6 @@ readdirp@~3.6.0: dependencies: picomatch "^2.2.1" -recharts-scale@^0.4.4: - version "0.4.5" - resolved "https://registry.npmjs.org/recharts-scale/-/recharts-scale-0.4.5.tgz" - integrity sha512-kivNFO+0OcUNu7jQquLXAxz1FIwZj8nrj+YkOKc5694NbjCvcT6aSZiIzNzd2Kul4o4rTto8QVR9lMNtxD4G1w== - dependencies: - decimal.js-light "^2.4.1" - -recharts@^2.15.3: - version "2.15.3" - resolved "https://registry.npmjs.org/recharts/-/recharts-2.15.3.tgz" - integrity sha512-EdOPzTwcFSuqtvkDoaM5ws/Km1+WTAO2eizL7rqiG0V2UVhTnz0m7J2i0CjVPUCdEkZImaWvXLbZDS2H5t6GFQ== - dependencies: - clsx "^2.0.0" - eventemitter3 "^4.0.1" - lodash "^4.17.21" - react-is "^18.3.1" - react-smooth "^4.0.4" - recharts-scale "^0.4.4" - tiny-invariant "^1.3.1" - victory-vendor "^36.6.8" - regenerator-runtime@^0.14.0: version "0.14.1" resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz" @@ -4387,7 +4413,7 @@ stylis-plugin-rtl@^2.1.1: dependencies: cssjanus "^2.0.1" -stylis@^4.3.4: +stylis@^4.3.4, stylis@4.x: version "4.3.4" resolved "https://registry.npmjs.org/stylis/-/stylis-4.3.4.tgz" integrity sha512-osIBl6BGUmSfDkyH2mB7EFvCJntXDrLhKjHTRj/rK6xLH0yuPrHULDRQzKokSOD4VoorhtKpfcfW1GAntu8now== @@ -4482,11 +4508,6 @@ svg.select.js@^3.0.1: dependencies: svg.js "^2.6.5" -sweetalert2@^11.19.1: - version "11.19.1" - resolved "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.19.1.tgz" - integrity sha512-+8yws3Sc1srAZbrgdhmEIZny1I1UOYhJOIOdtOlv4TYaP5kkwQ9Zm8/BT23Qg+KdByCNOazltxEJAHzXVu8mhA== - synckit@^0.9.1: version "0.9.2" resolved "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz" @@ -4510,7 +4531,7 @@ tailwindcss-animate@^1.0.7: resolved "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz" integrity sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA== -tailwindcss@^3.4.14: +tailwindcss@^3.4.14, "tailwindcss@>=3.0.0 || insiders": version "3.4.14" resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.14.tgz" integrity sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA== @@ -4562,11 +4583,6 @@ tiny-case@^1.0.3: resolved "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz" integrity sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q== -tiny-invariant@^1.3.1: - version "1.3.3" - resolved "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz" - integrity sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg== - tiny-warning@^1.0.2: version "1.0.3" resolved "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz" @@ -4625,7 +4641,7 @@ typescript-eslint@^8.14.0: "@typescript-eslint/parser" "8.14.0" "@typescript-eslint/utils" "8.14.0" -typescript@^5.6.3: +"typescript@^4.7 || 5", typescript@^5.6.3, typescript@>=4.2.0: version "5.6.3" resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz" integrity sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw== @@ -4683,26 +4699,6 @@ util-deprecate@^1.0.2: resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== -victory-vendor@^36.6.8: - version "36.9.2" - resolved "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz" - integrity sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ== - dependencies: - "@types/d3-array" "^3.0.3" - "@types/d3-ease" "^3.0.0" - "@types/d3-interpolate" "^3.0.1" - "@types/d3-scale" "^4.0.2" - "@types/d3-shape" "^3.1.0" - "@types/d3-time" "^3.0.0" - "@types/d3-timer" "^3.0.0" - d3-array "^3.1.6" - d3-ease "^3.0.1" - d3-interpolate "^3.0.1" - d3-scale "^4.0.2" - d3-shape "^3.1.0" - d3-time "^3.0.0" - d3-timer "^3.0.1" - vite-plugin-windicss@^1.9.3: version "1.9.3" resolved "https://registry.npmjs.org/vite-plugin-windicss/-/vite-plugin-windicss-1.9.3.tgz" @@ -4713,7 +4709,7 @@ vite-plugin-windicss@^1.9.3: kolorist "^1.8.0" windicss "^3.5.6" -vite@^5.4.11: +"vite@^2.0.1 || ^3.0.0 || ^4.0.0 || ^5.0.0", "vite@^4.2.0 || ^5.0.0", vite@^5.4.11: version "5.4.11" resolved "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz" integrity sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q== From eb2a1b35b41decef973fe13c57fee4656eb13207 Mon Sep 17 00:00:00 2001 From: bagusajisaputroo Date: Fri, 2 May 2025 15:02:16 +0700 Subject: [PATCH 03/15] fix transferttype + wallet history --- .../feedback-member/blocks/EditDialog.tsx | 13 ++- .../transfertype/blocks/ListToolBar.tsx | 18 +--- .../hooks/ManageTransferTypeContext.tsx | 2 +- .../wallet-history/blocks/ListToolbar.tsx | 90 ++++++++++--------- 4 files changed, 56 insertions(+), 67 deletions(-) diff --git a/src/pages/members/feedback-member/blocks/EditDialog.tsx b/src/pages/members/feedback-member/blocks/EditDialog.tsx index b12a0c0..c99d396 100644 --- a/src/pages/members/feedback-member/blocks/EditDialog.tsx +++ b/src/pages/members/feedback-member/blocks/EditDialog.tsx @@ -1,5 +1,5 @@ import { useState, useEffect } from 'react'; -import { Dialog, DialogContent } from '@/components/ui/dialog'; +import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Select, SelectContent, @@ -59,16 +59,12 @@ const EditDialog = () => { if (response?.status) { toast.success('Feedback reviewed successfully'); - // Close the edit dialog handleEditDialog(false, null); - // First close the detail dialog to reset its state handleDetailDialog(false, null); - // Refresh the main data grid first refreshData(); - // Wait a tiny bit then reopen the detail with refreshed data setTimeout(() => { handleDetailDialog(true, selectedFeedback); }, 300); @@ -97,7 +93,6 @@ const EditDialog = () => { } const data = response.data; - // console.log('Fetched data:', data); setReviewNotes(data.review_notes || ''); @@ -112,7 +107,11 @@ const EditDialog = () => { return ( handleEditDialog(open, null)}> - + + + + +
diff --git a/src/pages/transfer/transfertype/blocks/ListToolBar.tsx b/src/pages/transfer/transfertype/blocks/ListToolBar.tsx index d57d2a4..d49caa7 100644 --- a/src/pages/transfer/transfertype/blocks/ListToolBar.tsx +++ b/src/pages/transfer/transfertype/blocks/ListToolBar.tsx @@ -46,8 +46,6 @@ const typeLabelMap: Record = { IC: 'Income Merchant' }; -// Import section remains the same... - const ListToolbar = () => { const { table, reload } = useDataGrid(); const { handleAddDialog } = useManageTransferTypeContext(); @@ -97,32 +95,25 @@ const ListToolbar = () => { }, []); const handleClearFilter = () => { - // Reset state variables setSearchValue(''); setStatusTypes(''); setApproval(''); - // Clear all column filters table.getColumn('name')?.setFilterValue(''); table.getColumn('type')?.setFilterValue(''); table.getColumn('status_approval')?.setFilterValue(''); - // Force reset the Select components by using setTimeout - // This ensures the state updates are processed before resetting the UI setTimeout(() => { - // Reset to first page table.setPageIndex(0); - // Reload the data reload(); }, 0); }; return ( -
-
- {/* Top bar */} +
+
-
+
- {/* Filter bar */}
- {/* Type Filter */}
- {/* Approval Filter */}
{ /> -
- setWalletId(value)}> + @@ -165,25 +178,14 @@ const ListToolbar = () => {
- -
+ - From 30b26216dabe5f9ee41fe48ede833602f9bf55b1 Mon Sep 17 00:00:00 2001 From: wayanrivan Date: Fri, 2 May 2025 16:29:02 +0700 Subject: [PATCH 04/15] update add trigger for current balance --- .../blocks/DetailApprovalTransaction.tsx | 124 ++++++++++++++-- .../blocks/DetailTransaction.tsx | 136 +++++++++++++++--- 2 files changed, 229 insertions(+), 31 deletions(-) diff --git a/src/pages/transaction/approval-transaction/blocks/DetailApprovalTransaction.tsx b/src/pages/transaction/approval-transaction/blocks/DetailApprovalTransaction.tsx index 4b5d549..35756d2 100644 --- a/src/pages/transaction/approval-transaction/blocks/DetailApprovalTransaction.tsx +++ b/src/pages/transaction/approval-transaction/blocks/DetailApprovalTransaction.tsx @@ -10,8 +10,10 @@ import { DialogHeader, DialogTitle } from '@/components/ui/dialog'; +import { Button } from '@/components/ui/button'; const API_URL = apiConfig.transaction; +const API_URL_CURRENT_BALANCE = apiConfig.service_wallet; const DetailApprovalTransaction = () => { const { GetData } = useCallApi(); @@ -51,6 +53,60 @@ const DetailApprovalTransaction = () => { } }, [showDetailDialog]); + const [currentBalance, setCurrentBalance] = useState(null); + const [currentBalanceTransfer, setCurrentBalanceTransfer] = useState(null); + useEffect(() => { + setCurrentBalance(null); + }, [transactionDetails]); + + useEffect(() => { + setCurrentBalanceTransfer(null); + }, [transactionDetails]); + + const getCurrentBallanceWallet = async (customerId: string) => { + try { + const responsecurrentbalance = await GetData( + `${API_URL_CURRENT_BALANCE}/dashboard/balance/account/${customerId}`, + {} + ); + + const match = responsecurrentbalance?.data?.find( + (item: any) => item.id_wallet === transactionDetails?.origin_wallet?.id + ); + + if (match) { + // console.log('Matched Wallet:', match); // Optional debug + return match.amount; + } + } catch (error) { + console.error('Error fetching current balance', error); + } + + return null; + }; + + const getCurrentBallanceWalletTransfer = async (customerIdtransfer: string) => { + try { + const response = await GetData( + `${API_URL_CURRENT_BALANCE}/dashboard/balance/account/${customerIdtransfer}`, + {} + ); + + const match = response?.data?.find( + (item: any) => item.id_wallet === transactionDetails?.transfer?.destination_wallet?.id + ); + + if (match) { + // console.log('Matched Wallet:', match); + return match.amount; + } + } catch (error) { + console.error('Error fetching current balance', error); + } + + return null; + }; + return ( @@ -471,7 +527,27 @@ const DetailApprovalTransaction = () => {

Description

{transactionDetails?.origin_wallet.description}

+
+

Current Balance

+

+ {currentBalance !== null && currentBalance !== undefined + ? new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(currentBalance) + : '-'} +

+
+
)} @@ -482,16 +558,42 @@ const DetailApprovalTransaction = () => { {!transactionDetails?.transfer ? (
No Data available
) : ( -
-
-

Name

-

{transactionDetails.transfer.destination_wallet.name}

+ <> +
+
+

Name

+

{transactionDetails.transfer.destination_wallet.name}

+
+
+

Description

+

{transactionDetails.transfer.destination_wallet.description}

+
+
+

Current Balance

+

+ {currentBalanceTransfer !== null + ? new Intl.NumberFormat('en-US', { + style: 'currency', + currency: 'USD', + }).format(currentBalanceTransfer) + : '-'} +

+
-
-

Description

-

{transactionDetails.transfer.destination_wallet.description}

-
-
+ + )}
)} @@ -540,8 +642,8 @@ const DetailApprovalTransaction = () => { }) : ''} {log.request_body} - {log.response_body} - {log.request_endpoint} + {log.response_body} + {log.request_endpoint} )) ) : ( diff --git a/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx b/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx index de6a873..decf631 100644 --- a/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx +++ b/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx @@ -13,11 +13,15 @@ import { DialogTitle } from '@/components/ui/dialog'; import { useDataGrid } from '@/components'; +import { Button } from '@/components/ui/button'; const API_URL = apiConfig.transaction; +const API_URL_CURRENT_BALANCE = apiConfig.service_wallet; + const DetailTransaction = () => { const { GetData } = useCallApi(); + // const { reload } = useDataGrid(); const { showDetailDialog, @@ -45,7 +49,7 @@ const DetailTransaction = () => { id: selectedTransactionId }); setTransactionDetails(response?.data); - // console.log(response?.data); + // console.log(response?.data.origin_customer.id); // console.log(selectedTransactionId); } catch (error) { console.error('Error fetching transaction', error); @@ -67,6 +71,61 @@ const DetailTransaction = () => { } }, [showDetailDialog]); + const [currentBalance, setCurrentBalance] = useState(null); + const [currentBalanceTransfer, setCurrentBalanceTransfer] = useState(null); + + useEffect(() => { + setCurrentBalance(null); + }, [transactionDetails]); + + useEffect(() => { + setCurrentBalanceTransfer(null); + }, [transactionDetails]); + + const getCurrentBallanceWallet = async (customerId: string) => { + try { + const responsecurrentbalance = await GetData( + `${API_URL_CURRENT_BALANCE}/dashboard/balance/account/${customerId}`, + {} + ); + + const match = responsecurrentbalance?.data?.find( + (item: any) => item.id_wallet === transactionDetails?.origin_wallet?.id + ); + + if (match) { + // console.log('Matched Wallet:', match); // Optional debug + return match.amount; + } + } catch (error) { + console.error('Error fetching current balance', error); + } + + return null; + }; + + + const getCurrentBallanceWalletTransfer = async (customerIdtransfer: string) => { + try { + const response = await GetData( + `${API_URL_CURRENT_BALANCE}/dashboard/balance/account/${customerIdtransfer}`, + {} + ); + + const match = response?.data?.find( + (item: any) => item.id_wallet === transactionDetails?.transfer?.destination_wallet?.id + ); + + if (match) { + // console.log('Matched Wallet:', match); + return match.amount; + } + } catch (error) { + console.error('Error fetching current balance', error); + } + + return null; + }; return ( @@ -231,16 +290,6 @@ const DetailTransaction = () => {
-

- Origin Wallet - - Wallet - -

-
- -
-

Purchase @@ -482,7 +531,27 @@ const DetailTransaction = () => {

Description

{transactionDetails?.origin_wallet.description}

+
+

Current Balance

+

+ {currentBalance !== null && currentBalance !== undefined + ? new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(currentBalance) + : '-'} +

+
+
)} @@ -493,16 +562,43 @@ const DetailTransaction = () => { {!transactionDetails?.transfer ? (
No Data available
) : ( -
-
-

Name

-

{transactionDetails.transfer.destination_wallet.name}

+ <> +
+
+

Name

+

{transactionDetails.transfer.destination_wallet.name}

+
+
+

Description

+

{transactionDetails.transfer.destination_wallet.description}

+
+
+

Current Balance

+

+ {currentBalanceTransfer !== null + ? new Intl.NumberFormat('en-US', { + style: 'currency', + currency: 'USD', + }).format(currentBalanceTransfer) + : '-'} +

+
-
-

Description

-

{transactionDetails.transfer.destination_wallet.description}

-
-
+ + + )}
)} From fef07ae63253e8bdd4c42b5a6868c7dd4c205aea Mon Sep 17 00:00:00 2001 From: bagusajisaputroo Date: Fri, 2 May 2025 16:39:56 +0700 Subject: [PATCH 05/15] fix clear filter wallet history --- .../wallet-history/blocks/ListToolbar.tsx | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/pages/wallet/wallet-history/blocks/ListToolbar.tsx b/src/pages/wallet/wallet-history/blocks/ListToolbar.tsx index 524bdf2..ff21a0a 100644 --- a/src/pages/wallet/wallet-history/blocks/ListToolbar.tsx +++ b/src/pages/wallet/wallet-history/blocks/ListToolbar.tsx @@ -94,25 +94,26 @@ const ListToolbar = () => { const handleClearAllFilters = () => { const today = new Date(); - const threeMonthsAgo = getOneMonthsAgo(); + const oneMonthAgo = getOneMonthsAgo(); const resetDateRange = { - from: formatDate(threeMonthsAgo), + from: formatDate(oneMonthAgo), to: formatDate(today) }; - + setSearchValue(''); setWalletId(''); setDateRange(resetDateRange); - - // table.getAllColumns().forEach((column) => { - // if (column.id !== 'CreatedAt') { - // column.setFilterValue(undefined); - // } - // }); - + + table.getColumn('msisdn')?.setFilterValue(''); + table.getColumn('id_wallet')?.setFilterValue(''); table.getColumn('CreatedAt')?.setFilterValue(resetDateRange); - table.setPageIndex(0); + + setTimeout(() => { + table.setPageIndex(0); + reload(); + }, 0); }; + const handleRefresh = () => { const today = new Date(); From 545e7016f9ca97088d81280b6de0ea576ebda0a1 Mon Sep 17 00:00:00 2001 From: bagusajisaputroo Date: Mon, 5 May 2025 12:53:19 +0700 Subject: [PATCH 06/15] fixing styling clear filter --- .../transfertype/blocks/ListToolBar.tsx | 115 ++++++++++-------- .../wallet-history/blocks/ListToolbar.tsx | 12 +- 2 files changed, 70 insertions(+), 57 deletions(-) diff --git a/src/pages/transfer/transfertype/blocks/ListToolBar.tsx b/src/pages/transfer/transfertype/blocks/ListToolBar.tsx index d49caa7..308c074 100644 --- a/src/pages/transfer/transfertype/blocks/ListToolBar.tsx +++ b/src/pages/transfer/transfertype/blocks/ListToolBar.tsx @@ -111,24 +111,71 @@ const ListToolbar = () => { return (
-
+
-
- +
+
+ +
+ +
+ +
+ +
+ +
+ + +
-
-
-
- -
- -
- -
-
); diff --git a/src/pages/wallet/wallet-history/blocks/ListToolbar.tsx b/src/pages/wallet/wallet-history/blocks/ListToolbar.tsx index ff21a0a..6e2c9a2 100644 --- a/src/pages/wallet/wallet-history/blocks/ListToolbar.tsx +++ b/src/pages/wallet/wallet-history/blocks/ListToolbar.tsx @@ -182,9 +182,15 @@ const ListToolbar = () => {
- + + +
-
- -
- + +
+ +
+ + +
-
+
From 4d0d6fd039ce6b7e9c6f51c34ac9ed7b8eda7c1f Mon Sep 17 00:00:00 2001 From: wayanrivan Date: Tue, 6 May 2025 15:42:51 +0700 Subject: [PATCH 15/15] update --- .../blocks/DetailApprovalTransaction.tsx | 36 +++-- .../hooks/ApprovalTransactionContext.tsx | 25 ++-- .../blocks/DetailTransaction.tsx | 136 +++++++++++------- .../hooks/TransactionContext.tsx | 25 +--- 4 files changed, 125 insertions(+), 97 deletions(-) diff --git a/src/pages/transaction/approval-transaction/blocks/DetailApprovalTransaction.tsx b/src/pages/transaction/approval-transaction/blocks/DetailApprovalTransaction.tsx index 35756d2..eb72ba9 100644 --- a/src/pages/transaction/approval-transaction/blocks/DetailApprovalTransaction.tsx +++ b/src/pages/transaction/approval-transaction/blocks/DetailApprovalTransaction.tsx @@ -202,14 +202,20 @@ const DetailApprovalTransaction = () => {

Amount

-

{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase?.amount) ?? new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.transfer.amount)}

+

+ {(transactionDetails?.purchase?.amount ?? transactionDetails?.transfer?.amount) != null + ? new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format( + transactionDetails.purchase?.amount ?? transactionDetails.transfer?.amount + ) + : "-"} +

+

Fee

- {transactionDetails?.kind === 'P' - ? transactionDetails?.purchase.fee_amount.toLocaleString('en-US', { style: 'currency', currency: 'USD' }) - : transactionDetails?.transfer.fee_amount.toLocaleString('en-US', { style: 'currency', currency: 'USD' })} + {(transactionDetails?.transfer?.fee_amount ?? transactionDetails?.purchase?.fee_amount ?? 0) + .toLocaleString('en-US', { style: 'currency', currency: 'USD' })}

@@ -290,19 +296,33 @@ const DetailApprovalTransaction = () => {

Amount

-

{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase.amount)}

+

+ {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format( + transactionDetails?.purchase?.amount ?? transactionDetails?.transfer?.amount ?? 0 + )} +

Cashback

-

{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase.cashback)}

+

+ {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format( + transactionDetails?.purchase?.cashback ?? transactionDetails?.transfer?.cashback ?? 0 + )} +

Cashback Point

-

{transactionDetails?.purchase.cashback_point}

+

+ {transactionDetails?.purchase?.cashback_point ?? transactionDetails?.transfer?.cashback_point ?? 0} +

Fee Amount

-

{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase.fee_amount)}

+

+ {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format( + transactionDetails?.purchase?.fee_amount ?? transactionDetails?.transfer?.fee_amount ?? 0 + )} +

diff --git a/src/pages/transaction/approval-transaction/hooks/ApprovalTransactionContext.tsx b/src/pages/transaction/approval-transaction/hooks/ApprovalTransactionContext.tsx index 4308695..f1cfb9f 100644 --- a/src/pages/transaction/approval-transaction/hooks/ApprovalTransactionContext.tsx +++ b/src/pages/transaction/approval-transaction/hooks/ApprovalTransactionContext.tsx @@ -270,28 +270,19 @@ const ApprovalTransactionProvider = ({ children }: { children: React.ReactNode } }); } - // Constructing filter object with dynamic properties const formattedFilter: any = { "Transactions.transaction_date": { from: `${startdate} 00:00:00`, - to: `${enddate} 23:59:59`, - }, + to: `${enddate} 23:59:59` + } }; - + if (transactioncode) { - formattedFilter["Transactions.code"] = { like: `%${transactioncode}%` }; - } - - if (transactioncode) { - formattedFilter["Transactions.msisdn"] = { - like: `${transactioncode}` - }; - } - - if (transactioncode) { - formattedFilter["Transactions.fullname"] = { - like: `${transactioncode}` - }; + formattedFilter["$or"] = [ + { "Transactions.code": { like: `%${transactioncode}%` } }, + { "Transactions.msisdn": { like: `${transactioncode}` } }, + { "origin_customer.fullname": { like: `${transactioncode}` } } + ]; } // Handle approval status filter diff --git a/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx b/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx index decf631..976ec28 100644 --- a/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx +++ b/src/pages/transaction/history-transaction/blocks/DetailTransaction.tsx @@ -49,7 +49,7 @@ const DetailTransaction = () => { id: selectedTransactionId }); setTransactionDetails(response?.data); - // console.log(response?.data.origin_customer.id); + // console.log(response?.data); // console.log(selectedTransactionId); } catch (error) { console.error('Error fetching transaction', error); @@ -221,14 +221,20 @@ const DetailTransaction = () => {

Amount

-

{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase?.amount) ?? new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.transfer.amount)}

+

+ {(transactionDetails?.purchase?.amount ?? transactionDetails?.transfer?.amount) != null + ? new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format( + transactionDetails.purchase?.amount ?? transactionDetails.transfer?.amount + ) + : "-"} +

+

Fee

- {transactionDetails?.kind === 'P' - ? transactionDetails?.purchase.fee_amount.toLocaleString('en-US', { style: 'currency', currency: 'USD' }) - : transactionDetails?.transfer.fee_amount.toLocaleString('en-US', { style: 'currency', currency: 'USD' })} + {(transactionDetails?.transfer?.fee_amount ?? transactionDetails?.purchase?.fee_amount ?? 0) + .toLocaleString('en-US', { style: 'currency', currency: 'USD' })}

@@ -299,69 +305,91 @@ const DetailTransaction = () => {

Amount

-

{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase.amount)}

+

+ {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format( + transactionDetails?.purchase?.amount ?? transactionDetails?.transfer?.amount ?? 0 + )} +

Cashback

-

{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase.cashback)}

+

+ {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format( + transactionDetails?.purchase?.cashback ?? transactionDetails?.transfer?.cashback ?? 0 + )} +

Cashback Point

-

{transactionDetails?.purchase.cashback_point}

+

+ {transactionDetails?.purchase?.cashback_point ?? transactionDetails?.transfer?.cashback_point ?? 0} +

Fee Amount

-

{new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase.fee_amount)}

-
-
-
- )} - {activeTab === 'detail' && transactionDetails?.kind === 'P' && ( -
-

- Product Information - - Product Info - -

-
-
-

Product Name

-

{transactionDetails?.purchase.product.name}

-
-
-

Price Cash

- {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format(transactionDetails?.purchase.product.price_cash)} -
-
-

Price Point

-

{transactionDetails?.purchase.product.price_point}

-
-
-

Product Type

-

{transactionDetails?.purchase.product.type}

-
-
-

Provider Name

-

{transactionDetails?.purchase.product.provider.description}

-
-
-

Provider Type

- {(() => { - let providertype; - if (transactionDetails?.purchase.product.provider.type === 'h2h') { - providertype = 'HOST TO HOST'; - } else if (transactionDetails?.purchase.product.provider.type === 'agent') { - providertype = 'AGENT'; - } - return providertype; - })()} + {new Intl.NumberFormat('en-US', { style: 'currency', currency: 'USD' }).format( + transactionDetails?.purchase?.fee_amount ?? transactionDetails?.transfer?.fee_amount ?? 0 + )}

)} + {/* {activeTab === 'detail' && transactionDetails?.kind === 'P' && ( */} +
+

+ Product Information + + Product Info + +

+
+
+

Product Name

+

+ {transactionDetails?.purchase?.product?.name ?? "-"} +

+
+
+

Price Cash

+

+ {transactionDetails?.purchase?.product?.price_cash != null + ? new Intl.NumberFormat("en-US", { style: "currency", currency: "USD" }).format(transactionDetails.purchase.product.price_cash) + : "-"} +

+
+
+

Price Point

+

+ {transactionDetails?.purchase?.product?.price_point ?? "-"} +

+
+
+

Product Type

+

+ {transactionDetails?.purchase?.product?.type ?? "-"} +

+
+
+

Provider Name

+

+ {transactionDetails?.purchase?.product?.provider?.description ?? "-"} +

+
+
+

Provider Type

+

+ {transactionDetails?.purchase?.product?.provider?.type === "h2h" + ? "HOST TO HOST" + : transactionDetails?.purchase?.product?.provider?.type === "agent" + ? "AGENT" + : "-"} +

+
+
+
+ {/* )} */} {activeTab === 'detail' && transactionDetails?.kind != 'P' && transactionDetails?.transfer != null && (
@@ -397,7 +425,7 @@ const DetailTransaction = () => {

Fee

- {transactionDetails?.transfer.fee_amount.toLocaleString('en-US', { style: 'currency', currency: 'USD' })} + {(transactionDetails?.transfer?.fee_amount ?? transactionDetails?.purchase?.fee_amount ?? 0).toLocaleString('en-US', { style: 'currency', currency: 'USD' })}

diff --git a/src/pages/transaction/history-transaction/hooks/TransactionContext.tsx b/src/pages/transaction/history-transaction/hooks/TransactionContext.tsx index 038103a..f0063e2 100644 --- a/src/pages/transaction/history-transaction/hooks/TransactionContext.tsx +++ b/src/pages/transaction/history-transaction/hooks/TransactionContext.tsx @@ -265,30 +265,19 @@ const TransactionProvider = ({ children }: { children: React.ReactNode }) => { }); } - // Build filter object dynamically const formattedFilter: any = { "Transactions.transaction_date": { from: `${startdate} 00:00:00`, to: `${enddate} 23:59:59` } }; - + if (transactioncode) { - formattedFilter["Transactions.code"] = { - like: `%${transactioncode}%` - }; - } - - if (transactioncode) { - formattedFilter["Transactions.msisdn"] = { - like: `${transactioncode}` - }; - } - - if (transactioncode) { - formattedFilter["Transactions.fullname"] = { - like: `${transactioncode}` - }; + formattedFilter["$or"] = [ + { "Transactions.code": { like: `%${transactioncode}%` } }, + { "Transactions.msisdn": { like: `${transactioncode}` } }, + { "origin_customer.fullname": { like: `${transactioncode}` } } + ]; } // if (transactionstatus) { @@ -298,7 +287,7 @@ const TransactionProvider = ({ children }: { children: React.ReactNode }) => { if (type) { formattedFilter["Transactions.kind"] = type; } - + const response = await GetData(`${API_URL}/transaction/history`, { limit, page: page + 1,