PluginProbe
User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor / 4.0.0
User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor v4.0.0
4.0.3 4.0.2 4.0.1 4.0.0 3.16.6 3.16.5 3.16.4 3.16.3 3.16.2 3.16.1 3.16.0 3.15.9 3.9.9 3.9.5 3.9.6 3.9.7 3.9.8 1.1.7 1.1.8 1.1.9 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 All 341 releases
profile-builder / form-builder / blocks / src / components / CrossCuttingFieldPanels.js

CrossCuttingFieldPanels.js in User Profile Builder – Beautiful User Registration Forms, User Profiles & User Role Editor 4.0.0, at form-builder/blocks/src/components/CrossCuttingFieldPanels.js

47 lines 2.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Cross-cutting inspector panels shared by every PB field block.
3 * Mount from BaseFieldEdit and from hosts that build their own Fill
4 * (e.g. field-repeater). Each panel gates on its attribute / availability.
5 *
6 * `insideRepeater` is a prop so hosts that already know nesting skip a second walk.
7 */
8
9 import ConditionalLogicPanel from './ConditionalLogicPanel';
10 import FieldVisibilityPanel from './FieldVisibilityPanel';
11 import EditProfileApprovedByAdminPanel from './EditProfileApprovedByAdminPanel';
12 import ExtraFieldPropertiesPanel from './ExtraFieldPropertiesPanel';
13
14 const has = ( attributes, key ) => Object.prototype.hasOwnProperty.call( attributes, key );
15
16 export default function CrossCuttingFieldPanels( { attributes, setAttributes, insideRepeater = false } ) {
17 // Hide CL on sub-fields (never fires) and on free installs (no evaluator).
18 // Attribute stays so stored rules survive a save / downgrade.
19 const conditionalLogicAvailable = window.wppbFb?.conditionalFields?.available !== false;
20 const supportsConditionalLogic =
21 has( attributes, 'conditional-logic-enabled' ) && ! insideRepeater && conditionalLogicAvailable;
22
23 // Field Visibility only applies to top-level manage-fields rows.
24 const supportsFieldVisibility = has( attributes, 'visibility' ) && ! insideRepeater;
25
26 const supportsAdminApproval = has( attributes, 'edit-profile-approved-by-admin' );
27
28 return (
29 <>
30 { supportsConditionalLogic && (
31 <ConditionalLogicPanel attributes={ attributes } setAttributes={ setAttributes } />
32 ) }
33 { supportsFieldVisibility && (
34 <FieldVisibilityPanel attributes={ attributes } setAttributes={ setAttributes } />
35 ) }
36 { supportsAdminApproval && (
37 <EditProfileApprovedByAdminPanel attributes={ attributes } setAttributes={ setAttributes } />
38 ) }
39 <ExtraFieldPropertiesPanel
40 attributes={ attributes }
41 setAttributes={ setAttributes }
42 insideRepeater={ insideRepeater }
43 />
44 </>
45 );
46 }
47