@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
@@ -0,0 +1,56 @@
1
+ const RX_ENCODE_REVERSE = /[!'()*]/g;
2
+ const RX_ENCODED_COMMA = /%2C/g;
3
+ const encodeReserveReplacer = c => `%${c.charCodeAt(0).toString(16)}`;
4
+ const encode = str => encodeURIComponent(String(str)).replace(RX_ENCODE_REVERSE, encodeReserveReplacer).replace(RX_ENCODED_COMMA, ',');
5
+
6
+ /**
7
+ * Converts a query parameter object into a URL query string prefixed with `?`.
8
+ *
9
+ * Uses RFC 3986-compliant encoding which additionally escapes `[!'()*]` and preserves commas,
10
+ * unlike `URLSearchParams` which cannot represent key-only params (`?foo`) or skip `undefined` values.
11
+ *
12
+ * - `undefined` values are omitted entirely.
13
+ * - `null` values produce key-only entries (e.g., `?foo`).
14
+ * - Array values repeat the key for each element (e.g., `?bar=a&bar=b`).
15
+ *
16
+ * @param {Object<string, string | number | null | undefined | Array<string | number | null | undefined>>} obj
17
+ * An object whose keys are query parameter names and values are parameter values.
18
+ * @returns {string} A query string prefixed with `?`, or an empty string if the input
19
+ * is not a plain object or produces no parameters.
20
+ *
21
+ * @example
22
+ * buildQueryString({ page: 1, search: 'hello world' })
23
+ * // => '?page=1&search=hello%20world'
24
+ *
25
+ * @example
26
+ * buildQueryString({ foo: null, bar: undefined })
27
+ * // => '?foo'
28
+ */
29
+ const buildQueryString = obj => {
30
+ if (obj === null || typeof obj !== 'object' || Array.isArray(obj)) {
31
+ return '';
32
+ }
33
+ const query = Object.keys(obj).map(key => {
34
+ const value = obj[key];
35
+ if (value === undefined) {
36
+ return '';
37
+ }
38
+ if (value === null) {
39
+ return encode(key);
40
+ }
41
+ if (Array.isArray(value)) {
42
+ return value.reduce((results, item) => {
43
+ if (item === null) {
44
+ results.push(encode(key));
45
+ } else if (item !== undefined) {
46
+ results.push(`${encode(key)}=${encode(item)}`);
47
+ }
48
+ return results;
49
+ }, []).join('&');
50
+ }
51
+ return `${encode(key)}=${encode(value)}`;
52
+ }).filter(x => x.length > 0).join('&');
53
+ return query ? `?${query}` : '';
54
+ };
55
+
56
+ export { buildQueryString };
@@ -1,13 +1,16 @@
1
1
  import { extend, mergeData } from '../../vue';
2
2
  import { NAME_DROPDOWN_DIVIDER } from '../../constants/components';
3
3
  import { PROP_TYPE_STRING } from '../../constants/props';
4
- import { makeProp } from '../../utils/props';
5
4
  import { omit } from '../../utils/object';
6
5
 
7
6
  // --- Props ---
8
7
 
9
8
  const props = {
10
- tag: makeProp(PROP_TYPE_STRING, 'hr')
9
+ tag: {
10
+ type: PROP_TYPE_STRING,
11
+ required: false,
12
+ default: 'hr'
13
+ }
11
14
  };
12
15
 
13
16
  // --- Main component ---
@@ -1,16 +1,23 @@
1
1
  import { extend, mergeData } from '../../vue';
2
2
  import { NAME_DROPDOWN_FORM } from '../../constants/components';
3
- import { PROP_TYPE_BOOLEAN, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../constants/props';
3
+ import { PROP_TYPE_BOOLEAN, PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING } from '../../constants/props';
4
4
  import { sortKeys, omit } from '../../utils/object';
5
- import { makeProp } from '../../utils/props';
6
5
  import { props as props$1, BForm } from '../form/form';
7
6
 
8
7
  // --- Props ---
9
8
 
10
9
  const props = sortKeys({
11
10
  ...props$1,
12
- disabled: makeProp(PROP_TYPE_BOOLEAN, false),
13
- formClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)
11
+ disabled: {
12
+ type: PROP_TYPE_BOOLEAN,
13
+ required: false,
14
+ default: false
15
+ },
16
+ formClass: {
17
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
18
+ required: false,
19
+ default: undefined
20
+ }
14
21
  });
15
22
 
16
23
  // --- Main component ---
@@ -1,22 +1,45 @@
1
1
  import { extend, mergeData } from '../../vue';
2
2
  import { NAME_DROPDOWN_GROUP } from '../../constants/components';
3
- import { PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../constants/props';
3
+ import { PROP_TYPE_STRING, PROP_TYPE_ARRAY, PROP_TYPE_OBJECT } from '../../constants/props';
4
4
  import { SLOT_NAME_HEADER, SLOT_NAME_DEFAULT } from '../../constants/slots';
5
5
  import { isTag } from '../../utils/dom';
6
6
  import { identity } from '../../utils/identity';
7
7
  import { hasNormalizedSlot, normalizeSlot } from '../../utils/normalize-slot';
8
8
  import { omit } from '../../utils/object';
9
- import { makeProp } from '../../utils/props';
10
9
 
11
10
  // --- Props ---
12
11
 
13
12
  const props = {
14
- ariaDescribedby: makeProp(PROP_TYPE_STRING),
15
- header: makeProp(PROP_TYPE_STRING),
16
- headerClasses: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),
17
- headerTag: makeProp(PROP_TYPE_STRING, 'header'),
18
- headerVariant: makeProp(PROP_TYPE_STRING),
19
- id: makeProp(PROP_TYPE_STRING)
13
+ ariaDescribedby: {
14
+ type: PROP_TYPE_STRING,
15
+ required: false,
16
+ default: undefined
17
+ },
18
+ header: {
19
+ type: PROP_TYPE_STRING,
20
+ required: false,
21
+ default: undefined
22
+ },
23
+ headerClasses: {
24
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
25
+ required: false,
26
+ default: undefined
27
+ },
28
+ headerTag: {
29
+ type: PROP_TYPE_STRING,
30
+ required: false,
31
+ default: 'header'
32
+ },
33
+ headerVariant: {
34
+ type: PROP_TYPE_STRING,
35
+ required: false,
36
+ default: undefined
37
+ },
38
+ id: {
39
+ type: PROP_TYPE_STRING,
40
+ required: false,
41
+ default: undefined
42
+ }
20
43
  };
21
44
 
22
45
  // --- Main component ---
@@ -3,14 +3,25 @@ import { NAME_DROPDOWN_HEADER } from '../../constants/components';
3
3
  import { PROP_TYPE_STRING } from '../../constants/props';
4
4
  import { isTag } from '../../utils/dom';
5
5
  import { omit } from '../../utils/object';
6
- import { makeProp } from '../../utils/props';
7
6
 
8
7
  // --- Props ---
9
8
 
10
9
  const props = {
11
- id: makeProp(PROP_TYPE_STRING),
12
- tag: makeProp(PROP_TYPE_STRING, 'header'),
13
- variant: makeProp(PROP_TYPE_STRING)
10
+ id: {
11
+ type: PROP_TYPE_STRING,
12
+ required: false,
13
+ default: undefined
14
+ },
15
+ tag: {
16
+ type: PROP_TYPE_STRING,
17
+ required: false,
18
+ default: 'header'
19
+ },
20
+ variant: {
21
+ type: PROP_TYPE_STRING,
22
+ required: false,
23
+ default: undefined
24
+ }
14
25
  };
15
26
 
16
27
  // --- Main component ---
@@ -1,20 +1,43 @@
1
1
  import { extend } from '../../vue';
2
2
  import { NAME_DROPDOWN_ITEM_BUTTON } from '../../constants/components';
3
3
  import { EVENT_NAME_CLICK } from '../../constants/events';
4
- import { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../constants/props';
5
- import { makeProp } from '../../utils/props';
4
+ import { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING, PROP_TYPE_ARRAY, PROP_TYPE_OBJECT } from '../../constants/props';
6
5
  import { attrsMixin } from '../../mixins/attrs';
7
6
  import { normalizeSlotMixin } from '../../mixins/normalize-slot';
8
7
 
9
8
  // --- Props ---
10
9
 
11
10
  const props = {
12
- active: makeProp(PROP_TYPE_BOOLEAN, false),
13
- activeClass: makeProp(PROP_TYPE_STRING, 'active'),
14
- buttonClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),
15
- disabled: makeProp(PROP_TYPE_BOOLEAN, false),
16
- variant: makeProp(PROP_TYPE_STRING),
17
- role: makeProp(PROP_TYPE_STRING, 'menuitem')
11
+ active: {
12
+ type: PROP_TYPE_BOOLEAN,
13
+ required: false,
14
+ default: false
15
+ },
16
+ activeClass: {
17
+ type: PROP_TYPE_STRING,
18
+ required: false,
19
+ default: 'active'
20
+ },
21
+ buttonClass: {
22
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
23
+ required: false,
24
+ default: undefined
25
+ },
26
+ disabled: {
27
+ type: PROP_TYPE_BOOLEAN,
28
+ required: false,
29
+ default: false
30
+ },
31
+ variant: {
32
+ type: PROP_TYPE_STRING,
33
+ required: false,
34
+ default: undefined
35
+ },
36
+ role: {
37
+ type: PROP_TYPE_STRING,
38
+ required: false,
39
+ default: 'menuitem'
40
+ }
18
41
  };
19
42
 
20
43
  // --- Main component ---
@@ -1,19 +1,46 @@
1
1
  import { extend, mergeData } from '../../vue';
2
2
  import { NAME_FORM_INVALID_FEEDBACK } from '../../constants/components';
3
3
  import { PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';
4
- import { makeProp } from '../../utils/props';
5
4
 
6
5
  // --- Props ---
7
6
 
8
7
  const props = {
9
- ariaLive: makeProp(PROP_TYPE_STRING),
10
- forceShow: makeProp(PROP_TYPE_BOOLEAN, false),
11
- id: makeProp(PROP_TYPE_STRING),
12
- role: makeProp(PROP_TYPE_STRING),
8
+ ariaLive: {
9
+ type: PROP_TYPE_STRING,
10
+ required: false,
11
+ default: undefined
12
+ },
13
+ forceShow: {
14
+ type: PROP_TYPE_BOOLEAN,
15
+ required: false,
16
+ default: false
17
+ },
18
+ id: {
19
+ type: PROP_TYPE_STRING,
20
+ required: false,
21
+ default: undefined
22
+ },
23
+ role: {
24
+ type: PROP_TYPE_STRING,
25
+ required: false,
26
+ default: undefined
27
+ },
13
28
  // Tri-state prop: `true`, `false`, or `null`
14
- state: makeProp(PROP_TYPE_BOOLEAN, null),
15
- tag: makeProp(PROP_TYPE_STRING, 'div'),
16
- tooltip: makeProp(PROP_TYPE_BOOLEAN, false)
29
+ state: {
30
+ type: PROP_TYPE_BOOLEAN,
31
+ required: false,
32
+ default: null
33
+ },
34
+ tag: {
35
+ type: PROP_TYPE_STRING,
36
+ required: false,
37
+ default: 'div'
38
+ },
39
+ tooltip: {
40
+ type: PROP_TYPE_BOOLEAN,
41
+ required: false,
42
+ default: false
43
+ }
17
44
  };
18
45
 
19
46
  // --- Main component ---
@@ -1,19 +1,46 @@
1
1
  import { extend, mergeData } from '../../vue';
2
2
  import { NAME_FORM_VALID_FEEDBACK } from '../../constants/components';
3
3
  import { PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';
4
- import { makeProp } from '../../utils/props';
5
4
 
6
5
  // --- Props ---
7
6
 
8
7
  const props = {
9
- ariaLive: makeProp(PROP_TYPE_STRING),
10
- forceShow: makeProp(PROP_TYPE_BOOLEAN, false),
11
- id: makeProp(PROP_TYPE_STRING),
12
- role: makeProp(PROP_TYPE_STRING),
8
+ ariaLive: {
9
+ type: PROP_TYPE_STRING,
10
+ required: false,
11
+ default: undefined
12
+ },
13
+ forceShow: {
14
+ type: PROP_TYPE_BOOLEAN,
15
+ required: false,
16
+ default: false
17
+ },
18
+ id: {
19
+ type: PROP_TYPE_STRING,
20
+ required: false,
21
+ default: undefined
22
+ },
23
+ role: {
24
+ type: PROP_TYPE_STRING,
25
+ required: false,
26
+ default: undefined
27
+ },
13
28
  // Tri-state prop: `true`, `false`, or `null`
14
- state: makeProp(PROP_TYPE_BOOLEAN, null),
15
- tag: makeProp(PROP_TYPE_STRING, 'div'),
16
- tooltip: makeProp(PROP_TYPE_BOOLEAN, false)
29
+ state: {
30
+ type: PROP_TYPE_BOOLEAN,
31
+ required: false,
32
+ default: null
33
+ },
34
+ tag: {
35
+ type: PROP_TYPE_STRING,
36
+ required: false,
37
+ default: 'div'
38
+ },
39
+ tooltip: {
40
+ type: PROP_TYPE_BOOLEAN,
41
+ required: false,
42
+ default: false
43
+ }
17
44
  };
18
45
 
19
46
  // --- Main component ---
@@ -1,6 +1,6 @@
1
1
  import { NAME_FORM_GROUP } from '../../constants/components';
2
2
  import { IS_BROWSER } from '../../constants/env';
3
- import { PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../constants/props';
3
+ import { PROP_TYPE_BOOLEAN_NUMBER_STRING, PROP_TYPE_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_ARRAY, PROP_TYPE_OBJECT } from '../../constants/props';
4
4
  import { RX_SPACE_SPLIT } from '../../constants/regex';
5
5
  import { SLOT_NAME_LABEL, SLOT_NAME_INVALID_FEEDBACK, SLOT_NAME_VALID_FEEDBACK, SLOT_NAME_DESCRIPTION, SLOT_NAME_DEFAULT } from '../../constants/slots';
6
6
  import { getBreakpointsUpCached } from '../../utils/config';
@@ -45,19 +45,71 @@ const generateProps = () => sortKeys({
45
45
  props[suffixPropName(breakpoint, 'labelCols')] = makeProp(PROP_TYPE_BOOLEAN_NUMBER_STRING);
46
46
  return props;
47
47
  }, create(null)),
48
- description: makeProp(PROP_TYPE_STRING),
49
- disabled: makeProp(PROP_TYPE_BOOLEAN, false),
50
- feedbackAriaLive: makeProp(PROP_TYPE_STRING, 'assertive'),
51
- invalidFeedback: makeProp(PROP_TYPE_STRING),
52
- label: makeProp(PROP_TYPE_STRING),
53
- labelClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),
54
- labelFor: makeProp(PROP_TYPE_STRING),
55
- labelId: makeProp(PROP_TYPE_STRING),
56
- labelSize: makeProp(PROP_TYPE_STRING),
57
- labelSrOnly: makeProp(PROP_TYPE_BOOLEAN, false),
58
- tooltip: makeProp(PROP_TYPE_BOOLEAN, false),
59
- validFeedback: makeProp(PROP_TYPE_STRING),
60
- validated: makeProp(PROP_TYPE_BOOLEAN, false)
48
+ description: {
49
+ type: PROP_TYPE_STRING,
50
+ required: false,
51
+ default: undefined
52
+ },
53
+ disabled: {
54
+ type: PROP_TYPE_BOOLEAN,
55
+ required: false,
56
+ default: false
57
+ },
58
+ feedbackAriaLive: {
59
+ type: PROP_TYPE_STRING,
60
+ required: false,
61
+ default: 'assertive'
62
+ },
63
+ invalidFeedback: {
64
+ type: PROP_TYPE_STRING,
65
+ required: false,
66
+ default: undefined
67
+ },
68
+ label: {
69
+ type: PROP_TYPE_STRING,
70
+ required: false,
71
+ default: undefined
72
+ },
73
+ labelClass: {
74
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
75
+ required: false,
76
+ default: undefined
77
+ },
78
+ labelFor: {
79
+ type: PROP_TYPE_STRING,
80
+ required: false,
81
+ default: undefined
82
+ },
83
+ labelId: {
84
+ type: PROP_TYPE_STRING,
85
+ required: false,
86
+ default: undefined
87
+ },
88
+ labelSize: {
89
+ type: PROP_TYPE_STRING,
90
+ required: false,
91
+ default: undefined
92
+ },
93
+ labelSrOnly: {
94
+ type: PROP_TYPE_BOOLEAN,
95
+ required: false,
96
+ default: false
97
+ },
98
+ tooltip: {
99
+ type: PROP_TYPE_BOOLEAN,
100
+ required: false,
101
+ default: false
102
+ },
103
+ validFeedback: {
104
+ type: PROP_TYPE_STRING,
105
+ required: false,
106
+ default: undefined
107
+ },
108
+ validated: {
109
+ type: PROP_TYPE_BOOLEAN,
110
+ required: false,
111
+ default: false
112
+ }
61
113
  });
62
114
 
63
115
  // --- Main component ---
@@ -4,7 +4,6 @@ import { PROP_TYPE_STRING } from '../../constants/props';
4
4
  import { SLOT_NAME_FIRST } from '../../constants/slots';
5
5
  import { htmlOrText } from '../../utils/html';
6
6
  import { sortKeys } from '../../utils/object';
7
- import { makeProp } from '../../utils/props';
8
7
  import { props as props$1, formOptionsMixin } from '../../mixins/form-options';
9
8
  import { normalizeSlotMixin } from '../../mixins/normalize-slot';
10
9
  import { BFormSelectOption } from './form-select-option';
@@ -13,7 +12,10 @@ import { BFormSelectOption } from './form-select-option';
13
12
 
14
13
  const props = sortKeys({
15
14
  ...props$1,
16
- label: makeProp(PROP_TYPE_STRING, undefined, true) // Required
15
+ label: {
16
+ type: PROP_TYPE_STRING,
17
+ required: true
18
+ }
17
19
  });
18
20
 
19
21
  // --- Main component ---
@@ -1,13 +1,19 @@
1
1
  import { extend, mergeData } from '../../vue';
2
2
  import { NAME_FORM_SELECT_OPTION } from '../../constants/components';
3
3
  import { PROP_TYPE_BOOLEAN, PROP_TYPE_ANY } from '../../constants/props';
4
- import { makeProp } from '../../utils/props';
5
4
 
6
5
  // --- Props ---
7
6
 
8
7
  const props = {
9
- disabled: makeProp(PROP_TYPE_BOOLEAN, false),
10
- value: makeProp(PROP_TYPE_ANY, undefined, true) // Required
8
+ disabled: {
9
+ type: PROP_TYPE_BOOLEAN,
10
+ required: false,
11
+ default: false
12
+ },
13
+ value: {
14
+ type: PROP_TYPE_ANY,
15
+ required: true
16
+ }
11
17
  };
12
18
 
13
19
  // --- Main component ---
@@ -1,14 +1,13 @@
1
1
  import { extend } from '../../vue';
2
2
  import { NAME_FORM_SELECT } from '../../constants/components';
3
3
  import { EVENT_NAME_CHANGE } from '../../constants/events';
4
- import { PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_NUMBER } from '../../constants/props';
4
+ import { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING, PROP_TYPE_NUMBER } from '../../constants/props';
5
5
  import { SLOT_NAME_FIRST } from '../../constants/slots';
6
6
  import { from } from '../../utils/array';
7
7
  import { attemptFocus, attemptBlur } from '../../utils/dom';
8
8
  import { htmlOrText } from '../../utils/html';
9
9
  import { isArray } from '../../utils/inspect';
10
10
  import { sortKeys } from '../../utils/object';
11
- import { makeProp } from '../../utils/props';
12
11
  import { props as props$3, formControlMixin } from '../../mixins/form-control';
13
12
  import { props as props$4, formCustomMixin } from '../../mixins/form-custom';
14
13
  import { props as props$5, formSizeMixin } from '../../mixins/form-size';
@@ -29,11 +28,23 @@ const props = sortKeys({
29
28
  ...props$4,
30
29
  ...props$5,
31
30
  ...props$6,
32
- ariaInvalid: makeProp(PROP_TYPE_BOOLEAN_STRING, false),
33
- multiple: makeProp(PROP_TYPE_BOOLEAN, false),
31
+ ariaInvalid: {
32
+ type: [PROP_TYPE_BOOLEAN, PROP_TYPE_STRING],
33
+ required: false,
34
+ default: false
35
+ },
36
+ multiple: {
37
+ type: PROP_TYPE_BOOLEAN,
38
+ required: false,
39
+ default: false
40
+ },
34
41
  // Browsers default size to `0`, which shows 4 rows in most browsers in multiple mode
35
42
  // Size of `1` can bork out Firefox
36
- selectSize: makeProp(PROP_TYPE_NUMBER, 0)
43
+ selectSize: {
44
+ type: PROP_TYPE_NUMBER,
45
+ required: false,
46
+ default: 0
47
+ }
37
48
  });
38
49
 
39
50
  // --- Main component ---
@@ -3,15 +3,22 @@ import { PROP_TYPE_STRING } from '../../../constants/props';
3
3
  import { get } from '../../../utils/get';
4
4
  import { isPlainObject, isNull, isUndefined } from '../../../utils/inspect';
5
5
  import { sortKeys } from '../../../utils/object';
6
- import { makeProp } from '../../../utils/props';
7
6
  import { props as props$1, formOptionsMixin } from '../../../mixins/form-options';
8
7
 
9
8
  // --- Props ---
10
9
 
11
10
  const props = sortKeys({
12
11
  ...props$1,
13
- labelField: makeProp(PROP_TYPE_STRING, 'label'),
14
- optionsField: makeProp(PROP_TYPE_STRING, 'options')
12
+ labelField: {
13
+ type: PROP_TYPE_STRING,
14
+ required: false,
15
+ default: 'label'
16
+ },
17
+ optionsField: {
18
+ type: PROP_TYPE_STRING,
19
+ required: false,
20
+ default: 'options'
21
+ }
15
22
  });
16
23
 
17
24
  // --- Mixin ---
@@ -1,12 +1,11 @@
1
1
  import { extend } from '../../vue';
2
2
  import { NAME_FORM_TEXTAREA } from '../../constants/components';
3
- import { PROP_TYPE_NUMBER_STRING, PROP_TYPE_BOOLEAN, PROP_TYPE_STRING } from '../../constants/props';
3
+ import { PROP_TYPE_NUMBER, PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';
4
4
  import { requestAF, isVisible, getCS, getStyle, setStyle } from '../../utils/dom';
5
5
  import { isNull } from '../../utils/inspect';
6
6
  import { mathMax, mathMin, mathCeil } from '../../utils/math';
7
7
  import { toInteger, toFloat } from '../../utils/number';
8
8
  import { sortKeys } from '../../utils/object';
9
- import { makeProp } from '../../utils/props';
10
9
  import { props as props$2, formControlMixin } from '../../mixins/form-control';
11
10
  import { formSelectionMixin } from '../../mixins/form-selection';
12
11
  import { props as props$3, formSizeMixin } from '../../mixins/form-size';
@@ -26,15 +25,35 @@ const props = sortKeys({
26
25
  ...props$3,
27
26
  ...props$4,
28
27
  ...props$5,
29
- maxRows: makeProp(PROP_TYPE_NUMBER_STRING),
28
+ maxRows: {
29
+ type: [PROP_TYPE_NUMBER, PROP_TYPE_STRING],
30
+ required: false,
31
+ default: undefined
32
+ },
30
33
  // When in auto resize mode, disable shrinking to content height
31
- noAutoShrink: makeProp(PROP_TYPE_BOOLEAN, false),
34
+ noAutoShrink: {
35
+ type: PROP_TYPE_BOOLEAN,
36
+ required: false,
37
+ default: false
38
+ },
32
39
  // Disable the resize handle of textarea
33
- noResize: makeProp(PROP_TYPE_BOOLEAN, false),
34
- rows: makeProp(PROP_TYPE_NUMBER_STRING, 2),
40
+ noResize: {
41
+ type: PROP_TYPE_BOOLEAN,
42
+ required: false,
43
+ default: false
44
+ },
45
+ rows: {
46
+ type: [PROP_TYPE_NUMBER, PROP_TYPE_STRING],
47
+ required: false,
48
+ default: 2
49
+ },
35
50
  // 'soft', 'hard' or 'off'
36
51
  // Browser default is 'soft'
37
- wrap: makeProp(PROP_TYPE_STRING, 'soft')
52
+ wrap: {
53
+ type: PROP_TYPE_STRING,
54
+ required: false,
55
+ default: 'soft'
56
+ }
38
57
  });
39
58
 
40
59
  // --- Main component ---
@@ -1,9 +1,8 @@
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_OBJECT_STRING, PROP_TYPE_ARRAY_STRING } from '../../constants/props';
4
+ import { PROP_TYPE_STRING, PROP_TYPE_NUMBER, PROP_TYPE_OBJECT, PROP_TYPE_ARRAY } from '../../constants/props';
5
5
  import { SLOT_NAME_TITLE } from '../../constants/slots';
6
- import { makeProp } from '../../utils/props';
7
6
  import { props as props$1, BTooltip } from '../tooltip/tooltip';
8
7
  import { BVPopover } from './helpers/bv-popover';
9
8
  import { sortKeys } from '../../utils/object';
@@ -12,13 +11,29 @@ import { sortKeys } from '../../utils/object';
12
11
 
13
12
  const props = sortKeys({
14
13
  ...props$1,
15
- content: makeProp(PROP_TYPE_STRING),
16
- delay: makeProp(PROP_TYPE_NUMBER_OBJECT_STRING, {
17
- show: 50,
18
- hide: 150
19
- }),
20
- placement: makeProp(PROP_TYPE_STRING, 'right'),
21
- triggers: makeProp(PROP_TYPE_ARRAY_STRING, EVENT_NAME_CLICK)
14
+ content: {
15
+ type: PROP_TYPE_STRING,
16
+ required: false,
17
+ default: undefined
18
+ },
19
+ delay: {
20
+ type: [PROP_TYPE_NUMBER, PROP_TYPE_OBJECT, PROP_TYPE_STRING],
21
+ required: false,
22
+ default: () => ({
23
+ show: 50,
24
+ hide: 150
25
+ })
26
+ },
27
+ placement: {
28
+ type: PROP_TYPE_STRING,
29
+ required: false,
30
+ default: 'right'
31
+ },
32
+ triggers: {
33
+ type: [PROP_TYPE_ARRAY, PROP_TYPE_STRING],
34
+ required: false,
35
+ default: EVENT_NAME_CLICK
36
+ }
22
37
  });
23
38
 
24
39
  // --- Main component ---