summaryrefslogtreecommitdiff
path: root/src-migrate
diff options
context:
space:
mode:
authortrisusilo48 <tri.susilo@altama.co.id>2024-12-23 11:20:56 +0700
committertrisusilo48 <tri.susilo@altama.co.id>2024-12-23 11:20:56 +0700
commit21f3d78e6c58d9b509f3ea234af462807ef1301d (patch)
tree9bad9467325819888b73a86804222e313c6c9504 /src-migrate
parentd1592286eef165533c21d52aec70dbb703cdcfd3 (diff)
parent9962d114e590bfc5e6c865489ab4dcd84de81ad9 (diff)
Merge branch 'new-release' into feature/integrasi_biteship
Diffstat (limited to 'src-migrate')
-rw-r--r--src-migrate/components/ui/modal.tsx2
-rw-r--r--src-migrate/modules/popup-information/index.tsx58
-rw-r--r--src-migrate/modules/register/components/FormBisnis.tsx7
-rw-r--r--src-migrate/modules/register/components/RegistrasiBisnis.tsx19
-rw-r--r--src-migrate/modules/register/components/TermCondition.tsx48
-rw-r--r--src-migrate/modules/register/index.tsx54
-rw-r--r--src-migrate/types/auth.ts9
7 files changed, 112 insertions, 85 deletions
diff --git a/src-migrate/components/ui/modal.tsx b/src-migrate/components/ui/modal.tsx
index 34e1d1c3..50e7128f 100644
--- a/src-migrate/components/ui/modal.tsx
+++ b/src-migrate/components/ui/modal.tsx
@@ -71,7 +71,7 @@ export const Modal = ({
{title}
</div>
{close && (
- <button className="rounded-full h-10 w-10 flex justify-center items-center bg-white" type='button' onClick={close}>
+ <button className="rounded-full h-10 w-10 flex justify-center items-center bg-white" type='button' aria-label="Close" onClick={close}>
<XMarkIcon className='w-5 h-5 ' />
</button>
)}
diff --git a/src-migrate/modules/popup-information/index.tsx b/src-migrate/modules/popup-information/index.tsx
index 0d36f8e9..d50711cc 100644
--- a/src-migrate/modules/popup-information/index.tsx
+++ b/src-migrate/modules/popup-information/index.tsx
@@ -1,31 +1,63 @@
import { useRouter } from 'next/router';
import { useEffect, useState } from 'react';
-import { Modal } from "~/components/ui/modal";
+import Image from 'next/image';
+import Link from 'next/link';
+import { Modal } from '~/components/ui/modal';
import { getAuth } from '~/libs/auth';
-import PageContent from '../page-content';
+import dynamic from 'next/dynamic';
const PagePopupInformation = () => {
const router = useRouter();
const isHomePage = router.pathname === '/';
const auth = getAuth();
const [active, setActive] = useState<boolean>(false);
+ const [data, setData] = useState<any>(null);
+ const [loading, setLoading] = useState(true);
+
useEffect(() => {
- if (isHomePage && !auth) setActive(true);
+ const getData = async () => {
+ const res = await fetch(`/api/hero-banner?type=popup-banner`);
+ const { data } = await res.json();
+ if (data) {
+ setData(data);
+ }
+ setLoading(false);
+ };
+
+ if (isHomePage && !auth) {
+ setActive(true);
+ getData();
+ }
}, [isHomePage, auth]);
return (
<div className='group'>
- <Modal
- active={active}
- className='!w-fit !bg-transparent !border-none overflow-hidden'
- close={() => setActive(false)}
- mode='desktop'
- >
- <div className='w-[350px] md:w-[530px]' onClick={() => setActive(false)}>
- <PageContent path='/onbording-popup' />
- </div>
- </Modal>
+ {data && !loading && (
+ <Modal
+ active={active}
+ className='!w-fit !bg-transparent !border-none overflow-hidden'
+ close={() => setActive(false)}
+ mode='desktop'
+ >
+ <div
+ className='w-[350px] md:w-[530px]'
+ onClick={() => setActive(false)}
+ >
+ <Link href={data[0].url === false ? '/' :data[0].url} aria-label='popup'>
+ <Image
+ src={data[0]?.image}
+ alt={data[0]?.name}
+ width={1152}
+ height={768}
+ loading='eager'
+ sizes='(max-width: 768px) 100vw, 50vw'
+ priority={true}
+ />
+ </Link>
+ </div>
+ </Modal>
+ )}
</div>
);
};
diff --git a/src-migrate/modules/register/components/FormBisnis.tsx b/src-migrate/modules/register/components/FormBisnis.tsx
index e4cf3442..12397956 100644
--- a/src-migrate/modules/register/components/FormBisnis.tsx
+++ b/src-migrate/modules/register/components/FormBisnis.tsx
@@ -1,9 +1,5 @@
import { ChangeEvent, useEffect, useMemo, useRef, useState } from 'react';
-import { useMutation } from 'react-query';
import { useRegisterStore } from '../stores/useRegisterStore';
-import { RegisterProps } from '~/types/auth';
-import { registerUser } from '~/services/auth';
-import { useRouter } from 'next/router';
import {
Button,
Checkbox,
@@ -11,12 +7,10 @@ import {
color,
useToast,
} from '@chakra-ui/react';
-import Link from 'next/link';
import getFileBase64 from '@/core/utils/getFileBase64';
import { Controller, useForm } from 'react-hook-form';
import HookFormSelect from '@/core/components/elements/Select/HookFormSelect';
import odooApi from '~/libs/odooApi';
-import { toast } from 'react-hot-toast';
import { EyeIcon } from '@heroicons/react/24/outline';
import BottomPopup from '@/core/components/elements/Popup/BottomPopup';
import Image from 'next/image';
@@ -60,7 +54,6 @@ const form: React.FC<FormProps> = ({
const [industries, setIndustries] = useState<industry_id[]>([]);
const [companyTypes, setCompanyTypes] = useState<companyType[]>([]);
- const router = useRouter();
const toast = useToast();
const emailRef = useRef<HTMLInputElement>(null);
diff --git a/src-migrate/modules/register/components/RegistrasiBisnis.tsx b/src-migrate/modules/register/components/RegistrasiBisnis.tsx
index ce4d3972..40caed65 100644
--- a/src-migrate/modules/register/components/RegistrasiBisnis.tsx
+++ b/src-migrate/modules/register/components/RegistrasiBisnis.tsx
@@ -1,19 +1,10 @@
-import { ChangeEvent, useEffect, useMemo, useState } from 'react';
+import { useEffect, useMemo, useState } from 'react';
import FormBisnis from './FormBisnis';
import Form from './Form';
-import TermCondition from './TermCondition';
-import FormCaptcha from './FormCaptcha';
import { Radio, RadioGroup, Stack, Divider, Button } from '@chakra-ui/react';
import React from 'react';
import { ChevronDownIcon, ChevronRightIcon } from '@heroicons/react/24/outline';
import { useRegisterStore } from '../stores/useRegisterStore';
-import { useMutation } from 'react-query';
-import { RegisterProps } from '~/types/auth';
-import { registerUser } from '~/services/auth';
-import router from 'next/router';
-import { useRouter } from 'next/router';
-import { UseToastOptions, useToast } from '@chakra-ui/react';
-import Link from 'next/link';
interface FormProps {
chekValid: boolean;
buttonSubmitClick: boolean;
@@ -28,13 +19,7 @@ const RegistrasiBisnis: React.FC<FormProps> = ({
const [isBisnisClicked, setisBisnisClicked] = useState(true);
const [selectedValue, setSelectedValue] = useState('PKP');
const [selectedValueBisnis, setSelectedValueBisnis] = useState('false');
- const { form, isCheckedTNC, isValidCaptcha, errors, validate, updateForm } =
- useRegisterStore();
- const isFormValid = useMemo(() => Object.keys(errors).length === 0, [errors]);
- const toast = useToast();
- const mutation = useMutation({
- mutationFn: (data: RegisterProps) => registerUser(data),
- });
+ const { validate, updateForm } = useRegisterStore();
useEffect(() => {
if (selectedValue === 'PKP') {
diff --git a/src-migrate/modules/register/components/TermCondition.tsx b/src-migrate/modules/register/components/TermCondition.tsx
index d54fe921..44275917 100644
--- a/src-migrate/modules/register/components/TermCondition.tsx
+++ b/src-migrate/modules/register/components/TermCondition.tsx
@@ -1,34 +1,48 @@
-import { Checkbox } from '@chakra-ui/react'
-import React from 'react'
-import { Modal } from '~/components/ui/modal'
-import { useRegisterStore } from "../stores/useRegisterStore";
-import PageContent from '~/modules/page-content'
+import { Checkbox } from '@chakra-ui/react';
+import React from 'react';
+import { Modal } from '~/components/ui/modal';
+import { useRegisterStore } from '../stores/useRegisterStore';
+
+import dynamic from 'next/dynamic';
+const PageContent = dynamic(
+ () => import('@/lib/content/components/PageContent')
+);
const TermCondition = () => {
- const { isOpenTNC, closeTNC, isCheckedTNC, toggleCheckTNC, openTNC } = useRegisterStore()
+ const { isOpenTNC, closeTNC, isCheckedTNC, toggleCheckTNC, openTNC } =
+ useRegisterStore();
return (
<>
- <div className="mt-4 flex items-center gap-x-2">
- <Checkbox id='tnc' name='tnc' colorScheme='red' isChecked={isCheckedTNC} onChange={toggleCheckTNC} />
+ <div className='mt-4 flex items-center gap-x-2'>
+ <Checkbox
+ id='tnc'
+ name='tnc'
+ colorScheme='red'
+ isChecked={isCheckedTNC}
+ onChange={toggleCheckTNC}
+ />
<div>
- <label htmlFor="tnc" className="cursor-pointer">Dengan ini saya menyetujui</label>
- {' '}
+ <label htmlFor='tnc' className='cursor-pointer'>
+ Dengan ini saya menyetujui
+ </label>{' '}
<span
- className="font-medium text-danger-500 cursor-pointer"
+ className='font-medium text-danger-500 cursor-pointer'
onClick={openTNC}
>
syarat dan ketentuan
</span>
- <label htmlFor="tnc" className="ml-2 cursor-pointer">yang berlaku</label>
+ <label htmlFor='tnc' className='ml-2 cursor-pointer'>
+ yang berlaku
+ </label>
</div>
</div>
- <Modal active={isOpenTNC} close={closeTNC} >
- <PageContent path='/register#tnd' />
+ <Modal active={isOpenTNC} close={closeTNC}>
+ <PageContent path='/registerTnd' />
</Modal>
</>
- )
-}
+ );
+};
-export default TermCondition \ No newline at end of file
+export default TermCondition;
diff --git a/src-migrate/modules/register/index.tsx b/src-migrate/modules/register/index.tsx
index da41fd8b..0308e397 100644
--- a/src-migrate/modules/register/index.tsx
+++ b/src-migrate/modules/register/index.tsx
@@ -1,20 +1,24 @@
-import PageContent from '~/modules/page-content';
-import RegistrasiIndividu from './components/RegistrasiIndividu';
-import RegistrasiBisnis from './components/RegistrasiBisnis';
+import dynamic from 'next/dynamic';
import Link from 'next/link';
import Image from 'next/image';
-import IndoteknikLogo from '~/images/logo.png';
-import AccountActivation from '../account-activation';
import { useMemo, useState } from 'react';
-import { useRegisterStore } from './stores/useRegisterStore';
-import FormCaptcha from './components/FormCaptcha';
-import TermCondition from './components/TermCondition';
+import { useRouter } from 'next/router';
import { Button } from '@chakra-ui/react';
-import { useMutation } from 'react-query';
import { UseToastOptions, useToast } from '@chakra-ui/react';
-import { RegisterProps } from '~/types/auth';
+import { useMutation } from 'react-query';
+import { useRegisterStore } from './stores/useRegisterStore';
import { registerUser } from '~/services/auth';
-import { useRouter } from 'next/router';
+import IndoteknikLogo from '~/images/logo.png';
+import { RegisterProps } from '~/types/auth';
+
+const PageContent = dynamic(() => import('~/modules/page-content'));
+const RegistrasiIndividu = dynamic(
+ () => import('./components/RegistrasiIndividu')
+);
+const RegistrasiBisnis = dynamic(() => import('./components/RegistrasiBisnis'));
+const FormCaptcha = dynamic(() => import('./components/FormCaptcha'));
+const TermCondition = dynamic(() => import('./components/TermCondition'));
+const AccountActivation = dynamic(() => import('../account-activation'));
const LOGO_WIDTH = 150;
const LOGO_HEIGHT = LOGO_WIDTH / 3;
@@ -47,6 +51,7 @@ const Register = () => {
setIsIndividuClicked(false);
setIsBisnisClicked(true);
};
+
const handleSubmit = async () => {
if (!isFormValid) {
setNotValid(true);
@@ -98,10 +103,11 @@ const Register = () => {
break;
}
};
+
return (
<div className='container'>
<div className='grid grid-cols-1 md:grid-cols-2 gap-x-8 pt-10 px-2 md:pt-16'>
- <section className=''>
+ <section>
<div className='px-8 py-4 border'>
<Link href='/' className='block md:hidden'>
<Image
@@ -126,7 +132,7 @@ const Register = () => {
</label>
<div className='grid grid-cols-2 gap-x-3 mt-2 h-14 font-bold text-black hover:cursor-pointer'>
<div
- className={` border rounded-md flex justify-center items-center transition-colors duration-300 ease-in-out ${
+ className={`border rounded-md flex justify-center items-center transition-colors duration-300 ease-in-out ${
isIndividuClicked ? 'bg-red-500 text-white' : ''
}`}
onClick={handleIndividuClick}
@@ -134,7 +140,7 @@ const Register = () => {
<p>Individu</p>
</div>
<div
- className={` border rounded-md flex justify-center items-center transition-colors duration-300 ease-in-out ${
+ className={`border rounded-md flex justify-center items-center transition-colors duration-300 ease-in-out ${
isBisnisClicked ? 'bg-red-500 text-white' : ''
}`}
onClick={handleBisnisClick}
@@ -144,20 +150,16 @@ const Register = () => {
</div>
<div className='transition-opacity duration-300 ease-in-out'>
{isIndividuClicked && (
- <div className='opacity-100'>
- <RegistrasiIndividu
- chekValid={notValid}
- buttonSubmitClick={buttonSubmitClick}
- />
- </div>
+ <RegistrasiIndividu
+ chekValid={notValid}
+ buttonSubmitClick={buttonSubmitClick}
+ />
)}
{isBisnisClicked && (
- <div className='opacity-100'>
- <RegistrasiBisnis
- chekValid={notValid}
- buttonSubmitClick={buttonSubmitClick}
- />
- </div>
+ <RegistrasiBisnis
+ chekValid={notValid}
+ buttonSubmitClick={buttonSubmitClick}
+ />
)}
</div>
<section className='mt-2'>
diff --git a/src-migrate/types/auth.ts b/src-migrate/types/auth.ts
index 593e120f..8feac2e1 100644
--- a/src-migrate/types/auth.ts
+++ b/src-migrate/types/auth.ts
@@ -16,10 +16,11 @@ export type AuthProps = {
company: boolean;
pricelist: string | null;
token: string;
- feature : {
- onlyReadyStock : boolean,
- soApproval : boolean
- }
+ feature: {
+ onlyReadyStock: boolean;
+ soApproval: boolean;
+ };
+ partner_tempo: boolean;
};
export type AuthApiProps = OdooApiRes<AuthProps>;