@lancom/shared 0.0.251 → 0.0.253

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.
Files changed (39) hide show
  1. package/assets/js/api/admin.js +11 -11
  2. package/assets/js/constants/country.js +1 -1
  3. package/assets/scss/ui_kit/_forms.scss +2 -2
  4. package/assets/scss/ui_kit/_tooltip.scss +3 -1
  5. package/assets/scss/variables/_theme.scss +3 -3
  6. package/components/checkout/cart/cart_entity/cart-entity.vue +6 -6
  7. package/components/checkout/order/address-form/address-form.vue +2 -1
  8. package/components/checkout/order/order.vue +1 -1
  9. package/components/common/breadcrumbs/breadcrumbs.vue +6 -6
  10. package/components/common/btn.vue +2 -2
  11. package/components/common/payment/payment_card/pinpayment/pinpayment.vue +34 -5
  12. package/components/common/postcode_select/postcode-select.vue +5 -1
  13. package/components/customer/signin_form/signin-form.vue +3 -3
  14. package/components/design/approve_design_header/approve-design-header.vue +1 -1
  15. package/components/editor/editor.vue +8 -2
  16. package/components/editor/editor_product_details/editor-product-details.scss +6 -0
  17. package/components/editor/editor_product_details/editor-product-details.vue +12 -2
  18. package/components/errors/404.vue +3 -3
  19. package/components/errors/500.vue +3 -3
  20. package/components/faq/faq.vue +2 -2
  21. package/components/modals/order_modal/order-modal.vue +16 -2
  22. package/components/news/news_list_item/news-list-item.vue +9 -9
  23. package/components/pricing/pricing_example/pricing-example.vue +3 -3
  24. package/components/product/printed_product_images/printed_product_image/printed-product-image.vue +5 -5
  25. package/components/products/product_list_product/product-list-product.vue +5 -5
  26. package/components/products/product_list_product_placeholder/product-list-product-placeholder.vue +3 -3
  27. package/components/products/products_autocomplete/products-autocomplete.scss +10 -12
  28. package/components/products/products_autocomplete/products-autocomplete.vue +3 -3
  29. package/components/products/products_autocomplete/products_autocomplete-item/products-autocomplete-item.vue +3 -3
  30. package/components/products/products_link/products-link.vue +3 -3
  31. package/components/products/products_types/products-types.vue +3 -3
  32. package/components/quotes/quote_request/quote-request.vue +1 -1
  33. package/components/quotes/quote_view/quote_view_product/quote-view-product.vue +3 -3
  34. package/components/the_breadcrumbs/the-breadcrumbs.vue +3 -3
  35. package/components/the_footer/the-footer.vue +8 -8
  36. package/mixins/meta-info.js +4 -1
  37. package/nuxt.config.js +3 -3
  38. package/package.json +1 -1
  39. package/store/product.js +1 -0
@@ -132,34 +132,34 @@ export default {
132
132
  return _post(`admin/orders/pick-pdf`, { orders });
133
133
  },
134
134
  saveOrderSubsequentInvoice(order, invoice) {
135
- return invoice._id ? _put(`admin/shop/${order.shop}/order/${order._id}/invoice/${invoice._id}`, invoice) : _post(`admin/shop/${order.shop}/order/${order._id}/invoice`, invoice);
135
+ return invoice._id ? _put(`admin/shop/${order.shop?._id || order.shop}/order/${order._id}/invoice/${invoice._id}`, invoice) : _post(`admin/shop/${order.shop?._id || order.shop}/order/${order._id}/invoice`, invoice);
136
136
  },
137
137
  sendOrderSubsequentInvoice(order, invoice) {
138
- return _post(`admin/shop/${order.shop}/order/${order._id}/invoice/${invoice}/send`);
138
+ return _post(`admin/shop/${order.shop?._id || order.shop}/order/${order._id}/invoice/${invoice}/send`);
139
139
  },
140
- exportOrderToStarshipit(order, shipment) {
141
- return _post(`admin/shop/${order.shop}/order/${order._id}/shipment/${shipment._id || shipment.guid}/export-to-starshipit`, shipment);
140
+ exportOrderToShippingService(order, shipment) {
141
+ return _post(`admin/shop/${order.shop?._id || order.shop}/order/${order._id}/shipment/${shipment._id || shipment.guid}/export-to-shipping-service`, shipment);
142
142
  },
143
143
  markShipmentAsDispatched(order, shipment) {
144
- return _post(`admin/shop/${order.shop}/order/${order._id}/shipment/${shipment._id || shipment.guid}/dispatched`, shipment);
144
+ return _post(`admin/shop/${order.shop?._id || order.shop}/order/${order._id}/shipment/${shipment._id || shipment.guid}/dispatched`, shipment);
145
145
  },
146
146
  markSubOrderAsDispatched(order, subOrder) {
147
- return _post(`admin/shop/${order.shop}/order/${order._id}/sub-order/${subOrder._id}/dispatched`, subOrder);
147
+ return _post(`admin/shop/${order.shop?._id || order.shop}/order/${order._id}/sub-order/${subOrder._id}/dispatched`, subOrder);
148
148
  },
149
149
  generateDuplicateOrderCode(order) {
150
150
  return _get(`admin/order/${order}/duplicate-code`);
151
151
  },
152
152
  sendShipmentTracking(order, shipment, tracking) {
153
- return _post(`admin/shop/${order.shop}/order/${order._id}/shipment/${shipment._id || shipment.guid}/tracking/${tracking._id}/send`, tracking);
153
+ return _post(`admin/shop/${order.shop?._id || order.shop}/order/${order._id}/shipment/${shipment._id || shipment.guid}/tracking/${tracking._id}/send`, tracking);
154
154
  },
155
- removeShipmentFromStarshipit(order, shipment) {
156
- return _delete(`admin/shop/${order.shop}/order/${order._id}/shipment/${shipment._id || shipment.guid}`);
155
+ removeShipment(order, shipment) {
156
+ return _delete(`admin/shop/${order.shop?._id || order.shop}/order/${order._id}/shipment/${shipment._id || shipment.guid}`);
157
157
  },
158
158
  calculateShipmentRates(order, shipment) {
159
- return _get(`admin/shop/${order.shop}/order/${order._id}/shipment/${shipment._id || shipment.guid}/calculate-shipping`);
159
+ return _get(`admin/shop/${order.shop?._id || order.shop}/order/${order._id}/shipment/${shipment._id || shipment.guid}/calculate-shipping`);
160
160
  },
161
161
  createPrintLabels(order, shipment, rate) {
162
- return _post(`admin/shop/${order.shop}/order/${order._id}/shipment/${shipment._id || shipment.guid}/print-labels`, rate);
162
+ return _post(`admin/shop/${order.shop?._id || order.shop}/order/${order._id}/shipment/${shipment._id || shipment.guid}/print-labels`, rate);
163
163
  },
164
164
  createOrderRefund(order, refund, shop) {
165
165
  return _post(`shop/${shop}/order/${order}/refund`, refund);
@@ -1,4 +1,4 @@
1
1
  export const COUNTRIES_CODES = {
2
2
  Australia: 'AU',
3
- 'United Kingdom': 'UK'
3
+ 'United Kingdom': 'GB'
4
4
  };
@@ -177,7 +177,7 @@ html[dir=rtl] .form-icon-left {
177
177
  height: 50px;
178
178
  border-width: 1px;
179
179
  border-style: solid;
180
- border-color: #EFF1F2;
180
+ border-color: $grey_3;
181
181
  border-radius: 5px;
182
182
  font-style: normal;
183
183
  font-weight: normal;
@@ -424,7 +424,7 @@ html[dir=rtl] .textarea {
424
424
  }
425
425
  &__tags {
426
426
  min-height: 50px;
427
- border: 1px solid #e5e5e5;
427
+ border: 1px solid $grey_3;
428
428
  border-radius: 8px !important;
429
429
  padding: 19px 3px 4px 20px;
430
430
  }
@@ -1,3 +1,5 @@
1
+ @import "@/assets/scss/variables";
2
+
1
3
  .tooltip {
2
4
  display: block !important;
3
5
  z-index: 10000;
@@ -25,7 +27,7 @@
25
27
  &.white &-inner {
26
28
  background: #FFF !important;
27
29
  color: #575872 !important;
28
- border: 1px solid #EFF1F2 !important;
30
+ border: 1px solid $grey_3 !important;
29
31
  }
30
32
  &.white &-arrow {
31
33
  border-color: #FFF !important;
@@ -15,7 +15,7 @@ $white_high_emphasis: #FFFFFF;
15
15
  $white_medium_emphasis: rgba(255, 255, 255, .66);
16
16
  $gray: #575872 !default;
17
17
  $medium_gray: #B0B0BA !default;
18
- $light_gray: #F9F9FC !default;
18
+ $light_gray: #F9F9FC;
19
19
  $link: #5D89A9;
20
20
  $error: #E44868;
21
21
  $secondary_900: #20303C;
@@ -52,8 +52,8 @@ $black: #343750 !default;
52
52
  $gray_main: #616277 !default;
53
53
  $grey_1: #616277 !default;
54
54
  $grey_2: #B0B0BA !default;
55
- $grey_3: #EFF1F2 !default;
56
- $grey_4: #F9F9FC !default;
55
+ $grey_3: #EFF1F2;
56
+ $grey_4: #F9F9FC;
57
57
  $grey_5: #9898A5 !default;
58
58
 
59
59
  $white: #fff;
@@ -2,11 +2,11 @@
2
2
  <div class="CartEntity__wrapper">
3
3
  <div class="CartEntity__info">
4
4
  <div class="lc_title">
5
- <nuxt-link
5
+ <a
6
6
  class="CartEntity__link"
7
- :to="productLink">
7
+ :href="productLink">
8
8
  {{ product.name }}
9
- </nuxt-link>
9
+ </a>
10
10
  </div>
11
11
  <div
12
12
  v-if="product.sameDayDispatch"
@@ -15,11 +15,11 @@
15
15
  <span class="CartEntity__same-day-dispatch"></span>
16
16
  <span>
17
17
  This product qualifies for same day dispatch.
18
- <nuxt-link
18
+ <a
19
19
  class="lc_black"
20
- to="/faq?group=delivery&id=636f6b3fc305bd0304700d1f">
20
+ href="/faq?group=delivery&id=636f6b3fc305bd0304700d1f">
21
21
  read more
22
- </nuxt-link>
22
+ </a>
23
23
  </span>
24
24
  </div>
25
25
  </div>
@@ -203,7 +203,7 @@
203
203
  <input
204
204
  id="country"
205
205
  ref="country"
206
- value="Only Australia"
206
+ :value="address.country === 'Australia' ? 'Only Australia' : address.country"
207
207
  name="country"
208
208
  type="country"
209
209
  class="form-field filled labelless"
@@ -296,6 +296,7 @@ export default {
296
296
  this.$set(this.address, 'state', suburb.state);
297
297
  this.$set(this.address, 'postcode', suburb.postcode);
298
298
  this.$set(this.address, 'city', suburb.locality);
299
+ this.$set(this.address, 'country', suburb.country);
299
300
  }
300
301
  },
301
302
  handleSuburbChange(suburb) {
@@ -98,7 +98,7 @@ export default {
98
98
  company: null,
99
99
  additionalInfo: null,
100
100
  suburb: null,
101
- country: 'Australia',
101
+ country: null,
102
102
  state: null,
103
103
  postcode: null
104
104
  };
@@ -3,11 +3,11 @@
3
3
  v-if="hasBreadcrumbs"
4
4
  class="Breadcrumbs__wrapper">
5
5
  <div class="Breadcrumbs__item-wrapper">
6
- <nuxt-link
6
+ <a
7
7
  class="Breadcrumbs__item"
8
- to="/">
8
+ href="/">
9
9
  Home
10
- </nuxt-link>
10
+ </a>
11
11
  <span class="Breadcrumbs__divider">
12
12
  {{ divider }}
13
13
  </span>
@@ -16,12 +16,12 @@
16
16
  v-for="(item, index) in items"
17
17
  :key="index"
18
18
  class="Breadcrumbs__item-wrapper">
19
- <nuxt-link
19
+ <a
20
20
  v-if="item.to"
21
21
  class="Breadcrumbs__item"
22
- :to="item.to">
22
+ :href="item.to">
23
23
  {{ item.text }}
24
- </nuxt-link>
24
+ </a>
25
25
  <span
26
26
  v-else
27
27
  class="Breadcrumbs__item">
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <component
3
- :is="to ? 'nuxt-link' : (btnType || btnTag || 'div')"
3
+ :is="to ? 'a' : (btnType || btnTag || 'div')"
4
4
  :type="btnType"
5
5
  class="Btn__wrapper"
6
6
  :class="{
@@ -12,7 +12,7 @@
12
12
  'icon-after': $slots['icon-after'],
13
13
  icon: $slots.icon
14
14
  }"
15
- :to="to"
15
+ :href="to"
16
16
  @click.stop="$emit('onclick');">
17
17
  <transition name="scale" mode="out-in" appear>
18
18
  <div
@@ -86,6 +86,8 @@
86
86
  </template>
87
87
 
88
88
  <script>
89
+ let interval = null;
90
+
89
91
  export default {
90
92
  name: 'Payment',
91
93
  props: {
@@ -108,14 +110,17 @@ export default {
108
110
  fields: null
109
111
  };
110
112
  },
111
- mounted() {
113
+ async mounted() {
112
114
  this.loading = true;
115
+
116
+ await this.preloadPinpayments();
117
+
113
118
  if (window.HostedFields) {
114
- this.initHostedPayment();
119
+ await this.initHostedPayment();
115
120
  } else {
116
- window.addEventListener('load', () => {
121
+ window.addEventListener('load', async () => {
117
122
  if (!this.fields) {
118
- this.initHostedPayment();
123
+ await this.initHostedPayment();
119
124
  }
120
125
  });
121
126
  }
@@ -194,7 +199,31 @@ export default {
194
199
  }
195
200
  );
196
201
  });
197
- }
202
+ },
203
+ async preloadPinpayments() {
204
+ if (!window.HostedFields) {
205
+ clearInterval(interval);
206
+ await this.loadPinpayments();
207
+ await new Promise((resolve, reject) => {
208
+ interval = setInterval(() => {
209
+ if (window.HostedFields) {
210
+ clearInterval(interval);
211
+ resolve()
212
+ }
213
+ }, 100);
214
+ });
215
+ }
216
+ },
217
+ loadPinpayments() {
218
+ return new Promise((resolve) => {
219
+ const script = document.createElement('script');
220
+ script.type = "text/javascript";
221
+ script.src = 'https://cdn.pinpayments.com/pin.hosted_fields.v1.js';
222
+ script.onload = () => resolve();
223
+ const body = document.getElementsByTagName('body')[0];
224
+ body.appendChild(script);
225
+ });
226
+ }
198
227
  }
199
228
  };
200
229
  </script>
@@ -88,6 +88,9 @@ export default {
88
88
  },
89
89
  filters: { highlight },
90
90
  props: {
91
+ country: {
92
+ type: Object
93
+ },
91
94
  value: {
92
95
  type: String
93
96
  },
@@ -147,7 +150,8 @@ export default {
147
150
  async handleSearch(query) {
148
151
  if (query.length) {
149
152
  this.isLoading = true;
150
- this.suburbs = await api.fetchSuburbs({ query });
153
+ const country = this.country ? (this.country.isoCode === 'GB' ? 'England' : (this.country.name || this.country)) : 'Australia';
154
+ this.suburbs = await api.fetchSuburbs({ query, country });
151
155
  this.options = this.suburbs.map(this.createOptionFromSuburb);
152
156
  this.isLoading = false;
153
157
  } else {
@@ -68,11 +68,11 @@
68
68
  </validation-provider>
69
69
  </div>
70
70
  </div>
71
- <nuxt-link
72
- to="/customer/recovery"
71
+ <a
72
+ href="/customer/recovery"
73
73
  class="SignInFrom__recovery">
74
74
  Forgot Password?
75
- </nuxt-link>
75
+ </a>
76
76
  </div>
77
77
  <div class="form__footer">
78
78
  <div
@@ -36,7 +36,7 @@
36
36
  {{ order.postcode }},
37
37
  {{ order.state }},
38
38
  {{ order.city }},
39
- Australia
39
+ {{ order.country || 'Australia'}}
40
40
  </span>
41
41
  </div>
42
42
  </div>
@@ -18,7 +18,9 @@
18
18
  </component>
19
19
  </template>
20
20
  </tabs>
21
- <div class="Editor__footer">
21
+ <div
22
+ v-if="productAvailableInCurrentCountry"
23
+ class="Editor__footer">
22
24
  <btn
23
25
  btn-label="Start again"
24
26
  btn-class="white"
@@ -135,8 +137,12 @@ export default {
135
137
  ...mapGetters('layers', [
136
138
  'layerThumbnails'
137
139
  ]),
140
+ productAvailableInCurrentCountry() {
141
+ const { countries } = this.product;
142
+ return !(countries || []).length || countries.includes(this.country._id);
143
+ },
138
144
  addToCartDisabled() {
139
- return !(this.template.layers.length && this.usedSimpleProducts.length);
145
+ return !this.usedSimpleProducts.length || (this.product.printOnly && !this.template.layers.length);
140
146
  }
141
147
  },
142
148
  watch: {
@@ -47,4 +47,10 @@
47
47
  text-align: center;
48
48
  }
49
49
  }
50
+ &__available-warning {
51
+ background-color: $error;
52
+ color: $white;
53
+ padding: 10px;
54
+ margin-top: 10px;
55
+ }
50
56
  }
@@ -61,8 +61,13 @@
61
61
  </div>
62
62
  </div>
63
63
  </div>
64
+ <div
65
+ v-if="!productAvailableInCurrentCountry"
66
+ class="EditorProductDetails__available-warning">
67
+ Product Not Available in {{ country.name }}
68
+ </div>
64
69
  <fragment
65
- v-if="productDetailsLoaded">
70
+ v-if="productDetailsLoaded && productAvailableInCurrentCountry">
66
71
  <div class="EditorProductDetails__section">
67
72
  <product-colors-selector />
68
73
  </div>
@@ -112,8 +117,13 @@ export default {
112
117
  'layerThumbnails'
113
118
  ]),
114
119
  ...mapGetters([
115
- 'pricingSettings'
120
+ 'pricingSettings',
121
+ 'country'
116
122
  ]),
123
+ productAvailableInCurrentCountry() {
124
+ const { countries } = this.product;
125
+ return !(countries || []).length || countries.includes(this.country._id);
126
+ },
117
127
  productLink() {
118
128
  return generateProductLink(this.product);
119
129
  },
@@ -13,11 +13,11 @@
13
13
  The link you clicked on may be broken or no longer exist.
14
14
  </p>
15
15
  <div class="mt-10">
16
- <nuxt-link
17
- to="/"
16
+ <a
17
+ href="/"
18
18
  class="form-button btn-green">
19
19
  Home page
20
- </nuxt-link>
20
+ </a>
21
21
  </div>
22
22
  </div>
23
23
  </template>
@@ -13,11 +13,11 @@
13
13
  Internal Server Error
14
14
  </p>
15
15
  <div class="mt-10">
16
- <nuxt-link
17
- to="/"
16
+ <a
17
+ href="/"
18
18
  class="form-button btn-green">
19
19
  Home page
20
- </nuxt-link>
20
+ </a>
21
21
  </div>
22
22
  </div>
23
23
  </template>
@@ -111,7 +111,7 @@ export default {
111
111
  </script>
112
112
 
113
113
  <style lang="scss">
114
- @import "@lancom/shared/assets/scss/variables";
114
+ @import "@/assets/scss/variables";
115
115
  $types: delivery, general, other, printing, garments;
116
116
  .FAQ {
117
117
  &__wrapper {
@@ -218,7 +218,7 @@ $types: delivery, general, other, printing, garments;
218
218
  &-body {
219
219
  padding: 6px 30px 24px 30px;
220
220
  line-height: 27px;
221
- color: $gray;
221
+ color: $grey_1;
222
222
  overflow: hidden;
223
223
  @import "@lancom/shared/assets/scss/normalize";
224
224
  }
@@ -127,11 +127,11 @@
127
127
  {{ errors[0] }}
128
128
  </span>
129
129
  </validation-provider>
130
- <div class="form-row">
130
+ <div v-if="suburb" class="form-row">
131
131
  <input
132
132
  id="country"
133
133
  ref="country"
134
- value="Only Australia"
134
+ :value="suburb.country"
135
135
  name="country"
136
136
  type="country"
137
137
  class="form-field filled labelless"
@@ -303,6 +303,9 @@ export default {
303
303
  mounted() {
304
304
  if (this.orderData) {
305
305
  this.form = {
306
+ state: null,
307
+ country: null,
308
+ postcode: null,
306
309
  city: this.orderData.city,
307
310
  phone: this.orderData.phone,
308
311
  addressLine1: this.orderData.addressLine1,
@@ -325,8 +328,18 @@ export default {
325
328
  ...mapActions('cart', [
326
329
  'calculateCartPrice'
327
330
  ]),
331
+ setAddressSuburb(suburb) {
332
+ this.$set(this.form, 'suburb', suburb);
333
+ if (suburb) {
334
+ this.$set(this.form, 'state', suburb.state);
335
+ this.$set(this.form, 'postcode', suburb.postcode);
336
+ this.$set(this.form, 'city', suburb.locality);
337
+ this.$set(this.form, 'country', suburb.country);
338
+ }
339
+ },
328
340
  handleSuburbChange(suburb) {
329
341
  this.form.suburb = suburb;
342
+ this.setAddressSuburb(suburb);
330
343
  this.setSuburb(suburb);
331
344
  this.calculateCartPrice({ shop: this.shop });
332
345
  },
@@ -335,6 +348,7 @@ export default {
335
348
  },
336
349
  async submit() {
337
350
  try {
351
+ debugger;
338
352
  this.processing = true;
339
353
  const recaptchaToken = await this.getRecaptcha('create_order');
340
354
  await this.createOrder({
@@ -2,20 +2,20 @@
2
2
  <article
3
3
  class="NewsListItem__wrapper"
4
4
  :style="{ backgroundImage }">
5
- <nuxt-link
5
+ <a
6
6
  class="NewsListItem__overlay"
7
- :to="{ path: linkToNews }"
8
- :title="item.title"></nuxt-link>
7
+ :href="linkToNews"
8
+ :title="item.title"></a>
9
9
  <div class="NewsListItem__info">
10
10
  <template v-if="!item.isHiddenThumbLink">
11
11
  <h3>
12
- <nuxt-link
13
- :to="{ path: linkToNews }"
12
+ <a
13
+ :href="linkToNews"
14
14
  class="NewsListItem__link"
15
15
  :style="{ color: item.color }"
16
16
  :title="item.title">
17
17
  {{ item.title }}
18
- </nuxt-link>
18
+ </a>
19
19
  </h3>
20
20
  <div
21
21
  class="NewsListItem__text"
@@ -29,12 +29,12 @@
29
29
  {{ item.createdAt | date }}
30
30
  </div>
31
31
  </div>
32
- <nuxt-link
33
- :to="{ path: linkToNews }"
32
+ <a
33
+ :href="linkToNews"
34
34
  class="NewsListItem__more"
35
35
  :title="item.title">
36
36
  <span>Read More</span>
37
- </nuxt-link>
37
+ </a>
38
38
  </article>
39
39
  </template>
40
40
 
@@ -29,11 +29,11 @@
29
29
  </div>
30
30
  <div class="PricingExample__faq-link-container">
31
31
  Check our
32
- <nuxt-link
33
- to="/faq?group=pricing&id=1"
32
+ <a
33
+ href="/faq?group=pricing&id=1"
34
34
  class="PricingExample__faq-link">
35
35
  Pricing FAQ
36
- </nuxt-link>
36
+ </a>
37
37
  </div>
38
38
  </div>
39
39
  <div
@@ -1,18 +1,18 @@
1
1
  <template>
2
2
  <div
3
3
  class="PrintedProductImage__wrapper">
4
- <nuxt-link
5
- :to="imageLink"
4
+ <a
5
+ :href="imageLink"
6
6
  class="PrintedProductImage__link">
7
7
  <div
8
8
  v-if="productСover"
9
9
  class="PrintedProductImage__link-cover"
10
10
  :style="productСoverBg"></div>
11
- </nuxt-link>
11
+ </a>
12
12
  <div class="PrintedProductImage__content">
13
- <nuxt-link :to="imageLink">
13
+ <a :href="imageLink">
14
14
  {{ image.description }}
15
- </nuxt-link>
15
+ </a>
16
16
  </div>
17
17
  </div>
18
18
  </template>
@@ -4,8 +4,8 @@
4
4
  :class="{
5
5
  'ProductListProduct__wrapper--full': full,
6
6
  }">
7
- <nuxt-link
8
- :to="productLink"
7
+ <a
8
+ :href="productLink"
9
9
  class="ProductListProduct__link">
10
10
  <img
11
11
  v-if="productBrand"
@@ -38,10 +38,10 @@
38
38
  <div class="ProductListProduct__gender">
39
39
  <span>{{ product.gender }}</span>
40
40
  </div>
41
- </nuxt-link>
41
+ </a>
42
42
  <div class="ProductListProduct__info">
43
43
  <div class="ProductListProduct__info-item">
44
- <nuxt-link :to="productLink" class="lc_h4 row">
44
+ <a :href="productLink" class="lc_h4 row">
45
45
  <div>
46
46
  <v-popover trigger="hover">
47
47
  <span class="ProductListProduct__info-name">
@@ -55,7 +55,7 @@
55
55
  <div>
56
56
  | {{ product.SKU }}
57
57
  </div>
58
- </nuxt-link>
58
+ </a>
59
59
  </div>
60
60
  <div
61
61
  v-if="product.minPrice === product.maxPrice"
@@ -1,14 +1,14 @@
1
1
  <template>
2
2
  <div class="ProductListProductPlaceholder__wrapper">
3
- <nuxt-link
4
- :to="productLink"
3
+ <a
4
+ :href="productLink"
5
5
  class="ProductListProductPlaceholder__link">
6
6
  <span class="ProductListProductPlaceholder__image"></span>
7
7
  <span class="ProductListProductPlaceholder__info ProductListProductPlaceholder__info--large"></span>
8
8
  <span class="ProductListProductPlaceholder__info ProductListProductPlaceholder__info--medium"></span>
9
9
  <span class="ProductListProductPlaceholder__info ProductListProductPlaceholder__info--small"></span>
10
10
  {{ product.name }}
11
- </nuxt-link>
11
+ </a>
12
12
  </div>
13
13
  </template>
14
14
 
@@ -10,20 +10,21 @@
10
10
  right: 0;
11
11
  top: 41px;
12
12
  padding: 10px;
13
- background-color: $black;
14
- color: $white;
13
+ background-color: white;
14
+ border: 1px solid $medium_gray;
15
+ z-index: 999;
15
16
  }
16
17
  &__result-item {
17
18
  padding-bottom: 10px;
18
19
  margin-bottom: 10px;
19
- border-bottom: 1px solid $gray_main;
20
+ border-bottom: 1px solid $medium_gray;
20
21
  &:last-child {
21
22
  border-bottom: none;
22
23
  margin-bottom: 0px;
23
24
  }
24
25
  ::v-deep {
25
26
  a {
26
- color: $white;
27
+ color: $gray_main;
27
28
  font-size: 13px;
28
29
  text-decoration: none;
29
30
  }
@@ -33,24 +34,22 @@
33
34
  padding: 10px;
34
35
  text-align: center;
35
36
  display: block;
36
- background-color: $white;
37
+ background-color: $black;
38
+ color: $white !important;
37
39
  &:hover {
38
- background-color: $black;
39
- color: $white;
40
+ background-color: $white;
41
+ color: $black !important;
40
42
  }
41
43
  }
42
44
  }
43
45
  &__input {
44
46
  input {
45
- background-color: #535353;
46
- border: none;
47
+ border-color: $medium_gray;
47
48
  border-radius: 0px;
48
- color: $white;
49
49
  height: 41px;
50
50
  position: relative;
51
51
  z-index: 1;
52
52
  &::placeholder {
53
- font-weight: 600;
54
53
  font-size: 14px;
55
54
  color: $grey_3;
56
55
  }
@@ -61,7 +60,6 @@
61
60
  right: 10px;
62
61
  font-size: 17px;
63
62
  pointer-events: none;
64
- color: $white;
65
63
  &.icon-search {
66
64
  z-index: 2;
67
65
  pointer-events: all;
@@ -28,11 +28,11 @@
28
28
  </div>
29
29
  <div v-if="hasProducts">
30
30
  <div class="ProductsAutocomplete__result-item">
31
- <nuxt-link
31
+ <a
32
32
  class="ProductsAutocomplete__result-item-all"
33
- :to="fullSearchLink">
33
+ :href="fullSearchLink">
34
34
  click to see all results
35
- </nuxt-link>
35
+ </a>
36
36
  </div>
37
37
  <products-autocomplete-item
38
38
  v-for="product of products"
@@ -1,10 +1,10 @@
1
1
  <template>
2
2
  <div @click="$emit('select', product)">
3
- <nuxt-link
4
- :to="productLink"
3
+ <a
4
+ :href="productLink"
5
5
  class="ProductListProduct__link">
6
6
  {{ product.SKU }} - {{ product.name }}
7
- </nuxt-link>
7
+ </a>
8
8
  </div>
9
9
  </template>
10
10
 
@@ -1,10 +1,10 @@
1
1
  <template>
2
- <nuxt-link
3
- :to="link"
2
+ <a
3
+ :href="link"
4
4
  class="ProductsLink"
5
5
  rel=”nofollow”>
6
6
  <slot></slot>
7
- </nuxt-link>
7
+ </a>
8
8
  </template>
9
9
 
10
10
  <script>
@@ -8,8 +8,8 @@
8
8
  :class="{
9
9
  'ProductsTypes__item--active': type.alias === currentType
10
10
  }">
11
- <nuxt-link
12
- :to="`/products${type.alias === currentType ? '' : `/${type.alias}`}`"
11
+ <a
12
+ :href="`/products${type.alias === currentType ? '' : `/${type.alias}`}`"
13
13
  class="ProductsTypes__more">
14
14
  <checked-icon
15
15
  v-if="hasSelectedIcon"
@@ -25,7 +25,7 @@
25
25
  v-else-if="hasThumbs"
26
26
  :class="`icon-${type.alias}`"></i>
27
27
  {{ type.name }}
28
- </nuxt-link>
28
+ </a>
29
29
  </div>
30
30
  </toggle-content>
31
31
  </div>
@@ -354,7 +354,7 @@ export default {
354
354
  email: '',
355
355
  phone: '',
356
356
  suburb: null,
357
- country: 'Australia'
357
+ country: null
358
358
  },
359
359
  expectedItemsQuantity: null,
360
360
  description: '',
@@ -6,12 +6,12 @@
6
6
  class="lc_title">
7
7
  {{ product.SKU }}
8
8
  </div>
9
- <nuxt-link
9
+ <a
10
10
  v-else
11
11
  class="QuoteViewProduct__link lc_title"
12
- :to="productLink">
12
+ :href="productLink">
13
13
  {{ product.product.name }}
14
- </nuxt-link>
14
+ </a>
15
15
  <div
16
16
  v-if="!product.isCustom"
17
17
  class="QuoteViewProduct__features">
@@ -12,11 +12,11 @@
12
12
  :key="i"
13
13
  class="TheBreadcrumbs__step lc_regular14"
14
14
  :class="item.classes">
15
- <nuxt-link
15
+ <a
16
16
  v-if="item.path"
17
- :to="item.path">
17
+ :href="item.path">
18
18
  {{ item.name }}
19
- </nuxt-link>
19
+ </a>
20
20
  <span v-else>
21
21
  {{ item.name }}
22
22
  </span>
@@ -4,11 +4,11 @@
4
4
  <div class="row">
5
5
  <div class="col-sm-4 col-12">
6
6
  <div class="TheFooter__col--left">
7
- <nuxt-link to="/">
7
+ <a href="/">
8
8
  <img
9
9
  class="TheFooter__logo"
10
10
  src="~static/images/logo.svg" />
11
- </nuxt-link>
11
+ </a>
12
12
  <div class="TheFooter__payment-methods">
13
13
  <span class="TheFooter__payment-methods-label">
14
14
  Payment methods we accept:
@@ -29,22 +29,22 @@
29
29
  <div class="TheFooter__nav-wrapper">
30
30
  <ul class="TheFooter__nav">
31
31
  <li>
32
- <nuxt-link
33
- to="/pricing"
32
+ <a
33
+ href="/pricing"
34
34
  active-class="active"
35
35
  class="TheFooter__nav-item">
36
36
  Pricing
37
- </nuxt-link>
37
+ </a>
38
38
  </li>
39
39
  </ul>
40
40
  <ul class="TheFooter__nav">
41
41
  <li>
42
- <nuxt-link
43
- to="/faq"
42
+ <a
43
+ href="/faq"
44
44
  active-class="active"
45
45
  class="TheFooter__nav-item">
46
46
  FAQ
47
- </nuxt-link>
47
+ </a>
48
48
  </li>
49
49
  </ul>
50
50
  </div>
@@ -34,7 +34,10 @@ const metaInfo = {
34
34
  }
35
35
  },
36
36
  head() {
37
- const hasQueryParams = Object.keys(this.$route.query || {}).length > 0;
37
+ const hasQueryParams = Object
38
+ .keys(this.$route.query || {})
39
+ .filter(key => !['color', 'store'].includes(`${key || ''}`.toLowerCase()))
40
+ .length > 0;
38
41
 
39
42
  const { short_text: shortText, image, meta = {} } = this.routeInfo || {};
40
43
  const pageItemMeta = this.pageItem?.meta || {};
package/nuxt.config.js CHANGED
@@ -91,9 +91,9 @@ module.exports = (config, axios, { raygunClient, publicPath } = {}) => ({
91
91
  },
92
92
  build: {
93
93
  splitChunks: {
94
- layouts: true,
95
- pages: true,
96
- commons: true
94
+ layouts: false,
95
+ pages: false,
96
+ commons: false
97
97
  },
98
98
  publicPath: publicPath || '/client/',
99
99
  postcss: null,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lancom/shared",
3
- "version": "0.0.251",
3
+ "version": "0.0.253",
4
4
  "description": "lancom common scripts",
5
5
  "author": "e.tokovenko <e.tokovenko@gmail.com>",
6
6
  "repository": {
package/store/product.js CHANGED
@@ -160,6 +160,7 @@ export const actions = {
160
160
  commit('setSelectedPrintArea', { printArea: first._id, size: first.printSize });
161
161
  }
162
162
  } catch (e) {
163
+ console.log(e);
163
164
  const { status, data } = e?.response || {};
164
165
  const statusCode = status || 500;
165
166
  commit('setLoadError', {