@gitlab/duo-ui 3.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 (575) hide show
  1. package/CHANGELOG.md +7 -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 +4 -4
  13. package/dist/components/chat/components/duo_chat_message/duo_chat_message.js +13 -13
  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 +19 -19
  17. package/dist/tailwind.css +1 -1
  18. package/dist/tailwind.css.map +1 -1
  19. package/package.json +2 -5
  20. package/src/components/chat/components/duo_chat_context/duo_chat_context_item_details_modal/duo_chat_context_item_details_modal.vue +3 -3
  21. package/src/components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu.vue +12 -12
  22. package/src/components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_category_items.vue +1 -1
  23. package/src/components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_item.vue +17 -24
  24. package/src/components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_items.vue +9 -9
  25. package/src/components/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_items_loading.vue +2 -2
  26. package/src/components/chat/components/duo_chat_context/duo_chat_context_item_popover/duo_chat_context_item_popover.vue +25 -55
  27. package/src/components/chat/components/duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections.vue +10 -11
  28. package/src/components/chat/components/duo_chat_context/utils.js +0 -114
  29. package/src/components/chat/components/duo_chat_conversation/duo_chat_conversation.md +1 -1
  30. package/src/components/chat/components/duo_chat_conversation/duo_chat_conversation.vue +5 -5
  31. package/src/components/chat/components/duo_chat_loader/duo_chat_loader.vue +7 -7
  32. package/src/components/chat/components/duo_chat_message/duo_chat_message.md +2 -2
  33. package/src/components/chat/components/duo_chat_message/duo_chat_message.vue +14 -14
  34. package/src/components/chat/components/duo_chat_message_sources/duo_chat_message_sources.vue +2 -2
  35. package/src/components/chat/components/duo_chat_predefined_prompts/duo_chat_predefined_prompts.vue +1 -1
  36. package/src/components/chat/duo_chat.md +4 -4
  37. package/src/components/chat/duo_chat.vue +27 -30
  38. package/translations.js +36 -43
  39. package/src/vendor/bootstrap/LICENSE +0 -22
  40. package/src/vendor/bootstrap/scss/_alert.scss +0 -52
  41. package/src/vendor/bootstrap/scss/_badge.scss +0 -54
  42. package/src/vendor/bootstrap/scss/_breadcrumb.scss +0 -42
  43. package/src/vendor/bootstrap/scss/_button-group.scss +0 -163
  44. package/src/vendor/bootstrap/scss/_buttons.scss +0 -142
  45. package/src/vendor/bootstrap/scss/_card.scss +0 -286
  46. package/src/vendor/bootstrap/scss/_carousel.scss +0 -200
  47. package/src/vendor/bootstrap/scss/_close.scss +0 -40
  48. package/src/vendor/bootstrap/scss/_code.scss +0 -48
  49. package/src/vendor/bootstrap/scss/_custom-forms.scss +0 -526
  50. package/src/vendor/bootstrap/scss/_dropdown.scss +0 -192
  51. package/src/vendor/bootstrap/scss/_forms.scss +0 -347
  52. package/src/vendor/bootstrap/scss/_functions.scss +0 -190
  53. package/src/vendor/bootstrap/scss/_grid.scss +0 -73
  54. package/src/vendor/bootstrap/scss/_images.scss +0 -42
  55. package/src/vendor/bootstrap/scss/_input-group.scss +0 -211
  56. package/src/vendor/bootstrap/scss/_jumbotron.scss +0 -17
  57. package/src/vendor/bootstrap/scss/_list-group.scss +0 -154
  58. package/src/vendor/bootstrap/scss/_media.scss +0 -8
  59. package/src/vendor/bootstrap/scss/_mixins.scss +0 -47
  60. package/src/vendor/bootstrap/scss/_modal.scss +0 -240
  61. package/src/vendor/bootstrap/scss/_nav.scss +0 -125
  62. package/src/vendor/bootstrap/scss/_navbar.scss +0 -332
  63. package/src/vendor/bootstrap/scss/_pagination.scss +0 -74
  64. package/src/vendor/bootstrap/scss/_popover.scss +0 -170
  65. package/src/vendor/bootstrap/scss/_print.scss +0 -132
  66. package/src/vendor/bootstrap/scss/_progress.scss +0 -47
  67. package/src/vendor/bootstrap/scss/_reboot.scss +0 -484
  68. package/src/vendor/bootstrap/scss/_root.scss +0 -19
  69. package/src/vendor/bootstrap/scss/_spinners.scss +0 -65
  70. package/src/vendor/bootstrap/scss/_tables.scss +0 -185
  71. package/src/vendor/bootstrap/scss/_toasts.scss +0 -46
  72. package/src/vendor/bootstrap/scss/_tooltip.scss +0 -115
  73. package/src/vendor/bootstrap/scss/_transitions.scss +0 -26
  74. package/src/vendor/bootstrap/scss/_type.scss +0 -125
  75. package/src/vendor/bootstrap/scss/_utilities.scss +0 -18
  76. package/src/vendor/bootstrap/scss/_variables.scss +0 -1149
  77. package/src/vendor/bootstrap/scss/bootstrap-grid.scss +0 -30
  78. package/src/vendor/bootstrap/scss/bootstrap-reboot.scss +0 -12
  79. package/src/vendor/bootstrap/scss/bootstrap.scss +0 -44
  80. package/src/vendor/bootstrap/scss/mixins/_alert.scss +0 -13
  81. package/src/vendor/bootstrap/scss/mixins/_background-variant.scss +0 -23
  82. package/src/vendor/bootstrap/scss/mixins/_badge.scss +0 -17
  83. package/src/vendor/bootstrap/scss/mixins/_border-radius.scss +0 -76
  84. package/src/vendor/bootstrap/scss/mixins/_box-shadow.scss +0 -20
  85. package/src/vendor/bootstrap/scss/mixins/_breakpoints.scss +0 -123
  86. package/src/vendor/bootstrap/scss/mixins/_buttons.scss +0 -110
  87. package/src/vendor/bootstrap/scss/mixins/_caret.scss +0 -62
  88. package/src/vendor/bootstrap/scss/mixins/_clearfix.scss +0 -7
  89. package/src/vendor/bootstrap/scss/mixins/_deprecate.scss +0 -10
  90. package/src/vendor/bootstrap/scss/mixins/_float.scss +0 -14
  91. package/src/vendor/bootstrap/scss/mixins/_forms.scss +0 -195
  92. package/src/vendor/bootstrap/scss/mixins/_gradients.scss +0 -45
  93. package/src/vendor/bootstrap/scss/mixins/_grid-framework.scss +0 -80
  94. package/src/vendor/bootstrap/scss/mixins/_grid.scss +0 -69
  95. package/src/vendor/bootstrap/scss/mixins/_hover.scss +0 -37
  96. package/src/vendor/bootstrap/scss/mixins/_image.scss +0 -36
  97. package/src/vendor/bootstrap/scss/mixins/_list-group.scss +0 -21
  98. package/src/vendor/bootstrap/scss/mixins/_lists.scss +0 -7
  99. package/src/vendor/bootstrap/scss/mixins/_nav-divider.scss +0 -11
  100. package/src/vendor/bootstrap/scss/mixins/_pagination.scss +0 -22
  101. package/src/vendor/bootstrap/scss/mixins/_reset-text.scss +0 -17
  102. package/src/vendor/bootstrap/scss/mixins/_resize.scss +0 -6
  103. package/src/vendor/bootstrap/scss/mixins/_screen-reader.scss +0 -34
  104. package/src/vendor/bootstrap/scss/mixins/_size.scss +0 -7
  105. package/src/vendor/bootstrap/scss/mixins/_table-row.scss +0 -39
  106. package/src/vendor/bootstrap/scss/mixins/_text-emphasis.scss +0 -17
  107. package/src/vendor/bootstrap/scss/mixins/_text-hide.scss +0 -11
  108. package/src/vendor/bootstrap/scss/mixins/_text-truncate.scss +0 -8
  109. package/src/vendor/bootstrap/scss/mixins/_transition.scss +0 -26
  110. package/src/vendor/bootstrap/scss/mixins/_visibility.scss +0 -8
  111. package/src/vendor/bootstrap/scss/utilities/_align.scss +0 -8
  112. package/src/vendor/bootstrap/scss/utilities/_background.scss +0 -19
  113. package/src/vendor/bootstrap/scss/utilities/_borders.scss +0 -75
  114. package/src/vendor/bootstrap/scss/utilities/_clearfix.scss +0 -3
  115. package/src/vendor/bootstrap/scss/utilities/_display.scss +0 -26
  116. package/src/vendor/bootstrap/scss/utilities/_embed.scss +0 -39
  117. package/src/vendor/bootstrap/scss/utilities/_flex.scss +0 -51
  118. package/src/vendor/bootstrap/scss/utilities/_float.scss +0 -11
  119. package/src/vendor/bootstrap/scss/utilities/_interactions.scss +0 -5
  120. package/src/vendor/bootstrap/scss/utilities/_overflow.scss +0 -5
  121. package/src/vendor/bootstrap/scss/utilities/_position.scss +0 -32
  122. package/src/vendor/bootstrap/scss/utilities/_screenreaders.scss +0 -11
  123. package/src/vendor/bootstrap/scss/utilities/_shadows.scss +0 -6
  124. package/src/vendor/bootstrap/scss/utilities/_sizing.scss +0 -20
  125. package/src/vendor/bootstrap/scss/utilities/_spacing.scss +0 -73
  126. package/src/vendor/bootstrap/scss/utilities/_stretched-link.scss +0 -19
  127. package/src/vendor/bootstrap/scss/utilities/_text.scss +0 -72
  128. package/src/vendor/bootstrap/scss/utilities/_visibility.scss +0 -13
  129. package/src/vendor/bootstrap/scss/vendor/_rfs.scss +0 -228
  130. package/src/vendor/bootstrap-vue/LICENSE +0 -21
  131. package/src/vendor/bootstrap-vue/nuxt/index.js +0 -164
  132. package/src/vendor/bootstrap-vue/nuxt/plugin.template.js +0 -29
  133. package/src/vendor/bootstrap-vue/package.json +0 -201
  134. package/src/vendor/bootstrap-vue/src/_utilities.scss +0 -13
  135. package/src/vendor/bootstrap-vue/src/_variables.scss +0 -111
  136. package/src/vendor/bootstrap-vue/src/browser.js +0 -9
  137. package/src/vendor/bootstrap-vue/src/bv-config.d.ts +0 -4
  138. package/src/vendor/bootstrap-vue/src/bv-config.js +0 -6
  139. package/src/vendor/bootstrap-vue/src/components/badge/README.md +0 -126
  140. package/src/vendor/bootstrap-vue/src/components/badge/badge.js +0 -55
  141. package/src/vendor/bootstrap-vue/src/components/badge/badge.spec.js +0 -141
  142. package/src/vendor/bootstrap-vue/src/components/badge/index.d.ts +0 -7
  143. package/src/vendor/bootstrap-vue/src/components/badge/index.js +0 -3
  144. package/src/vendor/bootstrap-vue/src/components/badge/package.json +0 -29
  145. package/src/vendor/bootstrap-vue/src/components/breadcrumb/README.md +0 -93
  146. package/src/vendor/bootstrap-vue/src/components/breadcrumb/breadcrumb-item.js +0 -27
  147. package/src/vendor/bootstrap-vue/src/components/breadcrumb/breadcrumb-item.spec.js +0 -123
  148. package/src/vendor/bootstrap-vue/src/components/breadcrumb/breadcrumb-link.js +0 -43
  149. package/src/vendor/bootstrap-vue/src/components/breadcrumb/breadcrumb-link.spec.js +0 -117
  150. package/src/vendor/bootstrap-vue/src/components/breadcrumb/breadcrumb.js +0 -52
  151. package/src/vendor/bootstrap-vue/src/components/breadcrumb/breadcrumb.spec.js +0 -183
  152. package/src/vendor/bootstrap-vue/src/components/breadcrumb/index.d.ts +0 -13
  153. package/src/vendor/bootstrap-vue/src/components/breadcrumb/index.js +0 -5
  154. package/src/vendor/bootstrap-vue/src/components/breadcrumb/package.json +0 -62
  155. package/src/vendor/bootstrap-vue/src/components/button/README.md +0 -281
  156. package/src/vendor/bootstrap-vue/src/components/button/button-close.js +0 -65
  157. package/src/vendor/bootstrap-vue/src/components/button/button-close.spec.js +0 -210
  158. package/src/vendor/bootstrap-vue/src/components/button/button.js +0 -179
  159. package/src/vendor/bootstrap-vue/src/components/button/button.spec.js +0 -385
  160. package/src/vendor/bootstrap-vue/src/components/button/index.d.ts +0 -10
  161. package/src/vendor/bootstrap-vue/src/components/button/index.js +0 -4
  162. package/src/vendor/bootstrap-vue/src/components/button/package.json +0 -105
  163. package/src/vendor/bootstrap-vue/src/components/button-group/README.md +0 -112
  164. package/src/vendor/bootstrap-vue/src/components/button-group/button-group.js +0 -42
  165. package/src/vendor/bootstrap-vue/src/components/button-group/button-group.spec.js +0 -98
  166. package/src/vendor/bootstrap-vue/src/components/button-group/index.d.ts +0 -7
  167. package/src/vendor/bootstrap-vue/src/components/button-group/index.js +0 -3
  168. package/src/vendor/bootstrap-vue/src/components/button-group/package.json +0 -29
  169. package/src/vendor/bootstrap-vue/src/components/collapse/README.md +0 -321
  170. package/src/vendor/bootstrap-vue/src/components/collapse/collapse.js +0 -272
  171. package/src/vendor/bootstrap-vue/src/components/collapse/collapse.spec.js +0 -558
  172. package/src/vendor/bootstrap-vue/src/components/collapse/helpers/bv-collapse.js +0 -88
  173. package/src/vendor/bootstrap-vue/src/components/collapse/index.d.ts +0 -9
  174. package/src/vendor/bootstrap-vue/src/components/collapse/index.js +0 -3
  175. package/src/vendor/bootstrap-vue/src/components/collapse/package.json +0 -111
  176. package/src/vendor/bootstrap-vue/src/components/dropdown/README.md +0 -730
  177. package/src/vendor/bootstrap-vue/src/components/dropdown/_dropdown-form.scss +0 -38
  178. package/src/vendor/bootstrap-vue/src/components/dropdown/_dropdown-text.scss +0 -17
  179. package/src/vendor/bootstrap-vue/src/components/dropdown/_dropdown.scss +0 -58
  180. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +0 -36
  181. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.spec.js +0 -58
  182. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +0 -47
  183. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.spec.js +0 -110
  184. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +0 -76
  185. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.spec.js +0 -94
  186. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +0 -46
  187. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.spec.js +0 -73
  188. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +0 -93
  189. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.spec.js +0 -117
  190. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.js +0 -87
  191. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.spec.js +0 -147
  192. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.js +0 -42
  193. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.spec.js +0 -59
  194. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +0 -202
  195. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.spec.js +0 -1121
  196. package/src/vendor/bootstrap-vue/src/components/dropdown/index.d.ts +0 -32
  197. package/src/vendor/bootstrap-vue/src/components/dropdown/index.js +0 -19
  198. package/src/vendor/bootstrap-vue/src/components/dropdown/index.scss +0 -3
  199. package/src/vendor/bootstrap-vue/src/components/dropdown/package.json +0 -368
  200. package/src/vendor/bootstrap-vue/src/components/form/README.md +0 -370
  201. package/src/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +0 -51
  202. package/src/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.spec.js +0 -170
  203. package/src/vendor/bootstrap-vue/src/components/form/form-text.js +0 -40
  204. package/src/vendor/bootstrap-vue/src/components/form/form-text.spec.js +0 -93
  205. package/src/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +0 -51
  206. package/src/vendor/bootstrap-vue/src/components/form/form-valid-feedback.spec.js +0 -157
  207. package/src/vendor/bootstrap-vue/src/components/form/form.js +0 -41
  208. package/src/vendor/bootstrap-vue/src/components/form/form.spec.js +0 -97
  209. package/src/vendor/bootstrap-vue/src/components/form/index.d.ts +0 -16
  210. package/src/vendor/bootstrap-vue/src/components/form/index.js +0 -7
  211. package/src/vendor/bootstrap-vue/src/components/form/package.json +0 -112
  212. package/src/vendor/bootstrap-vue/src/components/form-checkbox/README.md +0 -862
  213. package/src/vendor/bootstrap-vue/src/components/form-checkbox/_form-checkbox-group.scss +0 -2
  214. package/src/vendor/bootstrap-vue/src/components/form-checkbox/_form-checkbox.scss +0 -125
  215. package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox-group.js +0 -42
  216. package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox-group.spec.js +0 -642
  217. package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox.js +0 -132
  218. package/src/vendor/bootstrap-vue/src/components/form-checkbox/form-checkbox.spec.js +0 -1331
  219. package/src/vendor/bootstrap-vue/src/components/form-checkbox/index.d.ts +0 -10
  220. package/src/vendor/bootstrap-vue/src/components/form-checkbox/index.js +0 -4
  221. package/src/vendor/bootstrap-vue/src/components/form-checkbox/index.scss +0 -2
  222. package/src/vendor/bootstrap-vue/src/components/form-checkbox/package.json +0 -172
  223. package/src/vendor/bootstrap-vue/src/components/form-group/README.md +0 -337
  224. package/src/vendor/bootstrap-vue/src/components/form-group/form-group.js +0 -403
  225. package/src/vendor/bootstrap-vue/src/components/form-group/form-group.spec.js +0 -477
  226. package/src/vendor/bootstrap-vue/src/components/form-group/index.d.ts +0 -7
  227. package/src/vendor/bootstrap-vue/src/components/form-group/index.js +0 -3
  228. package/src/vendor/bootstrap-vue/src/components/form-group/package.json +0 -183
  229. package/src/vendor/bootstrap-vue/src/components/form-input/README.md +0 -612
  230. package/src/vendor/bootstrap-vue/src/components/form-input/_form-input.scss +0 -217
  231. package/src/vendor/bootstrap-vue/src/components/form-input/form-input.js +0 -168
  232. package/src/vendor/bootstrap-vue/src/components/form-input/form-input.spec.js +0 -986
  233. package/src/vendor/bootstrap-vue/src/components/form-input/index.d.ts +0 -9
  234. package/src/vendor/bootstrap-vue/src/components/form-input/index.js +0 -3
  235. package/src/vendor/bootstrap-vue/src/components/form-input/index.scss +0 -1
  236. package/src/vendor/bootstrap-vue/src/components/form-input/package.json +0 -135
  237. package/src/vendor/bootstrap-vue/src/components/form-radio/README.md +0 -566
  238. package/src/vendor/bootstrap-vue/src/components/form-radio/_form-radio-group.scss +0 -3
  239. package/src/vendor/bootstrap-vue/src/components/form-radio/_form-radio.scss +0 -47
  240. package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio-group.js +0 -30
  241. package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio-group.spec.js +0 -469
  242. package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio.js +0 -28
  243. package/src/vendor/bootstrap-vue/src/components/form-radio/form-radio.spec.js +0 -952
  244. package/src/vendor/bootstrap-vue/src/components/form-radio/index.d.ts +0 -10
  245. package/src/vendor/bootstrap-vue/src/components/form-radio/index.js +0 -4
  246. package/src/vendor/bootstrap-vue/src/components/form-radio/index.scss +0 -2
  247. package/src/vendor/bootstrap-vue/src/components/form-radio/package.json +0 -162
  248. package/src/vendor/bootstrap-vue/src/components/form-select/README.md +0 -504
  249. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +0 -48
  250. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.spec.js +0 -138
  251. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +0 -35
  252. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option.spec.js +0 -75
  253. package/src/vendor/bootstrap-vue/src/components/form-select/form-select.js +0 -153
  254. package/src/vendor/bootstrap-vue/src/components/form-select/form-select.spec.js +0 -723
  255. package/src/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js +0 -56
  256. package/src/vendor/bootstrap-vue/src/components/form-select/index.d.ts +0 -13
  257. package/src/vendor/bootstrap-vue/src/components/form-select/index.js +0 -5
  258. package/src/vendor/bootstrap-vue/src/components/form-select/package.json +0 -132
  259. package/src/vendor/bootstrap-vue/src/components/form-textarea/README.md +0 -453
  260. package/src/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +0 -226
  261. package/src/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.spec.js +0 -1000
  262. package/src/vendor/bootstrap-vue/src/components/form-textarea/index.d.ts +0 -9
  263. package/src/vendor/bootstrap-vue/src/components/form-textarea/index.js +0 -3
  264. package/src/vendor/bootstrap-vue/src/components/form-textarea/package.json +0 -122
  265. package/src/vendor/bootstrap-vue/src/components/index.d.ts +0 -31
  266. package/src/vendor/bootstrap-vue/src/components/index.js +0 -11
  267. package/src/vendor/bootstrap-vue/src/components/index.scss +0 -12
  268. package/src/vendor/bootstrap-vue/src/components/input-group/README.md +0 -334
  269. package/src/vendor/bootstrap-vue/src/components/input-group/_input-group.scss +0 -29
  270. package/src/vendor/bootstrap-vue/src/components/input-group/index.d.ts +0 -19
  271. package/src/vendor/bootstrap-vue/src/components/input-group/index.js +0 -7
  272. package/src/vendor/bootstrap-vue/src/components/input-group/index.scss +0 -1
  273. package/src/vendor/bootstrap-vue/src/components/input-group/input-group-addon.js +0 -43
  274. package/src/vendor/bootstrap-vue/src/components/input-group/input-group-append.js +0 -31
  275. package/src/vendor/bootstrap-vue/src/components/input-group/input-group-append.spec.js +0 -84
  276. package/src/vendor/bootstrap-vue/src/components/input-group/input-group-prepend.js +0 -31
  277. package/src/vendor/bootstrap-vue/src/components/input-group/input-group-prepend.spec.js +0 -84
  278. package/src/vendor/bootstrap-vue/src/components/input-group/input-group-text.js +0 -31
  279. package/src/vendor/bootstrap-vue/src/components/input-group/input-group-text.spec.js +0 -45
  280. package/src/vendor/bootstrap-vue/src/components/input-group/input-group.js +0 -73
  281. package/src/vendor/bootstrap-vue/src/components/input-group/input-group.spec.js +0 -153
  282. package/src/vendor/bootstrap-vue/src/components/input-group/package.json +0 -109
  283. package/src/vendor/bootstrap-vue/src/components/layout/README.md +0 -791
  284. package/src/vendor/bootstrap-vue/src/components/layout/col.js +0 -154
  285. package/src/vendor/bootstrap-vue/src/components/layout/col.spec.js +0 -192
  286. package/src/vendor/bootstrap-vue/src/components/layout/form-row.js +0 -31
  287. package/src/vendor/bootstrap-vue/src/components/layout/form-row.spec.js +0 -45
  288. package/src/vendor/bootstrap-vue/src/components/layout/index.d.ts +0 -10
  289. package/src/vendor/bootstrap-vue/src/components/layout/index.js +0 -4
  290. package/src/vendor/bootstrap-vue/src/components/layout/package.json +0 -99
  291. package/src/vendor/bootstrap-vue/src/components/link/README.md +0 -76
  292. package/src/vendor/bootstrap-vue/src/components/link/index.d.ts +0 -10
  293. package/src/vendor/bootstrap-vue/src/components/link/index.js +0 -3
  294. package/src/vendor/bootstrap-vue/src/components/link/link.js +0 -212
  295. package/src/vendor/bootstrap-vue/src/components/link/link.spec.js +0 -434
  296. package/src/vendor/bootstrap-vue/src/components/link/package.json +0 -57
  297. package/src/vendor/bootstrap-vue/src/components/modal/MODIFICATIONS.md +0 -27
  298. package/src/vendor/bootstrap-vue/src/components/modal/README.md +0 -1068
  299. package/src/vendor/bootstrap-vue/src/components/modal/_modal.scss +0 -5
  300. package/src/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.js +0 -22
  301. package/src/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.spec.js +0 -82
  302. package/src/vendor/bootstrap-vue/src/components/modal/helpers/modal-manager.js +0 -219
  303. package/src/vendor/bootstrap-vue/src/components/modal/index.d.ts +0 -82
  304. package/src/vendor/bootstrap-vue/src/components/modal/index.js +0 -3
  305. package/src/vendor/bootstrap-vue/src/components/modal/index.scss +0 -1
  306. package/src/vendor/bootstrap-vue/src/components/modal/modal.js +0 -981
  307. package/src/vendor/bootstrap-vue/src/components/modal/modal.spec.js +0 -1418
  308. package/src/vendor/bootstrap-vue/src/components/modal/package.json +0 -548
  309. package/src/vendor/bootstrap-vue/src/components/nav/README.md +0 -480
  310. package/src/vendor/bootstrap-vue/src/components/nav/_nav-item-dropdown.scss +0 -1
  311. package/src/vendor/bootstrap-vue/src/components/nav/index.d.ts +0 -17
  312. package/src/vendor/bootstrap-vue/src/components/nav/index.js +0 -5
  313. package/src/vendor/bootstrap-vue/src/components/nav/index.scss +0 -1
  314. package/src/vendor/bootstrap-vue/src/components/nav/nav-item-dropdown.js +0 -123
  315. package/src/vendor/bootstrap-vue/src/components/nav/nav-item-dropdown.spec.js +0 -268
  316. package/src/vendor/bootstrap-vue/src/components/nav/nav-item.js +0 -49
  317. package/src/vendor/bootstrap-vue/src/components/nav/nav-item.spec.js +0 -127
  318. package/src/vendor/bootstrap-vue/src/components/nav/nav.js +0 -60
  319. package/src/vendor/bootstrap-vue/src/components/nav/nav.spec.js +0 -244
  320. package/src/vendor/bootstrap-vue/src/components/nav/package.json +0 -190
  321. package/src/vendor/bootstrap-vue/src/components/navbar/README.md +0 -333
  322. package/src/vendor/bootstrap-vue/src/components/navbar/_navbar.scss +0 -1
  323. package/src/vendor/bootstrap-vue/src/components/navbar/index.d.ts +0 -10
  324. package/src/vendor/bootstrap-vue/src/components/navbar/index.js +0 -4
  325. package/src/vendor/bootstrap-vue/src/components/navbar/index.scss +0 -1
  326. package/src/vendor/bootstrap-vue/src/components/navbar/navbar-brand.js +0 -42
  327. package/src/vendor/bootstrap-vue/src/components/navbar/navbar-brand.spec.js +0 -50
  328. package/src/vendor/bootstrap-vue/src/components/navbar/navbar.js +0 -78
  329. package/src/vendor/bootstrap-vue/src/components/navbar/navbar.spec.js +0 -130
  330. package/src/vendor/bootstrap-vue/src/components/navbar/package.json +0 -54
  331. package/src/vendor/bootstrap-vue/src/components/popover/README.md +0 -919
  332. package/src/vendor/bootstrap-vue/src/components/popover/_popover.scss +0 -113
  333. package/src/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover-template.js +0 -50
  334. package/src/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover.js +0 -28
  335. package/src/vendor/bootstrap-vue/src/components/popover/index.d.ts +0 -7
  336. package/src/vendor/bootstrap-vue/src/components/popover/index.js +0 -3
  337. package/src/vendor/bootstrap-vue/src/components/popover/index.scss +0 -1
  338. package/src/vendor/bootstrap-vue/src/components/popover/package.json +0 -261
  339. package/src/vendor/bootstrap-vue/src/components/popover/popover.js +0 -46
  340. package/src/vendor/bootstrap-vue/src/components/popover/popover.spec.js +0 -199
  341. package/src/vendor/bootstrap-vue/src/components/progress/MODIFICATIONS.md +0 -23
  342. package/src/vendor/bootstrap-vue/src/components/progress/README.md +0 -363
  343. package/src/vendor/bootstrap-vue/src/components/progress/index.d.ts +0 -10
  344. package/src/vendor/bootstrap-vue/src/components/progress/index.js +0 -4
  345. package/src/vendor/bootstrap-vue/src/components/progress/package.json +0 -109
  346. package/src/vendor/bootstrap-vue/src/components/progress/progress-bar.js +0 -133
  347. package/src/vendor/bootstrap-vue/src/components/progress/progress-bar.spec.js +0 -270
  348. package/src/vendor/bootstrap-vue/src/components/progress/progress.js +0 -57
  349. package/src/vendor/bootstrap-vue/src/components/progress/progress.spec.js +0 -71
  350. package/src/vendor/bootstrap-vue/src/components/table/README.md +0 -3157
  351. package/src/vendor/bootstrap-vue/src/components/table/_table.scss +0 -474
  352. package/src/vendor/bootstrap-vue/src/components/table/helpers/constants.js +0 -30
  353. package/src/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.js +0 -60
  354. package/src/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.spec.js +0 -112
  355. package/src/vendor/bootstrap-vue/src/components/table/helpers/filter-event.js +0 -38
  356. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-bottom-row.js +0 -44
  357. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +0 -88
  358. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +0 -49
  359. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-colgroup.js +0 -27
  360. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +0 -105
  361. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +0 -271
  362. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +0 -146
  363. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +0 -38
  364. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +0 -188
  365. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +0 -241
  366. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +0 -299
  367. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +0 -33
  368. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +0 -209
  369. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +0 -360
  370. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +0 -258
  371. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +0 -55
  372. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +0 -238
  373. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-top-row.js +0 -37
  374. package/src/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.js +0 -71
  375. package/src/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.spec.js +0 -93
  376. package/src/vendor/bootstrap-vue/src/components/table/helpers/sanitize-row.js +0 -39
  377. package/src/vendor/bootstrap-vue/src/components/table/helpers/stringify-record-values.js +0 -11
  378. package/src/vendor/bootstrap-vue/src/components/table/helpers/text-selection-active.js +0 -13
  379. package/src/vendor/bootstrap-vue/src/components/table/index.d.ts +0 -237
  380. package/src/vendor/bootstrap-vue/src/components/table/index.js +0 -23
  381. package/src/vendor/bootstrap-vue/src/components/table/index.scss +0 -1
  382. package/src/vendor/bootstrap-vue/src/components/table/package.json +0 -1763
  383. package/src/vendor/bootstrap-vue/src/components/table/table-busy.spec.js +0 -150
  384. package/src/vendor/bootstrap-vue/src/components/table/table-caption.spec.js +0 -176
  385. package/src/vendor/bootstrap-vue/src/components/table/table-colgroup.spec.js +0 -81
  386. package/src/vendor/bootstrap-vue/src/components/table/table-filtering.spec.js +0 -409
  387. package/src/vendor/bootstrap-vue/src/components/table/table-item-formatter.spec.js +0 -56
  388. package/src/vendor/bootstrap-vue/src/components/table/table-lite.js +0 -63
  389. package/src/vendor/bootstrap-vue/src/components/table/table-lite.spec.js +0 -682
  390. package/src/vendor/bootstrap-vue/src/components/table/table-pagination.spec.js +0 -133
  391. package/src/vendor/bootstrap-vue/src/components/table/table-primarykey.spec.js +0 -83
  392. package/src/vendor/bootstrap-vue/src/components/table/table-provider.spec.js +0 -411
  393. package/src/vendor/bootstrap-vue/src/components/table/table-row-details.spec.js +0 -459
  394. package/src/vendor/bootstrap-vue/src/components/table/table-selectable.spec.js +0 -1182
  395. package/src/vendor/bootstrap-vue/src/components/table/table-simple.js +0 -50
  396. package/src/vendor/bootstrap-vue/src/components/table/table-simple.spec.js +0 -206
  397. package/src/vendor/bootstrap-vue/src/components/table/table-sorting.spec.js +0 -858
  398. package/src/vendor/bootstrap-vue/src/components/table/table-sticky-column.spec.js +0 -377
  399. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-bottom-row.spec.js +0 -94
  400. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-row-events.spec.js +0 -529
  401. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-top-row.spec.js +0 -88
  402. package/src/vendor/bootstrap-vue/src/components/table/table-tbody-transition.spec.js +0 -83
  403. package/src/vendor/bootstrap-vue/src/components/table/table-tfoot-custom.spec.js +0 -91
  404. package/src/vendor/bootstrap-vue/src/components/table/table-tfoot-events.spec.js +0 -137
  405. package/src/vendor/bootstrap-vue/src/components/table/table-thead-events.spec.js +0 -155
  406. package/src/vendor/bootstrap-vue/src/components/table/table-thead-top.spec.js +0 -96
  407. package/src/vendor/bootstrap-vue/src/components/table/table.js +0 -89
  408. package/src/vendor/bootstrap-vue/src/components/table/table.spec.js +0 -692
  409. package/src/vendor/bootstrap-vue/src/components/table/tbody.js +0 -103
  410. package/src/vendor/bootstrap-vue/src/components/table/td.js +0 -195
  411. package/src/vendor/bootstrap-vue/src/components/table/tfoot.js +0 -95
  412. package/src/vendor/bootstrap-vue/src/components/table/th.js +0 -25
  413. package/src/vendor/bootstrap-vue/src/components/table/thead.js +0 -98
  414. package/src/vendor/bootstrap-vue/src/components/table/tr.js +0 -122
  415. package/src/vendor/bootstrap-vue/src/components/tabs/README.md +0 -575
  416. package/src/vendor/bootstrap-vue/src/components/tabs/index.d.ts +0 -13
  417. package/src/vendor/bootstrap-vue/src/components/tabs/index.js +0 -4
  418. package/src/vendor/bootstrap-vue/src/components/tabs/package.json +0 -205
  419. package/src/vendor/bootstrap-vue/src/components/tabs/tab.js +0 -197
  420. package/src/vendor/bootstrap-vue/src/components/tabs/tab.spec.js +0 -330
  421. package/src/vendor/bootstrap-vue/src/components/tabs/tabs.js +0 -688
  422. package/src/vendor/bootstrap-vue/src/components/tabs/tabs.spec.js +0 -836
  423. package/src/vendor/bootstrap-vue/src/components/toast/README.md +0 -656
  424. package/src/vendor/bootstrap-vue/src/components/toast/_toast.scss +0 -79
  425. package/src/vendor/bootstrap-vue/src/components/toast/_toaster-transition.scss +0 -45
  426. package/src/vendor/bootstrap-vue/src/components/toast/_toaster.scss +0 -108
  427. package/src/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.js +0 -208
  428. package/src/vendor/bootstrap-vue/src/components/toast/helpers/bv-toast.spec.js +0 -131
  429. package/src/vendor/bootstrap-vue/src/components/toast/index.d.ts +0 -70
  430. package/src/vendor/bootstrap-vue/src/components/toast/index.js +0 -12
  431. package/src/vendor/bootstrap-vue/src/components/toast/index.scss +0 -3
  432. package/src/vendor/bootstrap-vue/src/components/toast/package.json +0 -188
  433. package/src/vendor/bootstrap-vue/src/components/toast/toast.js +0 -454
  434. package/src/vendor/bootstrap-vue/src/components/toast/toast.spec.js +0 -346
  435. package/src/vendor/bootstrap-vue/src/components/toast/toaster.js +0 -139
  436. package/src/vendor/bootstrap-vue/src/components/toast/toaster.spec.js +0 -77
  437. package/src/vendor/bootstrap-vue/src/components/tooltip/README.md +0 -559
  438. package/src/vendor/bootstrap-vue/src/components/tooltip/_tooltip.scss +0 -86
  439. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +0 -248
  440. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +0 -130
  441. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +0 -977
  442. package/src/vendor/bootstrap-vue/src/components/tooltip/index.d.ts +0 -7
  443. package/src/vendor/bootstrap-vue/src/components/tooltip/index.js +0 -3
  444. package/src/vendor/bootstrap-vue/src/components/tooltip/index.scss +0 -1
  445. package/src/vendor/bootstrap-vue/src/components/tooltip/package.json +0 -258
  446. package/src/vendor/bootstrap-vue/src/components/tooltip/tooltip.js +0 -316
  447. package/src/vendor/bootstrap-vue/src/components/tooltip/tooltip.spec.js +0 -1529
  448. package/src/vendor/bootstrap-vue/src/components/transition/bv-transition.js +0 -83
  449. package/src/vendor/bootstrap-vue/src/components/transition/package.json +0 -5
  450. package/src/vendor/bootstrap-vue/src/components/transporter/package.json +0 -5
  451. package/src/vendor/bootstrap-vue/src/components/transporter/transporter.js +0 -202
  452. package/src/vendor/bootstrap-vue/src/components/transporter/transporter.spec.js +0 -85
  453. package/src/vendor/bootstrap-vue/src/constants/classes.js +0 -1
  454. package/src/vendor/bootstrap-vue/src/constants/components.js +0 -77
  455. package/src/vendor/bootstrap-vue/src/constants/config.js +0 -4
  456. package/src/vendor/bootstrap-vue/src/constants/env.js +0 -57
  457. package/src/vendor/bootstrap-vue/src/constants/events.js +0 -57
  458. package/src/vendor/bootstrap-vue/src/constants/key-codes.js +0 -10
  459. package/src/vendor/bootstrap-vue/src/constants/popper.js +0 -8
  460. package/src/vendor/bootstrap-vue/src/constants/props.js +0 -26
  461. package/src/vendor/bootstrap-vue/src/constants/regex.js +0 -33
  462. package/src/vendor/bootstrap-vue/src/constants/safe-types.js +0 -17
  463. package/src/vendor/bootstrap-vue/src/constants/slots.js +0 -32
  464. package/src/vendor/bootstrap-vue/src/directives/modal/index.d.ts +0 -8
  465. package/src/vendor/bootstrap-vue/src/directives/modal/index.js +0 -3
  466. package/src/vendor/bootstrap-vue/src/directives/modal/modal.js +0 -115
  467. package/src/vendor/bootstrap-vue/src/directives/modal/modal.spec.js +0 -191
  468. package/src/vendor/bootstrap-vue/src/directives/toggle/README.md +0 -146
  469. package/src/vendor/bootstrap-vue/src/directives/toggle/index.d.ts +0 -7
  470. package/src/vendor/bootstrap-vue/src/directives/toggle/index.js +0 -3
  471. package/src/vendor/bootstrap-vue/src/directives/toggle/package.json +0 -26
  472. package/src/vendor/bootstrap-vue/src/directives/toggle/toggle.js +0 -274
  473. package/src/vendor/bootstrap-vue/src/directives/toggle/toggle.spec.js +0 -452
  474. package/src/vendor/bootstrap-vue/src/directives/tooltip/README.md +0 -521
  475. package/src/vendor/bootstrap-vue/src/directives/tooltip/index.d.ts +0 -7
  476. package/src/vendor/bootstrap-vue/src/directives/tooltip/index.js +0 -3
  477. package/src/vendor/bootstrap-vue/src/directives/tooltip/package.json +0 -131
  478. package/src/vendor/bootstrap-vue/src/directives/tooltip/tooltip.js +0 -270
  479. package/src/vendor/bootstrap-vue/src/directives/tooltip/tooltip.spec.js +0 -223
  480. package/src/vendor/bootstrap-vue/src/directives/visible/README.md +0 -244
  481. package/src/vendor/bootstrap-vue/src/directives/visible/index.d.ts +0 -7
  482. package/src/vendor/bootstrap-vue/src/directives/visible/index.js +0 -3
  483. package/src/vendor/bootstrap-vue/src/directives/visible/package.json +0 -24
  484. package/src/vendor/bootstrap-vue/src/directives/visible/visible.js +0 -184
  485. package/src/vendor/bootstrap-vue/src/index.d.ts +0 -61
  486. package/src/vendor/bootstrap-vue/src/index.js +0 -187
  487. package/src/vendor/bootstrap-vue/src/index.scss +0 -11
  488. package/src/vendor/bootstrap-vue/src/mixins/attrs.js +0 -19
  489. package/src/vendor/bootstrap-vue/src/mixins/attrs.spec.js +0 -194
  490. package/src/vendor/bootstrap-vue/src/mixins/click-out.js +0 -72
  491. package/src/vendor/bootstrap-vue/src/mixins/click-out.spec.js +0 -52
  492. package/src/vendor/bootstrap-vue/src/mixins/dropdown.js +0 -460
  493. package/src/vendor/bootstrap-vue/src/mixins/focus-in.js +0 -44
  494. package/src/vendor/bootstrap-vue/src/mixins/focus-in.spec.js +0 -53
  495. package/src/vendor/bootstrap-vue/src/mixins/form-control.js +0 -51
  496. package/src/vendor/bootstrap-vue/src/mixins/form-custom.js +0 -24
  497. package/src/vendor/bootstrap-vue/src/mixins/form-options.js +0 -73
  498. package/src/vendor/bootstrap-vue/src/mixins/form-radio-check-group.js +0 -162
  499. package/src/vendor/bootstrap-vue/src/mixins/form-radio-check.js +0 -332
  500. package/src/vendor/bootstrap-vue/src/mixins/form-selection.js +0 -60
  501. package/src/vendor/bootstrap-vue/src/mixins/form-size.js +0 -24
  502. package/src/vendor/bootstrap-vue/src/mixins/form-state.js +0 -47
  503. package/src/vendor/bootstrap-vue/src/mixins/form-text.js +0 -250
  504. package/src/vendor/bootstrap-vue/src/mixins/form-validity.js +0 -48
  505. package/src/vendor/bootstrap-vue/src/mixins/has-listener.js +0 -26
  506. package/src/vendor/bootstrap-vue/src/mixins/id.js +0 -51
  507. package/src/vendor/bootstrap-vue/src/mixins/listen-on-document.js +0 -64
  508. package/src/vendor/bootstrap-vue/src/mixins/listen-on-document.spec.js +0 -117
  509. package/src/vendor/bootstrap-vue/src/mixins/listen-on-root.js +0 -121
  510. package/src/vendor/bootstrap-vue/src/mixins/listen-on-root.spec.js +0 -77
  511. package/src/vendor/bootstrap-vue/src/mixins/listen-on-window.js +0 -64
  512. package/src/vendor/bootstrap-vue/src/mixins/listen-on-window.spec.js +0 -115
  513. package/src/vendor/bootstrap-vue/src/mixins/listeners.js +0 -24
  514. package/src/vendor/bootstrap-vue/src/mixins/listeners.spec.js +0 -245
  515. package/src/vendor/bootstrap-vue/src/mixins/model.js +0 -5
  516. package/src/vendor/bootstrap-vue/src/mixins/normalize-slot.js +0 -30
  517. package/src/vendor/bootstrap-vue/src/mixins/scoped-style.js +0 -14
  518. package/src/vendor/bootstrap-vue/src/mixins/use-parent.js +0 -12
  519. package/src/vendor/bootstrap-vue/src/utils/array.js +0 -17
  520. package/src/vendor/bootstrap-vue/src/utils/bv-event.class.js +0 -60
  521. package/src/vendor/bootstrap-vue/src/utils/bv-event.class.spec.js +0 -66
  522. package/src/vendor/bootstrap-vue/src/utils/cache.js +0 -37
  523. package/src/vendor/bootstrap-vue/src/utils/clone-deep.js +0 -15
  524. package/src/vendor/bootstrap-vue/src/utils/clone-deep.spec.js +0 -70
  525. package/src/vendor/bootstrap-vue/src/utils/config-set.js +0 -80
  526. package/src/vendor/bootstrap-vue/src/utils/config.js +0 -72
  527. package/src/vendor/bootstrap-vue/src/utils/config.spec.js +0 -169
  528. package/src/vendor/bootstrap-vue/src/utils/create-new-child-component.js +0 -10
  529. package/src/vendor/bootstrap-vue/src/utils/css-escape.js +0 -73
  530. package/src/vendor/bootstrap-vue/src/utils/css-escape.spec.js +0 -82
  531. package/src/vendor/bootstrap-vue/src/utils/dom.js +0 -308
  532. package/src/vendor/bootstrap-vue/src/utils/dom.spec.js +0 -291
  533. package/src/vendor/bootstrap-vue/src/utils/element-to-vue-instance-registry.js +0 -40
  534. package/src/vendor/bootstrap-vue/src/utils/env.js +0 -15
  535. package/src/vendor/bootstrap-vue/src/utils/events.js +0 -71
  536. package/src/vendor/bootstrap-vue/src/utils/events.spec.js +0 -41
  537. package/src/vendor/bootstrap-vue/src/utils/get-event-root.js +0 -3
  538. package/src/vendor/bootstrap-vue/src/utils/get-instance-from-directive.js +0 -4
  539. package/src/vendor/bootstrap-vue/src/utils/get-scope-id.js +0 -6
  540. package/src/vendor/bootstrap-vue/src/utils/get.js +0 -64
  541. package/src/vendor/bootstrap-vue/src/utils/get.spec.js +0 -109
  542. package/src/vendor/bootstrap-vue/src/utils/html.js +0 -8
  543. package/src/vendor/bootstrap-vue/src/utils/identity.js +0 -1
  544. package/src/vendor/bootstrap-vue/src/utils/inspect.js +0 -51
  545. package/src/vendor/bootstrap-vue/src/utils/inspect.spec.js +0 -251
  546. package/src/vendor/bootstrap-vue/src/utils/locale.js +0 -34
  547. package/src/vendor/bootstrap-vue/src/utils/loose-equal.js +0 -57
  548. package/src/vendor/bootstrap-vue/src/utils/loose-equal.spec.js +0 -203
  549. package/src/vendor/bootstrap-vue/src/utils/loose-index-of.js +0 -11
  550. package/src/vendor/bootstrap-vue/src/utils/math.js +0 -11
  551. package/src/vendor/bootstrap-vue/src/utils/memoize.js +0 -10
  552. package/src/vendor/bootstrap-vue/src/utils/model.js +0 -29
  553. package/src/vendor/bootstrap-vue/src/utils/noop.js +0 -1
  554. package/src/vendor/bootstrap-vue/src/utils/normalize-slot.js +0 -44
  555. package/src/vendor/bootstrap-vue/src/utils/normalize-slot.spec.js +0 -63
  556. package/src/vendor/bootstrap-vue/src/utils/number.js +0 -19
  557. package/src/vendor/bootstrap-vue/src/utils/number.spec.js +0 -72
  558. package/src/vendor/bootstrap-vue/src/utils/object.js +0 -61
  559. package/src/vendor/bootstrap-vue/src/utils/object.spec.js +0 -61
  560. package/src/vendor/bootstrap-vue/src/utils/observe-dom.js +0 -77
  561. package/src/vendor/bootstrap-vue/src/utils/plugins.js +0 -169
  562. package/src/vendor/bootstrap-vue/src/utils/props.js +0 -92
  563. package/src/vendor/bootstrap-vue/src/utils/props.spec.js +0 -112
  564. package/src/vendor/bootstrap-vue/src/utils/router.js +0 -145
  565. package/src/vendor/bootstrap-vue/src/utils/router.spec.js +0 -248
  566. package/src/vendor/bootstrap-vue/src/utils/safe-vue-instance.js +0 -13
  567. package/src/vendor/bootstrap-vue/src/utils/stable-sort.js +0 -31
  568. package/src/vendor/bootstrap-vue/src/utils/string.js +0 -59
  569. package/src/vendor/bootstrap-vue/src/utils/string.spec.js +0 -65
  570. package/src/vendor/bootstrap-vue/src/utils/stringify-object-values.js +0 -31
  571. package/src/vendor/bootstrap-vue/src/utils/stringify-object-values.spec.js +0 -47
  572. package/src/vendor/bootstrap-vue/src/utils/warn.js +0 -42
  573. package/src/vendor/bootstrap-vue/src/utils/warn.spec.js +0 -54
  574. package/src/vendor/bootstrap-vue/src/vue-injections.d.ts +0 -13
  575. 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
- })