@subiz/widget-v4 4.0.61 → 4.0.66
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/img/caret.svg +1 -0
- package/assets/img/done_green.svg +4 -0
- package/assets/img/empty_1.svg +11 -0
- package/assets/img/ghn.svg +17 -0
- package/assets/img/ghtk.svg +18 -0
- package/assets/img/home.svg +1 -0
- package/assets/img/info.svg +1 -0
- package/assets/img/loader.svg +1 -0
- package/assets/img/map-pin.svg +1 -0
- package/assets/img/not_found_search.png +0 -0
- package/assets/img/package.svg +5 -0
- package/assets/img/package_fade.svg +1 -0
- package/assets/img/phone.svg +1 -0
- package/assets/img/search.svg +1 -0
- package/assets/img/shop.svg +1 -0
- package/assets/img/shop_faded.svg +1 -0
- package/assets/img/user.svg +1 -0
- package/assets/img/x.svg +5 -0
- package/assets/less/chatbox.less +39 -1
- package/assets/less/dropdown_select.less +130 -0
- package/assets/less/form.less +7 -20
- package/assets/less/order.less +489 -0
- package/assets/less/rating.less +3 -8
- package/babel.config.js +2 -4
- package/compiled_src/bot.js +7 -1
- package/compiled_src/chatbox/ChatButton.js +3 -1
- package/compiled_src/chatbox/DropdownSelect.js +248 -0
- package/compiled_src/chatbox/Event.js +5 -2
- package/compiled_src/chatbox/Events.js +1 -0
- package/compiled_src/chatbox/Order.js +285 -0
- package/compiled_src/chatbox/OrderAttachments.js +2 -1
- package/compiled_src/chatbox/ProductAttachments.js +40 -4
- package/compiled_src/chatbox/TextMessage.js +9 -2
- package/compiled_src/chatbox/Typing.js +3 -1
- package/compiled_src/chatbox/Widget.js +44 -3
- package/compiled_src/chatbox/main.js +2 -0
- package/compiled_src/chatbox/spinner.js +1 -1
- package/compiled_src/chatbox/time.js +3 -1
- package/compiled_src/common.js +40 -1
- package/compiled_src/contact/contact.js +1 -3
- package/compiled_src/order/address_picker.js +249 -0
- package/compiled_src/order/icon.js +62 -0
- package/compiled_src/order/index.js +113 -0
- package/compiled_src/order/order.js +1234 -0
- package/compiled_src/plugin.js +9 -42
- package/compiled_src/store/api.js +20 -0
- package/compiled_src/store/store.js +67 -3
- package/compiled_src/util/common.js +36 -2
- package/dist/{74.js → 132.js} +2355 -271
- package/dist/178.js +1 -1
- package/dist/17fdfed03d1.132.js +1 -0
- package/dist/17fdfed03d1.178.js +1 -0
- package/dist/17fdfed03d1.213.js +1 -0
- package/dist/17fdfed03d1.335.js +1 -0
- package/dist/17fdfed03d1.362.js +1 -0
- package/dist/17fdfed03d1.441.js +1 -0
- package/dist/17fdfed03d1.605.js +1 -0
- package/dist/{17db8166252.678.js → 17fdfed03d1.678.js} +0 -0
- package/dist/17fdfed03d1.782.js +1 -0
- package/dist/17fdfed03d1.app.js +1 -0
- package/dist/{17db8166252.index.html → 17fdfed03d1.index.html} +1 -1
- package/dist/{17db8166252.library.html → 17fdfed03d1.library.html} +1 -1
- package/dist/17fdfed03d1.library.js +1 -0
- package/dist/{17db8166252.preview.html → 17fdfed03d1.preview.html} +1 -1
- package/dist/17fdfed03d1.preview.js +1 -0
- package/dist/17fdfed03d1.screenshoot.js +1 -0
- package/dist/213.js +5 -69
- package/dist/335.js +411 -0
- package/dist/362.js +1 -1
- package/dist/441.js +70 -44
- package/dist/605.js +1 -64
- package/dist/782.js +1 -1
- package/dist/HASH +1 -1
- package/dist/assets/img/caret.998eb8f.svg +1 -0
- package/dist/assets/img/done_green.b817fd4.svg +4 -0
- package/dist/assets/img/empty_1.0b98af0.svg +11 -0
- package/dist/assets/img/ghn.070f8e3.svg +17 -0
- package/dist/assets/img/ghtk.326eac1.svg +18 -0
- package/dist/assets/img/info.ebce7ea.svg +1 -0
- package/dist/assets/img/loader.37000a7.svg +1 -0
- package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
- package/dist/assets/img/package.8d37d0f.svg +5 -0
- package/dist/assets/img/package_fade.763c001.svg +1 -0
- package/dist/assets/img/search.f9705ff.svg +1 -0
- package/dist/assets/img/shop.f7dc7d8.svg +1 -0
- package/dist/assets/img/shop_faded.df7845a.svg +1 -0
- package/dist/assets/img/x.26fdfa3.svg +5 -0
- package/dist/screenshoot.html +1 -1
- package/dist/screenshoot.js +281 -98
- package/order.html +19 -771
- package/package.json +15 -16
- package/src/bot.js +2 -1
- package/src/chatbox/Buttons.js +8 -8
- package/src/chatbox/ChatButton.js +2 -2
- package/src/chatbox/DropdownSelect.js +229 -0
- package/src/chatbox/Event.js +3 -3
- package/src/chatbox/Events.js +43 -42
- package/src/chatbox/Order.js +232 -0
- package/src/chatbox/OrderAttachments.js +2 -1
- package/src/chatbox/ProductAttachments.js +41 -5
- package/src/chatbox/TextMessage.js +21 -12
- package/src/chatbox/Typing.js +5 -1
- package/src/chatbox/Widget.js +34 -4
- package/src/chatbox/main.js +4 -1
- package/src/chatbox/spinner.js +1 -1
- package/src/chatbox/time.js +1 -1
- package/src/common.js +52 -8
- package/src/contact/contact.js +1 -1
- package/src/order/address_picker.js +235 -0
- package/src/order/icon.js +32 -0
- package/src/order/index.js +86 -0
- package/src/order/order.js +1157 -0
- package/src/order/scratch +211 -0
- package/src/plugin.js +7 -52
- package/src/store/api.js +26 -1
- package/src/store/store.js +53 -3
- package/src/util/common.js +48 -2
- package/up +1 -1
- package/webpack.dev.js +2 -0
- package/dist/17db8166252.178.js +0 -1
- package/dist/17db8166252.213.js +0 -1
- package/dist/17db8166252.362.js +0 -1
- package/dist/17db8166252.441.js +0 -1
- package/dist/17db8166252.605.js +0 -1
- package/dist/17db8166252.619.js +0 -1
- package/dist/17db8166252.74.js +0 -1
- package/dist/17db8166252.782.js +0 -1
- package/dist/17db8166252.app.js +0 -1
- package/dist/17db8166252.library.js +0 -1
- package/dist/17db8166252.preview.js +0 -1
- package/dist/17db8166252.screenshoot.js +0 -1
- package/dist/619.js +0 -777
- package/order.js +0 -0
- package/test.js +0 -1
|
@@ -23,6 +23,8 @@ var _Typing = _interopRequireDefault(require("./Typing.js"));
|
|
|
23
23
|
|
|
24
24
|
var _Rating = _interopRequireDefault(require("./Rating.js"));
|
|
25
25
|
|
|
26
|
+
var _Order = _interopRequireDefault(require("./Order.js"));
|
|
27
|
+
|
|
26
28
|
var _ListField = _interopRequireDefault(require("./ListField.js"));
|
|
27
29
|
|
|
28
30
|
var _spinner = _interopRequireDefault(require("./spinner.js"));
|
|
@@ -35,6 +37,8 @@ var _preact = require("preact");
|
|
|
35
37
|
|
|
36
38
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
37
39
|
|
|
40
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
41
|
+
|
|
38
42
|
var send = require('../../assets/img/send.svg');
|
|
39
43
|
|
|
40
44
|
var checkedimg = require('../../assets/img/done_gray.svg');
|
|
@@ -46,11 +50,38 @@ const defaultAvatar = 'https://file-subiz.com/fiqoahedjbgwclpouoml-avatar_defaul
|
|
|
46
50
|
class Widget extends _common.Com {
|
|
47
51
|
constructor(props) {
|
|
48
52
|
super(props);
|
|
53
|
+
|
|
54
|
+
_defineProperty(this, "onLink", (e, url) => {
|
|
55
|
+
if (!url) return e.preventDefault();
|
|
56
|
+
let noschemeurl = url.replace(/(^\w+:|^)\/\//, '');
|
|
57
|
+
|
|
58
|
+
if (noschemeurl.startsWith('widget.subiz.com.vn/orders/')) {
|
|
59
|
+
let orderid = noschemeurl.substr('widget.subiz.com.vn/orders/'.length);
|
|
60
|
+
orderid = orderid.split('/')[0];
|
|
61
|
+
this.setState({
|
|
62
|
+
showOrder: true,
|
|
63
|
+
order_id: orderid
|
|
64
|
+
});
|
|
65
|
+
e.preventDefault();
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
_defineProperty(this, "closeOrder", e => {
|
|
71
|
+
this.setState({
|
|
72
|
+
showOrder: false,
|
|
73
|
+
order_id: ''
|
|
74
|
+
});
|
|
75
|
+
this.focusInput();
|
|
76
|
+
});
|
|
77
|
+
|
|
49
78
|
this.userSent = {};
|
|
50
79
|
this.setState({
|
|
51
80
|
creating: false,
|
|
52
81
|
clickedJoin: false,
|
|
53
|
-
formData: {}
|
|
82
|
+
formData: {},
|
|
83
|
+
showOrder: false,
|
|
84
|
+
order_id: ''
|
|
54
85
|
});
|
|
55
86
|
this.props.store.onUpdate(this, _ => this.forceUpdate());
|
|
56
87
|
}
|
|
@@ -66,6 +97,7 @@ class Widget extends _common.Com {
|
|
|
66
97
|
}
|
|
67
98
|
|
|
68
99
|
if (prevProp.cid !== this.props.cid) {
|
|
100
|
+
this.closeOrder();
|
|
69
101
|
this.setState({
|
|
70
102
|
clickedJoin: false
|
|
71
103
|
});
|
|
@@ -84,7 +116,6 @@ class Widget extends _common.Com {
|
|
|
84
116
|
}
|
|
85
117
|
|
|
86
118
|
render() {
|
|
87
|
-
let formRequired = this.isFormRequired();
|
|
88
119
|
let showform = this.shouldShowForm();
|
|
89
120
|
let form;
|
|
90
121
|
let accountSetting = this.props.plugin.chatbox || {};
|
|
@@ -637,6 +668,7 @@ class Widget extends _common.Com {
|
|
|
637
668
|
onClick: e => this.onContainerClick(e)
|
|
638
669
|
}, (0, _preact.h)(_Events.default, {
|
|
639
670
|
isShow: this.props.isShow,
|
|
671
|
+
onLink: this.onLink,
|
|
640
672
|
store: this.props.store,
|
|
641
673
|
onFormSubmit: e => this.onEventFormSubmit(e),
|
|
642
674
|
ref: ref => this.events = ref,
|
|
@@ -656,6 +688,15 @@ class Widget extends _common.Com {
|
|
|
656
688
|
onRate: e => this.onRate(e),
|
|
657
689
|
cid: this.props.cid,
|
|
658
690
|
t: this.props.t
|
|
691
|
+
}), (0, _preact.h)(_Order.default, {
|
|
692
|
+
forceView: this.props.view,
|
|
693
|
+
plugin: this.props.plugin,
|
|
694
|
+
show: this.state.showOrder,
|
|
695
|
+
order_id: this.state.order_id,
|
|
696
|
+
store: this.props.store,
|
|
697
|
+
onClose: this.closeOrder,
|
|
698
|
+
cid: this.props.cid,
|
|
699
|
+
t: this.props.t
|
|
659
700
|
}), $input);
|
|
660
701
|
}
|
|
661
702
|
|
|
@@ -952,5 +993,5 @@ class FormMounter extends _common.Com {
|
|
|
952
993
|
}
|
|
953
994
|
|
|
954
995
|
function encode(key) {
|
|
955
|
-
return
|
|
996
|
+
return encodeURIComponent(key);
|
|
956
997
|
}
|
|
@@ -184,11 +184,13 @@ class Main extends _common.Com {
|
|
|
184
184
|
exports.default = Main;
|
|
185
185
|
|
|
186
186
|
function restoreViewport() {
|
|
187
|
+
if (document.body && document.body.classList) document.body.classList.remove('sbz_no_scroll');
|
|
187
188
|
let metatag = document.getElementById('subiz-meta-viewport');
|
|
188
189
|
if (metatag) metatag.remove();
|
|
189
190
|
}
|
|
190
191
|
|
|
191
192
|
function modifyViewport() {
|
|
193
|
+
if (document.body && document.body.classList) document.body.classList.add('sbz_no_scroll');
|
|
192
194
|
let metatag = document.createElement('meta');
|
|
193
195
|
metatag.httpEquiv = 'X-UA-Compatible';
|
|
194
196
|
metatag.name = 'viewport';
|
|
@@ -23,7 +23,7 @@ class Spinner extends _common.Com {
|
|
|
23
23
|
border-bottom-color: ${borderColor} !important;border-right-color: ${mainColor} !important;`;
|
|
24
24
|
|
|
25
25
|
if (this.props.static) {
|
|
26
|
-
let style = `width: ${size}px;height: ${size}px;`;
|
|
26
|
+
let style = `width: ${size}px !important;height: ${size}px !important;`;
|
|
27
27
|
if (size < 40) return (0, _preact.h)(LoaderIcon, {
|
|
28
28
|
size: size + '',
|
|
29
29
|
style: `stroke:${mainColor}`
|
package/compiled_src/common.js
CHANGED
|
@@ -4,6 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Com = exports.Clickaway = void 0;
|
|
7
|
+
exports.downloadLanguage = downloadLanguage;
|
|
8
|
+
exports.langMessages = exports.getLocale = void 0;
|
|
7
9
|
|
|
8
10
|
var _preact = require("preact");
|
|
9
11
|
|
|
@@ -64,4 +66,41 @@ class Clickaway extends Com {
|
|
|
64
66
|
|
|
65
67
|
}
|
|
66
68
|
|
|
67
|
-
exports.Clickaway = Clickaway;
|
|
69
|
+
exports.Clickaway = Clickaway;
|
|
70
|
+
|
|
71
|
+
const getLocale = (plugin, loc) => {
|
|
72
|
+
if (!loc) loc = '';
|
|
73
|
+
|
|
74
|
+
let found = _index.default.find(plugin.locales, l => l.toLowerCase().trim() === loc.toLowerCase().trim());
|
|
75
|
+
|
|
76
|
+
if (found) return found;
|
|
77
|
+
found = _index.default.find(plugin.locales, l => {
|
|
78
|
+
l = l.replace('-', '_').split('_')[0].trim().toLowerCase();
|
|
79
|
+
let compareloc = loc.replace('-', '_').split('_')[0].trim().toLowerCase();
|
|
80
|
+
return l == compareloc;
|
|
81
|
+
});
|
|
82
|
+
if (found) return found;
|
|
83
|
+
return plugin.locale || 'en-US';
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
exports.getLocale = getLocale;
|
|
87
|
+
let langMessages = {};
|
|
88
|
+
exports.langMessages = langMessages;
|
|
89
|
+
let downloadLock = false;
|
|
90
|
+
|
|
91
|
+
function downloadLanguage(store, locale, force) {
|
|
92
|
+
if (downloadLock) return new Promise(resolve => setTimeout(() => downloadLanguage(store, locale, force).then(resolve), 100));
|
|
93
|
+
downloadLock = true;
|
|
94
|
+
let messages;
|
|
95
|
+
|
|
96
|
+
if (locale === 'debug' || langMessages[locale] && !force) {
|
|
97
|
+
downloadLock = false;
|
|
98
|
+
return Promise.resolve();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
return store.getLocaleContent(locale).then(res => {
|
|
102
|
+
downloadLock = false;
|
|
103
|
+
messages = _index.default.get(res, 'body.messages', []);
|
|
104
|
+
langMessages[locale] = messages;
|
|
105
|
+
});
|
|
106
|
+
}
|
|
@@ -12,8 +12,6 @@ var _preact = require("preact");
|
|
|
12
12
|
|
|
13
13
|
var _common = require("../common.js");
|
|
14
14
|
|
|
15
|
-
var _jsApiLoader = require("@googlemaps/js-api-loader");
|
|
16
|
-
|
|
17
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
18
16
|
|
|
19
17
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -44,7 +42,7 @@ class Contact extends _common.Com {
|
|
|
44
42
|
map_initialized: true,
|
|
45
43
|
map_loading: true
|
|
46
44
|
});
|
|
47
|
-
await new
|
|
45
|
+
await new Loader({
|
|
48
46
|
apiKey: 'YOUR_API_KEY',
|
|
49
47
|
version: 'weekly'
|
|
50
48
|
}).load();
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _index = _interopRequireDefault(require("../util/index.js"));
|
|
9
|
+
|
|
10
|
+
var _common = require("../common.js");
|
|
11
|
+
|
|
12
|
+
var _preact = require("preact");
|
|
13
|
+
|
|
14
|
+
var _spinner = _interopRequireDefault(require("../chatbox/spinner.js"));
|
|
15
|
+
|
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
17
|
+
|
|
18
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
19
|
+
|
|
20
|
+
class AddressPicker extends _common.Com {
|
|
21
|
+
constructor(props) {
|
|
22
|
+
super(props);
|
|
23
|
+
|
|
24
|
+
_defineProperty(this, "state", {
|
|
25
|
+
show: false,
|
|
26
|
+
searchValue: '',
|
|
27
|
+
addresses: []
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
_defineProperty(this, "filterRef", (0, _preact.createRef)());
|
|
31
|
+
|
|
32
|
+
_defineProperty(this, "overlayRef", (0, _preact.createRef)());
|
|
33
|
+
|
|
34
|
+
_defineProperty(this, "onTouchMove", e => {
|
|
35
|
+
if (e.target === this.overlayRef.current) {
|
|
36
|
+
e.preventDefault();
|
|
37
|
+
e.stopPropagation();
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
_defineProperty(this, "hideDropdown", () => {
|
|
42
|
+
this.setState({
|
|
43
|
+
show: false,
|
|
44
|
+
searchValue: ''
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
_defineProperty(this, "onKeydown", e => {
|
|
49
|
+
if (e.key === 'Escape') {
|
|
50
|
+
if (!this.state.show) return;
|
|
51
|
+
if (this.state.searchValue) this.setState({
|
|
52
|
+
searchValue: ''
|
|
53
|
+
});else this.hideDropdown();
|
|
54
|
+
e.preventDefault();
|
|
55
|
+
e.stopPropagation();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (e.key == 'Enter') {}
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
_defineProperty(this, "doSearch", _index.default.throttle(async () => {
|
|
62
|
+
let requestId = Date.now();
|
|
63
|
+
this.requestId = requestId;
|
|
64
|
+
let res = await this.props.store.suggest_addresses(this.state.searchValue);
|
|
65
|
+
if (this.requestId !== requestId) return;
|
|
66
|
+
this.setState({
|
|
67
|
+
addresses: _index.default.get(res, 'body.addresses', [])
|
|
68
|
+
});
|
|
69
|
+
}, 100));
|
|
70
|
+
|
|
71
|
+
_defineProperty(this, "onChangeSearchValue", e => {
|
|
72
|
+
this.setState({
|
|
73
|
+
searchValue: e.target.value
|
|
74
|
+
});
|
|
75
|
+
this.props.onChangeAddress(e.target.value);
|
|
76
|
+
this.doSearch();
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
_defineProperty(this, "toogleDropdown", async () => {
|
|
80
|
+
await this.setState({
|
|
81
|
+
show: true,
|
|
82
|
+
searchValue: this.props.initAddress || ''
|
|
83
|
+
});
|
|
84
|
+
this.focusFilter();
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
_defineProperty(this, "onSelect", item => {
|
|
88
|
+
this.props.onSelect(item);
|
|
89
|
+
this.hideDropdown();
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
_defineProperty(this, "onBackgroundScroll", e => {
|
|
93
|
+
console.log('EEEEEEE', e);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
document.addEventListener('touchmove', function (e) {});
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
componentDidMount() {
|
|
100
|
+
window.addEventListener('keydown', this.onKeydown);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
componentWillUnmount() {
|
|
104
|
+
window.removeEventListener('keydown', this.onKeydown);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
renderEmpty() {
|
|
108
|
+
return (0, _preact.h)("div", {
|
|
109
|
+
class: "dropdown_select_filter__empty"
|
|
110
|
+
}, (0, _preact.h)("img", {
|
|
111
|
+
class: "dropdown_select_filter__empty_img",
|
|
112
|
+
src: require('../../assets/img/not_found_search.png')
|
|
113
|
+
}), (0, _preact.h)("div", {
|
|
114
|
+
class: "muted",
|
|
115
|
+
style: "text-align: center !important;"
|
|
116
|
+
}, "Kh\xF4ng c\xF3 k\u1EBFt qu\u1EA3"));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
renderLoading() {
|
|
120
|
+
return (0, _preact.h)("div", {
|
|
121
|
+
class: "dropdown_select_filter__empty pt-3"
|
|
122
|
+
}, (0, _preact.h)(_spinner.default, {
|
|
123
|
+
size: "40",
|
|
124
|
+
static: true
|
|
125
|
+
}), (0, _preact.h)("div", {
|
|
126
|
+
class: "muted mt-2",
|
|
127
|
+
style: "text-align: center !important;"
|
|
128
|
+
}, "\u0110ang t\u1EA3i d\u1EEF li\u1EC7u"));
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
focusFilter() {
|
|
132
|
+
if (!this.filterRef.current) return;
|
|
133
|
+
this.filterRef.current.focus();
|
|
134
|
+
setTimeout(() => {
|
|
135
|
+
if (!this.filterRef.current) return;
|
|
136
|
+
this.filterRef.current.focus();
|
|
137
|
+
}, 100);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
renderDropdown() {
|
|
141
|
+
if (!this.state.show) return null;
|
|
142
|
+
|
|
143
|
+
let $items = _index.default.map(this.state.addresses, (addr, i) => {
|
|
144
|
+
let label = [((addr.address || '') + ' ' + normalize(addr.street)).trim()].join(', ');
|
|
145
|
+
let desc = [normalize(addr.ward), normalize(addr.district), normalize(addr.province)].join(', ');
|
|
146
|
+
return (0, _preact.h)("div", {
|
|
147
|
+
class: "dropdown_select__item",
|
|
148
|
+
onClick: _ => this.onSelect(addr),
|
|
149
|
+
key: i
|
|
150
|
+
}, (0, _preact.h)("div", null, (0, _preact.h)("b", null, label)), (0, _preact.h)("div", {
|
|
151
|
+
style: "opacity: 0.7 !important;"
|
|
152
|
+
}, desc));
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
let $filter = null;
|
|
156
|
+
let $img = (0, _preact.h)("img", {
|
|
157
|
+
class: "dropdown_select_filter__icon",
|
|
158
|
+
src: require('../../assets/img/search.svg')
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
if (this.props.loading) {
|
|
162
|
+
$img = (0, _preact.h)("img", {
|
|
163
|
+
class: "dropdown_select_filter__icon",
|
|
164
|
+
src: require('../../assets/img/loader.svg')
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
$filter = (0, _preact.h)("div", {
|
|
169
|
+
class: "dropdown_select_filter"
|
|
170
|
+
}, $img, (0, _preact.h)("input", {
|
|
171
|
+
ref: this.filterRef,
|
|
172
|
+
value: this.state.searchValue,
|
|
173
|
+
onInput: this.onChangeSearchValue,
|
|
174
|
+
type: "text",
|
|
175
|
+
class: "dropdown_select_filter_input "
|
|
176
|
+
}));
|
|
177
|
+
if ($items.length == 0) $items = this.renderEmpty();
|
|
178
|
+
if (this.props.loading) $items = this.renderLoading();
|
|
179
|
+
let style = `width: ${this.props.width || '150px'} !important;`;
|
|
180
|
+
|
|
181
|
+
if (this.props.full) {
|
|
182
|
+
style = ` top: 20px !important; left: 20px !important; right: 20px !important; width: unset !important; `;
|
|
183
|
+
return (0, _preact.h)("div", {
|
|
184
|
+
class: "dropdown_select__overlay",
|
|
185
|
+
ref: this.overlayRef,
|
|
186
|
+
onClick: this.hideDropdown,
|
|
187
|
+
onTouchMove: this.onTouchMove
|
|
188
|
+
}, (0, _preact.h)("div", {
|
|
189
|
+
class: "dropdown_select",
|
|
190
|
+
style: style,
|
|
191
|
+
onClick: e => {
|
|
192
|
+
e.preventDefault();
|
|
193
|
+
e.stopPropagation();
|
|
194
|
+
}
|
|
195
|
+
}, $filter, (0, _preact.h)("div", {
|
|
196
|
+
class: "dropdown_select__items"
|
|
197
|
+
}, $items)));
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
return (0, _preact.h)("div", {
|
|
201
|
+
class: "dropdown_select",
|
|
202
|
+
style: style
|
|
203
|
+
}, $filter, (0, _preact.h)("div", {
|
|
204
|
+
class: "dropdown_select__items"
|
|
205
|
+
}, $items));
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
render() {
|
|
209
|
+
let $name = (0, _preact.h)("div", {
|
|
210
|
+
class: "text-truncate",
|
|
211
|
+
style: "flex: 1 !important;"
|
|
212
|
+
}, this.props.initAddress);
|
|
213
|
+
let style = 'position: relative !important;';
|
|
214
|
+
|
|
215
|
+
if (this.props.full) {
|
|
216
|
+
style = '';
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
return (0, _preact.h)("div", {
|
|
220
|
+
style: style
|
|
221
|
+
}, (0, _preact.h)(_common.Clickaway, {
|
|
222
|
+
onClickaway: this.hideDropdown
|
|
223
|
+
}, (0, _preact.h)("div", {
|
|
224
|
+
type: "text",
|
|
225
|
+
class: 'dropdown_select_input ' + this.props.extra_cls,
|
|
226
|
+
onClick: this.toogleDropdown
|
|
227
|
+
}, $name), this.renderDropdown()));
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
exports.default = AddressPicker;
|
|
233
|
+
|
|
234
|
+
function normalize(s) {
|
|
235
|
+
let ls = (s + '').toLowerCase();
|
|
236
|
+
if (ls.startsWith('tp ')) return s.substr(3);
|
|
237
|
+
if (ls.startsWith('thanh pho ')) return s.substr('thanh pho '.length);
|
|
238
|
+
if (ls.startsWith('thành phố ')) return s.substr('thành phố '.length);
|
|
239
|
+
if (ls.startsWith('tỉnh ')) return s.substr('tỉnh '.length);
|
|
240
|
+
if (ls.startsWith('huyện ')) return s.substr('huyện '.length);
|
|
241
|
+
if (ls.startsWith('tỉnh ')) return s.substr('tỉnh '.length);
|
|
242
|
+
if (ls.startsWith('xã ')) return s.substr('xã '.length);
|
|
243
|
+
if (ls.startsWith('thị trấn ')) return s.substr('thị trấn '.length);
|
|
244
|
+
if (ls.startsWith('thị xã ')) return s.substr('thị xã '.length);
|
|
245
|
+
if (ls.startsWith('đường ') && (s[7] < '0' || s[7] > '9')) return s.substr('đường '.length);
|
|
246
|
+
if (ls.startsWith('phường ') && (s[7] < '0' || s[7] > '9')) return s.substr('phường '.length);
|
|
247
|
+
if (ls.startsWith('quận ') && (s[7] < '0' || s[7] > '9')) return s.substr('quận '.length);
|
|
248
|
+
return s;
|
|
249
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _index = _interopRequireDefault(require("../util/index.js"));
|
|
9
|
+
|
|
10
|
+
var _time = _interopRequireDefault(require("../chatbox/time.js"));
|
|
11
|
+
|
|
12
|
+
var common = _interopRequireWildcard(require("../common.js"));
|
|
13
|
+
|
|
14
|
+
var _DropdownSelect = _interopRequireDefault(require("../chatbox/DropdownSelect.js"));
|
|
15
|
+
|
|
16
|
+
var _preact = require("preact");
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
|
|
22
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
+
|
|
24
|
+
let promiseMainCSS = (() => Promise.resolve().then(() => _interopRequireWildcard(require('../chatbox/css.js'))))();
|
|
25
|
+
|
|
26
|
+
var $link = document.createElement('link');
|
|
27
|
+
$link.href = 'https://fonts.googleapis.com/css2?family=Roboto:wght@400;500&display=swap';
|
|
28
|
+
$link.rel = 'stylesheet';
|
|
29
|
+
document.head.append($link);
|
|
30
|
+
|
|
31
|
+
_index.default.preloadWebfonts(['Roboto'], [400, 500]);
|
|
32
|
+
|
|
33
|
+
let defaultAvatar = require('../../assets/img/default_avatar.png');
|
|
34
|
+
|
|
35
|
+
class Icon extends common.Com {
|
|
36
|
+
render() {
|
|
37
|
+
if (this.props.name == 'package') {
|
|
38
|
+
if (this.props.active) return (0, _preact.h)("img", {
|
|
39
|
+
style: "width: 18px !important;",
|
|
40
|
+
src: require('../../assets/img/package.svg')
|
|
41
|
+
});
|
|
42
|
+
return (0, _preact.h)("img", {
|
|
43
|
+
style: "width: 18px !important;",
|
|
44
|
+
src: require('../../assets/img/package_fade.svg')
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
if (this.props.name === 'shop') {
|
|
49
|
+
if (this.props.active) return (0, _preact.h)("img", {
|
|
50
|
+
style: "width: 18px !important;",
|
|
51
|
+
src: require('../../assets/img/shop.svg')
|
|
52
|
+
});
|
|
53
|
+
return (0, _preact.h)("img", {
|
|
54
|
+
style: "width: 18px !important;",
|
|
55
|
+
src: require('../../assets/img/shop_faded.svg')
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
exports.default = Icon;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _store = _interopRequireDefault(require("../store/store.js"));
|
|
4
|
+
|
|
5
|
+
var common = _interopRequireWildcard(require("../common.js"));
|
|
6
|
+
|
|
7
|
+
var _index = _interopRequireDefault(require("../util/index.js"));
|
|
8
|
+
|
|
9
|
+
var _preact = require("preact");
|
|
10
|
+
|
|
11
|
+
var _order = _interopRequireDefault(require("./order.js"));
|
|
12
|
+
|
|
13
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
14
|
+
|
|
15
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
16
|
+
|
|
17
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
18
|
+
|
|
19
|
+
let promiseMainCSS = (() => Promise.resolve().then(() => _interopRequireWildcard(require('../chatbox/css.js'))))();
|
|
20
|
+
|
|
21
|
+
var config = require('../../config.js');
|
|
22
|
+
|
|
23
|
+
function findChatbox(store) {
|
|
24
|
+
var pluginM = store.matchPlugin();
|
|
25
|
+
|
|
26
|
+
let chatboxs = _index.default.filter(pluginM, plugin => plugin.type === 'chatbox');
|
|
27
|
+
|
|
28
|
+
if (_index.default.size(chatboxs) === 0) {
|
|
29
|
+
console.error('no chatbox found.');
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return chatboxs[0];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function getUrlParameter(name) {
|
|
37
|
+
name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]');
|
|
38
|
+
var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
|
|
39
|
+
var results = regex.exec(location.search);
|
|
40
|
+
return results === null ? '' : decodeURIComponent(results[1].replace(/\+/g, ' '));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
var $link = document.createElement('link');
|
|
44
|
+
$link.href = 'https://fonts.googleapis.com/css2?family=Roboto:wght@400;500&display=swap';
|
|
45
|
+
$link.rel = 'stylesheet';
|
|
46
|
+
document.head.append($link);
|
|
47
|
+
|
|
48
|
+
_index.default.preloadWebfonts(['Roboto'], [400, 500]);
|
|
49
|
+
|
|
50
|
+
async function load() {
|
|
51
|
+
let store = new _store.default(config.ApiURL, config.FileURL, config.RealtimeURL, true);
|
|
52
|
+
let signkey = getUrlParameter('x-signed-key');
|
|
53
|
+
let {
|
|
54
|
+
body,
|
|
55
|
+
error
|
|
56
|
+
} = await store.lookupOrder(signkey);
|
|
57
|
+
let order = body;
|
|
58
|
+
|
|
59
|
+
let accid = _index.default.get(order, 'ctx.credential.account_id');
|
|
60
|
+
|
|
61
|
+
let user_id = _index.default.get(order, 'ctx.credential.issuer');
|
|
62
|
+
|
|
63
|
+
let mask = accid + '@' + user_id;
|
|
64
|
+
await store.init(accid, mask);
|
|
65
|
+
window.store = store;
|
|
66
|
+
|
|
67
|
+
let t = key => {
|
|
68
|
+
if (_locale === 'debug') return `{{${key}}}`;
|
|
69
|
+
|
|
70
|
+
let messages = _index.default.get(common.langMessages, _locale, []);
|
|
71
|
+
|
|
72
|
+
let message = _index.default.find(messages, message => message.key === key);
|
|
73
|
+
|
|
74
|
+
return _index.default.get(message, 'message', key);
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
let acc = store.matchAccount();
|
|
78
|
+
let plugin = findChatbox(store);
|
|
79
|
+
let css = (await promiseMainCSS).default.default.toString();
|
|
80
|
+
|
|
81
|
+
var outcss = _index.default.replaceCssVariable(css, plugin.chatbox);
|
|
82
|
+
|
|
83
|
+
let $cssStyleDiv = document.createElement('style');
|
|
84
|
+
document.head.appendChild($cssStyleDiv);
|
|
85
|
+
$cssStyleDiv.type = 'text/css';
|
|
86
|
+
$cssStyleDiv.id = 'subiz-style-for-order';
|
|
87
|
+
|
|
88
|
+
_index.default.setCss('order', $cssStyleDiv, outcss);
|
|
89
|
+
|
|
90
|
+
let _locale = plugin.locale || acc.locale || 'vi-VN';
|
|
91
|
+
|
|
92
|
+
t.i18n = i18nText => {
|
|
93
|
+
if (!i18nText) return '';
|
|
94
|
+
let fallbackLocale = plugin.locale || acc.locale || 'vi-VN';
|
|
95
|
+
fallbackLocale = fallbackLocale.replace('-', '_');
|
|
96
|
+
|
|
97
|
+
let locale = _locale.replace('-', '_');
|
|
98
|
+
|
|
99
|
+
return i18nText[locale] || i18nText[fallbackLocale];
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
t.locale = () => _locale;
|
|
103
|
+
|
|
104
|
+
common.downloadLanguage(store, _locale).then(() => {
|
|
105
|
+
(0, _preact.render)((0, _preact.h)(_order.default, {
|
|
106
|
+
store: store,
|
|
107
|
+
t: t,
|
|
108
|
+
order_id: order.id
|
|
109
|
+
}), document.getElementById('order'));
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
load();
|