@gitlab/duo-ui 2.0.0 → 3.0.1

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 (579) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/components/chat/components/duo_chat_context/duo_chat_context_item_details_modal/duo_chat_context_item_details_modal.js +3 -3
  3. package/dist/components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu.js +10 -10
  4. package/dist/components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_category_items.js +1 -1
  5. package/dist/components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_item.js +5 -15
  6. package/dist/components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_items.js +9 -9
  7. package/dist/components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_items_loading.js +2 -2
  8. package/dist/components/chat/components/duo_chat_context/duo_chat_context_item_popover/duo_chat_context_item_popover.js +3 -29
  9. package/dist/components/chat/components/duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections.js +7 -8
  10. package/dist/components/chat/components/duo_chat_context/utils.js +1 -102
  11. package/dist/components/chat/components/duo_chat_conversation/duo_chat_conversation.js +5 -5
  12. package/dist/components/chat/components/duo_chat_loader/duo_chat_loader.js +9 -8
  13. package/dist/components/chat/components/duo_chat_message/duo_chat_message.js +19 -19
  14. package/dist/components/chat/components/duo_chat_message_sources/duo_chat_message_sources.js +2 -2
  15. package/dist/components/chat/components/duo_chat_predefined_prompts/duo_chat_predefined_prompts.js +1 -1
  16. package/dist/components/chat/duo_chat.js +30 -19
  17. package/dist/components.css +1 -1
  18. package/dist/components.css.map +1 -1
  19. package/dist/tailwind.css +1 -1
  20. package/dist/tailwind.css.map +1 -1
  21. package/package.json +4 -8
  22. package/src/components/chat/components/duo_chat_context/duo_chat_context_item_details_modal/duo_chat_context_item_details_modal.vue +3 -3
  23. package/src/components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu.vue +12 -12
  24. package/src/components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_category_items.vue +1 -1
  25. package/src/components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_item.vue +17 -24
  26. package/src/components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_items.vue +9 -9
  27. package/src/components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_items_loading.vue +2 -2
  28. package/src/components/chat/components/duo_chat_context/duo_chat_context_item_popover/duo_chat_context_item_popover.vue +25 -55
  29. package/src/components/chat/components/duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections.vue +10 -11
  30. package/src/components/chat/components/duo_chat_context/utils.js +0 -114
  31. package/src/components/chat/components/duo_chat_conversation/duo_chat_conversation.md +1 -1
  32. package/src/components/chat/components/duo_chat_conversation/duo_chat_conversation.vue +5 -5
  33. package/src/components/chat/components/duo_chat_loader/duo_chat_loader.scss +6 -33
  34. package/src/components/chat/components/duo_chat_loader/duo_chat_loader.vue +11 -14
  35. package/src/components/chat/components/duo_chat_message/duo_chat_message.md +2 -2
  36. package/src/components/chat/components/duo_chat_message/duo_chat_message.scss +13 -10
  37. package/src/components/chat/components/duo_chat_message/duo_chat_message.vue +21 -21
  38. package/src/components/chat/components/duo_chat_message_sources/duo_chat_message_sources.vue +2 -2
  39. package/src/components/chat/components/duo_chat_predefined_prompts/duo_chat_predefined_prompts.vue +1 -1
  40. package/src/components/chat/duo_chat.md +4 -4
  41. package/src/components/chat/duo_chat.vue +38 -30
  42. package/translations.js +36 -43
  43. package/src/vendor/bootstrap/LICENSE +0 -22
  44. package/src/vendor/bootstrap/scss/_alert.scss +0 -52
  45. package/src/vendor/bootstrap/scss/_badge.scss +0 -54
  46. package/src/vendor/bootstrap/scss/_breadcrumb.scss +0 -42
  47. package/src/vendor/bootstrap/scss/_button-group.scss +0 -163
  48. package/src/vendor/bootstrap/scss/_buttons.scss +0 -142
  49. package/src/vendor/bootstrap/scss/_card.scss +0 -286
  50. package/src/vendor/bootstrap/scss/_carousel.scss +0 -200
  51. package/src/vendor/bootstrap/scss/_close.scss +0 -40
  52. package/src/vendor/bootstrap/scss/_code.scss +0 -48
  53. package/src/vendor/bootstrap/scss/_custom-forms.scss +0 -526
  54. package/src/vendor/bootstrap/scss/_dropdown.scss +0 -192
  55. package/src/vendor/bootstrap/scss/_forms.scss +0 -347
  56. package/src/vendor/bootstrap/scss/_functions.scss +0 -190
  57. package/src/vendor/bootstrap/scss/_grid.scss +0 -73
  58. package/src/vendor/bootstrap/scss/_images.scss +0 -42
  59. package/src/vendor/bootstrap/scss/_input-group.scss +0 -211
  60. package/src/vendor/bootstrap/scss/_jumbotron.scss +0 -17
  61. package/src/vendor/bootstrap/scss/_list-group.scss +0 -154
  62. package/src/vendor/bootstrap/scss/_media.scss +0 -8
  63. package/src/vendor/bootstrap/scss/_mixins.scss +0 -47
  64. package/src/vendor/bootstrap/scss/_modal.scss +0 -240
  65. package/src/vendor/bootstrap/scss/_nav.scss +0 -125
  66. package/src/vendor/bootstrap/scss/_navbar.scss +0 -332
  67. package/src/vendor/bootstrap/scss/_pagination.scss +0 -74
  68. package/src/vendor/bootstrap/scss/_popover.scss +0 -170
  69. package/src/vendor/bootstrap/scss/_print.scss +0 -132
  70. package/src/vendor/bootstrap/scss/_progress.scss +0 -47
  71. package/src/vendor/bootstrap/scss/_reboot.scss +0 -484
  72. package/src/vendor/bootstrap/scss/_root.scss +0 -19
  73. package/src/vendor/bootstrap/scss/_spinners.scss +0 -65
  74. package/src/vendor/bootstrap/scss/_tables.scss +0 -185
  75. package/src/vendor/bootstrap/scss/_toasts.scss +0 -46
  76. package/src/vendor/bootstrap/scss/_tooltip.scss +0 -115
  77. package/src/vendor/bootstrap/scss/_transitions.scss +0 -26
  78. package/src/vendor/bootstrap/scss/_type.scss +0 -125
  79. package/src/vendor/bootstrap/scss/_utilities.scss +0 -18
  80. package/src/vendor/bootstrap/scss/_variables.scss +0 -1149
  81. package/src/vendor/bootstrap/scss/bootstrap-grid.scss +0 -30
  82. package/src/vendor/bootstrap/scss/bootstrap-reboot.scss +0 -12
  83. package/src/vendor/bootstrap/scss/bootstrap.scss +0 -44
  84. package/src/vendor/bootstrap/scss/mixins/_alert.scss +0 -13
  85. package/src/vendor/bootstrap/scss/mixins/_background-variant.scss +0 -23
  86. package/src/vendor/bootstrap/scss/mixins/_badge.scss +0 -17
  87. package/src/vendor/bootstrap/scss/mixins/_border-radius.scss +0 -76
  88. package/src/vendor/bootstrap/scss/mixins/_box-shadow.scss +0 -20
  89. package/src/vendor/bootstrap/scss/mixins/_breakpoints.scss +0 -123
  90. package/src/vendor/bootstrap/scss/mixins/_buttons.scss +0 -110
  91. package/src/vendor/bootstrap/scss/mixins/_caret.scss +0 -62
  92. package/src/vendor/bootstrap/scss/mixins/_clearfix.scss +0 -7
  93. package/src/vendor/bootstrap/scss/mixins/_deprecate.scss +0 -10
  94. package/src/vendor/bootstrap/scss/mixins/_float.scss +0 -14
  95. package/src/vendor/bootstrap/scss/mixins/_forms.scss +0 -195
  96. package/src/vendor/bootstrap/scss/mixins/_gradients.scss +0 -45
  97. package/src/vendor/bootstrap/scss/mixins/_grid-framework.scss +0 -80
  98. package/src/vendor/bootstrap/scss/mixins/_grid.scss +0 -69
  99. package/src/vendor/bootstrap/scss/mixins/_hover.scss +0 -37
  100. package/src/vendor/bootstrap/scss/mixins/_image.scss +0 -36
  101. package/src/vendor/bootstrap/scss/mixins/_list-group.scss +0 -21
  102. package/src/vendor/bootstrap/scss/mixins/_lists.scss +0 -7
  103. package/src/vendor/bootstrap/scss/mixins/_nav-divider.scss +0 -11
  104. package/src/vendor/bootstrap/scss/mixins/_pagination.scss +0 -22
  105. package/src/vendor/bootstrap/scss/mixins/_reset-text.scss +0 -17
  106. package/src/vendor/bootstrap/scss/mixins/_resize.scss +0 -6
  107. package/src/vendor/bootstrap/scss/mixins/_screen-reader.scss +0 -34
  108. package/src/vendor/bootstrap/scss/mixins/_size.scss +0 -7
  109. package/src/vendor/bootstrap/scss/mixins/_table-row.scss +0 -39
  110. package/src/vendor/bootstrap/scss/mixins/_text-emphasis.scss +0 -17
  111. package/src/vendor/bootstrap/scss/mixins/_text-hide.scss +0 -11
  112. package/src/vendor/bootstrap/scss/mixins/_text-truncate.scss +0 -8
  113. package/src/vendor/bootstrap/scss/mixins/_transition.scss +0 -26
  114. package/src/vendor/bootstrap/scss/mixins/_visibility.scss +0 -8
  115. package/src/vendor/bootstrap/scss/utilities/_align.scss +0 -8
  116. package/src/vendor/bootstrap/scss/utilities/_background.scss +0 -19
  117. package/src/vendor/bootstrap/scss/utilities/_borders.scss +0 -75
  118. package/src/vendor/bootstrap/scss/utilities/_clearfix.scss +0 -3
  119. package/src/vendor/bootstrap/scss/utilities/_display.scss +0 -26
  120. package/src/vendor/bootstrap/scss/utilities/_embed.scss +0 -39
  121. package/src/vendor/bootstrap/scss/utilities/_flex.scss +0 -51
  122. package/src/vendor/bootstrap/scss/utilities/_float.scss +0 -11
  123. package/src/vendor/bootstrap/scss/utilities/_interactions.scss +0 -5
  124. package/src/vendor/bootstrap/scss/utilities/_overflow.scss +0 -5
  125. package/src/vendor/bootstrap/scss/utilities/_position.scss +0 -32
  126. package/src/vendor/bootstrap/scss/utilities/_screenreaders.scss +0 -11
  127. package/src/vendor/bootstrap/scss/utilities/_shadows.scss +0 -6
  128. package/src/vendor/bootstrap/scss/utilities/_sizing.scss +0 -20
  129. package/src/vendor/bootstrap/scss/utilities/_spacing.scss +0 -73
  130. package/src/vendor/bootstrap/scss/utilities/_stretched-link.scss +0 -19
  131. package/src/vendor/bootstrap/scss/utilities/_text.scss +0 -72
  132. package/src/vendor/bootstrap/scss/utilities/_visibility.scss +0 -13
  133. package/src/vendor/bootstrap/scss/vendor/_rfs.scss +0 -228
  134. package/src/vendor/bootstrap-vue/LICENSE +0 -21
  135. package/src/vendor/bootstrap-vue/nuxt/index.js +0 -164
  136. package/src/vendor/bootstrap-vue/nuxt/plugin.template.js +0 -29
  137. package/src/vendor/bootstrap-vue/package.json +0 -201
  138. package/src/vendor/bootstrap-vue/src/_utilities.scss +0 -13
  139. package/src/vendor/bootstrap-vue/src/_variables.scss +0 -111
  140. package/src/vendor/bootstrap-vue/src/browser.js +0 -9
  141. package/src/vendor/bootstrap-vue/src/bv-config.d.ts +0 -4
  142. package/src/vendor/bootstrap-vue/src/bv-config.js +0 -6
  143. package/src/vendor/bootstrap-vue/src/components/badge/README.md +0 -126
  144. package/src/vendor/bootstrap-vue/src/components/badge/badge.js +0 -55
  145. package/src/vendor/bootstrap-vue/src/components/badge/badge.spec.js +0 -141
  146. package/src/vendor/bootstrap-vue/src/components/badge/index.d.ts +0 -7
  147. package/src/vendor/bootstrap-vue/src/components/badge/index.js +0 -3
  148. package/src/vendor/bootstrap-vue/src/components/badge/package.json +0 -29
  149. package/src/vendor/bootstrap-vue/src/components/breadcrumb/README.md +0 -93
  150. package/src/vendor/bootstrap-vue/src/components/breadcrumb/breadcrumb-item.js +0 -27
  151. package/src/vendor/bootstrap-vue/src/components/breadcrumb/breadcrumb-item.spec.js +0 -123
  152. package/src/vendor/bootstrap-vue/src/components/breadcrumb/breadcrumb-link.js +0 -43
  153. package/src/vendor/bootstrap-vue/src/components/breadcrumb/breadcrumb-link.spec.js +0 -117
  154. package/src/vendor/bootstrap-vue/src/components/breadcrumb/breadcrumb.js +0 -52
  155. package/src/vendor/bootstrap-vue/src/components/breadcrumb/breadcrumb.spec.js +0 -183
  156. package/src/vendor/bootstrap-vue/src/components/breadcrumb/index.d.ts +0 -13
  157. package/src/vendor/bootstrap-vue/src/components/breadcrumb/index.js +0 -5
  158. package/src/vendor/bootstrap-vue/src/components/breadcrumb/package.json +0 -62
  159. package/src/vendor/bootstrap-vue/src/components/button/README.md +0 -281
  160. package/src/vendor/bootstrap-vue/src/components/button/button-close.js +0 -65
  161. package/src/vendor/bootstrap-vue/src/components/button/button-close.spec.js +0 -210
  162. package/src/vendor/bootstrap-vue/src/components/button/button.js +0 -179
  163. package/src/vendor/bootstrap-vue/src/components/button/button.spec.js +0 -385
  164. package/src/vendor/bootstrap-vue/src/components/button/index.d.ts +0 -10
  165. package/src/vendor/bootstrap-vue/src/components/button/index.js +0 -4
  166. package/src/vendor/bootstrap-vue/src/components/button/package.json +0 -105
  167. package/src/vendor/bootstrap-vue/src/components/button-group/README.md +0 -112
  168. package/src/vendor/bootstrap-vue/src/components/button-group/button-group.js +0 -42
  169. package/src/vendor/bootstrap-vue/src/components/button-group/button-group.spec.js +0 -98
  170. package/src/vendor/bootstrap-vue/src/components/button-group/index.d.ts +0 -7
  171. package/src/vendor/bootstrap-vue/src/components/button-group/index.js +0 -3
  172. package/src/vendor/bootstrap-vue/src/components/button-group/package.json +0 -29
  173. package/src/vendor/bootstrap-vue/src/components/collapse/README.md +0 -321
  174. package/src/vendor/bootstrap-vue/src/components/collapse/collapse.js +0 -272
  175. package/src/vendor/bootstrap-vue/src/components/collapse/collapse.spec.js +0 -558
  176. package/src/vendor/bootstrap-vue/src/components/collapse/helpers/bv-collapse.js +0 -88
  177. package/src/vendor/bootstrap-vue/src/components/collapse/index.d.ts +0 -9
  178. package/src/vendor/bootstrap-vue/src/components/collapse/index.js +0 -3
  179. package/src/vendor/bootstrap-vue/src/components/collapse/package.json +0 -111
  180. package/src/vendor/bootstrap-vue/src/components/dropdown/README.md +0 -730
  181. package/src/vendor/bootstrap-vue/src/components/dropdown/_dropdown-form.scss +0 -38
  182. package/src/vendor/bootstrap-vue/src/components/dropdown/_dropdown-text.scss +0 -17
  183. package/src/vendor/bootstrap-vue/src/components/dropdown/_dropdown.scss +0 -58
  184. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +0 -36
  185. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.spec.js +0 -58
  186. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +0 -47
  187. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.spec.js +0 -110
  188. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +0 -76
  189. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.spec.js +0 -94
  190. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +0 -46
  191. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.spec.js +0 -73
  192. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +0 -93
  193. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.spec.js +0 -117
  194. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.js +0 -87
  195. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.spec.js +0 -147
  196. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.js +0 -42
  197. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.spec.js +0 -59
  198. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +0 -202
  199. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.spec.js +0 -1121
  200. package/src/vendor/bootstrap-vue/src/components/dropdown/index.d.ts +0 -32
  201. package/src/vendor/bootstrap-vue/src/components/dropdown/index.js +0 -19
  202. package/src/vendor/bootstrap-vue/src/components/dropdown/index.scss +0 -3
  203. package/src/vendor/bootstrap-vue/src/components/dropdown/package.json +0 -368
  204. package/src/vendor/bootstrap-vue/src/components/form/README.md +0 -370
  205. package/src/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +0 -51
  206. package/src/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.spec.js +0 -170
  207. package/src/vendor/bootstrap-vue/src/components/form/form-text.js +0 -40
  208. package/src/vendor/bootstrap-vue/src/components/form/form-text.spec.js +0 -93
  209. package/src/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +0 -51
  210. package/src/vendor/bootstrap-vue/src/components/form/form-valid-feedback.spec.js +0 -157
  211. package/src/vendor/bootstrap-vue/src/components/form/form.js +0 -41
  212. package/src/vendor/bootstrap-vue/src/components/form/form.spec.js +0 -97
  213. package/src/vendor/bootstrap-vue/src/components/form/index.d.ts +0 -16
  214. package/src/vendor/bootstrap-vue/src/components/form/index.js +0 -7
  215. package/src/vendor/bootstrap-vue/src/components/form/package.json +0 -112
  216. package/src/vendor/bootstrap-vue/src/components/form-checkbox/README.md +0 -862
  217. package/src/vendor/bootstrap-vue/src/components/form-checkbox/_form-checkbox-group.scss +0 -2
  218. package/src/vendor/bootstrap-vue/src/components/form-checkbox/_form-checkbox.scss +0 -125
  219. package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox-group.js +0 -42
  220. package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox-group.spec.js +0 -642
  221. package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox.js +0 -132
  222. package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox.spec.js +0 -1331
  223. package/src/vendor/bootstrap-vue/src/components/form-checkbox/index.d.ts +0 -10
  224. package/src/vendor/bootstrap-vue/src/components/form-checkbox/index.js +0 -4
  225. package/src/vendor/bootstrap-vue/src/components/form-checkbox/index.scss +0 -2
  226. package/src/vendor/bootstrap-vue/src/components/form-checkbox/package.json +0 -172
  227. package/src/vendor/bootstrap-vue/src/components/form-group/README.md +0 -337
  228. package/src/vendor/bootstrap-vue/src/components/form-group/form-group.js +0 -403
  229. package/src/vendor/bootstrap-vue/src/components/form-group/form-group.spec.js +0 -477
  230. package/src/vendor/bootstrap-vue/src/components/form-group/index.d.ts +0 -7
  231. package/src/vendor/bootstrap-vue/src/components/form-group/index.js +0 -3
  232. package/src/vendor/bootstrap-vue/src/components/form-group/package.json +0 -183
  233. package/src/vendor/bootstrap-vue/src/components/form-input/README.md +0 -612
  234. package/src/vendor/bootstrap-vue/src/components/form-input/_form-input.scss +0 -217
  235. package/src/vendor/bootstrap-vue/src/components/form-input/form-input.js +0 -168
  236. package/src/vendor/bootstrap-vue/src/components/form-input/form-input.spec.js +0 -986
  237. package/src/vendor/bootstrap-vue/src/components/form-input/index.d.ts +0 -9
  238. package/src/vendor/bootstrap-vue/src/components/form-input/index.js +0 -3
  239. package/src/vendor/bootstrap-vue/src/components/form-input/index.scss +0 -1
  240. package/src/vendor/bootstrap-vue/src/components/form-input/package.json +0 -135
  241. package/src/vendor/bootstrap-vue/src/components/form-radio/README.md +0 -566
  242. package/src/vendor/bootstrap-vue/src/components/form-radio/_form-radio-group.scss +0 -3
  243. package/src/vendor/bootstrap-vue/src/components/form-radio/_form-radio.scss +0 -47
  244. package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio-group.js +0 -30
  245. package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio-group.spec.js +0 -469
  246. package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio.js +0 -28
  247. package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio.spec.js +0 -952
  248. package/src/vendor/bootstrap-vue/src/components/form-radio/index.d.ts +0 -10
  249. package/src/vendor/bootstrap-vue/src/components/form-radio/index.js +0 -4
  250. package/src/vendor/bootstrap-vue/src/components/form-radio/index.scss +0 -2
  251. package/src/vendor/bootstrap-vue/src/components/form-radio/package.json +0 -162
  252. package/src/vendor/bootstrap-vue/src/components/form-select/README.md +0 -504
  253. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +0 -48
  254. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.spec.js +0 -138
  255. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +0 -35
  256. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option.spec.js +0 -75
  257. package/src/vendor/bootstrap-vue/src/components/form-select/form-select.js +0 -153
  258. package/src/vendor/bootstrap-vue/src/components/form-select/form-select.spec.js +0 -723
  259. package/src/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js +0 -56
  260. package/src/vendor/bootstrap-vue/src/components/form-select/index.d.ts +0 -13
  261. package/src/vendor/bootstrap-vue/src/components/form-select/index.js +0 -5
  262. package/src/vendor/bootstrap-vue/src/components/form-select/package.json +0 -132
  263. package/src/vendor/bootstrap-vue/src/components/form-textarea/README.md +0 -453
  264. package/src/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +0 -226
  265. package/src/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.spec.js +0 -1000
  266. package/src/vendor/bootstrap-vue/src/components/form-textarea/index.d.ts +0 -9
  267. package/src/vendor/bootstrap-vue/src/components/form-textarea/index.js +0 -3
  268. package/src/vendor/bootstrap-vue/src/components/form-textarea/package.json +0 -122
  269. package/src/vendor/bootstrap-vue/src/components/index.d.ts +0 -31
  270. package/src/vendor/bootstrap-vue/src/components/index.js +0 -11
  271. package/src/vendor/bootstrap-vue/src/components/index.scss +0 -12
  272. package/src/vendor/bootstrap-vue/src/components/input-group/README.md +0 -334
  273. package/src/vendor/bootstrap-vue/src/components/input-group/_input-group.scss +0 -29
  274. package/src/vendor/bootstrap-vue/src/components/input-group/index.d.ts +0 -19
  275. package/src/vendor/bootstrap-vue/src/components/input-group/index.js +0 -7
  276. package/src/vendor/bootstrap-vue/src/components/input-group/index.scss +0 -1
  277. package/src/vendor/bootstrap-vue/src/components/input-group/input-group-addon.js +0 -43
  278. package/src/vendor/bootstrap-vue/src/components/input-group/input-group-append.js +0 -31
  279. package/src/vendor/bootstrap-vue/src/components/input-group/input-group-append.spec.js +0 -84
  280. package/src/vendor/bootstrap-vue/src/components/input-group/input-group-prepend.js +0 -31
  281. package/src/vendor/bootstrap-vue/src/components/input-group/input-group-prepend.spec.js +0 -84
  282. package/src/vendor/bootstrap-vue/src/components/input-group/input-group-text.js +0 -31
  283. package/src/vendor/bootstrap-vue/src/components/input-group/input-group-text.spec.js +0 -45
  284. package/src/vendor/bootstrap-vue/src/components/input-group/input-group.js +0 -73
  285. package/src/vendor/bootstrap-vue/src/components/input-group/input-group.spec.js +0 -153
  286. package/src/vendor/bootstrap-vue/src/components/input-group/package.json +0 -109
  287. package/src/vendor/bootstrap-vue/src/components/layout/README.md +0 -791
  288. package/src/vendor/bootstrap-vue/src/components/layout/col.js +0 -154
  289. package/src/vendor/bootstrap-vue/src/components/layout/col.spec.js +0 -192
  290. package/src/vendor/bootstrap-vue/src/components/layout/form-row.js +0 -31
  291. package/src/vendor/bootstrap-vue/src/components/layout/form-row.spec.js +0 -45
  292. package/src/vendor/bootstrap-vue/src/components/layout/index.d.ts +0 -10
  293. package/src/vendor/bootstrap-vue/src/components/layout/index.js +0 -4
  294. package/src/vendor/bootstrap-vue/src/components/layout/package.json +0 -99
  295. package/src/vendor/bootstrap-vue/src/components/link/README.md +0 -76
  296. package/src/vendor/bootstrap-vue/src/components/link/index.d.ts +0 -10
  297. package/src/vendor/bootstrap-vue/src/components/link/index.js +0 -3
  298. package/src/vendor/bootstrap-vue/src/components/link/link.js +0 -212
  299. package/src/vendor/bootstrap-vue/src/components/link/link.spec.js +0 -434
  300. package/src/vendor/bootstrap-vue/src/components/link/package.json +0 -57
  301. package/src/vendor/bootstrap-vue/src/components/modal/MODIFICATIONS.md +0 -27
  302. package/src/vendor/bootstrap-vue/src/components/modal/README.md +0 -1068
  303. package/src/vendor/bootstrap-vue/src/components/modal/_modal.scss +0 -5
  304. package/src/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.js +0 -22
  305. package/src/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.spec.js +0 -82
  306. package/src/vendor/bootstrap-vue/src/components/modal/helpers/modal-manager.js +0 -219
  307. package/src/vendor/bootstrap-vue/src/components/modal/index.d.ts +0 -82
  308. package/src/vendor/bootstrap-vue/src/components/modal/index.js +0 -3
  309. package/src/vendor/bootstrap-vue/src/components/modal/index.scss +0 -1
  310. package/src/vendor/bootstrap-vue/src/components/modal/modal.js +0 -981
  311. package/src/vendor/bootstrap-vue/src/components/modal/modal.spec.js +0 -1418
  312. package/src/vendor/bootstrap-vue/src/components/modal/package.json +0 -548
  313. package/src/vendor/bootstrap-vue/src/components/nav/README.md +0 -480
  314. package/src/vendor/bootstrap-vue/src/components/nav/_nav-item-dropdown.scss +0 -1
  315. package/src/vendor/bootstrap-vue/src/components/nav/index.d.ts +0 -17
  316. package/src/vendor/bootstrap-vue/src/components/nav/index.js +0 -5
  317. package/src/vendor/bootstrap-vue/src/components/nav/index.scss +0 -1
  318. package/src/vendor/bootstrap-vue/src/components/nav/nav-item-dropdown.js +0 -123
  319. package/src/vendor/bootstrap-vue/src/components/nav/nav-item-dropdown.spec.js +0 -268
  320. package/src/vendor/bootstrap-vue/src/components/nav/nav-item.js +0 -49
  321. package/src/vendor/bootstrap-vue/src/components/nav/nav-item.spec.js +0 -127
  322. package/src/vendor/bootstrap-vue/src/components/nav/nav.js +0 -60
  323. package/src/vendor/bootstrap-vue/src/components/nav/nav.spec.js +0 -244
  324. package/src/vendor/bootstrap-vue/src/components/nav/package.json +0 -190
  325. package/src/vendor/bootstrap-vue/src/components/navbar/README.md +0 -333
  326. package/src/vendor/bootstrap-vue/src/components/navbar/_navbar.scss +0 -1
  327. package/src/vendor/bootstrap-vue/src/components/navbar/index.d.ts +0 -10
  328. package/src/vendor/bootstrap-vue/src/components/navbar/index.js +0 -4
  329. package/src/vendor/bootstrap-vue/src/components/navbar/index.scss +0 -1
  330. package/src/vendor/bootstrap-vue/src/components/navbar/navbar-brand.js +0 -42
  331. package/src/vendor/bootstrap-vue/src/components/navbar/navbar-brand.spec.js +0 -50
  332. package/src/vendor/bootstrap-vue/src/components/navbar/navbar.js +0 -78
  333. package/src/vendor/bootstrap-vue/src/components/navbar/navbar.spec.js +0 -130
  334. package/src/vendor/bootstrap-vue/src/components/navbar/package.json +0 -54
  335. package/src/vendor/bootstrap-vue/src/components/popover/README.md +0 -919
  336. package/src/vendor/bootstrap-vue/src/components/popover/_popover.scss +0 -113
  337. package/src/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover-template.js +0 -50
  338. package/src/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover.js +0 -28
  339. package/src/vendor/bootstrap-vue/src/components/popover/index.d.ts +0 -7
  340. package/src/vendor/bootstrap-vue/src/components/popover/index.js +0 -3
  341. package/src/vendor/bootstrap-vue/src/components/popover/index.scss +0 -1
  342. package/src/vendor/bootstrap-vue/src/components/popover/package.json +0 -261
  343. package/src/vendor/bootstrap-vue/src/components/popover/popover.js +0 -46
  344. package/src/vendor/bootstrap-vue/src/components/popover/popover.spec.js +0 -199
  345. package/src/vendor/bootstrap-vue/src/components/progress/MODIFICATIONS.md +0 -23
  346. package/src/vendor/bootstrap-vue/src/components/progress/README.md +0 -363
  347. package/src/vendor/bootstrap-vue/src/components/progress/index.d.ts +0 -10
  348. package/src/vendor/bootstrap-vue/src/components/progress/index.js +0 -4
  349. package/src/vendor/bootstrap-vue/src/components/progress/package.json +0 -109
  350. package/src/vendor/bootstrap-vue/src/components/progress/progress-bar.js +0 -133
  351. package/src/vendor/bootstrap-vue/src/components/progress/progress-bar.spec.js +0 -270
  352. package/src/vendor/bootstrap-vue/src/components/progress/progress.js +0 -57
  353. package/src/vendor/bootstrap-vue/src/components/progress/progress.spec.js +0 -71
  354. package/src/vendor/bootstrap-vue/src/components/table/README.md +0 -3157
  355. package/src/vendor/bootstrap-vue/src/components/table/_table.scss +0 -474
  356. package/src/vendor/bootstrap-vue/src/components/table/helpers/constants.js +0 -30
  357. package/src/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.js +0 -60
  358. package/src/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.spec.js +0 -112
  359. package/src/vendor/bootstrap-vue/src/components/table/helpers/filter-event.js +0 -38
  360. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-bottom-row.js +0 -44
  361. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +0 -88
  362. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +0 -49
  363. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-colgroup.js +0 -27
  364. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +0 -105
  365. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +0 -271
  366. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +0 -146
  367. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +0 -38
  368. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +0 -188
  369. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +0 -241
  370. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +0 -299
  371. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +0 -33
  372. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +0 -209
  373. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +0 -360
  374. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +0 -258
  375. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +0 -55
  376. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +0 -238
  377. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-top-row.js +0 -37
  378. package/src/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.js +0 -71
  379. package/src/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.spec.js +0 -93
  380. package/src/vendor/bootstrap-vue/src/components/table/helpers/sanitize-row.js +0 -39
  381. package/src/vendor/bootstrap-vue/src/components/table/helpers/stringify-record-values.js +0 -11
  382. package/src/vendor/bootstrap-vue/src/components/table/helpers/text-selection-active.js +0 -13
  383. package/src/vendor/bootstrap-vue/src/components/table/index.d.ts +0 -237
  384. package/src/vendor/bootstrap-vue/src/components/table/index.js +0 -23
  385. package/src/vendor/bootstrap-vue/src/components/table/index.scss +0 -1
  386. package/src/vendor/bootstrap-vue/src/components/table/package.json +0 -1763
  387. package/src/vendor/bootstrap-vue/src/components/table/table-busy.spec.js +0 -150
  388. package/src/vendor/bootstrap-vue/src/components/table/table-caption.spec.js +0 -176
  389. package/src/vendor/bootstrap-vue/src/components/table/table-colgroup.spec.js +0 -81
  390. package/src/vendor/bootstrap-vue/src/components/table/table-filtering.spec.js +0 -409
  391. package/src/vendor/bootstrap-vue/src/components/table/table-item-formatter.spec.js +0 -56
  392. package/src/vendor/bootstrap-vue/src/components/table/table-lite.js +0 -63
  393. package/src/vendor/bootstrap-vue/src/components/table/table-lite.spec.js +0 -682
  394. package/src/vendor/bootstrap-vue/src/components/table/table-pagination.spec.js +0 -133
  395. package/src/vendor/bootstrap-vue/src/components/table/table-primarykey.spec.js +0 -83
  396. package/src/vendor/bootstrap-vue/src/components/table/table-provider.spec.js +0 -411
  397. package/src/vendor/bootstrap-vue/src/components/table/table-row-details.spec.js +0 -459
  398. package/src/vendor/bootstrap-vue/src/components/table/table-selectable.spec.js +0 -1182
  399. package/src/vendor/bootstrap-vue/src/components/table/table-simple.js +0 -50
  400. package/src/vendor/bootstrap-vue/src/components/table/table-simple.spec.js +0 -206
  401. package/src/vendor/bootstrap-vue/src/components/table/table-sorting.spec.js +0 -858
  402. package/src/vendor/bootstrap-vue/src/components/table/table-sticky-column.spec.js +0 -377
  403. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-bottom-row.spec.js +0 -94
  404. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-row-events.spec.js +0 -529
  405. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-top-row.spec.js +0 -88
  406. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-transition.spec.js +0 -83
  407. package/src/vendor/bootstrap-vue/src/components/table/table-tfoot-custom.spec.js +0 -91
  408. package/src/vendor/bootstrap-vue/src/components/table/table-tfoot-events.spec.js +0 -137
  409. package/src/vendor/bootstrap-vue/src/components/table/table-thead-events.spec.js +0 -155
  410. package/src/vendor/bootstrap-vue/src/components/table/table-thead-top.spec.js +0 -96
  411. package/src/vendor/bootstrap-vue/src/components/table/table.js +0 -89
  412. package/src/vendor/bootstrap-vue/src/components/table/table.spec.js +0 -692
  413. package/src/vendor/bootstrap-vue/src/components/table/tbody.js +0 -103
  414. package/src/vendor/bootstrap-vue/src/components/table/td.js +0 -195
  415. package/src/vendor/bootstrap-vue/src/components/table/tfoot.js +0 -95
  416. package/src/vendor/bootstrap-vue/src/components/table/th.js +0 -25
  417. package/src/vendor/bootstrap-vue/src/components/table/thead.js +0 -98
  418. package/src/vendor/bootstrap-vue/src/components/table/tr.js +0 -122
  419. package/src/vendor/bootstrap-vue/src/components/tabs/README.md +0 -575
  420. package/src/vendor/bootstrap-vue/src/components/tabs/index.d.ts +0 -13
  421. package/src/vendor/bootstrap-vue/src/components/tabs/index.js +0 -4
  422. package/src/vendor/bootstrap-vue/src/components/tabs/package.json +0 -205
  423. package/src/vendor/bootstrap-vue/src/components/tabs/tab.js +0 -197
  424. package/src/vendor/bootstrap-vue/src/components/tabs/tab.spec.js +0 -330
  425. package/src/vendor/bootstrap-vue/src/components/tabs/tabs.js +0 -688
  426. package/src/vendor/bootstrap-vue/src/components/tabs/tabs.spec.js +0 -836
  427. package/src/vendor/bootstrap-vue/src/components/toast/README.md +0 -656
  428. package/src/vendor/bootstrap-vue/src/components/toast/_toast.scss +0 -79
  429. package/src/vendor/bootstrap-vue/src/components/toast/_toaster-transition.scss +0 -45
  430. package/src/vendor/bootstrap-vue/src/components/toast/_toaster.scss +0 -108
  431. package/src/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.js +0 -208
  432. package/src/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.spec.js +0 -131
  433. package/src/vendor/bootstrap-vue/src/components/toast/index.d.ts +0 -70
  434. package/src/vendor/bootstrap-vue/src/components/toast/index.js +0 -12
  435. package/src/vendor/bootstrap-vue/src/components/toast/index.scss +0 -3
  436. package/src/vendor/bootstrap-vue/src/components/toast/package.json +0 -188
  437. package/src/vendor/bootstrap-vue/src/components/toast/toast.js +0 -454
  438. package/src/vendor/bootstrap-vue/src/components/toast/toast.spec.js +0 -346
  439. package/src/vendor/bootstrap-vue/src/components/toast/toaster.js +0 -139
  440. package/src/vendor/bootstrap-vue/src/components/toast/toaster.spec.js +0 -77
  441. package/src/vendor/bootstrap-vue/src/components/tooltip/README.md +0 -559
  442. package/src/vendor/bootstrap-vue/src/components/tooltip/_tooltip.scss +0 -86
  443. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +0 -248
  444. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +0 -130
  445. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +0 -977
  446. package/src/vendor/bootstrap-vue/src/components/tooltip/index.d.ts +0 -7
  447. package/src/vendor/bootstrap-vue/src/components/tooltip/index.js +0 -3
  448. package/src/vendor/bootstrap-vue/src/components/tooltip/index.scss +0 -1
  449. package/src/vendor/bootstrap-vue/src/components/tooltip/package.json +0 -258
  450. package/src/vendor/bootstrap-vue/src/components/tooltip/tooltip.js +0 -316
  451. package/src/vendor/bootstrap-vue/src/components/tooltip/tooltip.spec.js +0 -1529
  452. package/src/vendor/bootstrap-vue/src/components/transition/bv-transition.js +0 -83
  453. package/src/vendor/bootstrap-vue/src/components/transition/package.json +0 -5
  454. package/src/vendor/bootstrap-vue/src/components/transporter/package.json +0 -5
  455. package/src/vendor/bootstrap-vue/src/components/transporter/transporter.js +0 -202
  456. package/src/vendor/bootstrap-vue/src/components/transporter/transporter.spec.js +0 -85
  457. package/src/vendor/bootstrap-vue/src/constants/classes.js +0 -1
  458. package/src/vendor/bootstrap-vue/src/constants/components.js +0 -77
  459. package/src/vendor/bootstrap-vue/src/constants/config.js +0 -4
  460. package/src/vendor/bootstrap-vue/src/constants/env.js +0 -57
  461. package/src/vendor/bootstrap-vue/src/constants/events.js +0 -57
  462. package/src/vendor/bootstrap-vue/src/constants/key-codes.js +0 -10
  463. package/src/vendor/bootstrap-vue/src/constants/popper.js +0 -8
  464. package/src/vendor/bootstrap-vue/src/constants/props.js +0 -26
  465. package/src/vendor/bootstrap-vue/src/constants/regex.js +0 -33
  466. package/src/vendor/bootstrap-vue/src/constants/safe-types.js +0 -17
  467. package/src/vendor/bootstrap-vue/src/constants/slots.js +0 -32
  468. package/src/vendor/bootstrap-vue/src/directives/modal/index.d.ts +0 -8
  469. package/src/vendor/bootstrap-vue/src/directives/modal/index.js +0 -3
  470. package/src/vendor/bootstrap-vue/src/directives/modal/modal.js +0 -115
  471. package/src/vendor/bootstrap-vue/src/directives/modal/modal.spec.js +0 -191
  472. package/src/vendor/bootstrap-vue/src/directives/toggle/README.md +0 -146
  473. package/src/vendor/bootstrap-vue/src/directives/toggle/index.d.ts +0 -7
  474. package/src/vendor/bootstrap-vue/src/directives/toggle/index.js +0 -3
  475. package/src/vendor/bootstrap-vue/src/directives/toggle/package.json +0 -26
  476. package/src/vendor/bootstrap-vue/src/directives/toggle/toggle.js +0 -274
  477. package/src/vendor/bootstrap-vue/src/directives/toggle/toggle.spec.js +0 -452
  478. package/src/vendor/bootstrap-vue/src/directives/tooltip/README.md +0 -521
  479. package/src/vendor/bootstrap-vue/src/directives/tooltip/index.d.ts +0 -7
  480. package/src/vendor/bootstrap-vue/src/directives/tooltip/index.js +0 -3
  481. package/src/vendor/bootstrap-vue/src/directives/tooltip/package.json +0 -131
  482. package/src/vendor/bootstrap-vue/src/directives/tooltip/tooltip.js +0 -270
  483. package/src/vendor/bootstrap-vue/src/directives/tooltip/tooltip.spec.js +0 -223
  484. package/src/vendor/bootstrap-vue/src/directives/visible/README.md +0 -244
  485. package/src/vendor/bootstrap-vue/src/directives/visible/index.d.ts +0 -7
  486. package/src/vendor/bootstrap-vue/src/directives/visible/index.js +0 -3
  487. package/src/vendor/bootstrap-vue/src/directives/visible/package.json +0 -24
  488. package/src/vendor/bootstrap-vue/src/directives/visible/visible.js +0 -184
  489. package/src/vendor/bootstrap-vue/src/index.d.ts +0 -61
  490. package/src/vendor/bootstrap-vue/src/index.js +0 -187
  491. package/src/vendor/bootstrap-vue/src/index.scss +0 -11
  492. package/src/vendor/bootstrap-vue/src/mixins/attrs.js +0 -19
  493. package/src/vendor/bootstrap-vue/src/mixins/attrs.spec.js +0 -194
  494. package/src/vendor/bootstrap-vue/src/mixins/click-out.js +0 -72
  495. package/src/vendor/bootstrap-vue/src/mixins/click-out.spec.js +0 -52
  496. package/src/vendor/bootstrap-vue/src/mixins/dropdown.js +0 -460
  497. package/src/vendor/bootstrap-vue/src/mixins/focus-in.js +0 -44
  498. package/src/vendor/bootstrap-vue/src/mixins/focus-in.spec.js +0 -53
  499. package/src/vendor/bootstrap-vue/src/mixins/form-control.js +0 -51
  500. package/src/vendor/bootstrap-vue/src/mixins/form-custom.js +0 -24
  501. package/src/vendor/bootstrap-vue/src/mixins/form-options.js +0 -73
  502. package/src/vendor/bootstrap-vue/src/mixins/form-radio-check-group.js +0 -162
  503. package/src/vendor/bootstrap-vue/src/mixins/form-radio-check.js +0 -332
  504. package/src/vendor/bootstrap-vue/src/mixins/form-selection.js +0 -60
  505. package/src/vendor/bootstrap-vue/src/mixins/form-size.js +0 -24
  506. package/src/vendor/bootstrap-vue/src/mixins/form-state.js +0 -47
  507. package/src/vendor/bootstrap-vue/src/mixins/form-text.js +0 -250
  508. package/src/vendor/bootstrap-vue/src/mixins/form-validity.js +0 -48
  509. package/src/vendor/bootstrap-vue/src/mixins/has-listener.js +0 -26
  510. package/src/vendor/bootstrap-vue/src/mixins/id.js +0 -51
  511. package/src/vendor/bootstrap-vue/src/mixins/listen-on-document.js +0 -64
  512. package/src/vendor/bootstrap-vue/src/mixins/listen-on-document.spec.js +0 -117
  513. package/src/vendor/bootstrap-vue/src/mixins/listen-on-root.js +0 -121
  514. package/src/vendor/bootstrap-vue/src/mixins/listen-on-root.spec.js +0 -77
  515. package/src/vendor/bootstrap-vue/src/mixins/listen-on-window.js +0 -64
  516. package/src/vendor/bootstrap-vue/src/mixins/listen-on-window.spec.js +0 -115
  517. package/src/vendor/bootstrap-vue/src/mixins/listeners.js +0 -24
  518. package/src/vendor/bootstrap-vue/src/mixins/listeners.spec.js +0 -245
  519. package/src/vendor/bootstrap-vue/src/mixins/model.js +0 -5
  520. package/src/vendor/bootstrap-vue/src/mixins/normalize-slot.js +0 -30
  521. package/src/vendor/bootstrap-vue/src/mixins/scoped-style.js +0 -14
  522. package/src/vendor/bootstrap-vue/src/mixins/use-parent.js +0 -12
  523. package/src/vendor/bootstrap-vue/src/utils/array.js +0 -17
  524. package/src/vendor/bootstrap-vue/src/utils/bv-event.class.js +0 -60
  525. package/src/vendor/bootstrap-vue/src/utils/bv-event.class.spec.js +0 -66
  526. package/src/vendor/bootstrap-vue/src/utils/cache.js +0 -37
  527. package/src/vendor/bootstrap-vue/src/utils/clone-deep.js +0 -15
  528. package/src/vendor/bootstrap-vue/src/utils/clone-deep.spec.js +0 -70
  529. package/src/vendor/bootstrap-vue/src/utils/config-set.js +0 -80
  530. package/src/vendor/bootstrap-vue/src/utils/config.js +0 -72
  531. package/src/vendor/bootstrap-vue/src/utils/config.spec.js +0 -169
  532. package/src/vendor/bootstrap-vue/src/utils/create-new-child-component.js +0 -10
  533. package/src/vendor/bootstrap-vue/src/utils/css-escape.js +0 -73
  534. package/src/vendor/bootstrap-vue/src/utils/css-escape.spec.js +0 -82
  535. package/src/vendor/bootstrap-vue/src/utils/dom.js +0 -308
  536. package/src/vendor/bootstrap-vue/src/utils/dom.spec.js +0 -291
  537. package/src/vendor/bootstrap-vue/src/utils/element-to-vue-instance-registry.js +0 -40
  538. package/src/vendor/bootstrap-vue/src/utils/env.js +0 -15
  539. package/src/vendor/bootstrap-vue/src/utils/events.js +0 -71
  540. package/src/vendor/bootstrap-vue/src/utils/events.spec.js +0 -41
  541. package/src/vendor/bootstrap-vue/src/utils/get-event-root.js +0 -3
  542. package/src/vendor/bootstrap-vue/src/utils/get-instance-from-directive.js +0 -4
  543. package/src/vendor/bootstrap-vue/src/utils/get-scope-id.js +0 -6
  544. package/src/vendor/bootstrap-vue/src/utils/get.js +0 -64
  545. package/src/vendor/bootstrap-vue/src/utils/get.spec.js +0 -109
  546. package/src/vendor/bootstrap-vue/src/utils/html.js +0 -8
  547. package/src/vendor/bootstrap-vue/src/utils/identity.js +0 -1
  548. package/src/vendor/bootstrap-vue/src/utils/inspect.js +0 -51
  549. package/src/vendor/bootstrap-vue/src/utils/inspect.spec.js +0 -251
  550. package/src/vendor/bootstrap-vue/src/utils/locale.js +0 -34
  551. package/src/vendor/bootstrap-vue/src/utils/loose-equal.js +0 -57
  552. package/src/vendor/bootstrap-vue/src/utils/loose-equal.spec.js +0 -203
  553. package/src/vendor/bootstrap-vue/src/utils/loose-index-of.js +0 -11
  554. package/src/vendor/bootstrap-vue/src/utils/math.js +0 -11
  555. package/src/vendor/bootstrap-vue/src/utils/memoize.js +0 -10
  556. package/src/vendor/bootstrap-vue/src/utils/model.js +0 -29
  557. package/src/vendor/bootstrap-vue/src/utils/noop.js +0 -1
  558. package/src/vendor/bootstrap-vue/src/utils/normalize-slot.js +0 -44
  559. package/src/vendor/bootstrap-vue/src/utils/normalize-slot.spec.js +0 -63
  560. package/src/vendor/bootstrap-vue/src/utils/number.js +0 -19
  561. package/src/vendor/bootstrap-vue/src/utils/number.spec.js +0 -72
  562. package/src/vendor/bootstrap-vue/src/utils/object.js +0 -61
  563. package/src/vendor/bootstrap-vue/src/utils/object.spec.js +0 -61
  564. package/src/vendor/bootstrap-vue/src/utils/observe-dom.js +0 -77
  565. package/src/vendor/bootstrap-vue/src/utils/plugins.js +0 -169
  566. package/src/vendor/bootstrap-vue/src/utils/props.js +0 -92
  567. package/src/vendor/bootstrap-vue/src/utils/props.spec.js +0 -112
  568. package/src/vendor/bootstrap-vue/src/utils/router.js +0 -145
  569. package/src/vendor/bootstrap-vue/src/utils/router.spec.js +0 -248
  570. package/src/vendor/bootstrap-vue/src/utils/safe-vue-instance.js +0 -13
  571. package/src/vendor/bootstrap-vue/src/utils/stable-sort.js +0 -31
  572. package/src/vendor/bootstrap-vue/src/utils/string.js +0 -59
  573. package/src/vendor/bootstrap-vue/src/utils/string.spec.js +0 -65
  574. package/src/vendor/bootstrap-vue/src/utils/stringify-object-values.js +0 -31
  575. package/src/vendor/bootstrap-vue/src/utils/stringify-object-values.spec.js +0 -47
  576. package/src/vendor/bootstrap-vue/src/utils/warn.js +0 -42
  577. package/src/vendor/bootstrap-vue/src/utils/warn.spec.js +0 -54
  578. package/src/vendor/bootstrap-vue/src/vue-injections.d.ts +0 -13
  579. package/src/vendor/bootstrap-vue/src/vue.js +0 -126
@@ -1,1529 +0,0 @@
1
- import { createWrapper, mount } from '@vue/test-utils'
2
- import { waitNT, waitRAF } from '../../../tests/utils'
3
- import { BTooltip } from './tooltip'
4
-
5
- const MODAL_CLOSE_EVENT = 'bv::modal::hidden'
6
-
7
- // Our test application
8
- const App = {
9
- props: [
10
- 'target',
11
- 'triggers',
12
- 'show',
13
- 'noninteractive',
14
- 'disabled',
15
- 'noFade',
16
- 'title',
17
- 'titleAttr',
18
- 'btnDisabled',
19
- 'variant',
20
- 'customClass',
21
- 'delay',
22
- 'isModal'
23
- ],
24
- render(h) {
25
- const tipProps = {
26
- target: this.target || 'foo',
27
- triggers: this.triggers,
28
- show: this.show,
29
- noninteractive: this.noninteractive || false,
30
- disabled: this.disabled,
31
- noFade: this.noFade || false,
32
- title: this.title || null,
33
- variant: this.variant,
34
- customClass: this.customClass,
35
- delay: this.delay
36
- }
37
- const wrapperData = {
38
- attrs: { id: 'wrapper' },
39
- // Class to simulate being in a modal
40
- class: { 'modal-content': !!this.isModal }
41
- }
42
- return h('article', wrapperData, [
43
- h(
44
- 'button',
45
- {
46
- attrs: {
47
- id: 'foo',
48
- type: 'button',
49
- disabled: this.btnDisabled || null,
50
- title: this.titleAttr || null
51
- },
52
- ref: 'target'
53
- },
54
- 'text'
55
- ),
56
- typeof this.$slots.default === `undefined` || !this.$slots.default
57
- ? h(BTooltip, { props: tipProps })
58
- : h(BTooltip, { props: tipProps }, this.$slots.default)
59
- ])
60
- }
61
- }
62
-
63
- // Note: `wrapper.destroy()` MUST be called at the end of each test in order for
64
- // the next test to function properly!
65
- describe('b-tooltip', () => {
66
- const originalCreateRange = document.createRange
67
- const origGetBCR = Element.prototype.getBoundingClientRect
68
-
69
- beforeEach(() => {
70
- // https://github.com/FezVrasta/popper.js/issues/478#issuecomment-407422016
71
- // Hack to make Popper not bork out during tests
72
- // Note popper still does not do any positioning calculation in JSDOM though
73
- // So we cannot test actual positioning, just detect when it is open
74
- document.createRange = () => ({
75
- setStart: () => {},
76
- setEnd: () => {},
77
- commonAncestorContainer: {
78
- nodeName: 'BODY',
79
- ownerDocument: document
80
- }
81
- })
82
- // Mock `getBoundingClientRect()` so that the `isVisible(el)` test returns `true`
83
- // Needed for visibility checks of trigger element, etc
84
- Element.prototype.getBoundingClientRect = jest.fn(() => ({
85
- width: 24,
86
- height: 24,
87
- top: 0,
88
- left: 0,
89
- bottom: 0,
90
- right: 0
91
- }))
92
- })
93
-
94
- afterEach(() => {
95
- // Reset overrides
96
- document.createRange = originalCreateRange
97
- Element.prototype.getBoundingClientRect = origGetBCR
98
- return waitRAF()
99
- })
100
-
101
- it('has expected default structure', async () => {
102
- const wrapper = mount(App, {
103
- attachTo: document.body,
104
- propsData: {
105
- triggers: 'click'
106
- },
107
- slots: {
108
- default: 'title'
109
- }
110
- })
111
-
112
- expect(wrapper.vm).toBeDefined()
113
- await waitNT(wrapper.vm)
114
-
115
- expect(wrapper.element.tagName).toBe('ARTICLE')
116
- expect(wrapper.attributes('id')).toBeDefined()
117
- expect(wrapper.attributes('id')).toEqual('wrapper')
118
- expect(wrapper.classes()).not.toContain('modal-content')
119
-
120
- // The trigger button
121
- const $button = wrapper.find('button')
122
- expect($button.exists()).toBe(true)
123
- expect($button.attributes('id')).toBeDefined()
124
- expect($button.attributes('id')).toEqual('foo')
125
- expect($button.attributes('title')).toBeUndefined()
126
- expect($button.attributes('data-original-title')).toBeUndefined()
127
- expect($button.attributes('aria-describedby')).toBeUndefined()
128
-
129
- // <b-tooltip> wrapper
130
- const $tipHolder = wrapper.findComponent(BTooltip)
131
- expect($tipHolder.exists()).toBe(true)
132
- expect($tipHolder.element.nodeType).toEqual(Node.COMMENT_NODE)
133
-
134
- wrapper.destroy()
135
- })
136
-
137
- it('initially open has expected structure', async () => {
138
- jest.useFakeTimers()
139
- const wrapper = mount(App, {
140
- attachTo: document.body,
141
- propsData: {
142
- triggers: 'click',
143
- show: true
144
- },
145
- slots: {
146
- default: 'title'
147
- }
148
- })
149
-
150
- expect(wrapper.vm).toBeDefined()
151
- await waitNT(wrapper.vm)
152
- await waitRAF()
153
- await waitNT(wrapper.vm)
154
- await waitRAF()
155
- jest.runOnlyPendingTimers()
156
-
157
- expect(wrapper.element.tagName).toBe('ARTICLE')
158
- expect(wrapper.attributes('id')).toBeDefined()
159
- expect(wrapper.attributes('id')).toEqual('wrapper')
160
-
161
- // The trigger button
162
- const $button = wrapper.find('button')
163
- expect($button.exists()).toBe(true)
164
- expect($button.attributes('id')).toBeDefined()
165
- expect($button.attributes('id')).toEqual('foo')
166
- expect($button.attributes('title')).toBeUndefined()
167
- expect($button.attributes('data-original-title')).toBeUndefined()
168
- expect($button.attributes('aria-describedby')).toBeDefined()
169
- // ID of the tooltip that will be in the body
170
- const adb = $button.attributes('aria-describedby')
171
-
172
- // <b-tooltip> wrapper
173
- const $tipHolder = wrapper.findComponent(BTooltip)
174
- expect($tipHolder.exists()).toBe(true)
175
- expect($tipHolder.element.nodeType).toEqual(Node.COMMENT_NODE)
176
-
177
- // Find the tooltip element in the document
178
- const tip = document.getElementById(adb)
179
- expect(tip).not.toBe(null)
180
- expect(tip).toBeInstanceOf(HTMLElement)
181
- expect(tip.tagName).toEqual('DIV')
182
- expect(tip.classList.contains('tooltip')).toBe(true)
183
- expect(tip.classList.contains('b-tooltip')).toBe(true)
184
- expect(tip.classList.contains('interactive')).toBe(false)
185
-
186
- // Hide the tooltip
187
- await wrapper.setProps({ show: false })
188
- await waitRAF()
189
- await waitRAF()
190
- jest.runOnlyPendingTimers()
191
- await waitNT(wrapper.vm)
192
- await waitRAF()
193
-
194
- expect($button.attributes('aria-describedby')).toBeUndefined()
195
-
196
- // Tooltip element should not be in the document
197
- expect(document.body.contains(tip)).toBe(false)
198
- expect(document.querySelector(adb)).toBe(null)
199
-
200
- // Show the tooltip
201
- await wrapper.setProps({ show: true })
202
- await waitRAF()
203
- await waitRAF()
204
- jest.runOnlyPendingTimers()
205
- await waitNT(wrapper.vm)
206
- await waitRAF()
207
-
208
- expect($button.attributes('aria-describedby')).toBeDefined()
209
-
210
- // Note tip always has the same ID
211
- const tip2 = document.getElementById(adb)
212
- expect(tip2).not.toBe(null)
213
- expect(tip2).toBeInstanceOf(HTMLElement)
214
- expect(tip2.tagName).toEqual('DIV')
215
- expect(tip2.classList.contains('tooltip')).toBe(true)
216
- expect(tip2.classList.contains('b-tooltip')).toBe(true)
217
-
218
- wrapper.destroy()
219
- })
220
-
221
- it('title prop is reactive', async () => {
222
- jest.useFakeTimers()
223
- const wrapper = mount(App, {
224
- attachTo: document.body,
225
- propsData: {
226
- triggers: 'click',
227
- show: true,
228
- title: 'hello'
229
- }
230
- })
231
-
232
- expect(wrapper.vm).toBeDefined()
233
- await waitNT(wrapper.vm)
234
- await waitRAF()
235
- await waitNT(wrapper.vm)
236
- await waitRAF()
237
- await waitNT(wrapper.vm)
238
- await waitRAF()
239
- jest.runOnlyPendingTimers()
240
- await waitNT(wrapper.vm)
241
- await waitRAF()
242
-
243
- expect(wrapper.element.tagName).toBe('ARTICLE')
244
- expect(wrapper.attributes('id')).toBeDefined()
245
- expect(wrapper.attributes('id')).toEqual('wrapper')
246
-
247
- // The trigger button
248
- const $button = wrapper.find('button')
249
- expect($button.exists()).toBe(true)
250
- expect($button.attributes('id')).toBeDefined()
251
- expect($button.attributes('id')).toEqual('foo')
252
- expect($button.attributes('title')).toBeUndefined()
253
- expect($button.attributes('data-original-title')).toBeUndefined()
254
- expect($button.attributes('aria-describedby')).toBeDefined()
255
- // ID of the tooltip that will be in the body
256
- const adb = $button.attributes('aria-describedby')
257
-
258
- // <b-tooltip> wrapper
259
- const $tipHolder = wrapper.findComponent(BTooltip)
260
- expect($tipHolder.exists()).toBe(true)
261
- expect($tipHolder.element.nodeType).toEqual(Node.COMMENT_NODE)
262
-
263
- // Find the tooltip element in the document
264
- const tip = document.getElementById(adb)
265
- expect(tip).not.toBe(null)
266
- expect(tip).toBeInstanceOf(HTMLElement)
267
- const $tip = createWrapper(tip)
268
- expect($tip.element.tagName).toBe('DIV')
269
- expect($tip.classes()).toContain('tooltip')
270
- expect($tip.classes()).toContain('b-tooltip')
271
- // Should contain our title prop value
272
- expect($tip.text()).toContain('hello')
273
-
274
- // Change the title prop
275
- await wrapper.setProps({ title: 'world' })
276
- await waitRAF()
277
- await waitRAF()
278
-
279
- // Tooltip element should still be in the document
280
- expect(document.body.contains(tip)).toBe(true)
281
- expect($tip.classes()).toContain('tooltip')
282
- expect($tip.classes()).toContain('b-tooltip')
283
- // Should contain the new updated content
284
- expect($tip.text()).toContain('world')
285
-
286
- wrapper.destroy()
287
- })
288
-
289
- it('providing the trigger element by function works', async () => {
290
- jest.useFakeTimers()
291
- const wrapper = mount(App, {
292
- attachTo: document.body,
293
- propsData: {
294
- target: () => wrapper.vm.$refs.target,
295
- triggers: 'click',
296
- show: false
297
- },
298
- slots: {
299
- default: 'title'
300
- }
301
- })
302
-
303
- expect(wrapper.vm).toBeDefined()
304
- await waitNT(wrapper.vm)
305
- await waitRAF()
306
- await waitNT(wrapper.vm)
307
- await waitRAF()
308
- jest.runOnlyPendingTimers()
309
-
310
- expect(wrapper.element.tagName).toBe('ARTICLE')
311
- expect(wrapper.attributes('id')).toBeDefined()
312
- expect(wrapper.attributes('id')).toEqual('wrapper')
313
-
314
- // The trigger button
315
- const $button = wrapper.find('button')
316
- expect($button.exists()).toBe(true)
317
- expect($button.attributes('id')).toBeDefined()
318
- expect($button.attributes('id')).toEqual('foo')
319
- expect($button.attributes('aria-describedby')).toBeUndefined()
320
-
321
- // <b-tooltip> wrapper
322
- const $tipHolder = wrapper.findComponent(BTooltip)
323
- expect($tipHolder.exists()).toBe(true)
324
-
325
- // Activate tooltip by trigger
326
- await $button.trigger('click')
327
- await waitRAF()
328
- await waitRAF()
329
- jest.runOnlyPendingTimers()
330
- await waitNT(wrapper.vm)
331
- await waitRAF()
332
-
333
- expect($button.attributes('id')).toBeDefined()
334
- expect($button.attributes('id')).toEqual('foo')
335
- expect($button.attributes('aria-describedby')).toBeDefined()
336
- // ID of the tooltip that will be in the body
337
- const adb = $button.attributes('aria-describedby')
338
-
339
- // Find the tooltip element in the document
340
- const tip = document.getElementById(adb)
341
- expect(tip).not.toBe(null)
342
- expect(tip).toBeInstanceOf(HTMLElement)
343
- expect(tip.tagName).toEqual('DIV')
344
- expect(tip.classList.contains('tooltip')).toBe(true)
345
- expect(tip.classList.contains('b-tooltip')).toBe(true)
346
-
347
- wrapper.destroy()
348
- })
349
-
350
- it('activating trigger element (click) opens tooltip', async () => {
351
- jest.useFakeTimers()
352
- const wrapper = mount(App, {
353
- attachTo: document.body,
354
- propsData: {
355
- triggers: 'click',
356
- show: false
357
- },
358
- slots: {
359
- default: 'title'
360
- }
361
- })
362
-
363
- expect(wrapper.vm).toBeDefined()
364
- await waitNT(wrapper.vm)
365
- await waitRAF()
366
- await waitNT(wrapper.vm)
367
- await waitRAF()
368
- jest.runOnlyPendingTimers()
369
-
370
- expect(wrapper.element.tagName).toBe('ARTICLE')
371
- expect(wrapper.attributes('id')).toBeDefined()
372
- expect(wrapper.attributes('id')).toEqual('wrapper')
373
-
374
- // The trigger button
375
- const $button = wrapper.find('button')
376
- expect($button.exists()).toBe(true)
377
- expect($button.attributes('id')).toBeDefined()
378
- expect($button.attributes('id')).toEqual('foo')
379
- expect($button.attributes('aria-describedby')).toBeUndefined()
380
-
381
- // <b-tooltip> wrapper
382
- const $tipHolder = wrapper.findComponent(BTooltip)
383
- expect($tipHolder.exists()).toBe(true)
384
-
385
- // Activate tooltip by trigger
386
- await $button.trigger('click')
387
- await waitRAF()
388
- await waitRAF()
389
- jest.runOnlyPendingTimers()
390
- await waitNT(wrapper.vm)
391
- await waitRAF()
392
-
393
- expect($button.attributes('id')).toBeDefined()
394
- expect($button.attributes('id')).toEqual('foo')
395
- expect($button.attributes('aria-describedby')).toBeDefined()
396
- // ID of the tooltip that will be in the body
397
- const adb = $button.attributes('aria-describedby')
398
-
399
- // Find the tooltip element in the document
400
- const tip = document.getElementById(adb)
401
- expect(tip).not.toBe(null)
402
- expect(tip).toBeInstanceOf(HTMLElement)
403
- expect(tip.tagName).toEqual('DIV')
404
- expect(tip.classList.contains('tooltip')).toBe(true)
405
- expect(tip.classList.contains('b-tooltip')).toBe(true)
406
-
407
- wrapper.destroy()
408
- })
409
-
410
- it('activating trigger element (focus) opens tooltip', async () => {
411
- jest.useFakeTimers()
412
- const wrapper = mount(App, {
413
- attachTo: document.body,
414
- propsData: {
415
- triggers: 'focus',
416
- show: false,
417
- delay: 0
418
- },
419
- slots: {
420
- default: 'title'
421
- }
422
- })
423
-
424
- expect(wrapper.vm).toBeDefined()
425
- await waitNT(wrapper.vm)
426
- await waitRAF()
427
- await waitNT(wrapper.vm)
428
- await waitRAF()
429
- await waitNT(wrapper.vm)
430
- await waitRAF()
431
- jest.runOnlyPendingTimers()
432
- await waitNT(wrapper.vm)
433
- await waitRAF()
434
-
435
- expect(wrapper.element.tagName).toBe('ARTICLE')
436
- expect(wrapper.attributes('id')).toBeDefined()
437
- expect(wrapper.attributes('id')).toEqual('wrapper')
438
-
439
- // The trigger button
440
- const $button = wrapper.find('button')
441
- expect($button.exists()).toBe(true)
442
- expect($button.attributes('id')).toBeDefined()
443
- expect($button.attributes('id')).toEqual('foo')
444
- expect($button.attributes('aria-describedby')).toBeUndefined()
445
-
446
- // <b-tooltip> wrapper
447
- const $tipHolder = wrapper.findComponent(BTooltip)
448
- expect($tipHolder.exists()).toBe(true)
449
-
450
- // Activate tooltip by trigger
451
- await $button.trigger('focusin')
452
- await waitRAF()
453
- await waitRAF()
454
- jest.runOnlyPendingTimers()
455
- await waitNT(wrapper.vm)
456
- await waitRAF()
457
-
458
- expect($button.attributes('id')).toBeDefined()
459
- expect($button.attributes('id')).toEqual('foo')
460
- expect($button.attributes('aria-describedby')).toBeDefined()
461
- // ID of the tooltip that will be in the body
462
- const adb = $button.attributes('aria-describedby')
463
-
464
- // Find the tooltip element in the document
465
- const tip = document.getElementById(adb)
466
- expect(tip).not.toBe(null)
467
- expect(tip).toBeInstanceOf(HTMLElement)
468
- expect(tip.tagName).toEqual('DIV')
469
- expect(tip.classList.contains('tooltip')).toBe(true)
470
- expect(tip.classList.contains('b-tooltip')).toBe(true)
471
-
472
- // Deactivate tooltip by trigger
473
- await $button.trigger('focusout', { relatedTarget: document.body })
474
- await waitRAF()
475
- await waitRAF()
476
- jest.runOnlyPendingTimers()
477
- await waitNT(wrapper.vm)
478
- await waitRAF()
479
-
480
- // Tooltip element should not be in the document
481
- expect($button.attributes('aria-describedby')).toBeUndefined()
482
- expect(document.body.contains(tip)).toBe(false)
483
- expect(document.getElementById(adb)).toBe(null)
484
-
485
- wrapper.destroy()
486
- })
487
-
488
- it('activating trigger element (hover) opens tooltip', async () => {
489
- jest.useFakeTimers()
490
- const wrapper = mount(App, {
491
- attachTo: document.body,
492
- propsData: {
493
- triggers: 'hover',
494
- show: false,
495
- // Add no fade for coverage
496
- noFade: true
497
- },
498
- slots: {
499
- default: 'title'
500
- }
501
- })
502
-
503
- expect(wrapper.vm).toBeDefined()
504
- await waitNT(wrapper.vm)
505
- await waitRAF()
506
- await waitNT(wrapper.vm)
507
- await waitRAF()
508
- jest.runOnlyPendingTimers()
509
- await waitNT(wrapper.vm)
510
- await waitRAF()
511
-
512
- expect(wrapper.element.tagName).toBe('ARTICLE')
513
- expect(wrapper.attributes('id')).toBeDefined()
514
- expect(wrapper.attributes('id')).toEqual('wrapper')
515
-
516
- // The trigger button
517
- const $button = wrapper.find('button')
518
- expect($button.exists()).toBe(true)
519
- expect($button.attributes('id')).toBeDefined()
520
- expect($button.attributes('id')).toEqual('foo')
521
- expect($button.attributes('aria-describedby')).toBeUndefined()
522
-
523
- // <b-tooltip> wrapper
524
- const $tipHolder = wrapper.findComponent(BTooltip)
525
- expect($tipHolder.exists()).toBe(true)
526
-
527
- // Activate tooltip by trigger
528
- await $button.trigger('mouseenter')
529
- await waitRAF()
530
- await waitRAF()
531
- jest.runOnlyPendingTimers()
532
- await waitNT(wrapper.vm)
533
- await waitRAF()
534
-
535
- expect($button.attributes('id')).toBeDefined()
536
- expect($button.attributes('id')).toEqual('foo')
537
- expect($button.attributes('aria-describedby')).toBeDefined()
538
- // ID of the tooltip that will be in the body
539
- const adb = $button.attributes('aria-describedby')
540
-
541
- // Find the tooltip element in the document
542
- const tip = document.getElementById(adb)
543
- expect(tip).not.toBe(null)
544
- expect(tip).toBeInstanceOf(HTMLElement)
545
- expect(tip.tagName).toEqual('DIV')
546
- expect(tip.classList.contains('tooltip')).toBe(true)
547
- expect(tip.classList.contains('b-tooltip')).toBe(true)
548
-
549
- // Deactivate tooltip by trigger
550
- await $button.trigger('mouseleave', { relatedTarget: document.body })
551
- await waitRAF()
552
- await waitRAF()
553
- jest.runOnlyPendingTimers()
554
- await waitNT(wrapper.vm)
555
- await waitRAF()
556
- await waitNT(wrapper.vm)
557
- await waitRAF()
558
-
559
- // Tooltip element should not be in the document
560
- expect($button.attributes('aria-describedby')).toBeUndefined()
561
- expect(document.body.contains(tip)).toBe(false)
562
- expect(document.getElementById(adb)).toBe(null)
563
-
564
- wrapper.destroy()
565
- })
566
-
567
- it('disabled tooltip does not open on trigger', async () => {
568
- jest.useFakeTimers()
569
- const wrapper = mount(App, {
570
- attachTo: document.body,
571
- propsData: {
572
- triggers: 'click',
573
- show: false,
574
- disabled: true
575
- },
576
- slots: {
577
- default: 'title'
578
- }
579
- })
580
-
581
- expect(wrapper.vm).toBeDefined()
582
- await waitNT(wrapper.vm)
583
- await waitRAF()
584
- await waitNT(wrapper.vm)
585
- await waitRAF()
586
- jest.runOnlyPendingTimers()
587
- await waitNT(wrapper.vm)
588
- await waitRAF()
589
-
590
- expect(wrapper.element.tagName).toBe('ARTICLE')
591
- expect(wrapper.attributes('id')).toBeDefined()
592
- expect(wrapper.attributes('id')).toEqual('wrapper')
593
-
594
- // The trigger button
595
- const $button = wrapper.find('button')
596
- expect($button.exists()).toBe(true)
597
- expect($button.attributes('id')).toBeDefined()
598
- expect($button.attributes('id')).toEqual('foo')
599
- expect($button.attributes('aria-describedby')).toBeUndefined()
600
-
601
- // b-tooltip wrapper
602
- const $tipHolder = wrapper.findComponent(BTooltip)
603
- expect($tipHolder.exists()).toBe(true)
604
-
605
- // Try to activate tooltip by trigger
606
- await $button.trigger('click')
607
- await waitRAF()
608
- await waitRAF()
609
- jest.runOnlyPendingTimers()
610
- await waitNT(wrapper.vm)
611
- await waitRAF()
612
-
613
- // Tooltip should not have opened
614
- expect($button.attributes('aria-describedby')).toBeUndefined()
615
-
616
- // Now enable the tooltip
617
- await wrapper.setProps({ disabled: false })
618
- await waitRAF()
619
- await waitRAF()
620
- jest.runOnlyPendingTimers()
621
- await waitNT(wrapper.vm)
622
- await waitRAF()
623
-
624
- // Try to activate tooltip by trigger
625
- await $button.trigger('click')
626
- await waitRAF()
627
- await waitRAF()
628
- jest.runOnlyPendingTimers()
629
- await waitNT(wrapper.vm)
630
- await waitRAF()
631
- await waitNT(wrapper.vm)
632
- await waitRAF()
633
-
634
- expect($button.attributes('aria-describedby')).toBeDefined()
635
- const adb = $button.attributes('aria-describedby')
636
-
637
- // Find the tooltip element in the document
638
- const tip = document.getElementById(adb)
639
- expect(tip).not.toBe(null)
640
- expect(tip).toBeInstanceOf(HTMLElement)
641
- expect(tip.tagName).toEqual('DIV')
642
- expect(tip.classList.contains('tooltip')).toBe(true)
643
-
644
- // Now disable the tooltip
645
- await wrapper.setProps({ disabled: true })
646
- await waitRAF()
647
- await waitRAF()
648
- jest.runOnlyPendingTimers()
649
- await waitNT(wrapper.vm)
650
- await waitRAF()
651
- await waitNT(wrapper.vm)
652
- await waitRAF()
653
-
654
- // Try to close tooltip by trigger
655
- await $button.trigger('click')
656
- await waitRAF()
657
- await waitRAF()
658
- jest.runOnlyPendingTimers()
659
- await waitNT(wrapper.vm)
660
- await waitRAF()
661
- await waitNT(wrapper.vm)
662
- await waitRAF()
663
-
664
- // expect($button.attributes('aria-describedby')).toBeUndefined()
665
-
666
- wrapper.destroy()
667
- })
668
-
669
- it('closes/opens on instance events', async () => {
670
- jest.useFakeTimers()
671
- const wrapper = mount(App, {
672
- attachTo: document.body,
673
- propsData: {
674
- triggers: 'click',
675
- show: true,
676
- disabled: false,
677
- titleAttr: 'ignored'
678
- },
679
- slots: {
680
- default: 'title'
681
- }
682
- })
683
-
684
- expect(wrapper.vm).toBeDefined()
685
- await waitNT(wrapper.vm)
686
- await waitRAF()
687
- await waitNT(wrapper.vm)
688
- await waitRAF()
689
- jest.runOnlyPendingTimers()
690
- await waitNT(wrapper.vm)
691
- await waitRAF()
692
-
693
- expect(wrapper.element.tagName).toBe('ARTICLE')
694
- expect(wrapper.attributes('id')).toBeDefined()
695
- expect(wrapper.attributes('id')).toEqual('wrapper')
696
-
697
- // The trigger button
698
- const $button = wrapper.find('button')
699
- expect($button.exists()).toBe(true)
700
- const adb = $button.attributes('aria-describedby')
701
-
702
- // <b-tooltip> wrapper
703
- const $tipHolder = wrapper.findComponent(BTooltip)
704
- expect($tipHolder.exists()).toBe(true)
705
-
706
- // Find the tooltip element in the document
707
- const tip = document.getElementById(adb)
708
- expect(tip).not.toBe(null)
709
- expect(tip).toBeInstanceOf(HTMLElement)
710
- expect(tip.tagName).toEqual('DIV')
711
- expect(tip.classList.contains('tooltip')).toBe(true)
712
- expect(tip.classList.contains('b-tooltip')).toBe(true)
713
-
714
- // Hide the tooltip by emitting event on instance
715
- const bTooltip = wrapper.findComponent(BTooltip)
716
- expect(bTooltip.exists()).toBe(true)
717
- bTooltip.vm.$emit('close')
718
- await waitNT(wrapper.vm)
719
- await waitRAF()
720
- await waitNT(wrapper.vm)
721
- await waitRAF()
722
- jest.runOnlyPendingTimers()
723
- await waitNT(wrapper.vm)
724
- await waitRAF()
725
-
726
- expect($button.attributes('aria-describedby')).toBeUndefined()
727
-
728
- // Tooltip element should not be in the document
729
- expect(document.body.contains(tip)).toBe(false)
730
- expect(document.getElementById(adb)).toBe(null)
731
-
732
- // Show the tooltip by emitting event on instance
733
- bTooltip.vm.$emit('open')
734
-
735
- await waitNT(wrapper.vm)
736
- await waitRAF()
737
- await waitNT(wrapper.vm)
738
- await waitRAF()
739
- jest.runOnlyPendingTimers()
740
- await waitNT(wrapper.vm)
741
- await waitRAF()
742
-
743
- // Tooltip element should be in the document
744
- expect($button.attributes('aria-describedby')).toBeDefined()
745
- expect(document.getElementById(adb)).not.toBe(null)
746
-
747
- wrapper.destroy()
748
- })
749
-
750
- it('closes on $root close specific ID event', async () => {
751
- jest.useFakeTimers()
752
- const wrapper = mount(App, {
753
- attachTo: document.body,
754
- propsData: {
755
- triggers: 'click',
756
- show: true,
757
- disabled: false,
758
- titleAttr: 'ignored'
759
- },
760
- slots: {
761
- default: 'title'
762
- }
763
- })
764
-
765
- expect(wrapper.vm).toBeDefined()
766
- await waitNT(wrapper.vm)
767
- await waitRAF()
768
- await waitNT(wrapper.vm)
769
- await waitRAF()
770
- jest.runOnlyPendingTimers()
771
- await waitNT(wrapper.vm)
772
- await waitRAF()
773
-
774
- expect(wrapper.element.tagName).toBe('ARTICLE')
775
- expect(wrapper.attributes('id')).toBeDefined()
776
- expect(wrapper.attributes('id')).toEqual('wrapper')
777
-
778
- // The trigger button
779
- const $button = wrapper.find('button')
780
- expect($button.exists()).toBe(true)
781
- expect($button.attributes('id')).toBeDefined()
782
- expect($button.attributes('id')).toEqual('foo')
783
- expect($button.attributes('title')).toBeDefined()
784
- expect($button.attributes('title')).toEqual('')
785
- expect($button.attributes('data-original-title')).toBeDefined()
786
- expect($button.attributes('data-original-title')).toEqual('ignored')
787
- expect($button.attributes('aria-describedby')).toBeDefined()
788
- // ID of the tooltip that will be in the body
789
- const adb = $button.attributes('aria-describedby')
790
-
791
- // <b-tooltip> wrapper
792
- const $tipHolder = wrapper.findComponent(BTooltip)
793
- expect($tipHolder.exists()).toBe(true)
794
-
795
- // Find the tooltip element in the document
796
- const tip = document.getElementById(adb)
797
- expect(tip).not.toBe(null)
798
- expect(tip).toBeInstanceOf(HTMLElement)
799
- expect(tip.tagName).toEqual('DIV')
800
- expect(tip.classList.contains('tooltip')).toBe(true)
801
- expect(tip.classList.contains('b-tooltip')).toBe(true)
802
-
803
- // Hide the tooltip by emitting root event with correct ID (forceHide)
804
- wrapper.vm.$root.$emit('bv::hide::tooltip', 'foo')
805
- await waitNT(wrapper.vm)
806
- await waitRAF()
807
- await waitNT(wrapper.vm)
808
- await waitRAF()
809
- jest.runOnlyPendingTimers()
810
- await waitNT(wrapper.vm)
811
- await waitRAF()
812
-
813
- expect($button.attributes('aria-describedby')).toBeUndefined()
814
-
815
- // Tooltip element should not be in the document
816
- expect(document.body.contains(tip)).toBe(false)
817
- expect(document.getElementById(adb)).toBe(null)
818
-
819
- wrapper.destroy()
820
- })
821
-
822
- it('does not close on $root close specific other ID event', async () => {
823
- jest.useFakeTimers()
824
- const wrapper = mount(App, {
825
- attachTo: document.body,
826
- propsData: {
827
- triggers: 'click',
828
- show: true,
829
- disabled: false,
830
- titleAttr: 'ignored'
831
- },
832
- slots: {
833
- default: 'title'
834
- }
835
- })
836
-
837
- expect(wrapper.vm).toBeDefined()
838
- await waitNT(wrapper.vm)
839
- await waitRAF()
840
- await waitNT(wrapper.vm)
841
- await waitRAF()
842
- jest.runOnlyPendingTimers()
843
- await waitNT(wrapper.vm)
844
- await waitRAF()
845
-
846
- expect(wrapper.element.tagName).toBe('ARTICLE')
847
- expect(wrapper.attributes('id')).toBeDefined()
848
- expect(wrapper.attributes('id')).toEqual('wrapper')
849
-
850
- // The trigger button
851
- const $button = wrapper.find('button')
852
- expect($button.exists()).toBe(true)
853
- expect($button.attributes('id')).toBeDefined()
854
- expect($button.attributes('id')).toEqual('foo')
855
- expect($button.attributes('title')).toBeDefined()
856
- expect($button.attributes('title')).toEqual('')
857
- expect($button.attributes('data-original-title')).toBeDefined()
858
- expect($button.attributes('data-original-title')).toEqual('ignored')
859
- expect($button.attributes('aria-describedby')).toBeDefined()
860
- // ID of the tooltip that will be in the body
861
- const adb = $button.attributes('aria-describedby')
862
-
863
- // b-tooltip wrapper
864
- const $tipHolder = wrapper.findComponent(BTooltip)
865
- expect($tipHolder.exists()).toBe(true)
866
-
867
- // Find the tooltip element in the document
868
- const tip = document.getElementById(adb)
869
- expect(tip).not.toBe(null)
870
- expect(tip).toBeInstanceOf(HTMLElement)
871
- expect(tip.tagName).toEqual('DIV')
872
- expect(tip.classList.contains('tooltip')).toBe(true)
873
-
874
- // Tooltip should ignore when ID is not its own
875
- wrapper.vm.$root.$emit('bv::hide::tooltip', 'wrong-id')
876
- await waitNT(wrapper.vm)
877
- await waitRAF()
878
- await waitNT(wrapper.vm)
879
- await waitRAF()
880
- jest.runOnlyPendingTimers()
881
- await waitNT(wrapper.vm)
882
- await waitRAF()
883
-
884
- expect($button.attributes('aria-describedby')).toBeDefined()
885
-
886
- // Tooltip element should still be in the document
887
- expect(document.body.contains(tip)).toBe(true)
888
- expect(document.getElementById(adb)).not.toBe(null)
889
-
890
- wrapper.destroy()
891
- })
892
-
893
- it('closes on $root close all event', async () => {
894
- jest.useFakeTimers()
895
- const wrapper = mount(App, {
896
- attachTo: document.body,
897
- propsData: {
898
- triggers: 'click',
899
- show: true,
900
- disabled: false,
901
- titleAttr: 'ignored'
902
- },
903
- slots: {
904
- default: 'title'
905
- }
906
- })
907
-
908
- expect(wrapper.vm).toBeDefined()
909
- await waitNT(wrapper.vm)
910
- await waitRAF()
911
- await waitNT(wrapper.vm)
912
- await waitRAF()
913
- jest.runOnlyPendingTimers()
914
- await waitNT(wrapper.vm)
915
- await waitRAF()
916
-
917
- expect(wrapper.element.tagName).toBe('ARTICLE')
918
- expect(wrapper.attributes('id')).toBeDefined()
919
- expect(wrapper.attributes('id')).toEqual('wrapper')
920
-
921
- // The trigger button
922
- const $button = wrapper.find('button')
923
- expect($button.exists()).toBe(true)
924
- expect($button.attributes('id')).toBeDefined()
925
- expect($button.attributes('id')).toEqual('foo')
926
- expect($button.attributes('title')).toBeDefined()
927
- expect($button.attributes('title')).toEqual('')
928
- expect($button.attributes('data-original-title')).toBeDefined()
929
- expect($button.attributes('data-original-title')).toEqual('ignored')
930
- expect($button.attributes('aria-describedby')).toBeDefined()
931
-
932
- // ID of the tooltip that will be in the body
933
- const adb = $button.attributes('aria-describedby')
934
-
935
- // <b-tooltip> wrapper
936
- const $tipHolder = wrapper.findComponent(BTooltip)
937
- expect($tipHolder.exists()).toBe(true)
938
-
939
- // Find the tooltip element in the document
940
- const tip = document.getElementById(adb)
941
- expect(tip).not.toBe(null)
942
- expect(tip).toBeInstanceOf(HTMLElement)
943
- expect(tip.tagName).toEqual('DIV')
944
- expect(tip.classList.contains('tooltip')).toBe(true)
945
- expect(tip.classList.contains('b-tooltip')).toBe(true)
946
-
947
- // Hide the tooltip by emitting root event with no ID (forceHide)
948
- wrapper.vm.$root.$emit('bv::hide::tooltip')
949
- await waitNT(wrapper.vm)
950
- await waitRAF()
951
- await waitNT(wrapper.vm)
952
- await waitRAF()
953
- jest.runOnlyPendingTimers()
954
- await waitNT(wrapper.vm)
955
- await waitRAF()
956
-
957
- expect($button.attributes('aria-describedby')).toBeUndefined()
958
-
959
- // Tooltip element should not be in the document
960
- expect(document.body.contains(tip)).toBe(false)
961
- expect(document.getElementById(adb)).toBe(null)
962
-
963
- wrapper.destroy()
964
- })
965
-
966
- it('does not close on $root modal hidden event by default', async () => {
967
- jest.useFakeTimers()
968
- const wrapper = mount(App, {
969
- attachTo: document.body,
970
- propsData: {
971
- triggers: 'click',
972
- show: true,
973
- disabled: false,
974
- titleAttr: 'ignored'
975
- },
976
- slots: {
977
- default: 'title'
978
- }
979
- })
980
-
981
- expect(wrapper.vm).toBeDefined()
982
- await waitNT(wrapper.vm)
983
- await waitRAF()
984
- await waitNT(wrapper.vm)
985
- await waitRAF()
986
- jest.runOnlyPendingTimers()
987
- await waitNT(wrapper.vm)
988
- await waitRAF()
989
-
990
- expect(wrapper.element.tagName).toBe('ARTICLE')
991
- expect(wrapper.attributes('id')).toBeDefined()
992
- expect(wrapper.attributes('id')).toEqual('wrapper')
993
- expect(wrapper.classes()).not.toContain('modal-content')
994
-
995
- // The trigger button
996
- const $button = wrapper.find('button')
997
- expect($button.exists()).toBe(true)
998
- expect($button.attributes('id')).toBeDefined()
999
- expect($button.attributes('id')).toEqual('foo')
1000
- expect($button.attributes('title')).toBeDefined()
1001
- expect($button.attributes('title')).toEqual('')
1002
- expect($button.attributes('data-original-title')).toBeDefined()
1003
- expect($button.attributes('data-original-title')).toEqual('ignored')
1004
- expect($button.attributes('aria-describedby')).toBeDefined()
1005
- // ID of the tooltip that will be in the body
1006
- const adb = $button.attributes('aria-describedby')
1007
-
1008
- // b-tooltip wrapper
1009
- const $tipHolder = wrapper.findComponent(BTooltip)
1010
- expect($tipHolder.exists()).toBe(true)
1011
-
1012
- // Find the tooltip element in the document
1013
- const tip = document.getElementById(adb)
1014
- expect(tip).not.toBe(null)
1015
- expect(tip).toBeInstanceOf(HTMLElement)
1016
- expect(tip.tagName).toEqual('DIV')
1017
- expect(tip.classList.contains('tooltip')).toBe(true)
1018
-
1019
- // Tooltip should ignore when ID is not its own
1020
- wrapper.vm.$root.$emit(MODAL_CLOSE_EVENT, 'some-modal')
1021
- await waitNT(wrapper.vm)
1022
- await waitRAF()
1023
- await waitNT(wrapper.vm)
1024
- await waitRAF()
1025
- jest.runOnlyPendingTimers()
1026
- await waitNT(wrapper.vm)
1027
- await waitRAF()
1028
-
1029
- expect($button.attributes('aria-describedby')).toBeDefined()
1030
-
1031
- // Tooltip element should still be in the document
1032
- expect(document.body.contains(tip)).toBe(true)
1033
- expect(document.getElementById(adb)).not.toBe(null)
1034
-
1035
- wrapper.destroy()
1036
- })
1037
-
1038
- it('closes on $root modal hidden event when inside a modal', async () => {
1039
- jest.useFakeTimers()
1040
- const wrapper = mount(App, {
1041
- attachTo: document.body,
1042
- propsData: {
1043
- triggers: 'click',
1044
- show: true,
1045
- disabled: false,
1046
- titleAttr: 'ignored',
1047
- isModal: true
1048
- },
1049
- slots: {
1050
- default: 'title'
1051
- }
1052
- })
1053
-
1054
- expect(wrapper.vm).toBeDefined()
1055
- await waitNT(wrapper.vm)
1056
- await waitRAF()
1057
- await waitNT(wrapper.vm)
1058
- await waitRAF()
1059
- jest.runOnlyPendingTimers()
1060
- await waitNT(wrapper.vm)
1061
- await waitRAF()
1062
-
1063
- expect(wrapper.element.tagName).toBe('ARTICLE')
1064
- expect(wrapper.attributes('id')).toBeDefined()
1065
- expect(wrapper.attributes('id')).toEqual('wrapper')
1066
- expect(wrapper.classes()).toContain('modal-content')
1067
-
1068
- // The trigger button
1069
- const $button = wrapper.find('button')
1070
- expect($button.exists()).toBe(true)
1071
- expect($button.attributes('id')).toBeDefined()
1072
- expect($button.attributes('id')).toEqual('foo')
1073
- expect($button.attributes('title')).toBeDefined()
1074
- expect($button.attributes('title')).toEqual('')
1075
- expect($button.attributes('data-original-title')).toBeDefined()
1076
- expect($button.attributes('data-original-title')).toEqual('ignored')
1077
- expect($button.attributes('aria-describedby')).toBeDefined()
1078
- // ID of the tooltip that will be in the body
1079
- const adb = $button.attributes('aria-describedby')
1080
-
1081
- // b-tooltip wrapper
1082
- const $tipHolder = wrapper.findComponent(BTooltip)
1083
- expect($tipHolder.exists()).toBe(true)
1084
-
1085
- // Find the tooltip element in the document
1086
- const tip = document.getElementById(adb)
1087
- expect(tip).not.toBe(null)
1088
- expect(tip).toBeInstanceOf(HTMLElement)
1089
- expect(tip.tagName).toEqual('DIV')
1090
- expect(tip.classList.contains('tooltip')).toBe(true)
1091
-
1092
- // Tooltip should ignore when ID is not its own
1093
- wrapper.vm.$root.$emit(MODAL_CLOSE_EVENT, 'some-modal')
1094
- await waitNT(wrapper.vm)
1095
- await waitRAF()
1096
- await waitNT(wrapper.vm)
1097
- await waitRAF()
1098
- jest.runOnlyPendingTimers()
1099
- await waitNT(wrapper.vm)
1100
- await waitRAF()
1101
-
1102
- // Tooltip element should not be in the document
1103
- expect(document.body.contains(tip)).toBe(false)
1104
- expect(document.getElementById(adb)).toBe(null)
1105
-
1106
- wrapper.destroy()
1107
- })
1108
-
1109
- it('closes when trigger element is no longer visible', async () => {
1110
- jest.useFakeTimers()
1111
- // Prevent warns from appearing in the test logs
1112
- jest.spyOn(console, 'warn').mockImplementation(() => {})
1113
-
1114
- const wrapper = mount(App, {
1115
- attachTo: document.body,
1116
- propsData: {
1117
- triggers: 'click',
1118
- show: true,
1119
- disabled: false
1120
- },
1121
- slots: {
1122
- default: 'title'
1123
- }
1124
- })
1125
-
1126
- expect(wrapper.vm).toBeDefined()
1127
- await waitNT(wrapper.vm)
1128
- await waitRAF()
1129
- await waitNT(wrapper.vm)
1130
- await waitRAF()
1131
- jest.runOnlyPendingTimers()
1132
- await waitNT(wrapper.vm)
1133
- await waitRAF()
1134
- await waitNT(wrapper.vm)
1135
- await waitRAF()
1136
-
1137
- expect(wrapper.element.tagName).toBe('ARTICLE')
1138
- expect(wrapper.attributes('id')).toBeDefined()
1139
- expect(wrapper.attributes('id')).toEqual('wrapper')
1140
-
1141
- // The trigger button
1142
- const $button = wrapper.find('button')
1143
- expect($button.exists()).toBe(true)
1144
- expect($button.attributes('id')).toBeDefined()
1145
- expect($button.attributes('id')).toEqual('foo')
1146
- expect($button.attributes('aria-describedby')).toBeDefined()
1147
-
1148
- // ID of the tooltip that will be in the body
1149
- const adb = $button.attributes('aria-describedby')
1150
-
1151
- // b-tooltip wrapper
1152
- const $tipHolder = wrapper.findComponent(BTooltip)
1153
- expect($tipHolder.exists()).toBe(true)
1154
-
1155
- // Find the tooltip element in the document
1156
- const tip = document.getElementById(adb)
1157
- expect(tip).not.toBe(null)
1158
- expect(tip).toBeInstanceOf(HTMLElement)
1159
- expect(tip.tagName).toEqual('DIV')
1160
- expect(tip.classList.contains('tooltip')).toBe(true)
1161
-
1162
- // Hide the tooltip by removing the trigger button from DOM
1163
- $button.element.parentNode.removeChild($button.element)
1164
- await waitNT(wrapper.vm)
1165
- await waitRAF()
1166
- await waitNT(wrapper.vm)
1167
- await waitRAF()
1168
- jest.runOnlyPendingTimers()
1169
- await waitNT(wrapper.vm)
1170
- await waitRAF()
1171
- // The visibility check runs on an interval of 100ms
1172
- jest.runOnlyPendingTimers()
1173
- await waitNT(wrapper.vm)
1174
- await waitRAF()
1175
- jest.runOnlyPendingTimers()
1176
- await waitNT(wrapper.vm)
1177
- await waitRAF()
1178
- jest.runOnlyPendingTimers()
1179
- await waitNT(wrapper.vm)
1180
- await waitRAF()
1181
- await waitNT(wrapper.vm)
1182
- await waitRAF()
1183
-
1184
- // Tooltip element should not be in the document
1185
- expect(document.body.contains(tip)).toBe(false)
1186
- expect(document.getElementById('adb')).toBe(null)
1187
-
1188
- // Try and show element via root event (using ID of trigger button)
1189
- // Note that this generates a console warning
1190
- wrapper.vm.$root.$emit('bv::show::tooltip', 'foo')
1191
- await waitNT(wrapper.vm)
1192
- await waitRAF()
1193
- await waitNT(wrapper.vm)
1194
- await waitRAF()
1195
- jest.runOnlyPendingTimers()
1196
- await waitNT(wrapper.vm)
1197
- await waitRAF()
1198
- jest.runOnlyPendingTimers()
1199
- await waitNT(wrapper.vm)
1200
- await waitRAF()
1201
-
1202
- // Tooltip element should not be in the document
1203
- expect(document.getElementById(adb)).toBe(null)
1204
-
1205
- // Try and show element via root event (using show all)
1206
- wrapper.vm.$root.$emit('bv::show::tooltip')
1207
- await waitNT(wrapper.vm)
1208
- await waitRAF()
1209
- await waitNT(wrapper.vm)
1210
- await waitRAF()
1211
- jest.runOnlyPendingTimers()
1212
- await waitNT(wrapper.vm)
1213
- await waitRAF()
1214
- jest.runOnlyPendingTimers()
1215
- await waitNT(wrapper.vm)
1216
- await waitRAF()
1217
-
1218
- // Tooltip element should not be in the document
1219
- expect(document.getElementById(adb)).toBe(null)
1220
-
1221
- wrapper.destroy()
1222
- })
1223
-
1224
- it('closes when title is set to empty', async () => {
1225
- jest.useFakeTimers()
1226
- const wrapper = mount(App, {
1227
- attachTo: document.body,
1228
- propsData: {
1229
- show: true,
1230
- title: 'hello'
1231
- }
1232
- })
1233
-
1234
- expect(wrapper.vm).toBeDefined()
1235
- await waitNT(wrapper.vm)
1236
- await waitRAF()
1237
- await waitNT(wrapper.vm)
1238
- await waitRAF()
1239
- await waitNT(wrapper.vm)
1240
- await waitRAF()
1241
- jest.runOnlyPendingTimers()
1242
- await waitNT(wrapper.vm)
1243
- await waitRAF()
1244
-
1245
- expect(wrapper.element.tagName).toBe('ARTICLE')
1246
- expect(wrapper.attributes('id')).toBeDefined()
1247
- expect(wrapper.attributes('id')).toEqual('wrapper')
1248
-
1249
- // The trigger button
1250
- const $button = wrapper.find('button')
1251
- expect($button.exists()).toBe(true)
1252
- expect($button.attributes('id')).toBeDefined()
1253
- expect($button.attributes('id')).toEqual('foo')
1254
- expect($button.attributes('title')).toBeUndefined()
1255
- expect($button.attributes('data-original-title')).toBeUndefined()
1256
- expect($button.attributes('aria-describedby')).toBeDefined()
1257
- // ID of the tooltip that will be in the body
1258
- const adb = $button.attributes('aria-describedby')
1259
-
1260
- // <b-tooltip> wrapper
1261
- const $tipHolder = wrapper.findComponent(BTooltip)
1262
- expect($tipHolder.exists()).toBe(true)
1263
- expect($tipHolder.element.nodeType).toEqual(Node.COMMENT_NODE)
1264
-
1265
- // Find the tooltip element in the document
1266
- const tip = document.getElementById(adb)
1267
- expect(tip).not.toBe(null)
1268
- expect(tip).toBeInstanceOf(HTMLElement)
1269
- const $tip = createWrapper(tip)
1270
- expect($tip.element.tagName).toBe('DIV')
1271
- expect($tip.classes()).toContain('tooltip')
1272
- expect($tip.classes()).toContain('b-tooltip')
1273
- // Should contain our title prop value
1274
- expect($tip.text()).toContain('hello')
1275
-
1276
- // Change the title prop
1277
- await wrapper.setProps({ title: '' })
1278
- await waitRAF()
1279
- await waitRAF()
1280
-
1281
- // Tooltip element should not be in the document
1282
- expect(document.body.contains(tip)).toBe(false)
1283
- expect(document.getElementById('adb')).toBe(null)
1284
-
1285
- wrapper.destroy()
1286
- })
1287
-
1288
- it('applies noninteractive class based on noninteractive prop', async () => {
1289
- jest.useFakeTimers()
1290
- const wrapper = mount(App, {
1291
- attachTo: document.body,
1292
- propsData: {
1293
- show: true
1294
- },
1295
- slots: {
1296
- default: 'title'
1297
- }
1298
- })
1299
-
1300
- expect(wrapper.vm).toBeDefined()
1301
- await waitNT(wrapper.vm)
1302
- await waitRAF()
1303
- await waitNT(wrapper.vm)
1304
- await waitRAF()
1305
- jest.runOnlyPendingTimers()
1306
- await waitNT(wrapper.vm)
1307
- await waitRAF()
1308
-
1309
- expect(wrapper.element.tagName).toBe('ARTICLE')
1310
- expect(wrapper.attributes('id')).toBeDefined()
1311
- expect(wrapper.attributes('id')).toEqual('wrapper')
1312
-
1313
- // The trigger button
1314
- const $button = wrapper.find('button')
1315
- expect($button.exists()).toBe(true)
1316
-
1317
- // ID of the tooltip that will be in the body
1318
- const adb = $button.attributes('aria-describedby')
1319
- expect(adb).toBeDefined()
1320
- expect(adb).not.toBe('')
1321
- expect(adb).not.toBe(null)
1322
-
1323
- // Find the tooltip element in the document
1324
- const tip = document.getElementById(adb)
1325
- expect(tip).not.toBe(null)
1326
- expect(tip).toBeInstanceOf(HTMLElement)
1327
- expect(tip.tagName).toEqual('DIV')
1328
- expect(tip.classList.contains('tooltip')).toBe(true)
1329
- expect(tip.classList.contains('b-tooltip')).toBe(true)
1330
- expect(tip.classList.contains('noninteractive')).toBe(false)
1331
-
1332
- // Enable 'noninteractive'. Should be reactive
1333
- await wrapper.setProps({ noninteractive: true })
1334
- await waitRAF()
1335
- expect(tip.classList.contains('tooltip')).toBe(true)
1336
- expect(tip.classList.contains('b-tooltip')).toBe(true)
1337
- expect(tip.classList.contains('noninteractive')).toBe(true)
1338
-
1339
- wrapper.destroy()
1340
- })
1341
-
1342
- it('applies variant class', async () => {
1343
- jest.useFakeTimers()
1344
- const wrapper = mount(App, {
1345
- attachTo: document.body,
1346
- propsData: {
1347
- show: true,
1348
- variant: 'danger'
1349
- },
1350
- slots: {
1351
- default: 'title'
1352
- }
1353
- })
1354
-
1355
- expect(wrapper.vm).toBeDefined()
1356
- await waitNT(wrapper.vm)
1357
- await waitRAF()
1358
- await waitNT(wrapper.vm)
1359
- await waitRAF()
1360
- jest.runOnlyPendingTimers()
1361
- await waitNT(wrapper.vm)
1362
- await waitRAF()
1363
-
1364
- expect(wrapper.element.tagName).toBe('ARTICLE')
1365
- expect(wrapper.attributes('id')).toBeDefined()
1366
- expect(wrapper.attributes('id')).toEqual('wrapper')
1367
-
1368
- // The trigger button
1369
- const $button = wrapper.find('button')
1370
- expect($button.exists()).toBe(true)
1371
-
1372
- // ID of the tooltip that will be in the body
1373
- const adb = $button.attributes('aria-describedby')
1374
- expect(adb).not.toBe(null)
1375
-
1376
- // Find the tooltip element in the document
1377
- const tip = document.getElementById(adb)
1378
- expect(tip).not.toBe(null)
1379
- expect(tip).toBeInstanceOf(HTMLElement)
1380
- expect(tip.tagName).toEqual('DIV')
1381
- expect(tip.classList.contains('tooltip')).toBe(true)
1382
- expect(tip.classList.contains('b-tooltip-danger')).toBe(true)
1383
-
1384
- // Change variant type. Should be reactive
1385
- await wrapper.setProps({ variant: 'success' })
1386
- await waitRAF()
1387
- expect(tip.classList.contains('tooltip')).toBe(true)
1388
- expect(tip.classList.contains('b-tooltip-success')).toBe(true)
1389
- expect(tip.classList.contains('b-tooltip-danger')).toBe(false)
1390
-
1391
- wrapper.destroy()
1392
- })
1393
-
1394
- it('applies custom class', async () => {
1395
- jest.useFakeTimers()
1396
- const wrapper = mount(App, {
1397
- attachTo: document.body,
1398
- propsData: {
1399
- show: true,
1400
- customClass: 'foobar-class'
1401
- },
1402
- slots: {
1403
- default: 'title'
1404
- }
1405
- })
1406
-
1407
- expect(wrapper.vm).toBeDefined()
1408
- await waitNT(wrapper.vm)
1409
- await waitRAF()
1410
- await waitNT(wrapper.vm)
1411
- await waitRAF()
1412
- jest.runOnlyPendingTimers()
1413
- await waitNT(wrapper.vm)
1414
- await waitRAF()
1415
-
1416
- expect(wrapper.element.tagName).toBe('ARTICLE')
1417
- expect(wrapper.attributes('id')).toBeDefined()
1418
- expect(wrapper.attributes('id')).toEqual('wrapper')
1419
-
1420
- // The trigger button
1421
- const $button = wrapper.find('button')
1422
- expect($button.exists()).toBe(true)
1423
-
1424
- // ID of the tooltip that will be in the body
1425
- const adb = $button.attributes('aria-describedby')
1426
- expect(adb).toBeDefined()
1427
- expect(adb).not.toBe('')
1428
- expect(adb).not.toBe(null)
1429
-
1430
- // Find the tooltip element in the document
1431
- const tip = document.getElementById(adb)
1432
- expect(tip).not.toBe(null)
1433
- expect(tip).toBeInstanceOf(HTMLElement)
1434
- expect(tip.tagName).toEqual('DIV')
1435
- expect(tip.classList.contains('tooltip')).toBe(true)
1436
- expect(tip.classList.contains('b-tooltip')).toBe(true)
1437
- expect(tip.classList.contains('foobar-class')).toBe(true)
1438
-
1439
- // Change custom class. Should be reactive
1440
- await wrapper.setProps({ customClass: 'barbaz-class' })
1441
- await waitRAF()
1442
- expect(tip.classList.contains('tooltip')).toBe(true)
1443
- expect(tip.classList.contains('barbaz-class')).toBe(true)
1444
- expect(tip.classList.contains('foobar-class')).toBe(false)
1445
-
1446
- wrapper.destroy()
1447
- })
1448
-
1449
- it('saves title in data attribute on open and adds to back on hide', async () => {
1450
- jest.useFakeTimers()
1451
- const wrapper = mount(App, {
1452
- attachTo: document.body,
1453
- propsData: {
1454
- triggers: 'click',
1455
- show: false,
1456
- titleAttr: 'bar'
1457
- },
1458
- slots: {
1459
- default: 'title'
1460
- }
1461
- })
1462
-
1463
- expect(wrapper.vm).toBeDefined()
1464
- await waitNT(wrapper.vm)
1465
- await waitRAF()
1466
- await waitNT(wrapper.vm)
1467
- await waitRAF()
1468
- jest.runOnlyPendingTimers()
1469
-
1470
- expect(wrapper.element.tagName).toBe('ARTICLE')
1471
- expect(wrapper.attributes('id')).toBeDefined()
1472
- expect(wrapper.attributes('id')).toEqual('wrapper')
1473
-
1474
- // The trigger button
1475
- const $button = wrapper.find('button')
1476
- expect($button.exists()).toBe(true)
1477
- expect($button.attributes('id')).toBeDefined()
1478
- expect($button.attributes('id')).toEqual('foo')
1479
- expect($button.attributes('title')).toBeDefined()
1480
- expect($button.attributes('title')).toEqual('bar')
1481
- expect($button.attributes('data-original-title')).toBeUndefined()
1482
- expect($button.attributes('aria-describedby')).toBeUndefined()
1483
-
1484
- // Show tooltip
1485
- await wrapper.setProps({ show: true })
1486
-
1487
- expect($button.attributes('title')).toBeDefined()
1488
- expect($button.attributes('title')).toEqual('')
1489
- expect($button.attributes('data-original-title')).toBeDefined()
1490
- expect($button.attributes('data-original-title')).toEqual('bar')
1491
- expect($button.attributes('aria-describedby')).toBeDefined()
1492
- // ID of the tooltip that will be in the body
1493
- const adb = $button.attributes('aria-describedby')
1494
-
1495
- // <b-tooltip> wrapper
1496
- const $tipHolder = wrapper.findComponent(BTooltip)
1497
- expect($tipHolder.exists()).toBe(true)
1498
- expect($tipHolder.element.nodeType).toEqual(Node.COMMENT_NODE)
1499
-
1500
- // Find the tooltip element in the document
1501
- const tip = document.getElementById(adb)
1502
- expect(tip).not.toBe(null)
1503
- expect(tip).toBeInstanceOf(HTMLElement)
1504
- expect(tip.tagName).toEqual('DIV')
1505
- expect(tip.classList.contains('tooltip')).toBe(true)
1506
- expect(tip.classList.contains('b-tooltip')).toBe(true)
1507
- expect(tip.classList.contains('interactive')).toBe(false)
1508
- expect(tip.textContent).toEqual('title')
1509
-
1510
- // Hide the tooltip
1511
- await wrapper.setProps({ show: false })
1512
- await waitRAF()
1513
- await waitRAF()
1514
- jest.runOnlyPendingTimers()
1515
- await waitNT(wrapper.vm)
1516
- await waitRAF()
1517
-
1518
- expect($button.attributes('title')).toBeDefined()
1519
- expect($button.attributes('title')).toEqual('bar')
1520
- expect($button.attributes('data-original-title')).toBeUndefined()
1521
- expect($button.attributes('aria-describedby')).toBeUndefined()
1522
-
1523
- // Tooltip element should not be in the document
1524
- expect(document.body.contains(tip)).toBe(false)
1525
- expect(document.querySelector(adb)).toBe(null)
1526
-
1527
- wrapper.destroy()
1528
- })
1529
- })