PluginProbe
Elementor Website Builder – more than just a page builder / 3.9.0
Elementor Website Builder – more than just a page builder v3.9.0
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 | includes/widgets/common.php +12 -509 3.8.13.9.0 View file →
@@ -255,9 +255,9 @@
255 255 ],
256 256 ],
257 257 'size_units' => [ 'px', '%', 'vw' ],
258 258 'selectors' => [
259 - '{{WRAPPER}}' => 'width: {{SIZE}}{{UNIT}}; max-width: {{SIZE}}{{UNIT}}',
259 + '{{WRAPPER}}' => '--container-widget-width: {{SIZE}}{{UNIT}}; --container-widget-flex-grow: 0; width: var( --container-widget-width, {{SIZE}}{{UNIT}} ); max-width: {{SIZE}}{{UNIT}}',
260 260 ],
261 261 'condition' => [ '_element_width' => 'initial' ],
262 262 ]
263 263 );
@@ -662,515 +662,9 @@
662 662
663 663 $this->end_controls_section();
664 664 }
665 665
666 - private function register_transform_section() {
667 - $this->start_controls_section(
668 - '_section_transform',
669 - [
670 - 'label' => esc_html__( 'Transform', 'elementor' ),
671 - 'tab' => Controls_Manager::TAB_ADVANCED,
672 - ]
673 - );
674 -
675 - $this->start_controls_tabs( '_tabs_positioning' );
676 -
677 - $transform_prefix_class = 'e-';
678 - $transform_return_value = 'transform';
679 -
680 - foreach ( [ '', '_hover' ] as $tab ) {
681 - $state = '_hover' === $tab ? ':hover' : '';
682 -
683 - $this->start_controls_tab(
684 - "_tab_positioning{$tab}",
685 - [
686 - 'label' => '' === $tab ? esc_html__( 'Normal', 'elementor' ) : esc_html__( 'Hover', 'elementor' ),
687 - ]
688 - );
689 -
690 - $this->add_control(
691 - "_transform_rotate_popover{$tab}",
692 - [
693 - 'label' => esc_html__( 'Rotate', 'elementor' ),
694 - 'type' => Controls_Manager::POPOVER_TOGGLE,
695 - 'prefix_class' => $transform_prefix_class,
696 - 'return_value' => $transform_return_value,
697 - ]
698 - );
699 -
700 - $this->start_popover();
701 -
702 - $this->add_responsive_control(
703 - "_transform_rotateZ_effect{$tab}",
704 - [
705 - 'label' => esc_html__( 'Rotate', 'elementor' ),
706 - 'type' => Controls_Manager::SLIDER,
707 - 'range' => [
708 - 'px' => [
709 - 'min' => -360,
710 - 'max' => 360,
711 - ],
712 - ],
713 - 'selectors' => [
714 - "{{WRAPPER}} > .elementor-widget-container{$state}" => '--e-transform-rotateZ: {{SIZE}}deg',
715 - ],
716 - 'condition' => [
717 - "_transform_rotate_popover{$tab}!" => '',
718 - ],
719 - 'frontend_available' => true,
720 - ]
721 - );
722 -
723 - $this->add_control(
724 - "_transform_rotate_3d{$tab}",
725 - [
726 - 'label' => esc_html__( '3D Rotate', 'elementor' ),
727 - 'type' => Controls_Manager::SWITCHER,
728 - 'label_on' => esc_html__( 'On', 'elementor' ),
729 - 'label_off' => esc_html__( 'Off', 'elementor' ),
730 - 'selectors' => [
731 - "{{WRAPPER}} > .elementor-widget-container{$state}" => '--e-transform-rotateX: 1deg; --e-transform-perspective: 20px;',
732 - ],
733 - 'condition' => [
734 - "_transform_rotate_popover{$tab}!" => '',
735 - ],
736 - ]
737 - );
738 -
739 - $this->add_responsive_control(
740 - "_transform_rotateX_effect{$tab}",
741 - [
742 - 'label' => esc_html__( 'Rotate X', 'elementor' ),
743 - 'type' => Controls_Manager::SLIDER,
744 - 'range' => [
745 - 'px' => [
746 - 'min' => -360,
747 - 'max' => 360,
748 - ],
749 - ],
750 - 'condition' => [
751 - "_transform_rotate_3d{$tab}!" => '',
752 - "_transform_rotate_popover{$tab}!" => '',
753 - ],
754 - 'selectors' => [
755 - "{{WRAPPER}} > .elementor-widget-container{$state}" => '--e-transform-rotateX: {{SIZE}}deg;',
756 - ],
757 - 'frontend_available' => true,
758 - ]
759 - );
760 -
761 - $this->add_responsive_control(
762 - "_transform_rotateY_effect{$tab}",
763 - [
764 - 'label' => esc_html__( 'Rotate Y', 'elementor' ),
765 - 'type' => Controls_Manager::SLIDER,
766 - 'range' => [
767 - 'px' => [
768 - 'min' => -360,
769 - 'max' => 360,
770 - ],
771 - ],
772 - 'condition' => [
773 - "_transform_rotate_3d{$tab}!" => '',
774 - "_transform_rotate_popover{$tab}!" => '',
775 - ],
776 - 'selectors' => [
777 - "{{WRAPPER}} > .elementor-widget-container{$state}" => '--e-transform-rotateY: {{SIZE}}deg;',
778 - ],
779 - 'frontend_available' => true,
780 - ]
781 - );
782 -
783 - $this->add_responsive_control(
784 - "_transform_perspective_effect{$tab}",
785 - [
786 - 'label' => esc_html__( 'Perspective', 'elementor' ),
787 - 'type' => Controls_Manager::SLIDER,
788 - 'range' => [
789 - 'px' => [
790 - 'min' => 0,
791 - 'max' => 1000,
792 - ],
793 - ],
794 - 'condition' => [
795 - "_transform_rotate_popover{$tab}!" => '',
796 - "_transform_rotate_3d{$tab}!" => '',
797 - ],
798 - 'selectors' => [
799 - "{{WRAPPER}} > .elementor-widget-container{$state}" => '--e-transform-perspective: {{SIZE}}px',
800 - ],
801 - 'frontend_available' => true,
802 - ]
803 - );
804 -
805 - $this->end_popover();
806 -
807 - $this->add_control(
808 - "_transform_translate_popover{$tab}",
809 - [
810 - 'label' => esc_html__( 'Offset', 'elementor' ),
811 - 'type' => Controls_Manager::POPOVER_TOGGLE,
812 - 'prefix_class' => $transform_prefix_class,
813 - 'return_value' => $transform_return_value,
814 - ]
815 - );
816 -
817 - $this->start_popover();
818 -
819 - $this->add_responsive_control(
820 - "_transform_translateX_effect{$tab}",
821 - [
822 - 'label' => esc_html__( 'Offset X', 'elementor' ),
823 - 'type' => Controls_Manager::SLIDER,
824 - 'size_units' => [ '%', 'px' ],
825 - 'range' => [
826 - '%' => [
827 - 'min' => -100,
828 - 'max' => 100,
829 - ],
830 - 'px' => [
831 - 'min' => -1000,
832 - 'max' => 1000,
833 - ],
834 - ],
835 - 'condition' => [
836 - "_transform_translate_popover{$tab}!" => '',
837 - ],
838 - 'selectors' => [
839 - "{{WRAPPER}} > .elementor-widget-container{$state}" => '--e-transform-translateX: {{SIZE}}{{UNIT}};',
840 - ],
841 - 'frontend_available' => true,
842 - ]
843 - );
844 -
845 - $this->add_responsive_control(
846 - "_transform_translateY_effect{$tab}",
847 - [
848 - 'label' => esc_html__( 'Offset Y', 'elementor' ),
849 - 'type' => Controls_Manager::SLIDER,
850 - 'size_units' => [ '%', 'px' ],
851 - 'range' => [
852 - '%' => [
853 - 'min' => -100,
854 - 'max' => 100,
855 - ],
856 - 'px' => [
857 - 'min' => -1000,
858 - 'max' => 1000,
859 - ],
860 - ],
861 - 'condition' => [
862 - "_transform_translate_popover{$tab}!" => '',
863 - ],
864 - 'selectors' => [
865 - "{{WRAPPER}} > .elementor-widget-container{$state}" => '--e-transform-translateY: {{SIZE}}{{UNIT}};',
866 - ],
867 - 'frontend_available' => true,
868 - ]
869 - );
870 -
871 - $this->end_popover();
872 -
873 - $this->add_control(
874 - "_transform_scale_popover{$tab}",
875 - [
876 - 'label' => esc_html__( 'Scale', 'elementor' ),
877 - 'type' => Controls_Manager::POPOVER_TOGGLE,
878 - 'prefix_class' => $transform_prefix_class,
879 - 'return_value' => $transform_return_value,
880 - ]
881 - );
882 -
883 - $this->start_popover();
884 -
885 - $this->add_control(
886 - "_transform_keep_proportions{$tab}",
887 - [
888 - 'label' => esc_html__( 'Keep Proportions', 'elementor' ),
889 - 'type' => Controls_Manager::SWITCHER,
890 - 'label_on' => esc_html__( 'On', 'elementor' ),
891 - 'label_off' => esc_html__( 'Off', 'elementor' ),
892 - 'default' => 'yes',
893 - ]
894 - );
895 -
896 - $this->add_responsive_control(
897 - "_transform_scale_effect{$tab}",
898 - [
899 - 'label' => esc_html__( 'Scale', 'elementor' ),
900 - 'type' => Controls_Manager::SLIDER,
901 - 'range' => [
902 - 'px' => [
903 - 'min' => 0,
904 - 'max' => 2,
905 - 'step' => 0.1,
906 - ],
907 - ],
908 - 'condition' => [
909 - "_transform_scale_popover{$tab}!" => '',
910 - "_transform_keep_proportions{$tab}!" => '',
911 - ],
912 - 'selectors' => [
913 - "{{WRAPPER}} > .elementor-widget-container{$state}" => '--e-transform-scale: {{SIZE}};',
914 - ],
915 - 'frontend_available' => true,
916 - ]
917 - );
918 -
919 - $this->add_responsive_control(
920 - "_transform_scaleX_effect{$tab}",
921 - [
922 - 'label' => esc_html__( 'Scale X', 'elementor' ),
923 - 'type' => Controls_Manager::SLIDER,
924 - 'range' => [
925 - 'px' => [
926 - 'min' => 0,
927 - 'max' => 2,
928 - 'step' => 0.1,
929 - ],
930 - ],
931 - 'condition' => [
932 - "_transform_scale_popover{$tab}!" => '',
933 - "_transform_keep_proportions{$tab}" => '',
934 - ],
935 - 'selectors' => [
936 - "{{WRAPPER}} > .elementor-widget-container{$state}" => '--e-transform-scaleX: {{SIZE}};',
937 - ],
938 - 'frontend_available' => true,
939 - ]
940 - );
941 -
942 - $this->add_responsive_control(
943 - "_transform_scaleY_effect{$tab}",
944 - [
945 - 'label' => esc_html__( 'Scale Y', 'elementor' ),
946 - 'type' => Controls_Manager::SLIDER,
947 - 'range' => [
948 - 'px' => [
949 - 'min' => 0,
950 - 'max' => 2,
951 - 'step' => 0.1,
952 - ],
953 - ],
954 - 'condition' => [
955 - "_transform_scale_popover{$tab}!" => '',
956 - "_transform_keep_proportions{$tab}" => '',
957 - ],
958 - 'selectors' => [
959 - "{{WRAPPER}} > .elementor-widget-container{$state}" => '--e-transform-scaleY: {{SIZE}};',
960 - ],
961 - 'frontend_available' => true,
962 - ]
963 - );
964 -
965 - $this->end_popover();
966 -
967 - $this->add_control(
968 - "_transform_skew_popover{$tab}",
969 - [
970 - 'label' => esc_html__( 'Skew', 'elementor' ),
971 - 'type' => Controls_Manager::POPOVER_TOGGLE,
972 - 'prefix_class' => $transform_prefix_class,
973 - 'return_value' => $transform_return_value,
974 - ]
975 - );
976 -
977 - $this->start_popover();
978 -
979 - $this->add_responsive_control(
980 - "_transform_skewX_effect{$tab}",
981 - [
982 - 'label' => esc_html__( 'Skew X', 'elementor' ),
983 - 'type' => Controls_Manager::SLIDER,
984 - 'range' => [
985 - 'px' => [
986 - 'min' => -360,
987 - 'max' => 360,
988 - ],
989 - ],
990 - 'condition' => [
991 - "_transform_skew_popover{$tab}!" => '',
992 - ],
993 - 'selectors' => [
994 - "{{WRAPPER}} > .elementor-widget-container{$state}" => '--e-transform-skewX: {{SIZE}}deg;',
995 - ],
996 - 'frontend_available' => true,
997 - ]
998 - );
999 -
1000 - $this->add_responsive_control(
1001 - "_transform_skewY_effect{$tab}",
1002 - [
1003 - 'label' => esc_html__( 'Skew Y', 'elementor' ),
1004 - 'type' => Controls_Manager::SLIDER,
1005 - 'range' => [
1006 - 'px' => [
1007 - 'min' => -360,
1008 - 'max' => 360,
1009 - ],
1010 - ],
1011 - 'condition' => [
1012 - "_transform_skew_popover{$tab}!" => '',
1013 - ],
1014 - 'selectors' => [
1015 - "{{WRAPPER}} > .elementor-widget-container{$state}" => '--e-transform-skewY: {{SIZE}}deg;',
1016 - ],
1017 - 'frontend_available' => true,
1018 - ]
1019 - );
1020 -
1021 - $this->end_popover();
1022 -
1023 - $this->add_control(
1024 - "_transform_flipX_effect{$tab}",
1025 - [
1026 - 'label' => esc_html__( 'Flip Horizontal', 'elementor' ),
1027 - 'type' => Controls_Manager::CHOOSE,
1028 - 'options' => [
1029 - 'transform' => [
1030 - 'title' => esc_html__( 'Flip Horizontal', 'elementor' ),
1031 - 'icon' => 'eicon-flip eicon-tilted',
1032 - ],
1033 - ],
1034 - 'prefix_class' => $transform_prefix_class,
1035 - 'selectors' => [
1036 - "{{WRAPPER}} > .elementor-widget-container{$state}" => '--e-transform-flipX: -1',
1037 - ],
1038 - 'frontend_available' => true,
1039 - ]
1040 - );
1041 -
1042 - $this->add_control(
1043 - "_transform_flipY_effect{$tab}",
1044 - [
1045 - 'label' => esc_html__( 'Flip Vertical', 'elementor' ),
1046 - 'type' => Controls_Manager::CHOOSE,
1047 - 'options' => [
1048 - 'transform' => [
1049 - 'title' => esc_html__( 'Flip Vertical', 'elementor' ),
1050 - 'icon' => 'eicon-flip',
1051 - ],
1052 - ],
1053 - 'prefix_class' => $transform_prefix_class,
1054 - 'selectors' => [
1055 - "{{WRAPPER}} > .elementor-widget-container{$state}" => '--e-transform-flipY: -1',
1056 - ],
1057 - 'frontend_available' => true,
1058 - ]
1059 - );
1060 -
1061 - if ( '_hover' === $tab ) {
1062 - $this->add_control(
1063 - '_transform_transition_hover',
1064 - [
1065 - 'label' => esc_html__( 'Transition Duration (ms)', 'elementor' ),
1066 - 'type' => Controls_Manager::SLIDER,
1067 - 'range' => [
1068 - 'px' => [
1069 - 'min' => 100,
1070 - 'max' => 10000,
1071 - ],
1072 - ],
1073 - 'selectors' => [
1074 - '{{WRAPPER}} > .elementor-widget-container' => '--e-transform-transition-duration: {{SIZE}}ms',
1075 - ],
1076 - ]
1077 - );
1078 - }
1079 -
1080 - ${"transform_origin_conditions{$tab}"} = [
1081 - [
1082 - 'name' => "_transform_scale_popover{$tab}",
1083 - 'operator' => '!=',
1084 - 'value' => '',
1085 - ],
1086 - [
1087 - 'name' => "_transform_rotate_popover{$tab}",
1088 - 'operator' => '!=',
1089 - 'value' => '',
1090 - ],
1091 - [
1092 - 'name' => "_transform_flipX_effect{$tab}",
1093 - 'operator' => '!=',
1094 - 'value' => '',
1095 - ],
1096 - [
1097 - 'name' => "_transform_flipY_effect{$tab}",
1098 - 'operator' => '!=',
1099 - 'value' => '',
1100 - ],
1101 - ];
1102 -
1103 - $this->end_controls_tab();
1104 - }
1105 -
1106 - $this->end_controls_tabs();
1107 -
1108 - $transform_origin_conditions = [
1109 - 'relation' => 'or',
1110 - 'terms' => array_merge( $transform_origin_conditions, $transform_origin_conditions_hover ),
1111 - ];
1112 -
1113 - // Will override motion effect transform-origin
1114 - $this->add_responsive_control(
1115 - 'motion_fx_transform_x_anchor_point',
1116 - [
1117 - 'label' => esc_html__( 'X Anchor Point', 'elementor' ),
1118 - 'type' => Controls_Manager::CHOOSE,
1119 - 'options' => [
1120 - 'left' => [
1121 - 'title' => esc_html__( 'Left', 'elementor' ),
1122 - 'icon' => 'eicon-h-align-left',
1123 - ],
1124 - 'center' => [
1125 - 'title' => esc_html__( 'Center', 'elementor' ),
1126 - 'icon' => 'eicon-h-align-center',
1127 - ],
1128 - 'right' => [
1129 - 'title' => esc_html__( 'Right', 'elementor' ),
1130 - 'icon' => 'eicon-h-align-right',
1131 - ],
1132 - ],
1133 - 'conditions' => $transform_origin_conditions,
1134 - 'separator' => 'before',
1135 - 'selectors' => [
1136 - '{{WRAPPER}}' => '--e-transform-origin-x: {{VALUE}}',
1137 - ],
1138 - ]
1139 - );
1140 -
1141 - // Will override motion effect transform-origin
1142 - $this->add_responsive_control(
1143 - 'motion_fx_transform_y_anchor_point',
1144 - [
1145 - 'label' => esc_html__( 'Y Anchor Point', 'elementor' ),
1146 - 'type' => Controls_Manager::CHOOSE,
1147 - 'options' => [
1148 - 'top' => [
1149 - 'title' => esc_html__( 'Top', 'elementor' ),
1150 - 'icon' => 'eicon-v-align-top',
1151 - ],
1152 - 'center' => [
1153 - 'title' => esc_html__( 'Center', 'elementor' ),
1154 - 'icon' => 'eicon-v-align-middle',
1155 - ],
1156 - 'bottom' => [
1157 - 'title' => esc_html__( 'Bottom', 'elementor' ),
1158 - 'icon' => 'eicon-v-align-bottom',
1159 - ],
1160 - ],
1161 - 'conditions' => $transform_origin_conditions,
1162 - 'selectors' => [
1163 - '{{WRAPPER}}' => '--e-transform-origin-y: {{VALUE}}',
1164 - ],
1165 - ]
1166 - );
1167 -
1168 - $this->end_controls_section();
1169 - }
1170 -
1171 - /**
1172 - * Register the Background section.
666 + /** Register the Background section.
1173 667 *
1174 668 * @return void
1175 669 */
1176 670 private function register_background_section() {
@@ -1195,8 +689,17 @@
1195 689 Group_Control_Background::get_type(),
1196 690 [
1197 691 'name' => '_background',
1198 692 'selector' => '{{WRAPPER}} > .elementor-widget-container',
693 + 'fields_options' => [
694 + 'image' => [
695 + 'background_lazyload' => [
696 + 'active' => true,
697 + 'keys' => [ '_background_image', 'url' ],
698 + 'selector' => '.elementor-widget-container',
699 + ],
700 + ],
701 + ],
1199 702 ]
1200 703 );
1201 704
1202 705 $this->end_controls_tab();
@@ -1314,9 +817,9 @@
1314 817 '_border_radius_hover',
1315 818 [
1316 819 'label' => esc_html__( 'Border Radius', 'elementor' ),
1317 820 'type' => Controls_Manager::DIMENSIONS,
1318 - 'size_units' => [ 'px', '%' ],
821 + 'size_units' => [ 'px', '%', 'em' ],
1319 822 'selectors' => [
1320 823 '{{WRAPPER}}:hover > .elementor-widget-container' => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
1321 824 ],
1322 825 ]