import { Box, Checkbox, FormLabel, Icon, Input, InputGroup, InputRightElement, Link, Radio, RadioGroup, Select, Slider, SliderFilledTrack, SliderThumb, SliderTrack, Stack, Text, } from '@chakra-ui/react'; import { __ } from '@wordpress/i18n'; import React, { useState } from 'react'; import { Controller, useFormContext, useWatch } from 'react-hook-form'; import { BsEyeFill, BsEyeSlashFill } from 'react-icons/bs'; import CustomAlert from '../../../assets/js/back-end/components/common/CustomAlert'; import FormControlTwoCol from '../../../assets/js/back-end/components/common/FormControlTwoCol'; import SingleComponentsWrapper from '../../../assets/js/back-end/screens/settings/components/SingleComponentsWrapper'; import ToolTip from '../../../assets/js/back-end/screens/settings/components/ToolTip'; interface Props { data: | { domain: string; error_message: string; secret_key: string; site_key: string; size: string; theme: string; version: string; score: number; pages: string; enable_login_form: boolean; enable_student_register_form: boolean; enable_instructor_register_form: boolean; } | any; } type Option = { label: string; value: string | number }; const setOptions = (x: Option) => ( ); const languagesList = [ { label: __('Same as Client system', 'learning-management-system'), value: '', }, { label: 'Arabic', value: 'ar' }, { label: 'Afrikaans', value: 'af' }, { label: 'Amharic', value: 'ah' }, { label: 'Armenian', value: 'hy' }, { label: 'Azerbaijani', value: 'az' }, { label: 'Basque', value: 'eu' }, { label: 'Bengali', value: 'bn' }, { label: 'Bulgarian', value: 'bg' }, { label: 'Catalan', value: 'ca' }, { label: 'Chinese (Traditional)', value: 'zh-TW' }, { label: 'Chinese (Simplified)', value: 'zh-CN' }, { label: 'Chinese (Hong Kong)', value: 'zh-HK' }, { label: 'Croatian', value: 'hr' }, { label: 'Czech', value: 'cs' }, { label: 'Danish', value: 'da' }, { label: 'Dutch', value: 'nl' }, { label: 'English (UK)', value: 'en-GB' }, { label: 'English (US)', value: 'en' }, { label: 'Estonian', value: 'et' }, { label: 'Filipino', value: 'fil' }, { label: 'Finnish', value: 'fi' }, { label: 'French', value: 'fr' }, { label: 'French (Canadian)', value: 'fr-CA' }, { label: 'Galician', value: 'gl' }, { label: 'Georgian', value: 'ka' }, { label: 'German', value: 'de' }, { label: 'German (Austria)', value: 'de-AT' }, { label: 'German (Switzerland)', value: 'de-CH' }, { label: 'Greek', value: 'el' }, { label: 'Gujarati', value: 'gu' }, { label: 'Hebrew', value: 'iw' }, { label: 'Hindi', value: 'hi' }, { label: 'Hungarain', value: 'hu' }, { label: 'Icelandic', value: 'is' }, { label: 'Indonesian', value: 'id' }, { label: 'Italian', value: 'it' }, { label: 'Japanese', value: 'ja' }, { label: 'Korean', value: 'ko' }, { label: 'Kannada', value: 'kn' }, { label: 'Latvian', value: 'lv' }, { label: 'Laothian', value: 'lo' }, { label: 'Lithuanian', value: 'lt' }, { label: 'Malay', value: 'ml' }, { label: 'Malayalam', value: 'mr' }, { label: 'Mongolian', value: 'mn' }, { label: 'Norwegian', value: 'no' }, { label: 'Persian', value: 'fa' }, { label: 'Polish', value: 'po' }, { label: 'Portuguese', value: 'pt' }, { label: 'Portuguese (Brazil)', value: 'pt-BR' }, { label: 'Portuguese (Portugal)', value: 'pt-PT' }, { label: 'Romanian', value: 'ro' }, { label: 'Russian', value: 'ru' }, { label: 'Serbian', value: 'sr' }, { label: 'Sinhalese', value: 'si' }, { label: 'Slovak', value: 'sk' }, { label: 'Slovenian', value: 'sl' }, { label: 'Spanish', value: 'es' }, { label: 'Spanish (Latin America)', value: 'es-419' }, { label: 'Swahili', value: 'sw' }, { label: 'Swedish', value: 'sv' }, { label: 'Thai', value: 'th' }, { label: 'Tamil', value: 'ta' }, { label: 'Telugu', value: 'te' }, { label: 'Turkish', value: 'tr' }, { label: 'Ukrainian', value: 'uk' }, { label: 'Urdu', value: 'ur' }, { label: 'Vietnamese', value: 'vi' }, { label: 'Zulu', value: 'zu' }, ]; const Recaptcha: React.FC = (props) => { const { data } = props; const { register, control } = useFormContext(); const [key, setKey] = useState<{ site: boolean; secret: boolean }>({ site: false, secret: false, }); const [enableLoginForm, setEnableLoginForm] = useState( data?.enable_login_form, ); const [enableStudentRegisterForm, setEnableStudentRegisterForm] = useState( data?.enable_student_register_form, ); const [enableInstructorRegisterForm, setEnableInstructorRegisterForm] = useState(data?.enable_instructor_register_form); const version = useWatch({ name: 'authentication.recaptcha.version', control, defaultValue: data?.version, }); const score = useWatch({ name: 'authentication.recaptcha.score', control, defaultValue: data?.score, }); const themeOptions: Option[] = [ { label: __('Dark', 'learning-management-system'), value: 'dark' }, { label: __('Light', 'learning-management-system'), value: 'light' }, ]; const sizeOptions: Option[] = [ { label: __('Normal', 'learning-management-system'), value: 'normal' }, { label: __('Compact', 'learning-management-system'), value: 'compact' }, ]; const domainOptions: Option[] = [ { label: __('google.com', 'learning-management-system'), value: 'google.com', }, { label: __('recaptcha.net', 'learning-management-system'), value: 'recaptcha.net', }, ]; const scriptsOptions: Option[] = [ { label: __('All Pages', 'learning-management-system'), value: 'all' }, { label: __('Form Pages', 'learning-management-system'), value: 'form' }, ]; return ( <> {__('Select reCAPTCHA Version', 'learning-management-system')} ( {__('Version 2', 'learning-management-system')} {__( 'Users have to check "I am not a robot" checkbox', 'learning-management-system', )} {__('Version 2', 'learning-management-system')} {__( 'No user interaction needed, however, if traffic is suspicious, users are asked to solve a CAPTCHA', 'learning-management-system', )} {__('Version 3', 'learning-management-system')} {__( 'Verify request with a score without user interaction', 'learning-management-system', )} )} /> {__('State the Site & Secret keys', 'learning-management-system')} {__('Site Key', 'learning-management-system')} setKey((th) => ({ ...th, site: !th.site })) } /> {__('Secret Key', 'learning-management-system')} setKey((th) => ({ ...th, secret: !th.secret })) } /> {__('Refer to ', 'learning-management-system')} {__( 'how to get the Google reCAPTCHA keys', 'learning-management-system', )} {__( ' if you need help with the process', 'learning-management-system', )} {/* */} {__('Forms', 'learning-management-system')}{' '} setEnableLoginForm(e.target.checked)} > {__('Login Form', 'learning-management-system')} setEnableStudentRegisterForm(e.target.checked) } > {__( 'Student Registration Form', 'learning-management-system', )} setEnableInstructorRegisterForm(e.target.checked) } > {__( 'Instructor Registration Form', 'learning-management-system', )} {/* */} {version === 'v3' ? ( <> {__('Captcha Score', 'learning-management-system')} ( field.onChange(value)} > {score / 10} )} /> {__( 'Load CAPTCHA v3 scripts on:', 'learning-management-system', )} ) : null} {__('Captcha Language', 'learning-management-system')} {__('Select Domain', 'learning-management-system')} {__('Theme', 'learning-management-system')} {__('Size', 'learning-management-system')} {/* */} {__('Error Message', 'learning-management-system')} ); }; export default Recaptcha;