@gitlab/ui 92.2.0 → 92.3.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 (456) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/bin/migrate_custom_utils_to_tw.bundled.mjs +11 -3
  3. package/dist/components/experimental/duo/chat/components/duo_chat_context/constants.js +4 -4
  4. package/dist/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu.js +4 -4
  5. package/dist/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_item.js +8 -8
  6. package/dist/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_items.js +5 -4
  7. package/dist/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_popover/duo_chat_context_item_popover.js +15 -16
  8. package/dist/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections.js +7 -7
  9. package/dist/components/experimental/duo/chat/components/duo_chat_context/mock_context_data.js +63 -81
  10. package/dist/components/experimental/duo/chat/components/duo_chat_context/utils.js +1 -1
  11. package/dist/index.css +4 -2
  12. package/dist/index.css.map +1 -1
  13. package/dist/tailwind.css +1 -1
  14. package/dist/tailwind.css.map +1 -1
  15. package/dist/vendor/bootstrap-vue/src/components/form/index.js +0 -4
  16. package/dist/vendor/bootstrap-vue/src/components/index.js +0 -48
  17. package/dist/vendor/bootstrap-vue/src/components/layout/index.js +0 -6
  18. package/dist/vendor/bootstrap-vue/src/components/nav/index.js +0 -6
  19. package/dist/vendor/bootstrap-vue/src/components/navbar/index.js +1 -8
  20. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +2 -6
  21. package/dist/vendor/bootstrap-vue/src/constants/classes.js +1 -2
  22. package/dist/vendor/bootstrap-vue/src/constants/components.js +1 -51
  23. package/dist/vendor/bootstrap-vue/src/constants/events.js +1 -12
  24. package/dist/vendor/bootstrap-vue/src/constants/key-codes.js +1 -5
  25. package/dist/vendor/bootstrap-vue/src/constants/props.js +1 -4
  26. package/dist/vendor/bootstrap-vue/src/constants/regex.js +1 -20
  27. package/dist/vendor/bootstrap-vue/src/constants/slots.js +1 -33
  28. package/dist/vendor/bootstrap-vue/src/directives/toggle/toggle.js +1 -1
  29. package/dist/vendor/bootstrap-vue/src/index.js +0 -74
  30. package/dist/vendor/bootstrap-vue/src/utils/array.js +1 -3
  31. package/dist/vendor/bootstrap-vue/src/utils/inspect.js +1 -3
  32. package/dist/vendor/bootstrap-vue/src/utils/math.js +1 -3
  33. package/dist/vendor/bootstrap-vue/src/utils/object.js +1 -6
  34. package/dist/vendor/bootstrap-vue/src/utils/props.js +2 -8
  35. package/dist/vendor/bootstrap-vue/src/utils/string.js +1 -10
  36. package/package.json +1 -1
  37. package/src/components/base/accordion/accordion_item.scss +3 -3
  38. package/src/components/base/alert/alert.scss +3 -3
  39. package/src/components/base/avatar_labeled/avatar_labeled.scss +2 -2
  40. package/src/components/base/avatars_inline/avatars_inline.scss +1 -1
  41. package/src/components/base/badge/badge.scss +2 -2
  42. package/src/components/base/banner/banner.scss +2 -2
  43. package/src/components/base/breadcrumb/breadcrumb.scss +3 -3
  44. package/src/components/base/broadcast_message/broadcast_message.scss +3 -3
  45. package/src/components/base/button/button.scss +14 -14
  46. package/src/components/base/card/card.scss +1 -1
  47. package/src/components/base/datepicker/datepicker.scss +10 -10
  48. package/src/components/base/drawer/drawer.scss +5 -5
  49. package/src/components/base/dropdown/dropdown.scss +28 -28
  50. package/src/components/base/dropdown/dropdown_divider.scss +3 -3
  51. package/src/components/base/dropdown/dropdown_item.scss +9 -9
  52. package/src/components/base/dropdown/dropdown_section_header.scss +2 -2
  53. package/src/components/base/dropdown/dropdown_text.scss +1 -1
  54. package/src/components/base/filtered_search/filtered_search.scss +7 -7
  55. package/src/components/base/filtered_search/filtered_search_suggestion.scss +1 -1
  56. package/src/components/base/filtered_search/filtered_search_suggestion_list.scss +3 -3
  57. package/src/components/base/filtered_search/filtered_search_term.scss +2 -2
  58. package/src/components/base/filtered_search/filtered_search_token.scss +4 -4
  59. package/src/components/base/filtered_search/filtered_search_token_segment.scss +2 -2
  60. package/src/components/base/form/form_checkbox/form_checkbox.scss +10 -10
  61. package/src/components/base/form/form_group/form_group.scss +5 -5
  62. package/src/components/base/form/form_input/form_input.scss +2 -2
  63. package/src/components/base/form/form_select/form_select.scss +2 -2
  64. package/src/components/base/keyset_pagination/keyset_pagination.scss +1 -1
  65. package/src/components/base/label/label.scss +1 -1
  66. package/src/components/base/loading_icon/loading_icon.scss +1 -1
  67. package/src/components/base/markdown/markdown.scss +33 -33
  68. package/src/components/base/modal/modal.scss +11 -11
  69. package/src/components/base/new_dropdowns/dropdown.scss +14 -14
  70. package/src/components/base/new_dropdowns/dropdown_item.scss +9 -9
  71. package/src/components/base/new_dropdowns/listbox/listbox.scss +1 -1
  72. package/src/components/base/pagination/pagination.scss +3 -3
  73. package/src/components/base/path/path.scss +5 -5
  74. package/src/components/base/popover/popover.scss +5 -5
  75. package/src/components/base/search_box_by_click/search_box_by_click.scss +2 -2
  76. package/src/components/base/search_box_by_type/search_box_by_type.scss +4 -4
  77. package/src/components/base/table/table.scss +4 -4
  78. package/src/components/base/tabs/tabs/tabs.scss +10 -10
  79. package/src/components/base/toast/toast.scss +7 -7
  80. package/src/components/base/toggle/toggle.scss +6 -6
  81. package/src/components/base/token/token.scss +5 -5
  82. package/src/components/base/tooltip/tooltip.scss +3 -3
  83. package/src/components/charts/legend/legend.scss +4 -4
  84. package/src/components/charts/series_label/series_label.scss +1 -1
  85. package/src/components/experimental/duo/chat/components/duo_chat_context/constants.js +3 -3
  86. package/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu.vue +4 -4
  87. package/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_item.vue +10 -10
  88. package/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_menu/duo_chat_context_item_menu_search_items.vue +6 -5
  89. package/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_popover/duo_chat_context_item_popover.vue +24 -24
  90. package/src/components/experimental/duo/chat/components/duo_chat_context/duo_chat_context_item_selections/duo_chat_context_item_selections.vue +10 -10
  91. package/src/components/experimental/duo/chat/components/duo_chat_context/mock_context_data.js +57 -74
  92. package/src/components/experimental/duo/chat/components/duo_chat_context/utils.js +5 -3
  93. package/src/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.scss +1 -1
  94. package/src/components/experimental/duo/chat/duo_chat.scss +4 -4
  95. package/src/components/shared_components/charts/tooltip_default_format.scss +1 -1
  96. package/src/scss/bootstrap_vue.scss +0 -18
  97. package/src/scss/typescale/_index.scss +9 -9
  98. package/src/vendor/bootstrap-vue/nuxt/index.js +0 -8
  99. package/src/vendor/bootstrap-vue/src/_utilities.scss +0 -9
  100. package/src/vendor/bootstrap-vue/src/_variables.scss +0 -52
  101. package/src/vendor/bootstrap-vue/src/components/form/index.d.ts +0 -3
  102. package/src/vendor/bootstrap-vue/src/components/form/index.js +1 -4
  103. package/src/vendor/bootstrap-vue/src/components/form/package.json +0 -12
  104. package/src/vendor/bootstrap-vue/src/components/index.d.ts +0 -24
  105. package/src/vendor/bootstrap-vue/src/components/index.js +0 -48
  106. package/src/vendor/bootstrap-vue/src/components/index.scss +0 -15
  107. package/src/vendor/bootstrap-vue/src/components/layout/index.d.ts +0 -6
  108. package/src/vendor/bootstrap-vue/src/components/layout/index.js +1 -5
  109. package/src/vendor/bootstrap-vue/src/components/layout/package.json +0 -67
  110. package/src/vendor/bootstrap-vue/src/components/modal/README.md +0 -1
  111. package/src/vendor/bootstrap-vue/src/components/nav/index.d.ts +0 -6
  112. package/src/vendor/bootstrap-vue/src/components/nav/index.js +1 -5
  113. package/src/vendor/bootstrap-vue/src/components/nav/package.json +0 -45
  114. package/src/vendor/bootstrap-vue/src/components/navbar/README.md +0 -5
  115. package/src/vendor/bootstrap-vue/src/components/navbar/index.d.ts +1 -7
  116. package/src/vendor/bootstrap-vue/src/components/navbar/index.js +2 -7
  117. package/src/vendor/bootstrap-vue/src/components/navbar/package.json +0 -75
  118. package/src/vendor/bootstrap-vue/src/components/table/README.md +1 -2
  119. package/src/vendor/bootstrap-vue/src/components/tabs/README.md +2 -2
  120. package/src/vendor/bootstrap-vue/src/components/toast/README.md +1 -3
  121. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +2 -6
  122. package/src/vendor/bootstrap-vue/src/constants/classes.js +0 -1
  123. package/src/vendor/bootstrap-vue/src/constants/components.js +0 -50
  124. package/src/vendor/bootstrap-vue/src/constants/events.js +0 -11
  125. package/src/vendor/bootstrap-vue/src/constants/key-codes.js +0 -4
  126. package/src/vendor/bootstrap-vue/src/constants/props.js +0 -3
  127. package/src/vendor/bootstrap-vue/src/constants/regex.js +0 -19
  128. package/src/vendor/bootstrap-vue/src/constants/slots.js +0 -32
  129. package/src/vendor/bootstrap-vue/src/directives/toggle/README.md +5 -23
  130. package/src/vendor/bootstrap-vue/src/directives/toggle/package.json +1 -1
  131. package/src/vendor/bootstrap-vue/src/directives/toggle/toggle.js +1 -1
  132. package/src/vendor/bootstrap-vue/src/index.js +0 -122
  133. package/src/vendor/bootstrap-vue/src/index.scss +0 -3
  134. package/src/vendor/bootstrap-vue/src/utils/array.js +0 -5
  135. package/src/vendor/bootstrap-vue/src/utils/config.spec.js +15 -15
  136. package/src/vendor/bootstrap-vue/src/utils/inspect.js +0 -4
  137. package/src/vendor/bootstrap-vue/src/utils/math.js +0 -4
  138. package/src/vendor/bootstrap-vue/src/utils/object.js +0 -5
  139. package/src/vendor/bootstrap-vue/src/utils/props.js +1 -7
  140. package/src/vendor/bootstrap-vue/src/utils/string.js +0 -9
  141. package/src/vendor/bootstrap-vue/src/utils/string.spec.js +1 -20
  142. package/dist/vendor/bootstrap-vue/src/components/alert/alert.js +0 -179
  143. package/dist/vendor/bootstrap-vue/src/components/alert/index.js +0 -11
  144. package/dist/vendor/bootstrap-vue/src/components/aspect/aspect.js +0 -67
  145. package/dist/vendor/bootstrap-vue/src/components/aspect/index.js +0 -11
  146. package/dist/vendor/bootstrap-vue/src/components/avatar/avatar-group.js +0 -67
  147. package/dist/vendor/bootstrap-vue/src/components/avatar/avatar.js +0 -266
  148. package/dist/vendor/bootstrap-vue/src/components/avatar/index.js +0 -14
  149. package/dist/vendor/bootstrap-vue/src/components/button-toolbar/button-toolbar.js +0 -112
  150. package/dist/vendor/bootstrap-vue/src/components/button-toolbar/index.js +0 -12
  151. package/dist/vendor/bootstrap-vue/src/components/calendar/calendar.js +0 -1010
  152. package/dist/vendor/bootstrap-vue/src/components/calendar/index.js +0 -11
  153. package/dist/vendor/bootstrap-vue/src/components/card/card-body.js +0 -63
  154. package/dist/vendor/bootstrap-vue/src/components/card/card-footer.js +0 -48
  155. package/dist/vendor/bootstrap-vue/src/components/card/card-group.js +0 -33
  156. package/dist/vendor/bootstrap-vue/src/components/card/card-header.js +0 -48
  157. package/dist/vendor/bootstrap-vue/src/components/card/card-img-lazy.js +0 -46
  158. package/dist/vendor/bootstrap-vue/src/components/card/card-img.js +0 -58
  159. package/dist/vendor/bootstrap-vue/src/components/card/card-sub-title.js +0 -35
  160. package/dist/vendor/bootstrap-vue/src/components/card/card-text.js +0 -31
  161. package/dist/vendor/bootstrap-vue/src/components/card/card-title.js +0 -33
  162. package/dist/vendor/bootstrap-vue/src/components/card/card.js +0 -123
  163. package/dist/vendor/bootstrap-vue/src/components/card/index.js +0 -38
  164. package/dist/vendor/bootstrap-vue/src/components/embed/embed.js +0 -50
  165. package/dist/vendor/bootstrap-vue/src/components/embed/index.js +0 -11
  166. package/dist/vendor/bootstrap-vue/src/components/form/form-datalist.js +0 -52
  167. package/dist/vendor/bootstrap-vue/src/components/form-btn-label-control/bv-form-btn-label-control.js +0 -261
  168. package/dist/vendor/bootstrap-vue/src/components/form-datepicker/form-datepicker.js +0 -310
  169. package/dist/vendor/bootstrap-vue/src/components/form-datepicker/index.js +0 -12
  170. package/dist/vendor/bootstrap-vue/src/components/form-file/form-file.js +0 -561
  171. package/dist/vendor/bootstrap-vue/src/components/form-file/index.js +0 -12
  172. package/dist/vendor/bootstrap-vue/src/components/form-rating/form-rating.js +0 -402
  173. package/dist/vendor/bootstrap-vue/src/components/form-rating/index.js +0 -12
  174. package/dist/vendor/bootstrap-vue/src/components/form-spinbutton/form-spinbutton.js +0 -555
  175. package/dist/vendor/bootstrap-vue/src/components/form-spinbutton/index.js +0 -12
  176. package/dist/vendor/bootstrap-vue/src/components/form-tags/form-tag.js +0 -97
  177. package/dist/vendor/bootstrap-vue/src/components/form-tags/form-tags.js +0 -806
  178. package/dist/vendor/bootstrap-vue/src/components/form-tags/index.js +0 -16
  179. package/dist/vendor/bootstrap-vue/src/components/form-timepicker/form-timepicker.js +0 -281
  180. package/dist/vendor/bootstrap-vue/src/components/form-timepicker/index.js +0 -12
  181. package/dist/vendor/bootstrap-vue/src/components/image/img-lazy.js +0 -157
  182. package/dist/vendor/bootstrap-vue/src/components/image/img.js +0 -124
  183. package/dist/vendor/bootstrap-vue/src/components/image/index.js +0 -14
  184. package/dist/vendor/bootstrap-vue/src/components/jumbotron/index.js +0 -11
  185. package/dist/vendor/bootstrap-vue/src/components/jumbotron/jumbotron.js +0 -98
  186. package/dist/vendor/bootstrap-vue/src/components/layout/container.js +0 -41
  187. package/dist/vendor/bootstrap-vue/src/components/layout/row.js +0 -113
  188. package/dist/vendor/bootstrap-vue/src/components/list-group/index.js +0 -14
  189. package/dist/vendor/bootstrap-vue/src/components/list-group/list-group-item.js +0 -78
  190. package/dist/vendor/bootstrap-vue/src/components/list-group/list-group.js +0 -42
  191. package/dist/vendor/bootstrap-vue/src/components/media/index.js +0 -17
  192. package/dist/vendor/bootstrap-vue/src/components/media/media-aside.js +0 -41
  193. package/dist/vendor/bootstrap-vue/src/components/media/media-body.js +0 -31
  194. package/dist/vendor/bootstrap-vue/src/components/media/media.js +0 -61
  195. package/dist/vendor/bootstrap-vue/src/components/nav/nav-form.js +0 -45
  196. package/dist/vendor/bootstrap-vue/src/components/nav/nav-text.js +0 -26
  197. package/dist/vendor/bootstrap-vue/src/components/navbar/navbar-nav.js +0 -46
  198. package/dist/vendor/bootstrap-vue/src/components/navbar/navbar-toggle.js +0 -89
  199. package/dist/vendor/bootstrap-vue/src/components/overlay/index.js +0 -11
  200. package/dist/vendor/bootstrap-vue/src/components/overlay/overlay.js +0 -163
  201. package/dist/vendor/bootstrap-vue/src/components/pagination/index.js +0 -11
  202. package/dist/vendor/bootstrap-vue/src/components/pagination/pagination.js +0 -135
  203. package/dist/vendor/bootstrap-vue/src/components/pagination-nav/index.js +0 -11
  204. package/dist/vendor/bootstrap-vue/src/components/pagination-nav/pagination-nav.js +0 -299
  205. package/dist/vendor/bootstrap-vue/src/components/sidebar/index.js +0 -15
  206. package/dist/vendor/bootstrap-vue/src/components/sidebar/sidebar.js +0 -432
  207. package/dist/vendor/bootstrap-vue/src/components/skeleton/index.js +0 -23
  208. package/dist/vendor/bootstrap-vue/src/components/skeleton/skeleton-icon.js +0 -47
  209. package/dist/vendor/bootstrap-vue/src/components/skeleton/skeleton-img.js +0 -60
  210. package/dist/vendor/bootstrap-vue/src/components/skeleton/skeleton-table.js +0 -64
  211. package/dist/vendor/bootstrap-vue/src/components/skeleton/skeleton-wrapper.js +0 -46
  212. package/dist/vendor/bootstrap-vue/src/components/skeleton/skeleton.js +0 -49
  213. package/dist/vendor/bootstrap-vue/src/components/spinner/index.js +0 -11
  214. package/dist/vendor/bootstrap-vue/src/components/spinner/spinner.js +0 -55
  215. package/dist/vendor/bootstrap-vue/src/components/time/index.js +0 -11
  216. package/dist/vendor/bootstrap-vue/src/components/time/time.js +0 -600
  217. package/dist/vendor/bootstrap-vue/src/constants/date.js +0 -8
  218. package/dist/vendor/bootstrap-vue/src/mixins/card.js +0 -22
  219. package/dist/vendor/bootstrap-vue/src/mixins/pagination.js +0 -598
  220. package/dist/vendor/bootstrap-vue/src/utils/date.js +0 -135
  221. package/src/vendor/bootstrap-vue/src/_custom-controls.scss +0 -30
  222. package/src/vendor/bootstrap-vue/src/components/alert/README.md +0 -280
  223. package/src/vendor/bootstrap-vue/src/components/alert/alert.js +0 -185
  224. package/src/vendor/bootstrap-vue/src/components/alert/alert.spec.js +0 -442
  225. package/src/vendor/bootstrap-vue/src/components/alert/index.d.ts +0 -13
  226. package/src/vendor/bootstrap-vue/src/components/alert/index.js +0 -8
  227. package/src/vendor/bootstrap-vue/src/components/alert/package.json +0 -72
  228. package/src/vendor/bootstrap-vue/src/components/aspect/README.md +0 -65
  229. package/src/vendor/bootstrap-vue/src/components/aspect/aspect.js +0 -65
  230. package/src/vendor/bootstrap-vue/src/components/aspect/aspect.spec.js +0 -121
  231. package/src/vendor/bootstrap-vue/src/components/aspect/index.d.ts +0 -11
  232. package/src/vendor/bootstrap-vue/src/components/aspect/index.js +0 -8
  233. package/src/vendor/bootstrap-vue/src/components/aspect/package.json +0 -26
  234. package/src/vendor/bootstrap-vue/src/components/avatar/README.md +0 -567
  235. package/src/vendor/bootstrap-vue/src/components/avatar/_avatar.scss +0 -148
  236. package/src/vendor/bootstrap-vue/src/components/avatar/avatar-group.js +0 -75
  237. package/src/vendor/bootstrap-vue/src/components/avatar/avatar-group.spec.js +0 -74
  238. package/src/vendor/bootstrap-vue/src/components/avatar/avatar.js +0 -228
  239. package/src/vendor/bootstrap-vue/src/components/avatar/avatar.spec.js +0 -355
  240. package/src/vendor/bootstrap-vue/src/components/avatar/index.d.ts +0 -14
  241. package/src/vendor/bootstrap-vue/src/components/avatar/index.js +0 -9
  242. package/src/vendor/bootstrap-vue/src/components/avatar/index.scss +0 -1
  243. package/src/vendor/bootstrap-vue/src/components/avatar/package.json +0 -149
  244. package/src/vendor/bootstrap-vue/src/components/button-toolbar/README.md +0 -109
  245. package/src/vendor/bootstrap-vue/src/components/button-toolbar/button-toolbar.js +0 -117
  246. package/src/vendor/bootstrap-vue/src/components/button-toolbar/button-toolbar.spec.js +0 -185
  247. package/src/vendor/bootstrap-vue/src/components/button-toolbar/index.d.ts +0 -11
  248. package/src/vendor/bootstrap-vue/src/components/button-toolbar/index.js +0 -11
  249. package/src/vendor/bootstrap-vue/src/components/button-toolbar/package.json +0 -32
  250. package/src/vendor/bootstrap-vue/src/components/calendar/README.md +0 -735
  251. package/src/vendor/bootstrap-vue/src/components/calendar/_calendar.scss +0 -78
  252. package/src/vendor/bootstrap-vue/src/components/calendar/calendar.js +0 -1146
  253. package/src/vendor/bootstrap-vue/src/components/calendar/calendar.spec.js +0 -466
  254. package/src/vendor/bootstrap-vue/src/components/calendar/index.d.ts +0 -28
  255. package/src/vendor/bootstrap-vue/src/components/calendar/index.js +0 -8
  256. package/src/vendor/bootstrap-vue/src/components/calendar/index.scss +0 -1
  257. package/src/vendor/bootstrap-vue/src/components/calendar/package.json +0 -317
  258. package/src/vendor/bootstrap-vue/src/components/card/README.md +0 -729
  259. package/src/vendor/bootstrap-vue/src/components/card/_card-img.scss +0 -7
  260. package/src/vendor/bootstrap-vue/src/components/card/card-body.js +0 -69
  261. package/src/vendor/bootstrap-vue/src/components/card/card-body.spec.js +0 -142
  262. package/src/vendor/bootstrap-vue/src/components/card/card-footer.js +0 -48
  263. package/src/vendor/bootstrap-vue/src/components/card/card-footer.spec.js +0 -98
  264. package/src/vendor/bootstrap-vue/src/components/card/card-group.js +0 -33
  265. package/src/vendor/bootstrap-vue/src/components/card/card-group.spec.js +0 -75
  266. package/src/vendor/bootstrap-vue/src/components/card/card-header.js +0 -48
  267. package/src/vendor/bootstrap-vue/src/components/card/card-header.spec.js +0 -98
  268. package/src/vendor/bootstrap-vue/src/components/card/card-img-lazy.js +0 -47
  269. package/src/vendor/bootstrap-vue/src/components/card/card-img-lazy.spec.js +0 -204
  270. package/src/vendor/bootstrap-vue/src/components/card/card-img.js +0 -50
  271. package/src/vendor/bootstrap-vue/src/components/card/card-img.spec.js +0 -208
  272. package/src/vendor/bootstrap-vue/src/components/card/card-sub-title.js +0 -35
  273. package/src/vendor/bootstrap-vue/src/components/card/card-sub-title.spec.js +0 -60
  274. package/src/vendor/bootstrap-vue/src/components/card/card-text.js +0 -25
  275. package/src/vendor/bootstrap-vue/src/components/card/card-text.spec.js +0 -48
  276. package/src/vendor/bootstrap-vue/src/components/card/card-title.js +0 -33
  277. package/src/vendor/bootstrap-vue/src/components/card/card-title.spec.js +0 -45
  278. package/src/vendor/bootstrap-vue/src/components/card/card.js +0 -140
  279. package/src/vendor/bootstrap-vue/src/components/card/card.spec.js +0 -296
  280. package/src/vendor/bootstrap-vue/src/components/card/index.d.ts +0 -38
  281. package/src/vendor/bootstrap-vue/src/components/card/index.js +0 -40
  282. package/src/vendor/bootstrap-vue/src/components/card/index.scss +0 -1
  283. package/src/vendor/bootstrap-vue/src/components/card/package.json +0 -262
  284. package/src/vendor/bootstrap-vue/src/components/embed/README.md +0 -63
  285. package/src/vendor/bootstrap-vue/src/components/embed/embed.js +0 -51
  286. package/src/vendor/bootstrap-vue/src/components/embed/embed.spec.js +0 -110
  287. package/src/vendor/bootstrap-vue/src/components/embed/index.d.ts +0 -11
  288. package/src/vendor/bootstrap-vue/src/components/embed/index.js +0 -8
  289. package/src/vendor/bootstrap-vue/src/components/embed/package.json +0 -29
  290. package/src/vendor/bootstrap-vue/src/components/form/form-datalist.js +0 -42
  291. package/src/vendor/bootstrap-vue/src/components/form/form-datalist.spec.js +0 -57
  292. package/src/vendor/bootstrap-vue/src/components/form-btn-label-control/_form-btn-label-control.scss +0 -125
  293. package/src/vendor/bootstrap-vue/src/components/form-btn-label-control/bv-form-btn-label-control.js +0 -278
  294. package/src/vendor/bootstrap-vue/src/components/form-btn-label-control/index.scss +0 -1
  295. package/src/vendor/bootstrap-vue/src/components/form-btn-label-control/package.json +0 -5
  296. package/src/vendor/bootstrap-vue/src/components/form-datepicker/README.md +0 -694
  297. package/src/vendor/bootstrap-vue/src/components/form-datepicker/_form-datepicker.scss +0 -1
  298. package/src/vendor/bootstrap-vue/src/components/form-datepicker/form-datepicker.js +0 -342
  299. package/src/vendor/bootstrap-vue/src/components/form-datepicker/form-datepicker.spec.js +0 -562
  300. package/src/vendor/bootstrap-vue/src/components/form-datepicker/index.d.ts +0 -12
  301. package/src/vendor/bootstrap-vue/src/components/form-datepicker/index.js +0 -11
  302. package/src/vendor/bootstrap-vue/src/components/form-datepicker/index.scss +0 -1
  303. package/src/vendor/bootstrap-vue/src/components/form-datepicker/package.json +0 -420
  304. package/src/vendor/bootstrap-vue/src/components/form-file/README.md +0 -357
  305. package/src/vendor/bootstrap-vue/src/components/form-file/_form-file.scss +0 -61
  306. package/src/vendor/bootstrap-vue/src/components/form-file/form-file.js +0 -575
  307. package/src/vendor/bootstrap-vue/src/components/form-file/form-file.spec.js +0 -885
  308. package/src/vendor/bootstrap-vue/src/components/form-file/index.d.ts +0 -13
  309. package/src/vendor/bootstrap-vue/src/components/form-file/index.js +0 -11
  310. package/src/vendor/bootstrap-vue/src/components/form-file/index.scss +0 -1
  311. package/src/vendor/bootstrap-vue/src/components/form-file/package.json +0 -131
  312. package/src/vendor/bootstrap-vue/src/components/form-rating/README.md +0 -526
  313. package/src/vendor/bootstrap-vue/src/components/form-rating/_form-rating.scss +0 -57
  314. package/src/vendor/bootstrap-vue/src/components/form-rating/form-rating.js +0 -411
  315. package/src/vendor/bootstrap-vue/src/components/form-rating/form-rating.spec.js +0 -544
  316. package/src/vendor/bootstrap-vue/src/components/form-rating/index.d.ts +0 -14
  317. package/src/vendor/bootstrap-vue/src/components/form-rating/index.js +0 -8
  318. package/src/vendor/bootstrap-vue/src/components/form-rating/index.scss +0 -1
  319. package/src/vendor/bootstrap-vue/src/components/form-rating/package.json +0 -166
  320. package/src/vendor/bootstrap-vue/src/components/form-spinbutton/README.md +0 -411
  321. package/src/vendor/bootstrap-vue/src/components/form-spinbutton/_spinbutton.scss +0 -76
  322. package/src/vendor/bootstrap-vue/src/components/form-spinbutton/form-spinbutton.js +0 -572
  323. package/src/vendor/bootstrap-vue/src/components/form-spinbutton/form-spinbutton.spec.js +0 -731
  324. package/src/vendor/bootstrap-vue/src/components/form-spinbutton/index.d.ts +0 -12
  325. package/src/vendor/bootstrap-vue/src/components/form-spinbutton/index.js +0 -11
  326. package/src/vendor/bootstrap-vue/src/components/form-spinbutton/index.scss +0 -1
  327. package/src/vendor/bootstrap-vue/src/components/form-spinbutton/package.json +0 -150
  328. package/src/vendor/bootstrap-vue/src/components/form-tags/README.md +0 -880
  329. package/src/vendor/bootstrap-vue/src/components/form-tags/_form-tags.scss +0 -70
  330. package/src/vendor/bootstrap-vue/src/components/form-tags/form-tag.js +0 -94
  331. package/src/vendor/bootstrap-vue/src/components/form-tags/form-tag.spec.js +0 -166
  332. package/src/vendor/bootstrap-vue/src/components/form-tags/form-tags.js +0 -891
  333. package/src/vendor/bootstrap-vue/src/components/form-tags/form-tags.spec.js +0 -920
  334. package/src/vendor/bootstrap-vue/src/components/form-tags/index.d.ts +0 -16
  335. package/src/vendor/bootstrap-vue/src/components/form-tags/index.js +0 -14
  336. package/src/vendor/bootstrap-vue/src/components/form-tags/index.scss +0 -1
  337. package/src/vendor/bootstrap-vue/src/components/form-tags/package.json +0 -440
  338. package/src/vendor/bootstrap-vue/src/components/form-timepicker/README.md +0 -450
  339. package/src/vendor/bootstrap-vue/src/components/form-timepicker/_form-timepicker.scss +0 -1
  340. package/src/vendor/bootstrap-vue/src/components/form-timepicker/form-timepicker.js +0 -308
  341. package/src/vendor/bootstrap-vue/src/components/form-timepicker/form-timepicker.spec.js +0 -440
  342. package/src/vendor/bootstrap-vue/src/components/form-timepicker/index.d.ts +0 -12
  343. package/src/vendor/bootstrap-vue/src/components/form-timepicker/index.js +0 -11
  344. package/src/vendor/bootstrap-vue/src/components/form-timepicker/index.scss +0 -1
  345. package/src/vendor/bootstrap-vue/src/components/form-timepicker/package.json +0 -255
  346. package/src/vendor/bootstrap-vue/src/components/image/README.md +0 -322
  347. package/src/vendor/bootstrap-vue/src/components/image/img-lazy.js +0 -161
  348. package/src/vendor/bootstrap-vue/src/components/image/img-lazy.spec.js +0 -96
  349. package/src/vendor/bootstrap-vue/src/components/image/img.js +0 -139
  350. package/src/vendor/bootstrap-vue/src/components/image/img.spec.js +0 -255
  351. package/src/vendor/bootstrap-vue/src/components/image/index.d.ts +0 -14
  352. package/src/vendor/bootstrap-vue/src/components/image/index.js +0 -12
  353. package/src/vendor/bootstrap-vue/src/components/image/package.json +0 -152
  354. package/src/vendor/bootstrap-vue/src/components/jumbotron/README.md +0 -109
  355. package/src/vendor/bootstrap-vue/src/components/jumbotron/index.d.ts +0 -11
  356. package/src/vendor/bootstrap-vue/src/components/jumbotron/index.js +0 -8
  357. package/src/vendor/bootstrap-vue/src/components/jumbotron/jumbotron.js +0 -103
  358. package/src/vendor/bootstrap-vue/src/components/jumbotron/jumbotron.spec.js +0 -254
  359. package/src/vendor/bootstrap-vue/src/components/jumbotron/package.json +0 -66
  360. package/src/vendor/bootstrap-vue/src/components/layout/container.js +0 -40
  361. package/src/vendor/bootstrap-vue/src/components/layout/container.spec.js +0 -75
  362. package/src/vendor/bootstrap-vue/src/components/layout/row.js +0 -111
  363. package/src/vendor/bootstrap-vue/src/components/layout/row.spec.js +0 -138
  364. package/src/vendor/bootstrap-vue/src/components/list-group/README.md +0 -291
  365. package/src/vendor/bootstrap-vue/src/components/list-group/index.d.ts +0 -14
  366. package/src/vendor/bootstrap-vue/src/components/list-group/index.js +0 -12
  367. package/src/vendor/bootstrap-vue/src/components/list-group/list-group-item.js +0 -76
  368. package/src/vendor/bootstrap-vue/src/components/list-group/list-group-item.spec.js +0 -286
  369. package/src/vendor/bootstrap-vue/src/components/list-group/list-group.js +0 -42
  370. package/src/vendor/bootstrap-vue/src/components/list-group/list-group.spec.js +0 -132
  371. package/src/vendor/bootstrap-vue/src/components/list-group/package.json +0 -52
  372. package/src/vendor/bootstrap-vue/src/components/media/README.md +0 -183
  373. package/src/vendor/bootstrap-vue/src/components/media/_media.scss +0 -9
  374. package/src/vendor/bootstrap-vue/src/components/media/index.d.ts +0 -17
  375. package/src/vendor/bootstrap-vue/src/components/media/index.js +0 -14
  376. package/src/vendor/bootstrap-vue/src/components/media/index.scss +0 -1
  377. package/src/vendor/bootstrap-vue/src/components/media/media-aside.js +0 -45
  378. package/src/vendor/bootstrap-vue/src/components/media/media-aside.spec.js +0 -79
  379. package/src/vendor/bootstrap-vue/src/components/media/media-body.js +0 -25
  380. package/src/vendor/bootstrap-vue/src/components/media/media-body.spec.js +0 -47
  381. package/src/vendor/bootstrap-vue/src/components/media/media.js +0 -52
  382. package/src/vendor/bootstrap-vue/src/components/media/media.spec.js +0 -149
  383. package/src/vendor/bootstrap-vue/src/components/media/package.json +0 -65
  384. package/src/vendor/bootstrap-vue/src/components/nav/nav-form.js +0 -50
  385. package/src/vendor/bootstrap-vue/src/components/nav/nav-form.spec.js +0 -93
  386. package/src/vendor/bootstrap-vue/src/components/nav/nav-text.js +0 -18
  387. package/src/vendor/bootstrap-vue/src/components/nav/nav-text.spec.js +0 -30
  388. package/src/vendor/bootstrap-vue/src/components/navbar/navbar-nav.js +0 -45
  389. package/src/vendor/bootstrap-vue/src/components/navbar/navbar-nav.spec.js +0 -105
  390. package/src/vendor/bootstrap-vue/src/components/navbar/navbar-toggle.js +0 -84
  391. package/src/vendor/bootstrap-vue/src/components/navbar/navbar-toggle.spec.js +0 -189
  392. package/src/vendor/bootstrap-vue/src/components/overlay/README.md +0 -815
  393. package/src/vendor/bootstrap-vue/src/components/overlay/index.d.ts +0 -11
  394. package/src/vendor/bootstrap-vue/src/components/overlay/index.js +0 -8
  395. package/src/vendor/bootstrap-vue/src/components/overlay/overlay.js +0 -162
  396. package/src/vendor/bootstrap-vue/src/components/overlay/overlay.spec.js +0 -257
  397. package/src/vendor/bootstrap-vue/src/components/overlay/package.json +0 -130
  398. package/src/vendor/bootstrap-vue/src/components/pagination/README.md +0 -430
  399. package/src/vendor/bootstrap-vue/src/components/pagination/_pagination.scss +0 -26
  400. package/src/vendor/bootstrap-vue/src/components/pagination/index.d.ts +0 -11
  401. package/src/vendor/bootstrap-vue/src/components/pagination/index.js +0 -8
  402. package/src/vendor/bootstrap-vue/src/components/pagination/index.scss +0 -1
  403. package/src/vendor/bootstrap-vue/src/components/pagination/package.json +0 -295
  404. package/src/vendor/bootstrap-vue/src/components/pagination/pagination.js +0 -138
  405. package/src/vendor/bootstrap-vue/src/components/pagination/pagination.spec.js +0 -1198
  406. package/src/vendor/bootstrap-vue/src/components/pagination-nav/README.md +0 -544
  407. package/src/vendor/bootstrap-vue/src/components/pagination-nav/_pagination-nav.scss +0 -2
  408. package/src/vendor/bootstrap-vue/src/components/pagination-nav/index.d.ts +0 -11
  409. package/src/vendor/bootstrap-vue/src/components/pagination-nav/index.js +0 -8
  410. package/src/vendor/bootstrap-vue/src/components/pagination-nav/index.scss +0 -1
  411. package/src/vendor/bootstrap-vue/src/components/pagination-nav/package.json +0 -315
  412. package/src/vendor/bootstrap-vue/src/components/pagination-nav/pagination-nav.js +0 -281
  413. package/src/vendor/bootstrap-vue/src/components/pagination-nav/pagination-nav.spec.js +0 -671
  414. package/src/vendor/bootstrap-vue/src/components/sidebar/README.md +0 -406
  415. package/src/vendor/bootstrap-vue/src/components/sidebar/_sidebar.scss +0 -97
  416. package/src/vendor/bootstrap-vue/src/components/sidebar/index.d.ts +0 -11
  417. package/src/vendor/bootstrap-vue/src/components/sidebar/index.js +0 -10
  418. package/src/vendor/bootstrap-vue/src/components/sidebar/index.scss +0 -1
  419. package/src/vendor/bootstrap-vue/src/components/sidebar/package.json +0 -239
  420. package/src/vendor/bootstrap-vue/src/components/sidebar/sidebar.js +0 -438
  421. package/src/vendor/bootstrap-vue/src/components/sidebar/sidebar.spec.js +0 -404
  422. package/src/vendor/bootstrap-vue/src/components/skeleton/README.md +0 -275
  423. package/src/vendor/bootstrap-vue/src/components/skeleton/_skeleton.scss +0 -141
  424. package/src/vendor/bootstrap-vue/src/components/skeleton/index.d.ts +0 -23
  425. package/src/vendor/bootstrap-vue/src/components/skeleton/index.js +0 -18
  426. package/src/vendor/bootstrap-vue/src/components/skeleton/index.scss +0 -1
  427. package/src/vendor/bootstrap-vue/src/components/skeleton/package.json +0 -136
  428. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton-icon.js +0 -45
  429. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton-icon.spec.js +0 -86
  430. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton-img.js +0 -49
  431. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton-img.spec.js +0 -139
  432. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton-table.js +0 -58
  433. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton-table.spec.js +0 -119
  434. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton-wrapper.js +0 -47
  435. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton-wrapper.spec.js +0 -48
  436. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton.js +0 -46
  437. package/src/vendor/bootstrap-vue/src/components/skeleton/skeleton.spec.js +0 -126
  438. package/src/vendor/bootstrap-vue/src/components/spinner/README.md +0 -229
  439. package/src/vendor/bootstrap-vue/src/components/spinner/index.d.ts +0 -11
  440. package/src/vendor/bootstrap-vue/src/components/spinner/index.js +0 -8
  441. package/src/vendor/bootstrap-vue/src/components/spinner/package.json +0 -38
  442. package/src/vendor/bootstrap-vue/src/components/spinner/spinner.js +0 -54
  443. package/src/vendor/bootstrap-vue/src/components/spinner/spinner.spec.js +0 -305
  444. package/src/vendor/bootstrap-vue/src/components/time/README.md +0 -431
  445. package/src/vendor/bootstrap-vue/src/components/time/_time.scss +0 -41
  446. package/src/vendor/bootstrap-vue/src/components/time/index.d.ts +0 -27
  447. package/src/vendor/bootstrap-vue/src/components/time/index.js +0 -8
  448. package/src/vendor/bootstrap-vue/src/components/time/index.scss +0 -1
  449. package/src/vendor/bootstrap-vue/src/components/time/package.json +0 -123
  450. package/src/vendor/bootstrap-vue/src/components/time/time.js +0 -601
  451. package/src/vendor/bootstrap-vue/src/components/time/time.spec.js +0 -330
  452. package/src/vendor/bootstrap-vue/src/constants/date.js +0 -7
  453. package/src/vendor/bootstrap-vue/src/mixins/card.js +0 -23
  454. package/src/vendor/bootstrap-vue/src/mixins/pagination.js +0 -670
  455. package/src/vendor/bootstrap-vue/src/utils/date.js +0 -130
  456. package/src/vendor/bootstrap-vue/src/utils/date.spec.js +0 -159
@@ -1,561 +0,0 @@
1
- import { extend } from '../../vue';
2
- import { NAME_FORM_FILE } from '../../constants/components';
3
- import { HAS_PROMISE_SUPPORT } from '../../constants/env';
4
- import { EVENT_OPTIONS_PASSIVE, EVENT_NAME_CHANGE } from '../../constants/events';
5
- import { PROP_TYPE_ARRAY, PROP_TYPE_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_FUNCTION } from '../../constants/props';
6
- import { SLOT_NAME_DROP_PLACEHOLDER, SLOT_NAME_PLACEHOLDER, SLOT_NAME_FILE_NAME } from '../../constants/slots';
7
- import { RX_EXTENSION, RX_STAR } from '../../constants/regex';
8
- import { File } from '../../constants/safe-types';
9
- import { flattenDeep, from, flatten } from '../../utils/array';
10
- import { cloneDeep } from '../../utils/clone-deep';
11
- import { closest } from '../../utils/dom';
12
- import { eventOn, eventOff, stopEvent } from '../../utils/events';
13
- import { identity } from '../../utils/identity';
14
- import { isUndefinedOrNull, isFile, isArray, isNull, isFunction } from '../../utils/inspect';
15
- import { looseEqual } from '../../utils/loose-equal';
16
- import { makeModelMixin } from '../../utils/model';
17
- import { sortKeys } from '../../utils/object';
18
- import { makePropsConfigurable, makeProp, hasPropFunction } from '../../utils/props';
19
- import { escapeRegExp } from '../../utils/string';
20
- import { warn } from '../../utils/warn';
21
- import { attrsMixin } from '../../mixins/attrs';
22
- import { props as props$2, formControlMixin } from '../../mixins/form-control';
23
- import { props as props$3, formCustomMixin } from '../../mixins/form-custom';
24
- import { props as props$4, formStateMixin } from '../../mixins/form-state';
25
- import { props as props$1, idMixin } from '../../mixins/id';
26
- import { normalizeSlotMixin } from '../../mixins/normalize-slot';
27
- import { props as props$5 } from '../../mixins/form-size';
28
-
29
- // --- Constants ---
30
-
31
- const {
32
- mixin: modelMixin,
33
- props: modelProps,
34
- prop: MODEL_PROP_NAME,
35
- event: MODEL_EVENT_NAME
36
- } = makeModelMixin('value', {
37
- type: [PROP_TYPE_ARRAY, File],
38
- defaultValue: null,
39
- validator: value => {
40
- /* istanbul ignore next */
41
- if (value === '') {
42
- warn(VALUE_EMPTY_DEPRECATED_MSG, NAME_FORM_FILE);
43
- return true;
44
- }
45
- return isUndefinedOrNull(value) || isValidValue(value);
46
- }
47
- });
48
- const VALUE_EMPTY_DEPRECATED_MSG = 'Setting "value"/"v-model" to an empty string for reset is deprecated. Set to "null" instead.';
49
-
50
- // --- Helper methods ---
51
-
52
- const isValidValue = value => isFile(value) || isArray(value) && value.every(v => isValidValue(v));
53
-
54
- // Helper method to "safely" get the entry from a data-transfer item
55
- /* istanbul ignore next: not supported in JSDOM */
56
- const getDataTransferItemEntry = item => isFunction(item.getAsEntry) ? item.getAsEntry() : isFunction(item.webkitGetAsEntry) ? item.webkitGetAsEntry() : null;
57
-
58
- // Drop handler function to get all files
59
- /* istanbul ignore next: not supported in JSDOM */
60
- const getAllFileEntries = function (dataTransferItemList) {
61
- let traverseDirectories = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
62
- return Promise.all(from(dataTransferItemList).filter(item => item.kind === 'file').map(item => {
63
- const entry = getDataTransferItemEntry(item);
64
- if (entry) {
65
- if (entry.isDirectory && traverseDirectories) {
66
- return getAllFileEntriesInDirectory(entry.createReader(), `${entry.name}/`);
67
- } else if (entry.isFile) {
68
- return new Promise(resolve => {
69
- entry.file(file => {
70
- file.$path = '';
71
- resolve(file);
72
- });
73
- });
74
- }
75
- }
76
- return null;
77
- }).filter(identity));
78
- };
79
-
80
- // Get all the file entries (recursive) in a directory
81
- /* istanbul ignore next: not supported in JSDOM */
82
- const getAllFileEntriesInDirectory = function (directoryReader) {
83
- let path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
84
- return new Promise(resolve => {
85
- const entryPromises = [];
86
- const readDirectoryEntries = () => {
87
- directoryReader.readEntries(entries => {
88
- if (entries.length === 0) {
89
- resolve(Promise.all(entryPromises).then(entries => flatten(entries)));
90
- } else {
91
- entryPromises.push(Promise.all(entries.map(entry => {
92
- if (entry) {
93
- if (entry.isDirectory) {
94
- return getAllFileEntriesInDirectory(entry.createReader(), `${path}${entry.name}/`);
95
- } else if (entry.isFile) {
96
- return new Promise(resolve => {
97
- entry.file(file => {
98
- file.$path = `${path}${file.name}`;
99
- resolve(file);
100
- });
101
- });
102
- }
103
- }
104
- return null;
105
- }).filter(identity)));
106
- readDirectoryEntries();
107
- }
108
- });
109
- };
110
- readDirectoryEntries();
111
- });
112
- };
113
-
114
- // --- Props ---
115
-
116
- const props = makePropsConfigurable(sortKeys({
117
- ...props$1,
118
- ...modelProps,
119
- ...props$2,
120
- ...props$3,
121
- ...props$4,
122
- ...props$5,
123
- accept: makeProp(PROP_TYPE_STRING, ''),
124
- browseText: makeProp(PROP_TYPE_STRING, 'Browse'),
125
- // Instruct input to capture from camera
126
- capture: makeProp(PROP_TYPE_BOOLEAN, false),
127
- directory: makeProp(PROP_TYPE_BOOLEAN, false),
128
- dropPlaceholder: makeProp(PROP_TYPE_STRING, 'Drop files here'),
129
- fileNameFormatter: makeProp(PROP_TYPE_FUNCTION),
130
- multiple: makeProp(PROP_TYPE_BOOLEAN, false),
131
- noDrop: makeProp(PROP_TYPE_BOOLEAN, false),
132
- noDropPlaceholder: makeProp(PROP_TYPE_STRING, 'Not allowed'),
133
- // TODO:
134
- // Should we deprecate this and only support flat file structures?
135
- // Nested file structures are only supported when files are dropped
136
- // A Chromium "bug" prevents `webkitEntries` from being populated
137
- // on the file input's `change` event and is marked as "WontFix"
138
- // Mozilla implemented the behavior the same way as Chromium
139
- // See: https://bugs.chromium.org/p/chromium/issues/detail?id=138987
140
- // See: https://bugzilla.mozilla.org/show_bug.cgi?id=1326031
141
- noTraverse: makeProp(PROP_TYPE_BOOLEAN, false),
142
- placeholder: makeProp(PROP_TYPE_STRING, 'No file chosen')
143
- }), NAME_FORM_FILE);
144
-
145
- // --- Main component ---
146
-
147
- // @vue/component
148
- const BFormFile = /*#__PURE__*/extend({
149
- name: NAME_FORM_FILE,
150
- mixins: [attrsMixin, idMixin, modelMixin, normalizeSlotMixin, formControlMixin, formStateMixin, formCustomMixin, normalizeSlotMixin],
151
- inheritAttrs: false,
152
- props,
153
- data() {
154
- return {
155
- files: [],
156
- dragging: false,
157
- // IE 11 doesn't respect setting `event.dataTransfer.dropEffect`,
158
- // so we handle it ourselves as well
159
- // https://stackoverflow.com/a/46915971/2744776
160
- dropAllowed: !this.noDrop,
161
- hasFocus: false
162
- };
163
- },
164
- computed: {
165
- // Convert `accept` to an array of `[{ RegExpr, isMime }, ...]`
166
- computedAccept() {
167
- let {
168
- accept
169
- } = this;
170
- accept = (accept || '').trim().split(/[,\s]+/).filter(identity);
171
-
172
- // Allow any file type/extension
173
- if (accept.length === 0) {
174
- return null;
175
- }
176
- return accept.map(extOrType => {
177
- let prop = 'name';
178
- let startMatch = '^';
179
- let endMatch = '$';
180
- if (RX_EXTENSION.test(extOrType)) {
181
- // File extension /\.ext$/
182
- startMatch = '';
183
- } else {
184
- // MIME type /^mime\/.+$/ or /^mime\/type$/
185
- prop = 'type';
186
- if (RX_STAR.test(extOrType)) {
187
- endMatch = '.+$';
188
- // Remove trailing `*`
189
- extOrType = extOrType.slice(0, -1);
190
- }
191
- }
192
- // Escape all RegExp special chars
193
- extOrType = escapeRegExp(extOrType);
194
- const rx = new RegExp(`${startMatch}${extOrType}${endMatch}`);
195
- return {
196
- rx,
197
- prop
198
- };
199
- });
200
- },
201
- computedCapture() {
202
- const {
203
- capture
204
- } = this;
205
- return capture === true || capture === '' ? true : capture || null;
206
- },
207
- computedAttrs() {
208
- const {
209
- name,
210
- disabled,
211
- required,
212
- form,
213
- computedCapture,
214
- accept,
215
- multiple,
216
- directory
217
- } = this;
218
- return {
219
- ...this.bvAttrs,
220
- type: 'file',
221
- id: this.safeId(),
222
- name,
223
- disabled,
224
- required,
225
- form: form || null,
226
- capture: computedCapture,
227
- accept: accept || null,
228
- multiple,
229
- directory,
230
- webkitdirectory: directory,
231
- 'aria-required': required ? 'true' : null
232
- };
233
- },
234
- computedFileNameFormatter() {
235
- const {
236
- fileNameFormatter
237
- } = this;
238
- return hasPropFunction(fileNameFormatter) ? fileNameFormatter : this.defaultFileNameFormatter;
239
- },
240
- clonedFiles() {
241
- return cloneDeep(this.files);
242
- },
243
- flattenedFiles() {
244
- return flattenDeep(this.files);
245
- },
246
- fileNames() {
247
- return this.flattenedFiles.map(file => file.name);
248
- },
249
- labelContent() {
250
- // Draging active
251
- /* istanbul ignore next: used by drag/drop which can't be tested easily */
252
- if (this.dragging && !this.noDrop) {
253
- return (
254
- // TODO: Add additional scope with file count, and other not-allowed reasons
255
- this.normalizeSlot(SLOT_NAME_DROP_PLACEHOLDER, {
256
- allowed: this.dropAllowed
257
- }) || (this.dropAllowed ? this.dropPlaceholder : this.$createElement('span', {
258
- staticClass: 'text-danger'
259
- }, this.noDropPlaceholder))
260
- );
261
- }
262
-
263
- // No file chosen
264
- if (this.files.length === 0) {
265
- return this.normalizeSlot(SLOT_NAME_PLACEHOLDER) || this.placeholder;
266
- }
267
- const {
268
- flattenedFiles,
269
- clonedFiles,
270
- fileNames,
271
- computedFileNameFormatter
272
- } = this;
273
-
274
- // There is a slot for formatting the files/names
275
- if (this.hasNormalizedSlot(SLOT_NAME_FILE_NAME)) {
276
- return this.normalizeSlot(SLOT_NAME_FILE_NAME, {
277
- files: flattenedFiles,
278
- filesTraversed: clonedFiles,
279
- names: fileNames
280
- });
281
- }
282
- return computedFileNameFormatter(flattenedFiles, clonedFiles, fileNames);
283
- }
284
- },
285
- watch: {
286
- [MODEL_PROP_NAME](newValue) {
287
- if (!newValue || isArray(newValue) && newValue.length === 0) {
288
- this.reset();
289
- }
290
- },
291
- files(newValue, oldValue) {
292
- if (!looseEqual(newValue, oldValue)) {
293
- const {
294
- multiple,
295
- noTraverse
296
- } = this;
297
- const files = !multiple || noTraverse ? flattenDeep(newValue) : newValue;
298
- this.$emit(MODEL_EVENT_NAME, multiple ? files : files[0] || null);
299
- }
300
- }
301
- },
302
- created() {
303
- // Create private non-reactive props
304
- this.$_form = null;
305
- },
306
- mounted() {
307
- // Listen for form reset events, to reset the file input
308
- const $form = closest('form', this.$el);
309
- if ($form) {
310
- eventOn($form, 'reset', this.reset, EVENT_OPTIONS_PASSIVE);
311
- this.$_form = $form;
312
- }
313
- },
314
- beforeDestroy() {
315
- const $form = this.$_form;
316
- if ($form) {
317
- eventOff($form, 'reset', this.reset, EVENT_OPTIONS_PASSIVE);
318
- }
319
- },
320
- methods: {
321
- isFileValid(file) {
322
- if (!file) {
323
- return false;
324
- }
325
- const accept = this.computedAccept;
326
- return accept ? accept.some(a => a.rx.test(file[a.prop])) : true;
327
- },
328
- isFilesArrayValid(files) {
329
- return isArray(files) ? files.every(file => this.isFileValid(file)) : this.isFileValid(files);
330
- },
331
- defaultFileNameFormatter(flattenedFiles, clonedFiles, fileNames) {
332
- return fileNames.join(', ');
333
- },
334
- setFiles(files) {
335
- // Reset the dragging flags
336
- this.dropAllowed = !this.noDrop;
337
- this.dragging = false;
338
- // Set the selected files
339
- this.files = this.multiple ? this.directory ? files : flattenDeep(files) : flattenDeep(files).slice(0, 1);
340
- },
341
- /* istanbul ignore next: used by Drag/Drop */
342
- setInputFiles(files) {
343
- // Try an set the file input files array so that `required`
344
- // constraint works for dropped files (will fail in IE11 though)
345
- // To be used only when dropping files
346
- try {
347
- // Firefox < 62 workaround exploiting https://bugzilla.mozilla.org/show_bug.cgi?id=1422655
348
- const dataTransfer = new ClipboardEvent('').clipboardData || new DataTransfer();
349
- // Add flattened files to temp `dataTransfer` object to get a true `FileList` array
350
- flattenDeep(cloneDeep(files)).forEach(file => {
351
- // Make sure to remove the custom `$path` attribute
352
- delete file.$path;
353
- dataTransfer.items.add(file);
354
- });
355
- this.$refs.input.files = dataTransfer.files;
356
- } catch {}
357
- },
358
- reset() {
359
- // IE 11 doesn't support setting `$input.value` to `''` or `null`
360
- // So we use this little extra hack to reset the value, just in case
361
- // This also appears to work on modern browsers as well
362
- // Wrapped in try in case IE 11 or mobile Safari crap out
363
- try {
364
- const $input = this.$refs.input;
365
- $input.value = '';
366
- $input.type = '';
367
- $input.type = 'file';
368
- } catch {}
369
- this.files = [];
370
- },
371
- handleFiles(files) {
372
- let isDrop = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
373
- if (isDrop) {
374
- // When dropped, make sure to filter files with the internal `accept` logic
375
- const filteredFiles = files.filter(this.isFilesArrayValid);
376
- // Only update files when we have any after filtering
377
- if (filteredFiles.length > 0) {
378
- this.setFiles(filteredFiles);
379
- // Try an set the file input's files array so that `required`
380
- // constraint works for dropped files (will fail in IE 11 though)
381
- this.setInputFiles(filteredFiles);
382
- }
383
- } else {
384
- // We always update the files from the `change` event
385
- this.setFiles(files);
386
- }
387
- },
388
- focusHandler(event) {
389
- // Bootstrap v4 doesn't have focus styling for custom file input
390
- // Firefox has a `[type=file]:focus ~ sibling` selector issue,
391
- // so we add a `focus` class to get around these bugs
392
- if (this.plain || event.type === 'focusout') {
393
- this.hasFocus = false;
394
- } else {
395
- // Add focus styling for custom file input
396
- this.hasFocus = true;
397
- }
398
- },
399
- onChange(event) {
400
- const {
401
- type,
402
- target,
403
- dataTransfer = {}
404
- } = event;
405
- const isDrop = type === 'drop';
406
-
407
- // Always emit original event
408
- this.$emit(EVENT_NAME_CHANGE, event);
409
- const items = from(dataTransfer.items || []);
410
- if (HAS_PROMISE_SUPPORT && items.length > 0 && !isNull(getDataTransferItemEntry(items[0]))) {
411
- // Drop handling for modern browsers
412
- // Supports nested directory structures in `directory` mode
413
- /* istanbul ignore next: not supported in JSDOM */
414
- getAllFileEntries(items, this.directory).then(files => this.handleFiles(files, isDrop));
415
- } else {
416
- // Standard file input handling (native file input change event),
417
- // or fallback drop mode (IE 11 / Opera) which don't support `directory` mode
418
- const files = from(target.files || dataTransfer.files || []).map(file => {
419
- // Add custom `$path` property to each file (to be consistent with drop mode)
420
- file.$path = file.webkitRelativePath || '';
421
- return file;
422
- });
423
- this.handleFiles(files, isDrop);
424
- }
425
- },
426
- onDragenter(event) {
427
- stopEvent(event);
428
- this.dragging = true;
429
- const {
430
- dataTransfer = {}
431
- } = event;
432
- // Early exit when the input or dropping is disabled
433
- if (this.noDrop || this.disabled || !this.dropAllowed) {
434
- // Show deny feedback
435
- /* istanbul ignore next: not supported in JSDOM */
436
- dataTransfer.dropEffect = 'none';
437
- this.dropAllowed = false;
438
- return;
439
- }
440
- /* istanbul ignore next: not supported in JSDOM */
441
- dataTransfer.dropEffect = 'copy';
442
- },
443
- // Note this event fires repeatedly while the mouse is over the dropzone at
444
- // intervals in the milliseconds, so avoid doing much processing in here
445
- onDragover(event) {
446
- stopEvent(event);
447
- this.dragging = true;
448
- const {
449
- dataTransfer = {}
450
- } = event;
451
- // Early exit when the input or dropping is disabled
452
- if (this.noDrop || this.disabled || !this.dropAllowed) {
453
- // Show deny feedback
454
- /* istanbul ignore next: not supported in JSDOM */
455
- dataTransfer.dropEffect = 'none';
456
- this.dropAllowed = false;
457
- return;
458
- }
459
- /* istanbul ignore next: not supported in JSDOM */
460
- dataTransfer.dropEffect = 'copy';
461
- },
462
- onDragleave(event) {
463
- stopEvent(event);
464
- this.$nextTick(() => {
465
- this.dragging = false;
466
- // Reset `dropAllowed` to default
467
- this.dropAllowed = !this.noDrop;
468
- });
469
- },
470
- // Triggered by a file drop onto drop target
471
- onDrop(event) {
472
- stopEvent(event);
473
- this.dragging = false;
474
- // Early exit when the input or dropping is disabled
475
- if (this.noDrop || this.disabled || !this.dropAllowed) {
476
- this.$nextTick(() => {
477
- // Reset `dropAllowed` to default
478
- this.dropAllowed = !this.noDrop;
479
- });
480
- return;
481
- }
482
- this.onChange(event);
483
- }
484
- },
485
- render(h) {
486
- const {
487
- custom,
488
- plain,
489
- size,
490
- dragging,
491
- stateClass,
492
- bvAttrs
493
- } = this;
494
-
495
- // Form Input
496
- const $input = h('input', {
497
- class: [{
498
- 'form-control-file': plain,
499
- 'custom-file-input': custom,
500
- focus: custom && this.hasFocus
501
- }, stateClass],
502
- // With IE 11, the input gets in the "way" of the drop events,
503
- // so we move it out of the way by putting it behind the label
504
- // Bootstrap v4 has it in front
505
- style: custom ? {
506
- zIndex: -5
507
- } : {},
508
- attrs: this.computedAttrs,
509
- on: {
510
- change: this.onChange,
511
- focusin: this.focusHandler,
512
- focusout: this.focusHandler,
513
- reset: this.reset
514
- },
515
- ref: 'input'
516
- });
517
- if (plain) {
518
- return $input;
519
- }
520
-
521
- // Overlay label
522
- const $label = h('label', {
523
- staticClass: 'custom-file-label',
524
- class: {
525
- dragging
526
- },
527
- attrs: {
528
- for: this.safeId(),
529
- // This goes away in Bootstrap v5
530
- 'data-browse': this.browseText || null
531
- }
532
- }, [h('span', {
533
- staticClass: 'd-block form-file-text',
534
- // `pointer-events: none` is used to make sure
535
- // the drag events fire only on the label
536
- style: {
537
- pointerEvents: 'none'
538
- }
539
- }, [this.labelContent])]);
540
-
541
- // Return rendered custom file input
542
- return h('div', {
543
- staticClass: 'custom-file b-form-file',
544
- class: [{
545
- [`b-custom-control-${size}`]: size
546
- }, stateClass, bvAttrs.class],
547
- style: bvAttrs.style,
548
- attrs: {
549
- id: this.safeId('_BV_file_outer_')
550
- },
551
- on: {
552
- dragenter: this.onDragenter,
553
- dragover: this.onDragover,
554
- dragleave: this.onDragleave,
555
- drop: this.onDrop
556
- }
557
- }, [$input, $label]);
558
- }
559
- });
560
-
561
- export { BFormFile };
@@ -1,12 +0,0 @@
1
- import { BFormFile } from './form-file';
2
- export { BFormFile } from './form-file';
3
- import { pluginFactory } from '../../utils/plugins';
4
-
5
- const FormFilePlugin = /*#__PURE__*/pluginFactory({
6
- components: {
7
- BFormFile,
8
- BFile: BFormFile
9
- }
10
- });
11
-
12
- export { FormFilePlugin };