/
index.js
72 lines (57 loc) · 2.04 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import Criteria from 'src/core/data-new/criteria.data';
import template from './sw-cms-el-config-product-description-reviews.html.twig';
import './sw-cms-el-config-product-description-reviews.scss';
const { Component, Mixin, Utils } = Shopware;
Component.register('sw-cms-el-config-product-description-reviews', {
template,
mixins: [
Mixin.getByName('cms-element')
],
inject: ['repositoryFactory'],
computed: {
productRepository() {
return this.repositoryFactory.create('product');
},
productSelectContext() {
return {
...Shopware.Context.api,
inheritance: true
};
},
productCriteria() {
const criteria = new Criteria();
criteria.addAssociation('options.group');
return criteria;
},
selectedProductCriteria() {
const criteria = new Criteria();
criteria.addAssociation('properties');
return criteria;
},
isProductPage() {
return Utils.get(this.cmsPageState, 'currentPage.type') === 'product_detail';
}
},
created() {
this.createdComponent();
},
methods: {
createdComponent() {
this.initElementConfig('product-description-reviews');
},
onProductChange(productId) {
if (!productId) {
this.element.config.product.value = null;
this.$set(this.element.data, 'productId', null);
this.$set(this.element.data, 'product', null);
} else {
this.productRepository.get(productId, this.productSelectContext, this.selectedProductCriteria).then((product) => {
this.element.config.product.value = productId;
this.$set(this.element.data, 'productId', productId);
this.$set(this.element.data, 'product', product);
});
}
this.$emit('element-update', this.element);
}
}
});