PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.5.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.5.0
4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Integrations / Elementor / Widgets / Quantity.php
surecart / app / src / Integrations / Elementor / Widgets Last commit date
AddToCartButton.php 3 months ago CartMenuIcon.php 1 year ago CollectionTags.php 1 year ago Media.php 1 year ago PriceChooser.php 1 year ago Product.php 1 year ago ProductCard.php 1 year ago ProductContent.php 7 months ago ProductLineItemNote.php 10 months ago ProductPricing.php 1 year ago ProductQuickAddButton.php 7 months ago ProductReviewAverageRatingStars.php 4 months ago ProductReviewAverageRatingValue.php 4 months ago ProductReviewBreakdown.php 4 months ago ProductReviewContent.php 4 months ago ProductReviewList.php 2 months ago ProductReviewRating.php 4 months ago ProductReviewTotalRating.php 4 months ago ProductReviews.php 4 months ago Quantity.php 1 year ago ReusableFormWidget.php 1 year ago SaleBadge.php 1 year ago SelectedPriceAdHocAmount.php 1 year ago VariantPills.php 6 months ago
Quantity.php
322 lines
1 <?php
2
3 namespace SureCart\Integrations\Elementor\Widgets;
4
5 if ( ! defined( 'ABSPATH' ) ) {
6 exit; // Exit if accessed directly.
7 }
8
9 /**
10 * Quantity widget.
11 */
12 class Quantity extends \Elementor\Widget_Base {
13 /**
14 * Get widget name.
15 *
16 * @return string
17 */
18 public function get_name() {
19 return 'surecart-quantity';
20 }
21
22 /**
23 * Get widget title.
24 *
25 * @return string
26 */
27 public function get_title() {
28 return esc_html__( 'Quantity', 'surecart' );
29 }
30
31 /**
32 * Get widget icon.
33 *
34 * @return string
35 */
36 public function get_icon() {
37 return 'eicon-plus';
38 }
39
40 /**
41 * Get the widget keywords.
42 *
43 * @return array
44 */
45 public function get_keywords() {
46 return array( 'surecart', 'quantity', 'cart' );
47 }
48
49 /**
50 * Get the widget categories.
51 *
52 * @return array
53 */
54 public function get_categories() {
55 return array( 'surecart-elementor-elements' );
56 }
57
58 /**
59 * Get style dependencies.
60 *
61 * @return array
62 */
63 public function get_style_depends() {
64 return array( 'surecart-quantity-selector', 'surecart-input-group' );
65 }
66
67 /**
68 * Register the widget content settings.
69 *
70 * @return void
71 */
72 private function register_content_settings() {
73 $this->start_controls_section(
74 'section_content',
75 [
76 'label' => esc_html__( 'Content', 'surecart' ),
77 ]
78 );
79
80 $this->add_control(
81 'label',
82 [
83 'label' => esc_html__( 'Label', 'surecart' ),
84 'type' => \Elementor\Controls_Manager::TEXT,
85 'placeholder' => esc_html__( 'Quantity', 'surecart' ),
86 'default' => esc_html__( 'Quantity', 'surecart' ),
87 ]
88 );
89
90 $this->end_controls_section();
91 }
92
93 /**
94 * Register the widget style settings.
95 *
96 * @return void
97 */
98 private function register_style_settings() {
99 $selector = '{{WRAPPER}} .wp-block-surecart-product-quantity';
100 $label_selector = $selector . ' .sc-form-label';
101 $input_selector = $selector . ' .sc-quantity-selector';
102
103 $this->start_controls_section(
104 'section_quantity_label_style',
105 array(
106 'label' => esc_html__( 'Label', 'surecart' ),
107 'tab' => \Elementor\Controls_Manager::TAB_STYLE,
108 )
109 );
110
111 $this->add_control(
112 'quantity_text_color',
113 array(
114 'label' => esc_html__( 'Text Color', 'surecart' ),
115 'type' => \Elementor\Controls_Manager::COLOR,
116 'selectors' => array(
117 $selector => 'color: {{VALUE}}',
118 $label_selector => 'color: {{VALUE}}',
119 ),
120 )
121 );
122
123 $this->add_group_control(
124 \Elementor\Group_Control_Typography::get_type(),
125 array(
126 'name' => 'quantity_typography',
127 'label' => esc_html__( 'Typography', 'surecart' ),
128 'selector' => $label_selector,
129 )
130 );
131
132 $this->end_controls_section();
133
134 $this->start_controls_section(
135 'section_quantity_input_style',
136 array(
137 'label' => esc_html__( 'Input', 'surecart' ),
138 'tab' => \Elementor\Controls_Manager::TAB_STYLE,
139 )
140 );
141 $this->add_group_control(
142 \Elementor\Group_Control_Typography::get_type(),
143 array(
144 'name' => 'input_typography',
145 'label' => esc_html__( 'Typography', 'surecart' ),
146 'selector' => $input_selector,
147 )
148 );
149
150 $this->add_responsive_control(
151 'quantity_width',
152 array(
153 'label' => esc_html__( 'Width', 'surecart' ),
154 'type' => \Elementor\Controls_Manager::SLIDER,
155 'size_units' => [ 'px', 'em', '%' ],
156 'range' => [
157 'px' => [
158 'min' => 0,
159 'max' => 1000,
160 ],
161 'em' => [
162 'min' => 0,
163 'max' => 100,
164 ],
165 ],
166 'selectors' => array(
167 $input_selector => 'width: {{SIZE}}{{UNIT}};',
168 ),
169 )
170 );
171
172 $this->add_group_control(
173 \Elementor\Group_Control_Border::get_type(),
174 [
175 'name' => 'selected_amount_border',
176 'selector' => $input_selector,
177 ]
178 );
179
180 $this->add_control(
181 'quantity_border_radius',
182 array(
183 'label' => esc_html__( 'Border Radius', 'surecart' ),
184 'type' => \Elementor\Controls_Manager::DIMENSIONS,
185 'size_units' => [ 'px', 'em', '%' ],
186 'selectors' => array(
187 $input_selector => 'border-radius: {{TOP}}{{UNIT}} {{RIGHT}}{{UNIT}} {{BOTTOM}}{{UNIT}} {{LEFT}}{{UNIT}};',
188 ),
189 )
190 );
191
192 $this->end_controls_section();
193 }
194
195 /**
196 * Register the widget controls.
197 *
198 * @return void
199 */
200 protected function register_controls() {
201 $this->register_content_settings();
202 $this->register_style_settings();
203 }
204
205 /**
206 * Render the widget output on the frontend.
207 *
208 * @return void
209 */
210 protected function render() {
211 $settings = $this->get_settings_for_display();
212
213 if ( \Elementor\Plugin::$instance->editor->is_edit_mode() ) {
214 ?>
215 <div class="wp-block-surecart-product-quantity">
216 <label class="sc-form-label"><?php echo esc_html( $settings['label'] ); ?></label>
217 <div
218 class="sc-input-group sc-quantity-selector"
219 >
220 <div class="sc-input-group-text sc-quantity-selector__decrease">
221 <svg
222 xmlns="http://www.w3.org/2000/svg"
223 width="24"
224 height="24"
225 viewBox="0 0 24 24"
226 fill="none"
227 stroke="currentColor"
228 stroke-width="2"
229 stroke-linecap="round"
230 stroke-linejoin="round"
231 >
232 <line x1="5" y1="12" x2="19" y2="12" />
233 </svg>
234 </div>
235 <input
236 class="sc-form-control sc-quantity-selector__control"
237 value="1"
238 type="number"
239 />
240 <div class="sc-input-group-text sc-quantity-selector__increase">
241 <svg
242 xmlns="http://www.w3.org/2000/svg"
243 width="24"
244 height="24"
245 viewBox="0 0 24 24"
246 fill="none"
247 stroke="currentColor"
248 stroke-width="2"
249 stroke-linecap="round"
250 stroke-linejoin="round"
251 >
252 <line x1="12" y1="5" x2="12" y2="19" />
253 <line x1="5" y1="12" x2="19" y2="12" />
254 </svg>
255 </div>
256 </div>
257 </div>
258 <?php
259 return;
260 }
261
262 ?>
263 <div <?php $this->print_render_attribute_string( 'wrapper' ); ?>>
264 <!-- wp:surecart/product-quantity { "label" : "<?php echo esc_attr( $settings['label'] ); ?>"} /-->
265 </div>
266 <?php
267 }
268
269 /**
270 * Render the widget output on the editor.
271 *
272 * @return void
273 */
274 protected function content_template() {
275 ?>
276 <div class="wp-block-surecart-product-quantity">
277 <label class="sc-form-label">{{{ settings.label }}}</label>
278 <div
279 class="sc-input-group sc-quantity-selector"
280 >
281 <div class="sc-input-group-text sc-quantity-selector__decrease">
282 <svg
283 xmlns="http://www.w3.org/2000/svg"
284 width="24"
285 height="24"
286 viewBox="0 0 24 24"
287 fill="none"
288 stroke="currentColor"
289 stroke-width="2"
290 stroke-linecap="round"
291 stroke-linejoin="round"
292 >
293 <line x1="5" y1="12" x2="19" y2="12" />
294 </svg>
295 </div>
296 <input
297 class="sc-form-control sc-quantity-selector__control"
298 value={0}
299 type="number"
300 />
301 <div class="sc-input-group-text sc-quantity-selector__increase">
302 <svg
303 xmlns="http://www.w3.org/2000/svg"
304 width="24"
305 height="24"
306 viewBox="0 0 24 24"
307 fill="none"
308 stroke="currentColor"
309 stroke-width="2"
310 stroke-linecap="round"
311 stroke-linejoin="round"
312 >
313 <line x1="12" y1="5" x2="12" y2="19" />
314 <line x1="5" y1="12" x2="19" y2="12" />
315 </svg>
316 </div>
317 </div>
318 </div>
319 <?php
320 }
321 }
322