@lancom/shared 0.0.384 → 0.0.386

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 (46) hide show
  1. package/assets/js/api/admin.js +12 -0
  2. package/assets/js/api/index.js +8 -1
  3. package/assets/js/utils/scroll.js +11 -0
  4. package/components/checkout/cart/cart.vue +26 -1
  5. package/components/checkout/cart/cart_entity/cart-entity.mixin.js +4 -0
  6. package/components/checkout/cart/cart_entity/cart-entity.vue +2 -0
  7. package/components/checkout/cart/cart_entity/cart_entity_color_simple_products/cart-entity-color-simple-products.vue +2 -0
  8. package/components/checkout/cart/cart_products_kit_entity/cart-products-kit-entity.scss +24 -0
  9. package/components/checkout/cart/cart_products_kit_entity/cart-products-kit-entity.vue +66 -0
  10. package/components/common/number_input/number-input.scss +69 -0
  11. package/components/common/number_input/number-input.vue +97 -0
  12. package/components/editor/editor.vue +4 -12
  13. package/components/editor/mobile_editor_product_details/mobile-editor-product-details.vue +2 -10
  14. package/components/products_kit/products_kit/products-kit.scss +54 -0
  15. package/components/products_kit/products_kit/products-kit.vue +47 -0
  16. package/components/products_kit/products_kit/products_kit_cart/products-kit-cart.scss +32 -0
  17. package/components/products_kit/products_kit/products_kit_cart/products-kit-cart.vue +132 -0
  18. package/components/products_kit/products_kit/products_kit_cart/products_kit_cart_options/products-kit-cart-options.scss +15 -0
  19. package/components/products_kit/products_kit/products_kit_cart/products_kit_cart_options/products-kit-cart-options.vue +31 -0
  20. package/components/products_kit/products_kit/products_kit_cart/products_kit_cart_options/products_kit_cart_option/products-kit-cart-option.scss +41 -0
  21. package/components/products_kit/products_kit/products_kit_cart/products_kit_cart_options/products_kit_cart_option/products-kit-cart-option.vue +89 -0
  22. package/components/products_kit/products_kit/products_kit_options/products-kit-options.scss +9 -0
  23. package/components/products_kit/products_kit/products_kit_options/products-kit-options.vue +32 -0
  24. package/components/products_kit/products_kit/products_kit_options/products_kit_option/products-kit-option.scss +1 -0
  25. package/components/products_kit/products_kit/products_kit_options/products_kit_option/products-kit-option.vue +36 -0
  26. package/components/products_kit/products_kit/products_kit_options/products_kit_option/products_kit_option_color/products-kit-option-color.scss +1 -0
  27. package/components/products_kit/products_kit/products_kit_options/products_kit_option/products_kit_option_color/products-kit-option-color.vue +88 -0
  28. package/components/products_kit/products_kit/products_kit_options/products_kit_option/products_kit_option_products/products-kit-option-products.scss +7 -0
  29. package/components/products_kit/products_kit/products_kit_options/products_kit_option/products_kit_option_products/products-kit-option-products.vue +36 -0
  30. package/components/products_kit/products_kit/products_kit_options/products_kit_option/products_kit_option_products/products_kit_option_product/products-kit-option-product.scss +20 -0
  31. package/components/products_kit/products_kit/products_kit_options/products_kit_option/products_kit_option_products/products_kit_option_product/products-kit-option-product.vue +127 -0
  32. package/components/products_kit/products_kit/products_kit_options/products_kit_option/products_kit_option_size/products-kit-option-size.scss +1 -0
  33. package/components/products_kit/products_kit/products_kit_options/products_kit_option/products_kit_option_size/products-kit-option-size.vue +87 -0
  34. package/components/products_kit/products_kits_list/products-kits-list.scss +68 -0
  35. package/components/products_kit/products_kits_list/products-kits-list.vue +50 -0
  36. package/components/products_kit/products_kits_list/products_kits_list_item/products-kits-list-item.scss +84 -0
  37. package/components/products_kit/products_kits_list/products_kits_list_item/products-kits-list-item.vue +52 -0
  38. package/mixins/product-preview.js +6 -0
  39. package/package.json +1 -1
  40. package/pages/contact.vue +54 -0
  41. package/pages/products-kit/_alias.vue +103 -0
  42. package/pages/products-kit/index.vue +59 -0
  43. package/routes/index.js +15 -0
  44. package/server-middleware/robots.js +2 -1
  45. package/store/cart.js +1 -1
  46. package/store/productsKit.js +175 -0
@@ -317,6 +317,18 @@ export default {
317
317
  removeProduct(id) {
318
318
  return _delete(`admin/products/${id}`);
319
319
  },
320
+ fetchProductsKits(params) {
321
+ return _get('admin/products-kit', params);
322
+ },
323
+ fetchProductsKitById(id) {
324
+ return _get(`admin/products-kit/${id}`);
325
+ },
326
+ saveProductsKit(productsKit) {
327
+ return productsKit._id ? _put(`admin/products-kit/${productsKit._id}`, productsKit) : _post('admin/products-kit', productsKit);
328
+ },
329
+ removeProductsKit(id) {
330
+ return _delete(`admin/products-kit/${id}`);
331
+ },
320
332
  fetchSimpleProducts(params) {
321
333
  return _get('admin/simple-products', params);
322
334
  },
@@ -68,6 +68,12 @@ const api = {
68
68
  fetchBanners(shop, params) {
69
69
  return _get(`shop/${shop}/banners`, params);
70
70
  },
71
+ fetchProductsKits(shop, params) {
72
+ return _get(`shop/${shop}/products-kit`, params);
73
+ },
74
+ fetchProductsKit(shop, alias, preview = false) {
75
+ return _get(`shop/${shop}/products-kit/${alias}?preview=${preview}`);
76
+ },
71
77
  fetchNews(shop, params) {
72
78
  return _get(`shop/${shop}/news`, params);
73
79
  },
@@ -81,7 +87,8 @@ const api = {
81
87
  return _get(`shop/${shop}/news-tag/${alias}`);
82
88
  },
83
89
  async fetchProductDetails(shop, alias, params) {
84
- return unminifySimpleProducts(await _get(`shop/${shop}/products/${alias}/simple-products`, params));
90
+ const url = shop ? `shop/${shop}/products/${alias}/simple-products` : `products/${alias}/simple-products`;
91
+ return unminifySimpleProducts(await _get(url, params));
85
92
  },
86
93
  fetchRelatedProducts(shop, alias, params) {
87
94
  return _get(`shop/${shop}/products/${alias}/related-products`, params);
@@ -0,0 +1,11 @@
1
+ export function scrollToElement(elementId, offset = 100) {
2
+ const element = document.getElementById(elementId);
3
+ if (element) {
4
+ const elementPosition = element.getBoundingClientRect().top;
5
+ const offsetPosition = elementPosition + window.scrollY - offset;
6
+ window.scrollTo({
7
+ top: offsetPosition,
8
+ behavior: 'smooth'
9
+ });
10
+ }
11
+ }
@@ -4,8 +4,14 @@
4
4
  v-if="!isEmpty"
5
5
  class="row">
6
6
  <div class="col-es-12 col-8">
7
+ <cart-products-kit-entity
8
+ v-for="entity in productsKitsEntities"
9
+ :key="entity.productsKitGuid"
10
+ :products-kit-entity="entity"
11
+ class="Cart__entity"
12
+ @remove="removeSimpleProducts" />
7
13
  <cart-entity
8
- v-for="entity in entities"
14
+ v-for="entity in productsEntities"
9
15
  :key="entity._id"
10
16
  :entity="entity"
11
17
  class="Cart__entity"
@@ -73,6 +79,7 @@ import gtm from '@lancom/shared/assets/js/utils/gtm';
73
79
  import CouponSelect from '@lancom/shared/components/common/coupon_select/coupon-select';
74
80
  import CartQuantityErrors from '@lancom/shared/components/checkout/cart/cart_quantity_errors/cart-quantity-errors';
75
81
  import CartEntity from '@lancom/shared/components/checkout/cart/cart_entity/cart-entity';
82
+ import CartProductsKitEntity from '@lancom/shared/components/checkout/cart/cart_products_kit_entity/cart-products-kit-entity';
76
83
  import { price } from '@lancom/shared/assets/js/utils/filters';
77
84
  import CartMixin from '@lancom/shared/components/checkout/cart/cart.mixin';
78
85
  import CartPriceInfo from '@lancom/shared/components/checkout/cart/cart_price_info/cart-price-info';
@@ -82,6 +89,7 @@ export default {
82
89
  name: 'CheckoutCart',
83
90
  components: {
84
91
  CartEntity,
92
+ CartProductsKitEntity,
85
93
  CartPriceInfo,
86
94
  CartQuantityErrors,
87
95
  CouponSelect,
@@ -92,6 +100,23 @@ export default {
92
100
  computed: {
93
101
  ...mapGetters(['MESSAGES', 'SETTINGS', 'currency', 'country']),
94
102
  ...mapGetters('cart', ['isEmpty','cartPricingError', 'cartPricing', 'cartPricingCalculating', 'entities']),
103
+ productsEntities() {
104
+ return this.entities.filter(e => !e.productsKit)
105
+ },
106
+ productsKitsEntities() {
107
+ const entities = this.entities.filter(e => !!e.productsKit);
108
+ const groupedEntities = entities.reduce((acc, entity) => {
109
+ const { productsKitGuid, productsKit } = entity;
110
+ if (!acc[productsKitGuid]) {
111
+ acc[productsKitGuid] = { entities: [], productsKit, productsKitGuid };
112
+ }
113
+ acc[productsKitGuid].entities.push(entity);
114
+ return acc;
115
+ }, {});
116
+ const productsKitsEntities = Object.values(groupedEntities);
117
+ console.log('productsKitsEntities: ', productsKitsEntities);
118
+ return productsKitsEntities;
119
+ },
95
120
  couponLabel() {
96
121
  return (this.MESSAGES.CART_COUPON || 'Coupon code').trim();
97
122
  },
@@ -7,6 +7,10 @@ export default {
7
7
  entity: {
8
8
  type: Object,
9
9
  required: true
10
+ },
11
+ editable: {
12
+ type: Boolean,
13
+ default: true
10
14
  }
11
15
  },
12
16
  computed: {
@@ -46,6 +46,7 @@
46
46
  v-for="[groupKey, group] in groupedSimpleProducts"
47
47
  :key="groupKey"
48
48
  :entity="entity"
49
+ :editable="editable"
49
50
  :group="group"
50
51
  :default-preview="false"
51
52
  :display-unit-price="!isSameUnitPrices"
@@ -66,6 +67,7 @@
66
67
  Subtotal: {{ totalPrice | price(currency) }}
67
68
  </div>
68
69
  <i
70
+ v-if="editable"
69
71
  class="icon-delete CartEntity__remove"
70
72
  @click="removeSimpleProducts(entity.simpleProducts)"></i>
71
73
  </div>
@@ -34,6 +34,7 @@
34
34
  </div>
35
35
  </div>
36
36
  <i
37
+ v-if="editable"
37
38
  class="icon-delete CartEntityColorSimpleProducts__remove"
38
39
  @click="remove"></i>
39
40
  </div>
@@ -58,6 +59,7 @@
58
59
  :key="simpleProduct._id"
59
60
  :simple-product="simpleProduct"
60
61
  :entity="entity"
62
+ :editable="editable"
61
63
  :display-unit-price="displayUnitPrice"
62
64
  @change="onChangeQty" />
63
65
  </div>
@@ -0,0 +1,24 @@
1
+ @import "@/assets/scss/variables";
2
+
3
+ .CartProductsKitEntity {
4
+ &__wrapper {
5
+ padding: 10px;
6
+ border: 1px solid $black;
7
+ margin-bottom: 10px;
8
+ position: relative;
9
+ @media (max-width: $bp-small-max) {
10
+ padding: 15px;
11
+ }
12
+ }
13
+ &__link {
14
+ color: $black;
15
+ }
16
+ &__head {
17
+ display: flex;
18
+ justify-content: space-between;
19
+ margin-bottom: 10px;
20
+ }
21
+ &__remove {
22
+ cursor: pointer;
23
+ }
24
+ }
@@ -0,0 +1,66 @@
1
+ <template>
2
+ <div class="CartProductsKitEntity__wrapper">
3
+ <div class="CartProductsKitEntity__info">
4
+ <div class="CartProductsKitEntity__head">
5
+ <div>
6
+ <div class="lc_title">
7
+ <a
8
+ class="CartProductsKitEntity__link"
9
+ :href="productsKitLink">
10
+ {{ productsKitEntity.productsKit.name }}
11
+ </a>
12
+ </div>
13
+ </div>
14
+ <div>
15
+ <i
16
+ class="icon-delete CartProductsKitEntity__remove"
17
+ @click="removeSimpleProducts"></i>
18
+ </div>
19
+ </div>
20
+ <cart-entity
21
+ v-for="entity in productsKitEntity.entities"
22
+ :key="entity._id"
23
+ :entity="entity"
24
+ :editable="false"
25
+ class="CartProductsKitEntity__entity" />
26
+ </div>
27
+ </div>
28
+ </template>
29
+
30
+ <script>
31
+ import CartEntity from './../cart_entity/cart-entity';
32
+
33
+ export default {
34
+ name: 'CartProductsKitEntity',
35
+ components: {
36
+ CartEntity
37
+ },
38
+ props: {
39
+ productsKitEntity: {
40
+ type: Object,
41
+ required: true
42
+ }
43
+ },
44
+ computed: {
45
+ productsKitLink() {
46
+ return `/products-kit/${this.productsKitEntity.productsKit.alias}`;
47
+ }
48
+ },
49
+ methods: {
50
+ removeSimpleProducts() {
51
+ const simpleProducts = this.productsKitEntity.entities
52
+ .reduce((list, entity) => {
53
+ return [
54
+ ...list,
55
+ ...(entity.simpleProducts || [])
56
+ ]
57
+ }, []);
58
+ this.$emit('remove', simpleProducts);
59
+ }
60
+ }
61
+ };
62
+ </script>
63
+
64
+ <style lang="scss" scoped>
65
+ @import 'cart-products-kit-entity.scss';
66
+ </style>
@@ -0,0 +1,69 @@
1
+ @import "@/assets/scss/variables";
2
+
3
+ .NumberInput {
4
+ &__wrapper {
5
+ width: 100%;
6
+ height: 100%;
7
+ display: flex;
8
+ justify-content: center;
9
+ &--double {
10
+ width: 200px;
11
+ input {
12
+ font-size: 25px !important;
13
+ }
14
+ }
15
+ &.side-controls {
16
+ input::-webkit-outer-spin-button,
17
+ input::-webkit-inner-spin-button {
18
+ -webkit-appearance: none;
19
+ margin: 0;
20
+ }
21
+ input[type=number] {
22
+ -moz-appearance: textfield;
23
+ }
24
+ }
25
+ }
26
+ &__field {
27
+ position: relative;
28
+ width: 100%;
29
+ input {
30
+ text-align: center !important;
31
+ color: $black;
32
+ transition: height .2s ease-in-out;
33
+ &.invalidate {
34
+ opacity: .3;
35
+ }
36
+ &.empty {
37
+ color: $grey_2;
38
+ }
39
+ }
40
+ }
41
+ &__side-control {
42
+ position: absolute;
43
+ display: flex;
44
+ align-items: center;
45
+ justify-content: center;
46
+ top: 3px;
47
+ bottom: 3px;
48
+ width: 20px;
49
+ background: $grey_2;
50
+ border-radius: 3px;
51
+ padding-top: 2px;
52
+ cursor: pointer;
53
+ &--left {
54
+ left: 3px;
55
+ }
56
+ &--right {
57
+ padding-top: 2px;
58
+ right: 3px;
59
+ }
60
+ &--double {
61
+ width: 40px;
62
+ padding-top: 5px;
63
+ font-size: 20px;
64
+ }
65
+ &.disabled {
66
+ display: none;
67
+ }
68
+ }
69
+ }
@@ -0,0 +1,97 @@
1
+ <template>
2
+ <div
3
+ class="NumberInput__wrapper"
4
+ :class="{
5
+ 'side-controls': sideControls,
6
+ 'NumberInput__wrapper--double': doubleSize
7
+ }">
8
+ <div class="NumberInput__field">
9
+ <div
10
+ class="NumberInput__side-control NumberInput__side-control--left"
11
+ :class="{ disabled, 'NumberInput__side-control--double': doubleSize }"
12
+ @click="model -= step">
13
+ <span> - </span>
14
+ </div>
15
+ <input
16
+ v-model.number="model"
17
+ :id="id"
18
+ :min="min"
19
+ :max="max"
20
+ :name="name || uniqueCode"
21
+ placeholder="0"
22
+ type="number"
23
+ class="form-control"
24
+ :class="{ invalidate: disabled, empty: !model }"
25
+ :disabled="disabled"
26
+ @change="$emit('change', model)" />
27
+ <div
28
+ class="NumberInput__side-control NumberInput__side-control--right"
29
+ :class="{ disabled, 'NumberInput__side-control--double': doubleSize }"
30
+ @click="model += step">
31
+ <span> + </span>
32
+ </div>
33
+ </div>
34
+ </div>
35
+ </template>
36
+
37
+ <script>
38
+ import { generateGUID } from '@lancom/shared/assets/js/utils/guid';
39
+
40
+ export default {
41
+ name: 'NumberInput',
42
+ data() {
43
+ return {
44
+ uniqueCode: generateGUID()
45
+ };
46
+ },
47
+ props: {
48
+ id: {
49
+ type: String
50
+ },
51
+ value: {
52
+ type: Number
53
+ },
54
+ name: {
55
+ type: String
56
+ },
57
+ min: {
58
+ type: Number
59
+ },
60
+ max: {
61
+ type: Number
62
+ },
63
+ sideControls: {
64
+ type: Boolean,
65
+ default: true
66
+ },
67
+ doubleSize: {
68
+ type: Boolean,
69
+ default: false
70
+ },
71
+ step: {
72
+ type: Number,
73
+ default: 1
74
+ },
75
+ disabled: {
76
+ type: Boolean,
77
+ default: false
78
+ }
79
+ },
80
+ computed: {
81
+ model: {
82
+ get() {
83
+ return this.value;
84
+ },
85
+ set(value) {
86
+ value = typeof this.min === 'number' ? Math.max(this.min, +value) : value;
87
+ value = typeof this.max === 'number' ? Math.min(this.max, +value) : value;
88
+ this.$emit('input', +value);
89
+ }
90
+ }
91
+ }
92
+ };
93
+ </script>
94
+
95
+ <style lang="scss" scoped>
96
+ @import 'number-input.scss';
97
+ </style>
@@ -92,13 +92,14 @@ import confirmModal from '@lancom/shared/mixins/confirm';
92
92
  import OfferScreenPrinting from '@lancom/shared/components/asides/offer_screen_printing/offer-screen-printing';
93
93
  import ProductsListDropdown from '@lancom/shared/components/common/products_list_dropdown/products-list-dropdown';
94
94
  import Tabs from '@lancom/shared/components/common/tabs';
95
+ import addToCartMixin from '@lancom/shared/mixins/add-to-cart';
96
+ import AddToCartBtn from '@lancom/shared/components/product/add-to-cart-btn';
97
+ import { scrollToElement } from '@lancom/shared/assets/js/utils/scroll';
95
98
  import EditorWorkspace from './editor_workspace/editor-workspace';
96
99
  import EditorProductDetails from './editor_product_details/editor-product-details';
97
100
  import MobileEditorProductDetails from './mobile_editor_product_details/mobile-editor-product-details';
98
101
  import EditorLayers from './editor_layers/editor-layers';
99
102
  import EditorWizard from './editor_wizard/editor-wizard';
100
- import addToCartMixin from '@lancom/shared/mixins/add-to-cart';
101
- import AddToCartBtn from '@lancom/shared/components/product/add-to-cart-btn';
102
103
 
103
104
  const MIN_SCREEN_AMOUNT = 125;
104
105
 
@@ -224,16 +225,7 @@ export default {
224
225
  chooseProducts() {
225
226
  this.selectTab('product');
226
227
  setTimeout(() => {
227
- const element = document.getElementById('EditorProductDetails');
228
- if (element) {
229
- const offset = 100;
230
- const elementPosition = element.getBoundingClientRect().top;
231
- const offsetPosition = elementPosition + window.pageYOffset - offset;
232
- window.scrollTo({
233
- top: offsetPosition,
234
- behavior: 'smooth'
235
- });
236
- }
228
+ scrollToElement('EditorProductDetails');
237
229
  }, 250);
238
230
  }
239
231
  }
@@ -91,6 +91,7 @@ import { createNamespacedHelpers } from 'vuex';
91
91
  import throttle from 'lodash.throttle';
92
92
  import { EventBus } from '@lancom/shared/assets/js/utils/event-bus';
93
93
  import addToCartMixin from '@lancom/shared/mixins/add-to-cart';
94
+ import { scrollToElement } from '@lancom/shared/assets/js/utils/scroll';
94
95
  import EditorWorkspace from '../editor_workspace/editor-workspace';
95
96
  import EditorLayers from '../editor_layers/editor-layers';
96
97
  import EditorPricing from '../../product/editor_pricing/editor-pricing';
@@ -137,16 +138,7 @@ export default {
137
138
  chooseProducts() {
138
139
  this.hide();
139
140
  setTimeout(() => {
140
- const element = document.getElementById('EditorProductDetails');
141
- if (element) {
142
- const offset = 100;
143
- const elementPosition = element.getBoundingClientRect().top;
144
- const offsetPosition = elementPosition + window.pageYOffset - offset;
145
- window.scrollTo({
146
- top: offsetPosition,
147
- behavior: 'smooth'
148
- });
149
- }
141
+ scrollToElement('EditorProductDetails');
150
142
  }, 250);
151
143
  },
152
144
  updateMobileMenuPosition() {
@@ -0,0 +1,54 @@
1
+ @import "@/assets/scss/variables";
2
+
3
+ .ProductsKit {
4
+ &__wrapper {
5
+ .post-full-content {
6
+ position: relative;
7
+ font-size: 1.3rem;
8
+ line-height: 1.6em;
9
+ background: #fff;
10
+ margin-bottom: 20px;
11
+ @media (max-width: $bp-extra-small-max) {
12
+ margin: 0;
13
+ padding: 15px;
14
+ }
15
+ @import "@lancom/shared/assets/scss/normalize";
16
+ img {
17
+ max-width: none;
18
+ @media (max-width: $bp-small-max) {
19
+ width: 100%;
20
+ height: auto;
21
+ }
22
+ }
23
+ p {
24
+ margin-bottom: 0.6rem !important;
25
+ }
26
+ }
27
+ }
28
+
29
+ &__header {
30
+ position: relative;
31
+ display: flex;
32
+ align-items: center;
33
+ justify-content: center;
34
+ flex-direction: column;
35
+ }
36
+ &__header-info {
37
+ padding-top: 10px !important;
38
+ padding-bottom: 0px !important;
39
+ h1 {
40
+ margin-bottom: 10px;
41
+ }
42
+ }
43
+ &__options {
44
+ position: relative;
45
+ }
46
+ &__cart {
47
+ position: sticky;
48
+ z-index: 2;
49
+ bottom: 0;
50
+ margin: 50px 0;
51
+ background-color: $gray;
52
+ padding: 15px;
53
+ }
54
+ }
@@ -0,0 +1,47 @@
1
+ <template>
2
+ <div>
3
+ <article class="ProductsKit__wrapper">
4
+ <div class="ProductsKit__header-info post-full-content">
5
+ <div class="post-content">
6
+ <h1 class="lc_h1">
7
+ {{ productsKit.name }}
8
+ </h1>
9
+ </div>
10
+ </div>
11
+ <div class="ProductsKit__post post-full-content">
12
+ <div
13
+ class="lc_regular14"
14
+ v-html="productsKit.description"></div>
15
+ </div>
16
+ </article>
17
+ <products-kit-options
18
+ class="ProductsKit__options"
19
+ :products-kit="productsKit" />
20
+ <products-kit-cart
21
+ class="ProductsKit__cart"
22
+ :products-kit="productsKit" />
23
+ </div>
24
+ </template>
25
+
26
+ <script>
27
+ import ProductsKitOptions from './products_kit_options/products-kit-options';
28
+ import ProductsKitCart from './products_kit_cart/products-kit-cart';
29
+
30
+ export default {
31
+ name: 'ProductsKit',
32
+ components: {
33
+ ProductsKitOptions,
34
+ ProductsKitCart
35
+ },
36
+ props: {
37
+ productsKit: {
38
+ type: Object,
39
+ required: true
40
+ }
41
+ }
42
+ };
43
+ </script>
44
+
45
+ <style lang="scss">
46
+ @import 'products-kit';
47
+ </style>
@@ -0,0 +1,32 @@
1
+ @import "@/assets/scss/variables";
2
+
3
+ .ProductsKitCart {
4
+ &__wrapper {
5
+ display: flex;
6
+ align-items: center;
7
+ justify-content: space-between;
8
+ }
9
+ &__info,
10
+ &__products {
11
+ display: flex;
12
+ align-items: center;
13
+ }
14
+ &__price {
15
+ font-size: 22px;
16
+ font-weight: bold;
17
+ margin: 0 20px;
18
+ }
19
+ &__qty {
20
+ margin-left: 10px;
21
+ ::v-deep {
22
+ input {
23
+ padding: 14px;
24
+ font-size: 20px;
25
+ width: 150px;
26
+ }
27
+ .NumberInput__side-control {
28
+ width: 30px !important;
29
+ }
30
+ }
31
+ }
32
+ }