@gitlab/ui 92.2.0 → 92.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (440) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/bin/migrate_custom_utils_to_tw.bundled.mjs +11 -3
  3. package/dist/index.css +4 -2
  4. package/dist/index.css.map +1 -1
  5. package/dist/tailwind.css +1 -1
  6. package/dist/tailwind.css.map +1 -1
  7. package/dist/vendor/bootstrap-vue/src/components/form/index.js +0 -4
  8. package/dist/vendor/bootstrap-vue/src/components/index.js +0 -48
  9. package/dist/vendor/bootstrap-vue/src/components/layout/index.js +0 -6
  10. package/dist/vendor/bootstrap-vue/src/components/nav/index.js +0 -6
  11. package/dist/vendor/bootstrap-vue/src/components/navbar/index.js +1 -8
  12. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +2 -6
  13. package/dist/vendor/bootstrap-vue/src/constants/classes.js +1 -2
  14. package/dist/vendor/bootstrap-vue/src/constants/components.js +1 -51
  15. package/dist/vendor/bootstrap-vue/src/constants/events.js +1 -12
  16. package/dist/vendor/bootstrap-vue/src/constants/key-codes.js +1 -5
  17. package/dist/vendor/bootstrap-vue/src/constants/props.js +1 -4
  18. package/dist/vendor/bootstrap-vue/src/constants/regex.js +1 -20
  19. package/dist/vendor/bootstrap-vue/src/constants/slots.js +1 -33
  20. package/dist/vendor/bootstrap-vue/src/directives/toggle/toggle.js +1 -1
  21. package/dist/vendor/bootstrap-vue/src/index.js +0 -74
  22. package/dist/vendor/bootstrap-vue/src/utils/array.js +1 -3
  23. package/dist/vendor/bootstrap-vue/src/utils/inspect.js +1 -3
  24. package/dist/vendor/bootstrap-vue/src/utils/math.js +1 -3
  25. package/dist/vendor/bootstrap-vue/src/utils/object.js +1 -6
  26. package/dist/vendor/bootstrap-vue/src/utils/props.js +2 -8
  27. package/dist/vendor/bootstrap-vue/src/utils/string.js +1 -10
  28. package/package.json +1 -1
  29. package/src/components/base/accordion/accordion_item.scss +3 -3
  30. package/src/components/base/alert/alert.scss +3 -3
  31. package/src/components/base/avatar_labeled/avatar_labeled.scss +2 -2
  32. package/src/components/base/avatars_inline/avatars_inline.scss +1 -1
  33. package/src/components/base/badge/badge.scss +2 -2
  34. package/src/components/base/banner/banner.scss +2 -2
  35. package/src/components/base/breadcrumb/breadcrumb.scss +3 -3
  36. package/src/components/base/broadcast_message/broadcast_message.scss +3 -3
  37. package/src/components/base/button/button.scss +14 -14
  38. package/src/components/base/card/card.scss +1 -1
  39. package/src/components/base/datepicker/datepicker.scss +10 -10
  40. package/src/components/base/drawer/drawer.scss +5 -5
  41. package/src/components/base/dropdown/dropdown.scss +28 -28
  42. package/src/components/base/dropdown/dropdown_divider.scss +3 -3
  43. package/src/components/base/dropdown/dropdown_item.scss +9 -9
  44. package/src/components/base/dropdown/dropdown_section_header.scss +2 -2
  45. package/src/components/base/dropdown/dropdown_text.scss +1 -1
  46. package/src/components/base/filtered_search/filtered_search.scss +7 -7
  47. package/src/components/base/filtered_search/filtered_search_suggestion.scss +1 -1
  48. package/src/components/base/filtered_search/filtered_search_suggestion_list.scss +3 -3
  49. package/src/components/base/filtered_search/filtered_search_term.scss +2 -2
  50. package/src/components/base/filtered_search/filtered_search_token.scss +4 -4
  51. package/src/components/base/filtered_search/filtered_search_token_segment.scss +2 -2
  52. package/src/components/base/form/form_checkbox/form_checkbox.scss +10 -10
  53. package/src/components/base/form/form_group/form_group.scss +5 -5
  54. package/src/components/base/form/form_input/form_input.scss +2 -2
  55. package/src/components/base/form/form_select/form_select.scss +2 -2
  56. package/src/components/base/keyset_pagination/keyset_pagination.scss +1 -1
  57. package/src/components/base/label/label.scss +1 -1
  58. package/src/components/base/loading_icon/loading_icon.scss +1 -1
  59. package/src/components/base/markdown/markdown.scss +33 -33
  60. package/src/components/base/modal/modal.scss +11 -11
  61. package/src/components/base/new_dropdowns/dropdown.scss +14 -14
  62. package/src/components/base/new_dropdowns/dropdown_item.scss +9 -9
  63. package/src/components/base/new_dropdowns/listbox/listbox.scss +1 -1
  64. package/src/components/base/pagination/pagination.scss +3 -3
  65. package/src/components/base/path/path.scss +5 -5
  66. package/src/components/base/popover/popover.scss +5 -5
  67. package/src/components/base/search_box_by_click/search_box_by_click.scss +2 -2
  68. package/src/components/base/search_box_by_type/search_box_by_type.scss +4 -4
  69. package/src/components/base/table/table.scss +4 -4
  70. package/src/components/base/tabs/tabs/tabs.scss +10 -10
  71. package/src/components/base/toast/toast.scss +7 -7
  72. package/src/components/base/toggle/toggle.scss +6 -6
  73. package/src/components/base/token/token.scss +5 -5
  74. package/src/components/base/tooltip/tooltip.scss +3 -3
  75. package/src/components/charts/legend/legend.scss +4 -4
  76. package/src/components/charts/series_label/series_label.scss +1 -1
  77. package/src/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.scss +1 -1
  78. package/src/components/experimental/duo/chat/duo_chat.scss +4 -4
  79. package/src/components/shared_components/charts/tooltip_default_format.scss +1 -1
  80. package/src/scss/bootstrap_vue.scss +0 -18
  81. package/src/scss/typescale/_index.scss +9 -9
  82. package/src/vendor/bootstrap-vue/nuxt/index.js +0 -8
  83. package/src/vendor/bootstrap-vue/src/_utilities.scss +0 -9
  84. package/src/vendor/bootstrap-vue/src/_variables.scss +0 -52
  85. package/src/vendor/bootstrap-vue/src/components/form/index.d.ts +0 -3
  86. package/src/vendor/bootstrap-vue/src/components/form/index.js +1 -4
  87. package/src/vendor/bootstrap-vue/src/components/form/package.json +0 -12
  88. package/src/vendor/bootstrap-vue/src/components/index.d.ts +0 -24
  89. package/src/vendor/bootstrap-vue/src/components/index.js +0 -48
  90. package/src/vendor/bootstrap-vue/src/components/index.scss +0 -15
  91. package/src/vendor/bootstrap-vue/src/components/layout/index.d.ts +0 -6
  92. package/src/vendor/bootstrap-vue/src/components/layout/index.js +1 -5
  93. package/src/vendor/bootstrap-vue/src/components/layout/package.json +0 -67
  94. package/src/vendor/bootstrap-vue/src/components/modal/README.md +0 -1
  95. package/src/vendor/bootstrap-vue/src/components/nav/index.d.ts +0 -6
  96. package/src/vendor/bootstrap-vue/src/components/nav/index.js +1 -5
  97. package/src/vendor/bootstrap-vue/src/components/nav/package.json +0 -45
  98. package/src/vendor/bootstrap-vue/src/components/navbar/README.md +0 -5
  99. package/src/vendor/bootstrap-vue/src/components/navbar/index.d.ts +1 -7
  100. package/src/vendor/bootstrap-vue/src/components/navbar/index.js +2 -7
  101. package/src/vendor/bootstrap-vue/src/components/navbar/package.json +0 -75
  102. package/src/vendor/bootstrap-vue/src/components/table/README.md +1 -2
  103. package/src/vendor/bootstrap-vue/src/components/tabs/README.md +2 -2
  104. package/src/vendor/bootstrap-vue/src/components/toast/README.md +1 -3
  105. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +2 -6
  106. package/src/vendor/bootstrap-vue/src/constants/classes.js +0 -1
  107. package/src/vendor/bootstrap-vue/src/constants/components.js +0 -50
  108. package/src/vendor/bootstrap-vue/src/constants/events.js +0 -11
  109. package/src/vendor/bootstrap-vue/src/constants/key-codes.js +0 -4
  110. package/src/vendor/bootstrap-vue/src/constants/props.js +0 -3
  111. package/src/vendor/bootstrap-vue/src/constants/regex.js +0 -19
  112. package/src/vendor/bootstrap-vue/src/constants/slots.js +0 -32
  113. package/src/vendor/bootstrap-vue/src/directives/toggle/README.md +5 -23
  114. package/src/vendor/bootstrap-vue/src/directives/toggle/package.json +1 -1
  115. package/src/vendor/bootstrap-vue/src/directives/toggle/toggle.js +1 -1
  116. package/src/vendor/bootstrap-vue/src/index.js +0 -122
  117. package/src/vendor/bootstrap-vue/src/index.scss +0 -3
  118. package/src/vendor/bootstrap-vue/src/utils/array.js +0 -5
  119. package/src/vendor/bootstrap-vue/src/utils/config.spec.js +15 -15
  120. package/src/vendor/bootstrap-vue/src/utils/inspect.js +0 -4
  121. package/src/vendor/bootstrap-vue/src/utils/math.js +0 -4
  122. package/src/vendor/bootstrap-vue/src/utils/object.js +0 -5
  123. package/src/vendor/bootstrap-vue/src/utils/props.js +1 -7
  124. package/src/vendor/bootstrap-vue/src/utils/string.js +0 -9
  125. package/src/vendor/bootstrap-vue/src/utils/string.spec.js +1 -20
  126. package/dist/vendor/bootstrap-vue/src/components/alert/alert.js +0 -179
  127. package/dist/vendor/bootstrap-vue/src/components/alert/index.js +0 -11
  128. package/dist/vendor/bootstrap-vue/src/components/aspect/aspect.js +0 -67
  129. package/dist/vendor/bootstrap-vue/src/components/aspect/index.js +0 -11
  130. package/dist/vendor/bootstrap-vue/src/components/avatar/avatar-group.js +0 -67
  131. package/dist/vendor/bootstrap-vue/src/components/avatar/avatar.js +0 -266
  132. package/dist/vendor/bootstrap-vue/src/components/avatar/index.js +0 -14
  133. package/dist/vendor/bootstrap-vue/src/components/button-toolbar/button-toolbar.js +0 -112
  134. package/dist/vendor/bootstrap-vue/src/components/button-toolbar/index.js +0 -12
  135. package/dist/vendor/bootstrap-vue/src/components/calendar/calendar.js +0 -1010
  136. package/dist/vendor/bootstrap-vue/src/components/calendar/index.js +0 -11
  137. package/dist/vendor/bootstrap-vue/src/components/card/card-body.js +0 -63
  138. package/dist/vendor/bootstrap-vue/src/components/card/card-footer.js +0 -48
  139. package/dist/vendor/bootstrap-vue/src/components/card/card-group.js +0 -33
  140. package/dist/vendor/bootstrap-vue/src/components/card/card-header.js +0 -48
  141. package/dist/vendor/bootstrap-vue/src/components/card/card-img-lazy.js +0 -46
  142. package/dist/vendor/bootstrap-vue/src/components/card/card-img.js +0 -58
  143. package/dist/vendor/bootstrap-vue/src/components/card/card-sub-title.js +0 -35
  144. package/dist/vendor/bootstrap-vue/src/components/card/card-text.js +0 -31
  145. package/dist/vendor/bootstrap-vue/src/components/card/card-title.js +0 -33
  146. package/dist/vendor/bootstrap-vue/src/components/card/card.js +0 -123
  147. package/dist/vendor/bootstrap-vue/src/components/card/index.js +0 -38
  148. package/dist/vendor/bootstrap-vue/src/components/embed/embed.js +0 -50
  149. package/dist/vendor/bootstrap-vue/src/components/embed/index.js +0 -11
  150. package/dist/vendor/bootstrap-vue/src/components/form/form-datalist.js +0 -52
  151. package/dist/vendor/bootstrap-vue/src/components/form-btn-label-control/bv-form-btn-label-control.js +0 -261
  152. package/dist/vendor/bootstrap-vue/src/components/form-datepicker/form-datepicker.js +0 -310
  153. package/dist/vendor/bootstrap-vue/src/components/form-datepicker/index.js +0 -12
  154. package/dist/vendor/bootstrap-vue/src/components/form-file/form-file.js +0 -561
  155. package/dist/vendor/bootstrap-vue/src/components/form-file/index.js +0 -12
  156. package/dist/vendor/bootstrap-vue/src/components/form-rating/form-rating.js +0 -402
  157. package/dist/vendor/bootstrap-vue/src/components/form-rating/index.js +0 -12
  158. package/dist/vendor/bootstrap-vue/src/components/form-spinbutton/form-spinbutton.js +0 -555
  159. package/dist/vendor/bootstrap-vue/src/components/form-spinbutton/index.js +0 -12
  160. package/dist/vendor/bootstrap-vue/src/components/form-tags/form-tag.js +0 -97
  161. package/dist/vendor/bootstrap-vue/src/components/form-tags/form-tags.js +0 -806
  162. package/dist/vendor/bootstrap-vue/src/components/form-tags/index.js +0 -16
  163. package/dist/vendor/bootstrap-vue/src/components/form-timepicker/form-timepicker.js +0 -281
  164. package/dist/vendor/bootstrap-vue/src/components/form-timepicker/index.js +0 -12
  165. package/dist/vendor/bootstrap-vue/src/components/image/img-lazy.js +0 -157
  166. package/dist/vendor/bootstrap-vue/src/components/image/img.js +0 -124
  167. package/dist/vendor/bootstrap-vue/src/components/image/index.js +0 -14
  168. package/dist/vendor/bootstrap-vue/src/components/jumbotron/index.js +0 -11
  169. package/dist/vendor/bootstrap-vue/src/components/jumbotron/jumbotron.js +0 -98
  170. package/dist/vendor/bootstrap-vue/src/components/layout/container.js +0 -41
  171. package/dist/vendor/bootstrap-vue/src/components/layout/row.js +0 -113
  172. package/dist/vendor/bootstrap-vue/src/components/list-group/index.js +0 -14
  173. package/dist/vendor/bootstrap-vue/src/components/list-group/list-group-item.js +0 -78
  174. package/dist/vendor/bootstrap-vue/src/components/list-group/list-group.js +0 -42
  175. package/dist/vendor/bootstrap-vue/src/components/media/index.js +0 -17
  176. package/dist/vendor/bootstrap-vue/src/components/media/media-aside.js +0 -41
  177. package/dist/vendor/bootstrap-vue/src/components/media/media-body.js +0 -31
  178. package/dist/vendor/bootstrap-vue/src/components/media/media.js +0 -61
  179. package/dist/vendor/bootstrap-vue/src/components/nav/nav-form.js +0 -45
  180. package/dist/vendor/bootstrap-vue/src/components/nav/nav-text.js +0 -26
  181. package/dist/vendor/bootstrap-vue/src/components/navbar/navbar-nav.js +0 -46
  182. package/dist/vendor/bootstrap-vue/src/components/navbar/navbar-toggle.js +0 -89
  183. package/dist/vendor/bootstrap-vue/src/components/overlay/index.js +0 -11
  184. package/dist/vendor/bootstrap-vue/src/components/overlay/overlay.js +0 -163
  185. package/dist/vendor/bootstrap-vue/src/components/pagination/index.js +0 -11
  186. package/dist/vendor/bootstrap-vue/src/components/pagination/pagination.js +0 -135
  187. package/dist/vendor/bootstrap-vue/src/components/pagination-nav/index.js +0 -11
  188. package/dist/vendor/bootstrap-vue/src/components/pagination-nav/pagination-nav.js +0 -299
  189. package/dist/vendor/bootstrap-vue/src/components/sidebar/index.js +0 -15
  190. package/dist/vendor/bootstrap-vue/src/components/sidebar/sidebar.js +0 -432
  191. package/dist/vendor/bootstrap-vue/src/components/skeleton/index.js +0 -23
  192. package/dist/vendor/bootstrap-vue/src/components/skeleton/skeleton-icon.js +0 -47
  193. package/dist/vendor/bootstrap-vue/src/components/skeleton/skeleton-img.js +0 -60
  194. package/dist/vendor/bootstrap-vue/src/components/skeleton/skeleton-table.js +0 -64
  195. package/dist/vendor/bootstrap-vue/src/components/skeleton/skeleton-wrapper.js +0 -46
  196. package/dist/vendor/bootstrap-vue/src/components/skeleton/skeleton.js +0 -49
  197. package/dist/vendor/bootstrap-vue/src/components/spinner/index.js +0 -11
  198. package/dist/vendor/bootstrap-vue/src/components/spinner/spinner.js +0 -55
  199. package/dist/vendor/bootstrap-vue/src/components/time/index.js +0 -11
  200. package/dist/vendor/bootstrap-vue/src/components/time/time.js +0 -600
  201. package/dist/vendor/bootstrap-vue/src/constants/date.js +0 -8
  202. package/dist/vendor/bootstrap-vue/src/mixins/card.js +0 -22
  203. package/dist/vendor/bootstrap-vue/src/mixins/pagination.js +0 -598
  204. package/dist/vendor/bootstrap-vue/src/utils/date.js +0 -135
  205. package/src/vendor/bootstrap-vue/src/_custom-controls.scss +0 -30
  206. package/src/vendor/bootstrap-vue/src/components/alert/README.md +0 -280
  207. package/src/vendor/bootstrap-vue/src/components/alert/alert.js +0 -185
  208. package/src/vendor/bootstrap-vue/src/components/alert/alert.spec.js +0 -442
  209. package/src/vendor/bootstrap-vue/src/components/alert/index.d.ts +0 -13
  210. package/src/vendor/bootstrap-vue/src/components/alert/index.js +0 -8
  211. package/src/vendor/bootstrap-vue/src/components/alert/package.json +0 -72
  212. package/src/vendor/bootstrap-vue/src/components/aspect/README.md +0 -65
  213. package/src/vendor/bootstrap-vue/src/components/aspect/aspect.js +0 -65
  214. package/src/vendor/bootstrap-vue/src/components/aspect/aspect.spec.js +0 -121
  215. package/src/vendor/bootstrap-vue/src/components/aspect/index.d.ts +0 -11
  216. package/src/vendor/bootstrap-vue/src/components/aspect/index.js +0 -8
  217. package/src/vendor/bootstrap-vue/src/components/aspect/package.json +0 -26
  218. package/src/vendor/bootstrap-vue/src/components/avatar/README.md +0 -567
  219. package/src/vendor/bootstrap-vue/src/components/avatar/_avatar.scss +0 -148
  220. package/src/vendor/bootstrap-vue/src/components/avatar/avatar-group.js +0 -75
  221. package/src/vendor/bootstrap-vue/src/components/avatar/avatar-group.spec.js +0 -74
  222. package/src/vendor/bootstrap-vue/src/components/avatar/avatar.js +0 -228
  223. package/src/vendor/bootstrap-vue/src/components/avatar/avatar.spec.js +0 -355
  224. package/src/vendor/bootstrap-vue/src/components/avatar/index.d.ts +0 -14
  225. package/src/vendor/bootstrap-vue/src/components/avatar/index.js +0 -9
  226. package/src/vendor/bootstrap-vue/src/components/avatar/index.scss +0 -1
  227. package/src/vendor/bootstrap-vue/src/components/avatar/package.json +0 -149
  228. package/src/vendor/bootstrap-vue/src/components/button-toolbar/README.md +0 -109
  229. package/src/vendor/bootstrap-vue/src/components/button-toolbar/button-toolbar.js +0 -117
  230. package/src/vendor/bootstrap-vue/src/components/button-toolbar/button-toolbar.spec.js +0 -185
  231. package/src/vendor/bootstrap-vue/src/components/button-toolbar/index.d.ts +0 -11
  232. package/src/vendor/bootstrap-vue/src/components/button-toolbar/index.js +0 -11
  233. package/src/vendor/bootstrap-vue/src/components/button-toolbar/package.json +0 -32
  234. package/src/vendor/bootstrap-vue/src/components/calendar/README.md +0 -735
  235. package/src/vendor/bootstrap-vue/src/components/calendar/_calendar.scss +0 -78
  236. package/src/vendor/bootstrap-vue/src/components/calendar/calendar.js +0 -1146
  237. package/src/vendor/bootstrap-vue/src/components/calendar/calendar.spec.js +0 -466
  238. package/src/vendor/bootstrap-vue/src/components/calendar/index.d.ts +0 -28
  239. package/src/vendor/bootstrap-vue/src/components/calendar/index.js +0 -8
  240. package/src/vendor/bootstrap-vue/src/components/calendar/index.scss +0 -1
  241. package/src/vendor/bootstrap-vue/src/components/calendar/package.json +0 -317
  242. package/src/vendor/bootstrap-vue/src/components/card/README.md +0 -729
  243. package/src/vendor/bootstrap-vue/src/components/card/_card-img.scss +0 -7
  244. package/src/vendor/bootstrap-vue/src/components/card/card-body.js +0 -69
  245. package/src/vendor/bootstrap-vue/src/components/card/card-body.spec.js +0 -142
  246. package/src/vendor/bootstrap-vue/src/components/card/card-footer.js +0 -48
  247. package/src/vendor/bootstrap-vue/src/components/card/card-footer.spec.js +0 -98
  248. package/src/vendor/bootstrap-vue/src/components/card/card-group.js +0 -33
  249. package/src/vendor/bootstrap-vue/src/components/card/card-group.spec.js +0 -75
  250. package/src/vendor/bootstrap-vue/src/components/card/card-header.js +0 -48
  251. package/src/vendor/bootstrap-vue/src/components/card/card-header.spec.js +0 -98
  252. package/src/vendor/bootstrap-vue/src/components/card/card-img-lazy.js +0 -47
  253. package/src/vendor/bootstrap-vue/src/components/card/card-img-lazy.spec.js +0 -204
  254. package/src/vendor/bootstrap-vue/src/components/card/card-img.js +0 -50
  255. package/src/vendor/bootstrap-vue/src/components/card/card-img.spec.js +0 -208
  256. package/src/vendor/bootstrap-vue/src/components/card/card-sub-title.js +0 -35
  257. package/src/vendor/bootstrap-vue/src/components/card/card-sub-title.spec.js +0 -60
  258. package/src/vendor/bootstrap-vue/src/components/card/card-text.js +0 -25
  259. package/src/vendor/bootstrap-vue/src/components/card/card-text.spec.js +0 -48
  260. package/src/vendor/bootstrap-vue/src/components/card/card-title.js +0 -33
  261. package/src/vendor/bootstrap-vue/src/components/card/card-title.spec.js +0 -45
  262. package/src/vendor/bootstrap-vue/src/components/card/card.js +0 -140
  263. package/src/vendor/bootstrap-vue/src/components/card/card.spec.js +0 -296
  264. package/src/vendor/bootstrap-vue/src/components/card/index.d.ts +0 -38
  265. package/src/vendor/bootstrap-vue/src/components/card/index.js +0 -40
  266. package/src/vendor/bootstrap-vue/src/components/card/index.scss +0 -1
  267. package/src/vendor/bootstrap-vue/src/components/card/package.json +0 -262
  268. package/src/vendor/bootstrap-vue/src/components/embed/README.md +0 -63
  269. package/src/vendor/bootstrap-vue/src/components/embed/embed.js +0 -51
  270. package/src/vendor/bootstrap-vue/src/components/embed/embed.spec.js +0 -110
  271. package/src/vendor/bootstrap-vue/src/components/embed/index.d.ts +0 -11
  272. package/src/vendor/bootstrap-vue/src/components/embed/index.js +0 -8
  273. package/src/vendor/bootstrap-vue/src/components/embed/package.json +0 -29
  274. package/src/vendor/bootstrap-vue/src/components/form/form-datalist.js +0 -42
  275. package/src/vendor/bootstrap-vue/src/components/form/form-datalist.spec.js +0 -57
  276. package/src/vendor/bootstrap-vue/src/components/form-btn-label-control/_form-btn-label-control.scss +0 -125
  277. package/src/vendor/bootstrap-vue/src/components/form-btn-label-control/bv-form-btn-label-control.js +0 -278
  278. package/src/vendor/bootstrap-vue/src/components/form-btn-label-control/index.scss +0 -1
  279. package/src/vendor/bootstrap-vue/src/components/form-btn-label-control/package.json +0 -5
  280. package/src/vendor/bootstrap-vue/src/components/form-datepicker/README.md +0 -694
  281. package/src/vendor/bootstrap-vue/src/components/form-datepicker/_form-datepicker.scss +0 -1
  282. package/src/vendor/bootstrap-vue/src/components/form-datepicker/form-datepicker.js +0 -342
  283. package/src/vendor/bootstrap-vue/src/components/form-datepicker/form-datepicker.spec.js +0 -562
  284. package/src/vendor/bootstrap-vue/src/components/form-datepicker/index.d.ts +0 -12
  285. package/src/vendor/bootstrap-vue/src/components/form-datepicker/index.js +0 -11
  286. package/src/vendor/bootstrap-vue/src/components/form-datepicker/index.scss +0 -1
  287. package/src/vendor/bootstrap-vue/src/components/form-datepicker/package.json +0 -420
  288. package/src/vendor/bootstrap-vue/src/components/form-file/README.md +0 -357
  289. package/src/vendor/bootstrap-vue/src/components/form-file/_form-file.scss +0 -61
  290. package/src/vendor/bootstrap-vue/src/components/form-file/form-file.js +0 -575
  291. package/src/vendor/bootstrap-vue/src/components/form-file/form-file.spec.js +0 -885
  292. package/src/vendor/bootstrap-vue/src/components/form-file/index.d.ts +0 -13
  293. package/src/vendor/bootstrap-vue/src/components/form-file/index.js +0 -11
  294. package/src/vendor/bootstrap-vue/src/components/form-file/index.scss +0 -1
  295. package/src/vendor/bootstrap-vue/src/components/form-file/package.json +0 -131
  296. package/src/vendor/bootstrap-vue/src/components/form-rating/README.md +0 -526
  297. package/src/vendor/bootstrap-vue/src/components/form-rating/_form-rating.scss +0 -57
  298. package/src/vendor/bootstrap-vue/src/components/form-rating/form-rating.js +0 -411
  299. package/src/vendor/bootstrap-vue/src/components/form-rating/form-rating.spec.js +0 -544
  300. package/src/vendor/bootstrap-vue/src/components/form-rating/index.d.ts +0 -14
  301. package/src/vendor/bootstrap-vue/src/components/form-rating/index.js +0 -8
  302. package/src/vendor/bootstrap-vue/src/components/form-rating/index.scss +0 -1
  303. package/src/vendor/bootstrap-vue/src/components/form-rating/package.json +0 -166
  304. package/src/vendor/bootstrap-vue/src/components/form-spinbutton/README.md +0 -411
  305. package/src/vendor/bootstrap-vue/src/components/form-spinbutton/_spinbutton.scss +0 -76
  306. package/src/vendor/bootstrap-vue/src/components/form-spinbutton/form-spinbutton.js +0 -572
  307. package/src/vendor/bootstrap-vue/src/components/form-spinbutton/form-spinbutton.spec.js +0 -731
  308. package/src/vendor/bootstrap-vue/src/components/form-spinbutton/index.d.ts +0 -12
  309. package/src/vendor/bootstrap-vue/src/components/form-spinbutton/index.js +0 -11
  310. package/src/vendor/bootstrap-vue/src/components/form-spinbutton/index.scss +0 -1
  311. package/src/vendor/bootstrap-vue/src/components/form-spinbutton/package.json +0 -150
  312. package/src/vendor/bootstrap-vue/src/components/form-tags/README.md +0 -880
  313. package/src/vendor/bootstrap-vue/src/components/form-tags/_form-tags.scss +0 -70
  314. package/src/vendor/bootstrap-vue/src/components/form-tags/form-tag.js +0 -94
  315. package/src/vendor/bootstrap-vue/src/components/form-tags/form-tag.spec.js +0 -166
  316. package/src/vendor/bootstrap-vue/src/components/form-tags/form-tags.js +0 -891
  317. package/src/vendor/bootstrap-vue/src/components/form-tags/form-tags.spec.js +0 -920
  318. package/src/vendor/bootstrap-vue/src/components/form-tags/index.d.ts +0 -16
  319. package/src/vendor/bootstrap-vue/src/components/form-tags/index.js +0 -14
  320. package/src/vendor/bootstrap-vue/src/components/form-tags/index.scss +0 -1
  321. package/src/vendor/bootstrap-vue/src/components/form-tags/package.json +0 -440
  322. package/src/vendor/bootstrap-vue/src/components/form-timepicker/README.md +0 -450
  323. package/src/vendor/bootstrap-vue/src/components/form-timepicker/_form-timepicker.scss +0 -1
  324. package/src/vendor/bootstrap-vue/src/components/form-timepicker/form-timepicker.js +0 -308
  325. package/src/vendor/bootstrap-vue/src/components/form-timepicker/form-timepicker.spec.js +0 -440
  326. package/src/vendor/bootstrap-vue/src/components/form-timepicker/index.d.ts +0 -12
  327. package/src/vendor/bootstrap-vue/src/components/form-timepicker/index.js +0 -11
  328. package/src/vendor/bootstrap-vue/src/components/form-timepicker/index.scss +0 -1
  329. package/src/vendor/bootstrap-vue/src/components/form-timepicker/package.json +0 -255
  330. package/src/vendor/bootstrap-vue/src/components/image/README.md +0 -322
  331. package/src/vendor/bootstrap-vue/src/components/image/img-lazy.js +0 -161
  332. package/src/vendor/bootstrap-vue/src/components/image/img-lazy.spec.js +0 -96
  333. package/src/vendor/bootstrap-vue/src/components/image/img.js +0 -139
  334. package/src/vendor/bootstrap-vue/src/components/image/img.spec.js +0 -255
  335. package/src/vendor/bootstrap-vue/src/components/image/index.d.ts +0 -14
  336. package/src/vendor/bootstrap-vue/src/components/image/index.js +0 -12
  337. package/src/vendor/bootstrap-vue/src/components/image/package.json +0 -152
  338. package/src/vendor/bootstrap-vue/src/components/jumbotron/README.md +0 -109
  339. package/src/vendor/bootstrap-vue/src/components/jumbotron/index.d.ts +0 -11
  340. package/src/vendor/bootstrap-vue/src/components/jumbotron/index.js +0 -8
  341. package/src/vendor/bootstrap-vue/src/components/jumbotron/jumbotron.js +0 -103
  342. package/src/vendor/bootstrap-vue/src/components/jumbotron/jumbotron.spec.js +0 -254
  343. package/src/vendor/bootstrap-vue/src/components/jumbotron/package.json +0 -66
  344. package/src/vendor/bootstrap-vue/src/components/layout/container.js +0 -40
  345. package/src/vendor/bootstrap-vue/src/components/layout/container.spec.js +0 -75
  346. package/src/vendor/bootstrap-vue/src/components/layout/row.js +0 -111
  347. package/src/vendor/bootstrap-vue/src/components/layout/row.spec.js +0 -138
  348. package/src/vendor/bootstrap-vue/src/components/list-group/README.md +0 -291
  349. package/src/vendor/bootstrap-vue/src/components/list-group/index.d.ts +0 -14
  350. package/src/vendor/bootstrap-vue/src/components/list-group/index.js +0 -12
  351. package/src/vendor/bootstrap-vue/src/components/list-group/list-group-item.js +0 -76
  352. package/src/vendor/bootstrap-vue/src/components/list-group/list-group-item.spec.js +0 -286
  353. package/src/vendor/bootstrap-vue/src/components/list-group/list-group.js +0 -42
  354. package/src/vendor/bootstrap-vue/src/components/list-group/list-group.spec.js +0 -132
  355. package/src/vendor/bootstrap-vue/src/components/list-group/package.json +0 -52
  356. package/src/vendor/bootstrap-vue/src/components/media/README.md +0 -183
  357. package/src/vendor/bootstrap-vue/src/components/media/_media.scss +0 -9
  358. package/src/vendor/bootstrap-vue/src/components/media/index.d.ts +0 -17
  359. package/src/vendor/bootstrap-vue/src/components/media/index.js +0 -14
  360. package/src/vendor/bootstrap-vue/src/components/media/index.scss +0 -1
  361. package/src/vendor/bootstrap-vue/src/components/media/media-aside.js +0 -45
  362. package/src/vendor/bootstrap-vue/src/components/media/media-aside.spec.js +0 -79
  363. package/src/vendor/bootstrap-vue/src/components/media/media-body.js +0 -25
  364. package/src/vendor/bootstrap-vue/src/components/media/media-body.spec.js +0 -47
  365. package/src/vendor/bootstrap-vue/src/components/media/media.js +0 -52
  366. package/src/vendor/bootstrap-vue/src/components/media/media.spec.js +0 -149
  367. package/src/vendor/bootstrap-vue/src/components/media/package.json +0 -65
  368. package/src/vendor/bootstrap-vue/src/components/nav/nav-form.js +0 -50
  369. package/src/vendor/bootstrap-vue/src/components/nav/nav-form.spec.js +0 -93
  370. package/src/vendor/bootstrap-vue/src/components/nav/nav-text.js +0 -18
  371. package/src/vendor/bootstrap-vue/src/components/nav/nav-text.spec.js +0 -30
  372. package/src/vendor/bootstrap-vue/src/components/navbar/navbar-nav.js +0 -45
  373. package/src/vendor/bootstrap-vue/src/components/navbar/navbar-nav.spec.js +0 -105
  374. package/src/vendor/bootstrap-vue/src/components/navbar/navbar-toggle.js +0 -84
  375. package/src/vendor/bootstrap-vue/src/components/navbar/navbar-toggle.spec.js +0 -189
  376. package/src/vendor/bootstrap-vue/src/components/overlay/README.md +0 -815
  377. package/src/vendor/bootstrap-vue/src/components/overlay/index.d.ts +0 -11
  378. package/src/vendor/bootstrap-vue/src/components/overlay/index.js +0 -8
  379. package/src/vendor/bootstrap-vue/src/components/overlay/overlay.js +0 -162
  380. package/src/vendor/bootstrap-vue/src/components/overlay/overlay.spec.js +0 -257
  381. package/src/vendor/bootstrap-vue/src/components/overlay/package.json +0 -130
  382. package/src/vendor/bootstrap-vue/src/components/pagination/README.md +0 -430
  383. package/src/vendor/bootstrap-vue/src/components/pagination/_pagination.scss +0 -26
  384. package/src/vendor/bootstrap-vue/src/components/pagination/index.d.ts +0 -11
  385. package/src/vendor/bootstrap-vue/src/components/pagination/index.js +0 -8
  386. package/src/vendor/bootstrap-vue/src/components/pagination/index.scss +0 -1
  387. package/src/vendor/bootstrap-vue/src/components/pagination/package.json +0 -295
  388. package/src/vendor/bootstrap-vue/src/components/pagination/pagination.js +0 -138
  389. package/src/vendor/bootstrap-vue/src/components/pagination/pagination.spec.js +0 -1198
  390. package/src/vendor/bootstrap-vue/src/components/pagination-nav/README.md +0 -544
  391. package/src/vendor/bootstrap-vue/src/components/pagination-nav/_pagination-nav.scss +0 -2
  392. package/src/vendor/bootstrap-vue/src/components/pagination-nav/index.d.ts +0 -11
  393. package/src/vendor/bootstrap-vue/src/components/pagination-nav/index.js +0 -8
  394. package/src/vendor/bootstrap-vue/src/components/pagination-nav/index.scss +0 -1
  395. package/src/vendor/bootstrap-vue/src/components/pagination-nav/package.json +0 -315
  396. package/src/vendor/bootstrap-vue/src/components/pagination-nav/pagination-nav.js +0 -281
  397. package/src/vendor/bootstrap-vue/src/components/pagination-nav/pagination-nav.spec.js +0 -671
  398. package/src/vendor/bootstrap-vue/src/components/sidebar/README.md +0 -406
  399. package/src/vendor/bootstrap-vue/src/components/sidebar/_sidebar.scss +0 -97
  400. package/src/vendor/bootstrap-vue/src/components/sidebar/index.d.ts +0 -11
  401. package/src/vendor/bootstrap-vue/src/components/sidebar/index.js +0 -10
  402. package/src/vendor/bootstrap-vue/src/components/sidebar/index.scss +0 -1
  403. package/src/vendor/bootstrap-vue/src/components/sidebar/package.json +0 -239
  404. package/src/vendor/bootstrap-vue/src/components/sidebar/sidebar.js +0 -438
  405. package/src/vendor/bootstrap-vue/src/components/sidebar/sidebar.spec.js +0 -404
  406. package/src/vendor/bootstrap-vue/src/components/skeleton/README.md +0 -275
  407. package/src/vendor/bootstrap-vue/src/components/skeleton/_skeleton.scss +0 -141
  408. package/src/vendor/bootstrap-vue/src/components/skeleton/index.d.ts +0 -23
  409. package/src/vendor/bootstrap-vue/src/components/skeleton/index.js +0 -18
  410. package/src/vendor/bootstrap-vue/src/components/skeleton/index.scss +0 -1
  411. package/src/vendor/bootstrap-vue/src/components/skeleton/package.json +0 -136
  412. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton-icon.js +0 -45
  413. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton-icon.spec.js +0 -86
  414. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton-img.js +0 -49
  415. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton-img.spec.js +0 -139
  416. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton-table.js +0 -58
  417. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton-table.spec.js +0 -119
  418. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton-wrapper.js +0 -47
  419. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton-wrapper.spec.js +0 -48
  420. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton.js +0 -46
  421. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton.spec.js +0 -126
  422. package/src/vendor/bootstrap-vue/src/components/spinner/README.md +0 -229
  423. package/src/vendor/bootstrap-vue/src/components/spinner/index.d.ts +0 -11
  424. package/src/vendor/bootstrap-vue/src/components/spinner/index.js +0 -8
  425. package/src/vendor/bootstrap-vue/src/components/spinner/package.json +0 -38
  426. package/src/vendor/bootstrap-vue/src/components/spinner/spinner.js +0 -54
  427. package/src/vendor/bootstrap-vue/src/components/spinner/spinner.spec.js +0 -305
  428. package/src/vendor/bootstrap-vue/src/components/time/README.md +0 -431
  429. package/src/vendor/bootstrap-vue/src/components/time/_time.scss +0 -41
  430. package/src/vendor/bootstrap-vue/src/components/time/index.d.ts +0 -27
  431. package/src/vendor/bootstrap-vue/src/components/time/index.js +0 -8
  432. package/src/vendor/bootstrap-vue/src/components/time/index.scss +0 -1
  433. package/src/vendor/bootstrap-vue/src/components/time/package.json +0 -123
  434. package/src/vendor/bootstrap-vue/src/components/time/time.js +0 -601
  435. package/src/vendor/bootstrap-vue/src/components/time/time.spec.js +0 -330
  436. package/src/vendor/bootstrap-vue/src/constants/date.js +0 -7
  437. package/src/vendor/bootstrap-vue/src/mixins/card.js +0 -23
  438. package/src/vendor/bootstrap-vue/src/mixins/pagination.js +0 -670
  439. package/src/vendor/bootstrap-vue/src/utils/date.js +0 -130
  440. package/src/vendor/bootstrap-vue/src/utils/date.spec.js +0 -159
@@ -1,885 +0,0 @@
1
- import { mount } from '@vue/test-utils'
2
- import { waitNT, waitRAF } from '../../../tests/utils'
3
- import { BFormFile } from './form-file'
4
-
5
- describe('form-file', () => {
6
- it('default has expected structure, classes and attributes', async () => {
7
- const wrapper = mount(BFormFile, {
8
- propsData: {
9
- id: 'foo'
10
- }
11
- })
12
-
13
- expect(wrapper.element.tagName).toBe('DIV')
14
- expect(wrapper.classes()).toContain('custom-file')
15
- expect(wrapper.attributes('id')).toBeDefined()
16
- expect(wrapper.attributes('id')).toBe('foo__BV_file_outer_')
17
-
18
- const $input = wrapper.find('input')
19
- expect($input).toBeDefined()
20
- expect($input.classes()).toContain('custom-file-input')
21
- expect($input.attributes('type')).toBeDefined()
22
- expect($input.attributes('type')).toBe('file')
23
- expect($input.attributes('id')).toBeDefined()
24
- expect($input.attributes('id')).toBe('foo')
25
- expect($input.attributes('multiple')).toBeUndefined()
26
- expect($input.attributes('disabled')).toBeUndefined()
27
- expect($input.attributes('required')).toBeUndefined()
28
- expect($input.attributes('aria-required')).toBeUndefined()
29
- expect($input.attributes('capture')).toBeUndefined()
30
- expect($input.attributes('accept')).toBeUndefined()
31
- expect($input.attributes('name')).toBeUndefined()
32
-
33
- const label = wrapper.find('label')
34
- expect(label).toBeDefined()
35
- expect(label.classes()).toContain('custom-file-label')
36
- expect(label.attributes('for')).toBeDefined()
37
- expect(label.attributes('for')).toBe('foo')
38
-
39
- wrapper.destroy()
40
- })
41
-
42
- it('default has input attribute multiple when multiple=true', async () => {
43
- const wrapper = mount(BFormFile, {
44
- propsData: {
45
- id: 'foo',
46
- multiple: true
47
- }
48
- })
49
-
50
- const $input = wrapper.find('input')
51
- expect($input.attributes('multiple')).toBeDefined()
52
-
53
- wrapper.destroy()
54
- })
55
-
56
- it('default has input attribute required when required=true', async () => {
57
- const wrapper = mount(BFormFile, {
58
- propsData: {
59
- id: 'foo',
60
- required: true
61
- }
62
- })
63
-
64
- const $input = wrapper.find('input')
65
- expect($input.attributes('required')).toBeDefined()
66
- expect($input.attributes('aria-required')).toBeDefined()
67
- expect($input.attributes('aria-required')).toBe('true')
68
-
69
- wrapper.destroy()
70
- })
71
-
72
- it('default has input attribute disabled when disabled=true', async () => {
73
- const wrapper = mount(BFormFile, {
74
- propsData: {
75
- id: 'foo',
76
- disabled: true
77
- }
78
- })
79
-
80
- const $input = wrapper.find('input')
81
- expect($input.attributes('disabled')).toBeDefined()
82
-
83
- wrapper.destroy()
84
- })
85
-
86
- it('default has input attribute capture when capture=true', async () => {
87
- const wrapper = mount(BFormFile, {
88
- propsData: {
89
- id: 'foo',
90
- capture: true
91
- }
92
- })
93
-
94
- const $input = wrapper.find('input')
95
- expect($input.attributes('capture')).toBeDefined()
96
-
97
- wrapper.destroy()
98
- })
99
-
100
- it('default has input attribute accept when accept is set', async () => {
101
- const wrapper = mount(BFormFile, {
102
- propsData: {
103
- id: 'foo',
104
- accept: 'image/*'
105
- }
106
- })
107
-
108
- const $input = wrapper.find('input')
109
- expect($input.attributes('accept')).toBeDefined()
110
- expect($input.attributes('accept')).toBe('image/*')
111
-
112
- wrapper.destroy()
113
- })
114
-
115
- it('default has input attribute name when name is set', async () => {
116
- const wrapper = mount(BFormFile, {
117
- propsData: {
118
- id: 'foo',
119
- name: 'bar'
120
- }
121
- })
122
-
123
- const $input = wrapper.find('input')
124
- expect($input.attributes('name')).toBeDefined()
125
- expect($input.attributes('name')).toBe('bar')
126
-
127
- wrapper.destroy()
128
- })
129
-
130
- it('default has input attribute form when form is set', async () => {
131
- const wrapper = mount(BFormFile, {
132
- propsData: {
133
- id: 'foo',
134
- form: 'bar'
135
- }
136
- })
137
-
138
- const $input = wrapper.find('input')
139
- expect($input.attributes('form')).toBeDefined()
140
- expect($input.attributes('form')).toBe('bar')
141
-
142
- wrapper.destroy()
143
- })
144
-
145
- it('default has custom attributes transferred input element', async () => {
146
- const wrapper = mount(BFormFile, {
147
- propsData: {
148
- id: 'foo',
149
- foo: 'bar'
150
- }
151
- })
152
-
153
- const $input = wrapper.find('input')
154
- expect($input.attributes('foo')).toBeDefined()
155
- expect($input.attributes('foo')).toEqual('bar')
156
-
157
- wrapper.destroy()
158
- })
159
-
160
- it('default has class focus when input focused', async () => {
161
- const wrapper = mount(BFormFile, {
162
- propsData: {
163
- id: 'foo'
164
- }
165
- })
166
-
167
- const $input = wrapper.find('input')
168
- expect($input).toBeDefined()
169
- expect($input.classes()).not.toContain('focus')
170
-
171
- await $input.trigger('focusin')
172
- expect($input.classes()).toContain('focus')
173
-
174
- await $input.trigger('focusout')
175
- expect($input.classes()).not.toContain('focus')
176
-
177
- wrapper.destroy()
178
- })
179
-
180
- it('has no wrapper div or label when plain=true', async () => {
181
- const wrapper = mount(BFormFile, {
182
- propsData: {
183
- id: 'foo',
184
- plain: true
185
- }
186
- })
187
-
188
- expect(wrapper.element.tagName).toBe('INPUT')
189
- expect(wrapper.attributes('type')).toBeDefined()
190
- expect(wrapper.attributes('type')).toBe('file')
191
- expect(wrapper.attributes('id')).toBeDefined()
192
- expect(wrapper.attributes('id')).toBe('foo')
193
- expect(wrapper.attributes('multiple')).toBeUndefined()
194
-
195
- wrapper.destroy()
196
- })
197
-
198
- it('emits input event when file changed', async () => {
199
- const wrapper = mount(BFormFile, {
200
- propsData: {
201
- id: 'foo'
202
- }
203
- })
204
-
205
- const file = new File(['foo'], 'foo.txt', {
206
- type: 'text/plain',
207
- lastModified: Date.now()
208
- })
209
-
210
- // Emulate the files array
211
- wrapper.vm.setFiles([file])
212
- await waitNT(wrapper.vm)
213
- expect(wrapper.emitted('input')).toBeDefined()
214
- expect(wrapper.emitted('input').length).toEqual(1)
215
- expect(wrapper.emitted('input')[0][0]).toEqual(file)
216
-
217
- // Setting to same array of files should not emit event
218
- wrapper.vm.setFiles([file])
219
- await waitNT(wrapper.vm)
220
- expect(wrapper.emitted('input')).toBeDefined()
221
- expect(wrapper.emitted('input').length).toEqual(1)
222
-
223
- wrapper.destroy()
224
- })
225
-
226
- it('emits input event when files changed in multiple mode', async () => {
227
- const wrapper = mount(BFormFile, {
228
- propsData: {
229
- id: 'foo',
230
- multiple: true
231
- }
232
- })
233
-
234
- const file1 = new File(['foo'], 'foo.txt', {
235
- type: 'text/plain',
236
- lastModified: Date.now()
237
- })
238
- const file2 = new File(['foobar'], 'foobar.txt', {
239
- type: 'text/plain',
240
- lastModified: Date.now() - 1000
241
- })
242
- const files = [file1, file2]
243
-
244
- // Emulate the files array
245
- wrapper.vm.setFiles(files)
246
- await waitNT(wrapper.vm)
247
- expect(wrapper.emitted('input')).toBeDefined()
248
- expect(wrapper.emitted('input').length).toEqual(1)
249
- expect(wrapper.emitted('input')[0][0]).toEqual(files)
250
-
251
- // Setting to same array of files should not emit event
252
- wrapper.vm.setFiles(files)
253
- await waitNT(wrapper.vm)
254
- expect(wrapper.emitted('input')).toBeDefined()
255
- expect(wrapper.emitted('input').length).toEqual(1)
256
-
257
- // Setting to new array of same files should not emit event
258
- wrapper.vm.setFiles([file1, file2])
259
- await waitNT(wrapper.vm)
260
- expect(wrapper.emitted('input').length).toEqual(1)
261
-
262
- // Setting to array of new files should emit event
263
- wrapper.vm.setFiles(files.slice().reverse())
264
- await waitNT(wrapper.vm)
265
- expect(wrapper.emitted('input').length).toEqual(2)
266
- expect(wrapper.emitted('input')[1][0]).toEqual(files.slice().reverse())
267
-
268
- wrapper.destroy()
269
- })
270
-
271
- it('emits input event when files changed in directory mode', async () => {
272
- const wrapper = mount(BFormFile, {
273
- propsData: {
274
- id: 'foo',
275
- multiple: true,
276
- directory: true
277
- }
278
- })
279
-
280
- const file1 = new File(['foo'], 'foo.txt', {
281
- type: 'text/plain',
282
- lastModified: Date.now()
283
- })
284
- const file2 = new File(['bar'], 'bar.txt', {
285
- type: 'text/plain',
286
- lastModified: Date.now() - 1000
287
- })
288
- const file3 = new File(['baz'], 'baz.txt', {
289
- type: 'text/plain',
290
- lastModified: Date.now() - 2000
291
- })
292
- const files = [[file1, file2], file3]
293
-
294
- // Emulate the files array
295
- wrapper.vm.setFiles(files)
296
- await waitNT(wrapper.vm)
297
- expect(wrapper.emitted('input')).toBeDefined()
298
- expect(wrapper.emitted('input').length).toEqual(1)
299
- expect(wrapper.emitted('input')[0][0]).toEqual(files)
300
-
301
- // Setting to same array of files should not emit event
302
- wrapper.vm.setFiles(files)
303
- await waitNT(wrapper.vm)
304
- expect(wrapper.emitted('input')).toBeDefined()
305
- expect(wrapper.emitted('input').length).toEqual(1)
306
-
307
- // Setting to new array of same files should not emit event
308
- wrapper.vm.setFiles([[file1, file2], file3])
309
- await waitNT(wrapper.vm)
310
- expect(wrapper.emitted('input').length).toEqual(1)
311
-
312
- // Setting to array of new files should emit event
313
- wrapper.vm.setFiles(files.slice().reverse())
314
- await waitNT(wrapper.vm)
315
- expect(wrapper.emitted('input').length).toEqual(2)
316
- expect(wrapper.emitted('input')[1][0]).toEqual(files.slice().reverse())
317
-
318
- wrapper.destroy()
319
- })
320
-
321
- it('emits flat files array when `no-traverse` prop set', async () => {
322
- const wrapper = mount(BFormFile, {
323
- propsData: {
324
- id: 'foo',
325
- multiple: true,
326
- directory: true,
327
- noTraverse: true
328
- }
329
- })
330
-
331
- const file1 = new File(['foo'], 'foo.txt', {
332
- type: 'text/plain',
333
- lastModified: Date.now()
334
- })
335
- const file2 = new File(['bar'], 'bar.txt', {
336
- type: 'text/plain',
337
- lastModified: Date.now() - 1000
338
- })
339
- const file3 = new File(['baz'], 'baz.txt', {
340
- type: 'text/plain',
341
- lastModified: Date.now() - 2000
342
- })
343
- const files = [[file1, file2], file3]
344
-
345
- wrapper.vm.setFiles(files)
346
- await waitNT(wrapper.vm)
347
- expect(wrapper.emitted('input')).toBeDefined()
348
- expect(wrapper.emitted('input').length).toEqual(1)
349
- expect(wrapper.emitted('input')[0][0]).toEqual([file1, file2, file3])
350
-
351
- wrapper.destroy()
352
- })
353
-
354
- it('native change event works', async () => {
355
- const wrapper = mount(BFormFile, {
356
- propsData: {
357
- id: 'foo'
358
- }
359
- })
360
-
361
- const file1 = new File(['foo'], 'foo.txt', {
362
- type: 'text/plain',
363
- lastModified: Date.now()
364
- })
365
-
366
- // Emulate the files array
367
- wrapper.vm.setFiles([file1])
368
- await waitNT(wrapper.vm)
369
- expect(wrapper.emitted('change')).toBeUndefined()
370
- expect(wrapper.emitted('input')).toBeDefined()
371
- expect(wrapper.emitted('input').length).toEqual(1)
372
- expect(wrapper.emitted('input')[0][0]).toEqual(file1)
373
-
374
- const $input = wrapper.find('input')
375
- $input.element.value = ''
376
- await $input.trigger('change')
377
- expect(wrapper.emitted('change').length).toEqual(1)
378
- expect(wrapper.emitted('input').length).toEqual(2)
379
- expect(wrapper.emitted('input')[1][0]).toEqual(null)
380
-
381
- wrapper.destroy()
382
- })
383
-
384
- it('reset() method works in single mode', async () => {
385
- const wrapper = mount(BFormFile, {
386
- propsData: {
387
- id: 'foo',
388
- multiple: false
389
- }
390
- })
391
-
392
- const file1 = new File(['foo'], 'foo.txt', {
393
- type: 'text/plain',
394
- lastModified: Date.now()
395
- })
396
- const files = [file1]
397
-
398
- // Emulate the files array
399
- wrapper.vm.setFiles(files)
400
- await waitNT(wrapper.vm)
401
- expect(wrapper.emitted('input')).toBeDefined()
402
- expect(wrapper.emitted('input').length).toEqual(1)
403
- expect(wrapper.emitted('input')[0][0]).toEqual(file1)
404
-
405
- wrapper.vm.reset()
406
- await waitNT(wrapper.vm)
407
- expect(wrapper.emitted('input').length).toEqual(2)
408
- expect(wrapper.emitted('input')[1][0]).toEqual(null)
409
-
410
- wrapper.destroy()
411
- })
412
-
413
- it('reset() method works in multiple mode', async () => {
414
- const wrapper = mount(BFormFile, {
415
- propsData: {
416
- id: 'foo',
417
- multiple: true
418
- }
419
- })
420
-
421
- const file1 = new File(['foo'], 'foo.txt', {
422
- type: 'text/plain',
423
- lastModified: Date.now()
424
- })
425
- const file2 = new File(['<html><body></body></html>'], 'bar.html', {
426
- type: 'text/html',
427
- lastModified: Date.now() - 500
428
- })
429
- const files = [file1, file2]
430
-
431
- // Emulate the files array
432
- wrapper.vm.setFiles(files)
433
- await waitNT(wrapper.vm)
434
- expect(wrapper.emitted('input')).toBeDefined()
435
- expect(wrapper.emitted('input').length).toEqual(1)
436
- expect(wrapper.emitted('input')[0][0]).toEqual(files)
437
-
438
- wrapper.vm.reset()
439
- await waitNT(wrapper.vm)
440
- expect(wrapper.emitted('input').length).toEqual(2)
441
- expect(wrapper.emitted('input')[1][0]).toEqual([])
442
-
443
- wrapper.destroy()
444
- })
445
-
446
- it('reset works in single mode by setting value', async () => {
447
- const wrapper = mount(BFormFile, {
448
- propsData: {
449
- id: 'foo',
450
- value: null
451
- }
452
- })
453
-
454
- const file1 = new File(['foo'], 'foo.txt', {
455
- type: 'text/plain',
456
- lastModified: Date.now()
457
- })
458
-
459
- // Emulate the files array
460
- wrapper.vm.setFiles([file1])
461
- await waitNT(wrapper.vm)
462
- expect(wrapper.emitted('input')).toBeDefined()
463
- expect(wrapper.emitted('input').length).toEqual(1)
464
- expect(wrapper.emitted('input')[0][0]).toEqual(file1)
465
-
466
- await wrapper.setProps({ value: null })
467
- expect(wrapper.emitted('input').length).toEqual(1)
468
-
469
- wrapper.destroy()
470
- })
471
-
472
- it('reset works in multiple mode by setting value', async () => {
473
- const wrapper = mount(BFormFile, {
474
- propsData: {
475
- id: 'foo',
476
- value: [],
477
- multiple: true
478
- }
479
- })
480
-
481
- const file1 = new File(['foo'], 'foo.txt', {
482
- type: 'text/plain',
483
- lastModified: Date.now()
484
- })
485
- const file2 = new File(['foo bar'], 'foobar.txt', {
486
- type: 'text/plain',
487
- lastModified: Date.now()
488
- })
489
- const files = [file1, file2]
490
-
491
- // Emulate the files array
492
- wrapper.vm.setFiles(files)
493
- await waitNT(wrapper.vm)
494
- expect(wrapper.emitted('input')).toBeDefined()
495
- expect(wrapper.emitted('input').length).toEqual(1)
496
- expect(wrapper.emitted('input')[0][0]).toEqual(files)
497
-
498
- await wrapper.setProps({ value: null })
499
- expect(wrapper.emitted('input').length).toEqual(2)
500
- expect(wrapper.emitted('input')[1][0]).toEqual([])
501
-
502
- wrapper.vm.setFiles(files)
503
- await waitNT(wrapper.vm)
504
- expect(wrapper.emitted('input').length).toEqual(3)
505
- expect(wrapper.emitted('input')[2][0]).toEqual(files)
506
-
507
- await wrapper.setProps({ value: [] })
508
- expect(wrapper.emitted('input').length).toEqual(4)
509
- expect(wrapper.emitted('input')[3][0]).toEqual([])
510
-
511
- wrapper.destroy()
512
- })
513
-
514
- it('native reset event works', async () => {
515
- const wrapper = mount(BFormFile, {
516
- propsData: {
517
- id: 'foo',
518
- value: null
519
- }
520
- })
521
-
522
- const file1 = new File(['foo'], 'foo.txt', {
523
- type: 'text/plain',
524
- lastModified: Date.now()
525
- })
526
-
527
- // Emulate the files array
528
- wrapper.vm.setFiles([file1])
529
- await waitNT(wrapper.vm)
530
- expect(wrapper.emitted('input')).toBeDefined()
531
- expect(wrapper.emitted('input').length).toEqual(1)
532
- expect(wrapper.emitted('input')[0][0]).toEqual(file1)
533
-
534
- await wrapper.find('input').trigger('reset')
535
- expect(wrapper.emitted('input').length).toEqual(2)
536
- expect(wrapper.emitted('input')[1][0]).toEqual(null)
537
-
538
- wrapper.destroy()
539
- })
540
-
541
- it('form native reset event triggers BFormFile reset', async () => {
542
- const App = {
543
- render(h) {
544
- return h('form', {}, [h(BFormFile, { id: 'foo' })])
545
- }
546
- }
547
- const wrapper = mount(App, {
548
- attachTo: document.body
549
- })
550
-
551
- const file = new File(['foo'], 'foo.txt', {
552
- type: 'text/plain',
553
- lastModified: Date.now()
554
- })
555
-
556
- expect(wrapper.element.tagName).toBe('FORM')
557
- const formFile = wrapper.findComponent(BFormFile)
558
- expect(formFile.exists()).toBe(true)
559
-
560
- // Emulate the files array
561
- formFile.vm.setFiles([file])
562
- await waitNT(wrapper.vm)
563
- expect(formFile.emitted('input')).toBeDefined()
564
- expect(formFile.emitted('input').length).toEqual(1)
565
- expect(formFile.emitted('input')[0][0]).toEqual(file)
566
-
567
- // Trigger form's native reset event
568
- wrapper.find('form').trigger('reset')
569
- await waitNT(wrapper.vm)
570
- expect(formFile.emitted('input').length).toEqual(2)
571
- expect(formFile.emitted('input')[1][0]).toEqual(null)
572
-
573
- wrapper.destroy()
574
- })
575
-
576
- it('file-name-formatter works', async () => {
577
- let called = false
578
- let filesArray = null
579
- let filesTraversedArray = null
580
- const wrapper = mount(BFormFile, {
581
- propsData: {
582
- id: 'foo',
583
- fileNameFormatter: (files, filesTraversed) => {
584
- called = true
585
- filesArray = files
586
- filesTraversedArray = filesTraversed
587
- return 'some files'
588
- }
589
- }
590
- })
591
- const file = new File(['foo'], 'foo.txt', {
592
- type: 'text/plain',
593
- lastModified: Date.now()
594
- })
595
-
596
- // Emulate the files array
597
- wrapper.vm.setFiles([file])
598
- await waitNT(wrapper.vm)
599
- expect(wrapper.emitted('input')).toBeDefined()
600
- expect(wrapper.emitted('input').length).toEqual(1)
601
- expect(wrapper.emitted('input')[0][0]).toEqual(file)
602
-
603
- // Formatter should have been called, and passed two arrays
604
- expect(called).toBe(true)
605
- expect(Array.isArray(filesArray)).toBe(true)
606
- expect(filesArray).toEqual([file])
607
- expect(Array.isArray(filesTraversedArray)).toBe(true)
608
- expect(filesTraversedArray).toEqual([file])
609
- // Should have our custom formatted "filename"
610
- expect(wrapper.find('label').text()).toContain('some files')
611
-
612
- wrapper.destroy()
613
- })
614
-
615
- it('file-name slot works', async () => {
616
- let slotScope = null
617
- const wrapper = mount(BFormFile, {
618
- propsData: {
619
- id: 'foo'
620
- },
621
- scopedSlots: {
622
- 'file-name': scope => {
623
- slotScope = scope
624
- return 'foobar'
625
- }
626
- }
627
- })
628
- const file = new File(['foo'], 'foo.txt', {
629
- type: 'text/plain',
630
- lastModified: Date.now()
631
- })
632
-
633
- // Emulate the files array
634
- wrapper.vm.setFiles([file])
635
- await waitNT(wrapper.vm)
636
- expect(wrapper.emitted('input')).toBeDefined()
637
- expect(wrapper.emitted('input').length).toEqual(1)
638
- expect(wrapper.emitted('input')[0][0]).toEqual(file)
639
-
640
- // Scoped slot should have been called, with expected scope
641
- expect(slotScope).toEqual({ files: [file], filesTraversed: [file], names: [file.name] })
642
- // Should have our custom formatted "filename"
643
- expect(wrapper.find('label').text()).toContain('foobar')
644
-
645
- wrapper.destroy()
646
- })
647
-
648
- it('drag placeholder and drop works', async () => {
649
- const wrapper = mount(BFormFile, {
650
- propsData: {
651
- id: 'foo',
652
- placeholder: 'PLACEHOLDER',
653
- dropPlaceholder: 'DROP_HERE',
654
- noDropPlaceholder: 'NO_DROP_HERE',
655
- noDrop: true
656
- }
657
- })
658
-
659
- const file = new File(['foo'], 'foo.txt', {
660
- type: 'text/plain',
661
- lastModified: Date.now()
662
- })
663
-
664
- expect(wrapper.vm).toBeDefined()
665
- const $label = wrapper.find('label')
666
- expect($label.exists()).toBe(true)
667
- expect($label.text()).toContain('PLACEHOLDER')
668
- expect($label.text()).not.toContain('DROP_HERE')
669
-
670
- await wrapper.trigger('dragenter')
671
- expect($label.text()).toContain('PLACEHOLDER')
672
- expect($label.text()).not.toContain('DROP_HERE')
673
-
674
- await wrapper.trigger('dragover')
675
- expect($label.text()).toContain('PLACEHOLDER')
676
- expect($label.text()).not.toContain('DROP_HERE')
677
-
678
- await wrapper.trigger('drop', {
679
- dataTransfer: {
680
- files: [file]
681
- }
682
- })
683
- expect($label.text()).toContain('PLACEHOLDER')
684
- expect($label.text()).not.toContain('DROP_HERE')
685
- expect($label.text()).not.toContain(file.name)
686
-
687
- await wrapper.setProps({ noDrop: false })
688
- expect($label.text()).toContain('PLACEHOLDER')
689
- expect($label.text()).not.toContain('DROP_HERE')
690
-
691
- await wrapper.trigger('dragenter')
692
- expect($label.text()).not.toContain('PLACEHOLDER')
693
- expect($label.text()).toContain('NO_DROP_HERE')
694
-
695
- await wrapper.trigger('dragover')
696
- expect($label.text()).not.toContain('PLACEHOLDER')
697
- expect($label.text()).toContain('NO_DROP_HERE')
698
-
699
- await wrapper.trigger('dragleave')
700
- expect($label.text()).toContain('PLACEHOLDER')
701
- expect($label.text()).not.toContain('DROP_HERE')
702
-
703
- await wrapper.trigger('dragover')
704
- expect($label.text()).not.toContain('PLACEHOLDER')
705
- expect($label.text()).toContain('DROP_HERE')
706
-
707
- await wrapper.trigger('drop', {
708
- dataTransfer: {
709
- files: [file]
710
- }
711
- })
712
- await waitNT(wrapper.vm)
713
- expect($label.text()).not.toContain('PLACEHOLDER')
714
- expect($label.text()).not.toContain('DROP_HERE')
715
- expect($label.text()).toContain(file.name)
716
-
717
- wrapper.destroy()
718
- })
719
-
720
- // These tests are wrapped in a new describe to limit the scope of the getBCR Mock
721
- describe('prop `autofocus`', () => {
722
- const origGetBCR = Element.prototype.getBoundingClientRect
723
-
724
- beforeEach(() => {
725
- // Mock `getBoundingClientRect()` so that the `isVisible(el)` test returns `true`
726
- // In our test below, all pagination buttons would normally be visible
727
- Element.prototype.getBoundingClientRect = jest.fn(() => ({
728
- width: 24,
729
- height: 24,
730
- top: 0,
731
- left: 0,
732
- bottom: 0,
733
- right: 0
734
- }))
735
- })
736
-
737
- afterEach(() => {
738
- // Restore prototype
739
- Element.prototype.getBoundingClientRect = origGetBCR
740
- })
741
-
742
- it('works when true', async () => {
743
- const wrapper = mount(BFormFile, {
744
- attachTo: document.body,
745
- propsData: {
746
- autofocus: true
747
- }
748
- })
749
-
750
- expect(wrapper.vm).toBeDefined()
751
- await waitNT(wrapper.vm)
752
- await waitRAF()
753
-
754
- const $input = wrapper.find('input')
755
- expect($input.exists()).toBe(true)
756
- expect(document).toBeDefined()
757
- expect(document.activeElement).toBe($input.element)
758
-
759
- wrapper.destroy()
760
- })
761
- })
762
-
763
- describe('accept methods', () => {
764
- // Faked files (needs name and type properties only)
765
- const fileText = { name: 'file.txt', type: 'text/plain' }
766
- const fileHtml = { name: 'file.html', type: 'text/html' }
767
- const fileJson = { name: 'file.json', type: 'application/json' }
768
- const filePng = { name: 'file.png', type: 'image/png' }
769
-
770
- it('isFileValid() works with accept not set', async () => {
771
- const wrapper = mount(BFormFile)
772
-
773
- const vm = wrapper.vm
774
- expect(vm.isFileValid(fileText)).toBe(true)
775
- expect(vm.isFileValid(fileHtml)).toBe(true)
776
- expect(vm.isFileValid(fileJson)).toBe(true)
777
- expect(vm.isFileValid(filePng)).toBe(true)
778
- expect(vm.isFileValid()).toBe(false)
779
-
780
- wrapper.destroy()
781
- })
782
-
783
- it('isFileValid() works with accept set to single extension', async () => {
784
- const wrapper = mount(BFormFile, {
785
- propsData: {
786
- accept: '.txt'
787
- }
788
- })
789
-
790
- const vm = wrapper.vm
791
- expect(vm.isFileValid(fileText)).toBe(true)
792
- expect(vm.isFileValid(fileHtml)).toBe(false)
793
- expect(vm.isFileValid(fileJson)).toBe(false)
794
- expect(vm.isFileValid(filePng)).toBe(false)
795
- expect(vm.isFileValid()).toBe(false)
796
-
797
- wrapper.destroy()
798
- })
799
-
800
- it('isFileValid() works with accept set to multiple extensions', async () => {
801
- const wrapper = mount(BFormFile, {
802
- propsData: {
803
- accept: '.txt,.html, .png'
804
- }
805
- })
806
-
807
- const vm = wrapper.vm
808
- expect(vm.isFileValid(fileText)).toBe(true)
809
- expect(vm.isFileValid(fileHtml)).toBe(true)
810
- expect(vm.isFileValid(fileJson)).toBe(false)
811
- expect(vm.isFileValid(filePng)).toBe(true)
812
- expect(vm.isFileValid()).toBe(false)
813
-
814
- wrapper.destroy()
815
- })
816
-
817
- it('isFileValid() works with accept set to single mime type', async () => {
818
- const wrapper = mount(BFormFile, {
819
- propsData: {
820
- accept: 'text/plain'
821
- }
822
- })
823
-
824
- const vm = wrapper.vm
825
- expect(vm.isFileValid(fileText)).toBe(true)
826
- expect(vm.isFileValid(fileHtml)).toBe(false)
827
- expect(vm.isFileValid(fileJson)).toBe(false)
828
- expect(vm.isFileValid(filePng)).toBe(false)
829
- expect(vm.isFileValid()).toBe(false)
830
-
831
- wrapper.destroy()
832
- })
833
-
834
- it('isFileValid() works with accept set to single wildcard mime type', async () => {
835
- const wrapper = mount(BFormFile, {
836
- propsData: {
837
- accept: 'text/*'
838
- }
839
- })
840
-
841
- const vm = wrapper.vm
842
- expect(vm.isFileValid(fileText)).toBe(true)
843
- expect(vm.isFileValid(fileHtml)).toBe(true)
844
- expect(vm.isFileValid(fileJson)).toBe(false)
845
- expect(vm.isFileValid(filePng)).toBe(false)
846
- expect(vm.isFileValid()).toBe(false)
847
-
848
- wrapper.destroy()
849
- })
850
-
851
- it('isFileValid() works with accept set to multiple mime types', async () => {
852
- const wrapper = mount(BFormFile, {
853
- propsData: {
854
- accept: 'text/*, application/json'
855
- }
856
- })
857
-
858
- const vm = wrapper.vm
859
- expect(vm.isFileValid(fileText)).toBe(true)
860
- expect(vm.isFileValid(fileHtml)).toBe(true)
861
- expect(vm.isFileValid(fileJson)).toBe(true)
862
- expect(vm.isFileValid(filePng)).toBe(false)
863
- expect(vm.isFileValid()).toBe(false)
864
-
865
- wrapper.destroy()
866
- })
867
-
868
- it('isFileValid() works with accept set to mime and extension', async () => {
869
- const wrapper = mount(BFormFile, {
870
- propsData: {
871
- accept: '.png, application/json'
872
- }
873
- })
874
-
875
- const vm = wrapper.vm
876
- expect(vm.isFileValid(fileText)).toBe(false)
877
- expect(vm.isFileValid(fileHtml)).toBe(false)
878
- expect(vm.isFileValid(fileJson)).toBe(true)
879
- expect(vm.isFileValid(filePng)).toBe(true)
880
- expect(vm.isFileValid()).toBe(false)
881
-
882
- wrapper.destroy()
883
- })
884
- })
885
- })