| 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 |
|