PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / trunk
GiveWP – Donation Plugin and Fundraising Platform vtrunk
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 8 months ago index.tsx 8 months ago styles.module.scss 8 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