@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,7 +1,6 @@
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_NUMBER, PROP_TYPE_STRING } 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 as arrayFrom } from '../../utils/array'
7
6
  import { attemptBlur, attemptFocus } from '../../utils/dom'
@@ -12,41 +11,38 @@ import { formControlMixin, props as formControlProps } from '../../mixins/form-c
12
11
  import { formCustomMixin, props as formCustomProps } from '../../mixins/form-custom'
13
12
  import { formSizeMixin, props as formSizeProps } from '../../mixins/form-size'
14
13
  import { formStateMixin, props as formStateProps } from '../../mixins/form-state'
15
- import { idMixin, props as idProps } from '../../mixins/id'
16
- import {
17
- MODEL_EVENT_NAME,
18
- MODEL_PROP_NAME,
19
- modelMixin,
20
- props as modelProps
21
- } from '../../mixins/model'
22
14
  import { normalizeSlotMixin } from '../../mixins/normalize-slot'
15
+ import { idMixin, props as idProps } from '../../mixins/id'
23
16
  import { optionsMixin } from './helpers/mixin-options'
24
17
  import { BFormSelectOption } from './form-select-option'
25
18
  import { BFormSelectOptionGroup } from './form-select-option-group'
26
19
 
20
+ const MODEL_PROP_NAME = 'value'
21
+ const MODEL_EVENT_NAME = EVENT_NAME_INPUT
22
+
27
23
  // --- Props ---
28
24
 
29
25
  export const props = sortKeys({
30
26
  ...idProps,
31
- ...modelProps,
27
+ [MODEL_PROP_NAME]: {},
32
28
  ...formControlProps,
33
29
  ...formCustomProps,
34
30
  ...formSizeProps,
35
31
  ...formStateProps,
36
32
  ariaInvalid: {
37
- type: [PROP_TYPE_BOOLEAN, PROP_TYPE_STRING],
33
+ type: [Boolean, String],
38
34
  required: false,
39
35
  default: false
40
36
  },
41
37
  multiple: {
42
- type: PROP_TYPE_BOOLEAN,
38
+ type: Boolean,
43
39
  required: false,
44
40
  default: false
45
41
  },
46
42
  // Browsers default size to `0`, which shows 4 rows in most browsers in multiple mode
47
43
  // Size of `1` can bork out Firefox
48
44
  selectSize: {
49
- type: PROP_TYPE_NUMBER,
45
+ type: Number,
50
46
  required: false,
51
47
  default: 0
52
48
  }
@@ -59,7 +55,6 @@ export const BFormSelect = /*#__PURE__*/ extend({
59
55
  name: NAME_FORM_SELECT,
60
56
  mixins: [
61
57
  idMixin,
62
- modelMixin,
63
58
  formControlMixin,
64
59
  formSizeMixin,
65
60
  formStateMixin,
@@ -67,6 +62,10 @@ export const BFormSelect = /*#__PURE__*/ extend({
67
62
  optionsMixin,
68
63
  normalizeSlotMixin
69
64
  ],
65
+ model: {
66
+ prop: MODEL_PROP_NAME,
67
+ event: MODEL_EVENT_NAME
68
+ },
70
69
  props,
71
70
  data() {
72
71
  return {
@@ -1,6 +1,5 @@
1
1
  import { extend } from '../../vue'
2
2
  import { NAME_FORM_TEXTAREA } from '../../constants/components'
3
- import { PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER, PROP_TYPE_STRING } from '../../constants/props'
4
3
  import { getCS, getStyle, isVisible, requestAF, setStyle } from '../../utils/dom'
5
4
  import { isNull } from '../../utils/inspect'
6
5
  import { mathCeil, mathMax, mathMin } from '../../utils/math'
@@ -26,31 +25,31 @@ export const props = sortKeys({
26
25
  ...formStateProps,
27
26
  ...formTextProps,
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
  }
@@ -14,12 +14,6 @@ import {
14
14
  EVENT_OPTIONS_NO_CAPTURE
15
15
  } from '../../constants/events'
16
16
  import { CODE_ESC } from '../../constants/key-codes'
17
- import {
18
- PROP_TYPE_ARRAY,
19
- PROP_TYPE_BOOLEAN,
20
- PROP_TYPE_OBJECT,
21
- PROP_TYPE_STRING
22
- } from '../../constants/props'
23
17
  import { HTMLElement } from '../../constants/safe-types'
24
18
  import {
25
19
  SLOT_NAME_DEFAULT,
@@ -45,7 +39,6 @@ import { getRootActionEventName, getRootEventName, eventOn, eventOff } from '../
45
39
  import { htmlOrText } from '../../utils/html'
46
40
  import { identity } from '../../utils/identity'
47
41
  import { isString, isUndefinedOrNull } from '../../utils/inspect'
48
- import { makeModelMixin } from '../../utils/model'
49
42
  import { sortKeys } from '../../utils/object'
50
43
  import { observeDom } from '../../utils/observe-dom'
51
44
  import { attrsMixin } from '../../mixins/attrs'
@@ -64,16 +57,8 @@ import { modalManager } from './helpers/modal-manager'
64
57
 
65
58
  // --- Constants ---
66
59
 
67
- const {
68
- mixin: modelMixin,
69
- props: modelProps,
70
- prop: MODEL_PROP_NAME,
71
- event: MODEL_EVENT_NAME
72
- } = makeModelMixin('visible', {
73
- type: PROP_TYPE_BOOLEAN,
74
- defaultValue: false,
75
- event: EVENT_NAME_CHANGE
76
- })
60
+ const MODEL_PROP_NAME = 'visible'
61
+ const MODEL_EVENT_NAME = EVENT_NAME_CHANGE
77
62
 
78
63
  const TRIGGER_BACKDROP = 'backdrop'
79
64
  const TRIGGER_ESC = 'esc'
@@ -101,14 +86,17 @@ const OBSERVER_CONFIG = {
101
86
 
102
87
  export const props = sortKeys({
103
88
  ...idProps,
104
- ...modelProps,
89
+ [MODEL_PROP_NAME]: {
90
+ type: Boolean,
91
+ default: false
92
+ },
105
93
  ariaLabel: {
106
- type: PROP_TYPE_STRING,
94
+ type: String,
107
95
  required: false,
108
96
  default: undefined
109
97
  },
110
98
  autoFocusButton: {
111
- type: PROP_TYPE_STRING,
99
+ type: String,
112
100
  required: false,
113
101
  default: null,
114
102
  validator: value => {
@@ -116,212 +104,212 @@ export const props = sortKeys({
116
104
  }
117
105
  },
118
106
  bodyClass: {
119
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
107
+ type: [Array, Object, String],
120
108
  required: false,
121
109
  default: undefined
122
110
  },
123
111
  busy: {
124
- type: PROP_TYPE_BOOLEAN,
112
+ type: Boolean,
125
113
  required: false,
126
114
  default: false
127
115
  },
128
116
  buttonSize: {
129
- type: PROP_TYPE_STRING,
117
+ type: String,
130
118
  required: false,
131
119
  default: undefined
132
120
  },
133
121
  cancelDisabled: {
134
- type: PROP_TYPE_BOOLEAN,
122
+ type: Boolean,
135
123
  required: false,
136
124
  default: false
137
125
  },
138
126
  cancelTitle: {
139
- type: PROP_TYPE_STRING,
127
+ type: String,
140
128
  required: false,
141
129
  default: 'Cancel'
142
130
  },
143
131
  cancelTitleHtml: {
144
- type: PROP_TYPE_STRING,
132
+ type: String,
145
133
  required: false,
146
134
  default: undefined
147
135
  },
148
136
  cancelVariant: {
149
- type: PROP_TYPE_STRING,
137
+ type: String,
150
138
  required: false,
151
139
  default: 'secondary'
152
140
  },
153
141
  centered: {
154
- type: PROP_TYPE_BOOLEAN,
142
+ type: Boolean,
155
143
  required: false,
156
144
  default: false
157
145
  },
158
146
  contentClass: {
159
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
147
+ type: [Array, Object, String],
160
148
  required: false,
161
149
  default: undefined
162
150
  },
163
151
  dialogClass: {
164
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
152
+ type: [Array, Object, String],
165
153
  required: false,
166
154
  default: undefined
167
155
  },
168
156
  footerClass: {
169
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
157
+ type: [Array, Object, String],
170
158
  required: false,
171
159
  default: undefined
172
160
  },
173
161
  footerTag: {
174
- type: PROP_TYPE_STRING,
162
+ type: String,
175
163
  required: false,
176
164
  default: 'footer'
177
165
  },
178
166
  headerClass: {
179
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
167
+ type: [Array, Object, String],
180
168
  required: false,
181
169
  default: undefined
182
170
  },
183
171
  headerCloseContent: {
184
- type: PROP_TYPE_STRING,
172
+ type: String,
185
173
  required: false,
186
174
  default: '×'
187
175
  },
188
176
  headerCloseLabel: {
189
- type: PROP_TYPE_STRING,
177
+ type: String,
190
178
  required: false,
191
179
  default: 'Close'
192
180
  },
193
181
  headerTag: {
194
- type: PROP_TYPE_STRING,
182
+ type: String,
195
183
  required: false,
196
184
  default: 'header'
197
185
  },
198
186
  // TODO: Rename to `noBackdrop` and deprecate `hideBackdrop`
199
187
  hideBackdrop: {
200
- type: PROP_TYPE_BOOLEAN,
188
+ type: Boolean,
201
189
  required: false,
202
190
  default: false
203
191
  },
204
192
  // TODO: Rename to `noFooter` and deprecate `hideFooter`
205
193
  hideFooter: {
206
- type: PROP_TYPE_BOOLEAN,
194
+ type: Boolean,
207
195
  required: false,
208
196
  default: false
209
197
  },
210
198
  // TODO: Rename to `noHeader` and deprecate `hideHeader`
211
199
  hideHeader: {
212
- type: PROP_TYPE_BOOLEAN,
200
+ type: Boolean,
213
201
  required: false,
214
202
  default: false
215
203
  },
216
204
  // TODO: Rename to `noHeaderClose` and deprecate `hideHeaderClose`
217
205
  hideHeaderClose: {
218
- type: PROP_TYPE_BOOLEAN,
206
+ type: Boolean,
219
207
  required: false,
220
208
  default: false
221
209
  },
222
210
  ignoreEnforceFocusSelector: {
223
- type: [PROP_TYPE_ARRAY, PROP_TYPE_STRING],
211
+ type: [Array, String],
224
212
  required: false,
225
213
  default: undefined
226
214
  },
227
215
  lazy: {
228
- type: PROP_TYPE_BOOLEAN,
216
+ type: Boolean,
229
217
  required: false,
230
218
  default: false
231
219
  },
232
220
  modalClass: {
233
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
221
+ type: [Array, Object, String],
234
222
  required: false,
235
223
  default: undefined
236
224
  },
237
225
  noCloseOnBackdrop: {
238
- type: PROP_TYPE_BOOLEAN,
226
+ type: Boolean,
239
227
  required: false,
240
228
  default: false
241
229
  },
242
230
  noCloseOnEsc: {
243
- type: PROP_TYPE_BOOLEAN,
231
+ type: Boolean,
244
232
  required: false,
245
233
  default: false
246
234
  },
247
235
  noEnforceFocus: {
248
- type: PROP_TYPE_BOOLEAN,
236
+ type: Boolean,
249
237
  required: false,
250
238
  default: false
251
239
  },
252
240
  noFade: {
253
- type: PROP_TYPE_BOOLEAN,
241
+ type: Boolean,
254
242
  required: false,
255
243
  default: false
256
244
  },
257
245
  noStacking: {
258
- type: PROP_TYPE_BOOLEAN,
246
+ type: Boolean,
259
247
  required: false,
260
248
  default: false
261
249
  },
262
250
  okDisabled: {
263
- type: PROP_TYPE_BOOLEAN,
251
+ type: Boolean,
264
252
  required: false,
265
253
  default: false
266
254
  },
267
255
  okOnly: {
268
- type: PROP_TYPE_BOOLEAN,
256
+ type: Boolean,
269
257
  required: false,
270
258
  default: false
271
259
  },
272
260
  okTitle: {
273
- type: PROP_TYPE_STRING,
261
+ type: String,
274
262
  required: false,
275
263
  default: 'OK'
276
264
  },
277
265
  okTitleHtml: {
278
- type: PROP_TYPE_STRING,
266
+ type: String,
279
267
  required: false,
280
268
  default: undefined
281
269
  },
282
270
  okVariant: {
283
- type: PROP_TYPE_STRING,
271
+ type: String,
284
272
  required: false,
285
273
  default: 'primary'
286
274
  },
287
275
  // HTML Element, CSS selector string or Vue component instance
288
276
  returnFocus: {
289
- type: [HTMLElement, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
277
+ type: [HTMLElement, Object, String],
290
278
  required: false,
291
279
  default: undefined
292
280
  },
293
281
  scrollable: {
294
- type: PROP_TYPE_BOOLEAN,
282
+ type: Boolean,
295
283
  required: false,
296
284
  default: false
297
285
  },
298
286
  size: {
299
- type: PROP_TYPE_STRING,
287
+ type: String,
300
288
  required: false,
301
289
  default: 'md'
302
290
  },
303
291
  static: {
304
- type: PROP_TYPE_BOOLEAN,
292
+ type: Boolean,
305
293
  required: false,
306
294
  default: false
307
295
  },
308
296
  title: {
309
- type: PROP_TYPE_STRING,
297
+ type: String,
310
298
  required: false,
311
299
  default: undefined
312
300
  },
313
301
  titleClass: {
314
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
302
+ type: [Array, Object, String],
315
303
  required: false,
316
304
  default: undefined
317
305
  },
318
306
  titleHtml: {
319
- type: PROP_TYPE_STRING,
307
+ type: String,
320
308
  required: false,
321
309
  default: undefined
322
310
  },
323
311
  titleTag: {
324
- type: PROP_TYPE_STRING,
312
+ type: String,
325
313
  required: false,
326
314
  default: 'h5'
327
315
  }
@@ -335,13 +323,16 @@ export const BModal = /*#__PURE__*/ extend({
335
323
  mixins: [
336
324
  attrsMixin,
337
325
  idMixin,
338
- modelMixin,
339
326
  listenOnDocumentMixin,
340
327
  listenOnRootMixin,
341
328
  listenOnWindowMixin,
342
329
  normalizeSlotMixin,
343
330
  scopedStyleMixin
344
331
  ],
332
+ model: {
333
+ prop: MODEL_PROP_NAME,
334
+ event: MODEL_EVENT_NAME
335
+ },
345
336
  inheritAttrs: false,
346
337
  props,
347
338
  data() {
@@ -1,12 +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 {
5
- PROP_TYPE_ARRAY,
6
- PROP_TYPE_NUMBER,
7
- PROP_TYPE_OBJECT,
8
- PROP_TYPE_STRING
9
- } from '../../constants/props'
10
4
  import { SLOT_NAME_TITLE } from '../../constants/slots'
11
5
  import { BTooltip, props as BTooltipProps } from '../tooltip/tooltip'
12
6
  import { BVPopover } from './helpers/bv-popover'
@@ -17,22 +11,22 @@ import { sortKeys } from '../../utils/object'
17
11
  export const props = sortKeys({
18
12
  ...BTooltipProps,
19
13
  content: {
20
- type: PROP_TYPE_STRING,
14
+ type: String,
21
15
  required: false,
22
16
  default: undefined
23
17
  },
24
18
  delay: {
25
- type: [PROP_TYPE_NUMBER, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
19
+ type: [Number, Object, String],
26
20
  required: false,
27
21
  default: () => ({ show: 50, hide: 150 })
28
22
  },
29
23
  placement: {
30
- type: PROP_TYPE_STRING,
24
+ type: String,
31
25
  required: false,
32
26
  default: 'right'
33
27
  },
34
28
  triggers: {
35
- type: [PROP_TYPE_ARRAY, PROP_TYPE_STRING],
29
+ type: [Array, String],
36
30
  required: false,
37
31
  default: EVENT_NAME_CLICK
38
32
  }
@@ -1,6 +1,5 @@
1
1
  import { extend } from '../../../vue'
2
2
  import { MODEL_EVENT_NAME_PREFIX } from '../../../constants/events'
3
- import { PROP_TYPE_BOOLEAN } from '../../../constants/props'
4
3
  import { SLOT_NAME_TABLE_BUSY } from '../../../constants/slots'
5
4
  import { stopEvent } from '../../../utils/events'
6
5
  import { isFunction } from '../../../utils/inspect'
@@ -16,7 +15,7 @@ const MODEL_EVENT_NAME_BUSY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_BUSY
16
15
 
17
16
  export const props = {
18
17
  [MODEL_PROP_NAME_BUSY]: {
19
- type: PROP_TYPE_BOOLEAN,
18
+ type: Boolean,
20
19
  required: false,
21
20
  default: false
22
21
  }
@@ -1,5 +1,4 @@
1
1
  import { extend } from '../../../vue'
2
- import { PROP_TYPE_STRING } from '../../../constants/props'
3
2
  import { SLOT_NAME_TABLE_CAPTION } from '../../../constants/slots'
4
3
  import { htmlOrText } from '../../../utils/html'
5
4
 
@@ -7,12 +6,12 @@ import { htmlOrText } from '../../../utils/html'
7
6
 
8
7
  export const props = {
9
8
  caption: {
10
- type: PROP_TYPE_STRING,
9
+ type: String,
11
10
  required: false,
12
11
  default: undefined
13
12
  },
14
13
  captionHtml: {
15
- type: PROP_TYPE_STRING,
14
+ type: String,
16
15
  required: false,
17
16
  default: undefined
18
17
  }
@@ -1,5 +1,4 @@
1
1
  import { extend } from '../../../vue'
2
- import { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props'
3
2
  import {
4
3
  SLOT_NAME_EMPTY,
5
4
  SLOT_NAME_EMPTYFILTERED,
@@ -15,27 +14,27 @@ import { BTd } from '../td'
15
14
 
16
15
  export const props = {
17
16
  emptyFilteredHtml: {
18
- type: PROP_TYPE_STRING,
17
+ type: String,
19
18
  required: false,
20
19
  default: undefined
21
20
  },
22
21
  emptyFilteredText: {
23
- type: PROP_TYPE_STRING,
22
+ type: String,
24
23
  required: false,
25
24
  default: 'There are no records matching your request'
26
25
  },
27
26
  emptyHtml: {
28
- type: PROP_TYPE_STRING,
27
+ type: String,
29
28
  required: false,
30
29
  default: undefined
31
30
  },
32
31
  emptyText: {
33
- type: PROP_TYPE_STRING,
32
+ type: String,
34
33
  required: false,
35
34
  default: 'There are no records to show'
36
35
  },
37
36
  showEmpty: {
38
- type: PROP_TYPE_BOOLEAN,
37
+ type: Boolean,
39
38
  required: false,
40
39
  default: false
41
40
  }
@@ -1,14 +1,6 @@
1
1
  import { extend } from '../../../vue'
2
2
  import { NAME_TABLE } from '../../../constants/components'
3
3
  import { EVENT_NAME_FILTERED } from '../../../constants/events'
4
- import {
5
- PROP_TYPE_REG_EXP,
6
- PROP_TYPE_ARRAY,
7
- PROP_TYPE_FUNCTION,
8
- PROP_TYPE_NUMBER,
9
- PROP_TYPE_OBJECT,
10
- PROP_TYPE_STRING
11
- } from '../../../constants/props'
12
4
  import { RX_DIGITS, RX_SPACES } from '../../../constants/regex'
13
5
  import { concat } from '../../../utils/array'
14
6
  import { cloneDeep } from '../../../utils/clone-deep'
@@ -29,28 +21,28 @@ const DEBOUNCE_DEPRECATED_MSG =
29
21
 
30
22
  export const props = {
31
23
  filter: {
32
- type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING, PROP_TYPE_REG_EXP],
24
+ type: [Array, Object, String, RegExp],
33
25
  required: false,
34
26
  default: undefined
35
27
  },
36
28
  filterDebounce: {
37
- type: [PROP_TYPE_NUMBER, PROP_TYPE_STRING],
29
+ type: [Number, String],
38
30
  required: false,
39
31
  default: 0,
40
32
  validator: value => RX_DIGITS.test(String(value))
41
33
  },
42
34
  filterFunction: {
43
- type: PROP_TYPE_FUNCTION,
35
+ type: Function,
44
36
  required: false,
45
37
  default: undefined
46
38
  },
47
39
  filterIgnoredFields: {
48
- type: PROP_TYPE_ARRAY,
40
+ type: Array,
49
41
  required: false,
50
42
  default: () => []
51
43
  },
52
44
  filterIncludedFields: {
53
- type: PROP_TYPE_ARRAY,
45
+ type: Array,
54
46
  required: false,
55
47
  default: () => []
56
48
  }