@ecomplus/storefront-components 1.0.0-beta.19 → 1.0.0-beta.191
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.version +0 -0
- package/CHANGELOG.md +1333 -135
- package/all.js +3 -1
- package/dist/1.storefront-components.min.js +2 -0
- package/dist/1.storefront-components.min.js.map +1 -0
- package/dist/2.storefront-components.min.js +5 -0
- package/dist/2.storefront-components.min.js.map +1 -0
- package/dist/3.storefront-components.min.js +5 -0
- package/dist/3.storefront-components.min.js.map +1 -0
- package/dist/storefront-components.min.js +33 -12
- package/dist/storefront-components.min.js.map +1 -1
- package/package.json +17 -12
- package/src/APagination.vue +2 -0
- package/src/AShare.vue +2 -0
- package/src/AccountAddresses.vue +3 -0
- package/src/AccountForm.vue +3 -0
- package/src/AccountPoints.vue +3 -0
- package/src/BuyTogether.vue +3 -0
- package/src/EarnPointsProgress.vue +3 -0
- package/src/ItemCustomizations.vue +2 -0
- package/src/KitProductVariations.vue +3 -0
- package/src/PointsApplier.vue +2 -0
- package/src/ProductQuickview.vue +3 -0
- package/src/QuantitySelector.vue +3 -0
- package/src/RecommendedItems.vue +3 -0
- package/src/ShippingLine.vue +1 -0
- package/src/TheCart.vue +3 -0
- package/src/html/APagination.html +90 -0
- package/src/html/APrices.html +24 -4
- package/src/html/AShare.html +31 -0
- package/src/html/AccountAddresses.html +90 -0
- package/src/html/AccountForm.html +269 -0
- package/src/html/AccountPoints.html +39 -0
- package/src/html/AddressForm.html +9 -7
- package/src/html/BuyTogether.html +60 -0
- package/src/html/CartItem.html +86 -38
- package/src/html/CartQuickview.html +28 -5
- package/src/html/DiscountApplier.html +3 -3
- package/src/html/EarnPointsProgress.html +28 -0
- package/src/html/InputDate.html +1 -1
- package/src/html/InputDocNumber.html +1 -0
- package/src/html/InputPhone.html +1 -1
- package/src/html/InstantSearch.html +3 -3
- package/src/html/ItemCustomizations.html +14 -0
- package/src/html/KitProductVariations.html +92 -0
- package/src/html/LoginBlock.html +34 -32
- package/src/html/LoginModal.html +9 -4
- package/src/html/PaymentOption.html +7 -5
- package/src/html/PointsApplier.html +26 -0
- package/src/html/ProductCard.html +68 -8
- package/src/html/ProductGallery.html +21 -3
- package/src/html/ProductQuickview.html +64 -0
- package/src/html/ProductVariations.html +30 -3
- package/src/html/QuantitySelector.html +85 -0
- package/src/html/RecommendedItems.html +48 -0
- package/src/html/SearchEngine.html +101 -24
- package/src/html/ShippingCalculator.html +84 -3
- package/src/html/ShippingLine.html +5 -2
- package/src/html/TheAccount.html +43 -9
- package/src/html/TheCart.html +156 -0
- package/src/html/TheProduct.html +416 -138
- package/src/js/APagination.js +74 -0
- package/src/js/APicture.js +27 -7
- package/src/js/APrices.js +80 -41
- package/src/js/AShare.js +83 -0
- package/src/js/AccountAddresses.js +201 -0
- package/src/js/AccountForm.js +312 -0
- package/src/js/AccountPoints.js +63 -0
- package/src/js/AddressForm.js +80 -35
- package/src/js/BuyTogether.js +246 -0
- package/src/js/CartItem.js +67 -14
- package/src/js/CartQuickview.js +20 -1
- package/src/js/DiscountApplier.js +181 -50
- package/src/js/EarnPointsProgress.js +77 -0
- package/src/js/InputDate.js +8 -8
- package/src/js/InputDocNumber.js +20 -0
- package/src/js/ItemCustomizations.js +10 -0
- package/src/js/KitProductVariations.js +218 -0
- package/src/js/LoginBlock.js +47 -6
- package/src/js/LoginModal.js +18 -10
- package/src/js/PaymentOption.js +28 -1
- package/src/js/PointsApplier.js +110 -0
- package/src/js/ProductCard.js +115 -11
- package/src/js/ProductGallery.js +32 -12
- package/src/js/ProductQuickview.js +72 -0
- package/src/js/ProductVariations.js +76 -19
- package/src/js/QuantitySelector.js +175 -0
- package/src/js/RecommendedItems.js +178 -0
- package/src/js/SearchEngine.js +185 -55
- package/src/js/ShippingCalculator.js +176 -35
- package/src/js/ShippingLine.js +44 -5
- package/src/js/TheAccount.js +97 -6
- package/src/js/TheCart.js +146 -0
- package/src/js/TheProduct.js +387 -43
- package/src/js/helpers/add-idle-callback.js +7 -0
- package/src/js/helpers/check-form-validity.js +3 -0
- package/src/js/helpers/favorite-products.js +24 -0
- package/src/js/helpers/scroll-to-element.js +10 -0
- package/src/js/helpers/sort-apps.js +14 -0
- package/src/js/helpers/wait-storefront-info.js +21 -0
- package/src/scss/APicture.scss +2 -0
- package/src/scss/APrices.scss +13 -1
- package/src/scss/AccountAddresses.scss +27 -0
- package/src/scss/AccountForm.scss +5 -0
- package/src/scss/AccountPoints.scss +17 -0
- package/src/scss/BuyTogether.scss +38 -0
- package/src/scss/CartItem.scss +17 -1
- package/src/scss/EarnPointsProgress.scss +6 -0
- package/src/scss/InstantSearch.scss +1 -0
- package/src/scss/KitProductVariations.scss +72 -0
- package/src/scss/LoginBlock.scss +5 -0
- package/src/scss/PaymentOption.scss +10 -1
- package/src/scss/ProductCard.scss +63 -25
- package/src/scss/ProductGallery.scss +4 -2
- package/src/scss/ProductQuickview.scss +36 -0
- package/src/scss/ProductVariations.scss +20 -4
- package/src/scss/QuantitySelector.scss +39 -0
- package/src/scss/RecommendedItems.scss +28 -0
- package/src/scss/SearchEngine.scss +9 -5
- package/src/scss/ShippingCalculator.scss +42 -1
- package/src/scss/ShippingLine.scss +24 -0
- package/src/scss/TheAccount.scss +4 -0
- package/src/scss/TheCart.scss +54 -0
- package/src/scss/TheProduct.scss +146 -1
- package/webpack.config.js +20 -6
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<div
|
|
2
|
+
v-if="validPointsEntries.length"
|
|
3
|
+
class="account-points"
|
|
4
|
+
>
|
|
5
|
+
<div class="account-points__info">
|
|
6
|
+
<h4>{{ i19loyaltyPoints }}</h4>
|
|
7
|
+
<span>{{ i19available }}: <b>{{ totalPoints.toFixed(1) }}</b> / Cashback: <b>{{ formatMoney(totalCashback) }}</b></span>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
<ul class="list-group">
|
|
11
|
+
<li
|
|
12
|
+
v-for="pointsEntry in validPointsEntries"
|
|
13
|
+
class="list-group-item account-points__entry"
|
|
14
|
+
>
|
|
15
|
+
<div class="account-points__entry-title">
|
|
16
|
+
<h5 class="mb-1">
|
|
17
|
+
{{ pointsEntry.name }}
|
|
18
|
+
</h5>
|
|
19
|
+
<small v-if="pointsEntry.valid_thru">
|
|
20
|
+
{{ i19upTo }}
|
|
21
|
+
{{ formatDate(pointsEntry.valid_thru) }}
|
|
22
|
+
</small>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
{{ i19available }}:
|
|
26
|
+
<b>{{ pointsEntry.active_points.toFixed(1) }}</b>
|
|
27
|
+
<small
|
|
28
|
+
v-if="pointsEntry.earned_points"
|
|
29
|
+
class="text-muted"
|
|
30
|
+
>
|
|
31
|
+
/ {{ `${pointsEntry.earned_points.toFixed(1)} ${i19pointsEarned}` }}
|
|
32
|
+
</small>
|
|
33
|
+
<div class="account-points__cashback">
|
|
34
|
+
Cashback:
|
|
35
|
+
<b>{{ formatMoney(pointsEntry.active_points * pointsEntry.ratio) }}</b>
|
|
36
|
+
</div>
|
|
37
|
+
</li>
|
|
38
|
+
</ul>
|
|
39
|
+
</div>
|
|
@@ -28,16 +28,16 @@
|
|
|
28
28
|
/>
|
|
29
29
|
|
|
30
30
|
<div
|
|
31
|
-
v-if="
|
|
31
|
+
v-if="zipLoading || zipInfoLink"
|
|
32
32
|
class="input-group-append"
|
|
33
33
|
>
|
|
34
34
|
<span class="input-group-text">
|
|
35
35
|
<a
|
|
36
|
-
v-if="!
|
|
37
|
-
href="
|
|
36
|
+
v-if="!zipLoading"
|
|
37
|
+
:href="zipInfoLink"
|
|
38
38
|
target="_blank"
|
|
39
39
|
>
|
|
40
|
-
<i class="
|
|
40
|
+
<i class="i-question-circle"></i>
|
|
41
41
|
</a>
|
|
42
42
|
<div
|
|
43
43
|
v-else
|
|
@@ -102,6 +102,7 @@
|
|
|
102
102
|
type="text"
|
|
103
103
|
class="form-control"
|
|
104
104
|
id="address-form-compl"
|
|
105
|
+
maxlength="100"
|
|
105
106
|
v-model="localAddress.complement"
|
|
106
107
|
>
|
|
107
108
|
</div>
|
|
@@ -114,6 +115,7 @@
|
|
|
114
115
|
type="text"
|
|
115
116
|
class="form-control"
|
|
116
117
|
id="address-form-ref"
|
|
118
|
+
maxlength="100"
|
|
117
119
|
v-model="localAddress.near_to"
|
|
118
120
|
>
|
|
119
121
|
</div>
|
|
@@ -174,7 +176,7 @@
|
|
|
174
176
|
type="text"
|
|
175
177
|
class="form-control"
|
|
176
178
|
id="address-form-pc"
|
|
177
|
-
pattern="[
|
|
179
|
+
pattern="[A-Z]{2}"
|
|
178
180
|
maxlength="2"
|
|
179
181
|
placeholder="AA"
|
|
180
182
|
v-model="provinceCode"
|
|
@@ -189,8 +191,8 @@
|
|
|
189
191
|
class="btn btn-lg btn-primary"
|
|
190
192
|
type="submit"
|
|
191
193
|
>
|
|
192
|
-
<i class="
|
|
193
|
-
{{
|
|
194
|
+
<i class="i-check mr-1"></i>
|
|
195
|
+
{{ btnText }}
|
|
194
196
|
</button>
|
|
195
197
|
</div>
|
|
196
198
|
</transition>
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<div class="buy-together">
|
|
2
|
+
<transition enter-active-class="animated fadeInDown">
|
|
3
|
+
<div v-if="hasLoadedItems && recommendedItems.length">
|
|
4
|
+
<div class="buy-together__title">
|
|
5
|
+
<div class="buy-together__discount lead mb-3">
|
|
6
|
+
{{ i19buyTogether }}
|
|
7
|
+
<span
|
|
8
|
+
v-if="discount"
|
|
9
|
+
class="badge badge-success"
|
|
10
|
+
>
|
|
11
|
+
{{ formatMoney(discount) }} <span>OFF</span>
|
|
12
|
+
</span>
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
15
|
+
|
|
16
|
+
<div class="buy-together__row row">
|
|
17
|
+
<div
|
|
18
|
+
class="col-12"
|
|
19
|
+
:class="productIds.length > 1 ? 'col-md' : 'col-md-6 col-lg-4'"
|
|
20
|
+
>
|
|
21
|
+
<div class="row">
|
|
22
|
+
<div
|
|
23
|
+
v-if="items.length"
|
|
24
|
+
v-for="item in items"
|
|
25
|
+
:key="item._id"
|
|
26
|
+
class="buy-together__item col-12"
|
|
27
|
+
:class="`col-md-${(12 / items.length)}`"
|
|
28
|
+
>
|
|
29
|
+
<product-card
|
|
30
|
+
:product="item"
|
|
31
|
+
:productId="item._id"
|
|
32
|
+
:is-loaded="true"
|
|
33
|
+
v-bind="productCardProps"
|
|
34
|
+
/>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
<div class="buy-together__cta col-auto">
|
|
39
|
+
<a-prices
|
|
40
|
+
:product="{ price: subtotal - discount, base_price: subtotal }"
|
|
41
|
+
:is-literal="true"
|
|
42
|
+
:is-big="true"
|
|
43
|
+
/>
|
|
44
|
+
<button
|
|
45
|
+
v-if="canAddToCart"
|
|
46
|
+
class="btn btn-lg btn-primary mt-3"
|
|
47
|
+
@click="buy"
|
|
48
|
+
>
|
|
49
|
+
<i class="i-shopping-basket mr-1"></i>
|
|
50
|
+
{{ i19buyTogether }}
|
|
51
|
+
</button>
|
|
52
|
+
</div>
|
|
53
|
+
</div>
|
|
54
|
+
</div>
|
|
55
|
+
</transition>
|
|
56
|
+
|
|
57
|
+
<transition leave-active-class="animated fadeOut">
|
|
58
|
+
<slot v-if="!hasLoadedItems"/>
|
|
59
|
+
</transition>
|
|
60
|
+
</div>
|
package/src/html/CartItem.html
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
<section
|
|
1
|
+
<section
|
|
2
|
+
class="cart-item"
|
|
3
|
+
:class="isFreebie ? 'cart-item--freebie' : null"
|
|
4
|
+
>
|
|
2
5
|
<div class="cart-item__container">
|
|
3
6
|
<div class="cart-item__thumb">
|
|
4
7
|
<component
|
|
5
|
-
v-if="
|
|
8
|
+
v-if="img"
|
|
6
9
|
:is="item.slug ? 'a-link' : 'span'"
|
|
7
10
|
:href="`/${item.slug}`"
|
|
8
11
|
>
|
|
@@ -15,13 +18,21 @@
|
|
|
15
18
|
|
|
16
19
|
<div class="cart-item__data">
|
|
17
20
|
<button
|
|
21
|
+
v-if="!isFreebie"
|
|
18
22
|
type="button"
|
|
19
23
|
class="close"
|
|
20
24
|
:title="i19remove"
|
|
21
25
|
@click="remove"
|
|
22
26
|
>
|
|
23
|
-
<i class="
|
|
27
|
+
<i class="i-trash"></i>
|
|
24
28
|
</button>
|
|
29
|
+
<span
|
|
30
|
+
v-else
|
|
31
|
+
class="cart-item__freebie"
|
|
32
|
+
>
|
|
33
|
+
<i class="i-gift mr-1"></i>
|
|
34
|
+
{{ i19freebie }}
|
|
35
|
+
</span>
|
|
25
36
|
|
|
26
37
|
<div
|
|
27
38
|
class="cart-item__name"
|
|
@@ -36,51 +47,88 @@
|
|
|
36
47
|
<template v-else>
|
|
37
48
|
{{ name }}
|
|
38
49
|
</template>
|
|
50
|
+
|
|
51
|
+
<small
|
|
52
|
+
class="cart-item__name-subtitle"
|
|
53
|
+
v-if="item.kit_product"
|
|
54
|
+
>
|
|
55
|
+
{{ formatName(item.kit_product.name) }}
|
|
56
|
+
</small>
|
|
39
57
|
</div>
|
|
40
58
|
|
|
41
|
-
<
|
|
42
|
-
|
|
43
|
-
class="cart-
|
|
59
|
+
<small
|
|
60
|
+
v-if="maxQuantity === 0"
|
|
61
|
+
class="cart-item__out-of-stock"
|
|
44
62
|
>
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
63
|
+
{{ i19outOfStock }}
|
|
64
|
+
</small>
|
|
65
|
+
|
|
66
|
+
<template v-else>
|
|
67
|
+
<div
|
|
68
|
+
:title="i19quantity"
|
|
69
|
+
class="cart-item__quantity"
|
|
50
70
|
>
|
|
51
|
-
<
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
71
|
+
<strong v-if="item.kit_product || item.keep_item_quantity">
|
|
72
|
+
{{ quantity }}x
|
|
73
|
+
</strong>
|
|
74
|
+
|
|
75
|
+
<select
|
|
76
|
+
v-else-if="canInputSelect && inputType === 'select'"
|
|
77
|
+
class="custom-select"
|
|
78
|
+
v-model.number="quantity"
|
|
79
|
+
:disabled="!price"
|
|
80
|
+
@change="updateInputType"
|
|
55
81
|
>
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
82
|
+
<option
|
|
83
|
+
v-for="qnt in Math.min(maxQuantity, 10)"
|
|
84
|
+
v-if="qnt >= minQuantity"
|
|
85
|
+
:key="`qnt-${qnt}`"
|
|
86
|
+
:value="qnt"
|
|
87
|
+
:selected="qnt === quantity"
|
|
88
|
+
>
|
|
89
|
+
{{ qnt }}
|
|
90
|
+
</option>
|
|
91
|
+
<option
|
|
92
|
+
v-if="maxQuantity > 10"
|
|
93
|
+
:value="11"
|
|
94
|
+
>
|
|
95
|
+
11+
|
|
96
|
+
</option>
|
|
97
|
+
</select>
|
|
62
98
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
99
|
+
<input
|
|
100
|
+
v-else
|
|
101
|
+
ref="input"
|
|
102
|
+
:type="inputType && inputType !== 'select' ? inputType : 'number'"
|
|
103
|
+
:min="minQuantity"
|
|
104
|
+
:max="maxQuantity"
|
|
105
|
+
:step="isIntegerQnt ? null : 0.001"
|
|
106
|
+
class="form-control"
|
|
107
|
+
v-model.number="quantity"
|
|
108
|
+
:readonly="!price"
|
|
109
|
+
@blur="updateInputType"
|
|
110
|
+
>
|
|
111
|
+
</div>
|
|
73
112
|
|
|
74
|
-
<div class="cart-item__prices">
|
|
75
113
|
<div
|
|
76
|
-
|
|
77
|
-
|
|
114
|
+
v-if="!isFreebie || price > 0"
|
|
115
|
+
class="cart-item__prices"
|
|
78
116
|
>
|
|
79
|
-
|
|
80
|
-
|
|
117
|
+
<div
|
|
118
|
+
class="cart-item__price-un fade"
|
|
119
|
+
:class="{ show: quantity > 1 }"
|
|
120
|
+
>
|
|
121
|
+
{{ formatMoney(price) }}
|
|
122
|
+
<small>/un</small>
|
|
123
|
+
</div>
|
|
124
|
+
{{ formatMoney(price * quantity) }}
|
|
81
125
|
</div>
|
|
82
|
-
|
|
83
|
-
|
|
126
|
+
</template>
|
|
127
|
+
|
|
128
|
+
<item-customizations
|
|
129
|
+
:item="item"
|
|
130
|
+
class="cart-item__customizations"
|
|
131
|
+
/>
|
|
84
132
|
</div>
|
|
85
133
|
</div>
|
|
86
134
|
</section>
|
|
@@ -64,11 +64,25 @@
|
|
|
64
64
|
href="#"
|
|
65
65
|
@click.prevent="toggle"
|
|
66
66
|
>
|
|
67
|
-
<i class="
|
|
67
|
+
<i class="i-arrow-left mr-1"></i>
|
|
68
68
|
{{ i19continueShopping }}
|
|
69
69
|
</a>
|
|
70
70
|
</slot>
|
|
71
71
|
</div>
|
|
72
|
+
|
|
73
|
+
<div
|
|
74
|
+
class="minicart__shipping"
|
|
75
|
+
v-if="cart.items.length && hasShippingCalculator"
|
|
76
|
+
key="shipping"
|
|
77
|
+
>
|
|
78
|
+
<hr>
|
|
79
|
+
<shipping-calculator
|
|
80
|
+
class="minicart__shipping-calculator"
|
|
81
|
+
:can-select-services="true"
|
|
82
|
+
:shipped-items="cart.items"
|
|
83
|
+
@select-service="selectShippingService"
|
|
84
|
+
/>
|
|
85
|
+
</div>
|
|
72
86
|
</transition-group>
|
|
73
87
|
</article>
|
|
74
88
|
|
|
@@ -79,12 +93,12 @@
|
|
|
79
93
|
>
|
|
80
94
|
<div class="minicart__summary">
|
|
81
95
|
<span>{{ i19subtotal }}</span>
|
|
82
|
-
<
|
|
96
|
+
<div class="minicart__subtotal">
|
|
83
97
|
<a-prices
|
|
84
|
-
:product="{ price: cart.subtotal }"
|
|
98
|
+
:product="{ price: total || cart.subtotal }"
|
|
85
99
|
:is-literal="true"
|
|
86
100
|
/>
|
|
87
|
-
</
|
|
101
|
+
</div>
|
|
88
102
|
</div>
|
|
89
103
|
|
|
90
104
|
<a-link
|
|
@@ -92,7 +106,7 @@
|
|
|
92
106
|
role="button"
|
|
93
107
|
:href="checkoutUrl"
|
|
94
108
|
>
|
|
95
|
-
<i class="
|
|
109
|
+
<i class="i-check mr-1"></i>
|
|
96
110
|
{{ i19checkout }}
|
|
97
111
|
</a-link>
|
|
98
112
|
<a-link
|
|
@@ -102,6 +116,15 @@
|
|
|
102
116
|
>
|
|
103
117
|
{{ i19seeCart }}
|
|
104
118
|
</a-link>
|
|
119
|
+
|
|
120
|
+
<button
|
|
121
|
+
type="button"
|
|
122
|
+
class="minicart__btn-back btn btn-block btn-sm btn-link d-md-none"
|
|
123
|
+
@click="toggle"
|
|
124
|
+
>
|
|
125
|
+
<i class="i-arrow-left mr-1"></i>
|
|
126
|
+
{{ i19continueShopping }}
|
|
127
|
+
</button>
|
|
105
128
|
</footer>
|
|
106
129
|
</slot>
|
|
107
130
|
</aside>
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
@click.prevent="isFormVisible = !isFormVisible"
|
|
22
22
|
type="button"
|
|
23
23
|
>
|
|
24
|
-
<i class="
|
|
24
|
+
<i class="i-tag mr-1"></i>
|
|
25
25
|
{{ i19addDiscountCoupon }}
|
|
26
26
|
</button>
|
|
27
27
|
</div>
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
disabled
|
|
78
78
|
type="button"
|
|
79
79
|
>
|
|
80
|
-
<i class="
|
|
80
|
+
<i class="i-check-circle"></i>
|
|
81
81
|
</button>
|
|
82
82
|
</div>
|
|
83
83
|
</div>
|
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
</template>
|
|
88
88
|
|
|
89
89
|
<a-alert
|
|
90
|
-
:key="`alert-${alertVariant}`"
|
|
90
|
+
:key="`alert-${alertVariant}-${localCouponCode}`"
|
|
91
91
|
:can-show="!isLoading && Boolean(alertText)"
|
|
92
92
|
:variant="alertVariant"
|
|
93
93
|
@dismiss="alertText = null"
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<div
|
|
2
|
+
v-if="minSubtotalToEarn > cartSubtotal"
|
|
3
|
+
class="earn-points-progress"
|
|
4
|
+
>
|
|
5
|
+
<span>
|
|
6
|
+
{{ i19add$1ToEarn.replace('$1', formatMoney(minSubtotalToEarn - cartSubtotal)) }}
|
|
7
|
+
<strong>{{ i19loyaltyPoints.toLowerCase() }}</strong>
|
|
8
|
+
</span>
|
|
9
|
+
|
|
10
|
+
<div
|
|
11
|
+
v-if="earnFromPercentage >= 33"
|
|
12
|
+
class="progress"
|
|
13
|
+
>
|
|
14
|
+
<div
|
|
15
|
+
class="progress-bar progress-bar-striped"
|
|
16
|
+
role="progressbar"
|
|
17
|
+
:style="`width: ${earnFromPercentage}%`"
|
|
18
|
+
:aria-valuenow="earnFromPercentage"
|
|
19
|
+
aria-valuemin="0"
|
|
20
|
+
aria-valuemax="100"
|
|
21
|
+
>
|
|
22
|
+
<span>
|
|
23
|
+
{{ programName }}
|
|
24
|
+
<strong>{{ earnFromPercentage }}%</strong>
|
|
25
|
+
</span>
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
</div>
|
package/src/html/InputDate.html
CHANGED
package/src/html/InputPhone.html
CHANGED
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
class="search__submit"
|
|
33
33
|
:aria-label="i19search"
|
|
34
34
|
>
|
|
35
|
-
<i class="
|
|
35
|
+
<i class="i-search"></i>
|
|
36
36
|
</button>
|
|
37
37
|
</div>
|
|
38
38
|
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
:aria-label="i19close"
|
|
51
51
|
@click="hide"
|
|
52
52
|
>
|
|
53
|
-
<i class="
|
|
53
|
+
<i class="i-times-circle"></i>
|
|
54
54
|
</button>
|
|
55
55
|
</div>
|
|
56
56
|
</header>
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
v-if="history.length"
|
|
112
112
|
class="search__history d-none d-lg-block"
|
|
113
113
|
>
|
|
114
|
-
<i class="
|
|
114
|
+
<i class="i-history"></i>
|
|
115
115
|
<a
|
|
116
116
|
class="search__history-link"
|
|
117
117
|
v-for="term in history"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<div
|
|
2
|
+
v-if="item.customizations && item.customizations.length"
|
|
3
|
+
class="item-customizations small"
|
|
4
|
+
>
|
|
5
|
+
<div
|
|
6
|
+
v-for="({ _id, label, option }) in item.customizations"
|
|
7
|
+
:key="`cs-${_id}`"
|
|
8
|
+
>
|
|
9
|
+
<span class="text-muted">
|
|
10
|
+
{{ label }}:
|
|
11
|
+
</span>
|
|
12
|
+
{{ option.text }}
|
|
13
|
+
</div>
|
|
14
|
+
</div>
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
<div class="kit-product-variations">
|
|
2
|
+
<div
|
|
3
|
+
class="glide"
|
|
4
|
+
ref="glide"
|
|
5
|
+
>
|
|
6
|
+
<div
|
|
7
|
+
class="glide__track"
|
|
8
|
+
data-glide-el="track"
|
|
9
|
+
>
|
|
10
|
+
<ul class="glide__slides kit-product-variations__list">
|
|
11
|
+
<li
|
|
12
|
+
v-for="(item, index) in localItems"
|
|
13
|
+
class="glide__slide"
|
|
14
|
+
>
|
|
15
|
+
<button
|
|
16
|
+
v-if="variationKit[activeIndex]"
|
|
17
|
+
@click="removeItemFromKit(activeIndex)"
|
|
18
|
+
type="button"
|
|
19
|
+
:aria-label="i19close"
|
|
20
|
+
class="close"
|
|
21
|
+
>
|
|
22
|
+
<i class="i-times-circle"></i>
|
|
23
|
+
</button>
|
|
24
|
+
<div class="kit-product-variations__item">
|
|
25
|
+
<div class="kit-product-variations__item-head">
|
|
26
|
+
<div class="kit-product-variations__picture">
|
|
27
|
+
<a-picture
|
|
28
|
+
class="gallery__big-image"
|
|
29
|
+
:src="getImg(item, null, 'normal')"
|
|
30
|
+
/>
|
|
31
|
+
</div>
|
|
32
|
+
<div class="kit-product-variations__info">
|
|
33
|
+
<h2>{{ getName(item) }}</h2>
|
|
34
|
+
<b>{{ i19quantity }}: 1 </b>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
|
|
38
|
+
<slot name="variations">
|
|
39
|
+
<product-variations
|
|
40
|
+
:key="item.key"
|
|
41
|
+
:product="item"
|
|
42
|
+
:selected-id.sync="selectedVariationId"
|
|
43
|
+
:max-options-btns="maxOptionsBtns"
|
|
44
|
+
:class="variationKit[activeIndex] || variationKitReady.length < max
|
|
45
|
+
? 'kit-product-variations--show'
|
|
46
|
+
: 'kit-product-variations--hide'"
|
|
47
|
+
/>
|
|
48
|
+
<a-alert
|
|
49
|
+
v-if="variationKitReady.length === max && !variationKit[activeIndex]"
|
|
50
|
+
:can-show="variationKitReady.length === max"
|
|
51
|
+
:variant="alertVariant"
|
|
52
|
+
>
|
|
53
|
+
{{ i19maxQuantity }}:
|
|
54
|
+
<strong>{{ max }}</strong>
|
|
55
|
+
</a-alert>
|
|
56
|
+
|
|
57
|
+
<slot name="variations-info"/>
|
|
58
|
+
</slot>
|
|
59
|
+
</div>
|
|
60
|
+
</li>
|
|
61
|
+
</ul>
|
|
62
|
+
</div>
|
|
63
|
+
|
|
64
|
+
<div class="glide__pagination">
|
|
65
|
+
<span class="glide__pagination--current">{{ activeIndex + 1 }}</span>
|
|
66
|
+
<span class="glide__pagination--total">/ {{ localItems.length }}</span>
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="kit-product-variations__actions">
|
|
70
|
+
<button @click="activeIndex++" class="btn btn-block btn-primary"><span>{{ i19next }} {{ i19item }}</span></button>
|
|
71
|
+
<button @click="activeIndex--" class="btn btn-block btn-outline-secondary">
|
|
72
|
+
<span>{{ i19item }} {{ i19previous }}</span>
|
|
73
|
+
</button>
|
|
74
|
+
</div>
|
|
75
|
+
<div class="kit-product-variations__buy">
|
|
76
|
+
<slot
|
|
77
|
+
name="buy"
|
|
78
|
+
v-bind="{ variationKit }"
|
|
79
|
+
>
|
|
80
|
+
<button
|
|
81
|
+
type="button"
|
|
82
|
+
class="btn btn-lg btn-primary my-3"
|
|
83
|
+
@click="buy"
|
|
84
|
+
:disabled="variationKitReady.length !== min"
|
|
85
|
+
>
|
|
86
|
+
<slot name="buy-button-content">
|
|
87
|
+
<i class="i-shopping-bag mr-1"></i>
|
|
88
|
+
</slot>
|
|
89
|
+
</button>
|
|
90
|
+
</slot>
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|