import { Collapse, FormControl, FormLabel, Select, Slider, SliderFilledTrack, SliderThumb, SliderTrack, Stack, Switch, Text, } from '@chakra-ui/react'; import { __ } from '@wordpress/i18n'; import React from 'react'; import { Controller, useFormContext, useWatch } from 'react-hook-form'; import FormControlTwoCol from '../../../../assets/js/back-end/components/common/FormControlTwoCol'; import { PasswordStrengthValue } from '../../../../assets/js/back-end/enums/Enum'; import SingleComponentsWrapper from '../../../../assets/js/back-end/screens/settings/components/SingleComponentsWrapper'; import ToolTip from '../../../../assets/js/back-end/screens/settings/components/ToolTip'; import { AdvancedSettingsMap, PasswordStrengthType, } from '../../../../assets/js/back-end/types'; interface Props { advancedSetting: AdvancedSettingsMap; data: { enable: boolean; max_length: number; min_length: number; show_strength: boolean; strength: PasswordStrengthType; }; } const PasswordStrength: React.FC = ({ advancedSetting, data }) => { const { register, control } = useFormContext(); const minLength = useWatch({ name: 'advance.password_strength.min_length', control, defaultValue: data?.min_length, }); const maxLength = useWatch({ name: 'advance.password_strength.max_length', control, defaultValue: data?.max_length, }); const strength = useWatch({ name: 'advance.password_strength.strength', control, defaultValue: data?.strength, }); const strengthOptions = [ { label: __('Very Low', 'learning-management-system'), value: PasswordStrengthValue.VeryLow, }, { label: __('Low', 'learning-management-system'), value: PasswordStrengthValue.Low, }, { label: __('Medium', 'learning-management-system'), value: PasswordStrengthValue.Medium, }, { label: __('High', 'learning-management-system'), value: PasswordStrengthValue.High, }, ]; let strengthInfo = ''; switch (strength) { case PasswordStrengthValue.Low: strengthInfo = __( 'Minimum one uppercase letter', 'learning-management-system', ); break; case PasswordStrengthValue.Medium: strengthInfo = __( 'Minimum one uppercase letter and a number', 'learning-management-system', ); break; case PasswordStrengthValue.High: strengthInfo = __( 'Minimum one uppercase letter, a number and a special character', 'learning-management-system', ); break; default: strengthInfo = ''; } const showPasswordStrengthOptions = useWatch({ name: 'advance.password_strength.enable', defaultValue: advancedSetting?.password_strength?.enable, control, }); return ( {/* Enable Password Strength */} {__('Enable Password Strength Login', 'learning-management-system')} ( )} /> {/* Min Length */} {__('Minimum Length', 'learning-management-system')} ( {minLength} )} /> {/* Max Length */} {__('Maximum Length', 'learning-management-system')} ( {maxLength} )} /> {/* Strength */} {__('Strength', 'learning-management-system')} {strengthInfo} {/* Show Strength */} {__('Show Strength', 'learning-management-system')} ( )} /> ); }; export default PasswordStrength;