@gitlab/ui 132.0.2 → 132.0.3

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 (67) hide show
  1. package/dist/components/base/link/link.js +2 -2
  2. package/dist/utils/url_utils.js +56 -0
  3. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +5 -2
  4. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +11 -4
  5. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +31 -8
  6. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +15 -4
  7. package/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +31 -8
  8. package/dist/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +35 -8
  9. package/dist/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +35 -8
  10. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +4 -2
  11. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +9 -3
  12. package/dist/vendor/bootstrap-vue/src/components/form-select/form-select.js +16 -5
  13. package/dist/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js +10 -3
  14. package/dist/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +26 -7
  15. package/dist/vendor/bootstrap-vue/src/components/popover/popover.js +24 -9
  16. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +5 -2
  17. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +10 -3
  18. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +25 -6
  19. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +20 -5
  20. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +11 -4
  21. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +26 -7
  22. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +21 -7
  23. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +74 -20
  24. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +6 -3
  25. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +71 -16
  26. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +16 -5
  27. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +7 -3
  28. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +26 -7
  29. package/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +21 -6
  30. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +36 -9
  31. package/dist/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +10 -3
  32. package/dist/vendor/bootstrap-vue/src/components/transition/bv-transition.js +20 -5
  33. package/dist/vendor/bootstrap-vue/src/components/transporter/transporter.js +24 -9
  34. package/package.json +1 -1
  35. package/src/components/base/link/link.vue +2 -2
  36. package/src/utils/url_utils.js +66 -0
  37. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-divider.js +5 -2
  38. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-form.js +16 -4
  39. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-group.js +31 -8
  40. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js +15 -4
  41. package/src/vendor/bootstrap-vue/src/components/dropdown/dropdown-item-button.js +32 -8
  42. package/src/vendor/bootstrap-vue/src/components/form/form-invalid-feedback.js +35 -8
  43. package/src/vendor/bootstrap-vue/src/components/form/form-valid-feedback.js +35 -8
  44. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option-group.js +4 -2
  45. package/src/vendor/bootstrap-vue/src/components/form-select/form-select-option.js +9 -3
  46. package/src/vendor/bootstrap-vue/src/components/form-select/form-select.js +16 -9
  47. package/src/vendor/bootstrap-vue/src/components/form-select/helpers/mixin-options.js +10 -3
  48. package/src/vendor/bootstrap-vue/src/components/form-textarea/form-textarea.js +26 -7
  49. package/src/vendor/bootstrap-vue/src/components/popover/popover.js +23 -7
  50. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-busy.js +5 -2
  51. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js +10 -3
  52. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-empty.js +25 -6
  53. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js +20 -5
  54. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-pagination.js +11 -4
  55. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-provider.js +27 -7
  56. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-selectable.js +21 -7
  57. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-sorting.js +72 -18
  58. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js +6 -3
  59. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js +72 -17
  60. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js +18 -6
  61. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js +7 -3
  62. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js +27 -7
  63. package/src/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js +21 -6
  64. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-popper.js +36 -13
  65. package/src/vendor/bootstrap-vue/src/components/tooltip/helpers/bv-tooltip-template.js +10 -3
  66. package/src/vendor/bootstrap-vue/src/components/transition/bv-transition.js +20 -5
  67. package/src/vendor/bootstrap-vue/src/components/transporter/transporter.js +22 -6
@@ -1,8 +1,8 @@
1
1
  import { isString, isObject, toString, isBoolean, concat, isFunction } from 'lodash-es';
2
2
  import { SafeLinkDirective, isExternalURL } from '../../../directives/safe_link/safe_link';
3
3
  import { stopEvent } from '../../../utils/utils';
4
+ import { buildQueryString } from '../../../utils/url_utils';
4
5
  import { safeVueInstance, isVue3 } from '../../../utils/vue_utils';
5
- import { stringifyQueryObj } from '../../../vendor/bootstrap-vue/src/utils/router';
6
6
  import { linkVariantOptions, linkVariantUnstyled, linkVariantInline, linkVariantMeta } from '../../../utils/constants';
7
7
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
8
8
 
@@ -175,7 +175,7 @@ var script = {
175
175
  // Fallback to `to.path' + `to.query` + `to.hash` prop (if `to` is an object)
176
176
  if (isObject(to) && (to.path || to.query || to.hash)) {
177
177
  const path = toString(to.path);
178
- const query = stringifyQueryObj(to.query);
178
+ const query = buildQueryString(to.query);
179
179
  let hash = toString(to.hash);
180
180
  hash = !hash || hash.charAt(0) === '#' ? hash : `#${hash}`;
181
181
  return `${path}${query}${hash}` || fallback;
@@ -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 ---
@@ -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 ---
@@ -4,7 +4,6 @@ import { PROP_TYPE_BOOLEAN } from '../../../constants/props';
4
4
  import { SLOT_NAME_TABLE_BUSY } from '../../../constants/slots';
5
5
  import { stopEvent } from '../../../utils/events';
6
6
  import { isFunction } from '../../../utils/inspect';
7
- import { makeProp } from '../../../utils/props';
8
7
  import { BTr } from '../tr';
9
8
  import { BTd } from '../td';
10
9
 
@@ -16,7 +15,11 @@ const MODEL_EVENT_NAME_BUSY = MODEL_EVENT_NAME_PREFIX + MODEL_PROP_NAME_BUSY;
16
15
  // --- Props ---
17
16
 
18
17
  const props = {
19
- [MODEL_PROP_NAME_BUSY]: makeProp(PROP_TYPE_BOOLEAN, false)
18
+ [MODEL_PROP_NAME_BUSY]: {
19
+ type: PROP_TYPE_BOOLEAN,
20
+ required: false,
21
+ default: false
22
+ }
20
23
  };
21
24
 
22
25
  // --- Mixin ---
@@ -2,13 +2,20 @@ import { extend } from '../../../vue';
2
2
  import { PROP_TYPE_STRING } from '../../../constants/props';
3
3
  import { SLOT_NAME_TABLE_CAPTION } from '../../../constants/slots';
4
4
  import { htmlOrText } from '../../../utils/html';
5
- import { makeProp } from '../../../utils/props';
6
5
 
7
6
  // --- Props ---
8
7
 
9
8
  const props = {
10
- caption: makeProp(PROP_TYPE_STRING),
11
- captionHtml: makeProp(PROP_TYPE_STRING)
9
+ caption: {
10
+ type: PROP_TYPE_STRING,
11
+ required: false,
12
+ default: undefined
13
+ },
14
+ captionHtml: {
15
+ type: PROP_TYPE_STRING,
16
+ required: false,
17
+ default: undefined
18
+ }
12
19
  // `caption-top` is part of table-render mixin (styling)
13
20
  // captionTop: makeProp(PROP_TYPE_BOOLEAN, false)
14
21
  };