@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,601 +0,0 @@
1
- // BTime control (not form input control)
2
- import { extend, REF_FOR_KEY } from '../../vue'
3
- import { NAME_TIME } from '../../constants/components'
4
- import { EVENT_NAME_CONTEXT } from '../../constants/events'
5
- import { CODE_LEFT, CODE_RIGHT } from '../../constants/key-codes'
6
- import {
7
- PROP_TYPE_ARRAY_STRING,
8
- PROP_TYPE_BOOLEAN,
9
- PROP_TYPE_NUMBER_STRING,
10
- PROP_TYPE_STRING
11
- } from '../../constants/props'
12
- import { RX_TIME } from '../../constants/regex'
13
- import { concat } from '../../utils/array'
14
- import { createDate, createDateFormatter } from '../../utils/date'
15
- import { attemptBlur, attemptFocus, contains, getActiveElement, requestAF } from '../../utils/dom'
16
- import { stopEvent } from '../../utils/events'
17
- import { identity } from '../../utils/identity'
18
- import { isNull, isUndefinedOrNull } from '../../utils/inspect'
19
- import { looseEqual } from '../../utils/loose-equal'
20
- import { isLocaleRTL } from '../../utils/locale'
21
- import { makeModelMixin } from '../../utils/model'
22
- import { toInteger } from '../../utils/number'
23
- import { pick, sortKeys } from '../../utils/object'
24
- import { makeProp, makePropsConfigurable } from '../../utils/props'
25
- import { toString } from '../../utils/string'
26
- import { idMixin, props as idProps } from '../../mixins/id'
27
- import { normalizeSlotMixin } from '../../mixins/normalize-slot'
28
- import { BFormSpinbutton, props as BFormSpinbuttonProps } from '../form-spinbutton/form-spinbutton'
29
- import { BIconCircleFill, BIconChevronUp } from '../../icons/icons'
30
-
31
- // --- Constants ---
32
-
33
- const {
34
- mixin: modelMixin,
35
- props: modelProps,
36
- prop: MODEL_PROP_NAME,
37
- event: MODEL_EVENT_NAME
38
- } = makeModelMixin('value', {
39
- type: PROP_TYPE_STRING,
40
- defaultValue: ''
41
- })
42
-
43
- const NUMERIC = 'numeric'
44
-
45
- // --- Helper methods ---
46
-
47
- const padLeftZeros = value => `00${value || ''}`.slice(-2)
48
-
49
- const parseHMS = value => {
50
- value = toString(value)
51
- let [hh, mm, ss] = [null, null, null]
52
- if (RX_TIME.test(value)) {
53
- ;[hh, mm, ss] = value.split(':').map(v => toInteger(v, null))
54
- }
55
- return {
56
- hours: isUndefinedOrNull(hh) ? null : hh,
57
- minutes: isUndefinedOrNull(mm) ? null : mm,
58
- seconds: isUndefinedOrNull(ss) ? null : ss,
59
- ampm: isUndefinedOrNull(hh) || hh < 12 ? 0 : 1
60
- }
61
- }
62
-
63
- const formatHMS = ({ hours, minutes, seconds }, requireSeconds = false) => {
64
- if (isNull(hours) || isNull(minutes) || (requireSeconds && isNull(seconds))) {
65
- return ''
66
- }
67
- const hms = [hours, minutes, requireSeconds ? seconds : 0]
68
- return hms.map(padLeftZeros).join(':')
69
- }
70
-
71
- // --- Props ---
72
-
73
- export const props = makePropsConfigurable(
74
- sortKeys({
75
- ...idProps,
76
- ...modelProps,
77
- ...pick(BFormSpinbuttonProps, ['labelIncrement', 'labelDecrement']),
78
- // ID of label element
79
- ariaLabelledby: makeProp(PROP_TYPE_STRING),
80
- disabled: makeProp(PROP_TYPE_BOOLEAN, false),
81
- footerTag: makeProp(PROP_TYPE_STRING, 'footer'),
82
- headerTag: makeProp(PROP_TYPE_STRING, 'header'),
83
- hidden: makeProp(PROP_TYPE_BOOLEAN, false),
84
- hideHeader: makeProp(PROP_TYPE_BOOLEAN, false),
85
- // Explicitly force 12 or 24 hour time
86
- // Default is to use resolved locale for 12/24 hour display
87
- // Tri-state: `true` = 12, `false` = 24, `null` = auto
88
- hour12: makeProp(PROP_TYPE_BOOLEAN, null),
89
- labelAm: makeProp(PROP_TYPE_STRING, 'AM'),
90
- labelAmpm: makeProp(PROP_TYPE_STRING, 'AM/PM'),
91
- labelHours: makeProp(PROP_TYPE_STRING, 'Hours'),
92
- labelMinutes: makeProp(PROP_TYPE_STRING, 'Minutes'),
93
- labelNoTimeSelected: makeProp(PROP_TYPE_STRING, 'No time selected'),
94
- labelPm: makeProp(PROP_TYPE_STRING, 'PM'),
95
- labelSeconds: makeProp(PROP_TYPE_STRING, 'Seconds'),
96
- labelSelected: makeProp(PROP_TYPE_STRING, 'Selected time'),
97
- locale: makeProp(PROP_TYPE_ARRAY_STRING),
98
- minutesStep: makeProp(PROP_TYPE_NUMBER_STRING, 1),
99
- readonly: makeProp(PROP_TYPE_BOOLEAN, false),
100
- secondsStep: makeProp(PROP_TYPE_NUMBER_STRING, 1),
101
- // If `true`, show the second spinbutton
102
- showSeconds: makeProp(PROP_TYPE_BOOLEAN, false)
103
- }),
104
- NAME_TIME
105
- )
106
-
107
- // --- Main component ---
108
-
109
- // @vue/component
110
- export const BTime = /*#__PURE__*/ extend({
111
- name: NAME_TIME,
112
- mixins: [idMixin, modelMixin, normalizeSlotMixin],
113
- props,
114
- data() {
115
- const parsed = parseHMS(this[MODEL_PROP_NAME] || '')
116
- return {
117
- // Spin button models
118
- modelHours: parsed.hours,
119
- modelMinutes: parsed.minutes,
120
- modelSeconds: parsed.seconds,
121
- modelAmpm: parsed.ampm,
122
- // Internal flag to enable aria-live regions
123
- isLive: false
124
- }
125
- },
126
- computed: {
127
- computedHMS() {
128
- const hours = this.modelHours
129
- const minutes = this.modelMinutes
130
- const seconds = this.modelSeconds
131
- return formatHMS({ hours, minutes, seconds }, this.showSeconds)
132
- },
133
- resolvedOptions() {
134
- // Resolved locale options
135
- const locale = concat(this.locale).filter(identity)
136
- const options = {
137
- hour: NUMERIC,
138
- minute: NUMERIC,
139
- second: NUMERIC
140
- }
141
- if (!isUndefinedOrNull(this.hour12)) {
142
- // Force 12 or 24 hour clock
143
- options.hour12 = !!this.hour12
144
- }
145
- const dtf = new Intl.DateTimeFormat(locale, options)
146
- const resolved = dtf.resolvedOptions()
147
- const hour12 = resolved.hour12 || false
148
- // IE 11 doesn't resolve the hourCycle, so we make
149
- // an assumption and fall back to common values
150
- const hourCycle = resolved.hourCycle || (hour12 ? 'h12' : 'h23')
151
- return {
152
- locale: resolved.locale,
153
- hour12,
154
- hourCycle
155
- }
156
- },
157
- computedLocale() {
158
- return this.resolvedOptions.locale
159
- },
160
- computedLang() {
161
- return (this.computedLocale || '').replace(/-u-.*$/, '')
162
- },
163
- computedRTL() {
164
- return isLocaleRTL(this.computedLang)
165
- },
166
- computedHourCycle() {
167
- // h11, h12, h23, or h24
168
- // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Locale/hourCycle
169
- // h12 - Hour system using 1–12. Corresponds to 'h' in patterns. The 12 hour clock, with midnight starting at 12:00 am
170
- // h23 - Hour system using 0–23. Corresponds to 'H' in patterns. The 24 hour clock, with midnight starting at 0:00
171
- // h11 - Hour system using 0–11. Corresponds to 'K' in patterns. The 12 hour clock, with midnight starting at 0:00 am
172
- // h24 - Hour system using 1–24. Corresponds to 'k' in pattern. The 24 hour clock, with midnight starting at 24:00
173
- // For h12 or h24, we visually format 00 hours as 12
174
- return this.resolvedOptions.hourCycle
175
- },
176
- is12Hour() {
177
- return !!this.resolvedOptions.hour12
178
- },
179
- context() {
180
- return {
181
- locale: this.computedLocale,
182
- isRTL: this.computedRTL,
183
- hourCycle: this.computedHourCycle,
184
- hour12: this.is12Hour,
185
- hours: this.modelHours,
186
- minutes: this.modelMinutes,
187
- seconds: this.showSeconds ? this.modelSeconds : 0,
188
- value: this.computedHMS,
189
- formatted: this.formattedTimeString
190
- }
191
- },
192
- valueId() {
193
- return this.safeId() || null
194
- },
195
- computedAriaLabelledby() {
196
- return [this.ariaLabelledby, this.valueId].filter(identity).join(' ') || null
197
- },
198
- timeFormatter() {
199
- // Returns a formatter function reference
200
- // The formatter converts the time to a localized string
201
- const options = {
202
- hour12: this.is12Hour,
203
- hourCycle: this.computedHourCycle,
204
- hour: NUMERIC,
205
- minute: NUMERIC,
206
- timeZone: 'UTC'
207
- }
208
- if (this.showSeconds) {
209
- options.second = NUMERIC
210
- }
211
- // Formats the time as a localized string
212
- return createDateFormatter(this.computedLocale, options)
213
- },
214
- numberFormatter() {
215
- // Returns a formatter function reference
216
- // The formatter always formats as 2 digits and is localized
217
- const nf = new Intl.NumberFormat(this.computedLocale, {
218
- style: 'decimal',
219
- minimumIntegerDigits: 2,
220
- minimumFractionDigits: 0,
221
- maximumFractionDigits: 0,
222
- notation: 'standard'
223
- })
224
- return nf.format
225
- },
226
- formattedTimeString() {
227
- const hours = this.modelHours
228
- const minutes = this.modelMinutes
229
- const seconds = this.showSeconds ? this.modelSeconds || 0 : 0
230
- if (this.computedHMS) {
231
- return this.timeFormatter(createDate(Date.UTC(0, 0, 1, hours, minutes, seconds)))
232
- }
233
- return this.labelNoTimeSelected || ' '
234
- },
235
- spinScopedSlots() {
236
- const h = this.$createElement
237
- return {
238
- increment: ({ hasFocus }) =>
239
- h(BIconChevronUp, {
240
- props: { scale: hasFocus ? 1.5 : 1.25 },
241
- attrs: { 'aria-hidden': 'true' }
242
- }),
243
- decrement: ({ hasFocus }) =>
244
- h(BIconChevronUp, {
245
- props: { flipV: true, scale: hasFocus ? 1.5 : 1.25 },
246
- attrs: { 'aria-hidden': 'true' }
247
- })
248
- }
249
- }
250
- },
251
- watch: {
252
- [MODEL_PROP_NAME](newValue, oldValue) {
253
- if (newValue !== oldValue && !looseEqual(parseHMS(newValue), parseHMS(this.computedHMS))) {
254
- const { hours, minutes, seconds, ampm } = parseHMS(newValue)
255
- this.modelHours = hours
256
- this.modelMinutes = minutes
257
- this.modelSeconds = seconds
258
- this.modelAmpm = ampm
259
- }
260
- },
261
- computedHMS(newValue, oldValue) {
262
- if (newValue !== oldValue) {
263
- this.$emit(MODEL_EVENT_NAME, newValue)
264
- }
265
- },
266
- context(newValue, oldValue) {
267
- if (!looseEqual(newValue, oldValue)) {
268
- this.$emit(EVENT_NAME_CONTEXT, newValue)
269
- }
270
- },
271
- modelAmpm(newValue, oldValue) {
272
- if (newValue !== oldValue) {
273
- const hours = isNull(this.modelHours) ? 0 : this.modelHours
274
- this.$nextTick(() => {
275
- if (newValue === 0 && hours > 11) {
276
- // Switched to AM
277
- this.modelHours = hours - 12
278
- } else if (newValue === 1 && hours < 12) {
279
- // Switched to PM
280
- this.modelHours = hours + 12
281
- }
282
- })
283
- }
284
- },
285
- modelHours(newHours, oldHours) {
286
- if (newHours !== oldHours) {
287
- this.modelAmpm = newHours > 11 ? 1 : 0
288
- }
289
- }
290
- },
291
- created() {
292
- this.$nextTick(() => {
293
- this.$emit(EVENT_NAME_CONTEXT, this.context)
294
- })
295
- },
296
- mounted() {
297
- this.setLive(true)
298
- },
299
- /* istanbul ignore next */
300
- activated() {
301
- this.setLive(true)
302
- },
303
- /* istanbul ignore next */
304
- deactivated() {
305
- this.setLive(false)
306
- },
307
- beforeDestroy() {
308
- this.setLive(false)
309
- },
310
- methods: {
311
- // Public methods
312
- focus() {
313
- if (!this.disabled) {
314
- // We focus the first spin button
315
- attemptFocus(this.$refs.spinners[0])
316
- }
317
- },
318
- blur() {
319
- if (!this.disabled) {
320
- const activeElement = getActiveElement()
321
- if (contains(this.$el, activeElement)) {
322
- attemptBlur(activeElement)
323
- }
324
- }
325
- },
326
- // Formatters for the spin buttons
327
- formatHours(hh) {
328
- const hourCycle = this.computedHourCycle
329
- // We always store 0-23, but format based on h11/h12/h23/h24 formats
330
- hh = this.is12Hour && hh > 12 ? hh - 12 : hh
331
- // Determine how 00:00 and 12:00 are shown
332
- hh =
333
- hh === 0 && hourCycle === 'h12'
334
- ? 12
335
- : hh === 0 && hourCycle === 'h24'
336
- ? /* istanbul ignore next */ 24
337
- : hh === 12 && hourCycle === 'h11'
338
- ? /* istanbul ignore next */ 0
339
- : hh
340
- return this.numberFormatter(hh)
341
- },
342
- formatMinutes(mm) {
343
- return this.numberFormatter(mm)
344
- },
345
- formatSeconds(ss) {
346
- return this.numberFormatter(ss)
347
- },
348
- formatAmpm(ampm) {
349
- // These should come from label props???
350
- // `ampm` should always be a value of `0` or `1`
351
- return ampm === 0 ? this.labelAm : ampm === 1 ? this.labelPm : ''
352
- },
353
- // Spinbutton on change handlers
354
- setHours(value) {
355
- this.modelHours = value
356
- },
357
- setMinutes(value) {
358
- this.modelMinutes = value
359
- },
360
- setSeconds(value) {
361
- this.modelSeconds = value
362
- },
363
- setAmpm(value) {
364
- this.modelAmpm = value
365
- },
366
- onSpinLeftRight(event = {}) {
367
- const { type, keyCode } = event
368
- if (
369
- !this.disabled &&
370
- type === 'keydown' &&
371
- (keyCode === CODE_LEFT || keyCode === CODE_RIGHT)
372
- ) {
373
- stopEvent(event)
374
- const spinners = this.$refs.spinners || []
375
- let index = spinners.map(cmp => !!cmp.hasFocus).indexOf(true)
376
- index = index + (keyCode === CODE_LEFT ? -1 : 1)
377
- index = index >= spinners.length ? 0 : index < 0 ? spinners.length - 1 : index
378
- attemptFocus(spinners[index])
379
- }
380
- },
381
- setLive(on) {
382
- if (on) {
383
- this.$nextTick(() => {
384
- requestAF(() => {
385
- this.isLive = true
386
- })
387
- })
388
- } else {
389
- this.isLive = false
390
- }
391
- }
392
- },
393
- render(h) {
394
- // If hidden, we just render a placeholder comment
395
- /* istanbul ignore if */
396
- if (this.hidden) {
397
- return h()
398
- }
399
-
400
- const {
401
- disabled,
402
- readonly,
403
- computedLocale: locale,
404
- computedAriaLabelledby: ariaLabelledby,
405
- labelIncrement,
406
- labelDecrement,
407
- valueId,
408
- focus: focusHandler
409
- } = this
410
- const spinIds = []
411
-
412
- // Helper method to render a spinbutton
413
- const makeSpinbutton = (handler, key, classes, spinbuttonProps = {}) => {
414
- const id = this.safeId(`_spinbutton_${key}_`) || null
415
- spinIds.push(id)
416
-
417
- return h(BFormSpinbutton, {
418
- class: classes,
419
- props: {
420
- id,
421
- placeholder: '--',
422
- vertical: true,
423
- required: true,
424
- disabled,
425
- readonly,
426
- locale,
427
- labelIncrement,
428
- labelDecrement,
429
- wrap: true,
430
- ariaControls: valueId,
431
- min: 0,
432
- ...spinbuttonProps
433
- },
434
- scopedSlots: this.spinScopedSlots,
435
- on: {
436
- // We use `change` event to minimize SR verbosity
437
- // As the spinbutton will announce each value change
438
- // and we don't want the formatted time to be announced
439
- // on each value input if repeat is happening
440
- change: handler
441
- },
442
- key,
443
- ref: 'spinners',
444
- [REF_FOR_KEY]: true
445
- })
446
- }
447
-
448
- // Helper method to return a "colon" separator
449
- const makeColon = () => {
450
- return h(
451
- 'div',
452
- {
453
- staticClass: 'd-flex flex-column',
454
- class: { 'text-muted': disabled || readonly },
455
- attrs: { 'aria-hidden': 'true' }
456
- },
457
- [
458
- h(BIconCircleFill, { props: { shiftV: 4, scale: 0.5 } }),
459
- h(BIconCircleFill, { props: { shiftV: -4, scale: 0.5 } })
460
- ]
461
- )
462
- }
463
-
464
- let $spinners = []
465
-
466
- // Hours
467
- $spinners.push(
468
- makeSpinbutton(this.setHours, 'hours', 'b-time-hours', {
469
- value: this.modelHours,
470
- max: 23,
471
- step: 1,
472
- formatterFn: this.formatHours,
473
- ariaLabel: this.labelHours
474
- })
475
- )
476
-
477
- // Spacer
478
- $spinners.push(makeColon())
479
-
480
- // Minutes
481
- $spinners.push(
482
- makeSpinbutton(this.setMinutes, 'minutes', 'b-time-minutes', {
483
- value: this.modelMinutes,
484
- max: 59,
485
- step: this.minutesStep || 1,
486
- formatterFn: this.formatMinutes,
487
- ariaLabel: this.labelMinutes
488
- })
489
- )
490
-
491
- if (this.showSeconds) {
492
- // Spacer
493
- $spinners.push(makeColon())
494
- // Seconds
495
- $spinners.push(
496
- makeSpinbutton(this.setSeconds, 'seconds', 'b-time-seconds', {
497
- value: this.modelSeconds,
498
- max: 59,
499
- step: this.secondsStep || 1,
500
- formatterFn: this.formatSeconds,
501
- ariaLabel: this.labelSeconds
502
- })
503
- )
504
- }
505
-
506
- // AM/PM ?
507
- // depends on client settings, shouldn't be rendered on server
508
- if (this.isLive && this.is12Hour) {
509
- // TODO:
510
- // If locale is RTL, unshift this instead of push?
511
- // And switch class `ml-2` to `mr-2`
512
- // Note some LTR locales (i.e. zh) also place AM/PM to the left
513
- $spinners.push(
514
- makeSpinbutton(this.setAmpm, 'ampm', 'b-time-ampm', {
515
- value: this.modelAmpm,
516
- max: 1,
517
- formatterFn: this.formatAmpm,
518
- ariaLabel: this.labelAmpm,
519
- // We set `required` as `false`, since this always has a value
520
- required: false
521
- })
522
- )
523
- }
524
-
525
- // Assemble spinners
526
- $spinners = h(
527
- 'div',
528
- {
529
- staticClass: 'd-flex align-items-center justify-content-center mx-auto',
530
- attrs: {
531
- role: 'group',
532
- tabindex: disabled || readonly ? null : '-1',
533
- 'aria-labelledby': ariaLabelledby
534
- },
535
- on: {
536
- keydown: this.onSpinLeftRight,
537
- click: /* istanbul ignore next */ event => {
538
- if (event.target === event.currentTarget) {
539
- focusHandler()
540
- }
541
- }
542
- }
543
- },
544
- $spinners
545
- )
546
-
547
- // Selected type display
548
- const $value = h(
549
- 'output',
550
- {
551
- staticClass: 'form-control form-control-sm text-center',
552
- class: {
553
- disabled: disabled || readonly
554
- },
555
- attrs: {
556
- id: valueId,
557
- role: 'status',
558
- for: spinIds.filter(identity).join(' ') || null,
559
- tabindex: disabled ? null : '-1',
560
- 'aria-live': this.isLive ? 'polite' : 'off',
561
- 'aria-atomic': 'true'
562
- },
563
- on: {
564
- // Transfer focus/click to focus hours spinner
565
- click: focusHandler,
566
- focus: focusHandler
567
- }
568
- },
569
- [
570
- h('bdi', this.formattedTimeString),
571
- this.computedHMS ? h('span', { staticClass: 'sr-only' }, ` (${this.labelSelected}) `) : ''
572
- ]
573
- )
574
- const $header = h(
575
- this.headerTag,
576
- {
577
- staticClass: 'b-time-header',
578
- class: { 'sr-only': this.hideHeader }
579
- },
580
- [$value]
581
- )
582
-
583
- const $content = this.normalizeSlot()
584
- const $footer = $content ? h(this.footerTag, { staticClass: 'b-time-footer' }, $content) : h()
585
-
586
- return h(
587
- 'div',
588
- {
589
- staticClass: 'b-time d-inline-flex flex-column text-center',
590
- attrs: {
591
- role: 'group',
592
- lang: this.computedLang || null,
593
- 'aria-labelledby': ariaLabelledby || null,
594
- 'aria-disabled': disabled ? 'true' : null,
595
- 'aria-readonly': readonly && !disabled ? 'true' : null
596
- }
597
- },
598
- [$header, $spinners, $footer]
599
- )
600
- }
601
- })