diff options
| author | HATEC\SPVDEV001 <tri.susilo@altama.co.id> | 2023-05-08 16:44:09 +0700 |
|---|---|---|
| committer | HATEC\SPVDEV001 <tri.susilo@altama.co.id> | 2023-05-08 16:44:09 +0700 |
| commit | 486f85a45fc7e0669576f59824a31be472ed25bb (patch) | |
| tree | 0268afa8efe48746e040611ba41ad2cafda7ad08 /src/lib/form/components | |
| parent | cff198277e14450f8d20d9e18548325e6f277682 (diff) | |
| parent | 30fc50600009ca54f085d594d838803c107e87f2 (diff) | |
Merge branch 'master' into development_tri/implementasi_raja_ongkir
# Conflicts:
# src/lib/checkout/components/Checkout.jsx
Diffstat (limited to 'src/lib/form/components')
| -rw-r--r-- | src/lib/form/components/KunjunganService.jsx | 70 | ||||
| -rw-r--r-- | src/lib/form/components/MediaRelations.jsx | 237 | ||||
| -rw-r--r-- | src/lib/form/components/Merchant.jsx | 264 | ||||
| -rw-r--r-- | src/lib/form/components/PembayaranTempo.jsx | 2 | ||||
| -rw-r--r-- | src/lib/form/components/SuratDukungan.jsx | 140 |
5 files changed, 623 insertions, 90 deletions
diff --git a/src/lib/form/components/KunjunganService.jsx b/src/lib/form/components/KunjunganService.jsx index dfe5873e..076f6814 100644 --- a/src/lib/form/components/KunjunganService.jsx +++ b/src/lib/form/components/KunjunganService.jsx @@ -6,7 +6,7 @@ import ReCAPTCHA from 'react-google-recaptcha' import { Controller, useForm } from 'react-hook-form' import { toast } from 'react-hot-toast' import * as Yup from 'yup' -import createLeadsApi from '../api/createLeadsApi' +import createLeadApi from '../api/createLeadApi' const CreateKunjunganService = () => { const { @@ -41,18 +41,32 @@ const CreateKunjunganService = () => { } const data = { ...values, - name : 'Pengajuan Kunjungan Service - ' + values.company, - contact_name : values.cp, - email_from : values.email, - phone : values.mobile, - description : "\r\n Nama Perusahaan : " + values.company + " \r\n Alamat : " + values.address + " \r\n Propinsi : " + values.city + " \r\n Telepon: " + values.phone + " \r\n Handphone : " + values.mobile +" \r\n Email : " + values.email + " \r\n Keterangan : " + values.description , + name: 'Pengajuan Kunjungan Service - ' + values.company, + contact_name: values.cp, + email_from: values.email, + phone: values.mobile, + description: + '\r\n Nama Perusahaan : ' + + values.company + + ' \r\n Alamat : ' + + values.address + + ' \r\n Propinsi : ' + + values.city + + ' \r\n Telepon: ' + + values.phone + + ' \r\n Handphone : ' + + values.mobile + + ' \r\n Email : ' + + values.email + + ' \r\n Keterangan : ' + + values.description } - const create_leads = await createLeadsApi({ data }) + const create_leads = await createLeadApi({ data }) if (create_leads) { toast.success('Berhasil menambahkan alamat') reset() - recaptchaRef.current.reset() + recaptchaRef.current.reset() } } return ( @@ -125,9 +139,7 @@ const CreateKunjunganService = () => { type='text' className='form-input' /> - <div className='text-caption-2 text-danger-500 mt-1'> - {errors.cp?.message} - </div> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.cp?.message}</div> </div> </div> <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> @@ -156,7 +168,9 @@ const CreateKunjunganService = () => { </div> <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> <div> - <label className='form-label mb-2'>Sebutkan: Merek, Tipe, Permasalahan, Service, Perawatan</label> + <label className='form-label mb-2'> + Sebutkan: Merek, Tipe, Permasalahan, Service, Perawatan + </label> <textarea {...register('description')} type='text' className='form-input' /> <div className='text-caption-2 text-danger-500 mt-1'> {errors.description?.message} @@ -181,24 +195,24 @@ const CreateKunjunganService = () => { ) } const validationSchema = Yup.object().shape({ - company: Yup.string().required('Harus di-isi'), - email: Yup.string().email('Format harus seperti contoh@email.com').required('Harus di-isi'), - phone: Yup.string().required('Harus di-isi'), - city: Yup.string().required('Harus di-isi'), - cp: Yup.string().required('Harus di-isi'), - mobile: Yup.string().required('Harus di-isi'), - email: Yup.string().required('Harus di-isi'), - address: Yup.string().required('Harus di-isi') + company: Yup.string().required('Harus di-isi'), + email: Yup.string().email('Format harus seperti contoh@email.com').required('Harus di-isi'), + phone: Yup.string().required('Harus di-isi'), + city: Yup.string().required('Harus di-isi'), + cp: Yup.string().required('Harus di-isi'), + mobile: Yup.string().required('Harus di-isi'), + email: Yup.string().required('Harus di-isi'), + address: Yup.string().required('Harus di-isi') }) const defaultValues = { - company:'', - email: '', - phone: '', - city: '', - cp: '', - mobile: '', - email: '', - address: '' + company: '', + email: '', + phone: '', + city: '', + cp: '', + mobile: '', + email: '', + address: '' } export default CreateKunjunganService diff --git a/src/lib/form/components/MediaRelations.jsx b/src/lib/form/components/MediaRelations.jsx new file mode 100644 index 00000000..05ae7e03 --- /dev/null +++ b/src/lib/form/components/MediaRelations.jsx @@ -0,0 +1,237 @@ +import HookFormSelect from '@/core/components/elements/Select/HookFormSelect' +import cityApi from '@/lib/address/api/cityApi' +import { yupResolver } from '@hookform/resolvers/yup' +import React, { useEffect, useRef, useState } from 'react' +import ReCAPTCHA from 'react-google-recaptcha' +import { Controller, useForm } from 'react-hook-form' +import { toast } from 'react-hot-toast' +import * as Yup from 'yup' +import createLeadApi from '../api/createLeadApi' + +const CreateMediaRelations = () => { + const { + register, + handleSubmit, + formState: { errors }, + control, + reset + } = useForm({ + resolver: yupResolver(validationSchema), + defaultValues + }) + const list_unit = [ + { + value: 'Media Cetak', + label: 'Media Cetak' + }, + { + value: 'Media', + label: 'Hospitality' + }, + { + value: 'Automotive', + label: 'Automotive' + }, + { + value: 'Retail', + label: 'Retail' + }, + { + value: 'Maining', + label: 'Maining' + }, + { + value: 'Lain - Lain', + label: 'Lain - Lain' + } + ] + const [cities, setCities] = useState([]) + const [company_unit, setCompany_unit] = useState(list_unit) + + const recaptchaRef = useRef(null) + + useEffect(() => { + const loadCities = async () => { + let dataCities = await cityApi() + dataCities = dataCities.map((city) => ({ value: city.id, label: city.name })) + setCities(dataCities) + } + loadCities() + }, []) + + const onSubmitHandler = async (values) => { + const attachment = document.getElementById('attachment').files[0] + + const recaptchaValue = recaptchaRef.current.getValue() + if (!recaptchaValue) { + toast.error('Catcha harus diisi') + return + } + const data = { + ...values, + name: 'Form Merchant - ' + values.company, + contact_name: values.cp, + email_from: values.email, + phone: values.phone, + description: + 'Nama Perusahaan : ' + + values.company + + ' \r\n Alamat : ' + + values.address + + ' \r\n Kota : ' + + values.city + + ' \r\n Unit Perusahaan : ' + + values.company_unit + + ' \r\n Telepon: ' + + values.phone + + ' \r\n Email : ' + + values.email + + ' \r\n Website : ' + + values.website + + ' \r\n No Hp : ' + + values.mobile + + 'Keterangan : ' + + values.description + } + const create_leads = await createLeadApi({ data }) + if (create_leads) { + toast.success('Berhasil menambahkan data') + reset() + recaptchaRef.current.reset() + } + } + return ( + <div className='container mx-auto p-4 md:p-0 my-0 md:my-10'> + <h1 className='text-h-sm md:text-title-sm font-semibold mb-6'>Form Media dan Relasi</h1> + <div className='w-full p-4 bg-white border border-gray_r-6 rounded'> + <form onSubmit={handleSubmit(onSubmitHandler)}> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>Nama Lengkap *</label> + <input + {...register('name')} + placeholder='Jhone Doe' + type='text' + className='form-input' + /> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.name?.message}</div> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>Nama Perusahan *</label> + <input + {...register('company')} + placeholder='PT.Indoteknik' + type='text' + className='form-input' + /> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.company?.message}</div> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>Alamat Email *</label> + <input + {...register('email')} + placeholder='contoh@email.com' + type='email' + className='form-input' + /> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.email?.message}</div> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>No. Telp *</label> + <input + {...register('phone')} + placeholder='021-XXXX' + type='text' + className='form-input' + /> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.phone?.message}</div> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>Jenis Media / Partnetship *</label> + <Controller + name='company_unit' + control={control} + render={(props) => <HookFormSelect {...props} options={company_unit} />} + /> + <div className='text-caption-2 text-danger-500 mt-1'> + {errors.company_unit?.message} + </div> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>Jika anda memiliki media lain, sebutkan </label> + <input + {...register('other_media')} + placeholder='021-XXXX' + type='text' + className='form-input' + /> + </div> + </div> + + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'> + Lampiran (Company Peofile, Proposal Kerjasama, dll) + </label> + <input + {...register('attachment')} + type='file' + className='form-input' + accept='application/pdf' + id='attachment' + placeholder='Hello' + /> + </div> + </div> + + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <ReCAPTCHA ref={recaptchaRef} sitekey={process.env.NEXT_PUBLIC_RECAPTCHA_GOOGLE} /> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <button type='submit' className='btn-yellow w-full md:w-fit mt-6 ml-0 md:ml-auto'> + Simpan + </button> + </div> + </div> + </form> + </div> + </div> + ) +} +const validationSchema = Yup.object().shape({ + company: Yup.string().required('Harus di-isi'), + email: Yup.string().email('Format harus seperti contoh@email.com').required('Harus di-isi'), + phone: Yup.string().required('Harus di-isi'), + cp: Yup.string().required('Harus di-isi'), + city: Yup.string().required('Harus di-isi'), + company_unit: Yup.string().required('Harus di-isi'), + address: Yup.string().required('Harus di-isi'), + website: Yup.string().required('Harus di-isi'), + mobile: Yup.string().required('Harus di-isi') +}) +const defaultValues = { + company: '', + email: '', + phone: '', + city: '', + company_unit: '', + cp: '', + address: '', + website: '', + mobile: '' +} + +export default CreateMediaRelations diff --git a/src/lib/form/components/Merchant.jsx b/src/lib/form/components/Merchant.jsx new file mode 100644 index 00000000..75b4e132 --- /dev/null +++ b/src/lib/form/components/Merchant.jsx @@ -0,0 +1,264 @@ +import HookFormSelect from '@/core/components/elements/Select/HookFormSelect' +import cityApi from '@/lib/address/api/cityApi' +import { yupResolver } from '@hookform/resolvers/yup' +import React, { useEffect, useRef, useState } from 'react' +import ReCAPTCHA from 'react-google-recaptcha' +import { Controller, useForm } from 'react-hook-form' +import { toast } from 'react-hot-toast' +import * as Yup from 'yup' +import createLeadApi from '../api/createLeadApi' + +const CreateMerchant = () => { + const { + register, + handleSubmit, + formState: { errors }, + control, + reset + } = useForm({ + resolver: yupResolver(validationSchema), + defaultValues + }) + const list_unit = [ + { + value: 'Manufacturing', + label: 'Manufacturing' + }, + { + value: 'Hospitality', + label: 'Hospitality' + }, + { + value: 'Automotive', + label: 'Automotive' + }, + { + value: 'Retail', + label: 'Retail' + }, + { + value: 'Maining', + label: 'Maining' + }, + { + value: 'Lain - Lain', + label: 'Lain - Lain' + } + ] + const [cities, setCities] = useState([]) + const [company_unit, setCompany_unit] = useState(list_unit) + + const recaptchaRef = useRef(null) + + useEffect(() => { + const loadCities = async () => { + let dataCities = await cityApi() + dataCities = dataCities.map((city) => ({ value: city.id, label: city.name })) + setCities(dataCities) + } + loadCities() + }, []) + + const onSubmitHandler = async (values) => { + const recaptchaValue = recaptchaRef.current.getValue() + if (!recaptchaValue) { + toast.error('Catcha harus diisi') + return + } + const data = { + ...values, + name: 'Form Merchant - ' + values.company, + contact_name: values.cp, + email_from: values.email, + phone: values.phone, + description: + 'Nama Perusahaan : ' + + values.company + + ' \r\n Alamat : ' + + values.address + + ' \r\n Kota : ' + + values.city + + ' \r\n Unit Perusahaan : ' + + values.company_unit + + ' \r\n Telepon: ' + + values.phone + + ' \r\n Email : ' + + values.email + + ' \r\n Website : ' + + values.website + + ' \r\n No Hp : ' + + values.mobile + + 'Keterangan : ' + + values.description + } + const create_leads = await createLeadApi({ data }) + if (create_leads) { + toast.success('Berhasil menambahkan data') + reset() + recaptchaRef.current.reset() + } + } + return ( + <div className='container mx-auto p-4 md:p-0 my-0 md:my-10'> + <h1 className='text-h-sm md:text-title-sm font-semibold mb-6'>Form Merchant</h1> + <div className='w-full p-4 bg-white border border-gray_r-6 rounded'> + <div + class='flex items-center bg-blue-100 border border-blue-400 text-blue-500 font-bold px-4 py-3 mb-4' + role='alert' + > + <p> + Penjualan online adalah hal yang HARUS dilakukan mulai sekarang. Perubahan dalam banyak + industri dan pola pembelian. Gabung dengan platform kami dan mulai penjualan lansung di + ribuan perusahaan d seluruh Indonesia.{' '} + </p> + </div> + <form onSubmit={handleSubmit(onSubmitHandler)}> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>Nama Perusahan *</label> + <input + {...register('company')} + placeholder='PT.Indoteknik' + type='text' + className='form-input' + /> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.company?.message}</div> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>Alamat*</label> + <input + {...register('address')} + placeholder='jl. Bandengan no.31 ' + type='text' + className='form-input' + /> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.address?.message}</div> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>No. Telp *</label> + <input + {...register('phone')} + placeholder='021-XXXX' + type='text' + className='form-input' + /> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.phone?.message}</div> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>Kota*</label> + <Controller + name='city' + control={control} + render={(props) => <HookFormSelect {...props} options={cities} />} + /> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.city?.message}</div> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>Unit Perusahaan*</label> + <Controller + name='company_unit' + control={control} + render={(props) => <HookFormSelect {...props} options={company_unit} />} + /> + <div className='text-caption-2 text-danger-500 mt-1'> + {errors.company_unit?.message} + </div> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>Website *</label> + <input + {...register('website')} + placeholder='https://indoteknik.com' + type='text' + className='form-input' + /> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.website?.message}</div> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>Contact Person*</label> + <input + {...register('cp')} + placeholder='Jhone doe' + type='text' + className='form-input' + /> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.cp?.message}</div> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>No HP *</label> + <input + {...register('mobile')} + placeholder='628XXXXXXX' + type='text' + className='form-input' + /> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.mobile?.message}</div> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>Alamat Email *</label> + <input + {...register('email')} + placeholder='contoh@email.com' + type='email' + className='form-input' + /> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.email?.message}</div> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <ReCAPTCHA ref={recaptchaRef} sitekey={process.env.NEXT_PUBLIC_RECAPTCHA_GOOGLE} /> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <button type='submit' className='btn-yellow w-full md:w-fit mt-6 ml-0 md:ml-auto'> + Simpan + </button> + </div> + </div> + </form> + </div> + </div> + ) +} +const validationSchema = Yup.object().shape({ + company: Yup.string().required('Harus di-isi'), + email: Yup.string().email('Format harus seperti contoh@email.com').required('Harus di-isi'), + phone: Yup.string().required('Harus di-isi'), + cp: Yup.string().required('Harus di-isi'), + city: Yup.string().required('Harus di-isi'), + company_unit: Yup.string().required('Harus di-isi'), + address: Yup.string().required('Harus di-isi'), + website: Yup.string().required('Harus di-isi'), + mobile: Yup.string().required('Harus di-isi') +}) +const defaultValues = { + company: '', + email: '', + phone: '', + city: '', + company_unit: '', + cp: '', + address: '', + website: '', + mobile: '' +} + +export default CreateMerchant diff --git a/src/lib/form/components/PembayaranTempo.jsx b/src/lib/form/components/PembayaranTempo.jsx index 5f32753e..ffdb0961 100644 --- a/src/lib/form/components/PembayaranTempo.jsx +++ b/src/lib/form/components/PembayaranTempo.jsx @@ -52,7 +52,7 @@ const PembayaranTempo = () => { return ( <div className='container mx-auto p-4 md:p-0 my-0 md:my-10'> <h1 className='text-h-sm md:text-title-sm font-semibold mb-6'>Pembayaran Tempo</h1> - + <div className='w-full grid grid-cols-1 md:grid-cols-2'> <form onSubmit={handleSubmit(onSubmitHandler)} className='grid grid-cols-1 gap-y-6'> <div> diff --git a/src/lib/form/components/SuratDukungan.jsx b/src/lib/form/components/SuratDukungan.jsx index 22452b3c..0eab84a4 100644 --- a/src/lib/form/components/SuratDukungan.jsx +++ b/src/lib/form/components/SuratDukungan.jsx @@ -6,7 +6,7 @@ import ReCAPTCHA from 'react-google-recaptcha' import { Controller, useForm } from 'react-hook-form' import { toast } from 'react-hot-toast' import * as Yup from 'yup' -import createLeadsApi from '../api/createLeadsApi' +import createLeadsApi from '../api/createLeadApi' const CreateSuratDukungan = () => { const { @@ -41,18 +41,34 @@ const CreateSuratDukungan = () => { } const data = { ...values, - name : 'Pengajuan Kunjungan Service - ' + values.company, - contact_name : values.cp, - email_from : values.email, - phone : values.mobile, - description : "\r\n Nama Perusahaan : " + values.company + " \r\n Alamat : " + values.address + " \r\n Propinsi : " + values.city + " \r\n Telepon: " + values.phone + " \r\n Handphone : " + values.mobile +" \r\n Email : " + values.email + " \r\n Keterangan : " + values.description , + name: 'Permintaan Surat Dukungan - ' + values.company, + contact_name: values.company, + email_from: values.email, + phone: values.phone, + description: + 'Nama Perusahaan : ' + + values.company + + ' \r\n Alamat : ' + + values.address + + ' \r\n Npwp : ' + + values.npwp + + ' \r\n Telepon: ' + + values.phone + + ' \r\n Email : ' + + values.email + + ' \r\n Pengadaan : ' + + values.pengadaan + + ' \r\n Alamat 2 : ' + + values.address2 + + 'Keterangan : ' + + values.description } const create_leads = await createLeadsApi({ data }) if (create_leads) { toast.success('Berhasil menambahkan alamat') reset() - recaptchaRef.current.reset() + recaptchaRef.current.reset() } } return ( @@ -63,9 +79,10 @@ const CreateSuratDukungan = () => { class='flex items-center bg-blue-100 border border-blue-400 text-blue-500 font-bold px-4 py-3 mb-4' role='alert' > - <p> - Lengkapi form berikut untuk melakukan konfirmasi pembayaran. - </p> + <p>Lengkapi form berikut untuk melakukan konfirmasi pembayaran.</p> + </div> + <div className=' w-full md:w-[50%] p-4 bg-gray-50 border border-gray_r-6 rounded text-center'> + <h1>Data Peserta</h1> </div> <form onSubmit={handleSubmit(onSubmitHandler)}> <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> @@ -82,18 +99,6 @@ const CreateSuratDukungan = () => { </div> <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> <div> - <label className='form-label mb-2'>No. Telp *</label> - <input - {...register('phone')} - placeholder='021-XXXX' - type='text' - className='form-input' - /> - <div className='text-caption-2 text-danger-500 mt-1'>{errors.phone?.message}</div> - </div> - </div> - <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> - <div> <label className='form-label mb-2'>Alamat*</label> <input {...register('address')} @@ -106,39 +111,26 @@ const CreateSuratDukungan = () => { </div> <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> <div> - <label className='form-label mb-2'>Kota*</label> - <Controller - name='city' - control={control} - render={(props) => <HookFormSelect {...props} options={cities} />} - /> - <div className='text-caption-2 text-danger-500 mt-1'>{errors.city?.message}</div> - </div> - </div> - <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> - <div> - <label className='form-label mb-2'>Contact Person*</label> + <label className='form-label mb-2'>No. Telp *</label> <input - {...register('cp')} - placeholder='Jhone doe' + {...register('phone')} + placeholder='021-XXXX' type='text' className='form-input' /> - <div className='text-caption-2 text-danger-500 mt-1'> - {errors.cp?.message} - </div> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.phone?.message}</div> </div> </div> <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> <div> - <label className='form-label mb-2'>No HP *</label> + <label className='form-label mb-2'>NPWP *</label> <input - {...register('mobile')} - placeholder='628XXXXXXX' + {...register('npwp')} + placeholder='npwp number' type='text' className='form-input' /> - <div className='text-caption-2 text-danger-500 mt-1'>{errors.mobile?.message}</div> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.npwp?.message}</div> </div> </div> <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> @@ -153,10 +145,36 @@ const CreateSuratDukungan = () => { <div className='text-caption-2 text-danger-500 mt-1'>{errors.email?.message}</div> </div> </div> + <div className='w-[50%] mt-10 p-4 bg-gray-50 border border-gray_r-6 rounded text-center'> + <h1>Data Peserta</h1> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>Pengadaan *</label> + <input {...register('pengadaan')} placeholder='' type='text' className='form-input' /> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.pengadaan?.message}</div> + </div> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> + <div> + <label className='form-label mb-2'>Alamat *</label> + <textarea + {...register('address2')} + placeholder='' + type='text' + className='form-input h-[120px]' + /> + <div className='text-caption-2 text-danger-500 mt-1'>{errors.address2?.message}</div> + </div> + </div> + <div className='w-[50%] mt-10 p-4 bg-gray-50 border border-gray_r-6 rounded text-center'> + <h1>Data Produk</h1> + </div> + <div className='grid grid-cols-1 md:grid-cols-2 gap-4 mt-4'> <div> - <label className='form-label mb-2'>Sebutkan: Merek, Tipe, Permasalahan, Service, Perawatan</label> - <textarea {...register('description')} type='text' className='form-input' /> + <label className='form-label mb-2'>Produk</label> + <textarea {...register('description')} type='text' className='form-input h-[120px]' /> <div className='text-caption-2 text-danger-500 mt-1'> {errors.description?.message} </div> @@ -180,24 +198,24 @@ const CreateSuratDukungan = () => { ) } const validationSchema = Yup.object().shape({ - company: Yup.string().required('Harus di-isi'), - email: Yup.string().email('Format harus seperti contoh@email.com').required('Harus di-isi'), - phone: Yup.string().required('Harus di-isi'), - city: Yup.string().required('Harus di-isi'), - cp: Yup.string().required('Harus di-isi'), - mobile: Yup.string().required('Harus di-isi'), - email: Yup.string().required('Harus di-isi'), - address: Yup.string().required('Harus di-isi') + company: Yup.string().required('Harus di-isi'), + email: Yup.string().email('Format harus seperti contoh@email.com').required('Harus di-isi'), + phone: Yup.string().required('Harus di-isi'), + npwp: Yup.string().required('Harus di-isi'), + pengadaan: Yup.string().required('Harus di-isi'), + email: Yup.string().required('Harus di-isi'), + address: Yup.string().required('Harus di-isi'), + address2: Yup.string().required('Harus di-isi') }) const defaultValues = { - company:'', - email: '', - phone: '', - city: '', - cp: '', - mobile: '', - email: '', - address: '' + company: '', + email: '', + phone: '', + pengadaan: '', + npwp: '', + email: '', + address: '', + address2: '' } export default CreateSuratDukungan |
