if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
* Elementor box shadow control.
* A base control for creating box shadow control. Displays input fields to define
* the box shadow including the horizontal shadow, vertical shadow, shadow blur,
* shadow spread, shadow color and the position.
class Group_Control_Box_Shadow extends Group_Control_Base {
* Holds all the box shadow control fields.
* @var array Box shadow control fields.
protected static $fields;
* Get box shadow control type.
* Retrieve the control type, in this case `box-shadow`.
* @return string Control type.
public static function get_type() {
* Initialize box shadow control fields.
* @return array Control fields.
protected function init_fields() {
$controls['box_shadow'] = [
'label' => esc_html__( 'Box Shadow', 'elementor' ),
'type' => Controls_Manager::BOX_SHADOW,
'{{SELECTOR}}' => 'box-shadow: {{HORIZONTAL}}px {{VERTICAL}}px {{BLUR}}px {{SPREAD}}px {{COLOR}} {{box_shadow_position.VALUE}};',
$controls['box_shadow_position'] = [
'label' => esc_html__( 'Position', 'elementor' ),
'type' => Controls_Manager::SELECT,
' ' => esc_html_x( 'Outline', 'Box Shadow Control', 'elementor' ),
'inset' => esc_html_x( 'Inset', 'Box Shadow Control', 'elementor' ),
* Retrieve the default options of the box shadow control. Used to return the
* default options while initializing the box shadow control.
* @return array Default box shadow control options.
protected function get_default_options() {
'starter_title' => esc_html__( 'Box Shadow', 'elementor' ),
'starter_name' => 'box_shadow_type',
'starter_value' => 'yes',