PluginProbe ʕ •ᴥ•ʔ
JetFormBuilder — Dynamic Blocks Form Builder / 3.1.6
JetFormBuilder — Dynamic Blocks Form Builder v3.1.6
3.6.3.1 3.6.3 3.6.2.2 3.6.2.1 3.6.2 3.6.1.1 3.6.1 3.6.0.1 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.3.0 1.3.1 1.3.2 1.3.3 1.4.0 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.1.0 2.1.1 2.1.10 2.1.11 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 3.0.0 3.0.0.1 3.0.0.2 3.0.0.3 3.0.1 3.0.1.1 3.0.2 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.0.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.2 3.2.3 3.3.0 3.3.1 3.3.2 3.3.3 3.3.3.1 3.3.4 3.3.4.1 3.3.4.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.4.5 3.4.5.1 3.4.5.2 3.4.6 3.4.7 3.4.7.1 3.5.0 3.5.1 3.5.1.1 3.5.1.2 3.5.2 3.5.2.1 3.5.3 3.5.4 3.5.5 3.5.6 3.5.6.1 3.5.6.2 3.5.6.3 3.6.0
jetformbuilder / assets / src / editor / blocks / submit-field / edit.js
jetformbuilder / assets / src / editor / blocks / submit-field Last commit date
change.state.action.js 2 years ago edit.js 2 years ago index.js 2 years ago preview.js 2 years ago
edit.js
170 lines
1 import './change.state.action';
2 import preview from './preview';
3
4 const {
5 GeneralFields,
6 AdvancedFields,
7 FieldSettingsWrapper,
8 } = JetFBComponents;
9
10 const { useActionButtonEdit, useUniqKey } = JetFBHooks;
11
12 const { __ } = wp.i18n;
13
14 const {
15 InspectorControls,
16 useBlockProps,
17 } = wp.blockEditor ? wp.blockEditor : wp.editor;
18
19 const {
20 Button,
21 SelectControl,
22 } = wp.components;
23
24 const {
25 RichText,
26 } = wp.blockEditor;
27
28 const { useState, useEffect } = wp.element;
29
30 const defaultClasses = [ 'jet-form-builder__action-button' ];
31 const defaultWrapperClasses = [
32 'jet-form-builder__action-button-wrapper',
33 ];
34
35 const ButtonEdit = ( {
36 attributes: rootAttributes,
37 setAttributes: setRootAttributes,
38 } ) => {
39
40 const uniqKey = useUniqKey();
41 const CurrentButtonEdit = useActionButtonEdit( rootAttributes.action_type );
42
43 const setAttributes = attrs => {
44 const buttons = JSON.parse( JSON.stringify( rootAttributes.buttons ) );
45 const current = buttons[ rootAttributes.action_type ] ?? {};
46
47 buttons[ rootAttributes.action_type ] = {
48 ...current,
49 ...attrs,
50 };
51
52 setRootAttributes( { buttons } );
53 };
54
55 return CurrentButtonEdit && <CurrentButtonEdit
56 key={ uniqKey( 'ButtonControls' ) }
57 rootAttributes={ rootAttributes }
58 setRootAttributes={ setRootAttributes }
59 attributes={ rootAttributes.buttons[ rootAttributes.action_type ] ?? {} }
60 setAttributes={ setAttributes }
61 />;
62 };
63
64 export default function ActionButtonEdit( props ) {
65
66 const {
67 attributes,
68 setAttributes,
69 isSelected,
70 editProps: { uniqKey },
71 } = props;
72
73 const classesButton = () => {
74 if ( ! attributes.action_type ) {
75 return defaultClasses;
76 }
77 const action = JetFormActionButton.actions.find( elem => attributes.action_type === elem.value );
78
79 if ( ! action ) {
80 return defaultClasses;
81 }
82 if ( ! attributes.label ) {
83 setAttributes( { label: action.preset_label } );
84 }
85
86 return [ ...defaultClasses, action.button_class ];
87 };
88
89 const classesWrapper = () => {
90 if ( ! attributes.action_type ) {
91 return [ ...defaultWrapperClasses ];
92 }
93 const action = JetFormActionButton.actions.find( elem => attributes.action_type === elem.value );
94
95 if ( ! action ) {
96 return [ ...defaultWrapperClasses ];
97 }
98
99 return [ ...defaultWrapperClasses, action.wrapper_class ];
100 };
101
102 const [ buttonClasses, setButtonClasses ] = useState( classesButton );
103 const [ wrapperClasses, setWrapperClasses ] = useState( classesWrapper );
104
105 useEffect( () => {
106 setButtonClasses( classesButton() );
107 setWrapperClasses( classesWrapper() );
108 }, [ attributes.action_type ] );
109
110 const blockProps = useBlockProps();
111
112 if ( attributes.isPreview ) {
113 return <div style={ {
114 width: '100%',
115 display: 'flex',
116 justifyContent: 'center',
117 } }>
118 { preview }
119 </div>;
120 }
121
122 return [
123 isSelected && <InspectorControls
124 key={ uniqKey( 'InspectorControls' ) }
125 >
126 <GeneralFields
127 key={ uniqKey( 'GeneralFields' ) }
128 autoCompleteLabel={ false }
129 { ...props }
130 />
131 <FieldSettingsWrapper { ...props } key={ uniqKey( 'FieldSettingsWrapper' ) }>
132 <SelectControl
133 key={ uniqKey( 'action_type' ) }
134 label={ __( 'Button Action Type', 'jet-form-builder' ) }
135 value={ attributes.action_type }
136 options={ JetFormActionButton.actions }
137 onChange={ action_type => setAttributes( { action_type } ) }
138 />
139 <ButtonEdit
140 key={ uniqKey( 'ButtonControls' ) }
141 attributes={ attributes }
142 setAttributes={ setAttributes }
143 />
144 </FieldSettingsWrapper>
145 <AdvancedFields
146 key={ uniqKey( 'AdvancedFields' ) }
147 { ...props }
148 />
149 </InspectorControls>,
150 <div
151 key={ uniqKey( 'submit-wrap' ) }
152 { ...blockProps }
153 >
154 <div className={ wrapperClasses.join( ' ' ) }>
155 <Button
156 isPrimary
157 className={ buttonClasses.join( ' ' ) }
158 key={ uniqKey( 'place_holder_block' ) }
159 >
160 <RichText
161 placeholder='Input Submit label...'
162 allowedFormats={ [] }
163 value={ attributes.label }
164 onChange={ label => setAttributes( { label } ) }
165 />
166 </Button>
167 </div>
168 </div>,
169 ];
170 }