126 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
use Elementor\Frontend;
 | 
						|
use Elementor\Icons_Manager;
 | 
						|
 | 
						|
extract( shortcode_atts( array(
 | 
						|
	'tabs_items'    => array(),
 | 
						|
	'item_icon' => '',
 | 
						|
	'tabs_layout' => 'horizontal',
 | 
						|
	'tabs_interactivity' => 'click',
 | 
						|
	'equal_height' => '',
 | 
						|
	'content_animation' => '',
 | 
						|
 | 
						|
), $settings ) );
 | 
						|
 | 
						|
$widget_class = 'stratum-advanced-tabs';
 | 
						|
 | 
						|
$is_active = false;
 | 
						|
foreach ( $tabs_items as $index => $item ) {
 | 
						|
	if ($item['active']){
 | 
						|
		$is_active = true;
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
$class = stratum_css_class([
 | 
						|
	$widget_class,
 | 
						|
	'tabs-layout-'.esc_attr($tabs_layout),
 | 
						|
	($content_animation != 'none' ? $content_animation.'-animation' : ''),
 | 
						|
]);
 | 
						|
 | 
						|
$accordion_options = [
 | 
						|
	'tabs_interactivity' => $tabs_interactivity,
 | 
						|
	'equal_height' => ($equal_height == 'yes' ? true : false),
 | 
						|
];
 | 
						|
 | 
						|
$frontend = new Frontend;
 | 
						|
 | 
						|
ob_start();
 | 
						|
	Icons_Manager::render_icon( $item_icon, [ 'aria-hidden' => 'true' ] );
 | 
						|
$item_icon_html = ob_get_clean();
 | 
						|
 | 
						|
$once_active_nav = false;
 | 
						|
$once_active_content = false;
 | 
						|
 | 
						|
?>
 | 
						|
<div class="<?php echo esc_attr( $class ); ?>" data-tabs-options="<?php echo esc_attr( json_encode($accordion_options) ); ?>">
 | 
						|
	<div class="<?php echo esc_attr( $widget_class . '__navigation' ); ?>">
 | 
						|
		<?php
 | 
						|
		foreach ( $tabs_items as $index => $item ) {
 | 
						|
			$current_item = 'elementor-repeater-item-'.$item['_id'];
 | 
						|
 | 
						|
			$item_class = stratum_css_class([
 | 
						|
				$widget_class . '__navigation-item',
 | 
						|
				(($item['active'] == 'yes' && $once_active_nav == false) || ($index == 0 && $is_active == false) ? 'active-nav' : ''),
 | 
						|
				$current_item
 | 
						|
			]);
 | 
						|
 | 
						|
			if ($item['active'] == 'yes'){
 | 
						|
				$once_active_nav = true;
 | 
						|
			}
 | 
						|
 | 
						|
			ob_start();
 | 
						|
				Icons_Manager::render_icon( $item['tab_icon'], [ 'aria-hidden' => 'true' ] );
 | 
						|
			$item_icon_html = ob_get_clean();
 | 
						|
			?>
 | 
						|
			<div data-tab-id="<?php echo esc_attr($index); ?>" class="<?php echo esc_attr( $item_class ); ?>">
 | 
						|
				<?php
 | 
						|
				if ( !empty($item['tab_title']) ) {
 | 
						|
					?>
 | 
						|
					<div class="<?php echo esc_attr( $widget_class . '__title' ); ?>">
 | 
						|
						<?php echo esc_html($item['tab_title']); ?>
 | 
						|
					</div>
 | 
						|
				<?php
 | 
						|
				}
 | 
						|
				if ( !empty($item_icon_html) ) {
 | 
						|
					?>
 | 
						|
					<div class="<?php echo esc_attr( $widget_class . '__icon' ); ?>">
 | 
						|
						<span><?php echo $item_icon_html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></span>
 | 
						|
					</div>
 | 
						|
				<?php
 | 
						|
				}
 | 
						|
				?>
 | 
						|
			</div>
 | 
						|
		<?php
 | 
						|
		}
 | 
						|
		?>
 | 
						|
	</div>
 | 
						|
	<div class="<?php echo esc_attr( $widget_class . '__content' ); ?>">
 | 
						|
		<?php
 | 
						|
		foreach ( $tabs_items as $index => $item ) {
 | 
						|
			$current_item = 'elementor-repeater-item-'.$item['_id'];
 | 
						|
 | 
						|
			$item_class = stratum_css_class([
 | 
						|
				$widget_class . '__content-item',
 | 
						|
				(($item['active'] == 'yes' && $once_active_content == false ) || ($index == 0 && $is_active == false) ? 'active-content' : ''),
 | 
						|
				$current_item
 | 
						|
			]);
 | 
						|
 | 
						|
			if ($item['active'] == 'yes'){
 | 
						|
				$once_active_content = true;
 | 
						|
			}
 | 
						|
			?>
 | 
						|
			<div data-tab-id="<?php echo esc_attr($index); ?>" class="<?php echo esc_attr( $item_class );?>">
 | 
						|
				<div class="<?php echo esc_attr( $widget_class . '__content-wrapper' ); ?>">
 | 
						|
					<div class="<?php echo esc_attr( $widget_class . '__content-overlay' ); ?>"></div>
 | 
						|
					<div class="<?php echo esc_attr( $widget_class . '__text' ); ?>">
 | 
						|
						<?php
 | 
						|
						if ( $item['content_type'] == 'text' ) {
 | 
						|
							if ( !empty($item['tab_text']) ) {
 | 
						|
								echo wp_kses_post( $item['tab_text'] );
 | 
						|
							}
 | 
						|
						} elseif ( $item['content_type'] == 'template' ) {
 | 
						|
							if ( !empty($item['tab_template']) ) {
 | 
						|
								echo $frontend->get_builder_content($item['tab_template'], true); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
 | 
						|
							}
 | 
						|
						}
 | 
						|
						?>
 | 
						|
					</div>
 | 
						|
				</div>
 | 
						|
			</div>
 | 
						|
		<?php
 | 
						|
		}
 | 
						|
		?>
 | 
						|
	</div>
 | 
						|
</div>
 |