@lancom/shared 0.0.284 → 0.0.285
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/assets/scss/_common.scss +5 -0
- package/components/checkout/cart/cart.vue +13 -3
- package/components/checkout/order/address-form/address-form.scss +0 -16
- package/components/checkout/order/address-form/address-form.vue +96 -213
- package/components/checkout/order/order-billing-information/order-billing-information.vue +1 -1
- package/components/checkout/order/order-shipping-information/order-shipping-information.vue +1 -1
- package/components/common/coupon_select/coupon-select.vue +27 -23
- package/components/common/postcode_select/postcode-select.vue +2 -2
- package/package.json +1 -1
package/assets/scss/_common.scss
CHANGED
|
@@ -26,15 +26,15 @@
|
|
|
26
26
|
<postcode-select
|
|
27
27
|
:suburb="suburb"
|
|
28
28
|
:labelless="true"
|
|
29
|
-
placeholder="
|
|
30
|
-
label-text="
|
|
29
|
+
:placeholder="postcodeLabel"
|
|
30
|
+
:label-text="postcodeInfoLabel"
|
|
31
31
|
@select="handleSuburbChange" />
|
|
32
32
|
</div>
|
|
33
33
|
<div class="Cart__coupon-container">
|
|
34
34
|
<coupon-select
|
|
35
35
|
v-model="cartCoupon"
|
|
36
36
|
:pricing="cartPricingCalculating ? null : cartPricing"
|
|
37
|
-
label-text="
|
|
37
|
+
:label-text="couponLabel" />
|
|
38
38
|
</div>
|
|
39
39
|
<div class="Cart__quantity-errors">
|
|
40
40
|
<cart-quantity-errors />
|
|
@@ -91,7 +91,17 @@ export default {
|
|
|
91
91
|
filters: { price },
|
|
92
92
|
mixins: [CartMixin],
|
|
93
93
|
computed: {
|
|
94
|
+
...mapGetters(['MESSAGES']),
|
|
94
95
|
...mapGetters('cart', ['isEmpty', 'cartPricingError', 'cartPricing', 'cartPricingCalculating', 'entities']),
|
|
96
|
+
postcodeLabel() {
|
|
97
|
+
return this.MESSAGES.CART_POSTCODE || 'Postcode';
|
|
98
|
+
},
|
|
99
|
+
postcodeInfoLabel() {
|
|
100
|
+
return this.MESSAGES.CART_POSTCODE_INFO || 'Enter postcode to calculate shipping';
|
|
101
|
+
},
|
|
102
|
+
couponLabel() {
|
|
103
|
+
return (this.MESSAGES.CART_COUPON || 'Coupon code').trim();
|
|
104
|
+
},
|
|
95
105
|
cartCoupon: {
|
|
96
106
|
get() {
|
|
97
107
|
return this.coupon;
|
|
@@ -14,20 +14,4 @@
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
.CustomerAddressForm {
|
|
20
|
-
&__toggle-address {
|
|
21
|
-
margin-bottom: 10px;
|
|
22
|
-
cursor: pointer;
|
|
23
|
-
display: inline-block;
|
|
24
|
-
color: $green;
|
|
25
|
-
border-bottom: 1px dashed $green;
|
|
26
|
-
}
|
|
27
|
-
&__section {
|
|
28
|
-
padding: 15px;
|
|
29
|
-
border: 1px solid #d7d7d7;
|
|
30
|
-
margin-bottom: 10px;
|
|
31
|
-
border-radius: 4px;
|
|
32
|
-
}
|
|
33
17
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="CustomerAddressForm__wrapper">
|
|
3
|
-
<div class="CustomerAddressForm__form
|
|
3
|
+
<div class="CustomerAddressForm__form">
|
|
4
4
|
<div class="form-row--cols">
|
|
5
5
|
<validation-provider
|
|
6
6
|
v-slot="{ errors }"
|
|
@@ -124,16 +124,74 @@
|
|
|
124
124
|
</span>
|
|
125
125
|
</validation-provider>
|
|
126
126
|
</div>
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
<validation-provider
|
|
128
|
+
v-slot="{ errors }"
|
|
129
|
+
tag="div"
|
|
130
|
+
name="Address line 1"
|
|
131
|
+
rules="required"
|
|
132
|
+
class="form-row">
|
|
133
|
+
<label
|
|
134
|
+
for="addressLine1"
|
|
135
|
+
class="form-label">
|
|
136
|
+
Address line 1
|
|
137
|
+
</label>
|
|
138
|
+
<input
|
|
139
|
+
id="addressLine1"
|
|
140
|
+
ref="addressLine1"
|
|
141
|
+
v-model="address.addressLine1"
|
|
142
|
+
name="addressLine1"
|
|
143
|
+
type="text"
|
|
144
|
+
class="form-field labelless"
|
|
145
|
+
placeholder="Address line 1"
|
|
146
|
+
:class="{
|
|
147
|
+
'is-danger': errors.length,
|
|
148
|
+
filled: address.addressLine1
|
|
149
|
+
}"
|
|
150
|
+
@input="validateAddress"
|
|
151
|
+
@keyup.enter="$refs.addressLine1.focus()" />
|
|
152
|
+
<span
|
|
153
|
+
v-if="errors.length"
|
|
154
|
+
class="form-help is-danger">
|
|
155
|
+
{{ errors[0] }}
|
|
156
|
+
</span>
|
|
157
|
+
</validation-provider>
|
|
158
|
+
<validation-provider
|
|
159
|
+
v-slot="{ errors }"
|
|
160
|
+
tag="div"
|
|
161
|
+
name="Address line 2"
|
|
162
|
+
class="form-row">
|
|
163
|
+
<label
|
|
164
|
+
for="addressLine2"
|
|
165
|
+
class="form-label">
|
|
166
|
+
Address line 2
|
|
167
|
+
</label>
|
|
168
|
+
<input
|
|
169
|
+
id="addressLine2"
|
|
170
|
+
ref="addressLine2"
|
|
171
|
+
v-model="address.addressLine2"
|
|
172
|
+
name="addressLine2"
|
|
173
|
+
type="text"
|
|
174
|
+
class="form-field labelless"
|
|
175
|
+
placeholder="Address line 2"
|
|
176
|
+
:class="{
|
|
177
|
+
'is-danger': errors.length,
|
|
178
|
+
filled: address.addressLine2
|
|
179
|
+
}"
|
|
180
|
+
@input="validateAddress"
|
|
181
|
+
@keyup.enter="$refs.addressLine2.focus()" />
|
|
182
|
+
<span
|
|
183
|
+
v-if="errors.length"
|
|
184
|
+
class="form-help is-danger">
|
|
185
|
+
{{ errors[0] }}
|
|
186
|
+
</span>
|
|
187
|
+
</validation-provider>
|
|
129
188
|
<div class="form-row--cols">
|
|
130
189
|
<postcode-select
|
|
131
|
-
v-if="!visibleFullAddress"
|
|
132
190
|
class="form-col col-half"
|
|
133
191
|
:suburb="suburb"
|
|
134
192
|
:labelless="true"
|
|
135
193
|
:required="true"
|
|
136
|
-
|
|
194
|
+
placeholder="Suburb"
|
|
137
195
|
@select="handleSuburbChange">
|
|
138
196
|
</postcode-select>
|
|
139
197
|
<div class="form-col col-half">
|
|
@@ -152,190 +210,36 @@
|
|
|
152
210
|
disabled />
|
|
153
211
|
</div>
|
|
154
212
|
</div>
|
|
155
|
-
<
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
<
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
Address line 1
|
|
171
|
-
</label>
|
|
172
|
-
<input
|
|
173
|
-
id="addressLine1"
|
|
174
|
-
ref="addressLine1"
|
|
175
|
-
v-model="address.addressLine1"
|
|
176
|
-
name="addressLine1"
|
|
177
|
-
type="text"
|
|
178
|
-
class="form-field labelless"
|
|
179
|
-
placeholder="Address line 1"
|
|
180
|
-
:class="{
|
|
181
|
-
'is-danger': errors.length,
|
|
182
|
-
filled: address.addressLine1
|
|
183
|
-
}"
|
|
184
|
-
@input="validateAddress"
|
|
185
|
-
@keyup.enter="$refs.addressLine1.focus()" />
|
|
186
|
-
<span
|
|
187
|
-
v-if="errors.length"
|
|
188
|
-
class="form-help is-danger">
|
|
189
|
-
{{ errors[0] }}
|
|
190
|
-
</span>
|
|
191
|
-
</validation-provider>
|
|
192
|
-
<validation-provider
|
|
193
|
-
v-slot="{ errors }"
|
|
194
|
-
tag="div"
|
|
195
|
-
name="Address line 2"
|
|
196
|
-
class="form-row">
|
|
197
|
-
<label
|
|
198
|
-
for="addressLine2"
|
|
199
|
-
class="form-label">
|
|
200
|
-
Address line 2
|
|
201
|
-
</label>
|
|
202
|
-
<input
|
|
203
|
-
id="addressLine2"
|
|
204
|
-
ref="addressLine2"
|
|
205
|
-
v-model="address.addressLine2"
|
|
206
|
-
name="addressLine2"
|
|
207
|
-
type="text"
|
|
208
|
-
class="form-field labelless"
|
|
209
|
-
placeholder="Address line 2"
|
|
210
|
-
:class="{
|
|
211
|
-
'is-danger': errors.length,
|
|
212
|
-
filled: address.addressLine2
|
|
213
|
-
}"
|
|
214
|
-
@input="validateAddress"
|
|
215
|
-
@keyup.enter="$refs.addressLine2.focus()" />
|
|
216
|
-
<span
|
|
217
|
-
v-if="errors.length"
|
|
218
|
-
class="form-help is-danger">
|
|
219
|
-
{{ errors[0] }}
|
|
220
|
-
</span>
|
|
221
|
-
</validation-provider>
|
|
222
|
-
<validation-provider
|
|
223
|
-
v-if="!withoutAdditionalInfo"
|
|
224
|
-
v-slot="{ errors }"
|
|
225
|
-
tag="div"
|
|
213
|
+
<validation-provider
|
|
214
|
+
v-if="!withoutAdditionalInfo"
|
|
215
|
+
v-slot="{ errors }"
|
|
216
|
+
tag="div"
|
|
217
|
+
name="additionalInfo"
|
|
218
|
+
class="form-row">
|
|
219
|
+
<label
|
|
220
|
+
for="additionalInfo"
|
|
221
|
+
class="form-label">
|
|
222
|
+
Additional Info
|
|
223
|
+
</label>
|
|
224
|
+
<input
|
|
225
|
+
id="additionalInfo"
|
|
226
|
+
ref="additionalInfo"
|
|
227
|
+
v-model="address.additionalInfo"
|
|
226
228
|
name="additionalInfo"
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
:class="{
|
|
242
|
-
'is-danger': errors.length,
|
|
243
|
-
filled: address.additionalInfo
|
|
244
|
-
}"
|
|
245
|
-
@keyup.enter="$refs.additionalInfo.focus()" />
|
|
246
|
-
<span
|
|
247
|
-
v-if="errors.length"
|
|
248
|
-
class="form-help is-danger">
|
|
249
|
-
{{ errors[0] }}
|
|
250
|
-
</span>
|
|
251
|
-
</validation-provider>
|
|
252
|
-
<div class="form-row--cols">
|
|
253
|
-
<validation-provider
|
|
254
|
-
v-slot="{ errors }"
|
|
255
|
-
tag="div"
|
|
256
|
-
name="postcode"
|
|
257
|
-
class="form-col">
|
|
258
|
-
<label
|
|
259
|
-
for="postcode"
|
|
260
|
-
class="form-label">
|
|
261
|
-
Postcode
|
|
262
|
-
</label>
|
|
263
|
-
<input
|
|
264
|
-
id="postcode"
|
|
265
|
-
ref="postcode"
|
|
266
|
-
v-model="address.postcode"
|
|
267
|
-
name="postcode"
|
|
268
|
-
placeholder="Postcode"
|
|
269
|
-
type="text"
|
|
270
|
-
class="form-field labelless"
|
|
271
|
-
:class="{
|
|
272
|
-
'is-danger': errors.length,
|
|
273
|
-
filled: address.postcode
|
|
274
|
-
}" />
|
|
275
|
-
<span
|
|
276
|
-
v-if="errors.length"
|
|
277
|
-
class="form-help is-danger">
|
|
278
|
-
{{ errors[0] }}
|
|
279
|
-
</span>
|
|
280
|
-
</validation-provider>
|
|
281
|
-
<validation-provider
|
|
282
|
-
v-slot="{ errors }"
|
|
283
|
-
tag="div"
|
|
284
|
-
:name="localityLabel"
|
|
285
|
-
class="form-col">
|
|
286
|
-
<label
|
|
287
|
-
for="locality"
|
|
288
|
-
class="form-label">
|
|
289
|
-
{{ localityLabel }}
|
|
290
|
-
</label>
|
|
291
|
-
<input
|
|
292
|
-
id="locality"
|
|
293
|
-
ref="locality"
|
|
294
|
-
v-model="address.city"
|
|
295
|
-
name="locality"
|
|
296
|
-
:placeholder="localityLabel"
|
|
297
|
-
type="text"
|
|
298
|
-
class="form-field labelless"
|
|
299
|
-
:class="{
|
|
300
|
-
'is-danger': errors.length,
|
|
301
|
-
filled: address.city
|
|
302
|
-
}" />
|
|
303
|
-
<span
|
|
304
|
-
v-if="errors.length"
|
|
305
|
-
class="form-help is-danger">
|
|
306
|
-
{{ errors[0] }}
|
|
307
|
-
</span>
|
|
308
|
-
</validation-provider>
|
|
309
|
-
<validation-provider
|
|
310
|
-
v-slot="{ errors }"
|
|
311
|
-
tag="div"
|
|
312
|
-
:name="stateLabel"
|
|
313
|
-
class="form-col">
|
|
314
|
-
<label
|
|
315
|
-
for="state"
|
|
316
|
-
class="form-label">
|
|
317
|
-
{{ stateLabel }}
|
|
318
|
-
</label>
|
|
319
|
-
<input
|
|
320
|
-
id="state"
|
|
321
|
-
ref="state"
|
|
322
|
-
v-model="address.state"
|
|
323
|
-
name="state"
|
|
324
|
-
:placeholder="stateLabel"
|
|
325
|
-
type="text"
|
|
326
|
-
class="form-field labelless"
|
|
327
|
-
:class="{
|
|
328
|
-
'is-danger': errors.length,
|
|
329
|
-
filled: address.state
|
|
330
|
-
}" />
|
|
331
|
-
<span
|
|
332
|
-
v-if="errors.length"
|
|
333
|
-
class="form-help is-danger">
|
|
334
|
-
{{ errors[0] }}
|
|
335
|
-
</span>
|
|
336
|
-
</validation-provider>
|
|
337
|
-
</div>
|
|
338
|
-
</div>
|
|
229
|
+
placeholder="Additional Info"
|
|
230
|
+
type="text"
|
|
231
|
+
class="form-field labelless"
|
|
232
|
+
:class="{
|
|
233
|
+
'is-danger': errors.length,
|
|
234
|
+
filled: address.additionalInfo
|
|
235
|
+
}"
|
|
236
|
+
@keyup.enter="$refs.additionalInfo.focus()" />
|
|
237
|
+
<span
|
|
238
|
+
v-if="errors.length"
|
|
239
|
+
class="form-help is-danger">
|
|
240
|
+
{{ errors[0] }}
|
|
241
|
+
</span>
|
|
242
|
+
</validation-provider>
|
|
339
243
|
</div>
|
|
340
244
|
</div>
|
|
341
245
|
</template>
|
|
@@ -349,11 +253,6 @@ export default {
|
|
|
349
253
|
components: {
|
|
350
254
|
PostcodeSelect
|
|
351
255
|
},
|
|
352
|
-
data() {
|
|
353
|
-
return {
|
|
354
|
-
visibleFullAddress: false
|
|
355
|
-
};
|
|
356
|
-
},
|
|
357
256
|
props: {
|
|
358
257
|
address: {
|
|
359
258
|
type: Object,
|
|
@@ -365,22 +264,13 @@ export default {
|
|
|
365
264
|
}
|
|
366
265
|
},
|
|
367
266
|
computed: {
|
|
368
|
-
...mapGetters(['shop', 'country'
|
|
267
|
+
...mapGetters(['shop', 'country']),
|
|
369
268
|
...mapGetters('cart', [
|
|
370
269
|
'suburb'
|
|
371
270
|
]),
|
|
372
271
|
...mapGetters('auth', [
|
|
373
272
|
'user'
|
|
374
|
-
])
|
|
375
|
-
postcodeLabel() {
|
|
376
|
-
return this.MESSAGES?.POSTCODES_LABEL || 'Suburb';
|
|
377
|
-
},
|
|
378
|
-
localityLabel() {
|
|
379
|
-
return this.MESSAGES?.LOCALITY || 'Locality';
|
|
380
|
-
},
|
|
381
|
-
stateLabel() {
|
|
382
|
-
return this.MESSAGES?.STATE || 'State';
|
|
383
|
-
}
|
|
273
|
+
])
|
|
384
274
|
},
|
|
385
275
|
created() {
|
|
386
276
|
if (!this.address.suburb && !this.suburb && this.user?.suburb) {
|
|
@@ -407,19 +297,12 @@ export default {
|
|
|
407
297
|
this.$set(this.address, 'postcode', suburb.postcode);
|
|
408
298
|
this.$set(this.address, 'city', suburb.locality);
|
|
409
299
|
this.$set(this.address, 'country', suburb.country);
|
|
410
|
-
if (suburb.addressLine1) {
|
|
411
|
-
this.$set(this.address, 'addressLine1', suburb.addressLine1);
|
|
412
|
-
}
|
|
413
|
-
if (suburb.addressLine2) {
|
|
414
|
-
this.$set(this.address, 'addressLine2', suburb.addressLine2);
|
|
415
|
-
}
|
|
416
300
|
}
|
|
417
301
|
},
|
|
418
302
|
handleSuburbChange(suburb) {
|
|
419
|
-
this.visibleFullAddress = true;
|
|
420
303
|
this.setAddressSuburb(suburb);
|
|
421
304
|
this.setSuburb(suburb);
|
|
422
|
-
this.calculateCartPrice({ shop: this.shop, country: this.country
|
|
305
|
+
this.calculateCartPrice({ shop: this.shop, country: this.country });
|
|
423
306
|
}
|
|
424
307
|
}
|
|
425
308
|
};
|
|
@@ -427,4 +310,4 @@ export default {
|
|
|
427
310
|
|
|
428
311
|
<style lang="scss" scoped>
|
|
429
312
|
@import 'address-form.scss';
|
|
430
|
-
</style>
|
|
313
|
+
</style>
|
|
@@ -29,7 +29,7 @@ import gtm from '@lancom/shared/assets/js/utils/gtm';
|
|
|
29
29
|
import { generateOrderData } from '@lancom/shared/assets/js/utils/order';
|
|
30
30
|
import CartQuantityErrors from '@lancom/shared/components/checkout/cart/cart_quantity_errors/cart-quantity-errors';
|
|
31
31
|
import CartMixin from '@lancom/shared/components/checkout/cart/cart.mixin';
|
|
32
|
-
import AddressForm from '
|
|
32
|
+
import AddressForm from '@/components/checkout/order/address-form/address-form';
|
|
33
33
|
import ProgressStepsControls from '@lancom/shared/components/common/progress_steps/progress_steps_controls/progress-steps-controls';
|
|
34
34
|
|
|
35
35
|
export default {
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
<script>
|
|
21
21
|
import { mapMutations } from 'vuex';
|
|
22
|
-
import AddressForm from '
|
|
22
|
+
import AddressForm from '@/components/checkout/order/address-form/address-form';
|
|
23
23
|
import ProgressStepsControls from '@lancom/shared/components/common/progress_steps/progress_steps_controls/progress-steps-controls';
|
|
24
24
|
|
|
25
25
|
export default {
|
|
@@ -1,33 +1,37 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="CouponSelect__wrapper
|
|
2
|
+
<div class="CouponSelect__wrapper">
|
|
3
3
|
<validation-provider
|
|
4
4
|
tag="div"
|
|
5
5
|
name="coupon"
|
|
6
6
|
class="form-col col-half">
|
|
7
|
-
<label
|
|
8
|
-
for="coupon"
|
|
9
|
-
class="form-label">
|
|
10
|
-
{{ labelText }}
|
|
11
|
-
</label>
|
|
12
7
|
<div class="row">
|
|
13
8
|
<div class="col-7">
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
9
|
+
<div class="form-row">
|
|
10
|
+
<input
|
|
11
|
+
id="coupon"
|
|
12
|
+
ref="coupon"
|
|
13
|
+
v-model="code"
|
|
14
|
+
placeholder="Coupon"
|
|
15
|
+
name="coupon"
|
|
16
|
+
type="text"
|
|
17
|
+
class="form-field"
|
|
18
|
+
:class="{
|
|
19
|
+
'is-danger': code && notValidCoupon,
|
|
20
|
+
filled: code
|
|
21
|
+
}"
|
|
22
|
+
@keydown.enter="validateCoupon" />
|
|
23
|
+
<label
|
|
24
|
+
v-if="labelText"
|
|
25
|
+
for="coupon"
|
|
26
|
+
class="form-label label-inner"
|
|
27
|
+
style="color: #999 !important;">
|
|
28
|
+
{{ labelText }}
|
|
29
|
+
</label>
|
|
30
|
+
<span
|
|
31
|
+
v-if="value"
|
|
32
|
+
class="CouponSelect__clear"
|
|
33
|
+
@click="clearCoupon()">remove coupon</span>
|
|
34
|
+
</div>
|
|
31
35
|
</div>
|
|
32
36
|
<div class="col-5">
|
|
33
37
|
<btn
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="PostcodeSelect">
|
|
2
|
+
<div class="PostcodeSelect form-row">
|
|
3
3
|
<validation-provider
|
|
4
4
|
v-slot="{ errors }"
|
|
5
5
|
tag="div"
|
|
@@ -151,7 +151,7 @@ export default {
|
|
|
151
151
|
},
|
|
152
152
|
methods: {
|
|
153
153
|
async handleSearch(query) {
|
|
154
|
-
if (query.trim().length >
|
|
154
|
+
if (query.trim().length > 1) {
|
|
155
155
|
this.isLoading = true;
|
|
156
156
|
const country = this.codeCountry || this.country;
|
|
157
157
|
const countryName = country ? (country.isoCode === 'GB' ? 'England' : (country.name || country)) : 'Australia';
|