diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2024-12-24 08:51:37 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2024-12-24 08:51:37 +0700 |
| commit | 22bf497d3fd524a95982e090f2c8a1be6bde656b (patch) | |
| tree | 1c394154c78ea81e06b302eeffcb9dfb14497144 /src-migrate | |
| parent | b2afb5c847c9983b098a3223fbcfdb666e65c8cb (diff) | |
| parent | d76f96c44f85e7e0efbd544e6b97bd80920b0039 (diff) | |
Merge branch 'new-release' into Feature/switch-account
# Conflicts:
# src-migrate/modules/register/components/FormBisnis.tsx
# src/lib/auth/components/Menu.jsx
Diffstat (limited to 'src-migrate')
| -rw-r--r-- | src-migrate/components/ui/modal.tsx | 2 | ||||
| -rw-r--r-- | src-migrate/modules/popup-information/index.tsx | 58 | ||||
| -rw-r--r-- | src-migrate/modules/register/components/FormBisnis.tsx | 5 | ||||
| -rw-r--r-- | src-migrate/modules/register/components/RegistrasiBisnis.tsx | 19 | ||||
| -rw-r--r-- | src-migrate/modules/register/index.tsx | 54 | ||||
| -rw-r--r-- | src-migrate/types/auth.ts | 9 |
6 files changed, 81 insertions, 66 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 9f9f1ca5..0ead23ba 100644 --- a/src-migrate/modules/register/components/FormBisnis.tsx +++ b/src-migrate/modules/register/components/FormBisnis.tsx @@ -8,9 +8,6 @@ import { } 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, @@ -18,7 +15,6 @@ 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'; @@ -76,7 +72,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); const businessNameRef = useRef<HTMLInputElement>(null); diff --git a/src-migrate/modules/register/components/RegistrasiBisnis.tsx b/src-migrate/modules/register/components/RegistrasiBisnis.tsx index 2a52170e..332c5358 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/index.tsx b/src-migrate/modules/register/index.tsx index 3d6158c8..347f5c80 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>; |
