| Current Path : /home/x/b/o/xbodynamge/namtation/wp-content/ |
| Current File : /home/x/b/o/xbodynamge/namtation/wp-content/pricing-table.php.tar |
plugins/themeisle-companion/obfx_modules/beaver-widgets/modules/pricing-table/pricing-table.php 0000644 00000043354 15114543452 0037005 0 ustar 00 home/xbodynamge/lebauwcentre/wp-content <?php
/**
* Pricing table module.
*
* @package themeisle-companion
*/
// Get the module directory.
$module_directory = $this->get_dir();
// Include common functions file.
require_once( $module_directory . '/inc/common-functions.php' );
// Include custom fields
require_once( $module_directory . '/custom-fields/toggle-field/toggle_field.php' );
/**
* Class PricingTableModule
*/
class PricingTableModule extends FLBuilderModule {
/**
* Constructor function for the module. You must pass the
* name, description, dir and url in an array to the parent class.
*
* @method __construct
*/
public function __construct() {
parent::__construct(
array(
'name' => esc_html__( 'Pricing table', 'themeisle-companion' ),
'description' => esc_html__( 'Pricing Tables are the perfect option when showcasing services you have on offer.', 'themeisle-companion' ),
'category' => esc_html__( 'Orbit Fox Modules', 'themeisle-companion' ),
'dir' => BEAVER_WIDGETS_PATH . 'modules/pricing-table/',
'url' => BEAVER_WIDGETS_URL . 'modules/pricing-table/',
'editor_export' => true, // Defaults to true and can be omitted.
'enabled' => true, // Defaults to true and can be omitted.
)
);
}
}
/**
* Register the module and its form settings.
*/
FLBuilder::register_module(
'PricingTableModule',
array(
'content' => array(
'title' => esc_html__( 'Content', 'themeisle-companion' ), // Tab title
'sections' => array(
'header' => array(
'title' => esc_html__( 'Plan Header', 'themeisle-companion' ),
'fields' => array(
'plan_title' => array(
'type' => 'text',
'label' => esc_html__( 'Title', 'themeisle-companion' ),
'default' => esc_html__( 'Plan title', 'themeisle-companion' ),
'preview' => array(
'type' => 'text',
'selector' => '.obfx-plan-title',
),
),
'plan_title_tag' => array(
'type' => 'select',
'label' => esc_html__( 'Title tag', 'themeisle-companion' ),
'default' => 'h2',
'options' => array(
'h1' => esc_html__( 'h1', 'themeisle-companion' ),
'h2' => esc_html__( 'h2', 'themeisle-companion' ),
'h3' => esc_html__( 'h3', 'themeisle-companion' ),
'h4' => esc_html__( 'h4', 'themeisle-companion' ),
'h5' => esc_html__( 'h5', 'themeisle-companion' ),
'h6' => esc_html__( 'h6', 'themeisle-companion' ),
'p' => esc_html__( 'p', 'themeisle-companion' ),
),
),
'plan_subtitle' => array(
'type' => 'text',
'label' => esc_html__( 'Subtitle', 'themeisle-companion' ),
'default' => esc_html__( 'Plan subtitle', 'themeisle-companion' ),
'preview' => array(
'type' => 'text',
'selector' => '.obfx-plan-subtitle',
),
),
'plan_subtitle_tag' => array(
'type' => 'select',
'label' => esc_html__( 'Subtitle tag', 'themeisle-companion' ),
'default' => 'p',
'options' => array(
'h1' => esc_html__( 'h1', 'themeisle-companion' ),
'h2' => esc_html__( 'h2', 'themeisle-companion' ),
'h3' => esc_html__( 'h3', 'themeisle-companion' ),
'h4' => esc_html__( 'h4', 'themeisle-companion' ),
'h5' => esc_html__( 'h5', 'themeisle-companion' ),
'h6' => esc_html__( 'h6', 'themeisle-companion' ),
'p' => esc_html__( 'p', 'themeisle-companion' ),
),
),
),
),
'price' => array(
'title' => esc_html__( 'Price Tag', 'themeisle-companion' ),
'fields' => array(
'price' => array(
'type' => 'text',
'label' => esc_html__( 'Price', 'themeisle-companion' ),
'default' => '50',
'preview' => array(
'type' => 'text',
'selector' => '.obfx-price',
),
),
'currency' => array(
'type' => 'text',
'label' => esc_html__( 'Currency', 'themeisle-companion' ),
'default' => '$',
'preview' => array(
'type' => 'text',
'selector' => '.obfx-currency',
),
),
'currency_position' => array(
'type' => 'select',
'label' => esc_html__( 'Currency position', 'themeisle-companion' ),
'default' => 'after',
'options' => array(
'before' => esc_html__( 'Before', 'themeisle-companion' ),
'after' => esc_html__( 'After', 'themeisle-companion' ),
),
),
'period' => array(
'type' => 'text',
'label' => esc_html__( 'Period', 'themeisle-companion' ),
'default' => esc_html__( '/month', 'themeisle-companion' ),
'preview' => array(
'type' => 'text',
'selector' => '.obfx-period',
),
),
),
),
'features' => array(
'title' => esc_html__( 'Features list', 'themeisle-companion' ),
'fields' => array(
'features' => array(
'multiple' => true,
'type' => 'form',
'label' => esc_html__( 'Feature', 'themeisle-companion' ),
'form' => 'feature_field', // ID of a registered form.
'preview_text' => 'text', // ID of a field to use for the preview text.
),
),
),
'button' => array(
'title' => esc_html__( 'Button', 'themeisle-companion' ),
'fields' => array(
'text' => array(
'type' => 'text',
'label' => esc_html__( 'Button text', 'themeisle-companion' ),
'default' => esc_html__( 'Button', 'themeisle-companion' ),
'preview' => array(
'type' => 'text',
'selector' => '.obfx-plan-button',
),
),
'link' => array(
'type' => 'link',
'label' => esc_html__( 'Button link', 'themeisle-companion' ),
),
),
),
'appearance' => array(
'title' => esc_html__( 'Appearance', 'themeisle-companion' ),
'fields' => array(
'card_layout' => array(
'type' => 'obfx_toggle',
'label' => esc_html__( 'Card layout', 'themeisle-companion' ),
'default' => 'yes',
),
'text_position' => array(
'type' => 'select',
'label' => esc_html__( 'Align', 'themeisle-companion' ),
'default' => 'center',
'options' => array(
'center' => esc_html__( 'Center', 'themeisle-companion' ),
'left' => esc_html__( 'Left', 'themeisle-companion' ),
'right' => esc_html__( 'Right', 'themeisle-companion' ),
),
),
),
),
),
),
'header_style' => array(
'title' => esc_html__( 'Header Style', 'themeisle-companion' ),
'sections' => array(
'header_padding' => themeisle_four_fields_control(
array(
'default' => array(
'top' => 15,
'bottom' => 15,
'left' => 0,
'right' => 0,
),
'selector' => '.obfx-pricing-header',
'field_name_prefix' => '',
)
),
'colors' => array(
'title' => esc_html__( 'Colors', 'themeisle-companion' ),
'fields' => array(
'title_color' => array(
'type' => 'color',
'label' => esc_html__( 'Title color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-header *:first-child',
'property' => 'color',
),
),
),
),
'subtitle_color' => array(
'type' => 'color',
'label' => esc_html__( 'Subtitle color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-header *:last-child',
'property' => 'color',
),
),
),
),
),
),
'title_typography' => themeisle_typography_settings(
array(
'title' => esc_html__( 'Title typography', 'themeisle-companion' ),
'prefix' => 'title_',
'selector' => '.obfx-pricing-header *:first-child',
)
),
'subtitle_typography' => themeisle_typography_settings(
array(
'title' => esc_html__( 'Subtitle typography', 'themeisle-companion' ),
'prefix' => 'subtitle_',
'selector' => '.obfx-pricing-header *:last-child',
)
),
'header_background' => array(
'title' => esc_html__( 'Background', 'themeisle-companion' ),
'fields' => array(
'bg_type' => array(
'type' => 'select',
'label' => esc_html__( 'Type', 'themeisle-companion' ),
'default' => 'color',
'options' => array(
'color' => esc_html__( 'Color', 'themeisle-companion' ),
'image' => esc_html__( 'Background', 'themeisle-companion' ),
'gradient' => esc_html__( 'Gradient', 'themeisle-companion' ),
),
'toggle' => array(
'color' => array(
'fields' => array('header_bg_color'),
),
'image' => array(
'fields' => array('header_bg_image'),
),
'gradient' => array(
'fields' => array('gradient_color1', 'gradient_color2', 'gradient_orientation'),
),
),
),
'header_bg_color' => array(
'type' => 'color',
'label' => esc_html__( 'Background color', 'themeisle-companion' ),
'show_reset' => true,
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-header',
'property' => 'background-color',
),
),
),
),
'header_bg_image' => array(
'type' => 'photo',
'label' => esc_html__( 'Photo Field', 'themeisle-companion' ),
'show_remove' => true,
),
'gradient_color1' => array(
'type' => 'color',
'label' => esc_html__( 'Gradient color 1', 'themeisle-companion' ),
'show_reset' => true,
),
'gradient_color2' => array(
'type' => 'color',
'label' => esc_html__( 'Gradient color 2', 'themeisle-companion' ),
'show_reset' => true,
),
'gradient_orientation' => array(
'type' => 'select',
'label' => esc_html__( 'Orientation', 'themeisle-companion' ),
'default' => 'horizontal',
'options' => array(
'horizontal' => esc_html__( 'Horizontal', 'themeisle-companion' ),
'vertical' => esc_html__( 'Vertical', 'themeisle-companion' ),
'diagonal_bottom' => esc_html__( 'Diagonal bottom', 'themeisle-companion' ),
'diagonal_top' => esc_html__( 'Diagonal top', 'themeisle-companion' ),
'radial' => esc_html__( 'Radial', 'themeisle-companion' ),
),
),
),
),
),
),
'price_style' => array(
'title' => esc_html__( 'Price Style', 'themeisle-companion' ),
'sections' => array(
'price_padding' => themeisle_four_fields_control(
array(
'default' => array(
'top' => 15,
'bottom' => 15,
'left' => 0,
'right' => 0,
),
'selector' => '.obfx-pricing-price',
'field_name_prefix' => 'price_',
)
),
'price_colors' => array(
'title' => esc_html__( 'Colors', 'themeisle-companion' ),
'fields' => array(
'price_color' => array(
'type' => 'color',
'label' => esc_html__( 'Price color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-price',
'property' => 'color',
),
),
),
),
'currency_color' => array(
'type' => 'color',
'label' => esc_html__( 'Currency color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-price sup',
'property' => 'color',
),
),
),
),
'period_color' => array(
'type' => 'color',
'label' => esc_html__( 'Period color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-period',
'property' => 'color',
),
),
),
),
),
),
'price_typography' => themeisle_typography_settings(
array(
'prefix' => 'price_',
'selector' => '.obfx-pricing-price',
'font_size_default' => 40,
)
),
),
),
'features_style' => array(
'title' => esc_html__( 'Features Style', 'themeisle-companion' ),
'sections' => array(
'features_padding' => themeisle_four_fields_control(
array(
'default' => array(
'top' => 15,
'bottom' => 15,
'left' => 0,
'right' => 0,
),
'selector' => '.obfx-pricing-price',
'field_name_prefix' => 'features_',
)
),
'features_colors' => array(
'title' => esc_html__( 'Colors', 'themeisle-companion' ),
'fields' => array(
'icon_color' => array(
'type' => 'color',
'label' => esc_html__( 'Icon color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-feature-content i',
'property' => 'color',
),
),
),
),
'bold_color' => array(
'type' => 'color',
'label' => esc_html__( 'Bold text color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-feature-content strong',
'property' => 'color',
),
),
),
),
'feature_color' => array(
'type' => 'color',
'label' => esc_html__( 'Text color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-feature-content:not(i):not(strong)',
'property' => 'color',
),
),
),
),
),
),
'feature_typography' => themeisle_typography_settings(
array(
'prefix' => 'feature_',
'selector' => '.obfx-pricing-feature-content *',
'font_size_default' => 17,
)
),
),
),
'button_style' => array(
'title' => esc_html__( 'Button Style', 'themeisle-companion' ),
'sections' => array(
'button_margins' => themeisle_four_fields_control(
array(
'default' => array(
'top' => 15,
'bottom' => 15,
'left' => 0,
'right' => 0,
),
'selector' => '.obfx-plan-bottom',
'field_name_prefix' => 'button_margin_',
'type' => 'margin',
)
),
'button_padding' => themeisle_four_fields_control(
array(
'default' => array(
'top' => 6,
'bottom' => 6,
'left' => 12,
'right' => 12,
),
'selector' => '.obfx-plan-button',
'field_name_prefix' => 'button_padding_',
)
),
'button_colors' => array(
'title' => esc_html__( 'Colors', 'themeisle-companion' ),
'fields' => array(
'button_text_color' => array(
'type' => 'color',
'label' => esc_html__( 'Text', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-plan-button',
'property' => 'color',
),
),
),
),
'button_text_color_hover' => array(
'type' => 'color',
'label' => esc_html__( 'Text on hover', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-plan-button:hover',
'property' => 'color',
),
),
),
),
'button_bg_color' => array(
'type' => 'color',
'label' => esc_html__( 'Button background', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-plan-button',
'property' => 'background-color',
),
),
),
),
'button_bg_color_hover' => array(
'type' => 'color',
'label' => esc_html__( 'Button background on hover', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-plan-button:hover',
'property' => 'background-color',
),
),
),
),
),
),
'button_typography' => themeisle_typography_settings(
array(
'prefix' => 'button_',
'selector' => '.obfx-plan-button',
'font_size_default' => 15,
)
),
),
),
)
);
FLBuilder::register_settings_form(
'feature_field',
array(
'title' => __( 'Feature', 'themeisle-companion' ),
'tabs' => array(
'general' => array(
'title' => esc_html__( 'General', 'themeisle-companion' ),
'sections' => array(
'general' => array(
'title' => '',
'fields' => array(
'bold_text' => array(
'type' => 'text',
'label' => esc_html__( 'Bold text', 'themeisle-companion' ),
),
'text' => array(
'type' => 'text',
'label' => esc_html__( 'Text', 'themeisle-companion' ),
),
'icon' => array(
'type' => 'icon',
'label' => esc_html__( 'Icon', 'themeisle-companion' ),
'show_remove' => true,
),
),
),
),
),
),
)
);
plugins/themeisle-companion/obfx_modules/beaver-widgets/modules/pricing-table/pricing-table.php 0000644 00000043354 15114544010 0035072 0 ustar 00 home/xbodynamge/dev/wp-content <?php
/**
* Pricing table module.
*
* @package themeisle-companion
*/
// Get the module directory.
$module_directory = $this->get_dir();
// Include common functions file.
require_once( $module_directory . '/inc/common-functions.php' );
// Include custom fields
require_once( $module_directory . '/custom-fields/toggle-field/toggle_field.php' );
/**
* Class PricingTableModule
*/
class PricingTableModule extends FLBuilderModule {
/**
* Constructor function for the module. You must pass the
* name, description, dir and url in an array to the parent class.
*
* @method __construct
*/
public function __construct() {
parent::__construct(
array(
'name' => esc_html__( 'Pricing table', 'themeisle-companion' ),
'description' => esc_html__( 'Pricing Tables are the perfect option when showcasing services you have on offer.', 'themeisle-companion' ),
'category' => esc_html__( 'Orbit Fox Modules', 'themeisle-companion' ),
'dir' => BEAVER_WIDGETS_PATH . 'modules/pricing-table/',
'url' => BEAVER_WIDGETS_URL . 'modules/pricing-table/',
'editor_export' => true, // Defaults to true and can be omitted.
'enabled' => true, // Defaults to true and can be omitted.
)
);
}
}
/**
* Register the module and its form settings.
*/
FLBuilder::register_module(
'PricingTableModule',
array(
'content' => array(
'title' => esc_html__( 'Content', 'themeisle-companion' ), // Tab title
'sections' => array(
'header' => array(
'title' => esc_html__( 'Plan Header', 'themeisle-companion' ),
'fields' => array(
'plan_title' => array(
'type' => 'text',
'label' => esc_html__( 'Title', 'themeisle-companion' ),
'default' => esc_html__( 'Plan title', 'themeisle-companion' ),
'preview' => array(
'type' => 'text',
'selector' => '.obfx-plan-title',
),
),
'plan_title_tag' => array(
'type' => 'select',
'label' => esc_html__( 'Title tag', 'themeisle-companion' ),
'default' => 'h2',
'options' => array(
'h1' => esc_html__( 'h1', 'themeisle-companion' ),
'h2' => esc_html__( 'h2', 'themeisle-companion' ),
'h3' => esc_html__( 'h3', 'themeisle-companion' ),
'h4' => esc_html__( 'h4', 'themeisle-companion' ),
'h5' => esc_html__( 'h5', 'themeisle-companion' ),
'h6' => esc_html__( 'h6', 'themeisle-companion' ),
'p' => esc_html__( 'p', 'themeisle-companion' ),
),
),
'plan_subtitle' => array(
'type' => 'text',
'label' => esc_html__( 'Subtitle', 'themeisle-companion' ),
'default' => esc_html__( 'Plan subtitle', 'themeisle-companion' ),
'preview' => array(
'type' => 'text',
'selector' => '.obfx-plan-subtitle',
),
),
'plan_subtitle_tag' => array(
'type' => 'select',
'label' => esc_html__( 'Subtitle tag', 'themeisle-companion' ),
'default' => 'p',
'options' => array(
'h1' => esc_html__( 'h1', 'themeisle-companion' ),
'h2' => esc_html__( 'h2', 'themeisle-companion' ),
'h3' => esc_html__( 'h3', 'themeisle-companion' ),
'h4' => esc_html__( 'h4', 'themeisle-companion' ),
'h5' => esc_html__( 'h5', 'themeisle-companion' ),
'h6' => esc_html__( 'h6', 'themeisle-companion' ),
'p' => esc_html__( 'p', 'themeisle-companion' ),
),
),
),
),
'price' => array(
'title' => esc_html__( 'Price Tag', 'themeisle-companion' ),
'fields' => array(
'price' => array(
'type' => 'text',
'label' => esc_html__( 'Price', 'themeisle-companion' ),
'default' => '50',
'preview' => array(
'type' => 'text',
'selector' => '.obfx-price',
),
),
'currency' => array(
'type' => 'text',
'label' => esc_html__( 'Currency', 'themeisle-companion' ),
'default' => '$',
'preview' => array(
'type' => 'text',
'selector' => '.obfx-currency',
),
),
'currency_position' => array(
'type' => 'select',
'label' => esc_html__( 'Currency position', 'themeisle-companion' ),
'default' => 'after',
'options' => array(
'before' => esc_html__( 'Before', 'themeisle-companion' ),
'after' => esc_html__( 'After', 'themeisle-companion' ),
),
),
'period' => array(
'type' => 'text',
'label' => esc_html__( 'Period', 'themeisle-companion' ),
'default' => esc_html__( '/month', 'themeisle-companion' ),
'preview' => array(
'type' => 'text',
'selector' => '.obfx-period',
),
),
),
),
'features' => array(
'title' => esc_html__( 'Features list', 'themeisle-companion' ),
'fields' => array(
'features' => array(
'multiple' => true,
'type' => 'form',
'label' => esc_html__( 'Feature', 'themeisle-companion' ),
'form' => 'feature_field', // ID of a registered form.
'preview_text' => 'text', // ID of a field to use for the preview text.
),
),
),
'button' => array(
'title' => esc_html__( 'Button', 'themeisle-companion' ),
'fields' => array(
'text' => array(
'type' => 'text',
'label' => esc_html__( 'Button text', 'themeisle-companion' ),
'default' => esc_html__( 'Button', 'themeisle-companion' ),
'preview' => array(
'type' => 'text',
'selector' => '.obfx-plan-button',
),
),
'link' => array(
'type' => 'link',
'label' => esc_html__( 'Button link', 'themeisle-companion' ),
),
),
),
'appearance' => array(
'title' => esc_html__( 'Appearance', 'themeisle-companion' ),
'fields' => array(
'card_layout' => array(
'type' => 'obfx_toggle',
'label' => esc_html__( 'Card layout', 'themeisle-companion' ),
'default' => 'yes',
),
'text_position' => array(
'type' => 'select',
'label' => esc_html__( 'Align', 'themeisle-companion' ),
'default' => 'center',
'options' => array(
'center' => esc_html__( 'Center', 'themeisle-companion' ),
'left' => esc_html__( 'Left', 'themeisle-companion' ),
'right' => esc_html__( 'Right', 'themeisle-companion' ),
),
),
),
),
),
),
'header_style' => array(
'title' => esc_html__( 'Header Style', 'themeisle-companion' ),
'sections' => array(
'header_padding' => themeisle_four_fields_control(
array(
'default' => array(
'top' => 15,
'bottom' => 15,
'left' => 0,
'right' => 0,
),
'selector' => '.obfx-pricing-header',
'field_name_prefix' => '',
)
),
'colors' => array(
'title' => esc_html__( 'Colors', 'themeisle-companion' ),
'fields' => array(
'title_color' => array(
'type' => 'color',
'label' => esc_html__( 'Title color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-header *:first-child',
'property' => 'color',
),
),
),
),
'subtitle_color' => array(
'type' => 'color',
'label' => esc_html__( 'Subtitle color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-header *:last-child',
'property' => 'color',
),
),
),
),
),
),
'title_typography' => themeisle_typography_settings(
array(
'title' => esc_html__( 'Title typography', 'themeisle-companion' ),
'prefix' => 'title_',
'selector' => '.obfx-pricing-header *:first-child',
)
),
'subtitle_typography' => themeisle_typography_settings(
array(
'title' => esc_html__( 'Subtitle typography', 'themeisle-companion' ),
'prefix' => 'subtitle_',
'selector' => '.obfx-pricing-header *:last-child',
)
),
'header_background' => array(
'title' => esc_html__( 'Background', 'themeisle-companion' ),
'fields' => array(
'bg_type' => array(
'type' => 'select',
'label' => esc_html__( 'Type', 'themeisle-companion' ),
'default' => 'color',
'options' => array(
'color' => esc_html__( 'Color', 'themeisle-companion' ),
'image' => esc_html__( 'Background', 'themeisle-companion' ),
'gradient' => esc_html__( 'Gradient', 'themeisle-companion' ),
),
'toggle' => array(
'color' => array(
'fields' => array('header_bg_color'),
),
'image' => array(
'fields' => array('header_bg_image'),
),
'gradient' => array(
'fields' => array('gradient_color1', 'gradient_color2', 'gradient_orientation'),
),
),
),
'header_bg_color' => array(
'type' => 'color',
'label' => esc_html__( 'Background color', 'themeisle-companion' ),
'show_reset' => true,
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-header',
'property' => 'background-color',
),
),
),
),
'header_bg_image' => array(
'type' => 'photo',
'label' => esc_html__( 'Photo Field', 'themeisle-companion' ),
'show_remove' => true,
),
'gradient_color1' => array(
'type' => 'color',
'label' => esc_html__( 'Gradient color 1', 'themeisle-companion' ),
'show_reset' => true,
),
'gradient_color2' => array(
'type' => 'color',
'label' => esc_html__( 'Gradient color 2', 'themeisle-companion' ),
'show_reset' => true,
),
'gradient_orientation' => array(
'type' => 'select',
'label' => esc_html__( 'Orientation', 'themeisle-companion' ),
'default' => 'horizontal',
'options' => array(
'horizontal' => esc_html__( 'Horizontal', 'themeisle-companion' ),
'vertical' => esc_html__( 'Vertical', 'themeisle-companion' ),
'diagonal_bottom' => esc_html__( 'Diagonal bottom', 'themeisle-companion' ),
'diagonal_top' => esc_html__( 'Diagonal top', 'themeisle-companion' ),
'radial' => esc_html__( 'Radial', 'themeisle-companion' ),
),
),
),
),
),
),
'price_style' => array(
'title' => esc_html__( 'Price Style', 'themeisle-companion' ),
'sections' => array(
'price_padding' => themeisle_four_fields_control(
array(
'default' => array(
'top' => 15,
'bottom' => 15,
'left' => 0,
'right' => 0,
),
'selector' => '.obfx-pricing-price',
'field_name_prefix' => 'price_',
)
),
'price_colors' => array(
'title' => esc_html__( 'Colors', 'themeisle-companion' ),
'fields' => array(
'price_color' => array(
'type' => 'color',
'label' => esc_html__( 'Price color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-price',
'property' => 'color',
),
),
),
),
'currency_color' => array(
'type' => 'color',
'label' => esc_html__( 'Currency color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-price sup',
'property' => 'color',
),
),
),
),
'period_color' => array(
'type' => 'color',
'label' => esc_html__( 'Period color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-period',
'property' => 'color',
),
),
),
),
),
),
'price_typography' => themeisle_typography_settings(
array(
'prefix' => 'price_',
'selector' => '.obfx-pricing-price',
'font_size_default' => 40,
)
),
),
),
'features_style' => array(
'title' => esc_html__( 'Features Style', 'themeisle-companion' ),
'sections' => array(
'features_padding' => themeisle_four_fields_control(
array(
'default' => array(
'top' => 15,
'bottom' => 15,
'left' => 0,
'right' => 0,
),
'selector' => '.obfx-pricing-price',
'field_name_prefix' => 'features_',
)
),
'features_colors' => array(
'title' => esc_html__( 'Colors', 'themeisle-companion' ),
'fields' => array(
'icon_color' => array(
'type' => 'color',
'label' => esc_html__( 'Icon color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-feature-content i',
'property' => 'color',
),
),
),
),
'bold_color' => array(
'type' => 'color',
'label' => esc_html__( 'Bold text color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-feature-content strong',
'property' => 'color',
),
),
),
),
'feature_color' => array(
'type' => 'color',
'label' => esc_html__( 'Text color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-feature-content:not(i):not(strong)',
'property' => 'color',
),
),
),
),
),
),
'feature_typography' => themeisle_typography_settings(
array(
'prefix' => 'feature_',
'selector' => '.obfx-pricing-feature-content *',
'font_size_default' => 17,
)
),
),
),
'button_style' => array(
'title' => esc_html__( 'Button Style', 'themeisle-companion' ),
'sections' => array(
'button_margins' => themeisle_four_fields_control(
array(
'default' => array(
'top' => 15,
'bottom' => 15,
'left' => 0,
'right' => 0,
),
'selector' => '.obfx-plan-bottom',
'field_name_prefix' => 'button_margin_',
'type' => 'margin',
)
),
'button_padding' => themeisle_four_fields_control(
array(
'default' => array(
'top' => 6,
'bottom' => 6,
'left' => 12,
'right' => 12,
),
'selector' => '.obfx-plan-button',
'field_name_prefix' => 'button_padding_',
)
),
'button_colors' => array(
'title' => esc_html__( 'Colors', 'themeisle-companion' ),
'fields' => array(
'button_text_color' => array(
'type' => 'color',
'label' => esc_html__( 'Text', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-plan-button',
'property' => 'color',
),
),
),
),
'button_text_color_hover' => array(
'type' => 'color',
'label' => esc_html__( 'Text on hover', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-plan-button:hover',
'property' => 'color',
),
),
),
),
'button_bg_color' => array(
'type' => 'color',
'label' => esc_html__( 'Button background', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-plan-button',
'property' => 'background-color',
),
),
),
),
'button_bg_color_hover' => array(
'type' => 'color',
'label' => esc_html__( 'Button background on hover', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-plan-button:hover',
'property' => 'background-color',
),
),
),
),
),
),
'button_typography' => themeisle_typography_settings(
array(
'prefix' => 'button_',
'selector' => '.obfx-plan-button',
'font_size_default' => 15,
)
),
),
),
)
);
FLBuilder::register_settings_form(
'feature_field',
array(
'title' => __( 'Feature', 'themeisle-companion' ),
'tabs' => array(
'general' => array(
'title' => esc_html__( 'General', 'themeisle-companion' ),
'sections' => array(
'general' => array(
'title' => '',
'fields' => array(
'bold_text' => array(
'type' => 'text',
'label' => esc_html__( 'Bold text', 'themeisle-companion' ),
),
'text' => array(
'type' => 'text',
'label' => esc_html__( 'Text', 'themeisle-companion' ),
),
'icon' => array(
'type' => 'icon',
'label' => esc_html__( 'Icon', 'themeisle-companion' ),
'show_remove' => true,
),
),
),
),
),
),
)
);
themeisle-companion/vendor/codeinwp/elementor-extra-widgets/widgets/elementor/pricing-table.php 0000644 00000073064 15114663121 0036636 0 ustar 00 home/xbodynamge/dev/wp-content/plugins <?php
/**
* Pricing Table widget for Elementor builder
*
* @link https://themeisle.com
* @since 1.0.0
*
* @package ThemeIsle\ElementorExtraWidgets
*/
namespace ThemeIsle\ElementorExtraWidgets;
if ( ! defined( 'ABSPATH' ) ) {
exit;
} // End if().
/**
* Class Pricing_Table
*
* @package ThemeIsle\ElementorExtraWidgets
*/
class Pricing_Table extends \Elementor\Widget_Base {
/**
* Widget title.
*
* @return string
*/
public function get_title() {
return __( 'Pricing Table', 'themeisle-companion' );
}
/**
* Widget icon.
*
* @return string
*/
public function get_icon() {
return 'eicon-price-table';
}
/**
* Widget name.
*
* @return string
*/
public function get_name() {
return 'obfx-pricing-table';
}
/**
* Widget Category
*
* @return array
*/
public function get_categories() {
$category_args = apply_filters( 'elementor_extra_widgets_category_args', array() );
$slug = isset( $category_args['slug'] ) ? $category_args['slug'] : 'obfx-elementor-widgets';
return [ $slug ];
}
/**
* Register Elementor Controls
*/
protected function _register_controls() {
$this->plan_title_section();
$this->plan_price_tag_section();
$this->features_section();
$this->button_section();
$this->header_style_section();
$this->price_tag_style_section();
$this->features_style_section();
$this->button_style_section();
}
/**
* Content > Title section.
*/
private function plan_title_section() {
$this->start_controls_section(
'section_title',
[
'label' => __( 'Plan Title', 'themeisle-companion' ),
]
);
$this->add_control(
'title',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Title', 'themeisle-companion' ),
'placeholder' => __( 'Title', 'themeisle-companion' ),
'default' => __( 'Pricing Plan', 'themeisle-companion' ),
]
);
$this->add_control(
'title_tag',
[
'type' => \Elementor\Controls_Manager::SELECT,
'label' => __( 'Title HTML tag', 'themeisle-companion' ),
'default' => 'h3',
'options' => [
'h1' => __( 'h1', 'themeisle-companion' ),
'h2' => __( 'h2', 'themeisle-companion' ),
'h3' => __( 'h3', 'themeisle-companion' ),
'h4' => __( 'h4', 'themeisle-companion' ),
'h5' => __( 'h5', 'themeisle-companion' ),
'h6' => __( 'h6', 'themeisle-companion' ),
'p' => __( 'p', 'themeisle-companion' ),
],
]
);
$this->add_control(
'subtitle',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Subtitle', 'themeisle-companion' ),
'placeholder' => __( 'Subtitle', 'themeisle-companion' ),
'default' => __( 'Description', 'themeisle-companion' ),
]
);
$this->add_control(
'subtitle_tag',
[
'type' => \Elementor\Controls_Manager::SELECT,
'label' => __( 'Subtitle HTML Tag', 'themeisle-companion' ),
'default' => 'p',
'options' => [
'h1' => __( 'h1', 'themeisle-companion' ),
'h2' => __( 'h2', 'themeisle-companion' ),
'h3' => __( 'h3', 'themeisle-companion' ),
'h4' => __( 'h4', 'themeisle-companion' ),
'h5' => __( 'h5', 'themeisle-companion' ),
'h6' => __( 'h6', 'themeisle-companion' ),
'p' => __( 'p', 'themeisle-companion' ),
],
]
);
$this->end_controls_section(); // end section-title
}
/**
* Content > Price Tag section.
*/
private function plan_price_tag_section() {
$this->start_controls_section(
'section_price_tag',
[
'label' => __( 'Price Tag', 'themeisle-companion' ),
]
);
$this->add_control(
'price_tag_text',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Price', 'themeisle-companion' ),
'placeholder' => __( 'Price', 'themeisle-companion' ),
'default' => __( '50', 'themeisle-companion' ),
'separator' => 'after',
]
);
$this->add_control(
'price_tag_currency',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Currency', 'themeisle-companion' ),
'placeholder' => __( 'Currency', 'themeisle-companion' ),
'default' => __( '$', 'themeisle-companion' ),
]
);
$this->add_control(
'price_tag_currency_position',
[
'type' => \Elementor\Controls_Manager::SELECT,
'label' => __( 'Currency Position', 'themeisle-companion' ),
'default' => 'left',
'options' => [
'left' => __( 'Before', 'themeisle-companion' ),
'right' => __( 'After', 'themeisle-companion' ),
],
]
);
$this->add_control(
'price_tag_period',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Period', 'themeisle-companion' ),
'placeholder' => __( '/month', 'themeisle-companion' ),
'default' => __( '/month', 'themeisle-companion' ),
'separator' => 'before',
]
);
$this->end_controls_section(); // end section-price-tag
}
/**
* Content > Features section.
*/
private function features_section() {
$this->start_controls_section(
'section_features',
[
'label' => __( 'Features', 'themeisle-companion' ),
]
);
$this->add_control(
'feature_list',
[
'label' => __( 'Plan Features', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::REPEATER,
'default' => [
[
'accent' => __( 'First', 'themeisle-companion' ),
'text' => __( 'Feature', 'themeisle-companion' ),
],
[
'accent' => __( 'Second', 'themeisle-companion' ),
'text' => __( 'Feature', 'themeisle-companion' ),
],
[
'accent' => __( 'Third', 'themeisle-companion' ),
'text' => __( 'Feature', 'themeisle-companion' ),
],
],
'fields' => [
[
'type' => \Elementor\Controls_Manager::TEXT,
'name' => 'accent',
'label' => __( 'Accented Text', 'themeisle-companion' ),
'description' => __( 'Appears before feature text', 'themeisle-companion' ),
'label_block' => true,
'default' => __( 'Accent', 'themeisle-companion' ),
],
[
'type' => \Elementor\Controls_Manager::TEXT,
'name' => 'text',
'label' => __( 'Text', 'themeisle-companion' ),
'label_block' => true,
'placeholder' => __( 'Plan Features', 'themeisle-companion' ),
'default' => __( 'Feature', 'themeisle-companion' ),
],
[
'type' => \Elementor\Controls_Manager::ICON,
'name' => 'feature_icon',
'label' => __( 'Icon', 'themeisle-companion' ),
'label_block' => true,
'default' => 'fa fa-star',
],
],
'title_field' => '{{ accent + " " + text }}',
]
);
$this->add_responsive_control(
'features_align',
[
'label' => __( 'Alignment', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::CHOOSE,
'options' => [
'left' => [
'title' => __( 'Left', 'themeisle-companion' ),
'icon' => 'fa fa-align-left',
],
'center' => [
'title' => __( 'Center', 'themeisle-companion' ),
'icon' => 'fa fa-align-center',
],
'right' => [
'title' => __( 'Right', 'themeisle-companion' ),
'icon' => 'fa fa-align-right',
],
'justify' => [
'title' => __( 'Justified', 'themeisle-companion' ),
'icon' => 'fa fa-align-justify',
],
],
'default' => 'center',
'selectors' => [
'{{WRAPPER}} .obfx-feature-list' => 'text-align: {{VALUE}};',
],
]
);
$this->end_controls_section(); // end section-features
}
/**
* Content > Button section.
*/
private function button_section() {
$this->start_controls_section(
'section_button',
[
'label' => __( 'Button', 'themeisle-companion' ),
]
);
$this->add_control(
'button_text',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Text', 'themeisle-companion' ),
'placeholder' => __( 'Buy Now', 'themeisle-companion' ),
'default' => __( 'Buy Now', 'themeisle-companion' ),
]
);
$this->add_control(
'button_link',
[
'type' => \Elementor\Controls_Manager::URL,
'label' => __( 'Link', 'themeisle-companion' ),
'placeholder' => __( 'https://example.com', 'themeisle-companion' ),
]
);
$this->add_control(
'button_icon',
[
'type' => \Elementor\Controls_Manager::ICON,
'label' => __( 'Icon', 'themeisle-companion' ),
'label_block' => true,
'default' => '',
]
);
$this->add_control(
'button_icon_align',
[
'type' => \Elementor\Controls_Manager::SELECT,
'label' => __( 'Icon Position', 'themeisle-companion' ),
'default' => 'left',
'options' => [
'left' => __( 'Before', 'themeisle-companion' ),
'right' => __( 'After', 'themeisle-companion' ),
],
'condition' => [
'button_icon!' => '',
],
]
);
$this->add_control(
'button_icon_indent',
[
'type' => \Elementor\Controls_Manager::SLIDER,
'label' => __( 'Icon Spacing', 'themeisle-companion' ),
'range' => [
'px' => [
'max' => 50,
],
],
'condition' => [
'button_icon!' => '',
],
'selectors' => [
'{{WRAPPER}} .obfx-button-icon-align-right i' => 'margin-left: {{SIZE}}{{UNIT}};',
'{{WRAPPER}} .obfx-button-icon-align-left i' => 'margin-right: {{SIZE}}{{UNIT}};',
],
]
);
$this->end_controls_section(); // end section_button
}
/**
* Style > Header section.
*/
private function header_style_section() {
$this->start_controls_section(
'section_header_style',
[
'label' => __( 'Header', 'themeisle-companion' ),
'tab' => \Elementor\Controls_Manager::TAB_STYLE,
]
);
$this->add_responsive_control(
'header_padding',
[
'label' => __( 'Header Padding', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .obfx-title-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_control(
'plan_title_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Title Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#464959',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-title' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'plan_title_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-pricing-table-title',
]
);
$this->add_control(
'plan_subtitle_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Subtitle Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#60647d',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-subtitle' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'plan_subtitle_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-pricing-table-subtitle',
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(),
[
'name' => 'heading_section_bg',
'label' => __( 'Section Background', 'themeisle-companion' ),
'types' => [ 'classic', 'gradient' ],
'selector' => '{{WRAPPER}} .obfx-title-wrapper',
]
);
$this->end_controls_section(); // end section_header_style
}
/**
* Style > Price Tag section.
*/
private function price_tag_style_section() {
$this->start_controls_section(
'section_price_box',
[
'label' => __( 'Price Tag', 'themeisle-companion' ),
'tab' => \Elementor\Controls_Manager::TAB_STYLE,
]
);
$this->add_responsive_control(
'price_box_padding',
[
'type' => \Elementor\Controls_Manager::DIMENSIONS,
'label' => __( 'Price Box Padding', 'themeisle-companion' ),
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .obfx-price-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(),
[
'name' => 'pricing_section_bg',
'label' => __( 'Section Background', 'themeisle-companion' ),
'types' => [ 'classic', 'gradient' ],
'selector' => '{{WRAPPER}} .obfx-price-wrapper',
]
);
$this->add_control(
'price_tag_heading_currency',
[
'label' => __( 'Currency', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'currency_color',
[
'label' => __( 'Currency Color', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::COLOR,
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#60647d',
'selectors' => [
'{{WRAPPER}} .obfx-price-currency' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'currency_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-price-currency',
]
);
$this->add_control(
'price_tag_heading_price',
[
'label' => __( 'Price', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'price_text_color',
[
'label' => __( 'Price Color', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::COLOR,
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#60647d',
'selectors' => [
'{{WRAPPER}} .obfx-price' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'price_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-price',
]
);
$this->add_control(
'price_tag_heading_period',
[
'label' => __( 'Period', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'period_color',
[
'label' => __( 'Period Color', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::COLOR,
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#60647d',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-period' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'price_sub_text_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-pricing-period',
]
);
$this->end_controls_section(); // end pricing-section
}
/**
* Style > Features section.
*/
private function features_style_section() {
$this->start_controls_section(
'section_features_style',
[
'label' => __( 'Features', 'themeisle-companion' ),
'tab' => \Elementor\Controls_Manager::TAB_STYLE,
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(),
[
'name' => 'features_section_bg',
'label' => __( 'Section Background', 'themeisle-companion' ),
'types' => [ 'classic', 'gradient' ],
'selector' => '{{WRAPPER}} .obfx-feature-list',
]
);
$this->add_responsive_control(
'features_box_padding',
[
'type' => \Elementor\Controls_Manager::DIMENSIONS,
'label' => __( 'Features List Padding', 'themeisle-companion' ),
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .obfx-feature-list' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_control(
'features_accented_heading',
[
'label' => __( 'Accented', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'features_accented_text_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Accented Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#60647d',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-accented' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'features_accented_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-pricing-table-accented',
]
);
$this->add_control(
'features_features_heading',
[
'label' => __( 'Features', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'features_text_color',
[
'label' => __( 'Features Color', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::COLOR,
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#b1b3c0',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-feature' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'features_features_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-pricing-table-feature',
]
);
$this->add_control(
'features_icons_heading',
[
'label' => __( 'Icons', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'features_icon_color',
[
'label' => __( 'Icon Color', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::COLOR,
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#b1b3c0',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-feature-icon' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'features_icon_indent',
[
'type' => \Elementor\Controls_Manager::SLIDER,
'label' => __( 'Icon Spacing', 'themeisle-companion' ),
'default' => [
'size' => 5,
],
'range' => [
'px' => [
'max' => 50,
],
],
'selectors' => [
'{{WRAPPER}} i.obfx-pricing-table-feature-icon' => 'margin-right: {{SIZE}}{{UNIT}};',
],
]
);
$this->end_controls_section(); // end section_features_style
}
/**
* Style > Button section.
*/
private function button_style_section() {
$this->start_controls_section(
'section_button_style',
[
'label' => __( 'Button', 'themeisle-companion' ),
'tab' => \Elementor\Controls_Manager::TAB_STYLE,
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(), [
'name' => 'button_section_bg',
'label' => __( 'Section Background', 'themeisle-companion' ),
'types' => [ 'classic', 'gradient' ],
'selector' => '{{WRAPPER}} .obfx-pricing-table-button-wrapper',
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'typography',
'label' => __( 'Typography', 'themeisle-companion' ),
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_4,
'selector' => '{{WRAPPER}} .obfx-pricing-table-button-wrapper',
]
);
$this->add_control(
'border_radius',
[
'label' => __( 'Border Radius', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', '%' ],
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_control(
'text_padding',
[
'label' => __( 'Padding', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
// Add the tabbed control.
$this->tabbed_button_controls();
$this->end_controls_section(); // end section_button_style
}
/**
* Tabs for the Style > Button section.
*/
private function tabbed_button_controls() {
$this->start_controls_tabs( 'tabs_background' );
$this->start_controls_tab(
'tab_background_normal',
[
'label' => __( 'Normal', 'themeisle-companion' ),
]
);
$this->add_control(
'button_text_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Text Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#fff',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'button_bg_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Background Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#93c64f',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button' => 'background-color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Box_Shadow::get_type(),
[
'name' => 'button_box_shadow',
'selector' => '{{WRAPPER}} .obfx-pricing-table-button',
'separator' => '',
]
);
$this->end_controls_tab();
$this->start_controls_tab(
'tab_background_hover',
[
'label' => __( 'Hover', 'themeisle-companion' ),
]
);
$this->add_control(
'button_hover_text_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Text Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#fff',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button:hover' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'button_hover_bg_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Background Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#74c600',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button:hover' => 'background-color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Box_Shadow::get_type(),
[
'name' => 'button_hover_box_shadow',
'selector' => '{{WRAPPER}} .obfx-pricing-table-button:hover',
'separator' => '',
]
);
$this->add_control(
'background_hover_transition',
[
'label' => __( 'Transition Duration', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::SLIDER,
'default' => [
'size' => 0.3,
],
'range' => [
'px' => [
'max' => 3,
'step' => 0.1,
],
],
'render_type' => 'ui',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button' => 'transition: all {{SIZE}}s ease;',
],
]
);
$this->end_controls_tab();
$this->end_controls_tabs();
}
/**
* Render function to output the pricing table.
*/
protected function render() {
$settings = $this->get_settings();
$this->maybe_load_widget_style();
$this->add_render_attribute( 'title', 'class', 'obfx-pricing-table-title' );
$this->add_render_attribute( 'subtitle', 'class', 'obfx-pricing-table-subtitle' );
$this->add_render_attribute( 'button', 'class', 'obfx-pricing-table-button' );
$this->add_render_attribute( 'button_icon', 'class', $settings['button_icon'] );
$this->add_render_attribute( 'button_icon_align', 'class', 'obfx-button-icon-align-' . $settings['button_icon_align'] );
if ( ! empty( $settings['button_link']['url'] ) ) {
$this->add_render_attribute( 'button', 'href', $settings['button_link']['url'] );
if ( ! empty( $settings['button_link']['is_external'] ) ) {
$this->add_render_attribute( 'button', 'target', '_blank' );
}
if ( ! empty( $settings['button_link']['nofollow'] ) ) {
$this->add_render_attribute( 'button', 'rel', 'nofollow' );
}
}
$output = '';
$output .= '<div class="obfx-pricing-table-wrapper">';
if ( ! empty( $settings['title'] ) || ! empty( $settings['subtitle'] ) ) {
$output .= '<div class="obfx-title-wrapper">';
if ( ! empty( $settings['title'] ) ) {
// Start of title tag.
$output .= '<' . esc_html( $settings['title_tag'] ) . ' ' . $this->get_render_attribute_string( 'title' ) . '>';
// Title string.
$output .= esc_html( $settings['title'] );
// End of title tag.
$output .= '</' . esc_html( $settings['title_tag'] ) . '>';
}
if ( ! empty( $settings['subtitle'] ) ) {
// Start of subtitle tag.
$output .= '<' . esc_html( $settings['subtitle_tag'] ) . ' ' . $this->get_render_attribute_string( 'subtitle' ) . '>';
// Subtitle string.
$output .= esc_html( $settings['subtitle'] );
// End of subtitle tag.
$output .= '</' . esc_html( $settings['subtitle_tag'] ) . '>';
}
$output .= '</div> <!-- /.obfx-title-wrapper -->';
}
if ( ! empty( $settings['price_tag_text'] ) || ! empty( $settings['price_tag_currency'] ) || ! empty( $settings['price_tag_period'] ) ) {
$output .= '<div class="obfx-price-wrapper">';
if ( ! empty( $settings['price_tag_currency'] ) && ( $settings['price_tag_currency_position'] == 'left' ) ) {
$output .= '<span class="obfx-price-currency">' . esc_html( $settings['price_tag_currency'] ) . '</span>';
}
if ( ( isset( $settings['price_tag_text'] ) && $settings['price_tag_text'] === '0' ) || ! empty( $settings['price_tag_text'] ) ) {
$output .= '<span class="obfx-price">' . esc_html( $settings['price_tag_text'] ) . '</span>';
}
if ( ! empty( $settings['price_tag_currency'] ) && ( $settings['price_tag_currency_position'] == 'right' ) ) {
$output .= '<span class="obfx-price-currency">' . esc_html( $settings['price_tag_currency'] ) . '</span>';
}
if ( ! empty( $settings['price_tag_period'] ) ) {
$output .= '<span class="obfx-pricing-period">' . esc_html( $settings['price_tag_period'] ) . '</span>';
}
$output .= '</div> <!-- /.obfx-price-wrapper -->';
}
if ( count( $settings['feature_list'] ) ) {
$output .= '<ul class="obfx-feature-list">';
foreach ( $settings['feature_list'] as $feature ) {
$output .= '<li>';
if ( ! empty( $feature['feature_icon'] ) ) {
$output .= '<i class="obfx-pricing-table-feature-icon ' . esc_attr( $feature['feature_icon'] ) . '"></i>';
}
if ( ! empty( $feature['accent'] ) ) {
$output .= '<span class="obfx-pricing-table-accented">' . esc_html( $feature['accent'] ) . '</span>';
$output .= ' ';
}
if ( ! empty( $feature['text'] ) ) {
$output .= '<span class="obfx-pricing-table-feature">' . esc_html( $feature['text'] ) . '</span>';
}
$output .= '</li>';
}
$output .= '</ul>';
}
if ( ! empty( $settings['button_text'] ) ) {
$output .= '<div class="obfx-pricing-table-button-wrapper">';
$output .= '<a ' . $this->get_render_attribute_string( 'button' ) . '>';
if ( ! empty( $settings['button_icon'] ) && ( $settings['button_icon_align'] == 'left' ) ) {
$output .= '<span ' . $this->get_render_attribute_string( 'button_icon_align' ) . ' >';
$output .= '<i ' . $this->get_render_attribute_string( 'button_icon' ) . '></i>';
}
$output .= '<span class="elementor-button-text">' . esc_html( $settings['button_text'] ) . '</span>';
if ( ! empty( $settings['button_icon'] ) && ( $settings['button_icon_align'] == 'right' ) ) {
$output .= '<span ' . $this->get_render_attribute_string( 'button_icon_align' ) . ' >';
$output .= '<i ' . $this->get_render_attribute_string( 'button_icon' ) . '></i>';
}
$output .= '</a>';
$output .= '</div> <!-- /.obfx-pricing-table-button-wrapper -->';
}
$output .= '</div> <!-- /.obfx-pricing-table-wrapper -->';
echo $output;
}
/**
* Load the widget style dynamically if it is a widget preview
* or enqueue style and scripts if not
*
* This way we are sure that the assets files are loaded only when this block is present in page.
*/
protected function maybe_load_widget_style() {
if ( \Elementor\Plugin::$instance->editor->is_edit_mode() === true && apply_filters( 'themeisle_content_forms_register_default_style', true ) ) { ?>
<style>
<?php echo file_get_contents( plugin_dir_path( dirname( dirname(__FILE__ ) ) ) . 'css/public.css' ) ?>
</style>
<?php
} else {
wp_enqueue_style('eaw-elementor');
}
}
}
plugins/themeisle-companion/obfx_modules/beaver-widgets/modules/pricing-table/pricing-table.php 0000604 00000043354 15115064201 0037175 0 ustar 00 home/xbodynamge/crosstraining/wp-content <?php
/**
* Pricing table module.
*
* @package themeisle-companion
*/
// Get the module directory.
$module_directory = $this->get_dir();
// Include common functions file.
require_once( $module_directory . '/inc/common-functions.php' );
// Include custom fields
require_once( $module_directory . '/custom-fields/toggle-field/toggle_field.php' );
/**
* Class PricingTableModule
*/
class PricingTableModule extends FLBuilderModule {
/**
* Constructor function for the module. You must pass the
* name, description, dir and url in an array to the parent class.
*
* @method __construct
*/
public function __construct() {
parent::__construct(
array(
'name' => esc_html__( 'Pricing table', 'themeisle-companion' ),
'description' => esc_html__( 'Pricing Tables are the perfect option when showcasing services you have on offer.', 'themeisle-companion' ),
'category' => esc_html__( 'Orbit Fox Modules', 'themeisle-companion' ),
'dir' => BEAVER_WIDGETS_PATH . 'modules/pricing-table/',
'url' => BEAVER_WIDGETS_URL . 'modules/pricing-table/',
'editor_export' => true, // Defaults to true and can be omitted.
'enabled' => true, // Defaults to true and can be omitted.
)
);
}
}
/**
* Register the module and its form settings.
*/
FLBuilder::register_module(
'PricingTableModule',
array(
'content' => array(
'title' => esc_html__( 'Content', 'themeisle-companion' ), // Tab title
'sections' => array(
'header' => array(
'title' => esc_html__( 'Plan Header', 'themeisle-companion' ),
'fields' => array(
'plan_title' => array(
'type' => 'text',
'label' => esc_html__( 'Title', 'themeisle-companion' ),
'default' => esc_html__( 'Plan title', 'themeisle-companion' ),
'preview' => array(
'type' => 'text',
'selector' => '.obfx-plan-title',
),
),
'plan_title_tag' => array(
'type' => 'select',
'label' => esc_html__( 'Title tag', 'themeisle-companion' ),
'default' => 'h2',
'options' => array(
'h1' => esc_html__( 'h1', 'themeisle-companion' ),
'h2' => esc_html__( 'h2', 'themeisle-companion' ),
'h3' => esc_html__( 'h3', 'themeisle-companion' ),
'h4' => esc_html__( 'h4', 'themeisle-companion' ),
'h5' => esc_html__( 'h5', 'themeisle-companion' ),
'h6' => esc_html__( 'h6', 'themeisle-companion' ),
'p' => esc_html__( 'p', 'themeisle-companion' ),
),
),
'plan_subtitle' => array(
'type' => 'text',
'label' => esc_html__( 'Subtitle', 'themeisle-companion' ),
'default' => esc_html__( 'Plan subtitle', 'themeisle-companion' ),
'preview' => array(
'type' => 'text',
'selector' => '.obfx-plan-subtitle',
),
),
'plan_subtitle_tag' => array(
'type' => 'select',
'label' => esc_html__( 'Subtitle tag', 'themeisle-companion' ),
'default' => 'p',
'options' => array(
'h1' => esc_html__( 'h1', 'themeisle-companion' ),
'h2' => esc_html__( 'h2', 'themeisle-companion' ),
'h3' => esc_html__( 'h3', 'themeisle-companion' ),
'h4' => esc_html__( 'h4', 'themeisle-companion' ),
'h5' => esc_html__( 'h5', 'themeisle-companion' ),
'h6' => esc_html__( 'h6', 'themeisle-companion' ),
'p' => esc_html__( 'p', 'themeisle-companion' ),
),
),
),
),
'price' => array(
'title' => esc_html__( 'Price Tag', 'themeisle-companion' ),
'fields' => array(
'price' => array(
'type' => 'text',
'label' => esc_html__( 'Price', 'themeisle-companion' ),
'default' => '50',
'preview' => array(
'type' => 'text',
'selector' => '.obfx-price',
),
),
'currency' => array(
'type' => 'text',
'label' => esc_html__( 'Currency', 'themeisle-companion' ),
'default' => '$',
'preview' => array(
'type' => 'text',
'selector' => '.obfx-currency',
),
),
'currency_position' => array(
'type' => 'select',
'label' => esc_html__( 'Currency position', 'themeisle-companion' ),
'default' => 'after',
'options' => array(
'before' => esc_html__( 'Before', 'themeisle-companion' ),
'after' => esc_html__( 'After', 'themeisle-companion' ),
),
),
'period' => array(
'type' => 'text',
'label' => esc_html__( 'Period', 'themeisle-companion' ),
'default' => esc_html__( '/month', 'themeisle-companion' ),
'preview' => array(
'type' => 'text',
'selector' => '.obfx-period',
),
),
),
),
'features' => array(
'title' => esc_html__( 'Features list', 'themeisle-companion' ),
'fields' => array(
'features' => array(
'multiple' => true,
'type' => 'form',
'label' => esc_html__( 'Feature', 'themeisle-companion' ),
'form' => 'feature_field', // ID of a registered form.
'preview_text' => 'text', // ID of a field to use for the preview text.
),
),
),
'button' => array(
'title' => esc_html__( 'Button', 'themeisle-companion' ),
'fields' => array(
'text' => array(
'type' => 'text',
'label' => esc_html__( 'Button text', 'themeisle-companion' ),
'default' => esc_html__( 'Button', 'themeisle-companion' ),
'preview' => array(
'type' => 'text',
'selector' => '.obfx-plan-button',
),
),
'link' => array(
'type' => 'link',
'label' => esc_html__( 'Button link', 'themeisle-companion' ),
),
),
),
'appearance' => array(
'title' => esc_html__( 'Appearance', 'themeisle-companion' ),
'fields' => array(
'card_layout' => array(
'type' => 'obfx_toggle',
'label' => esc_html__( 'Card layout', 'themeisle-companion' ),
'default' => 'yes',
),
'text_position' => array(
'type' => 'select',
'label' => esc_html__( 'Align', 'themeisle-companion' ),
'default' => 'center',
'options' => array(
'center' => esc_html__( 'Center', 'themeisle-companion' ),
'left' => esc_html__( 'Left', 'themeisle-companion' ),
'right' => esc_html__( 'Right', 'themeisle-companion' ),
),
),
),
),
),
),
'header_style' => array(
'title' => esc_html__( 'Header Style', 'themeisle-companion' ),
'sections' => array(
'header_padding' => themeisle_four_fields_control(
array(
'default' => array(
'top' => 15,
'bottom' => 15,
'left' => 0,
'right' => 0,
),
'selector' => '.obfx-pricing-header',
'field_name_prefix' => '',
)
),
'colors' => array(
'title' => esc_html__( 'Colors', 'themeisle-companion' ),
'fields' => array(
'title_color' => array(
'type' => 'color',
'label' => esc_html__( 'Title color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-header *:first-child',
'property' => 'color',
),
),
),
),
'subtitle_color' => array(
'type' => 'color',
'label' => esc_html__( 'Subtitle color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-header *:last-child',
'property' => 'color',
),
),
),
),
),
),
'title_typography' => themeisle_typography_settings(
array(
'title' => esc_html__( 'Title typography', 'themeisle-companion' ),
'prefix' => 'title_',
'selector' => '.obfx-pricing-header *:first-child',
)
),
'subtitle_typography' => themeisle_typography_settings(
array(
'title' => esc_html__( 'Subtitle typography', 'themeisle-companion' ),
'prefix' => 'subtitle_',
'selector' => '.obfx-pricing-header *:last-child',
)
),
'header_background' => array(
'title' => esc_html__( 'Background', 'themeisle-companion' ),
'fields' => array(
'bg_type' => array(
'type' => 'select',
'label' => esc_html__( 'Type', 'themeisle-companion' ),
'default' => 'color',
'options' => array(
'color' => esc_html__( 'Color', 'themeisle-companion' ),
'image' => esc_html__( 'Background', 'themeisle-companion' ),
'gradient' => esc_html__( 'Gradient', 'themeisle-companion' ),
),
'toggle' => array(
'color' => array(
'fields' => array('header_bg_color'),
),
'image' => array(
'fields' => array('header_bg_image'),
),
'gradient' => array(
'fields' => array('gradient_color1', 'gradient_color2', 'gradient_orientation'),
),
),
),
'header_bg_color' => array(
'type' => 'color',
'label' => esc_html__( 'Background color', 'themeisle-companion' ),
'show_reset' => true,
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-header',
'property' => 'background-color',
),
),
),
),
'header_bg_image' => array(
'type' => 'photo',
'label' => esc_html__( 'Photo Field', 'themeisle-companion' ),
'show_remove' => true,
),
'gradient_color1' => array(
'type' => 'color',
'label' => esc_html__( 'Gradient color 1', 'themeisle-companion' ),
'show_reset' => true,
),
'gradient_color2' => array(
'type' => 'color',
'label' => esc_html__( 'Gradient color 2', 'themeisle-companion' ),
'show_reset' => true,
),
'gradient_orientation' => array(
'type' => 'select',
'label' => esc_html__( 'Orientation', 'themeisle-companion' ),
'default' => 'horizontal',
'options' => array(
'horizontal' => esc_html__( 'Horizontal', 'themeisle-companion' ),
'vertical' => esc_html__( 'Vertical', 'themeisle-companion' ),
'diagonal_bottom' => esc_html__( 'Diagonal bottom', 'themeisle-companion' ),
'diagonal_top' => esc_html__( 'Diagonal top', 'themeisle-companion' ),
'radial' => esc_html__( 'Radial', 'themeisle-companion' ),
),
),
),
),
),
),
'price_style' => array(
'title' => esc_html__( 'Price Style', 'themeisle-companion' ),
'sections' => array(
'price_padding' => themeisle_four_fields_control(
array(
'default' => array(
'top' => 15,
'bottom' => 15,
'left' => 0,
'right' => 0,
),
'selector' => '.obfx-pricing-price',
'field_name_prefix' => 'price_',
)
),
'price_colors' => array(
'title' => esc_html__( 'Colors', 'themeisle-companion' ),
'fields' => array(
'price_color' => array(
'type' => 'color',
'label' => esc_html__( 'Price color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-price',
'property' => 'color',
),
),
),
),
'currency_color' => array(
'type' => 'color',
'label' => esc_html__( 'Currency color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-price sup',
'property' => 'color',
),
),
),
),
'period_color' => array(
'type' => 'color',
'label' => esc_html__( 'Period color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-period',
'property' => 'color',
),
),
),
),
),
),
'price_typography' => themeisle_typography_settings(
array(
'prefix' => 'price_',
'selector' => '.obfx-pricing-price',
'font_size_default' => 40,
)
),
),
),
'features_style' => array(
'title' => esc_html__( 'Features Style', 'themeisle-companion' ),
'sections' => array(
'features_padding' => themeisle_four_fields_control(
array(
'default' => array(
'top' => 15,
'bottom' => 15,
'left' => 0,
'right' => 0,
),
'selector' => '.obfx-pricing-price',
'field_name_prefix' => 'features_',
)
),
'features_colors' => array(
'title' => esc_html__( 'Colors', 'themeisle-companion' ),
'fields' => array(
'icon_color' => array(
'type' => 'color',
'label' => esc_html__( 'Icon color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-feature-content i',
'property' => 'color',
),
),
),
),
'bold_color' => array(
'type' => 'color',
'label' => esc_html__( 'Bold text color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-feature-content strong',
'property' => 'color',
),
),
),
),
'feature_color' => array(
'type' => 'color',
'label' => esc_html__( 'Text color', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-pricing-feature-content:not(i):not(strong)',
'property' => 'color',
),
),
),
),
),
),
'feature_typography' => themeisle_typography_settings(
array(
'prefix' => 'feature_',
'selector' => '.obfx-pricing-feature-content *',
'font_size_default' => 17,
)
),
),
),
'button_style' => array(
'title' => esc_html__( 'Button Style', 'themeisle-companion' ),
'sections' => array(
'button_margins' => themeisle_four_fields_control(
array(
'default' => array(
'top' => 15,
'bottom' => 15,
'left' => 0,
'right' => 0,
),
'selector' => '.obfx-plan-bottom',
'field_name_prefix' => 'button_margin_',
'type' => 'margin',
)
),
'button_padding' => themeisle_four_fields_control(
array(
'default' => array(
'top' => 6,
'bottom' => 6,
'left' => 12,
'right' => 12,
),
'selector' => '.obfx-plan-button',
'field_name_prefix' => 'button_padding_',
)
),
'button_colors' => array(
'title' => esc_html__( 'Colors', 'themeisle-companion' ),
'fields' => array(
'button_text_color' => array(
'type' => 'color',
'label' => esc_html__( 'Text', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-plan-button',
'property' => 'color',
),
),
),
),
'button_text_color_hover' => array(
'type' => 'color',
'label' => esc_html__( 'Text on hover', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-plan-button:hover',
'property' => 'color',
),
),
),
),
'button_bg_color' => array(
'type' => 'color',
'label' => esc_html__( 'Button background', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-plan-button',
'property' => 'background-color',
),
),
),
),
'button_bg_color_hover' => array(
'type' => 'color',
'label' => esc_html__( 'Button background on hover', 'themeisle-companion' ),
'preview' => array(
'type' => 'css',
'rules' => array(
array(
'selector' => '.obfx-plan-button:hover',
'property' => 'background-color',
),
),
),
),
),
),
'button_typography' => themeisle_typography_settings(
array(
'prefix' => 'button_',
'selector' => '.obfx-plan-button',
'font_size_default' => 15,
)
),
),
),
)
);
FLBuilder::register_settings_form(
'feature_field',
array(
'title' => __( 'Feature', 'themeisle-companion' ),
'tabs' => array(
'general' => array(
'title' => esc_html__( 'General', 'themeisle-companion' ),
'sections' => array(
'general' => array(
'title' => '',
'fields' => array(
'bold_text' => array(
'type' => 'text',
'label' => esc_html__( 'Bold text', 'themeisle-companion' ),
),
'text' => array(
'type' => 'text',
'label' => esc_html__( 'Text', 'themeisle-companion' ),
),
'icon' => array(
'type' => 'icon',
'label' => esc_html__( 'Icon', 'themeisle-companion' ),
'show_remove' => true,
),
),
),
),
),
),
)
);
themeisle-companion/vendor/codeinwp/elementor-extra-widgets/widgets/elementor/pricing-table.php 0000644 00000073064 15115137631 0036707 0 ustar 00 home/xbodynamge/www/wp-content/plugins <?php
/**
* Pricing Table widget for Elementor builder
*
* @link https://themeisle.com
* @since 1.0.0
*
* @package ThemeIsle\ElementorExtraWidgets
*/
namespace ThemeIsle\ElementorExtraWidgets;
if ( ! defined( 'ABSPATH' ) ) {
exit;
} // End if().
/**
* Class Pricing_Table
*
* @package ThemeIsle\ElementorExtraWidgets
*/
class Pricing_Table extends \Elementor\Widget_Base {
/**
* Widget title.
*
* @return string
*/
public function get_title() {
return __( 'Pricing Table', 'themeisle-companion' );
}
/**
* Widget icon.
*
* @return string
*/
public function get_icon() {
return 'eicon-price-table';
}
/**
* Widget name.
*
* @return string
*/
public function get_name() {
return 'obfx-pricing-table';
}
/**
* Widget Category
*
* @return array
*/
public function get_categories() {
$category_args = apply_filters( 'elementor_extra_widgets_category_args', array() );
$slug = isset( $category_args['slug'] ) ? $category_args['slug'] : 'obfx-elementor-widgets';
return [ $slug ];
}
/**
* Register Elementor Controls
*/
protected function _register_controls() {
$this->plan_title_section();
$this->plan_price_tag_section();
$this->features_section();
$this->button_section();
$this->header_style_section();
$this->price_tag_style_section();
$this->features_style_section();
$this->button_style_section();
}
/**
* Content > Title section.
*/
private function plan_title_section() {
$this->start_controls_section(
'section_title',
[
'label' => __( 'Plan Title', 'themeisle-companion' ),
]
);
$this->add_control(
'title',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Title', 'themeisle-companion' ),
'placeholder' => __( 'Title', 'themeisle-companion' ),
'default' => __( 'Pricing Plan', 'themeisle-companion' ),
]
);
$this->add_control(
'title_tag',
[
'type' => \Elementor\Controls_Manager::SELECT,
'label' => __( 'Title HTML tag', 'themeisle-companion' ),
'default' => 'h3',
'options' => [
'h1' => __( 'h1', 'themeisle-companion' ),
'h2' => __( 'h2', 'themeisle-companion' ),
'h3' => __( 'h3', 'themeisle-companion' ),
'h4' => __( 'h4', 'themeisle-companion' ),
'h5' => __( 'h5', 'themeisle-companion' ),
'h6' => __( 'h6', 'themeisle-companion' ),
'p' => __( 'p', 'themeisle-companion' ),
],
]
);
$this->add_control(
'subtitle',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Subtitle', 'themeisle-companion' ),
'placeholder' => __( 'Subtitle', 'themeisle-companion' ),
'default' => __( 'Description', 'themeisle-companion' ),
]
);
$this->add_control(
'subtitle_tag',
[
'type' => \Elementor\Controls_Manager::SELECT,
'label' => __( 'Subtitle HTML Tag', 'themeisle-companion' ),
'default' => 'p',
'options' => [
'h1' => __( 'h1', 'themeisle-companion' ),
'h2' => __( 'h2', 'themeisle-companion' ),
'h3' => __( 'h3', 'themeisle-companion' ),
'h4' => __( 'h4', 'themeisle-companion' ),
'h5' => __( 'h5', 'themeisle-companion' ),
'h6' => __( 'h6', 'themeisle-companion' ),
'p' => __( 'p', 'themeisle-companion' ),
],
]
);
$this->end_controls_section(); // end section-title
}
/**
* Content > Price Tag section.
*/
private function plan_price_tag_section() {
$this->start_controls_section(
'section_price_tag',
[
'label' => __( 'Price Tag', 'themeisle-companion' ),
]
);
$this->add_control(
'price_tag_text',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Price', 'themeisle-companion' ),
'placeholder' => __( 'Price', 'themeisle-companion' ),
'default' => __( '50', 'themeisle-companion' ),
'separator' => 'after',
]
);
$this->add_control(
'price_tag_currency',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Currency', 'themeisle-companion' ),
'placeholder' => __( 'Currency', 'themeisle-companion' ),
'default' => __( '$', 'themeisle-companion' ),
]
);
$this->add_control(
'price_tag_currency_position',
[
'type' => \Elementor\Controls_Manager::SELECT,
'label' => __( 'Currency Position', 'themeisle-companion' ),
'default' => 'left',
'options' => [
'left' => __( 'Before', 'themeisle-companion' ),
'right' => __( 'After', 'themeisle-companion' ),
],
]
);
$this->add_control(
'price_tag_period',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Period', 'themeisle-companion' ),
'placeholder' => __( '/month', 'themeisle-companion' ),
'default' => __( '/month', 'themeisle-companion' ),
'separator' => 'before',
]
);
$this->end_controls_section(); // end section-price-tag
}
/**
* Content > Features section.
*/
private function features_section() {
$this->start_controls_section(
'section_features',
[
'label' => __( 'Features', 'themeisle-companion' ),
]
);
$this->add_control(
'feature_list',
[
'label' => __( 'Plan Features', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::REPEATER,
'default' => [
[
'accent' => __( 'First', 'themeisle-companion' ),
'text' => __( 'Feature', 'themeisle-companion' ),
],
[
'accent' => __( 'Second', 'themeisle-companion' ),
'text' => __( 'Feature', 'themeisle-companion' ),
],
[
'accent' => __( 'Third', 'themeisle-companion' ),
'text' => __( 'Feature', 'themeisle-companion' ),
],
],
'fields' => [
[
'type' => \Elementor\Controls_Manager::TEXT,
'name' => 'accent',
'label' => __( 'Accented Text', 'themeisle-companion' ),
'description' => __( 'Appears before feature text', 'themeisle-companion' ),
'label_block' => true,
'default' => __( 'Accent', 'themeisle-companion' ),
],
[
'type' => \Elementor\Controls_Manager::TEXT,
'name' => 'text',
'label' => __( 'Text', 'themeisle-companion' ),
'label_block' => true,
'placeholder' => __( 'Plan Features', 'themeisle-companion' ),
'default' => __( 'Feature', 'themeisle-companion' ),
],
[
'type' => \Elementor\Controls_Manager::ICON,
'name' => 'feature_icon',
'label' => __( 'Icon', 'themeisle-companion' ),
'label_block' => true,
'default' => 'fa fa-star',
],
],
'title_field' => '{{ accent + " " + text }}',
]
);
$this->add_responsive_control(
'features_align',
[
'label' => __( 'Alignment', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::CHOOSE,
'options' => [
'left' => [
'title' => __( 'Left', 'themeisle-companion' ),
'icon' => 'fa fa-align-left',
],
'center' => [
'title' => __( 'Center', 'themeisle-companion' ),
'icon' => 'fa fa-align-center',
],
'right' => [
'title' => __( 'Right', 'themeisle-companion' ),
'icon' => 'fa fa-align-right',
],
'justify' => [
'title' => __( 'Justified', 'themeisle-companion' ),
'icon' => 'fa fa-align-justify',
],
],
'default' => 'center',
'selectors' => [
'{{WRAPPER}} .obfx-feature-list' => 'text-align: {{VALUE}};',
],
]
);
$this->end_controls_section(); // end section-features
}
/**
* Content > Button section.
*/
private function button_section() {
$this->start_controls_section(
'section_button',
[
'label' => __( 'Button', 'themeisle-companion' ),
]
);
$this->add_control(
'button_text',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Text', 'themeisle-companion' ),
'placeholder' => __( 'Buy Now', 'themeisle-companion' ),
'default' => __( 'Buy Now', 'themeisle-companion' ),
]
);
$this->add_control(
'button_link',
[
'type' => \Elementor\Controls_Manager::URL,
'label' => __( 'Link', 'themeisle-companion' ),
'placeholder' => __( 'https://example.com', 'themeisle-companion' ),
]
);
$this->add_control(
'button_icon',
[
'type' => \Elementor\Controls_Manager::ICON,
'label' => __( 'Icon', 'themeisle-companion' ),
'label_block' => true,
'default' => '',
]
);
$this->add_control(
'button_icon_align',
[
'type' => \Elementor\Controls_Manager::SELECT,
'label' => __( 'Icon Position', 'themeisle-companion' ),
'default' => 'left',
'options' => [
'left' => __( 'Before', 'themeisle-companion' ),
'right' => __( 'After', 'themeisle-companion' ),
],
'condition' => [
'button_icon!' => '',
],
]
);
$this->add_control(
'button_icon_indent',
[
'type' => \Elementor\Controls_Manager::SLIDER,
'label' => __( 'Icon Spacing', 'themeisle-companion' ),
'range' => [
'px' => [
'max' => 50,
],
],
'condition' => [
'button_icon!' => '',
],
'selectors' => [
'{{WRAPPER}} .obfx-button-icon-align-right i' => 'margin-left: {{SIZE}}{{UNIT}};',
'{{WRAPPER}} .obfx-button-icon-align-left i' => 'margin-right: {{SIZE}}{{UNIT}};',
],
]
);
$this->end_controls_section(); // end section_button
}
/**
* Style > Header section.
*/
private function header_style_section() {
$this->start_controls_section(
'section_header_style',
[
'label' => __( 'Header', 'themeisle-companion' ),
'tab' => \Elementor\Controls_Manager::TAB_STYLE,
]
);
$this->add_responsive_control(
'header_padding',
[
'label' => __( 'Header Padding', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .obfx-title-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_control(
'plan_title_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Title Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#464959',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-title' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'plan_title_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-pricing-table-title',
]
);
$this->add_control(
'plan_subtitle_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Subtitle Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#60647d',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-subtitle' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'plan_subtitle_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-pricing-table-subtitle',
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(),
[
'name' => 'heading_section_bg',
'label' => __( 'Section Background', 'themeisle-companion' ),
'types' => [ 'classic', 'gradient' ],
'selector' => '{{WRAPPER}} .obfx-title-wrapper',
]
);
$this->end_controls_section(); // end section_header_style
}
/**
* Style > Price Tag section.
*/
private function price_tag_style_section() {
$this->start_controls_section(
'section_price_box',
[
'label' => __( 'Price Tag', 'themeisle-companion' ),
'tab' => \Elementor\Controls_Manager::TAB_STYLE,
]
);
$this->add_responsive_control(
'price_box_padding',
[
'type' => \Elementor\Controls_Manager::DIMENSIONS,
'label' => __( 'Price Box Padding', 'themeisle-companion' ),
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .obfx-price-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(),
[
'name' => 'pricing_section_bg',
'label' => __( 'Section Background', 'themeisle-companion' ),
'types' => [ 'classic', 'gradient' ],
'selector' => '{{WRAPPER}} .obfx-price-wrapper',
]
);
$this->add_control(
'price_tag_heading_currency',
[
'label' => __( 'Currency', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'currency_color',
[
'label' => __( 'Currency Color', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::COLOR,
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#60647d',
'selectors' => [
'{{WRAPPER}} .obfx-price-currency' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'currency_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-price-currency',
]
);
$this->add_control(
'price_tag_heading_price',
[
'label' => __( 'Price', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'price_text_color',
[
'label' => __( 'Price Color', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::COLOR,
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#60647d',
'selectors' => [
'{{WRAPPER}} .obfx-price' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'price_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-price',
]
);
$this->add_control(
'price_tag_heading_period',
[
'label' => __( 'Period', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'period_color',
[
'label' => __( 'Period Color', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::COLOR,
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#60647d',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-period' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'price_sub_text_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-pricing-period',
]
);
$this->end_controls_section(); // end pricing-section
}
/**
* Style > Features section.
*/
private function features_style_section() {
$this->start_controls_section(
'section_features_style',
[
'label' => __( 'Features', 'themeisle-companion' ),
'tab' => \Elementor\Controls_Manager::TAB_STYLE,
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(),
[
'name' => 'features_section_bg',
'label' => __( 'Section Background', 'themeisle-companion' ),
'types' => [ 'classic', 'gradient' ],
'selector' => '{{WRAPPER}} .obfx-feature-list',
]
);
$this->add_responsive_control(
'features_box_padding',
[
'type' => \Elementor\Controls_Manager::DIMENSIONS,
'label' => __( 'Features List Padding', 'themeisle-companion' ),
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .obfx-feature-list' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_control(
'features_accented_heading',
[
'label' => __( 'Accented', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'features_accented_text_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Accented Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#60647d',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-accented' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'features_accented_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-pricing-table-accented',
]
);
$this->add_control(
'features_features_heading',
[
'label' => __( 'Features', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'features_text_color',
[
'label' => __( 'Features Color', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::COLOR,
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#b1b3c0',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-feature' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'features_features_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-pricing-table-feature',
]
);
$this->add_control(
'features_icons_heading',
[
'label' => __( 'Icons', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'features_icon_color',
[
'label' => __( 'Icon Color', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::COLOR,
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#b1b3c0',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-feature-icon' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'features_icon_indent',
[
'type' => \Elementor\Controls_Manager::SLIDER,
'label' => __( 'Icon Spacing', 'themeisle-companion' ),
'default' => [
'size' => 5,
],
'range' => [
'px' => [
'max' => 50,
],
],
'selectors' => [
'{{WRAPPER}} i.obfx-pricing-table-feature-icon' => 'margin-right: {{SIZE}}{{UNIT}};',
],
]
);
$this->end_controls_section(); // end section_features_style
}
/**
* Style > Button section.
*/
private function button_style_section() {
$this->start_controls_section(
'section_button_style',
[
'label' => __( 'Button', 'themeisle-companion' ),
'tab' => \Elementor\Controls_Manager::TAB_STYLE,
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(), [
'name' => 'button_section_bg',
'label' => __( 'Section Background', 'themeisle-companion' ),
'types' => [ 'classic', 'gradient' ],
'selector' => '{{WRAPPER}} .obfx-pricing-table-button-wrapper',
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'typography',
'label' => __( 'Typography', 'themeisle-companion' ),
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_4,
'selector' => '{{WRAPPER}} .obfx-pricing-table-button-wrapper',
]
);
$this->add_control(
'border_radius',
[
'label' => __( 'Border Radius', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', '%' ],
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_control(
'text_padding',
[
'label' => __( 'Padding', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
// Add the tabbed control.
$this->tabbed_button_controls();
$this->end_controls_section(); // end section_button_style
}
/**
* Tabs for the Style > Button section.
*/
private function tabbed_button_controls() {
$this->start_controls_tabs( 'tabs_background' );
$this->start_controls_tab(
'tab_background_normal',
[
'label' => __( 'Normal', 'themeisle-companion' ),
]
);
$this->add_control(
'button_text_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Text Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#fff',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'button_bg_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Background Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#93c64f',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button' => 'background-color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Box_Shadow::get_type(),
[
'name' => 'button_box_shadow',
'selector' => '{{WRAPPER}} .obfx-pricing-table-button',
'separator' => '',
]
);
$this->end_controls_tab();
$this->start_controls_tab(
'tab_background_hover',
[
'label' => __( 'Hover', 'themeisle-companion' ),
]
);
$this->add_control(
'button_hover_text_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Text Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#fff',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button:hover' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'button_hover_bg_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Background Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#74c600',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button:hover' => 'background-color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Box_Shadow::get_type(),
[
'name' => 'button_hover_box_shadow',
'selector' => '{{WRAPPER}} .obfx-pricing-table-button:hover',
'separator' => '',
]
);
$this->add_control(
'background_hover_transition',
[
'label' => __( 'Transition Duration', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::SLIDER,
'default' => [
'size' => 0.3,
],
'range' => [
'px' => [
'max' => 3,
'step' => 0.1,
],
],
'render_type' => 'ui',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button' => 'transition: all {{SIZE}}s ease;',
],
]
);
$this->end_controls_tab();
$this->end_controls_tabs();
}
/**
* Render function to output the pricing table.
*/
protected function render() {
$settings = $this->get_settings();
$this->maybe_load_widget_style();
$this->add_render_attribute( 'title', 'class', 'obfx-pricing-table-title' );
$this->add_render_attribute( 'subtitle', 'class', 'obfx-pricing-table-subtitle' );
$this->add_render_attribute( 'button', 'class', 'obfx-pricing-table-button' );
$this->add_render_attribute( 'button_icon', 'class', $settings['button_icon'] );
$this->add_render_attribute( 'button_icon_align', 'class', 'obfx-button-icon-align-' . $settings['button_icon_align'] );
if ( ! empty( $settings['button_link']['url'] ) ) {
$this->add_render_attribute( 'button', 'href', $settings['button_link']['url'] );
if ( ! empty( $settings['button_link']['is_external'] ) ) {
$this->add_render_attribute( 'button', 'target', '_blank' );
}
if ( ! empty( $settings['button_link']['nofollow'] ) ) {
$this->add_render_attribute( 'button', 'rel', 'nofollow' );
}
}
$output = '';
$output .= '<div class="obfx-pricing-table-wrapper">';
if ( ! empty( $settings['title'] ) || ! empty( $settings['subtitle'] ) ) {
$output .= '<div class="obfx-title-wrapper">';
if ( ! empty( $settings['title'] ) ) {
// Start of title tag.
$output .= '<' . esc_html( $settings['title_tag'] ) . ' ' . $this->get_render_attribute_string( 'title' ) . '>';
// Title string.
$output .= esc_html( $settings['title'] );
// End of title tag.
$output .= '</' . esc_html( $settings['title_tag'] ) . '>';
}
if ( ! empty( $settings['subtitle'] ) ) {
// Start of subtitle tag.
$output .= '<' . esc_html( $settings['subtitle_tag'] ) . ' ' . $this->get_render_attribute_string( 'subtitle' ) . '>';
// Subtitle string.
$output .= esc_html( $settings['subtitle'] );
// End of subtitle tag.
$output .= '</' . esc_html( $settings['subtitle_tag'] ) . '>';
}
$output .= '</div> <!-- /.obfx-title-wrapper -->';
}
if ( ! empty( $settings['price_tag_text'] ) || ! empty( $settings['price_tag_currency'] ) || ! empty( $settings['price_tag_period'] ) ) {
$output .= '<div class="obfx-price-wrapper">';
if ( ! empty( $settings['price_tag_currency'] ) && ( $settings['price_tag_currency_position'] == 'left' ) ) {
$output .= '<span class="obfx-price-currency">' . esc_html( $settings['price_tag_currency'] ) . '</span>';
}
if ( ( isset( $settings['price_tag_text'] ) && $settings['price_tag_text'] === '0' ) || ! empty( $settings['price_tag_text'] ) ) {
$output .= '<span class="obfx-price">' . esc_html( $settings['price_tag_text'] ) . '</span>';
}
if ( ! empty( $settings['price_tag_currency'] ) && ( $settings['price_tag_currency_position'] == 'right' ) ) {
$output .= '<span class="obfx-price-currency">' . esc_html( $settings['price_tag_currency'] ) . '</span>';
}
if ( ! empty( $settings['price_tag_period'] ) ) {
$output .= '<span class="obfx-pricing-period">' . esc_html( $settings['price_tag_period'] ) . '</span>';
}
$output .= '</div> <!-- /.obfx-price-wrapper -->';
}
if ( count( $settings['feature_list'] ) ) {
$output .= '<ul class="obfx-feature-list">';
foreach ( $settings['feature_list'] as $feature ) {
$output .= '<li>';
if ( ! empty( $feature['feature_icon'] ) ) {
$output .= '<i class="obfx-pricing-table-feature-icon ' . esc_attr( $feature['feature_icon'] ) . '"></i>';
}
if ( ! empty( $feature['accent'] ) ) {
$output .= '<span class="obfx-pricing-table-accented">' . esc_html( $feature['accent'] ) . '</span>';
$output .= ' ';
}
if ( ! empty( $feature['text'] ) ) {
$output .= '<span class="obfx-pricing-table-feature">' . esc_html( $feature['text'] ) . '</span>';
}
$output .= '</li>';
}
$output .= '</ul>';
}
if ( ! empty( $settings['button_text'] ) ) {
$output .= '<div class="obfx-pricing-table-button-wrapper">';
$output .= '<a ' . $this->get_render_attribute_string( 'button' ) . '>';
if ( ! empty( $settings['button_icon'] ) && ( $settings['button_icon_align'] == 'left' ) ) {
$output .= '<span ' . $this->get_render_attribute_string( 'button_icon_align' ) . ' >';
$output .= '<i ' . $this->get_render_attribute_string( 'button_icon' ) . '></i>';
}
$output .= '<span class="elementor-button-text">' . esc_html( $settings['button_text'] ) . '</span>';
if ( ! empty( $settings['button_icon'] ) && ( $settings['button_icon_align'] == 'right' ) ) {
$output .= '<span ' . $this->get_render_attribute_string( 'button_icon_align' ) . ' >';
$output .= '<i ' . $this->get_render_attribute_string( 'button_icon' ) . '></i>';
}
$output .= '</a>';
$output .= '</div> <!-- /.obfx-pricing-table-button-wrapper -->';
}
$output .= '</div> <!-- /.obfx-pricing-table-wrapper -->';
echo $output;
}
/**
* Load the widget style dynamically if it is a widget preview
* or enqueue style and scripts if not
*
* This way we are sure that the assets files are loaded only when this block is present in page.
*/
protected function maybe_load_widget_style() {
if ( \Elementor\Plugin::$instance->editor->is_edit_mode() === true && apply_filters( 'themeisle_content_forms_register_default_style', true ) ) { ?>
<style>
<?php echo file_get_contents( plugin_dir_path( dirname( dirname(__FILE__ ) ) ) . 'css/public.css' ) ?>
</style>
<?php
} else {
wp_enqueue_style('eaw-elementor');
}
}
}
themeisle-companion/vendor/codeinwp/elementor-extra-widgets/widgets/elementor/pricing-table.php 0000644 00000073064 15115141075 0040540 0 ustar 00 home/xbodynamge/lebauwcentre/wp-content/plugins <?php
/**
* Pricing Table widget for Elementor builder
*
* @link https://themeisle.com
* @since 1.0.0
*
* @package ThemeIsle\ElementorExtraWidgets
*/
namespace ThemeIsle\ElementorExtraWidgets;
if ( ! defined( 'ABSPATH' ) ) {
exit;
} // End if().
/**
* Class Pricing_Table
*
* @package ThemeIsle\ElementorExtraWidgets
*/
class Pricing_Table extends \Elementor\Widget_Base {
/**
* Widget title.
*
* @return string
*/
public function get_title() {
return __( 'Pricing Table', 'themeisle-companion' );
}
/**
* Widget icon.
*
* @return string
*/
public function get_icon() {
return 'eicon-price-table';
}
/**
* Widget name.
*
* @return string
*/
public function get_name() {
return 'obfx-pricing-table';
}
/**
* Widget Category
*
* @return array
*/
public function get_categories() {
$category_args = apply_filters( 'elementor_extra_widgets_category_args', array() );
$slug = isset( $category_args['slug'] ) ? $category_args['slug'] : 'obfx-elementor-widgets';
return [ $slug ];
}
/**
* Register Elementor Controls
*/
protected function _register_controls() {
$this->plan_title_section();
$this->plan_price_tag_section();
$this->features_section();
$this->button_section();
$this->header_style_section();
$this->price_tag_style_section();
$this->features_style_section();
$this->button_style_section();
}
/**
* Content > Title section.
*/
private function plan_title_section() {
$this->start_controls_section(
'section_title',
[
'label' => __( 'Plan Title', 'themeisle-companion' ),
]
);
$this->add_control(
'title',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Title', 'themeisle-companion' ),
'placeholder' => __( 'Title', 'themeisle-companion' ),
'default' => __( 'Pricing Plan', 'themeisle-companion' ),
]
);
$this->add_control(
'title_tag',
[
'type' => \Elementor\Controls_Manager::SELECT,
'label' => __( 'Title HTML tag', 'themeisle-companion' ),
'default' => 'h3',
'options' => [
'h1' => __( 'h1', 'themeisle-companion' ),
'h2' => __( 'h2', 'themeisle-companion' ),
'h3' => __( 'h3', 'themeisle-companion' ),
'h4' => __( 'h4', 'themeisle-companion' ),
'h5' => __( 'h5', 'themeisle-companion' ),
'h6' => __( 'h6', 'themeisle-companion' ),
'p' => __( 'p', 'themeisle-companion' ),
],
]
);
$this->add_control(
'subtitle',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Subtitle', 'themeisle-companion' ),
'placeholder' => __( 'Subtitle', 'themeisle-companion' ),
'default' => __( 'Description', 'themeisle-companion' ),
]
);
$this->add_control(
'subtitle_tag',
[
'type' => \Elementor\Controls_Manager::SELECT,
'label' => __( 'Subtitle HTML Tag', 'themeisle-companion' ),
'default' => 'p',
'options' => [
'h1' => __( 'h1', 'themeisle-companion' ),
'h2' => __( 'h2', 'themeisle-companion' ),
'h3' => __( 'h3', 'themeisle-companion' ),
'h4' => __( 'h4', 'themeisle-companion' ),
'h5' => __( 'h5', 'themeisle-companion' ),
'h6' => __( 'h6', 'themeisle-companion' ),
'p' => __( 'p', 'themeisle-companion' ),
],
]
);
$this->end_controls_section(); // end section-title
}
/**
* Content > Price Tag section.
*/
private function plan_price_tag_section() {
$this->start_controls_section(
'section_price_tag',
[
'label' => __( 'Price Tag', 'themeisle-companion' ),
]
);
$this->add_control(
'price_tag_text',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Price', 'themeisle-companion' ),
'placeholder' => __( 'Price', 'themeisle-companion' ),
'default' => __( '50', 'themeisle-companion' ),
'separator' => 'after',
]
);
$this->add_control(
'price_tag_currency',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Currency', 'themeisle-companion' ),
'placeholder' => __( 'Currency', 'themeisle-companion' ),
'default' => __( '$', 'themeisle-companion' ),
]
);
$this->add_control(
'price_tag_currency_position',
[
'type' => \Elementor\Controls_Manager::SELECT,
'label' => __( 'Currency Position', 'themeisle-companion' ),
'default' => 'left',
'options' => [
'left' => __( 'Before', 'themeisle-companion' ),
'right' => __( 'After', 'themeisle-companion' ),
],
]
);
$this->add_control(
'price_tag_period',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Period', 'themeisle-companion' ),
'placeholder' => __( '/month', 'themeisle-companion' ),
'default' => __( '/month', 'themeisle-companion' ),
'separator' => 'before',
]
);
$this->end_controls_section(); // end section-price-tag
}
/**
* Content > Features section.
*/
private function features_section() {
$this->start_controls_section(
'section_features',
[
'label' => __( 'Features', 'themeisle-companion' ),
]
);
$this->add_control(
'feature_list',
[
'label' => __( 'Plan Features', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::REPEATER,
'default' => [
[
'accent' => __( 'First', 'themeisle-companion' ),
'text' => __( 'Feature', 'themeisle-companion' ),
],
[
'accent' => __( 'Second', 'themeisle-companion' ),
'text' => __( 'Feature', 'themeisle-companion' ),
],
[
'accent' => __( 'Third', 'themeisle-companion' ),
'text' => __( 'Feature', 'themeisle-companion' ),
],
],
'fields' => [
[
'type' => \Elementor\Controls_Manager::TEXT,
'name' => 'accent',
'label' => __( 'Accented Text', 'themeisle-companion' ),
'description' => __( 'Appears before feature text', 'themeisle-companion' ),
'label_block' => true,
'default' => __( 'Accent', 'themeisle-companion' ),
],
[
'type' => \Elementor\Controls_Manager::TEXT,
'name' => 'text',
'label' => __( 'Text', 'themeisle-companion' ),
'label_block' => true,
'placeholder' => __( 'Plan Features', 'themeisle-companion' ),
'default' => __( 'Feature', 'themeisle-companion' ),
],
[
'type' => \Elementor\Controls_Manager::ICON,
'name' => 'feature_icon',
'label' => __( 'Icon', 'themeisle-companion' ),
'label_block' => true,
'default' => 'fa fa-star',
],
],
'title_field' => '{{ accent + " " + text }}',
]
);
$this->add_responsive_control(
'features_align',
[
'label' => __( 'Alignment', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::CHOOSE,
'options' => [
'left' => [
'title' => __( 'Left', 'themeisle-companion' ),
'icon' => 'fa fa-align-left',
],
'center' => [
'title' => __( 'Center', 'themeisle-companion' ),
'icon' => 'fa fa-align-center',
],
'right' => [
'title' => __( 'Right', 'themeisle-companion' ),
'icon' => 'fa fa-align-right',
],
'justify' => [
'title' => __( 'Justified', 'themeisle-companion' ),
'icon' => 'fa fa-align-justify',
],
],
'default' => 'center',
'selectors' => [
'{{WRAPPER}} .obfx-feature-list' => 'text-align: {{VALUE}};',
],
]
);
$this->end_controls_section(); // end section-features
}
/**
* Content > Button section.
*/
private function button_section() {
$this->start_controls_section(
'section_button',
[
'label' => __( 'Button', 'themeisle-companion' ),
]
);
$this->add_control(
'button_text',
[
'type' => \Elementor\Controls_Manager::TEXT,
'label' => __( 'Text', 'themeisle-companion' ),
'placeholder' => __( 'Buy Now', 'themeisle-companion' ),
'default' => __( 'Buy Now', 'themeisle-companion' ),
]
);
$this->add_control(
'button_link',
[
'type' => \Elementor\Controls_Manager::URL,
'label' => __( 'Link', 'themeisle-companion' ),
'placeholder' => __( 'https://example.com', 'themeisle-companion' ),
]
);
$this->add_control(
'button_icon',
[
'type' => \Elementor\Controls_Manager::ICON,
'label' => __( 'Icon', 'themeisle-companion' ),
'label_block' => true,
'default' => '',
]
);
$this->add_control(
'button_icon_align',
[
'type' => \Elementor\Controls_Manager::SELECT,
'label' => __( 'Icon Position', 'themeisle-companion' ),
'default' => 'left',
'options' => [
'left' => __( 'Before', 'themeisle-companion' ),
'right' => __( 'After', 'themeisle-companion' ),
],
'condition' => [
'button_icon!' => '',
],
]
);
$this->add_control(
'button_icon_indent',
[
'type' => \Elementor\Controls_Manager::SLIDER,
'label' => __( 'Icon Spacing', 'themeisle-companion' ),
'range' => [
'px' => [
'max' => 50,
],
],
'condition' => [
'button_icon!' => '',
],
'selectors' => [
'{{WRAPPER}} .obfx-button-icon-align-right i' => 'margin-left: {{SIZE}}{{UNIT}};',
'{{WRAPPER}} .obfx-button-icon-align-left i' => 'margin-right: {{SIZE}}{{UNIT}};',
],
]
);
$this->end_controls_section(); // end section_button
}
/**
* Style > Header section.
*/
private function header_style_section() {
$this->start_controls_section(
'section_header_style',
[
'label' => __( 'Header', 'themeisle-companion' ),
'tab' => \Elementor\Controls_Manager::TAB_STYLE,
]
);
$this->add_responsive_control(
'header_padding',
[
'label' => __( 'Header Padding', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .obfx-title-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_control(
'plan_title_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Title Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#464959',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-title' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'plan_title_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-pricing-table-title',
]
);
$this->add_control(
'plan_subtitle_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Subtitle Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#60647d',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-subtitle' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'plan_subtitle_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-pricing-table-subtitle',
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(),
[
'name' => 'heading_section_bg',
'label' => __( 'Section Background', 'themeisle-companion' ),
'types' => [ 'classic', 'gradient' ],
'selector' => '{{WRAPPER}} .obfx-title-wrapper',
]
);
$this->end_controls_section(); // end section_header_style
}
/**
* Style > Price Tag section.
*/
private function price_tag_style_section() {
$this->start_controls_section(
'section_price_box',
[
'label' => __( 'Price Tag', 'themeisle-companion' ),
'tab' => \Elementor\Controls_Manager::TAB_STYLE,
]
);
$this->add_responsive_control(
'price_box_padding',
[
'type' => \Elementor\Controls_Manager::DIMENSIONS,
'label' => __( 'Price Box Padding', 'themeisle-companion' ),
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .obfx-price-wrapper' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(),
[
'name' => 'pricing_section_bg',
'label' => __( 'Section Background', 'themeisle-companion' ),
'types' => [ 'classic', 'gradient' ],
'selector' => '{{WRAPPER}} .obfx-price-wrapper',
]
);
$this->add_control(
'price_tag_heading_currency',
[
'label' => __( 'Currency', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'currency_color',
[
'label' => __( 'Currency Color', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::COLOR,
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#60647d',
'selectors' => [
'{{WRAPPER}} .obfx-price-currency' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'currency_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-price-currency',
]
);
$this->add_control(
'price_tag_heading_price',
[
'label' => __( 'Price', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'price_text_color',
[
'label' => __( 'Price Color', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::COLOR,
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#60647d',
'selectors' => [
'{{WRAPPER}} .obfx-price' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'price_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-price',
]
);
$this->add_control(
'price_tag_heading_period',
[
'label' => __( 'Period', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'period_color',
[
'label' => __( 'Period Color', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::COLOR,
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#60647d',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-period' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'price_sub_text_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-pricing-period',
]
);
$this->end_controls_section(); // end pricing-section
}
/**
* Style > Features section.
*/
private function features_style_section() {
$this->start_controls_section(
'section_features_style',
[
'label' => __( 'Features', 'themeisle-companion' ),
'tab' => \Elementor\Controls_Manager::TAB_STYLE,
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(),
[
'name' => 'features_section_bg',
'label' => __( 'Section Background', 'themeisle-companion' ),
'types' => [ 'classic', 'gradient' ],
'selector' => '{{WRAPPER}} .obfx-feature-list',
]
);
$this->add_responsive_control(
'features_box_padding',
[
'type' => \Elementor\Controls_Manager::DIMENSIONS,
'label' => __( 'Features List Padding', 'themeisle-companion' ),
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .obfx-feature-list' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_control(
'features_accented_heading',
[
'label' => __( 'Accented', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'features_accented_text_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Accented Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#60647d',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-accented' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'features_accented_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-pricing-table-accented',
]
);
$this->add_control(
'features_features_heading',
[
'label' => __( 'Features', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'features_text_color',
[
'label' => __( 'Features Color', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::COLOR,
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#b1b3c0',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-feature' => 'color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'features_features_typography',
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_1,
'selector' => '{{WRAPPER}} .obfx-pricing-table-feature',
]
);
$this->add_control(
'features_icons_heading',
[
'label' => __( 'Icons', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::HEADING,
'separator' => 'before',
]
);
$this->add_control(
'features_icon_color',
[
'label' => __( 'Icon Color', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::COLOR,
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#b1b3c0',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-feature-icon' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'features_icon_indent',
[
'type' => \Elementor\Controls_Manager::SLIDER,
'label' => __( 'Icon Spacing', 'themeisle-companion' ),
'default' => [
'size' => 5,
],
'range' => [
'px' => [
'max' => 50,
],
],
'selectors' => [
'{{WRAPPER}} i.obfx-pricing-table-feature-icon' => 'margin-right: {{SIZE}}{{UNIT}};',
],
]
);
$this->end_controls_section(); // end section_features_style
}
/**
* Style > Button section.
*/
private function button_style_section() {
$this->start_controls_section(
'section_button_style',
[
'label' => __( 'Button', 'themeisle-companion' ),
'tab' => \Elementor\Controls_Manager::TAB_STYLE,
]
);
$this->add_group_control(
\Elementor\Group_Control_Background::get_type(), [
'name' => 'button_section_bg',
'label' => __( 'Section Background', 'themeisle-companion' ),
'types' => [ 'classic', 'gradient' ],
'selector' => '{{WRAPPER}} .obfx-pricing-table-button-wrapper',
]
);
$this->add_group_control(
\Elementor\Group_Control_Typography::get_type(),
[
'name' => 'typography',
'label' => __( 'Typography', 'themeisle-companion' ),
'scheme' => \Elementor\Scheme_Typography::TYPOGRAPHY_4,
'selector' => '{{WRAPPER}} .obfx-pricing-table-button-wrapper',
]
);
$this->add_control(
'border_radius',
[
'label' => __( 'Border Radius', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', '%' ],
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
$this->add_control(
'text_padding',
[
'label' => __( 'Padding', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::DIMENSIONS,
'size_units' => [ 'px', 'em', '%' ],
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
],
]
);
// Add the tabbed control.
$this->tabbed_button_controls();
$this->end_controls_section(); // end section_button_style
}
/**
* Tabs for the Style > Button section.
*/
private function tabbed_button_controls() {
$this->start_controls_tabs( 'tabs_background' );
$this->start_controls_tab(
'tab_background_normal',
[
'label' => __( 'Normal', 'themeisle-companion' ),
]
);
$this->add_control(
'button_text_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Text Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#fff',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'button_bg_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Background Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#93c64f',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button' => 'background-color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Box_Shadow::get_type(),
[
'name' => 'button_box_shadow',
'selector' => '{{WRAPPER}} .obfx-pricing-table-button',
'separator' => '',
]
);
$this->end_controls_tab();
$this->start_controls_tab(
'tab_background_hover',
[
'label' => __( 'Hover', 'themeisle-companion' ),
]
);
$this->add_control(
'button_hover_text_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Text Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#fff',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button:hover' => 'color: {{VALUE}};',
],
]
);
$this->add_control(
'button_hover_bg_color',
[
'type' => \Elementor\Controls_Manager::COLOR,
'label' => __( 'Background Color', 'themeisle-companion' ),
'scheme' => [
'type' => \Elementor\Scheme_Color::get_type(),
'value' => \Elementor\Scheme_Color::COLOR_1,
],
'default' => '#74c600',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button:hover' => 'background-color: {{VALUE}};',
],
]
);
$this->add_group_control(
\Elementor\Group_Control_Box_Shadow::get_type(),
[
'name' => 'button_hover_box_shadow',
'selector' => '{{WRAPPER}} .obfx-pricing-table-button:hover',
'separator' => '',
]
);
$this->add_control(
'background_hover_transition',
[
'label' => __( 'Transition Duration', 'themeisle-companion' ),
'type' => \Elementor\Controls_Manager::SLIDER,
'default' => [
'size' => 0.3,
],
'range' => [
'px' => [
'max' => 3,
'step' => 0.1,
],
],
'render_type' => 'ui',
'selectors' => [
'{{WRAPPER}} .obfx-pricing-table-button' => 'transition: all {{SIZE}}s ease;',
],
]
);
$this->end_controls_tab();
$this->end_controls_tabs();
}
/**
* Render function to output the pricing table.
*/
protected function render() {
$settings = $this->get_settings();
$this->maybe_load_widget_style();
$this->add_render_attribute( 'title', 'class', 'obfx-pricing-table-title' );
$this->add_render_attribute( 'subtitle', 'class', 'obfx-pricing-table-subtitle' );
$this->add_render_attribute( 'button', 'class', 'obfx-pricing-table-button' );
$this->add_render_attribute( 'button_icon', 'class', $settings['button_icon'] );
$this->add_render_attribute( 'button_icon_align', 'class', 'obfx-button-icon-align-' . $settings['button_icon_align'] );
if ( ! empty( $settings['button_link']['url'] ) ) {
$this->add_render_attribute( 'button', 'href', $settings['button_link']['url'] );
if ( ! empty( $settings['button_link']['is_external'] ) ) {
$this->add_render_attribute( 'button', 'target', '_blank' );
}
if ( ! empty( $settings['button_link']['nofollow'] ) ) {
$this->add_render_attribute( 'button', 'rel', 'nofollow' );
}
}
$output = '';
$output .= '<div class="obfx-pricing-table-wrapper">';
if ( ! empty( $settings['title'] ) || ! empty( $settings['subtitle'] ) ) {
$output .= '<div class="obfx-title-wrapper">';
if ( ! empty( $settings['title'] ) ) {
// Start of title tag.
$output .= '<' . esc_html( $settings['title_tag'] ) . ' ' . $this->get_render_attribute_string( 'title' ) . '>';
// Title string.
$output .= esc_html( $settings['title'] );
// End of title tag.
$output .= '</' . esc_html( $settings['title_tag'] ) . '>';
}
if ( ! empty( $settings['subtitle'] ) ) {
// Start of subtitle tag.
$output .= '<' . esc_html( $settings['subtitle_tag'] ) . ' ' . $this->get_render_attribute_string( 'subtitle' ) . '>';
// Subtitle string.
$output .= esc_html( $settings['subtitle'] );
// End of subtitle tag.
$output .= '</' . esc_html( $settings['subtitle_tag'] ) . '>';
}
$output .= '</div> <!-- /.obfx-title-wrapper -->';
}
if ( ! empty( $settings['price_tag_text'] ) || ! empty( $settings['price_tag_currency'] ) || ! empty( $settings['price_tag_period'] ) ) {
$output .= '<div class="obfx-price-wrapper">';
if ( ! empty( $settings['price_tag_currency'] ) && ( $settings['price_tag_currency_position'] == 'left' ) ) {
$output .= '<span class="obfx-price-currency">' . esc_html( $settings['price_tag_currency'] ) . '</span>';
}
if ( ( isset( $settings['price_tag_text'] ) && $settings['price_tag_text'] === '0' ) || ! empty( $settings['price_tag_text'] ) ) {
$output .= '<span class="obfx-price">' . esc_html( $settings['price_tag_text'] ) . '</span>';
}
if ( ! empty( $settings['price_tag_currency'] ) && ( $settings['price_tag_currency_position'] == 'right' ) ) {
$output .= '<span class="obfx-price-currency">' . esc_html( $settings['price_tag_currency'] ) . '</span>';
}
if ( ! empty( $settings['price_tag_period'] ) ) {
$output .= '<span class="obfx-pricing-period">' . esc_html( $settings['price_tag_period'] ) . '</span>';
}
$output .= '</div> <!-- /.obfx-price-wrapper -->';
}
if ( count( $settings['feature_list'] ) ) {
$output .= '<ul class="obfx-feature-list">';
foreach ( $settings['feature_list'] as $feature ) {
$output .= '<li>';
if ( ! empty( $feature['feature_icon'] ) ) {
$output .= '<i class="obfx-pricing-table-feature-icon ' . esc_attr( $feature['feature_icon'] ) . '"></i>';
}
if ( ! empty( $feature['accent'] ) ) {
$output .= '<span class="obfx-pricing-table-accented">' . esc_html( $feature['accent'] ) . '</span>';
$output .= ' ';
}
if ( ! empty( $feature['text'] ) ) {
$output .= '<span class="obfx-pricing-table-feature">' . esc_html( $feature['text'] ) . '</span>';
}
$output .= '</li>';
}
$output .= '</ul>';
}
if ( ! empty( $settings['button_text'] ) ) {
$output .= '<div class="obfx-pricing-table-button-wrapper">';
$output .= '<a ' . $this->get_render_attribute_string( 'button' ) . '>';
if ( ! empty( $settings['button_icon'] ) && ( $settings['button_icon_align'] == 'left' ) ) {
$output .= '<span ' . $this->get_render_attribute_string( 'button_icon_align' ) . ' >';
$output .= '<i ' . $this->get_render_attribute_string( 'button_icon' ) . '></i>';
}
$output .= '<span class="elementor-button-text">' . esc_html( $settings['button_text'] ) . '</span>';
if ( ! empty( $settings['button_icon'] ) && ( $settings['button_icon_align'] == 'right' ) ) {
$output .= '<span ' . $this->get_render_attribute_string( 'button_icon_align' ) . ' >';
$output .= '<i ' . $this->get_render_attribute_string( 'button_icon' ) . '></i>';
}
$output .= '</a>';
$output .= '</div> <!-- /.obfx-pricing-table-button-wrapper -->';
}
$output .= '</div> <!-- /.obfx-pricing-table-wrapper -->';
echo $output;
}
/**
* Load the widget style dynamically if it is a widget preview
* or enqueue style and scripts if not
*
* This way we are sure that the assets files are loaded only when this block is present in page.
*/
protected function maybe_load_widget_style() {
if ( \Elementor\Plugin::$instance->editor->is_edit_mode() === true && apply_filters( 'themeisle_content_forms_register_default_style', true ) ) { ?>
<style>
<?php echo file_get_contents( plugin_dir_path( dirname( dirname(__FILE__ ) ) ) . 'css/public.css' ) ?>
</style>
<?php
} else {
wp_enqueue_style('eaw-elementor');
}
}
}