HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/confeduphaar/www/wp-content/plugins/essential-blocks/src/blocks/pricing-table/src/save.js
/**
 * WordPress dependencies
 */
import {
    EBDisplayIcon, sanitizeURL, BlockProps
} from "@essential-blocks/controls";

const Save = ({ attributes }) => {
    const {
        blockId,
        pricingStyle,
        title,
        showSubtitle,
        subtitle,
        showHeaderIcon,
        headerIcon,
        mainPrice,
        showOnSale,
        salePrice,
        priceCurrency,
        currencyPlacement,
        pricePeriod,
        periodSeparator,
        hideFeatures,
        features,
        showButton,
        buttonIcon,
        buttonIconPosition,
        buttonText,
        buttonURL,
        contentAlign,
        showRibbon,
        ribbonStyle,
        classHook,
        ribbonAlignHorizontal = "right",
        ribbonAlignVertical = "top",
        newWindow,
        showFeatureLine = true,
        showBlockContent,
        showFeatureIcon,
        titleTagName
    } = attributes;

    if (!showBlockContent) {
        return
    }

    // ribbon Class
    const ribbonClass = showRibbon ? ` featured ${ribbonStyle}` : "";
    const TitleTagName = titleTagName;

    return (
        <BlockProps.Save attributes={attributes}>
            <div className={`eb-parent-wrapper eb-parent-${blockId} ${classHook}`}>
                <div className={`${blockId} eb-pricing-wrapper eb-pricing-content-${contentAlign}`}>
                    <div className={`eb-pricing ${pricingStyle}`}>
                        <div
                            className={`eb-pricing-item${ribbonClass}${showRibbon
                                ? ribbonStyle !== "ribbon-1"
                                    ? " " + ribbonAlignHorizontal
                                    : " " + ribbonAlignVertical
                                : ""
                                }`}
                        >
                            <div className="eb-pricing-item-overlay"></div>

                            {pricingStyle == "style-4" && (
                                <>
                                    <div className="eb-pricing-top">
                                        {showHeaderIcon && (
                                            <div className="eb-pricing-icon" data-icon={headerIcon}>
                                                <EBDisplayIcon className={`icon`} icon={headerIcon} />
                                            </div>
                                        )}
                                        <div className="eb-pricing-tag">
                                            <span className="price-tag">
                                                <span
                                                    className={`original-price${showOnSale === true ? " line-through" : ""
                                                        }`}
                                                    data-price={mainPrice}
                                                >
                                                    {currencyPlacement === "left" && (
                                                        <span className="price-currency">{priceCurrency}</span>
                                                    )}
                                                    {mainPrice}
                                                    {currencyPlacement === "right" && (
                                                        <span className="price-currency">{priceCurrency}</span>
                                                    )}
                                                </span>

                                                {showOnSale && (
                                                    <>
                                                        <span className="sale-price" data-sale-price={salePrice}>
                                                            {currencyPlacement === "left" && (
                                                                <span className="price-currency">{priceCurrency}</span>
                                                            )}
                                                            {salePrice}
                                                            {currencyPlacement === "right" && (
                                                                <span className="price-currency">{priceCurrency}</span>
                                                            )}
                                                        </span>
                                                    </>
                                                )}
                                            </span>
                                            <span
                                                className="price-period"
                                                data-period-separator={periodSeparator}
                                                data-price-period={pricePeriod}
                                            >
                                                {periodSeparator} {pricePeriod}
                                            </span>
                                        </div>

                                        <div className="eb-pricing-header">
                                            <TitleTagName className="eb-pricing-title">{title}</TitleTagName>
                                            {showSubtitle && <span className="eb-pricing-subtitle">{subtitle}</span>}
                                        </div>
                                    </div>
                                    <div className="eb-pricing-bottom">
                                        {hideFeatures !== true && (
                                            <>
                                                <div className="eb-pricing-body">
                                                    <ul
                                                        className={`eb-pricebox-features ${showFeatureLine ? "" : "no-border"
                                                            }`}
                                                    >
                                                        {features.map(
                                                            ({ icon, text, color, clickable, link }, index) => (
                                                                <li
                                                                    key={index}
                                                                    className="eb-pricebox-feature-item"
                                                                    data-icon={icon}
                                                                    data-color={color}
                                                                    data-clickable={clickable}
                                                                    data-link={link}
                                                                >
                                                                    {clickable && link ? (
                                                                        <a href={sanitizeURL(link)}>
                                                                            <EBDisplayIcon
                                                                                className={`eb-pricebox-icon`}
                                                                                icon={icon}
                                                                                style={{ color: color }}
                                                                            />
                                                                            <span className="eb-pricebox-feature-text">
                                                                                {text}
                                                                            </span>
                                                                        </a>
                                                                    ) : (
                                                                        <>
                                                                            {showFeatureIcon && (
                                                                                <EBDisplayIcon
                                                                                    className={`eb-pricebox-icon`}
                                                                                    icon={icon}
                                                                                    style={{ color: color }}
                                                                                />
                                                                            )}
                                                                            <span className="eb-pricebox-feature-text">
                                                                                {text}
                                                                            </span>
                                                                        </>
                                                                    )}
                                                                </li>
                                                            )
                                                        )}
                                                    </ul>
                                                </div>
                                            </>
                                        )}

                                        {showButton && (
                                            <div className="eb-pricing-footer" data-icon={buttonIcon}>
                                                <div className="eb-pricing-button-wrapper">
                                                    <a
                                                        href={buttonURL == '#' ? '' : sanitizeURL(buttonURL)}
                                                        {...(newWindow && { target: "_blank" })}
                                                        className="eb-pricing-button"
                                                    >
                                                        {buttonIconPosition === "left" && (
                                                            <EBDisplayIcon icon={buttonIcon} />
                                                        )}
                                                        <span className="eb-button-text">{buttonText}</span>
                                                        {buttonIconPosition === "right" && (
                                                            <EBDisplayIcon icon={buttonIcon} />
                                                        )}
                                                    </a>
                                                </div>
                                            </div>
                                        )}
                                    </div>
                                </>
                            )}

                            {pricingStyle !== "style-4" && (
                                <>
                                    {showHeaderIcon && (
                                        <div className="eb-pricing-icon" data-icon={headerIcon}>
                                            <EBDisplayIcon className={`icon`} icon={headerIcon} />
                                        </div>
                                    )}
                                    <div className="eb-pricing-header">
                                        <TitleTagName className="eb-pricing-title">{title}</TitleTagName>
                                        {showSubtitle && <span className="eb-pricing-subtitle">{subtitle}</span>}
                                    </div>
                                    {pricingStyle !== "style-3" && (
                                        <div className="eb-pricing-tag">
                                            <span className="price-tag">
                                                <span
                                                    className={`original-price${showOnSale === true ? " line-through" : ""
                                                        }`}
                                                    data-price={mainPrice}
                                                >
                                                    {currencyPlacement === "left" && (
                                                        <span className="price-currency">{priceCurrency}</span>
                                                    )}
                                                    {mainPrice}
                                                    {currencyPlacement === "right" && (
                                                        <span className="price-currency">{priceCurrency}</span>
                                                    )}
                                                </span>

                                                {showOnSale && (
                                                    <>
                                                        <span className="sale-price" data-sale-price={salePrice}>
                                                            {currencyPlacement === "left" && (
                                                                <span className="price-currency">{priceCurrency}</span>
                                                            )}
                                                            {salePrice}
                                                            {currencyPlacement === "right" && (
                                                                <span className="price-currency">{priceCurrency}</span>
                                                            )}
                                                        </span>
                                                    </>
                                                )}
                                            </span>
                                            <span
                                                className="price-period"
                                                data-period-separator={periodSeparator}
                                                data-price-period={pricePeriod}
                                            >
                                                {periodSeparator} {pricePeriod}
                                            </span>
                                        </div>
                                    )}
                                    {hideFeatures !== true && (
                                        <>
                                            <div className="eb-pricing-body">
                                                <ul
                                                    className={`eb-pricebox-features ${showFeatureLine ? "" : "no-border"
                                                        }`}
                                                >
                                                    {features.map(({ icon, text, color, clickable, link }, index) => (
                                                        <li
                                                            key={index}
                                                            className="eb-pricebox-feature-item"
                                                            data-icon={icon}
                                                            data-color={color}
                                                            data-clickable={clickable}
                                                            data-link={link}
                                                        >
                                                            {clickable && link ? (
                                                                <a href={sanitizeURL(link)}>
                                                                    <EBDisplayIcon
                                                                        className={`eb-pricebox-icon`}
                                                                        icon={icon}
                                                                        style={{ color: color }}
                                                                    />
                                                                    <span className="eb-pricebox-feature-text">
                                                                        {text}
                                                                    </span>
                                                                </a>
                                                            ) : (
                                                                <>
                                                                    {showFeatureIcon && (
                                                                        <EBDisplayIcon
                                                                            className={`eb-pricebox-icon`}
                                                                            icon={icon}
                                                                            style={{ color: color }}
                                                                        />
                                                                    )}
                                                                    <span className="eb-pricebox-feature-text">
                                                                        {text}
                                                                    </span>
                                                                </>
                                                            )}
                                                        </li>
                                                    ))}
                                                </ul>
                                            </div>
                                        </>
                                    )}
                                    {pricingStyle === "style-3" && (
                                        <div className="eb-pricing-tag">
                                            <span className="price-tag">
                                                <span
                                                    className={`original-price${showOnSale === true ? " line-through" : ""
                                                        }`}
                                                    data-price={mainPrice}
                                                >
                                                    {currencyPlacement === "left" && (
                                                        <span className="price-currency">{priceCurrency}</span>
                                                    )}
                                                    {mainPrice}
                                                    {currencyPlacement === "right" && (
                                                        <span className="price-currency">{priceCurrency}</span>
                                                    )}
                                                </span>

                                                {showOnSale && (
                                                    <>
                                                        <span className="sale-price" data-sale-price={salePrice}>
                                                            {currencyPlacement === "left" && (
                                                                <span className="price-currency">{priceCurrency}</span>
                                                            )}
                                                            {salePrice}
                                                            {currencyPlacement === "right" && (
                                                                <span className="price-currency">{priceCurrency}</span>
                                                            )}
                                                        </span>
                                                    </>
                                                )}
                                            </span>
                                            <span
                                                className="price-period"
                                                data-period-separator={periodSeparator}
                                                data-price-period={pricePeriod}
                                            >
                                                {periodSeparator} {pricePeriod}
                                            </span>
                                        </div>
                                    )}
                                    {showButton && (
                                        <div className="eb-pricing-footer" data-icon={buttonIcon}>
                                            <div className="eb-pricing-button-wrapper">
                                                <a
                                                    href={buttonURL == '#' ? '' : sanitizeURL(buttonURL)}
                                                    {...(newWindow && { target: "_blank" })}
                                                    className="eb-pricing-button"
                                                >
                                                    {buttonIconPosition === "left" && (
                                                        <EBDisplayIcon icon={buttonIcon} />
                                                    )}
                                                    <span className="eb-button-text">{buttonText}</span>
                                                    {buttonIconPosition === "right" && (
                                                        <EBDisplayIcon icon={buttonIcon} />
                                                    )}
                                                </a>
                                            </div>
                                        </div>
                                    )}
                                </>
                            )}
                        </div>
                    </div>
                </div>
            </div>
        </BlockProps.Save>
        // edit view end
    );
};
export default Save;