@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,572 +0,0 @@
1
- import { extend } from '../../vue'
2
- import { NAME_FORM_SPINBUTTON } from '../../constants/components'
3
- import { EVENT_NAME_CHANGE } from '../../constants/events'
4
- import {
5
- PROP_TYPE_ARRAY_STRING,
6
- PROP_TYPE_BOOLEAN,
7
- PROP_TYPE_BOOLEAN_NUMBER,
8
- PROP_TYPE_FUNCTION,
9
- PROP_TYPE_NUMBER_STRING,
10
- PROP_TYPE_STRING
11
- } from '../../constants/props'
12
- import {
13
- CODE_DOWN,
14
- CODE_END,
15
- CODE_HOME,
16
- CODE_PAGEUP,
17
- CODE_UP,
18
- CODE_PAGEDOWN
19
- } from '../../constants/key-codes'
20
- import { SLOT_NAME_DECREMENT, SLOT_NAME_INCREMENT } from '../../constants/slots'
21
- import { arrayIncludes, concat } from '../../utils/array'
22
- import { attemptBlur, attemptFocus } from '../../utils/dom'
23
- import { eventOnOff, stopEvent } from '../../utils/events'
24
- import { identity } from '../../utils/identity'
25
- import { isNull } from '../../utils/inspect'
26
- import { isLocaleRTL } from '../../utils/locale'
27
- import { mathFloor, mathMax, mathPow, mathRound } from '../../utils/math'
28
- import { makeModelMixin } from '../../utils/model'
29
- import { toFloat, toInteger } from '../../utils/number'
30
- import { omit, sortKeys } from '../../utils/object'
31
- import { hasPropFunction, makeProp, makePropsConfigurable } from '../../utils/props'
32
- import { toString } from '../../utils/string'
33
- import { attrsMixin } from '../../mixins/attrs'
34
- import { formSizeMixin, props as formSizeProps } from '../../mixins/form-size'
35
- import { formStateMixin, props as formStateProps } from '../../mixins/form-state'
36
- import { idMixin, props as idProps } from '../../mixins/id'
37
- import { normalizeSlotMixin } from '../../mixins/normalize-slot'
38
- import { props as formControlProps } from '../../mixins/form-control'
39
- import { BIconPlus, BIconDash } from '../../icons/icons'
40
-
41
- // --- Constants ---
42
-
43
- const {
44
- mixin: modelMixin,
45
- props: modelProps,
46
- prop: MODEL_PROP_NAME,
47
- event: MODEL_EVENT_NAME
48
- } = makeModelMixin('value', {
49
- // Should this really be String, to match native number inputs?
50
- type: PROP_TYPE_BOOLEAN_NUMBER
51
- })
52
-
53
- // Default for spin button range and step
54
- const DEFAULT_MIN = 1
55
- const DEFAULT_MAX = 100
56
- const DEFAULT_STEP = 1
57
-
58
- // Delay before auto-repeat in ms
59
- const DEFAULT_REPEAT_DELAY = 500
60
- // Repeat interval in ms
61
- const DEFAULT_REPEAT_INTERVAL = 100
62
- // Repeat rate increased after number of repeats
63
- const DEFAULT_REPEAT_THRESHOLD = 10
64
- // Repeat speed multiplier (step multiplier, must be an integer)
65
- const DEFAULT_REPEAT_MULTIPLIER = 4
66
-
67
- const KEY_CODES = [CODE_UP, CODE_DOWN, CODE_HOME, CODE_END, CODE_PAGEUP, CODE_PAGEDOWN]
68
-
69
- // --- Props ---
70
-
71
- export const props = makePropsConfigurable(
72
- sortKeys({
73
- ...idProps,
74
- ...modelProps,
75
- ...omit(formControlProps, ['required', 'autofocus']),
76
- ...formSizeProps,
77
- ...formStateProps,
78
- ariaControls: makeProp(PROP_TYPE_STRING),
79
- ariaLabel: makeProp(PROP_TYPE_STRING),
80
- formatterFn: makeProp(PROP_TYPE_FUNCTION),
81
- inline: makeProp(PROP_TYPE_BOOLEAN, false),
82
- labelDecrement: makeProp(PROP_TYPE_STRING, 'Decrement'),
83
- labelIncrement: makeProp(PROP_TYPE_STRING, 'Increment'),
84
- locale: makeProp(PROP_TYPE_ARRAY_STRING),
85
- max: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_MAX),
86
- min: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_MIN),
87
- placeholder: makeProp(PROP_TYPE_STRING),
88
- readonly: makeProp(PROP_TYPE_BOOLEAN, false),
89
- repeatDelay: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_REPEAT_DELAY),
90
- repeatInterval: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_REPEAT_INTERVAL),
91
- repeatStepMultiplier: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_REPEAT_MULTIPLIER),
92
- repeatThreshold: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_REPEAT_THRESHOLD),
93
- step: makeProp(PROP_TYPE_NUMBER_STRING, DEFAULT_STEP),
94
- vertical: makeProp(PROP_TYPE_BOOLEAN, false),
95
- wrap: makeProp(PROP_TYPE_BOOLEAN, false)
96
- }),
97
- NAME_FORM_SPINBUTTON
98
- )
99
-
100
- // --- Main Component ---
101
-
102
- // @vue/component
103
- export const BFormSpinbutton = /*#__PURE__*/ extend({
104
- name: NAME_FORM_SPINBUTTON,
105
- // Mixin order is important!
106
- mixins: [attrsMixin, idMixin, modelMixin, formSizeMixin, formStateMixin, normalizeSlotMixin],
107
- inheritAttrs: false,
108
- props,
109
- data() {
110
- return {
111
- localValue: toFloat(this[MODEL_PROP_NAME], null),
112
- hasFocus: false
113
- }
114
- },
115
- computed: {
116
- required() {
117
- return false
118
- },
119
- spinId() {
120
- return this.safeId()
121
- },
122
- computedInline() {
123
- return this.inline && !this.vertical
124
- },
125
- computedReadonly() {
126
- return this.readonly && !this.disabled
127
- },
128
- computedRequired() {
129
- return this.required && !this.computedReadonly && !this.disabled
130
- },
131
- computedStep() {
132
- return toFloat(this.step, DEFAULT_STEP)
133
- },
134
- computedMin() {
135
- return toFloat(this.min, DEFAULT_MIN)
136
- },
137
- computedMax() {
138
- // We round down to the nearest maximum step value
139
- const max = toFloat(this.max, DEFAULT_MAX)
140
- const step = this.computedStep
141
- const min = this.computedMin
142
- return mathFloor((max - min) / step) * step + min
143
- },
144
- computedDelay() {
145
- const delay = toInteger(this.repeatDelay, 0)
146
- return delay > 0 ? delay : DEFAULT_REPEAT_DELAY
147
- },
148
- computedInterval() {
149
- const interval = toInteger(this.repeatInterval, 0)
150
- return interval > 0 ? interval : DEFAULT_REPEAT_INTERVAL
151
- },
152
- computedThreshold() {
153
- return mathMax(toInteger(this.repeatThreshold, DEFAULT_REPEAT_THRESHOLD), 1)
154
- },
155
- computedStepMultiplier() {
156
- return mathMax(toInteger(this.repeatStepMultiplier, DEFAULT_REPEAT_MULTIPLIER), 1)
157
- },
158
- computedPrecision() {
159
- // Quick and dirty way to get the number of decimals
160
- const step = this.computedStep
161
- return mathFloor(step) === step ? 0 : (step.toString().split('.')[1] || '').length
162
- },
163
- computedMultiplier() {
164
- return mathPow(10, this.computedPrecision || 0)
165
- },
166
- valueAsFixed() {
167
- const value = this.localValue
168
- return isNull(value) ? '' : value.toFixed(this.computedPrecision)
169
- },
170
- computedLocale() {
171
- const locales = concat(this.locale).filter(identity)
172
- const nf = new Intl.NumberFormat(locales)
173
- return nf.resolvedOptions().locale
174
- },
175
- computedRTL() {
176
- return isLocaleRTL(this.computedLocale)
177
- },
178
- defaultFormatter() {
179
- // Returns and `Intl.NumberFormat` formatter method reference
180
- const precision = this.computedPrecision
181
- const nf = new Intl.NumberFormat(this.computedLocale, {
182
- style: 'decimal',
183
- useGrouping: false,
184
- minimumIntegerDigits: 1,
185
- minimumFractionDigits: precision,
186
- maximumFractionDigits: precision,
187
- notation: 'standard'
188
- })
189
- // Return the format method reference
190
- return nf.format
191
- },
192
- computedFormatter() {
193
- const { formatterFn } = this
194
- return hasPropFunction(formatterFn) ? formatterFn : this.defaultFormatter
195
- },
196
- computedAttrs() {
197
- return {
198
- ...this.bvAttrs,
199
- role: 'group',
200
- lang: this.computedLocale,
201
- tabindex: this.disabled ? null : '-1',
202
- title: this.ariaLabel
203
- }
204
- },
205
- computedSpinAttrs() {
206
- const {
207
- spinId,
208
- localValue: value,
209
- computedRequired: required,
210
- disabled,
211
- state,
212
- computedFormatter
213
- } = this
214
- const hasValue = !isNull(value)
215
-
216
- return {
217
- dir: this.computedRTL ? 'rtl' : 'ltr',
218
- ...this.bvAttrs,
219
- id: spinId,
220
- role: 'spinbutton',
221
- tabindex: disabled ? null : '0',
222
- 'aria-live': 'off',
223
- 'aria-label': this.ariaLabel || null,
224
- 'aria-controls': this.ariaControls || null,
225
- // TODO: May want to check if the value is in range
226
- 'aria-invalid': state === false || (!hasValue && required) ? 'true' : null,
227
- 'aria-required': required ? 'true' : null,
228
- // These attrs are required for role spinbutton
229
- 'aria-valuemin': toString(this.computedMin),
230
- 'aria-valuemax': toString(this.computedMax),
231
- // These should be `null` if the value is out of range
232
- // They must also be non-existent attrs if the value is out of range or `null`
233
- 'aria-valuenow': hasValue ? value : null,
234
- 'aria-valuetext': hasValue ? computedFormatter(value) : null
235
- }
236
- }
237
- },
238
- watch: {
239
- [MODEL_PROP_NAME](value) {
240
- this.localValue = toFloat(value, null)
241
- },
242
- localValue(value) {
243
- this.$emit(MODEL_EVENT_NAME, value)
244
- },
245
- disabled(disabled) {
246
- if (disabled) {
247
- this.clearRepeat()
248
- }
249
- },
250
- readonly(readonly) {
251
- if (readonly) {
252
- this.clearRepeat()
253
- }
254
- }
255
- },
256
- created() {
257
- // Create non reactive properties
258
- this.$_autoDelayTimer = null
259
- this.$_autoRepeatTimer = null
260
- this.$_keyIsDown = false
261
- },
262
- beforeDestroy() {
263
- this.clearRepeat()
264
- },
265
- /* istanbul ignore next */
266
- deactivated() {
267
- this.clearRepeat()
268
- },
269
- methods: {
270
- // --- Public methods ---
271
- focus() {
272
- if (!this.disabled) {
273
- attemptFocus(this.$refs.spinner)
274
- }
275
- },
276
- blur() {
277
- if (!this.disabled) {
278
- attemptBlur(this.$refs.spinner)
279
- }
280
- },
281
- // --- Private methods ---
282
- emitChange() {
283
- this.$emit(EVENT_NAME_CHANGE, this.localValue)
284
- },
285
- stepValue(direction) {
286
- // Sets a new incremented or decremented value, supporting optional wrapping
287
- // Direction is either +1 or -1 (or a multiple thereof)
288
- let value = this.localValue
289
- if (!this.disabled && !isNull(value)) {
290
- const step = this.computedStep * direction
291
- const min = this.computedMin
292
- const max = this.computedMax
293
- const multiplier = this.computedMultiplier
294
- const wrap = this.wrap
295
- // We ensure that the value steps like a native input
296
- value = mathRound((value - min) / step) * step + min + step
297
- // We ensure that precision is maintained (decimals)
298
- value = mathRound(value * multiplier) / multiplier
299
- // Handle if wrapping is enabled
300
- this.localValue =
301
- value > max ? (wrap ? min : max) : value < min ? (wrap ? max : min) : value
302
- }
303
- },
304
- onFocusBlur(event) {
305
- this.hasFocus = this.disabled ? false : event.type === 'focus'
306
- },
307
- stepUp(multiplier = 1) {
308
- const value = this.localValue
309
- if (isNull(value)) {
310
- this.localValue = this.computedMin
311
- } else {
312
- this.stepValue(+1 * multiplier)
313
- }
314
- },
315
- stepDown(multiplier = 1) {
316
- const value = this.localValue
317
- if (isNull(value)) {
318
- this.localValue = this.wrap ? this.computedMax : this.computedMin
319
- } else {
320
- this.stepValue(-1 * multiplier)
321
- }
322
- },
323
- onKeydown(event) {
324
- const { keyCode, altKey, ctrlKey, metaKey } = event
325
- /* istanbul ignore if */
326
- if (this.disabled || this.readonly || altKey || ctrlKey || metaKey) {
327
- return
328
- }
329
- if (arrayIncludes(KEY_CODES, keyCode)) {
330
- // https://w3c.github.io/aria-practices/#spinbutton
331
- stopEvent(event, { propagation: false })
332
- /* istanbul ignore if */
333
- if (this.$_keyIsDown) {
334
- // Keypress is already in progress
335
- return
336
- }
337
- this.resetTimers()
338
- if (arrayIncludes([CODE_UP, CODE_DOWN], keyCode)) {
339
- // The following use the custom auto-repeat handling
340
- this.$_keyIsDown = true
341
- if (keyCode === CODE_UP) {
342
- this.handleStepRepeat(event, this.stepUp)
343
- } else if (keyCode === CODE_DOWN) {
344
- this.handleStepRepeat(event, this.stepDown)
345
- }
346
- } else {
347
- // These use native OS key repeating
348
- if (keyCode === CODE_PAGEUP) {
349
- this.stepUp(this.computedStepMultiplier)
350
- } else if (keyCode === CODE_PAGEDOWN) {
351
- this.stepDown(this.computedStepMultiplier)
352
- } else if (keyCode === CODE_HOME) {
353
- this.localValue = this.computedMin
354
- } else if (keyCode === CODE_END) {
355
- this.localValue = this.computedMax
356
- }
357
- }
358
- }
359
- },
360
- onKeyup(event) {
361
- // Emit a change event when the keyup happens
362
- const { keyCode, altKey, ctrlKey, metaKey } = event
363
- /* istanbul ignore if */
364
- if (this.disabled || this.readonly || altKey || ctrlKey || metaKey) {
365
- return
366
- }
367
- if (arrayIncludes(KEY_CODES, keyCode)) {
368
- stopEvent(event, { propagation: false })
369
- this.resetTimers()
370
- this.$_keyIsDown = false
371
- this.emitChange()
372
- }
373
- },
374
- handleStepRepeat(event, stepper) {
375
- const { type, button } = event || {}
376
- if (!this.disabled && !this.readonly) {
377
- /* istanbul ignore if */
378
- if (type === 'mousedown' && button) {
379
- // We only respond to left (main === 0) button clicks
380
- return
381
- }
382
- this.resetTimers()
383
- // Step the counter initially
384
- stepper(1)
385
- const threshold = this.computedThreshold
386
- const multiplier = this.computedStepMultiplier
387
- const delay = this.computedDelay
388
- const interval = this.computedInterval
389
- // Initiate the delay/repeat interval
390
- this.$_autoDelayTimer = setTimeout(() => {
391
- let count = 0
392
- this.$_autoRepeatTimer = setInterval(() => {
393
- // After N initial repeats, we increase the incrementing step amount
394
- // We do this to minimize screen reader announcements of the value
395
- // (values are announced every change, which can be chatty for SR users)
396
- // And to make it easer to select a value when the range is large
397
- stepper(count < threshold ? 1 : multiplier)
398
- count++
399
- }, interval)
400
- }, delay)
401
- }
402
- },
403
- onMouseup(event) {
404
- // `<body>` listener, only enabled when mousedown starts
405
- const { type, button } = event || {}
406
- /* istanbul ignore if */
407
- if (type === 'mouseup' && button) {
408
- // Ignore non left button (main === 0) mouse button click
409
- return
410
- }
411
- stopEvent(event, { propagation: false })
412
- this.resetTimers()
413
- this.setMouseup(false)
414
- // Trigger the change event
415
- this.emitChange()
416
- },
417
- setMouseup(on) {
418
- // Enable or disabled the body mouseup/touchend handlers
419
- // Use try/catch to handle case when called server side
420
- try {
421
- eventOnOff(on, document.body, 'mouseup', this.onMouseup, false)
422
- eventOnOff(on, document.body, 'touchend', this.onMouseup, false)
423
- } catch {}
424
- },
425
- resetTimers() {
426
- clearTimeout(this.$_autoDelayTimer)
427
- clearInterval(this.$_autoRepeatTimer)
428
- this.$_autoDelayTimer = null
429
- this.$_autoRepeatTimer = null
430
- },
431
- clearRepeat() {
432
- this.resetTimers()
433
- this.setMouseup(false)
434
- this.$_keyIsDown = false
435
- }
436
- },
437
- render(h) {
438
- const {
439
- spinId,
440
- localValue: value,
441
- computedInline: inline,
442
- computedReadonly: readonly,
443
- vertical,
444
- disabled,
445
- computedFormatter
446
- } = this
447
- const hasValue = !isNull(value)
448
-
449
- const makeButton = (stepper, label, IconCmp, keyRef, shortcut, btnDisabled, slotName) => {
450
- const $icon = h(IconCmp, {
451
- props: { scale: this.hasFocus ? 1.5 : 1.25 },
452
- attrs: { 'aria-hidden': 'true' }
453
- })
454
- const scope = { hasFocus: this.hasFocus }
455
- const handler = event => {
456
- if (!disabled && !readonly) {
457
- stopEvent(event, { propagation: false })
458
- this.setMouseup(true)
459
- // Since we `preventDefault()`, we must manually focus the button
460
- attemptFocus(event.currentTarget)
461
- this.handleStepRepeat(event, stepper)
462
- }
463
- }
464
- return h(
465
- 'button',
466
- {
467
- staticClass: 'btn btn-sm border-0 rounded-0',
468
- class: { 'py-0': !vertical },
469
- attrs: {
470
- tabindex: '-1',
471
- type: 'button',
472
- disabled: disabled || readonly || btnDisabled,
473
- 'aria-disabled': disabled || readonly || btnDisabled ? 'true' : null,
474
- 'aria-controls': spinId,
475
- 'aria-label': label || null,
476
- 'aria-keyshortcuts': shortcut || null
477
- },
478
- on: {
479
- mousedown: handler,
480
- touchstart: handler
481
- },
482
- key: keyRef || null,
483
- ref: keyRef
484
- },
485
- [this.normalizeSlot(slotName, scope) || $icon]
486
- )
487
- }
488
- // TODO: Add button disabled state when `wrap` is `false` and at value max/min
489
- const $increment = makeButton(
490
- this.stepUp,
491
- this.labelIncrement,
492
- BIconPlus,
493
- 'inc',
494
- 'ArrowUp',
495
- false,
496
- SLOT_NAME_INCREMENT
497
- )
498
- const $decrement = makeButton(
499
- this.stepDown,
500
- this.labelDecrement,
501
- BIconDash,
502
- 'dec',
503
- 'ArrowDown',
504
- false,
505
- SLOT_NAME_DECREMENT
506
- )
507
-
508
- let $hidden = h()
509
- if (this.name && !disabled) {
510
- $hidden = h('input', {
511
- attrs: {
512
- type: 'hidden',
513
- name: this.name,
514
- form: this.form || null,
515
- // TODO: Should this be set to '' if value is out of range?
516
- value: this.valueAsFixed
517
- },
518
- key: 'hidden'
519
- })
520
- }
521
-
522
- const $spin = h(
523
- // We use 'output' element to make this accept a `<label for="id">` (Except IE)
524
- 'output',
525
- {
526
- staticClass: 'flex-grow-1',
527
- class: {
528
- 'd-flex': vertical,
529
- 'align-self-center': !vertical,
530
- 'align-items-center': vertical,
531
- 'border-top': vertical,
532
- 'border-bottom': vertical,
533
- 'border-left': !vertical,
534
- 'border-right': !vertical
535
- },
536
- attrs: this.computedSpinAttrs,
537
- key: 'output',
538
- ref: 'spinner'
539
- },
540
- [h('bdi', hasValue ? computedFormatter(value) : this.placeholder || '')]
541
- )
542
-
543
- return h(
544
- 'div',
545
- {
546
- staticClass: 'b-form-spinbutton form-control',
547
- class: [
548
- {
549
- disabled,
550
- readonly,
551
- focus: this.hasFocus,
552
- 'd-inline-flex': inline || vertical,
553
- 'd-flex': !inline && !vertical,
554
- 'align-items-stretch': !vertical,
555
- 'flex-column': vertical
556
- },
557
- this.sizeFormClass,
558
- this.stateClass
559
- ],
560
- attrs: this.computedAttrs,
561
- on: {
562
- keydown: this.onKeydown,
563
- keyup: this.onKeyup,
564
- // We use capture phase (`!` prefix) since focus and blur do not bubble
565
- '!focus': this.onFocusBlur,
566
- '!blur': this.onFocusBlur
567
- }
568
- },
569
- vertical ? [$increment, $hidden, $spin, $decrement] : [$decrement, $hidden, $spin, $increment]
570
- )
571
- }
572
- })