@gitlab/ui 132.0.2 → 132.1.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 (73) hide show
  1. package/dist/components/base/link/link.js +2 -2
  2. package/dist/components/dashboards/dashboard_layout/grid_layout/grid_layout.js +3 -3
  3. package/dist/index.css +1 -1
  4. package/dist/index.css.map +1 -1
  5. package/dist/utils/url_utils.js +56 -0
  6. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +5 -2
  7. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +11 -4
  8. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +31 -8
  9. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +15 -4
  10. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +31 -8
  11. package/dist/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +35 -8
  12. package/dist/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +35 -8
  13. package/dist/vendor/bootstrap-vue/src/components/form-group/form-group.js +66 -14
  14. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +4 -2
  15. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +9 -3
  16. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select.js +16 -5
  17. package/dist/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js +10 -3
  18. package/dist/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +26 -7
  19. package/dist/vendor/bootstrap-vue/src/components/popover/popover.js +24 -9
  20. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +5 -2
  21. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +10 -3
  22. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +25 -6
  23. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +20 -5
  24. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +11 -4
  25. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +26 -7
  26. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +21 -7
  27. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +74 -20
  28. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +6 -3
  29. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +71 -16
  30. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +16 -5
  31. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +7 -3
  32. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +26 -7
  33. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +21 -6
  34. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +36 -9
  35. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +10 -3
  36. package/dist/vendor/bootstrap-vue/src/components/transition/bv-transition.js +20 -5
  37. package/dist/vendor/bootstrap-vue/src/components/transporter/transporter.js +24 -9
  38. package/package.json +2 -2
  39. package/src/components/base/link/link.vue +2 -2
  40. package/src/components/dashboards/dashboard_layout/grid_layout/grid_layout.vue +21 -19
  41. package/src/utils/url_utils.js +66 -0
  42. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +5 -2
  43. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +16 -4
  44. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +31 -8
  45. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +15 -4
  46. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +32 -8
  47. package/src/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +35 -8
  48. package/src/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +35 -8
  49. package/src/vendor/bootstrap-vue/src/components/form-group/form-group.js +67 -14
  50. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +4 -2
  51. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +9 -3
  52. package/src/vendor/bootstrap-vue/src/components/form-select/form-select.js +16 -9
  53. package/src/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js +10 -3
  54. package/src/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +26 -7
  55. package/src/vendor/bootstrap-vue/src/components/popover/popover.js +23 -7
  56. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +5 -2
  57. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +10 -3
  58. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +25 -6
  59. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +20 -5
  60. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +11 -4
  61. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +27 -7
  62. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +21 -7
  63. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +72 -18
  64. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +6 -3
  65. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +72 -17
  66. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +18 -6
  67. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +7 -3
  68. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +27 -7
  69. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +21 -6
  70. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +36 -13
  71. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +10 -3
  72. package/src/vendor/bootstrap-vue/src/components/transition/bv-transition.js +20 -5
  73. package/src/vendor/bootstrap-vue/src/components/transporter/transporter.js +22 -6
@@ -1,14 +1,13 @@
1
1
  import { extend } from '../../../vue'
2
2
  import { EVENT_NAME_SORT_CHANGED, MODEL_EVENT_NAME_PREFIX } from '../../../constants/events'
3
3
  import {
4
- PROP_TYPE_ARRAY_STRING,
4
+ PROP_TYPE_ARRAY,
5
5
  PROP_TYPE_BOOLEAN,
6
6
  PROP_TYPE_FUNCTION,
7
7
  PROP_TYPE_OBJECT,
8
8
  PROP_TYPE_STRING
9
9
  } from '../../../constants/props'
10
10
  import { isFunction, isUndefinedOrNull } from '../../../utils/inspect'
11
- import { makeProp } from '../../../utils/props'
12
11
  import { safeVueInstance } from '../../../utils/safe-vue-instance'
13
12
  import { stableSort } from '../../../utils/stable-sort'
14
13
  import { trim } from '../../../utils/string'
@@ -30,36 +29,91 @@ const SORT_DIRECTIONS = [SORT_DIRECTION_ASC, SORT_DIRECTION_DESC, SORT_DIRECTION
30
29
  // --- Props ---
31
30
 
32
31
  export const props = {
33
- labelSortAsc: makeProp(PROP_TYPE_STRING, 'Click to sort ascending'),
34
- labelSortClear: makeProp(PROP_TYPE_STRING, 'Click to clear sorting'),
35
- labelSortDesc: makeProp(PROP_TYPE_STRING, 'Click to sort descending'),
36
- noFooterSorting: makeProp(PROP_TYPE_BOOLEAN, false),
37
- noLocalSorting: makeProp(PROP_TYPE_BOOLEAN, false),
32
+ labelSortAsc: {
33
+ type: PROP_TYPE_STRING,
34
+ required: false,
35
+ default: 'Click to sort ascending'
36
+ },
37
+ labelSortClear: {
38
+ type: PROP_TYPE_STRING,
39
+ required: false,
40
+ default: 'Click to clear sorting'
41
+ },
42
+ labelSortDesc: {
43
+ type: PROP_TYPE_STRING,
44
+ required: false,
45
+ default: 'Click to sort descending'
46
+ },
47
+ noFooterSorting: {
48
+ type: PROP_TYPE_BOOLEAN,
49
+ required: false,
50
+ default: false
51
+ },
52
+ noLocalSorting: {
53
+ type: PROP_TYPE_BOOLEAN,
54
+ required: false,
55
+ default: false
56
+ },
38
57
  // Another prop that should have had a better name
39
58
  // It should be `noSortClear` (on non-sortable headers)
40
59
  // We will need to make sure the documentation is clear on what
41
60
  // this prop does (as well as in the code for future reference)
42
- noSortReset: makeProp(PROP_TYPE_BOOLEAN, false),
43
- [MODEL_PROP_NAME_SORT_BY]: makeProp(PROP_TYPE_STRING),
44
- sortCompare: makeProp(PROP_TYPE_FUNCTION),
61
+ noSortReset: {
62
+ type: PROP_TYPE_BOOLEAN,
63
+ required: false,
64
+ default: false
65
+ },
66
+ [MODEL_PROP_NAME_SORT_BY]: {
67
+ type: PROP_TYPE_STRING,
68
+ required: false,
69
+ default: undefined
70
+ },
71
+ sortCompare: {
72
+ type: PROP_TYPE_FUNCTION,
73
+ required: false,
74
+ default: undefined
75
+ },
45
76
  // String: locale code
46
77
  // Array: array of Locale strings
47
- sortCompareLocale: makeProp(PROP_TYPE_ARRAY_STRING),
78
+ sortCompareLocale: {
79
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_STRING],
80
+ required: false,
81
+ default: undefined
82
+ },
48
83
  // Supported localCompare options, see `options` section of:
49
84
  // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare
50
- sortCompareOptions: makeProp(PROP_TYPE_OBJECT, { numeric: true }),
85
+ sortCompareOptions: {
86
+ type: PROP_TYPE_OBJECT,
87
+ required: false,
88
+ default: () => ({ numeric: true })
89
+ },
51
90
  // TODO: Make this tri-state: `true`, `false`, `null`
52
- [MODEL_PROP_NAME_SORT_DESC]: makeProp(PROP_TYPE_BOOLEAN, false),
91
+ [MODEL_PROP_NAME_SORT_DESC]: {
92
+ type: PROP_TYPE_BOOLEAN,
93
+ required: false,
94
+ default: false
95
+ },
53
96
  // This prop is named incorrectly
54
97
  // It should be `initialSortDirection` as it is a bit misleading
55
98
  // (not to mention it screws up the ARIA label on the headers)
56
- sortDirection: makeProp(PROP_TYPE_STRING, SORT_DIRECTION_ASC, value => {
57
- return SORT_DIRECTIONS.includes(value)
58
- }),
99
+ sortDirection: {
100
+ type: PROP_TYPE_STRING,
101
+ required: false,
102
+ default: SORT_DIRECTION_ASC,
103
+ validator: value => SORT_DIRECTIONS.includes(value)
104
+ },
59
105
  // Place the sorting icon on the left of the header cells
60
- sortIconLeft: makeProp(PROP_TYPE_BOOLEAN, false),
106
+ sortIconLeft: {
107
+ type: PROP_TYPE_BOOLEAN,
108
+ required: false,
109
+ default: false
110
+ },
61
111
  // Sort null and undefined to appear last
62
- sortNullLast: makeProp(PROP_TYPE_BOOLEAN, false)
112
+ sortNullLast: {
113
+ type: PROP_TYPE_BOOLEAN,
114
+ required: false,
115
+ default: false
116
+ }
63
117
  }
64
118
 
65
119
  // --- Mixin ---
@@ -1,11 +1,14 @@
1
1
  import { extend } from '../../../vue'
2
- import { PROP_TYPE_BOOLEAN_STRING } from '../../../constants/props'
3
- import { makeProp } from '../../../utils/props'
2
+ import { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props'
4
3
 
5
4
  // --- Props ---
6
5
 
7
6
  export const props = {
8
- stacked: makeProp(PROP_TYPE_BOOLEAN_STRING, false)
7
+ stacked: {
8
+ type: [PROP_TYPE_BOOLEAN, PROP_TYPE_STRING],
9
+ required: false,
10
+ default: false
11
+ }
9
12
  }
10
13
 
11
14
  // --- Mixin ---
@@ -1,13 +1,12 @@
1
1
  import { extend } from '../../../vue'
2
2
  import {
3
- PROP_TYPE_ARRAY_OBJECT_STRING,
3
+ PROP_TYPE_ARRAY,
4
4
  PROP_TYPE_BOOLEAN,
5
- PROP_TYPE_BOOLEAN_STRING,
5
+ PROP_TYPE_OBJECT,
6
6
  PROP_TYPE_STRING
7
7
  } from '../../../constants/props'
8
8
  import { identity } from '../../../utils/identity'
9
9
  import { isBoolean } from '../../../utils/inspect'
10
- import { makeProp } from '../../../utils/props'
11
10
  import { safeVueInstance } from '../../../utils/safe-vue-instance'
12
11
  import { toString } from '../../../utils/string'
13
12
  import { attrsMixin } from '../../../mixins/attrs'
@@ -18,21 +17,77 @@ import { attrsMixin } from '../../../mixins/attrs'
18
17
  // --- Props ---
19
18
 
20
19
  export const props = {
21
- bordered: makeProp(PROP_TYPE_BOOLEAN, false),
22
- borderless: makeProp(PROP_TYPE_BOOLEAN, false),
23
- captionTop: makeProp(PROP_TYPE_BOOLEAN, false),
24
- dark: makeProp(PROP_TYPE_BOOLEAN, false),
25
- fixed: makeProp(PROP_TYPE_BOOLEAN, false),
26
- hover: makeProp(PROP_TYPE_BOOLEAN, false),
27
- noBorderCollapse: makeProp(PROP_TYPE_BOOLEAN, false),
28
- outlined: makeProp(PROP_TYPE_BOOLEAN, false),
29
- responsive: makeProp(PROP_TYPE_BOOLEAN_STRING, false),
30
- small: makeProp(PROP_TYPE_BOOLEAN, false),
20
+ bordered: {
21
+ type: PROP_TYPE_BOOLEAN,
22
+ required: false,
23
+ default: false
24
+ },
25
+ borderless: {
26
+ type: PROP_TYPE_BOOLEAN,
27
+ required: false,
28
+ default: false
29
+ },
30
+ captionTop: {
31
+ type: PROP_TYPE_BOOLEAN,
32
+ required: false,
33
+ default: false
34
+ },
35
+ dark: {
36
+ type: PROP_TYPE_BOOLEAN,
37
+ required: false,
38
+ default: false
39
+ },
40
+ fixed: {
41
+ type: PROP_TYPE_BOOLEAN,
42
+ required: false,
43
+ default: false
44
+ },
45
+ hover: {
46
+ type: PROP_TYPE_BOOLEAN,
47
+ required: false,
48
+ default: false
49
+ },
50
+ noBorderCollapse: {
51
+ type: PROP_TYPE_BOOLEAN,
52
+ required: false,
53
+ default: false
54
+ },
55
+ outlined: {
56
+ type: PROP_TYPE_BOOLEAN,
57
+ required: false,
58
+ default: false
59
+ },
60
+ responsive: {
61
+ type: [PROP_TYPE_BOOLEAN, PROP_TYPE_STRING],
62
+ required: false,
63
+ default: false
64
+ },
65
+ small: {
66
+ type: PROP_TYPE_BOOLEAN,
67
+ required: false,
68
+ default: false
69
+ },
31
70
  // If a string, it is assumed to be the table `max-height` value
32
- stickyHeader: makeProp(PROP_TYPE_BOOLEAN_STRING, false),
33
- striped: makeProp(PROP_TYPE_BOOLEAN, false),
34
- tableClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),
35
- tableVariant: makeProp(PROP_TYPE_STRING)
71
+ stickyHeader: {
72
+ type: [PROP_TYPE_BOOLEAN, PROP_TYPE_STRING],
73
+ required: false,
74
+ default: false
75
+ },
76
+ striped: {
77
+ type: PROP_TYPE_BOOLEAN,
78
+ required: false,
79
+ default: false
80
+ },
81
+ tableClass: {
82
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
83
+ required: false,
84
+ default: undefined
85
+ },
86
+ tableVariant: {
87
+ type: PROP_TYPE_STRING,
88
+ required: false,
89
+ default: undefined
90
+ }
36
91
  }
37
92
 
38
93
  // --- Mixin ---
@@ -5,15 +5,15 @@ import {
5
5
  EVENT_NAME_ROW_UNHOVERED
6
6
  } from '../../../constants/events'
7
7
  import {
8
- PROP_TYPE_ARRAY_OBJECT_STRING,
8
+ PROP_TYPE_ARRAY,
9
9
  PROP_TYPE_FUNCTION,
10
- PROP_TYPE_OBJECT_FUNCTION
10
+ PROP_TYPE_OBJECT,
11
+ PROP_TYPE_STRING
11
12
  } from '../../../constants/props'
12
13
  import { SLOT_NAME_ROW_DETAILS } from '../../../constants/slots'
13
14
  import { useParentMixin } from '../../../mixins/use-parent'
14
15
  import { get } from '../../../utils/get'
15
16
  import { isFunction, isString, isUndefinedOrNull } from '../../../utils/inspect'
16
- import { makeProp } from '../../../utils/props'
17
17
  import { safeVueInstance } from '../../../utils/safe-vue-instance'
18
18
  import { toString } from '../../../utils/string'
19
19
  import { BTr } from '../tr'
@@ -24,9 +24,21 @@ import { FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS }
24
24
  // --- Props ---
25
25
 
26
26
  export const props = {
27
- detailsTdClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),
28
- tbodyTrAttr: makeProp(PROP_TYPE_OBJECT_FUNCTION),
29
- tbodyTrClass: makeProp([...PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION])
27
+ detailsTdClass: {
28
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
29
+ required: false,
30
+ default: undefined
31
+ },
32
+ tbodyTrAttr: {
33
+ type: [PROP_TYPE_OBJECT, PROP_TYPE_FUNCTION],
34
+ required: false,
35
+ default: undefined
36
+ },
37
+ tbodyTrClass: {
38
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING, PROP_TYPE_FUNCTION],
39
+ required: false,
40
+ default: undefined
41
+ }
30
42
  }
31
43
 
32
44
  // --- Mixin ---
@@ -13,13 +13,13 @@ import {
13
13
  CODE_SPACE,
14
14
  CODE_UP
15
15
  } from '../../../constants/key-codes'
16
- import { PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props'
16
+ import { PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../../constants/props'
17
17
  import { from as arrayFrom } from '../../../utils/array'
18
18
  import { attemptFocus, closest, isActiveElement, isElement } from '../../../utils/dom'
19
19
  import { safeVueInstance } from '../../../utils/safe-vue-instance'
20
20
  import { stopEvent } from '../../../utils/events'
21
21
  import { sortKeys } from '../../../utils/object'
22
- import { makeProp, pluckProps } from '../../../utils/props'
22
+ import { pluckProps } from '../../../utils/props'
23
23
  import { BTbody, props as BTbodyProps } from '../tbody'
24
24
  import { filterEvent } from './filter-event'
25
25
  import { textSelectionActive } from './text-selection-active'
@@ -34,7 +34,11 @@ const getCellSlotName = value => `cell(${value || ''})`
34
34
  export const props = sortKeys({
35
35
  ...BTbodyProps,
36
36
  ...tbodyRowProps,
37
- tbodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)
37
+ tbodyClass: {
38
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
39
+ required: false,
40
+ default: undefined
41
+ }
38
42
  })
39
43
 
40
44
  // --- Mixin ---
@@ -1,24 +1,44 @@
1
1
  import { extend } from '../../../vue'
2
2
  import {
3
- PROP_TYPE_ARRAY_OBJECT_STRING,
3
+ PROP_TYPE_ARRAY,
4
4
  PROP_TYPE_BOOLEAN,
5
+ PROP_TYPE_OBJECT,
5
6
  PROP_TYPE_STRING
6
7
  } from '../../../constants/props'
7
8
  import { SLOT_NAME_CUSTOM_FOOT } from '../../../constants/slots'
8
- import { makeProp } from '../../../utils/props'
9
9
  import { BTfoot } from '../tfoot'
10
10
 
11
11
  // --- Props ---
12
12
 
13
13
  export const props = {
14
- footClone: makeProp(PROP_TYPE_BOOLEAN, false),
14
+ footClone: {
15
+ type: PROP_TYPE_BOOLEAN,
16
+ required: false,
17
+ default: false
18
+ },
15
19
  // Any Bootstrap theme variant (or custom)
16
20
  // Falls back to `headRowVariant`
17
- footRowVariant: makeProp(PROP_TYPE_STRING),
21
+ footRowVariant: {
22
+ type: PROP_TYPE_STRING,
23
+ required: false,
24
+ default: undefined
25
+ },
18
26
  // 'dark', 'light', or `null` (or custom)
19
- footVariant: makeProp(PROP_TYPE_STRING),
20
- tfootClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),
21
- tfootTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)
27
+ footVariant: {
28
+ type: PROP_TYPE_STRING,
29
+ required: false,
30
+ default: undefined
31
+ },
32
+ tfootClass: {
33
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
34
+ required: false,
35
+ default: undefined
36
+ },
37
+ tfootTrClass: {
38
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
39
+ required: false,
40
+ default: undefined
41
+ }
22
42
  }
23
43
 
24
44
  // --- Mixin ---
@@ -1,14 +1,13 @@
1
1
  import { extend } from '../../../vue'
2
2
  import { EVENT_NAME_HEAD_CLICKED } from '../../../constants/events'
3
3
  import { CODE_ENTER, CODE_SPACE } from '../../../constants/key-codes'
4
- import { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../../constants/props'
4
+ import { PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../../constants/props'
5
5
  import { SLOT_NAME_THEAD_TOP } from '../../../constants/slots'
6
6
  import { stopEvent } from '../../../utils/events'
7
7
  import { htmlOrText } from '../../../utils/html'
8
8
  import { identity } from '../../../utils/identity'
9
9
  import { isUndefinedOrNull } from '../../../utils/inspect'
10
10
  import { noop } from '../../../utils/noop'
11
- import { makeProp } from '../../../utils/props'
12
11
  import { safeVueInstance } from '../../../utils/safe-vue-instance'
13
12
  import { startCase } from '../../../utils/string'
14
13
  import { BThead } from '../thead'
@@ -28,11 +27,27 @@ const getFootSlotName = value => `foot(${value || ''})`
28
27
 
29
28
  export const props = {
30
29
  // Any Bootstrap theme variant (or custom)
31
- headRowVariant: makeProp(PROP_TYPE_STRING),
30
+ headRowVariant: {
31
+ type: PROP_TYPE_STRING,
32
+ required: false,
33
+ default: undefined
34
+ },
32
35
  // 'light', 'dark' or `null` (or custom)
33
- headVariant: makeProp(PROP_TYPE_STRING),
34
- theadClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),
35
- theadTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)
36
+ headVariant: {
37
+ type: PROP_TYPE_STRING,
38
+ required: false,
39
+ default: undefined
40
+ },
41
+ theadClass: {
42
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
43
+ required: false,
44
+ default: undefined
45
+ },
46
+ theadTrClass: {
47
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
48
+ required: false,
49
+ default: undefined
50
+ }
36
51
  }
37
52
 
38
53
  // --- Mixin ---
@@ -15,16 +15,11 @@ import {
15
15
  EVENT_NAME_SHOWN
16
16
  } from '../../../constants/events'
17
17
  import { onInstanceDestroy } from '../../../utils/on-instance-destroy'
18
- import {
19
- PROP_TYPE_ARRAY_STRING,
20
- PROP_TYPE_NUMBER_STRING,
21
- PROP_TYPE_STRING
22
- } from '../../../constants/props'
18
+ import { PROP_TYPE_ARRAY, PROP_TYPE_NUMBER, PROP_TYPE_STRING } from '../../../constants/props'
23
19
  import { HTMLElement, SVGElement } from '../../../constants/safe-types'
24
20
  import { useParentMixin } from '../../../mixins/use-parent'
25
21
  import { getCS, requestAF, select } from '../../../utils/dom'
26
22
  import { toFloat } from '../../../utils/number'
27
- import { makeProp } from '../../../utils/props'
28
23
  import { BVTransition } from '../../transition/bv-transition'
29
24
 
30
25
  // --- Constants ---
@@ -66,17 +61,45 @@ const OffsetMap = {
66
61
  export const props = {
67
62
  // The minimum distance (in `px`) from the edge of the
68
63
  // tooltip/popover that the arrow can be positioned
69
- arrowPadding: makeProp(PROP_TYPE_NUMBER_STRING, 6),
64
+ arrowPadding: {
65
+ type: [PROP_TYPE_NUMBER, PROP_TYPE_STRING],
66
+ required: false,
67
+ default: 6
68
+ },
70
69
  // 'scrollParent', 'viewport', 'window', or `Element`
71
- boundary: makeProp([HTMLElement, PROP_TYPE_STRING], 'scrollParent'),
70
+ boundary: {
71
+ type: [HTMLElement, PROP_TYPE_STRING],
72
+ required: false,
73
+ default: 'scrollParent'
74
+ },
72
75
  // Tooltip/popover will try and stay away from
73
76
  // boundary edge by this many pixels
74
- boundaryPadding: makeProp(PROP_TYPE_NUMBER_STRING, 5),
75
- fallbackPlacement: makeProp(PROP_TYPE_ARRAY_STRING, 'flip'),
76
- offset: makeProp(PROP_TYPE_NUMBER_STRING, 0),
77
- placement: makeProp(PROP_TYPE_STRING, 'top'),
77
+ boundaryPadding: {
78
+ type: [PROP_TYPE_NUMBER, PROP_TYPE_STRING],
79
+ required: false,
80
+ default: 5
81
+ },
82
+ fallbackPlacement: {
83
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_STRING],
84
+ required: false,
85
+ default: 'flip'
86
+ },
87
+ offset: {
88
+ type: [PROP_TYPE_NUMBER, PROP_TYPE_STRING],
89
+ required: false,
90
+ default: 0
91
+ },
92
+ placement: {
93
+ type: PROP_TYPE_STRING,
94
+ required: false,
95
+ default: 'top'
96
+ },
78
97
  // Element that the tooltip/popover is positioned relative to
79
- target: makeProp([HTMLElement, SVGElement])
98
+ target: {
99
+ type: [HTMLElement, SVGElement],
100
+ required: false,
101
+ default: undefined
102
+ }
80
103
  }
81
104
 
82
105
  // --- Main component ---
@@ -8,7 +8,6 @@ import {
8
8
  } from '../../../constants/events'
9
9
  import { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../../constants/props'
10
10
  import { isFunction } from '../../../utils/inspect'
11
- import { makeProp } from '../../../utils/props'
12
11
  import { scopedStyleMixin } from '../../../mixins/scoped-style'
13
12
  import { BVPopper } from './bv-popper'
14
13
 
@@ -16,9 +15,17 @@ import { BVPopper } from './bv-popper'
16
15
 
17
16
  export const props = {
18
17
  // Used only by the directive versions
19
- html: makeProp(PROP_TYPE_BOOLEAN, false),
18
+ html: {
19
+ type: PROP_TYPE_BOOLEAN,
20
+ required: false,
21
+ default: false
22
+ },
20
23
  // Other non-reactive (while open) props are pulled in from BVPopper
21
- id: makeProp(PROP_TYPE_STRING)
24
+ id: {
25
+ type: PROP_TYPE_STRING,
26
+ required: false,
27
+ default: undefined
28
+ }
22
29
  }
23
30
 
24
31
  // --- Main component ---
@@ -8,7 +8,6 @@ import { extend, mergeData } from '../../vue'
8
8
  import { NAME_TRANSITION } from '../../constants/components'
9
9
  import { PROP_TYPE_BOOLEAN, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props'
10
10
  import { isPlainObject } from '../../utils/inspect'
11
- import { makeProp } from '../../utils/props'
12
11
 
13
12
  // --- Constants ---
14
13
 
@@ -32,14 +31,30 @@ const FADE_PROPS = {
32
31
 
33
32
  export const props = {
34
33
  // Has no effect if `trans-props` provided
35
- appear: makeProp(PROP_TYPE_BOOLEAN, false),
34
+ appear: {
35
+ type: PROP_TYPE_BOOLEAN,
36
+ required: false,
37
+ default: false
38
+ },
36
39
  // Can be overridden by user supplied `trans-props`
37
- mode: makeProp(PROP_TYPE_STRING),
40
+ mode: {
41
+ type: PROP_TYPE_STRING,
42
+ required: false,
43
+ default: undefined
44
+ },
38
45
  // Only applicable to the built in transition
39
46
  // Has no effect if `trans-props` provided
40
- noFade: makeProp(PROP_TYPE_BOOLEAN, false),
47
+ noFade: {
48
+ type: PROP_TYPE_BOOLEAN,
49
+ required: false,
50
+ default: false
51
+ },
41
52
  // For user supplied transitions (if needed)
42
- transProps: makeProp(PROP_TYPE_OBJECT)
53
+ transProps: {
54
+ type: PROP_TYPE_OBJECT,
55
+ required: false,
56
+ default: undefined
57
+ }
43
58
  }
44
59
 
45
60
  const hasAnimateSupport = typeof Element !== 'undefined' && Boolean(Element.prototype.animate)
@@ -2,8 +2,9 @@ import { isVue3, extend } from '../../vue'
2
2
  import { NAME_TRANSPORTER, NAME_TRANSPORTER_TARGET } from '../../constants/components'
3
3
  import { IS_BROWSER } from '../../constants/env'
4
4
  import {
5
- PROP_TYPE_ARRAY_FUNCTION,
5
+ PROP_TYPE_ARRAY,
6
6
  PROP_TYPE_BOOLEAN,
7
+ PROP_TYPE_FUNCTION,
7
8
  PROP_TYPE_STRING
8
9
  } from '../../constants/props'
9
10
  import { HTMLElement } from '../../constants/safe-types'
@@ -12,7 +13,6 @@ import { removeNode, select } from '../../utils/dom'
12
13
  import { identity } from '../../utils/identity'
13
14
  import { isFunction, isString } from '../../utils/inspect'
14
15
  import { normalizeSlotMixin } from '../../mixins/normalize-slot'
15
- import { makeProp } from '../../utils/props'
16
16
  import { createNewChildComponent } from '../../utils/create-new-child-component'
17
17
 
18
18
  // --- Helper components ---
@@ -40,7 +40,11 @@ const BVTransporterTarget = /*#__PURE__*/ extend({
40
40
  props: {
41
41
  // Even though we only support a single root element,
42
42
  // VNodes are always passed as an array
43
- nodes: makeProp(PROP_TYPE_ARRAY_FUNCTION)
43
+ nodes: {
44
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_FUNCTION],
45
+ required: false,
46
+ default: undefined
47
+ }
44
48
  },
45
49
  data: vm => {
46
50
  return {
@@ -70,10 +74,22 @@ export const props = {
70
74
  // String: CSS selector,
71
75
  // HTMLElement: Element reference
72
76
  // Mainly needed for tooltips/popovers inside modals
73
- container: makeProp([HTMLElement, PROP_TYPE_STRING], 'body'),
74
- disabled: makeProp(PROP_TYPE_BOOLEAN, false),
77
+ container: {
78
+ type: [HTMLElement, PROP_TYPE_STRING],
79
+ required: false,
80
+ default: 'body'
81
+ },
82
+ disabled: {
83
+ type: PROP_TYPE_BOOLEAN,
84
+ required: false,
85
+ default: false
86
+ },
75
87
  // This should be set to match the root element type
76
- tag: makeProp(PROP_TYPE_STRING, 'div')
88
+ tag: {
89
+ type: PROP_TYPE_STRING,
90
+ required: false,
91
+ default: 'div'
92
+ }
77
93
  }
78
94
 
79
95
  // --- Main component ---