Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 97880b9737 | |||
| ea5eff6597 | |||
| e9af0263f8 | |||
| 15bd1a9dd7 | |||
| 210e73d09b | |||
| 64390441a1 | |||
| c8095755b5 |
@@ -1,36 +1,44 @@
|
||||
"use client"
|
||||
import React, { useEffect, useState } from 'react'
|
||||
//import Cookies from 'js-cookie'
|
||||
"use client";
|
||||
import React, { useLayoutEffect, useState } from 'react';
|
||||
|
||||
export default function AcceptCookies() {
|
||||
const [cookies, setCookies] = useState(true)
|
||||
|
||||
const acceptCookies = () => {
|
||||
// Cookies.set('useCookies', 'true')
|
||||
setCookies(true)
|
||||
}
|
||||
// Safe cookie getter
|
||||
function getCookie(name) {
|
||||
if (typeof document === 'undefined') return null; // SSR safety
|
||||
const value = `; ${document.cookie}`;
|
||||
const parts = value.split(`; ${name}=`);
|
||||
if (parts.length === 2) return parts.pop().split(';').shift();
|
||||
return null;
|
||||
}
|
||||
|
||||
useEffect(()=>{
|
||||
const useCookies = false; // Cookies.get('useCookies')
|
||||
if(useCookies == 'true'){
|
||||
setCookies(true)
|
||||
const [cookies, setCookies] = useState(true); // Start as true
|
||||
|
||||
const acceptCookies = () => {
|
||||
document.cookie = `use_cookies=${encodeURIComponent('true')}; path=/; max-age=31536000`; // 1 year
|
||||
setCookies(true);
|
||||
};
|
||||
|
||||
useLayoutEffect(()=>{
|
||||
const useCookies = getCookie('use_cookies');
|
||||
if (useCookies && decodeURIComponent(useCookies) === 'true') {
|
||||
setCookies(true);
|
||||
}else{
|
||||
setCookies(false)
|
||||
}
|
||||
},[])
|
||||
},[])
|
||||
|
||||
return (
|
||||
<>
|
||||
{/* {cookies ?
|
||||
<></>
|
||||
: */}
|
||||
{cookies ? <></> : (
|
||||
<div className={`${cookies ? 'slide-down' : 'slide-up'} cookies-wrapper position-fixed d-lg-flex justify-content-center align-items-center gap-5 p-2`}>
|
||||
<p className='m-0'>
|
||||
<p className="m-0">
|
||||
This website uses cookies to provide you the best experience possible, as well as for tracking performance and marketing purposes. You can check our privacy policy for more information. By clicking ❛❛Confirm❜❜ or by continuing to use our website, you consent to our use of cookies.
|
||||
</p>
|
||||
<button onClick={acceptCookies} className='px-5 py-2'>Accept</button>
|
||||
</p>
|
||||
<button onClick={acceptCookies} className="px-5 py-2">
|
||||
Accept
|
||||
</button>
|
||||
</div>
|
||||
{/* } */}
|
||||
)}
|
||||
</>
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
+31
-11
@@ -17,19 +17,38 @@ function Forms() {
|
||||
terms_conditions: false
|
||||
})
|
||||
|
||||
const validForm = formDetails.first_name && formDetails.last_name && formDetails.email && formDetails.phone_number && formDetails.subject && formDetails.message
|
||||
|
||||
|
||||
const handleChange = ({target:{name, value}}) => {
|
||||
setFormDetails(prev => ({...prev, [name]:value}))
|
||||
if(name == 'terms_conditions'){
|
||||
setFormDetails(prev => ({...prev, [name]:!prev.terms_conditions}))
|
||||
}else{
|
||||
setFormDetails(prev => ({...prev, [name]:value}))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const [requestStatus, setRequestStatus] = useState({loading:false, status:false, msg:''})
|
||||
|
||||
|
||||
const validForm = formDetails.first_name && formDetails.last_name && formDetails.email && formDetails.phone_number && formDetails.subject && formDetails.message
|
||||
function handleSubmit(e) {
|
||||
e.preventDefault()
|
||||
const isChecked = formDetails.terms_conditions
|
||||
setRequestStatus({loading:true, status:false, msg:''})
|
||||
if(!validForm){
|
||||
setRequestStatus({loading:false, status:false, msg:'please, fill all fields'})
|
||||
setRequestStatus({loading:false, status:false, msg:'Please, fill all fields'})
|
||||
setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, msg:''})
|
||||
},3000)
|
||||
return
|
||||
}
|
||||
if(!(/^\d{7,15}$/.test(formDetails.phone_number))){
|
||||
setRequestStatus({loading:false, status:false, msg:'Please, enter a valid phone number'})
|
||||
setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, msg:''})
|
||||
},3000)
|
||||
return
|
||||
}
|
||||
if(!isChecked){
|
||||
setRequestStatus({loading:false, status:false, msg:'Please, Accept Terms & Conditions'})
|
||||
setTimeout(()=>{
|
||||
setRequestStatus({loading:false, status:false, msg:''})
|
||||
},3000)
|
||||
@@ -79,7 +98,7 @@ function Forms() {
|
||||
<div className="contact--info-area">
|
||||
<h3>Get in touch</h3>
|
||||
<p>Looking for help? Fill the form and start a new discussion.</p>
|
||||
<div className="single-info">
|
||||
{/* <div className="single-info">
|
||||
<h5>Headquaters</h5>
|
||||
<p>
|
||||
<i className="fal fa-home"></i>
|
||||
@@ -93,7 +112,7 @@ function Forms() {
|
||||
{process.env.NEXT_PUBLIC_SUPPORT_PHONE}
|
||||
<br />
|
||||
</p>
|
||||
</div>
|
||||
</div> */}
|
||||
<div className="single-info">
|
||||
<h5>Support</h5>
|
||||
<p>
|
||||
@@ -135,14 +154,14 @@ function Forms() {
|
||||
type="email"
|
||||
name="email"
|
||||
placeholder="Email Address"
|
||||
maxLength={35}
|
||||
maxLength={55}
|
||||
onChange={handleChange}
|
||||
value={formDetails.email}
|
||||
/>
|
||||
</div>
|
||||
<div className="col-md-6">
|
||||
<input
|
||||
type="number"
|
||||
type="text"
|
||||
name="phone_number"
|
||||
placeholder="Phone Number"
|
||||
maxLength={15}
|
||||
@@ -151,7 +170,7 @@ function Forms() {
|
||||
/>
|
||||
</div>
|
||||
<div className="col-md-12">
|
||||
<input type="text" name="subject" placeholder="Subject" maxLength={35} value={formDetails.subject} onChange={handleChange} />
|
||||
<input type="text" name="subject" placeholder="Subject" maxLength={150} value={formDetails.subject} onChange={handleChange} />
|
||||
</div>
|
||||
<div className="col-md-12">
|
||||
<textarea
|
||||
@@ -159,6 +178,7 @@ function Forms() {
|
||||
placeholder="How can we help?"
|
||||
onChange={handleChange}
|
||||
value={formDetails.message}
|
||||
maxLength={350}
|
||||
></textarea>
|
||||
</div>
|
||||
<div className="col-md-6">
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
"dependencies": {
|
||||
"axios": "^1.7.2",
|
||||
"caniuse-lite": "^1.0.30001651",
|
||||
"js-cookie": "^3.0.5",
|
||||
"next": "14.2.5",
|
||||
"react": "^18",
|
||||
"react-dom": "^18",
|
||||
|
||||
Reference in New Issue
Block a user