Elementor Essential Addons - Version 2.9.4

Version Description

  • Product Grid layout issue fixed
  • Few minor bugfix and improvements
Download this release

Release Info

Developer re_enter_rupok
Plugin Icon 128x128 Elementor Essential Addons
Version 2.9.4
Comparing to
See all releases

Code changes from version 2.9.3 to 2.9.4

assets/css/essential-addons-elementor.css CHANGED
@@ -1340,6 +1340,102 @@ span.eael-testimonial-quote {
1340
  /*--------------------------*/
1341
  /* 09. Product Styles
1342
  /*--------------------------*/
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1343
  .eael-product-grid.eael-product-simple .woocommerce ul.products li.product, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product,
1344
  .eael-post-grid.eael-product-simple .woocommerce ul.products li.product,
1345
  .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product {
@@ -1444,17 +1540,16 @@ span.eael-testimonial-quote {
1444
  .eael-product-grid.eael-product-simple .woocommerce ul.products li.product .button.add_to_cart_button, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product .button.add_to_cart_button,
1445
  .eael-post-grid.eael-product-simple .woocommerce ul.products li.product .button.add_to_cart_button,
1446
  .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product .button.add_to_cart_button {
1447
- display: inline-block;
1448
- height: 40px;
1449
  font-size: 14px;
1450
  font-weight: 400;
1451
- line-height: 40px;
1452
  text-align: center;
1453
  text-transform: uppercase;
1454
  color: #fff;
1455
  background-color: #333;
1456
- padding: 0 30px;
1457
- margin: 15px 0;
1458
  -webkit-border-radius: 0;
1459
  border-radius: 0;
1460
  }
@@ -1598,7 +1693,7 @@ span.eael-testimonial-quote {
1598
  }
1599
  .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button:after,
1600
  .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button:after {
1601
- content: '\f217';
1602
  font: normal normal normal 14px/1 FontAwesome;
1603
  font-size: 14px;
1604
  line-height: 38px;
@@ -1614,7 +1709,7 @@ span.eael-testimonial-quote {
1614
  }
1615
  .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button.loading:after,
1616
  .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button.loading:after {
1617
- content: '\f110';
1618
  display: inline-block;
1619
  font: normal normal normal 14px/1 FontAwesome;
1620
  font-size: 14px;
@@ -1634,7 +1729,7 @@ span.eael-testimonial-quote {
1634
  }
1635
  .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart:after,
1636
  .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart:after {
1637
- content: '\f06e';
1638
  font: normal normal normal 14px/1 FontAwesome;
1639
  font-size: 14px;
1640
  line-height: 38px;
1340
  /*--------------------------*/
1341
  /* 09. Product Styles
1342
  /*--------------------------*/
1343
+ .eael-product-grid .woocommerce ul.products,
1344
+ .eael-post-grid .woocommerce ul.products {
1345
+ display: grid;
1346
+ grid-gap: 25px;
1347
+ margin: 0 !important;
1348
+ padding: 0 !important;
1349
+ }
1350
+ .eael-product-grid .woocommerce ul.products:before, .eael-product-grid .woocommerce ul.products:after,
1351
+ .eael-post-grid .woocommerce ul.products:before,
1352
+ .eael-post-grid .woocommerce ul.products:after {
1353
+ display: none;
1354
+ }
1355
+ .eael-product-grid .woocommerce ul.products .product,
1356
+ .eael-post-grid .woocommerce ul.products .product {
1357
+ width: 100%;
1358
+ margin: 0;
1359
+ padding: 0;
1360
+ }
1361
+ .eael-product-grid .woocommerce ul.products.eael-product-columns-1,
1362
+ .eael-post-grid .woocommerce ul.products.eael-product-columns-1 {
1363
+ grid-template-columns: 100%;
1364
+ }
1365
+ .eael-product-grid .woocommerce ul.products.eael-product-columns-2,
1366
+ .eael-post-grid .woocommerce ul.products.eael-product-columns-2 {
1367
+ grid-template-columns: repeat(2, 1fr);
1368
+ }
1369
+ @media screen and (max-width: 480px) {
1370
+ .eael-product-grid .woocommerce ul.products.eael-product-columns-2,
1371
+ .eael-post-grid .woocommerce ul.products.eael-product-columns-2 {
1372
+ grid-template-columns: repeat(1, 1fr);
1373
+ }
1374
+ }
1375
+ .eael-product-grid .woocommerce ul.products.eael-product-columns-3,
1376
+ .eael-post-grid .woocommerce ul.products.eael-product-columns-3 {
1377
+ grid-template-columns: repeat(3, 1fr);
1378
+ }
1379
+ @media screen and (max-width: 767px) {
1380
+ .eael-product-grid .woocommerce ul.products.eael-product-columns-3,
1381
+ .eael-post-grid .woocommerce ul.products.eael-product-columns-3 {
1382
+ grid-template-columns: repeat(2, 1fr);
1383
+ }
1384
+ }
1385
+ @media screen and (max-width: 480px) {
1386
+ .eael-product-grid .woocommerce ul.products.eael-product-columns-3,
1387
+ .eael-post-grid .woocommerce ul.products.eael-product-columns-3 {
1388
+ grid-template-columns: repeat(1, 1fr);
1389
+ }
1390
+ }
1391
+ .eael-product-grid .woocommerce ul.products.eael-product-columns-4,
1392
+ .eael-post-grid .woocommerce ul.products.eael-product-columns-4 {
1393
+ grid-template-columns: repeat(4, 1fr);
1394
+ }
1395
+ @media screen and (max-width: 767px) {
1396
+ .eael-product-grid .woocommerce ul.products.eael-product-columns-4,
1397
+ .eael-post-grid .woocommerce ul.products.eael-product-columns-4 {
1398
+ grid-template-columns: repeat(2, 1fr);
1399
+ }
1400
+ }
1401
+ @media screen and (max-width: 480px) {
1402
+ .eael-product-grid .woocommerce ul.products.eael-product-columns-4,
1403
+ .eael-post-grid .woocommerce ul.products.eael-product-columns-4 {
1404
+ grid-template-columns: repeat(1, 1fr);
1405
+ }
1406
+ }
1407
+ .eael-product-grid .woocommerce ul.products.eael-product-columns-5,
1408
+ .eael-post-grid .woocommerce ul.products.eael-product-columns-5 {
1409
+ grid-template-columns: repeat(5, 1fr);
1410
+ }
1411
+ @media screen and (max-width: 767px) {
1412
+ .eael-product-grid .woocommerce ul.products.eael-product-columns-5,
1413
+ .eael-post-grid .woocommerce ul.products.eael-product-columns-5 {
1414
+ grid-template-columns: repeat(2, 1fr);
1415
+ }
1416
+ }
1417
+ @media screen and (max-width: 480px) {
1418
+ .eael-product-grid .woocommerce ul.products.eael-product-columns-5,
1419
+ .eael-post-grid .woocommerce ul.products.eael-product-columns-5 {
1420
+ grid-template-columns: repeat(1, 1fr);
1421
+ }
1422
+ }
1423
+ .eael-product-grid .woocommerce ul.products.eael-product-columns-6,
1424
+ .eael-post-grid .woocommerce ul.products.eael-product-columns-6 {
1425
+ grid-template-columns: repeat(6, 1fr);
1426
+ }
1427
+ @media screen and (max-width: 767px) {
1428
+ .eael-product-grid .woocommerce ul.products.eael-product-columns-6,
1429
+ .eael-post-grid .woocommerce ul.products.eael-product-columns-6 {
1430
+ grid-template-columns: repeat(2, 1fr);
1431
+ }
1432
+ }
1433
+ @media screen and (max-width: 480px) {
1434
+ .eael-product-grid .woocommerce ul.products.eael-product-columns-6,
1435
+ .eael-post-grid .woocommerce ul.products.eael-product-columns-6 {
1436
+ grid-template-columns: repeat(1, 1fr);
1437
+ }
1438
+ }
1439
  .eael-product-grid.eael-product-simple .woocommerce ul.products li.product, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product,
1440
  .eael-post-grid.eael-product-simple .woocommerce ul.products li.product,
1441
  .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product {
1540
  .eael-product-grid.eael-product-simple .woocommerce ul.products li.product .button.add_to_cart_button, .eael-product-grid.eael-product-reveal .woocommerce ul.products li.product .button.add_to_cart_button,
1541
  .eael-post-grid.eael-product-simple .woocommerce ul.products li.product .button.add_to_cart_button,
1542
  .eael-post-grid.eael-product-reveal .woocommerce ul.products li.product .button.add_to_cart_button {
1543
+ display: block;
 
1544
  font-size: 14px;
1545
  font-weight: 400;
1546
+ line-height: 38px;
1547
  text-align: center;
1548
  text-transform: uppercase;
1549
  color: #fff;
1550
  background-color: #333;
1551
+ padding: 0;
1552
+ margin: 15px;
1553
  -webkit-border-radius: 0;
1554
  border-radius: 0;
1555
  }
1693
  }
1694
  .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button:after,
1695
  .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button:after {
1696
+ content: "\f217";
1697
  font: normal normal normal 14px/1 FontAwesome;
1698
  font-size: 14px;
1699
  line-height: 38px;
1709
  }
1710
  .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button.loading:after,
1711
  .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .add_to_cart_button.loading:after {
1712
+ content: "\f110";
1713
  display: inline-block;
1714
  font: normal normal normal 14px/1 FontAwesome;
1715
  font-size: 14px;
1729
  }
1730
  .eael-product-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart:after,
1731
  .eael-post-grid.eael-product-overlay .woocommerce ul.products li.product .overlay .added_to_cart:after {
1732
+ content: "\f06e";
1733
  font: normal normal normal 14px/1 FontAwesome;
1734
  font-size: 14px;
1735
  line-height: 38px;
assets/sass/_woo-products.scss CHANGED
@@ -1,370 +1,444 @@
1
  /*--------------------------*/
2
  /* 09. Product Styles
3
  /*--------------------------*/
 
4
  .eael-product-grid,
5
  .eael-post-grid {
6
- // simple & reveal style
7
- &.eael-product-simple,
8
- &.eael-product-reveal {
9
- .woocommerce {
10
- ul.products {
11
- li.product {
12
- position: relative;
13
- float: left;
14
- overflow: hidden;
15
- text-align: center;
16
- padding: 0;
17
- border-radius: 0;
18
- background-color: #fff;
19
- box-shadow: none;
20
-
21
- a {
22
- text-decoration: none;
23
-
24
- &:hover {
25
- outline: none;
26
- box-shadow: none;
27
- }
28
- }
29
-
30
- img {
31
- width: 100%;
32
- height: auto;
33
- backface-visibility: hidden;
34
- }
35
-
36
- // product title
37
- .woocommerce-loop-product__title {
38
- font-size: 16px;
39
- font-weight: 700;
40
- line-height: 1;
41
- color: #333;
42
- margin: 25px 0 12px;
43
- padding: 0;
44
- }
45
-
46
- // onsale
47
- .onsale {
48
- display: block;
49
- line-height: 170px;
50
- font-size: 13px;
51
- text-align: center;
52
- letter-spacing: 0;
53
- text-shadow: 0 1px 1px rgba(0,0,0,.6);
54
- text-transform: uppercase;
55
- color: #fff;
56
- background-color: #ff2a13;
57
- border-radius: 0;
58
- border: none;
59
- box-shadow: none;
60
- position: absolute;
61
- height: 100px;
62
- width: 200px;
63
- z-index: 1;
64
- left: -100px;
65
- top: -50px;
66
- right: auto;
67
- margin: 0;
68
- padding: 0;
69
- transform: rotate(-45deg);
70
- }
71
-
72
- .price {
73
- font-size: 14px;
74
- margin-bottom: 0;
75
-
76
- del {
77
- opacity: 0.5;
78
- display: inline-block;
79
- }
80
-
81
- ins {
82
- font-weight: 400;
83
- background-color: transparent;
84
- color: #ff2a13;
85
- }
86
- }
87
-
88
-
89
- // star rating
90
- .star-rating {
91
- display: block;
92
- float: none;
93
- font-size: 14px;
94
- margin: 10px auto;
95
- }
96
-
97
- // add to cart button
98
- .button.add_to_cart_button {
99
- display: inline-block;
100
- height: 40px;
101
- font-size: 14px;
102
- font-weight: 400;
103
- line-height: 40px;
104
- text-align: center;
105
- text-transform: uppercase;
106
- color: #fff;
107
- background-color: #333;
108
- padding: 0 30px;
109
- margin: 15px 0;
110
- border-radius: 0;
111
-
112
- &:focus {
113
- outline: none;
114
- }
115
- }
116
-
117
- a.added_to_cart {
118
- display: block;
119
- margin: 0 0 15px 0;
120
- padding: 0;
121
- font-size: 14px;
122
- line-height: 1;
123
- text-transform: capitalize;
124
- color: #333;
125
- background-color: transparent;
126
- }
127
- }
128
- }
129
- }
130
- }
131
-
132
- // simple style
133
- &.eael-product-simple {
134
- .woocommerce {
135
- ul.products {
136
- li.product {
137
- border: 1px solid #eee;
138
- }
139
- }
140
- }
141
- }
142
-
143
- // reveal style
144
- &.eael-product-reveal {
145
- .woocommerce {
146
- ul.products {
147
- li.product {
148
- border: 1px solid transparent;
149
-
150
- .button.add_to_cart_button,
151
- a.added_to_cart {
152
- visibility: hidden;
153
- transition: none;
154
- }
155
-
156
- &:hover {
157
- border: 1px solid #eee;
158
-
159
- .button.add_to_cart_button,
160
- a.added_to_cart {
161
- visibility: visible;
162
- }
163
- }
164
- }
165
- }
166
- }
167
- }
168
-
169
- // overlay style
170
- &.eael-product-overlay {
171
- .woocommerce {
172
- ul.products {
173
- li.product {
174
- position: relative;
175
- float: left;
176
- overflow: hidden;
177
- text-align: center;
178
- padding: 0 0 15px 0;
179
- border-radius: 0;
180
- background-color: #fff;
181
- box-shadow: none;
182
-
183
- a {
184
- text-decoration: none;
185
-
186
- &:hover {
187
- outline: none;
188
- box-shadow: none;
189
- }
190
- }
191
-
192
- img {
193
- width: 100%;
194
- height: auto;
195
- margin: 0;
196
- backface-visibility: hidden;
197
- }
198
-
199
- .overlay {
200
- position: relative;
201
- overflow: hidden;
202
- line-height: 0;
203
-
204
- .button-wrap {
205
- position: absolute;
206
- top: 50%;
207
- left: 0;
208
- right: 0;
209
- text-align: center;
210
- transform: translateY(-50%);
211
- }
212
-
213
- .product-link,
214
- .add_to_cart_button,
215
- .added_to_cart {
216
- display: inline-block;
217
- font-size: 14px;
218
- line-height: 38px;
219
- text-align: center;
220
- color: #fff;
221
- background-color: #333;
222
- width: 38px;
223
- height: 38px;
224
- border-style: none;
225
- border-radius: 50%;
226
- vertical-align: middle;
227
- padding: 0;
228
- margin: 0 5px;
229
- transform: translateY(20px);
230
- opacity: 0;
231
- transition: transform 200ms, opacity 300ms;
232
-
233
- &:focus {
234
- outline: none;
235
- }
236
- }
237
-
238
- .add_to_cart_button {
239
- font-size: 0;
240
- &:before {
241
- display: none;
242
- }
243
-
244
- &:after {
245
- content: '\f217';
246
- font: normal normal normal 14px/1 FontAwesome;
247
- font-size: 14px;
248
- line-height: 38px;
249
- text-rendering: auto;
250
- -webkit-font-smoothing: antialiased;
251
- vertical-align: middle;
252
- margin: 0;
253
- padding: 0;
254
- }
255
-
256
- &.loading {
257
- &:before {
258
- display: none;
259
- }
260
- &:after {
261
- content: '\f110';
262
- display: inline-block;
263
- font: normal normal normal 14px/1 FontAwesome;
264
- font-size: 14px;
265
- line-height: 38px;
266
- color: #fff;
267
- height: auto;
268
- width: auto;
269
- position: relative;
270
- top: 0;
271
- left: 0;
272
- margin: 0;
273
- padding: 0;
274
- }
275
- }
276
- }
277
-
278
- .added_to_cart {
279
- font-size: 0;
280
-
281
- &:after {
282
- content: '\f06e';
283
- font: normal normal normal 14px/1 FontAwesome;
284
- font-size: 14px;
285
- line-height: 38px;
286
- color: #fff;
287
- text-rendering: auto;
288
- -webkit-font-smoothing: antialiased;
289
- vertical-align: middle;
290
- margin: 0;
291
- padding: 0;
292
- }
293
- }
294
- }
295
-
296
- // product title
297
- .woocommerce-loop-product__title {
298
- font-size: 16px;
299
- font-weight: 700;
300
- line-height: 1;
301
- color: #333;
302
- margin: 25px 0 12px;
303
- padding: 0;
304
- }
305
-
306
- // onsale
307
- .onsale {
308
- display: block;
309
- line-height: 170px;
310
- font-size: 13px;
311
- text-align: center;
312
- letter-spacing: 0;
313
- text-shadow: 0 1px 1px rgba(0,0,0,.6);
314
- text-transform: uppercase;
315
- color: #fff;
316
- background-color: #ff2a13;
317
- border-radius: 0;
318
- border: none;
319
- box-shadow: none;
320
- position: absolute;
321
- height: 100px;
322
- width: 200px;
323
- z-index: 1;
324
- left: -100px;
325
- top: -50px;
326
- right: auto;
327
- margin: 0;
328
- padding: 0;
329
- transform: rotate(-45deg);
330
- }
331
-
332
- .price {
333
- font-size: 14px;
334
- margin-bottom: 0;
335
-
336
- del {
337
- opacity: 0.5;
338
- display: inline-block;
339
- }
340
-
341
- ins {
342
- font-weight: 400;
343
- background-color: transparent;
344
- color: #ff2a13;
345
- }
346
- }
347
-
348
-
349
- // star rating
350
- .star-rating {
351
- display: block;
352
- float: none;
353
- font-size: 14px;
354
- margin: 10px auto;
355
- }
356
-
357
- &:hover {
358
- .overlay {
359
- a,
360
- .add_to_cart_button {
361
- opacity: 1;
362
- transform: translateY(0);
363
- }
364
- }
365
- }
366
- }
367
- }
368
- }
369
- }
370
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  /*--------------------------*/
2
  /* 09. Product Styles
3
  /*--------------------------*/
4
+
5
  .eael-product-grid,
6
  .eael-post-grid {
7
+ .woocommerce {
8
+ ul.products {
9
+ display: grid;
10
+ grid-gap: 25px;
11
+ margin: 0 !important;
12
+ padding: 0 !important;
13
+
14
+ &:before,
15
+ &:after {
16
+ display: none;
17
+ }
18
+
19
+ .product {
20
+ width: 100%;
21
+ margin: 0;
22
+ padding: 0;
23
+ }
24
+
25
+ &.eael-product-columns-1 {
26
+ grid-template-columns: 100%;
27
+ }
28
+ &.eael-product-columns-2 {
29
+ grid-template-columns: repeat(2, 1fr);
30
+
31
+ @media screen and (max-width: 480px) {
32
+ grid-template-columns: repeat(1, 1fr);
33
+ }
34
+ }
35
+ &.eael-product-columns-3 {
36
+ grid-template-columns: repeat(3, 1fr);
37
+
38
+ @media screen and (max-width: 767px) {
39
+ grid-template-columns: repeat(2, 1fr);
40
+ }
41
+
42
+ @media screen and (max-width: 480px) {
43
+ grid-template-columns: repeat(1, 1fr);
44
+ }
45
+ }
46
+ &.eael-product-columns-4 {
47
+ grid-template-columns: repeat(4, 1fr);
48
+
49
+ @media screen and (max-width: 767px) {
50
+ grid-template-columns: repeat(2, 1fr);
51
+ }
52
+
53
+ @media screen and (max-width: 480px) {
54
+ grid-template-columns: repeat(1, 1fr);
55
+ }
56
+ }
57
+ &.eael-product-columns-5 {
58
+ grid-template-columns: repeat(5, 1fr);
59
+
60
+ @media screen and (max-width: 767px) {
61
+ grid-template-columns: repeat(2, 1fr);
62
+ }
63
+
64
+ @media screen and (max-width: 480px) {
65
+ grid-template-columns: repeat(1, 1fr);
66
+ }
67
+ }
68
+ &.eael-product-columns-6 {
69
+ grid-template-columns: repeat(6, 1fr);
70
+
71
+ @media screen and (max-width: 767px) {
72
+ grid-template-columns: repeat(2, 1fr);
73
+ }
74
+
75
+ @media screen and (max-width: 480px) {
76
+ grid-template-columns: repeat(1, 1fr);
77
+ }
78
+ }
79
+ }
80
+ }
81
+
82
+ // simple & reveal style
83
+ &.eael-product-simple,
84
+ &.eael-product-reveal {
85
+ .woocommerce {
86
+ ul.products {
87
+ li.product {
88
+ position: relative;
89
+ float: left;
90
+ overflow: hidden;
91
+ text-align: center;
92
+ padding: 0;
93
+ border-radius: 0;
94
+ background-color: #fff;
95
+ box-shadow: none;
96
+
97
+ a {
98
+ text-decoration: none;
99
+
100
+ &:hover {
101
+ outline: none;
102
+ box-shadow: none;
103
+ }
104
+ }
105
+
106
+ img {
107
+ width: 100%;
108
+ height: auto;
109
+ backface-visibility: hidden;
110
+ }
111
+
112
+ // product title
113
+ .woocommerce-loop-product__title {
114
+ font-size: 16px;
115
+ font-weight: 700;
116
+ line-height: 1;
117
+ color: #333;
118
+ margin: 25px 0 12px;
119
+ padding: 0;
120
+ }
121
+
122
+ // onsale
123
+ .onsale {
124
+ display: block;
125
+ line-height: 170px;
126
+ font-size: 13px;
127
+ text-align: center;
128
+ letter-spacing: 0;
129
+ text-shadow: 0 1px 1px rgba(0, 0, 0, 0.6);
130
+ text-transform: uppercase;
131
+ color: #fff;
132
+ background-color: #ff2a13;
133
+ border-radius: 0;
134
+ border: none;
135
+ box-shadow: none;
136
+ position: absolute;
137
+ height: 100px;
138
+ width: 200px;
139
+ z-index: 1;
140
+ left: -100px;
141
+ top: -50px;
142
+ right: auto;
143
+ margin: 0;
144
+ padding: 0;
145
+ transform: rotate(-45deg);
146
+ }
147
+
148
+ .price {
149
+ font-size: 14px;
150
+ margin-bottom: 0;
151
+
152
+ del {
153
+ opacity: 0.5;
154
+ display: inline-block;
155
+ }
156
+
157
+ ins {
158
+ font-weight: 400;
159
+ background-color: transparent;
160
+ color: #ff2a13;
161
+ }
162
+ }
163
+
164
+ // star rating
165
+ .star-rating {
166
+ display: block;
167
+ float: none;
168
+ font-size: 14px;
169
+ margin: 10px auto;
170
+ }
171
+
172
+ // add to cart button
173
+ .button.add_to_cart_button {
174
+ display: block;
175
+ font-size: 14px;
176
+ font-weight: 400;
177
+ line-height: 38px;
178
+ text-align: center;
179
+ text-transform: uppercase;
180
+ color: #fff;
181
+ background-color: #333;
182
+ padding: 0;
183
+ margin: 15px;
184
+ border-radius: 0;
185
+
186
+ &:focus {
187
+ outline: none;
188
+ }
189
+ }
190
+
191
+ a.added_to_cart {
192
+ display: block;
193
+ margin: 0 0 15px 0;
194
+ padding: 0;
195
+ font-size: 14px;
196
+ line-height: 1;
197
+ text-transform: capitalize;
198
+ color: #333;
199
+ background-color: transparent;
200
+ }
201
+ }
202
+ }
203
+ }
204
+ }
205
+
206
+ // simple style
207
+ &.eael-product-simple {
208
+ .woocommerce {
209
+ ul.products {
210
+ li.product {
211
+ border: 1px solid #eee;
212
+ }
213
+ }
214
+ }
215
+ }
216
+
217
+ // reveal style
218
+ &.eael-product-reveal {
219
+ .woocommerce {
220
+ ul.products {
221
+ li.product {
222
+ border: 1px solid transparent;
223
+
224
+ .button.add_to_cart_button,
225
+ a.added_to_cart {
226
+ visibility: hidden;
227
+ transition: none;
228
+ }
229
+
230
+ &:hover {
231
+ border: 1px solid #eee;
232
+
233
+ .button.add_to_cart_button,
234
+ a.added_to_cart {
235
+ visibility: visible;
236
+ }
237
+ }
238
+ }
239
+ }
240
+ }
241
+ }
242
+
243
+ // overlay style
244
+ &.eael-product-overlay {
245
+ .woocommerce {
246
+ ul.products {
247
+ li.product {
248
+ position: relative;
249
+ float: left;
250
+ overflow: hidden;
251
+ text-align: center;
252
+ padding: 0 0 15px 0;
253
+ border-radius: 0;
254
+ background-color: #fff;
255
+ box-shadow: none;
256
+
257
+ a {
258
+ text-decoration: none;
259
+
260
+ &:hover {
261
+ outline: none;
262
+ box-shadow: none;
263
+ }
264
+ }
265
+
266
+ img {
267
+ width: 100%;
268
+ height: auto;
269
+ margin: 0;
270
+ backface-visibility: hidden;
271
+ }
272
+
273
+ .overlay {
274
+ position: relative;
275
+ overflow: hidden;
276
+ line-height: 0;
277
+
278
+ .button-wrap {
279
+ position: absolute;
280
+ top: 50%;
281
+ left: 0;
282
+ right: 0;
283
+ text-align: center;
284
+ transform: translateY(-50%);
285
+ }
286
+
287
+ .product-link,
288
+ .add_to_cart_button,
289
+ .added_to_cart {
290
+ display: inline-block;
291
+ font-size: 14px;
292
+ line-height: 38px;
293
+ text-align: center;
294
+ color: #fff;
295
+ background-color: #333;
296
+ width: 38px;
297
+ height: 38px;
298
+ border-style: none;
299
+ border-radius: 50%;
300
+ vertical-align: middle;
301
+ padding: 0;
302
+ margin: 0 5px;
303
+ transform: translateY(20px);
304
+ opacity: 0;
305
+ transition: transform 200ms, opacity 300ms;
306
+
307
+ &:focus {
308
+ outline: none;
309
+ }
310
+ }
311
+
312
+ .add_to_cart_button {
313
+ font-size: 0;
314
+ &:before {
315
+ display: none;
316
+ }
317
+
318
+ &:after {
319
+ content: "\f217";
320
+ font: normal normal normal 14px/1 FontAwesome;
321
+ font-size: 14px;
322
+ line-height: 38px;
323
+ text-rendering: auto;
324
+ -webkit-font-smoothing: antialiased;
325
+ vertical-align: middle;
326
+ margin: 0;
327
+ padding: 0;
328
+ }
329
+
330
+ &.loading {
331
+ &:before {
332
+ display: none;
333
+ }
334
+ &:after {
335
+ content: "\f110";
336
+ display: inline-block;
337
+ font: normal normal normal 14px/1
338
+ FontAwesome;
339
+ font-size: 14px;
340
+ line-height: 38px;
341
+ color: #fff;
342
+ height: auto;
343
+ width: auto;
344
+ position: relative;
345
+ top: 0;
346
+ left: 0;
347
+ margin: 0;
348
+ padding: 0;
349
+ }
350
+ }
351
+ }
352
+
353
+ .added_to_cart {
354
+ font-size: 0;
355
+
356
+ &:after {
357
+ content: "\f06e";
358
+ font: normal normal normal 14px/1 FontAwesome;
359
+ font-size: 14px;
360
+ line-height: 38px;
361
+ color: #fff;
362
+ text-rendering: auto;
363
+ -webkit-font-smoothing: antialiased;
364
+ vertical-align: middle;
365
+ margin: 0;
366
+ padding: 0;
367
+ }
368
+ }
369
+ }
370
+
371
+ // product title
372
+ .woocommerce-loop-product__title {
373
+ font-size: 16px;
374
+ font-weight: 700;
375
+ line-height: 1;
376
+ color: #333;
377
+ margin: 25px 0 12px;
378
+ padding: 0;
379
+ }
380
+
381
+ // onsale
382
+ .onsale {
383
+ display: block;
384
+ line-height: 170px;
385
+ font-size: 13px;
386
+ text-align: center;
387
+ letter-spacing: 0;
388
+ text-shadow: 0 1px 1px rgba(0, 0, 0, 0.6);
389
+ text-transform: uppercase;
390
+ color: #fff;
391
+ background-color: #ff2a13;
392
+ border-radius: 0;
393
+ border: none;
394
+ box-shadow: none;
395
+ position: absolute;
396
+ height: 100px;
397
+ width: 200px;
398
+ z-index: 1;
399
+ left: -100px;
400
+ top: -50px;
401
+ right: auto;
402
+ margin: 0;
403
+ padding: 0;
404
+ transform: rotate(-45deg);
405
+ }
406
+
407
+ .price {
408
+ font-size: 14px;
409
+ margin-bottom: 0;
410
+
411
+ del {
412
+ opacity: 0.5;
413
+ display: inline-block;
414
+ }
415
+
416
+ ins {
417
+ font-weight: 400;
418
+ background-color: transparent;
419
+ color: #ff2a13;
420
+ }
421
+ }
422
+
423
+ // star rating
424
+ .star-rating {
425
+ display: block;
426
+ float: none;
427
+ font-size: 14px;
428
+ margin: 10px auto;
429
+ }
430
+
431
+ &:hover {
432
+ .overlay {
433
+ a,
434
+ .add_to_cart_button {
435
+ opacity: 1;
436
+ transform: translateY(0);
437
+ }
438
+ }
439
+ }
440
+ }
441
+ }
442
+ }
443
+ }
444
+ }
elements/product-grid/product-grid.php CHANGED
@@ -494,7 +494,7 @@ class Widget_Eael_Product_Grid extends Widget_Base {
494
 
495
  echo '<div class="eael-product-grid ' . $grid_layout . '">
496
  <div class="woocommerce">
497
- <ul class="products columns-' . $settings['eael_product_grid_column'] . '">';
498
  $query = new \WP_Query($args);
499
  if ($query->have_posts()) {
500
  while ($query->have_posts()): $query->the_post();
494
 
495
  echo '<div class="eael-product-grid ' . $grid_layout . '">
496
  <div class="woocommerce">
497
+ <ul class="products eael-product-columns-' . $settings['eael_product_grid_column'] . '">';
498
  $query = new \WP_Query($args);
499
  if ($query->have_posts()) {
500
  while ($query->have_posts()): $query->the_post();
essential_adons_elementor.php CHANGED
@@ -4,7 +4,7 @@
4
  * Description: The ultimate elements library for Elementor page builder plugin for WordPress.
5
  * Plugin URI: https://essential-addons.com/elementor/
6
  * Author: WPDeveloper
7
- * Version: 2.9.3
8
  * Author URI: https://wpdeveloper.net/
9
  *
10
  * Text Domain: essential-addons-elementor
@@ -16,8 +16,8 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
16
  define( 'ESSENTIAL_ADDONS_EL_URL', plugins_url( '/', __FILE__ ) );
17
  define( 'ESSENTIAL_ADDONS_EL_PATH', plugin_dir_path( __FILE__ ) );
18
  define( 'ESSENTIAL_ADDONS_EL_ROOT', __FILE__ );
19
- define( 'ESSENTIAL_ADDONS_VERSION', '2.9.3' );
20
- define( 'ESSENTIAL_ADDONS_STABLE_VERSION', '2.9.3' );
21
  define( 'ESSENTIAL_ADDONS_BASENAME', plugin_basename( __FILE__ ) );
22
 
23
 
@@ -28,7 +28,7 @@ require_once ESSENTIAL_ADDONS_EL_PATH.'includes/version-rollback.php';
28
  require_once ESSENTIAL_ADDONS_EL_PATH.'includes/maintennance.php';
29
  require_once ESSENTIAL_ADDONS_EL_PATH.'includes/eael-rollback.php';
30
  require_once ESSENTIAL_ADDONS_EL_PATH.'admin/settings.php';
31
- require_once ESSENTIAL_ADDONS_EL_PATH .'includes/extensions.php';
32
 
33
  /**
34
  * This function will return true for all activated modules
4
  * Description: The ultimate elements library for Elementor page builder plugin for WordPress.
5
  * Plugin URI: https://essential-addons.com/elementor/
6
  * Author: WPDeveloper
7
+ * Version: 2.9.4
8
  * Author URI: https://wpdeveloper.net/
9
  *
10
  * Text Domain: essential-addons-elementor
16
  define( 'ESSENTIAL_ADDONS_EL_URL', plugins_url( '/', __FILE__ ) );
17
  define( 'ESSENTIAL_ADDONS_EL_PATH', plugin_dir_path( __FILE__ ) );
18
  define( 'ESSENTIAL_ADDONS_EL_ROOT', __FILE__ );
19
+ define( 'ESSENTIAL_ADDONS_VERSION', '2.9.4' );
20
+ define( 'ESSENTIAL_ADDONS_STABLE_VERSION', '2.9.4' );
21
  define( 'ESSENTIAL_ADDONS_BASENAME', plugin_basename( __FILE__ ) );
22
 
23
 
28
  require_once ESSENTIAL_ADDONS_EL_PATH.'includes/maintennance.php';
29
  require_once ESSENTIAL_ADDONS_EL_PATH.'includes/eael-rollback.php';
30
  require_once ESSENTIAL_ADDONS_EL_PATH.'admin/settings.php';
31
+ require_once ESSENTIAL_ADDONS_EL_PATH.'includes/extensions.php';
32
 
33
  /**
34
  * This function will return true for all activated modules
includes/class-wpdev-notices.php CHANGED
@@ -59,13 +59,6 @@ class WPDeveloper_Notice {
59
  */
60
  public $options_args = array(
61
  // 'first_install' => true,
62
- // 'notice_seen' => [
63
- // 'opt_in' => false,
64
- // 'first_install' => false,
65
- // 'update' => false,
66
- // 'review' => false,
67
- // 'upsale' => false
68
- // ],
69
  // 'notice_will_show' => [
70
  // 'opt_in' => true,
71
  // 'first_install' => false,
@@ -94,7 +87,7 @@ class WPDeveloper_Notice {
94
  $this->plugin_file = $plugin_file;
95
  $this->plugin_name = basename( $plugin_file, '.php' );
96
  $this->version = $version;
97
- $this->timestamp = current_time( 'timestamp' );
98
  $this->notice_id = 'wpdeveloper_notice_' . str_replace( '.', '_', $this->version );
99
 
100
  if( ! class_exists( 'WPDeveloper_Core_Installer' ) ) {
@@ -139,14 +132,19 @@ class WPDeveloper_Notice {
139
 
140
  $notice_time = isset( $options_data[ $this->plugin_name ]['notice_will_show'][ $current_notice ] )
141
  ? $options_data[ $this->plugin_name ]['notice_will_show'][ $current_notice ] : $this->timestamp;
142
- $next_notice_time = $options_data[ $this->plugin_name ]['notice_will_show'][ $next_notice ];
143
  $current_notice_end = $this->makeTime( $notice_time, $this->cne_time );
144
 
 
 
 
 
 
145
  if( $deserve_notice ) {
146
  /**
147
  * TODO: automatic maybe later setup with time.
148
  */
149
- if( ( $this->timestamp >= $current_notice_end ) || ( $this->timestamp >= $next_notice_time ) ) {
150
  $this->maybe_later( $current_notice );
151
  $notice_time = false;
152
  }
@@ -160,6 +158,7 @@ class WPDeveloper_Notice {
160
  $plugins = get_plugins();
161
  $pkey = $upsale_args['slug'] . '/' . $upsale_args['file'];
162
  if( isset( $plugins[ $pkey ] ) ) {
 
163
  return;
164
  }
165
  add_action( 'admin_notices', array( $this, 'upsale_notice' ) );
@@ -178,7 +177,7 @@ class WPDeveloper_Notice {
178
  * @return integer
179
  */
180
  public function makeTime( $current, $time ) {
181
- return strtotime( date('Y-m-d H:i:s', $current) . " +$time" );
182
  }
183
  /**
184
  * Automatice Maybe Later.
@@ -236,13 +235,7 @@ class WPDeveloper_Notice {
236
  $options_data[ $this->plugin_name ]['notice_will_show'][ $clicked_from ] = $later_time;
237
  }
238
  if( isset( $dismiss ) && $dismiss == true ) {
239
- $user_notices = $this->get_user_notices();
240
- if( ! $user_notices ) {
241
- $user_notices = [];
242
- }
243
- $user_notices[ $this->notice_id ][ $this->plugin_name ][] = $clicked_from;
244
- unset( $options_data[ $this->plugin_name ]['notice_will_show'][ $clicked_from ] );
245
- update_user_meta( get_current_user_id(), self::ADMIN_UPDATE_NOTICE_KEY, $user_notices);
246
  }
247
  $this->update_options_data( $options_data[ $this->plugin_name ] );
248
  }
@@ -257,7 +250,7 @@ class WPDeveloper_Notice {
257
  $query_string = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_QUERY );
258
  parse_str( $query_string, $current_url );
259
 
260
- $unset_array = array( 'dismiss', 'plugin', '_wpnonce', 'later', 'plugin_action' );
261
 
262
  foreach( $unset_array as $value ) {
263
  if( isset( $current_url[ $value ] ) ) {
@@ -440,6 +433,9 @@ class WPDeveloper_Notice {
440
  */
441
  private function deserve_notice( $notice ) {
442
  $notices = $this->get_user_notices();
 
 
 
443
  if( empty( $notices ) ) {
444
  return true;
445
  } else {
@@ -660,7 +656,27 @@ class WPDeveloper_Notice {
660
  * @return void
661
  */
662
  private function get_user_notices() {
663
- return get_user_meta( get_current_user_id(), self::ADMIN_UPDATE_NOTICE_KEY, true );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
664
  }
665
  /**
666
  * This function is responsible for do action when
@@ -678,17 +694,7 @@ class WPDeveloper_Notice {
678
 
679
  $dismiss = isset( $_POST['dismiss'] ) ? $_POST['dismiss'] : false;
680
  if( $dismiss ) {
681
- $user_notices = $this->get_user_notices();
682
- if( ! $user_notices ) {
683
- $user_notices = [];
684
- }
685
- $user_notices[ $this->notice_id ][ $this->plugin_name ][] = 'upsale';
686
- // Remove the upsale from notice_will_show field in options DB.
687
- $options_data = $this->get_options_data();
688
- unset( $options_data[ $this->plugin_name ]['notice_will_show'][ 'upsale' ] );
689
- $this->update_options_data( $options_data[ $this->plugin_name ] );
690
- // Set users meta, not to show again current_version notice.
691
- update_user_meta( get_current_user_id(), self::ADMIN_UPDATE_NOTICE_KEY, $user_notices);
692
  echo 'success';
693
  } else {
694
  echo 'failed';
@@ -853,11 +859,6 @@ $notice->upsale_args = array(
853
  $notice->text_domain = 'essential-addons-elementor';
854
 
855
  $notice->options_args = array(
856
- 'notice_seen' => [
857
- 'review' => false,
858
- 'upsale' => false,
859
- 'opt_in' => false,
860
- ],
861
  'notice_will_show' => [
862
  'opt_in' => $notice->timestamp,
863
  'review' => $notice->makeTime( $notice->timestamp, '4 Day' ), // after 4 days
59
  */
60
  public $options_args = array(
61
  // 'first_install' => true,
 
 
 
 
 
 
 
62
  // 'notice_will_show' => [
63
  // 'opt_in' => true,
64
  // 'first_install' => false,
87
  $this->plugin_file = $plugin_file;
88
  $this->plugin_name = basename( $plugin_file, '.php' );
89
  $this->version = $version;
90
+ $this->timestamp = intval( current_time( 'timestamp' ) );
91
  $this->notice_id = 'wpdeveloper_notice_' . str_replace( '.', '_', $this->version );
92
 
93
  if( ! class_exists( 'WPDeveloper_Core_Installer' ) ) {
132
 
133
  $notice_time = isset( $options_data[ $this->plugin_name ]['notice_will_show'][ $current_notice ] )
134
  ? $options_data[ $this->plugin_name ]['notice_will_show'][ $current_notice ] : $this->timestamp;
135
+ $next_notice_time = $next_notice ? $options_data[ $this->plugin_name ]['notice_will_show'][ $next_notice ] : $this->timestamp;
136
  $current_notice_end = $this->makeTime( $notice_time, $this->cne_time );
137
 
138
+ if( ! $deserve_notice ) {
139
+ unset( $options_data[ $this->plugin_name ]['notice_will_show'][ $current_notice ] );
140
+ $this->update_options_data( $options_data[ $this->plugin_name ] );
141
+ }
142
+
143
  if( $deserve_notice ) {
144
  /**
145
  * TODO: automatic maybe later setup with time.
146
  */
147
+ if( ( $this->timestamp >= $current_notice_end ) || ( $this->timestamp > $next_notice_time ) ) {
148
  $this->maybe_later( $current_notice );
149
  $notice_time = false;
150
  }
158
  $plugins = get_plugins();
159
  $pkey = $upsale_args['slug'] . '/' . $upsale_args['file'];
160
  if( isset( $plugins[ $pkey ] ) ) {
161
+ $this->update( $current_notice );
162
  return;
163
  }
164
  add_action( 'admin_notices', array( $this, 'upsale_notice' ) );
177
  * @return integer
178
  */
179
  public function makeTime( $current, $time ) {
180
+ return intval( strtotime( date('Y-m-d H:i:s', $current) . " +$time" ) );
181
  }
182
  /**
183
  * Automatice Maybe Later.
235
  $options_data[ $this->plugin_name ]['notice_will_show'][ $clicked_from ] = $later_time;
236
  }
237
  if( isset( $dismiss ) && $dismiss == true ) {
238
+ $this->update( $clicked_from );
 
 
 
 
 
 
239
  }
240
  $this->update_options_data( $options_data[ $this->plugin_name ] );
241
  }
250
  $query_string = parse_url( $_SERVER['REQUEST_URI'], PHP_URL_QUERY );
251
  parse_str( $query_string, $current_url );
252
 
253
+ $unset_array = array( 'dismiss', 'plugin', '_wpnonce', 'later', 'plugin_action', 'marketing_optin' );
254
 
255
  foreach( $unset_array as $value ) {
256
  if( isset( $current_url[ $value ] ) ) {
433
  */
434
  private function deserve_notice( $notice ) {
435
  $notices = $this->get_user_notices();
436
+ if( $notice === false ) {
437
+ return false;
438
+ }
439
  if( empty( $notices ) ) {
440
  return true;
441
  } else {
656
  * @return void
657
  */
658
  private function get_user_notices() {
659
+ $notices = get_user_meta( get_current_user_id(), self::ADMIN_UPDATE_NOTICE_KEY, true );
660
+ return ! $notices ? array() : $notices;
661
+ }
662
+ /**
663
+ * This function is responsible for update meta information.
664
+ *
665
+ * @param string $notice
666
+ * @return void
667
+ */
668
+ private function update( $notice ){
669
+ if( empty( $notice ) ) {
670
+ return;
671
+ }
672
+ $options_data = $this->get_options_data();
673
+ $user_notices = $this->get_user_notices();
674
+ $user_notices[ $this->notice_id ][ $this->plugin_name ][] = $notice;
675
+ // Remove the upsale from notice_will_show field in options DB.
676
+ unset( $options_data[ $this->plugin_name ]['notice_will_show'][ $notice ] );
677
+ $this->update_options_data( $options_data[ $this->plugin_name ] );
678
+ // Set users meta, not to show again current_version notice.
679
+ update_user_meta( get_current_user_id(), self::ADMIN_UPDATE_NOTICE_KEY, $user_notices);
680
  }
681
  /**
682
  * This function is responsible for do action when
694
 
695
  $dismiss = isset( $_POST['dismiss'] ) ? $_POST['dismiss'] : false;
696
  if( $dismiss ) {
697
+ $this->update( 'upsale' );
 
 
 
 
 
 
 
 
 
 
698
  echo 'success';
699
  } else {
700
  echo 'failed';
859
  $notice->text_domain = 'essential-addons-elementor';
860
 
861
  $notice->options_args = array(
 
 
 
 
 
862
  'notice_will_show' => [
863
  'opt_in' => $notice->timestamp,
864
  'review' => $notice->makeTime( $notice->timestamp, '4 Day' ), // after 4 days
includes/templates/product-loop.php CHANGED
@@ -6,12 +6,18 @@ global $product;
6
 
7
  // Ensure visibility.
8
  if (empty($product) || !$product->is_visible()) {
9
- return;
10
  }
11
 
12
  ?>
13
  <li <?php wc_product_class('product');?>>
14
- <?php if ($grid_layout == 'eael-product-simple' || $grid_layout == 'eael-product-default' || $grid_layout == 'eael-product-reveal') {
 
 
 
 
 
 
15
  echo '<a href="' . get_the_permalink() . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">
16
  ' . $product->get_image('woocommerce_thumbnail') . '
17
  <h2 class="woocommerce-loop-product__title">' . $product->get_title() . '</h2>
6
 
7
  // Ensure visibility.
8
  if (empty($product) || !$product->is_visible()) {
9
+ return;
10
  }
11
 
12
  ?>
13
  <li <?php wc_product_class('product');?>>
14
+ <?php if ($grid_layout == 'eael-product-default') {
15
+ do_action('woocommerce_before_shop_loop_item');
16
+ do_action('woocommerce_before_shop_loop_item_title');
17
+ do_action('woocommerce_shop_loop_item_title');
18
+ do_action('woocommerce_after_shop_loop_item_title');
19
+ do_action('woocommerce_after_shop_loop_item');
20
+ } elseif ($grid_layout == 'eael-product-simple' || $grid_layout == 'eael-product-reveal') {
21
  echo '<a href="' . get_the_permalink() . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">
22
  ' . $product->get_image('woocommerce_thumbnail') . '
23
  <h2 class="woocommerce-loop-product__title">' . $product->get_title() . '</h2>
readme.txt CHANGED
@@ -4,7 +4,7 @@ Tags: elementor, elements, addons, elementor addon, elementor widget, page build
4
  Requires at least: 4.0
5
  Tested up to: 5.0.3
6
  Requires PHP: 5.4
7
- Stable tag: 2.9.3
8
  License: GPLv3
9
  License URI: https://opensource.org/licenses/GPL-3.0
10
 
@@ -169,6 +169,11 @@ Your existing elements/content will work with premium version. So you won't lose
169
 
170
  == Changelog ==
171
 
 
 
 
 
 
172
  = 2.9.3 =
173
 
174
  - Fixed: Fatal error Call to undefined function get_plugins()
4
  Requires at least: 4.0
5
  Tested up to: 5.0.3
6
  Requires PHP: 5.4
7
+ Stable tag: 2.9.4
8
  License: GPLv3
9
  License URI: https://opensource.org/licenses/GPL-3.0
10
 
169
 
170
  == Changelog ==
171
 
172
+ = 2.9.4 =
173
+
174
+ - Product Grid layout issue fixed
175
+ - Few minor bugfix and improvements
176
+
177
  = 2.9.3 =
178
 
179
  - Fixed: Fatal error Call to undefined function get_plugins()