File: /opt/wpsites/datainsightnow.com/wp-content/plugins/essential-blocks/blocks/fluent-forms/src/edit.js
import { __ } from "@wordpress/i18n";
import { useEffect } from "@wordpress/element";
import { Placeholder, SelectControl } from "@wordpress/components";
import { useBlockProps } from "@wordpress/block-editor";
import { select } from "@wordpress/data";
import ServerSideRender from "@wordpress/server-side-render";
/**
* External depencencies
*/
/**
* Internal Import
*/
import classnames from "classnames";
import Inspector from "./inspector";
const {
softMinifyCssStrings,
// mimmikCssForPreviewBtnClick,
duplicateBlockIdFix,
generateDimensionsControlStyles,
generateBorderShadowStyles,
generateTypographyStyles,
generateResponsiveRangeStyles,
} = EBControls;
import {
FORM_LISTS,
INPUT_HEIGHT,
INPUT_TEXTAREA_INDENT,
INPUT_WIDTH,
TEXTAREA_WIDTH,
TEXTAREA_HEIGHT,
INPUT_TEXTAREA_PADDING,
INPUT_TEXTAREA_SPACING,
INPUT_TEXTAREA_BORDER,
SECTION_BREAK_PADDING,
SECTION_BREAK_MARGIN,
SECTION_BREAK_DESC_PADDING,
SECTION_BREAK_DESC_MARGIN,
CUSTOM_HTML_PADDING,
CUSTOM_HTML_MARGIN,
SUBMIT_BUTTON_WIDTH,
SUBMIT_BUTTON_HEIGHT,
SUBMIT_BUTTON_PADDING,
SUBMIT_BUTTON_MARGIN,
SUBMIT_BUTTON_BORDER,
SUCCESS_BORDER,
ERROR_PADDING,
ERROR_MARGIN,
CHECKBOX_SIZE,
CHECKBOX_BORDER,
CHECKBOX_RADIUS,
RADIO_RADIUS,
CHECKBOX_ITEM_SPACING,
FORM_MAX_WIDTH,
FORM_PADDING,
FORM_MARGIN,
FORM_BORDER,
FORM_FULL_LISTS,
BUTTON_POSITION,
} from "./constants";
import {
typoPrefix_label,
typoPrefix_input,
typoPrefix_section_break,
typoPrefix_section_break_desc,
typoPrefix_custom_html,
typoPrefix_submit_btn,
typoPrefix_success,
typoPrefix_error,
} from "./constants/typographyPrefixConstants";
const edit = (props) => {
const { attributes, setAttributes, className, clientId, isSelected } = props;
const {
blockId,
blockMeta,
// responsive control attribute ⬇
resOption,
formActive,
formId,
labelColor,
inputBackgroundColor,
inputTextColor,
inputFocusBackgroundColor,
placeholderColor,
sectionBreakColor,
sectionBreakDescColor,
sectionBreakPosition,
customHtmlColor,
customHtmlPosition,
btnAlignment,
btnWidthType,
btnBackgroundColor,
btnColor,
btnBackgroundHoverColor,
btnHoverColor,
successBackgroundColor,
successColor,
errorColor,
customCheckboxStyle,
checkboxColor,
checkboxBorderColor,
checkboxCheckedColor,
formBackgroundColor,
formAlignment,
showLabels,
showPlaceholder,
showErrorMessage,
classHook,
} = attributes;
const is_fluent_form_active = EssentialBlocksLocalize?.get_plugins['fluentform/fluentform.php']?.active
// label typography
const {
typoStylesDesktop: labelTypoStylesDesktop,
typoStylesTab: labelTypoStylesTab,
typoStylesMobile: labelTypoStylesMobile,
} = generateTypographyStyles({
attributes,
prefixConstant: typoPrefix_label,
});
// input & textarea typography
const {
typoStylesDesktop: inputTypoStylesDesktop,
typoStylesTab: inputTypoStylesTab,
typoStylesMobile: inputTypoStylesMobile,
} = generateTypographyStyles({
attributes,
prefixConstant: typoPrefix_input,
});
// text indent
const {
rangeStylesDesktop: inputTextIndentDesktop,
rangeStylesTab: inputTextIndentTab,
rangeStylesMobile: inputTextIndentMobile,
} = generateResponsiveRangeStyles({
controlName: INPUT_TEXTAREA_INDENT,
property: "text-indent",
attributes,
});
// input field width
const {
rangeStylesDesktop: inputWidthDesktop,
rangeStylesTab: inputWidthTab,
rangeStylesMobile: inputWidthMobile,
} = generateResponsiveRangeStyles({
controlName: INPUT_WIDTH,
property: "width",
attributes,
});
// input field height
const {
rangeStylesDesktop: inputHeightDesktop,
rangeStylesTab: inputHeightTab,
rangeStylesMobile: inputHeightMobile,
} = generateResponsiveRangeStyles({
controlName: INPUT_HEIGHT,
property: "height",
attributes,
});
// textarea field width
const {
rangeStylesDesktop: textareaWidthDesktop,
rangeStylesTab: textareaWidthTab,
rangeStylesMobile: textareaWidthMobile,
} = generateResponsiveRangeStyles({
controlName: TEXTAREA_WIDTH,
property: "width",
attributes,
});
// textarea field height
const {
rangeStylesDesktop: textareaHeightDesktop,
rangeStylesTab: textareaHeightTab,
rangeStylesMobile: textareaHeightMobile,
} = generateResponsiveRangeStyles({
controlName: TEXTAREA_HEIGHT,
property: "height",
attributes,
});
// input/textarea padding
const {
dimensionStylesDesktop: inpTxtPaddingDesktop,
dimensionStylesTab: inpTxtPaddingTab,
dimensionStylesMobile: inpTxtPaddingMobile,
} = generateDimensionsControlStyles({
controlName: INPUT_TEXTAREA_PADDING,
styleFor: "padding",
attributes,
});
// input/textarea spacing
const {
rangeStylesDesktop: inputTextSpaceDesktop,
rangeStylesTab: inputTextSpaceTab,
rangeStylesMobile: inputTextSpaceMobile,
} = generateResponsiveRangeStyles({
controlName: INPUT_TEXTAREA_SPACING,
property: "margin-bottom",
attributes,
});
// input/textarea border shadow
const {
styesDesktop: inpTxtBrdShaDesktop,
styesTab: inpTxtBrdShaTab,
styesMobile: inpTxtBrdShaMobile,
stylesHoverDesktop: inpTxtBrdShaHoverDesktop,
stylesHoverTab: inpTxtBrdShaHoverTab,
stylesHoverMobile: inpTxtBrdShaHoverMobile,
transitionStyle: inpTxtBrdTransitionStyle,
} = generateBorderShadowStyles({
controlName: INPUT_TEXTAREA_BORDER,
attributes,
});
// section break typography
const {
typoStylesDesktop: sectionBreakTypoStylesDesktop,
typoStylesTab: sectionBreakTypoStylesTab,
typoStylesMobile: sectionBreakTypoStylesMobile,
} = generateTypographyStyles({
attributes,
prefixConstant: typoPrefix_section_break,
});
// Section break label padding
const {
dimensionStylesDesktop: sectionBreakLabelPaddingDesktop,
dimensionStylesTab: sectionBreakLabelPaddingTab,
dimensionStylesMobile: sectionBreakLabelPaddingMobile,
} = generateDimensionsControlStyles({
controlName: SECTION_BREAK_PADDING,
styleFor: "padding",
attributes,
});
// Section break label margin
const {
dimensionStylesDesktop: sectionBreakLabelMarginDesktop,
dimensionStylesTab: sectionBreakLabelMarginTab,
dimensionStylesMobile: sectionBreakLabelMarginMobile,
} = generateDimensionsControlStyles({
controlName: SECTION_BREAK_MARGIN,
styleFor: "margin",
attributes,
});
// custom html padding
const {
dimensionStylesDesktop: customHtmlPaddingDesktop,
dimensionStylesTab: customHtmlPaddingTab,
dimensionStylesMobile: customHtmlPaddingMobile,
} = generateDimensionsControlStyles({
controlName: CUSTOM_HTML_PADDING,
styleFor: "padding",
attributes,
});
// custom html margin
const {
dimensionStylesDesktop: customHtmlMarginDesktop,
dimensionStylesTab: customHtmlMarginTab,
dimensionStylesMobile: customHtmlMarginMobile,
} = generateDimensionsControlStyles({
controlName: CUSTOM_HTML_MARGIN,
styleFor: "margin",
attributes,
});
// custom html typography
const {
typoStylesDesktop: customHtmlTypoStylesDesktop,
typoStylesTab: customHtmlTypoStylesTab,
typoStylesMobile: customHtmlTypoStylesMobile,
} = generateTypographyStyles({
attributes,
prefixConstant: typoPrefix_custom_html,
});
// section break desc typography
const {
typoStylesDesktop: sectionBreakDescTypoStylesDesktop,
typoStylesTab: sectionBreakDescTypoStylesTab,
typoStylesMobile: sectionBreakDescTypoStylesMobile,
} = generateTypographyStyles({
attributes,
prefixConstant: typoPrefix_section_break_desc,
});
// Section break DESC margin
const {
dimensionStylesDesktop: sectionBreakDescPaddingDesktop,
dimensionStylesTab: sectionBreakDescPaddingTab,
dimensionStylesMobile: sectionBreakDescPaddingMobile,
} = generateDimensionsControlStyles({
controlName: SECTION_BREAK_DESC_PADDING,
styleFor: "padding",
attributes,
});
// Section break DESC padding
const {
dimensionStylesDesktop: sectionBreakDescMarginDesktop,
dimensionStylesTab: sectionBreakDescMarginTab,
dimensionStylesMobile: sectionBreakDescMarginMobile,
} = generateDimensionsControlStyles({
controlName: SECTION_BREAK_DESC_MARGIN,
styleFor: "margin",
attributes,
});
// submit button width
const {
rangeStylesDesktop: submitBtnWidthDesktop,
rangeStylesTab: submitBtnWidthTab,
rangeStylesMobile: submitBtnWidthMobile,
} = generateResponsiveRangeStyles({
controlName: SUBMIT_BUTTON_WIDTH,
property: "width",
attributes,
});
// submit button height
const {
rangeStylesDesktop: submitBtnHeightDesktop,
rangeStylesTab: submitBtnHeightTab,
rangeStylesMobile: submitBtnHeightMobile,
} = generateResponsiveRangeStyles({
controlName: SUBMIT_BUTTON_HEIGHT,
property: "height",
attributes,
});
// submit button typography
const {
typoStylesDesktop: submutBtnTypoStylesDesktop,
typoStylesTab: submutBtnTypoStylesTab,
typoStylesMobile: submutBtnTypoStylesMobile,
} = generateTypographyStyles({
attributes,
prefixConstant: typoPrefix_submit_btn,
});
// submit button padding
const {
dimensionStylesDesktop: submitBtnPaddingDesktop,
dimensionStylesTab: submitBtnPaddingTab,
dimensionStylesMobile: submitBtnPaddingMobile,
} = generateDimensionsControlStyles({
controlName: SUBMIT_BUTTON_PADDING,
styleFor: "padding",
attributes,
});
// submit button margin
const {
dimensionStylesDesktop: submitBtnMarginDesktop,
dimensionStylesTab: submitBtnMarginTab,
dimensionStylesMobile: submitBtnMarginMobile,
} = generateDimensionsControlStyles({
controlName: SUBMIT_BUTTON_MARGIN,
styleFor: "margin",
attributes,
});
// submit button position
const {
rangeStylesDesktop: submitBtnPositionDesktop,
rangeStylesTab: submitBtnPositionTab,
rangeStylesMobile: submitBtnPositionMobile,
} = generateResponsiveRangeStyles({
controlName: BUTTON_POSITION,
property: "right",
attributes,
});
// submit button border & shadow
const {
styesDesktop: btnBdShadowStyesDesktop,
styesTab: btnBdShadowStyesTab,
styesMobile: btnBdShadowStyesMobile,
stylesHoverDesktop: btnBdShadowStylesHoverDesktop,
stylesHoverTab: btnBdShadowStylesHoverTab,
stylesHoverMobile: btnBdShadowStylesHoverMobile,
transitionStyle: btnBdShadowTransitionStyle,
} = generateBorderShadowStyles({
controlName: SUBMIT_BUTTON_BORDER,
attributes,
});
// success typography
const {
typoStylesDesktop: successTypoStylesDesktop,
typoStylesTab: successTypoStylesTab,
typoStylesMobile: successTypoStylesMobile,
} = generateTypographyStyles({
attributes,
prefixConstant: typoPrefix_success,
});
// success border
const {
styesDesktop: successBorderDesktop,
styesTab: successBorderTab,
styesMobile: successBorderMobile,
stylesHoverDesktop: successBorderHoverDesktop,
stylesHoverTab: successBorderHoverTab,
stylesHoverMobile: successBorderHoverMobile,
transitionStyle: successTransitionStyle,
} = generateBorderShadowStyles({
controlName: SUCCESS_BORDER,
attributes,
noShadow: true,
});
// error typography
const {
typoStylesDesktop: errorTypoStylesDesktop,
typoStylesTab: errorTypoStylesTab,
typoStylesMobile: errorTypoStylesMobile,
} = generateTypographyStyles({
attributes,
prefixConstant: typoPrefix_error,
});
// error padding
const {
dimensionStylesDesktop: errorPaddingDesktop,
dimensionStylesTab: errorPaddingTab,
dimensionStylesMobile: errorPaddingMobile,
} = generateDimensionsControlStyles({
controlName: ERROR_PADDING,
styleFor: "padding",
attributes,
});
// error margin
const {
dimensionStylesDesktop: errorMarginDesktop,
dimensionStylesTab: errorMarginTab,
dimensionStylesMobile: errorMarginMobile,
} = generateDimensionsControlStyles({
controlName: ERROR_MARGIN,
styleFor: "margin",
attributes,
});
// Checkbox Width
const {
rangeStylesDesktop: checkboxWidthDesktop,
rangeStylesTab: checkboxWidthTab,
rangeStylesMobile: checkboxWidthMobile,
} = generateResponsiveRangeStyles({
controlName: CHECKBOX_SIZE,
property: "width",
attributes,
});
// Checkbox Height
const {
rangeStylesDesktop: checkboxHeightDesktop,
rangeStylesTab: checkboxHeightTab,
rangeStylesMobile: checkboxHeightMobile,
} = generateResponsiveRangeStyles({
controlName: CHECKBOX_SIZE,
property: "height",
attributes,
});
// Checkbox border width
const {
rangeStylesDesktop: checkboxBorderWidthDesktop,
rangeStylesTab: checkboxBorderWidthTab,
rangeStylesMobile: checkboxBorderWidthMobile,
} = generateResponsiveRangeStyles({
controlName: CHECKBOX_BORDER,
property: "border-width",
attributes,
customUnit: "px",
});
// checkbox radius
const {
dimensionStylesDesktop: checkboxRadiusDesktop,
dimensionStylesTab: checkboxRadiusTab,
dimensionStylesMobile: checkboxRadiusMobile,
} = generateDimensionsControlStyles({
controlName: CHECKBOX_RADIUS,
styleFor: "border-radius",
attributes,
});
// radio radius
const {
dimensionStylesDesktop: radioRadiusDesktop,
dimensionStylesTab: radioRadiusTab,
dimensionStylesMobile: radioRadiusMobile,
} = generateDimensionsControlStyles({
controlName: RADIO_RADIUS,
styleFor: "border-radius",
attributes,
});
// checkbox/radio buttons list spacing
const {
rangeStylesDesktop: checkboxSpaceDesktop,
rangeStylesTab: checkboxSpaceTab,
rangeStylesMobile: checkboxSpaceMobile,
} = generateResponsiveRangeStyles({
controlName: CHECKBOX_ITEM_SPACING,
property: "margin-bottom",
attributes,
});
// form width
const {
rangeStylesDesktop: formWidthDesktop,
rangeStylesTab: formWidthTab,
rangeStylesMobile: formWidthMobile,
} = generateResponsiveRangeStyles({
controlName: FORM_MAX_WIDTH,
property: "width",
attributes,
});
// form padding
const {
dimensionStylesDesktop: formPaddingDesktop,
dimensionStylesTab: formPaddingTab,
dimensionStylesMobile: formPaddingMobile,
} = generateDimensionsControlStyles({
controlName: FORM_PADDING,
styleFor: "padding",
attributes,
});
// form margin
const {
dimensionStylesDesktop: formMarginDesktop,
dimensionStylesTab: formMarginTab,
dimensionStylesMobile: formMarginMobile,
} = generateDimensionsControlStyles({
controlName: FORM_MARGIN,
styleFor: "margin",
attributes,
});
// form border shadow
const {
styesDesktop: formBrdShaDesktop,
styesTab: formBrdShaTab,
styesMobile: formBrdShaMobile,
stylesHoverDesktop: formBrdShaHoverDesktop,
stylesHoverTab: formBrdShaHoverTab,
stylesHoverMobile: formBrdShaHoverMobile,
transitionStyle: formBrdTransitionStyle,
} = generateBorderShadowStyles({
controlName: FORM_BORDER,
attributes,
});
const desktopStyles = `
.${blockId}.eb-fluent-form-wrapper {
${formBackgroundColor ? `background: ${formBackgroundColor};` : ""}
${formWidthDesktop}
${formPaddingDesktop}
${formMarginDesktop}
${formBrdShaDesktop}
transition: ${formBrdTransitionStyle};
}
.${blockId}.eb-fluent-form-wrapper:hover {
${formBrdShaHoverDesktop}
}
.${blockId}.eb-fluent-form-wrapper .ff-el-group label {
${labelTypoStylesDesktop}
${labelColor ? `color: ${labelColor};` : ""}
}
.${blockId}.eb-fluent-form-wrapper input:not([type=radio]):not([type=checkbox]):not([type=submit]):not([type=button]):not([type=image]):not([type=file]), .${blockId}.eb-fluent-form-wrapper .ff-el-group textarea, .${blockId}.eb-fluent-form-wrapper .ff-el-group select {
${inputTypoStylesDesktop}
${inputTextIndentDesktop ? inputTextIndentDesktop : ""}
${inpTxtPaddingDesktop}
${inpTxtBrdShaDesktop}
${inputBackgroundColor ? `background-color: ${inputBackgroundColor};` : ""}
${inputTextColor ? `color: ${inputTextColor};` : ""}
transition: ${inpTxtBrdTransitionStyle};
}
.${blockId}.eb-fluent-form-wrapper input:not([type=radio]):not([type=checkbox]):not([type=submit]):not([type=button]):not([type=image]):not([type=file]):hover,
.${blockId}.eb-fluent-form-wrapper .ff-el-group textarea:hover,
.${blockId}.eb-fluent-form-wrapper .ff-el-group select:hover {
${inpTxtBrdShaHoverDesktop}
}
.${blockId}.eb-fluent-form-wrapper input:not([type=radio]):not([type=checkbox]):not([type=submit]):not([type=button]):not([type=image]):not([type=file])::focus, .${blockId}.eb-fluent-form-wrapper .ff-el-group textarea::focus {
${
inputFocusBackgroundColor
? `background-color: ${inputFocusBackgroundColor};`
: ""
}
}
.${blockId}.eb-fluent-form-wrapper input:not([type=radio]):not([type=checkbox]):not([type=submit]):not([type=button]):not([type=image]):not([type=file]), .${blockId}.eb-fluent-form-wrapper .ff-el-group select.ff-el-form-control {
${inputWidthDesktop ? inputWidthDesktop : ""}
${inputHeightDesktop ? inputHeightDesktop : ""}
}
.${blockId}.eb-fluent-form-wrapper .ff-el-group textarea {
${textareaWidthDesktop ? textareaWidthDesktop : ""}
${textareaHeightDesktop ? textareaHeightDesktop : ""}
}
.${blockId}.eb-fluent-form-wrapper .ff-el-group {
${inputTextSpaceDesktop ? inputTextSpaceDesktop : ""}
}
.${blockId}.eb-fluent-form-wrapper .ff-el-group input::-webkit-input-placeholder, .${blockId}.eb-fluent-form-wrapper .ff-el-group textarea::-webkit-input-placeholder {
${placeholderColor ? `color: ${placeholderColor};` : ""}
}
.${blockId}.eb-fluent-form-wrapper .ff-el-section-break, .${blockId}.eb-fluent-form-wrapper .ff-el-section-break hr {
text-align: ${sectionBreakPosition};
}
.${blockId}.eb-fluent-form-wrapper .ff-el-section-break .ff-el-section-title{
${sectionBreakTypoStylesDesktop}
${sectionBreakLabelPaddingDesktop}
${sectionBreakLabelMarginDesktop}
${sectionBreakColor ? `color: ${sectionBreakColor};` : ""}
}
.${blockId}.eb-fluent-form-wrapper .ff-el-section-break div {
${sectionBreakDescTypoStylesDesktop}
${sectionBreakDescPaddingDesktop}
${sectionBreakDescMarginDesktop}
${sectionBreakDescColor ? `color: ${sectionBreakDescColor};` : ""}
}
${
btnWidthType === "custom"
? `.${blockId}.eb-fluent-form-wrapper .ff_submit_btn_wrapper.ff-text-left,
.${blockId}.eb-fluent-form-wrapper .ff_submit_btn_wrapper.ff-text-center,
.${blockId}.eb-fluent-form-wrapper .ff_submit_btn_wrapper.ff-text-right {
text-align: ${btnAlignment};
}
`
: ``
}
.${blockId}.eb-fluent-form-wrapper .ff_submit_btn_wrapper .ff-btn-submit {
${btnWidthType === "custom" ? submitBtnWidthDesktop : "width: 100%;"}
${submitBtnHeightDesktop.length != 0 ? submitBtnHeightDesktop : "height: auto;"}
${submutBtnTypoStylesDesktop}
${submitBtnPaddingDesktop}
${submitBtnMarginDesktop}
${btnBdShadowStyesDesktop}
${btnBackgroundColor ? `background-color: ${btnBackgroundColor};` : ""}
${btnColor ? `color: ${btnColor};` : ""}
transition: all 0.5s, ${btnBdShadowTransitionStyle};
}
.${blockId}.eb-fluent-form-wrapper .ff_submit_btn_wrapper .ff-btn-submit:hover {
${btnBdShadowStylesHoverDesktop}
${
btnBackgroundHoverColor
? `background-color: ${btnBackgroundHoverColor};`
: ""
}
${btnHoverColor ? `color: ${btnHoverColor};` : ""}
}
.${blockId}.eb-fluent-form-wrapper .ff-message-success {
${successBackgroundColor ? `background-color: ${successBackgroundColor};` : ""}
${successColor ? `color: ${successColor};` : ""}
${successTypoStylesDesktop}
${successBorderDesktop}
transition: ${successTransitionStyle};
}
.${blockId}.eb-fluent-form-wrapper .ff-message-success:hover {
${successBorderHoverDesktop}
}
${
showErrorMessage
? `
.${blockId}.eb-fluent-form-wrapper .error.text-danger {
${errorTypoStylesDesktop}
${errorPaddingDesktop}
${errorMarginDesktop}
${errorColor ? `color: ${errorColor};` : ""}
}
`
: ""
}
.${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox .ff-el-input--content input[type="checkbox"], .${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox .ff-el-input--content input[type="radio"] {
appearance: none;
position: relative;
${checkboxColor ? `background: ${checkboxColor};` : ""}
${checkboxBorderColor ? `border-color:${checkboxBorderColor};` : ""}
${checkboxWidthDesktop}
${checkboxHeightDesktop}
${checkboxBorderWidthDesktop}
}
.${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox .ff-el-form-check:not(:last-child) {
${checkboxSpaceDesktop}
}
.${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="checkbox"], .${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="checkbox"]:before {
${checkboxRadiusDesktop}
}
.${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="radio"], .${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="radio"]:before {
${radioRadiusDesktop}
}
.${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="checkbox"]:checked:before, .${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="radio"]:checked:before {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
display: block;
margin: 0;
${checkboxCheckedColor ? `background: ${checkboxCheckedColor};` : ""}
width: calc(${checkboxWidthDesktop.replace(
/\D/g,
""
)}px - ${checkboxBorderWidthDesktop.replace(/\D/g, "")}px*2);
height: calc(${checkboxHeightDesktop.replace(
/\D/g,
""
)}px - ${checkboxBorderWidthDesktop.replace(/\D/g, "")}px*2);
}
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-alignment-center {
margin: 0 auto;
}
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-alignment-right {
margin: 0 0 0 auto;
}
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-hide-labels .ff-el-group label:not(.ff-el-form-check-label),
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-hide-labels .ff-el-group .ff-el-input--label,
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-hide-errormessage .error.text-danger {
display: none;
}
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-hide-placeholder input::-webkit-input-placeholder,
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-hide-placeholder textarea::-webkit-input-placeholder {
opacity: 0;
visibility: hidden;
}
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-hide-placeholder input::-moz-placeholder,
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-hide-placeholder textarea::-moz-placeholder {
opacity: 0;
visibility: hidden;
}
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-hide-placeholder input:-ms-input-placeholder,
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-hide-placeholder textarea:-ms-input-placeholder {
opacity: 0;
visibility: hidden;
}
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-hide-placeholder input:-moz-placeholder,
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-hide-placeholder textarea:-moz-placeholder {
opacity: 0;
visibility: hidden;
}
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-default-subscription input {
max-width: unset !important;
}
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-default-subscription .ff-el-input--content {
position: relative;
z-index: 1;
}
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-default-subscription .ff-el-group .ff-btn-submit {
${submitBtnPositionDesktop}
position: relative;
min-width: inherit;
}
.${blockId}.eb-fluent-form-wrapper .ff-custom_html > * {
${customHtmlMarginDesktop}
${customHtmlPaddingDesktop}
${customHtmlTypoStylesDesktop}
${customHtmlColor ? `color: ${customHtmlColor};` : ""}
${customHtmlPosition ? `text-align: ${customHtmlPosition};` : ""}
}
`;
const tabStyles = `
.${blockId}.eb-fluent-form-wrapper {
${formWidthTab}
${formPaddingTab}
${formMarginTab}
${formBrdShaTab}
}
.${blockId}.eb-fluent-form-wrapper:hover {
${formBrdShaHoverTab}
}
.${blockId}.eb-fluent-form-wrapper:hover {
${formBrdShaHoverTab}
}
.${blockId}.eb-fluent-form-wrapper .ff-el-group label {
${labelTypoStylesTab}
}
.${blockId}.eb-fluent-form-wrapper input:not([type=radio]):not([type=checkbox]):not([type=submit]):not([type=button]):not([type=image]):not([type=file]), .${blockId}.eb-fluent-form-wrapper .ff-el-group textarea, .${blockId}.eb-fluent-form-wrapper .ff-el-group select.ff-el-form-control {
${inputTypoStylesTab}
${inputTextIndentTab}
${inpTxtPaddingTab}
${inpTxtBrdShaTab}
}
.${blockId}.eb-fluent-form-wrapper input:not([type=radio]):not([type=checkbox]):not([type=submit]):not([type=button]):not([type=image]):not([type=file]):hover, .${blockId}.eb-fluent-form-wrapper .ff-el-group textarea:hover, .${blockId}.eb-fluent-form-wrapper .ff-el-group select.ff-el-form-control:hover {
${inpTxtBrdShaHoverTab}
}
.${blockId}.eb-fluent-form-wrapper input:not([type=radio]):not([type=checkbox]):not([type=submit]):not([type=button]):not([type=image]):not([type=file]), .${blockId}.eb-fluent-form-wrapper .ff-el-group select.ff-el-form-control {
${inputWidthTab ? inputWidthTab : ""}
${inputHeightTab ? inputHeightTab : ""}
}
.${blockId}.eb-fluent-form-wrapper .ff-el-group textarea {
${textareaWidthTab ? textareaWidthTab : ""}
${textareaHeightTab ? textareaHeightTab : ""}
}
.${blockId}.eb-fluent-form-wrapper .ff-el-group {
${inputTextSpaceTab ? inputTextSpaceTab : ""}
}
.${blockId}.eb-fluent-form-wrapper .ff-el-section-break .ff-el-section-title{
${sectionBreakTypoStylesTab}
${sectionBreakLabelPaddingTab}
${sectionBreakLabelMarginTab}
}
.${blockId}.eb-fluent-form-wrapper .ff-el-section-break div {
${sectionBreakDescTypoStylesTab}
${sectionBreakDescPaddingTab}
${sectionBreakDescMarginTab}
}
.${blockId}.eb-fluent-form-wrapper .ff_submit_btn_wrapper .ff-btn-submit {
${btnWidthType === "custom" ? submitBtnWidthTab : ""}
${submitBtnHeightTab}
}
.${blockId}.eb-fluent-form-wrapper .ff_submit_btn_wrapper .ff-btn-submit {
${submutBtnTypoStylesTab}
${submitBtnPaddingTab}
${submitBtnMarginTab}
${btnBdShadowStyesTab}
}
.${blockId}.eb-fluent-form-wrapper .ff_submit_btn_wrapper:hover .ff-btn-submit {
${btnBdShadowStylesHoverTab}
}
.${blockId}.eb-fluent-form-wrapper .ff-message-success {
${successTypoStylesTab}
${successBorderTab}
}
.${blockId}.eb-fluent-form-wrapper .ff-message-success:hover {
${successBorderHoverTab}
}
${
showErrorMessage
? `
.${blockId}.eb-fluent-form-wrapper .error.text-danger {
${errorTypoStylesTab}
${errorPaddingTab}
${errorMarginTab}
}
`
: ""
}
.${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox .ff-el-input--content input[type="checkbox"], .${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox .ff-el-input--content input[type="radio"] {
${checkboxWidthTab}
${checkboxHeightTab}
${checkboxBorderWidthTab}
}
.${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox .ff-el-form-check:not(:last-child) {
${checkboxSpaceTab}
}
.${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="checkbox"], .${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="checkbox"]:before {
${checkboxRadiusTab}
}
.${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="radio"], .${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="radio"]:before {
${radioRadiusTab}
}
.${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="checkbox"]:checked:before, .${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="radio"]:checked:before {
width: calc(${checkboxWidthTab.replace(
/\D/g,
""
)}px - ${checkboxBorderWidthTab.replace(/\D/g, "")}px*2);
height: calc(${checkboxHeightTab.replace(
/\D/g,
""
)}px - ${checkboxBorderWidthTab.replace(/\D/g, "")}px*2);
}
.${blockId}.eb-fluent-form-wrapper {
${formBackgroundColor ? `background: ${formBackgroundColor};` : ""}
}
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-default-subscription .ff-el-group .ff-btn-submit {
${submitBtnPositionTab}
}
`;
const mobileStyles = `
.${blockId}.eb-fluent-form-wrapper {
${formWidthMobile}
${formPaddingMobile}
${formMarginMobile}
${formBrdShaMobile}
}
.${blockId}.eb-fluent-form-wrapper:hover {
${formBrdShaHoverMobile}
}
.${blockId}.eb-fluent-form-wrapper .ff-el-group label {
${labelTypoStylesMobile}
}
.${blockId}.eb-fluent-form-wrapper input:not([type=radio]):not([type=checkbox]):not([type=submit]):not([type=button]):not([type=image]):not([type=file]), .${blockId}.eb-fluent-form-wrapper .ff-el-group textarea, .${blockId}.eb-fluent-form-wrapper .ff-el-group select.ff-el-form-control {
${inputTypoStylesMobile}
${inputTextIndentMobile}
${inpTxtPaddingMobile}
${inpTxtBrdShaMobile}
}
.${blockId}.eb-fluent-form-wrapper input:not([type=radio]):not([type=checkbox]):not([type=submit]):not([type=button]):not([type=image]):not([type=file]):hover, .${blockId}.eb-fluent-form-wrapper .ff-el-group textarea:hover, .${blockId}.eb-fluent-form-wrapper .ff-el-group select.ff-el-form-control:hover {
${inpTxtBrdShaHoverMobile}
}
.${blockId}.eb-fluent-form-wrapper input:not([type=radio]):not([type=checkbox]):not([type=submit]):not([type=button]):not([type=image]):not([type=file]), .${blockId}.eb-fluent-form-wrapper .ff-el-group select.ff-el-form-control {
${inputWidthMobile ? inputWidthMobile : ""}
${inputHeightMobile ? inputHeightMobile : ""}
}
.${blockId}.eb-fluent-form-wrapper .ff-el-group textarea {
${textareaWidthMobile ? textareaWidthMobile : ""}
${textareaHeightMobile ? textareaHeightMobile : ""}
}
.${blockId}.eb-fluent-form-wrapper .ff-el-group {
${inputTextSpaceMobile ? inputTextSpaceMobile : ""}
}
.${blockId}.eb-fluent-form-wrapper .ff-el-section-break .ff-el-section-title{
${sectionBreakTypoStylesMobile}
${sectionBreakLabelPaddingMobile}
${sectionBreakLabelMarginMobile}
}
.${blockId}.eb-fluent-form-wrapper .ff-el-section-break div {
${sectionBreakDescTypoStylesMobile}
${sectionBreakDescPaddingMobile}
${sectionBreakDescMarginMobile}
}
.${blockId}.eb-fluent-form-wrapper .ff_submit_btn_wrapper .ff-btn-submit {
${btnWidthType === "custom" ? submitBtnWidthMobile : ""}
${submitBtnHeightMobile}
}
.${blockId}.eb-fluent-form-wrapper .ff_submit_btn_wrapper .ff-btn-submit {
${submutBtnTypoStylesMobile}
}
.${blockId}.eb-fluent-form-wrapper .ff_submit_btn_wrapper .ff-btn-submit {
${submutBtnTypoStylesMobile}
${submitBtnPaddingMobile}
${submitBtnMarginMobile}
${btnBdShadowStyesMobile}
}
.${blockId}.eb-fluent-form-wrapper .ff_submit_btn_wrapper:hover .ff-btn-submit {
${btnBdShadowStylesHoverMobile}
}
.${blockId}.eb-fluent-form-wrapper .ff-message-success {
${successTypoStylesMobile}
${successBorderMobile}
}
.${blockId}.eb-fluent-form-wrapper .ff-message-success:hover {
${successBorderHoverMobile}
}
${
showErrorMessage
? `
.${blockId}.eb-fluent-form-wrapper .error.text-danger {
${errorTypoStylesMobile}
${errorPaddingMobile}
${errorMarginMobile}
}
`
: ""
}
.${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox .ff-el-input--content input[type="checkbox"], .${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox .ff-el-input--content input[type="radio"] {
${checkboxWidthMobile}
${checkboxHeightMobile}
${checkboxBorderWidthMobile}
}
.${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox .ff-el-form-check:not(:last-child) {
${checkboxSpaceMobile}
}
.${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="checkbox"], .${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="checkbox"]:before {
${checkboxRadiusMobile}
}
.${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="radio"], .${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="radio"]:before {
${radioRadiusMobile}
}
.${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="checkbox"]:checked:before, .${blockId}.eb-fluent-form-wrapper.eb-fluent-custom-radio-checkbox input[type="radio"]:checked:before {
width: calc(${checkboxWidthMobile.replace(
/\D/g,
""
)}px - ${checkboxBorderWidthMobile.replace(/\D/g, "")}px*2);
height: calc(${checkboxHeightMobile.replace(
/\D/g,
""
)}px - ${checkboxBorderWidthMobile.replace(/\D/g, "")}px*2);
}
.${blockId}.eb-fluent-form-wrapper.eb-fluentform-default-subscription .ff-el-group .ff-btn-submit {
${submitBtnPositionMobile}
}
`;
useEffect(() => {
// this useEffect is for creating an unique id for each block's unique className by a random unique number
const BLOCK_PREFIX = "eb-fluent-form";
duplicateBlockIdFix({
BLOCK_PREFIX,
blockId,
setAttributes,
select,
clientId,
});
// // this useEffect is for mimmiking css when responsive options clicked from wordpress's 'preview' button
// mimmikCssForPreviewBtnClick({
// domObj: document,
// select,
// });
}, []);
const blockProps = useBlockProps({
className: classnames(className, `eb-guten-block-main-parent-wrapper`),
});
// all css styles for large screen width (desktop/laptop) in strings ⬇
const desktopAllStyles = softMinifyCssStrings(`
${desktopStyles}
`);
// all css styles for Tab in strings ⬇
const tabAllStyles = softMinifyCssStrings(`
${tabStyles}
`);
// all css styles for Mobile in strings ⬇
const mobileAllStyles = softMinifyCssStrings(`
${mobileStyles}
`);
// Set All Style in "blockMeta" Attribute
useEffect(() => {
const styleObject = {
desktop: desktopAllStyles,
tab: tabAllStyles,
mobile: mobileAllStyles,
};
if (JSON.stringify(blockMeta) != JSON.stringify(styleObject)) {
setAttributes({ blockMeta: styleObject });
}
}, [attributes]);
// get template name for default form
let template_name =
FORM_FULL_LISTS &&
FORM_FULL_LISTS.map((obj) => {
return {
attr: obj.attr,
};
});
let wrapperClasses = ["eb-fluent-form-wrapper"];
// custom checkbox/radio button styles class
if (customCheckboxStyle) {
wrapperClasses.push("eb-fluent-custom-radio-checkbox");
}
const alignment = {
left: "eb-fluentform-alignment-left",
center: "eb-fluentform-alignment-center",
right: "eb-fluentform-alignment-right",
};
if (formAlignment in alignment) {
wrapperClasses.push(alignment[formAlignment]);
}
if (!showLabels) {
wrapperClasses.push("eb-fluentform-hide-labels");
}
if (!showPlaceholder) {
wrapperClasses.push("eb-fluentform-hide-placeholder");
}
if (!showErrorMessage) {
wrapperClasses.push("eb-fluentform-hide-errormessage");
}
if (
template_name &&
formId in template_name &&
template_name[formId].attr === "inline_subscription"
) {
wrapperClasses.push("eb-fluentform-default-subscription");
}
return (
<>
{isSelected && (
<Inspector
key="inspector"
attributes={attributes}
setAttributes={setAttributes}
/>
)}
<div {...blockProps}>
<style>
{`
${desktopAllStyles}
/* mimmikcssStart */
${resOption === "Tablet" ? tabAllStyles : " "}
${resOption === "Mobile" ? tabAllStyles + mobileAllStyles : " "}
/* mimmikcssEnd */
@media all and (max-width: 1024px) {
/* tabcssStart */
${softMinifyCssStrings(tabAllStyles)}
/* tabcssEnd */
}
@media all and (max-width: 767px) {
/* mobcssStart */
${softMinifyCssStrings(mobileAllStyles)}
/* mobcssEnd */
}
`}
</style>
<div className={`eb-parent-wrapper eb-parent-${blockId} ${classHook}`}>
<div className={`${blockId} ${wrapperClasses.join(" ")}`}>
{!is_fluent_form_active && (
<div>
<strong>Fluent Form</strong> is not installed/activated on
your site. Please install and activate{" "}
<a
href={
EssentialBlocksLocalize.eb_admin_url +
`plugin-install.php?s=fluentform&tab=search&type=term`
}
target="_blank"
>
Fluent Form
</a>{" "}
first.
</div>
)}
{is_fluent_form_active && !formId && (
<Placeholder
className={"eb-fluent-form-choose-placeholder"}
label={__("Fluent Form", "essential-blocks")}
>
<SelectControl
value={formId}
options={FORM_LISTS}
onChange={(newFormId) =>
setAttributes({ formId: newFormId })
}
/>
</Placeholder>
)}
{is_fluent_form_active && formId && (
<ServerSideRender
className="eb-fluent-form-rendered"
block="fluentfom/guten-block"
attributes={{ formId: formId }}
/>
)}
</div>
</div>
</div>
</>
);
};
export default edit;