/
home
/
suroeste
/
public_html
/
wp-content
/
plugins
/
elementor
/
includes
/
widgets
/
/home/suroeste/public_html/wp-content/plugins/elementor/includes/widgets
mkdir
upload
Name
Size
Mode
Actions
traits/
-
0755
rm
accordion.php
19843
0644
edit
dl
rm
alert.php
13457
0644
edit
dl
rm
audio.php
7490
0644
edit
dl
rm
button.php
2847
0644
edit
dl
rm
common.php
28957
0644
edit
dl
rm
counter.php
17287
0644
edit
dl
rm
divider.php
33670
0644
edit
dl
rm
google-maps.php
6623
0644
edit
dl
rm
heading.php
10256
0644
edit
dl
rm
html.php
2546
0644
edit
dl
rm
icon-box.php
21537
0644
edit
dl
rm
icon-list.php
22464
0644
edit
dl
rm
icon.php
12729
0644
edit
dl
rm
image-box.php
17773
0644
edit
dl
rm
image-carousel.php
27031
0644
edit
dl
rm
image-gallery.php
10844
0644
edit
dl
rm
image.php
19387
0644
edit
dl
rm
inner-section.php
917
0644
edit
dl
rm
menu-anchor.php
3632
0644
edit
dl
rm
progress.php
12108
0644
edit
dl
rm
rating.php
7507
0644
edit
dl
rm
read-more.php
3247
0644
edit
dl
rm
share-buttons.php
1029
0644
edit
dl
rm
shortcode.php
3271
0644
edit
dl
rm
sidebar.php
2978
0644
edit
dl
rm
social-icons.php
16204
0644
edit
dl
rm
spacer.php
3328
0644
edit
dl
rm
star-rating.php
13232
0644
edit
dl
rm
tabs.php
16663
0644
edit
dl
rm
testimonial.php
17260
0644
edit
dl
rm
text-editor.php
12328
0644
edit
dl
rm
toggle.php
20005
0644
edit
dl
rm
video.php
34689
0644
edit
dl
rm
wordpress.php
7051
0644
edit
dl
rm
Edit:
/home/suroeste/public_html/wp-content/plugins/elementor/includes/widgets/tabs.php
(16663B)
<?php namespace Elementor; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } use Elementor\Core\Kits\Documents\Tabs\Global_Colors; use Elementor\Core\Kits\Documents\Tabs\Global_Typography; /** * Elementor tabs widget. * * Elementor widget that displays vertical or horizontal tabs with different * pieces of content. * * @since 1.0.0 */ class Widget_Tabs extends Widget_Base { /** * Get widget name. * * Retrieve tabs widget name. * * @since 1.0.0 * @access public * * @return string Widget name. */ public function get_name() { return 'tabs'; } /** * Get widget title. * * Retrieve tabs widget title. * * @since 1.0.0 * @access public * * @return string Widget title. */ public function get_title() { return esc_html__( 'Tabs', 'elementor' ); } /** * Get widget icon. * * Retrieve tabs widget icon. * * @since 1.0.0 * @access public * * @return string Widget icon. */ public function get_icon() { return 'eicon-tabs'; } /** * Get widget keywords. * * Retrieve the list of keywords the widget belongs to. * * @since 2.1.0 * @access public * * @return array Widget keywords. */ public function get_keywords() { return [ 'tabs', 'accordion', 'toggle' ]; } protected function is_dynamic_content(): bool { return false; } public function show_in_panel(): bool { return ! Plugin::$instance->experiments->is_feature_active( 'nested-elements' ); } /** * Register tabs widget controls. * * Adds different input fields to allow the user to change and customize the widget settings. * * @since 3.1.0 * @access protected */ protected function register_controls() { $start = is_rtl() ? 'end' : 'start'; $end = is_rtl() ? 'start' : 'end'; $this->start_controls_section( 'section_tabs', [ 'label' => esc_html__( 'Tabs', 'elementor' ), ] ); $repeater = new Repeater(); $repeater->add_control( 'tab_title', [ 'label' => esc_html__( 'Title', 'elementor' ), 'type' => Controls_Manager::TEXT, 'default' => esc_html__( 'Tab Title', 'elementor' ), 'placeholder' => esc_html__( 'Tab Title', 'elementor' ), 'label_block' => true, 'dynamic' => [ 'active' => true, ], ] ); $repeater->add_control( 'tab_content', [ 'label' => esc_html__( 'Content', 'elementor' ), 'default' => esc_html__( 'Tab Content', 'elementor' ), 'placeholder' => esc_html__( 'Tab Content', 'elementor' ), 'type' => Controls_Manager::WYSIWYG, ] ); $is_nested_tabs_active = Plugin::$instance->widgets_manager->get_widget_types( 'nested-tabs' ); if ( $is_nested_tabs_active ) { $this->add_deprecation_message( '3.8.0', esc_html__( 'You are currently editing a Tabs Widget in its old version. Any new tabs widget dragged into the canvas will be the new Tab widget, with the improved Nested capabilities.', 'elementor' ), 'nested-tabs' ); } $this->add_control( 'tabs', [ 'label' => esc_html__( 'Tabs Items', 'elementor' ), 'type' => Controls_Manager::REPEATER, 'fields' => $repeater->get_controls(), 'default' => [ [ 'tab_title' => esc_html__( 'Tab #1', 'elementor' ), 'tab_content' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor' ), ], [ 'tab_title' => esc_html__( 'Tab #2', 'elementor' ), 'tab_content' => esc_html__( 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.', 'elementor' ), ], ], 'title_field' => '{{{ tab_title }}}', ] ); $this->add_control( 'type', [ 'label' => esc_html__( 'Position', 'elementor' ), 'type' => Controls_Manager::CHOOSE, 'default' => 'horizontal', 'options' => [ 'vertical' => [ 'title' => esc_html__( 'Vertical', 'elementor' ), 'icon' => 'eicon-h-align-' . ( is_rtl() ? 'right' : 'left' ), ], 'horizontal' => [ 'title' => esc_html__( 'Horizontal', 'elementor' ), 'icon' => 'eicon-v-align-top', ], ], 'prefix_class' => 'elementor-tabs-view-', 'separator' => 'before', ] ); $this->add_control( 'tabs_align_horizontal', [ 'label' => esc_html__( 'Alignment', 'elementor' ), 'type' => Controls_Manager::CHOOSE, 'options' => [ '' => [ 'title' => esc_html__( 'Start', 'elementor' ), 'icon' => "eicon-align-$start-h", ], 'center' => [ 'title' => esc_html__( 'Center', 'elementor' ), 'icon' => 'eicon-align-center-h', ], 'end' => [ 'title' => esc_html__( 'End', 'elementor' ), 'icon' => "eicon-align-$end-h", ], 'stretch' => [ 'title' => esc_html__( 'Stretch', 'elementor' ), 'icon' => 'eicon-align-stretch-h', ], ], 'prefix_class' => 'elementor-tabs-alignment-', 'condition' => [ 'type' => 'horizontal', ], ] ); $this->add_control( 'tabs_align_vertical', [ 'label' => esc_html__( 'Alignment', 'elementor' ), 'type' => Controls_Manager::CHOOSE, 'options' => [ '' => [ 'title' => esc_html__( 'Start', 'elementor' ), 'icon' => 'eicon-align-start-v', ], 'center' => [ 'title' => esc_html__( 'Center', 'elementor' ), 'icon' => 'eicon-align-center-v', ], 'end' => [ 'title' => esc_html__( 'End', 'elementor' ), 'icon' => 'eicon-align-end-v', ], 'stretch' => [ 'title' => esc_html__( 'Stretch', 'elementor' ), 'icon' => 'eicon-align-stretch-v', ], ], 'prefix_class' => 'elementor-tabs-alignment-', 'condition' => [ 'type' => 'vertical', ], ] ); $this->end_controls_section(); $this->start_controls_section( 'section_tabs_style', [ 'label' => esc_html__( 'Tabs', 'elementor' ), 'tab' => Controls_Manager::TAB_STYLE, ] ); $this->add_control( 'navigation_width', [ 'label' => esc_html__( 'Navigation Width', 'elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => [ 'px', '%', 'em', 'rem', 'custom' ], 'default' => [ 'unit' => '%', ], 'range' => [ 'px' => [ 'min' => 10, 'max' => 500, ], '%' => [ 'min' => 10, 'max' => 50, ], 'em' => [ 'min' => 1, 'max' => 50, ], 'rem' => [ 'min' => 1, 'max' => 50, ], ], 'selectors' => [ '{{WRAPPER}} .elementor-tabs-wrapper' => 'width: {{SIZE}}{{UNIT}}', ], 'condition' => [ 'type' => 'vertical', ], ] ); $this->add_control( 'border_width', [ 'label' => esc_html__( 'Border Width', 'elementor' ), 'type' => Controls_Manager::SLIDER, 'size_units' => [ 'px', '%', 'em', 'rem', 'vw', 'custom' ], 'default' => [ 'size' => 1, ], 'range' => [ 'px' => [ 'max' => 20, ], 'em' => [ 'max' => 2, ], ], 'selectors' => [ '{{WRAPPER}} .elementor-tab-title, {{WRAPPER}} .elementor-tab-title:before, {{WRAPPER}} .elementor-tab-title:after, {{WRAPPER}} .elementor-tab-content, {{WRAPPER}} .elementor-tabs-content-wrapper' => 'border-width: {{SIZE}}{{UNIT}};', ], ] ); $this->add_control( 'border_color', [ 'label' => esc_html__( 'Border Color', 'elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .elementor-tab-mobile-title, {{WRAPPER}} .elementor-tab-desktop-title.elementor-active, {{WRAPPER}} .elementor-tab-title:before, {{WRAPPER}} .elementor-tab-title:after, {{WRAPPER}} .elementor-tab-content, {{WRAPPER}} .elementor-tabs-content-wrapper' => 'border-color: {{VALUE}};', ], ] ); $this->add_control( 'background_color', [ 'label' => esc_html__( 'Background Color', 'elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .elementor-tab-desktop-title.elementor-active' => 'background-color: {{VALUE}};', '{{WRAPPER}} .elementor-tabs-content-wrapper' => 'background-color: {{VALUE}};', ], ] ); $this->add_control( 'heading_title', [ 'label' => esc_html__( 'Title', 'elementor' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', ] ); $this->add_control( 'tab_color', [ 'label' => esc_html__( 'Color', 'elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .elementor-tab-title, {{WRAPPER}} .elementor-tab-title a' => 'color: {{VALUE}}', ], 'global' => [ 'default' => Global_Colors::COLOR_PRIMARY, ], ] ); $this->add_control( 'tab_active_color', [ 'label' => esc_html__( 'Active Color', 'elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .elementor-tab-title.elementor-active, {{WRAPPER}} .elementor-tab-title.elementor-active a' => 'color: {{VALUE}}', ], 'global' => [ 'default' => Global_Colors::COLOR_ACCENT, ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'tab_typography', 'selector' => '{{WRAPPER}} .elementor-tab-title', 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_PRIMARY, ], ] ); $this->add_group_control( Group_Control_Text_Stroke::get_type(), [ 'name' => 'text_stroke', 'selector' => '{{WRAPPER}} .elementor-tab-title', ] ); $this->add_group_control( Group_Control_Text_Shadow::get_type(), [ 'name' => 'title_shadow', 'selector' => '{{WRAPPER}} .elementor-tab-title', ] ); $this->add_control( 'title_align', [ 'label' => esc_html__( 'Alignment', 'elementor' ), 'type' => Controls_Manager::CHOOSE, 'options' => [ 'left' => [ 'title' => esc_html__( 'Left', 'elementor' ), 'icon' => 'eicon-text-align-left', ], 'center' => [ 'title' => esc_html__( 'Center', 'elementor' ), 'icon' => 'eicon-text-align-center', ], 'right' => [ 'title' => esc_html__( 'Right', 'elementor' ), 'icon' => 'eicon-text-align-right', ], ], 'selectors' => [ '{{WRAPPER}} .elementor-tab-title' => 'text-align: {{VALUE}};', ], 'condition' => [ 'tabs_align' => 'stretch', ], ] ); $this->add_control( 'heading_content', [ 'label' => esc_html__( 'Content', 'elementor' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', ] ); $this->add_control( 'content_color', [ 'label' => esc_html__( 'Color', 'elementor' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .elementor-tab-content' => 'color: {{VALUE}};', ], 'global' => [ 'default' => Global_Colors::COLOR_TEXT, ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'content_typography', 'selector' => '{{WRAPPER}} .elementor-tab-content', 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_TEXT, ], ] ); $this->add_group_control( Group_Control_Text_Shadow::get_type(), [ 'name' => 'content_shadow', 'selector' => '{{WRAPPER}} .elementor-tab-content', ] ); $this->end_controls_section(); } /** * Render tabs widget output on the frontend. * * Written in PHP and used to generate the final HTML. * * @since 1.0.0 * @access protected */ protected function render() { $tabs = $this->get_settings_for_display( 'tabs' ); $id_int = substr( $this->get_id_int(), 0, 3 ); $this->add_render_attribute( 'elementor-tabs', 'class', 'elementor-tabs' ); ?> <div <?php $this->print_render_attribute_string( 'elementor-tabs' ); ?>> <div class="elementor-tabs-wrapper" role="tablist" > <?php foreach ( $tabs as $index => $item ) : $tab_count = $index + 1; $tab_title_setting_key = $this->get_repeater_setting_key( 'tab_title', 'tabs', $index ); $this->add_render_attribute( $tab_title_setting_key, [ 'id' => 'elementor-tab-title-' . $id_int . $tab_count, 'class' => [ 'elementor-tab-title', 'elementor-tab-desktop-title' ], 'aria-selected' => 1 === $tab_count ? 'true' : 'false', 'data-tab' => $tab_count, 'role' => 'tab', 'tabindex' => 1 === $tab_count ? '0' : '-1', 'aria-controls' => 'elementor-tab-content-' . $id_int . $tab_count, 'aria-expanded' => 'false', ] ); ?> <div <?php $this->print_render_attribute_string( $tab_title_setting_key ); ?>><?php // PHPCS - the main text of a widget should not be escaped. echo $item['tab_title']; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?></div> <?php endforeach; ?> </div> <div class="elementor-tabs-content-wrapper" role="tablist" aria-orientation="vertical"> <?php foreach ( $tabs as $index => $item ) : $tab_count = $index + 1; $hidden = 1 === $tab_count ? 'false' : 'hidden'; $tab_content_setting_key = $this->get_repeater_setting_key( 'tab_content', 'tabs', $index ); $tab_title_mobile_setting_key = $this->get_repeater_setting_key( 'tab_title_mobile', 'tabs', $tab_count ); $this->add_render_attribute( $tab_content_setting_key, [ 'id' => 'elementor-tab-content-' . $id_int . $tab_count, 'class' => [ 'elementor-tab-content', 'elementor-clearfix' ], 'data-tab' => $tab_count, 'role' => 'tabpanel', 'aria-labelledby' => 'elementor-tab-title-' . $id_int . $tab_count, 'tabindex' => '0', 'hidden' => $hidden, ] ); $this->add_render_attribute( $tab_title_mobile_setting_key, [ 'class' => [ 'elementor-tab-title', 'elementor-tab-mobile-title' ], 'aria-selected' => 1 === $tab_count ? 'true' : 'false', 'data-tab' => $tab_count, 'role' => 'tab', 'tabindex' => 1 === $tab_count ? '0' : '-1', 'aria-controls' => 'elementor-tab-content-' . $id_int . $tab_count, 'aria-expanded' => 'false', ] ); $this->add_inline_editing_attributes( $tab_content_setting_key, 'advanced' ); ?> <div <?php $this->print_render_attribute_string( $tab_title_mobile_setting_key ); ?>><?php $this->print_unescaped_setting( 'tab_title', 'tabs', $index ); ?></div> <div <?php $this->print_render_attribute_string( $tab_content_setting_key ); ?>><?php $this->print_text_editor( $item['tab_content'] ); ?></div> <?php endforeach; ?> </div> </div> <?php } /** * Render tabs widget output in the editor. * * Written as a Backbone JavaScript template and used to generate the live preview. * * @since 2.9.0 * @access protected */ protected function content_template() { ?> <div class="elementor-tabs" role="tablist" aria-orientation="vertical"> <# if ( settings.tabs ) { var elementUid = view.getIDInt().toString().substr( 0, 3 ); #> <div class="elementor-tabs-wrapper" role="tablist"> <# _.each( settings.tabs, function( item, index ) { var tabCount = index + 1, tabUid = elementUid + tabCount, tabTitleKey = 'tab-title-' + tabUid; view.addRenderAttribute( tabTitleKey, { 'id': 'elementor-tab-title-' + tabUid, 'class': [ 'elementor-tab-title','elementor-tab-desktop-title' ], 'data-tab': tabCount, 'role': 'tab', 'tabindex': 1 === tabCount ? '0' : '-1', 'aria-controls': 'elementor-tab-content-' + tabUid, 'aria-expanded': 'false', } ); #> <div {{{ view.getRenderAttributeString( tabTitleKey ) }}}>{{{ item.tab_title }}}</div> <# } ); #> </div> <div class="elementor-tabs-content-wrapper"> <# _.each( settings.tabs, function( item, index ) { var tabCount = index + 1, tabContentKey = view.getRepeaterSettingKey( 'tab_content', 'tabs',index ); view.addRenderAttribute( tabContentKey, { 'id': 'elementor-tab-content-' + elementUid + tabCount, 'class': [ 'elementor-tab-content', 'elementor-clearfix', 'elementor-repeater-item-' + item._id ], 'data-tab': tabCount, 'role' : 'tabpanel', 'aria-labelledby' : 'elementor-tab-title-' + elementUid + tabCount } ); view.addInlineEditingAttributes( tabContentKey, 'advanced' ); #> <div class="elementor-tab-title elementor-tab-mobile-title" data-tab="{{ tabCount }}" role="tab">{{{ item.tab_title }}}</div> <div {{{ view.getRenderAttributeString( tabContentKey ) }}}>{{{ item.tab_content }}}</div> <# } ); #> </div> <# } #> </div> <?php } }
Save
cmd:
run