@subiz/widget-v4 4.1.81 → 4.1.82

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 (145) hide show
  1. package/compiled_src/bot.js +1 -1
  2. package/compiled_src/call/call.js +2 -2
  3. package/compiled_src/chatbox/AgentsAvatar.js +1 -1
  4. package/compiled_src/chatbox/AudioAttachments.js +1 -1
  5. package/compiled_src/chatbox/ButtonAttachments.js +1 -1
  6. package/compiled_src/chatbox/Buttons.js +1 -1
  7. package/compiled_src/chatbox/ChatButton.js +1 -1
  8. package/compiled_src/chatbox/DropdownSelect.js +2 -2
  9. package/compiled_src/chatbox/Emoji.js +1 -1
  10. package/compiled_src/chatbox/Event.js +1 -1
  11. package/compiled_src/chatbox/Events.js +1 -1
  12. package/compiled_src/chatbox/FileAttachments.js +1 -1
  13. package/compiled_src/chatbox/FormAttachment.js +1 -1
  14. package/compiled_src/chatbox/FormAttachments.js +1 -1
  15. package/compiled_src/chatbox/FormSubmitAttachments.js +1 -1
  16. package/compiled_src/chatbox/GenericTemplateAttachments.js +1 -1
  17. package/compiled_src/chatbox/Header.js +1 -1
  18. package/compiled_src/chatbox/ImageAttachments.js +2 -2
  19. package/compiled_src/chatbox/InfoMessage.js +1 -1
  20. package/compiled_src/chatbox/ListField.js +1 -1
  21. package/compiled_src/chatbox/MessageInput.js +2 -2
  22. package/compiled_src/chatbox/Order.js +2 -2
  23. package/compiled_src/chatbox/OrderAttachments.js +1 -1
  24. package/compiled_src/chatbox/ProductAttachments.js +1 -1
  25. package/compiled_src/chatbox/QuickReplies.js +1 -1
  26. package/compiled_src/chatbox/Rating.js +2 -2
  27. package/compiled_src/chatbox/TextMessage.js +1 -1
  28. package/compiled_src/chatbox/Typing.js +17 -2
  29. package/compiled_src/chatbox/VideoAttachments.js +1 -1
  30. package/compiled_src/chatbox/Widget.js +37 -9
  31. package/compiled_src/chatbox/main.js +4 -1
  32. package/compiled_src/chatbox/releaseAnimation.js +1 -1
  33. package/compiled_src/chatbox/time.js +1 -1
  34. package/compiled_src/common.js +1 -1
  35. package/compiled_src/contact/contact.js +2 -2
  36. package/compiled_src/lib.js +6 -2
  37. package/compiled_src/notif/notif.js +2 -2
  38. package/compiled_src/order/address_picker.js +2 -2
  39. package/compiled_src/order/icon.js +1 -1
  40. package/compiled_src/order/index.js +1 -1
  41. package/compiled_src/order/order.js +2 -2
  42. package/compiled_src/plugin.js +5 -1
  43. package/compiled_src/popup/countdown.js +2 -2
  44. package/compiled_src/popup/popup.js +2 -2
  45. package/compiled_src/popup/tick.core.commonjs.js +1 -1
  46. package/compiled_src/store/api.js +2 -2
  47. package/compiled_src/store/api_fake.js +2 -2
  48. package/compiled_src/store/store.js +2 -2
  49. package/dist/132.js +6661 -0
  50. package/dist/178.js +406 -0
  51. package/dist/18a02a9c54e.132.js +1 -0
  52. package/dist/18a02a9c54e.178.js +1 -0
  53. package/dist/18a02a9c54e.213.js +1 -0
  54. package/dist/18a02a9c54e.335.js +1 -0
  55. package/dist/18a02a9c54e.362.js +1 -0
  56. package/dist/18a02a9c54e.441.js +1 -0
  57. package/dist/18a02a9c54e.605.js +1 -0
  58. package/dist/18a02a9c54e.678.js +1 -0
  59. package/dist/18a02a9c54e.782.js +1 -0
  60. package/dist/18a02a9c54e.app.js +1 -0
  61. package/dist/18a02a9c54e.index.html +33 -0
  62. package/dist/18a02a9c54e.library.html +33 -0
  63. package/dist/18a02a9c54e.library.js +1 -0
  64. package/dist/18a02a9c54e.preview.html +759 -0
  65. package/dist/18a02a9c54e.preview.js +1 -0
  66. package/dist/18a02a9c54e.screenshoot.js +1 -0
  67. package/dist/18a02a9c54e.webview.js +1 -0
  68. package/dist/213.js +2780 -0
  69. package/dist/335.js +372 -0
  70. package/dist/362.js +107 -0
  71. package/dist/441.js +2855 -0
  72. package/dist/605.js +305 -0
  73. package/dist/678.js +107 -0
  74. package/dist/782.js +107 -0
  75. package/dist/HASH +1 -0
  76. package/dist/assets/img/Facebook.64607ec.png +0 -0
  77. package/dist/assets/img/Zalo.6845707.png +0 -0
  78. package/dist/assets/img/award1a.1a58e10.png +0 -0
  79. package/dist/assets/img/award3a.3b74423.png +0 -0
  80. package/dist/assets/img/award4a.ed6ccd4.png +0 -0
  81. package/dist/assets/img/award5.39eb7ae.png +0 -0
  82. package/dist/assets/img/bubble_default.7d5e4ab.svg +20 -0
  83. package/dist/assets/img/caret.998eb8f.svg +1 -0
  84. package/dist/assets/img/convos_empty.2353007.svg +72 -0
  85. package/dist/assets/img/default.06e6ee0.jpg +0 -0
  86. package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
  87. package/dist/assets/img/done_gray.d7e8203.svg +4 -0
  88. package/dist/assets/img/done_green.b817fd4.svg +4 -0
  89. package/dist/assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png +0 -0
  90. package/dist/assets/img/emoji/messenger/sub_23.529_60.784.1420241.png +0 -0
  91. package/dist/assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png +0 -0
  92. package/dist/assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png +0 -0
  93. package/dist/assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png +0 -0
  94. package/dist/assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png +0 -0
  95. package/dist/assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png +0 -0
  96. package/dist/assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png +0 -0
  97. package/dist/assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png +0 -0
  98. package/dist/assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png +0 -0
  99. package/dist/assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png +0 -0
  100. package/dist/assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png +0 -0
  101. package/dist/assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png +0 -0
  102. package/dist/assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png +0 -0
  103. package/dist/assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png +0 -0
  104. package/dist/assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png +0 -0
  105. package/dist/assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png +0 -0
  106. package/dist/assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png +0 -0
  107. package/dist/assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png +0 -0
  108. package/dist/assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png +0 -0
  109. package/dist/assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png +0 -0
  110. package/dist/assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png +0 -0
  111. package/dist/assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png +0 -0
  112. package/dist/assets/img/empty.29bed2d.svg +23 -0
  113. package/dist/assets/img/empty_1.0b98af0.svg +11 -0
  114. package/dist/assets/img/examplte_logo.f86535f.svg +1 -0
  115. package/dist/assets/img/external-link.90577cc.svg +1 -0
  116. package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
  117. package/dist/assets/img/ghn.070f8e3.svg +17 -0
  118. package/dist/assets/img/ghtk.326eac1.svg +18 -0
  119. package/dist/assets/img/image_default.be0698b.png +0 -0
  120. package/dist/assets/img/info.ebce7ea.svg +1 -0
  121. package/dist/assets/img/loader.37000a7.svg +1 -0
  122. package/dist/assets/img/loading_static.a27f0ac.svg +10 -0
  123. package/dist/assets/img/main-service1.d536cc2.png +0 -0
  124. package/dist/assets/img/main-service2.9b99549.png +0 -0
  125. package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
  126. package/dist/assets/img/package.8d37d0f.svg +5 -0
  127. package/dist/assets/img/package_fade.763c001.svg +1 -0
  128. package/dist/assets/img/rating--average.1ea492c.svg +12 -0
  129. package/dist/assets/img/rating--great.e3d712e.svg +16 -0
  130. package/dist/assets/img/rating--poor.2938a25.svg +12 -0
  131. package/dist/assets/img/search.f9705ff.svg +1 -0
  132. package/dist/assets/img/send.6db52a9.svg +3 -0
  133. package/dist/assets/img/shop.f7dc7d8.svg +1 -0
  134. package/dist/assets/img/shop_faded.df7845a.svg +1 -0
  135. package/dist/assets/img/subiz-mono.877e9f5.svg +3 -0
  136. package/dist/assets/img/x.26fdfa3.svg +5 -0
  137. package/dist/malicious-app.js +13 -0
  138. package/dist/screenshoot.html +7 -0
  139. package/dist/screenshoot.js +6434 -0
  140. package/package.json +1 -1
  141. package/src/chatbox/Typing.js +13 -1
  142. package/src/chatbox/Widget.js +40 -7
  143. package/src/chatbox/main.js +4 -0
  144. package/src/lib.js +5 -0
  145. package/src/plugin.js +5 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subiz/widget-v4",
3
- "version": "4.1.81",
3
+ "version": "4.1.82",
4
4
  "main": "./compiled_src/lib.js",
5
5
  "scripts": {
6
6
  "dev": "npx webpack serve --config webpack.dev.js",
@@ -32,7 +32,7 @@ export default class Typing extends Com {
32
32
  if (sb.get(ev, 'type') !== 'conversation_typing') return
33
33
  // dont show typing of agent, some agent dont like this
34
34
  let ag = this.props.store.matchAgent(sb.get(ev, 'by.id')) || {}
35
- if (ag.type == 'agent') return
35
+ if (ag.type == 'agent' && !sb.get(this.props.plugin, 'chatbox.show_agent_typing')) return
36
36
  this.setState({ev: ev, isShow: true})
37
37
  if (this.timer) sb.clearTimeout(this.timer)
38
38
  this.timer = sb.setTimeout(() => {
@@ -44,11 +44,23 @@ export default class Typing extends Com {
44
44
  })
45
45
  }
46
46
 
47
+ ShowTyping() {
48
+ this.setState({isShow: true})
49
+ if (this.timer) sb.clearTimeout(this.timer)
50
+ this.timer = sb.setTimeout(() => {
51
+ this.timer = null
52
+ this.setState({isShow: false})
53
+ }, 5000)
54
+ }
55
+
47
56
  render() {
48
57
  let account = this.props.store.matchAccount()
49
58
  var cls = this.state.isShow ? '' : 'typing--hidden'
50
59
  let byid = sb.get(this.state.ev, 'by.display_id', sb.get(this.state.ev, 'by.id'))
51
60
  let agentName = sb.getAgentDisplayName(account, this.props.store.matchAgent(byid))
61
+ if (sb.get(this.props.plugin, 'chatbox.hide_agent_profile')) {
62
+ agentName = sb.get(account, 'name')
63
+ }
52
64
  return (
53
65
  <div class={`typing ${cls}`}>
54
66
  {agentName} {this.props.t('typing')}
@@ -40,6 +40,7 @@ export default class Widget extends Com {
40
40
  })
41
41
 
42
42
  this.props.store.onUpdate(this, (_) => this.forceUpdate())
43
+ this.refTyping = createRef()
43
44
  }
44
45
 
45
46
  msgInput = createRef()
@@ -71,6 +72,10 @@ export default class Widget extends Com {
71
72
  // this.updateFormDataFields()
72
73
  }
73
74
 
75
+ ShowTyping() {
76
+ this.refTyping.current && this.refTyping.current.ShowTyping()
77
+ }
78
+
74
79
  shouldShowForm() {
75
80
  // always show form when ask agentgroup
76
81
  let form
@@ -158,14 +163,36 @@ export default class Widget extends Com {
158
163
  hasError = true
159
164
  } else field.error = ''
160
165
 
161
- if (key.substr(5) === 'emails' && !sb.isEmail(field.value) && field.is_required) {
162
- field.error = this.props.t('error_email_invalid') // 'The email is not valid'
163
- hasError = true
166
+ if (key.substr(5) === 'emails') {
167
+ if (field.is_required) {
168
+ if (!sb.isEmail(field.value)) {
169
+ field.error = this.props.t('error_email_invalid') // 'The email is not valid'
170
+ hasError = true
171
+ }
172
+ } else {
173
+ let value = field.value || ''
174
+ if (typeof value !== 'string') value = value + '' // try to makesure use ''.trim doesnt errror
175
+ if (value.trim() && !sb.isEmail(field.value)) {
176
+ field.error = this.props.t('error_email_invalid') // 'The email is not valid'
177
+ hasError = true
178
+ }
179
+ }
164
180
  }
165
181
 
166
- if (key.substr(5) === 'phones' && !sb.isPhone(field.value) && field.is_required) {
167
- field.error = this.props.t('error_phone_invalid') // 'Phone number is not valid'
168
- hasError = true
182
+ if (key.substr(5) === 'phones') {
183
+ if (field.is_required) {
184
+ if (!sb.isPhone(field.value)) {
185
+ field.error = this.props.t('error_phone_invalid') // 'The email is not valid'
186
+ hasError = true
187
+ }
188
+ } else {
189
+ let value = field.value || ''
190
+ if (typeof value !== 'string') value = value + '' // try to makesure use ''.trim doesnt errror
191
+ if (value.trim() && !sb.isPhone(field.value)) {
192
+ field.error = this.props.t('error_phone_invalid') // 'The email is not valid'
193
+ hasError = true
194
+ }
195
+ }
169
196
  }
170
197
  })
171
198
  if (hasError) return this.forceUpdate()
@@ -786,7 +813,13 @@ export default class Widget extends Com {
786
813
  onPostback={(e) => this.createPostback(e)}
787
814
  t={this.props.t}
788
815
  />
789
- <Typing store={this.props.store} cid={this.props.cid} t={this.props.t} />
816
+ <Typing
817
+ store={this.props.store}
818
+ cid={this.props.cid}
819
+ t={this.props.t}
820
+ plugin={this.props.plugin}
821
+ ref={this.refTyping}
822
+ />
790
823
  </div>
791
824
  <Rating
792
825
  forceView={this.props.view}
@@ -176,6 +176,10 @@ export default class Main extends Com {
176
176
  this.refButton.current && this.refButton.current.HideGreeting()
177
177
  }
178
178
 
179
+ showTyping() {
180
+ this.refWidget.current && this.refWidget.current.ShowTyping()
181
+ }
182
+
179
183
  hideWidget() {
180
184
  restoreViewport()
181
185
  this.props.store.setIsOpen(false)
package/src/lib.js CHANGED
@@ -202,6 +202,11 @@ class Widget {
202
202
  this.pluginMgr.showCurrentChatbox({view, cid: cid})
203
203
  }
204
204
 
205
+ async showTyping() {
206
+ await this.domGate.entry()
207
+ this.pluginMgr.showCurrentChatboxTyping()
208
+ }
209
+
205
210
  async hideWidget() {
206
211
  await this.domGate.entry()
207
212
  this.pluginMgr.hideCurrentChatbox()
package/src/plugin.js CHANGED
@@ -293,6 +293,11 @@ export default class PluginMgr {
293
293
  if (chatbox) return chatbox.call('showWidget', p)
294
294
  }
295
295
 
296
+ showCurrentChatboxTyping() {
297
+ let chatbox = this.findChatbox()
298
+ if (chatbox) return chatbox.call('showTyping')
299
+ }
300
+
296
301
  showCurrentGreeting() {
297
302
  let chatbox = this.findChatbox()
298
303
  if (chatbox) return chatbox.call('showGreeting')