Diff: STRATO-apps/wordpress_03/app/wp-content/plugins/bdthemes-element-pack/modules/tooltip/module.php

Keine Baseline-Datei – Diff nur gegen leer.
Zur Liste
1 -
1 + <?php
2 +
3 + namespace ElementPack\Modules\Tooltip;
4 +
5 + use Elementor\Controls_Manager;
6 + use Elementor\Group_Control_Background;
7 + use Elementor\Group_Control_Border;
8 + use Elementor\Group_Control_Box_Shadow;
9 + use Elementor\Group_Control_Typography;
10 + use ElementPack;
11 + use ElementPack\Base\Element_Pack_Module_Base;
12 + use ElementPack\Traits\Global_Widget_Controls;
13 +
14 + if ( ! defined( 'ABSPATH' ) ) {
15 + exit;
16 + } // Exit if accessed directly
17 +
18 + class Module extends Element_Pack_Module_Base {
19 + use Global_Widget_Controls;
20 +
21 + public function __construct() {
22 + parent::__construct();
23 + $this->add_actions();
24 + }
25 +
26 + public function get_name() {
27 + return 'bdt-tooltip';
28 + }
29 +
30 + public function register_section( $element ) {
31 + $element->start_controls_section(
32 + 'section_element_pack_tooltip_controls',
33 + [
34 + 'tab' => Controls_Manager::TAB_ADVANCED,
35 + 'label' => BDTEP_CP . esc_html__( 'Tooltip', 'bdthemes-element-pack' ),
36 + ]
37 + );
38 + $element->end_controls_section();
39 + }
40 +
41 +
42 + public function register_controls( $widget, $args ) {
43 +
44 + $widget->add_control(
45 + 'element_pack_widget_tooltip',
46 + [
47 + 'label' => esc_html__( 'Use Tooltip?', 'bdthemes-element-pack' ),
48 + 'type' => Controls_Manager::SWITCHER,
49 + 'label_on' => esc_html__( 'Yes', 'bdthemes-element-pack' ),
50 + 'label_off' => esc_html__( 'No', 'bdthemes-element-pack' ),
51 + 'render_type' => 'template',
52 + 'frontend_available' => true,
53 + ]
54 + );
55 +
56 + $widget->start_controls_tabs( 'element_pack_widget_tooltip_tabs' );
57 +
58 + $widget->start_controls_tab(
59 + 'element_pack_widget_tooltip_settings_tab',
60 + [
61 + 'label' => esc_html__( 'Settings', 'bdthemes-element-pack' ),
62 + 'condition' => [
63 + 'element_pack_widget_tooltip' => 'yes',
64 + ],
65 + ]
66 + );
67 +
68 + $widget->add_control(
69 + 'element_pack_widget_tooltip_text',
70 + [
71 + 'label' => esc_html__( 'Description', 'bdthemes-element-pack' ),
72 + 'type' => Controls_Manager::TEXTAREA,
73 + 'default' => 'This is Tooltip',
74 + 'dynamic' => [ 'active' => true ],
75 + 'condition' => [
76 + 'element_pack_widget_tooltip' => 'yes',
77 + ],
78 + 'render_type' => 'none',
79 + 'frontend_available' => true,
80 + ]
81 + );
82 +
83 + $widget->add_control(
84 + 'element_pack_widget_tooltip_placement',
85 + [
86 + 'label' => esc_html__( 'Placement', 'bdthemes-element-pack' ),
87 + 'type' => Controls_Manager::SELECT,
88 + 'default' => '',
89 + 'options' => [
90 + '' => esc_html__( 'Top (Default)', 'bdthemes-element-pack' ),
91 +
92 + 'top-start' => esc_html__( 'Top Start', 'bdthemes-element-pack' ),
93 + 'top-end' => esc_html__( 'Top End', 'bdthemes-element-pack' ),
94 +
95 + 'right' => esc_html__( 'Right', 'bdthemes-element-pack' ),
96 + 'right-start' => esc_html__( 'Right Start', 'bdthemes-element-pack' ),
97 + 'right-end' => esc_html__( 'Right End', 'bdthemes-element-pack' ),
98 +
99 + 'bottom' => esc_html__( 'Bottom', 'bdthemes-element-pack' ),
100 + 'bottom-start' => esc_html__( 'Bottom Start', 'bdthemes-element-pack' ),
101 + 'bottom-end' => esc_html__( 'Bottom End', 'bdthemes-element-pack' ),
102 +
103 + 'left' => esc_html__( 'Left', 'bdthemes-element-pack' ),
104 + 'left-start' => esc_html__( 'Left Start', 'bdthemes-element-pack' ),
105 + 'left-end' => esc_html__( 'Left End', 'bdthemes-element-pack' ),
106 +
107 + 'auto' => esc_html__( 'Auto', 'bdthemes-element-pack' ),
108 + 'auto-start' => esc_html__( 'Auto Start', 'bdthemes-element-pack' ),
109 + 'auto-end' => esc_html__( 'Auto End', 'bdthemes-element-pack' ),
110 + ],
111 + 'render_type' => 'none',
112 + 'frontend_available' => true,
113 + 'condition' => [
114 + 'element_pack_widget_tooltip' => 'yes',
115 + 'element_pack_widget_tooltip_follow_cursor' => ''
116 + ],
117 + ]
118 + );
119 +
120 + $widget->add_control(
121 + 'element_pack_widget_tooltip_follow_cursor',
122 + [
123 + 'label' => esc_html__( 'Follow Cursor', 'bdthemes-element-pack' ) . BDTEP_NC,
124 + 'type' => Controls_Manager::SWITCHER,
125 + 'render_type' => 'none',
126 + 'frontend_available' => true,
127 + 'condition' => [
128 + 'element_pack_widget_tooltip' => 'yes',
129 + ],
130 + ]
131 + );
132 +
133 + $widget->add_control(
134 + 'element_pack_widget_tooltip_animation',
135 + [
136 + 'label' => esc_html__( 'Animation', 'bdthemes-element-pack' ),
137 + 'type' => Controls_Manager::SELECT,
138 + 'default' => '',
139 + 'options' => [
140 + 'none' => esc_html__( 'None', 'bdthemes-element-pack' ),
141 + '' => esc_html__( 'Fade', 'bdthemes-element-pack' ),
142 + 'shift-away' => esc_html__( 'Shift-Away', 'bdthemes-element-pack' ),
143 + 'shift-toward' => esc_html__( 'Shift-Toward', 'bdthemes-element-pack' ),
144 + 'scale' => esc_html__( 'Scale', 'bdthemes-element-pack' ),
145 + 'perspective' => esc_html__( 'Perspective', 'bdthemes-element-pack' ),
146 + 'fill' => esc_html__( 'Fill Effect', 'bdthemes-element-pack' ),
147 + ],
148 + 'render_type' => 'none',
149 + 'frontend_available' => true,
150 + 'condition' => [
151 + 'element_pack_widget_tooltip' => 'yes',
152 + ],
153 + ]
154 + );
155 +
156 + $widget->add_control(
157 + 'element_pack_widget_tooltip_trigger',
158 + [
159 + 'label' => esc_html__( 'Trigger', 'bdthemes-element-pack' ) . BDTEP_NC,
160 + 'type' => Controls_Manager::SELECT,
161 + 'options' => [
162 + '' => esc_html__( 'Hover', 'bdthemes-element-pack' ),
163 + 'click' => esc_html__( 'Click', 'bdthemes-element-pack' ),
164 + 'manual' => esc_html__( 'Custom Trigger', 'bdthemes-element-pack' ),
165 +
166 + ],
167 + 'render_type' => 'none',
168 + 'frontend_available' => true,
169 + 'condition' => [
170 + 'element_pack_widget_tooltip' => 'yes',
171 + ],
172 + ]
173 + );
174 +
175 + $widget->add_control(
176 + 'element_pack_widget_tooltip_custom_trigger',
177 + [
178 + 'label' => esc_html__( 'Custom Trigger', 'bdthemes-element-pack' ),
179 + 'placeholder' => '.class-name',
180 + 'type' => Controls_Manager::TEXT,
181 + 'dynamic' => [ 'active' => true ],
182 + 'condition' => [
183 + 'element_pack_widget_tooltip' => 'yes',
184 + 'element_pack_widget_tooltip_trigger' => 'manual',
185 + ],
186 + 'render_type' => 'none',
187 + 'frontend_available' => true,
188 + ]
189 + );
190 +
191 + $widget->add_control(
192 + 'element_pack_widget_tooltip_x_offset',
193 + [
194 + 'label' => esc_html__( 'X Offset', 'bdthemes-element-pack' ),
195 + 'type' => Controls_Manager::SLIDER,
196 + 'size_units' => [ 'px' ],
197 + 'range' => [
198 + 'px' => [
199 + 'min' => -1000,
200 + 'max' => 1000,
201 + 'step' => 1,
202 + ],
203 + ],
204 + 'render_type' => 'none',
205 + 'frontend_available' => true,
206 + 'condition' => [
207 + 'element_pack_widget_tooltip' => 'yes',
208 + ],
209 + ]
210 + );
211 +
212 + $widget->add_control(
213 + 'element_pack_widget_tooltip_y_offset',
214 + [
215 + 'label' => esc_html__( 'Y Offset', 'bdthemes-element-pack' ),
216 + 'type' => Controls_Manager::SLIDER,
217 + 'size_units' => [ 'px' ],
218 + 'range' => [
219 + 'px' => [
220 + 'min' => -1000,
221 + 'max' => 1000,
222 + 'step' => 1,
223 + ],
224 + ],
225 + 'render_type' => 'none',
226 + 'frontend_available' => true,
227 + 'condition' => [
228 + 'element_pack_widget_tooltip' => 'yes',
229 + ],
230 + ]
231 + );
232 +
233 + $widget->add_control(
234 + 'element_pack_widget_tooltip_arrow',
235 + [
236 + 'label' => esc_html__( 'Arrow', 'bdthemes-element-pack' ),
237 + 'type' => Controls_Manager::SWITCHER,
238 + 'render_type' => 'none',
239 + 'frontend_available' => true,
240 + 'condition' => [
241 + 'element_pack_widget_tooltip' => 'yes',
242 + 'element_pack_widget_tooltip_animation!' => 'fill'
243 + ],
244 + ]
245 + );
246 +
247 + $widget->end_controls_tab();
248 +
249 + $widget->start_controls_tab(
250 + 'element_pack_widget_tooltip_styles_tab',
251 + [
252 + 'label' => esc_html__( 'Style', 'bdthemes-element-pack' ),
253 + 'condition' => [
254 + 'element_pack_widget_tooltip' => 'yes',
255 + ],
256 + ]
257 + );
258 +
259 + $widget->add_responsive_control(
260 + 'element_pack_widget_tooltip_width',
261 + [
262 + 'label' => esc_html__( 'Max Width', 'bdthemes-element-pack' ),
263 + 'type' => Controls_Manager::SLIDER,
264 + 'size_units' => [
265 + 'px',
266 + 'em',
267 + ],
268 + 'range' => [
269 + 'px' => [
270 + 'min' => 50,
271 + 'max' => 500,
272 + ],
273 + ],
274 + 'selectors' => [
275 + '.tippy-box[data-theme="bdt-tippy-{{ID}}"]' => 'max-width: calc({{SIZE}}{{UNIT}} - 10px) !important;',
276 + ],
277 + 'condition' => [
278 + 'element_pack_widget_tooltip' => 'yes',
279 + ],
280 + // 'render_type' => 'none',
281 + // 'frontend_available' => true,
282 + ]
283 + );
284 +
285 +
286 + $widget->add_control(
287 + 'element_pack_widget_tooltip_color',
288 + [
289 + 'label' => esc_html__( 'Text Color', 'bdthemes-element-pack' ),
290 + 'type' => Controls_Manager::COLOR,
291 + 'selectors' => [
292 + '.tippy-box[data-theme="bdt-tippy-{{ID}}"]' => 'color: {{VALUE}}',
293 + ],
294 + 'condition' => [
295 + 'element_pack_widget_tooltip' => 'yes',
296 + ],
297 + ]
298 + );
299 +
300 + $widget->add_group_control(
301 + Group_Control_Background::get_type(),
302 + [
303 + 'name' => 'element_pack_widget_tooltip_background',
304 + 'selector' => '.tippy-box[data-theme="bdt-tippy-{{ID}}"], .tippy-box[data-theme="bdt-tippy-{{ID}}"] .tippy-backdrop',
305 + 'condition' => [
306 + 'element_pack_widget_tooltip' => 'yes',
307 + ],
308 + ]
309 + );
310 +
311 + $widget->add_control(
312 + 'element_pack_widget_tooltip_arrow_color',
313 + [
314 + 'label' => esc_html__( 'Arrow Color', 'bdthemes-element-pack' ),
315 + 'type' => Controls_Manager::COLOR,
316 + 'selectors' => [
317 + '.tippy-box[data-theme="bdt-tippy-{{ID}}"] .tippy-arrow' => 'color: {{VALUE}}',
318 + ],
319 + 'condition' => [
320 + 'element_pack_widget_tooltip' => 'yes',
321 + ],
322 + 'separator' => 'after',
323 + ]
324 + );
325 +
326 + $widget->add_responsive_control(
327 + 'element_pack_widget_tooltip_padding',
328 + [
329 + 'label' => __( 'Padding', 'bdthemes-element-pack' ),
330 + 'type' => Controls_Manager::DIMENSIONS,
331 + 'size_units' => [ 'px', '%' ],
332 + 'selectors' => [
333 + '.tippy-box[data-theme="bdt-tippy-{{ID}}"] .tippy-content' => 'padding: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
334 + ],
335 + 'condition' => [
336 + 'element_pack_widget_tooltip' => 'yes',
337 + ],
338 + ]
339 + );
340 +
341 + $widget->add_group_control(
342 + Group_Control_Border::get_type(),
343 + [
344 + 'name' => 'element_pack_widget_tooltip_border',
345 + 'label' => esc_html__( 'Border', 'bdthemes-element-pack' ),
346 + 'placeholder' => '1px',
347 + 'default' => '1px',
348 + 'selector' => '.tippy-box[data-theme="bdt-tippy-{{ID}}"]',
349 + 'condition' => [
350 + 'element_pack_widget_tooltip' => 'yes',
351 + ],
352 + ]
353 + );
354 +
355 + $widget->add_responsive_control(
356 + 'element_pack_widget_tooltip_border_radius',
357 + [
358 + 'label' => __( 'Border Radius', 'bdthemes-element-pack' ),
359 + 'type' => Controls_Manager::DIMENSIONS,
360 + 'size_units' => [ 'px', '%' ],
361 + 'selectors' => [
362 + '.tippy-box[data-theme="bdt-tippy-{{ID}}"]' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
363 + ],
364 + 'condition' => [
365 + 'element_pack_widget_tooltip' => 'yes',
366 + ],
367 + ]
368 + );
369 +
370 + $widget->add_control(
371 + 'element_pack_widget_tooltip_text_align',
372 + [
373 + 'label' => esc_html__( 'Text Alignment', 'bdthemes-element-pack' ),
374 + 'type' => Controls_Manager::CHOOSE,
375 + 'default' => 'center',
376 + 'options' => [
377 + 'left' => [
378 + 'title' => esc_html__( 'Left', 'bdthemes-element-pack' ),
379 + 'icon' => 'eicon-text-align-left',
380 + ],
381 + 'center' => [
382 + 'title' => esc_html__( 'Center', 'bdthemes-element-pack' ),
383 + 'icon' => 'eicon-text-align-center',
384 + ],
385 + 'right' => [
386 + 'title' => esc_html__( 'Right', 'bdthemes-element-pack' ),
387 + 'icon' => 'eicon-text-align-right',
388 + ],
389 + ],
390 + 'selectors' => [
391 + '.tippy-box[data-theme="bdt-tippy-{{ID}}"]' => 'text-align: {{VALUE}};',
392 + ],
393 + 'condition' => [
394 + 'element_pack_widget_tooltip' => 'yes',
395 + ],
396 + 'separator' => 'before',
397 + ]
398 + );
399 +
400 + $widget->add_group_control(
401 + Group_Control_Box_Shadow::get_type(),
402 + [
403 + 'name' => 'element_pack_widget_tooltip_box_shadow',
404 + 'selector' => '.tippy-box[data-theme="bdt-tippy-{{ID}}"]',
405 + 'condition' => [
406 + 'element_pack_widget_tooltip' => 'yes',
407 + ],
408 + ]
409 + );
410 +
411 + $widget->add_group_control(
412 + Group_Control_Typography::get_type(),
413 + [
414 + 'name' => 'element_pack_widget_tooltip_typography',
415 + 'selector' => '.tippy-box[data-theme="bdt-tippy-{{ID}}"]',
416 + 'condition' => [
417 + 'element_pack_widget_tooltip' => 'yes',
418 + ],
419 + ]
420 + );
421 +
422 + $widget->end_controls_tab();
423 +
424 + $widget->end_controls_tabs();
425 + }
426 +
427 + public function enqueue_scripts() {
428 + $suffix = defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ? '' : '.min';
429 + $direction_suffix = is_rtl() ? '.rtl' : '';
430 + wp_register_style( 'tippy', BDTEP_ASSETS_URL . 'css/tippy' . $direction_suffix . '.css', [], BDTEP_VER );
431 + wp_register_script( 'popper', BDTEP_ASSETS_URL . 'vendor/js/popper.min.js', [ 'jquery' ], null );
432 + wp_register_script( 'tippyjs', BDTEP_ASSETS_URL . 'vendor/js/tippy.all.min.js', [ 'jquery' ], null );
433 +
434 + if ( \ElementPack\Element_Pack_Loader::elementor()->preview->is_preview_mode() || \ElementPack\Element_Pack_Loader::elementor()->editor->is_edit_mode() ) {
435 + wp_enqueue_script( 'popper' );
436 + wp_enqueue_script( 'tippyjs' );
437 + wp_enqueue_style( 'tippy' );
438 + }
439 + }
440 +
441 + public function should_script_enqueue( $widget ) {
442 + if ( 'yes' === $widget->get_settings_for_display( 'element_pack_widget_tooltip' ) ) {
443 + $this->enqueue_scripts();
444 + wp_enqueue_style( 'tippy' );
445 + wp_enqueue_script( 'popper' );
446 + wp_enqueue_script( 'tippyjs' );
447 + wp_enqueue_script( 'ep-tooltip' );
448 + }
449 + }
450 +
451 + protected function add_actions() {
452 +
453 + add_action( 'wp_enqueue_scripts', [ $this, 'enqueue_scripts' ], 9999 );
454 +
455 + add_action( 'elementor/element/common/_section_style/after_section_end', [ $this, 'register_section' ] );
456 +
457 + add_action( 'elementor/element/common/section_element_pack_tooltip_controls/before_section_end', [ $this, 'register_controls' ], 10, 2 );
458 + add_action( 'elementor/frontend/widget/before_render', [ $this, 'should_script_enqueue' ] );
459 + add_action( 'elementor/preview/enqueue_scripts', [ $this, 'enqueue_scripts' ] );
460 + }
461 + }
462 +