| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- <?php
- namespace Elementor;
- if ( ! defined( 'ABSPATH' ) ) {
- exit; // Exit if accessed directly.
- }
- /**
- * Elementor divider widget.
- *
- * Elementor widget that displays a line that divides different elements in the
- * page.
- *
- * @since 1.0.0
- */
- class Widget_Divider extends Widget_Base {
- /**
- * Get widget name.
- *
- * Retrieve divider widget name.
- *
- * @since 1.0.0
- * @access public
- *
- * @return string Widget name.
- */
- public function get_name() {
- return 'divider';
- }
- /**
- * Get widget title.
- *
- * Retrieve divider widget title.
- *
- * @since 1.0.0
- * @access public
- *
- * @return string Widget title.
- */
- public function get_title() {
- return __( 'Divider', 'elementor' );
- }
- /**
- * Get widget icon.
- *
- * Retrieve divider widget icon.
- *
- * @since 1.0.0
- * @access public
- *
- * @return string Widget icon.
- */
- public function get_icon() {
- return 'eicon-divider';
- }
- /**
- * Get widget categories.
- *
- * Retrieve the list of categories the divider widget belongs to.
- *
- * Used to determine where to display the widget in the editor.
- *
- * @since 2.0.0
- * @access public
- *
- * @return array Widget categories.
- */
- public function get_categories() {
- return [ 'basic' ];
- }
- /**
- * Get widget keywords.
- *
- * Retrieve the list of keywords the widget belongs to.
- *
- * @since 2.1.0
- * @access public
- *
- * @return array Widget keywords.
- */
- public function get_keywords() {
- return [ 'divider', 'hr', 'line', 'border' ];
- }
- /**
- * Register divider widget controls.
- *
- * Adds different input fields to allow the user to change and customize the widget settings.
- *
- * @since 1.0.0
- * @access protected
- */
- protected function _register_controls() {
- $this->start_controls_section(
- 'section_divider',
- [
- 'label' => __( 'Divider', 'elementor' ),
- ]
- );
- $this->add_control(
- 'style',
- [
- 'label' => __( 'Style', 'elementor' ),
- 'type' => Controls_Manager::SELECT,
- 'options' => [
- 'solid' => __( 'Solid', 'elementor' ),
- 'double' => __( 'Double', 'elementor' ),
- 'dotted' => __( 'Dotted', 'elementor' ),
- 'dashed' => __( 'Dashed', 'elementor' ),
- ],
- 'default' => 'solid',
- 'selectors' => [
- '{{WRAPPER}} .elementor-divider-separator' => 'border-top-style: {{VALUE}};',
- ],
- ]
- );
- $this->add_control(
- 'weight',
- [
- 'label' => __( 'Weight', 'elementor' ),
- 'type' => Controls_Manager::SLIDER,
- 'default' => [
- 'size' => 1,
- ],
- 'range' => [
- 'px' => [
- 'min' => 1,
- 'max' => 10,
- ],
- ],
- 'selectors' => [
- '{{WRAPPER}} .elementor-divider-separator' => 'border-top-width: {{SIZE}}{{UNIT}};',
- ],
- ]
- );
- $this->add_control(
- 'color',
- [
- 'label' => __( 'Color', 'elementor' ),
- 'type' => Controls_Manager::COLOR,
- 'default' => '',
- 'scheme' => [
- 'type' => Scheme_Color::get_type(),
- 'value' => Scheme_Color::COLOR_3,
- ],
- 'selectors' => [
- '{{WRAPPER}} .elementor-divider-separator' => 'border-top-color: {{VALUE}};',
- ],
- ]
- );
- $this->add_responsive_control(
- 'width',
- [
- 'label' => __( 'Width', 'elementor' ),
- 'type' => Controls_Manager::SLIDER,
- 'size_units' => [ '%', 'px' ],
- 'range' => [
- 'px' => [
- 'max' => 1000,
- ],
- ],
- 'default' => [
- 'size' => 100,
- 'unit' => '%',
- ],
- 'tablet_default' => [
- 'unit' => '%',
- ],
- 'mobile_default' => [
- 'unit' => '%',
- ],
- 'selectors' => [
- '{{WRAPPER}} .elementor-divider-separator' => 'width: {{SIZE}}{{UNIT}};',
- ],
- ]
- );
- $this->add_responsive_control(
- 'align',
- [
- 'label' => __( 'Alignment', 'elementor' ),
- 'type' => Controls_Manager::CHOOSE,
- 'options' => [
- 'left' => [
- 'title' => __( 'Left', 'elementor' ),
- 'icon' => 'fa fa-align-left',
- ],
- 'center' => [
- 'title' => __( 'Center', 'elementor' ),
- 'icon' => 'fa fa-align-center',
- ],
- 'right' => [
- 'title' => __( 'Right', 'elementor' ),
- 'icon' => 'fa fa-align-right',
- ],
- ],
- 'default' => '',
- 'selectors' => [
- '{{WRAPPER}} .elementor-divider' => 'text-align: {{VALUE}};',
- ],
- ]
- );
- $this->add_responsive_control(
- 'gap',
- [
- 'label' => __( 'Gap', 'elementor' ),
- 'type' => Controls_Manager::SLIDER,
- 'default' => [
- 'size' => 15,
- ],
- 'range' => [
- 'px' => [
- 'min' => 2,
- 'max' => 50,
- ],
- ],
- 'selectors' => [
- '{{WRAPPER}} .elementor-divider' => 'padding-top: {{SIZE}}{{UNIT}}; padding-bottom: {{SIZE}}{{UNIT}};',
- ],
- ]
- );
- $this->add_control(
- 'view',
- [
- 'label' => __( 'View', 'elementor' ),
- 'type' => Controls_Manager::HIDDEN,
- 'default' => 'traditional',
- ]
- );
- $this->end_controls_section();
- }
- /**
- * Render divider widget output on the frontend.
- *
- * Written in PHP and used to generate the final HTML.
- *
- * @since 1.0.0
- * @access protected
- */
- protected function render() {
- ?>
- <div class="elementor-divider">
- <span class="elementor-divider-separator"></span>
- </div>
- <?php
- }
- /**
- * Render divider widget output in the editor.
- *
- * Written as a Backbone JavaScript template and used to generate the live preview.
- *
- * @since 1.0.0
- * @access protected
- */
- protected function _content_template() {
- ?>
- <div class="elementor-divider">
- <span class="elementor-divider-separator"></span>
- </div>
- <?php
- }
- }
|