@gitlab/ui 132.0.3 → 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 (233) 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 +40 -24
  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 +77 -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 +10 -8
  149. package/src/components/dashboards/dashboard_layout/grid_layout/grid_layout.vue +21 -19
  150. package/src/scss/gitlab_ui.scss +3 -0
  151. package/src/scss/storybook.scss +3 -0
  152. package/src/scss/themes.scss +84 -0
  153. package/src/tokens/build/css/tokens.css +142 -142
  154. package/src/tokens/build/css/tokens.dark.css +138 -138
  155. package/src/tokens/build/docs/tokens-tailwind-docs.dark.json +580 -580
  156. package/src/tokens/build/docs/tokens-tailwind-docs.json +495 -495
  157. package/src/tokens/build/figma/constants.dark.json +799 -799
  158. package/src/tokens/build/figma/constants.json +799 -799
  159. package/src/tokens/build/js/tokens.dark.js +95 -95
  160. package/src/tokens/build/js/tokens.js +74 -74
  161. package/src/tokens/build/json/tokens.dark.json +1668 -1668
  162. package/src/tokens/build/json/tokens.json +1647 -1647
  163. package/src/tokens/build/scss/_tokens.dark.scss +138 -138
  164. package/src/tokens/build/scss/_tokens.scss +142 -142
  165. package/src/tokens/build/scss/_tokens_custom_properties.scss +73 -73
  166. package/src/tokens/constant/color.blue.tokens.json +182 -0
  167. package/src/tokens/constant/color.brand.tokens.json +252 -0
  168. package/src/tokens/constant/color.data.tokens.json +894 -0
  169. package/src/tokens/constant/color.green.tokens.json +182 -0
  170. package/src/tokens/constant/color.neutral.tokens.json +230 -0
  171. package/src/tokens/constant/color.orange.tokens.json +182 -0
  172. package/src/tokens/constant/color.purple.tokens.json +182 -0
  173. package/src/tokens/constant/color.red.tokens.json +182 -0
  174. package/src/tokens/constant/color.theme.tokens.json +1168 -0
  175. package/src/tokens/deprecated/deprecated.color.tokens.json +134 -1340
  176. package/src/utils/constants.js +9 -0
  177. package/src/vendor/bootstrap-vue/src/components/button/button-close.js +4 -5
  178. package/src/vendor/bootstrap-vue/src/components/button/button.js +7 -8
  179. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +1 -2
  180. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +2 -8
  181. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +6 -7
  182. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +3 -4
  183. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +6 -12
  184. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item.js +2 -3
  185. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.js +3 -4
  186. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown.js +19 -26
  187. package/src/vendor/bootstrap-vue/src/components/form/form-text.js +4 -6
  188. package/src/vendor/bootstrap-vue/src/components/form/form.js +4 -6
  189. package/src/vendor/bootstrap-vue/src/components/form-group/form-group.js +66 -19
  190. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +1 -2
  191. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +1 -4
  192. package/src/vendor/bootstrap-vue/src/components/form-select/form-select.js +13 -14
  193. package/src/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +5 -6
  194. package/src/vendor/bootstrap-vue/src/components/modal/modal.js +53 -62
  195. package/src/vendor/bootstrap-vue/src/components/popover/popover.js +4 -10
  196. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +1 -2
  197. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +2 -3
  198. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +5 -6
  199. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-filtering.js +5 -13
  200. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +12 -21
  201. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +2 -3
  202. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +5 -11
  203. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +4 -5
  204. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +14 -21
  205. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +1 -2
  206. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +14 -20
  207. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +3 -9
  208. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +1 -2
  209. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +5 -11
  210. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +4 -5
  211. package/src/vendor/bootstrap-vue/src/components/table/tbody.js +2 -3
  212. package/src/vendor/bootstrap-vue/src/components/table/td.js +5 -6
  213. package/src/vendor/bootstrap-vue/src/components/table/tfoot.js +1 -2
  214. package/src/vendor/bootstrap-vue/src/components/table/thead.js +1 -2
  215. package/src/vendor/bootstrap-vue/src/components/table/tr.js +1 -2
  216. package/src/vendor/bootstrap-vue/src/components/tabs/tab.js +10 -16
  217. package/src/vendor/bootstrap-vue/src/components/tabs/tabs.js +33 -39
  218. package/src/vendor/bootstrap-vue/src/components/tooltip/tooltip.js +17 -25
  219. package/src/vendor/bootstrap-vue/src/components/transition/bv-transition.js +4 -5
  220. package/src/vendor/bootstrap-vue/src/components/transporter/transporter.js +4 -10
  221. package/src/vendor/bootstrap-vue/src/mixins/dropdown.js +9 -15
  222. package/src/vendor/bootstrap-vue/src/mixins/form-control.js +6 -7
  223. package/src/vendor/bootstrap-vue/src/mixins/form-custom.js +1 -2
  224. package/src/vendor/bootstrap-vue/src/mixins/form-options.js +5 -6
  225. package/src/vendor/bootstrap-vue/src/mixins/form-size.js +1 -2
  226. package/src/vendor/bootstrap-vue/src/mixins/form-state.js +1 -2
  227. package/src/vendor/bootstrap-vue/src/mixins/form-text.js +21 -33
  228. package/src/vendor/bootstrap-vue/src/mixins/id.js +1 -2
  229. package/dist/vendor/bootstrap-vue/src/mixins/model.js +0 -10
  230. package/dist/vendor/bootstrap-vue/src/utils/model.js +0 -33
  231. package/src/tokens/constant/color.tokens.json +0 -3422
  232. package/src/vendor/bootstrap-vue/src/mixins/model.js +0 -5
  233. 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_FORM_TEXTAREA } from '../../constants/components';
3
- import { PROP_TYPE_NUMBER, PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';
4
3
  import { requestAF, isVisible, getCS, getStyle, setStyle } from '../../utils/dom';
5
4
  import { isNull } from '../../utils/inspect';
6
5
  import { mathMax, mathMin, mathCeil } from '../../utils/math';
@@ -26,31 +25,31 @@ const props = sortKeys({
26
25
  ...props$4,
27
26
  ...props$5,
28
27
  maxRows: {
29
- type: [PROP_TYPE_NUMBER, PROP_TYPE_STRING],
28
+ type: [Number, String],
30
29
  required: false,
31
30
  default: undefined
32
31
  },
33
32
  // When in auto resize mode, disable shrinking to content height
34
33
  noAutoShrink: {
35
- type: PROP_TYPE_BOOLEAN,
34
+ type: Boolean,
36
35
  required: false,
37
36
  default: false
38
37
  },
39
38
  // Disable the resize handle of textarea
40
39
  noResize: {
41
- type: PROP_TYPE_BOOLEAN,
40
+ type: Boolean,
42
41
  required: false,
43
42
  default: false
44
43
  },
45
44
  rows: {
46
- type: [PROP_TYPE_NUMBER, PROP_TYPE_STRING],
45
+ type: [Number, String],
47
46
  required: false,
48
47
  default: 2
49
48
  },
50
49
  // 'soft', 'hard' or 'off'
51
50
  // Browser default is 'soft'
52
51
  wrap: {
53
- type: PROP_TYPE_STRING,
52
+ type: String,
54
53
  required: false,
55
54
  default: 'soft'
56
55
  }
@@ -107,10 +106,8 @@ const BFormTextarea = /*#__PURE__*/extend({
107
106
  return this.computedMinRows === this.computedMaxRows ? this.computedMinRows : null;
108
107
  },
109
108
  computedAttrs() {
110
- const {
111
- disabled,
112
- required
113
- } = this;
109
+ const disabled = this.disabled,
110
+ required = this.required;
114
111
  return {
115
112
  id: this.safeId(),
116
113
  name: this.name || null,
@@ -112,17 +112,13 @@ const BCol = {
112
112
  return this.props = generateProps();
113
113
  },
114
114
  render(h, _ref) {
115
- let {
116
- props,
117
- data,
118
- children
119
- } = _ref;
120
- const {
121
- cols,
122
- offset,
123
- order,
124
- alignSelf
125
- } = props;
115
+ let props = _ref.props,
116
+ data = _ref.data,
117
+ children = _ref.children;
118
+ const cols = props.cols,
119
+ offset = props.offset,
120
+ order = props.order,
121
+ alignSelf = props.alignSelf;
126
122
  const classList = [];
127
123
  // Loop through `col`, `offset`, `order` breakpoint props
128
124
  for (const type in breakpointPropMap) {
@@ -20,11 +20,9 @@ const BFormRow = /*#__PURE__*/extend({
20
20
  functional: true,
21
21
  props,
22
22
  render(h, _ref) {
23
- let {
24
- props,
25
- data,
26
- children
27
- } = _ref;
23
+ let props = _ref.props,
24
+ data = _ref.data,
25
+ children = _ref.children;
28
26
  return h(props.tag, mergeData(data, {
29
27
  staticClass: 'form-row'
30
28
  }), children);
@@ -116,11 +116,9 @@ const BLink = /*#__PURE__*/extend({
116
116
  computed: {
117
117
  computedTag() {
118
118
  // We don't pass `this` as the first arg as we need reactivity of the props
119
- const {
120
- to,
121
- disabled,
122
- routerComponentName
123
- } = this;
119
+ const to = this.to,
120
+ disabled = this.disabled,
121
+ routerComponentName = this.routerComponentName;
124
122
  return computeTag({
125
123
  to,
126
124
  disabled,
@@ -135,10 +133,8 @@ const BLink = /*#__PURE__*/extend({
135
133
  },
136
134
  computedRel() {
137
135
  // We don't pass `this` as the first arg as we need reactivity of the props
138
- const {
139
- target,
140
- rel
141
- } = this;
136
+ const target = this.target,
137
+ rel = this.rel;
142
138
  return computeRel({
143
139
  target,
144
140
  rel
@@ -146,10 +142,8 @@ const BLink = /*#__PURE__*/extend({
146
142
  },
147
143
  computedHref() {
148
144
  // We don't pass `this` as the first arg as we need reactivity of the props
149
- const {
150
- to,
151
- href
152
- } = this;
145
+ const to = this.to,
146
+ href = this.href;
153
147
  return computeHref({
154
148
  to,
155
149
  href
@@ -157,11 +151,9 @@ const BLink = /*#__PURE__*/extend({
157
151
  },
158
152
  computedProps() {
159
153
  if (!this.isRouterLink) return {};
160
- const {
161
- event,
162
- prefetch,
163
- routerTag
164
- } = this;
154
+ const event = this.event,
155
+ prefetch = this.prefetch,
156
+ routerTag = this.routerTag;
165
157
  const propsToPass = ['activeClass', 'append', 'exact', 'exactActiveClass', 'exactPath', 'exactPathActiveClass', 'replace', 'to'];
166
158
  if (this.isNuxtLink) propsToPass.push('noPrefetch');
167
159
  return {
@@ -180,15 +172,13 @@ const BLink = /*#__PURE__*/extend({
180
172
  };
181
173
  },
182
174
  computedAttrs() {
183
- const {
184
- bvAttrs,
185
- computedHref: href,
186
- computedRel: rel,
187
- disabled,
188
- target,
189
- routerTag,
190
- isRouterLink
191
- } = this;
175
+ const bvAttrs = this.bvAttrs,
176
+ href = this.computedHref,
177
+ rel = this.computedRel,
178
+ disabled = this.disabled,
179
+ target = this.target,
180
+ routerTag = this.routerTag,
181
+ isRouterLink = this.isRouterLink;
192
182
  return {
193
183
  ...bvAttrs,
194
184
  // If `href` attribute exists on `<router-link>` (even `undefined` or `null`)
@@ -263,10 +253,8 @@ const BLink = /*#__PURE__*/extend({
263
253
  }
264
254
  },
265
255
  render(h) {
266
- const {
267
- active,
268
- disabled
269
- } = this;
256
+ const active = this.active,
257
+ disabled = this.disabled;
270
258
  return h(this.computedTag, {
271
259
  class: {
272
260
  active,
@@ -128,10 +128,9 @@ const ModalManager = /*#__PURE__*/extend({
128
128
  },
129
129
  checkScrollbar() {
130
130
  // Determine if the body element is overflowing
131
- const {
132
- left,
133
- right
134
- } = getBCR(document.body);
131
+ const _getBCR = getBCR(document.body),
132
+ left = _getBCR.left,
133
+ right = _getBCR.right;
135
134
  this.isBodyOverflowing = left + right < window.innerWidth;
136
135
  },
137
136
  setScrollbar() {
@@ -1,9 +1,8 @@
1
1
  import { extend, COMPONENT_UID_KEY } from '../../vue';
2
2
  import { NAME_MODAL } from '../../constants/components';
3
3
  import { IS_BROWSER } from '../../constants/env';
4
- import { EVENT_NAME_CHANGE, EVENT_NAME_SHOW, EVENT_NAME_HIDE, EVENT_NAME_TOGGLE, EVENT_NAME_OK, EVENT_NAME_CANCEL, EVENT_NAME_CLOSE, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN, EVENT_OPTIONS_NO_CAPTURE } from '../../constants/events';
4
+ import { EVENT_NAME_SHOW, EVENT_NAME_HIDE, EVENT_NAME_TOGGLE, EVENT_NAME_OK, EVENT_NAME_CANCEL, EVENT_NAME_CLOSE, EVENT_NAME_HIDDEN, EVENT_NAME_SHOWN, EVENT_OPTIONS_NO_CAPTURE, EVENT_NAME_CHANGE } from '../../constants/events';
5
5
  import { CODE_ESC } from '../../constants/key-codes';
6
- import { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING, PROP_TYPE_ARRAY, PROP_TYPE_OBJECT } from '../../constants/props';
7
6
  import { HTMLElement } from '../../constants/safe-types';
8
7
  import { SLOT_NAME_MODAL_TITLE, SLOT_NAME_MODAL_HEADER, SLOT_NAME_MODAL_HEADER_CLOSE, SLOT_NAME_DEFAULT, SLOT_NAME_MODAL_FOOTER, SLOT_NAME_MODAL_CANCEL, SLOT_NAME_MODAL_OK, SLOT_NAME_MODAL_BACKDROP } from '../../constants/slots';
9
8
  import { concat } from '../../utils/array';
@@ -12,7 +11,6 @@ import { getRootActionEventName, getRootEventName, eventOn, eventOff } from '../
12
11
  import { htmlOrText } from '../../utils/html';
13
12
  import { identity } from '../../utils/identity';
14
13
  import { isUndefinedOrNull, isString } from '../../utils/inspect';
15
- import { makeModelMixin } from '../../utils/model';
16
14
  import { sortKeys } from '../../utils/object';
17
15
  import { observeDom } from '../../utils/observe-dom';
18
16
  import { attrsMixin } from '../../mixins/attrs';
@@ -31,16 +29,8 @@ import { modalManager } from './helpers/modal-manager';
31
29
 
32
30
  // --- Constants ---
33
31
 
34
- const {
35
- mixin: modelMixin,
36
- props: modelProps,
37
- prop: MODEL_PROP_NAME,
38
- event: MODEL_EVENT_NAME
39
- } = makeModelMixin('visible', {
40
- type: PROP_TYPE_BOOLEAN,
41
- defaultValue: false,
42
- event: EVENT_NAME_CHANGE
43
- });
32
+ const MODEL_PROP_NAME = 'visible';
33
+ const MODEL_EVENT_NAME = EVENT_NAME_CHANGE;
44
34
  const TRIGGER_BACKDROP = 'backdrop';
45
35
  const TRIGGER_ESC = 'esc';
46
36
  const TRIGGER_FORCE = 'FORCE';
@@ -65,14 +55,17 @@ const OBSERVER_CONFIG = {
65
55
 
66
56
  const props = sortKeys({
67
57
  ...props$1,
68
- ...modelProps,
58
+ [MODEL_PROP_NAME]: {
59
+ type: Boolean,
60
+ default: false
61
+ },
69
62
  ariaLabel: {
70
- type: PROP_TYPE_STRING,
63
+ type: String,
71
64
  required: false,
72
65
  default: undefined
73
66
  },
74
67
  autoFocusButton: {
75
- type: PROP_TYPE_STRING,
68
+ type: String,
76
69
  required: false,
77
70
  default: null,
78
71
  validator: value => {
@@ -80,212 +73,212 @@ const props = sortKeys({
80
73
  }
81
74
  },
82
75
  bodyClass: {
83
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
76
+ type: [Array, Object, String],
84
77
  required: false,
85
78
  default: undefined
86
79
  },
87
80
  busy: {
88
- type: PROP_TYPE_BOOLEAN,
81
+ type: Boolean,
89
82
  required: false,
90
83
  default: false
91
84
  },
92
85
  buttonSize: {
93
- type: PROP_TYPE_STRING,
86
+ type: String,
94
87
  required: false,
95
88
  default: undefined
96
89
  },
97
90
  cancelDisabled: {
98
- type: PROP_TYPE_BOOLEAN,
91
+ type: Boolean,
99
92
  required: false,
100
93
  default: false
101
94
  },
102
95
  cancelTitle: {
103
- type: PROP_TYPE_STRING,
96
+ type: String,
104
97
  required: false,
105
98
  default: 'Cancel'
106
99
  },
107
100
  cancelTitleHtml: {
108
- type: PROP_TYPE_STRING,
101
+ type: String,
109
102
  required: false,
110
103
  default: undefined
111
104
  },
112
105
  cancelVariant: {
113
- type: PROP_TYPE_STRING,
106
+ type: String,
114
107
  required: false,
115
108
  default: 'secondary'
116
109
  },
117
110
  centered: {
118
- type: PROP_TYPE_BOOLEAN,
111
+ type: Boolean,
119
112
  required: false,
120
113
  default: false
121
114
  },
122
115
  contentClass: {
123
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
116
+ type: [Array, Object, String],
124
117
  required: false,
125
118
  default: undefined
126
119
  },
127
120
  dialogClass: {
128
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
121
+ type: [Array, Object, String],
129
122
  required: false,
130
123
  default: undefined
131
124
  },
132
125
  footerClass: {
133
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
126
+ type: [Array, Object, String],
134
127
  required: false,
135
128
  default: undefined
136
129
  },
137
130
  footerTag: {
138
- type: PROP_TYPE_STRING,
131
+ type: String,
139
132
  required: false,
140
133
  default: 'footer'
141
134
  },
142
135
  headerClass: {
143
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
136
+ type: [Array, Object, String],
144
137
  required: false,
145
138
  default: undefined
146
139
  },
147
140
  headerCloseContent: {
148
- type: PROP_TYPE_STRING,
141
+ type: String,
149
142
  required: false,
150
143
  default: '&times;'
151
144
  },
152
145
  headerCloseLabel: {
153
- type: PROP_TYPE_STRING,
146
+ type: String,
154
147
  required: false,
155
148
  default: 'Close'
156
149
  },
157
150
  headerTag: {
158
- type: PROP_TYPE_STRING,
151
+ type: String,
159
152
  required: false,
160
153
  default: 'header'
161
154
  },
162
155
  // TODO: Rename to `noBackdrop` and deprecate `hideBackdrop`
163
156
  hideBackdrop: {
164
- type: PROP_TYPE_BOOLEAN,
157
+ type: Boolean,
165
158
  required: false,
166
159
  default: false
167
160
  },
168
161
  // TODO: Rename to `noFooter` and deprecate `hideFooter`
169
162
  hideFooter: {
170
- type: PROP_TYPE_BOOLEAN,
163
+ type: Boolean,
171
164
  required: false,
172
165
  default: false
173
166
  },
174
167
  // TODO: Rename to `noHeader` and deprecate `hideHeader`
175
168
  hideHeader: {
176
- type: PROP_TYPE_BOOLEAN,
169
+ type: Boolean,
177
170
  required: false,
178
171
  default: false
179
172
  },
180
173
  // TODO: Rename to `noHeaderClose` and deprecate `hideHeaderClose`
181
174
  hideHeaderClose: {
182
- type: PROP_TYPE_BOOLEAN,
175
+ type: Boolean,
183
176
  required: false,
184
177
  default: false
185
178
  },
186
179
  ignoreEnforceFocusSelector: {
187
- type: [PROP_TYPE_ARRAY, PROP_TYPE_STRING],
180
+ type: [Array, String],
188
181
  required: false,
189
182
  default: undefined
190
183
  },
191
184
  lazy: {
192
- type: PROP_TYPE_BOOLEAN,
185
+ type: Boolean,
193
186
  required: false,
194
187
  default: false
195
188
  },
196
189
  modalClass: {
197
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
190
+ type: [Array, Object, String],
198
191
  required: false,
199
192
  default: undefined
200
193
  },
201
194
  noCloseOnBackdrop: {
202
- type: PROP_TYPE_BOOLEAN,
195
+ type: Boolean,
203
196
  required: false,
204
197
  default: false
205
198
  },
206
199
  noCloseOnEsc: {
207
- type: PROP_TYPE_BOOLEAN,
200
+ type: Boolean,
208
201
  required: false,
209
202
  default: false
210
203
  },
211
204
  noEnforceFocus: {
212
- type: PROP_TYPE_BOOLEAN,
205
+ type: Boolean,
213
206
  required: false,
214
207
  default: false
215
208
  },
216
209
  noFade: {
217
- type: PROP_TYPE_BOOLEAN,
210
+ type: Boolean,
218
211
  required: false,
219
212
  default: false
220
213
  },
221
214
  noStacking: {
222
- type: PROP_TYPE_BOOLEAN,
215
+ type: Boolean,
223
216
  required: false,
224
217
  default: false
225
218
  },
226
219
  okDisabled: {
227
- type: PROP_TYPE_BOOLEAN,
220
+ type: Boolean,
228
221
  required: false,
229
222
  default: false
230
223
  },
231
224
  okOnly: {
232
- type: PROP_TYPE_BOOLEAN,
225
+ type: Boolean,
233
226
  required: false,
234
227
  default: false
235
228
  },
236
229
  okTitle: {
237
- type: PROP_TYPE_STRING,
230
+ type: String,
238
231
  required: false,
239
232
  default: 'OK'
240
233
  },
241
234
  okTitleHtml: {
242
- type: PROP_TYPE_STRING,
235
+ type: String,
243
236
  required: false,
244
237
  default: undefined
245
238
  },
246
239
  okVariant: {
247
- type: PROP_TYPE_STRING,
240
+ type: String,
248
241
  required: false,
249
242
  default: 'primary'
250
243
  },
251
244
  // HTML Element, CSS selector string or Vue component instance
252
245
  returnFocus: {
253
- type: [HTMLElement, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
246
+ type: [HTMLElement, Object, String],
254
247
  required: false,
255
248
  default: undefined
256
249
  },
257
250
  scrollable: {
258
- type: PROP_TYPE_BOOLEAN,
251
+ type: Boolean,
259
252
  required: false,
260
253
  default: false
261
254
  },
262
255
  size: {
263
- type: PROP_TYPE_STRING,
256
+ type: String,
264
257
  required: false,
265
258
  default: 'md'
266
259
  },
267
260
  static: {
268
- type: PROP_TYPE_BOOLEAN,
261
+ type: Boolean,
269
262
  required: false,
270
263
  default: false
271
264
  },
272
265
  title: {
273
- type: PROP_TYPE_STRING,
266
+ type: String,
274
267
  required: false,
275
268
  default: undefined
276
269
  },
277
270
  titleClass: {
278
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
271
+ type: [Array, Object, String],
279
272
  required: false,
280
273
  default: undefined
281
274
  },
282
275
  titleHtml: {
283
- type: PROP_TYPE_STRING,
276
+ type: String,
284
277
  required: false,
285
278
  default: undefined
286
279
  },
287
280
  titleTag: {
288
- type: PROP_TYPE_STRING,
281
+ type: String,
289
282
  required: false,
290
283
  default: 'h5'
291
284
  }
@@ -296,7 +289,11 @@ const props = sortKeys({
296
289
  // @vue/component
297
290
  const BModal = /*#__PURE__*/extend({
298
291
  name: NAME_MODAL,
299
- mixins: [attrsMixin, idMixin, modelMixin, listenOnDocumentMixin, listenOnRootMixin, listenOnWindowMixin, normalizeSlotMixin, scopedStyleMixin],
292
+ mixins: [attrsMixin, idMixin, listenOnDocumentMixin, listenOnRootMixin, listenOnWindowMixin, normalizeSlotMixin, scopedStyleMixin],
293
+ model: {
294
+ prop: MODEL_PROP_NAME,
295
+ event: MODEL_EVENT_NAME
296
+ },
300
297
  inheritAttrs: false,
301
298
  props,
302
299
  data() {
@@ -402,10 +399,8 @@ const BModal = /*#__PURE__*/extend({
402
399
  };
403
400
  },
404
401
  computedModalAttrs() {
405
- const {
406
- isVisible,
407
- ariaLabel
408
- } = this;
402
+ const isVisible = this.isVisible,
403
+ ariaLabel = this.ariaLabel;
409
404
  return {
410
405
  id: this.modalId,
411
406
  role: 'dialog',
@@ -667,9 +662,7 @@ const BModal = /*#__PURE__*/extend({
667
662
  });
668
663
  },
669
664
  emitEvent(bvEvent) {
670
- const {
671
- type
672
- } = bvEvent;
665
+ const type = bvEvent.type;
673
666
  // We emit on `$root` first in case a global listener wants to cancel
674
667
  // the event first before the instance emits its event
675
668
  this.emitOnRoot(getRootEventName(NAME_MODAL, type), bvEvent, bvEvent.componentId);
@@ -724,9 +717,7 @@ const BModal = /*#__PURE__*/extend({
724
717
  focusHandler(event) {
725
718
  // If focus leaves modal content, bring it back
726
719
  const content = this.$refs.content;
727
- const {
728
- target
729
- } = event;
720
+ const target = event.target;
730
721
  if (this.noEnforceFocus || !this.isTop || !this.isVisible || !content || document === target || contains(content, target) || this.computeIgnoreEnforceFocusSelector && closest(this.computeIgnoreEnforceFocusSelector, target, true)) {
731
722
  return;
732
723
  }
@@ -14,10 +14,8 @@ const BVPopoverTemplate = /*#__PURE__*/extend({
14
14
  },
15
15
  methods: {
16
16
  renderTemplate(h) {
17
- const {
18
- title,
19
- content
20
- } = this;
17
+ const title = this.title,
18
+ content = this.content;
21
19
 
22
20
  // Title and content could be a scoped slot function
23
21
  const $title = isFunction(title) ? title({}) : title;
@@ -1,7 +1,6 @@
1
1
  import { extend } from '../../vue';
2
2
  import { NAME_POPOVER } from '../../constants/components';
3
3
  import { EVENT_NAME_CLICK } from '../../constants/events';
4
- import { PROP_TYPE_STRING, PROP_TYPE_NUMBER, PROP_TYPE_OBJECT, PROP_TYPE_ARRAY } from '../../constants/props';
5
4
  import { SLOT_NAME_TITLE } from '../../constants/slots';
6
5
  import { props as props$1, BTooltip } from '../tooltip/tooltip';
7
6
  import { BVPopover } from './helpers/bv-popover';
@@ -12,12 +11,12 @@ import { sortKeys } from '../../utils/object';
12
11
  const props = sortKeys({
13
12
  ...props$1,
14
13
  content: {
15
- type: PROP_TYPE_STRING,
14
+ type: String,
16
15
  required: false,
17
16
  default: undefined
18
17
  },
19
18
  delay: {
20
- type: [PROP_TYPE_NUMBER, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
19
+ type: [Number, Object, String],
21
20
  required: false,
22
21
  default: () => ({
23
22
  show: 50,
@@ -25,12 +24,12 @@ const props = sortKeys({
25
24
  })
26
25
  },
27
26
  placement: {
28
- type: PROP_TYPE_STRING,
27
+ type: String,
29
28
  required: false,
30
29
  default: 'right'
31
30
  },
32
31
  triggers: {
33
- type: [PROP_TYPE_ARRAY, PROP_TYPE_STRING],
32
+ type: [Array, String],
34
33
  required: false,
35
34
  default: EVENT_NAME_CLICK
36
35
  }
@@ -23,13 +23,17 @@ const normalizeValue = value => {
23
23
  // Multisort will most likely be handled in `mixin-sort.js` by
24
24
  // calling this method for each sortBy
25
25
  const defaultSortCompare = function (a, b) {
26
- let {
27
- sortBy = null,
28
- formatter = null,
29
- locale = undefined,
30
- localeOptions = {},
31
- nullLast = false
32
- } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
26
+ let _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
27
+ _ref$sortBy = _ref.sortBy,
28
+ sortBy = _ref$sortBy === void 0 ? null : _ref$sortBy,
29
+ _ref$formatter = _ref.formatter,
30
+ formatter = _ref$formatter === void 0 ? null : _ref$formatter,
31
+ _ref$locale = _ref.locale,
32
+ locale = _ref$locale === void 0 ? undefined : _ref$locale,
33
+ _ref$localeOptions = _ref.localeOptions,
34
+ localeOptions = _ref$localeOptions === void 0 ? {} : _ref$localeOptions,
35
+ _ref$nullLast = _ref.nullLast,
36
+ nullLast = _ref$nullLast === void 0 ? false : _ref$nullLast;
33
37
  // Get the value by `sortBy`
34
38
  let aa = get(a, sortBy, null);
35
39
  let bb = get(b, sortBy, null);
@@ -14,12 +14,10 @@ const bottomRowMixin = extend({
14
14
  props,
15
15
  methods: {
16
16
  renderBottomRow() {
17
- const {
18
- computedFields: fields,
19
- stacked,
20
- tbodyTrClass,
21
- tbodyTrAttr
22
- } = this;
17
+ const fields = this.computedFields,
18
+ stacked = this.stacked,
19
+ tbodyTrClass = this.tbodyTrClass,
20
+ tbodyTrAttr = this.tbodyTrAttr;
23
21
  const h = this.$createElement;
24
22
 
25
23
  // Static bottom row slot (hidden in visibly stacked mode as we can't control the data-label)