<?php namespace ElementorPro\Modules\Woocommerce\Widgets; use Elementor\Controls_Manager; use Elementor\Controls_Stack; use Elementor\Core\Breakpoints\Manager as Breakpoints_Manager; use ElementorPro\Modules\Woocommerce\Classes\Products_Renderer; if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly. } abstract class Base_Widget extends \ElementorPro\Base\Base_Widget { public function get_categories() { return [ 'woocommerce-elements-single' ]; } protected function get_devices_default_args() { $devices_required = []; // Make sure device settings can inherit from larger screen sizes' breakpoint settings. foreach ( Breakpoints_Manager::get_default_config() as $breakpoint_name => $breakpoint_config ) { $devices_required[ $breakpoint_name ] = [ 'required' => false, ]; } return $devices_required; } protected function add_columns_responsive_control() { $this->add_responsive_control( 'columns', [ 'label' => __( 'Columns', 'elementor-pro' ), 'type' => Controls_Manager::NUMBER, 'prefix_class' => 'elementor-grid%s-', 'min' => 1, 'max' => 12, 'default' => Products_Renderer::DEFAULT_COLUMNS_AND_ROWS, 'tablet_default' => '3', 'mobile_default' => '2', 'required' => true, 'device_args' => $this->get_devices_default_args(), 'min_affected_device' => [ Controls_Stack::RESPONSIVE_DESKTOP => Controls_Stack::RESPONSIVE_TABLET, Controls_Stack::RESPONSIVE_TABLET => Controls_Stack::RESPONSIVE_TABLET, ], ] ); } }