From 392a8a08fb328c51023ef134a3f7ddff82e993cc Mon Sep 17 00:00:00 2001 From: Rizqika Date: Mon, 25 Nov 2024 17:51:46 +0700 Subject: [PATCH] Slicing UI --- package-lock.json | 29 + package.json | 1 + src/App.js | 142 +++- src/assets/css/app.css | 1 + src/assets/images/WAB-1.png | Bin 0 -> 12936 bytes src/assets/images/WAB-2.png | Bin 0 -> 14116 bytes src/assets/images/index.js | 6 +- src/components/Sidebar/dataMenu.js | 8 +- .../FaceRecognition/Section/Verify.jsx | 2 +- .../FaceRecognition/Section/index.js | 4 +- .../Biometric/FaceRecognition/Verify.jsx | 2 +- .../Biometric/FaceRecognition/index.js | 12 +- src/screens/Biometric/OcrDocument/index.js | 12 +- src/screens/Biometric/OcrKtp/Verify.jsx | 3 +- src/screens/Biometric/OcrKtp/index.js | 16 +- src/screens/Biometric/OcrNpwp/index.js | 12 +- src/screens/Biometric/OcrSim/index.js | 12 +- src/screens/Sms/Announcements/Bulk.jsx | 295 ++++++++ .../Announcements/Section/Announcement.jsx | 265 +++++++ .../Sms/Announcements/Section/Transaction.jsx | 271 +++++++ .../Sms/Announcements/Section/index.js | 7 + src/screens/Sms/Announcements/Summary.jsx | 114 +++ src/screens/Sms/Announcements/Transaction.jsx | 454 ++++++++++++ src/screens/Sms/Announcements/index.js | 9 + src/screens/Sms/AnomalyReport/Anomaly.jsx | 565 ++++++++++++++ src/screens/Sms/AnomalyReport/index.js | 5 + .../Sms/BlockedNumbers/BlockNumber.jsx | 130 ++++ src/screens/Sms/BlockedNumbers/BlockedSms.jsx | 476 ++++++++++++ src/screens/Sms/BlockedNumbers/index.js | 7 + src/screens/Sms/OtpManagement/DetailView.jsx | 419 +++++++++++ .../OtpManagement/Section/Announcement.jsx | 265 +++++++ .../Sms/OtpManagement/Section/Transaction.jsx | 271 +++++++ .../Sms/OtpManagement/Section/index.js | 7 + src/screens/Sms/OtpManagement/Settings.jsx | 146 ++++ src/screens/Sms/OtpManagement/Summary.jsx | 114 +++ src/screens/Sms/OtpManagement/Transaction.jsx | 422 +++++++++++ src/screens/Sms/OtpManagement/index.js | 11 + src/screens/Sms/Verification/Section/index.js | 8 +- src/screens/Sms/Verification/Verify.jsx | 4 +- src/screens/Sms/Verification/index.js | 4 +- .../Wa/Manage/Content/CreateSettings.jsx | 212 ++++++ .../Wa/Manage/Content/RegisterContent.jsx | 256 +++++++ .../Wa/Manage/Content/RegisterStep.jsx | 455 ++++++++++++ src/screens/Wa/Manage/Content/index.js | 9 + src/screens/Wa/Manage/Integration.jsx | 437 +++++++++++ src/screens/Wa/Manage/Profile.jsx | 486 ++++++++++++ src/screens/Wa/Manage/Registration.jsx | 29 + src/screens/Wa/Manage/Template.jsx | 346 +++++++++ src/screens/Wa/Manage/index.js | 11 + src/screens/Wa/Verify/Section/Auth.jsx | 542 ++++++++++++++ src/screens/Wa/Verify/Section/Message.jsx | 691 ++++++++++++++++++ src/screens/Wa/Verify/Section/index.js | 7 + src/screens/Wa/Verify/Verify.jsx | 114 +++ src/screens/Wa/Verify/index.js | 5 + 54 files changed, 8055 insertions(+), 76 deletions(-) create mode 100644 src/assets/images/WAB-1.png create mode 100644 src/assets/images/WAB-2.png create mode 100644 src/screens/Sms/Announcements/Bulk.jsx create mode 100644 src/screens/Sms/Announcements/Section/Announcement.jsx create mode 100644 src/screens/Sms/Announcements/Section/Transaction.jsx create mode 100644 src/screens/Sms/Announcements/Section/index.js create mode 100644 src/screens/Sms/Announcements/Summary.jsx create mode 100644 src/screens/Sms/Announcements/Transaction.jsx create mode 100644 src/screens/Sms/Announcements/index.js create mode 100644 src/screens/Sms/AnomalyReport/Anomaly.jsx create mode 100644 src/screens/Sms/AnomalyReport/index.js create mode 100644 src/screens/Sms/BlockedNumbers/BlockNumber.jsx create mode 100644 src/screens/Sms/BlockedNumbers/BlockedSms.jsx create mode 100644 src/screens/Sms/BlockedNumbers/index.js create mode 100644 src/screens/Sms/OtpManagement/DetailView.jsx create mode 100644 src/screens/Sms/OtpManagement/Section/Announcement.jsx create mode 100644 src/screens/Sms/OtpManagement/Section/Transaction.jsx create mode 100644 src/screens/Sms/OtpManagement/Section/index.js create mode 100644 src/screens/Sms/OtpManagement/Settings.jsx create mode 100644 src/screens/Sms/OtpManagement/Summary.jsx create mode 100644 src/screens/Sms/OtpManagement/Transaction.jsx create mode 100644 src/screens/Sms/OtpManagement/index.js create mode 100644 src/screens/Wa/Manage/Content/CreateSettings.jsx create mode 100644 src/screens/Wa/Manage/Content/RegisterContent.jsx create mode 100644 src/screens/Wa/Manage/Content/RegisterStep.jsx create mode 100644 src/screens/Wa/Manage/Content/index.js create mode 100644 src/screens/Wa/Manage/Integration.jsx create mode 100644 src/screens/Wa/Manage/Profile.jsx create mode 100644 src/screens/Wa/Manage/Registration.jsx create mode 100644 src/screens/Wa/Manage/Template.jsx create mode 100644 src/screens/Wa/Manage/index.js create mode 100644 src/screens/Wa/Verify/Section/Auth.jsx create mode 100644 src/screens/Wa/Verify/Section/Message.jsx create mode 100644 src/screens/Wa/Verify/Section/index.js create mode 100644 src/screens/Wa/Verify/Verify.jsx create mode 100644 src/screens/Wa/Verify/index.js diff --git a/package-lock.json b/package-lock.json index a7c2c54..5567459 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,6 +19,7 @@ "bootstrap": "^5.3.3", "font-awesome": "^4.7.0", "react": "^18.3.1", + "react-copy-to-clipboard": "^5.1.0", "react-dom": "^18.3.1", "react-drag-drop-files": "^2.4.0", "react-icons": "^5.3.0", @@ -5973,6 +5974,15 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, + "node_modules/copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "license": "MIT", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, "node_modules/core-js": { "version": "3.39.0", "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz", @@ -13344,6 +13354,19 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, + "node_modules/react-copy-to-clipboard": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz", + "integrity": "sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==", + "license": "MIT", + "dependencies": { + "copy-to-clipboard": "^3.3.1", + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "react": "^15.3.0 || 16 || 17 || 18" + } + }, "node_modules/react-dev-utils": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", @@ -15541,6 +15564,12 @@ "node": ">=8.0" } }, + "node_modules/toggle-selection": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==", + "license": "MIT" + }, "node_modules/toidentifier": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", diff --git a/package.json b/package.json index ba400aa..672eaf4 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "bootstrap": "^5.3.3", "font-awesome": "^4.7.0", "react": "^18.3.1", + "react-copy-to-clipboard": "^5.1.0", "react-dom": "^18.3.1", "react-drag-drop-files": "^2.4.0", "react-icons": "^5.3.0", diff --git a/src/App.js b/src/App.js index 58420ca..68565d2 100644 --- a/src/App.js +++ b/src/App.js @@ -13,53 +13,101 @@ import { CreateApps } from './screens/Home'; import { - FaceVerify, - FaceSummary, - FaceTransaction + Verify as FaceVerify, + Summary as FaceSummary, + Transaction as FaceTransaction } from './screens/Biometric/FaceRecognition'; import { Enroll, - VerifySection, + Verify as VerifySection, Liveness, Compare, Search } from './screens/Biometric/FaceRecognition/Section'; import { - ManageKtp, - SummaryKtp, - VerifyKtp, - TransactionKtp + Manage as ManageKtp, + Summary as SummaryKtp, + Verify as VerifyKtp, + Transaction as TransactionKtp } from './screens/Biometric/OcrKtp'; import { - SummaryNpwp, - TransactionNpwp, - VerifyNpwp + Summary as SummaryNpwp, + Transaction as TransactionNpwp, + Verify as VerifyNpwp } from './screens/Biometric/OcrNpwp'; import { - VerifySim, - SummarySim, - TransactionSim + Verify as VerifySim, + Summary as SummarySim, + Transaction as TransactionSim } from './screens/Biometric/OcrSim'; import { - VerifyDoc, - SummaryDoc, - TransactionDoc + Verify as VerifyDoc, + Summary as SummaryDoc, + Transaction as TransactionDoc } from './screens/Biometric/OcrDocument'; import { - SmsVerify + Verify as SmsVerify } from './screens/Sms/Verification'; import { - VerificationAnnoncement, - VerificationOtp + Annoncement as VerificationAnnoncement, + Otp as VerificationOtp } from './screens/Sms/Verification/Section'; +import { + Settings as SmsOtpSettings, + Summary as SmsOtpSummary, + Transaction as SmsOtpTransaction, + Detail as SmsOtpDetail +} from './screens/Sms/OtpManagement'; + +import { + Transaction as SmsOtpSummaryTransaction, + Announcement as SmsOtpSummaryAnnouncement +} from './screens/Sms/OtpManagement/Section'; + +import { + BulkMessage as SmsAnnouncementBulk, + Summary as SmsAnnouncementSummary, + Transaction as SmsAnnouncementTransaction +} from './screens/Sms/Announcements'; + +import { + Transaction as SmsAnnouncementSummaryTransaction, + Announcement as SmsAnnouncementSummaryAnnouncement +} from './screens/Sms/Announcements/Section'; + +import { + Blocked as BlockedSms, + BlockNumber +} from './screens/Sms/BlockedNumbers'; + +import { + Anomaly as AnomalySms +} from './screens/Sms/AnomalyReport'; + +import { + Verify as VerifyWa +} from './screens/Wa/Verify'; + +import { + Auth as AuthWa, + Message as MessageWa +} from './screens/Wa/Verify/Section'; + +import { + Registration as RegistrationWa, + Profile as ProfileWa, + Template as TemplateWa, + Integration as IntegrationWa +} from './screens/Wa/Manage'; +import { CreateSettings } from './screens/Wa/Manage/Content'; const App = () => { return ( @@ -89,12 +137,6 @@ const App = () => { {/* Default route */} } /> - {/* Add routes for the verify section */} - {/* } /> - } /> - } /> - } /> - } /> */} {/* Biometric - Face Recognition (Summary) */} } /> @@ -130,6 +172,54 @@ const App = () => { } /> + {/* Sms Services - OTP (Settings) */} + } /> + {/* Sms Services - OTP (Summary) */} + }> + {/* Anak rute */} + } /> + } /> + {/* Default route */} + } /> + + {/* Sms Services - OTP (Transaction) */} + } /> + {/* Sms Services - OTP (Detail) */} + } /> + + {/* Sms Services - Announcements */} + } /> + }> + {/* Anak rute */} + } /> + } /> + {/* Default route */} + } /> + + } /> + + {/* Sms Services - Block Numbers */} + }> + } /> + + {/* Sms Services - Anomaly Report */} + }> + + {/* WhatsApp - Verify */} + }> + {/* Anak rute */} + } /> + } /> + {/* Default route */} + } /> + + + {/* WhatsApp - Manage */} + } /> + } /> + } /> + } /> + } /> {/* } /> */} {/* Continue for each link */} diff --git a/src/assets/css/app.css b/src/assets/css/app.css index 92c6aa8..ac6a1f5 100644 --- a/src/assets/css/app.css +++ b/src/assets/css/app.css @@ -11287,3 +11287,4 @@ body { background-color: red; font-size: 10px; } + diff --git a/src/assets/images/WAB-1.png b/src/assets/images/WAB-1.png new file mode 100644 index 0000000000000000000000000000000000000000..df00406c2744287867aafa98cd50f24d305b27ed GIT binary patch literal 12936 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 E4;z!OeE { menuPlacement="auto" inputValue={inputValueApplication} onInputChange={handleInputChangeApplication} // Limit input length for Application ID - /> + /> {applicationError && {applicationError}}
diff --git a/src/screens/Biometric/FaceRecognition/Section/index.js b/src/screens/Biometric/FaceRecognition/Section/index.js index 5192539..f4ea845 100644 --- a/src/screens/Biometric/FaceRecognition/Section/index.js +++ b/src/screens/Biometric/FaceRecognition/Section/index.js @@ -1,12 +1,12 @@ import Enroll from "./Enroll"; -import VerifySection from "./Verify"; +import Verify from "./Verify"; import Compare from "./Compare" import Liveness from "./Liveness" import Search from "./Search" export { Enroll, - VerifySection, + Verify, Compare, Liveness, Search diff --git a/src/screens/Biometric/FaceRecognition/Verify.jsx b/src/screens/Biometric/FaceRecognition/Verify.jsx index 160db3e..6fb6f34 100644 --- a/src/screens/Biometric/FaceRecognition/Verify.jsx +++ b/src/screens/Biometric/FaceRecognition/Verify.jsx @@ -5,7 +5,7 @@ import { Compare, Liveness, Search, - VerifySection + Verify as VerifySection } from './Section'; const Verify = () => { diff --git a/src/screens/Biometric/FaceRecognition/index.js b/src/screens/Biometric/FaceRecognition/index.js index ad6ea8f..e77be84 100644 --- a/src/screens/Biometric/FaceRecognition/index.js +++ b/src/screens/Biometric/FaceRecognition/index.js @@ -1,9 +1,9 @@ -import FaceVerify from "./Verify"; -import FaceSummary from "./Summary"; -import FaceTransaction from "./Transaction"; +import Verify from "./Verify"; +import Summary from "./Summary"; +import Transaction from "./Transaction"; export { - FaceVerify, - FaceSummary, - FaceTransaction + Verify, + Summary, + Transaction } \ No newline at end of file diff --git a/src/screens/Biometric/OcrDocument/index.js b/src/screens/Biometric/OcrDocument/index.js index 55ba4d1..e77be84 100644 --- a/src/screens/Biometric/OcrDocument/index.js +++ b/src/screens/Biometric/OcrDocument/index.js @@ -1,9 +1,9 @@ -import VerifyDoc from "./Verify"; -import SummaryDoc from "./Summary"; -import TransactionDoc from "./Transaction"; +import Verify from "./Verify"; +import Summary from "./Summary"; +import Transaction from "./Transaction"; export { - VerifyDoc, - SummaryDoc, - TransactionDoc + Verify, + Summary, + Transaction } \ No newline at end of file diff --git a/src/screens/Biometric/OcrKtp/Verify.jsx b/src/screens/Biometric/OcrKtp/Verify.jsx index cf2d152..90850eb 100644 --- a/src/screens/Biometric/OcrKtp/Verify.jsx +++ b/src/screens/Biometric/OcrKtp/Verify.jsx @@ -353,7 +353,8 @@ const Verify = () => { color: '#721c24', fontSize: '14px', margin: '0', - },loadingOverlay: { + }, + loadingOverlay: { position: 'fixed', // Gunakan fixed untuk overlay penuh layar top: 0, left: 0, diff --git a/src/screens/Biometric/OcrKtp/index.js b/src/screens/Biometric/OcrKtp/index.js index a48ac53..feadb1f 100644 --- a/src/screens/Biometric/OcrKtp/index.js +++ b/src/screens/Biometric/OcrKtp/index.js @@ -1,11 +1,11 @@ -import VerifyKtp from "./Verify"; -import ManageKtp from "./Manage"; -import SummaryKtp from "./Summary"; -import TransactionKtp from "./Transaction"; +import Verify from "./Verify"; +import Manage from "./Manage"; +import Summary from "./Summary"; +import Transaction from "./Transaction"; export { - VerifyKtp, - ManageKtp, - SummaryKtp, - TransactionKtp + Verify, + Manage, + Summary, + Transaction } \ No newline at end of file diff --git a/src/screens/Biometric/OcrNpwp/index.js b/src/screens/Biometric/OcrNpwp/index.js index 28800e9..e77be84 100644 --- a/src/screens/Biometric/OcrNpwp/index.js +++ b/src/screens/Biometric/OcrNpwp/index.js @@ -1,9 +1,9 @@ -import VerifyNpwp from "./Verify"; -import SummaryNpwp from "./Summary"; -import TransactionNpwp from "./Transaction"; +import Verify from "./Verify"; +import Summary from "./Summary"; +import Transaction from "./Transaction"; export { - VerifyNpwp, - SummaryNpwp, - TransactionNpwp + Verify, + Summary, + Transaction } \ No newline at end of file diff --git a/src/screens/Biometric/OcrSim/index.js b/src/screens/Biometric/OcrSim/index.js index 2f272a6..e77be84 100644 --- a/src/screens/Biometric/OcrSim/index.js +++ b/src/screens/Biometric/OcrSim/index.js @@ -1,9 +1,9 @@ -import VerifySim from "./Verify"; -import SummarySim from "./Summary"; -import TransactionSim from "./Transaction"; +import Verify from "./Verify"; +import Summary from "./Summary"; +import Transaction from "./Transaction"; export { - VerifySim, - SummarySim, - TransactionSim + Verify, + Summary, + Transaction } \ No newline at end of file diff --git a/src/screens/Sms/Announcements/Bulk.jsx b/src/screens/Sms/Announcements/Bulk.jsx new file mode 100644 index 0000000..b51beae --- /dev/null +++ b/src/screens/Sms/Announcements/Bulk.jsx @@ -0,0 +1,295 @@ +import React, { useState, useEffect } from 'react' +import { CloudDownload } from '../../../assets/icon'; + +const Bulk = () => { + const BASE_URL = process.env.REACT_APP_BASE_URL + const API_KEY = process.env.REACT_APP_API_KEY + + const [selectedImageName, setSelectedImageName] = useState(''); + const [errorMessage, setErrorMessage] = useState(''); + const [applicationId, setApplicationId] = useState(''); + const [applicationIds, setApplicationIds] = useState([]); + const [isSelectOpen, setIsSelectOpen] = useState(false); + const [isMobile, setIsMobile] = useState(false); + + useEffect(() => { + const handleResize = () => { + setIsMobile(window.innerWidth <= 768); // Set mobile state based on window width + }; + + handleResize(); // Initial check on component mount + window.addEventListener('resize', handleResize); // Listen for resize events + + return () => { + window.removeEventListener('resize', handleResize); // Cleanup on component unmount + }; + }, []); + + useEffect(() => { + const fetchApplicationIds = async () => { + try { + const url = `${BASE_URL}/application/list`; + console.log('Fetching URL:', url); // Log the URL + + const response = await fetch(url, { + method: 'GET', + headers: { + 'accept': 'application/json', + 'x-api-key': `${API_KEY}`, + }, + }); + + const data = await response.json(); + + if (data.status_code === 200) { + const ids = data.details.data.map(app => app.id); + console.log('Application Id: ' + ids); // Log the IDs + setApplicationIds(data.details.data); // Update state with the fetched data + } else { + console.error('Failed to fetch data:', data.details.message); + } + } catch (error) { + console.error('Error fetching application IDs:', error); + } + }; + + fetchApplicationIds(); + }, []); + + const handleFocus = () => { + setIsSelectOpen(true); + }; + + const handleBlur = () => { + setIsSelectOpen(false); + }; + + const handleFileUpload = (event) => { + const file = event.target.files[0]; + + if (file && (file.type === 'image/jpeg' || file.type === 'image/png' || file.type === 'image/jpg')) { + setSelectedImageName(file.name); + setErrorMessage(''); + } else { + alert('Please upload a valid image file (JPG, JPEG, PNG).'); + } + }; + + return ( +
+ + +
+
+
+ + + + +