@gitlab/ui 132.1.0 → 132.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/dist/components/base/accordion/accordion_item.js +1 -3
  2. package/dist/components/base/avatar/avatar.js +76 -5
  3. package/dist/components/base/badge/badge.js +5 -7
  4. package/dist/components/base/button/button.js +1 -3
  5. package/dist/components/base/collapse/collapse.js +2 -6
  6. package/dist/components/base/datepicker/datepicker.js +4 -5
  7. package/dist/components/base/daterange_picker/daterange_picker.js +2 -4
  8. package/dist/components/base/dropdown/dropdown_item.js +3 -4
  9. package/dist/components/base/filtered_search/filtered_search.js +55 -7
  10. package/dist/components/base/filtered_search/filtered_search_token.js +6 -14
  11. package/dist/components/base/filtered_search/filtered_search_token_segment.js +39 -19
  12. package/dist/components/base/filtered_search/filtered_search_utils.js +57 -7
  13. package/dist/components/base/form/form_checkbox/form_checkbox.js +13 -26
  14. package/dist/components/base/form/form_checkbox/form_checkbox_group.js +1 -3
  15. package/dist/components/base/form/form_fields/form_fields_loop.js +57 -6
  16. package/dist/components/base/form/form_group/form_group.js +1 -3
  17. package/dist/components/base/form/form_input/form_input.js +95 -41
  18. package/dist/components/base/form/form_input_group/form_input_group.js +2 -4
  19. package/dist/components/base/form/form_radio/form_radio.js +5 -9
  20. package/dist/components/base/form/form_radio_group/form_radio_group.js +1 -3
  21. package/dist/components/base/form/form_select/form_select.js +76 -5
  22. package/dist/components/base/infinite_scroll/infinite_scroll.js +7 -14
  23. package/dist/components/base/link/link.js +26 -7
  24. package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +93 -32
  25. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js +2 -6
  26. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js +2 -6
  27. package/dist/components/base/new_dropdowns/listbox/listbox.js +5 -13
  28. package/dist/components/base/new_dropdowns/listbox/listbox_item.js +1 -3
  29. package/dist/components/base/new_dropdowns/listbox/mock_data.js +2 -6
  30. package/dist/components/base/new_dropdowns/listbox/utils.js +6 -11
  31. package/dist/components/base/path/path.js +1 -5
  32. package/dist/components/base/search_box_by_type/search_box_by_type.js +2 -6
  33. package/dist/components/base/skeleton_loader/skeleton_loader.js +3 -5
  34. package/dist/components/base/table/table.js +32 -21
  35. package/dist/components/base/table_lite/table_lite.js +1 -3
  36. package/dist/components/base/tabs/tab/tab.js +1 -3
  37. package/dist/components/base/tabs/tabs/scrollable_tabs.js +1 -5
  38. package/dist/components/base/token_selector/token_selector.js +2 -6
  39. package/dist/components/charts/area/area.js +6 -7
  40. package/dist/components/charts/column/column.js +11 -15
  41. package/dist/components/charts/discrete_scatter/discrete_scatter.js +57 -5
  42. package/dist/components/charts/gauge/gauge.js +13 -21
  43. package/dist/components/charts/heatmap/heatmap.js +66 -18
  44. package/dist/components/charts/legend/legend.js +59 -13
  45. package/dist/components/charts/line/line.js +6 -7
  46. package/dist/components/charts/shared/tooltip/tooltip.js +11 -18
  47. package/dist/components/charts/sparkline/sparkline.js +72 -19
  48. package/dist/components/charts/stacked_column/stacked_column.js +18 -31
  49. package/dist/components/dashboards/dashboard_layout/grid_layout/grid_layout.js +37 -21
  50. package/dist/components/utilities/friendly_wrap/friendly_wrap.js +3 -7
  51. package/dist/components/utilities/intersperse/intersperse.js +6 -11
  52. package/dist/components/utilities/sprintf/sprintf.js +58 -7
  53. package/dist/components/utilities/truncate/truncate.js +2 -4
  54. package/dist/components/utilities/truncate_text/truncate_text.js +1 -3
  55. package/dist/config.js +3 -4
  56. package/dist/directives/hover_load/hover_load.js +1 -3
  57. package/dist/directives/outside/outside.js +9 -16
  58. package/dist/directives/resize_observer/resize_observer.js +6 -8
  59. package/dist/directives/safe_html/safe_html.js +1 -3
  60. package/dist/directives/safe_link/safe_link.js +11 -14
  61. package/dist/index.css +2 -2
  62. package/dist/index.css.map +1 -1
  63. package/dist/tokens/build/js/tokens.dark.js +95 -95
  64. package/dist/tokens/build/js/tokens.js +74 -74
  65. package/dist/tokens/common_story_options.js +7 -8
  66. package/dist/utils/charts/config.js +122 -90
  67. package/dist/utils/constants.js +26 -1
  68. package/dist/utils/data_utils.js +28 -1
  69. package/dist/utils/form_options_utils.js +4 -6
  70. package/dist/utils/is_slot_empty.js +3 -5
  71. package/dist/utils/stories_utils.js +8 -8
  72. package/dist/utils/use_mock_intersection_observer.js +63 -12
  73. package/dist/utils/utils.js +76 -19
  74. package/dist/vendor/bootstrap-vue/src/components/button/button-close.js +8 -11
  75. package/dist/vendor/bootstrap-vue/src/components/button/button.js +12 -17
  76. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +3 -6
  77. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +6 -9
  78. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +14 -19
  79. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +8 -13
  80. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +9 -12
  81. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.js +8 -11
  82. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.js +9 -14
  83. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +34 -43
  84. package/dist/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +5 -9
  85. package/dist/vendor/bootstrap-vue/src/components/form/form-text.js +7 -10
  86. package/dist/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +5 -9
  87. package/dist/vendor/bootstrap-vue/src/components/form/form.js +7 -10
  88. package/dist/vendor/bootstrap-vue/src/components/form-group/form-group.js +25 -33
  89. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +6 -11
  90. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +6 -12
  91. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select.js +28 -29
  92. package/dist/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +7 -10
  93. package/dist/vendor/bootstrap-vue/src/components/layout/col.js +7 -11
  94. package/dist/vendor/bootstrap-vue/src/components/layout/form-row.js +3 -5
  95. package/dist/vendor/bootstrap-vue/src/components/link/link.js +19 -31
  96. package/dist/vendor/bootstrap-vue/src/components/modal/helpers/modal-manager.js +3 -4
  97. package/dist/vendor/bootstrap-vue/src/components/modal/modal.js +59 -68
  98. package/dist/vendor/bootstrap-vue/src/components/popover/helpers/bv-popover-template.js +2 -4
  99. package/dist/vendor/bootstrap-vue/src/components/popover/popover.js +4 -5
  100. package/dist/vendor/bootstrap-vue/src/components/table/helpers/default-sort-compare.js +11 -7
  101. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-bottom-row.js +4 -6
  102. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +3 -6
  103. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +4 -7
  104. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-colgroup.js +1 -3
  105. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +16 -20
  106. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +14 -25
  107. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +23 -35
  108. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +6 -8
  109. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +8 -10
  110. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +8 -15
  111. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +33 -41
  112. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +3 -8
  113. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +38 -50
  114. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +19 -31
  115. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +13 -23
  116. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +5 -6
  117. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +17 -21
  118. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-top-row.js +4 -6
  119. package/dist/vendor/bootstrap-vue/src/components/table/helpers/sanitize-row.js +1 -3
  120. package/dist/vendor/bootstrap-vue/src/components/table/tbody.js +3 -6
  121. package/dist/vendor/bootstrap-vue/src/components/table/td.js +9 -14
  122. package/dist/vendor/bootstrap-vue/src/components/table/tfoot.js +1 -2
  123. package/dist/vendor/bootstrap-vue/src/components/table/thead.js +1 -2
  124. package/dist/vendor/bootstrap-vue/src/components/table/tr.js +2 -5
  125. package/dist/vendor/bootstrap-vue/src/components/tabs/tab.js +19 -36
  126. package/dist/vendor/bootstrap-vue/src/components/tabs/tabs.js +66 -81
  127. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +2 -6
  128. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +5 -11
  129. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip.js +8 -14
  130. package/dist/vendor/bootstrap-vue/src/components/tooltip/tooltip.js +19 -22
  131. package/dist/vendor/bootstrap-vue/src/components/transition/bv-transition.js +7 -10
  132. package/dist/vendor/bootstrap-vue/src/components/transporter/transporter.js +7 -14
  133. package/dist/vendor/bootstrap-vue/src/directives/modal/modal.js +4 -5
  134. package/dist/vendor/bootstrap-vue/src/directives/visible/visible.js +5 -9
  135. package/dist/vendor/bootstrap-vue/src/mixins/dropdown.js +17 -29
  136. package/dist/vendor/bootstrap-vue/src/mixins/form-control.js +6 -7
  137. package/dist/vendor/bootstrap-vue/src/mixins/form-custom.js +1 -2
  138. package/dist/vendor/bootstrap-vue/src/mixins/form-options.js +5 -6
  139. package/dist/vendor/bootstrap-vue/src/mixins/form-size.js +1 -2
  140. package/dist/vendor/bootstrap-vue/src/mixins/form-state.js +1 -2
  141. package/dist/vendor/bootstrap-vue/src/mixins/form-text.js +29 -43
  142. package/dist/vendor/bootstrap-vue/src/mixins/id.js +1 -2
  143. package/dist/vendor/bootstrap-vue/src/utils/create-new-child-component.js +62 -15
  144. package/dist/vendor/bootstrap-vue/src/utils/dom.js +3 -9
  145. package/dist/vendor/bootstrap-vue/src/utils/events.js +7 -5
  146. package/dist/vendor/bootstrap-vue/src/utils/plugins.js +4 -5
  147. package/dist/vendor/bootstrap-vue/src/utils/router.js +9 -13
  148. package/package.json +9 -7
  149. package/src/scss/gitlab_ui.scss +3 -0
  150. package/src/scss/storybook.scss +3 -0
  151. package/src/scss/themes.scss +84 -0
  152. package/src/tokens/build/css/tokens.css +142 -142
  153. package/src/tokens/build/css/tokens.dark.css +138 -138
  154. package/src/tokens/build/docs/tokens-tailwind-docs.dark.json +580 -580
  155. package/src/tokens/build/docs/tokens-tailwind-docs.json +495 -495
  156. package/src/tokens/build/figma/constants.dark.json +799 -799
  157. package/src/tokens/build/figma/constants.json +799 -799
  158. package/src/tokens/build/js/tokens.dark.js +95 -95
  159. package/src/tokens/build/js/tokens.js +74 -74
  160. package/src/tokens/build/json/tokens.dark.json +1668 -1668
  161. package/src/tokens/build/json/tokens.json +1647 -1647
  162. package/src/tokens/build/scss/_tokens.dark.scss +138 -138
  163. package/src/tokens/build/scss/_tokens.scss +142 -142
  164. package/src/tokens/build/scss/_tokens_custom_properties.scss +73 -73
  165. package/src/tokens/constant/color.blue.tokens.json +182 -0
  166. package/src/tokens/constant/color.brand.tokens.json +252 -0
  167. package/src/tokens/constant/color.data.tokens.json +894 -0
  168. package/src/tokens/constant/color.green.tokens.json +182 -0
  169. package/src/tokens/constant/color.neutral.tokens.json +230 -0
  170. package/src/tokens/constant/color.orange.tokens.json +182 -0
  171. package/src/tokens/constant/color.purple.tokens.json +182 -0
  172. package/src/tokens/constant/color.red.tokens.json +182 -0
  173. package/src/tokens/constant/color.theme.tokens.json +1168 -0
  174. package/src/tokens/deprecated/deprecated.color.tokens.json +134 -1340
  175. package/src/utils/constants.js +9 -0
  176. package/src/vendor/bootstrap-vue/src/components/button/button-close.js +4 -5
  177. package/src/vendor/bootstrap-vue/src/components/button/button.js +7 -8
  178. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +1 -2
  179. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +2 -8
  180. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +6 -7
  181. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +3 -4
  182. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +6 -12
  183. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.js +2 -3
  184. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.js +3 -4
  185. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +19 -26
  186. package/src/vendor/bootstrap-vue/src/components/form/form-text.js +4 -6
  187. package/src/vendor/bootstrap-vue/src/components/form/form.js +4 -6
  188. package/src/vendor/bootstrap-vue/src/components/form-group/form-group.js +14 -20
  189. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +1 -2
  190. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +1 -4
  191. package/src/vendor/bootstrap-vue/src/components/form-select/form-select.js +13 -14
  192. package/src/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +5 -6
  193. package/src/vendor/bootstrap-vue/src/components/modal/modal.js +53 -62
  194. package/src/vendor/bootstrap-vue/src/components/popover/popover.js +4 -10
  195. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +1 -2
  196. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +2 -3
  197. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +5 -6
  198. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +5 -13
  199. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +12 -21
  200. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +2 -3
  201. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +5 -11
  202. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +4 -5
  203. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +14 -21
  204. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +1 -2
  205. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +14 -20
  206. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +3 -9
  207. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +1 -2
  208. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +5 -11
  209. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +4 -5
  210. package/src/vendor/bootstrap-vue/src/components/table/tbody.js +2 -3
  211. package/src/vendor/bootstrap-vue/src/components/table/td.js +5 -6
  212. package/src/vendor/bootstrap-vue/src/components/table/tfoot.js +1 -2
  213. package/src/vendor/bootstrap-vue/src/components/table/thead.js +1 -2
  214. package/src/vendor/bootstrap-vue/src/components/table/tr.js +1 -2
  215. package/src/vendor/bootstrap-vue/src/components/tabs/tab.js +10 -16
  216. package/src/vendor/bootstrap-vue/src/components/tabs/tabs.js +33 -39
  217. package/src/vendor/bootstrap-vue/src/components/tooltip/tooltip.js +17 -25
  218. package/src/vendor/bootstrap-vue/src/components/transition/bv-transition.js +4 -5
  219. package/src/vendor/bootstrap-vue/src/components/transporter/transporter.js +4 -10
  220. package/src/vendor/bootstrap-vue/src/mixins/dropdown.js +9 -15
  221. package/src/vendor/bootstrap-vue/src/mixins/form-control.js +6 -7
  222. package/src/vendor/bootstrap-vue/src/mixins/form-custom.js +1 -2
  223. package/src/vendor/bootstrap-vue/src/mixins/form-options.js +5 -6
  224. package/src/vendor/bootstrap-vue/src/mixins/form-size.js +1 -2
  225. package/src/vendor/bootstrap-vue/src/mixins/form-state.js +1 -2
  226. package/src/vendor/bootstrap-vue/src/mixins/form-text.js +21 -33
  227. package/src/vendor/bootstrap-vue/src/mixins/id.js +1 -2
  228. package/dist/vendor/bootstrap-vue/src/mixins/model.js +0 -10
  229. package/dist/vendor/bootstrap-vue/src/utils/model.js +0 -33
  230. package/src/tokens/constant/color.tokens.json +0 -3422
  231. package/src/vendor/bootstrap-vue/src/mixins/model.js +0 -5
  232. package/src/vendor/bootstrap-vue/src/utils/model.js +0 -29
@@ -1,6 +1,5 @@
1
1
  import { extend } from '../../vue';
2
2
  import { NAME_DROPDOWN } from '../../constants/components';
3
- import { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING, PROP_TYPE_ARRAY, PROP_TYPE_OBJECT } from '../../constants/props';
4
3
  import { SLOT_NAME_BUTTON_CONTENT, SLOT_NAME_DEFAULT } from '../../constants/slots';
5
4
  import { htmlOrText } from '../../utils/html';
6
5
  import { toString } from '../../utils/string';
@@ -16,48 +15,48 @@ const props = sortKeys({
16
15
  ...props$1,
17
16
  ...props$2,
18
17
  block: {
19
- type: PROP_TYPE_BOOLEAN,
18
+ type: Boolean,
20
19
  required: false,
21
20
  default: false
22
21
  },
23
22
  html: {
24
- type: PROP_TYPE_STRING,
23
+ type: String,
25
24
  required: false,
26
25
  default: undefined
27
26
  },
28
27
  // If `true`, only render menu contents when open
29
28
  lazy: {
30
- type: PROP_TYPE_BOOLEAN,
29
+ type: Boolean,
31
30
  required: false,
32
31
  default: false
33
32
  },
34
33
  menuClass: {
35
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
34
+ type: [Array, Object, String],
36
35
  required: false,
37
36
  default: undefined
38
37
  },
39
38
  noCaret: {
40
- type: PROP_TYPE_BOOLEAN,
39
+ type: Boolean,
41
40
  required: false,
42
41
  default: false
43
42
  },
44
43
  role: {
45
- type: PROP_TYPE_STRING,
44
+ type: String,
46
45
  required: false,
47
46
  default: 'menu'
48
47
  },
49
48
  size: {
50
- type: PROP_TYPE_STRING,
49
+ type: String,
51
50
  required: false,
52
51
  default: undefined
53
52
  },
54
53
  split: {
55
- type: PROP_TYPE_BOOLEAN,
54
+ type: Boolean,
56
55
  required: false,
57
56
  default: false
58
57
  },
59
58
  splitButtonType: {
60
- type: PROP_TYPE_STRING,
59
+ type: String,
61
60
  required: false,
62
61
  default: 'button',
63
62
  validator: value => {
@@ -65,53 +64,53 @@ const props = sortKeys({
65
64
  }
66
65
  },
67
66
  splitClass: {
68
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
67
+ type: [Array, Object, String],
69
68
  required: false,
70
69
  default: undefined
71
70
  },
72
71
  splitHref: {
73
- type: PROP_TYPE_STRING,
72
+ type: String,
74
73
  required: false,
75
74
  default: undefined
76
75
  },
77
76
  splitTo: {
78
- type: [PROP_TYPE_OBJECT, PROP_TYPE_STRING],
77
+ type: [Object, String],
79
78
  required: false,
80
79
  default: undefined
81
80
  },
82
81
  splitVariant: {
83
- type: PROP_TYPE_STRING,
82
+ type: String,
84
83
  required: false,
85
84
  default: undefined
86
85
  },
87
86
  text: {
88
- type: PROP_TYPE_STRING,
87
+ type: String,
89
88
  required: false,
90
89
  default: undefined
91
90
  },
92
91
  toggleAttrs: {
93
- type: PROP_TYPE_OBJECT,
92
+ type: Object,
94
93
  required: false,
95
94
  default: () => ({})
96
95
  },
97
96
  toggleClass: {
98
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
97
+ type: [Array, Object, String],
99
98
  required: false,
100
99
  default: undefined
101
100
  },
102
101
  toggleTag: {
103
- type: PROP_TYPE_STRING,
102
+ type: String,
104
103
  required: false,
105
104
  default: 'button'
106
105
  },
107
106
  // TODO: This really should be `toggleLabel`
108
107
  toggleText: {
109
- type: PROP_TYPE_STRING,
108
+ type: String,
110
109
  required: false,
111
110
  default: 'Toggle dropdown'
112
111
  },
113
112
  variant: {
114
- type: PROP_TYPE_STRING,
113
+ type: String,
115
114
  required: false,
116
115
  default: 'secondary'
117
116
  }
@@ -126,10 +125,8 @@ const BDropdown = /*#__PURE__*/extend({
126
125
  props,
127
126
  computed: {
128
127
  dropdownClasses() {
129
- const {
130
- block,
131
- split
132
- } = this;
128
+ const block = this.block,
129
+ split = this.split;
133
130
  return [this.directionClass, this.boundaryClass, {
134
131
  show: this.visible,
135
132
  // The 'btn-group' class is required in `split` mode for button alignment
@@ -148,9 +145,7 @@ const BDropdown = /*#__PURE__*/extend({
148
145
  }];
149
146
  },
150
147
  toggleClasses() {
151
- const {
152
- split
153
- } = this;
148
+ const split = this.split;
154
149
  return [this.toggleClass, {
155
150
  'dropdown-toggle-split': split,
156
151
  'dropdown-toggle-no-caret': this.noCaret && !split
@@ -158,17 +153,15 @@ const BDropdown = /*#__PURE__*/extend({
158
153
  }
159
154
  },
160
155
  render(h) {
161
- const {
162
- visible,
163
- variant,
164
- size,
165
- block,
166
- disabled,
167
- split,
168
- role,
169
- hide,
170
- toggle
171
- } = this;
156
+ const visible = this.visible,
157
+ variant = this.variant,
158
+ size = this.size,
159
+ block = this.block,
160
+ disabled = this.disabled,
161
+ split = this.split,
162
+ role = this.role,
163
+ hide = this.hide,
164
+ toggle = this.toggle;
172
165
  const commonProps = {
173
166
  variant,
174
167
  size,
@@ -179,11 +172,9 @@ const BDropdown = /*#__PURE__*/extend({
179
172
  let buttonContentDomProps = this.hasNormalizedSlot(SLOT_NAME_BUTTON_CONTENT) ? {} : htmlOrText(this.html, this.text);
180
173
  let $split = h();
181
174
  if (split) {
182
- const {
183
- splitTo,
184
- splitHref,
185
- splitButtonType
186
- } = this;
175
+ const splitTo = this.splitTo,
176
+ splitHref = this.splitHref,
177
+ splitButtonType = this.splitButtonType;
187
178
  const btnProps = {
188
179
  ...commonProps,
189
180
  variant: this.splitVariant || variant
@@ -51,15 +51,11 @@ const BFormInvalidFeedback = /*#__PURE__*/extend({
51
51
  functional: true,
52
52
  props,
53
53
  render(h, _ref) {
54
- let {
55
- props,
56
- data,
57
- children
58
- } = _ref;
59
- const {
60
- tooltip,
61
- ariaLive
62
- } = props;
54
+ let props = _ref.props,
55
+ data = _ref.data,
56
+ children = _ref.children;
57
+ const tooltip = props.tooltip,
58
+ ariaLive = props.ariaLive;
63
59
  const show = props.forceShow === true || props.state === false;
64
60
  return h(props.tag, mergeData(data, {
65
61
  class: {
@@ -1,27 +1,26 @@
1
1
  import { extend, mergeData } from '../../vue';
2
2
  import { NAME_FORM_TEXT } from '../../constants/components';
3
- import { PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';
4
3
 
5
4
  // --- Props ---
6
5
 
7
6
  const props = {
8
7
  id: {
9
- type: PROP_TYPE_STRING,
8
+ type: String,
10
9
  required: false,
11
10
  default: undefined
12
11
  },
13
12
  inline: {
14
- type: PROP_TYPE_BOOLEAN,
13
+ type: Boolean,
15
14
  required: false,
16
15
  default: false
17
16
  },
18
17
  tag: {
19
- type: PROP_TYPE_STRING,
18
+ type: String,
20
19
  required: false,
21
20
  default: 'small'
22
21
  },
23
22
  textVariant: {
24
- type: PROP_TYPE_STRING,
23
+ type: String,
25
24
  required: false,
26
25
  default: 'muted'
27
26
  }
@@ -35,11 +34,9 @@ const BFormText = /*#__PURE__*/extend({
35
34
  functional: true,
36
35
  props,
37
36
  render(h, _ref) {
38
- let {
39
- props,
40
- data,
41
- children
42
- } = _ref;
37
+ let props = _ref.props,
38
+ data = _ref.data,
39
+ children = _ref.children;
43
40
  return h(props.tag, mergeData(data, {
44
41
  class: {
45
42
  'form-text': !props.inline,
@@ -51,15 +51,11 @@ const BFormValidFeedback = /*#__PURE__*/extend({
51
51
  functional: true,
52
52
  props,
53
53
  render(h, _ref) {
54
- let {
55
- props,
56
- data,
57
- children
58
- } = _ref;
59
- const {
60
- tooltip,
61
- ariaLive
62
- } = props;
54
+ let props = _ref.props,
55
+ data = _ref.data,
56
+ children = _ref.children;
57
+ const tooltip = props.tooltip,
58
+ ariaLive = props.ariaLive;
63
59
  const show = props.forceShow === true || props.state === true;
64
60
  return h(props.tag, mergeData(data, {
65
61
  class: {
@@ -1,27 +1,26 @@
1
1
  import { extend, mergeData } from '../../vue';
2
2
  import { NAME_FORM } from '../../constants/components';
3
- import { PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';
4
3
 
5
4
  // --- Props ---
6
5
 
7
6
  const props = {
8
7
  id: {
9
- type: PROP_TYPE_STRING,
8
+ type: String,
10
9
  required: false,
11
10
  default: undefined
12
11
  },
13
12
  inline: {
14
- type: PROP_TYPE_BOOLEAN,
13
+ type: Boolean,
15
14
  required: false,
16
15
  default: false
17
16
  },
18
17
  novalidate: {
19
- type: PROP_TYPE_BOOLEAN,
18
+ type: Boolean,
20
19
  required: false,
21
20
  default: false
22
21
  },
23
22
  validated: {
24
- type: PROP_TYPE_BOOLEAN,
23
+ type: Boolean,
25
24
  required: false,
26
25
  default: false
27
26
  }
@@ -35,11 +34,9 @@ const BForm = /*#__PURE__*/extend({
35
34
  functional: true,
36
35
  props,
37
36
  render(h, _ref) {
38
- let {
39
- props,
40
- data,
41
- children
42
- } = _ref;
37
+ let props = _ref.props,
38
+ data = _ref.data,
39
+ children = _ref.children;
43
40
  return h('form', mergeData(data, {
44
41
  class: {
45
42
  'form-inline': props.inline,
@@ -1,6 +1,6 @@
1
1
  import { NAME_FORM_GROUP } from '../../constants/components';
2
2
  import { IS_BROWSER } from '../../constants/env';
3
- import { PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_ARRAY, PROP_TYPE_OBJECT } from '../../constants/props';
3
+ import { PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_STRING } from '../../constants/props';
4
4
  import { RX_SPACE_SPLIT } from '../../constants/regex';
5
5
  import { SLOT_NAME_LABEL, SLOT_NAME_INVALID_FEEDBACK, SLOT_NAME_VALID_FEEDBACK, SLOT_NAME_DESCRIPTION, SLOT_NAME_DEFAULT } from '../../constants/slots';
6
6
  import { getBreakpointsUpCached } from '../../utils/config';
@@ -46,67 +46,67 @@ const generateProps = () => sortKeys({
46
46
  return props;
47
47
  }, create(null)),
48
48
  description: {
49
- type: PROP_TYPE_STRING,
49
+ type: String,
50
50
  required: false,
51
51
  default: undefined
52
52
  },
53
53
  disabled: {
54
- type: PROP_TYPE_BOOLEAN,
54
+ type: Boolean,
55
55
  required: false,
56
56
  default: false
57
57
  },
58
58
  feedbackAriaLive: {
59
- type: PROP_TYPE_STRING,
59
+ type: String,
60
60
  required: false,
61
61
  default: 'assertive'
62
62
  },
63
63
  invalidFeedback: {
64
- type: PROP_TYPE_STRING,
64
+ type: String,
65
65
  required: false,
66
66
  default: undefined
67
67
  },
68
68
  label: {
69
- type: PROP_TYPE_STRING,
69
+ type: String,
70
70
  required: false,
71
71
  default: undefined
72
72
  },
73
73
  labelClass: {
74
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
74
+ type: [Array, Object, String],
75
75
  required: false,
76
76
  default: undefined
77
77
  },
78
78
  labelFor: {
79
- type: PROP_TYPE_STRING,
79
+ type: String,
80
80
  required: false,
81
81
  default: undefined
82
82
  },
83
83
  labelId: {
84
- type: PROP_TYPE_STRING,
84
+ type: String,
85
85
  required: false,
86
86
  default: undefined
87
87
  },
88
88
  labelSize: {
89
- type: PROP_TYPE_STRING,
89
+ type: String,
90
90
  required: false,
91
91
  default: undefined
92
92
  },
93
93
  labelSrOnly: {
94
- type: PROP_TYPE_BOOLEAN,
94
+ type: Boolean,
95
95
  required: false,
96
96
  default: false
97
97
  },
98
98
  tooltip: {
99
- type: PROP_TYPE_BOOLEAN,
99
+ type: Boolean,
100
100
  required: false,
101
101
  default: false
102
102
  },
103
103
  validFeedback: {
104
- type: PROP_TYPE_STRING,
104
+ type: String,
105
105
  required: false,
106
106
  default: undefined
107
107
  },
108
108
  validated: {
109
- type: PROP_TYPE_BOOLEAN,
109
+ type: Boolean,
110
110
  required: false,
111
111
  default: false
112
112
  }
@@ -200,9 +200,7 @@ const BFormGroup = {
200
200
  // Optionally accepts a string of IDs to remove as the second parameter
201
201
  // Preserves any `aria-describedby` value(s) user may have on input
202
202
  updateAriaDescribedby(newValue, oldValue) {
203
- const {
204
- labelFor
205
- } = this;
203
+ const labelFor = this.labelFor;
206
204
  if (IS_BROWSER && labelFor) {
207
205
  // We need to escape `labelFor` since it can be user-provided
208
206
  const $input = select(`#${cssEscape(labelFor)}`, this.$refs.content);
@@ -228,9 +226,7 @@ const BFormGroup = {
228
226
  if (this.labelFor) {
229
227
  return;
230
228
  }
231
- const {
232
- target
233
- } = event;
229
+ const target = event.target;
234
230
  const tagName = target ? target.tagName : '';
235
231
 
236
232
  // If clicked an interactive element inside legend,
@@ -248,25 +244,21 @@ const BFormGroup = {
248
244
  }
249
245
  },
250
246
  render(h) {
251
- const {
252
- computedState: state,
253
- feedbackAriaLive,
254
- isHorizontal,
255
- labelFor,
256
- normalizeSlot,
257
- safeId,
258
- tooltip
259
- } = this;
247
+ const state = this.computedState,
248
+ feedbackAriaLive = this.feedbackAriaLive,
249
+ isHorizontal = this.isHorizontal,
250
+ labelFor = this.labelFor,
251
+ normalizeSlot = this.normalizeSlot,
252
+ safeId = this.safeId,
253
+ tooltip = this.tooltip;
260
254
  const id = safeId();
261
255
  const isFieldset = !labelFor;
262
256
  let $label = h();
263
257
  const labelContent = normalizeSlot(SLOT_NAME_LABEL) || this.label;
264
258
  const labelId = labelContent ? this.labelId || safeId('_BV_label_') : null;
265
259
  if (labelContent || isHorizontal) {
266
- const {
267
- labelSize,
268
- labelColProps
269
- } = this;
260
+ const labelSize = this.labelSize,
261
+ labelColProps = this.labelColProps;
270
262
  const labelTag = isFieldset ? 'legend' : 'label';
271
263
  if (this.labelSrOnly) {
272
264
  if (labelContent) {
@@ -1,6 +1,5 @@
1
1
  import { extend } from '../../vue';
2
2
  import { NAME_FORM_SELECT_OPTION_GROUP } from '../../constants/components';
3
- import { PROP_TYPE_STRING } from '../../constants/props';
4
3
  import { SLOT_NAME_FIRST } from '../../constants/slots';
5
4
  import { htmlOrText } from '../../utils/html';
6
5
  import { sortKeys } from '../../utils/object';
@@ -13,7 +12,7 @@ import { BFormSelectOption } from './form-select-option';
13
12
  const props = sortKeys({
14
13
  ...props$1,
15
14
  label: {
16
- type: PROP_TYPE_STRING,
15
+ type: String,
17
16
  required: true
18
17
  }
19
18
  });
@@ -26,16 +25,12 @@ const BFormSelectOptionGroup = /*#__PURE__*/extend({
26
25
  mixins: [normalizeSlotMixin, formOptionsMixin],
27
26
  props,
28
27
  render(h) {
29
- const {
30
- label
31
- } = this;
28
+ const label = this.label;
32
29
  const $options = this.formOptions.map((option, index) => {
33
- const {
34
- value,
35
- text,
36
- html,
37
- disabled
38
- } = option;
30
+ const value = option.value,
31
+ text = option.text,
32
+ html = option.html,
33
+ disabled = option.disabled;
39
34
  return h(BFormSelectOption, {
40
35
  attrs: {
41
36
  value,
@@ -1,17 +1,15 @@
1
1
  import { extend, mergeData } from '../../vue';
2
2
  import { NAME_FORM_SELECT_OPTION } from '../../constants/components';
3
- import { PROP_TYPE_BOOLEAN, PROP_TYPE_ANY } from '../../constants/props';
4
3
 
5
4
  // --- Props ---
6
5
 
7
6
  const props = {
8
7
  disabled: {
9
- type: PROP_TYPE_BOOLEAN,
8
+ type: Boolean,
10
9
  required: false,
11
10
  default: false
12
11
  },
13
12
  value: {
14
- type: PROP_TYPE_ANY,
15
13
  required: true
16
14
  }
17
15
  };
@@ -24,15 +22,11 @@ const BFormSelectOption = /*#__PURE__*/extend({
24
22
  functional: true,
25
23
  props,
26
24
  render(h, _ref) {
27
- let {
28
- props,
29
- data,
30
- children
31
- } = _ref;
32
- const {
33
- value,
34
- disabled
35
- } = props;
25
+ let props = _ref.props,
26
+ data = _ref.data,
27
+ children = _ref.children;
28
+ const value = props.value,
29
+ disabled = props.disabled;
36
30
  return h('option', mergeData(data, {
37
31
  attrs: {
38
32
  disabled
@@ -1,47 +1,48 @@
1
1
  import { extend } from '../../vue';
2
2
  import { NAME_FORM_SELECT } from '../../constants/components';
3
- import { EVENT_NAME_CHANGE } from '../../constants/events';
4
- import { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING, PROP_TYPE_NUMBER } from '../../constants/props';
3
+ import { EVENT_NAME_CHANGE, EVENT_NAME_INPUT } from '../../constants/events';
5
4
  import { SLOT_NAME_FIRST } from '../../constants/slots';
6
5
  import { from } from '../../utils/array';
7
6
  import { attemptFocus, attemptBlur } from '../../utils/dom';
8
7
  import { htmlOrText } from '../../utils/html';
9
8
  import { isArray } from '../../utils/inspect';
10
9
  import { sortKeys } from '../../utils/object';
11
- import { props as props$3, formControlMixin } from '../../mixins/form-control';
12
- import { props as props$4, formCustomMixin } from '../../mixins/form-custom';
13
- import { props as props$5, formSizeMixin } from '../../mixins/form-size';
14
- import { props as props$6, formStateMixin } from '../../mixins/form-state';
15
- import { props as props$1, idMixin } from '../../mixins/id';
16
- import { props as props$2, modelMixin, MODEL_PROP_NAME, MODEL_EVENT_NAME } from '../../mixins/model';
10
+ import { props as props$2, formControlMixin } from '../../mixins/form-control';
11
+ import { props as props$3, formCustomMixin } from '../../mixins/form-custom';
12
+ import { props as props$4, formSizeMixin } from '../../mixins/form-size';
13
+ import { props as props$5, formStateMixin } from '../../mixins/form-state';
17
14
  import { normalizeSlotMixin } from '../../mixins/normalize-slot';
15
+ import { props as props$1, idMixin } from '../../mixins/id';
18
16
  import { optionsMixin } from './helpers/mixin-options';
19
17
  import { BFormSelectOption } from './form-select-option';
20
18
  import { BFormSelectOptionGroup } from './form-select-option-group';
21
19
 
20
+ const MODEL_PROP_NAME = 'value';
21
+ const MODEL_EVENT_NAME = EVENT_NAME_INPUT;
22
+
22
23
  // --- Props ---
23
24
 
24
25
  const props = sortKeys({
25
26
  ...props$1,
27
+ [MODEL_PROP_NAME]: {},
26
28
  ...props$2,
27
29
  ...props$3,
28
30
  ...props$4,
29
31
  ...props$5,
30
- ...props$6,
31
32
  ariaInvalid: {
32
- type: [PROP_TYPE_BOOLEAN, PROP_TYPE_STRING],
33
+ type: [Boolean, String],
33
34
  required: false,
34
35
  default: false
35
36
  },
36
37
  multiple: {
37
- type: PROP_TYPE_BOOLEAN,
38
+ type: Boolean,
38
39
  required: false,
39
40
  default: false
40
41
  },
41
42
  // Browsers default size to `0`, which shows 4 rows in most browsers in multiple mode
42
43
  // Size of `1` can bork out Firefox
43
44
  selectSize: {
44
- type: PROP_TYPE_NUMBER,
45
+ type: Number,
45
46
  required: false,
46
47
  default: 0
47
48
  }
@@ -52,7 +53,11 @@ const props = sortKeys({
52
53
  // @vue/component
53
54
  const BFormSelect = /*#__PURE__*/extend({
54
55
  name: NAME_FORM_SELECT,
55
- mixins: [idMixin, modelMixin, formControlMixin, formSizeMixin, formStateMixin, formCustomMixin, optionsMixin, normalizeSlotMixin],
56
+ mixins: [idMixin, formControlMixin, formSizeMixin, formStateMixin, formCustomMixin, optionsMixin, normalizeSlotMixin],
57
+ model: {
58
+ prop: MODEL_PROP_NAME,
59
+ event: MODEL_EVENT_NAME
60
+ },
56
61
  props,
57
62
  data() {
58
63
  return {
@@ -85,9 +90,7 @@ const BFormSelect = /*#__PURE__*/extend({
85
90
  attemptBlur(this.$refs.input);
86
91
  },
87
92
  onChange(event) {
88
- const {
89
- target
90
- } = event;
93
+ const target = event.target;
91
94
  const selectedValue = from(target.options).filter(o => o.selected).map(o => '_value' in o ? o._value : o.value);
92
95
  this.localValue = target.multiple ? selectedValue : selectedValue[0];
93
96
  this.$nextTick(() => {
@@ -96,20 +99,16 @@ const BFormSelect = /*#__PURE__*/extend({
96
99
  }
97
100
  },
98
101
  render(h) {
99
- const {
100
- name,
101
- disabled,
102
- required,
103
- computedSelectSize: size,
104
- localValue: value
105
- } = this;
102
+ const name = this.name,
103
+ disabled = this.disabled,
104
+ required = this.required,
105
+ size = this.computedSelectSize,
106
+ value = this.localValue;
106
107
  const $options = this.formOptions.map((option, index) => {
107
- const {
108
- value,
109
- label,
110
- options,
111
- disabled
112
- } = option;
108
+ const value = option.value,
109
+ label = option.label,
110
+ options = option.options,
111
+ disabled = option.disabled;
113
112
  const key = `option_${index}`;
114
113
  return isArray(options) ? h(BFormSelectOptionGroup, {
115
114
  props: {