PluginProbe
Elementor Website Builder – more than just a page builder / 4.1.4
Elementor Website Builder – more than just a page builder v4.1.4
4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 4.1.0-beta2 4.1.0-dev2 4.0.8 4.1.0-beta1 4.1.0-dev1 4.0.7 All 451 releases
← All changes | modules/atomic-widgets/module.php +57 -0 4.0.74.1.4 View file →
@@ -71,8 +71,10 @@
71 71 use Elementor\Modules\AtomicWidgets\PropTypes\Border_Radius_Prop_Type;
72 72 use Elementor\Modules\AtomicWidgets\PropTypes\Border_Width_Prop_Type;
73 73 use Elementor\Modules\AtomicWidgets\PropTypes\Color_Stop_Prop_Type;
74 74 use Elementor\Modules\AtomicWidgets\PropTypes\Date_Time_Prop_Type;
75 +use Elementor\Modules\AtomicWidgets\PropTypes\Date_Range_Prop_Type;
76 +use Elementor\Modules\AtomicWidgets\PropTypes\Time_Range_Prop_Type;
75 77 use Elementor\Modules\AtomicWidgets\PropTypes\Filters\Backdrop_Filter_Prop_Type;
76 78 use Elementor\Modules\AtomicWidgets\PropTypes\Filters\Filter_Prop_Type;
77 79 use Elementor\Modules\AtomicWidgets\PropTypes\Gradient_Color_Stop_Prop_Type;
78 80 use Elementor\Modules\AtomicWidgets\PropTypes\Html_V2_Prop_Type;
@@ -104,8 +106,9 @@
104 106 use Elementor\Modules\AtomicWidgets\Styles\Style_Schema;
105 107 use Elementor\Modules\AtomicWidgets\Database\Atomic_Widgets_Database_Updater;
106 108 use Elementor\Modules\AtomicWidgets\Elements\Atomic_Tabs\Atomic_Tab_Content\Atomic_Tab_Content;
107 109 use Elementor\Modules\AtomicWidgets\Elements\Atomic_Form\Atomic_Form;
110 +use Elementor\Modules\AtomicWidgets\Elements\Atomic_Form\Atomic_Form_Promotion;
108 111 use Elementor\Modules\AtomicWidgets\Elements\Atomic_Form\Form_Success_Message\Form_Success_Message;
109 112 use Elementor\Modules\AtomicWidgets\Elements\Atomic_Form\Form_Error_Message\Form_Error_Message;
110 113 use Elementor\Modules\AtomicWidgets\PropTypeMigrations\Migrations_Orchestrator;
111 114 use Elementor\Plugin;
@@ -111,14 +114,18 @@
111 114 use Elementor\Plugin;
112 115 use Elementor\Widgets_Manager;
113 116 use Elementor\Modules\AtomicWidgets\Library\Atomic_Widgets_Library;
114 117 use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Settings\Query_Transformer;
118 +use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Settings\Date_Range_Transformer;
119 +use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Settings\Time_Range_Transformer;
115 120 use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Perspective_Origin_Transformer;
116 121 use Elementor\Modules\AtomicWidgets\PropTypes\Query_Prop_Type;
117 122 use Elementor\Modules\AtomicWidgets\PropTypes\Transform\Perspective_Origin_Prop_Type;
118 123 use Elementor\Modules\AtomicWidgets\Utils\Utils;
119 124 use Elementor\Modules\AtomicWidgets\Elements\Atomic_Self_Hosted_Video\Atomic_Self_Hosted_Video;
125 +use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Styles\Span_Transformer;
120 126 use Elementor\Modules\AtomicWidgets\PropsResolver\Transformers\Video_Src_Transformer;
127 +use Elementor\Modules\AtomicWidgets\PropTypes\Span_Prop_Type;
121 128 use Elementor\Modules\AtomicWidgets\PropTypes\Video_Src_Prop_Type;
122 129
123 130 if ( ! defined( 'ABSPATH' ) ) {
124 131 exit; // Exit if accessed directly.
@@ -127,8 +134,10 @@
127 134 class Module extends BaseModule {
128 135 const EXPERIMENT_NAME = 'e_atomic_elements';
129 136 const ENFORCE_CAPABILITIES_EXPERIMENT = 'atomic_widgets_should_enforce_capabilities';
130 137 const EXPERIMENT_EDITOR_MCP = 'editor_mcp';
138 + const EXPERIMENT_CSS_GRID = 'e_css_grid';
139 + const EXPERIMENT_DESIGN_SYSTEM_PANEL = 'e_editor_design_system_panel';
131 140
132 141 const PACKAGES = [
133 142 'editor-canvas',
134 143 'editor-controls', // TODO: Need to be registered and not enqueued.
@@ -138,8 +147,9 @@
138 147 'editor-styles', // TODO: Need to be registered and not enqueued.
139 148 'editor-styles-repository',
140 149 'editor-interactions',
141 150 'editor-templates',
151 + 'editor-design-system',
142 152 ];
143 153
144 154 public function get_name() {
145 155 return 'atomic-widgets';
@@ -162,8 +172,10 @@
162 172 add_filter( 'elementor/usage/elements/element_title', fn ( $title, $type ) => $this->get_element_usage_name( $title, $type ), 10, 2 );
163 173
164 174 add_action( 'elementor/elements/elements_registered', fn ( $elements_manager ) => $this->register_elements( $elements_manager ) );
165 175 add_action( 'elementor/editor/after_enqueue_scripts', fn () => $this->enqueue_scripts() );
176 + add_action( 'elementor/editor/after_enqueue_styles', fn () => $this->enqueue_promotion_styles() );
177 + add_action( 'elementor/preview/enqueue_styles', fn () => $this->enqueue_promotion_styles() );
166 178 add_action( 'elementor/frontend/before_register_scripts', fn () => $this->register_frontend_scripts() );
167 179 add_action( 'elementor/frontend/after_enqueue_styles', fn () => $this->add_inline_styles() );
168 180
169 181 add_action( 'elementor/atomic-widgets/settings/transformers/register', fn ( $transformers ) => $this->register_settings_transformers( $transformers ) );
@@ -223,8 +235,26 @@
223 235 'default' => Experiments_Manager::STATE_ACTIVE,
224 236 'release_status' => Experiments_Manager::RELEASE_STATUS_DEV,
225 237 ]);
226 238
239 + Plugin::$instance->experiments->add_feature( [
240 + 'name' => self::EXPERIMENT_CSS_GRID,
241 + 'title' => esc_html__( 'CSS Grid', 'elementor' ),
242 + 'description' => esc_html__( 'Enable CSS Grid layout for containers.', 'elementor' ),
243 + 'hidden' => true,
244 + 'default' => Experiments_Manager::STATE_INACTIVE,
245 + 'release_status' => Experiments_Manager::RELEASE_STATUS_DEV,
246 + ] );
247 +
248 + Plugin::$instance->experiments->add_feature([
249 + 'name' => self::EXPERIMENT_DESIGN_SYSTEM_PANEL,
250 + 'title' => esc_html__( 'Editor design system panel', 'elementor' ),
251 + 'description' => esc_html__( 'Unified design system entry in the editor (toolbar + single panel for variables and global classes).', 'elementor' ),
252 + 'hidden' => true,
253 + 'default' => Experiments_Manager::STATE_ACTIVE,
254 + 'release_status' => Experiments_Manager::RELEASE_STATUS_DEV,
255 + ]);
256 +
227 257 // When a new feature affects settings or style schema, global class, interactions, variable, etc
228 258 // anything in need of addressing migration for BC purposes, add it here.
229 259 $migrations_affecting_features = [];
230 260
@@ -288,8 +318,10 @@
288 318 if ( \Elementor\Utils::has_pro() && Plugin::$instance->experiments->is_feature_active( 'e_pro_atomic_form' ) ) {
289 319 $elements_manager->register_element_type( new Atomic_Form() );
290 320 $elements_manager->register_element_type( new Form_Success_Message() );
291 321 $elements_manager->register_element_type( new Form_Error_Message() );
322 + } elseif ( ! \Elementor\Utils::has_pro() ) {
323 + $elements_manager->register_element_type( new Atomic_Form_Promotion() );
292 324 }
293 325 }
294 326
295 327 private function register_settings_transformers( Transformers_Registry $transformers ) {
@@ -302,8 +334,10 @@
302 334 $transformers->register( Link_Prop_Type::get_key(), new Link_Transformer() );
303 335 $transformers->register( Query_Prop_Type::get_key(), new Query_Transformer() );
304 336 $transformers->register( Attributes_Prop_Type::get_key(), new Attributes_Transformer() );
305 337 $transformers->register( Date_Time_Prop_Type::get_key(), new Date_Time_Transformer() );
338 + $transformers->register( Date_Range_Prop_Type::get_key(), new Date_Range_Transformer() );
339 + $transformers->register( Time_Range_Prop_Type::get_key(), new Time_Range_Transformer() );
306 340 $transformers->register( Html_V2_Prop_Type::get_key(), new Html_V2_Transformer() );
307 341 $transformers->register( Html_V3_Prop_Type::get_key(), new Html_V3_Transformer() );
308 342 }
309 343
@@ -324,8 +358,9 @@
324 358 $transformers->register( Flex_Prop_Type::get_key(), new Flex_Transformer() );
325 359 $transformers->register( Stroke_Prop_Type::get_key(), new Stroke_Transformer() );
326 360 $transformers->register( Image_Prop_Type::get_key(), new Image_Transformer() );
327 361 $transformers->register( Image_Src_Prop_Type::get_key(), new Image_Src_Transformer() );
362 + $transformers->register( Span_Prop_Type::get_key(), new Span_Transformer() );
328 363 }
329 364
330 365 private function register_background_styles_transformers( Transformers_Registry $transformers ): void {
331 366 $transformers->register( Background_Image_Overlay_Prop_Type::get_key(), new Background_Image_Overlay_Transformer() );
@@ -423,8 +458,10 @@
423 458 [ 'elementor-editor' ],
424 459 ELEMENTOR_VERSION,
425 460 true
426 461 );
462 +
463 + wp_set_script_translations( 'elementor-atomic-widgets-editor', 'elementor' );
427 464 }
428 465
429 466 private function render_panel_category_chip() {
430 467 ?><# if ( 'v4-elements' === name ) { #>
@@ -448,6 +485,26 @@
448 485 '{ display: block; }',
449 486 ] );
450 487 wp_add_inline_style( 'elementor-frontend', $inline_css );
451 488 wp_add_inline_style( 'elementor-editor', $inline_css );
489 + }
490 +
491 + private function enqueue_promotion_styles() {
492 + if ( \Elementor\Utils::has_pro() ) {
493 + return;
494 + }
495 +
496 + wp_enqueue_style(
497 + 'elementor-atomic-widgets-promotion-fonts',
498 + 'https://fonts.googleapis.com/css2?family=Poppins:wght@400;600&display=swap',
499 + [],
500 + ELEMENTOR_VERSION
501 + );
502 +
503 + wp_enqueue_style(
504 + 'elementor-atomic-widgets-promotion',
505 + $this->get_css_assets_url( 'modules/atomic-widgets/editor' ),
506 + [ 'elementor-atomic-widgets-promotion-fonts' ],
507 + ELEMENTOR_VERSION
508 + );
452 509 }
453 510 }