@gitlab/ui 38.8.0 → 38.9.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 (54) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/components/base/form/form_textarea/form_textarea.js +62 -2
  3. package/dist/components/base/label/label.js +1 -1
  4. package/dist/components/charts/series_label/series_label.js +1 -6
  5. package/dist/index.css +1 -1
  6. package/dist/index.css.map +1 -1
  7. package/dist/utils/constants.js +7 -2
  8. package/package.json +1 -2
  9. package/src/components/base/accordion/accordion.stories.js +2 -4
  10. package/src/components/base/accordion/accordion_item.stories.js +2 -4
  11. package/src/components/base/alert/alert.stories.js +2 -4
  12. package/src/components/base/avatar/avatar.stories.js +3 -9
  13. package/src/components/base/avatar_labeled/avatar_labeled.stories.js +6 -12
  14. package/src/components/base/avatar_link/avatar_link.stories.js +2 -6
  15. package/src/components/base/avatars_inline/avatars_inline.stories.js +2 -4
  16. package/src/components/base/badge/badge.scss +10 -0
  17. package/src/components/base/badge/badge.stories.js +3 -9
  18. package/src/components/base/banner/banner.stories.js +1 -3
  19. package/src/components/base/broadcast_message/broadcast_message.stories.js +4 -8
  20. package/src/components/base/button/button.stories.js +8 -16
  21. package/src/components/base/datepicker/datepicker.stories.js +2 -2
  22. package/src/components/base/daterange_picker/daterange_picker.stories.js +2 -6
  23. package/src/components/base/dropdown/dropdown.stories.js +4 -12
  24. package/src/components/base/dropdown/dropdown_item.stories.js +2 -6
  25. package/src/components/base/form/form_group/form_group.stories.js +1 -1
  26. package/src/components/base/form/form_input/form_input.stories.js +1 -3
  27. package/src/components/base/form/form_input_group/form_input_group.stories.js +4 -12
  28. package/src/components/base/form/form_radio/form_radio.stories.js +1 -3
  29. package/src/components/base/form/form_select/form_select.stories.js +4 -8
  30. package/src/components/base/form/form_textarea/form_textarea.spec.js +115 -8
  31. package/src/components/base/form/form_textarea/form_textarea.stories.js +21 -0
  32. package/src/components/base/form/form_textarea/form_textarea.vue +73 -8
  33. package/src/components/base/icon/icon.stories.js +4 -8
  34. package/src/components/base/label/label.stories.js +2 -6
  35. package/src/components/base/label/label.vue +3 -10
  36. package/src/components/base/link/link.stories.js +2 -4
  37. package/src/components/base/loading_icon/loading_icon.stories.js +4 -8
  38. package/src/components/base/modal/modal.stories.js +16 -32
  39. package/src/components/base/path/path.stories.js +2 -6
  40. package/src/components/base/popover/popover.stories.js +2 -4
  41. package/src/components/base/progress_bar/progress_bar.stories.js +2 -4
  42. package/src/components/base/search_box_by_click/search_box_by_click.stories.js +1 -3
  43. package/src/components/base/segmented_control/segmented_control.stories.js +1 -3
  44. package/src/components/base/skeleton_loading/skeleton_loading.stories.js +2 -4
  45. package/src/components/base/table/table.stories.js +2 -4
  46. package/src/components/base/toggle/toggle.stories.js +4 -10
  47. package/src/components/base/token/token.stories.js +2 -4
  48. package/src/components/base/token_selector/token_selector.stories.js +2 -4
  49. package/src/components/charts/series_label/series_label.stories.js +3 -6
  50. package/src/components/charts/series_label/series_label.vue +0 -3
  51. package/src/components/charts/single_stat/single_stat.stories.js +1 -3
  52. package/src/directives/resize_observer/resize_observer.stories.js +1 -3
  53. package/src/utils/constants.js +6 -0
  54. package/documentation/documented_stories.js +0 -215
package/CHANGELOG.md CHANGED
@@ -1,3 +1,29 @@
1
+ # [38.9.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v38.8.2...v38.9.0) (2022-04-12)
2
+
3
+
4
+ ### Features
5
+
6
+ * add a character counter to gl-form-textarea ([1d45d26](https://gitlab.com/gitlab-org/gitlab-ui/commit/1d45d26ad384b85589154100664da2c4eb204499))
7
+
8
+ ## [38.8.2](https://gitlab.com/gitlab-org/gitlab-ui/compare/v38.8.1...v38.8.2) (2022-04-08)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * **Label:** Move tooltip to anchor instead of span ([67d0e79](https://gitlab.com/gitlab-org/gitlab-ui/commit/67d0e79bb57409d63e32fd3efffc95dc534c3421))
14
+
15
+ ## [38.8.1](https://gitlab.com/gitlab-org/gitlab-ui/compare/v38.8.0...v38.8.1) (2022-04-08)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * Force a new release for revert ([c983975](https://gitlab.com/gitlab-org/gitlab-ui/commit/c98397525d3f64628a661b00850f3733338c02f2))
21
+
22
+
23
+ ### Reverts
24
+
25
+ * **GlChartSeriesLabel:** Add validation for type prop ([f971aab](https://gitlab.com/gitlab-org/gitlab-ui/commit/f971aab4b08d2f3481f7c1a9cbf0454124d75b39)), closes [/gitlab.com/gitlab-org/gitlab/-/merge_requests/83745#note_905812358](https://gitlab.com//gitlab.com/gitlab-org/gitlab/-/merge_requests/83745/issues/note_905812358)
26
+
1
27
  # [38.8.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v38.7.0...v38.8.0) (2022-04-08)
2
28
 
3
29
 
@@ -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 */
@@ -11,12 +11,7 @@ var script = {
11
11
  type: {
12
12
  type: String,
13
13
  required: false,
14
- default: 'solid',
15
-
16
- validator(value) {
17
- return ['solid', 'dashed'].indexOf(value) !== -1;
18
- }
19
-
14
+ default: 'solid'
20
15
  }
21
16
  },
22
17