@subiz/widget-v4 4.0.58 → 4.0.63
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 +35 -0
- 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/compiled_src/call/call.js +12 -15
- package/compiled_src/chatbox/DropdownSelect.js +239 -0
- package/compiled_src/chatbox/Event.js +4 -2
- package/compiled_src/chatbox/Events.js +1 -0
- package/compiled_src/chatbox/MessageInput.js +4 -7
- package/compiled_src/chatbox/Order.js +281 -0
- package/compiled_src/chatbox/OrderAttachments.js +2 -1
- package/compiled_src/chatbox/Rating.js +7 -10
- package/compiled_src/chatbox/TextMessage.js +9 -2
- package/compiled_src/chatbox/Widget.js +40 -3
- package/compiled_src/chatbox/main.js +2 -1
- 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 +7 -12
- package/compiled_src/lib.js +9 -14
- package/compiled_src/notif/notif.js +12 -15
- package/compiled_src/order/address_picker.js +241 -0
- package/compiled_src/order/icon.js +62 -0
- package/compiled_src/order/index.js +113 -0
- package/compiled_src/order/order.js +1220 -0
- package/compiled_src/plugin.js +9 -42
- package/compiled_src/popup/countdown.js +4 -7
- package/compiled_src/popup/popup.js +40 -13
- package/compiled_src/store/api.js +80 -90
- package/compiled_src/store/api_fake.js +55 -82
- package/compiled_src/store/store.js +163 -158
- package/compiled_src/util/common.js +40 -4
- package/dist/0b82fa7e5c3b07b40a44.png +1 -0
- package/dist/0f4af006e38ee8b93633.png +1 -0
- package/dist/{74.js → 132.js} +2234 -236
- package/dist/178.js +341 -174
- package/dist/17e757ccadd.132.js +1 -0
- package/dist/17e757ccadd.178.js +1 -0
- package/dist/17e757ccadd.213.js +1 -0
- package/dist/17e757ccadd.335.js +1 -0
- package/dist/17e757ccadd.362.js +1 -0
- package/dist/17e757ccadd.441.js +1 -0
- package/dist/17e757ccadd.605.js +1 -0
- package/dist/17e757ccadd.678.js +1 -0
- package/dist/17e757ccadd.782.js +1 -0
- package/dist/17e757ccadd.app.js +1 -0
- package/dist/{17d938a5acb.index.html → 17e757ccadd.index.html} +3 -18
- package/dist/{17d938a5acb.library.html → 17e757ccadd.library.html} +3 -18
- package/dist/17e757ccadd.library.js +1 -0
- package/dist/{17d938a5acb.preview.html → 17e757ccadd.preview.html} +1 -1
- package/dist/17e757ccadd.preview.js +1 -0
- package/dist/17e757ccadd.screenshoot.js +1 -0
- package/dist/1ea1c6cd21d25176810c.png +1 -0
- package/dist/213.js +46 -87
- package/dist/292d42404e1b03398f61.png +1 -0
- package/dist/312d376370831b7bea83.png +1 -0
- package/dist/313d1bfc1cf776d1aefe.png +1 -0
- package/dist/335.js +408 -0
- package/dist/362.js +71 -21
- package/dist/441.js +69 -43
- package/dist/4aa58bb7a66bb44975aa.png +1 -0
- package/dist/56ce063bc6c81adb7322.png +1 -0
- package/dist/605.js +13 -79
- package/dist/678.js +70 -20
- package/dist/6a411166ef5cc79e0714.png +1 -0
- package/dist/6faf403782fefacc1649.png +1 -0
- package/dist/782.js +118 -21
- package/dist/79dca33c68fab79c067f.png +1 -0
- package/dist/82da1578fa84f9debaeb.png +1 -0
- package/dist/8b8e0f0824743974b282.png +1 -0
- package/dist/8d551390d81e39130a3c.png +1 -0
- package/dist/9fc61b9479877ebdb6c7.png +1 -0
- package/dist/HASH +1 -1
- package/dist/a165d31dcb3dc90f1057.png +1 -0
- package/dist/a98d4a5698812c4426b3.png +1 -0
- 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/c41606bf9d1b604e46d5.png +1 -0
- package/dist/ce1f7450ce6c1aacd330.png +1 -0
- package/dist/cf8c01e88f4770a6e3e5.png +1 -0
- package/dist/dfbcfeab1d5622a737e2.png +1 -0
- package/dist/e4893ed8c2f7b8329919.png +1 -0
- package/dist/ec2ab4eb4ef73d186186.png +1 -0
- package/dist/screenshoot.html +1 -1
- package/dist/screenshoot.js +452 -389
- package/index.html +3 -18
- package/order.html +32 -0
- package/package.json +13 -14
- package/src/chatbox/DropdownSelect.js +229 -0
- package/src/chatbox/Event.js +2 -2
- package/src/chatbox/Events.js +43 -42
- package/src/chatbox/Order.js +232 -0
- package/src/chatbox/OrderAttachments.js +2 -1
- package/src/chatbox/TextMessage.js +21 -12
- package/src/chatbox/Widget.js +34 -4
- package/src/chatbox/main.js +2 -2
- 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/popup/popup.js +27 -2
- package/src/store/api.js +26 -1
- package/src/store/store.js +46 -9
- package/src/util/common.js +52 -4
- package/webpack.dev.js +2 -0
- package/dist/17d938a5acb.178.js +0 -1
- package/dist/17d938a5acb.213.js +0 -1
- package/dist/17d938a5acb.362.js +0 -1
- package/dist/17d938a5acb.441.js +0 -1
- package/dist/17d938a5acb.605.js +0 -1
- package/dist/17d938a5acb.619.js +0 -1
- package/dist/17d938a5acb.678.js +0 -1
- package/dist/17d938a5acb.74.js +0 -1
- package/dist/17d938a5acb.782.js +0 -1
- package/dist/17d938a5acb.app.js +0 -1
- package/dist/17d938a5acb.library.js +0 -1
- package/dist/17d938a5acb.preview.js +0 -1
- package/dist/17d938a5acb.screenshoot.js +0 -1
- package/dist/619.js +0 -777
|
@@ -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"));
|
|
@@ -50,7 +52,9 @@ class Widget extends _common.Com {
|
|
|
50
52
|
this.setState({
|
|
51
53
|
creating: false,
|
|
52
54
|
clickedJoin: false,
|
|
53
|
-
formData: {}
|
|
55
|
+
formData: {},
|
|
56
|
+
showOrder: false,
|
|
57
|
+
order_id: ''
|
|
54
58
|
});
|
|
55
59
|
this.props.store.onUpdate(this, _ => this.forceUpdate());
|
|
56
60
|
}
|
|
@@ -66,6 +70,7 @@ class Widget extends _common.Com {
|
|
|
66
70
|
}
|
|
67
71
|
|
|
68
72
|
if (prevProp.cid !== this.props.cid) {
|
|
73
|
+
this.closeOrder();
|
|
69
74
|
this.setState({
|
|
70
75
|
clickedJoin: false
|
|
71
76
|
});
|
|
@@ -84,7 +89,6 @@ class Widget extends _common.Com {
|
|
|
84
89
|
}
|
|
85
90
|
|
|
86
91
|
render() {
|
|
87
|
-
let formRequired = this.isFormRequired();
|
|
88
92
|
let showform = this.shouldShowForm();
|
|
89
93
|
let form;
|
|
90
94
|
let accountSetting = this.props.plugin.chatbox || {};
|
|
@@ -637,6 +641,7 @@ class Widget extends _common.Com {
|
|
|
637
641
|
onClick: e => this.onContainerClick(e)
|
|
638
642
|
}, (0, _preact.h)(_Events.default, {
|
|
639
643
|
isShow: this.props.isShow,
|
|
644
|
+
onLink: this.onLink,
|
|
640
645
|
store: this.props.store,
|
|
641
646
|
onFormSubmit: e => this.onEventFormSubmit(e),
|
|
642
647
|
ref: ref => this.events = ref,
|
|
@@ -656,9 +661,41 @@ class Widget extends _common.Com {
|
|
|
656
661
|
onRate: e => this.onRate(e),
|
|
657
662
|
cid: this.props.cid,
|
|
658
663
|
t: this.props.t
|
|
664
|
+
}), (0, _preact.h)(_Order.default, {
|
|
665
|
+
forceView: this.props.view,
|
|
666
|
+
plugin: this.props.plugin,
|
|
667
|
+
show: this.state.showOrder,
|
|
668
|
+
order_id: this.state.order_id,
|
|
669
|
+
store: this.props.store,
|
|
670
|
+
onClose: this.closeOrder,
|
|
671
|
+
cid: this.props.cid,
|
|
672
|
+
t: this.props.t
|
|
659
673
|
}), $input);
|
|
660
674
|
}
|
|
661
675
|
|
|
676
|
+
onLink = (e, url) => {
|
|
677
|
+
if (!url) return e.preventDefault();
|
|
678
|
+
let noschemeurl = url.replace(/(^\w+:|^)\/\//, '');
|
|
679
|
+
|
|
680
|
+
if (noschemeurl.startsWith('widget.subiz.com.vn/orders/')) {
|
|
681
|
+
let orderid = noschemeurl.substr('widget.subiz.com.vn/orders/'.length);
|
|
682
|
+
orderid = orderid.split('/')[0];
|
|
683
|
+
this.setState({
|
|
684
|
+
showOrder: true,
|
|
685
|
+
order_id: orderid
|
|
686
|
+
});
|
|
687
|
+
e.preventDefault();
|
|
688
|
+
return;
|
|
689
|
+
}
|
|
690
|
+
};
|
|
691
|
+
closeOrder = e => {
|
|
692
|
+
this.setState({
|
|
693
|
+
showOrder: false,
|
|
694
|
+
order_id: ''
|
|
695
|
+
});
|
|
696
|
+
this.focusInput();
|
|
697
|
+
};
|
|
698
|
+
|
|
662
699
|
async onStartConvoClick() {
|
|
663
700
|
var convo = this.props.store.matchConvo(this.props.cid) || {};
|
|
664
701
|
if (convo.state === 'ended') return this.props.onGo({
|
|
@@ -952,5 +989,5 @@ class FormMounter extends _common.Com {
|
|
|
952
989
|
}
|
|
953
990
|
|
|
954
991
|
function encode(key) {
|
|
955
|
-
return
|
|
992
|
+
return encodeURIComponent(key);
|
|
956
993
|
}
|
|
@@ -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,12 +12,8 @@ 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
|
-
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; }
|
|
20
|
-
|
|
21
17
|
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); }
|
|
22
18
|
|
|
23
19
|
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; }
|
|
@@ -25,15 +21,14 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
25
21
|
let CSS = (() => Promise.resolve().then(() => _interopRequireWildcard(require('./css.js'))))();
|
|
26
22
|
|
|
27
23
|
class Contact extends _common.Com {
|
|
24
|
+
state = {
|
|
25
|
+
map: false,
|
|
26
|
+
map_loading: false,
|
|
27
|
+
map_initialized: false
|
|
28
|
+
};
|
|
29
|
+
|
|
28
30
|
constructor(props) {
|
|
29
31
|
super(props);
|
|
30
|
-
|
|
31
|
-
_defineProperty(this, "state", {
|
|
32
|
-
map: false,
|
|
33
|
-
map_loading: false,
|
|
34
|
-
map_initialized: false
|
|
35
|
-
});
|
|
36
|
-
|
|
37
32
|
this.showMap = this.showMap.bind(this);
|
|
38
33
|
this.hideMap = this.hideMap.bind(this);
|
|
39
34
|
}
|
|
@@ -44,7 +39,7 @@ class Contact extends _common.Com {
|
|
|
44
39
|
map_initialized: true,
|
|
45
40
|
map_loading: true
|
|
46
41
|
});
|
|
47
|
-
await new
|
|
42
|
+
await new Loader({
|
|
48
43
|
apiKey: 'YOUR_API_KEY',
|
|
49
44
|
version: 'weekly'
|
|
50
45
|
}).load();
|
package/compiled_src/lib.js
CHANGED
|
@@ -13,8 +13,6 @@ var _plugin = _interopRequireDefault(require("./plugin.js"));
|
|
|
13
13
|
|
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
15
|
|
|
16
|
-
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; }
|
|
17
|
-
|
|
18
16
|
var $link = document.createElement('link');
|
|
19
17
|
$link.href = 'https://fonts.googleapis.com/css2?family=Roboto:wght@400;500&display=swap';
|
|
20
18
|
$link.rel = 'stylesheet';
|
|
@@ -24,18 +22,6 @@ _index.default.preloadWebfonts(['Roboto'], [400, 500]);
|
|
|
24
22
|
|
|
25
23
|
class Widget {
|
|
26
24
|
constructor(ApiURL, FileURL, RealtimeURL, inmem, fake, agenttoken) {
|
|
27
|
-
_defineProperty(this, "version", () => '4.4');
|
|
28
|
-
|
|
29
|
-
_defineProperty(this, "setSetting", setting => this.store.setSetting({
|
|
30
|
-
account_setting: setting
|
|
31
|
-
}));
|
|
32
|
-
|
|
33
|
-
_defineProperty(this, "getSetting", _ => ({
|
|
34
|
-
account_setting: _index.default.cloneDeep(this.store.matchAccountSetting())
|
|
35
|
-
}));
|
|
36
|
-
|
|
37
|
-
_defineProperty(this, "getUser", () => _index.default.parseJSON(_index.default.stringify(this.store.matchUser())));
|
|
38
|
-
|
|
39
25
|
this.domGate = new _index.default.Gate();
|
|
40
26
|
this.store = new _store.default(ApiURL, FileURL, RealtimeURL, inmem, fake, agenttoken);
|
|
41
27
|
window.sbz_store = this.store;
|
|
@@ -140,6 +126,15 @@ class Widget {
|
|
|
140
126
|
this.pluginMgr.hideCurrentChatbox();
|
|
141
127
|
}
|
|
142
128
|
|
|
129
|
+
version = () => '4.4';
|
|
130
|
+
setSetting = setting => this.store.setSetting({
|
|
131
|
+
account_setting: setting
|
|
132
|
+
});
|
|
133
|
+
getSetting = _ => ({
|
|
134
|
+
account_setting: _index.default.cloneDeep(this.store.matchAccountSetting())
|
|
135
|
+
});
|
|
136
|
+
getUser = () => _index.default.parseJSON(_index.default.stringify(this.store.matchUser()));
|
|
137
|
+
|
|
143
138
|
async setLocale(locale) {
|
|
144
139
|
await this.domGate.entry();
|
|
145
140
|
return this.pluginMgr.setCurrentChatboxLocale(locale);
|
|
@@ -13,8 +13,6 @@ var _common = require("../common.js");
|
|
|
13
13
|
|
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
15
|
|
|
16
|
-
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; }
|
|
17
|
-
|
|
18
16
|
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); }
|
|
19
17
|
|
|
20
18
|
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; }
|
|
@@ -22,21 +20,20 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
22
20
|
let notifCSS = (() => Promise.resolve().then(() => _interopRequireWildcard(require('./css.js'))))();
|
|
23
21
|
|
|
24
22
|
class Notif extends _common.Com {
|
|
23
|
+
state = {
|
|
24
|
+
close: true,
|
|
25
|
+
cssready: false,
|
|
26
|
+
closeAnimation: true,
|
|
27
|
+
imageReady: false,
|
|
28
|
+
user: {},
|
|
29
|
+
timestamp: '',
|
|
30
|
+
message: '',
|
|
31
|
+
title: '',
|
|
32
|
+
last_show: 0
|
|
33
|
+
};
|
|
34
|
+
|
|
25
35
|
constructor(props) {
|
|
26
36
|
super(props);
|
|
27
|
-
|
|
28
|
-
_defineProperty(this, "state", {
|
|
29
|
-
close: true,
|
|
30
|
-
cssready: false,
|
|
31
|
-
closeAnimation: true,
|
|
32
|
-
imageReady: false,
|
|
33
|
-
user: {},
|
|
34
|
-
timestamp: '',
|
|
35
|
-
message: '',
|
|
36
|
-
title: '',
|
|
37
|
-
last_show: 0
|
|
38
|
-
});
|
|
39
|
-
|
|
40
37
|
setTimeout(async () => {
|
|
41
38
|
let {
|
|
42
39
|
body: impression
|
|
@@ -0,0 +1,241 @@
|
|
|
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
|
+
class AddressPicker extends _common.Com {
|
|
19
|
+
state = {
|
|
20
|
+
show: false,
|
|
21
|
+
searchValue: '',
|
|
22
|
+
addresses: []
|
|
23
|
+
};
|
|
24
|
+
filterRef = (0, _preact.createRef)();
|
|
25
|
+
overlayRef = (0, _preact.createRef)();
|
|
26
|
+
|
|
27
|
+
constructor(props) {
|
|
28
|
+
super(props);
|
|
29
|
+
document.addEventListener('touchmove', function (e) {});
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
onTouchMove = e => {
|
|
33
|
+
if (e.target === this.overlayRef.current) {
|
|
34
|
+
e.preventDefault();
|
|
35
|
+
e.stopPropagation();
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
hideDropdown = () => {
|
|
39
|
+
this.setState({
|
|
40
|
+
show: false,
|
|
41
|
+
searchValue: ''
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
onKeydown = e => {
|
|
45
|
+
if (e.key === 'Escape') {
|
|
46
|
+
if (!this.state.show) return;
|
|
47
|
+
if (this.state.searchValue) this.setState({
|
|
48
|
+
searchValue: ''
|
|
49
|
+
});else this.hideDropdown();
|
|
50
|
+
e.preventDefault();
|
|
51
|
+
e.stopPropagation();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (e.key == 'Enter') {}
|
|
55
|
+
};
|
|
56
|
+
doSearch = _index.default.throttle(async () => {
|
|
57
|
+
let requestId = Date.now();
|
|
58
|
+
this.requestId = requestId;
|
|
59
|
+
let res = await this.props.store.suggest_addresses(this.state.searchValue);
|
|
60
|
+
if (this.requestId !== requestId) return;
|
|
61
|
+
this.setState({
|
|
62
|
+
addresses: _index.default.get(res, 'body.addresses', [])
|
|
63
|
+
});
|
|
64
|
+
}, 100);
|
|
65
|
+
|
|
66
|
+
componentDidMount() {
|
|
67
|
+
window.addEventListener('keydown', this.onKeydown);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
componentWillUnmount() {
|
|
71
|
+
window.removeEventListener('keydown', this.onKeydown);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
onChangeSearchValue = e => {
|
|
75
|
+
this.setState({
|
|
76
|
+
searchValue: e.target.value
|
|
77
|
+
});
|
|
78
|
+
this.props.onChangeAddress(e.target.value);
|
|
79
|
+
this.doSearch();
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
renderEmpty() {
|
|
83
|
+
return (0, _preact.h)("div", {
|
|
84
|
+
class: "dropdown_select_filter__empty"
|
|
85
|
+
}, (0, _preact.h)("img", {
|
|
86
|
+
class: "dropdown_select_filter__empty_img",
|
|
87
|
+
src: require('../../assets/img/not_found_search.png')
|
|
88
|
+
}), (0, _preact.h)("div", {
|
|
89
|
+
class: "muted",
|
|
90
|
+
style: "text-align: center !important;"
|
|
91
|
+
}, "Kh\xF4ng c\xF3 k\u1EBFt qu\u1EA3"));
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
renderLoading() {
|
|
95
|
+
return (0, _preact.h)("div", {
|
|
96
|
+
class: "dropdown_select_filter__empty pt-3"
|
|
97
|
+
}, (0, _preact.h)(_spinner.default, {
|
|
98
|
+
size: "40",
|
|
99
|
+
static: true
|
|
100
|
+
}), (0, _preact.h)("div", {
|
|
101
|
+
class: "muted mt-2",
|
|
102
|
+
style: "text-align: center !important;"
|
|
103
|
+
}, "\u0110ang t\u1EA3i d\u1EEF li\u1EC7u"));
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
toogleDropdown = async () => {
|
|
107
|
+
await this.setState({
|
|
108
|
+
show: true,
|
|
109
|
+
searchValue: this.props.initAddress || ''
|
|
110
|
+
});
|
|
111
|
+
this.focusFilter();
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
focusFilter() {
|
|
115
|
+
if (!this.filterRef.current) return;
|
|
116
|
+
this.filterRef.current.focus();
|
|
117
|
+
setTimeout(() => {
|
|
118
|
+
if (!this.filterRef.current) return;
|
|
119
|
+
this.filterRef.current.focus();
|
|
120
|
+
}, 100);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
onSelect = item => {
|
|
124
|
+
this.props.onSelect(item);
|
|
125
|
+
this.hideDropdown();
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
renderDropdown() {
|
|
129
|
+
if (!this.state.show) return null;
|
|
130
|
+
|
|
131
|
+
let $items = _index.default.map(this.state.addresses, (addr, i) => {
|
|
132
|
+
let label = [((addr.address || '') + ' ' + normalize(addr.street)).trim()].join(', ');
|
|
133
|
+
let desc = [normalize(addr.ward), normalize(addr.district), normalize(addr.province)].join(', ');
|
|
134
|
+
return (0, _preact.h)("div", {
|
|
135
|
+
class: "dropdown_select__item",
|
|
136
|
+
onClick: _ => this.onSelect(addr),
|
|
137
|
+
key: i
|
|
138
|
+
}, (0, _preact.h)("div", null, (0, _preact.h)("b", null, label)), (0, _preact.h)("div", {
|
|
139
|
+
style: "opacity: 0.7 !important;"
|
|
140
|
+
}, desc));
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
let $filter = null;
|
|
144
|
+
let $img = (0, _preact.h)("img", {
|
|
145
|
+
class: "dropdown_select_filter__icon",
|
|
146
|
+
src: require('../../assets/img/search.svg')
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
if (this.props.loading) {
|
|
150
|
+
$img = (0, _preact.h)("img", {
|
|
151
|
+
class: "dropdown_select_filter__icon",
|
|
152
|
+
src: require('../../assets/img/loader.svg')
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
$filter = (0, _preact.h)("div", {
|
|
157
|
+
class: "dropdown_select_filter"
|
|
158
|
+
}, $img, (0, _preact.h)("input", {
|
|
159
|
+
ref: this.filterRef,
|
|
160
|
+
value: this.state.searchValue,
|
|
161
|
+
onInput: this.onChangeSearchValue,
|
|
162
|
+
type: "text",
|
|
163
|
+
class: "dropdown_select_filter_input "
|
|
164
|
+
}));
|
|
165
|
+
if ($items.length == 0) $items = this.renderEmpty();
|
|
166
|
+
if (this.props.loading) $items = this.renderLoading();
|
|
167
|
+
let style = `width: ${this.props.width || '150px'} !important;`;
|
|
168
|
+
|
|
169
|
+
if (this.props.full) {
|
|
170
|
+
style = ` top: 20px !important; left: 20px !important; right: 20px !important; width: unset !important; `;
|
|
171
|
+
return (0, _preact.h)("div", {
|
|
172
|
+
class: "dropdown_select__overlay",
|
|
173
|
+
ref: this.overlayRef,
|
|
174
|
+
onClick: this.hideDropdown,
|
|
175
|
+
onTouchMove: this.onTouchMove
|
|
176
|
+
}, (0, _preact.h)("div", {
|
|
177
|
+
class: "dropdown_select",
|
|
178
|
+
style: style,
|
|
179
|
+
onClick: e => {
|
|
180
|
+
e.preventDefault();
|
|
181
|
+
e.stopPropagation();
|
|
182
|
+
}
|
|
183
|
+
}, $filter, (0, _preact.h)("div", {
|
|
184
|
+
class: "dropdown_select__items"
|
|
185
|
+
}, $items)));
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
return (0, _preact.h)("div", {
|
|
189
|
+
class: "dropdown_select",
|
|
190
|
+
style: style
|
|
191
|
+
}, $filter, (0, _preact.h)("div", {
|
|
192
|
+
class: "dropdown_select__items"
|
|
193
|
+
}, $items));
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
onBackgroundScroll = e => {
|
|
197
|
+
console.log('EEEEEEE', e);
|
|
198
|
+
};
|
|
199
|
+
|
|
200
|
+
render() {
|
|
201
|
+
let $name = (0, _preact.h)("div", {
|
|
202
|
+
class: "text-truncate",
|
|
203
|
+
style: "flex: 1 !important;"
|
|
204
|
+
}, this.props.initAddress);
|
|
205
|
+
let style = 'position: relative !important;';
|
|
206
|
+
|
|
207
|
+
if (this.props.full) {
|
|
208
|
+
style = '';
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
return (0, _preact.h)("div", {
|
|
212
|
+
style: style
|
|
213
|
+
}, (0, _preact.h)(_common.Clickaway, {
|
|
214
|
+
onClickaway: this.hideDropdown
|
|
215
|
+
}, (0, _preact.h)("div", {
|
|
216
|
+
type: "text",
|
|
217
|
+
class: 'dropdown_select_input ' + this.props.extra_cls,
|
|
218
|
+
onClick: this.toogleDropdown
|
|
219
|
+
}, $name), this.renderDropdown()));
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
exports.default = AddressPicker;
|
|
225
|
+
|
|
226
|
+
function normalize(s) {
|
|
227
|
+
let ls = (s + '').toLowerCase();
|
|
228
|
+
if (ls.startsWith('tp ')) return s.substr(3);
|
|
229
|
+
if (ls.startsWith('thanh pho ')) return s.substr('thanh pho '.length);
|
|
230
|
+
if (ls.startsWith('thành phố ')) return s.substr('thành phố '.length);
|
|
231
|
+
if (ls.startsWith('tỉnh ')) return s.substr('tỉnh '.length);
|
|
232
|
+
if (ls.startsWith('huyện ')) return s.substr('huyện '.length);
|
|
233
|
+
if (ls.startsWith('tỉnh ')) return s.substr('tỉnh '.length);
|
|
234
|
+
if (ls.startsWith('xã ')) return s.substr('xã '.length);
|
|
235
|
+
if (ls.startsWith('thị trấn ')) return s.substr('thị trấn '.length);
|
|
236
|
+
if (ls.startsWith('thị xã ')) return s.substr('thị xã '.length);
|
|
237
|
+
if (ls.startsWith('đường ') && (s[7] < '0' || s[7] > '9')) return s.substr('đường '.length);
|
|
238
|
+
if (ls.startsWith('phường ') && (s[7] < '0' || s[7] > '9')) return s.substr('phường '.length);
|
|
239
|
+
if (ls.startsWith('quận ') && (s[7] < '0' || s[7] > '9')) return s.substr('quận '.length);
|
|
240
|
+
return s;
|
|
241
|
+
}
|
|
@@ -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;
|