@nyaruka/temba-components 0.86.0 → 0.87.0

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 (285) hide show
  1. package/.eslintrc.js +3 -3
  2. package/.prettierrc +6 -0
  3. package/.storybook/main.js +3 -3
  4. package/.storybook/preview.js +2 -2
  5. package/CHANGELOG.md +14 -0
  6. package/CreateIncludesPlugin.js +2 -2
  7. package/demo/index.html +1 -0
  8. package/dist/locales/es.js +1 -1
  9. package/dist/locales/es.js.map +1 -1
  10. package/dist/locales/fr.js +1 -1
  11. package/dist/locales/fr.js.map +1 -1
  12. package/dist/locales/pt.js +1 -1
  13. package/dist/locales/pt.js.map +1 -1
  14. package/dist/temba-components.js +296 -277
  15. package/dist/temba-components.js.map +1 -1
  16. package/out-tsc/src/RapidElement.js +3 -3
  17. package/out-tsc/src/RapidElement.js.map +1 -1
  18. package/out-tsc/src/ResizeElement.js +2 -2
  19. package/out-tsc/src/ResizeElement.js.map +1 -1
  20. package/out-tsc/src/aliaseditor/AliasEditor.js +1 -1
  21. package/out-tsc/src/aliaseditor/AliasEditor.js.map +1 -1
  22. package/out-tsc/src/button/Button.js +1 -1
  23. package/out-tsc/src/button/Button.js.map +1 -1
  24. package/out-tsc/src/charcount/helpers.js +1 -1
  25. package/out-tsc/src/charcount/helpers.js.map +1 -1
  26. package/out-tsc/src/colorpicker/ColorPicker.js +4 -4
  27. package/out-tsc/src/colorpicker/ColorPicker.js.map +1 -1
  28. package/out-tsc/src/completion/Completion.js +2 -2
  29. package/out-tsc/src/completion/Completion.js.map +1 -1
  30. package/out-tsc/src/completion/ExcellentParser.js +1 -1
  31. package/out-tsc/src/completion/ExcellentParser.js.map +1 -1
  32. package/out-tsc/src/completion/helpers.js +8 -8
  33. package/out-tsc/src/completion/helpers.js.map +1 -1
  34. package/out-tsc/src/compose/Compose.js +14 -14
  35. package/out-tsc/src/compose/Compose.js.map +1 -1
  36. package/out-tsc/src/contacts/ContactBadges.js +2 -2
  37. package/out-tsc/src/contacts/ContactBadges.js.map +1 -1
  38. package/out-tsc/src/contacts/ContactChat.js +4 -4
  39. package/out-tsc/src/contacts/ContactChat.js.map +1 -1
  40. package/out-tsc/src/contacts/ContactDetails.js +4 -4
  41. package/out-tsc/src/contacts/ContactDetails.js.map +1 -1
  42. package/out-tsc/src/contacts/ContactFieldEditor.js +3 -3
  43. package/out-tsc/src/contacts/ContactFieldEditor.js.map +1 -1
  44. package/out-tsc/src/contacts/ContactFields.js +2 -2
  45. package/out-tsc/src/contacts/ContactFields.js.map +1 -1
  46. package/out-tsc/src/contacts/ContactHistory.js +21 -19
  47. package/out-tsc/src/contacts/ContactHistory.js.map +1 -1
  48. package/out-tsc/src/contacts/ContactPending.js +4 -4
  49. package/out-tsc/src/contacts/ContactPending.js.map +1 -1
  50. package/out-tsc/src/contacts/ContactTickets.js +8 -8
  51. package/out-tsc/src/contacts/ContactTickets.js.map +1 -1
  52. package/out-tsc/src/contacts/events.js +2 -2
  53. package/out-tsc/src/contacts/events.js.map +1 -1
  54. package/out-tsc/src/contacts/helpers.js +2 -2
  55. package/out-tsc/src/contacts/helpers.js.map +1 -1
  56. package/out-tsc/src/contactsearch/ContactSearch.js +7 -7
  57. package/out-tsc/src/contactsearch/ContactSearch.js.map +1 -1
  58. package/out-tsc/src/date/TembaDate.js +1 -1
  59. package/out-tsc/src/date/TembaDate.js.map +1 -1
  60. package/out-tsc/src/datepicker/DatePicker.js +1 -1
  61. package/out-tsc/src/datepicker/DatePicker.js.map +1 -1
  62. package/out-tsc/src/dialog/Dialog.js +5 -5
  63. package/out-tsc/src/dialog/Dialog.js.map +1 -1
  64. package/out-tsc/src/dialog/Modax.js +8 -8
  65. package/out-tsc/src/dialog/Modax.js.map +1 -1
  66. package/out-tsc/src/dropdown/Dropdown.js +1 -1
  67. package/out-tsc/src/dropdown/Dropdown.js.map +1 -1
  68. package/out-tsc/src/fields/FieldManager.js +6 -6
  69. package/out-tsc/src/fields/FieldManager.js.map +1 -1
  70. package/out-tsc/src/imagepicker/ImagePicker.js +4 -4
  71. package/out-tsc/src/imagepicker/ImagePicker.js.map +1 -1
  72. package/out-tsc/src/interfaces.js.map +1 -1
  73. package/out-tsc/src/label/Label.js +1 -1
  74. package/out-tsc/src/label/Label.js.map +1 -1
  75. package/out-tsc/src/leafletmap/LeafletMap.js +6 -6
  76. package/out-tsc/src/leafletmap/LeafletMap.js.map +1 -1
  77. package/out-tsc/src/leafletmap/helpers.js +2 -2
  78. package/out-tsc/src/leafletmap/helpers.js.map +1 -1
  79. package/out-tsc/src/lightbox/Lightbox.js +2 -2
  80. package/out-tsc/src/lightbox/Lightbox.js.map +1 -1
  81. package/out-tsc/src/list/ContentMenu.js +8 -8
  82. package/out-tsc/src/list/ContentMenu.js.map +1 -1
  83. package/out-tsc/src/list/NotificationList.js +7 -3
  84. package/out-tsc/src/list/NotificationList.js.map +1 -1
  85. package/out-tsc/src/list/RunList.js +1 -1
  86. package/out-tsc/src/list/RunList.js.map +1 -1
  87. package/out-tsc/src/list/SortableList.js +6 -6
  88. package/out-tsc/src/list/SortableList.js.map +1 -1
  89. package/out-tsc/src/list/TembaList.js +5 -5
  90. package/out-tsc/src/list/TembaList.js.map +1 -1
  91. package/out-tsc/src/list/TembaMenu.js +22 -22
  92. package/out-tsc/src/list/TembaMenu.js.map +1 -1
  93. package/out-tsc/src/loading/Loading.js +1 -1
  94. package/out-tsc/src/loading/Loading.js.map +1 -1
  95. package/out-tsc/src/locales/es.js +1 -1
  96. package/out-tsc/src/locales/es.js.map +1 -1
  97. package/out-tsc/src/locales/fr.js +1 -1
  98. package/out-tsc/src/locales/fr.js.map +1 -1
  99. package/out-tsc/src/locales/pt.js +1 -1
  100. package/out-tsc/src/locales/pt.js.map +1 -1
  101. package/out-tsc/src/omnibox/Omnibox.js +1 -1
  102. package/out-tsc/src/omnibox/Omnibox.js.map +1 -1
  103. package/out-tsc/src/options/Options.js +9 -9
  104. package/out-tsc/src/options/Options.js.map +1 -1
  105. package/out-tsc/src/remote/Remote.js +1 -1
  106. package/out-tsc/src/remote/Remote.js.map +1 -1
  107. package/out-tsc/src/select/Select.js +18 -18
  108. package/out-tsc/src/select/Select.js.map +1 -1
  109. package/out-tsc/src/sms/gsmsplitter.js +8 -8
  110. package/out-tsc/src/sms/gsmsplitter.js.map +1 -1
  111. package/out-tsc/src/sms/gsmvalidator.js +1 -1
  112. package/out-tsc/src/sms/gsmvalidator.js.map +1 -1
  113. package/out-tsc/src/sms/index.js +2 -2
  114. package/out-tsc/src/sms/index.js.map +1 -1
  115. package/out-tsc/src/sms/unicodesplitter.js +8 -8
  116. package/out-tsc/src/sms/unicodesplitter.js.map +1 -1
  117. package/out-tsc/src/store/Store.js +10 -10
  118. package/out-tsc/src/store/Store.js.map +1 -1
  119. package/out-tsc/src/store/StoreElement.js +2 -2
  120. package/out-tsc/src/store/StoreElement.js.map +1 -1
  121. package/out-tsc/src/tabpane/TabPane.js +4 -4
  122. package/out-tsc/src/tabpane/TabPane.js.map +1 -1
  123. package/out-tsc/src/templates/TemplateEditor.js +9 -9
  124. package/out-tsc/src/templates/TemplateEditor.js.map +1 -1
  125. package/out-tsc/src/textinput/TextInput.js +1 -1
  126. package/out-tsc/src/textinput/TextInput.js.map +1 -1
  127. package/out-tsc/src/thumbnail/Thumbnail.js +5 -5
  128. package/out-tsc/src/thumbnail/Thumbnail.js.map +1 -1
  129. package/out-tsc/src/tip/Tip.js +3 -3
  130. package/out-tsc/src/tip/Tip.js.map +1 -1
  131. package/out-tsc/src/utils/index.js +21 -21
  132. package/out-tsc/src/utils/index.js.map +1 -1
  133. package/out-tsc/src/vectoricon/VectorIcon.js +2 -2
  134. package/out-tsc/src/vectoricon/VectorIcon.js.map +1 -1
  135. package/out-tsc/src/vectoricon/index.js +2 -0
  136. package/out-tsc/src/vectoricon/index.js.map +1 -1
  137. package/out-tsc/src/webchat/WebChat.js +234 -81
  138. package/out-tsc/src/webchat/WebChat.js.map +1 -1
  139. package/out-tsc/src/webchat/assets.js +2 -0
  140. package/out-tsc/src/webchat/assets.js.map +1 -0
  141. package/out-tsc/src/webchat/index.js.map +1 -1
  142. package/out-tsc/test/temba-alert.test.js +1 -1
  143. package/out-tsc/test/temba-alert.test.js.map +1 -1
  144. package/out-tsc/test/temba-checkbox.test.js.map +1 -1
  145. package/out-tsc/test/temba-color-picker.test.js +4 -4
  146. package/out-tsc/test/temba-color-picker.test.js.map +1 -1
  147. package/out-tsc/test/temba-compose.test.js +50 -54
  148. package/out-tsc/test/temba-compose.test.js.map +1 -1
  149. package/out-tsc/test/temba-contact-badges.test.js +2 -2
  150. package/out-tsc/test/temba-contact-badges.test.js.map +1 -1
  151. package/out-tsc/test/temba-contact-chat.test.js +25 -38
  152. package/out-tsc/test/temba-contact-chat.test.js.map +1 -1
  153. package/out-tsc/test/temba-contact-details.test.js +2 -2
  154. package/out-tsc/test/temba-contact-details.test.js.map +1 -1
  155. package/out-tsc/test/temba-contact-fields.test.js +4 -4
  156. package/out-tsc/test/temba-contact-fields.test.js.map +1 -1
  157. package/out-tsc/test/temba-contact-history.test.js +3 -3
  158. package/out-tsc/test/temba-contact-history.test.js.map +1 -1
  159. package/out-tsc/test/temba-contact-search.test.js +7 -7
  160. package/out-tsc/test/temba-contact-search.test.js.map +1 -1
  161. package/out-tsc/test/temba-contact-tickets.test.js +3 -3
  162. package/out-tsc/test/temba-contact-tickets.test.js.map +1 -1
  163. package/out-tsc/test/temba-content-menu.test.js +7 -7
  164. package/out-tsc/test/temba-content-menu.test.js.map +1 -1
  165. package/out-tsc/test/temba-date.test.js +3 -3
  166. package/out-tsc/test/temba-date.test.js.map +1 -1
  167. package/out-tsc/test/temba-datepicker.test.js +1 -1
  168. package/out-tsc/test/temba-datepicker.test.js.map +1 -1
  169. package/out-tsc/test/temba-field-manager.test.js +1 -3
  170. package/out-tsc/test/temba-field-manager.test.js.map +1 -1
  171. package/out-tsc/test/temba-label.test.js +6 -6
  172. package/out-tsc/test/temba-label.test.js.map +1 -1
  173. package/out-tsc/test/temba-lightbox.test.js +2 -2
  174. package/out-tsc/test/temba-lightbox.test.js.map +1 -1
  175. package/out-tsc/test/temba-list.test.js +6 -6
  176. package/out-tsc/test/temba-list.test.js.map +1 -1
  177. package/out-tsc/test/temba-menu.test.js +4 -5
  178. package/out-tsc/test/temba-menu.test.js.map +1 -1
  179. package/out-tsc/test/temba-modax.test.js +3 -3
  180. package/out-tsc/test/temba-modax.test.js.map +1 -1
  181. package/out-tsc/test/temba-options.test.js +1 -1
  182. package/out-tsc/test/temba-options.test.js.map +1 -1
  183. package/out-tsc/test/temba-select.test.js +17 -17
  184. package/out-tsc/test/temba-select.test.js.map +1 -1
  185. package/out-tsc/test/temba-sortable-list.test.js +1 -1
  186. package/out-tsc/test/temba-sortable-list.test.js.map +1 -1
  187. package/out-tsc/test/temba-textinput.test.js +2 -2
  188. package/out-tsc/test/temba-textinput.test.js.map +1 -1
  189. package/out-tsc/test/temba-tip.test.js +4 -4
  190. package/out-tsc/test/temba-tip.test.js.map +1 -1
  191. package/out-tsc/test/utils.test.js +8 -8
  192. package/out-tsc/test/utils.test.js.map +1 -1
  193. package/package.json +6 -15
  194. package/src/RapidElement.ts +3 -3
  195. package/src/ResizeElement.ts +2 -2
  196. package/src/aliaseditor/AliasEditor.ts +1 -2
  197. package/src/button/Button.ts +1 -1
  198. package/src/charcount/helpers.ts +1 -1
  199. package/src/colorpicker/ColorPicker.ts +4 -4
  200. package/src/completion/Completion.ts +2 -2
  201. package/src/completion/ExcellentParser.ts +1 -1
  202. package/src/completion/helpers.ts +9 -9
  203. package/src/compose/Compose.ts +18 -16
  204. package/src/contacts/ContactBadges.ts +2 -2
  205. package/src/contacts/ContactChat.ts +4 -4
  206. package/src/contacts/ContactDetails.ts +4 -4
  207. package/src/contacts/ContactFieldEditor.ts +4 -4
  208. package/src/contacts/ContactFields.ts +2 -2
  209. package/src/contacts/ContactHistory.ts +25 -22
  210. package/src/contacts/ContactPending.ts +4 -4
  211. package/src/contacts/ContactTickets.ts +9 -9
  212. package/src/contacts/events.ts +3 -3
  213. package/src/contacts/helpers.ts +2 -2
  214. package/src/contactsearch/ContactSearch.ts +9 -9
  215. package/src/date/TembaDate.ts +1 -1
  216. package/src/datepicker/DatePicker.ts +1 -1
  217. package/src/dialog/Dialog.ts +6 -6
  218. package/src/dialog/Modax.ts +8 -8
  219. package/src/dropdown/Dropdown.ts +1 -2
  220. package/src/emojis.json +1882 -1
  221. package/src/fields/FieldManager.ts +6 -7
  222. package/src/imagepicker/ImagePicker.ts +4 -4
  223. package/src/interfaces.ts +4 -4
  224. package/src/label/Label.ts +1 -1
  225. package/src/leafletmap/LeafletMap.ts +6 -6
  226. package/src/leafletmap/helpers.ts +2 -2
  227. package/src/lightbox/Lightbox.ts +2 -2
  228. package/src/list/ContentMenu.ts +9 -9
  229. package/src/list/NotificationList.ts +7 -3
  230. package/src/list/RunList.ts +1 -1
  231. package/src/list/SortableList.ts +6 -6
  232. package/src/list/TembaList.ts +5 -5
  233. package/src/list/TembaMenu.ts +23 -23
  234. package/src/loading/Loading.ts +1 -1
  235. package/src/locales/es.ts +1 -1
  236. package/src/locales/fr.ts +1 -1
  237. package/src/locales/pt.ts +1 -1
  238. package/src/omnibox/Omnibox.ts +2 -2
  239. package/src/options/Options.ts +9 -9
  240. package/src/remote/Remote.ts +1 -1
  241. package/src/select/Select.ts +19 -19
  242. package/src/sms/gsmsplitter.ts +8 -8
  243. package/src/sms/gsmvalidator.ts +1 -1
  244. package/src/sms/index.ts +2 -2
  245. package/src/sms/unicodesplitter.ts +8 -8
  246. package/src/store/Store.ts +10 -10
  247. package/src/store/StoreElement.ts +2 -2
  248. package/src/tabpane/TabPane.ts +4 -4
  249. package/src/templates/TemplateEditor.ts +9 -9
  250. package/src/textinput/TextInput.ts +2 -2
  251. package/src/thumbnail/Thumbnail.ts +5 -5
  252. package/src/tip/Tip.ts +3 -3
  253. package/src/utils/index.ts +24 -24
  254. package/src/vectoricon/VectorIcon.ts +2 -2
  255. package/src/vectoricon/index.ts +3 -1
  256. package/src/webchat/WebChat.ts +272 -87
  257. package/src/webchat/assets.ts +2 -0
  258. package/src/webchat/index.ts +1 -1
  259. package/svg.js +28 -29
  260. package/test/temba-alert.test.ts +1 -1
  261. package/test/temba-checkbox.test.ts +1 -1
  262. package/test/temba-color-picker.test.ts +4 -4
  263. package/test/temba-compose.test.ts +50 -55
  264. package/test/temba-contact-badges.test.ts +2 -2
  265. package/test/temba-contact-chat.test.ts +26 -46
  266. package/test/temba-contact-details.test.ts +2 -8
  267. package/test/temba-contact-fields.test.ts +4 -11
  268. package/test/temba-contact-history.test.ts +3 -3
  269. package/test/temba-contact-search.test.ts +7 -13
  270. package/test/temba-contact-tickets.test.ts +3 -3
  271. package/test/temba-content-menu.test.ts +7 -7
  272. package/test/temba-date.test.ts +3 -3
  273. package/test/temba-datepicker.test.ts +1 -1
  274. package/test/temba-field-manager.test.ts +1 -4
  275. package/test/temba-label.test.ts +6 -6
  276. package/test/temba-lightbox.test.ts +2 -2
  277. package/test/temba-list.test.ts +6 -6
  278. package/test/temba-menu.test.ts +4 -5
  279. package/test/temba-modax.test.ts +3 -3
  280. package/test/temba-options.test.ts +1 -1
  281. package/test/temba-select.test.ts +17 -17
  282. package/test/temba-sortable-list.test.ts +1 -1
  283. package/test/temba-textinput.test.ts +2 -2
  284. package/test/temba-tip.test.ts +5 -5
  285. package/test/utils.test.ts +8 -9
@@ -1 +1 @@
1
- {"version":3,"file":"temba-contact-details.test.js","sourceRoot":"","sources":["../../test/temba-contact-details.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAGL,YAAY,EACZ,SAAS,EACT,OAAO,GACR,MAAM,cAAc,CAAC;AAEtB,MAAM,GAAG,GAAG,uBAAuB,CAAC;AACpC,MAAM,iBAAiB,GAAG,KAAK,EAAE,QAAa,EAAE,EAAE,EAAE;IAClD,MAAM,cAAc,GAAG,CAAC,MAAM,YAAY,CACxC,GAAG,EACH,KAAK,EACL,EAAE,EACF,GAAG,CACJ,CAAmB,CAAC;IACrB,+BAA+B;IAC/B,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,CACL,qEAAqE,EACrE,2CAA2C,CAC5C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,SAAS,EAAE,CAAC;QAClB,MAAM,cAAc,GAAmB,MAAM,iBAAiB,CAAC;YAC7D,OAAO,EAAE,sCAAsC;SAChD,CAAC,CAAC;QAEH,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAClD,uEAAuE;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { assert, waitUntil } from '@open-wc/testing';\nimport { ContactDetails } from '../src/contacts/ContactDetails';\nimport {\n assertScreenshot,\n getClip,\n getComponent,\n loadStore,\n mockGET,\n} from './utils.test';\n\nconst TAG = 'temba-contact-details';\nconst getContactDetails = async (attrs: any = {}) => {\n const contactDetails = (await getComponent(\n TAG,\n attrs,\n '',\n 400\n )) as ContactDetails;\n // wait for our contact to load\n await waitUntil(() => !!contactDetails.data);\n return contactDetails;\n};\n\ndescribe('temba-contact-tickets', () => {\n beforeEach(() => {\n mockGET(\n /\\/api\\/v2\\/contacts.json\\?uuid=24d64810-3315-4ff5-be85-48e3fe055bf9/,\n '/test-assets/contacts/contact-dave-active'\n );\n });\n\n it('renders default', async () => {\n await loadStore();\n const contactDetails: ContactDetails = await getContactDetails({\n contact: '24d64810-3315-4ff5-be85-48e3fe055bf9',\n });\n\n assert.instanceOf(contactDetails, ContactDetails);\n // await assertScreenshot('contacts/details', getClip(contactDetails));\n });\n});\n"]}
1
+ {"version":3,"file":"temba-contact-details.test.js","sourceRoot":"","sources":["../../test/temba-contact-details.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEhE,MAAM,GAAG,GAAG,uBAAuB,CAAC;AACpC,MAAM,iBAAiB,GAAG,KAAK,EAAE,QAAa,EAAE,EAAE,EAAE;IAClD,MAAM,cAAc,GAAG,CAAC,MAAM,YAAY,CACxC,GAAG,EACH,KAAK,EACL,EAAE,EACF,GAAG,CACJ,CAAmB,CAAC;IACrB,+BAA+B;IAC/B,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEF,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,CACL,qEAAqE,EACrE,2CAA2C,CAC5C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,SAAS,EAAE,CAAC;QAClB,MAAM,cAAc,GAAmB,MAAM,iBAAiB,CAAC;YAC7D,OAAO,EAAE,sCAAsC;SAChD,CAAC,CAAC;QAEH,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;QAClD,uEAAuE;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { assert, waitUntil } from '@open-wc/testing';\nimport { ContactDetails } from '../src/contacts/ContactDetails';\nimport { getComponent, loadStore, mockGET } from './utils.test';\n\nconst TAG = 'temba-contact-details';\nconst getContactDetails = async (attrs: any = {}) => {\n const contactDetails = (await getComponent(\n TAG,\n attrs,\n '',\n 400\n )) as ContactDetails;\n // wait for our contact to load\n await waitUntil(() => !!contactDetails.data);\n return contactDetails;\n};\n\ndescribe('temba-contact-tickets', () => {\n beforeEach(() => {\n mockGET(\n /\\/api\\/v2\\/contacts.json\\?uuid=24d64810-3315-4ff5-be85-48e3fe055bf9/,\n '/test-assets/contacts/contact-dave-active'\n );\n });\n\n it('renders default', async () => {\n await loadStore();\n const contactDetails: ContactDetails = await getContactDetails({\n contact: '24d64810-3315-4ff5-be85-48e3fe055bf9'\n });\n\n assert.instanceOf(contactDetails, ContactDetails);\n // await assertScreenshot('contacts/details', getClip(contactDetails));\n });\n});\n"]}
@@ -1,6 +1,6 @@
1
1
  import { assert, expect } from '@open-wc/testing';
2
2
  import { ContactFields } from '../src/contacts/ContactFields';
3
- import { delay, getComponent, loadStore, mockPOST, } from './utils.test';
3
+ import { delay, getComponent, loadStore, mockPOST } from './utils.test';
4
4
  const TAG = 'temba-contact-fields';
5
5
  const getFields = async (attrs = {}) => {
6
6
  attrs['endpoint'] = '/test-assets/contacts/';
@@ -14,7 +14,7 @@ describe(TAG, () => {
14
14
  // we are a StoreElement, so load a store first
15
15
  await loadStore();
16
16
  const fields = await getFields({
17
- contact: 'contact-dave-active',
17
+ contact: 'contact-dave-active'
18
18
  });
19
19
  assert.instanceOf(fields, ContactFields);
20
20
  // await assertScreenshot('contacts/fields', getClip(fields));
@@ -22,10 +22,10 @@ describe(TAG, () => {
22
22
  it('handles updated contacts properly', async () => {
23
23
  await loadStore();
24
24
  const fields = await getFields({
25
- contact: 'contact-dave-active',
25
+ contact: 'contact-dave-active'
26
26
  });
27
27
  const data = fields.data;
28
- data.groups.forEach(group => {
28
+ data.groups.forEach((group) => {
29
29
  delete group['is_dynamic'];
30
30
  });
31
31
  mockPOST(/api\/v2\/contacts\.json\?uuid=contact-dave-active/, data);
@@ -1 +1 @@
1
- {"version":3,"file":"temba-contact-fields.test.js","sourceRoot":"","sources":["../../test/temba-contact-fields.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAEL,KAAK,EAEL,YAAY,EACZ,SAAS,EACT,QAAQ,GACT,MAAM,cAAc,CAAC;AAEtB,MAAM,GAAG,GAAG,sBAAsB,CAAC;AACnC,MAAM,SAAS,GAAG,KAAK,EAAE,QAAa,EAAE,EAAE,EAAE;IAC1C,KAAK,CAAC,UAAU,CAAC,GAAG,wBAAwB,CAAC;IAC7C,MAAM,MAAM,GAAG,CAAC,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,CAAkB,CAAC;IAE1E,+BAA+B;IAC/B,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;IACjB,EAAE,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC/B,+CAA+C;QAC/C,MAAM,SAAS,EAAE,CAAC;QAElB,MAAM,MAAM,GAAkB,MAAM,SAAS,CAAC;YAC5C,OAAO,EAAE,qBAAqB;SAC/B,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACzC,8DAA8D;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,SAAS,EAAE,CAAC;QAClB,MAAM,MAAM,GAAkB,MAAM,SAAS,CAAC;YAC5C,OAAO,EAAE,qBAAqB;SAC/B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC1B,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,mDAAmD,EAAE,IAAI,CAAC,CAAC;QAEpE,oBAAoB;QACpB,MAAM,QAAQ,CACZ,qEAAqE,EACrE,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,CAAC;QAEF,+DAA+D;QAC/D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEvD,sEAAsE;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { assert, expect } from '@open-wc/testing';\nimport { ContactFields } from '../src/contacts/ContactFields';\nimport {\n assertScreenshot,\n delay,\n getClip,\n getComponent,\n loadStore,\n mockPOST,\n} from './utils.test';\n\nconst TAG = 'temba-contact-fields';\nconst getFields = async (attrs: any = {}) => {\n attrs['endpoint'] = '/test-assets/contacts/';\n const fields = (await getComponent(TAG, attrs, '', 600)) as ContactFields;\n\n // wait for our contact to load\n await delay(100);\n\n return fields;\n};\n\ndescribe(TAG, () => {\n it('renders default', async () => {\n // we are a StoreElement, so load a store first\n await loadStore();\n\n const fields: ContactFields = await getFields({\n contact: 'contact-dave-active',\n });\n assert.instanceOf(fields, ContactFields);\n // await assertScreenshot('contacts/fields', getClip(fields));\n });\n\n it('handles updated contacts properly', async () => {\n await loadStore();\n const fields: ContactFields = await getFields({\n contact: 'contact-dave-active',\n });\n\n const data = fields.data;\n data.groups.forEach(group => {\n delete group['is_dynamic'];\n });\n mockPOST(/api\\/v2\\/contacts\\.json\\?uuid=contact-dave-active/, data);\n\n // update our fields\n await typeInto(\n \"temba-contact-fields:temba-contact-field[key='age']:temba-textinput\",\n '62',\n true,\n true\n );\n\n // the updated contact should still have is_dynamic flags added\n expect(fields.data.groups[0].is_dynamic).equals(true);\n expect(fields.data.groups[1].is_dynamic).equals(false);\n\n // await assertScreenshot('contacts/fields-updated', getClip(fields));\n });\n});\n"]}
1
+ {"version":3,"file":"temba-contact-fields.test.js","sourceRoot":"","sources":["../../test/temba-contact-fields.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExE,MAAM,GAAG,GAAG,sBAAsB,CAAC;AACnC,MAAM,SAAS,GAAG,KAAK,EAAE,QAAa,EAAE,EAAE,EAAE;IAC1C,KAAK,CAAC,UAAU,CAAC,GAAG,wBAAwB,CAAC;IAC7C,MAAM,MAAM,GAAG,CAAC,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,CAAkB,CAAC;IAE1E,+BAA+B;IAC/B,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjB,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE;IACjB,EAAE,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC/B,+CAA+C;QAC/C,MAAM,SAAS,EAAE,CAAC;QAElB,MAAM,MAAM,GAAkB,MAAM,SAAS,CAAC;YAC5C,OAAO,EAAE,qBAAqB;SAC/B,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACzC,8DAA8D;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACjD,MAAM,SAAS,EAAE,CAAC;QAClB,MAAM,MAAM,GAAkB,MAAM,SAAS,CAAC;YAC5C,OAAO,EAAE,qBAAqB;SAC/B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5B,OAAO,KAAK,CAAC,YAAY,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;QACH,QAAQ,CAAC,mDAAmD,EAAE,IAAI,CAAC,CAAC;QAEpE,oBAAoB;QACpB,MAAM,QAAQ,CACZ,qEAAqE,EACrE,IAAI,EACJ,IAAI,EACJ,IAAI,CACL,CAAC;QAEF,+DAA+D;QAC/D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEvD,sEAAsE;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { assert, expect } from '@open-wc/testing';\nimport { ContactFields } from '../src/contacts/ContactFields';\nimport { delay, getComponent, loadStore, mockPOST } from './utils.test';\n\nconst TAG = 'temba-contact-fields';\nconst getFields = async (attrs: any = {}) => {\n attrs['endpoint'] = '/test-assets/contacts/';\n const fields = (await getComponent(TAG, attrs, '', 600)) as ContactFields;\n\n // wait for our contact to load\n await delay(100);\n\n return fields;\n};\n\ndescribe(TAG, () => {\n it('renders default', async () => {\n // we are a StoreElement, so load a store first\n await loadStore();\n\n const fields: ContactFields = await getFields({\n contact: 'contact-dave-active'\n });\n assert.instanceOf(fields, ContactFields);\n // await assertScreenshot('contacts/fields', getClip(fields));\n });\n\n it('handles updated contacts properly', async () => {\n await loadStore();\n const fields: ContactFields = await getFields({\n contact: 'contact-dave-active'\n });\n\n const data = fields.data;\n data.groups.forEach((group) => {\n delete group['is_dynamic'];\n });\n mockPOST(/api\\/v2\\/contacts\\.json\\?uuid=contact-dave-active/, data);\n\n // update our fields\n await typeInto(\n \"temba-contact-fields:temba-contact-field[key='age']:temba-textinput\",\n '62',\n true,\n true\n );\n\n // the updated contact should still have is_dynamic flags added\n expect(fields.data.groups[0].is_dynamic).equals(true);\n expect(fields.data.groups[1].is_dynamic).equals(false);\n\n // await assertScreenshot('contacts/fields-updated', getClip(fields));\n });\n});\n"]}
@@ -1,7 +1,7 @@
1
1
  import { fixture, assert, expect } from '@open-wc/testing';
2
2
  import { useFakeTimers } from 'sinon';
3
3
  import { ContactHistory } from '../src/contacts/ContactHistory';
4
- import { assertScreenshot, getClip, getHTML, loadStore, mockGET, mockNow, } from '../test/utils.test';
4
+ import { assertScreenshot, getClip, getHTML, loadStore, mockGET, mockNow } from '../test/utils.test';
5
5
  import './utils.test';
6
6
  export const createHistory = async (def) => {
7
7
  const parentNode = document.createElement('div');
@@ -39,7 +39,7 @@ describe('temba-contact-history', () => {
39
39
  });
40
40
  it('renders history', async () => {
41
41
  const history = await createHistory(getHistoryHTML({
42
- uuid: 'contact-dave-active',
42
+ uuid: 'contact-dave-active'
43
43
  }));
44
44
  // we should have scrolled to the bottom, but the scroll
45
45
  // happens in a window timeout
@@ -54,7 +54,7 @@ describe('temba-contact-history', () => {
54
54
  });
55
55
  it('expands event groups', async () => {
56
56
  const history = await createHistory(getHistoryHTML({
57
- uuid: 'contact-dave-active',
57
+ uuid: 'contact-dave-active'
58
58
  }));
59
59
  // our groups with collapsed events
60
60
  const groups = [3, 5, 7];
@@ -1 +1 @@
1
- {"version":3,"file":"temba-contact-history.test.js","sourceRoot":"","sources":["../../test/temba-contact-history.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { fixture, assert, expect } from '@open-wc/testing';\nimport { useFakeTimers } from 'sinon';\nimport { ContactHistory } from '../src/contacts/ContactHistory';\nimport {\n assertScreenshot,\n getClip,\n getHTML,\n loadStore,\n mockGET,\n mockNow,\n} from '../test/utils.test';\nimport './utils.test';\n\nexport const createHistory = async (def: string) => {\n const parentNode = document.createElement('div');\n parentNode.setAttribute(\n 'style',\n 'width: 500px;height:750px;display:flex;flex-direction:column;flex-grow:1;min-height:0;'\n );\n const history = (await fixture(def, { parentNode })) as ContactHistory;\n\n // make sure our initial fetch is made\n await history.httpComplete;\n\n return history;\n};\n\nconst getHistoryHTML = (attrs: any = {} as any) =>\n // attrs = \"min-height:0;display:flex;flex-grow:1;flex-direction:column\";\n getHTML('temba-contact-history', attrs);\n\nconst getHistoryClip = (ele: ContactHistory) => {\n const clip = getClip(ele);\n clip.height = Math.min(clip.height, 750);\n clip.bottom = clip.top + clip.height;\n return clip;\n};\n\n// stub our current date for consistent screenshots\nmockNow('2021-03-31T00:31:00.000-00:00');\nlet clock: any;\n\ndescribe('temba-contact-history', () => {\n beforeEach(async () => {\n clock = useFakeTimers();\n\n mockGET(\n /\\/contact\\/history\\/contact-dave-active\\/.*/,\n '/test-assets/contacts/history.json'\n );\n\n mockGET(\n /\\/api\\/v2\\/tickets\\.json\\?contact=contact-dave-active/,\n '/test-assets/api/tickets.json'\n );\n\n await loadStore();\n });\n\n afterEach(function () {\n clock.restore();\n });\n\n it('can be created', async () => {\n const history = await createHistory(getHistoryHTML());\n assert.instanceOf(history, ContactHistory);\n });\n\n it('renders history', async () => {\n const history = await createHistory(\n getHistoryHTML({\n uuid: 'contact-dave-active',\n })\n );\n\n // we should have scrolled to the bottom, but the scroll\n // happens in a window timeout\n await clock.runAllAsync();\n await history.updateComplete;\n\n const events = history.shadowRoot.querySelector('.events');\n const top = events.scrollHeight - events.getBoundingClientRect().height;\n expect(top).to.equal(571);\n // make sure we actually scrolled to there\n expect(events.scrollTop).to.equal(top);\n await assertScreenshot('contacts/history', getHistoryClip(history));\n });\n\n it('expands event groups', async () => {\n const history = await createHistory(\n getHistoryHTML({\n uuid: 'contact-dave-active',\n })\n );\n\n // our groups with collapsed events\n const groups = [3, 5, 7];\n for (const idx of groups) {\n const group = history.shadowRoot.querySelector(\n `.event-count[data-group-index='${idx}']`\n ) as HTMLDivElement;\n group.click();\n await clock.runAllAsync();\n expect(group.parentElement.classList.contains('expanded')).equal(true);\n }\n });\n});\n"]}
1
+ {"version":3,"file":"temba-contact-history.test.js","sourceRoot":"","sources":["../../test/temba-contact-history.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { fixture, assert, expect } from '@open-wc/testing';\nimport { useFakeTimers } from 'sinon';\nimport { ContactHistory } from '../src/contacts/ContactHistory';\nimport {\n assertScreenshot,\n getClip,\n getHTML,\n loadStore,\n mockGET,\n mockNow\n} from '../test/utils.test';\nimport './utils.test';\n\nexport const createHistory = async (def: string) => {\n const parentNode = document.createElement('div');\n parentNode.setAttribute(\n 'style',\n 'width: 500px;height:750px;display:flex;flex-direction:column;flex-grow:1;min-height:0;'\n );\n const history = (await fixture(def, { parentNode })) as ContactHistory;\n\n // make sure our initial fetch is made\n await history.httpComplete;\n\n return history;\n};\n\nconst getHistoryHTML = (attrs: any = {} as any) =>\n // attrs = \"min-height:0;display:flex;flex-grow:1;flex-direction:column\";\n getHTML('temba-contact-history', attrs);\n\nconst getHistoryClip = (ele: ContactHistory) => {\n const clip = getClip(ele);\n clip.height = Math.min(clip.height, 750);\n clip.bottom = clip.top + clip.height;\n return clip;\n};\n\n// stub our current date for consistent screenshots\nmockNow('2021-03-31T00:31:00.000-00:00');\nlet clock: any;\n\ndescribe('temba-contact-history', () => {\n beforeEach(async () => {\n clock = useFakeTimers();\n\n mockGET(\n /\\/contact\\/history\\/contact-dave-active\\/.*/,\n '/test-assets/contacts/history.json'\n );\n\n mockGET(\n /\\/api\\/v2\\/tickets\\.json\\?contact=contact-dave-active/,\n '/test-assets/api/tickets.json'\n );\n\n await loadStore();\n });\n\n afterEach(function () {\n clock.restore();\n });\n\n it('can be created', async () => {\n const history = await createHistory(getHistoryHTML());\n assert.instanceOf(history, ContactHistory);\n });\n\n it('renders history', async () => {\n const history = await createHistory(\n getHistoryHTML({\n uuid: 'contact-dave-active'\n })\n );\n\n // we should have scrolled to the bottom, but the scroll\n // happens in a window timeout\n await clock.runAllAsync();\n await history.updateComplete;\n\n const events = history.shadowRoot.querySelector('.events');\n const top = events.scrollHeight - events.getBoundingClientRect().height;\n expect(top).to.equal(571);\n // make sure we actually scrolled to there\n expect(events.scrollTop).to.equal(top);\n await assertScreenshot('contacts/history', getHistoryClip(history));\n });\n\n it('expands event groups', async () => {\n const history = await createHistory(\n getHistoryHTML({\n uuid: 'contact-dave-active'\n })\n );\n\n // our groups with collapsed events\n const groups = [3, 5, 7];\n for (const idx of groups) {\n const group = history.shadowRoot.querySelector(\n `.event-count[data-group-index='${idx}']`\n ) as HTMLDivElement;\n group.click();\n await clock.runAllAsync();\n expect(group.parentElement.classList.contains('expanded')).equal(true);\n }\n });\n});\n"]}
@@ -1,11 +1,11 @@
1
1
  import { fixture, assert, expect } from '@open-wc/testing';
2
2
  import { ContactSearch } from '../src/contactsearch/ContactSearch';
3
- import { assertScreenshot, getClip, getHTML, mockPOST, } from './utils.test';
3
+ import { assertScreenshot, getClip, getHTML, mockPOST } from './utils.test';
4
4
  import { useFakeTimers } from 'sinon';
5
5
  import { CustomEventType } from '../src/interfaces';
6
6
  let clock;
7
7
  function waitForSearch(search) {
8
- return new Promise(resolve => {
8
+ return new Promise((resolve) => {
9
9
  search.addEventListener(CustomEventType.ContentChanged, async () => {
10
10
  await clock.runAll();
11
11
  resolve(search);
@@ -27,7 +27,7 @@ describe('temba-contact-search', () => {
27
27
  const endpoint = '/contact-search-bad';
28
28
  const search = await fixture(getHTML('temba-contact-search', {
29
29
  advanced: true,
30
- endpoint,
30
+ endpoint
31
31
  }));
32
32
  // mock an error response
33
33
  mockPOST(/contact-search-bad/, { query: '', total: 0, error: "'Missing' is not a valid group name" }, { 'Temba-Success': 'hide' });
@@ -37,7 +37,7 @@ describe('temba-contact-search', () => {
37
37
  await clock.runAll();
38
38
  await waitForSearch(search);
39
39
  expect(search.errors).to.deep.equal([
40
- "'Missing' is not a valid group name",
40
+ "'Missing' is not a valid group name"
41
41
  ]);
42
42
  await search.updateComplete;
43
43
  await assertScreenshot('contact-search/missing-group', getClip(search));
@@ -45,7 +45,7 @@ describe('temba-contact-search', () => {
45
45
  xit('allows manual searches', async () => {
46
46
  const endpoint = '/contact-search-manual';
47
47
  const search = await fixture(getHTML('temba-contact-search', {
48
- endpoint,
48
+ endpoint
49
49
  }));
50
50
  const omnibox = search.shadowRoot.querySelector('temba-omnibox');
51
51
  omnibox.value = [];
@@ -57,9 +57,9 @@ describe('temba-contact-search', () => {
57
57
  total: 1937,
58
58
  warnings: [
59
59
  'This flow does not specify a Facebook topic. You may still start this flow but Facebook contacts who have not sent an incoming message in the last 24 hours may not receive it.',
60
- 'This flow does not use message templates. You may still start this flow but WhatsApp contacts who have not sent an incoming message in the last 24 hours may not receive it.',
60
+ 'This flow does not use message templates. You may still start this flow but WhatsApp contacts who have not sent an incoming message in the last 24 hours may not receive it.'
61
61
  ],
62
- blockers: [],
62
+ blockers: []
63
63
  }, { 'Temba-Success': 'hide' });
64
64
  search.query = 'group = "Testers"';
65
65
  // run the query
@@ -1 +1 @@
1
- {"version":3,"file":"temba-contact-search.test.js","sourceRoot":"","sources":["../../test/temba-contact-search.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { fixture, assert, expect } from '@open-wc/testing';\nimport { ContactSearch } from '../src/contactsearch/ContactSearch';\nimport {\n assertScreenshot,\n delay,\n getClip,\n getHTML,\n mockPOST,\n} from './utils.test';\nimport { useFakeTimers } from 'sinon';\nimport { CustomEventType } from '../src/interfaces';\nimport { Omnibox } from '../src/omnibox/Omnibox';\n\nlet clock: any;\n\nfunction waitForSearch(search: ContactSearch) {\n return new Promise<ContactSearch>(resolve => {\n search.addEventListener(\n CustomEventType.ContentChanged,\n async () => {\n await clock.runAll();\n resolve(search);\n },\n { once: true }\n );\n });\n}\n\ndescribe('temba-contact-search', () => {\n beforeEach(function () {\n clock = useFakeTimers();\n });\n\n afterEach(function () {\n clock.restore();\n });\n\n it('can be created', async () => {\n const search: ContactSearch = await fixture(\n getHTML('temba-contact-search')\n );\n assert.instanceOf(search, ContactSearch);\n });\n\n xit('handles bad queries', async () => {\n const endpoint = '/contact-search-bad';\n const search: ContactSearch = await fixture(\n getHTML('temba-contact-search', {\n advanced: true,\n endpoint,\n })\n );\n\n // mock an error response\n mockPOST(\n /contact-search-bad/,\n { query: '', total: 0, error: \"'Missing' is not a valid group name\" },\n { 'Temba-Success': 'hide' }\n );\n\n search.query = 'group = \"Missing\"';\n\n // run the query\n await clock.runAll();\n await clock.runAll();\n await waitForSearch(search);\n\n expect(search.errors).to.deep.equal([\n \"'Missing' is not a valid group name\",\n ]);\n\n await search.updateComplete;\n await assertScreenshot('contact-search/missing-group', getClip(search));\n });\n\n xit('allows manual searches', async () => {\n const endpoint = '/contact-search-manual';\n const search: ContactSearch = await fixture(\n getHTML('temba-contact-search', {\n endpoint,\n })\n );\n\n const omnibox = search.shadowRoot.querySelector('temba-omnibox') as Omnibox;\n omnibox.value = [];\n search.advanced = true;\n\n await search.updateComplete;\n\n // mock successful response with some warnings\n mockPOST(\n /contact-search-manual/,\n {\n query: 'group = \"Doctors\"',\n total: 1937,\n warnings: [\n 'This flow does not specify a Facebook topic. You may still start this flow but Facebook contacts who have not sent an incoming message in the last 24 hours may not receive it.',\n 'This flow does not use message templates. You may still start this flow but WhatsApp contacts who have not sent an incoming message in the last 24 hours may not receive it.',\n ],\n blockers: [],\n },\n { 'Temba-Success': 'hide' }\n );\n\n search.query = 'group = \"Testers\"';\n\n // run the query\n await clock.runAll();\n await clock.runAll();\n await waitForSearch(search);\n await clock.runAll();\n\n await search.updateComplete;\n await assertScreenshot('contact-search/manual-search', getClip(search));\n });\n});\n"]}
1
+ {"version":3,"file":"temba-contact-search.test.js","sourceRoot":"","sources":["../../test/temba-contact-search.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { fixture, assert, expect } from '@open-wc/testing';\nimport { ContactSearch } from '../src/contactsearch/ContactSearch';\nimport { assertScreenshot, getClip, getHTML, mockPOST } from './utils.test';\nimport { useFakeTimers } from 'sinon';\nimport { CustomEventType } from '../src/interfaces';\nimport { Omnibox } from '../src/omnibox/Omnibox';\n\nlet clock: any;\n\nfunction waitForSearch(search: ContactSearch) {\n return new Promise<ContactSearch>((resolve) => {\n search.addEventListener(\n CustomEventType.ContentChanged,\n async () => {\n await clock.runAll();\n resolve(search);\n },\n { once: true }\n );\n });\n}\n\ndescribe('temba-contact-search', () => {\n beforeEach(function () {\n clock = useFakeTimers();\n });\n\n afterEach(function () {\n clock.restore();\n });\n\n it('can be created', async () => {\n const search: ContactSearch = await fixture(\n getHTML('temba-contact-search')\n );\n assert.instanceOf(search, ContactSearch);\n });\n\n xit('handles bad queries', async () => {\n const endpoint = '/contact-search-bad';\n const search: ContactSearch = await fixture(\n getHTML('temba-contact-search', {\n advanced: true,\n endpoint\n })\n );\n\n // mock an error response\n mockPOST(\n /contact-search-bad/,\n { query: '', total: 0, error: \"'Missing' is not a valid group name\" },\n { 'Temba-Success': 'hide' }\n );\n\n search.query = 'group = \"Missing\"';\n\n // run the query\n await clock.runAll();\n await clock.runAll();\n await waitForSearch(search);\n\n expect(search.errors).to.deep.equal([\n \"'Missing' is not a valid group name\"\n ]);\n\n await search.updateComplete;\n await assertScreenshot('contact-search/missing-group', getClip(search));\n });\n\n xit('allows manual searches', async () => {\n const endpoint = '/contact-search-manual';\n const search: ContactSearch = await fixture(\n getHTML('temba-contact-search', {\n endpoint\n })\n );\n\n const omnibox = search.shadowRoot.querySelector('temba-omnibox') as Omnibox;\n omnibox.value = [];\n search.advanced = true;\n\n await search.updateComplete;\n\n // mock successful response with some warnings\n mockPOST(\n /contact-search-manual/,\n {\n query: 'group = \"Doctors\"',\n total: 1937,\n warnings: [\n 'This flow does not specify a Facebook topic. You may still start this flow but Facebook contacts who have not sent an incoming message in the last 24 hours may not receive it.',\n 'This flow does not use message templates. You may still start this flow but WhatsApp contacts who have not sent an incoming message in the last 24 hours may not receive it.'\n ],\n blockers: []\n },\n { 'Temba-Success': 'hide' }\n );\n\n search.query = 'group = \"Testers\"';\n\n // run the query\n await clock.runAll();\n await clock.runAll();\n await waitForSearch(search);\n await clock.runAll();\n\n await search.updateComplete;\n await assertScreenshot('contact-search/manual-search', getClip(search));\n });\n});\n"]}
@@ -1,6 +1,6 @@
1
1
  import { assert, waitUntil } from '@open-wc/testing';
2
2
  import { ContactTickets } from '../src/contacts/ContactTickets';
3
- import { assertScreenshot, getClip, getComponent, loadStore, mockGET, mockNow, } from './utils.test';
3
+ import { assertScreenshot, getClip, getComponent, loadStore, mockGET, mockNow } from './utils.test';
4
4
  const TAG = 'temba-contact-tickets';
5
5
  const getContactTickets = async (attrs = {}) => {
6
6
  const contactTickets = (await getComponent(TAG, attrs, '', 400));
@@ -17,7 +17,7 @@ describe('temba-contact-tickets', () => {
17
17
  it('renders default', async () => {
18
18
  const tickets = await getContactTickets({
19
19
  contact: '24d64810-3315-4ff5-be85-48e3fe055bf9',
20
- agent: 'admin1@nyaruka.com',
20
+ agent: 'admin1@nyaruka.com'
21
21
  });
22
22
  assert.instanceOf(tickets, ContactTickets);
23
23
  await assertScreenshot('contacts/tickets', getClip(tickets));
@@ -25,7 +25,7 @@ describe('temba-contact-tickets', () => {
25
25
  it('shows assignment picker', async () => {
26
26
  const tickets = await getContactTickets({
27
27
  contact: '24d64810-3315-4ff5-be85-48e3fe055bf9',
28
- agent: 'admin1@nyaruka.com',
28
+ agent: 'admin1@nyaruka.com'
29
29
  });
30
30
  // click on the avatar element
31
31
  tickets.shadowRoot.querySelector('temba-user').click();
@@ -1 +1 @@
1
- {"version":3,"file":"temba-contact-tickets.test.js","sourceRoot":"","sources":["../../test/temba-contact-tickets.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,YAAY,EACZ,SAAS,EACT,OAAO,EACP,OAAO,GACR,MAAM,cAAc,CAAC;AAEtB,MAAM,GAAG,GAAG,uBAAuB,CAAC;AACpC,MAAM,iBAAiB,GAAG,KAAK,EAAE,QAAa,EAAE,EAAE,EAAE;IAClD,MAAM,cAAc,GAAG,CAAC,MAAM,YAAY,CACxC,GAAG,EACH,KAAK,EACL,EAAE,EACF,GAAG,CACJ,CAAmB,CAAC;IACrB,+BAA+B;IAC/B,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEF,OAAO,CAAC,+BAA+B,CAAC,CAAC;AACzC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,CACL,uEAAuE,EACvE,4CAA4C,CAC7C,CAAC;QACF,SAAS,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,OAAO,GAAmB,MAAM,iBAAiB,CAAC;YACtD,OAAO,EAAE,sCAAsC;YAC/C,KAAK,EAAE,oBAAoB;SAC5B,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC3C,MAAM,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,OAAO,GAAmB,MAAM,iBAAiB,CAAC;YACtD,OAAO,EAAE,sCAAsC;YAC/C,KAAK,EAAE,oBAAoB;SAC5B,CAAC,CAAC;QAEH,8BAA8B;QAC7B,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAoB,CAAC,KAAK,EAAE,CAAC;QAC3E,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC3C,MAAM,gBAAgB,CAAC,6BAA6B,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { assert, waitUntil } from '@open-wc/testing';\nimport { ContactTickets } from '../src/contacts/ContactTickets';\nimport {\n assertScreenshot,\n getClip,\n getComponent,\n loadStore,\n mockGET,\n mockNow,\n} from './utils.test';\n\nconst TAG = 'temba-contact-tickets';\nconst getContactTickets = async (attrs: any = {}) => {\n const contactTickets = (await getComponent(\n TAG,\n attrs,\n '',\n 400\n )) as ContactTickets;\n // wait for our contact to load\n await waitUntil(() => !!contactTickets.data);\n return contactTickets;\n};\n\nmockNow('2023-04-07T00:00:00.000-00:00');\ndescribe('temba-contact-tickets', () => {\n beforeEach(() => {\n mockGET(\n /\\/api\\/v2\\/tickets.json\\?contact=24d64810-3315-4ff5-be85-48e3fe055bf9/,\n '/test-assets/contacts/contact-tickets.json'\n );\n loadStore();\n });\n\n it('renders default', async () => {\n const tickets: ContactTickets = await getContactTickets({\n contact: '24d64810-3315-4ff5-be85-48e3fe055bf9',\n agent: 'admin1@nyaruka.com',\n });\n assert.instanceOf(tickets, ContactTickets);\n await assertScreenshot('contacts/tickets', getClip(tickets));\n });\n\n it('shows assignment picker', async () => {\n const tickets: ContactTickets = await getContactTickets({\n contact: '24d64810-3315-4ff5-be85-48e3fe055bf9',\n agent: 'admin1@nyaruka.com',\n });\n\n // click on the avatar element\n (tickets.shadowRoot.querySelector('temba-user') as HTMLDivElement).click();\n assert.instanceOf(tickets, ContactTickets);\n await assertScreenshot('contacts/tickets-assignment', getClip(tickets));\n });\n});\n"]}
1
+ {"version":3,"file":"temba-contact-tickets.test.js","sourceRoot":"","sources":["../../test/temba-contact-tickets.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,YAAY,EACZ,SAAS,EACT,OAAO,EACP,OAAO,EACR,MAAM,cAAc,CAAC;AAEtB,MAAM,GAAG,GAAG,uBAAuB,CAAC;AACpC,MAAM,iBAAiB,GAAG,KAAK,EAAE,QAAa,EAAE,EAAE,EAAE;IAClD,MAAM,cAAc,GAAG,CAAC,MAAM,YAAY,CACxC,GAAG,EACH,KAAK,EACL,EAAE,EACF,GAAG,CACJ,CAAmB,CAAC;IACrB,+BAA+B;IAC/B,MAAM,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEF,OAAO,CAAC,+BAA+B,CAAC,CAAC;AACzC,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,CACL,uEAAuE,EACvE,4CAA4C,CAC7C,CAAC;QACF,SAAS,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,OAAO,GAAmB,MAAM,iBAAiB,CAAC;YACtD,OAAO,EAAE,sCAAsC;YAC/C,KAAK,EAAE,oBAAoB;SAC5B,CAAC,CAAC;QACH,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC3C,MAAM,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,OAAO,GAAmB,MAAM,iBAAiB,CAAC;YACtD,OAAO,EAAE,sCAAsC;YAC/C,KAAK,EAAE,oBAAoB;SAC5B,CAAC,CAAC;QAEH,8BAA8B;QAC7B,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,YAAY,CAAoB,CAAC,KAAK,EAAE,CAAC;QAC3E,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC3C,MAAM,gBAAgB,CAAC,6BAA6B,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { assert, waitUntil } from '@open-wc/testing';\nimport { ContactTickets } from '../src/contacts/ContactTickets';\nimport {\n assertScreenshot,\n getClip,\n getComponent,\n loadStore,\n mockGET,\n mockNow\n} from './utils.test';\n\nconst TAG = 'temba-contact-tickets';\nconst getContactTickets = async (attrs: any = {}) => {\n const contactTickets = (await getComponent(\n TAG,\n attrs,\n '',\n 400\n )) as ContactTickets;\n // wait for our contact to load\n await waitUntil(() => !!contactTickets.data);\n return contactTickets;\n};\n\nmockNow('2023-04-07T00:00:00.000-00:00');\ndescribe('temba-contact-tickets', () => {\n beforeEach(() => {\n mockGET(\n /\\/api\\/v2\\/tickets.json\\?contact=24d64810-3315-4ff5-be85-48e3fe055bf9/,\n '/test-assets/contacts/contact-tickets.json'\n );\n loadStore();\n });\n\n it('renders default', async () => {\n const tickets: ContactTickets = await getContactTickets({\n contact: '24d64810-3315-4ff5-be85-48e3fe055bf9',\n agent: 'admin1@nyaruka.com'\n });\n assert.instanceOf(tickets, ContactTickets);\n await assertScreenshot('contacts/tickets', getClip(tickets));\n });\n\n it('shows assignment picker', async () => {\n const tickets: ContactTickets = await getContactTickets({\n contact: '24d64810-3315-4ff5-be85-48e3fe055bf9',\n agent: 'admin1@nyaruka.com'\n });\n\n // click on the avatar element\n (tickets.shadowRoot.querySelector('temba-user') as HTMLDivElement).click();\n assert.instanceOf(tickets, ContactTickets);\n await assertScreenshot('contacts/tickets-assignment', getClip(tickets));\n });\n});\n"]}
@@ -10,7 +10,7 @@ const getContentMenu = async (attrs = {}, width = 0) => {
10
10
  return contentMenu;
11
11
  }
12
12
  // if we have an endpoint, wait for a loaded event before returning
13
- return new Promise(resolve => {
13
+ return new Promise((resolve) => {
14
14
  contentMenu.addEventListener(CustomEventType.Loaded, async () => {
15
15
  resolve(contentMenu);
16
16
  }, { once: true });
@@ -24,7 +24,7 @@ describe('temba-content-menu', () => {
24
24
  });
25
25
  it('with 1+ items and 1+ buttons', async () => {
26
26
  const contentMenu = await getContentMenu({
27
- endpoint: '/test-assets/list/content-menu-contact-read.json',
27
+ endpoint: '/test-assets/list/content-menu-contact-read.json'
28
28
  });
29
29
  expect(contentMenu.items.length).equals(5);
30
30
  expect(contentMenu.buttons.length).equals(1);
@@ -32,7 +32,7 @@ describe('temba-content-menu', () => {
32
32
  });
33
33
  it('with 1+ items and 0 buttons', async () => {
34
34
  const contentMenu = await getContentMenu({
35
- endpoint: '/test-assets/list/content-menu-archived-contacts.json',
35
+ endpoint: '/test-assets/list/content-menu-archived-contacts.json'
36
36
  });
37
37
  expect(contentMenu.items.length).equals(1);
38
38
  expect(contentMenu.buttons.length).equals(0);
@@ -40,7 +40,7 @@ describe('temba-content-menu', () => {
40
40
  });
41
41
  it('with 0 items and 1+ buttons', async () => {
42
42
  const contentMenu = await getContentMenu({
43
- endpoint: '/test-assets/list/content-menu-new-campaign.json',
43
+ endpoint: '/test-assets/list/content-menu-new-campaign.json'
44
44
  });
45
45
  expect(contentMenu.items.length).equals(0);
46
46
  expect(contentMenu.buttons.length).equals(1);
@@ -48,7 +48,7 @@ describe('temba-content-menu', () => {
48
48
  });
49
49
  it('bad endpoint', async () => {
50
50
  const contentMenu = await getContentMenu({
51
- endpoint: '/test-assets/list/content-menu-bad-endpoint.json',
51
+ endpoint: '/test-assets/list/content-menu-bad-endpoint.json'
52
52
  });
53
53
  expect(contentMenu.items.length).equals(0);
54
54
  expect(contentMenu.buttons.length).equals(0);
@@ -56,14 +56,14 @@ describe('temba-content-menu', () => {
56
56
  it('is spa page', async () => {
57
57
  const contentMenu = await getContentMenu({
58
58
  endpoint: '/test-assets/list/content-menu-contact-read.json',
59
- legacy: 0,
59
+ legacy: 0
60
60
  });
61
61
  expect(contentMenu.legacy).equals(0);
62
62
  });
63
63
  it('is legacy page', async () => {
64
64
  const contentMenu = await getContentMenu({
65
65
  endpoint: '/test-assets/list/content-menu-contact-read.json',
66
- legacy: 1,
66
+ legacy: 1
67
67
  });
68
68
  expect(contentMenu.legacy).equals(1);
69
69
  });
@@ -1 +1 @@
1
- {"version":3,"file":"temba-content-menu.test.js","sourceRoot":"","sources":["../../test/temba-content-menu.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert, expect } from '@open-wc/testing';\nimport { CustomEventType } from '../src/interfaces';\nimport { ContentMenu } from '../src/list/ContentMenu';\nimport { assertScreenshot, getClip, getComponent } from './utils.test';\n\nconst TAG = 'temba-content-menu';\nconst getContentMenu = async (attrs: any = {}, width = 0) => {\n const contentMenu = (await getComponent(\n TAG,\n attrs,\n '',\n width,\n 0,\n 'display:inline-block'\n )) as ContentMenu;\n\n // return right away if we don't have an endpoint\n if (!contentMenu.endpoint) {\n return contentMenu;\n }\n\n // if we have an endpoint, wait for a loaded event before returning\n return new Promise<ContentMenu>(resolve => {\n contentMenu.addEventListener(\n CustomEventType.Loaded,\n async () => {\n resolve(contentMenu);\n },\n { once: true }\n );\n });\n};\n\ndescribe('temba-content-menu', () => {\n it('can initially be created without endpoint', async () => {\n const contentMenu: ContentMenu = await getContentMenu();\n assert.instanceOf(contentMenu, ContentMenu);\n expect(contentMenu.endpoint).is.undefined;\n });\n\n it('with 1+ items and 1+ buttons', async () => {\n const contentMenu: ContentMenu = await getContentMenu({\n endpoint: '/test-assets/list/content-menu-contact-read.json',\n });\n\n expect(contentMenu.items.length).equals(5);\n expect(contentMenu.buttons.length).equals(1);\n await assertScreenshot(\n 'content-menu/items-and-buttons',\n getClip(contentMenu)\n );\n });\n\n it('with 1+ items and 0 buttons', async () => {\n const contentMenu: ContentMenu = await getContentMenu({\n endpoint: '/test-assets/list/content-menu-archived-contacts.json',\n });\n\n expect(contentMenu.items.length).equals(1);\n expect(contentMenu.buttons.length).equals(0);\n await assertScreenshot(\n 'content-menu/item-no-buttons',\n getClip(contentMenu)\n );\n });\n\n it('with 0 items and 1+ buttons', async () => {\n const contentMenu: ContentMenu = await getContentMenu({\n endpoint: '/test-assets/list/content-menu-new-campaign.json',\n });\n\n expect(contentMenu.items.length).equals(0);\n expect(contentMenu.buttons.length).equals(1);\n await assertScreenshot(\n 'content-menu/button-no-items',\n getClip(contentMenu)\n );\n });\n\n it('bad endpoint', async () => {\n const contentMenu: ContentMenu = await getContentMenu({\n endpoint: '/test-assets/list/content-menu-bad-endpoint.json',\n });\n\n expect(contentMenu.items.length).equals(0);\n expect(contentMenu.buttons.length).equals(0);\n });\n\n it('is spa page', async () => {\n const contentMenu: ContentMenu = await getContentMenu({\n endpoint: '/test-assets/list/content-menu-contact-read.json',\n legacy: 0,\n });\n expect(contentMenu.legacy).equals(0);\n });\n\n it('is legacy page', async () => {\n const contentMenu: ContentMenu = await getContentMenu({\n endpoint: '/test-assets/list/content-menu-contact-read.json',\n legacy: 1,\n });\n expect(contentMenu.legacy).equals(1);\n });\n});\n"]}
1
+ {"version":3,"file":"temba-content-menu.test.js","sourceRoot":"","sources":["../../test/temba-content-menu.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert, expect } from '@open-wc/testing';\nimport { CustomEventType } from '../src/interfaces';\nimport { ContentMenu } from '../src/list/ContentMenu';\nimport { assertScreenshot, getClip, getComponent } from './utils.test';\n\nconst TAG = 'temba-content-menu';\nconst getContentMenu = async (attrs: any = {}, width = 0) => {\n const contentMenu = (await getComponent(\n TAG,\n attrs,\n '',\n width,\n 0,\n 'display:inline-block'\n )) as ContentMenu;\n\n // return right away if we don't have an endpoint\n if (!contentMenu.endpoint) {\n return contentMenu;\n }\n\n // if we have an endpoint, wait for a loaded event before returning\n return new Promise<ContentMenu>((resolve) => {\n contentMenu.addEventListener(\n CustomEventType.Loaded,\n async () => {\n resolve(contentMenu);\n },\n { once: true }\n );\n });\n};\n\ndescribe('temba-content-menu', () => {\n it('can initially be created without endpoint', async () => {\n const contentMenu: ContentMenu = await getContentMenu();\n assert.instanceOf(contentMenu, ContentMenu);\n expect(contentMenu.endpoint).is.undefined;\n });\n\n it('with 1+ items and 1+ buttons', async () => {\n const contentMenu: ContentMenu = await getContentMenu({\n endpoint: '/test-assets/list/content-menu-contact-read.json'\n });\n\n expect(contentMenu.items.length).equals(5);\n expect(contentMenu.buttons.length).equals(1);\n await assertScreenshot(\n 'content-menu/items-and-buttons',\n getClip(contentMenu)\n );\n });\n\n it('with 1+ items and 0 buttons', async () => {\n const contentMenu: ContentMenu = await getContentMenu({\n endpoint: '/test-assets/list/content-menu-archived-contacts.json'\n });\n\n expect(contentMenu.items.length).equals(1);\n expect(contentMenu.buttons.length).equals(0);\n await assertScreenshot(\n 'content-menu/item-no-buttons',\n getClip(contentMenu)\n );\n });\n\n it('with 0 items and 1+ buttons', async () => {\n const contentMenu: ContentMenu = await getContentMenu({\n endpoint: '/test-assets/list/content-menu-new-campaign.json'\n });\n\n expect(contentMenu.items.length).equals(0);\n expect(contentMenu.buttons.length).equals(1);\n await assertScreenshot(\n 'content-menu/button-no-items',\n getClip(contentMenu)\n );\n });\n\n it('bad endpoint', async () => {\n const contentMenu: ContentMenu = await getContentMenu({\n endpoint: '/test-assets/list/content-menu-bad-endpoint.json'\n });\n\n expect(contentMenu.items.length).equals(0);\n expect(contentMenu.buttons.length).equals(0);\n });\n\n it('is spa page', async () => {\n const contentMenu: ContentMenu = await getContentMenu({\n endpoint: '/test-assets/list/content-menu-contact-read.json',\n legacy: 0\n });\n expect(contentMenu.legacy).equals(0);\n });\n\n it('is legacy page', async () => {\n const contentMenu: ContentMenu = await getContentMenu({\n endpoint: '/test-assets/list/content-menu-contact-read.json',\n legacy: 1\n });\n expect(contentMenu.legacy).equals(1);\n });\n});\n"]}
@@ -1,5 +1,5 @@
1
1
  import { html, fixture, expect } from '@open-wc/testing';
2
- import { assertScreenshot, getClip, getComponent, loadStore, mockNow, } from './utils.test';
2
+ import { assertScreenshot, getClip, getComponent, loadStore, mockNow } from './utils.test';
3
3
  const TAG = 'temba-date';
4
4
  export const getDate = async (attrs = {}) => {
5
5
  attrs['width'] = 100;
@@ -19,7 +19,7 @@ describe('temba-date', () => {
19
19
  it('renders duration', async () => {
20
20
  const date = await getDate({
21
21
  value: '1978-11-18T02:22:00.000000-07:00',
22
- display: 'duration',
22
+ display: 'duration'
23
23
  });
24
24
  const dateString = date.shadowRoot.querySelector('.date').innerText;
25
25
  await assertScreenshot('date/duration', getClip(date));
@@ -28,7 +28,7 @@ describe('temba-date', () => {
28
28
  it('renders datetime', async () => {
29
29
  const date = await getDate({
30
30
  value: '1978-11-18T02:22:00.000000-07:00',
31
- display: 'datetime',
31
+ display: 'datetime'
32
32
  });
33
33
  const dateString = date.shadowRoot.querySelector('.date').innerText;
34
34
  await assertScreenshot('date/datetime', getClip(date));
@@ -1 +1 @@
1
- {"version":3,"file":"temba-date.test.js","sourceRoot":"","sources":["../../test/temba-date.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,YAAY,EACZ,SAAS,EACT,OAAO,GACR,MAAM,cAAc,CAAC;AAEtB,MAAM,GAAG,GAAG,YAAY,CAAC;AAEzB,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,QAAa,EAAE,EAAE,EAAE;IAC/C,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;IACrB,OAAO,CAAC,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAc,CAAC;AACvD,CAAC,CAAC;AAEF,OAAO,CAAC,kCAAkC,CAAC,CAAC;AAE5C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,UAAU,CAAC,GAAG,EAAE;QACd,SAAS,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC,CAAC;QAC1E,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CACtC,CAAC,SAAS,CAAC;QAEZ,MAAM,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;YACzB,KAAK,EAAE,kCAAkC;YACzC,OAAO,EAAE,UAAU;SACpB,CAAC,CAAC;QACH,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CACtC,CAAC,SAAS,CAAC;QAEZ,MAAM,gBAAgB,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;YACzB,KAAK,EAAE,kCAAkC;YACzC,OAAO,EAAE,UAAU;SACpB,CAAC,CAAC;QACH,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CACtC,CAAC,SAAS,CAAC;QAEZ,MAAM,gBAAgB,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,EAAE,GAAgB,MAAM,OAAO,CAAC,IAAI,CAAA;;;;;;KAMzC,CAAC,CAAC;QAEH,MAAM,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\nimport { TembaDate } from '../src/date/TembaDate';\nimport {\n assertScreenshot,\n getClip,\n getComponent,\n loadStore,\n mockNow,\n} from './utils.test';\n\nconst TAG = 'temba-date';\n\nexport const getDate = async (attrs: any = {}) => {\n attrs['width'] = 100;\n return (await getComponent(TAG, attrs)) as TembaDate;\n};\n\nmockNow('2022-12-02T21:00:00.000000-07:00');\n\ndescribe('temba-date', () => {\n beforeEach(() => {\n loadStore();\n });\n\n it('renders default', async () => {\n const date = await getDate({ value: '1978-11-18T02:22:00.000000-07:00' });\n const dateString = (\n date.shadowRoot.querySelector('.date') as HTMLSpanElement\n ).innerText;\n\n await assertScreenshot('date/date', getClip(date));\n expect(dateString).to.equal('11/18/1978');\n });\n\n it('renders duration', async () => {\n const date = await getDate({\n value: '1978-11-18T02:22:00.000000-07:00',\n display: 'duration',\n });\n const dateString = (\n date.shadowRoot.querySelector('.date') as HTMLSpanElement\n ).innerText;\n\n await assertScreenshot('date/duration', getClip(date));\n expect(dateString).to.equal('44 years ago');\n });\n\n it('renders datetime', async () => {\n const date = await getDate({\n value: '1978-11-18T02:22:00.000000-07:00',\n display: 'datetime',\n });\n const dateString = (\n date.shadowRoot.querySelector('.date') as HTMLSpanElement\n ).innerText;\n\n await assertScreenshot('date/datetime', getClip(date));\n expect(dateString).to.equal('11/18/1978, 9:22 AM');\n });\n\n it('renders inline', async () => {\n const el: HTMLElement = await fixture(html`\n <span\n >Your birthday is\n <temba-date value=\"1978-11-18T02:22:00.000000-07:00\"></temba-date\n >!</span\n >\n `);\n\n await assertScreenshot('date/date-inline', getClip(el));\n });\n});\n"]}
1
+ {"version":3,"file":"temba-date.test.js","sourceRoot":"","sources":["../../test/temba-date.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EACL,gBAAgB,EAChB,OAAO,EACP,YAAY,EACZ,SAAS,EACT,OAAO,EACR,MAAM,cAAc,CAAC;AAEtB,MAAM,GAAG,GAAG,YAAY,CAAC;AAEzB,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,QAAa,EAAE,EAAE,EAAE;IAC/C,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;IACrB,OAAO,CAAC,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAc,CAAC;AACvD,CAAC,CAAC;AAEF,OAAO,CAAC,kCAAkC,CAAC,CAAC;AAE5C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,UAAU,CAAC,GAAG,EAAE;QACd,SAAS,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC,CAAC;QAC1E,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CACtC,CAAC,SAAS,CAAC;QAEZ,MAAM,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;YACzB,KAAK,EAAE,kCAAkC;YACzC,OAAO,EAAE,UAAU;SACpB,CAAC,CAAC;QACH,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CACtC,CAAC,SAAS,CAAC;QAEZ,MAAM,gBAAgB,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC;YACzB,KAAK,EAAE,kCAAkC;YACzC,OAAO,EAAE,UAAU;SACpB,CAAC,CAAC;QACH,MAAM,UAAU,GACd,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CACtC,CAAC,SAAS,CAAC;QAEZ,MAAM,gBAAgB,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,EAAE,GAAgB,MAAM,OAAO,CAAC,IAAI,CAAA;;;;;;KAMzC,CAAC,CAAC;QAEH,MAAM,gBAAgB,CAAC,kBAAkB,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { html, fixture, expect } from '@open-wc/testing';\nimport { TembaDate } from '../src/date/TembaDate';\nimport {\n assertScreenshot,\n getClip,\n getComponent,\n loadStore,\n mockNow\n} from './utils.test';\n\nconst TAG = 'temba-date';\n\nexport const getDate = async (attrs: any = {}) => {\n attrs['width'] = 100;\n return (await getComponent(TAG, attrs)) as TembaDate;\n};\n\nmockNow('2022-12-02T21:00:00.000000-07:00');\n\ndescribe('temba-date', () => {\n beforeEach(() => {\n loadStore();\n });\n\n it('renders default', async () => {\n const date = await getDate({ value: '1978-11-18T02:22:00.000000-07:00' });\n const dateString = (\n date.shadowRoot.querySelector('.date') as HTMLSpanElement\n ).innerText;\n\n await assertScreenshot('date/date', getClip(date));\n expect(dateString).to.equal('11/18/1978');\n });\n\n it('renders duration', async () => {\n const date = await getDate({\n value: '1978-11-18T02:22:00.000000-07:00',\n display: 'duration'\n });\n const dateString = (\n date.shadowRoot.querySelector('.date') as HTMLSpanElement\n ).innerText;\n\n await assertScreenshot('date/duration', getClip(date));\n expect(dateString).to.equal('44 years ago');\n });\n\n it('renders datetime', async () => {\n const date = await getDate({\n value: '1978-11-18T02:22:00.000000-07:00',\n display: 'datetime'\n });\n const dateString = (\n date.shadowRoot.querySelector('.date') as HTMLSpanElement\n ).innerText;\n\n await assertScreenshot('date/datetime', getClip(date));\n expect(dateString).to.equal('11/18/1978, 9:22 AM');\n });\n\n it('renders inline', async () => {\n const el: HTMLElement = await fixture(html`\n <span\n >Your birthday is\n <temba-date value=\"1978-11-18T02:22:00.000000-07:00\"></temba-date\n >!</span\n >\n `);\n\n await assertScreenshot('date/date-inline', getClip(el));\n });\n});\n"]}
@@ -35,7 +35,7 @@ describe('temba-datepicker', () => {
35
35
  const picker = await createPicker(getPickerHTML({
36
36
  value: '2020-01-20T14:00Z',
37
37
  timezone: 'America/New_York',
38
- time: true,
38
+ time: true
39
39
  }));
40
40
  expect(picker.timezone).to.equal('America/New_York');
41
41
  // we should display in the eastern timezone
@@ -1 +1 @@
1
- {"version":3,"file":"temba-datepicker.test.js","sourceRoot":"","sources":["../../test/temba-datepicker.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,UAAU,MAAM,8BAA8B,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAExE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAa,EAAE,EAAE,EAAE;IAC/C,OAAO,qBAAqB,aAAa,CAAC,KAAK,CAAC,sBAAsB,CAAC;AACzE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,GAAW,EAAE,EAAE;IAChD,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACjD,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAClD,UAAU,CAAC,EAAE,GAAG,QAAQ,CAAC;IACzB,MAAM,MAAM,GAAe,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,MAAM,GAAe,MAAM,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACtC,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,MAAM,GAAe,MAAM,YAAY,CAC3C,aAAa,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAC9B,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QACtC,kEAAkE;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,MAAM,GAAe,MAAM,YAAY,CAC3C,aAAa,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAC1D,CAAC;QAEF,+DAA+D;QAC/D,2CAA2C;QAE3C,0CAA0C;QAC1C,uEAAuE;QAEvE,gEAAgE;QAChE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,MAAM,GAAe,MAAM,YAAY,CAC3C,aAAa,CAAC;YACZ,KAAK,EAAE,mBAAmB;YAC1B,QAAQ,EAAE,kBAAkB;YAC5B,IAAI,EAAE,IAAI;SACX,CAAC,CACH,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAErD,4CAA4C;QAC5C,MAAM,gBAAgB,CAAC,6BAA6B,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,MAAM,GAAe,MAAM,YAAY,CAC3C,aAAa,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CACxE,CAAC;QAEF,4CAA4C;QAC5C,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAE7C,uBAAuB;QACvB,MAAM,CAAC,IAAI,EAAE,CAAC;QAEd,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1D,0EAA0E;IAC5E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,MAAM,GAAe,MAAM,YAAY,CAC3C,aAAa,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CACrD,CAAC;QAEF,4CAA4C;QAC5C,MAAM,KAAK,CAAC,SAAS,CAAC,CAAC;QACvB,MAAM,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QAE7C,uBAAuB;QACvB,MAAM,CAAC,IAAI,EAAE,CAAC;QAEd,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,gBAAgB,CAAC,kCAAkC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,MAAM,GAAe,MAAM,YAAY,CAC3C,aAAa,CAAC,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,CAChD,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC5C,MAAM,gBAAgB,CAAC,gCAAgC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { fixture, expect, assert } from '@open-wc/testing';\nimport DatePicker from '../src/datepicker/DatePicker';\nimport { assertScreenshot, getAttributes, getClip } from './utils.test';\n\nexport const getPickerHTML = (attrs: any = {}) => {\n return `<temba-datepicker ${getAttributes(attrs)}></temba-datepicker>`;\n};\n\nexport const createPicker = async (def: string) => {\n const parentNode = document.createElement('div');\n parentNode.setAttribute('style', 'width: 400px;');\n parentNode.id = 'parent';\n const picker: DatePicker = await fixture(def, { parentNode });\n return picker;\n};\n\ndescribe('temba-datepicker', () => {\n it('can create a date picker', async () => {\n const picker: DatePicker = await createPicker(getPickerHTML());\n assert.instanceOf(picker, DatePicker);\n await assertScreenshot('datepicker/date', getClip(picker));\n });\n\n it('can create a datetime picker', async () => {\n const picker: DatePicker = await createPicker(\n getPickerHTML({ time: true })\n );\n assert.instanceOf(picker, DatePicker);\n // await assertScreenshot('datepicker/datetime', getClip(picker));\n });\n\n it('can be initialized with an iso date', async () => {\n const picker: DatePicker = await createPicker(\n getPickerHTML({ value: '2020-01-20T14:00Z', time: true })\n );\n\n // default should be browser locale, which for our tests is UTC\n // expect(picker.timezone).to.equal('UTC');\n\n // we should display in the current locale\n // await assertScreenshot('datepicker/initial-value', getClip(picker));\n\n // but our value should be our original value as a full iso date\n expect(picker.value).is.equal('2020-01-20T14:00:00.000Z');\n });\n\n it('can be initialized with a timezone', async () => {\n const picker: DatePicker = await createPicker(\n getPickerHTML({\n value: '2020-01-20T14:00Z',\n timezone: 'America/New_York',\n time: true,\n })\n );\n\n expect(picker.timezone).to.equal('America/New_York');\n\n // we should display in the eastern timezone\n await assertScreenshot('datepicker/initial-timezone', getClip(picker));\n expect(picker.value).to.equal('2020-01-20T14:00:00.000Z');\n });\n\n it('can be updated via keyboard', async () => {\n const picker: DatePicker = await createPicker(\n getPickerHTML({ value: '2020-01-20T14:00Z', id: 'picker', time: true })\n );\n\n // click into the picker and update the date\n await click('#picker');\n await typeInto('#picker', '01202024', false);\n\n // click away to update\n picker.blur();\n\n expect(picker.value).to.equal('2024-01-20T14:00:00.000Z');\n // await assertScreenshot('datepicker/updated-keyboard', getClip(picker));\n });\n\n it('can update date via keyboard', async () => {\n const picker: DatePicker = await createPicker(\n getPickerHTML({ value: '2020-01-20', id: 'picker' })\n );\n\n // click into the picker and update the date\n await click('#picker');\n await typeInto('#picker', '12252024', false);\n\n // click away to update\n picker.blur();\n\n expect(picker.value).to.equal('2024-12-25');\n await assertScreenshot('datepicker/updated-keyboard-date', getClip(picker));\n });\n\n it('truncates time on dates', async () => {\n const picker: DatePicker = await createPicker(\n getPickerHTML({ value: '2020-01-20 00:00:00' })\n );\n\n expect(picker.value).to.equal('2020-01-20');\n await assertScreenshot('datepicker/date-truncated-time', getClip(picker));\n });\n});\n"]}
1
+ {"version":3,"file":"temba-datepicker.test.js","sourceRoot":"","sources":["../../test/temba-datepicker.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { fixture, expect, assert } from '@open-wc/testing';\nimport DatePicker from '../src/datepicker/DatePicker';\nimport { assertScreenshot, getAttributes, getClip } from './utils.test';\n\nexport const getPickerHTML = (attrs: any = {}) => {\n return `<temba-datepicker ${getAttributes(attrs)}></temba-datepicker>`;\n};\n\nexport const createPicker = async (def: string) => {\n const parentNode = document.createElement('div');\n parentNode.setAttribute('style', 'width: 400px;');\n parentNode.id = 'parent';\n const picker: DatePicker = await fixture(def, { parentNode });\n return picker;\n};\n\ndescribe('temba-datepicker', () => {\n it('can create a date picker', async () => {\n const picker: DatePicker = await createPicker(getPickerHTML());\n assert.instanceOf(picker, DatePicker);\n await assertScreenshot('datepicker/date', getClip(picker));\n });\n\n it('can create a datetime picker', async () => {\n const picker: DatePicker = await createPicker(\n getPickerHTML({ time: true })\n );\n assert.instanceOf(picker, DatePicker);\n // await assertScreenshot('datepicker/datetime', getClip(picker));\n });\n\n it('can be initialized with an iso date', async () => {\n const picker: DatePicker = await createPicker(\n getPickerHTML({ value: '2020-01-20T14:00Z', time: true })\n );\n\n // default should be browser locale, which for our tests is UTC\n // expect(picker.timezone).to.equal('UTC');\n\n // we should display in the current locale\n // await assertScreenshot('datepicker/initial-value', getClip(picker));\n\n // but our value should be our original value as a full iso date\n expect(picker.value).is.equal('2020-01-20T14:00:00.000Z');\n });\n\n it('can be initialized with a timezone', async () => {\n const picker: DatePicker = await createPicker(\n getPickerHTML({\n value: '2020-01-20T14:00Z',\n timezone: 'America/New_York',\n time: true\n })\n );\n\n expect(picker.timezone).to.equal('America/New_York');\n\n // we should display in the eastern timezone\n await assertScreenshot('datepicker/initial-timezone', getClip(picker));\n expect(picker.value).to.equal('2020-01-20T14:00:00.000Z');\n });\n\n it('can be updated via keyboard', async () => {\n const picker: DatePicker = await createPicker(\n getPickerHTML({ value: '2020-01-20T14:00Z', id: 'picker', time: true })\n );\n\n // click into the picker and update the date\n await click('#picker');\n await typeInto('#picker', '01202024', false);\n\n // click away to update\n picker.blur();\n\n expect(picker.value).to.equal('2024-01-20T14:00:00.000Z');\n // await assertScreenshot('datepicker/updated-keyboard', getClip(picker));\n });\n\n it('can update date via keyboard', async () => {\n const picker: DatePicker = await createPicker(\n getPickerHTML({ value: '2020-01-20', id: 'picker' })\n );\n\n // click into the picker and update the date\n await click('#picker');\n await typeInto('#picker', '12252024', false);\n\n // click away to update\n picker.blur();\n\n expect(picker.value).to.equal('2024-12-25');\n await assertScreenshot('datepicker/updated-keyboard-date', getClip(picker));\n });\n\n it('truncates time on dates', async () => {\n const picker: DatePicker = await createPicker(\n getPickerHTML({ value: '2020-01-20 00:00:00' })\n );\n\n expect(picker.value).to.equal('2020-01-20');\n await assertScreenshot('datepicker/date-truncated-time', getClip(picker));\n });\n});\n"]}
@@ -1,7 +1,5 @@
1
1
  import { expect, fixture } from '@open-wc/testing';
2
- import { html } from 'lit';
3
- import { assertScreenshot, getAttributes, getClip, loadStore, } from './utils.test';
4
- const BORING_LIST = html `<temba-field-manager />`;
2
+ import { assertScreenshot, getAttributes, getClip, loadStore } from './utils.test';
5
3
  export const getEle = async (attrs = {}) => {
6
4
  const fm = `<temba-field-manager
7
5
  ${getAttributes(attrs)}
@@ -1 +1 @@
1
- {"version":3,"file":"temba-field-manager.test.js","sourceRoot":"","sources":["../../test/temba-field-manager.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport { FieldManager } from '../src/fields/FieldManager';\nimport { TextInput } from '../src/textinput/TextInput';\nimport {\n assertScreenshot,\n getAttributes,\n getClip,\n loadStore,\n} from './utils.test';\n\nconst BORING_LIST = html`<temba-field-manager />`;\n\nexport const getEle = async (attrs: any = {}) => {\n const fm = `<temba-field-manager\n ${getAttributes(attrs)}\n ></temba-field-manager>`;\n const parentNode = document.createElement('div');\n parentNode.setAttribute('style', 'width: 600px;');\n return (await fixture(fm, { parentNode })) as FieldManager;\n};\n\ndescribe('temba-field-manager', () => {\n it('renders default', async () => {\n await loadStore();\n const fm: FieldManager = await getEle();\n await assertScreenshot('list/fields', getClip(fm));\n });\n\n it('filters', async () => {\n await loadStore();\n const fm: FieldManager = await getEle();\n (fm.shadowRoot.querySelector('#search') as TextInput).focus();\n fm.query = 'at';\n await fm.updateComplete;\n expect(fm.featuredFields.length).to.equal(1);\n expect(fm.otherFieldKeys.length).to.equal(2);\n await assertScreenshot('list/fields-filtered', getClip(fm));\n });\n\n it('hovers', async () => {\n await loadStore();\n const fm: FieldManager = await getEle();\n\n // hover over the first item\n const first = fm.shadowRoot.querySelector('.sortable') as HTMLDivElement;\n const bounds = first.getBoundingClientRect();\n await moveMouse(bounds.left + 20, bounds.top + 10);\n await assertScreenshot('list/fields-hovered', getClip(fm));\n });\n\n it('drags featured down', async () => {\n await loadStore();\n const fm: FieldManager = await getEle();\n const first = fm.shadowRoot.querySelector('.sortable') as HTMLDivElement;\n const bounds = first.getBoundingClientRect();\n\n // drag our item\n await moveMouse(bounds.left + 20, bounds.top + 10);\n await mouseDown();\n await moveMouse(bounds.left + 30, bounds.bottom + 20);\n await assertScreenshot('list/fields-dragging', getClip(fm));\n });\n});\n"]}
1
+ {"version":3,"file":"temba-field-manager.test.js","sourceRoot":"","sources":["../../test/temba-field-manager.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { FieldManager } from '../src/fields/FieldManager';\nimport { TextInput } from '../src/textinput/TextInput';\nimport {\n assertScreenshot,\n getAttributes,\n getClip,\n loadStore\n} from './utils.test';\n\nexport const getEle = async (attrs: any = {}) => {\n const fm = `<temba-field-manager\n ${getAttributes(attrs)}\n ></temba-field-manager>`;\n const parentNode = document.createElement('div');\n parentNode.setAttribute('style', 'width: 600px;');\n return (await fixture(fm, { parentNode })) as FieldManager;\n};\n\ndescribe('temba-field-manager', () => {\n it('renders default', async () => {\n await loadStore();\n const fm: FieldManager = await getEle();\n await assertScreenshot('list/fields', getClip(fm));\n });\n\n it('filters', async () => {\n await loadStore();\n const fm: FieldManager = await getEle();\n (fm.shadowRoot.querySelector('#search') as TextInput).focus();\n fm.query = 'at';\n await fm.updateComplete;\n expect(fm.featuredFields.length).to.equal(1);\n expect(fm.otherFieldKeys.length).to.equal(2);\n await assertScreenshot('list/fields-filtered', getClip(fm));\n });\n\n it('hovers', async () => {\n await loadStore();\n const fm: FieldManager = await getEle();\n\n // hover over the first item\n const first = fm.shadowRoot.querySelector('.sortable') as HTMLDivElement;\n const bounds = first.getBoundingClientRect();\n await moveMouse(bounds.left + 20, bounds.top + 10);\n await assertScreenshot('list/fields-hovered', getClip(fm));\n });\n\n it('drags featured down', async () => {\n await loadStore();\n const fm: FieldManager = await getEle();\n const first = fm.shadowRoot.querySelector('.sortable') as HTMLDivElement;\n const bounds = first.getBoundingClientRect();\n\n // drag our item\n await moveMouse(bounds.left + 20, bounds.top + 10);\n await mouseDown();\n await moveMouse(bounds.left + 30, bounds.bottom + 20);\n await assertScreenshot('list/fields-dragging', getClip(fm));\n });\n});\n"]}
@@ -18,28 +18,28 @@ describe('temba-label', () => {
18
18
  it('renders shadow', async () => {
19
19
  const label = await getLabel('Shadow', {
20
20
  icon: 'check',
21
- shadow: true,
21
+ shadow: true
22
22
  });
23
23
  await assertScreenshot('label/shadow', getClip(label));
24
24
  });
25
25
  it('renders primary', async () => {
26
26
  const label = await getLabel('Primary', {
27
27
  icon: 'check',
28
- primary: true,
28
+ primary: true
29
29
  });
30
30
  await assertScreenshot('label/primary', getClip(label));
31
31
  });
32
32
  it('renders secondary', async () => {
33
33
  const label = await getLabel('Secondary', {
34
34
  icon: 'check',
35
- secondary: true,
35
+ secondary: true
36
36
  });
37
37
  await assertScreenshot('label/secondary', getClip(label));
38
38
  });
39
39
  it('renders tertiary', async () => {
40
40
  const label = await getLabel('Tertiary', {
41
41
  icon: 'check',
42
- tertiary: true,
42
+ tertiary: true
43
43
  });
44
44
  await assertScreenshot('label/tertiary', getClip(label));
45
45
  });
@@ -50,7 +50,7 @@ describe('temba-label', () => {
50
50
  it('renders danger', async () => {
51
51
  const label = await getLabel('Danger', {
52
52
  icon: 'check',
53
- danger: true,
53
+ danger: true
54
54
  });
55
55
  await assertScreenshot('label/danger', getClip(label));
56
56
  });
@@ -58,7 +58,7 @@ describe('temba-label', () => {
58
58
  const label = await getLabel('Custom Orange', {
59
59
  icon: 'check',
60
60
  backgroundColor: 'rgb(240, 176, 29)',
61
- textColor: '#ffff',
61
+ textColor: '#ffff'
62
62
  });
63
63
  await assertScreenshot('label/custom', getClip(label));
64
64
  });
@@ -1 +1 @@
1
- {"version":3,"file":"temba-label.test.js","sourceRoot":"","sources":["../../test/temba-label.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { assert } from '@open-wc/testing';\nimport Label from '../src/label/Label';\nimport { assertScreenshot, getClip, getComponent } from './utils.test';\n\nconst TAG = 'temba-label';\nconst getLabel = async (slot, attrs: any = {}) => {\n return (await getComponent(TAG, attrs, slot)) as Label;\n};\n\ndescribe('temba-label', () => {\n it('renders default', async () => {\n const label: Label = await getLabel('Default');\n assert.instanceOf(label, Label);\n await assertScreenshot('label/no-icon', getClip(label));\n });\n\n it('renders icon', async () => {\n const label: Label = await getLabel('Default', { icon: 'check' });\n await assertScreenshot('label/default-icon', getClip(label));\n });\n\n it('renders shadow', async () => {\n const label: Label = await getLabel('Shadow', {\n icon: 'check',\n shadow: true,\n });\n await assertScreenshot('label/shadow', getClip(label));\n });\n\n it('renders primary', async () => {\n const label: Label = await getLabel('Primary', {\n icon: 'check',\n primary: true,\n });\n await assertScreenshot('label/primary', getClip(label));\n });\n\n it('renders secondary', async () => {\n const label: Label = await getLabel('Secondary', {\n icon: 'check',\n secondary: true,\n });\n await assertScreenshot('label/secondary', getClip(label));\n });\n\n it('renders tertiary', async () => {\n const label: Label = await getLabel('Tertiary', {\n icon: 'check',\n tertiary: true,\n });\n await assertScreenshot('label/tertiary', getClip(label));\n });\n\n it('renders dark', async () => {\n const label: Label = await getLabel('Dark', { icon: 'check', dark: true });\n await assertScreenshot('label/dark', getClip(label));\n });\n\n it('renders danger', async () => {\n const label: Label = await getLabel('Danger', {\n icon: 'check',\n danger: true,\n });\n await assertScreenshot('label/danger', getClip(label));\n });\n\n it('renders custom', async () => {\n const label: Label = await getLabel('Custom Orange', {\n icon: 'check',\n backgroundColor: 'rgb(240, 176, 29)',\n textColor: '#ffff',\n });\n await assertScreenshot('label/custom', getClip(label));\n });\n});\n"]}
1
+ {"version":3,"file":"temba-label.test.js","sourceRoot":"","sources":["../../test/temba-label.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,MAAM,oBAAoB,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEvE,MAAM,GAAG,GAAG,aAAa,CAAC;AAC1B,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAI,EAAE,QAAa,EAAE,EAAE,EAAE;IAC/C,OAAO,CAAC,MAAM,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAU,CAAC;AACzD,CAAC,CAAC;AAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,KAAK,GAAU,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChC,MAAM,gBAAgB,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC5B,MAAM,KAAK,GAAU,MAAM,QAAQ,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAClE,MAAM,gBAAgB,CAAC,oBAAoB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,KAAK,GAAU,MAAM,QAAQ,CAAC,QAAQ,EAAE;YAC5C,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QACH,MAAM,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,KAAK,GAAU,MAAM,QAAQ,CAAC,SAAS,EAAE;YAC7C,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,MAAM,gBAAgB,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,KAAK,GAAU,MAAM,QAAQ,CAAC,WAAW,EAAE;YAC/C,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QACH,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,KAAK,GAAU,MAAM,QAAQ,CAAC,UAAU,EAAE;YAC9C,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,MAAM,gBAAgB,CAAC,gBAAgB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC5B,MAAM,KAAK,GAAU,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,MAAM,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,KAAK,GAAU,MAAM,QAAQ,CAAC,QAAQ,EAAE;YAC5C,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QACH,MAAM,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,KAAK,GAAU,MAAM,QAAQ,CAAC,eAAe,EAAE;YACnD,IAAI,EAAE,OAAO;YACb,eAAe,EAAE,mBAAmB;YACpC,SAAS,EAAE,OAAO;SACnB,CAAC,CAAC;QACH,MAAM,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { assert } from '@open-wc/testing';\nimport Label from '../src/label/Label';\nimport { assertScreenshot, getClip, getComponent } from './utils.test';\n\nconst TAG = 'temba-label';\nconst getLabel = async (slot, attrs: any = {}) => {\n return (await getComponent(TAG, attrs, slot)) as Label;\n};\n\ndescribe('temba-label', () => {\n it('renders default', async () => {\n const label: Label = await getLabel('Default');\n assert.instanceOf(label, Label);\n await assertScreenshot('label/no-icon', getClip(label));\n });\n\n it('renders icon', async () => {\n const label: Label = await getLabel('Default', { icon: 'check' });\n await assertScreenshot('label/default-icon', getClip(label));\n });\n\n it('renders shadow', async () => {\n const label: Label = await getLabel('Shadow', {\n icon: 'check',\n shadow: true\n });\n await assertScreenshot('label/shadow', getClip(label));\n });\n\n it('renders primary', async () => {\n const label: Label = await getLabel('Primary', {\n icon: 'check',\n primary: true\n });\n await assertScreenshot('label/primary', getClip(label));\n });\n\n it('renders secondary', async () => {\n const label: Label = await getLabel('Secondary', {\n icon: 'check',\n secondary: true\n });\n await assertScreenshot('label/secondary', getClip(label));\n });\n\n it('renders tertiary', async () => {\n const label: Label = await getLabel('Tertiary', {\n icon: 'check',\n tertiary: true\n });\n await assertScreenshot('label/tertiary', getClip(label));\n });\n\n it('renders dark', async () => {\n const label: Label = await getLabel('Dark', { icon: 'check', dark: true });\n await assertScreenshot('label/dark', getClip(label));\n });\n\n it('renders danger', async () => {\n const label: Label = await getLabel('Danger', {\n icon: 'check',\n danger: true\n });\n await assertScreenshot('label/danger', getClip(label));\n });\n\n it('renders custom', async () => {\n const label: Label = await getLabel('Custom Orange', {\n icon: 'check',\n backgroundColor: 'rgb(240, 176, 29)',\n textColor: '#ffff'\n });\n await assertScreenshot('label/custom', getClip(label));\n });\n});\n"]}
@@ -13,7 +13,7 @@ describe('temba-lightbox', () => {
13
13
  x: 28,
14
14
  y: 28,
15
15
  width: 1024,
16
- height: 768,
16
+ height: 768
17
17
  });
18
18
  assert.instanceOf(lightbox, Lightbox);
19
19
  lightbox.showElement(img);
@@ -21,7 +21,7 @@ describe('temba-lightbox', () => {
21
21
  x: 28,
22
22
  y: 28,
23
23
  width: 1024,
24
- height: 768,
24
+ height: 768
25
25
  });
26
26
  });
27
27
  });
@@ -1 +1 @@
1
- {"version":3,"file":"temba-lightbox.test.js","sourceRoot":"","sources":["../../test/temba-lightbox.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE;IAC1B,OAAO,qDAAqD,CAAC;AAC/D,CAAC,CAAC;AAEF,kBAAkB;AAElB,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,QAAQ,GAAa,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,yEAAyE,CAC1E,CAAC;QAEF,MAAM,gBAAgB,CAAC,cAAc,EAAE;YACrC,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;QAEH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACtC,QAAQ,CAAC,WAAW,CAAC,GAAkB,CAAC,CAAC;QAEzC,MAAM,gBAAgB,CAAC,qBAAqB,EAAE;YAC5C,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { fixture, assert } from '@open-wc/testing';\nimport { Lightbox } from '../src/lightbox/Lightbox';\nimport { assertScreenshot } from './utils.test';\n\nexport const getHTML = () => {\n return `<temba-lightbox animationTime=\"0\"></temba-lightbox>`;\n};\n\n// let clock: any;\n\ndescribe('temba-lightbox', () => {\n it('can be created', async () => {\n const lightbox: Lightbox = await fixture(getHTML());\n const img = await fixture(\n \"<img style='width:100px;height:auto' src='./test-assets/img/meow.jpg'/>\"\n );\n\n await assertScreenshot('lightbox/img', {\n x: 28,\n y: 28,\n width: 1024,\n height: 768,\n });\n\n assert.instanceOf(lightbox, Lightbox);\n lightbox.showElement(img as HTMLElement);\n\n await assertScreenshot('lightbox/img-zoomed', {\n x: 28,\n y: 28,\n width: 1024,\n height: 768,\n });\n });\n});\n"]}
1
+ {"version":3,"file":"temba-lightbox.test.js","sourceRoot":"","sources":["../../test/temba-lightbox.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,EAAE;IAC1B,OAAO,qDAAqD,CAAC;AAC/D,CAAC,CAAC;AAEF,kBAAkB;AAElB,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,QAAQ,GAAa,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,MAAM,GAAG,GAAG,MAAM,OAAO,CACvB,yEAAyE,CAC1E,CAAC;QAEF,MAAM,gBAAgB,CAAC,cAAc,EAAE;YACrC,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;QAEH,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACtC,QAAQ,CAAC,WAAW,CAAC,GAAkB,CAAC,CAAC;QAEzC,MAAM,gBAAgB,CAAC,qBAAqB,EAAE;YAC5C,CAAC,EAAE,EAAE;YACL,CAAC,EAAE,EAAE;YACL,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { fixture, assert } from '@open-wc/testing';\nimport { Lightbox } from '../src/lightbox/Lightbox';\nimport { assertScreenshot } from './utils.test';\n\nexport const getHTML = () => {\n return `<temba-lightbox animationTime=\"0\"></temba-lightbox>`;\n};\n\n// let clock: any;\n\ndescribe('temba-lightbox', () => {\n it('can be created', async () => {\n const lightbox: Lightbox = await fixture(getHTML());\n const img = await fixture(\n \"<img style='width:100px;height:auto' src='./test-assets/img/meow.jpg'/>\"\n );\n\n await assertScreenshot('lightbox/img', {\n x: 28,\n y: 28,\n width: 1024,\n height: 768\n });\n\n assert.instanceOf(lightbox, Lightbox);\n lightbox.showElement(img as HTMLElement);\n\n await assertScreenshot('lightbox/img-zoomed', {\n x: 28,\n y: 28,\n width: 1024,\n height: 768\n });\n });\n});\n"]}