<?php
/**
* UAGB faq.
*
* @package UAGB
* @since 2.13.5
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
if ( ! class_exists( 'UAGB_Faq' ) ) {
/**
* Class UAGB_Faq.
*
* @since 2.13.5
*/
class UAGB_Faq {
/**
* Member Variable
*
* @var UAGB_Faq
* @since 2.13.5
*/
private static $instance;
/**
* Initiator
*
* @return UAGB_Faq
* @since 2.13.5
*/
public static function get_instance() {
if ( null === self::$instance ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Constructor
*
* @since 2.13.5
*/
public function __construct() {
add_action( 'init', array( $this, 'register_blocks' ) );
}
/**
* Registers the `faq` block on server.
*
* @since 2.13.5
* @return void
*/
public function register_blocks() {
register_block_type(
'uagb/faq',
array(
'attributes' => array(
'block_id' => array(
'type' => 'string',
),
'anchor' => array(
'type' => 'string',
'default' => '',
),
'layout' => array(
'type' => 'string',
'default' => 'accordion',
),
'inactiveOtherItems' => array(
'type' => 'boolean',
'default' => true,
),
'expandFirstItem' => array(
'type' => 'boolean',
'default' => true,
),
'enableSchemaSupport' => array(
'type' => 'boolean',
'default' => false,
),
'align' => array(
'type' => 'string',
'default' => 'left',
'UAGCopyPaste' => array(
'styleType' => 'overall-alignment',
),
),
'blockTopPadding' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-top-padding',
),
),
'blockRightPadding' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-right-padding',
),
),
'blockLeftPadding' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-left-padding',
),
),
'blockBottomPadding' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-bottom-padding',
),
),
'blockTopPaddingTablet' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-top-padding-tablet',
),
),
'blockRightPaddingTablet' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-right-padding-tablet',
),
),
'blockLeftPaddingTablet' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-left-padding-tablet',
),
),
'blockBottomPaddingTablet' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-bottom-padding-tablet',
),
),
'blockTopPaddingMobile' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-top-padding-mobile',
),
),
'blockRightPaddingMobile' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-right-padding-mobile',
),
),
'blockLeftPaddingMobile' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-left-padding-mobile',
),
),
'blockBottomPaddingMobile' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-bottom-padding-mobile',
),
),
'blockPaddingUnit' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'block-padding-unit',
),
),
'blockPaddingUnitTablet' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'block-padding-unit-tablet',
),
),
'blockPaddingUnitMobile' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'block-padding-unit-mobile',
),
),
'blockPaddingLink' => array(
'type' => 'boolean',
'default' => true,
),
'blockTopMargin' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-top-margin',
),
),
'blockRightMargin' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-right-margin',
),
),
'blockLeftMargin' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-left-margin',
),
),
'blockBottomMargin' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-bottom-margin',
),
),
'blockTopMarginTablet' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-top-margin-tablet',
),
),
'blockRightMarginTablet' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-right-margin-tablet',
),
),
'blockLeftMarginTablet' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-left-margin-tablet',
),
),
'blockBottomMarginTablet' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-bottom-margin-tablet',
),
),
'blockTopMarginMobile' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-top-margin-mobile',
),
),
'blockRightMarginMobile' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-right-margin-mobile',
),
),
'blockLeftMarginMobile' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-left-margin-mobile',
),
),
'blockBottomMarginMobile' => array(
'type' => 'number',
'isGBSStyle' => true,
'UAGCopyPaste' => array(
'styleType' => 'block-bottom-margin-mobile',
),
),
'blockMarginUnit' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'block-margin-unit',
),
),
'blockMarginUnitTablet' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'block-margin-unit-tablet',
),
),
'blockMarginUnitMobile' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'block-margin-unit-mobile',
),
),
'blockMarginLink' => array(
'type' => 'boolean',
'default' => true,
),
'enableSeparator' => array(
'type' => 'boolean',
'default' => false,
'UAGCopyPaste' => array(
'styleType' => 'enable-separator',
),
),
'rowsGap' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'row-gap',
),
),
'rowsGapTablet' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'row-gap-tablet',
),
),
'rowsGapMobile' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'row-gap-mobile',
),
),
'rowsGapUnit' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'row-gap-type',
),
),
'columnsGap' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'column-gap',
),
),
'columnsGapTablet' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'column-gap-tablet',
),
),
'columnsGapMobile' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'column-gap-mobile',
),
),
'columnsGapUnit' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'column-gap-type',
),
),
'boxBgType' => array(
'type' => 'string',
'default' => 'color',
'UAGCopyPaste' => array(
'styleType' => 'faq-bg-type',
),
),
'boxBgHoverType' => array(
'type' => 'string',
'default' => 'color',
'UAGCopyPaste' => array(
'styleType' => 'faq-bg-hover-type',
),
),
'boxBgColor' => array(
'type' => 'string',
'default' => '',
'UAGCopyPaste' => array(
'styleType' => 'faq-bg-color',
),
),
'boxBgHoverColor' => array(
'type' => 'string',
'default' => '',
'UAGCopyPaste' => array(
'styleType' => 'faq-bg-hover-color',
),
),
'boxPaddingTypeMobile' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'faq-padding-type-mobile',
),
'default' => 'px',
),
'boxPaddingTypeTablet' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'faq-padding-type-tablet',
),
),
'boxPaddingTypeDesktop' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'faq-padding-type-desktop',
),
),
'vBoxPaddingMobile' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'faq-vertical-padding-mobile',
),
),
'hBoxPaddingMobile' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'faq-horizontal-padding-mobile',
),
),
'vBoxPaddingTablet' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'faq-vertical-padding-tablet',
),
),
'hBoxPaddingTablet' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'faq-horizontal-padding-tablet',
),
),
'vBoxPaddingDesktop' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'faq-vertical-padding-desktop',
),
),
'hBoxPaddingDesktop' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'faq-horizontal-padding-desktop',
),
),
'borderHoverColor' => array(
'type' => 'string',
),
'borderStyle' => array(
'type' => 'string',
'default' => 'solid',
),
'borderWidth' => array(
'type' => 'number',
'default' => 1,
),
'borderRadius' => array(
'type' => 'number',
'default' => 2,
),
'borderColor' => array(
'type' => 'string',
'default' => '#D2D2D2',
),
'questionTextColor' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'main-title-color',
),
),
'questionTextActiveColor' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'main-title-hover-color',
),
),
'questionTextBgColor' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'main-title-bg-color',
),
),
'questionTextActiveBgColor' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'main-title-hover-bg-color',
),
),
'questionPaddingTypeDesktop' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'main-title-padding-type-desktop',
),
'default' => 'px',
),
'questionPaddingTypeTablet' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'main-title-padding-type-tablet',
),
'default' => 'px',
),
'questionPaddingTypeMobile' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'main-title-padding-type-mobile',
),
'default' => 'px',
),
'vquestionPaddingMobile' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'main-title-vertical-padding-mobile',
),
'default' => 10,
),
'vquestionPaddingTablet' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'main-title-vertical-padding-tablet',
),
'default' => 10,
),
'vquestionPaddingDesktop' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'main-title-vertical-padding-desktop',
),
'default' => 10,
),
'hquestionPaddingMobile' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'main-title-horizontal-padding-mobile',
),
'default' => 10,
),
'hquestionPaddingTablet' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'main-title-horizontal-padding-tablet',
),
'default' => 10,
),
'hquestionPaddingDesktop' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'main-title-horizontal-padding-desktop',
),
'default' => 10,
),
'answerTextColor' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'desc-color',
),
),
'answerPaddingTypeDesktop' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'desc-padding-type-desktop',
),
),
'answerPaddingTypeTablet' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'desc-padding-type-tablet',
),
),
'answerPaddingTypeMobile' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'desc-padding-type-mobile',
),
),
'vanswerPaddingMobile' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'desc-vertical-padding-mobile',
),
'default' => 10,
),
'vanswerPaddingTablet' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'desc-vertical-padding-tablet',
),
'default' => 10,
),
'iconBgSize' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'icon-bg-size',
),
),
'iconBgSizeTablet' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'icon-bg-size-tablet',
),
),
'iconBgSizeMobile' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'icon-bg-size-mobile',
),
),
'iconBgSizeType' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'icon-bg-size-type',
),
),
'columns' => array(
'type' => 'number',
'default' => 2,
'UAGCopyPaste' => array(
'styleType' => 'column-count',
),
),
'tcolumns' => array(
'type' => 'number',
'default' => 2,
'UAGCopyPaste' => array(
'styleType' => 'column-count-tablet',
),
),
'mcolumns' => array(
'type' => 'number',
'default' => 1,
'UAGCopyPaste' => array(
'styleType' => 'column-count-mobile',
),
),
'schema' => array(
'type' => 'string',
'default' => '',
),
'enableToggle' => array(
'type' => 'boolean',
'default' => true,
),
'equalHeight' => array(
'type' => 'boolean',
'default' => true,
'UAGCopyPaste' => array(
'styleType' => 'equal-height',
),
),
'questionLeftPaddingTablet' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'main-title-left-padding-tablet',
),
),
'questionBottomPaddingTablet' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'main-title-bottom-padding-tablet',
),
),
'questionLeftPaddingDesktop' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'main-title-left-padding-desktop',
),
),
'questionBottomPaddingDesktop' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'main-title-bottom-padding-desktop',
),
),
'questionLeftPaddingMobile' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'main-title-left-padding-mobile',
),
),
'questionBottomPaddingMobile' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'main-title-bottom-padding-mobile',
),
),
'headingTag' => array(
'type' => 'string',
'selector' => 'span,p,h1,h2,h3,h4,h5,h6',
'default' => 'span',
),
'questionSpacingLink' => array(
'type' => 'boolean',
'default' => false,
),
'answerSpacingLink' => array(
'type' => 'boolean',
'default' => false,
),
'answerTopPadding' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'desc-top-padding',
),
),
'answerRightPadding' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'desc-right-padding',
),
),
'answerBottomPadding' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'desc-bottom-padding',
),
),
'answerLeftPadding' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'desc-left-padding',
),
),
'answerTopPaddingTablet' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'desc-top-padding-tablet',
),
),
'answerRightPaddingTablet' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'desc-right-padding-tablet',
),
),
'answerBottomPaddingTablet' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'desc-bottom-padding-tablet',
),
),
'answerLeftPaddingTablet' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'desc-left-padding-tablet',
),
),
'answerTopPaddingMobile' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'desc-top-padding-mobile',
),
),
'answerRightPaddingMobile' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'desc-right-padding-mobile',
),
),
'answerBottomPaddingMobile' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'desc-bottom-padding-mobile',
),
),
'answerLeftPaddingMobile' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'desc-left-padding-mobile',
),
),
'isPreview' => array(
'type' => 'boolean',
'default' => false,
),
'questionLetterSpacing' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'main-title-letter-spacing',
),
),
'questionLetterSpacingTablet' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'main-title-letter-spacing-tablet',
),
),
'questionLetterSpacingMobile' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'main-title-letter-spacing-mobile',
),
),
'questionLetterSpacingType' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'main-title-letter-spacing-type',
),
),
'answerLetterSpacing' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'desc-letter-spacing',
),
),
'answerLetterSpacingTablet' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'desc-letter-spacing-tablet',
),
),
'answerLetterSpacingMobile' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'desc-letter-spacing-mobile',
),
),
'answerLetterSpacingType' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'desc-letter-spacing-type',
),
),
'iconBgColor' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'icon-bg-color',
),
),
'iconColor' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'icon-color',
),
),
'iconActiveColor' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'icon-hover-color',
),
),
'gapBtwIconQUestion' => array(
'type' => 'number',
'default' => 10,
'UAGCopyPaste' => array(
'styleType' => 'icon-spacing',
),
),
'gapBtwIconQUestionTablet' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'icon-spacing-tablet',
),
),
'gapBtwIconQUestionMobile' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'icon-spacing-mobile',
),
),
'questionloadGoogleFonts' => array(
'type' => 'boolean',
'default' => false,
'UAGCopyPaste' => array(
'styleType' => 'main-title-load-google-fonts',
),
),
'answerloadGoogleFonts' => array(
'type' => 'boolean',
'UAGCopyPaste' => array(
'styleType' => 'desc-load-google-fonts',
),
'default' => false,
),
'questionFontFamily' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'main-title-font-family',
),
'default' => 'Default',
),
'questionFontWeight' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'main-title-font-weight',
),
),
'questionFontStyle' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'main-title-font-style',
),
'default' => 'normal',
),
'questionTransform' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'main-title-transform',
),
),
'questionDecoration' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'main-title-decoration',
),
),
'questionFontSize' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'main-title-font-size',
),
),
'questionFontSizeType' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'main-title-font-size-type',
),
'default' => 'px',
),
'questionFontSizeTablet' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'main-title-font-size-tablet',
),
),
'questionFontSizeMobile' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'main-title-font-size-mobile',
),
),
'questionLineHeight' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'main-title-line-height',
),
),
'questionLineHeightType' => array(
'type' => 'string',
'default' => 'em',
'UAGCopyPaste' => array(
'styleType' => 'main-title-line-height-type',
),
),
'questionLineHeightTablet' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'main-title-line-height-tablet',
),
),
'questionLineHeightMobile' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'main-title-line-height-mobile',
),
),
'answerFontFamily' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'desc-font-family',
),
'default' => 'Default',
),
'answerFontWeight' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'desc-font-weight',
),
),
'answerFontStyle' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'desc-font-style',
),
'default' => 'normal',
),
'answerTransform' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'desc-transform',
),
),
'answerDecoration' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'desc-decoration',
),
),
'answerFontSize' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'desc-font-size',
),
),
'answerFontSizeType' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'desc-font-size-type',
),
'default' => 'px',
),
'answerFontSizeTablet' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'desc-font-size-tablet',
),
),
'answerFontSizeMobile' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'desc-font-size-mobile',
),
),
'answerLineHeight' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'desc-line-height',
),
),
'answerLineHeightType' => array(
'type' => 'string',
'UAGCopyPaste' => array(
'styleType' => 'desc-line-height-type',
),
'default' => 'em',
),
'answerLineHeightTablet' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'desc-line-height-tablet',
),
),
'answerLineHeightMobile' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'desc-line-height-mobile',
),
),
'icon' => array(
'type' => 'string',
'default' => 'plus',
),
'iconActive' => array(
'type' => 'string',
'default' => 'minus',
),
'iconAlign' => array(
'type' => 'string',
'default' => 'row',
'UAGCopyPaste' => array(
'styleType' => 'icon-align',
),
),
'iconSize' => array(
'type' => 'number',
'default' => 12,
'UAGCopyPaste' => array(
'styleType' => 'icon-size',
),
),
'iconSizeTablet' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'icon-size-tablet',
),
),
'iconSizeMobile' => array(
'type' => 'number',
'UAGCopyPaste' => array(
'styleType' => 'icon-size-mobile',
),
),
'iconSizeType' => array(
'type' => 'string',
'default' => 'px',
'UAGCopyPaste' => array(
'styleType' => 'icon-size-type',
),
),
'question' => array(
'type' => 'string',
'default' => __( 'What is FAQ?', 'ultimate-addons-for-gutenberg' ),
),
'answer' => array(
'type' => 'string',
'default' => __(
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
'ultimate-addons-for-gutenberg'
),
),
),
'render_callback' => array( $this, 'render_faq_block' ),
)
);
register_block_type(
'uagb/faq-child',
array(
'attributes' => array(
'isPreview' => array(
'type' => 'boolean',
'default' => false,
),
'block_id' => array(
'type' => 'string',
),
'anchor' => array(
'type' => 'string',
'default' => '',
),
'question' => array(
'type' => 'string',
'default' => __( 'What is FAQ?', 'ultimate-addons-for-gutenberg' ),
),
'answer' => array(
'type' => 'string',
'default' => __(
'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
'ultimate-addons-for-gutenberg'
),
),
'icon' => array(
'type' => 'string',
'default' => 'plus',
),
'iconActive' => array(
'type' => 'string',
'default' => 'minus',
),
'layout' => array(
'type' => 'string',
'default' => 'accordion',
),
'headingTag' => array(
'type' => 'string',
'selector' => 'span,p,h1,h2,h3,h4,h5,h6',
'default' => 'span',
),
),
'render_callback' => array( $this, 'render_faq_child_block' ),
)
);
}
/**
* Renders the UAGB FAQ block.
*
* @param array $attributes Block attributes.
* @param string $content Block default content.
* @param WP_Block $block Block instance.
* @since 2.13.5
* @return string Rendered block HTML.
*/
public function render_faq_block( $attributes, $content, $block ) {
global $post; // Use the global post object to get the current post.
$block_id = isset( $attributes['block_id'] ) ? $attributes['block_id'] : '';
$enable_schema = $attributes['enableSchemaSupport'];
$equal_height = $attributes['equalHeight'];
$icon_align = $attributes['iconAlign'];
$layout = $attributes['layout'];
$expand_first_item = ( true === $attributes['expandFirstItem'] ) ? 'uagb-faq-expand-first-true' : 'uagb-faq-expand-first-false';
$inactive_other_item = ( true === $attributes['inactiveOtherItems'] ) ? 'uagb-faq-inactive-other-true' : 'uagb-faq-inactive-other-false';
$enable_toggle = isset( $attributes['enableToggle'] ) ? 'true' : 'false';
$anchor = ( isset( $attributes['anchor'] ) ) ? $attributes['anchor'] : '';
$anchor = empty( $anchor ) ? '' : 'id="' . esc_attr( $anchor ) . '"';
// Get the current page URL.
$page_url = get_permalink( $post );
// Initialize the schema JSON structure.
$json_data = array(
'@context' => 'https://schema.org',
'@type' => 'FAQPage',
'@id' => $page_url,
'mainEntity' => array(),
);
// Collect data from inner blocks for the schema.
$inner_blocks_html = '';
foreach ( $block->inner_blocks as $inner_block ) {
if ( is_object( $inner_block ) && method_exists( $inner_block, 'render' ) ) {
$inner_blocks_html .= $inner_block->render();
// Assuming inner blocks have 'question' and 'answer' attributes.
if ( isset( $inner_block->attributes['question'] ) && isset( $inner_block->attributes['answer'] ) ) {
$faq_data = array(
'@type' => 'Question',
'name' => $inner_block->attributes['question'],
'acceptedAnswer' => array(
'@type' => 'Answer',
'text' => $inner_block->attributes['answer'],
),
);
$json_data['mainEntity'][] = $faq_data;
}
}
}
// Render schema if enabled.
$schema_output = '';
if ( $enable_schema && ! empty( $json_data['mainEntity'] ) ) {
$schema_output = '<script type="application/ld+json">' . wp_json_encode( $json_data ) . '</script>';
}
// Add equal height class if enabled.
$equal_height_class = $equal_height ? 'uagb-faq-equal-height' : '';
$desktop_class = '';
$tab_class = '';
$mob_class = '';
if ( array_key_exists( 'UAGHideDesktop', $attributes ) || array_key_exists( 'UAGHideTab', $attributes ) || array_key_exists( 'UAGHideMob', $attributes ) ) {
$desktop_class = ( isset( $attributes['UAGHideDesktop'] ) ) ? 'uag-hide-desktop' : '';
$tab_class = ( isset( $attributes['UAGHideTab'] ) ) ? 'uag-hide-tab' : '';
$mob_class = ( isset( $attributes['UAGHideMob'] ) ) ? 'uag-hide-mob' : '';
}
$zindex_desktop = '';
$zindex_tablet = '';
$zindex_mobile = '';
$zindex_wrap = array();
$zindex_extension_enabled = ( isset( $attributes['zIndex'] ) || isset( $attributes['zIndexTablet'] ) || isset( $attributes['zIndexMobile'] ) );
if ( $zindex_extension_enabled ) {
$zindex_desktop = ( isset( $attributes['zIndex'] ) ) ? '--z-index-desktop:' . $attributes['zIndex'] . ';' : false;
$zindex_tablet = ( isset( $attributes['zIndexTablet'] ) ) ? '--z-index-tablet:' . $attributes['zIndexTablet'] . ';' : false;
$zindex_mobile = ( isset( $attributes['zIndexMobile'] ) ) ? '--z-index-mobile:' . $attributes['zIndexMobile'] . ';' : false;
if ( $zindex_desktop ) {
array_push( $zindex_wrap, $zindex_desktop );
}
if ( $zindex_tablet ) {
array_push( $zindex_wrap, $zindex_tablet );
}
if ( $zindex_mobile ) {
array_push( $zindex_wrap, $zindex_mobile );
}
}
$zindex = $zindex_extension_enabled ? 'uag-blocks-common-selector' : '';
$class_name = ( isset( $attributes['className'] ) ) ? $attributes['className'] : '';
// Build the block's HTML.
$output = '<div class="' . esc_attr( "wp-block-uagb-faq uagb-faq__outer-wrap uagb-block-{$block_id} uagb-faq-icon-{$icon_align} uagb-faq-layout-{$layout} {$expand_first_item} {$inactive_other_item} uagb-faq__wrap uagb-buttons-layout-wrap {$equal_height_class} {$desktop_class} {$tab_class} {$mob_class} {$zindex} {$class_name}" ) . '" ' . $anchor . 'data-faqtoggle="' . esc_attr( $enable_toggle ) . '" role="tablist">';
$output .= $schema_output;
$output .= $inner_blocks_html;
$output .= '</div>';
return $output;
}
/**
* Render faq icon function.
*
* @param string $icon Icon name.
* @param string $class Icon class.
* @since 2.13.5
* @return string|false Rendered icon HTML.
*/
public function faq_render_icon( $icon, $class ) {
ob_start();
?>
<span class="<?php echo esc_attr( $class ); ?> uagb-faq-icon-wrap">
<?php
echo UAGB_Helper::render_svg_html( $icon ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Already escaped & sanitize inside render_svg_html().
?>
</span>
<?php
return ob_get_clean();
}
/**
* Renders the UAGB FAQ child block.
*
* @param array $attributes Block attributes.
* @param string $content Block default content.
* @param WP_Block $block Block instance.
* @since 2.13.5
* @return string Rendered block HTML.
*/
public function render_faq_child_block( $attributes, $content, $block ) {
// Extract attributes.
$block_id = isset( $attributes['block_id'] ) ? $attributes['block_id'] : '';
$question = $attributes['question'];
$answer = $attributes['answer'];
$icon = isset( $attributes['icon'] ) ? $attributes['icon'] : 'plus';
$icon_active = isset( $attributes['iconActive'] ) ? $attributes['iconActive'] : 'minus';
$layout = $attributes['layout'];
$array_of_allowed_HTML = array( 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'span', 'p' );
$heading_tag = UAGB_Helper::title_tag_allowed_html( $attributes['headingTag'], $array_of_allowed_HTML, 'span' );
// Render icon and active icon.
$icon_output = $this->faq_render_icon( $icon, 'uagb-icon' );
$icon_active_output = $this->faq_render_icon( $icon_active, 'uagb-icon-active' );
$class_name = ( isset( $attributes['className'] ) ) ? $attributes['className'] : '';
$anchor = ( isset( $attributes['anchor'] ) ) ? $attributes['anchor'] : '';
$anchor = empty( $anchor ) ? '' : 'id="' . esc_attr( $anchor ) . '"';
// Build the block's HTML.
$output = '<div class="' . esc_attr( "wp-block-uagb-faq-child uagb-faq-child__outer-wrap uagb-faq-item uagb-block-{$block_id} {$class_name}" ) . '" ' . $anchor . 'role="tab" tabindex="0">';
$output .= '<div class="uagb-faq-questions-button uagb-faq-questions">';
if ( 'accordion' === $layout ) {
$output .= $icon_output;
$output .= $icon_active_output;
$output .= '<' . esc_attr( $heading_tag ) . ' class="uagb-question">' . wp_kses_post( $question ) . '</' . esc_attr( $heading_tag ) . '>';
} else {
$output .= '<' . esc_attr( $heading_tag ) . ' class="uagb-question">' . wp_kses_post( $question ) . '</' . esc_attr( $heading_tag ) . '>';
}
$output .= '</div>';
$output .= '<div class="uagb-faq-content"><p>' . wp_kses_post( $answer ) . '</p></div>';
$output .= '</div>';
return $output;
}
}
/**
* Prepare if class 'UAGB_Faq' exist.
* Kicking this off by calling 'get_instance()' method
*/
UAGB_Faq::get_instance();
}