@gitlab/ui 126.3.0 → 126.3.2

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 (46) hide show
  1. package/dist/components/base/avatars_inline/avatars_inline.js +21 -0
  2. package/dist/components/base/badge/badge.js +10 -7
  3. package/dist/components/base/button/button.js +4 -1
  4. package/dist/components/base/drawer/drawer.js +19 -0
  5. package/dist/components/base/dropdown/dropdown_item.js +34 -0
  6. package/dist/components/base/filtered_search/filtered_search.js +4 -2
  7. package/dist/components/base/form/form_input_group/form_input_group.js +6 -0
  8. package/dist/components/base/icon/icon.js +4 -2
  9. package/dist/components/base/illustration/illustration.js +4 -2
  10. package/dist/components/base/label/label.js +26 -6
  11. package/dist/components/base/modal/modal.js +4 -1
  12. package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +8 -4
  13. package/dist/components/base/new_dropdowns/listbox/listbox.js +4 -3
  14. package/dist/components/base/popover/popover.js +15 -0
  15. package/dist/components/base/progress_bar/progress_bar.js +15 -0
  16. package/dist/components/base/search_box_by_type/search_box_by_type.js +20 -0
  17. package/dist/components/base/table/table.js +4 -1
  18. package/dist/components/base/tabs/tab/tab.js +33 -2
  19. package/dist/components/base/token/token.js +3 -0
  20. package/dist/components/dashboards/dashboard_layout/dashboard_layout.js +27 -1
  21. package/dist/components/dashboards/dashboard_layout/grid_layout/grid_layout.js +28 -6
  22. package/dist/utils/utils.js +14 -7
  23. package/package.json +4 -4
  24. package/src/components/base/avatars_inline/avatars_inline.vue +22 -0
  25. package/src/components/base/badge/badge.vue +9 -8
  26. package/src/components/base/button/button.vue +4 -4
  27. package/src/components/base/drawer/drawer.vue +23 -0
  28. package/src/components/base/dropdown/dropdown.vue +2 -2
  29. package/src/components/base/dropdown/dropdown_item.vue +35 -0
  30. package/src/components/base/filtered_search/filtered_search.vue +3 -2
  31. package/src/components/base/form/form_input_group/form_input_group.vue +6 -0
  32. package/src/components/base/icon/icon.vue +2 -2
  33. package/src/components/base/illustration/illustration.vue +4 -2
  34. package/src/components/base/label/label.vue +26 -6
  35. package/src/components/base/modal/modal.vue +8 -8
  36. package/src/components/base/new_dropdowns/base_dropdown/base_dropdown.vue +7 -4
  37. package/src/components/base/new_dropdowns/listbox/listbox.vue +3 -3
  38. package/src/components/base/popover/popover.vue +20 -1
  39. package/src/components/base/progress_bar/progress_bar.vue +15 -0
  40. package/src/components/base/search_box_by_type/search_box_by_type.vue +18 -0
  41. package/src/components/base/table/table.vue +1 -1
  42. package/src/components/base/tabs/tab/tab.vue +47 -2
  43. package/src/components/base/token/token.vue +4 -0
  44. package/src/components/dashboards/dashboard_layout/dashboard_layout.vue +29 -0
  45. package/src/components/dashboards/dashboard_layout/grid_layout/grid_layout.vue +29 -6
  46. package/src/utils/utils.js +10 -5
@@ -12,33 +12,54 @@ var script = {
12
12
  GlTooltip
13
13
  },
14
14
  props: {
15
+ /**
16
+ * Array of avatar objects to display
17
+ */
15
18
  avatars: {
16
19
  type: Array,
17
20
  required: true
18
21
  },
22
+ /**
23
+ * Maximum number of avatars to display before collapsing
24
+ */
19
25
  maxVisible: {
20
26
  type: Number,
21
27
  required: true
22
28
  },
29
+ /**
30
+ * Size of each avatar in pixels
31
+ */
23
32
  avatarSize: {
24
33
  type: Number,
25
34
  required: true,
26
35
  validator: value => avatarsInlineSizeOptions.includes(value)
27
36
  },
37
+ /**
38
+ * Whether to show the avatars in collapsed state
39
+ */
28
40
  collapsed: {
29
41
  type: Boolean,
30
42
  required: false,
31
43
  default: false
32
44
  },
45
+ /**
46
+ * Screen reader text for the collapsed avatars badge
47
+ */
33
48
  badgeSrOnlyText: {
34
49
  type: String,
35
50
  required: true
36
51
  },
52
+ /**
53
+ * Property name to extract tooltip text from each hidden avatar object
54
+ */
37
55
  badgeTooltipProp: {
38
56
  type: String,
39
57
  required: false,
40
58
  default: ''
41
59
  },
60
+ /**
61
+ * Maximum number of characters to display in the badge tooltip
62
+ */
42
63
  badgeTooltipMaxChars: {
43
64
  type: Number,
44
65
  required: false,
@@ -1,6 +1,7 @@
1
1
  import GlLink from '../link/link';
2
2
  import { badgeVariantOptions, badgeIconSizeOptions, linkVariantUnstyled } from '../../../utils/constants';
3
3
  import GlIcon from '../icon/icon';
4
+ import { logWarning } from '../../../utils/utils';
4
5
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
5
6
 
6
7
  //
@@ -116,12 +117,6 @@ var script = {
116
117
  role() {
117
118
  return this.hasIconOnly ? 'img' : undefined;
118
119
  },
119
- ariaLabel() {
120
- if (this.$attrs['aria-label']) {
121
- return this.$attrs['aria-label'];
122
- }
123
- return this.role === 'img' ? this.icon : undefined;
124
- },
125
120
  iconSizeComputed() {
126
121
  return badgeIconSizeOptions[this.iconSize];
127
122
  },
@@ -154,6 +149,14 @@ var script = {
154
149
  '!gl-px-2': !this.$scopedSlots.default
155
150
  }];
156
151
  }
152
+ },
153
+ mounted() {
154
+ if (this.hasIconOnly && !this.$attrs['aria-label']) {
155
+ logWarning('Icon-only badges require an aria-label for accessibility. The label should describe the metadata (e.g., "Due date", "Open issue"), not the icon name. See https://design.gitlab.com/components/badge#using-icon-only-badges', {
156
+ name: 'GlBadge',
157
+ element: this.$el
158
+ });
159
+ }
157
160
  }
158
161
  };
159
162
 
@@ -161,7 +164,7 @@ var script = {
161
164
  const __vue_script__ = script;
162
165
 
163
166
  /* template */
164
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.computedTag,_vm._g(_vm._b({tag:"component",class:_vm.classes,attrs:{"role":_vm.role,"aria-label":_vm.ariaLabel}},'component',_vm.computedProps,false),_vm.$listeners),[(_vm.icon)?_c('gl-icon',{staticClass:"gl-badge-icon",class:{ '-gl-ml-2': _vm.isCircularIcon },attrs:{"size":_vm.iconSizeComputed,"name":_vm.icon}}):_vm._e(),_vm._v(" "),(_vm.$slots.default)?_c('span',{staticClass:"gl-badge-content"},[_vm._t("default")],2):_vm._e()],1)};
167
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c(_vm.computedTag,_vm._g(_vm._b({tag:"component",class:_vm.classes,attrs:{"role":_vm.role}},'component',_vm.computedProps,false),_vm.$listeners),[(_vm.icon)?_c('gl-icon',{staticClass:"gl-badge-icon",class:{ '-gl-ml-2': _vm.isCircularIcon },attrs:{"size":_vm.iconSizeComputed,"name":_vm.icon}}):_vm._e(),_vm._v(" "),(_vm.$slots.default)?_c('span',{staticClass:"gl-badge-content"},[_vm._t("default")],2):_vm._e()],1)};
165
168
  var __vue_staticRenderFns__ = [];
166
169
 
167
170
  /* style */
@@ -364,7 +364,10 @@ var script = {
364
364
  mounted() {
365
365
  // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots
366
366
  if (!this.$slots.default && !this.$attrs['aria-label'] && !this.$props.label) {
367
- logWarning('[gl-button]: Accessible name missing. Please add inner text or aria-label.', this.$el);
367
+ logWarning('Accessible name missing. Please add inner text or aria-label.', {
368
+ name: 'GlButton',
369
+ element: this.$el
370
+ });
368
371
  }
369
372
  },
370
373
  methods: {
@@ -11,25 +11,40 @@ var script = {
11
11
  GlButton
12
12
  },
13
13
  props: {
14
+ /**
15
+ * Controls the visibility state of the drawer.
16
+ */
14
17
  open: {
15
18
  type: Boolean,
16
19
  required: true
17
20
  },
21
+ /**
22
+ * Height of the header element (e.g., '64px'). Used to position the drawer below a fixed header.
23
+ */
18
24
  headerHeight: {
19
25
  type: String,
20
26
  required: false,
21
27
  default: ''
22
28
  },
29
+ /**
30
+ * When true, makes the drawer header sticky so it remains visible when scrolling the drawer content.
31
+ */
23
32
  headerSticky: {
24
33
  type: Boolean,
25
34
  required: false,
26
35
  default: false
27
36
  },
37
+ /**
38
+ * Z-index value for the drawer. Useful for controlling stacking order with other elements.
39
+ */
28
40
  zIndex: {
29
41
  type: Number,
30
42
  required: false,
31
43
  default: maxZIndex
32
44
  },
45
+ /**
46
+ * Visual variant of the drawer.
47
+ */
33
48
  variant: {
34
49
  type: String,
35
50
  required: false,
@@ -91,6 +106,10 @@ var script = {
91
106
  handleEscape(e) {
92
107
  const ESC = 27;
93
108
  if (this.open && e.keyCode === ESC) {
109
+ /**
110
+ * Emits when drawer gets closed (by pressing ESC or clicking the close button).
111
+ * @event close
112
+ */
94
113
  this.$emit('close');
95
114
  }
96
115
  }
@@ -15,51 +15,81 @@ var script = {
15
15
  },
16
16
  inheritAttrs: false,
17
17
  props: {
18
+ /**
19
+ * URL for the avatar image to display
20
+ */
18
21
  avatarUrl: {
19
22
  type: String,
20
23
  required: false,
21
24
  default: ''
22
25
  },
26
+ /**
27
+ * Color variant for the icon on the left side
28
+ */
23
29
  iconColor: {
24
30
  type: String,
25
31
  required: false,
26
32
  default: ''
27
33
  },
34
+ /**
35
+ * Name of the icon to display on the left side
36
+ */
28
37
  iconName: {
29
38
  type: String,
30
39
  required: false,
31
40
  default: ''
32
41
  },
42
+ /**
43
+ * Aria label for the right icon button
44
+ */
33
45
  iconRightAriaLabel: {
34
46
  type: String,
35
47
  required: false,
36
48
  default: ''
37
49
  },
50
+ /**
51
+ * Name of the icon to display on the right side
52
+ */
38
53
  iconRightName: {
39
54
  type: String,
40
55
  required: false,
41
56
  default: ''
42
57
  },
58
+ /**
59
+ * Whether the dropdown item is checked
60
+ */
43
61
  isChecked: {
44
62
  type: Boolean,
45
63
  required: false,
46
64
  default: false
47
65
  },
66
+ /**
67
+ * Whether to show a check icon for this item
68
+ */
48
69
  isCheckItem: {
49
70
  type: Boolean,
50
71
  required: false,
51
72
  default: false
52
73
  },
74
+ /**
75
+ * Whether to center the check icon vertically
76
+ */
53
77
  isCheckCentered: {
54
78
  type: Boolean,
55
79
  required: false,
56
80
  default: false
57
81
  },
82
+ /**
83
+ * Secondary text to display below the main content
84
+ */
58
85
  secondaryText: {
59
86
  type: String,
60
87
  required: false,
61
88
  default: ''
62
89
  },
90
+ /**
91
+ * ARIA role for the dropdown item
92
+ */
63
93
  role: {
64
94
  type: String,
65
95
  required: false,
@@ -97,6 +127,10 @@ var script = {
97
127
  },
98
128
  methods: {
99
129
  handleClickIconRight() {
130
+ /**
131
+ * Emitted when right icon is clicked.
132
+ * @event handleClickIconRight
133
+ */
100
134
  this.$emit('click-icon-right');
101
135
  }
102
136
  }
@@ -2,6 +2,7 @@ import isEqual from 'lodash/isEqual';
2
2
  import cloneDeep from 'lodash/cloneDeep';
3
3
  import { PortalTarget } from 'portal-vue';
4
4
  import { GlTooltipDirective } from '../../../directives/tooltip/tooltip';
5
+ import { logWarning } from '../../../utils/utils';
5
6
  import GlIcon from '../icon/icon';
6
7
  import GlSearchBoxByClick from '../search_box_by_click/search_box_by_click';
7
8
  import GlFilteredSearchTerm from './filtered_search_term';
@@ -67,8 +68,9 @@ var script = {
67
68
  return !token || token.__v_skip;
68
69
  });
69
70
  if (!isOk) {
70
- // eslint-disable-next-line no-console
71
- console.warn('You are using Vue3. In Vue3 each token component passed to filtered search must be wrapped into markRaw');
71
+ logWarning('You are using Vue3. In Vue3 each token component passed to filtered search must be wrapped into markRaw', {
72
+ name: 'GlFilteredSearch'
73
+ });
72
74
  }
73
75
  return isOk;
74
76
  }
@@ -34,11 +34,17 @@ var script = {
34
34
  }],
35
35
  validator: options => options.every(opt => Object.keys(opt).includes('name', 'value'))
36
36
  },
37
+ /**
38
+ * Accessible label for the input field. Used for the aria-label attribute.
39
+ */
37
40
  label: {
38
41
  type: String,
39
42
  required: false,
40
43
  default: undefined
41
44
  },
45
+ /**
46
+ * Additional CSS class(es) to apply to the input element.
47
+ */
42
48
  inputClass: {
43
49
  type: [String, Array, Object],
44
50
  required: false,
@@ -1,5 +1,6 @@
1
1
  import iconsPath from '@gitlab/svgs/dist/icons.svg';
2
2
  import iconsInfo from '@gitlab/svgs/dist/icons.json';
3
+ import { logWarning } from '../../../utils/utils';
3
4
  import { iconSizeOptions, iconVariantOptions } from '../../../utils/constants';
4
5
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
5
6
 
@@ -37,8 +38,9 @@ var script = {
37
38
  if (knownIcons.has(value)) {
38
39
  return true;
39
40
  }
40
- // eslint-disable-next-line no-console
41
- console.warn(`Icon '${value}' is not a known icon of @gitlab/svgs`);
41
+ logWarning(`Icon '${value}' is not a known icon of @gitlab/svgs`, {
42
+ name: 'GlIcon'
43
+ });
42
44
  return false;
43
45
  }
44
46
  },
@@ -1,5 +1,6 @@
1
1
  import illustrationsPath from '@gitlab/svgs/dist/illustrations.svg';
2
2
  import illustrationsInfo from '@gitlab/svgs/dist/illustrations.json';
3
+ import { logWarning } from '../../../utils/utils';
3
4
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
4
5
 
5
6
  //
@@ -25,8 +26,9 @@ var script = {
25
26
  if (knownIllustrations.some(obj => obj.name === value)) {
26
27
  return true;
27
28
  }
28
- // eslint-disable-next-line no-console
29
- console.warn(`Illustration '${value}' is not a known illustration of @gitlab/svgs`);
29
+ logWarning(`Illustration '${value}' is not a known illustration of @gitlab/svgs`, {
30
+ name: 'GlIllustration'
31
+ });
30
32
  return false;
31
33
  }
32
34
  }
@@ -17,41 +17,65 @@ var script = {
17
17
  GlTooltip
18
18
  },
19
19
  props: {
20
+ /**
21
+ * Background color of the label in hex, rgb, or rgba format
22
+ */
20
23
  backgroundColor: {
21
24
  type: String,
22
25
  required: true,
23
26
  validator: value => /^(#|rgb|rgba)/.test(value)
24
27
  },
28
+ /**
29
+ * Title text of the label
30
+ */
25
31
  title: {
26
32
  type: String,
27
33
  required: true,
28
34
  default: ''
29
35
  },
36
+ /**
37
+ * Description text shown in tooltip
38
+ */
30
39
  description: {
31
40
  type: String,
32
41
  required: false,
33
42
  default: ''
34
43
  },
44
+ /**
45
+ * Placement of the tooltip
46
+ */
35
47
  tooltipPlacement: {
36
48
  type: String,
37
49
  required: false,
38
50
  default: 'top'
39
51
  },
52
+ /**
53
+ * Target URL for the label link
54
+ */
40
55
  target: {
41
56
  type: String,
42
57
  required: false,
43
58
  default: ''
44
59
  },
60
+ /**
61
+ * Whether the label is scoped (uses :: separator)
62
+ */
45
63
  scoped: {
46
64
  type: Boolean,
47
65
  required: false,
48
66
  default: false
49
67
  },
68
+ /**
69
+ * Whether to show the close button
70
+ */
50
71
  showCloseButton: {
51
72
  type: Boolean,
52
73
  required: false,
53
74
  default: false
54
75
  },
76
+ /**
77
+ * Whether the label is disabled
78
+ */
55
79
  disabled: {
56
80
  type: Boolean,
57
81
  required: false,
@@ -99,19 +123,15 @@ var script = {
99
123
  methods: {
100
124
  onClick(e) {
101
125
  /**
102
- * Emitted when label is clicked
103
- *
126
+ * Emitted when the label is clicked.
104
127
  * @event click
105
- * @type {object}
106
128
  */
107
129
  this.$emit('click', e);
108
130
  },
109
131
  onClose(e) {
110
132
  /**
111
- * Emitted when x is clicked
112
- *
133
+ * Emitted when the close button is clicked.
113
134
  * @event close
114
- * @type {object}
115
135
  */
116
136
  this.$emit('close', e);
117
137
  }
@@ -141,7 +141,10 @@ var script = {
141
141
  },
142
142
  mounted() {
143
143
  if (!this.ariaLabel && !this.title) {
144
- logWarning('[gl-modal]: Accessible name for modal missing. Please add title prop or aria-label.', this.$el);
144
+ logWarning('Accessible name for modal missing. Please add title prop or aria-label.', {
145
+ name: 'GlModal',
146
+ element: this.$el
147
+ });
145
148
  }
146
149
  },
147
150
  methods: {
@@ -90,8 +90,9 @@ var script = {
90
90
  default: 'bottom-start',
91
91
  validator: value => {
92
92
  if (['left', 'center', 'right'].includes(value)) {
93
- logWarning(`GlDisclosureDropdown/GlCollapsibleListbox: "${value}" placement is deprecated.
94
- Use ${dropdownPlacements[value]} instead.`);
93
+ logWarning(`"${value}" placement is deprecated. Use ${dropdownPlacements[value]} instead.`, {
94
+ name: 'GlDisclosureDropdown/GlCollapsibleListbox'
95
+ });
95
96
  }
96
97
  return Object.keys(dropdownPlacements).includes(value);
97
98
  }
@@ -307,8 +308,11 @@ var script = {
307
308
  methods: {
308
309
  checkToggleFocusable() {
309
310
  if (!isElementFocusable(this.toggleElement) && !isElementTabbable(this.toggleElement)) {
310
- logWarning(`GlDisclosureDropdown/GlCollapsibleListbox: Toggle is missing a 'tabindex' and cannot be focused.
311
- Use 'a' or 'button' element instead or make sure to add 'role="button"' along with 'tabindex' otherwise.`, this.$el);
311
+ logWarning(`Toggle is missing a 'tabindex' and cannot be focused.
312
+ Use 'a' or 'button' element instead or make sure to add 'role="button"' along with 'tabindex' otherwise.`, {
313
+ name: 'GlDisclosureDropdown/GlCollapsibleListbox',
314
+ element: this.$el
315
+ });
312
316
  }
313
317
  },
314
318
  getArrowOffsets(actualPlacement) {
@@ -1,6 +1,6 @@
1
1
  import clamp from 'lodash/clamp';
2
2
  import uniqueId from 'lodash/uniqueId';
3
- import { stopEvent } from '../../../../utils/utils';
3
+ import { logWarning, stopEvent } from '../../../../utils/utils';
4
4
  import { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, ARROW_UP, ENTER, ARROW_DOWN, END, HOME } from '../constants';
5
5
  import { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';
6
6
  import GlButton from '../../button/button';
@@ -550,8 +550,9 @@ var script = {
550
550
  immediate: true,
551
551
  handler(newValue) {
552
552
  if (newValue && this.items.some(item => !isOption(item))) {
553
- // eslint-disable-next-line no-console
554
- console.warn('When using grouped options infinite scroll can only be used on the last group.');
553
+ logWarning('When using grouped options infinite scroll can only be used on the last group.', {
554
+ name: 'GlCollapsibleListbox'
555
+ });
555
556
  }
556
557
  }
557
558
  }
@@ -16,6 +16,9 @@ var script = {
16
16
  mixins: [tooltipMixin(popoverRefName)],
17
17
  inheritAttrs: false,
18
18
  props: {
19
+ /**
20
+ * Additional CSS class(es) to apply to the popover.
21
+ */
19
22
  cssClasses: {
20
23
  type: [Array, String, Object],
21
24
  required: false,
@@ -31,21 +34,33 @@ var script = {
31
34
  required: false,
32
35
  default: 'hover focus'
33
36
  },
37
+ /**
38
+ * Title text to display in the popover header.
39
+ */
34
40
  title: {
35
41
  type: String,
36
42
  required: false,
37
43
  default: ''
38
44
  },
45
+ /**
46
+ * When true, displays a close button in the popover header.
47
+ */
39
48
  showCloseButton: {
40
49
  type: Boolean,
41
50
  required: false,
42
51
  default: false
43
52
  },
53
+ /**
54
+ * Placement of the popover relative to the target element.
55
+ */
44
56
  placement: {
45
57
  type: String,
46
58
  required: false,
47
59
  default: popoverPlacements.top
48
60
  },
61
+ /**
62
+ * Padding (in pixels) between the popover and the viewport boundary.
63
+ */
49
64
  boundaryPadding: {
50
65
  type: [Number, String],
51
66
  required: false,
@@ -12,27 +12,42 @@ const backgroundClasses = {
12
12
  var script = {
13
13
  name: 'GlProgressBar',
14
14
  props: {
15
+ /**
16
+ * Accessible label for the progress bar. Used for the aria-label attribute.
17
+ */
15
18
  ariaLabel: {
16
19
  type: String,
17
20
  required: false,
18
21
  default: translate('GlProgressBar.ariaLabel', 'Progress bar')
19
22
  },
23
+ /**
24
+ * Current progress value. Should be between 0 and the max value.
25
+ */
20
26
  value: {
21
27
  type: [Number, String],
22
28
  required: false,
23
29
  default: 0
24
30
  },
31
+ /**
32
+ * Visual variant of the progress bar.
33
+ */
25
34
  variant: {
26
35
  type: String,
27
36
  required: false,
28
37
  default: 'primary',
29
38
  validator: value => Object.keys(progressBarVariantOptions).includes(value)
30
39
  },
40
+ /**
41
+ * Maximum value for the progress bar. The value prop is calculated as a percentage of this.
42
+ */
31
43
  max: {
32
44
  type: [Number, String],
33
45
  required: false,
34
46
  default: 100
35
47
  },
48
+ /**
49
+ * Custom height for the progress bar (e.g., '8px', '1rem').
50
+ */
36
51
  height: {
37
52
  type: String,
38
53
  required: false,
@@ -27,11 +27,17 @@ var script = {
27
27
  required: false,
28
28
  default: ''
29
29
  },
30
+ /**
31
+ * Whether to render the search box without borders
32
+ */
30
33
  borderless: {
31
34
  type: Boolean,
32
35
  required: false,
33
36
  default: false
34
37
  },
38
+ /**
39
+ * Title text for the clear button
40
+ */
35
41
  clearButtonTitle: {
36
42
  type: String,
37
43
  required: false,
@@ -102,6 +108,10 @@ var script = {
102
108
  this.$refs.input.$el.focus();
103
109
  },
104
110
  onInput(value) {
111
+ /**
112
+ * Emitted when the input value changes or gets cleared.
113
+ * @event input
114
+ */
105
115
  this.$emit('input', value);
106
116
  },
107
117
  onFocusout(event) {
@@ -111,6 +121,11 @@ var script = {
111
121
  if (this.isInputOrClearButton(relatedTarget)) {
112
122
  return;
113
123
  }
124
+
125
+ /**
126
+ * Emitted when focus leaves the search box (input and clear button).
127
+ * @event focusout
128
+ */
114
129
  this.$emit('focusout', event);
115
130
  },
116
131
  onFocusin(event) {
@@ -120,6 +135,11 @@ var script = {
120
135
  if (this.isInputOrClearButton(relatedTarget)) {
121
136
  return;
122
137
  }
138
+
139
+ /**
140
+ * Emitted when focus enters the search box (input or clear button).
141
+ * @event focusin
142
+ */
123
143
  this.$emit('focusin', event);
124
144
  }
125
145
  }
@@ -109,7 +109,10 @@ var script = {
109
109
  // logWarning will call isDev before logging any message
110
110
  // this additional call to isDev is being made to exit the condition early when run in production
111
111
  if (isDev() && !shouldUseFullTable(this)) {
112
- logWarning(glTableLiteWarning, this.$el);
112
+ logWarning(glTableLiteWarning, {
113
+ name: 'GlTable',
114
+ element: this.$el
115
+ });
113
116
  }
114
117
  },
115
118
  methods: {