@gitlab/duo-ui 2.0.0 → 3.0.1

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