PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 4.16.6.1
GiveWP – Donation Plugin and Fundraising Platform v4.16.6.1
4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.3 4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / Admin / fields / LockedTextInput / index.tsx
give / src / Admin / fields / LockedTextInput Last commit date
Icons 10 months ago index.tsx 10 months ago styles.module.scss 10 months ago
index.tsx
68 lines
1 import Notice from '@givewp/admin/components/Notices';
2 import {AdminSectionField} from '@givewp/components/AdminDetailsPage/AdminSection';
3 import {useEffect, useState} from '@wordpress/element';
4 import {__} from '@wordpress/i18n';
5 import {useFormContext, useFormState} from 'react-hook-form';
6 import {EditIcon} from './Icons';
7 import styles from './styles.module.scss';
8
9 interface LockedTextInputProps {
10 name: string;
11 label: string;
12 description: string;
13 placeholder?: string;
14 warningMessage: string;
15 }
16
17 /**
18 * @since 4.11.0
19 */
20 export default function LockedTextInput({name, label, description, placeholder, warningMessage}: LockedTextInputProps) {
21 const {register, setFocus} = useFormContext();
22 const {errors, isSubmitSuccessful} = useFormState();
23 const [isEditing, setIsEditing] = useState(false);
24
25 const handleEditClick = () => {
26 const newEditingState = !isEditing;
27 setIsEditing(newEditingState);
28
29 // Focus on input when editing is activated
30 if (newEditingState) {
31 setFocus(name);
32 }
33 };
34
35 // Reset editing mode when form is successfully submitted
36 useEffect(() => {
37 if (isSubmitSuccessful) {
38 setIsEditing(false);
39 }
40 }, [isSubmitSuccessful]);
41
42 return (
43 <AdminSectionField error={errors[name]?.message as string}>
44 <label htmlFor={name}>{label}</label>
45 <p>{description}</p>
46 <div className={styles.inputContainer}>
47 <input
48 id={name}
49 type="text"
50 className={styles.input}
51 {...register(name)}
52 placeholder={placeholder}
53 readOnly={!isEditing}
54 />
55 <button
56 type="button"
57 className={`${styles.editButton} ${isEditing ? styles.editing : ''}`}
58 onClick={handleEditClick}
59 aria-label={isEditing ? __('Cancel editing', 'give') : __('Edit field', 'give')}
60 >
61 <EditIcon strokeColor={isEditing ? '#9ca0af' : '#000'} />
62 </button>
63 </div>
64 {isEditing && <Notice type="warning">{warningMessage}</Notice>}
65 </AdminSectionField>
66 );
67 }
68