@gitlab/ui 38.8.1 → 38.10.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 (63) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/components/base/filtered_search/filtered_search.js +0 -5
  3. package/dist/components/base/form/form_textarea/form_textarea.js +62 -2
  4. package/dist/components/base/label/label.js +1 -1
  5. package/dist/components/base/popover/popover.js +7 -1
  6. package/dist/index.css +2 -2
  7. package/dist/index.css.map +1 -1
  8. package/dist/utility_classes.css +1 -1
  9. package/dist/utility_classes.css.map +1 -1
  10. package/dist/utils/constants.js +7 -2
  11. package/package.json +1 -2
  12. package/src/components/base/accordion/accordion.stories.js +2 -4
  13. package/src/components/base/accordion/accordion_item.stories.js +2 -4
  14. package/src/components/base/alert/alert.stories.js +2 -4
  15. package/src/components/base/avatar/avatar.stories.js +3 -9
  16. package/src/components/base/avatar_labeled/avatar_labeled.stories.js +6 -12
  17. package/src/components/base/avatar_link/avatar_link.stories.js +2 -6
  18. package/src/components/base/avatars_inline/avatars_inline.stories.js +2 -4
  19. package/src/components/base/badge/badge.scss +10 -0
  20. package/src/components/base/badge/badge.stories.js +3 -9
  21. package/src/components/base/banner/banner.stories.js +1 -3
  22. package/src/components/base/broadcast_message/broadcast_message.stories.js +4 -8
  23. package/src/components/base/button/button.stories.js +8 -16
  24. package/src/components/base/datepicker/datepicker.stories.js +2 -2
  25. package/src/components/base/daterange_picker/daterange_picker.stories.js +2 -6
  26. package/src/components/base/dropdown/dropdown.stories.js +4 -12
  27. package/src/components/base/dropdown/dropdown_item.stories.js +2 -6
  28. package/src/components/base/filtered_search/filtered_search.vue +0 -5
  29. package/src/components/base/form/form_group/form_group.stories.js +1 -1
  30. package/src/components/base/form/form_input/form_input.stories.js +1 -3
  31. package/src/components/base/form/form_input_group/form_input_group.stories.js +4 -12
  32. package/src/components/base/form/form_radio/form_radio.stories.js +1 -3
  33. package/src/components/base/form/form_select/form_select.stories.js +4 -8
  34. package/src/components/base/form/form_textarea/form_textarea.spec.js +115 -8
  35. package/src/components/base/form/form_textarea/form_textarea.stories.js +21 -0
  36. package/src/components/base/form/form_textarea/form_textarea.vue +73 -8
  37. package/src/components/base/icon/icon.stories.js +4 -8
  38. package/src/components/base/infinite_scroll/infinite_scroll.stories.js +37 -13
  39. package/src/components/base/label/label.stories.js +2 -6
  40. package/src/components/base/label/label.vue +3 -10
  41. package/src/components/base/link/link.stories.js +2 -4
  42. package/src/components/base/loading_icon/loading_icon.stories.js +4 -8
  43. package/src/components/base/modal/modal.stories.js +16 -32
  44. package/src/components/base/path/path.stories.js +2 -6
  45. package/src/components/base/popover/popover.scss +3 -1
  46. package/src/components/base/popover/popover.spec.js +15 -1
  47. package/src/components/base/popover/popover.stories.js +3 -5
  48. package/src/components/base/popover/popover.vue +7 -0
  49. package/src/components/base/progress_bar/progress_bar.stories.js +2 -4
  50. package/src/components/base/search_box_by_click/search_box_by_click.stories.js +1 -3
  51. package/src/components/base/segmented_control/segmented_control.stories.js +1 -3
  52. package/src/components/base/skeleton_loading/skeleton_loading.stories.js +2 -4
  53. package/src/components/base/table/table.stories.js +2 -4
  54. package/src/components/base/toggle/toggle.stories.js +4 -10
  55. package/src/components/base/token/token.stories.js +2 -4
  56. package/src/components/base/token_selector/token_selector.stories.js +2 -4
  57. package/src/components/charts/single_stat/single_stat.stories.js +1 -3
  58. package/src/directives/resize_observer/resize_observer.stories.js +1 -3
  59. package/src/scss/utilities.scss +32 -0
  60. package/src/scss/utility-mixins/color.scss +4 -0
  61. package/src/scss/utility-mixins/sizing.scss +12 -0
  62. package/src/utils/constants.js +6 -0
  63. package/documentation/documented_stories.js +0 -215
package/CHANGELOG.md CHANGED
@@ -1,3 +1,30 @@
1
+ # [38.10.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v38.9.0...v38.10.0) (2022-04-13)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **GlPopover:** Remove horizontal border ([f40c030](https://gitlab.com/gitlab-org/gitlab-ui/commit/f40c030c429fc76c7dd9dcb3ff7aeaa6f889d653))
7
+
8
+
9
+ ### Features
10
+
11
+ * **CSS:** Add new utility CSS classes ([19e3dd6](https://gitlab.com/gitlab-org/gitlab-ui/commit/19e3dd63eef519e85264391cf3a95ecf038c2f07))
12
+ * **GlPopover:** top placement by default ([705dfe4](https://gitlab.com/gitlab-org/gitlab-ui/commit/705dfe412200581620c78011612de451d22ece55))
13
+
14
+ # [38.9.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v38.8.2...v38.9.0) (2022-04-12)
15
+
16
+
17
+ ### Features
18
+
19
+ * add a character counter to gl-form-textarea ([1d45d26](https://gitlab.com/gitlab-org/gitlab-ui/commit/1d45d26ad384b85589154100664da2c4eb204499))
20
+
21
+ ## [38.8.2](https://gitlab.com/gitlab-org/gitlab-ui/compare/v38.8.1...v38.8.2) (2022-04-08)
22
+
23
+
24
+ ### Bug Fixes
25
+
26
+ * **Label:** Move tooltip to anchor instead of span ([67d0e79](https://gitlab.com/gitlab-org/gitlab-ui/commit/67d0e79bb57409d63e32fd3efffc95dc534c3421))
27
+
1
28
  ## [38.8.1](https://gitlab.com/gitlab-org/gitlab-ui/compare/v38.8.0...v38.8.1) (2022-04-08)
2
29
 
3
30
 
@@ -316,11 +316,6 @@ var script = {
316
316
  * @property {array} tokens
317
317
  */
318
318
  this.$emit('submit', normalizeTokens(_cloneDeep(this.tokens)));
319
- },
320
-
321
- clearInput() {
322
- this.tokens = initialState();
323
- this.$emit('clearInput');
324
319
  }
325
320
 
326
321
  }
@@ -1,4 +1,6 @@
1
1
  import { BFormTextarea } from 'bootstrap-vue/esm/index.js';
2
+ import GlSprintf from '../../../utilities/sprintf/sprintf';
3
+ import { textareaCountOptions } from '../../../../utils/constants';
2
4
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
3
5
 
4
6
  const model = {
@@ -7,7 +9,8 @@ const model = {
7
9
  };
8
10
  var script = {
9
11
  components: {
10
- BFormTextarea
12
+ BFormTextarea,
13
+ GlSprintf
11
14
  },
12
15
  inheritAttrs: false,
13
16
  model,
@@ -28,6 +31,27 @@ var script = {
28
31
  type: Boolean,
29
32
  required: false,
30
33
  default: false
34
+ },
35
+ count: {
36
+ type: Number,
37
+ required: false,
38
+ default: 0
39
+ },
40
+ countType: {
41
+ required: false,
42
+ type: String,
43
+ default: textareaCountOptions.max,
44
+ validator: value => Object.keys(textareaCountOptions).includes(value)
45
+ },
46
+ characterCountText: {
47
+ required: false,
48
+ type: String,
49
+ default: ''
50
+ },
51
+ characterCountOverLimitText: {
52
+ required: false,
53
+ type: String,
54
+ default: ''
31
55
  }
32
56
  },
33
57
  computed: {
@@ -64,6 +88,42 @@ var script = {
64
88
 
65
89
  keypressEvent() {
66
90
  return this.submitOnEnter ? 'keyup' : null;
91
+ },
92
+
93
+ characters() {
94
+ return this.value.length;
95
+ },
96
+
97
+ remainingCharacters() {
98
+ if (this.count) {
99
+ return Math.abs(this.count - this.characters);
100
+ }
101
+
102
+ return null;
103
+ },
104
+
105
+ characterCountClasses() {
106
+ switch (this.countType) {
107
+ case textareaCountOptions.max:
108
+ return {
109
+ 'gl-text-red-500': this.value.length > this.count,
110
+ 'gl-text-gray-500': this.value.length <= this.count
111
+ };
112
+
113
+ case textareaCountOptions.recommended:
114
+ return 'gl-text-gray-500';
115
+
116
+ default:
117
+ return {};
118
+ }
119
+ },
120
+
121
+ hasCount() {
122
+ return this.remainingCharacters != null;
123
+ },
124
+
125
+ characterCountMessage() {
126
+ return this.characters > this.count ? this.characterCountOverLimitText : this.characterCountText;
67
127
  }
68
128
 
69
129
  },
@@ -81,7 +141,7 @@ var script = {
81
141
  const __vue_script__ = script;
82
142
 
83
143
  /* template */
84
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-form-textarea',_vm._g(_vm._b({staticClass:"gl-form-input gl-form-textarea",attrs:{"no-resize":_vm.noResize,"value":_vm.value},nativeOn:_vm._d({},[_vm.keypressEvent,function($event){return _vm.handleKeyPress($event)}])},'b-form-textarea',_vm.$attrs,false),_vm.listeners))};
144
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('b-form-textarea',_vm._g(_vm._b({ref:"textarea",staticClass:"gl-form-input gl-form-textarea",attrs:{"no-resize":_vm.noResize,"value":_vm.value},nativeOn:_vm._d({},[_vm.keypressEvent,function($event){return _vm.handleKeyPress($event)}])},'b-form-textarea',_vm.$attrs,false),_vm.listeners)),_vm._v(" "),(_vm.hasCount)?_c('div',[_c('small',{class:_vm.characterCountClasses,attrs:{"aria-live":"polite"}},[_c('gl-sprintf',{attrs:{"message":_vm.characterCountMessage},scopedSlots:_vm._u([{key:"count",fn:function(){return [_vm._v(_vm._s(_vm.remainingCharacters))]},proxy:true}],null,false,2559963941)})],1)]):_vm._e()],1)};
85
145
  var __vue_staticRenderFns__ = [];
86
146
 
87
147
  /* style */
@@ -130,7 +130,7 @@ var script = {
130
130
  const __vue_script__ = script;
131
131
 
132
132
  /* template */
133
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',_vm._b({ref:"labelTitle",staticClass:"gl-label",class:_vm.cssClasses,style:(_vm.cssVariables),on:{"click":_vm.onClick}},'span',_vm.$attrs,false),[_c('gl-link',{staticClass:"gl-label-link",attrs:{"href":_vm.target}},[_c('span',{staticClass:"gl-label-text"},[_vm._v("\n "+_vm._s(_vm.scopedKey)+"\n ")]),_vm._v(" "),(_vm.scoped && _vm.scopedValue)?_c('span',{staticClass:"gl-label-text-scoped"},[_vm._v("\n "+_vm._s(_vm.scopedValue)+"\n ")]):_vm._e()]),_vm._v(" "),(_vm.showCloseButton)?_c('close-button',{staticClass:"gl-label-close gl-p-0!",attrs:{"label":"Remove label","variant":"reset","disabled":_vm.disabled},on:{"click":_vm.onClose}}):_vm._e(),_vm._v(" "),(_vm.description)?_c('gl-tooltip',{attrs:{"target":function () { return _vm.$refs.labelTitle; },"placement":_vm.tooltipPlacement,"boundary":"viewport"}},[(_vm.scoped)?_c('span',{staticClass:"gl-label-tooltip-title"},[_vm._v("Scoped label")]):_vm._e(),_vm._v("\n "+_vm._s(_vm.description)+"\n ")]):_vm._e()],1)};
133
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',_vm._b({staticClass:"gl-label",class:_vm.cssClasses,style:(_vm.cssVariables),on:{"click":_vm.onClick}},'span',_vm.$attrs,false),[_c('gl-link',{ref:"labelTitle",staticClass:"gl-label-link",attrs:{"href":_vm.target}},[_c('span',{staticClass:"gl-label-text"},[_vm._v("\n "+_vm._s(_vm.scopedKey)+"\n ")]),_vm._v(" "),(_vm.scoped && _vm.scopedValue)?_c('span',{staticClass:"gl-label-text-scoped"},[_vm._v("\n "+_vm._s(_vm.scopedValue)+"\n ")]):_vm._e()]),_vm._v(" "),(_vm.showCloseButton)?_c('close-button',{staticClass:"gl-label-close gl-p-0!",attrs:{"label":"Remove label","variant":"reset","disabled":_vm.disabled},on:{"click":_vm.onClose}}):_vm._e(),_vm._v(" "),(_vm.description)?_c('gl-tooltip',{attrs:{"target":function () { return _vm.$refs.labelTitle.$el; },"placement":_vm.tooltipPlacement,"boundary":"viewport"}},[(_vm.scoped)?_c('span',{staticClass:"gl-label-tooltip-title"},[_vm._v("Scoped label")]):_vm._e(),_vm._v("\n "+_vm._s(_vm.description)+"\n ")]):_vm._e()],1)};
134
134
  var __vue_staticRenderFns__ = [];
135
135
 
136
136
  /* style */
@@ -1,6 +1,7 @@
1
1
  import { BPopover } from 'bootstrap-vue/esm/index.js';
2
2
  import tooltipMixin from '../../mixins/tooltip_mixin';
3
3
  import CloseButton from '../../shared_components/close_button/close_button';
4
+ import { popoverPlacements } from '../../../utils/constants';
4
5
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
5
6
 
6
7
  const popoverRefName = 'bPopover';
@@ -37,6 +38,11 @@ var script = {
37
38
  type: Boolean,
38
39
  required: false,
39
40
  default: false
41
+ },
42
+ placement: {
43
+ type: String,
44
+ required: false,
45
+ default: popoverPlacements.top
40
46
  }
41
47
  },
42
48
  computed: {
@@ -67,7 +73,7 @@ var script = {
67
73
  const __vue_script__ = script;
68
74
 
69
75
  /* template */
70
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-popover',_vm._g(_vm._b({ref:_vm.$options.popoverRefName,attrs:{"custom-class":_vm.customClass,"triggers":_vm.triggers,"title":_vm.title},scopedSlots:_vm._u([(_vm.shouldShowTitle)?{key:"title",fn:function(){return [_vm._t("title",[_vm._v("\n "+_vm._s(_vm.title)+"\n ")]),_vm._v(" "),(_vm.showCloseButton)?_c('close-button',{staticClass:"gl-float-right gl-mt-n2 gl-mr-n3",attrs:{"data-testid":"close-button"},on:{"click":_vm.close}}):_vm._e()]},proxy:true}:null],null,true)},'b-popover',_vm.$attrs,false),_vm.$listeners),[_vm._v(" "),_vm._t("default")],2)};
76
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-popover',_vm._g(_vm._b({ref:_vm.$options.popoverRefName,attrs:{"custom-class":_vm.customClass,"triggers":_vm.triggers,"title":_vm.title,"placement":_vm.placement},scopedSlots:_vm._u([(_vm.shouldShowTitle)?{key:"title",fn:function(){return [_vm._t("title",[_vm._v("\n "+_vm._s(_vm.title)+"\n ")]),_vm._v(" "),(_vm.showCloseButton)?_c('close-button',{staticClass:"gl-float-right gl-mt-n2 gl-mr-n3",attrs:{"data-testid":"close-button"},on:{"click":_vm.close}}):_vm._e()]},proxy:true}:null],null,true)},'b-popover',_vm.$attrs,false),_vm.$listeners),[_vm._v(" "),_vm._t("default")],2)};
71
77
  var __vue_staticRenderFns__ = [];
72
78
 
73
79
  /* style */