@subiz/widget-v4 4.1.125 → 4.1.126
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/less/avatar.less +7 -3
- package/assets/less/widget_header.less +29 -7
- package/compiled_src/chatbox/ChatButton.js +12 -3
- package/compiled_src/chatbox/Header.js +12 -1
- package/compiled_src/util/common.js +15 -0
- package/dist/127.js +273 -0
- package/dist/132.js +2575 -6434
- package/dist/185.js +1885 -0
- package/dist/1964f21ffc8.127.js +1 -0
- package/dist/1964f21ffc8.132.js +1 -0
- package/dist/1964f21ffc8.185.js +1 -0
- package/dist/1964f21ffc8.27.js +1 -0
- package/dist/1964f21ffc8.278.js +1 -0
- package/dist/1964f21ffc8.459.js +1 -0
- package/dist/1964f21ffc8.490.js +1 -0
- package/dist/1964f21ffc8.74.js +1 -0
- package/dist/1964f21ffc8.997.js +1 -0
- package/dist/1964f21ffc8.app.js +1 -0
- package/dist/{18a02a9c54e.index.html → 1964f21ffc8.index.html} +28 -4
- package/dist/{18a02a9c54e.library.html → 1964f21ffc8.library.html} +28 -4
- package/dist/1964f21ffc8.library.js +1 -0
- package/dist/{18a02a9c54e.preview.html → 1964f21ffc8.preview.html} +1 -1
- package/dist/1964f21ffc8.preview.js +1 -0
- package/dist/1964f21ffc8.webview.js +1 -0
- package/dist/27.js +107 -0
- package/dist/278.js +406 -0
- package/dist/459.js +107 -0
- package/dist/{605.js → 490.js} +82 -82
- package/dist/{335.js → 74.js} +35 -35
- package/dist/{678.js → 997.js} +6 -6
- package/dist/HASH +1 -1
- package/dist/assets/img/{subiz-mono.877e9f5.svg → subiz-mono.8fbc067.svg} +1 -1
- package/dist/malicious-app.js +6 -4
- package/dist/screenshoot.html +1 -1
- package/dist/screenshoot.js +9619 -4865
- package/package.json +1 -1
- package/src/chatbox/ChatButton.js +12 -1
- package/src/chatbox/Header.js +15 -0
- package/src/util/common.js +16 -0
- package/dist/178.js +0 -406
- package/dist/18a02a9c54e.132.js +0 -1
- package/dist/18a02a9c54e.178.js +0 -1
- package/dist/18a02a9c54e.213.js +0 -1
- package/dist/18a02a9c54e.335.js +0 -1
- package/dist/18a02a9c54e.362.js +0 -1
- package/dist/18a02a9c54e.441.js +0 -1
- package/dist/18a02a9c54e.605.js +0 -1
- package/dist/18a02a9c54e.678.js +0 -1
- package/dist/18a02a9c54e.782.js +0 -1
- package/dist/18a02a9c54e.app.js +0 -1
- package/dist/18a02a9c54e.library.js +0 -1
- package/dist/18a02a9c54e.preview.js +0 -1
- package/dist/18a02a9c54e.screenshoot.js +0 -1
- package/dist/18a02a9c54e.webview.js +0 -1
- package/dist/213.js +0 -2780
- package/dist/362.js +0 -107
- package/dist/441.js +0 -2855
- package/dist/782.js +0 -107
package/assets/less/avatar.less
CHANGED
|
@@ -14,9 +14,6 @@
|
|
|
14
14
|
border-radius: 35px;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
.group-avatar--secondary {
|
|
18
|
-
}
|
|
19
|
-
|
|
20
17
|
.group-avatar--secondary .avatar {
|
|
21
18
|
position: relative;
|
|
22
19
|
width: 35px;
|
|
@@ -24,6 +21,13 @@
|
|
|
24
21
|
border-radius: 35px;
|
|
25
22
|
}
|
|
26
23
|
|
|
24
|
+
.avatar.avatar__account {
|
|
25
|
+
width: 38px;
|
|
26
|
+
height: 38px;
|
|
27
|
+
border-radius: 8px;
|
|
28
|
+
margin-right: @spacer1;
|
|
29
|
+
}
|
|
30
|
+
|
|
27
31
|
.group-avatar--primary .group-avatar--agent-middle {
|
|
28
32
|
width: 50px;
|
|
29
33
|
height: 50px;
|
|
@@ -44,7 +44,9 @@
|
|
|
44
44
|
|
|
45
45
|
.widget-header--description {
|
|
46
46
|
font-size: 14px;
|
|
47
|
-
white-space:
|
|
47
|
+
white-space: nowrap;
|
|
48
|
+
overflow: hidden;
|
|
49
|
+
text-overflow: ellipsis;
|
|
48
50
|
opacity: 0.7;
|
|
49
51
|
flex: 1;
|
|
50
52
|
.color(@text-color);
|
|
@@ -167,23 +169,43 @@
|
|
|
167
169
|
height: 24px;
|
|
168
170
|
display: block;
|
|
169
171
|
position: relative;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/*
|
|
175
|
+
.widget-header--button-close {
|
|
176
|
+
display: flex;
|
|
177
|
+
border-radius: 6px;
|
|
178
|
+
justify-self: flex-end;
|
|
179
|
+
align-items: center;
|
|
180
|
+
align-self: flex-start;
|
|
170
181
|
|
|
171
|
-
cursor: pointer;
|
|
172
|
-
scale: 1;
|
|
173
|
-
transition:
|
|
174
|
-
scale 0.15s ease,
|
|
175
|
-
filter 0.15s ease;
|
|
176
182
|
filter: brightness(0.95);
|
|
177
183
|
&:hover {
|
|
184
|
+
opacity: 1;
|
|
178
185
|
filter: brightness(1.1);
|
|
179
186
|
scale: 1.1;
|
|
180
187
|
}
|
|
181
188
|
}
|
|
182
|
-
|
|
189
|
+
*/
|
|
183
190
|
.widget-header--wrap-button-back {
|
|
184
191
|
display: flex;
|
|
185
192
|
position: relative;
|
|
186
193
|
margin-right: @spacer1;
|
|
194
|
+
|
|
195
|
+
cursor: pointer;
|
|
196
|
+
scale: 1;
|
|
197
|
+
opacity: 0.6;
|
|
198
|
+
|
|
199
|
+
transition:
|
|
200
|
+
opacity 0.15s ease,
|
|
201
|
+
scale 0.15s ease,
|
|
202
|
+
filter 0.15s ease;
|
|
203
|
+
filter: brightness(0.95);
|
|
204
|
+
&:hover {
|
|
205
|
+
opacity: 1;
|
|
206
|
+
filter: brightness(1.1);
|
|
207
|
+
scale: 1.1;
|
|
208
|
+
}
|
|
187
209
|
}
|
|
188
210
|
|
|
189
211
|
.fade-enter-active,
|
|
@@ -351,9 +351,18 @@ class ChatButton extends _common.Com {
|
|
|
351
351
|
defmsg = defmsg || this.props.t('sent_you_a_message');
|
|
352
352
|
var format = _index.default.get(ev, 'data.message.format');
|
|
353
353
|
let block = _index.default.get(ev, 'data.message.block');
|
|
354
|
-
if (block || format == 'block')
|
|
355
|
-
block
|
|
356
|
-
|
|
354
|
+
if (block || format == 'block') {
|
|
355
|
+
if (_index.default.isBlockEmpty(block)) {
|
|
356
|
+
let attachments = _index.default.get(ev, 'data.message.attachments');
|
|
357
|
+
if (_index.default.size(attachments) > 0) {
|
|
358
|
+
return (0, _preact.h)("div", null, `${this.props.t('send')} ${_index.default.size(attachments)} ${_index.default.size(attachments) > 1 ? this.props.t('attachments') : this.props.t('attachment')}`);
|
|
359
|
+
}
|
|
360
|
+
return defmsg;
|
|
361
|
+
}
|
|
362
|
+
return (0, _preact.h)(_block.default, {
|
|
363
|
+
block: block
|
|
364
|
+
});
|
|
365
|
+
}
|
|
357
366
|
let message = _index.default.get(ev, 'data.message.text', defmsg);
|
|
358
367
|
if (!message && _index.default.size(_index.default.get(ev, 'data.message.attachments')) > 0) message = defmsg;
|
|
359
368
|
if (!message) return null;
|
|
@@ -14,6 +14,17 @@ class Header extends _common.Com {
|
|
|
14
14
|
constructor(props) {
|
|
15
15
|
super(props);
|
|
16
16
|
}
|
|
17
|
+
renderAccountAvatar() {
|
|
18
|
+
let acc = this.props.store.matchAccount() || {};
|
|
19
|
+
if (!acc.logo_url) return null;
|
|
20
|
+
return (0, _preact.h)("img", {
|
|
21
|
+
width: 38,
|
|
22
|
+
height: 38,
|
|
23
|
+
alt: acc.name,
|
|
24
|
+
class: "avatar avatar__account",
|
|
25
|
+
src: this.props.store.replaceFileUrl(acc.logo_url) || require('../../assets/img/image_default.png')
|
|
26
|
+
});
|
|
27
|
+
}
|
|
17
28
|
render() {
|
|
18
29
|
let headerMode = 'collapsed';
|
|
19
30
|
let cls = 'widget-header';
|
|
@@ -49,7 +60,7 @@ class Header extends _common.Com {
|
|
|
49
60
|
return (0, _preact.h)("div", {
|
|
50
61
|
class: cls,
|
|
51
62
|
style: style
|
|
52
|
-
}, $back, (0, _preact.h)("div", {
|
|
63
|
+
}, $back, this.renderAccountAvatar(), (0, _preact.h)("div", {
|
|
53
64
|
class: "widget-header--title-container"
|
|
54
65
|
}, (0, _preact.h)("div", {
|
|
55
66
|
class: "widget-header--title"
|
|
@@ -31,6 +31,7 @@ exports.getUrlParameter = getUrlParameter;
|
|
|
31
31
|
exports.getUserAttr = getUserAttr;
|
|
32
32
|
exports.hslToRgb = hslToRgb;
|
|
33
33
|
exports.includes = includes;
|
|
34
|
+
exports.isBlockEmpty = isBlockEmpty;
|
|
34
35
|
exports.isConvoSeen = isConvoSeen;
|
|
35
36
|
exports.isEmail = isEmail;
|
|
36
37
|
exports.isNumber = isNumber;
|
|
@@ -1214,6 +1215,20 @@ const ALL_CURRENCIES = [{
|
|
|
1214
1215
|
function blockToText(block) {
|
|
1215
1216
|
return _blockToText(block).trim();
|
|
1216
1217
|
}
|
|
1218
|
+
function isBlockEmpty(block) {
|
|
1219
|
+
return _isBlockEmpty(block);
|
|
1220
|
+
}
|
|
1221
|
+
function _isBlockEmpty(block = {}) {
|
|
1222
|
+
if (!size(block.contents)) {
|
|
1223
|
+
if ((block.text || '').trim()) return false;
|
|
1224
|
+
return true;
|
|
1225
|
+
}
|
|
1226
|
+
let result = true;
|
|
1227
|
+
map(block.contents, content => {
|
|
1228
|
+
result = result && _isBlockEmpty(content);
|
|
1229
|
+
});
|
|
1230
|
+
return result;
|
|
1231
|
+
}
|
|
1217
1232
|
function _blockToText(block) {
|
|
1218
1233
|
if (!block || !block.type) return '';
|
|
1219
1234
|
let out = '';
|
package/dist/127.js
ADDED
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
(self["webpackChunk_subiz_widget_v4"] = self["webpackChunk_subiz_widget_v4"] || []).push([[127],{
|
|
3
|
+
|
|
4
|
+
/***/ 6127:
|
|
5
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6
|
+
|
|
7
|
+
__webpack_require__.r(__webpack_exports__);
|
|
8
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
9
|
+
/* harmony export */ "default": () => (/* binding */ ProductAttachments)
|
|
10
|
+
/* harmony export */ });
|
|
11
|
+
/* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8150);
|
|
12
|
+
/* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2840);
|
|
13
|
+
/* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(172);
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class ProductAttachments extends _common_js__WEBPACK_IMPORTED_MODULE_1__/* .Com */ .Mw {
|
|
18
|
+
render() {
|
|
19
|
+
let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(this.props.ev, 'by.type');
|
|
20
|
+
if (byType === 'user') return null;
|
|
21
|
+
let acc = this.props.store.matchAccount();
|
|
22
|
+
var attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(this.props.ev, 'data.message.attachments', []);
|
|
23
|
+
let orders = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.filter(attachments, att => att.type === 'order' && att.order).map(att => att.order);
|
|
24
|
+
if (orders.length === 0) return null;
|
|
25
|
+
let $orders = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.map(orders, (order, index) => {
|
|
26
|
+
calcOrderTotal(order);
|
|
27
|
+
let $note = null;
|
|
28
|
+
if (order.note) {
|
|
29
|
+
$note = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
30
|
+
class: "order_attachment__label"
|
|
31
|
+
}, this.props.t('note')), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
32
|
+
class: "order_attachment__note",
|
|
33
|
+
title: order.note
|
|
34
|
+
}, order.note));
|
|
35
|
+
}
|
|
36
|
+
let $products = null;
|
|
37
|
+
if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.size(order.items) > 0) {
|
|
38
|
+
$products = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
39
|
+
class: "order_attachment__label"
|
|
40
|
+
}, this.props.t('product')), _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.map(order.items, item => {
|
|
41
|
+
let product = item.product || {};
|
|
42
|
+
return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
43
|
+
class: "order_attachment__product"
|
|
44
|
+
}, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("img", {
|
|
45
|
+
class: "order_attachment__product_img",
|
|
46
|
+
alt: '' + _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(product, 'id'),
|
|
47
|
+
src: _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(product, 'image', __webpack_require__(2876))
|
|
48
|
+
}), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
49
|
+
style: "overflow: hidden !important;"
|
|
50
|
+
}, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
51
|
+
class: "order_attachment__product_name",
|
|
52
|
+
title: this.props.t.i18n(product.i18n_name) || product.name
|
|
53
|
+
}, this.props.t.i18n(product.i18n_name) || product.name), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
54
|
+
class: "order_attachment__product_desc"
|
|
55
|
+
}, getProductPropName(product, ' / ')), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
56
|
+
class: "order_attachment__product_desc"
|
|
57
|
+
}, this.props.t('qty'), " ", item.quantity, "\xA0\xB7\xA0", _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(product.price))));
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
let $total = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
61
|
+
class: "order_attachment__footer"
|
|
62
|
+
}, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
63
|
+
class: "d-flex align-items-center justify-content-between"
|
|
64
|
+
}, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, this.props.t('total')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("b", {
|
|
65
|
+
class: "order_attachment__total"
|
|
66
|
+
}, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order.total)))));
|
|
67
|
+
let phoneattr = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.find(_util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(order, 'user.attributes', []), attr => attr.key === 'phones') || {
|
|
68
|
+
key: 'phones',
|
|
69
|
+
text: ''
|
|
70
|
+
};
|
|
71
|
+
let phone = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(order, 'shipping.address.phone', '').trim();
|
|
72
|
+
phone = phone || _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.trim(phoneattr.text);
|
|
73
|
+
if (phone) phone = this.props.t('phn') + ': ' + phone;
|
|
74
|
+
let $shipto = null;
|
|
75
|
+
if (displayOrderShippingAddress(order) || phone) {
|
|
76
|
+
$shipto = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
77
|
+
class: "order_attachment__label"
|
|
78
|
+
}, this.props.t('ship_to')), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, displayOrderShippingAddress(order)), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
79
|
+
class: "order_attachment__text_truncate"
|
|
80
|
+
}, phone));
|
|
81
|
+
}
|
|
82
|
+
let $beforeTax = null;
|
|
83
|
+
if (order._discount_before_tax) {
|
|
84
|
+
$beforeTax = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
85
|
+
class: "order_attachment__footer"
|
|
86
|
+
}, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
87
|
+
class: "d-flex align-items-center justify-content-between"
|
|
88
|
+
}, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
89
|
+
class: "order_attachment__label no_margin"
|
|
90
|
+
}, this.props.t('subtotal_before_tax')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order._order_value))), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
91
|
+
class: "d-flex align-items-center justify-content-between"
|
|
92
|
+
}, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
93
|
+
class: "order_attachment__label no_margin"
|
|
94
|
+
}, this.props.t('discount_before_tax')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, "-", _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order._discount_before_tax))));
|
|
95
|
+
}
|
|
96
|
+
let $subtotal = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
97
|
+
class: "d-flex align-items-center justify-content-between"
|
|
98
|
+
}, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
99
|
+
class: "order_attachment__label no_margin"
|
|
100
|
+
}, this.props.t('subtotal')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
101
|
+
style: ""
|
|
102
|
+
}, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order.subtotal)));
|
|
103
|
+
let $tax = null;
|
|
104
|
+
if (order.total_tax) {
|
|
105
|
+
let taxname = '';
|
|
106
|
+
if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.size(order._taxM) === 1) {
|
|
107
|
+
let tax = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(order._taxM, '0.tax', {});
|
|
108
|
+
if (tax.name && tax.percentage) taxname = `(${tax.name} ${Math.round(tax.percentage || 0) / 100}%)`;
|
|
109
|
+
}
|
|
110
|
+
$tax = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
111
|
+
class: "d-flex align-items-center justify-content-between"
|
|
112
|
+
}, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
113
|
+
class: "order_attachment__label no_margin"
|
|
114
|
+
}, this.props.t('tax'), " ", taxname), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
115
|
+
style: ""
|
|
116
|
+
}, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order.total_tax)));
|
|
117
|
+
}
|
|
118
|
+
let $discount = null;
|
|
119
|
+
if (order.discount_type === 'percentage' && order.discount_percentage) {
|
|
120
|
+
$discount = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
121
|
+
class: "d-flex align-items-center justify-content-between"
|
|
122
|
+
}, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
123
|
+
class: "order_attachment__label no_margin"
|
|
124
|
+
}, this.props.t('discount_after_tax'), " (", Math.round(order.discount_percentage / 100), "%)"), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
125
|
+
style: ""
|
|
126
|
+
}, "-", _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order._computed_discount)));
|
|
127
|
+
}
|
|
128
|
+
if (order.discount_type === 'amount' && order.discount_amount) {
|
|
129
|
+
$discount = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
130
|
+
class: "d-flex align-items-center justify-content-between"
|
|
131
|
+
}, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
132
|
+
class: "order_attachment__label no_margin"
|
|
133
|
+
}, this.props.t('discount_after_tax')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
134
|
+
class: "no-shrink"
|
|
135
|
+
}, "-", _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order._computed_discount)));
|
|
136
|
+
}
|
|
137
|
+
let $shipping = null;
|
|
138
|
+
if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(order, 'shipping.nominal_fee')) {
|
|
139
|
+
$shipping = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
140
|
+
class: "d-flex align-items-center justify-content-between"
|
|
141
|
+
}, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
142
|
+
class: "order_attachment__label no_margin"
|
|
143
|
+
}, this.props.t('shipping_fee')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
144
|
+
style: ""
|
|
145
|
+
}, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(_util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(order, 'shipping.nominal_fee', 0))));
|
|
146
|
+
}
|
|
147
|
+
let $adjustment = null;
|
|
148
|
+
if (order.adjustment) {
|
|
149
|
+
$adjustment = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
150
|
+
class: "d-flex align-items-center justify-content-between"
|
|
151
|
+
}, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
152
|
+
class: "order_attachment__label no_margin"
|
|
153
|
+
}, order.adjustment_description), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
154
|
+
class: "no-shrink"
|
|
155
|
+
}, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order.adjustment)));
|
|
156
|
+
}
|
|
157
|
+
$subtotal = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
158
|
+
class: "order_attachment__footer"
|
|
159
|
+
}, $subtotal, $tax, $shipping, $discount, $adjustment);
|
|
160
|
+
if (!$shipping && !$adjustment && !$discount && !$tax) {
|
|
161
|
+
$subtotal = null;
|
|
162
|
+
}
|
|
163
|
+
return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
164
|
+
class: `order_attachment order_attachment__${byType}`
|
|
165
|
+
}, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
|
|
166
|
+
class: "order_attachment__header"
|
|
167
|
+
}, this.props.t('order'), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("span", {
|
|
168
|
+
class: "order_attachment__text_muted order_attachment__text_sm"
|
|
169
|
+
}, getOrderDisplayName(order))), $products, $shipto, $note, $beforeTax, $subtotal, $total);
|
|
170
|
+
});
|
|
171
|
+
return $orders;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
function getProductPropName(product, seperator = ' - ') {
|
|
175
|
+
let options = op.get(product, 'options', []);
|
|
176
|
+
let props = op.get(product, 'props', []);
|
|
177
|
+
let multiPropsOptions = op.filter(options, option => op.size(option.values) > 1);
|
|
178
|
+
let names = [];
|
|
179
|
+
op.each(multiPropsOptions, option => {
|
|
180
|
+
let prop = op.find(props, prop => prop.key === option.key) || {};
|
|
181
|
+
if (prop.value) names.push(prop.value);
|
|
182
|
+
});
|
|
183
|
+
return names.join(seperator);
|
|
184
|
+
}
|
|
185
|
+
function getOrderDisplayName(order = {}) {
|
|
186
|
+
return order.number || order.id || '';
|
|
187
|
+
}
|
|
188
|
+
function displayOrderShippingAddress(order, isShorten) {
|
|
189
|
+
let addr = op.get(order, 'shipping.address', {});
|
|
190
|
+
let fulladdr = [addr.address, addr.ward, addr.district, addr.province].filter(a => a).join(', ').trim();
|
|
191
|
+
if (isShorten) fulladdr = shortenAddr(fulladdr);
|
|
192
|
+
return fulladdr;
|
|
193
|
+
}
|
|
194
|
+
function shortenAddr(str) {
|
|
195
|
+
str = str || '';
|
|
196
|
+
str = str.replace(/Hà Nội/gi, 'HN');
|
|
197
|
+
str = str.replace(/Hồ Chí Minh/gi, 'HCM');
|
|
198
|
+
str = str.replace(/Thành Phố/gi, 'TP');
|
|
199
|
+
return str;
|
|
200
|
+
}
|
|
201
|
+
function calcOrderTotal(order) {
|
|
202
|
+
let subtotal = 0;
|
|
203
|
+
let beforeTaxDiscount = 0;
|
|
204
|
+
let ordervalue = 0;
|
|
205
|
+
op.map(order.items, item => {
|
|
206
|
+
if (!item.product) return 0;
|
|
207
|
+
let price = op.get(item, 'product.price', 0) * (item.quantity || 0);
|
|
208
|
+
ordervalue += price;
|
|
209
|
+
if (item.discount_type == 'percentage') {
|
|
210
|
+
if (item.discount_percentage > 0) {
|
|
211
|
+
beforeTaxDiscount += price * item.discount_percentage / 10000;
|
|
212
|
+
price = price * (1 - (item.discount_percentage || 0) / 10000);
|
|
213
|
+
}
|
|
214
|
+
} else if (item.discount_type == 'amount') {
|
|
215
|
+
if (item.discount_amount > 0) {
|
|
216
|
+
beforeTaxDiscount += item.discount_amount;
|
|
217
|
+
price = price - (item.discount_amount || 0);
|
|
218
|
+
if (price <= 0) price = 0;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
item.total = price;
|
|
222
|
+
subtotal += price;
|
|
223
|
+
});
|
|
224
|
+
let taxM = {};
|
|
225
|
+
op.map(order.items, (item, i) => {
|
|
226
|
+
if (!item.product) return;
|
|
227
|
+
let tax = item.product.tax;
|
|
228
|
+
if (!tax) return;
|
|
229
|
+
if (!tax.id) return;
|
|
230
|
+
let taxprice = item.total * tax.percentage / 10000;
|
|
231
|
+
item.total_tax = taxprice;
|
|
232
|
+
taxM[i] = {
|
|
233
|
+
tax: tax,
|
|
234
|
+
taxprice: taxprice
|
|
235
|
+
};
|
|
236
|
+
});
|
|
237
|
+
let totaltax = 0;
|
|
238
|
+
op.map(taxM, t => totaltax += t.taxprice);
|
|
239
|
+
let computed_discount = 0;
|
|
240
|
+
if (order.discount_type == 'percentage' && order.discount_percentage > 0) {
|
|
241
|
+
computed_discount = (subtotal + totaltax) * order.discount_percentage / 10000;
|
|
242
|
+
} else if (order.discount_type == 'amount') {
|
|
243
|
+
computed_discount = order.discount_amount || 0;
|
|
244
|
+
}
|
|
245
|
+
let shippingfee = op.get(order, 'shipping.nominal_fee', 0);
|
|
246
|
+
if (shippingfee > 0) {
|
|
247
|
+
if (op.get(order, 'shipping.tax.id')) {
|
|
248
|
+
let tax = order.shipping.tax;
|
|
249
|
+
let taxprice = shippingfee * (tax.percentage / 10000);
|
|
250
|
+
taxM['ship'] = {
|
|
251
|
+
tax: tax,
|
|
252
|
+
taxprice: taxprice
|
|
253
|
+
};
|
|
254
|
+
order.shipping.total_tax = taxprice;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
totaltax = 0;
|
|
258
|
+
op.map(taxM, t => totaltax += t.taxprice);
|
|
259
|
+
let total = subtotal + totaltax - computed_discount + shippingfee;
|
|
260
|
+
total += order.adjustment || 0;
|
|
261
|
+
if (total < 0) total = 0;
|
|
262
|
+
order.subtotal = subtotal;
|
|
263
|
+
order._computed_discount = computed_discount;
|
|
264
|
+
order._taxM = taxM;
|
|
265
|
+
order.total = total;
|
|
266
|
+
order.total_tax = totaltax;
|
|
267
|
+
order._discount_before_tax = beforeTaxDiscount;
|
|
268
|
+
order._order_value = ordervalue;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/***/ })
|
|
272
|
+
|
|
273
|
+
}]);
|