@gitlab/ui 131.2.0 → 131.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 (402) hide show
  1. package/package.json +11 -11
  2. package/src/components/base/form/form_checkbox/form_checkbox.vue +1 -2
  3. package/src/components/base/form/form_checkbox/form_checkbox_group.vue +1 -1
  4. package/src/components/base/form/form_radio/form_radio.vue +1 -1
  5. package/src/components/base/form/form_radio_group/form_radio_group.vue +1 -1
  6. package/src/components/base/table/table.scss +8 -0
  7. package/src/components/utilities/truncate/truncate.scss +3 -1
  8. package/src/scss/mixins.scss +3 -1
  9. package/src/utils/equality_utils.js +82 -0
  10. package/src/vendor/bootstrap-vue/src/components/button/button-close.js +20 -5
  11. package/src/vendor/bootstrap-vue/src/components/button/button.js +36 -8
  12. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.js +12 -4
  13. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.js +16 -5
  14. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +99 -24
  15. package/src/vendor/bootstrap-vue/src/components/form/form-text.js +20 -5
  16. package/src/vendor/bootstrap-vue/src/components/form/form.js +20 -5
  17. package/src/vendor/bootstrap-vue/src/components/layout/form-row.js +5 -2
  18. package/src/vendor/bootstrap-vue/src/components/table/tbody.js +10 -3
  19. package/src/vendor/bootstrap-vue/src/components/table/td.js +28 -7
  20. package/src/vendor/bootstrap-vue/src/components/table/tfoot.js +5 -2
  21. package/src/vendor/bootstrap-vue/src/components/table/thead.js +5 -2
  22. package/src/vendor/bootstrap-vue/src/components/table/tr.js +5 -2
  23. package/src/vendor/bootstrap-vue/src/components/tabs/tab.js +51 -12
  24. package/tailwind.defaults.js +10 -1
  25. package/dist/charts.js +0 -13
  26. package/dist/components/base/accordion/accordion.js +0 -69
  27. package/dist/components/base/accordion/accordion_item.js +0 -160
  28. package/dist/components/base/accordion/constants.js +0 -3
  29. package/dist/components/base/alert/alert.js +0 -263
  30. package/dist/components/base/animated_icon/animated_chevron_down_up_icon.js +0 -45
  31. package/dist/components/base/animated_icon/animated_chevron_lg_down_up_icon.js +0 -45
  32. package/dist/components/base/animated_icon/animated_chevron_lg_right_down_icon.js +0 -45
  33. package/dist/components/base/animated_icon/animated_chevron_right_down_icon.js +0 -45
  34. package/dist/components/base/animated_icon/animated_duo_chat_icon.js +0 -45
  35. package/dist/components/base/animated_icon/animated_loader_icon.js +0 -45
  36. package/dist/components/base/animated_icon/animated_notifications_icon.js +0 -45
  37. package/dist/components/base/animated_icon/animated_sidebar_icon.js +0 -45
  38. package/dist/components/base/animated_icon/animated_smile_icon.js +0 -45
  39. package/dist/components/base/animated_icon/animated_sort_icon.js +0 -45
  40. package/dist/components/base/animated_icon/animated_star_icon.js +0 -45
  41. package/dist/components/base/animated_icon/animated_todo_icon.js +0 -45
  42. package/dist/components/base/animated_icon/animated_upload_icon.js +0 -45
  43. package/dist/components/base/animated_icon/base_animated_icon.js +0 -77
  44. package/dist/components/base/attribute_list/attribute_list.js +0 -100
  45. package/dist/components/base/avatar/avatar.js +0 -175
  46. package/dist/components/base/avatar/utils.js +0 -17
  47. package/dist/components/base/avatar_labeled/avatar_labeled.js +0 -198
  48. package/dist/components/base/avatar_link/avatar_link.js +0 -47
  49. package/dist/components/base/avatars_inline/avatars_inline.js +0 -139
  50. package/dist/components/base/badge/badge.js +0 -197
  51. package/dist/components/base/banner/banner.js +0 -149
  52. package/dist/components/base/breadcrumb/breadcrumb.js +0 -282
  53. package/dist/components/base/breadcrumb/breadcrumb_item.js +0 -96
  54. package/dist/components/base/broadcast_message/broadcast_message.js +0 -113
  55. package/dist/components/base/broadcast_message/constants.js +0 -5
  56. package/dist/components/base/button/button.js +0 -419
  57. package/dist/components/base/button_group/button_group.js +0 -53
  58. package/dist/components/base/card/card.js +0 -69
  59. package/dist/components/base/collapse/collapse.js +0 -163
  60. package/dist/components/base/color_mode_toggle/color_mode_toggle.js +0 -92
  61. package/dist/components/base/datepicker/datepicker.js +0 -475
  62. package/dist/components/base/daterange_picker/daterange_picker.js +0 -394
  63. package/dist/components/base/drawer/drawer.js +0 -156
  64. package/dist/components/base/dropdown/dropdown.js +0 -330
  65. package/dist/components/base/dropdown/dropdown_divider.js +0 -48
  66. package/dist/components/base/dropdown/dropdown_form.js +0 -48
  67. package/dist/components/base/dropdown/dropdown_item.js +0 -175
  68. package/dist/components/base/dropdown/dropdown_section_header.js +0 -48
  69. package/dist/components/base/dropdown/dropdown_text.js +0 -48
  70. package/dist/components/base/filtered_search/common_story_options.js +0 -14
  71. package/dist/components/base/filtered_search/filtered_search.js +0 -428
  72. package/dist/components/base/filtered_search/filtered_search_suggestion.js +0 -95
  73. package/dist/components/base/filtered_search/filtered_search_suggestion_list.js +0 -139
  74. package/dist/components/base/filtered_search/filtered_search_term.js +0 -217
  75. package/dist/components/base/filtered_search/filtered_search_token.js +0 -383
  76. package/dist/components/base/filtered_search/filtered_search_token_segment.js +0 -444
  77. package/dist/components/base/filtered_search/filtered_search_utils.js +0 -241
  78. package/dist/components/base/form/form.js +0 -43
  79. package/dist/components/base/form/form_character_count/form_character_count.js +0 -107
  80. package/dist/components/base/form/form_checkbox/form_checkbox.js +0 -343
  81. package/dist/components/base/form/form_checkbox/form_checkbox_group.js +0 -186
  82. package/dist/components/base/form/form_combobox/constants.js +0 -55
  83. package/dist/components/base/form/form_combobox/form_combobox.js +0 -239
  84. package/dist/components/base/form/form_date/form_date.js +0 -143
  85. package/dist/components/base/form/form_fields/form_field_validator.js +0 -93
  86. package/dist/components/base/form/form_fields/form_fields.js +0 -289
  87. package/dist/components/base/form/form_fields/form_fields_loop.js +0 -75
  88. package/dist/components/base/form/form_fields/mappers.js +0 -13
  89. package/dist/components/base/form/form_fields/validators.js +0 -48
  90. package/dist/components/base/form/form_group/form_group.js +0 -119
  91. package/dist/components/base/form/form_input/form_input.js +0 -695
  92. package/dist/components/base/form/form_input_group/form_input_group.js +0 -120
  93. package/dist/components/base/form/form_input_group/form_input_group_mixin.js +0 -41
  94. package/dist/components/base/form/form_radio/form_radio.js +0 -259
  95. package/dist/components/base/form/form_radio_group/form_radio_group.js +0 -187
  96. package/dist/components/base/form/form_select/constants.js +0 -12
  97. package/dist/components/base/form/form_select/form_select.js +0 -96
  98. package/dist/components/base/form/form_textarea/form_textarea.js +0 -166
  99. package/dist/components/base/form/input_group_text/input_group_text.js +0 -43
  100. package/dist/components/base/icon/icon.js +0 -113
  101. package/dist/components/base/illustration/illustration.js +0 -80
  102. package/dist/components/base/infinite_scroll/infinite_scroll.js +0 -196
  103. package/dist/components/base/keyset_pagination/keyset_pagination.js +0 -152
  104. package/dist/components/base/label/label.js +0 -174
  105. package/dist/components/base/link/link.js +0 -332
  106. package/dist/components/base/loading_icon/loading_icon.js +0 -120
  107. package/dist/components/base/markdown/markdown.js +0 -50
  108. package/dist/components/base/modal/modal.js +0 -259
  109. package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +0 -716
  110. package/dist/components/base/new_dropdowns/base_dropdown/constants.js +0 -5
  111. package/dist/components/base/new_dropdowns/base_dropdown/dropdown_container.js +0 -32
  112. package/dist/components/base/new_dropdowns/constants.js +0 -24
  113. package/dist/components/base/new_dropdowns/disclosure/constants.js +0 -8
  114. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js +0 -400
  115. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js +0 -112
  116. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js +0 -196
  117. package/dist/components/base/new_dropdowns/disclosure/mock_data.js +0 -168
  118. package/dist/components/base/new_dropdowns/disclosure/utils.js +0 -84
  119. package/dist/components/base/new_dropdowns/listbox/listbox.js +0 -997
  120. package/dist/components/base/new_dropdowns/listbox/listbox_group.js +0 -58
  121. package/dist/components/base/new_dropdowns/listbox/listbox_item.js +0 -112
  122. package/dist/components/base/new_dropdowns/listbox/listbox_search_input.js +0 -94
  123. package/dist/components/base/new_dropdowns/listbox/mock_data.js +0 -131
  124. package/dist/components/base/new_dropdowns/listbox/utils.js +0 -33
  125. package/dist/components/base/pagination/pagination.js +0 -397
  126. package/dist/components/base/path/data.js +0 -34
  127. package/dist/components/base/path/path.js +0 -177
  128. package/dist/components/base/popover/popover.js +0 -142
  129. package/dist/components/base/progress_bar/progress_bar.js +0 -117
  130. package/dist/components/base/search_box_by_click/search_box_by_click.js +0 -245
  131. package/dist/components/base/search_box_by_type/search_box_by_type.js +0 -187
  132. package/dist/components/base/segmented_control/segmented_control.js +0 -73
  133. package/dist/components/base/skeleton_loader/skeleton_loader.js +0 -232
  134. package/dist/components/base/sorting/sorting.js +0 -180
  135. package/dist/components/base/table/constants.js +0 -5
  136. package/dist/components/base/table/table.js +0 -187
  137. package/dist/components/base/table_lite/table_lite.js +0 -80
  138. package/dist/components/base/tabs/constants.js +0 -3
  139. package/dist/components/base/tabs/tab/tab.js +0 -113
  140. package/dist/components/base/tabs/tabs/scrollable_tabs.js +0 -162
  141. package/dist/components/base/tabs/tabs/tabs.js +0 -223
  142. package/dist/components/base/toast/index.js +0 -66
  143. package/dist/components/base/toast/toast.js +0 -125
  144. package/dist/components/base/toast/toaster.js +0 -87
  145. package/dist/components/base/toggle/toggle.js +0 -178
  146. package/dist/components/base/token/token.js +0 -97
  147. package/dist/components/base/token_selector/helpers.js +0 -5
  148. package/dist/components/base/token_selector/token_container.js +0 -160
  149. package/dist/components/base/token_selector/token_selector.js +0 -454
  150. package/dist/components/base/token_selector/token_selector_dropdown.js +0 -223
  151. package/dist/components/base/tooltip/tooltip.js +0 -54
  152. package/dist/components/charts/area/area.js +0 -329
  153. package/dist/components/charts/bar/bar.js +0 -207
  154. package/dist/components/charts/chart/chart.js +0 -215
  155. package/dist/components/charts/column/column.js +0 -221
  156. package/dist/components/charts/discrete_scatter/discrete_scatter.js +0 -199
  157. package/dist/components/charts/gauge/gauge.js +0 -205
  158. package/dist/components/charts/heatmap/heatmap.js +0 -299
  159. package/dist/components/charts/heatmap/index.js +0 -2
  160. package/dist/components/charts/legend/legend.js +0 -245
  161. package/dist/components/charts/line/line.js +0 -340
  162. package/dist/components/charts/series_label/series_label.js +0 -101
  163. package/dist/components/charts/shared/tooltip/tooltip.js +0 -369
  164. package/dist/components/charts/shared/tooltip/tooltip_default_format/tooltip_default_format.js +0 -53
  165. package/dist/components/charts/single_stat/single_stat.js +0 -164
  166. package/dist/components/charts/sparkline/sparkline.js +0 -299
  167. package/dist/components/charts/stacked_column/stacked_column.js +0 -380
  168. package/dist/components/dashboards/dashboard_layout/dashboard_layout.js +0 -125
  169. package/dist/components/dashboards/dashboard_layout/grid_layout/grid_layout.js +0 -326
  170. package/dist/components/dashboards/dashboard_layout/validators.js +0 -14
  171. package/dist/components/dashboards/dashboard_panel/dashboard_panel.js +0 -236
  172. package/dist/components/dashboards/mock_data.js +0 -49
  173. package/dist/components/experimental/experiment_badge/constants.js +0 -4
  174. package/dist/components/experimental/experiment_badge/experiment_badge.js +0 -102
  175. package/dist/components/extended/multi_step_form_template/multi_step_form_template.js +0 -87
  176. package/dist/components/index.js +0 -107
  177. package/dist/components/mixins/button_mixin.js +0 -11
  178. package/dist/components/mixins/safe_link_mixin.js +0 -30
  179. package/dist/components/mixins/tooltip_mixin.js +0 -21
  180. package/dist/components/regions/dashboard_skeleton/dashboard_skeleton.js +0 -53
  181. package/dist/components/regions/empty_state/empty_state.js +0 -181
  182. package/dist/components/shared_components/clear_icon_button/clear_icon_button.js +0 -64
  183. package/dist/components/shared_components/clipboard_button/clipboard_button.js +0 -100
  184. package/dist/components/shared_components/close_button/close_button.js +0 -55
  185. package/dist/components/utilities/animated_number/animated_number.js +0 -131
  186. package/dist/components/utilities/friendly_wrap/friendly_wrap.js +0 -75
  187. package/dist/components/utilities/intersection_observer/intersection_observer.js +0 -88
  188. package/dist/components/utilities/intersperse/intersperse.js +0 -104
  189. package/dist/components/utilities/sprintf/sprintf.js +0 -171
  190. package/dist/components/utilities/truncate/constants.js +0 -8
  191. package/dist/components/utilities/truncate/truncate.js +0 -154
  192. package/dist/components/utilities/truncate_text/constants.js +0 -7
  193. package/dist/components/utilities/truncate_text/truncate_text.js +0 -146
  194. package/dist/config.js +0 -53
  195. package/dist/directives/hover_load/hover_load.js +0 -45
  196. package/dist/directives/index.js +0 -8
  197. package/dist/directives/modal.js +0 -1
  198. package/dist/directives/outside/outside.js +0 -149
  199. package/dist/directives/resize_observer/resize_observer.js +0 -58
  200. package/dist/directives/safe_html/constants.js +0 -6
  201. package/dist/directives/safe_html/safe_html.js +0 -39
  202. package/dist/directives/safe_link/mock_data.js +0 -10
  203. package/dist/directives/safe_link/safe_link.js +0 -67
  204. package/dist/directives/tooltip/container.js +0 -7
  205. package/dist/directives/tooltip/tooltip.js +0 -18
  206. package/dist/index.css +0 -7
  207. package/dist/index.css.map +0 -1
  208. package/dist/index.js +0 -2
  209. package/dist/tailwind.css +0 -2
  210. package/dist/tailwind.css.map +0 -1
  211. package/dist/tokens/build/js/tokens.dark.js +0 -1410
  212. package/dist/tokens/build/js/tokens.js +0 -1410
  213. package/dist/tokens/common_story_options.js +0 -29
  214. package/dist/tokens/tokens_story.js +0 -76
  215. package/dist/utils/breakpoints.js +0 -20
  216. package/dist/utils/charts/config.js +0 -616
  217. package/dist/utils/charts/constants.js +0 -69
  218. package/dist/utils/charts/mock_data.js +0 -191
  219. package/dist/utils/charts/story_config.js +0 -24
  220. package/dist/utils/charts/theme.js +0 -200
  221. package/dist/utils/charts/utils.js +0 -54
  222. package/dist/utils/constants.js +0 -333
  223. package/dist/utils/data_utils.js +0 -19
  224. package/dist/utils/datetime_utility.js +0 -61
  225. package/dist/utils/i18n.js +0 -65
  226. package/dist/utils/is_slot_empty.js +0 -34
  227. package/dist/utils/number_utils.js +0 -132
  228. package/dist/utils/play_utils.js +0 -11
  229. package/dist/utils/set_utils.js +0 -25
  230. package/dist/utils/stories_constants.js +0 -29
  231. package/dist/utils/stories_utils.js +0 -62
  232. package/dist/utils/story_decorators/container.js +0 -19
  233. package/dist/utils/string_utils.js +0 -69
  234. package/dist/utils/svgs/svg_paths.js +0 -7
  235. package/dist/utils/test_utils.js +0 -33
  236. package/dist/utils/use_fake_date.js +0 -29
  237. package/dist/utils/use_mock_intersection_observer.js +0 -105
  238. package/dist/utils/utils.js +0 -205
  239. package/dist/utils.js +0 -5
  240. package/dist/vendor/bootstrap-vue/src/bv-config.js +0 -8
  241. package/dist/vendor/bootstrap-vue/src/components/button/button-close.js +0 -66
  242. package/dist/vendor/bootstrap-vue/src/components/button/button.js +0 -176
  243. package/dist/vendor/bootstrap-vue/src/components/button/index.js +0 -2
  244. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +0 -41
  245. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +0 -52
  246. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +0 -75
  247. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +0 -52
  248. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +0 -85
  249. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.js +0 -89
  250. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.js +0 -49
  251. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +0 -195
  252. package/dist/vendor/bootstrap-vue/src/components/dropdown/index.js +0 -8
  253. package/dist/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +0 -53
  254. package/dist/vendor/bootstrap-vue/src/components/form/form-text.js +0 -40
  255. package/dist/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +0 -53
  256. package/dist/vendor/bootstrap-vue/src/components/form/form.js +0 -41
  257. package/dist/vendor/bootstrap-vue/src/components/form/index.js +0 -4
  258. package/dist/vendor/bootstrap-vue/src/components/form-group/form-group.js +0 -348
  259. package/dist/vendor/bootstrap-vue/src/components/form-group/index.js +0 -1
  260. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +0 -54
  261. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +0 -41
  262. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select.js +0 -143
  263. package/dist/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js +0 -56
  264. package/dist/vendor/bootstrap-vue/src/components/form-select/index.js +0 -3
  265. package/dist/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +0 -217
  266. package/dist/vendor/bootstrap-vue/src/components/form-textarea/index.js +0 -1
  267. package/dist/vendor/bootstrap-vue/src/components/layout/col.js +0 -156
  268. package/dist/vendor/bootstrap-vue/src/components/layout/form-row.js +0 -31
  269. package/dist/vendor/bootstrap-vue/src/components/layout/index.js +0 -2
  270. package/dist/vendor/bootstrap-vue/src/components/link/index.js +0 -1
  271. package/dist/vendor/bootstrap-vue/src/components/link/link.js +0 -283
  272. package/dist/vendor/bootstrap-vue/src/components/modal/helpers/bv-modal-event.class.js +0 -21
  273. package/dist/vendor/bootstrap-vue/src/components/modal/helpers/modal-manager.js +0 -212
  274. package/dist/vendor/bootstrap-vue/src/components/modal/index.js +0 -1
  275. package/dist/vendor/bootstrap-vue/src/components/modal/modal.js +0 -887
  276. package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover-template.js +0 -55
  277. package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover.js +0 -31
  278. package/dist/vendor/bootstrap-vue/src/components/popover/index.js +0 -1
  279. package/dist/vendor/bootstrap-vue/src/components/popover/popover.js +0 -49
  280. package/dist/vendor/bootstrap-vue/src/components/table/helpers/constants.js +0 -22
  281. package/dist/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.js +0 -64
  282. package/dist/vendor/bootstrap-vue/src/components/table/helpers/filter-event.js +0 -40
  283. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-bottom-row.js +0 -43
  284. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +0 -83
  285. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +0 -50
  286. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-colgroup.js +0 -32
  287. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +0 -82
  288. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +0 -274
  289. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +0 -154
  290. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +0 -44
  291. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +0 -191
  292. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +0 -213
  293. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +0 -275
  294. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +0 -39
  295. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +0 -186
  296. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +0 -338
  297. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +0 -243
  298. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +0 -50
  299. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +0 -218
  300. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-top-row.js +0 -42
  301. package/dist/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.js +0 -86
  302. package/dist/vendor/bootstrap-vue/src/components/table/helpers/sanitize-row.js +0 -32
  303. package/dist/vendor/bootstrap-vue/src/components/table/helpers/stringify-record-values.js +0 -11
  304. package/dist/vendor/bootstrap-vue/src/components/table/helpers/text-selection-active.js +0 -14
  305. package/dist/vendor/bootstrap-vue/src/components/table/index.js +0 -9
  306. package/dist/vendor/bootstrap-vue/src/components/table/table-lite.js +0 -51
  307. package/dist/vendor/bootstrap-vue/src/components/table/table-simple.js +0 -44
  308. package/dist/vendor/bootstrap-vue/src/components/table/table.js +0 -67
  309. package/dist/vendor/bootstrap-vue/src/components/table/tbody.js +0 -109
  310. package/dist/vendor/bootstrap-vue/src/components/table/td.js +0 -183
  311. package/dist/vendor/bootstrap-vue/src/components/table/tfoot.js +0 -93
  312. package/dist/vendor/bootstrap-vue/src/components/table/th.js +0 -26
  313. package/dist/vendor/bootstrap-vue/src/components/table/thead.js +0 -96
  314. package/dist/vendor/bootstrap-vue/src/components/table/tr.js +0 -118
  315. package/dist/vendor/bootstrap-vue/src/components/tabs/index.js +0 -2
  316. package/dist/vendor/bootstrap-vue/src/components/tabs/tab.js +0 -199
  317. package/dist/vendor/bootstrap-vue/src/components/tabs/tabs.js +0 -601
  318. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +0 -251
  319. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +0 -118
  320. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +0 -932
  321. package/dist/vendor/bootstrap-vue/src/components/tooltip/index.js +0 -1
  322. package/dist/vendor/bootstrap-vue/src/components/tooltip/tooltip.js +0 -269
  323. package/dist/vendor/bootstrap-vue/src/components/transition/bv-transition.js +0 -103
  324. package/dist/vendor/bootstrap-vue/src/components/transporter/transporter.js +0 -205
  325. package/dist/vendor/bootstrap-vue/src/constants/components.js +0 -55
  326. package/dist/vendor/bootstrap-vue/src/constants/config.js +0 -11
  327. package/dist/vendor/bootstrap-vue/src/constants/env.js +0 -36
  328. package/dist/vendor/bootstrap-vue/src/constants/events.js +0 -56
  329. package/dist/vendor/bootstrap-vue/src/constants/key-codes.js +0 -11
  330. package/dist/vendor/bootstrap-vue/src/constants/popper.js +0 -10
  331. package/dist/vendor/bootstrap-vue/src/constants/props.js +0 -24
  332. package/dist/vendor/bootstrap-vue/src/constants/regex.js +0 -35
  333. package/dist/vendor/bootstrap-vue/src/constants/safe-types.js +0 -15
  334. package/dist/vendor/bootstrap-vue/src/constants/slots.js +0 -36
  335. package/dist/vendor/bootstrap-vue/src/directives/modal/index.js +0 -1
  336. package/dist/vendor/bootstrap-vue/src/directives/modal/modal.js +0 -112
  337. package/dist/vendor/bootstrap-vue/src/directives/tooltip/index.js +0 -1
  338. package/dist/vendor/bootstrap-vue/src/directives/tooltip/tooltip.js +0 -265
  339. package/dist/vendor/bootstrap-vue/src/directives/visible/index.js +0 -1
  340. package/dist/vendor/bootstrap-vue/src/directives/visible/visible.js +0 -187
  341. package/dist/vendor/bootstrap-vue/src/mixins/attrs.js +0 -5
  342. package/dist/vendor/bootstrap-vue/src/mixins/click-out.js +0 -54
  343. package/dist/vendor/bootstrap-vue/src/mixins/dropdown.js +0 -470
  344. package/dist/vendor/bootstrap-vue/src/mixins/focus-in.js +0 -46
  345. package/dist/vendor/bootstrap-vue/src/mixins/form-control.js +0 -73
  346. package/dist/vendor/bootstrap-vue/src/mixins/form-custom.js +0 -26
  347. package/dist/vendor/bootstrap-vue/src/mixins/form-options.js +0 -91
  348. package/dist/vendor/bootstrap-vue/src/mixins/form-selection.js +0 -62
  349. package/dist/vendor/bootstrap-vue/src/mixins/form-size.js +0 -26
  350. package/dist/vendor/bootstrap-vue/src/mixins/form-state.js +0 -50
  351. package/dist/vendor/bootstrap-vue/src/mixins/form-text.js +0 -293
  352. package/dist/vendor/bootstrap-vue/src/mixins/form-validity.js +0 -50
  353. package/dist/vendor/bootstrap-vue/src/mixins/has-listener.js +0 -29
  354. package/dist/vendor/bootstrap-vue/src/mixins/id.js +0 -57
  355. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-document.js +0 -63
  356. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-root.js +0 -121
  357. package/dist/vendor/bootstrap-vue/src/mixins/listen-on-window.js +0 -63
  358. package/dist/vendor/bootstrap-vue/src/mixins/listeners.js +0 -25
  359. package/dist/vendor/bootstrap-vue/src/mixins/model.js +0 -10
  360. package/dist/vendor/bootstrap-vue/src/mixins/normalize-slot.js +0 -30
  361. package/dist/vendor/bootstrap-vue/src/mixins/scoped-style.js +0 -18
  362. package/dist/vendor/bootstrap-vue/src/mixins/use-parent.js +0 -14
  363. package/dist/vendor/bootstrap-vue/src/utils/array.js +0 -28
  364. package/dist/vendor/bootstrap-vue/src/utils/bv-event.class.js +0 -60
  365. package/dist/vendor/bootstrap-vue/src/utils/cache.js +0 -60
  366. package/dist/vendor/bootstrap-vue/src/utils/clone-deep.js +0 -18
  367. package/dist/vendor/bootstrap-vue/src/utils/config-set.js +0 -86
  368. package/dist/vendor/bootstrap-vue/src/utils/config.js +0 -71
  369. package/dist/vendor/bootstrap-vue/src/utils/create-new-child-component.js +0 -133
  370. package/dist/vendor/bootstrap-vue/src/utils/css-escape.js +0 -70
  371. package/dist/vendor/bootstrap-vue/src/utils/dom.js +0 -298
  372. package/dist/vendor/bootstrap-vue/src/utils/element-to-vue-instance-registry.js +0 -28
  373. package/dist/vendor/bootstrap-vue/src/utils/env.js +0 -16
  374. package/dist/vendor/bootstrap-vue/src/utils/events.js +0 -78
  375. package/dist/vendor/bootstrap-vue/src/utils/get-event-root.js +0 -5
  376. package/dist/vendor/bootstrap-vue/src/utils/get-instance-from-directive.js +0 -3
  377. package/dist/vendor/bootstrap-vue/src/utils/get-scope-id.js +0 -9
  378. package/dist/vendor/bootstrap-vue/src/utils/get.js +0 -63
  379. package/dist/vendor/bootstrap-vue/src/utils/html.js +0 -16
  380. package/dist/vendor/bootstrap-vue/src/utils/identity.js +0 -3
  381. package/dist/vendor/bootstrap-vue/src/utils/inspect.js +0 -35
  382. package/dist/vendor/bootstrap-vue/src/utils/locale.js +0 -19
  383. package/dist/vendor/bootstrap-vue/src/utils/loose-equal.js +0 -59
  384. package/dist/vendor/bootstrap-vue/src/utils/loose-index-of.js +0 -13
  385. package/dist/vendor/bootstrap-vue/src/utils/math.js +0 -9
  386. package/dist/vendor/bootstrap-vue/src/utils/memoize.js +0 -14
  387. package/dist/vendor/bootstrap-vue/src/utils/model.js +0 -33
  388. package/dist/vendor/bootstrap-vue/src/utils/noop.js +0 -3
  389. package/dist/vendor/bootstrap-vue/src/utils/normalize-slot.js +0 -51
  390. package/dist/vendor/bootstrap-vue/src/utils/number.js +0 -23
  391. package/dist/vendor/bootstrap-vue/src/utils/object.js +0 -72
  392. package/dist/vendor/bootstrap-vue/src/utils/observe-dom.js +0 -76
  393. package/dist/vendor/bootstrap-vue/src/utils/on-instance-destroy.js +0 -22
  394. package/dist/vendor/bootstrap-vue/src/utils/plugins.js +0 -124
  395. package/dist/vendor/bootstrap-vue/src/utils/props.js +0 -67
  396. package/dist/vendor/bootstrap-vue/src/utils/router.js +0 -150
  397. package/dist/vendor/bootstrap-vue/src/utils/safe-vue-instance.js +0 -14
  398. package/dist/vendor/bootstrap-vue/src/utils/stable-sort.js +0 -28
  399. package/dist/vendor/bootstrap-vue/src/utils/string.js +0 -47
  400. package/dist/vendor/bootstrap-vue/src/utils/stringify-object-values.js +0 -31
  401. package/dist/vendor/bootstrap-vue/src/utils/warn.js +0 -45
  402. package/dist/vendor/bootstrap-vue/src/vue.js +0 -55
@@ -1,716 +0,0 @@
1
- import { uniqueId, isBoolean } from 'lodash-es';
2
- import { offset, autoPlacement, shift, arrow, size, autoUpdate, computePosition } from '@floating-ui/dom';
3
- import { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements, dropdownAllowedAutoPlacements } from '../../../../utils/constants';
4
- import { POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, KEY_CODE_ESCAPE, ENTER, SPACE, ARROW_DOWN, GL_DROPDOWN_FOCUS_CONTENT } from '../constants';
5
- import { logWarning, isElementFocusable, isElementTabbable, stopEvent } from '../../../../utils/utils';
6
- import { OutsideDirective } from '../../../../directives/outside/outside';
7
- import GlButton from '../../button/button';
8
- import GlIcon from '../../icon/icon';
9
- import DropdownContainer from './dropdown_container';
10
- import { DEFAULT_OFFSET, FIXED_WIDTH_CLASS, ARROW_X_MINIMUM } from './constants';
11
- import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
12
-
13
- const BASE_DROPDOWN_CLASS = 'gl-new-dropdown';
14
- const DROPDOWN_CONTAINER_CLASS = 'gl-new-dropdown-container';
15
- var script = {
16
- name: 'BaseDropdown',
17
- expose: ['open', 'close', 'closeAndFocus', 'containsElement'],
18
- BASE_DROPDOWN_CLASS,
19
- DROPDOWN_CONTAINER_CLASS,
20
- components: {
21
- DropdownContainer,
22
- GlButton,
23
- GlIcon
24
- },
25
- directives: {
26
- Outside: OutsideDirective
27
- },
28
- inject: {
29
- getFormGroupInstance: {
30
- default: () => () => {}
31
- }
32
- },
33
- props: {
34
- toggleText: {
35
- type: String,
36
- required: false,
37
- default: ''
38
- },
39
- textSrOnly: {
40
- type: Boolean,
41
- required: false,
42
- default: false
43
- },
44
- block: {
45
- type: Boolean,
46
- required: false,
47
- default: false
48
- },
49
- category: {
50
- type: String,
51
- required: false,
52
- default: buttonCategoryOptions.primary,
53
- validator: value => Object.keys(buttonCategoryOptions).includes(value)
54
- },
55
- variant: {
56
- type: String,
57
- required: false,
58
- default: dropdownVariantOptions.default,
59
- validator: value => Object.keys(dropdownVariantOptions).includes(value)
60
- },
61
- size: {
62
- type: String,
63
- required: false,
64
- default: 'medium',
65
- validator: value => Object.keys(buttonSizeOptions).includes(value)
66
- },
67
- icon: {
68
- type: String,
69
- required: false,
70
- default: ''
71
- },
72
- disabled: {
73
- type: Boolean,
74
- required: false,
75
- default: false
76
- },
77
- loading: {
78
- type: Boolean,
79
- required: false,
80
- default: false
81
- },
82
- toggleClass: {
83
- type: [String, Array, Object],
84
- required: false,
85
- default: null
86
- },
87
- noCaret: {
88
- type: Boolean,
89
- required: false,
90
- default: false
91
- },
92
- /**
93
- * Controls the validation state appearance of the component. `true` for valid, `false` for invalid, or `null` for no validation state
94
- */
95
- state: {
96
- type: Boolean,
97
- required: false,
98
- default: null
99
- },
100
- placement: {
101
- type: String,
102
- required: false,
103
- default: 'bottom-start',
104
- validator: value => {
105
- if (['left', 'center', 'right'].includes(value)) {
106
- logWarning(`"${value}" placement is deprecated. Use ${dropdownPlacements[value]} instead.`, {
107
- name: 'GlDisclosureDropdown/GlCollapsibleListbox'
108
- });
109
- }
110
- return Object.keys(dropdownPlacements).includes(value);
111
- }
112
- },
113
- // ARIA props
114
- ariaHaspopup: {
115
- type: [String, Boolean],
116
- required: false,
117
- default: false,
118
- validator: value => {
119
- return ['menu', 'listbox', 'tree', 'grid', 'dialog', true, false].includes(value);
120
- }
121
- },
122
- activeItemId: {
123
- type: String,
124
- required: false,
125
- default: undefined
126
- },
127
- hasExternalLabel: {
128
- type: Boolean,
129
- required: false,
130
- default: false
131
- },
132
- hasSearchableListbox: {
133
- type: Boolean,
134
- required: false,
135
- default: false
136
- },
137
- isDisclosure: {
138
- type: Boolean,
139
- required: false,
140
- default: false
141
- },
142
- /**
143
- * Id that will be referenced by `aria-labelledby` attribute of the dropdown content`
144
- */
145
- toggleId: {
146
- type: String,
147
- required: true
148
- },
149
- /**
150
- * Span Id that will be referenced by listbox `aria-labelledby` if there's an external label.
151
- * This prop will only be defined by `GlCollapsibleListbox` when `isInFormGroup` injected is true.
152
- */
153
- listboxId: {
154
- type: String,
155
- required: false,
156
- default: undefined
157
- },
158
- /**
159
- * The `aria-labelledby` attribute value for the toggle `button`
160
- */
161
- ariaLabelledby: {
162
- type: String,
163
- required: false,
164
- default: null
165
- },
166
- /**
167
- * The `aria-label` attribute value for the toggle `button`.
168
- */
169
- ariaLabel: {
170
- type: String,
171
- required: false,
172
- default: null
173
- },
174
- /**
175
- * Custom value to be passed to the offset middleware.
176
- * https://floating-ui.com/docs/offset
177
- */
178
- offset: {
179
- type: [Number, Object],
180
- required: false,
181
- default: () => ({
182
- mainAxis: DEFAULT_OFFSET
183
- })
184
- },
185
- fluidWidth: {
186
- type: Boolean,
187
- required: false,
188
- default: false
189
- },
190
- /**
191
- * Allows the dropdown panel to match the width of the trigger element
192
- */
193
- panelMatchTriggerWidth: {
194
- type: Boolean,
195
- required: false,
196
- default: false
197
- },
198
- /**
199
- * Strategy to be applied by computePosition. If this is set to fixed, the dropdown's position
200
- * needs to be set to fixed in CSS as well.
201
- * https://floating-ui.com/docs/computePosition#strategy
202
- */
203
- positioningStrategy: {
204
- type: String,
205
- required: false,
206
- default: POSITION_ABSOLUTE,
207
- validator: strategy => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy)
208
- }
209
- },
210
- data() {
211
- return {
212
- openedYet: false,
213
- visible: false,
214
- baseDropdownId: uniqueId('base-dropdown-')
215
- };
216
- },
217
- computed: {
218
- ariaActiveDescendant() {
219
- if (!this.isDisclosure && this.visible) return this.activeItemId;
220
- return undefined;
221
- },
222
- hasNoVisibleToggleText() {
223
- var _this$toggleText;
224
- return !((_this$toggleText = this.toggleText) !== null && _this$toggleText !== void 0 && _this$toggleText.length) || this.textSrOnly;
225
- },
226
- isIconOnly() {
227
- return Boolean(this.icon && this.hasNoVisibleToggleText);
228
- },
229
- isEllipsisButton() {
230
- return this.isIconOnly && this.icon === 'ellipsis_h';
231
- },
232
- isCaretOnly() {
233
- return !this.noCaret && !this.icon && this.hasNoVisibleToggleText;
234
- },
235
- computedState() {
236
- // If not a boolean, ensure that value is null
237
- return isBoolean(this.state) ? this.state : null;
238
- },
239
- stateClass() {
240
- if (this.computedState === true) return 'is-valid';
241
- if (this.computedState === false) return 'is-invalid';
242
- return null;
243
- },
244
- isDefaultToggle() {
245
- return !this.$scopedSlots.toggle;
246
- },
247
- isToggleCombobox() {
248
- if (this.hasSearchableListbox || this.isDisclosure) {
249
- return false;
250
- }
251
- return true;
252
- },
253
- isToggleLabelledExternally() {
254
- if (this.hasExternalLabel && this.toggleId) return true;
255
- return false;
256
- },
257
- computedToggleId() {
258
- if (this.isDisclosure) {
259
- return this.isDefaultToggle ? this.toggleId : undefined;
260
- }
261
- if (this.isToggleLabelledExternally) {
262
- return this.isDefaultToggle ? this.toggleId : undefined;
263
- }
264
- if (this.hasSearchableListbox) {
265
- return this.toggleId;
266
- }
267
- return undefined;
268
- },
269
- computedToggleInnerId() {
270
- if (this.isToggleCombobox && !this.isToggleLabelledExternally) {
271
- return this.toggleId;
272
- }
273
- if (this.isToggleCombobox && this.isToggleLabelledExternally) {
274
- return this.listboxId;
275
- }
276
- return undefined;
277
- },
278
- toggleAriaAttributes() {
279
- return {
280
- 'aria-controls': this.baseDropdownId,
281
- 'aria-expanded': String(this.visible),
282
- 'aria-haspopup': this.ariaHaspopup,
283
- 'aria-labelledby': this.toggleLabelledBy,
284
- 'aria-label': this.ariaLabel || undefined,
285
- 'aria-activedescendant': this.ariaActiveDescendant
286
- };
287
- },
288
- toggleButtonClasses() {
289
- return [this.toggleClass, {
290
- 'gl-new-dropdown-toggle': true,
291
- 'button-ellipsis-horizontal': this.isEllipsisButton,
292
- 'gl-new-dropdown-icon-only btn-icon': this.isIconOnly && !this.isEllipsisButton,
293
- 'gl-new-dropdown-toggle-no-caret': this.noCaret,
294
- 'gl-new-dropdown-caret-only btn-icon': this.isCaretOnly
295
- }, this.stateClass];
296
- },
297
- toggleButtonTextClasses() {
298
- return this.block ? 'gl-w-full' : '';
299
- },
300
- // Set the aria-labelledby property with one or more ID strings
301
- toggleLabelledBy() {
302
- var _this$getFormGroupIns;
303
- const formGroupLabelId = (_this$getFormGroupIns = this.getFormGroupInstance()) === null || _this$getFormGroupIns === void 0 ? void 0 : _this$getFormGroupIns.labelId;
304
- if (this.isToggleCombobox) {
305
- // Comboboxes announce label and self value when aria-labelledby is label ID.
306
- // Tested with VoiceOver, NVDA, JAWS, Narrator and preferred browsers.
307
- if (this.ariaLabelledby) {
308
- return `${this.ariaLabelledby}`;
309
- }
310
-
311
- // Combobox inside GlFormGroup
312
- if (formGroupLabelId) {
313
- return `${formGroupLabelId} ${this.toggleId}`;
314
- }
315
-
316
- // Fallback calculated toggleId value
317
- return this.toggleId;
318
- }
319
- if (!this.isToggleCombobox) {
320
- // Disclosures or buttons with listbox require both IDs to announce correctly.
321
- // Tested with VoiceOver, NVDA, JAWS, Narrator and preferred browsers.
322
- if (this.ariaLabelledby) {
323
- return `${this.ariaLabelledby} ${this.toggleId}`;
324
- }
325
-
326
- // Disclosure or button with listbox inside GlFormGroup
327
- if (formGroupLabelId) {
328
- return `${formGroupLabelId} ${this.toggleId}`;
329
- }
330
-
331
- // Disclosures and buttons self-identify. aria-labelledby is not needed.
332
- return undefined;
333
- }
334
- return undefined;
335
- },
336
- toggleRole() {
337
- if (this.isToggleCombobox) {
338
- return 'combobox';
339
- }
340
- return undefined;
341
- },
342
- toggleAccessibilityAttributes() {
343
- return {
344
- ...this.toggleAriaAttributes,
345
- id: this.toggleId,
346
- role: this.toggleRole
347
- };
348
- },
349
- toggleOptions() {
350
- if (this.isDefaultToggle) {
351
- return {
352
- is: GlButton,
353
- icon: this.icon,
354
- block: this.block,
355
- buttonTextClasses: this.toggleButtonTextClasses,
356
- category: this.category,
357
- variant: this.variant,
358
- size: this.size,
359
- disabled: this.disabled,
360
- loading: this.loading,
361
- class: this.toggleButtonClasses,
362
- role: this.toggleRole,
363
- ...this.toggleAriaAttributes,
364
- listeners: {
365
- keydown: event => this.onKeydown(event),
366
- click: event => this.toggle(event)
367
- }
368
- };
369
- }
370
- return {
371
- is: 'div',
372
- class: 'gl-new-dropdown-custom-toggle',
373
- listeners: {
374
- keydown: event => this.onKeydown(event),
375
- click: event => this.toggle(event)
376
- }
377
- };
378
- },
379
- toggleListeners() {
380
- return this.toggleOptions.listeners;
381
- },
382
- toggleAttributes() {
383
- const {
384
- listeners,
385
- is,
386
- ...attributes
387
- } = this.toggleOptions;
388
- return attributes;
389
- },
390
- toggleComponent() {
391
- return this.toggleOptions.is;
392
- },
393
- toggleElement() {
394
- var _this$$refs$toggle;
395
- return this.$refs.toggle.$el || ((_this$$refs$toggle = this.$refs.toggle) === null || _this$$refs$toggle === void 0 ? void 0 : _this$$refs$toggle.firstElementChild);
396
- },
397
- panelClasses() {
398
- return {
399
- '!gl-block': this.visible,
400
- [FIXED_WIDTH_CLASS]: !this.fluidWidth && !this.panelMatchTriggerWidth,
401
- 'gl-new-dropdown-panel-fluid-width': this.fluidWidth && !this.panelMatchTriggerWidth,
402
- 'gl-fixed': this.openedYet && this.isFixed,
403
- 'gl-absolute': this.openedYet && !this.isFixed
404
- };
405
- },
406
- isFixed() {
407
- return this.positioningStrategy === POSITION_FIXED;
408
- },
409
- floatingUIConfig() {
410
- const placement = dropdownPlacements[this.placement];
411
- const [, alignment] = placement.split('-');
412
- return {
413
- placement,
414
- strategy: this.positioningStrategy,
415
- middleware: [offset(this.offset), autoPlacement({
416
- alignment,
417
- allowedPlacements: dropdownAllowedAutoPlacements[this.placement]
418
- }), shift(), arrow({
419
- element: this.$refs.dropdownArrow
420
- }), size({
421
- apply: _ref => {
422
- var _this$nonScrollableCo;
423
- let {
424
- availableWidth,
425
- availableHeight,
426
- elements
427
- } = _ref;
428
- const contentsEl = elements.floating.querySelector(`.${GL_DROPDOWN_CONTENTS_CLASS}`);
429
- if (!contentsEl) return;
430
- const contentsAvailableHeight = availableHeight - ((_this$nonScrollableCo = this.nonScrollableContentHeight) !== null && _this$nonScrollableCo !== void 0 ? _this$nonScrollableCo : 0) - DEFAULT_OFFSET;
431
- const maxWidth = this.fluidWidth ? {
432
- maxWidth: `${Math.max(0, availableWidth)}px`
433
- } : {};
434
- const triggerWidth = this.panelMatchTriggerWidth ? {
435
- minWidth: `${this.toggleElement.getBoundingClientRect().width}px`
436
- } : {};
437
- Object.assign(contentsEl.style, {
438
- maxHeight: `${Math.max(contentsAvailableHeight, 0)}px`
439
- }, maxWidth, triggerWidth);
440
- }
441
- })]
442
- };
443
- }
444
- },
445
- mounted() {
446
- this.checkToggleFocusable();
447
- },
448
- beforeDestroy() {
449
- this.stopFloating();
450
- },
451
- methods: {
452
- checkToggleFocusable() {
453
- if (!isElementFocusable(this.toggleElement) && !isElementTabbable(this.toggleElement)) {
454
- logWarning(`Toggle is missing a 'tabindex' and cannot be focused.
455
- Use 'a' or 'button' element instead or make sure to add 'role="button"' along with 'tabindex' otherwise.`, {
456
- name: 'GlDisclosureDropdown/GlCollapsibleListbox',
457
- element: this.$el
458
- });
459
- }
460
- },
461
- getArrowOffsets(actualPlacement) {
462
- // Try to extract the base direction (top, bottom, left, right) from the placement
463
- const direction = actualPlacement === null || actualPlacement === void 0 ? void 0 : actualPlacement.split('-')[0];
464
- const offsetConfigs = {
465
- top: {
466
- staticSide: 'bottom',
467
- rotation: '225deg'
468
- },
469
- bottom: {
470
- staticSide: 'top',
471
- rotation: '45deg'
472
- },
473
- left: {
474
- staticSide: 'right',
475
- rotation: '135deg'
476
- },
477
- right: {
478
- staticSide: 'left',
479
- rotation: '315deg'
480
- }
481
- };
482
- return offsetConfigs[direction] || offsetConfigs.bottom;
483
- },
484
- async startFloating() {
485
- this.calculateNonScrollableAreaHeight();
486
- this.observer = new MutationObserver(this.calculateNonScrollableAreaHeight);
487
- this.observer.observe(this.$refs.content, {
488
- childList: true,
489
- subtree: true
490
- });
491
- this.stopAutoUpdate = autoUpdate(this.toggleElement, this.$refs.content, async () => {
492
- const result = await computePosition(this.toggleElement, this.$refs.content, this.floatingUIConfig);
493
-
494
- /**
495
- * Due to the asynchronous nature of computePosition, it's technically possible for the
496
- * component to have been destroyed by the time the promise resolves. In such case, we exit
497
- * early to prevent a TypeError.
498
- */
499
- if (!this.$refs.content) return;
500
- const {
501
- x,
502
- y,
503
- middlewareData,
504
- placement
505
- } = result;
506
-
507
- // Get offsets based on actual placement, not requested placement
508
- const {
509
- rotation,
510
- staticSide
511
- } = this.getArrowOffsets(placement);
512
-
513
- // Assign dropdown window position
514
- Object.assign(this.$refs.content.style, {
515
- left: `${x}px`,
516
- top: `${y}px`
517
- });
518
-
519
- // Assign arrow position
520
- if (middlewareData && middlewareData.arrow) {
521
- const {
522
- x: arrowX,
523
- y: arrowY
524
- } = middlewareData.arrow;
525
-
526
- /**
527
- * Clamp arrow X position to a minimum of 24px from the edge of the dropdown.
528
- * This prevents wide toggles from pushing the arrow to the very edge of the dropdown.
529
- */
530
- const toggleRect = this.toggleElement.getBoundingClientRect();
531
- const contentRect = this.$refs.content.getBoundingClientRect();
532
- const clampedArrowX = toggleRect.width > contentRect.width ? Math.min(Math.max(arrowX, ARROW_X_MINIMUM), contentRect.width - ARROW_X_MINIMUM) : arrowX;
533
- Object.assign(this.$refs.dropdownArrow.style, {
534
- left: arrowX != null ? `${clampedArrowX}px` : '',
535
- top: arrowY != null ? `${arrowY}px` : '',
536
- right: '',
537
- bottom: '',
538
- [staticSide]: '-4px',
539
- transform: `rotate(${rotation})`
540
- });
541
- }
542
- });
543
- },
544
- stopFloating() {
545
- var _this$observer, _this$stopAutoUpdate;
546
- (_this$observer = this.observer) === null || _this$observer === void 0 ? void 0 : _this$observer.disconnect();
547
- (_this$stopAutoUpdate = this.stopAutoUpdate) === null || _this$stopAutoUpdate === void 0 ? void 0 : _this$stopAutoUpdate.call(this);
548
- },
549
- async toggle(event) {
550
- if (event && this.visible) {
551
- let prevented = false;
552
- this.$emit(GL_DROPDOWN_BEFORE_CLOSE, {
553
- originalEvent: event,
554
- preventDefault() {
555
- prevented = true;
556
- }
557
- });
558
- if (prevented) return false;
559
- }
560
- this.visible = !this.visible;
561
- if (this.visible) {
562
- // The dropdown needs to be actually visible before we compute its position with Floating UI.
563
- await this.$nextTick();
564
- this.openedYet = true;
565
- /**
566
- * We wait until the dropdown's position has been computed before emitting the `shown` event.
567
- * This ensures that, if the parent component attempts to focus an inner element, the dropdown
568
- * is already properly placed in the page. Otherwise, the page would scroll back to the top.
569
- */
570
- this.startFloating();
571
- this.$emit(GL_DROPDOWN_SHOWN);
572
- } else {
573
- this.stopFloating();
574
- this.$emit(GL_DROPDOWN_HIDDEN, event);
575
- }
576
-
577
- // this is to check whether `toggle` was prevented or not
578
- return true;
579
- },
580
- open() {
581
- if (this.visible) {
582
- return;
583
- }
584
- this.toggle();
585
- },
586
- close(event) {
587
- if (!this.visible) {
588
- return;
589
- }
590
- this.toggle(event);
591
- },
592
- clickedToggle(event) {
593
- var _this$$refs$toggle$co, _this$$refs$toggle2, _this$$refs$toggle$$e, _this$$refs$toggle$$e2;
594
- return ((_this$$refs$toggle$co = (_this$$refs$toggle2 = this.$refs.toggle).contains) === null || _this$$refs$toggle$co === void 0 ? void 0 : _this$$refs$toggle$co.call(_this$$refs$toggle2, event.target)) || ((_this$$refs$toggle$$e = this.$refs.toggle.$el) === null || _this$$refs$toggle$$e === void 0 ? void 0 : (_this$$refs$toggle$$e2 = _this$$refs$toggle$$e.contains) === null || _this$$refs$toggle$$e2 === void 0 ? void 0 : _this$$refs$toggle$$e2.call(_this$$refs$toggle$$e, event.target));
595
- },
596
- handleClickOutside(event) {
597
- // Ignore "click outside" events if the toggle was clicked
598
- if (this.clickedToggle(event)) {
599
- return;
600
- }
601
- this.close(event);
602
- },
603
- /**
604
- * Closes the dropdown and returns the focus to the toggle unless it has has moved outside
605
- * of the dropdown, meaning that the consumer needed to put some other element in focus.
606
- *
607
- * @param {KeyboardEvent?} event The keyboard event that caused the dropdown to close.
608
- */
609
- async closeAndFocus(event) {
610
- if (!this.visible) {
611
- return;
612
- }
613
- const hadFocusWithin = this.$el.contains(document.activeElement);
614
- const hasToggled = await this.toggle(event);
615
- if (!hadFocusWithin) {
616
- return;
617
- }
618
- if (hasToggled) {
619
- this.focusToggle();
620
- }
621
- },
622
- focusToggle() {
623
- this.toggleElement.focus();
624
- },
625
- onKeydown(event) {
626
- const {
627
- keyCode,
628
- code,
629
- target: {
630
- tagName
631
- }
632
- } = event;
633
-
634
- // Use keyCode because @vue/test-utils doesn't correctly set the
635
- // `code` and `key` KeyboardEvent properties. This is only needed in this case because:
636
- // - We are not using the @keydown.esc template syntax, which under Vue 2 checks against `keyCode` anyway.
637
- // - The `.trigger('keydown.esc')` shorthand @vue/test-utils provides is useful.
638
- // See https://github.com/vuejs/vue-test-utils/issues/2096
639
- if (keyCode === KEY_CODE_ESCAPE && this.visible) {
640
- stopEvent(event);
641
- this.close();
642
- return;
643
- }
644
- let toggleOnEnter = true;
645
- let toggleOnSpace = true;
646
- if (tagName === 'BUTTON') {
647
- toggleOnEnter = false;
648
- toggleOnSpace = false;
649
- } else if (tagName === 'A') {
650
- toggleOnEnter = false;
651
- }
652
- if (code === ENTER && toggleOnEnter || code === SPACE && toggleOnSpace) {
653
- this.toggle(event);
654
- }
655
- if (code === ARROW_DOWN) {
656
- this.$emit(GL_DROPDOWN_FOCUS_CONTENT, event);
657
- }
658
- },
659
- calculateNonScrollableAreaHeight() {
660
- var _this$$refs$content;
661
- const scrollableArea = (_this$$refs$content = this.$refs.content) === null || _this$$refs$content === void 0 ? void 0 : _this$$refs$content.querySelector(`.${GL_DROPDOWN_CONTENTS_CLASS}`);
662
- if (!scrollableArea) return;
663
- const floatingElementBoundingBox = this.$refs.content.getBoundingClientRect();
664
- const scrollableAreaBoundingBox = scrollableArea.getBoundingClientRect();
665
- this.nonScrollableContentHeight = floatingElementBoundingBox.height - scrollableAreaBoundingBox.height;
666
- },
667
- /**
668
- * Public method which returns `true` if the given element is in the DOM tree of this component,
669
- * and `false` otherwise.
670
- *
671
- * Useful for checking whether an event was dispatched against something in this dropdown,
672
- * e.g., pressing <kbd>Esc</kbd>.
673
- */
674
- containsElement(element) {
675
- return element.closest(`.${BASE_DROPDOWN_CLASS}`) === this.$el || element.closest(`.${DROPDOWN_CONTAINER_CLASS}`) === this.$refs.dropdownContainer;
676
- }
677
- }
678
- };
679
-
680
- /* script */
681
- const __vue_script__ = script;
682
-
683
- /* template */
684
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[_vm.$options.BASE_DROPDOWN_CLASS, { '!gl-block': _vm.block }]},[_c(_vm.toggleComponent,_vm._g(_vm._b({ref:"toggle",tag:"component",attrs:{"id":_vm.computedToggleId,"data-testid":"base-dropdown-toggle"}},'component',_vm.toggleAttributes,false),_vm.toggleListeners),[_vm._t("toggle",function(){return [_c('span',{staticClass:"gl-new-dropdown-button-text",class:{ 'gl-sr-only': _vm.textSrOnly },attrs:{"id":_vm.computedToggleInnerId,"data-testid":"base-dropdown-span"}},[_vm._v("\n "+_vm._s(_vm.toggleText)+"\n ")]),_vm._v(" "),(!_vm.noCaret)?_c('gl-icon',{staticClass:"gl-button-icon gl-new-dropdown-chevron",attrs:{"name":"chevron-down"}}):_vm._e()]},{"accessibilityAttributes":_vm.toggleAccessibilityAttributes})],2),_vm._v(" "),_c('dropdown-container',{attrs:{"positioning-strategy":_vm.positioningStrategy}},[_c('div',{directives:[{name:"outside",rawName:"v-outside.click.focusin",value:(_vm.handleClickOutside),expression:"handleClickOutside",modifiers:{"click":true,"focusin":true}}],ref:"dropdownContainer",class:_vm.$options.DROPDOWN_CONTAINER_CLASS},[_c('div',{ref:"content",staticClass:"gl-new-dropdown-panel",class:_vm.panelClasses,attrs:{"id":_vm.baseDropdownId,"data-testid":"base-dropdown-menu"},on:{"keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"esc",27,$event.key,["Esc","Escape"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.closeAndFocus.apply(null, arguments)}}},[_c('div',{ref:"dropdownArrow",staticClass:"gl-new-dropdown-arrow"}),_vm._v(" "),_c('div',{staticClass:"gl-new-dropdown-inner"},[_vm._t("default",null,{"visible":_vm.visible})],2)])])])],1)};
685
- var __vue_staticRenderFns__ = [];
686
-
687
- /* style */
688
- const __vue_inject_styles__ = undefined;
689
- /* scoped */
690
- const __vue_scope_id__ = undefined;
691
- /* module identifier */
692
- const __vue_module_identifier__ = undefined;
693
- /* functional template */
694
- const __vue_is_functional_template__ = false;
695
- /* style inject */
696
-
697
- /* style inject SSR */
698
-
699
- /* style inject shadow dom */
700
-
701
-
702
-
703
- const __vue_component__ = /*#__PURE__*/__vue_normalize__(
704
- { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
705
- __vue_inject_styles__,
706
- __vue_script__,
707
- __vue_scope_id__,
708
- __vue_is_functional_template__,
709
- __vue_module_identifier__,
710
- false,
711
- undefined,
712
- undefined,
713
- undefined
714
- );
715
-
716
- export { __vue_component__ as default };