: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
/* global wpforms_divi_builder, WPFormsRepeaterField */
import React, { Component } from 'react';
import PropTypes from 'prop-types';
* WPFormsSelector component.
class WPFormsSelector extends Component {
static slug = 'wpforms_selector';
* @param {string} props List of properties.
* Set types for properties.
* @returns {object} Properties type.
form_id: PropTypes.number, // eslint-disable-line camelcase
show_title: PropTypes.string, // eslint-disable-line camelcase
show_desc: PropTypes.string, // eslint-disable-line camelcase
* Check if form settings was updated.
* @param {object} prevProps List of previous properties.
componentDidUpdate( prevProps ) {
if ( prevProps.form_id !== this.props.form_id || prevProps.show_title !== this.props.show_title || prevProps.show_desc !== this.props.show_desc ) {
this.componentDidMount();
* Ajax request for form HTML.
var formData = new FormData();
formData.append( 'nonce', wpforms_divi_builder.nonce );
formData.append( 'action', 'wpforms_divi_preview' );
formData.append( 'form_id', this.props.form_id );
formData.append( 'show_title', this.props.show_title );
formData.append( 'show_desc', this.props.show_desc );
wpforms_divi_builder.ajax_url,
credentials: 'same-origin',
'Content-Type': 'application/x-www-form-urlencoded',
'Cache-Control': 'no-cache',
body: new URLSearchParams( formData ),
.then( res => res.json() )
* @returns {JSX.Element} View for module.
const { error, isLoaded, form } = this.state,
wrapperClasses = isLoaded ? 'wpforms-divi-form-preview loading' : 'wpforms-divi-form-preview';
if ( typeof this.props.form_id === 'undefined' || this.props.form_id === '' ) {
<div className="wpforms-divi-empty-block">
<img src={ wpforms_divi_builder.block_empty_url } alt="" />
{ <p dangerouslySetInnerHTML={ { __html: wpforms_divi_builder.block_empty_text } } /> }
<button type="button" onClick={
window.open( wpforms_divi_builder.get_started_url, '_blank' );
{ wpforms_divi_builder.get_started_text }
<p className="wpforms-admin-no-forms-footer">
{ wpforms_divi_builder.help_text }
<a href={ wpforms_divi_builder.guide_url } onClick={
window.open( wpforms_divi_builder.guide_url, '_blank' );
{ wpforms_divi_builder.guide_text }.
<div className="wpforms-divi-form-placeholder">
<img src={ wpforms_divi_builder.placeholder } alt="" />
<div className={ wrapperClasses }>
{ <div dangerouslySetInnerHTML={ { __html: form } } /> }
// Register custom modules.
.on( 'et_builder_api_ready', ( event, API ) => {
API.registerModules( [ WPFormsSelector ] );
// Re-initialize WPForms frontend.
.on( 'wpformsDiviModuleDisplay', () => {
.on( 'wpformsReady', function() {
// Make all the modern dropdowns disabled.
$( '.choicesjs-select' ).each( function() {
const $instance = $( this ).data( 'choicesjs' );
if ( $instance && typeof $instance.disable === 'function' ) {
WPFormsRepeaterField?.ready();