@subiz/widget-v4 4.1.103 → 4.1.105

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 (107) hide show
  1. package/compiled_src/chatbox/ChatButton.js +5 -0
  2. package/compiled_src/chatbox/Event.js +6 -1
  3. package/compiled_src/chatbox/Widget.js +9 -9
  4. package/compiled_src/chatbox/main.js +1 -0
  5. package/compiled_src/lib.js +4 -0
  6. package/compiled_src/store/api.js +1 -0
  7. package/compiled_src/store/store.js +3 -0
  8. package/package.json +8 -8
  9. package/src/chatbox/ChatButton.js +4 -0
  10. package/src/chatbox/Event.js +6 -1
  11. package/src/chatbox/Events.js +1 -5
  12. package/src/chatbox/Widget.js +9 -10
  13. package/src/chatbox/main.js +2 -0
  14. package/src/lib.js +5 -0
  15. package/src/store/api.js +1 -0
  16. package/src/store/store.js +4 -0
  17. package/dist/132.js +0 -6661
  18. package/dist/178.js +0 -406
  19. package/dist/18a02a9c54e.132.js +0 -1
  20. package/dist/18a02a9c54e.178.js +0 -1
  21. package/dist/18a02a9c54e.213.js +0 -1
  22. package/dist/18a02a9c54e.335.js +0 -1
  23. package/dist/18a02a9c54e.362.js +0 -1
  24. package/dist/18a02a9c54e.441.js +0 -1
  25. package/dist/18a02a9c54e.605.js +0 -1
  26. package/dist/18a02a9c54e.678.js +0 -1
  27. package/dist/18a02a9c54e.782.js +0 -1
  28. package/dist/18a02a9c54e.app.js +0 -1
  29. package/dist/18a02a9c54e.index.html +0 -33
  30. package/dist/18a02a9c54e.library.html +0 -33
  31. package/dist/18a02a9c54e.library.js +0 -1
  32. package/dist/18a02a9c54e.preview.html +0 -759
  33. package/dist/18a02a9c54e.preview.js +0 -1
  34. package/dist/18a02a9c54e.screenshoot.js +0 -1
  35. package/dist/18a02a9c54e.webview.js +0 -1
  36. package/dist/213.js +0 -2780
  37. package/dist/335.js +0 -372
  38. package/dist/362.js +0 -107
  39. package/dist/441.js +0 -2855
  40. package/dist/605.js +0 -305
  41. package/dist/678.js +0 -107
  42. package/dist/782.js +0 -107
  43. package/dist/HASH +0 -1
  44. package/dist/assets/img/Facebook.64607ec.png +0 -0
  45. package/dist/assets/img/Zalo.6845707.png +0 -0
  46. package/dist/assets/img/award1a.1a58e10.png +0 -0
  47. package/dist/assets/img/award3a.3b74423.png +0 -0
  48. package/dist/assets/img/award4a.ed6ccd4.png +0 -0
  49. package/dist/assets/img/award5.39eb7ae.png +0 -0
  50. package/dist/assets/img/bubble_default.7d5e4ab.svg +0 -20
  51. package/dist/assets/img/caret.998eb8f.svg +0 -1
  52. package/dist/assets/img/convos_empty.2353007.svg +0 -72
  53. package/dist/assets/img/default.06e6ee0.jpg +0 -0
  54. package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
  55. package/dist/assets/img/done_gray.d7e8203.svg +0 -4
  56. package/dist/assets/img/done_green.b817fd4.svg +0 -4
  57. package/dist/assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png +0 -0
  58. package/dist/assets/img/emoji/messenger/sub_23.529_60.784.1420241.png +0 -0
  59. package/dist/assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png +0 -0
  60. package/dist/assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png +0 -0
  61. package/dist/assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png +0 -0
  62. package/dist/assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png +0 -0
  63. package/dist/assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png +0 -0
  64. package/dist/assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png +0 -0
  65. package/dist/assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png +0 -0
  66. package/dist/assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png +0 -0
  67. package/dist/assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png +0 -0
  68. package/dist/assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png +0 -0
  69. package/dist/assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png +0 -0
  70. package/dist/assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png +0 -0
  71. package/dist/assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png +0 -0
  72. package/dist/assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png +0 -0
  73. package/dist/assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png +0 -0
  74. package/dist/assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png +0 -0
  75. package/dist/assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png +0 -0
  76. package/dist/assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png +0 -0
  77. package/dist/assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png +0 -0
  78. package/dist/assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png +0 -0
  79. package/dist/assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png +0 -0
  80. package/dist/assets/img/empty.29bed2d.svg +0 -23
  81. package/dist/assets/img/empty_1.0b98af0.svg +0 -11
  82. package/dist/assets/img/examplte_logo.f86535f.svg +0 -1
  83. package/dist/assets/img/external-link.90577cc.svg +0 -1
  84. package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
  85. package/dist/assets/img/ghn.070f8e3.svg +0 -17
  86. package/dist/assets/img/ghtk.326eac1.svg +0 -18
  87. package/dist/assets/img/image_default.be0698b.png +0 -0
  88. package/dist/assets/img/info.ebce7ea.svg +0 -1
  89. package/dist/assets/img/loader.37000a7.svg +0 -1
  90. package/dist/assets/img/loading_static.a27f0ac.svg +0 -10
  91. package/dist/assets/img/main-service1.d536cc2.png +0 -0
  92. package/dist/assets/img/main-service2.9b99549.png +0 -0
  93. package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
  94. package/dist/assets/img/package.8d37d0f.svg +0 -5
  95. package/dist/assets/img/package_fade.763c001.svg +0 -1
  96. package/dist/assets/img/rating--average.1ea492c.svg +0 -12
  97. package/dist/assets/img/rating--great.e3d712e.svg +0 -16
  98. package/dist/assets/img/rating--poor.2938a25.svg +0 -12
  99. package/dist/assets/img/search.f9705ff.svg +0 -1
  100. package/dist/assets/img/send.6db52a9.svg +0 -3
  101. package/dist/assets/img/shop.f7dc7d8.svg +0 -1
  102. package/dist/assets/img/shop_faded.df7845a.svg +0 -1
  103. package/dist/assets/img/subiz-mono.877e9f5.svg +0 -3
  104. package/dist/assets/img/x.26fdfa3.svg +0 -5
  105. package/dist/malicious-app.js +0 -13
  106. package/dist/screenshoot.html +0 -7
  107. package/dist/screenshoot.js +0 -6434
@@ -83,6 +83,11 @@ class ChatButton extends _common.Com {
83
83
  previewEvent: {}
84
84
  });
85
85
  }
86
+ ClosePreview() {
87
+ this.setState({
88
+ displayPreview: false
89
+ });
90
+ }
86
91
  ShowGreeting() {
87
92
  if (this.props.store.isMobile()) {
88
93
  let accid = _index.default.get(this.props.plugin, 'chatbox.account_id', {});
@@ -292,8 +292,13 @@ class Event extends _common.Com {
292
292
  if (bytype === 'user') return _index.default.getUserDisplayName(this.props.store.matchUser());
293
293
  let acc = this.props.store.matchAccount();
294
294
  if (bytype === 'agent') return _index.default.getAgentDisplayName(acc, this.props.store.matchAgent(byid));
295
+ if (bytype === 'bot') {
296
+ let bot = this.props.store.matchBot(byid);
297
+ if (!bot) return 'Bot';
298
+ return bot.fullname || 'Bot';
299
+ }
295
300
  if (byid === 'system' || bytype === 'dummy' || bytype === 'workflow') return acc.name || 'system';
296
- return '';
301
+ return acc.name;
297
302
  }
298
303
  }
299
304
  exports.default = Event;
@@ -36,6 +36,15 @@ class Widget extends _common.Com {
36
36
  _defineProperty(this, "msgInput", (0, _preact.createRef)());
37
37
  _defineProperty(this, "formMounted", form => {
38
38
  let formData = this.fillForm(form);
39
+ if (form.question_required || this.state.quickReplyMessage.text) {
40
+ formData['question'] = {
41
+ key: 'question',
42
+ is_required: true,
43
+ label: this.props.t.i18n(_index.default.get(form, `i18n_question_label`, {})) || form.question_label,
44
+ type: 'text',
45
+ value: this.state.quickReplyMessage.text
46
+ };
47
+ }
39
48
  this.setState({
40
49
  formData
41
50
  });
@@ -1054,15 +1063,6 @@ class Widget extends _common.Com {
1054
1063
  }))
1055
1064
  };
1056
1065
  }
1057
- if (form.question_required) {
1058
- data['question'] = {
1059
- key: 'question',
1060
- is_required: true,
1061
- label: this.props.t.i18n(_index.default.get(form, `i18n_question_label`, {})) || form.question_label,
1062
- type: 'text',
1063
- value: this.state.quickReplyMessage.text
1064
- };
1065
- }
1066
1066
  return data;
1067
1067
  }
1068
1068
  }
@@ -173,6 +173,7 @@ class Main extends _common.Com {
173
173
  }
174
174
  onWidgetClose() {
175
175
  this.refButton.current && this.refButton.current.ClearPreview();
176
+ this.refButton.current && this.refButton.current.ClosePreview();
176
177
  this.props.store.setHasManuallyClosed();
177
178
  this.hideWidget();
178
179
  this.props.store.emitCloseWidgetEvent();
@@ -142,6 +142,10 @@ class Widget {
142
142
  await this.domGate.entry();
143
143
  return this.pluginMgr.getCurrentView();
144
144
  }
145
+ async createTicket(ticket) {
146
+ await this.domGate.entry();
147
+ return this.createTicket(ticket);
148
+ }
145
149
  expandWidget(view, convo) {
146
150
  return this.showWidget(view, convo);
147
151
  }
@@ -114,6 +114,7 @@ class _default {
114
114
  _defineProperty(this, "suggest_address", keyword => this.apireq.setQuery({
115
115
  keyword: keyword
116
116
  }).get(`/accounts/${this.accid}/addresses`));
117
+ _defineProperty(this, "create_ticket", ticket => this.apireq.post(`/accounts/${this.accid}/tickets`, ticket));
117
118
  this.refreshLock = new _index.default.Mutex();
118
119
  this.FileURL = FileURL;
119
120
  this.ApiURL = ApiURL;
@@ -297,6 +297,9 @@ class Store {
297
297
  createShippingAddress(addr) {
298
298
  return this.api.createShippingAddress(addr);
299
299
  }
300
+ createTicket(ticket) {
301
+ return this.api.create_ticket(ticket);
302
+ }
300
303
  async overrideAcc(acc) {
301
304
  this.forceAcc = _index.default.cloneDeep(acc);
302
305
  await this.readyGate.entry();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subiz/widget-v4",
3
- "version": "4.1.103",
3
+ "version": "4.1.105",
4
4
  "main": "./compiled_src/lib.js",
5
5
  "scripts": {
6
6
  "dev": "npx webpack serve --config webpack.dev.js",
@@ -22,16 +22,16 @@
22
22
  "preact": "10.19.3"
23
23
  },
24
24
  "devDependencies": {
25
- "@babel/cli": "^7.25.6",
26
- "@babel/core": "^7.25.2",
25
+ "@babel/cli": "^7.25.7",
26
+ "@babel/core": "^7.25.7",
27
27
  "@babel/plugin-proposal-class-properties": "^7.18.6",
28
- "@babel/plugin-transform-react-jsx": "^7.25.2",
29
- "@babel/preset-env": "^7.25.4",
30
- "babel-loader": "^9.1.3",
28
+ "@babel/plugin-transform-react-jsx": "^7.25.7",
29
+ "@babel/preset-env": "^7.25.7",
30
+ "babel-loader": "^9.2.1",
31
31
  "babel-plugin-syntax-jsx": "^6.18.0",
32
32
  "html-webpack-plugin": "^5.6.0",
33
- "puppeteer": "^23.3.0",
34
- "webpack": "^5.94.0",
33
+ "puppeteer": "^23.5.0",
34
+ "webpack": "^5.95.0",
35
35
  "webpack-bundle-analyzer": "^4.10.2",
36
36
  "webpack-cli": "^5.1.4",
37
37
  "webpack-dev-server": "^5.1.0"
@@ -100,6 +100,10 @@ export default class ChatButton extends Com {
100
100
  this.setState({previewEvent: {}})
101
101
  }
102
102
 
103
+ ClosePreview() {
104
+ this.setState({displayPreview: false})
105
+ }
106
+
103
107
  // this method could be call from the parent
104
108
  ShowGreeting() {
105
109
  // workaround for bao chau elect dont want show greeting in mobile
@@ -251,7 +251,12 @@ export default class Event extends Com {
251
251
  if (bytype === 'user') return sb.getUserDisplayName(this.props.store.matchUser())
252
252
  let acc = this.props.store.matchAccount()
253
253
  if (bytype === 'agent') return sb.getAgentDisplayName(acc, this.props.store.matchAgent(byid))
254
+ if (bytype === 'bot') {
255
+ let bot = this.props.store.matchBot(byid)
256
+ if (!bot) return 'Bot'
257
+ return bot.fullname || 'Bot'
258
+ }
254
259
  if (byid === 'system' || bytype === 'dummy' || bytype === 'workflow') return acc.name || 'system'
255
- return ''
260
+ return acc.name
256
261
  }
257
262
  }
@@ -248,11 +248,7 @@ function processEvents(convo, events) {
248
248
 
249
249
  function visibleEvent(ev) {
250
250
  let type = sb.get(ev, 'type')
251
- return (
252
- // type === 'conversation_joined' ||
253
- // type === 'conversation_left' ||
254
- type === 'message_sent' || type === 'conversation_state_updated'
255
- )
251
+ return type === 'message_sent' || type === 'conversation_state_updated'
256
252
  }
257
253
 
258
254
  function isSummited(form) {
@@ -279,6 +279,15 @@ export default class Widget extends Com {
279
279
  formMounted = (form) => {
280
280
  // waiting for element to be created
281
281
  let formData = this.fillForm(form)
282
+ if (form.question_required || this.state.quickReplyMessage.text) {
283
+ formData['question'] = {
284
+ key: 'question',
285
+ is_required: true,
286
+ label: this.props.t.i18n(sb.get(form, `i18n_question_label`, {})) || form.question_label,
287
+ type: 'text',
288
+ value: this.state.quickReplyMessage.text,
289
+ }
290
+ }
282
291
 
283
292
  this.setState({formData})
284
293
  // dont steal focus on mobile or trying to override form
@@ -1155,16 +1164,6 @@ export default class Widget extends Com {
1155
1164
  list: sb.map(form.groups, (group) => ({value: group.id, label: group.name})),
1156
1165
  }
1157
1166
  }
1158
-
1159
- if (form.question_required) {
1160
- data['question'] = {
1161
- key: 'question',
1162
- is_required: true,
1163
- label: this.props.t.i18n(sb.get(form, `i18n_question_label`, {})) || form.question_label,
1164
- type: 'text',
1165
- value: this.state.quickReplyMessage.text,
1166
- }
1167
- }
1168
1167
  return data
1169
1168
  }
1170
1169
  }
@@ -188,6 +188,8 @@ export default class Main extends Com {
188
188
 
189
189
  onWidgetClose() {
190
190
  this.refButton.current && this.refButton.current.ClearPreview()
191
+ // need call closePreview if not this will display default agent avatar and account name
192
+ this.refButton.current && this.refButton.current.ClosePreview()
191
193
  this.props.store.setHasManuallyClosed()
192
194
  this.hideWidget()
193
195
 
package/src/lib.js CHANGED
@@ -147,6 +147,11 @@ class Widget {
147
147
  return this.pluginMgr.getCurrentView()
148
148
  }
149
149
 
150
+ async createTicket(ticket) {
151
+ await this.domGate.entry()
152
+ return this.createTicket(ticket)
153
+ }
154
+
150
155
  expandWidget(view, convo) {
151
156
  return this.showWidget(view, convo)
152
157
  }
package/src/store/api.js CHANGED
@@ -314,4 +314,5 @@ export default class {
314
314
  list_wards = (p) => this.apireq.setQuery(p).get(`/accounts/${this.accid}/wards`)
315
315
 
316
316
  suggest_address = (keyword) => this.apireq.setQuery({keyword: keyword}).get(`/accounts/${this.accid}/addresses`)
317
+ create_ticket = (ticket) => this.apireq.post(`/accounts/${this.accid}/tickets`, ticket)
317
318
  }
@@ -168,6 +168,10 @@ export default class Store {
168
168
  return this.api.createShippingAddress(addr)
169
169
  }
170
170
 
171
+ createTicket(ticket) {
172
+ return this.api.create_ticket(ticket)
173
+ }
174
+
171
175
  async overrideAcc(acc) {
172
176
  this.forceAcc = sb.cloneDeep(acc)
173
177
  await this.readyGate.entry()