@lancom/shared 0.0.456 → 0.0.458

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 (61) hide show
  1. package/assets/js/api/admin.js +12 -0
  2. package/components/products/products_aside/products-aside.vue +5 -0
  3. package/components/products/products_color_groups/products-color-groups.scss +69 -0
  4. package/components/products/products_color_groups/products-color-groups.vue +101 -0
  5. package/components/products/products_link/products-link.vue +4 -0
  6. package/components/quotes/quote_view/quote-view.scss +76 -22
  7. package/components/quotes/quote_view/quote-view.vue +79 -91
  8. package/components/quotes/quote_view/quote_option_view/quote-option-view.scss +103 -4
  9. package/components/quotes/quote_view/quote_option_view/quote-option-view.vue +202 -26
  10. package/components/quotes/quote_view/quote_view_accept/quote-view-accept.scss +33 -0
  11. package/components/quotes/quote_view/quote_view_accept/quote-view-accept.vue +85 -0
  12. package/components/quotes/quote_view/quote_view_address_form/quote-view-address-form.scss +17 -0
  13. package/components/quotes/quote_view/quote_view_address_form/quote-view-address-form.vue +259 -0
  14. package/components/quotes/quote_view/quote_view_banner/quote-view-banner.scss +67 -0
  15. package/components/quotes/quote_view/quote_view_banner/quote-view-banner.vue +69 -0
  16. package/components/quotes/quote_view/quote_view_billing_information/quote-view-billing-information.scss +5 -0
  17. package/components/quotes/quote_view/quote_view_billing_information/quote-view-billing-information.vue +108 -0
  18. package/components/quotes/quote_view/quote_view_header/quote-view-header.scss +65 -0
  19. package/components/quotes/quote_view/quote_view_header/quote-view-header.vue +69 -0
  20. package/components/quotes/quote_view/quote_view_info/quote-view-info.scss +36 -0
  21. package/components/quotes/quote_view/quote_view_info/quote-view-info.vue +42 -0
  22. package/components/quotes/quote_view/quote_view_invalid_stock_modal/quote-view-invalid-stock-modal.scss +17 -0
  23. package/components/quotes/quote_view/quote_view_invalid_stock_modal/quote-view-invalid-stock-modal.vue +29 -0
  24. package/components/quotes/quote_view/quote_view_menu/quote-view-menu.scss +74 -0
  25. package/components/quotes/quote_view/quote_view_menu/quote-view-menu.vue +102 -0
  26. package/components/quotes/quote_view/quote_view_message/quote-view-message.scss +53 -0
  27. package/components/quotes/quote_view/quote_view_message/quote-view-message.vue +40 -0
  28. package/components/quotes/quote_view/quote_view_mobile_menu/quote-view-mobile-menu.scss +1 -0
  29. package/components/quotes/quote_view/quote_view_mobile_menu/quote-view-mobile-menu.vue +23 -0
  30. package/components/quotes/quote_view/quote_view_payment/quote-view-payment.scss +58 -0
  31. package/components/quotes/quote_view/quote_view_payment/quote-view-payment.vue +191 -0
  32. package/components/quotes/quote_view/quote_view_payment/quote_payment_success/quote-payment-success.scss +40 -0
  33. package/components/quotes/quote_view/quote_view_payment/quote_payment_success/quote-payment-success.vue +50 -0
  34. package/components/quotes/quote_view/quote_view_payment_modal/quote-view-payment-modal.scss +10 -0
  35. package/components/quotes/quote_view/quote_view_payment_modal/quote-view-payment-modal.vue +49 -0
  36. package/components/quotes/quote_view/quote_view_print/quote-view-print.scss +54 -0
  37. package/components/quotes/quote_view/quote_view_print/quote-view-print.vue +74 -0
  38. package/components/quotes/quote_view/quote_view_question/quote-view-question.scss +84 -0
  39. package/components/quotes/quote_view/quote_view_question/quote-view-question.vue +203 -0
  40. package/components/quotes/quote_view/quote_view_questions/quote-view-questions.scss +39 -0
  41. package/components/quotes/quote_view/quote_view_questions/quote-view-questions.vue +50 -0
  42. package/components/quotes/quote_view_preview/quote-view.scss +29 -0
  43. package/components/quotes/quote_view_preview/quote-view.vue +121 -0
  44. package/components/quotes/quote_view_preview/quote_option_view/quote-option-view.scss +10 -0
  45. package/components/quotes/quote_view_preview/quote_option_view/quote-option-view.vue +73 -0
  46. package/package.json +1 -1
  47. package/pages/quotes/view/_id/option/_option.vue +1 -1
  48. package/plugins/crisp.js +13 -0
  49. package/store/products.js +11 -2
  50. /package/components/quotes/{quote_view → quote_view_preview}/quote-view.mixin.js +0 -0
  51. /package/components/quotes/{quote_view → quote_view_preview}/quote_product_color_simple_products/quote-product-color-simple-products.mixin.js +0 -0
  52. /package/components/quotes/{quote_view → quote_view_preview}/quote_product_color_simple_products/quote-product-color-simple-products.scss +0 -0
  53. /package/components/quotes/{quote_view → quote_view_preview}/quote_product_color_simple_products/quote-product-color-simple-products.vue +0 -0
  54. /package/components/quotes/{quote_view → quote_view_preview}/quote_product_color_simple_products/quote_product_color_simple_product/quote-product-color-simple-product.scss +0 -0
  55. /package/components/quotes/{quote_view → quote_view_preview}/quote_product_color_simple_products/quote_product_color_simple_product/quote-product-color-simple-product.vue +0 -0
  56. /package/components/quotes/{quote_view → quote_view_preview}/quote_product_prints/quote-product-prints.scss +0 -0
  57. /package/components/quotes/{quote_view → quote_view_preview}/quote_product_prints/quote-product-prints.vue +0 -0
  58. /package/components/quotes/{quote_view → quote_view_preview}/quote_product_prints/quote_product_print/quote-product-print.scss +0 -0
  59. /package/components/quotes/{quote_view → quote_view_preview}/quote_product_prints/quote_product_print/quote-product-print.vue +0 -0
  60. /package/components/quotes/{quote_view → quote_view_preview}/quote_view_product/quote-view-product.scss +0 -0
  61. /package/components/quotes/{quote_view → quote_view_preview}/quote_view_product/quote-view-product.vue +0 -0
@@ -714,6 +714,18 @@ export default {
714
714
  removeProductColor(id) {
715
715
  return _delete(`admin/colors/${id}`);
716
716
  },
717
+ async fetchColorGroups() {
718
+ return sortByName(await _get('admin/color-groups'));
719
+ },
720
+ fetchColorGroupById(id) {
721
+ return _get(`admin/color-groups/${id}`);
722
+ },
723
+ saveColorGroup(colorGroup) {
724
+ return colorGroup._id ? _put(`admin/color-groups/${colorGroup._id}`, colorGroup) : _post('admin/color-groups', colorGroup);
725
+ },
726
+ removeColorGroup(id) {
727
+ return _delete(`admin/color-groups/${id}`);
728
+ },
717
729
  async fetchProductSizes() {
718
730
  return sortSizes(await _get('admin/sizes'));
719
731
  },
@@ -37,6 +37,9 @@
37
37
  :has-selected-icon="hasSelectedIcon"
38
38
  :selected-icon-circle="selectedIconCircle" />
39
39
  </div>
40
+ <div class="ProductsAside__item">
41
+ <products-color-groups />
42
+ </div>
40
43
  <div class="ProductsAside__item">
41
44
  <products-colors />
42
45
  </div>
@@ -58,6 +61,7 @@ import ProductsBrands from '@lancom/shared/components/products/products_brands/p
58
61
  import ProductsTags from '@lancom/shared/components/products/products_tags/products-tags';
59
62
  import ProductsAttributes from '@lancom/shared/components/products/products_attributes/products-attributes';
60
63
  import ProductsColors from '@lancom/shared/components/products/products_colors/products-colors';
64
+ import ProductsColorGroups from '@lancom/shared/components/products/products_color_groups/products-color-groups';
61
65
  import ProductsProductionTime from '@lancom/shared/components/products/products_production_time/products-production-time';
62
66
  import ProductsMinimumQty from '@lancom/shared/components/products/products_minimum_qty/products-minimum-qty';
63
67
  import { generateProductsLink } from '@lancom/shared/assets/js/utils/product';
@@ -70,6 +74,7 @@ export default {
70
74
  ProductsTags,
71
75
  ProductsAttributes,
72
76
  ProductsColors,
77
+ ProductsColorGroups,
73
78
  ProductsProductionTime,
74
79
  ProductsMinimumQty
75
80
  },
@@ -0,0 +1,69 @@
1
+ @import "@/assets/scss/variables";
2
+
3
+ .ProductsColorGroups {
4
+ &__header {
5
+ font-size: 22px;
6
+ line-height: 20px;
7
+ font-weight: 600;
8
+ margin-top: 3px;
9
+ margin-bottom: 24px;
10
+ color: $black;
11
+ }
12
+ &__selected-item {
13
+ display: flex;
14
+ align-items: center;
15
+ font-size: 12px;
16
+ font-weight: bold;
17
+ margin: 12px 0;
18
+ padding-top: 4px;
19
+ color: $grey_1;
20
+ i {
21
+ font-size: 22px;
22
+ }
23
+ a {
24
+ color: $grey_1;
25
+ }
26
+ }
27
+ &__selected-name {
28
+ flex-grow: 1;
29
+ margin-left: 14px;
30
+ text-transform: uppercase;
31
+ }
32
+ &__selected-cancel {
33
+ cursor: pointer;
34
+ }
35
+ &__color-group {
36
+ padding: 2px;
37
+ border: 2px solid $white;
38
+ width: 36px;
39
+ height: 36px;
40
+ border-radius: 13px;
41
+ overflow: hidden;
42
+ flex-shrink: 0;
43
+ &-image {
44
+ width: 100%;
45
+ height: 100%;
46
+ border-radius: 11px;
47
+ overflow: hidden;
48
+ }
49
+ &--selected {
50
+ border: 2px solid $grey_1;
51
+ }
52
+ }
53
+ &__items {
54
+ display: flex;
55
+ flex-wrap: wrap;
56
+ margin-top: 20px;
57
+ margin-left: -5px;
58
+ &-color-group {
59
+ margin: 1px 4px;
60
+ }
61
+ }
62
+ &__toggle-list {
63
+ margin-top: 5px;
64
+ margin-right: 10px;
65
+ font-size: 11px;
66
+ cursor: pointer;
67
+ text-align: right;
68
+ }
69
+ }
@@ -0,0 +1,101 @@
1
+ <template>
2
+ <div class="ProductsColorGroups__wrapper">
3
+ <toggle-content label="Colour Groups">
4
+ <div class="ProductsColorGroups__selected">
5
+ <div
6
+ v-for="colorGroup in selectedColorGroups"
7
+ :key="colorGroup._id"
8
+ class="ProductsColorGroups__selected-item">
9
+ <div class="ProductsColorGroups__color-group ProductsColorGroups__color-group--selected">
10
+ <product-color-image
11
+ :color="colorGroup"
12
+ class="ProductsColorGroups__color-group-image" />
13
+ </div>
14
+ <div class="ProductsColorGroups__selected-name">
15
+ {{ colorGroup.name }}
16
+ </div>
17
+ <products-link :color-group="colorGroup.alias">
18
+ <i class="icon-cancel ProductsColorGroups__selected-cancel"></i>
19
+ </products-link>
20
+ </div>
21
+ </div>
22
+ <div class="ProductsColorGroups__items">
23
+ <products-link
24
+ v-for="colorGroup in visibleColorGroups"
25
+ :key="colorGroup._id"
26
+ v-tooltip="colorGroup.name"
27
+ :color-group="colorGroup.alias">
28
+ <div
29
+ class="ProductsColorGroups__items-color-group ProductsColorGroups__color-group"
30
+ :class="{
31
+ 'ProductsColorGroups__color-group--selected': isSelectedColorGroup(colorGroup)
32
+ }">
33
+ <product-color-image
34
+ v-if="canLoadImages"
35
+ :color="colorGroup"
36
+ class="ProductsColorGroups__color-group-image" />
37
+ </div>
38
+ </products-link>
39
+ </div>
40
+ <div
41
+ v-if="shortListColorGroupsLimit < colorGroupsCount"
42
+ @click="toggleDisplayAllColorGroups()"
43
+ class="ProductsColorGroups__toggle-list">
44
+ {{ displayAllColorGroups ? 'Hide all colour groups' : 'Show all colour groups' }}
45
+ </div>
46
+ </toggle-content>
47
+ </div>
48
+ </template>
49
+
50
+ <script>
51
+ import { mapGetters } from 'vuex';
52
+ import ToggleContent from '@lancom/shared/components/common/toggle-content';
53
+ import ProductsLink from '@lancom/shared/components/products/products_link/products-link';
54
+ import ProductColorImage from '@lancom/shared/components/product/product_color_image/product-color-image';
55
+
56
+ export default {
57
+ name: 'ProductsColorGroups',
58
+ components: {
59
+ ProductColorImage,
60
+ ProductsLink,
61
+ ToggleContent
62
+ },
63
+ data() {
64
+ return {
65
+ canLoadImages: false,
66
+ displayAllColorGroups: false,
67
+ shortListColorGroupsLimit: 15
68
+ };
69
+ },
70
+ computed: {
71
+ ...mapGetters('products', ['colorGroups']),
72
+ colorGroupsCount() {
73
+ return this.colorGroups.length;
74
+ },
75
+ selectedColorGroups() {
76
+ const colorGroups = (this.$route.query.colorGroups || '').split(',');
77
+ return this.colorGroups.filter(colorGroup => colorGroups.includes(colorGroup.alias));
78
+ },
79
+ visibleColorGroups() {
80
+ return this.displayAllColorGroups ? this.colorGroups : this.colorGroups.slice(0, this.shortListColorGroupsLimit);
81
+ }
82
+ },
83
+ mounted() {
84
+ setTimeout(() => {
85
+ this.canLoadImages = true;
86
+ }, 1000);
87
+ },
88
+ methods: {
89
+ isSelectedColorGroup(colorGroup) {
90
+ return this.selectedColorGroups.some(cg => cg._id === colorGroup._id);
91
+ },
92
+ toggleDisplayAllColorGroups() {
93
+ this.displayAllColorGroups = !this.displayAllColorGroups;
94
+ }
95
+ }
96
+ };
97
+ </script>
98
+
99
+ <style lang="scss" scoped>
100
+ @import 'products-color-groups';
101
+ </style>
@@ -27,6 +27,9 @@ export default {
27
27
  color: {
28
28
  type: String
29
29
  },
30
+ colorGroup: {
31
+ type: String
32
+ },
30
33
  productionTime: {
31
34
  type: String
32
35
  },
@@ -51,6 +54,7 @@ export default {
51
54
  brand: this.brand,
52
55
  tags: this.tags,
53
56
  colors: this.color,
57
+ colorGroups: this.colorGroup,
54
58
  productionTime: this.productionTime,
55
59
  minimumQty: this.minimumQty,
56
60
  option: this.option,
@@ -1,29 +1,83 @@
1
+ @import "@/assets/scss/variables";
2
+
1
3
  .QuoteView {
2
4
  &__wrapper {
3
- margin-top: 50px;
5
+ display: flex;
4
6
  }
5
- &__option {
6
- border: 1px solid #dee2e6;
7
- padding: 30px;
8
- margin-bottom: 50px;
7
+ &__header {
8
+ position: sticky;
9
+ top: 0;
10
+ z-index: 2;
11
+ background-color: $white;
12
+ }
13
+ &__sidebar {
14
+ width: 250px;
15
+ flex-shrink: 0;
16
+ &-content {
17
+ position: sticky;
18
+ top: 30px;
19
+ }
20
+ }
21
+ &__content {
22
+ border-left: 2px solid $gray;
23
+ position: relative;
24
+ flex-grow: 1;
25
+ @media (max-width: $bp-small-max) {
26
+ border-left: none;
27
+ width: 100%;
28
+ }
9
29
  }
10
30
  &__info {
11
- display: flex;
12
- justify-content: space-between;
13
- margin-bottom: 10px;
14
- }
15
- &__logo {
16
- margin-bottom: 20px;
17
- }
18
- &__table {
19
- margin-top: 20px;
20
- margin-bottom: 10px;
21
- td {
22
- width: 50%;
23
- padding: 20px;
31
+ margin-top: 32px;
32
+ padding-left: 25px;
33
+ }
34
+ &__info-alert {
35
+ margin: 20px 0;
36
+ padding: 25px;
37
+ text-align: center;
38
+ border: 1px solid $orange;
39
+ color: $orange;
40
+ font-size: 18px;
41
+ line-height: 29px;
42
+ a {
43
+ color: $orange;
44
+ }
45
+ }
46
+ &__text {
47
+ margin-top: 110px;
48
+ font-weight: 800;
49
+ font-size: 22px;
50
+ line-height: 35px;
51
+ @media (max-width: $bp-small-max) {
52
+ margin-top: 50px;
53
+ font-size: 17px;
54
+ line-height: 25px;
24
55
  }
56
+ a {
57
+ color: $black;
58
+ }
59
+ }
60
+ &__message {
61
+ margin-top: 120px;
62
+ @media (max-width: $bp-small-max) {
63
+ margin-top: 50px;
64
+ }
65
+ }
66
+ &__element {
67
+ padding-left: 86px;
68
+ @media (max-width: $bp-small-max) {
69
+ padding-left: 0px;
70
+ }
71
+ }
72
+ &__options {
73
+ margin-top: 40px;
74
+ }
75
+ &__option {
76
+ margin-bottom: 120px;
77
+ }
78
+ &__accept {
79
+ position: sticky;
80
+ bottom: 0px;
81
+ margin-top: 120px;
25
82
  }
26
- }
27
- .uppercase {
28
- text-transform: uppercase;
29
- }
83
+ }
@@ -1,117 +1,105 @@
1
1
  <template>
2
2
  <div class="QuoteView__wrapper">
3
3
  <div
4
- v-if="quote.shop.logo"
5
- class="QuoteView__logo">
6
- <img :src="quote.shop.logo.small" />
7
- </div>
8
- <div class="QuoteView__info">
9
- <div>
10
- <h2 class="lc_h2"> {{ quote.shop.name }} </h2>
11
- <h4 v-if="shopContacts" class="lc_h4"> ABN: {{ shopContacts.abn }} </h4>
4
+ :data-aos="aosFadeLeft"
5
+ class="QuoteView__sidebar hidden-sm-and-down">
6
+ <div class="QuoteView__sidebar-content">
7
+ <quote-view-info class="QuoteView__info" />
8
+ <quote-view-menu />
12
9
  </div>
13
- <h1 class="text-secondary lc_h1">
14
- QUOTE
15
- </h1>
16
10
  </div>
17
- <div class="QuoteView__info">
18
- <div v-if="shopContacts">
19
- <div class="lc_regular16">
20
- {{ shopContacts.company }}
11
+ <div
12
+ :data-aos="aosFadeRight"
13
+ class="QuoteView__content">
14
+ <quote-view-header class="QuoteView__element QuoteView__header" />
15
+ <quote-view-banner class="QuoteView__banner" />
16
+ <div v-if="checkPayment || (!isExpiredQuote && !isOrdered)">
17
+ <quote-view-message
18
+ id="quote-intro"
19
+ class="QuoteView__element QuoteView__message" />
20
+ <div class="QuoteView__element QuoteView__text">
21
+ As always, if you have any questions about this quote, please reach out to us on 02 8880 3731 or email <email-link :email="['team','workdepot.com.au']" />
21
22
  </div>
22
- <div class="lc_regular16">
23
- {{ shopContacts.address }}
23
+ <div class="QuoteView__element QuoteView__options">
24
+ <div
25
+ v-for="o in options"
26
+ :key="o._id"
27
+ class="QuoteView__option">
28
+ <quote-option-view
29
+ :option="o"
30
+ :quote="quote" />
31
+ </div>
24
32
  </div>
25
- <div class="lc_regular16">
26
- {{ shopContacts.phone }}
33
+ <div class="QuoteView__element QuoteView__question">
34
+ <quote-view-question />
35
+ <quote-view-questions />
27
36
  </div>
37
+ <quote-view-accept class="QuoteView__element QuoteView__accept" />
28
38
  </div>
29
- <div>
30
- <div class="lc_regular16">
31
- DATE: {{ quote.createdAt | shortDate }}
32
- </div>
33
- <div class="lc_regular16">
34
- QUOTE ID: {{ quoteId }}
39
+ <div v-else>
40
+ <div class="QuoteView__info-alert">
41
+ <p>
42
+ This proposal is already in progress, has been finalised or has expired
43
+ </p>
44
+ <p v-if="isGuestUser">
45
+ You can <a href="/customer/signin">login</a> to your account to see the progress of this order, or request a new quote
46
+ </p>
35
47
  </div>
36
48
  </div>
37
49
  </div>
38
-
39
- <table class="QuoteView__table mt-4 lc_table bordered">
40
- <tr>
41
- <td>
42
- <div><b>QUOTE</b></div>
43
- <div v-if="quote.address">
44
- <div class="lc_regular16">
45
- {{ quote.address.fullName }}
46
- </div>
47
- <div v-if="quote.address.company" class="lc_regular16">
48
- {{ quote.address.company }}
49
- </div>
50
- <div v-if="quote.address.phone" class="lc_regular16">
51
- {{ quote.address.phone }}
52
- </div>
53
- <div class="lc_regular16">
54
- {{ quote.address.email }}
55
- </div>
56
- <div class="lc_regular16">
57
- {{ quoteAddress }}
58
- </div>
59
- <div class="lc_regular16">
60
- {{ quote.address.additionalInfo }}
61
- </div>
62
- </div>
63
- </td>
64
- <td class="w-50">
65
- <div class="lc_regular16">
66
- <b>{{ MESSAGES.DIRECT_DEPOSIT_DETAILS || 'DIRECT DEPOSIT DETAILS' }}</b>
67
- </div>
68
- <div class="lc_regular16">
69
- Bank: {{ depositInfo.bank }}
70
- </div>
71
- <div class="lc_regular16">
72
- Account name: {{ depositInfo.accountName }}
73
- </div>
74
- <div class="lc_regular16">
75
- {{ bsbLabel }}: {{ depositInfo.BSB }}
76
- </div>
77
- <div class="lc_regular16">
78
- Account: {{ depositInfo.account }}
79
- </div>
80
- </td>
81
- </tr>
82
- </table>
83
- <div class="mt-3">
84
- <quote-option-view
85
- v-for="(optionItem, index) of options"
86
- :key="`option-${index}`"
87
- :option="optionItem"
88
- :quote="quote"
89
- class="QuoteView__option" />
90
- </div>
91
- <h6
92
- v-if="quote.expiredAt"
93
- class="mt-3 lc_title mb-5 lc_h3">
94
- THIS QUOTE IS VALID UNTIL {{ quote.expiredAt | shortDate }}
95
- </h6>
96
50
  </div>
97
51
  </template>
98
52
 
99
53
  <script>
100
- import { mapGetters } from 'vuex';
101
- import QuoteViewMixin from './quote-view.mixin';
54
+ import { mapGetters, mapActions } from 'vuex';
55
+ import { saveViewedOptions } from '@lancom/shared/assets/js/utils/quote';
56
+ import QuoteViewMixin from '@lancom/shared/components/quotes/quote_view_preview/quote-view.mixin';
57
+ import EmailLink from '@lancom/shared/components/email_link/email-link';
58
+ import QuoteViewInfo from './quote_view_info/quote-view-info';
59
+ import QuoteViewMenu from './quote_view_menu/quote-view-menu';
60
+ import QuoteViewHeader from './quote_view_header/quote-view-header';
61
+ import QuoteViewBanner from './quote_view_banner/quote-view-banner';
62
+ import QuoteViewMessage from './quote_view_message/quote-view-message';
63
+ import QuoteViewQuestion from './quote_view_question/quote-view-question';
64
+ import QuoteViewQuestions from './quote_view_questions/quote-view-questions';
65
+ import QuoteViewAccept from './quote_view_accept/quote-view-accept';
102
66
  import QuoteOptionView from './quote_option_view/quote-option-view';
103
67
 
104
68
  export default {
105
- name: 'LancomQuoteView',
69
+ name: 'QuoteView',
106
70
  components: {
107
- QuoteOptionView
71
+ QuoteOptionView,
72
+ QuoteViewInfo,
73
+ QuoteViewMenu,
74
+ QuoteViewHeader,
75
+ QuoteViewBanner,
76
+ QuoteViewMessage,
77
+ QuoteViewQuestion,
78
+ QuoteViewQuestions,
79
+ QuoteViewAccept,
80
+ EmailLink
81
+ },
82
+ data() {
83
+ return {
84
+ checkPayment: !!this.$route.query.checkPayment
85
+ };
108
86
  },
109
87
  mixins: [QuoteViewMixin],
110
88
  computed: {
111
- ...mapGetters(['MESSAGES']),
112
- bsbLabel() {
113
- return this.MESSAGES.DIRECT_DEPOSIT_BSB || 'BSB';
114
- },
89
+ ...mapGetters(['contacts']),
90
+ ...mapGetters('auth', ['isGuestUser']),
91
+ ...mapGetters('quote', ['quote', 'options', 'isExpiredQuote', 'isOrdered'])
92
+ },
93
+ created() {
94
+ if (process.client) {
95
+ this.fetchViewedOptions({ quote: this.quote });
96
+
97
+ const options = this.options.map(({ _id }) => _id);
98
+ saveViewedOptions(this.quote, options);
99
+ }
100
+ },
101
+ methods: {
102
+ ...mapActions('quote', ['fetchViewedOptions'])
115
103
  }
116
104
  };
117
105
  </script>
@@ -1,10 +1,109 @@
1
+ @import "@/assets/scss/variables";
2
+
1
3
  .QuoteOptionView {
2
- &__totals {
3
- margin-top: 60px;
4
+ &__wrapper {
5
+ &.light {
6
+ opacity: 0.3;
7
+ }
8
+ }
9
+ &__header {
10
+ padding: 22px;
11
+ background-color: $black;
12
+ color: $white;
13
+ display: flex;
14
+ justify-content: space-between;
15
+ align-items: center;
16
+ cursor: pointer;
17
+ @media (max-width: $bp-extra-small-max) {
18
+ flex-direction: column;
19
+ justify-content: flex-start;
20
+ align-items: flex-start;
21
+ }
22
+ &.disabled {
23
+ opacity: 0.7;
24
+ pointer-events: none !important;
25
+ }
26
+ }
27
+ &__title {
28
+ font-weight: 800;
29
+ font-size: 18px;
30
+ line-height: 25px;
31
+ text-transform: uppercase;
32
+ span {
33
+ background: #F38320;
34
+ padding: 1px 7px;
35
+ font-weight: bold;
36
+ font-size: 16.25px;
37
+ line-height: 22px;
38
+ color: $white;
39
+ text-decoration: none;
40
+ display: inline-block;
41
+ margin-left: 9px;
42
+ }
43
+ }
44
+ &__proceed {
45
+ position: relative;
46
+ display: flex;
47
+ @media (max-width: $bp-extra-small-max) {
48
+ margin-top: 20px;
49
+ }
50
+ &-message {
51
+ font-weight: bold;
52
+ font-size: 16px;
53
+ line-height: 22px;
54
+ text-transform: uppercase;
55
+ color: $white;
56
+ cursor: pointer;
57
+ margin-left: 10px;
58
+ }
59
+ }
60
+ &__table {
61
+ border: 1px solid #dee2e6;
62
+ padding: 30px;
4
63
  }
5
64
  &__product {
6
- padding-bottom: 30px;
7
- margin-bottom: 30px;
65
+ padding-bottom: 20px;
66
+ margin-bottom: 20px;
8
67
  border-bottom: 1px solid #dee2e6;
9
68
  }
69
+ &__subtotal {
70
+ padding: 24px;
71
+ background-color: $gray;
72
+ display: flex;
73
+ justify-content: space-between;
74
+ font-weight: 800;
75
+ font-size: 16px;
76
+ line-height: 22px;
77
+ text-transform: uppercase;
78
+ @media (max-width: $bp-extra-small-max) {
79
+ flex-direction: column;
80
+ }
81
+ &-item {
82
+ @media (max-width: $bp-extra-small-max) {
83
+ display: flex;
84
+ margin: 5px 0;
85
+ }
86
+ }
87
+ &-label {
88
+ color: $gray_main;
89
+ }
90
+ &-value {
91
+ color: $black;
92
+ margin-left: 10px;
93
+ }
94
+ &.selected {
95
+ background-color: $green;
96
+ }
97
+ }
98
+ &__message {
99
+ margin-top: 30px;
100
+ font-weight: 600;
101
+ font-size: 20px;
102
+ line-height: 27px;
103
+ color: $gray_main;
104
+ @media (max-width: $bp-extra-small-max) {
105
+ font-size: 15px;
106
+ line-height: 19px;
107
+ }
108
+ }
10
109
  }