PluginProbe ʕ •ᴥ•ʔ
Spider Elements – Premium Elementor Widgets & Addons Library / 1.1.0
Spider Elements – Premium Elementor Widgets & Addons Library v1.1.0
trunk 1.0.0 1.1.0 1.5.0 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.7.0 1.8.0 1.9.0
spider-elements / widgets / List_Item.php
spider-elements / widgets Last commit date
templates 2 years ago Accordion.php 2 years ago Alerts_Box.php 2 years ago Animated_Heading.php 2 years ago Before_after.php 2 years ago Blog_Grid.php 2 years ago Buttons.php 2 years ago Cheat_sheet.php 2 years ago Counter.php 2 years ago Fullscreen_Slider.php 2 years ago Icon_box.php 2 years ago Instagram.php 2 years ago Integrations.php 2 years ago List_Item.php 2 years ago Marquee_Slides.php 2 years ago Pricing_Table_Switcher.php 2 years ago Pricing_Table_Tabs.php 2 years ago Skill_Showcase.php 2 years ago Tabs.php 2 years ago Team_Carousel.php 2 years ago Testimonial.php 2 years ago Timeline.php 2 years ago Video_Playlist.php 2 years ago Video_Popup.php 2 years ago
List_Item.php
420 lines
1 <?php
2 /**
3 * Use namespace to avoid conflict
4 */
5
6 namespace SPEL\Widgets;
7
8 use Elementor\Group_Control_Border;
9 use Elementor\Group_Control_Box_Shadow;
10 use Elementor\Repeater;
11 use Elementor\Widget_Base;
12 use Elementor\Controls_Manager;
13 use Elementor\Group_Control_Typography;
14
15 // Exit if accessed directly
16 if ( ! defined( 'ABSPATH' ) ) {
17 exit;
18 }
19
20
21 /**
22 * Class Alerts_box
23 * @package spider\Widgets
24 * @since 1.0.0
25 */
26 class List_Item extends Widget_Base {
27 public function get_name() {
28 return 'docly_list_item'; // ID of the widget (Don't change this name)
29 }
30
31 public function get_title() {
32 return __( 'List Items', 'spider-elements' );
33 }
34
35 public function get_icon() {
36 return 'eicon-bullet-list spel-icon';
37 }
38
39 public function get_keywords() {
40 return [ 'spider', 'spider elements', 'icon list', 'icon', 'list' ];
41 }
42
43 public function get_categories() {
44 return [ 'spider-elements' ];
45 }
46
47 /**
48 * Name: get_style_depends()
49 * Desc: Register the required CSS dependencies for the frontend.
50 */
51 public function get_style_depends() {
52 return [ 'elegant-icon', 'spel-main' ];
53 }
54
55 /**
56 * Name: register_controls()
57 * Desc: Register controls for these widgets
58 * Params: no params
59 * Return: @void
60 * Since: @1.0.0
61 * Package: @spider-elements
62 * Author: spider-themes
63 */
64 protected function register_controls() {
65 $this->elementor_content_control();
66 $this->elementor_style_control();
67 }
68
69 /**
70 * Name: elementor_content_control()
71 * Desc: Register the Content Tab output on the Elementor editor.
72 * Params: no params
73 * Return: @void
74 * Since: @1.0.0
75 * Package: @spider-elements
76 * Author: spider-themes
77 */
78 public function elementor_content_control() {
79
80
81 //============================ Icon List ============================//
82 $this->start_controls_section(
83 'section_icon', [
84 'label' => __( 'Icon List', 'spider-elements' ),
85 ]
86 );
87
88 $this->add_control(
89 'style', [
90 'label' => __( 'Order Type', 'spider-elements' ),
91 'type' => Controls_Manager::SELECT,
92 'options' => [
93 'unordered_list' => __( 'Unordered List', 'spider-elements' ),
94 'order_list' => __( 'Ordered List', 'spider-elements' ),
95 ],
96 'default' => 'unordered_list',
97 ]
98 );
99
100 $repeater = new Repeater();
101 $repeater->add_control(
102 'text', [
103 'label' => __( 'Title', 'spider-elements' ),
104 'type' => Controls_Manager::TEXTAREA,
105 'label_block' => true,
106 'placeholder' => __( 'List Item', 'spider-elements' ),
107 'default' => __( 'List Item', 'spider-elements' ),
108 'dynamic' => [
109 'active' => true,
110 ],
111 ]
112 );
113
114 $this->add_control(
115 'ul_icon_list', [
116 'label' => 'Icon List',
117 'type' => Controls_Manager::REPEATER,
118 'fields' => $repeater->get_controls(),
119 'title_field' => '{{{ text }}}',
120 'prevent_empty' => false,
121 ]
122 );
123
124 $this->end_controls_section(); // End Icon List
125
126 }
127
128
129 /**
130 * Name: elementor_style_control()
131 * Desc: Register the Style Tab output on the Elementor editor.
132 * Params: no params
133 * Return: @void
134 * Since: @1.0.0
135 * Package: @spider-elements
136 * Author: spider-themes
137 */
138 public function elementor_style_control() {
139
140
141 //============================ List Item ============================//
142 $this->start_controls_section(
143 'section_icon_list', [
144 'label' => __( 'List', 'spider-elements' ),
145 'tab' => Controls_Manager::TAB_STYLE,
146 ]
147 );
148
149 $this->add_responsive_control(
150 'space_between', [
151 'label' => __( 'Space Between', 'spider-elements' ),
152 'type' => Controls_Manager::SLIDER,
153 'range' => [
154 'px' => [
155 'max' => 100,
156 ],
157 ],
158 'selectors' => [
159 '{{WRAPPER}} .steps-panel .ordered-list li:not(.steps-panel .ordered-list li:last-child)' => 'padding-bottom: {{SIZE}}{{UNIT}}',
160 ],
161 ]
162 );
163
164 $this->add_responsive_control(
165 'icon_align', [
166 'label' => __( 'Alignment', 'spider-elements' ),
167 'type' => Controls_Manager::CHOOSE,
168 'options' => [
169 'left' => [
170 'title' => __( 'Left', 'spider-elements' ),
171 'icon' => 'eicon-h-align-left',
172 ],
173 'center' => [
174 'title' => __( 'Center', 'spider-elements' ),
175 'icon' => 'eicon-h-align-center',
176 ],
177 'right' => [
178 'title' => __( 'Right', 'spider-elements' ),
179 'icon' => 'eicon-h-align-right',
180 ],
181 ],
182 'prefix_class' => 'elementor%s-align-',
183 ]
184 );
185
186 $this->add_control(
187 'text_color', [
188 'label' => __( 'Text Color', 'spider-elements' ),
189 'type' => Controls_Manager::COLOR,
190 'default' => '',
191 'selectors' => [
192 '{{WRAPPER}} .steps-panel .ordered-list li' => 'color: {{VALUE}};',
193 ],
194 'separator' => 'before'
195 ]
196 );
197
198 $this->add_control(
199 'text_color_hover', [
200 'label' => __( 'Hover', 'spider-elements' ),
201 'type' => Controls_Manager::COLOR,
202 'default' => '',
203 'selectors' => [
204 '{{WRAPPER}} .steps-panel .ordered-list li:hover' => 'color: {{VALUE}};',
205 ],
206 ]
207 );
208
209 $this->add_control(
210 'text_indent', [
211 'label' => __( 'Text Indent', 'spider-elements' ),
212 'type' => Controls_Manager::SLIDER,
213 'range' => [
214 'px' => [
215 'max' => 100,
216 ],
217 ],
218 'selectors' => [
219 '{{WRAPPER}} .steps-panel .ordered-list li' => is_rtl() ? 'padding-right: {{SIZE}}{{UNIT}};' : 'padding-left: {{SIZE}}{{UNIT}};',
220 ],
221 ]
222 );
223
224 $this->add_group_control(
225 Group_Control_Typography::get_type(), [
226 'name' => 'content_typography',
227 'selector' => '{{WRAPPER}} .steps-panel .ordered-list li',
228 ]
229 );
230
231 $this->end_controls_section();
232
233
234 //============================ Style Icon ============================//
235 $this->start_controls_section(
236 'style_icon', [
237 'label' => __( 'Icon', 'spider-elements' ),
238 'tab' => Controls_Manager::TAB_STYLE,
239 ]
240 );
241
242 $this->add_control(
243 'icon_color', [
244 'label' => __( 'Color', 'spider-elements' ),
245 'type' => Controls_Manager::COLOR,
246 'default' => '',
247 'selectors' => [
248 '{{WRAPPER}} .steps-panel .ordered-list li::before' => 'color: {{VALUE}};',
249 ],
250 ]
251 );
252
253 $this->add_control(
254 'icon_bg_color', [
255 'label' => __( 'Background', 'spider-elements' ),
256 'type' => Controls_Manager::COLOR,
257 'default' => '',
258 'selectors' => [
259 '{{WRAPPER}} .steps-panel .ordered-list li::before' => 'background: {{VALUE}};',
260 ],
261 ]
262 );
263
264 $this->add_responsive_control(
265 'icon_size', [
266 'label' => __( 'Size', 'spider-elements' ),
267 'type' => Controls_Manager::SLIDER,
268 'range' => [
269 'px' => [
270 'min' => 6,
271 ],
272 ],
273 'selectors' => [
274 '{{WRAPPER}} .steps-panel .ordered-list li::before' => 'font-size: {{SIZE}}{{UNIT}};',
275 ],
276 ]
277 );
278
279 $this->add_responsive_control(
280 'icon_bg_size', [
281 'label' => __( 'Background Size', 'spider-elements' ),
282 'type' => Controls_Manager::SLIDER,
283 'range' => [
284 'px' => [
285 'min' => 6,
286 ],
287 ],
288 'selectors' => [
289 '{{WRAPPER}} .steps-panel .ordered-list li::before' => 'width:{{SIZE}}{{UNIT}} !important; height: {{SIZE}}{{UNIT}} !important;',
290 ],
291 ]
292 );
293
294 $this->add_responsive_control(
295 'icon_line_height', [
296 'label' => __( 'Line Height', 'spider-elements' ),
297 'type' => Controls_Manager::SLIDER,
298 'range' => [
299 'px' => [
300 'min' => 6,
301 ],
302 ],
303 'selectors' => [
304 '{{WRAPPER}} .steps-panel .ordered-list li::before' => 'line-height: {{SIZE}}{{UNIT}};',
305 ],
306 ]
307 );
308
309 $this->end_controls_section(); // End Style Icon
310
311
312 //============================ Style Background ============================//
313 $this->start_controls_section(
314 'sec_bg_style', [
315 'label' => __( 'Background', 'spider-elements' ),
316 'tab' => Controls_Manager::TAB_STYLE,
317 ]
318 );
319
320 $this->add_responsive_control(
321 'sec_margin', [
322 'label' => __( 'Padding', 'spider-elements' ),
323 'type' => Controls_Manager::DIMENSIONS,
324 'size_units' => [ 'px', '%', 'em' ],
325 'selectors' => [
326 '{{WRAPPER}} .steps-panel' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
327 ],
328 'default' => [
329 'unit' => 'px', // The selected CSS Unit. 'px', '%', 'em',
330 ],
331 ]
332 );
333
334 $this->add_group_control(
335 Group_Control_Box_Shadow::get_type(), [
336 'name' => 'sec_box_shadow',
337 'selector' => '{{WRAPPER}} .steps-panel',
338 ]
339 );
340
341 $this->add_group_control(
342 Group_Control_Border::get_type(), [
343 'name' => 'border',
344 'label' => __( 'Border', 'spider-elements' ),
345 'selector' => '{{WRAPPER}} .steps-panel',
346 'separator' => 'before',
347 ]
348 );
349
350 $this->add_control(
351 'border_radius', [
352 'label' => __( 'Border Radius', 'spider-elements' ),
353 'type' => Controls_Manager::DIMENSIONS,
354 'size_units' => [ 'px', '%' ],
355 'selectors' => [
356 '{{WRAPPER}} .steps-panel' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
357 ],
358 ]
359 );
360
361 $this->end_controls_section(); // End Style Background
362
363 }
364
365
366 /**
367 * Name: elementor_render()
368 * Desc: Render the widget output on the frontend.
369 * Params: no params
370 * Return: @void
371 * Since: @1.0.0
372 * Package: @spider-elements
373 * Author: spider-themes
374 */
375 protected function render() {
376 $settings = $this->get_settings_for_display();
377 extract( $settings ); // extract all settings array to variables converted to name of key
378
379 if ( $settings['style'] == 'unordered_list' ) {
380 ?>
381 <div class="steps-panel">
382 <ul class="ordered-list">
383 <?php
384 if ( ! empty( $ul_icon_list ) ) {
385 foreach ( $ul_icon_list as $item ) {
386 if ( ! empty( $item['text'] ) ) { ?>
387 <li class="elementor-repeater-item-<?php echo esc_attr( $item['_id'] ); ?>">
388 <?php echo esc_html( $item['text'] ); ?>
389 </li>
390 <?php
391 }
392 }
393 }
394 ?>
395 </ul>
396 </div>
397 <?php
398 } elseif ( $settings['style'] == 'order_list' ) {
399 ?>
400 <div class="steps-panel">
401 <ol class="ordered-list">
402 <?php
403 if ( ! empty( $ul_icon_list ) ) {
404 foreach ( $ul_icon_list as $item ) {
405 if ( ! empty( $item['text'] ) ) { ?>
406 <li class="elementor-repeater-item-<?php echo esc_attr( $item['_id'] ); ?>">
407 <?php echo esc_html( $item['text'] ) ?>
408 </li>
409 <?php
410 }
411 }
412 }
413 ?>
414 </ol>
415 </div>
416 <?php
417 }
418 }
419 }
420