add_skin( new Skins\Skin_Classic( $this ) ); $this->add_skin( new Skins\Skin_Carousel( $this ) ); } /** * Set filters * * Set the filter terms * * @since 1.6.0 * @param taxonomy The taxonomy for the terms * @return void */ public function set_filters( $taxonomy = null ) { if ( ! $taxonomy ) return; if ( 'yes' === $this->get_skin_setting( 'filters_show_all' ) && 'yes' === $this->get_skin_setting( 'infinite_scroll' ) ) { $this->set_all_filters( $taxonomy ); } else { $this->set_query_filters( $taxonomy ); } } /** * Set all Filters * * Set filters to all available for this taxonomy * * @since 1.6.0 * @param taxonomy The taxonomy for the terms * @return void */ public function set_all_filters( $taxonomy ) { $terms = get_terms( array( 'taxonomy' => $taxonomy, 'exclude' => $this->get_skin_setting( 'filters_taxonomy_exclude_' . str_replace( '-', '_', $taxonomy ) ), 'orderby' => $this->get_skin_setting( 'filters_orderby' ), 'order' => $this->get_skin_setting( 'filters_order' ), ) ); // Set filters for filter menu foreach ($terms as $term) { $this->_filters[ $term->term_id ] = $term; } $this->set_posts_filters( $taxonomy ); } /** * Set Query Filters * * Set filters to those corresponding to queries posts * * @since 1.6.0 * @param taxonomy The taxonomy for the terms * @return void */ public function set_query_filters( $taxonomy ) { $taxonomy_terms = get_terms([ 'taxonomy' => $taxonomy, 'exclude' => $this->get_skin_setting( 'filters_taxonomy_exclude_' . str_replace( '-', '_', $taxonomy ) ), 'orderby' => $this->get_skin_setting( 'filters_orderby' ), 'order' => $this->get_skin_setting( 'filters_order' ), ]); $posts_filters = array(); // Populate our filters with all terms foreach ( $taxonomy_terms as $key => $term ) { $this->_filters[ $term->term_id ] = $term; } // Create an array of query filters foreach ( $this->_query->posts as $post ) { $terms = wp_get_post_terms( $post->ID, $taxonomy ); foreach ($terms as $term) { if ( ! array_key_exists( $term->term_id, $posts_filters ) ) { $posts_filters[ $term->term_id ] = $term; } } } // Filter the terms to include only our filters foreach ( $this->_filters as $key => $_filter ) { if ( ! array_key_exists( $key, $posts_filters ) ) { unset( $this->_filters[ $key ] ); } } $this->set_posts_filters( $taxonomy ); } /** * Set Posts Filters * * Get terms from posts * * @since 1.6.0 * @param taxonomy The taxonomy for the terms * @return void */ public function set_posts_filters( $taxonomy ) { // Set filters for each post foreach ( $this->_query->posts as $post ) { $filters = []; // Get post terms $post_terms = wp_get_post_terms( $post->ID, $taxonomy, array( 'orderby' => $this->get_skin_setting( 'filters_orderby' ), 'order' => $this->get_skin_setting( 'filters_order' ), ) ); // Populate array with post terms foreach ( $post_terms as $post_term ) { $filters[ $post_term->term_id ] = $post_term; } // Set pot filters $post->filters = $filters; } } /** * Get Filters * * @since 1.6.0 * @return _filters|array */ public function get_filters() { return $this->_filters; } /** * Get Terms * * @since 1.6.0 * @return array */ public function get_terms() { $settings = $this->get_settings(); $taxonomies = $settings['post_terms_taxonomy']; $_terms = Utils::get_terms( $taxonomies ); return $_terms; } /** * Register Widget Controls * * @since 1.6.0 * @return void */ protected function _register_controls() { $this->register_layout_content_controls(); $this->register_query_content_controls(); $this->register_media_content_controls(); $this->register_terms_content_controls(); $this->register_title_content_controls(); $this->register_metas_content_controls(); $this->register_excerpt_content_controls(); $this->register_button_content_controls(); $this->register_order_content_controls(); $this->register_post_style_controls(); $this->register_header_style_controls(); $this->register_media_style_controls(); $this->register_body_style_controls(); $this->register_footer_style_controls(); $this->register_terms_style_controls(); $this->register_metas_style_controls(); $this->register_title_style_controls(); $this->register_excerpt_style_controls(); $this->register_button_style_controls(); $this->register_hover_animation_controls(); $this->register_advanced_controls(); } /** * Register Layout Content Controls * * @since 1.6.0 * @return void */ protected function register_layout_content_controls() { $this->start_controls_section( 'section_layout', [ 'label' => __( 'Layout', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_CONTENT, ] ); $this->add_control( 'skin_source', [ 'label' => __( 'Post Skin', 'elementor-extras' ), 'type' => Controls_Manager::SELECT, 'default' => '', 'options' => [ '' => __( 'Default', 'elementor-extras' ), 'template' => __( 'Template', 'elementor-extras' ), ], ] ); $this->add_control( 'skin_template', [ 'label' => __( 'Post Template', 'elementor-extras' ), 'placeholder' => __( 'Search...', 'elementor-extras' ), 'type' => 'ee-query', 'query_type' => 'templates', 'label_block' => false, 'multiple' => false, 'condition' => [ 'skin_source' => 'template', ], ] ); $this->add_responsive_control( 'columns', [ 'label' => __( 'Columns', 'elementor-extras' ), 'type' => Controls_Manager::SELECT, 'default' => '3', 'tablet_default' => '2', 'mobile_default' => '1', 'options' => [ '' => __( 'Default', 'elementor-extras' ), '1' => '1', '2' => '2', '3' => '3', '4' => '4', '5' => '5', '6' => '6', ], 'prefix_class' => 'ee-grid-columns%s-', 'frontend_available' => true, 'condition' => [ '_skin!' => 'carousel', ], ] ); $this->add_control( 'posts_per_page', [ 'label' => __( 'Posts Per Page', 'elementor-extras' ), 'title' => __( 'Important: This won\'t have any effect on archive pages and will be replaced by the default Wordpress setting.', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => 6, 'condition' => [ 'posts_post_type!' => 'current_query', ], ] ); $this->end_controls_section(); } /** * Register Order Content Controls * * @since 1.6.0 * @return void */ protected function register_order_content_controls() { $this->start_controls_section( 'section_order', [ 'label' => __( 'Order', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_CONTENT, 'condition' => [ 'skin_source' => '', ], ] ); $this->add_control( 'post_areas_order_heading', [ 'label' => __( 'Areas', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, ] ); $this->add_control( 'order_areas_description', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => __( 'Give each area an order number to define the order in which they appear in the post.', 'elementor-extras' ), 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info', ] ); $this->add_responsive_control( 'post_header_order', [ 'label' => __( 'Header', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'min' => 1, 'selectors' => [ '{{WRAPPER}} .ee-post__header' => 'order: {{VALUE}};', ], ] ); $this->add_responsive_control( 'post_media_order', [ 'label' => __( 'Media', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'min' => 1, 'selectors' => [ '{{WRAPPER}} .ee-post__media' => 'order: {{VALUE}};', ], ] ); $this->add_responsive_control( 'post_body_order', [ 'label' => __( 'Body', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'min' => 1, 'selectors' => [ '{{WRAPPER}} .ee-post__body, {{WRAPPER}} .ee-post--horizontal .ee-post__content' => 'order: {{VALUE}};', ], ] ); $this->add_responsive_control( 'post_footer_order', [ 'label' => __( 'Footer', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'min' => 1, 'selectors' => [ '{{WRAPPER}} .ee-post__footer' => 'order: {{VALUE}};', ], ] ); $this->add_control( 'post_parts_order_heading', [ 'label' => __( 'Parts', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', ] ); $this->add_control( 'order_parts_description', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => __( 'Give each post part an order number to define the order in which they appear in post areas.', 'elementor-extras' ), 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info', ] ); $this->add_control( 'post_terms_order', [ 'label' => __( 'Terms', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'min' => 1, 'condition' => [ 'post_terms_position!' => '', ], ] ); $this->add_control( 'post_title_order', [ 'label' => __( 'Title', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'min' => 1, 'condition' => [ 'post_title_position!' => '', ], ] ); $this->add_control( 'post_excerpt_order', [ 'label' => __( 'Excerpt', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'min' => 1, 'condition' => [ 'post_excerpt_position!' => '', ], ] ); $this->add_control( 'post_button_order', [ 'label' => __( 'Button', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'min' => 1, 'condition' => [ 'post_button_position!' => '', ], ] ); $this->add_control( 'post_metas_order', [ 'label' => __( 'Metas', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'min' => 1, ] ); $this->add_control( 'post_metas_order_heading', [ 'label' => __( 'Metas', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', ] ); $this->add_control( 'post_metas_order_description', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => __( 'Order each meta inside any list of metas', 'elementor-extras' ), 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info', ] ); $this->add_control( 'post_author_order', [ 'label' => __( 'Author', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'min' => 1, 'condition' => [ 'post_author_position!' => '', ], ] ); $this->add_control( 'post_date_order', [ 'label' => __( 'Date', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'min' => 1, 'condition' => [ 'post_date_position!' => '', ], ] ); if ( is_woocommerce_active() ) { $this->add_control( 'post_price_order', [ 'label' => __( 'Price', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'min' => 1, 'condition' => [ 'post_price_position!' => '', 'posts_post_type' => ['product', 'current_query'], ], ] ); } $this->add_control( 'post_comments_order', [ 'label' => __( 'Comments', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'min' => 1, 'condition' => [ 'post_comments_position!' => '', ], ] ); $this->end_controls_section(); } /** * Register Advanced Controls * * @since 1.6.0 * @return void */ protected function register_advanced_controls() { $this->start_controls_section( 'section_advanced', [ 'label' => __( 'Advanced', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_CONTENT, ] ); $this->add_control( 'nothing_found_type', [ 'label' => __( 'Show', 'elementor-extras' ), 'type' => Controls_Manager::SELECT, 'default' => '', 'options' => [ '' => __( 'Text', 'elementor-extras' ), 'template' => __( 'Template', 'elementor-extras' ), ], ] ); $this->add_control( 'nothing_found_message', [ 'label' => __( 'Nothing Found Message', 'elementor-extras' ), 'type' => Controls_Manager::TEXTAREA, 'default' => __( 'It seems we can\'t find what you\'re looking for.', 'elementor-extras' ), 'dynamic' => [ 'active' => true, ], 'condition' => [ 'nothing_found_type' => '', ], ] ); $this->add_control( 'nothing_found_template', [ 'label' => __( 'Template', 'elementor-extras' ), 'placeholder' => __( 'Search...', 'elementor-extras' ), 'type' => 'ee-query', 'query_type' => 'templates', 'label_block' => false, 'multiple' => false, 'condition' => [ 'nothing_found_type' => 'template', ], ] ); $this->end_controls_section(); $this->start_controls_section( 'section_style_advanced', [ 'tab' => Controls_Manager::TAB_STYLE, 'label' => __( 'Advanced', 'elementor-extras' ), 'condition' => [ 'nothing_found_message!' => '', ], ] ); $this->add_control( 'nothing_found_style_heading', [ 'label' => __( 'Nothing Found Message', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, ] ); $this->add_control( 'nothing_found_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'global' => [ 'default' => Global_Colors::COLOR_TEXT, ], 'selectors' => [ '{{WRAPPER}} .ee-posts__nothing-found' => 'color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'nothing_found_typography', 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_TEXT, ], 'selector' => '{{WRAPPER}} .ee-posts__nothing-found', ] ); $this->end_controls_section(); } /** * Register Media Content Controls * * @since 1.6.0 * @return void */ protected function register_media_content_controls() { $this->start_controls_section( 'section_media', [ 'label' => __( 'Media', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_CONTENT, 'condition' => [ 'skin_source' => '', ], ] ); $this->add_control( 'post_media', [ 'label' => __( 'Show', 'elementor-extras' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', 'return_value' => 'yes', ] ); $this->add_control( 'image', [ 'label' => __( 'Placeholder Image', 'elementor-extras' ), 'description' => __( 'An image to be used for all posts that DO NOT have a featured image set.', 'elementor-extras' ), 'type' => Controls_Manager::MEDIA, 'dynamic' => [ 'active' => true, ], 'default' => [ 'url' => '', ], 'condition' => [ 'post_media!' => '', ], ] ); $this->add_control( 'post_media_link', [ 'label' => __( 'Enable Link', 'elementor-extras' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', 'return_value' => 'yes', 'condition' => [ 'post_media!' => '', ], ] ); $this->add_control( 'post_media_blank', [ 'label' => __( 'Open in New Tab', 'elementor-extras' ), 'type' => Controls_Manager::SWITCHER, 'default' => '', 'return_value' => 'yes', 'condition' => [ 'post_media!' => '', 'post_media_link!' => '', ], ] ); $this->add_control( 'post_media_custom_height', [ 'label' => __( 'Custom Height', 'elementor-extras' ), 'type' => Controls_Manager::SWITCHER, 'default' => '', 'return_value' => 'ratio', 'prefix_class' => 'ee-posts-thumbnail-', 'condition' => [ 'post_media!' => '', ], ] ); $this->add_control( 'post_media_position', [ 'label' => __( 'Position', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => '', 'options' => [ 'left' => [ 'title' => __( 'Left', 'elementor-extras' ), 'icon' => 'eicon-h-align-left', ], '' => [ 'title' => __( 'Block', 'elementor-extras' ), 'icon' => 'eicon-v-align-top', ], 'right' => [ 'title' => __( 'Right', 'elementor-extras' ), 'icon' => 'eicon-h-align-right', ], ], 'label_block' => false, 'condition' => [ 'post_media!' => '', ], ] ); $this->add_control( 'post_media_collapse', [ 'label' => __( 'Collapse on', 'elementor-extras' ), 'type' => Controls_Manager::SELECT, 'default' => 'mobile', 'options' => [ 'none' => __( 'None', 'elementor-extras' ), 'tablet' => __( 'Tablet', 'elementor-extras' ), 'mobile' => __( 'Mobile', 'elementor-extras' ), ], 'prefix_class' => 'ee-posts-layout-collapse--', 'condition' => [ 'post_media!' => '', 'post_media_position!' => '', ], ] ); $this->add_responsive_control( 'post_media_align', [ 'label' => __( 'Vertical Align', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => 'stretch', 'options' => [ 'flex-start' => [ 'title' => __( 'Top', 'elementor-extras' ), 'icon' => 'eicon-v-align-top', ], 'center' => [ 'title' => __( 'Middle', 'elementor-extras' ), 'icon' => 'eicon-v-align-middle', ], 'flex-end' => [ 'title' => __( 'Bottom', 'elementor-extras' ), 'icon' => 'eicon-v-align-bottom', ], ], 'label_block' => false, 'condition' => [ 'post_media!' => '', 'post_media_position' => [ 'left', 'right' ], 'post_media_custom_height' => '', ], 'selectors' => [ '{{WRAPPER}} .ee-post--horizontal' => 'align-items: {{VALUE}};', ], ] ); $this->add_control( 'post_media_align_flex', [ 'label' => __( 'Vertical Align', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => 'stretch', 'options' => [ 'flex-start' => [ 'title' => __( 'Top', 'elementor-extras' ), 'icon' => 'eicon-v-align-top', ], 'center' => [ 'title' => __( 'Middle', 'elementor-extras' ), 'icon' => 'eicon-v-align-middle', ], 'flex-end' => [ 'title' => __( 'Bottom', 'elementor-extras' ), 'icon' => 'eicon-v-align-bottom', ], 'stretch' => [ 'title' => __( 'Stretch', 'elementor-extras' ), 'icon' => 'eicon-v-align-stretch', ], ], 'label_block' => false, 'condition' => [ 'post_media!' => '', 'post_media_position' => [ 'left', 'right' ], 'post_media_custom_height!' => '', ], 'selectors' => [ '{{WRAPPER}} .ee-post--horizontal' => 'align-items: {{VALUE}};', ], ] ); $this->add_responsive_control( 'post_media_width', [ 'label' => __( 'Width (%)', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 20, 'max' => 80, ], ], 'default' => [ 'size' => 30, 'unit' => 'px', ], 'selectors' => [ '{{WRAPPER}} .ee-post--horizontal .ee-post__media' => 'flex-basis: {{SIZE}}%; -ms-flex-preferred-size: {{SIZE}}%;', '{{WRAPPER}} .ee-post--horizontal .ee-post__content' => 'flex-basis: calc( 100% - {{SIZE}}% );', ], 'condition' => [ 'post_media!' => '', 'post_media_position!' => '', ], ] ); $this->add_responsive_control( 'post_media_height', [ 'label' => __( 'Height', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 1, 'max' => 200, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__media:before' => 'padding-bottom: {{SIZE}}%', ], 'condition' => [ 'post_media!' => '', 'post_media_custom_height!' => '', ], ] ); $this->add_control( 'post_media_thumbnail_heading', [ 'label' => __( 'Thumbnail', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => [ 'post_media!' => '', ], ] ); $this->add_group_control( Group_Control_Image_Size::get_type(), [ 'name' => 'post_media_thumbnail_size', 'label' => __( 'Thumbnail Size', 'elementor-extras' ), 'default' => 'large', 'exclude' => [ 'custom' ], 'condition' => [ 'post_media!' => '', ], ] ); $this->end_controls_section(); } /** * Register Terms Content Controls * * @since 1.6.0 * @return void */ protected function register_terms_content_controls() { $this->start_controls_section( 'section_terms', [ 'label' => __( 'Terms', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_CONTENT, 'condition' => [ 'skin_source' => '', ], ] ); $this->add_control( 'post_terms_position', [ 'label' => __( 'Position', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => 'header', 'label_block' => false, 'options' => [ 'header' => [ 'title' => __( 'Header', 'elementor-extras' ), 'icon' => 'nicon nicon-position-header', ], 'media' => [ 'title' => __( 'Media', 'elementor-extras' ), 'icon' => 'nicon nicon-position-media', ], 'body' => [ 'title' => __( 'Body', 'elementor-extras' ), 'icon' => 'nicon nicon-position-body', ], 'footer' => [ 'title' => __( 'Footer', 'elementor-extras' ), 'icon' => 'nicon nicon-position-footer', ], '' => [ 'title' => __( 'Hide', 'elementor-extras' ), 'icon' => 'eicon eicon-close', ], ], ] ); $this->add_control( 'post_terms_link', [ 'label' => __( 'Link to term', 'elementor-extras' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', 'return_value' => 'yes', 'condition' => [ 'post_terms_position!' => '', ], ] ); $this->add_control( 'post_terms_taxonomy', [ 'label' => __( 'Taxonomies', 'elementor-extras' ), 'type' => Controls_Manager::SELECT2, 'label_block' => true, 'default' => 'category', 'multiple' => true, 'options' => Utils::get_taxonomies_options(), 'condition' => [ 'post_terms_position!' => '', ], ] ); $this->add_control( 'post_terms_count', [ 'label' => __( 'Count', 'elementor-extras' ), 'description' => __( 'How many terms to show (enter -1 to show all terms)', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'condition' => [ 'post_terms_position!' => '', ], ] ); $this->add_control( 'post_terms_prefix', [ 'label' => __( 'Prefix', 'elementor-extras' ), 'type' => Controls_Manager::TEXT, 'default' => '', 'placeholder' => __( 'Posted in', 'elementor-extras' ), 'condition' => [ 'post_terms_position!' => '' ], ] ); $this->add_control( 'post_terms_separator', [ 'label' => __( 'Separator', 'elementor-extras' ), 'type' => Controls_Manager::TEXT, 'default' => '·', 'condition' => [ 'post_terms_position!' => '' ], ] ); $this->end_controls_section(); } /** * Register Title Content Controls * * @since 1.6.0 * @return void */ protected function register_title_content_controls() { $this->start_controls_section( 'section_title', [ 'label' => __( 'Title', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_CONTENT, 'condition' => [ 'skin_source' => '', ], ] ); $this->add_control( 'post_title_position', [ 'label' => __( 'Position', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => 'body', 'label_block' => false, 'options' => [ 'header' => [ 'title' => __( 'Header', 'elementor-extras' ), 'icon' => 'nicon nicon-position-header', ], 'media' => [ 'title' => __( 'Media', 'elementor-extras' ), 'icon' => 'nicon nicon-position-media', ], 'body' => [ 'title' => __( 'Body', 'elementor-extras' ), 'icon' => 'nicon nicon-position-body', ], '' => [ 'title' => __( 'Hide', 'elementor-extras' ), 'icon' => 'eicon eicon-close', ], ], ] ); $this->add_control( 'post_title_link', [ 'label' => __( 'Link to post', 'elementor-extras' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', 'return_value' => 'yes', 'condition' => [ 'post_title_position!' => '', ], ] ); $this->add_control( 'post_title_link_blank', [ 'label' => __( 'Open in New Tab', 'elementor-extras' ), 'type' => Controls_Manager::SWITCHER, 'default' => '', 'return_value' => 'yes', 'condition' => [ 'post_title_position!' => '', 'post_title_link!' => '', ], ] ); $this->add_control( 'post_title_element', [ 'label' => __( 'HTML Element', 'elementor-extras' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'h1' => __( 'H1', 'elementor-extras' ), 'h2' => __( 'H2', 'elementor-extras' ), 'h3' => __( 'H3', 'elementor-extras' ), 'h4' => __( 'H4', 'elementor-extras' ), 'h5' => __( 'H5', 'elementor-extras' ), 'h6' => __( 'H6', 'elementor-extras' ), 'div' => __( 'div', 'elementor-extras' ), 'span' => __( 'span', 'elementor-extras' ), ], 'default' => 'h2', ] ); $this->end_controls_section(); } /** * Register Excerpt Content Controls * * @since 1.6.0 * @return void */ protected function register_excerpt_content_controls() { $this->start_controls_section( 'section_excerpt', [ 'label' => __( 'Excerpt', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_CONTENT, 'condition' => [ 'skin_source' => '', ], ] ); $this->add_control( 'post_excerpt_position', [ 'label' => __( 'Position', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => 'body', 'label_block' => false, 'options' => [ 'media' => [ 'title' => __( 'Media', 'elementor-extras' ), 'icon' => 'nicon nicon-position-media', ], 'body' => [ 'title' => __( 'Body', 'elementor-extras' ), 'icon' => 'nicon nicon-position-body', ], 'footer' => [ 'title' => __( 'Footer', 'elementor-extras' ), 'icon' => 'nicon nicon-position-footer', ], '' => [ 'title' => __( 'Hide', 'elementor-extras' ), 'icon' => 'eicon eicon-close', ], ], ] ); $this->add_control( 'post_excerpt_trim_custom', [ 'label' => __( 'Trim Custom Excerpts', 'elementor-extras' ), 'description' => __( 'Custom excerpts are set manually in the Excerpt field for each post. Enable this if you want to trim those down to the above length as well.' ), 'type' => Controls_Manager::SWITCHER, 'default' => '', 'return_value' => 'yes', 'condition' => [ 'post_excerpt_position!' => '', ], ] ); $this->add_control( 'post_excerpt_length', [ 'label' => __( 'Excerpt Length', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => apply_filters( 'excerpt_length', 25 ), 'condition' => [ 'post_excerpt_position!' => '', ], ] ); $this->add_control( 'post_excerpt_more', [ 'label' => __( 'Trimmed Suffix', 'elementor-extras' ), 'type' => Controls_Manager::TEXT, 'default' => '…', 'condition' => [ 'post_excerpt_position!' => '', ], ] ); $this->end_controls_section(); } /** * Register Button Content Controls * * @since 1.6.0 * @return void */ protected function register_button_content_controls() { $this->start_controls_section( 'section_button', [ 'label' => __( 'Button', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_CONTENT, 'condition' => [ 'skin_source' => '', ], ] ); $this->add_control( 'post_button_position', [ 'label' => __( 'Position', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => '', 'label_block' => false, 'options' => [ 'media' => [ 'title' => __( 'Media', 'elementor-extras' ), 'icon' => 'nicon nicon-position-media', ], 'body' => [ 'title' => __( 'Body', 'elementor-extras' ), 'icon' => 'nicon nicon-position-body', ], 'footer' => [ 'title' => __( 'Footer', 'elementor-extras' ), 'icon' => 'nicon nicon-position-footer', ], '' => [ 'title' => __( 'Hide', 'elementor-extras' ), 'icon' => 'eicon eicon-close', ], ], ] ); if ( is_woocommerce_active() ) { $this->add_control( 'post_add_to_cart_media_warning', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => __( 'Add to Cart button is not supported in Media area when when Media area link is enabled.', 'elementor-extras' ), 'content_classes' => 'elementor-panel-alert elementor-panel-alert-warning', 'condition' => [ 'post_media_link!' => '', 'posts_post_type' => 'product', 'post_button_position' => 'media', ], ] ); $this->add_control( 'post_button_type', [ 'label' => __( 'Type', 'elementor-extras' ), 'type' => Controls_Manager::SELECT, 'default' => 'add_to_cart', 'options' => [ '' => __( 'Read More', 'elementor-extras' ), 'add_to_cart' => __( 'Add to Cart', 'elementor-extras' ), ], 'condition' => [ 'post_button_position!' => '', 'posts_post_type' => 'product', ], ] ); $this->add_control( 'post_button_add_to_cart_text', [ 'label' => __( 'Add To Cart Label', 'elementor-extras' ), 'type' => Controls_Manager::TEXT, 'default' => '', 'condition' => [ 'post_button_position!' => '', 'post_button_type' => 'add_to_cart', 'posts_post_type' => 'product', ], ] ); } $this->add_control( 'post_read_more_text', [ 'label' => __( 'Read More Label', 'elementor-extras' ), 'type' => Controls_Manager::TEXT, 'default' => __( 'Read more', 'elementor-extras' ), 'condition' => [ 'post_button_position!' => '', ], ] ); $this->add_control( 'post_button_blank', [ 'label' => __( 'Open in New Tab', 'elementor-extras' ), 'type' => Controls_Manager::SWITCHER, 'default' => '', 'return_value' => 'yes', 'condition' => [ 'post_button_position!' => '', ], ] ); $this->end_controls_section(); } /** * Register Metas Content Controls * * @since 1.6.0 * @return void */ protected function register_metas_content_controls() { $this->start_controls_section( 'section_metas', [ 'label' => __( 'Metas', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_CONTENT, 'condition' => [ 'skin_source' => '', ], ] ); $post_metas_options = [ 'avatar' => __( 'Avatar', 'elementor-extras' ), 'author' => __( 'Author', 'elementor-extras' ), 'date' => __( 'Date', 'elementor-extras' ), 'comments' => __( 'Comments', 'elementor-extras' ), // 'custom_fields' => __( 'Custom Fields', 'elementor-extras' ), ]; $post_metas_defaults = [ 'avatar', 'author', 'date', 'comments', // 'custom_fields', ]; if ( is_woocommerce_active() ) { $post_metas_options['price'] = __( 'Price', 'elementor-extras' ); $post_metas_defaults[] = 'price'; } $this->add_control( 'post_metas_separator', [ 'label' => __( 'Separator', 'elementor-extras' ), 'type' => Controls_Manager::TEXT, 'default' => '·', ] ); $this->add_control( 'post_metas', [ 'label' => __( 'Metas', 'elementor-extras' ), 'type' => Controls_Manager::SELECT2, 'multiple' => true, 'label_block' => true, 'default' => $post_metas_defaults, 'options' => $post_metas_options, ] ); $this->register_author_content_controls(); $this->register_date_content_controls(); $this->register_comments_content_controls(); if ( is_woocommerce_active() ) { $this->register_price_content_controls(); } $this->end_controls_section(); } /** * Register Author Content Controls * * @since 1.6.0 * @return void */ protected function register_author_content_controls() { $this->add_control( 'post_avatar_heading', [ 'label' => __( 'Avatar', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => [ 'post_metas' => 'avatar', ], ] ); $this->add_control( 'post_avatar_position', [ 'label' => __( 'Position', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => 'footer', 'label_block' => false, 'options' => [ 'header' => [ 'title' => __( 'Header', 'elementor-extras' ), 'icon' => 'nicon nicon-position-header', ], 'media' => [ 'title' => __( 'Media', 'elementor-extras' ), 'icon' => 'nicon nicon-position-media', ], 'body' => [ 'title' => __( 'Body', 'elementor-extras' ), 'icon' => 'nicon nicon-position-body', ], 'footer' => [ 'title' => __( 'Footer', 'elementor-extras' ), 'icon' => 'nicon nicon-position-footer', ], '' => [ 'title' => __( 'Hide', 'elementor-extras' ), 'icon' => 'eicon eicon-close', ], ], 'condition' => [ 'post_metas' => 'avatar', ], ] ); $this->add_control( 'post_avatar_link', [ 'label' => __( 'Link to Author', 'elementor-extras' ), 'type' => Controls_Manager::SWITCHER, 'default' => '', 'return_value' => 'yes', 'condition' => [ 'post_metas' => 'avatar', 'post_avatar_position!' => [ '', 'media' ], ], ] ); $this->add_control( 'post_author_heading', [ 'label' => __( 'Author', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => [ 'post_metas' => 'author', ], ] ); $this->add_control( 'post_author_position', [ 'label' => __( 'Position', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => 'footer', 'label_block' => false, 'options' => [ 'header' => [ 'title' => __( 'Header', 'elementor-extras' ), 'icon' => 'nicon nicon-position-header', ], 'media' => [ 'title' => __( 'Media', 'elementor-extras' ), 'icon' => 'nicon nicon-position-media', ], 'body' => [ 'title' => __( 'Body', 'elementor-extras' ), 'icon' => 'nicon nicon-position-body', ], 'footer' => [ 'title' => __( 'Footer', 'elementor-extras' ), 'icon' => 'nicon nicon-position-footer', ], '' => [ 'title' => __( 'Hide', 'elementor-extras' ), 'icon' => 'eicon eicon-close', ], ], 'condition' => [ 'post_metas' => 'author', ], ] ); $this->add_control( 'post_author_link', [ 'label' => __( 'Link to Author', 'elementor-extras' ), 'type' => Controls_Manager::SWITCHER, 'default' => '', 'return_value' => 'yes', 'condition' => [ 'post_metas' => 'author', 'post_author_position!' => [ '', 'media' ], ], ] ); $this->add_control( 'post_author_prefix', [ 'label' => __( 'Prefix', 'elementor-extras' ), 'type' => Controls_Manager::TEXT, 'default' => '', 'placeholder' => __( 'Posted by', 'elementor-extras' ), 'condition' => [ 'post_metas' => 'author', 'post_author_position!' => '' ], ] ); } /** * Register Price Content Controls * * @since 1.6.0 * @return void */ protected function register_price_content_controls() { $this->add_control( 'post_price_heading', [ 'label' => __( 'Price', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => [ 'posts_post_type' => [ 'product', 'current_query', 'related' ], 'post_metas' => 'price', ], ] ); $this->add_control( 'post_price_position', [ 'label' => __( 'Position', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => 'footer', 'label_block' => false, 'options' => [ 'header' => [ 'title' => __( 'Header', 'elementor-extras' ), 'icon' => 'nicon nicon-position-header', ], 'media' => [ 'title' => __( 'Media', 'elementor-extras' ), 'icon' => 'nicon nicon-position-media', ], 'body' => [ 'title' => __( 'Body', 'elementor-extras' ), 'icon' => 'nicon nicon-position-body', ], 'footer' => [ 'title' => __( 'Footer', 'elementor-extras' ), 'icon' => 'nicon nicon-position-footer', ], '' => [ 'title' => __( 'Hide', 'elementor-extras' ), 'icon' => 'eicon eicon-close', ], ], 'condition' => [ 'posts_post_type' => ['product', 'current_query'], 'post_metas' => 'price', ], ] ); } /** * Register Date Content Controls * * @since 1.6.0 * @return void */ protected function register_date_content_controls() { $this->add_control( 'post_date_heading', [ 'label' => __( 'Date', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => [ 'post_metas' => 'date', ], ] ); $this->add_control( 'post_date_position', [ 'label' => __( 'Position', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => 'footer', 'label_block' => false, 'options' => [ 'header' => [ 'title' => __( 'Header', 'elementor-extras' ), 'icon' => 'nicon nicon-position-header', ], 'media' => [ 'title' => __( 'Media', 'elementor-extras' ), 'icon' => 'nicon nicon-position-media', ], 'body' => [ 'title' => __( 'Body', 'elementor-extras' ), 'icon' => 'nicon nicon-position-body', ], 'footer' => [ 'title' => __( 'Footer', 'elementor-extras' ), 'icon' => 'nicon nicon-position-footer', ], '' => [ 'title' => __( 'Hide', 'elementor-extras' ), 'icon' => 'eicon eicon-close', ], ], 'condition' => [ 'post_metas' => 'date', ], ] ); $this->add_control( 'post_date_format', [ 'label' => __( 'Date Format', 'elementor-extras' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'default' => __( 'Default', 'elementor-extras' ), '' => __( 'None', 'elementor-extras' ), 'F j, Y' => date( 'F j, Y' ), 'Y-m-d' => date( 'Y-m-d' ), 'm/d/Y' => date( 'm/d/Y' ), 'd/m/Y' => date( 'd/m/Y' ), 'custom' => __( 'Custom', 'elementor-extras' ), ], 'condition' => [ 'post_metas' => 'date', 'post_date_position!' => '' ], 'default' => 'default', ] ); $this->add_control( 'post_time_format', [ 'label' => __( 'Time Format', 'elementor-extras' ), 'type' => Controls_Manager::SELECT, 'options' => [ 'default' => __( 'Default', 'elementor-extras' ), '' => __( 'None', 'elementor-extras' ), 'g:i a' => date( 'g:i a' ), 'g:i A' => date( 'g:i A' ), 'H:i' => date( 'H:i' ), ], 'default' => 'default', 'condition' => [ 'post_metas' => 'date', 'post_date_position!' => '', 'post_date_format!' => 'custom', ], ] ); $this->add_control( 'post_date_custom_format', [ 'label' => __( 'Custom Format', 'elementor-extras' ), 'default' => get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), 'description' => sprintf( '%s', __( 'Documentation on date and time formatting', 'elementor-extras' ) ), 'condition' => [ 'post_metas' => 'date', 'post_date_position!' => '', 'post_date_format' => 'custom', ], ] ); $this->add_control( 'post_date_prefix', [ 'label' => __( 'Date Prefix', 'elementor-extras' ), 'type' => Controls_Manager::TEXT, 'default' => '', 'placeholder' => __( 'on', 'elementor-extras' ), 'condition' => [ 'post_metas' => 'date', 'post_date_position!' => '' ], ] ); } /** * Register Comments Content Controls * * @since 1.6.0 * @return void */ protected function register_comments_content_controls() { $this->add_control( 'post_comments_heading', [ 'label' => __( 'Comments', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => [ 'post_metas' => 'comments', ], ] ); $this->add_control( 'post_comments_position', [ 'label' => __( 'Position', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => 'footer', 'label_block' => false, 'options' => [ 'header' => [ 'title' => __( 'Header', 'elementor-extras' ), 'icon' => 'nicon nicon-position-header', ], 'media' => [ 'title' => __( 'Media', 'elementor-extras' ), 'icon' => 'nicon nicon-position-media', ], 'body' => [ 'title' => __( 'Body', 'elementor-extras' ), 'icon' => 'nicon nicon-position-body', ], 'footer' => [ 'title' => __( 'Footer', 'elementor-extras' ), 'icon' => 'nicon nicon-position-footer', ], '' => [ 'title' => __( 'Hide', 'elementor-extras' ), 'icon' => 'eicon eicon-close', ], ], 'condition' => [ 'post_metas' => 'comments', ], ] ); $this->add_control( 'post_comments_prefix', [ 'label' => __( 'Prefix', 'elementor-extras' ), 'type' => Controls_Manager::TEXT, 'default' => '', 'placeholder' => __( 'Comments:', 'elementor-extras' ), 'condition' => [ 'post_metas' => 'comments', 'post_comments_position!' => '', ], ] ); $this->add_control( 'post_comments_suffix', [ 'label' => __( 'Suffix', 'elementor-extras' ), 'type' => Controls_Manager::TEXT, 'default' => '', 'placeholder' => __( 'comments', 'elementor-extras' ), 'condition' => [ 'post_metas' => 'comments', 'post_comments_position!' => '', ], ] ); } /** * Register Post Style Controls * * @since 1.6.0 * @return void */ public function register_post_style_controls() { $this->start_controls_section( 'section_style_posts', [ 'label' => __( 'Posts', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_STYLE, ] ); $this->add_responsive_control( 'posts_text_align', [ 'label' => __( 'Align Text', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => '', 'options' => [ 'left' => [ 'title' => __( 'Left', 'elementor-extras' ), 'icon' => 'fa fa-align-left', ], 'center' => [ 'title' => __( 'Center', 'elementor-extras' ), 'icon' => 'fa fa-align-center', ], 'right' => [ 'title' => __( 'Right', 'elementor-extras' ), 'icon' => 'fa fa-align-right', ], ], 'selectors' => [ '{{WRAPPER}} .ee-post' => 'text-align: {{VALUE}};', ] ] ); $this->add_group_control( Group_Control_Transition::get_type(), [ 'name' => 'posts', 'selector' => '{{WRAPPER}} .ee-post', ] ); $this->add_control( 'post_overflow', [ 'label' => __( 'Overflow', 'elementor-extras' ), 'type' => Controls_Manager::SELECT, 'default' => '', 'options' => [ '' => __( 'Default', 'elementor-extras' ), 'hidden' => __( 'Hidden', 'elementor-extras' ), ], 'selectors' => [ '{{WRAPPER}} .ee-post' => 'overflow: {{VALUE}};', ], ] ); $this->add_control( 'post_border_radius', [ 'type' => Controls_Manager::DIMENSIONS, 'label' => __( 'Border Radius', 'elementor-extras' ), 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); $this->start_controls_tabs( 'posts_tabs_hover' ); $this->start_controls_tab( 'posts_tab_default', [ 'label' => __( 'Default', 'elementor-extras' ) ] ); $this->add_control( 'post_background_color', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post' => 'background-color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Border::get_type(), [ 'name' => 'post_border', 'label' => __( 'Border', 'elementor-extras' ), 'selector' => '{{WRAPPER}} .ee-post', ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'post_box_shadow', 'selector' => '{{WRAPPER}} .ee-post', 'separator' => '', ] ); $this->end_controls_tab(); $this->start_controls_tab( 'posts_tab_hover', [ 'label' => __( 'Hover', 'elementor-extras' ) ] ); $this->add_control( 'post_background_color_hover', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post:hover' => 'background-color: {{VALUE}};', ], ] ); $this->add_control( 'post_border_color_hover', [ 'label' => __( 'Border Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post:hover' => 'border-color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'post_box_shadow_hover', 'selector' => '{{WRAPPER}} .ee-post:hover', 'separator' => '', ] ); $this->end_controls_tab(); $this->start_controls_tab( 'posts_tab_sticky', [ 'label' => __( 'Sticky', 'elementor-extras' ), 'condition' => [ 'sticky_posts!' => '', ], ] ); $this->add_control( 'post_background_color_sticky', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post.sticky' => 'background-color: {{VALUE}};', ], 'condition' => [ 'sticky_posts!' => '', ], ] ); $this->add_control( 'post_border_color_sticky', [ 'label' => __( 'Border Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post.sticky' => 'border-color: {{VALUE}};', ], 'condition' => [ 'sticky_posts!' => '', ], ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'post_box_shadow_sticky', 'selector' => '{{WRAPPER}} .ee-post.sticky', 'condition' => [ 'sticky_posts!' => '', ], ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->end_controls_section(); } /** * Register Header Style Controls * * @since 1.6.0 * @return void */ public function register_header_style_controls() { $this->start_controls_section( 'section_style_header', [ 'label' => __( 'Header', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_STYLE, 'conditions' => [ 'relation' => 'and', 'terms' => [ $this->get_empty_area_condition( 'header' ), [ 'name' => 'skin_source', 'operator' => '==', 'value' => '', ], ], ], ] ); $this->add_responsive_control( 'header_text_align', [ 'label' => __( 'Align Text', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => '', 'options' => [ 'left' => [ 'title' => __( 'Left', 'elementor-extras' ), 'icon' => 'fa fa-align-left', ], 'center' => [ 'title' => __( 'Center', 'elementor-extras' ), 'icon' => 'fa fa-align-center', ], 'right' => [ 'title' => __( 'Right', 'elementor-extras' ), 'icon' => 'fa fa-align-right', ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__header' => 'text-align: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'header' ), ] ); $this->add_responsive_control( 'header_padding', [ 'label' => __( 'Padding', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__header' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'conditions' => $this->get_empty_area_condition( 'header' ), ] ); $this->add_control( 'header_border_radius', [ 'type' => Controls_Manager::DIMENSIONS, 'label' => __( 'Border Radius', 'elementor-extras' ), 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__header' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'conditions' => $this->get_empty_area_condition( 'header' ), ] ); $this->start_controls_tabs( 'header_tabs_hover' ); $this->start_controls_tab( 'header_tab_default', [ 'label' => __( 'Default', 'elementor-extras' ) ] ); $this->add_control( 'header_background_color', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__header' => 'background-color: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'header' ), ] ); $this->add_control( 'header_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__header' => 'color: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'header' ), ] ); $this->end_controls_tab(); $this->start_controls_tab( 'header_tab_hover', [ 'label' => __( 'Hover', 'elementor-extras' ) ] ); $this->add_control( 'header_background_color_hover', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post:hover .ee-post__header' => 'background-color: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'header' ), ] ); $this->add_control( 'header_color_hover', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post:hover .ee-post__header' => 'color: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'header' ), ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->add_control( 'header_separator_heading', [ 'separator' => 'before', 'label' => __( 'Separator', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'condition' => [ 'post_media' => '' ] ] ); $this->add_control( 'header_separator_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__header' => 'border-color: {{VALUE}};', ], 'condition' => [ 'post_media' => '' ] ] ); $this->add_responsive_control( 'header_separator_size', [ 'label' => __( 'Separator Size', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 10, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__header' => 'border-bottom-width: {{SIZE}}px', ], 'condition' => [ 'post_media' => '' ] ] ); $header_metas_condition = $this->get_area_metas_controls_conditions( 'header' ); $this->add_control( 'header_metas', [ 'separator' => 'before', 'label' => __( '↳ Header Metas', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'conditions' => $header_metas_condition, ] ); $this->add_control( 'header_metas_description', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => __( 'Use these to style metas that appear only in the Header area', 'elementor-extras' ), 'content_classes' => 'elementor-panel-alert elementor-panel-alert-warning', 'conditions' => $header_metas_condition, ] ); $this->add_control( 'header_metas_spacing', [ 'label' => __( 'Spacing', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 48, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__header .ee-post__metas__list' => 'margin-left: -{{SIZE}}px', '{{WRAPPER}} .ee-post__header .ee-post__meta, {{WRAPPER}} .ee-post__header .ee-post__meta__separator' => 'margin-left: {{SIZE}}px', ], 'conditions' => $header_metas_condition, ] ); $this->add_control( 'header_metas_distance', [ 'label' => __( 'Distance', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 48, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__header .ee-post__metas' => 'margin-bottom: {{SIZE}}px', ], 'conditions' => $header_metas_condition, ] ); $this->add_responsive_control( 'header_metas_text_align', [ 'label' => __( 'Align Text', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => '', 'options' => [ 'left' => [ 'title' => __( 'Left', 'elementor-extras' ), 'icon' => 'fa fa-align-left', ], 'center' => [ 'title' => __( 'Center', 'elementor-extras' ), 'icon' => 'fa fa-align-center', ], 'right' => [ 'title' => __( 'Right', 'elementor-extras' ), 'icon' => 'fa fa-align-right', ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__header .ee-post__metas--has-metas' => 'text-align: {{VALUE}};', ], 'conditions' => $header_metas_condition, ] ); $this->add_responsive_control( 'header_metas_padding', [ 'label' => __( 'Padding', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__header .ee-post__metas--has-metas' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'conditions' => $header_metas_condition, ] ); $this->add_control( 'header_metas_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__header .ee-post__metas--has-metas' => 'color: {{VALUE}};', ], 'conditions' => $header_metas_condition, ] ); $this->add_control( 'header_metas_background_color', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__header .ee-post__metas--has-metas' => 'background-color: {{VALUE}};', ], 'conditions' => $header_metas_condition, ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'header_metas_typography', 'label' => __( 'Typography', 'elementor-extras' ), 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_TEXT, ], 'selector' => '{{WRAPPER}} .ee-post__header .ee-post__metas--has-metas .ee-post__meta', 'conditions' => $header_metas_condition, ] ); $this->end_controls_section(); } /** * Register Media Style Controls * * @since 1.6.0 * @return void */ public function register_media_style_controls() { $this->start_controls_section( 'section_style_media', [ 'label' => __( 'Media', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => [ 'post_media!' => '', 'skin_source' => '', ] ] ); $this->add_responsive_control( 'media_margin', [ 'label' => __( 'Margin', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__media' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'condition' => [ 'post_media!' => '' ] ] ); $this->add_control( 'media_border_radius', [ 'type' => Controls_Manager::DIMENSIONS, 'label' => __( 'Border Radius', 'elementor-extras' ), 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__media' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); $this->add_control( 'media_z_index', [ 'label' => __( 'Z-Index', 'elementor-extras' ), 'type' => Controls_Manager::NUMBER, 'default' => 1, 'selectors' => [ '{{WRAPPER}} .ee-post__media' => 'z-index: {{VALUE}};' ] ] ); $this->add_control( 'media_content_vertical_aligment', [ 'label' => __( 'Vertical Align', 'elementor-extras' ), 'label_block' => false, 'type' => Controls_Manager::CHOOSE, 'options' => [ 'top' => [ 'title' => __( 'Initial', 'elementor-extras' ), 'icon' => 'eicon-v-align-top', ], 'middle' => [ 'title' => __( 'Center', 'elementor-extras' ), 'icon' => 'eicon-v-align-middle', ], 'bottom' => [ 'title' => __( 'Opposite', 'elementor-extras' ), 'icon' => 'eicon-v-align-bottom', ], 'stretch' => [ 'title' => __( 'Stretch', 'elementor-extras' ), 'icon' => 'eicon-v-align-stretch', ], ], 'default' => 'top', 'prefix_class' => 'ee-posts-align-', ] ); $this->add_responsive_control( 'media_content_text_align', [ 'label' => __( 'Align Text', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'label_block' => false, 'default' => '', 'options' => [ 'left' => [ 'title' => __( 'Left', 'elementor-extras' ), 'icon' => 'fa fa-align-left', ], 'center' => [ 'title' => __( 'Center', 'elementor-extras' ), 'icon' => 'fa fa-align-center', ], 'right' => [ 'title' => __( 'Right', 'elementor-extras' ), 'icon' => 'fa fa-align-right', ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__media__content' => 'text-align: {{VALUE}};', ] ] ); $this->add_responsive_control( 'media_content_padding', [ 'label' => __( 'Padding', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__media__content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], ] ); // $this->add_control( // 'media_thumbnail_style_heading', // [ // 'label' => __( 'Thumbnail', 'elementor-extras' ), // 'type' => Controls_Manager::HEADING, // 'separator' => 'before', // ] // ); // $this->add_control( // 'media_thumbnail_effect', // [ // 'separator' => 'after', // 'label' => __( 'Effect', 'elementor-extras' ), // 'type' => Controls_Manager::SELECT, // 'default' => '', // 'options' => [ // '' => __( 'None', 'elementor-extras' ), // 'rotate-to-left' => __( 'Rotate To Left', 'elementor-extras' ), // 'rotate-to-right' => __( 'Rotate To Right', 'elementor-extras' ), // 'rotate-from-left' => __( 'Rotate From Left', 'elementor-extras' ), // 'rotate-from-right' => __( 'Rotate From Right', 'elementor-extras' ), // ], // 'prefix_class' => 'ee-posts-effect__thumbnail--', // ] // ); $media_metas_conditions = $this->get_area_metas_controls_conditions( 'media' ); $this->add_control( 'media_metas', [ 'separator' => 'before', 'label' => __( '↳ Media Metas', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'conditions' => $media_metas_conditions, ] ); $this->add_control( 'media_metas_description', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => __( 'Use these to style metas that appear only in the Media area', 'elementor-extras' ), 'content_classes' => 'elementor-panel-alert elementor-panel-alert-warning', 'conditions' => $media_metas_conditions, ] ); $this->add_control( 'media_metas_spacing', [ 'label' => __( 'Spacing', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 48, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__media .ee-post__metas__list' => 'margin-left: -{{SIZE}}px', '{{WRAPPER}} .ee-post__media .ee-post__meta, {{WRAPPER}} .ee-post__media .ee-post__meta__separator' => 'margin-left: {{SIZE}}px', ], 'conditions' => $media_metas_conditions, ] ); $this->add_control( 'media_metas_distance', [ 'label' => __( 'Distance', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 48, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__media .ee-post__metas' => 'margin-bottom: {{SIZE}}px', ], 'conditions' => $media_metas_conditions, ] ); $this->add_responsive_control( 'media_metas_text_align', [ 'label' => __( 'Align Text', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => '', 'options' => [ 'left' => [ 'title' => __( 'Left', 'elementor-extras' ), 'icon' => 'fa fa-align-left', ], 'center' => [ 'title' => __( 'Center', 'elementor-extras' ), 'icon' => 'fa fa-align-center', ], 'right' => [ 'title' => __( 'Right', 'elementor-extras' ), 'icon' => 'fa fa-align-right', ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__media .ee-post__metas--has-metas' => 'text-align: {{VALUE}};', ], 'conditions' => $media_metas_conditions, ] ); $this->add_responsive_control( 'media_metas_padding', [ 'label' => __( 'Padding', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__media .ee-post__metas--has-metas' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'conditions' => $media_metas_conditions, ] ); $this->add_control( 'media_metas_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__media .ee-post__metas--has-metas .ee-post__meta' => 'color: {{VALUE}};', ], 'conditions' => $media_metas_conditions, ] ); $this->add_control( 'media_metas_background_color', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__media .ee-post__metas--has-metas' => 'background-color: {{VALUE}};', ], 'conditions' => $media_metas_conditions, ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'media_metas_typography', 'label' => __( 'Typography', 'elementor-extras' ), 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_TEXT, ], 'selector' => '{{WRAPPER}} .ee-post__media .ee-post__metas--has-metas .ee-post__meta', 'conditions' => $media_metas_conditions, ] ); $this->end_controls_section(); } public function register_body_style_controls() { $this->start_controls_section( 'section_style_body', [ 'label' => __( 'Body', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_STYLE, 'conditions' => [ 'relation' => 'and', 'terms' => [ $this->get_empty_area_condition( 'body' ), [ 'name' => 'skin_source', 'operator' => '==', 'value' => '', ], ], ], ] ); $this->add_responsive_control( 'body_text_align', [ 'label' => __( 'Align Text', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => '', 'options' => [ 'left' => [ 'title' => __( 'Left', 'elementor-extras' ), 'icon' => 'fa fa-align-left', ], 'center' => [ 'title' => __( 'Center', 'elementor-extras' ), 'icon' => 'fa fa-align-center', ], 'right' => [ 'title' => __( 'Right', 'elementor-extras' ), 'icon' => 'fa fa-align-right', ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__body' => 'text-align: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'body' ), ] ); $this->add_responsive_control( 'body_padding', [ 'label' => __( 'Padding', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__body' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'conditions' => $this->get_empty_area_condition( 'body' ), ] ); $this->add_responsive_control( 'body_margin', [ 'label' => __( 'Margin', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__body' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'conditions' => $this->get_empty_area_condition( 'body' ), ] ); $this->add_control( 'body_border_radius', [ 'type' => Controls_Manager::DIMENSIONS, 'label' => __( 'Border Radius', 'elementor-extras' ), 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__body' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'conditions' => $this->get_empty_area_condition( 'body' ), ] ); $this->start_controls_tabs( 'body_tabs_hover' ); $this->start_controls_tab( 'body_tab_default', [ 'label' => __( 'Default', 'elementor-extras' ) ] ); $this->add_control( 'body_background_color', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__body' => 'background-color: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'body' ), ] ); $this->add_control( 'body_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__body' => 'color: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'body' ), ] ); $this->end_controls_tab(); $this->start_controls_tab( 'body_tab_hover', [ 'label' => __( 'Hover', 'elementor-extras' ) ] ); $this->add_control( 'body_background_color_hover', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post:hover .ee-post__body' => 'background-color: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'body' ), ] ); $this->add_control( 'body_color_hover', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post:hover .ee-post__body' => 'color: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'body' ), ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $body_metas_condition = $this->get_area_metas_controls_conditions( 'body' ); $this->add_control( 'body_metas', [ 'separator' => 'before', 'label' => __( '↳ Body Metas', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'conditions' => $body_metas_condition, ] ); $this->add_control( 'body_metas_description', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => __( 'Use these to style metas that appear only in the Body area', 'elementor-extras' ), 'content_classes' => 'elementor-panel-alert elementor-panel-alert-warning', 'conditions' => $body_metas_condition, ] ); $this->add_control( 'body_metas_spacing', [ 'label' => __( 'Spacing', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 48, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__body .ee-post__metas__list' => 'margin-left: -{{SIZE}}px', '{{WRAPPER}} .ee-post__body .ee-post__meta, {{WRAPPER}} .ee-post__body .ee-post__meta__separator' => 'margin-left: {{SIZE}}px', ], 'conditions' => $body_metas_condition, ] ); $this->add_control( 'body_metas_distance', [ 'label' => __( 'Distance', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 48, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__body .ee-post__metas' => 'margin-bottom: {{SIZE}}px', ], 'conditions' => $body_metas_condition, ] ); $this->add_responsive_control( 'body_metas_text_align', [ 'label' => __( 'Align Text', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => '', 'options' => [ 'left' => [ 'title' => __( 'Left', 'elementor-extras' ), 'icon' => 'fa fa-align-left', ], 'center' => [ 'title' => __( 'Center', 'elementor-extras' ), 'icon' => 'fa fa-align-center', ], 'right' => [ 'title' => __( 'Right', 'elementor-extras' ), 'icon' => 'fa fa-align-right', ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__body .ee-post__metas--has-metas' => 'text-align: {{VALUE}};', ], 'conditions' => $body_metas_condition, ] ); $this->add_responsive_control( 'body_metas_padding', [ 'label' => __( 'Padding', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__body .ee-post__metas--has-metas' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'conditions' => $body_metas_condition, ] ); $this->add_control( 'body_metas_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__body .ee-post__metas--has-metas' => 'color: {{VALUE}};', ], 'conditions' => $body_metas_condition, ] ); $this->add_control( 'body_metas_background_color', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__body .ee-post__metas--has-metas' => 'background-color: {{VALUE}};', ], 'conditions' => $body_metas_condition, ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'body_metas_typography', 'label' => __( 'Typography', 'elementor-extras' ), 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_TEXT, ], 'selector' => '{{WRAPPER}} .ee-post__body .ee-post__metas--has-metas .ee-post__meta', 'conditions' => $body_metas_condition, ] ); $this->end_controls_section(); } /** * Register Footer Style Controls * * @since 1.6.0 * @return void */ public function register_footer_style_controls() { $this->start_controls_section( 'section_style_footer', [ 'label' => __( 'Footer', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_STYLE, 'conditions' => [ 'relation' => 'and', 'terms' => [ $this->get_empty_area_condition( 'footer' ), [ 'name' => 'skin_source', 'operator' => '==', 'value' => '', ], ], ], ] ); $this->add_responsive_control( 'footer_text_align', [ 'label' => __( 'Align Text', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => '', 'options' => [ 'left' => [ 'title' => __( 'Left', 'elementor-extras' ), 'icon' => 'fa fa-align-left', ], 'center' => [ 'title' => __( 'Center', 'elementor-extras' ), 'icon' => 'fa fa-align-center', ], 'right' => [ 'title' => __( 'Right', 'elementor-extras' ), 'icon' => 'fa fa-align-right', ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__footer' => 'text-align: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'footer' ), ] ); $this->add_responsive_control( 'footer_padding', [ 'label' => __( 'Padding', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__footer' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'conditions' => $this->get_empty_area_condition( 'footer' ), ] ); $this->add_responsive_control( 'footer_margin', [ 'label' => __( 'Margin', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__footer' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'conditions' => $this->get_empty_area_condition( 'footer' ), ] ); $this->add_control( 'footer_border_radius', [ 'type' => Controls_Manager::DIMENSIONS, 'label' => __( 'Border Radius', 'elementor-extras' ), 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__footer' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'conditions' => $this->get_empty_area_condition( 'footer' ), ] ); $this->start_controls_tabs( 'footer_tabs_hover' ); $this->start_controls_tab( 'footer_tab_default', [ 'label' => __( 'Default', 'elementor-extras' ) ] ); $this->add_control( 'footer_background_color', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__footer' => 'background-color: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'footer' ), ] ); $this->add_control( 'footer_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__footer' => 'color: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'footer' ), ] ); $this->add_control( 'footer_separator_heading', [ 'label' => __( 'Separator', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'conditions' => $this->get_empty_area_condition( 'footer' ), ] ); $this->add_control( 'footer_separator_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__footer' => 'border-color: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'footer' ), ] ); $this->end_controls_tab(); $this->start_controls_tab( 'footer_tab_hover', [ 'label' => __( 'Hover', 'elementor-extras' ) ] ); $this->add_control( 'footer_background_color_hover', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post:hover .ee-post__footer' => 'background-color: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'footer' ), ] ); $this->add_control( 'footer_color_hover', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post:hover .ee-post__footer' => 'color: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'footer' ), ] ); $this->add_control( 'footer_separator_heading_hover', [ 'label' => __( 'Separator', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'conditions' => $this->get_empty_area_condition( 'footer' ), ] ); $this->add_control( 'footer_separator_color_hover', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post:hover .ee-post__footer' => 'border-color: {{VALUE}};', ], 'conditions' => $this->get_empty_area_condition( 'footer' ), ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->add_responsive_control( 'footer_separator_size', [ 'separator' => 'before', 'label' => __( 'Separator Size', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 10, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__footer' => 'border-width: {{SIZE}}px', ], 'conditions' => $this->get_empty_area_condition( 'footer' ), ] ); $footer_metas_condition = $this->get_area_metas_controls_conditions( 'footer' ); $this->add_control( 'footer_metas', [ 'separator' => 'before', 'label' => __( '↳ Footer Metas', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'conditions' => $footer_metas_condition, ] ); $this->add_control( 'footer_metas_description', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => __( 'Use these to style metas that appear only in the Footer area', 'elementor-extras' ), 'content_classes' => 'elementor-panel-alert elementor-panel-alert-warning', 'conditions' => $footer_metas_condition, ] ); $this->add_control( 'footer_metas_spacing', [ 'label' => __( 'Spacing', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 48, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__footer .ee-post__metas__list' => 'margin-left: -{{SIZE}}px', '{{WRAPPER}} .ee-post__footer .ee-post__meta, {{WRAPPER}} .ee-post__footer .ee-post__meta__separator' => 'margin-left: {{SIZE}}px', ], 'conditions' => $footer_metas_condition, ] ); $this->add_control( 'footer_metas_distance', [ 'label' => __( 'Distance', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 48, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__footer .ee-post__metas' => 'margin-bottom: {{SIZE}}px', ], 'conditions' => $footer_metas_condition, ] ); $this->add_responsive_control( 'footer_metas_text_align', [ 'label' => __( 'Align Text', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => '', 'options' => [ 'left' => [ 'title' => __( 'Left', 'elementor-extras' ), 'icon' => 'fa fa-align-left', ], 'center' => [ 'title' => __( 'Center', 'elementor-extras' ), 'icon' => 'fa fa-align-center', ], 'right' => [ 'title' => __( 'Right', 'elementor-extras' ), 'icon' => 'fa fa-align-right', ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__footer .ee-post__metas--has-metas' => 'text-align: {{VALUE}};', ], 'conditions' => $footer_metas_condition, ] ); $this->add_responsive_control( 'footer_metas_padding', [ 'label' => __( 'Padding', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__footer .ee-post__metas--has-metas' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'conditions' => $footer_metas_condition, ] ); $this->add_control( 'footer_metas_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__footer .ee-post__metas--has-metas' => 'color: {{VALUE}};', ], 'conditions' => $footer_metas_condition, ] ); $this->add_control( 'footer_metas_background_color', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__footer .ee-post__metas--has-metas' => 'background-color: {{VALUE}};', ], 'conditions' => $footer_metas_condition, ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'footer_metas_typography', 'label' => __( 'Typography', 'elementor-extras' ), 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_TEXT, ], 'selector' => '{{WRAPPER}} .ee-post__footer .ee-post__metas--has-metas .ee-post__meta', 'conditions' => $footer_metas_condition, ] ); $this->end_controls_section(); } /** * Register Metas Style Controls * * @since 1.6.0 * @return void */ public function register_metas_style_controls() { $this->start_controls_section( 'section_style_metas', [ 'label' => __( 'Metas', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_STYLE, 'conditions' => [ 'relation' => 'and', 'terms' => [ [ 'relation' => 'or', 'terms' => [ [ 'name' => 'post_avatar_position', 'operator' => '!=', 'value' => '', ], [ 'name' => 'post_author_position', 'operator' => '!=', 'value' => '', ], [ 'name' => 'post_date_position', 'operator' => '!=', 'value' => '', ], [ 'name' => 'post_comments_position', 'operator' => '!=', 'value' => '', ] ] ], [ 'name' => 'skin_source', 'operator' => '==', 'value' => '', ], ] ], ] ); $this->add_control( 'metas_description', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => __( 'The effects of the controls below can be overriden at an area level by using the options inside each separate area.', 'elementor-extras' ), 'content_classes' => 'elementor-panel-alert elementor-panel-alert-info', 'conditions' => [ 'relation' => 'or', 'terms' => [ [ 'name' => 'post_author_position', 'operator' => '!=', 'value' => '', ], [ 'name' => 'post_date_position', 'operator' => '!=', 'value' => '', ], [ 'name' => 'post_comments_position', 'operator' => '!=', 'value' => '', ] ] ] ] ); $this->add_control( 'metas_spacing', [ 'label' => __( 'Spacing', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 48, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__metas__list' => 'margin-left: -{{SIZE}}px', '{{WRAPPER}} .ee-post__meta, {{WRAPPER}} .ee-post__meta__separator' => 'margin-left: {{SIZE}}px', ], 'conditions' => [ 'relation' => 'or', 'terms' => [ [ 'name' => 'post_author_position', 'operator' => '!=', 'value' => '', ], [ 'name' => 'post_date_position', 'operator' => '!=', 'value' => '', ], [ 'name' => 'post_comments_position', 'operator' => '!=', 'value' => '', ] ] ] ] ); $this->add_control( 'author_avatar_heading', [ 'separator' => 'before', 'label' => __( 'Avatar', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'condition' => [ 'post_avatar_position!' => '', ] ] ); $this->add_control( 'author_avatar_display', [ 'label' => __( 'Display', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => 'left', 'options' => [ 'left' => [ 'title' => __( 'Left', 'elementor-extras' ), 'icon' => 'eicon-h-align-left', ], 'top' => [ 'title' => __( 'Top', 'elementor-extras' ), 'icon' => 'eicon-v-align-top', ], 'right' => [ 'title' => __( 'Right', 'elementor-extras' ), 'icon' => 'eicon-h-align-right', ], ], 'condition' => [ 'post_avatar_position!' => '', ], 'prefix_class' => 'ee-posts-avatar-position-', 'label_block' => false, ] ); $this->add_control( 'author_avatar_vertical_align', [ 'label' => __( 'Align', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => 'center', 'options' => [ 'flex-start'=> [ 'title' => __( 'Top', 'elementor-extras' ), 'icon' => 'eicon-v-align-top', ], 'center' => [ 'title' => __( 'Center', 'elementor-extras' ), 'icon' => 'eicon-v-align-middle', ], 'flex-end' => [ 'title' => __( 'Bottom', 'elementor-extras' ), 'icon' => 'eicon-v-align-bottom', ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__metas--has-metas.ee-post__metas--has-avatar' => 'align-items: {{VALUE}};', ], 'label_block' => false, 'condition' => [ 'post_avatar_position!' => '', 'author_avatar_display!' => 'top', ] ] ); $this->add_responsive_control( 'author_avatar_size', [ 'label' => __( 'Size', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 12, 'max' => 100, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__metas__avatar' => 'max-width: {{SIZE}}px !important;', ], 'condition' => [ 'post_avatar_position!' => '', ], ] ); $this->add_control( 'author_avatar_spacing', [ 'label' => __( 'Spacing', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 48, ], ], 'selectors' => [ '{{WRAPPER}}.ee-posts-avatar-position-top .ee-post__metas--has-metas .ee-post__metas__avatar' => 'margin: 0 0 {{SIZE}}px 0', '{{WRAPPER}}.ee-posts-avatar-position-right .ee-post__metas--has-metas .ee-post__metas__avatar' => 'margin: 0 0 0 {{SIZE}}px', '{{WRAPPER}} .ee-post__metas--has-metas .ee-post__metas__avatar' => 'margin: 0 {{SIZE}}px 0 0', ], 'condition' => [ 'post_avatar_position!' => '', ], ] ); $this->add_control( 'author_avatar_border_radius', [ 'label' => __( 'Border Radius', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ '%' => [ 'min' => 0, 'max' => 100, 'step'=> 1, ], 'px' => [ 'min' => 0, 'max' => 100, 'step'=> 1, ], ], 'size_units' => [ '%', 'px' ], 'selectors' => [ '{{WRAPPER}} .ee-post__metas__avatar' => 'border-radius: {{SIZE}}{{UNIT}}', ], 'condition' => [ 'post_avatar_position!' => '', ], ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'author_avatar_box_shadow', 'selector' => '{{WRAPPER}} .ee-post__metas__avatar', 'separator' => '', 'condition' => [ 'post_avatar_position!' => '', ], ] ); $this->add_control( 'author_name_heading', [ 'separator' => 'before', 'label' => __( 'Author', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'condition' => [ 'post_author_position!' => '', ], ] ); $this->add_control( 'author_name_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__meta--author' => 'color: {{VALUE}};', ], 'condition' => [ 'post_author_position!' => '', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'author_name_typography', 'label' => __( 'Typography', 'elementor-extras' ), 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_TEXT, ], 'selector' => '{{WRAPPER}} .ee-post__meta--author', 'exclude' => [ 'font_family', 'font_size', 'line_height', 'letter_spacing', ], 'condition' => [ 'post_author_position!' => '', ], ] ); $this->add_control( 'date_heading', [ 'separator' => 'before', 'label' => __( 'Date', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'condition' => [ 'post_date_position!' => '', ], ] ); $this->add_control( 'date_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__meta--date' => 'color: {{VALUE}};', ], 'condition' => [ 'post_date_position!' => '', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'date_typography', 'label' => __( 'Typography', 'elementor-extras' ), 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_TEXT, ], 'selector' => '{{WRAPPER}} .ee-post__meta--date', 'exclude' => [ 'font_family', 'font_size', 'line_height', 'letter_spacing', ], 'condition' => [ 'post_date_position!' => '', ], ] ); if ( is_woocommerce_active() ) { $this->add_control( 'price_heading', [ 'separator' => 'before', 'label' => __( 'Price', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'condition' => [ 'post_price_position!' => '', 'posts_post_type' => ['product', 'current_query'], ], ] ); $this->add_control( 'price_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__meta--price' => 'color: {{VALUE}};', ], 'condition' => [ 'post_price_position!' => '', 'posts_post_type' => ['product', 'current_query'], ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'price_typography', 'label' => __( 'Typography', 'elementor-extras' ), 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_TEXT, ], 'selector' => '{{WRAPPER}} .ee-post__meta--price', 'exclude' => [ 'font_family', 'font_size', 'line_height', 'letter_spacing', ], 'condition' => [ 'post_price_position!' => '', 'posts_post_type' => ['product', 'current_query'], ], ] ); } $this->add_control( 'comments_heading', [ 'separator' => 'before', 'label' => __( 'Comments', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'condition' => [ 'post_comments_position!' => '', ], ] ); $this->add_control( 'comments_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__meta--comments' => 'color: {{VALUE}};', ], 'condition' => [ 'post_comments_position!' => '', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'comments_typography', 'label' => __( 'Typography', 'elementor-extras' ), 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_TEXT, ], 'selector' => '{{WRAPPER}} .ee-post__meta--comments', 'exclude' => [ 'font_family', 'font_size', 'line_height', 'letter_spacing', ], 'condition' => [ 'post_comments_position!' => '', ], ] ); $this->end_controls_section(); } /** * Register Terms Style Controls * * @since 1.6.0 * @return void */ public function register_terms_style_controls() { $this->start_controls_section( 'section_style_terms', [ 'label' => __( 'Terms', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => [ 'post_terms_position!' => '', ] ] ); $this->add_control( 'terms_terms_heading', [ 'separator' => 'before', 'label' => __( 'Terms', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'condition' => [ 'post_terms_position!' => '', ] ] ); $this->add_responsive_control( 'terms_terms_align', [ 'label' => __( 'Align Text', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => '', 'options' => [ 'left' => [ 'title' => __( 'Left', 'elementor-extras' ), 'icon' => 'fa fa-align-left', ], 'center' => [ 'title' => __( 'Center', 'elementor-extras' ), 'icon' => 'fa fa-align-center', ], 'right' => [ 'title' => __( 'Right', 'elementor-extras' ), 'icon' => 'fa fa-align-right', ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__terms' => 'text-align: {{VALUE}};', ], 'condition' => [ 'post_terms_position!' => '', ] ] ); $this->add_responsive_control( 'terms_distance', [ 'label' => __( 'Distance', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 48, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__terms' => 'margin-bottom: {{SIZE}}px', ], 'condition' => [ 'post_terms_position!' => '', ] ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'terms_typography', 'label' => __( 'Typography', 'elementor-extras' ), 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_TEXT, ], 'selector' => '{{WRAPPER}} .ee-post__terms__term', 'fields_options' => [ 'font_size' => [ 'size_units' => [ 'px', 'vw' ], ], ], 'condition' => [ 'post_terms_position!' => '', ] ] ); $this->add_control( 'terms_term_heading', [ 'separator' => 'before', 'label' => __( 'Term', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'condition' => [ 'post_terms_position!' => '', ], ] ); $this->add_responsive_control( 'terms_spacing', [ 'label' => __( 'Horzontal Spacing', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 48, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__terms' => 'margin-left: -{{SIZE}}px', '{{WRAPPER}} .ee-post__terms__term' => 'margin-left: {{SIZE}}px', '{{WRAPPER}} .ee-post__terms__separator' => 'margin-left: {{SIZE}}px', ], 'condition' => [ 'post_terms_count!' => '1', 'post_terms_position!' => '', ], ] ); $this->add_responsive_control( 'terms_vertical_spacing', [ 'label' => __( 'Vertical Spacing', 'elementor-extras' ), 'description' => __( 'If you have multuple lines of terms, this will help you distance them from one another', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 48, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__terms__term' => 'margin-bottom: {{SIZE}}px', ], 'condition' => [ 'post_terms_count!' => '1', 'post_terms_position!' => '', ], ] ); $this->add_responsive_control( 'terms_padding', [ 'label' => __( 'Padding', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__terms__link' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'condition' => [ 'post_terms_position!' => '', ], ] ); $this->add_control( 'terms_border_radius', [ 'type' => Controls_Manager::DIMENSIONS, 'label' => __( 'Border Radius', 'elementor-extras' ), 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__terms__link' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'condition' => [ 'post_terms_position!' => '', ], ] ); $this->start_controls_tabs( 'terms_tabs_hover' ); $this->start_controls_tab( 'terms_tab_default', [ 'label' => __( 'Default', 'elementor-extras' ), 'condition' => [ 'post_terms_position!' => '', ], ] ); $this->add_control( 'terms_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__terms__link' => 'color: {{VALUE}};', ], 'condition' => [ 'post_terms_position!' => '', ], ] ); $this->add_control( 'terms_background_color', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__terms__link' => 'background-color: {{VALUE}};', ], 'condition' => [ 'post_terms_position!' => '', ], ] ); $this->end_controls_tab(); $this->start_controls_tab( 'terms_tab_hover', [ 'label' => __( 'Hover', 'elementor-extras' ), 'conditions' => [ 'relation' => 'and', 'terms' => [ [ 'name' => 'post_terms_position', 'operator' => '!=', 'value' => '', ], [ 'name' => 'post_terms_position', 'operator' => '!=', 'value' => 'media', ], ] ], ] ); $this->add_control( 'terms_color_hover', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__terms__link:hover' => 'color: {{VALUE}};', ], 'conditions' => [ 'relation' => 'and', 'terms' => [ [ 'name' => 'post_terms_position', 'operator' => '!=', 'value' => '', ], [ 'name' => 'post_terms_position', 'operator' => '!=', 'value' => 'media', ], ] ], ] ); $this->add_control( 'terms_background_color_hover', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__terms__link:hover' => 'background-color: {{VALUE}};', ], 'conditions' => [ 'relation' => 'and', 'terms' => [ [ 'name' => 'post_terms_position', 'operator' => '!=', 'value' => '', ], [ 'name' => 'post_terms_position', 'operator' => '!=', 'value' => 'media', ], ] ], ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->add_control( 'terms_separator_heading', [ 'separator' => 'before', 'label' => __( 'Separator', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'condition' => [ 'post_terms_position!' => '', ], ] ); $this->add_control( 'terms_separator_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__terms__separator' => 'color: {{VALUE}};', ], 'condition' => [ 'post_terms_position!' => '', ], ] ); $this->end_controls_section(); } /** * Register Title Style Controls * * @since 1.6.0 * @return void */ public function register_title_style_controls() { $this->start_controls_section( 'section_style_title', [ 'label' => __( 'Title', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => [ 'post_title_position!' => '', 'skin_source' => '', ] ] ); $this->add_responsive_control( 'title_align', [ 'label' => __( 'Align Text', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => '', 'options' => [ 'left' => [ 'title' => __( 'Left', 'elementor-extras' ), 'icon' => 'fa fa-align-left', ], 'center' => [ 'title' => __( 'Center', 'elementor-extras' ), 'icon' => 'fa fa-align-center', ], 'right' => [ 'title' => __( 'Right', 'elementor-extras' ), 'icon' => 'fa fa-align-right', ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__title' => 'text-align: {{VALUE}};', ], 'condition' => [ 'post_title_position!' => '', ] ] ); $this->add_control( 'title_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__title__heading' => 'color: {{VALUE}};', ], 'condition' => [ 'post_title_position!' => '', ] ] ); $this->add_control( 'title_background_color', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__title' => 'background-color: {{VALUE}};', ], ] ); $this->add_responsive_control( 'title_margin', [ 'label' => __( 'Margin', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__title' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'condition' => [ 'post_title_position!' => '', ] ] ); $this->add_responsive_control( 'title_padding', [ 'label' => __( 'Padding', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__title' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'condition' => [ 'post_title_position!' => '', ] ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'title_typography', 'label' => __( 'Typography', 'elementor-extras' ), 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_SECONDARY, ], 'selector' => '{{WRAPPER}} .ee-post__title__heading', 'condition' => [ 'post_title_position!' => '', ] ] ); $this->add_group_control( Group_Control_Text_Shadow::get_type(), [ 'name' => 'title_shadow', 'selector' => '{{WRAPPER}} .ee-post__title__heading', 'condition' => [ 'post_title_position!' => '', ] ] ); $this->end_controls_section(); } /** * Register Excerpt Style Controls * * @since 1.6.0 * @return void */ public function register_excerpt_style_controls() { $this->start_controls_section( 'section_style_excerpt', [ 'label' => __( 'Excerpt', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => [ 'post_excerpt_position!' => '', 'skin_source' => '', ] ] ); $this->add_responsive_control( 'excerpt_align', [ 'label' => __( 'Align Text', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => '', 'options' => [ 'left' => [ 'title' => __( 'Left', 'elementor-extras' ), 'icon' => 'fa fa-align-left', ], 'center' => [ 'title' => __( 'Center', 'elementor-extras' ), 'icon' => 'fa fa-align-center', ], 'right' => [ 'title' => __( 'Right', 'elementor-extras' ), 'icon' => 'fa fa-align-right', ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__excerpt' => 'text-align: {{VALUE}};', ], 'condition' => [ 'post_excerpt_position!' => '', ] ] ); $this->add_responsive_control( 'excerpt_margin', [ 'label' => __( 'Margin', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__excerpt' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'condition' => [ 'post_excerpt_position!' => '', ] ] ); $this->add_responsive_control( 'excerpt_padding', [ 'label' => __( 'Padding', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__excerpt' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'condition' => [ 'post_excerpt_position!' => '', ] ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'excerpt_typography', 'label' => __( 'Typography', 'elementor-extras' ), 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_TEXT, ], 'selector' => '{{WRAPPER}} .ee-post__excerpt', ] ); $this->end_controls_section(); } /** * Register Button Style Controls * * @since 1.6.0 * @return void */ public function register_button_style_controls() { $this->start_controls_section( 'section_style_button', [ 'label' => __( 'Button', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => [ 'post_button_position!' => '', ] ] ); $this->add_responsive_control( 'button_align', [ 'label' => __( 'Align', 'elementor-extras' ), 'type' => Controls_Manager::CHOOSE, 'default' => '', 'options' => [ 'left' => [ 'title' => __( 'Left', 'elementor-extras' ), 'icon' => 'fa fa-align-left', ], 'center' => [ 'title' => __( 'Center', 'elementor-extras' ), 'icon' => 'fa fa-align-center', ], 'right' => [ 'title' => __( 'Right', 'elementor-extras' ), 'icon' => 'fa fa-align-right', ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__read-more' => 'text-align: {{VALUE}};', ], 'condition' => [ 'post_button_position!' => '', ] ] ); $this->add_responsive_control( 'button_margin', [ 'label' => __( 'Margin', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__read-more > *' => 'margin: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'condition' => [ 'post_button_position!' => '', ] ] ); $this->add_responsive_control( 'button_padding', [ 'label' => __( 'Padding', 'elementor-extras' ), 'type' => Controls_Manager::DIMENSIONS, 'size_units' => [ 'px', 'em', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__read-more > *' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'condition' => [ 'post_button_position!' => '', ], ] ); $this->add_group_control( Group_Control_Border::get_type(), [ 'name' => 'button_border', 'label' => __( 'Border', 'elementor-extras' ), 'selector' => '{{WRAPPER}} .ee-post__read-more > *', ] ); $this->add_control( 'button_border_radius', [ 'type' => Controls_Manager::DIMENSIONS, 'label' => __( 'Border Radius', 'elementor-extras' ), 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .ee-post__read-more > *' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'condition' => [ 'post_button_position!' => '', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'button_typography', 'label' => __( 'Typography', 'elementor-extras' ), 'global' => [ 'default' => Global_Typography::TYPOGRAPHY_TEXT, ], 'selector' => '{{WRAPPER}} .ee-post__read-more > *', ] ); $this->add_responsive_control( 'read_more_distance', [ 'label' => __( 'Spacing', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 100, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__read-more' => 'margin-top: {{SIZE}}px;', ], 'condition' => [ 'post_button_position!' => '', ] ] ); $this->add_group_control( Group_Control_Transition::get_type(), [ 'name' => 'button', 'selector' => '{{WRAPPER}} .ee-post__read-more > *', ] ); $this->start_controls_tabs( 'button_tabs' ); $this->start_controls_tab( 'button_tab_default', [ 'label' => __( 'Default', 'elementor-extras' ) ] ); $this->add_control( 'read_more_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__read-more > *' => 'color: {{VALUE}};', ], 'condition' => [ 'post_button_position!' => '', ] ] ); $this->add_control( 'read_more_background_color', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__read-more > *' => 'background-color: {{VALUE}};', ], 'condition' => [ 'post_button_position!' => '', ] ] ); $this->end_controls_tab(); $this->start_controls_tab( 'button_tab_hover', [ 'label' => __( 'Hover', 'elementor-extras' ) ] ); $this->add_control( 'read_more_color_hover', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__read-more > *:hover' => 'color: {{VALUE}};', ], 'condition' => [ 'post_button_position!' => '', ] ] ); $this->add_control( 'read_more_background_color_hover', [ 'label' => __( 'Background Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__read-more > *:hover' => 'background-color: {{VALUE}};', ], 'condition' => [ 'post_button_position!' => '', ] ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->end_controls_section(); } /** * Register Hover Animation Controls * * @since 1.6.0 * @return void */ public function register_hover_animation_controls() { $media_not_empty = [ 'relation' => 'or', 'terms' => [ [ 'name' => 'post_avatar_position', 'operator' => '!=', 'value' => '', ], [ 'name' => 'post_author_position', 'operator' => '!=', 'value' => '', ], [ 'name' => 'post_date_position', 'operator' => '!=', 'value' => '', ], [ 'name' => 'post_comments_position', 'operator' => '!=', 'value' => '', ], [ 'name' => 'post_title_position', 'operator' => '!=', 'value' => '', ], [ 'name' => 'post_terms_position', 'operator' => '!=', 'value' => '', ] ], ]; $this->start_controls_section( 'section_style_hover_animation', [ 'label' => __( 'Hover Effects', 'elementor-extras' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => [ 'skin_source' => '', ], ] ); $this->add_group_control( Group_Control_Transition::get_type(), [ 'name' => 'media', 'selector' => '{{WRAPPER}} .ee-post__media, {{WRAPPER}} .ee-post__media__content, {{WRAPPER}} .ee-post__media__content > *, {{WRAPPER}} .ee-post__media__overlay, {{WRAPPER}} .ee-post__media__thumbnail, {{WRAPPER}} .ee-post__media__header, {{WRAPPER}} .ee-post__media__body, {{WRAPPER}} .ee-post__media__footer', ] ); $this->update_control( 'media_transition', array( 'default' => 'custom', )); $this->add_control( 'media_content_style_heading', [ 'label' => __( 'Content', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'conditions' => $media_not_empty, ] ); $this->add_control( 'media_content_effect', [ 'label' => __( 'Effect', 'elementor-extras' ), 'type' => Controls_Manager::SELECT, 'default' => '', 'options' => [ '' => __( 'None', 'elementor-extras' ), 'fade-in' => __( 'Fade In', 'elementor-extras' ), 'fade-out' => __( 'Fade Out', 'elementor-extras' ), 'from-top' => __( 'From Top', 'elementor-extras' ), 'from-right' => __( 'From Right', 'elementor-extras' ), 'from-bottom' => __( 'From Bottom', 'elementor-extras' ), 'from-left' => __( 'From Left', 'elementor-extras' ), 'fade-from-top' => __( 'Fade From Top', 'elementor-extras' ), 'fade-from-right' => __( 'Fade From Right', 'elementor-extras' ), 'fade-from-bottom' => __( 'Fade From Bottom', 'elementor-extras' ), 'fade-from-left' => __( 'Fade From Left', 'elementor-extras' ), 'to-top' => __( 'To Top', 'elementor-extras' ), 'to-right' => __( 'To Right', 'elementor-extras' ), 'to-bottom' => __( 'To Bottom', 'elementor-extras' ), 'to-left' => __( 'To Left', 'elementor-extras' ), 'fade-to-top' => __( 'Fade To Top', 'elementor-extras' ), 'fade-to-right' => __( 'Fade To Right', 'elementor-extras' ), 'fade-to-bottom' => __( 'Fade To Bottom', 'elementor-extras' ), 'fade-to-left' => __( 'Fade To Left', 'elementor-extras' ), ], 'conditions' => $media_not_empty, 'prefix_class' => 'ee-media-effect__content--', ] ); $this->add_control( 'media_area_heading', [ 'label' => __( 'Media', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', ] ); $this->start_controls_tabs( 'media_tabs_hover' ); $this->start_controls_tab( 'media_tab_default', [ 'label' => __( 'Default', 'elementor-extras' ) ] ); $this->add_responsive_control( 'media_area_scale', [ 'label' => __( 'Scale', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0.7, 'max' => 1.3, 'step'=> 0.01, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__media' => 'transform: scale({{SIZE}});', ], ] ); $this->add_control( 'media_area_color', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__media__content *' => 'color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'media_area_box_shadow', 'selector' => '{{WRAPPER}} .ee-post__media', 'separator' => '', ] ); $this->add_group_control( Group_Control_Border::get_type(), [ 'name' => 'media_area_border', 'label' => __( 'Border', 'elementor-extras' ), 'selector' => '{{WRAPPER}} .ee-post__media', ] ); $this->end_controls_tab(); $this->start_controls_tab( 'media_tab_hover', [ 'label' => __( 'Hover', 'elementor-extras' ) ] ); $this->add_control( 'media_area_heading_hover', [ 'label' => __( 'Area', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, ] ); $this->add_responsive_control( 'media_area_scale_hover', [ 'label' => __( 'Scale', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0.7, 'max' => 1.3, 'step'=> 0.01, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__media:hover' => 'transform: scale({{SIZE}});', ], ] ); $this->add_control( 'media_area_color_hover', [ 'label' => __( 'Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__media:hover .ee-post__media__content *' => 'color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'media_area_box_shadow_hover', 'selector' => '{{WRAPPER}} .ee-post__media:hover', 'separator' => '', ] ); $this->add_control( 'media_area_border_color_hover', [ 'label' => __( 'Border Color', 'elementor-extras' ), 'type' => Controls_Manager::COLOR, 'selectors' => [ '{{WRAPPER}} .ee-post__media:hover' => 'border-color: {{VALUE}};', ], ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->add_control( 'media_thumbnail_heading', [ 'label' => __( 'Thumbnail', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', ] ); $this->start_controls_tabs( 'thumbnail_tabs_hover' ); $this->start_controls_tab( 'thumbnail_tab_default', [ 'label' => __( 'Default', 'elementor-extras' ) ] ); $this->add_responsive_control( 'media_thumbnail_scale', [ 'label' => __( 'Scale', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 1, 'max' => 1.3, 'step'=> 0.01, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__media__thumbnail' => 'transform: scale({{SIZE}});', ], ] ); $this->add_group_control( Group_Control_Css_Filter::get_type(), [ 'name' => 'media_thumbnail_css_filters', 'selector' => '{{WRAPPER}} .ee-post__media__thumbnail', ] ); $this->end_controls_tab(); $this->start_controls_tab( 'thumbnail_tab_hover', [ 'label' => __( 'Hover', 'elementor-extras' ) ] ); $this->add_responsive_control( 'media_thumbnail_scale_hover', [ 'label' => __( 'Scale', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 1, 'max' => 1.3, 'step'=> 0.01, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__media:hover .ee-post__media__thumbnail' => 'transform: scale({{SIZE}});', ], ] ); $this->add_group_control( Group_Control_Css_Filter::get_type(), [ 'name' => 'media_thumbnail_css_filters_hover', 'selector' => '{{WRAPPER}} .ee-post__media:hover .ee-post__media__thumbnail', ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->add_control( 'media_overlay_heading', [ 'label' => __( 'Overlay', 'elementor-extras' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', ] ); $this->start_controls_tabs( 'overlay_tabs_hover' ); $this->start_controls_tab( 'overlay_tab_default', [ 'label' => __( 'Default', 'elementor-extras' ) ] ); $this->add_group_control( Group_Control_Background::get_type(), [ 'name' => 'media_overlay_background_color', 'types' => [ 'classic', 'gradient' ], 'selector' => '{{WRAPPER}} .ee-post__media__overlay', 'default' => 'classic', 'exclude' => [ 'image', ] ] ); $this->add_control( 'media_overlay_blend', [ 'label' => __( 'Blend mode', 'elementor-extras' ), 'type' => Controls_Manager::SELECT, 'default' => 'normal', 'options' => [ 'normal' => __( 'Normal', 'elementor-extras' ), 'multiply' => __( 'Multiply', 'elementor-extras' ), 'screen' => __( 'Screen', 'elementor-extras' ), 'overlay' => __( 'Overlay', 'elementor-extras' ), 'darken' => __( 'Darken', 'elementor-extras' ), 'lighten' => __( 'Lighten', 'elementor-extras' ), 'color' => __( 'Color', 'elementor-extras' ), 'color-dodge' => __( 'Color Dodge', 'elementor-extras' ), 'hue' => __( 'Hue', 'elementor-extras' ), ], 'selectors' => [ '{{WRAPPER}} .ee-post__media__overlay' => 'mix-blend-mode: {{VALUE}};', ], ] ); $this->add_control( 'media_overlay_blend_notice', [ 'type' => Controls_Manager::RAW_HTML, 'raw' => sprintf( __( 'Please check blend mode support for your browser %1$s here %2$s', 'elementor-extras' ), '', '' ), 'content_classes' => 'elementor-panel-alert elementor-panel-alert-warning', 'condition' => [ 'media_overlay_blend!' => 'normal' ], ] ); $this->add_responsive_control( 'media_overlay_opacity', [ 'label' => __( 'Opacity', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 1, 'step'=> 0.1, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__media__overlay' => 'opacity: {{SIZE}};', ], ] ); $this->end_controls_tab(); $this->start_controls_tab( 'overlay_tab_hover', [ 'label' => __( 'Hover', 'elementor-extras' ) ] ); $this->add_group_control( Group_Control_Background::get_type(), [ 'name' => 'media_overlay_background_color_hover', 'types' => [ 'classic', 'gradient' ], 'selector' => '{{WRAPPER}} .ee-post__media:hover .ee-post__media__overlay', 'default' => 'classic', 'exclude' => [ 'image', ] ] ); $this->add_responsive_control( 'media_overlay_opacity_hover', [ 'label' => __( 'Opacity', 'elementor-extras' ), 'type' => Controls_Manager::SLIDER, 'range' => [ 'px' => [ 'min' => 0, 'max' => 1, 'step'=> 0.1, ], ], 'selectors' => [ '{{WRAPPER}} .ee-post__media:hover .ee-post__media__overlay' => 'opacity: {{SIZE}};', ], ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->end_controls_section(); } /** * Get Areas Metas Controls Conditions * * @since 1.6.0 * @return void */ protected function get_area_metas_controls_conditions( $area ) { if ( ! $area ) return; $conditions = [ 'relation' => 'or', 'terms' => [], ]; $metas = Module::get_meta_parts(); foreach ( $metas as $meta ) { if ( in_array( $meta, ['price'] ) ) { $conditions['terms'][] = [ 'relation' => 'and', 'terms' => [ [ 'name' => 'post_' . $meta . '_position', 'operator' => '==', 'value' => $area, ], [ 'name' => 'posts_post_type', 'operator' => '==', 'value' => 'product', ], ] ]; } else { $conditions['terms'][] = [ 'name' => 'post_' . $meta . '_position', 'operator' => '==', 'value' => $area, ]; } } return $conditions; } /** * Get Empty Area Condition * * @since 1.6.0 * @return void */ protected function get_empty_area_condition( $area, $other_conditions = [] ) { if ( ! $area ) return; $conditions = $this->get_area_metas_controls_conditions( $area ); $parts = Module::get_content_post_parts(); foreach( $parts as $part ) { $conditions['terms'][] = [ 'name' => 'post_' . $part . '_position', 'operator' => '==', 'value' => $area, ]; } $conditions = array_merge( $conditions, $other_conditions ); return $conditions; } /** * Get Ordered Posts Parts * * @since 1.6.0 * @return void */ public function get_ordered_post_parts( $parts ) { if ( ! $parts ) return; $_parts = []; $settings = $this->get_settings(); foreach ( $parts as $part ) { $order = $settings['post_' . $part . '_order']; if ( ! $order ) $order = 0; $_parts[$part] = $order; } asort( $_parts ); return $_parts; } /** * Get Post Classes * * @since 2.1.0 * @return array */ public function get_post_classes() { global $post; $settings = $this->get_settings(); $post_classes = [ 'ee-post' ]; if ( 'yes' === $settings['post_media'] && in_array( $settings[ 'post_media_position' ], array( 'left', 'right' ) ) ) { $post_classes[] = 'ee-post--horizontal'; $post_classes[] = 'ee-post--horizontal__' . $settings[ 'post_media_position' ]; } if ( is_sticky( $post->ID ) ) { $post_classes[] = 'sticky'; } /** * Post Classes Filter * * Filters the post classes * * @since 2.2.28 * @param string $post_classes The array of classes * @param object|WP_Post $post The current post * @param object|WP_Post $settings The widget settings */ return apply_filters( 'elementor_extras/widgets/posts/post_classes', $post_classes, $post, $this->get_settings() ); } /** * In in area * * @since 1.6.0 * @return void */ public function is_in_area( $part, $area ) { if ( empty( $part ) || empty( $area ) ) return; $settings = $this->get_settings(); if ( $settings[ 'post_' . $part . '_position' ] === $area ) { if ( $this->is_meta_part( $part ) || 'avatar' === $part ) { if ( in_array( $part, $settings[ 'post_metas' ] ) ) { return true; } } else { return true; } } return false; } /** * In Meta Part * * @since 2.2.0 * @return void */ public function is_meta_part( $part ) { if ( empty( $part ) ) return; if ( in_array( $part, Module::get_meta_parts() ) ) { return true; } return false; } /** * Checks if a particular area of the layout has any content * * @since 1.6.0 * @return bool * */ public function is_empty_area( $area ) { if ( empty( $area ) ) return; $settings = $this->get_settings(); $content_parts = Module::get_content_parts(); foreach ( $content_parts as $part ) { if ( $this->is_in_area( $part, $area ) ) { // Additional check to see if we have any terms in this area if ( 'terms' === $part ) { if ( false !== $this->get_terms() ) return false; } else if ( 'price' === $part ) { if ( 'product' === $settings['posts_post_type'] ) { return false; } } else { return false; } } } return true; } /** * Checks if any metas are in a specific area * * @since 1.6.0 * @return bool */ public function metas_in_area( $area ) { foreach ( Module::get_meta_parts() as $part ) { if ( $this->is_in_area( $part, $area ) ) { return true; } } return false; } /** * Render * * Render widget contents on frontend * * @since 1.6.0 * @return void */ public function render() { $this->add_inline_editing_attributes( 'classic_filters_all_text', 'none' ); } /** * Content Template * * Javascript content template for quick rendering. None in this case * * @since 1.6.0 * @return void */ protected function content_template() {} }