<?php namespace WprAddons\Modules\Search\Widgets; use Elementor\Controls_Manager; use Elementor\Group_Control_Typography; use Elementor\Group_Control_Background; use Elementor\Group_Control_Image_Size; use Elementor\Group_Control_Css_Filter; use Elementor\Core\Kits\Documents\Tabs\Global_Colors; use Elementor\Group_Control_Box_Shadow; use Elementor\Repeater; use Elementor\Core\Kits\Documents\Tabs\Global_Typography; use Elementor\Widget_Base; use Elementor\Utils; use Elementor\Icons; use WprAddons\Classes\Utilities; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } class Wpr_Search extends Widget_Base { public function get_name() { return 'wpr-search'; } public function get_title() { return esc_html__( 'Search (AJAX)', 'wpr-addons' ); } public function get_icon() { return 'wpr-icon eicon-site-search'; } public function get_categories() { return Utilities::show_theme_buider_widget_on('archive') ? [ 'wpr-theme-builder-widgets' ] : [ 'wpr-widgets']; } public function get_keywords() { return [ 'royal', 'search', 'search widget', 'ajax search' ]; } public function has_widget_inner_wrapper(): bool { return ! \Elementor\Plugin::$instance->experiments->is_feature_active( 'e_optimized_markup' ); } public function get_style_depends() { return [ 'wpr-animations-css', 'wpr-link-animations-css', 'wpr-button-animations-css', 'wpr-loading-animations-css', 'wpr-lightgallery-css' ]; } public function get_custom_help_url() { if ( empty(get_option('wpr_wl_plugin_links')) ) // return 'https://royal-elementor-addons.com/contact/?ref=rea-plugin-panel-search-help-btn'; return 'https://wordpress.org/support/plugin/royal-elementor-addons/'; } public function add_section_style_ajax() { $this->start_controls_section( 'section_style_ajax', [ 'label' => esc_html__( 'Ajax', 'wpr-addons' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => [ 'ajax_search' => 'yes', ], ] ); $this->add_control( 'heading_list', [ 'label' => esc_html__( 'Search List', 'wpr-addons' ), 'type' => Controls_Manager::HEADING, ] ); $this->add_control( 'background_color', [ 'label' => esc_html__( 'Background Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#FFFFFF', 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch' => 'background-color: {{VALUE}};', ], ] ); $this->add_control( 'background_color_hover', [ 'label' => esc_html__( 'Background Color (Hover)', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#F6F6F6', 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch ul li:hover' => 'background-color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'ajax_box_shadow', 'selector' => '{{WRAPPER}} .wpr-data-fetch' ] ); $this->add_control( 'search_list_item_transition_duration', [ 'label' => esc_html__( 'Transition Duration', 'wpr-addons' ), 'type' => Controls_Manager::NUMBER, 'default' => 0.5, 'min' => 0, 'max' => 5, 'step' => 0.1, 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch ul li' => 'transition-duration: {{VALUE}}s', ], ] ); $this->add_responsive_control( 'slider_content_hr', [ 'label' => esc_html__( 'Horizontal Position', 'wpr-addons' ), 'type' => Controls_Manager::CHOOSE, 'label_block' => false, 'options' => [ 'left' => [ 'title' => esc_html__( 'Left', 'wpr-addons' ), 'icon' => 'eicon-h-align-left', ], 'center' => [ 'title' => esc_html__( 'Center', 'wpr-addons' ), 'icon' => 'eicon-h-align-center', ], 'right' => [ 'title' => esc_html__( 'Right', 'wpr-addons' ), 'icon' => 'eicon-h-align-right', ] ], 'selectors_dictionary' => [ 'left' => 'left: 0; right: auto;', 'center' => 'left: 50%; transform: translateX(-50%)', 'right' => 'right: 0; left: auto;' ], 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch' => '{{VALUE}};', ], 'separator' => 'before' ] ); $this->add_responsive_control( 'search_list_width', [ 'label' => esc_html__( 'Container Width', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px', '%', 'vw'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 2000, ], '%' => [ 'min' => 50, 'max' => 200, ], 'vw' => [ 'min' => 0, 'max' => 100, ], ], 'default' => [ 'unit' => '%', 'size' => 100, ], 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch' => 'width: {{SIZE}}{{UNIT}};', ], 'separator' => 'before' ] ); $this->add_responsive_control( 'search_list_max_height', [ 'label' => esc_html__( 'Max Height', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px', 'vh'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 1000, ], 'vh' => [ 'min' => 0, 'max' => 100, ], ], 'default' => [ 'unit' => 'vh', 'size' => 50, ], 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch ul' => 'max-height: {{SIZE}}{{UNIT}};', ], 'separator' => 'before' ] ); $this->add_responsive_control( 'search_list_top_distance', [ 'label' => esc_html__( 'Top Distance', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px', 'vh'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 50, ], 'vh' => [ 'min' => 0, 'max' => 10, ], ], 'default' => [ 'unit' => 'px', 'size' => 5, ], 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch' => 'margin-top: {{SIZE}}{{UNIT}};', ] ] ); $this->add_control( 'list_item_title', [ 'label' => esc_html__( 'List Item', 'wpr-addons' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before' ] ); $this->add_responsive_control( 'search_list_item_bottom_distance', [ 'label' => esc_html__( 'Bottom Distance', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px', 'vh'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 50, ], 'vh' => [ 'min' => 0, 'max' => 10, ], ], 'default' => [ 'unit' => 'px', 'size' => 5, ], 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch ul li:not(:last-child)' => 'margin-bottom: {{SIZE}}{{UNIT}};', ] ] ); $this->add_responsive_control( 'search_list_item_padding', [ 'label' => esc_html__( 'Padding', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'default' => [ 'top' => 2, 'right' => 2, 'bottom' => 2, 'left' => 2, ], 'size_units' => [ 'px', ], 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch ul li' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ] ] ); $this->add_control( 'heading_title', [ 'label' => esc_html__( 'Title', 'wpr-addons' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before' ] ); $this->add_control( 'title_color', [ 'label' => esc_html__( 'Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#222222', 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch a.wpr-ajax-title' => 'color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'title_typography', 'selector' => '{{WRAPPER}} .wpr-data-fetch a.wpr-ajax-title', ] ); $this->add_responsive_control( 'title_distance', [ 'label' => esc_html__( 'Distance', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 50, ] ], 'default' => [ 'unit' => 'px', 'size' => 2, ], 'selectors' => [ '{{WRAPPER}} .wpr-ajax-search-content a.wpr-ajax-title' => 'margin-bottom: {{SIZE}}{{UNIT}};', ] ] ); $this->add_control( 'heading_description', [ 'label' => esc_html__( 'Description', 'wpr-addons' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before' ] ); $this->add_control( 'description_color', [ 'label' => esc_html__( 'Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#757575', 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch p a' => 'color: {{VALUE}};', '{{WRAPPER}} .wpr-search-admin-notice' => 'color: {{VALUE}};' ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'description_typography', 'selector' => '{{WRAPPER}} .wpr-data-fetch p a, {{WRAPPER}} .wpr-search-admin-notice', 'fields_options' => [ 'typography' => [ 'default' => 'custom', ], 'font_size' => [ 'default' => [ 'size' => '14', 'unit' => 'px', ], ] ], ] ); $this->add_responsive_control( 'description_distance', [ 'label' => esc_html__( 'Distance', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 50, ] ], 'default' => [ 'unit' => 'px', 'size' => 2, ], 'selectors' => [ '{{WRAPPER}} .wpr-ajax-search-content p.wpr-ajax-desc' => 'margin-bottom: {{SIZE}}{{UNIT}};', ] ] ); $this->add_control( 'heading_image', [ 'label' => esc_html__( 'Image', 'wpr-addons' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before', 'condition' => [ 'show_ajax_thumbnails' => 'yes' ] ] ); // $this->add_control_ajax_search_img_size(); $this->add_responsive_control( 'image_width', [ 'label' => esc_html__( 'Width', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px', '%'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 300, ], '%' => [ 'min' => 0, 'max' => 100, ], ], 'default' => [ 'unit' => 'px', 'size' => 150, ], 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch a.wpr-ajax-img-wrap' => 'width: {{SIZE}}{{UNIT}};', '{{WRAPPER}} .wpr-data-fetch .wpr-ajax-search-content' => 'width: calc(100% - {{SIZE}}{{UNIT}});', ], 'condition' => [ 'show_ajax_thumbnails' => 'yes' ] ] ); $this->add_responsive_control( 'image_distance', [ 'label' => esc_html__( 'Distance', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 50, ] ], 'default' => [ 'unit' => 'px', 'size' => 10, ], 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch a.wpr-ajax-img-wrap' => 'margin-right: {{SIZE}}{{UNIT}};', ], 'condition' => [ 'show_ajax_thumbnails' => 'yes' ] ] ); $this->add_control( 'view_result_text_heading', [ 'label' => esc_html__( 'View Result', 'wpr-addons' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before' ] ); $this->add_control( 'view_result_text_color', [ 'label' => esc_html__( 'Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#FFFFFF', 'selectors' => [ '{{WRAPPER}} a.wpr-view-result' => 'color: {{VALUE}};', ], ] ); $this->add_control( 'view_result_text_color_hr', [ 'label' => esc_html__( 'Color (Hover)', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#FFFFFF', 'selectors' => [ '{{WRAPPER}} a.wpr-view-result:hover' => 'color: {{VALUE}};', ], ] ); $this->add_control( 'view_result_text_bg_color', [ 'label' => esc_html__( 'Background Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#605BE5', 'selectors' => [ '{{WRAPPER}} a.wpr-view-result' => 'background-color: {{VALUE}};', ], ] ); $this->add_control( 'view_result_text_bg_color_hr', [ 'label' => esc_html__( 'Background Color (Hover)', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#605BE5', 'selectors' => [ '{{WRAPPER}} a.wpr-view-result:hover' => 'background-color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'view_result_typography', 'selector' => '{{WRAPPER}} a.wpr-view-result', 'fields_options' => [ 'typography' => [ 'default' => 'custom', ], 'font_family' => [ 'default' => 'Roboto', ], 'font_size' => [ 'default' => [ 'size' => '14', 'unit' => 'px', ] ] ] ] ); $this->add_control( 'view_result_transition_duration', [ 'label' => esc_html__( 'Transition Duration', 'wpr-addons' ), 'type' => Controls_Manager::NUMBER, 'default' => 0.5, 'min' => 0, 'max' => 5, 'step' => 0.1, 'selectors' => [ '{{WRAPPER}} a.wpr-view-result' => 'transition-duration: {{VALUE}}s', ], ] ); $this->add_control( 'view_result_border_radius', [ 'label' => esc_html__( 'Border Radius', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'default' => [ 'top' => 2, 'right' => 2, 'bottom' => 2, 'left' => 2, ], 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} a.wpr-view-result' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ] ] ); $this->add_responsive_control( 'view_result_padding', [ 'label' => esc_html__( 'Padding', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'default' => [ 'top' => 5, 'right' => 10, 'bottom' => 5, 'left' => 10, ], 'size_units' => [ 'px', ], 'selectors' => [ '{{WRAPPER}} a.wpr-view-result' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ] ] ); $this->add_control( 'heading_close_btn', [ 'label' => esc_html__( 'Close Button', 'wpr-addons' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before' ] ); $this->add_control( 'close_btn_color', [ 'label' => esc_html__( 'Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#E8E8E8', 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch .wpr-close-search' => 'color: {{VALUE}};', ], ] ); $this->add_responsive_control( 'close_btn_size', [ 'label' => esc_html__( 'Size', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 50, ] ], 'default' => [ 'unit' => 'px', 'size' => 14, ], 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch .wpr-close-search::before' => 'font-size: {{SIZE}}{{UNIT}};', '{{WRAPPER}} .wpr-data-fetch .wpr-close-search' => 'height: {{SIZE}}{{UNIT}};', ] ] ); $this->add_responsive_control( 'close_btn_position', [ 'label' => esc_html__( 'Distance', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 50, ] ], 'default' => [ 'unit' => 'px', 'size' => 10, ], 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch .wpr-close-search' => 'top: {{SIZE}}{{UNIT}}; right: {{SIZE}}{{UNIT}};', ] ] ); $this->add_control( 'scrollbar_heading', [ 'label' => esc_html__( 'Scrollbar', 'wpr-addons' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before' ] ); $this->add_control( 'scrollbar_color', [ 'label' => esc_html__( 'Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#E8E8E8', 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch ul::-webkit-scrollbar-thumb' => 'border-left-color: {{VALUE}};', ], ] ); $this->add_responsive_control( 'scrollbar_width', [ 'label' => esc_html__( 'Width', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 10, ] ], 'default' => [ 'unit' => 'px', 'size' => 3, ], 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch ul::-webkit-scrollbar-thumb' => 'border-left-width: {{SIZE}}{{UNIT}};', '{{WRAPPER}} .wpr-data-fetch ul::-webkit-scrollbar' => 'width: calc({{SIZE}}{{UNIT}} + 3px);', ] ] ); $this->add_control( 'no_results_heading', [ 'label' => esc_html__( 'No Results', 'wpr-addons' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before' ] ); $this->add_control( 'no_results_color', [ 'label' => esc_html__( 'Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#222222', 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch .wpr-no-results' => 'color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'no_results_typography', 'selector' => '{{WRAPPER}} .wpr-data-fetch .wpr-no-results', ] ); $this->add_responsive_control( 'no_results_height', [ 'label' => esc_html__( 'Height', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px', 'vh'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 1000, ], 'vh' => [ 'min' => 0, 'max' => 100, ], ], 'default' => [ 'unit' => 'vh', 'size' => 20, ], 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch .wpr-no-results' => 'height: {{SIZE}}{{UNIT}};', ] ] ); $this->add_control( 'search_results_box_border_size', [ 'label' => esc_html__( 'Border Size', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'default' => [ 'top' => 1, 'right' => 1, 'bottom' => 1, 'left' => 1, ], 'size_units' => [ 'px', ], 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'separator' => 'before', ] ); $this->add_control( 'search_results_box_border_radius', [ 'label' => esc_html__( 'Border Radius', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'default' => [ 'top' => 2, 'right' => 2, 'bottom' => 2, 'left' => 2, ], 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ], 'separator' => 'after', ] ); $this->add_responsive_control( 'search_results_box_padding', [ 'label' => esc_html__( 'Padding', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'default' => [ 'top' => 2, 'right' => 2, 'bottom' => 2, 'left' => 2, ], 'size_units' => [ 'px', ], 'selectors' => [ '{{WRAPPER}} .wpr-data-fetch ul' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'separator' => 'before' ] ); $this->add_control( 'price_heading', [ 'label' => esc_html__( 'Price', 'wpr-addons' ), 'type' => Controls_Manager::HEADING, 'separator' => 'before' ] ); $this->add_control( 'product_price_color', [ 'label' => esc_html__( 'Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#666666', 'selectors' => [ '{{WRAPPER}} .wpr-search-product-price' => 'color: {{VALUE}};', ], 'condition' => [ 'show_product_price' => 'yes', 'ajax_search' => 'yes' ] ] ); $this->add_control( 'product_price_spacing', [ 'label' => esc_html__( 'Distance', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 25, ] ], 'default' => [ 'unit' => 'px', 'size' => 5, ], 'selectors' => [ '{{WRAPPER}} .wpr-search-product-price' => 'margin-bottom: {{SIZE}}{{UNIT}};', ], 'condition' => [ 'show_product_price' => 'yes', 'ajax_search' => 'yes' ] ] ); $this->end_controls_section(); } public function add_section_ajax_pagination() {} public function add_section_style_ajax_pagination() {} public function add_control_ajax_search_img_size() { $intermediate_image_sizes = []; foreach ( get_intermediate_image_sizes() as $key=>$value ) { $intermediate_image_sizes[$value] = $value; } $this->add_control( 'ajax_search_img_size', [ 'label' => esc_html__( 'Image Crop', 'wpr-addons' ), 'type' => Controls_Manager::SELECT, 'label_block' => false, 'options' => $intermediate_image_sizes, 'default' => 'thumbnail', ] ); } public function add_control_search_query() { $search_post_type = Utilities::get_custom_types_of( 'post', false ); $search_post_type = array_merge( [ 'all' => esc_html__( 'All', 'wpr-addons' ) ], $search_post_type ); foreach ( $search_post_type as $key => $value ) { if ( 'all' != $key ) { $search_post_type['pro-'. $key] = $value .' (Pro)'; if ( 'all' != $key && 'post' != $key && 'page' != $key && 'product' != $key && 'e-landing-page' != $key && !wpr_fs()->is_plan( 'expert' ) ) { $search_post_type['pro-'. $key] = $value .' (Expert)'; } unset($search_post_type[$key]); } } $this->add_control( 'search_query', [ 'label' => esc_html__( 'Select Query', 'wpr-addons' ), 'type' => Controls_Manager::SELECT, 'label_block' => false, 'options' => $search_post_type, 'default' => 'all', ] ); } public function add_control_select_category() { $this->add_control( 'select_category', [ 'label' => esc_html__( 'Category Filter (Pro)', 'wpr-addons' ), 'type' => Controls_Manager::SWITCHER, 'separator' => 'before', 'classes' => 'wpr-pro-control' ] ); } public function add_control_all_cat_text() { } public function add_control_ajax_search() { $this->add_control( 'ajax_search', [ 'label' => esc_html__( 'Enable Ajax Search', 'wpr-addons' ), 'type' => Controls_Manager::SWITCHER, 'separator' => 'before' ] ); } public function add_control_number_of_results() {} public function add_control_show_password_protected() { if ( current_user_can( 'administrator' ) ) { $this->add_control( 'ajax_show_ps_pt', [ 'label' => esc_html__( 'Show Password Protected', 'wpr-addons' ), 'type' => Controls_Manager::SWITCHER, 'description' => esc_html__( 'Only for users with capability to read private posts', 'wpr-addons' ), 'condition' => [ 'ajax_search' => 'yes' ], 'render_type' => 'template', ] ); } } public function add_control_open_in_new_page() { $this->add_control( 'ajax_search_link_target', [ 'label' => esc_html__( 'Open Link in New Tab', 'wpr-addons' ), 'type' => Controls_Manager::SWITCHER, 'condition' => [ 'ajax_search' => 'yes' ] ] ); } public function add_control_show_ajax_thumbnails() { $this->add_control( 'show_ajax_thumbnails', [ 'label' => esc_html__( 'Show Ajax Thumbnails', 'wpr-addons' ), 'type' => Controls_Manager::SWITCHER, 'render_type' => 'template', 'condition' => [ 'ajax_search' => 'yes' ] ] ); } public function add_control_exclude_posts_without_thumbnail() { $this->add_control( 'exclude_posts_without_thumbnail', [ 'label' => esc_html__( 'Exclude Results without Thumbnails', 'wpr-addons' ), 'type' => Controls_Manager::SWITCHER, 'render_type' => 'template', 'condition' => [ 'ajax_search' => 'yes', 'show_ajax_thumbnails' => 'yes' ] ] ); } public function add_control_show_description() { $this->add_control( 'show_description', [ 'label' => esc_html__( 'Show Description', 'wpr-addons' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', 'render_type' => 'template', 'condition' => [ 'ajax_search' => 'yes' ] ] ); } public function add_control_number_of_words_in_excerpt() { $this->add_control( 'number_of_words_in_excerpt', [ 'label' => __( 'Description Number of Words', 'wpr-addons' ), 'type' => Controls_Manager::NUMBER, 'min' => 5, 'step' => 1, 'default' => 30, 'render_type' => 'template', 'condition' => [ 'ajax_search' => 'yes', 'show_description' => 'yes' ] ] ); } public function add_control_show_view_result_btn() { $this->add_control( 'show_view_result_btn', [ 'label' => esc_html__( 'Show View Results Button', 'wpr-addons' ), 'type' => Controls_Manager::SWITCHER, 'render_type' => 'template', 'condition' => [ 'ajax_search' => 'yes' ] ] ); } public function add_control_view_result_text() { $this->add_control( 'view_result_text', [ 'label' => esc_html__( 'View Results', 'wpr-addons' ), 'type' => Controls_Manager::TEXT, 'dynamic' => [ 'active' => true, ], 'default' => esc_html__( 'View Results', 'wpr-addons' ), 'condition' => [ 'show_view_result_btn' => 'yes', 'ajax_search' => 'yes' ] ] ); } public function add_control_no_results_text() { $this->add_control( 'no_results_text', [ 'label' => esc_html__( 'No Resulsts Text', 'wpr-addons' ), 'type' => Controls_Manager::TEXT, 'dynamic' => [ 'active' => true, ], 'default' => esc_html__( 'No Results Found', 'wpr-addons' ), 'condition' => [ 'ajax_search' => 'yes' ] ] ); } public function add_control_show_product_price() { $this->add_control( 'show_product_price', [ 'label' => esc_html__( 'Show Product Price', 'wpr-addons' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'no', 'render_type' => 'template', 'condition' => [ 'ajax_search' => 'yes', 'search_query' => ['all', 'product', 'pro-product'] ] ] ); } protected function register_controls() { // Section: Search ----------- $this->start_controls_section( 'section_search', [ 'label' => esc_html__( 'Search', 'wpr-addons' ), ] ); Utilities::wpr_library_buttons( $this, Controls_Manager::RAW_HTML ); $this->add_control_search_query(); Utilities::upgrade_pro_notice( $this, Controls_Manager::RAW_HTML, 'search', 'search_query', ['pro-post', 'pro-page', 'pro-product', 'pro-product', 'pro-e-landing-page'] ); if ( !defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->is_plan( 'expert' ) ) { $this->add_control( 'search_query_exp_pro_notice', [ 'raw' => 'This option is available<br> in the <strong><a href="https://royal-elementor-addons.com/?ref=rea-plugin-panel-grid-upgrade-expert#purchasepro" target="_blank">Expert version</a></strong>', 'type' => Controls_Manager::RAW_HTML, 'content_classes' => 'wpr-pro-notice', 'condition' => [ 'search_query!' => ['all','post','page','product','e-landing-page','pro-post', 'pro-page', 'pro-product', 'pro-product', 'pro-e-landing-page'], ] ] ); } $this->add_control_select_category(); $this->add_control_all_cat_text(); $this->add_control_ajax_search(); $this->add_control_number_of_results(); $this->add_control_show_password_protected(); if ( current_user_can( 'administrator' ) ) { $this->add_control( 'show_attachments', [ 'label' => esc_html__( 'Show Attachments', 'wpr-addons' ), 'description' => esc_html__( 'Include Media Files in Search Results', 'wpr-addons' ), 'type' => Controls_Manager::SWITCHER, 'condition' => [ 'ajax_search' => 'yes' ], 'render_type' => 'template', ] ); } $this->add_control_open_in_new_page(); $this->add_control_show_ajax_thumbnails(); $this->add_control_exclude_posts_without_thumbnail(); $this->add_control_show_view_result_btn(); $this->add_control_view_result_text(); $this->add_control_show_description(); $this->add_control_number_of_words_in_excerpt(); $this->add_control_show_product_price(); $this->add_control_no_results_text(); $this->add_control( 'search_placeholder', [ 'label' => esc_html__( 'Placeholder', 'wpr-addons' ), 'type' => Controls_Manager::TEXT, 'dynamic' => [ 'active' => true, ], 'default' => esc_html__( 'Search...', 'wpr-addons' ), 'separator' => 'before', ] ); $this->add_control( 'search_aria_label', [ 'label' => esc_html__( 'Aria Label', 'wpr-addons' ), 'type' => Controls_Manager::TEXT, 'dynamic' => [ 'active' => true, ], 'default' => esc_html__( 'Search', 'wpr-addons' ), 'separator' => 'before', ] ); $this->add_control( 'search_btn', [ 'label' => esc_html__( 'Button', 'wpr-addons' ), 'type' => Controls_Manager::SWITCHER, 'default' => 'yes', 'separator' => 'before', ] ); $this->add_control( 'search_btn_style', [ 'label' => esc_html__( 'Style', 'wpr-addons' ), 'type' => Controls_Manager::SELECT, 'default' => 'inner', 'options' => [ 'inner' => esc_html__( 'Inner', 'wpr-addons' ), 'outer' => esc_html__( 'Outer', 'wpr-addons' ), ], 'prefix_class' => 'wpr-search-form-style-', 'render_type' => 'template', 'condition' => [ 'search_btn' => 'yes', ], ] ); // $this->add_control( // 'open_search_input_on_btn_click', // [ // 'label' => esc_html__( 'Open Search on Click', 'wpr-addons' ), // 'type' => Controls_Manager::SWITCHER, // 'condition' => [ // 'search_btn' => 'yes', // ] // ] // ); $this->add_control( 'search_btn_disable_click', [ 'label' => esc_html__( 'Disable Button Click', 'wpr-addons' ), 'type' => Controls_Manager::SWITCHER, 'condition' => [ 'search_btn_style' => 'inner', 'search_btn' => 'yes', ], ] ); $this->add_control( 'search_btn_type', [ 'label' => esc_html__( 'Type', 'wpr-addons' ), 'type' => Controls_Manager::SELECT, 'default' => 'icon', 'options' => [ 'text' => esc_html__( 'Text', 'wpr-addons' ), 'icon' => esc_html__( 'Icon', 'wpr-addons' ), ], 'render_type' => 'template', 'condition' => [ 'search_btn' => 'yes', ], ] ); $this->add_control( 'search_btn_text', [ 'label' => esc_html__( 'Text', 'wpr-addons' ), 'type' => Controls_Manager::TEXT, 'dynamic' => [ 'active' => true, ], 'default' => 'Go', 'condition' => [ 'search_btn_type' => 'text', 'search_btn' => 'yes', ], ] ); $this->add_control( 'search_btn_icon', [ 'label' => esc_html__( 'Select Icon', 'wpr-addons' ), 'type' => Controls_Manager::ICONS, 'skin' => 'inline', 'label_block' => false, 'default' => [ 'value' => 'fas fa-search', 'library' => 'fa-solid', ], 'condition' => [ 'search_btn_type' => 'icon', 'search_btn' => 'yes', ], ] ); $this->end_controls_section(); $this->add_section_ajax_pagination(); // Section: Request New Feature Utilities::wpr_add_section_request_feature( $this, Controls_Manager::RAW_HTML, '' ); // Section: Pro Features Utilities::pro_features_list_section( $this, '', Controls_Manager::RAW_HTML, 'search', [ 'Custom Search Query - Only Posts or Pages', 'Custom Search Query - Only Custom Post Types (Expert)', 'More than 2 Results in Ajax Search', 'Enable Taxonomy Filter (Pro)', 'Ajax Search Results Pagination (Load More)' ] ); // Styles // Section: Input ------------ $this->start_controls_section( 'section_style_input', [ 'label' => esc_html__( 'Input', 'wpr-addons' ), 'tab' => Controls_Manager::TAB_STYLE, ] ); $this->start_controls_tabs( 'tabs_input_colors' ); $this->start_controls_tab( 'tab_input_normal_colors', [ 'label' => esc_html__( 'Normal', 'wpr-addons' ), ] ); $this->add_control( 'input_color', [ 'label' => esc_html__( 'Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#333333', 'selectors' => [ '{{WRAPPER}} .wpr-search-form-input' => 'color: {{VALUE}};', ], ] ); $this->add_control( 'input_bg_color', [ 'label' => esc_html__( 'Background Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#ffffff', 'selectors' => [ '{{WRAPPER}} .wpr-search-form-input' => 'background-color: {{VALUE}};', ], ] ); $this->add_control( 'input_placeholder_color', [ 'label' => esc_html__( 'Placeholder Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#9e9e9e', 'selectors' => [ '{{WRAPPER}} .wpr-search-form-input::-webkit-input-placeholder' => 'color: {{VALUE}};', '{{WRAPPER}} .wpr-search-form-input:-ms-input-placeholder' => 'color: {{VALUE}};', '{{WRAPPER}} .wpr-search-form-input::-moz-placeholder' => 'color: {{VALUE}};', '{{WRAPPER}} .wpr-search-form-input:-moz-placeholder' => 'color: {{VALUE}};', '{{WRAPPER}} .wpr-search-form-input::placeholder' => 'color: {{VALUE}};', ], ] ); $this->add_control( 'input_border_color', [ 'label' => esc_html__( 'Border Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#E8E8E8', 'selectors' => [ '{{WRAPPER}} .wpr-search-form-input' => 'border-color: {{VALUE}};', '{{WRAPPER}} .wpr-data-fetch' => 'border-color: {{VALUE}};' ], ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'input_box_shadow', 'selector' => '{{WRAPPER}} .wpr-search-form-input-wrap' ] ); $this->end_controls_tab(); $this->start_controls_tab( 'tab_input_focus_colors', [ 'label' => esc_html__( 'Focus', 'wpr-addons' ), ] ); $this->add_control( 'input_focus_color', [ 'label' => esc_html__( 'Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#333333', 'selectors' => [ '{{WRAPPER}}.wpr-search-form-input-focus .wpr-search-form-input' => 'color: {{VALUE}};', ], ] ); $this->add_control( 'input_focus_bg_color', [ 'label' => esc_html__( 'Background Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#ffffff', 'selectors' => [ '{{WRAPPER}}.wpr-search-form-input-focus .wpr-search-form-input' => 'background-color: {{VALUE}};', ], ] ); $this->add_control( 'input_focus_placeholder_color', [ 'label' => esc_html__( 'Placeholder Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#9e9e9e', 'selectors' => [ '{{WRAPPER}}.wpr-search-form-input-focus .wpr-search-form-input::-webkit-input-placeholder' => 'color: {{VALUE}};', '{{WRAPPER}}.wpr-search-form-input-focus .wpr-search-form-input:-ms-input-placeholder' => 'color: {{VALUE}};', '{{WRAPPER}}.wpr-search-form-input-focus .wpr-search-form-input::-moz-placeholder' => 'color: {{VALUE}};', '{{WRAPPER}}.wpr-search-form-input-focus .wpr-search-form-input:-moz-placeholder' => 'color: {{VALUE}};', '{{WRAPPER}}.wpr-search-form-input-focus .wpr-search-form-input::placeholder' => 'color: {{VALUE}};', ], ] ); $this->add_control( 'input_focus_border_color', [ 'label' => esc_html__( 'Border Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#E8E8E8', 'selectors' => [ '{{WRAPPER}}.wpr-search-form-input-focus .wpr-search-form-input' => 'border-color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'input_focus_box_shadow', 'selector' => '{{WRAPPER}}.wpr-search-form-input-focus .wpr-search-form-input-wrap' ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->add_control( 'input_typography_divider', [ 'type' => Controls_Manager::DIVIDER, 'style' => 'thick', ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'input_typography', 'selector' => '{{WRAPPER}} .wpr-search-form-input, {{WRAPPER}} .wpr-category-select-wrap, {{WRAPPER}} .wpr-category-select', ] ); $this->add_responsive_control( 'input_align', [ 'label' => esc_html__( 'Alignment', 'wpr-addons' ), 'type' => Controls_Manager::CHOOSE, 'label_block' => false, 'default' => 'left', 'options' => [ 'left' => [ 'title' => esc_html__( 'Left', 'wpr-addons' ), 'icon' => 'eicon-text-align-left', ], 'center' => [ 'title' => esc_html__( 'Center', 'wpr-addons' ), 'icon' => 'eicon-text-align-center', ], 'right' => [ 'title' => esc_html__( 'Right', 'wpr-addons' ), 'icon' => 'eicon-text-align-right', ], ], 'selectors' => [ '{{WRAPPER}} .wpr-search-form-input' => 'text-align: {{VALUE}};', ], 'separator' => 'before', ] ); $this->add_control( 'input_border_size', [ 'label' => esc_html__( 'Border Size', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'default' => [ 'top' => 1, 'right' => 1, 'bottom' => 1, 'left' => 1, ], 'size_units' => [ 'px', ], 'selectors' => [ '{{WRAPPER}} .wpr-search-form-input' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', '{{WRAPPER}} .wpr-data-fetch' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ], 'separator' => 'before', ] ); $this->add_control( 'input_border_radius', [ 'label' => esc_html__( 'Border Radius', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'default' => [ 'top' => 2, 'right' => 2, 'bottom' => 2, 'left' => 2, ], 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .wpr-search-form-input' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}} !important;', '{{WRAPPER}} .wpr-data-fetch' => 'border-radius: 0 0 {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ], 'separator' => 'after', ] ); $this->add_responsive_control( 'input_padding', [ 'label' => esc_html__( 'Padding', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'default' => [ 'top' => 15, 'right' => 15, 'bottom' => 15, 'left' => 15, ], 'size_units' => [ 'px', ], 'selectors' => [ '{{WRAPPER}} .wpr-search-form-input' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', '{{WRAPPER}} .wpr-category-select-wrap::before' => 'right: {{RIGHT}}{{UNIT}};', '{{WRAPPER}} .wpr-category-select' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ], ] ); $this->end_controls_section(); // Styles // Section: Select ------------ $this->start_controls_section( 'section_style_select', [ 'label' => esc_html__( 'Taxonomy Filter', 'wpr-addons' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => [ 'select_category' => 'yes', ], ] ); $this->add_control( 'select_color', [ 'label' => esc_html__( 'Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#333333', 'selectors' => [ '{{WRAPPER}} .wpr-category-select-wrap' => 'color: {{VALUE}};', '{{WRAPPER}} .wpr-category-select' => 'color: {{VALUE}};' ], ] ); $this->add_control( 'select_bg_color', [ 'label' => esc_html__( 'Background Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#ffffff', 'selectors' => [ '{{WRAPPER}} .wpr-category-select' => 'background-color: {{VALUE}};', ], ] ); $this->add_control( 'select_border_color', [ 'label' => esc_html__( 'Border Color', 'wpr-addons' ), 'type' => Controls_Manager::COLOR, 'default' => '#E8E8E8', 'selectors' => [ '{{WRAPPER}} .wpr-category-select' => 'border-color: {{VALUE}};' ], ] ); $this->add_control( 'select_border_size', [ 'label' => esc_html__( 'Border Size', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'default' => [ 'top' => 1, 'right' => 1, 'bottom' => 1, 'left' => 1, ], 'size_units' => [ 'px', ], 'selectors' => [ '{{WRAPPER}} .wpr-category-select' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ], 'separator' => 'before', ] ); $this->add_control( 'select_border_radius', [ 'label' => esc_html__( 'Border Radius', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'default' => [ 'top' => 2, 'right' => 2, 'bottom' => 2, 'left' => 2, ], 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .wpr-category-select' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}} !important;', '{{WRAPPER}} .wpr-category-select-wrap' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'separator' => 'after', ] ); $this->add_responsive_control( 'select_width', [ 'label' => esc_html__( 'Select Width', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px', '%'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 400, ], ], 'default' => [ 'unit' => 'px', 'size' => 230, ], 'selectors' => [ '{{WRAPPER}} .wpr-category-select-wrap' => 'width: {{SIZE}}{{UNIT}};', ], 'separator' => 'before', ] ); $this->add_control( 'options_heading', [ 'label' => esc_html__( 'Options', 'wpr-addons' ), 'type' => Controls_Manager::HEADING, ] ); $this->add_responsive_control( 'option_font_size', [ 'label' => esc_html__( 'Font Size', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px', '%'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 25, ], ], 'default' => [ 'unit' => 'px', 'size' => 12, ], 'selectors' => [ '{{WRAPPER}} .wpr-category-select option' => 'font-size: {{SIZE}}{{UNIT}};', ] ] ); $this->add_control( 'optgroup_heading', [ 'label' => esc_html__( 'Options Group', 'wpr-addons' ), 'type' => Controls_Manager::HEADING, ] ); $this->add_responsive_control( 'optgroup_font_size', [ 'label' => esc_html__( 'Font Size', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px', '%'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 25, ], ], 'default' => [ 'unit' => 'px', 'size' => 12, ], 'selectors' => [ '{{WRAPPER}} .wpr-category-select optgroup' => 'font-size: {{SIZE}}{{UNIT}};', ] ] ); $this->end_controls_section(); // Styles // Section: Button ------------ $this->start_controls_section( 'section_style_btn', [ 'label' => esc_html__( 'Button', 'wpr-addons' ), 'tab' => Controls_Manager::TAB_STYLE, 'condition' => [ 'search_btn' => 'yes', ], ] ); $this->start_controls_tabs( 'tabs_btn_colors' ); $this->start_controls_tab( 'tab_btn_normal_colors', [ 'label' => esc_html__( 'Normal', 'wpr-addons' ), ] ); $this->add_control( 'btn_text_color', [ 'type' => Controls_Manager::COLOR, 'label' => esc_html__( 'Text Color', 'wpr-addons' ), 'default' => '#ffffff', 'selectors' => [ '{{WRAPPER}} .wpr-search-form-submit' => 'color: {{VALUE}};', ], ] ); $this->add_control( 'btn_bg_color', [ 'type' => Controls_Manager::COLOR, 'label' => esc_html__( 'Background Color', 'wpr-addons' ), 'default' => '#605BE5', 'selectors' => [ '{{WRAPPER}} .wpr-search-form-submit' => 'background-color: {{VALUE}};', ], ] ); $this->add_control( 'btn_border_color', [ 'type' => Controls_Manager::COLOR, 'label' => esc_html__( 'Border Color', 'wpr-addons' ), 'default' => '#E8E8E8', 'selectors' => [ '{{WRAPPER}} .wpr-search-form-submit' => 'border-color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'btn_box_shadow', 'selector' => '{{WRAPPER}} .wpr-search-form-submit', 'condition' => [ 'search_btn_style' => 'outer', ], ] ); $this->end_controls_tab(); $this->start_controls_tab( 'tab_btn_hover_colors', [ 'label' => esc_html__( 'Hover', 'wpr-addons' ), ] ); $this->add_control( 'btn_hv_text_color', [ 'type' => Controls_Manager::COLOR, 'label' => esc_html__( 'Text Color', 'wpr-addons' ), 'default' => '#ffffff', 'selectors' => [ '{{WRAPPER}} .wpr-search-form-submit:hover' => 'color: {{VALUE}};', ], ] ); $this->add_control( 'btn_hv_bg_color', [ 'type' => Controls_Manager::COLOR, 'label' => esc_html__( 'Background Color', 'wpr-addons' ), 'default' => '#4A45D2', 'selectors' => [ '{{WRAPPER}} .wpr-search-form-submit:hover' => 'background-color: {{VALUE}};', ], ] ); $this->add_control( 'btn_hv_border_color', [ 'type' => Controls_Manager::COLOR, 'label' => esc_html__( 'Border Color', 'wpr-addons' ), 'default' => '#E8E8E8', 'selectors' => [ '{{WRAPPER}} .wpr-search-form-submit:hover' => 'border-color: {{VALUE}};', ], ] ); $this->add_group_control( Group_Control_Box_Shadow::get_type(), [ 'name' => 'btn_hv_box_shadow', 'selector' => '{{WRAPPER}} .wpr-search-form-submit:hover', 'condition' => [ 'search_btn_style' => 'outer', ], ] ); $this->end_controls_tab(); $this->end_controls_tabs(); $this->add_responsive_control( 'btn_width', [ 'label' => esc_html__( 'Width', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 300, ], ], 'default' => [ 'unit' => 'px', 'size' => 125, ], 'selectors' => [ '{{WRAPPER}} .wpr-search-form-submit' => 'min-width: {{SIZE}}{{UNIT}};', ], 'separator' => 'before', ] ); $this->add_responsive_control( 'btn_height', [ 'label' => esc_html__( 'Height', 'wpr-addons' ), 'type' => Controls_Manager::SLIDER, 'size_units' => ['px'], 'range' => [ 'px' => [ 'min' => 0, 'max' => 100, ], ], 'default' => [ 'unit' => 'px', 'size' => 50, ], 'selectors' => [ '{{WRAPPER}}.wpr-search-form-style-outer .wpr-search-form-submit' => 'height: {{SIZE}}{{UNIT}};', ], 'condition' => [ 'search_btn_style' => 'outer', ], ] ); $this->add_control( 'btn_gutter', [ 'type' => Controls_Manager::SLIDER, 'label' => esc_html__( 'Gutter', 'wpr-addons' ), 'size_units' => [ 'px' ], 'range' => [ 'px' => [ 'min' => 0, 'max' => 100, ] ], 'default' => [ 'unit' => 'px', 'size' => 10, ], 'selectors' => [ '{{WRAPPER}}.wpr-search-form-style-outer.wpr-search-form-position-right .wpr-search-form-submit' => 'margin-left: {{SIZE}}{{UNIT}};', '{{WRAPPER}}.wpr-search-form-style-outer.wpr-search-form-position-left .wpr-search-form-submit' => 'margin-right: {{SIZE}}{{UNIT}};', ], 'condition' => [ 'search_btn_style' => 'outer', ], ] ); $this->add_control( 'btn_position', [ 'label' => esc_html__( 'Position', 'wpr-addons' ), 'type' => Controls_Manager::CHOOSE, 'label_block' => false, 'default' => 'right', 'options' => [ 'left' => [ 'title' => esc_html__( 'Left', 'wpr-addons' ), 'icon' => 'eicon-h-align-left', ], 'right' => [ 'title' => esc_html__( 'Right', 'wpr-addons' ), 'icon' => 'eicon-h-align-right', ], ], 'prefix_class' => 'wpr-search-form-position-', 'separator' => 'before', ] ); $this->add_control( 'btn_typography_divider', [ 'type' => Controls_Manager::DIVIDER, 'style' => 'thick', ] ); $this->add_group_control( Group_Control_Typography::get_type(), [ 'name' => 'btn_typography', 'label' => esc_html__( 'Typography', 'wpr-addons' ), 'selector' => '{{WRAPPER}} .wpr-search-form-submit', ] ); $this->add_control( 'btn_border_size', [ 'label' => esc_html__( 'Border Size', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'default' => [ 'top' => 0, 'right' => 0, 'bottom' => 0, 'left' => 0, ], 'size_units' => [ 'px', ], 'selectors' => [ '{{WRAPPER}} .wpr-search-form-submit' => 'border-width: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};', ], 'separator' => 'before', ] ); $this->add_control( 'btn_border_radius', [ 'label' => esc_html__( 'Border Radius', 'wpr-addons' ), 'type' => Controls_Manager::DIMENSIONS, 'default' => [ 'top' => 0, 'right' => 0, 'bottom' => 0, 'left' => 0, ], 'size_units' => [ 'px', '%' ], 'selectors' => [ '{{WRAPPER}} .wpr-search-form-submit' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};' ], 'separator' => 'after', ] ); $this->end_controls_section(); // Styles // Section: AJAX ------------ $this->add_section_style_ajax(); $this->add_section_style_ajax_pagination(); } public function render_search_pagination($settings) {} protected function render_search_submit_btn() { $settings = $this->get_settings(); $this->add_render_attribute( 'button', [ 'class' => 'wpr-search-form-submit', 'aria-label' => $settings['search_aria_label'], 'type' => 'submit', ] ); if ( $settings['search_btn_disable_click'] ) { $this->add_render_attribute( 'button', 'disabled' ); } if ( 'yes' === $settings['search_btn'] ) : ?> <button <?php echo $this->get_render_attribute_string( 'button' ); ?>> <?php if ( 'icon' === $settings['search_btn_type'] && '' !== $settings['search_btn_icon']['value'] ) : ?> <i class="<?php echo esc_attr( $settings['search_btn_icon']['value'] ); ?>"></i> <?php elseif( 'text' === $settings['search_btn_type'] && '' !== $settings['search_btn_text'] ) : ?> <?php echo esc_html( $settings['search_btn_text'] ); ?> <?php endif; ?> </button> <?php endif; } protected function render() { // Get Settings $settings = $this->get_settings(); // $hidden_input = 'yes' === $settings['open_search_input_on_btn_click'] ? 'wpr-search-input-hidden' : ''; $hidden_input = ''; $this->add_render_attribute( 'input', [ 'class' => 'wpr-search-form-input', 'placeholder' => $settings['search_placeholder'], 'aria-label' => $settings['search_aria_label'], 'type' => 'search', 'name' => 's', 'title' => esc_html__( 'Search', 'wpr-addons' ), 'value' => get_search_query(), 'wpr-query-type' => $settings['search_query'], 'wpr-taxonomy-type' => isset($settings['query_taxonomy_'. $settings['search_query']]) ? $settings['query_taxonomy_'. $settings['search_query']] : '', 'number-of-results' => isset($settings['number_of_results']) && (defined('WPR_ADDONS_PRO_VERSION') && wpr_fs()->can_use_premium_code()) ? $settings['number_of_results'] : 2, 'ajax-search' => isset($settings['ajax_search']) ? $settings['ajax_search'] : '', 'show-description' => isset($settings['show_description']) ? $settings['show_description'] : '', 'number-of-words' => isset($settings['number_of_words_in_excerpt']) ? $settings['number_of_words_in_excerpt'] : '', 'show-ajax-thumbnails' => isset($settings['show_ajax_thumbnails']) ? $settings['show_ajax_thumbnails'] : '', 'show-view-result-btn' => isset($settings['show_view_result_btn']) ? $settings['show_view_result_btn'] : '', 'show-product-price' => isset($settings['show_product_price']) ? $settings['show_product_price'] : '', 'view-result-text' => isset($settings['view_result_text']) ? $settings['view_result_text'] : '', 'no-results' => isset($settings['no_results_text']) ? esc_html__($settings['no_results_text']) : '', 'exclude-without-thumb' => isset($settings['exclude_posts_without_thumbnail']) ? $settings['exclude_posts_without_thumbnail'] : '', 'link-target' => isset($settings['ajax_search_link_target']) && ( 'yes' === $settings['ajax_search_link_target'] ) ? '_blank' : '_self', 'password-protected' => isset($settings['ajax_show_ps_pt']) ? $settings['ajax_show_ps_pt'] : 'no', 'attachments' => isset($settings['show_attachments']) ? $settings['show_attachments'] : 'no', // 'ajax-search-img-size' => isset($settings['ajax_search_img_size']) ? $settings['ajax_search_img_size'] : '' ] ); ?> <form role="search" method="get" class="wpr-search-form" action="<?php echo esc_url(home_url()); ?>"> <div class="wpr-search-form-input-wrap elementor-clearfix"> <input <?php echo $this->get_render_attribute_string( 'input' ); ?>> <?php if ( $settings['search_btn_style'] === 'inner' ) { $this->render_search_submit_btn(); } ?> </div> <?php if ( $settings['search_btn_style'] === 'outer' ) { $this->render_search_submit_btn(); } ?> </form> <div class="wpr-data-fetch"> <span class="wpr-close-search"></span> <ul></ul> <?php if ( (!defined('WPR_ADDONS_PRO_VERSION') || !wpr_fs()->can_use_premium_code()) && current_user_can( 'administrator' ) ) : ?> <p class="wpr-search-admin-notice">More than 2 results are available in the PRO version (This notice is only visible to admin users)</p> <?php endif; ?> </div> <?php } }