@gitlab/ui 72.12.0 → 72.12.1

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 (209) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/charts.js +14 -0
  3. package/dist/components/base/accordion/accordion.js +73 -0
  4. package/dist/components/base/accordion/accordion_item.js +133 -0
  5. package/dist/components/base/alert/alert.js +222 -0
  6. package/dist/components/base/avatar/avatar.js +160 -0
  7. package/dist/components/base/avatar_labeled/avatar_labeled.js +107 -0
  8. package/dist/components/base/avatar_link/avatar_link.js +47 -0
  9. package/dist/components/base/avatars_inline/avatars_inline.js +119 -0
  10. package/dist/components/base/badge/badge.js +105 -0
  11. package/dist/components/base/banner/banner.js +139 -0
  12. package/dist/components/base/breadcrumb/breadcrumb.js +122 -0
  13. package/dist/components/base/breadcrumb/breadcrumb_item.js +73 -0
  14. package/dist/components/base/broadcast_message/broadcast_message.js +112 -0
  15. package/dist/components/base/broadcast_message/constants.js +5 -0
  16. package/dist/components/base/button/button.js +151 -0
  17. package/dist/components/base/button_group/button_group.js +47 -0
  18. package/dist/components/base/card/card.js +71 -0
  19. package/dist/components/base/carousel/carousel.js +48 -0
  20. package/dist/components/base/carousel/carousel_slide.js +47 -0
  21. package/dist/components/base/collapse/collapse.js +59 -0
  22. package/dist/components/base/datepicker/datepicker.js +386 -0
  23. package/dist/components/base/daterange_picker/daterange_picker.js +288 -0
  24. package/dist/components/base/drawer/drawer.js +127 -0
  25. package/dist/components/base/dropdown/dropdown.js +261 -0
  26. package/dist/components/base/dropdown/dropdown_divider.js +48 -0
  27. package/dist/components/base/dropdown/dropdown_form.js +48 -0
  28. package/dist/components/base/dropdown/dropdown_item.js +131 -0
  29. package/dist/components/base/dropdown/dropdown_section_header.js +48 -0
  30. package/dist/components/base/dropdown/dropdown_text.js +48 -0
  31. package/dist/components/base/filtered_search/common_story_options.js +14 -0
  32. package/dist/components/base/filtered_search/filtered_search.js +388 -0
  33. package/dist/components/base/filtered_search/filtered_search_suggestion.js +89 -0
  34. package/dist/components/base/filtered_search/filtered_search_suggestion_list.js +138 -0
  35. package/dist/components/base/filtered_search/filtered_search_term.js +203 -0
  36. package/dist/components/base/filtered_search/filtered_search_token.js +384 -0
  37. package/dist/components/base/filtered_search/filtered_search_token_segment.js +420 -0
  38. package/dist/components/base/filtered_search/filtered_search_utils.js +242 -0
  39. package/dist/components/base/form/form.js +49 -0
  40. package/dist/components/base/form/form_checkbox/form_checkbox.js +78 -0
  41. package/dist/components/base/form/form_checkbox/form_checkbox_group.js +60 -0
  42. package/dist/components/base/form/form_checkbox_tree/checkbox_tree_node.js +79 -0
  43. package/dist/components/base/form/form_checkbox_tree/form_checkbox_tree.js +138 -0
  44. package/dist/components/base/form/form_checkbox_tree/models/constants.js +12 -0
  45. package/dist/components/base/form/form_checkbox_tree/models/node.js +51 -0
  46. package/dist/components/base/form/form_checkbox_tree/models/tree.js +199 -0
  47. package/dist/components/base/form/form_combobox/constants.js +55 -0
  48. package/dist/components/base/form/form_combobox/form_combobox.js +230 -0
  49. package/dist/components/base/form/form_date/form_date.js +143 -0
  50. package/dist/components/base/form/form_fields/form_field_validator.js +93 -0
  51. package/dist/components/base/form/form_fields/form_fields.js +214 -0
  52. package/dist/components/base/form/form_fields/mappers.js +13 -0
  53. package/dist/components/base/form/form_fields/validators.js +48 -0
  54. package/dist/components/base/form/form_group/form_group.js +97 -0
  55. package/dist/components/base/form/form_input/form_input.js +121 -0
  56. package/dist/components/base/form/form_input_group/form_input_group.js +108 -0
  57. package/dist/components/base/form/form_input_group/form_input_group_mixin.js +41 -0
  58. package/dist/components/base/form/form_radio/form_radio.js +65 -0
  59. package/dist/components/base/form/form_radio_group/form_radio_group.js +78 -0
  60. package/dist/components/base/form/form_select/constants.js +12 -0
  61. package/dist/components/base/form/form_select/form_select.js +82 -0
  62. package/dist/components/base/form/form_text/form_text.js +38 -0
  63. package/dist/components/base/form/form_textarea/form_textarea.js +112 -0
  64. package/dist/components/base/form/input_group_text/input_group_text.js +48 -0
  65. package/dist/components/base/icon/icon.js +111 -0
  66. package/dist/components/base/infinite_scroll/infinite_scroll.js +197 -0
  67. package/dist/components/base/keyset_pagination/keyset_pagination.js +151 -0
  68. package/dist/components/base/label/label.js +163 -0
  69. package/dist/components/base/link/link.js +50 -0
  70. package/dist/components/base/loading_icon/loading_icon.js +111 -0
  71. package/dist/components/base/markdown/markdown.js +52 -0
  72. package/dist/components/base/modal/modal.js +204 -0
  73. package/dist/components/base/nav/nav.js +48 -0
  74. package/dist/components/base/nav/nav_item.js +48 -0
  75. package/dist/components/base/nav/nav_item_dropdown.js +62 -0
  76. package/dist/components/base/navbar/navbar.js +48 -0
  77. package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +453 -0
  78. package/dist/components/base/new_dropdowns/base_dropdown/constants.js +4 -0
  79. package/dist/components/base/new_dropdowns/constants.js +21 -0
  80. package/dist/components/base/new_dropdowns/disclosure/constants.js +8 -0
  81. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js +370 -0
  82. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js +110 -0
  83. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js +143 -0
  84. package/dist/components/base/new_dropdowns/disclosure/mock_data.js +147 -0
  85. package/dist/components/base/new_dropdowns/disclosure/utils.js +39 -0
  86. package/dist/components/base/new_dropdowns/listbox/listbox.js +767 -0
  87. package/dist/components/base/new_dropdowns/listbox/listbox_group.js +58 -0
  88. package/dist/components/base/new_dropdowns/listbox/listbox_item.js +91 -0
  89. package/dist/components/base/new_dropdowns/listbox/listbox_search_input.js +93 -0
  90. package/dist/components/base/new_dropdowns/listbox/mock_data.js +118 -0
  91. package/dist/components/base/new_dropdowns/listbox/utils.js +34 -0
  92. package/dist/components/base/paginated_list/paginated_list.js +180 -0
  93. package/dist/components/base/pagination/pagination.js +399 -0
  94. package/dist/components/base/path/data.js +34 -0
  95. package/dist/components/base/path/path.js +189 -0
  96. package/dist/components/base/popover/popover.js +110 -0
  97. package/dist/components/base/progress_bar/progress_bar.js +48 -0
  98. package/dist/components/base/search_box_by_click/search_box_by_click.js +235 -0
  99. package/dist/components/base/search_box_by_type/search_box_by_type.js +167 -0
  100. package/dist/components/base/segmented_control/segmented_control.js +109 -0
  101. package/dist/components/base/skeleton_loader/skeleton_loader.js +224 -0
  102. package/dist/components/base/sorting/sorting.js +171 -0
  103. package/dist/components/base/sorting/sorting_item.js +109 -0
  104. package/dist/components/base/table/constants.js +5 -0
  105. package/dist/components/base/table/table.js +89 -0
  106. package/dist/components/base/table_lite/table_lite.js +72 -0
  107. package/dist/components/base/tabs/constants.js +3 -0
  108. package/dist/components/base/tabs/tab/tab.js +83 -0
  109. package/dist/components/base/tabs/tabs/scrollable_tabs.js +143 -0
  110. package/dist/components/base/tabs/tabs/tabs.js +224 -0
  111. package/dist/components/base/toast/toast.js +82 -0
  112. package/dist/components/base/toggle/toggle.js +180 -0
  113. package/dist/components/base/token/token.js +85 -0
  114. package/dist/components/base/token_selector/helpers.js +5 -0
  115. package/dist/components/base/token_selector/token_container.js +165 -0
  116. package/dist/components/base/token_selector/token_selector.js +403 -0
  117. package/dist/components/base/token_selector/token_selector_dropdown.js +199 -0
  118. package/dist/components/base/tooltip/tooltip.js +55 -0
  119. package/dist/components/charts/area/area.js +311 -0
  120. package/dist/components/charts/bar/bar.js +253 -0
  121. package/dist/components/charts/chart/chart.js +215 -0
  122. package/dist/components/charts/column/column.js +226 -0
  123. package/dist/components/charts/discrete_scatter/discrete_scatter.js +203 -0
  124. package/dist/components/charts/gauge/gauge.js +208 -0
  125. package/dist/components/charts/heatmap/heatmap.js +295 -0
  126. package/dist/components/charts/heatmap/index.js +2 -0
  127. package/dist/components/charts/legend/legend.js +228 -0
  128. package/dist/components/charts/line/line.js +308 -0
  129. package/dist/components/charts/series_label/series_label.js +100 -0
  130. package/dist/components/charts/single_stat/single_stat.js +152 -0
  131. package/dist/components/charts/sparkline/sparkline.js +261 -0
  132. package/dist/components/charts/stacked_column/stacked_column.js +335 -0
  133. package/dist/components/charts/tooltip/tooltip.js +251 -0
  134. package/dist/components/experimental/duo/chat/components/duo_chat_conversation/duo_chat_conversation.js +83 -0
  135. package/dist/components/experimental/duo/chat/components/duo_chat_loader/duo_chat_loader.js +100 -0
  136. package/dist/components/experimental/duo/chat/components/duo_chat_message/copy_code_element.js +35 -0
  137. package/dist/components/experimental/duo/chat/components/duo_chat_message/duo_chat_message.js +115 -0
  138. package/dist/components/experimental/duo/chat/components/duo_chat_message_sources/duo_chat_message_sources.js +104 -0
  139. package/dist/components/experimental/duo/chat/components/duo_chat_predefined_prompts/duo_chat_predefined_prompts.js +64 -0
  140. package/dist/components/experimental/duo/chat/constants.js +23 -0
  141. package/dist/components/experimental/duo/chat/duo_chat.js +359 -0
  142. package/dist/components/experimental/duo/chat/mock_data.js +83 -0
  143. package/dist/components/experimental/duo/user_feedback/user_feedback.js +94 -0
  144. package/dist/components/experimental/duo/user_feedback/user_feedback_modal.js +124 -0
  145. package/dist/components/experimental/experiment_badge/constants.js +4 -0
  146. package/dist/components/experimental/experiment_badge/experiment_badge.js +107 -0
  147. package/dist/components/mixins/button_mixin.js +11 -0
  148. package/dist/components/mixins/safe_link_mixin.js +30 -0
  149. package/dist/components/mixins/tooltip_mixin.js +21 -0
  150. package/dist/components/regions/dashboard_skeleton/dashboard_skeleton.js +53 -0
  151. package/dist/components/regions/empty_state/empty_state.js +154 -0
  152. package/dist/components/shared_components/charts/tooltip_default_format.js +53 -0
  153. package/dist/components/shared_components/clear_icon_button/clear_icon_button.js +64 -0
  154. package/dist/components/shared_components/close_button/close_button.js +54 -0
  155. package/dist/components/utilities/animated_number/animated_number.js +131 -0
  156. package/dist/components/utilities/friendly_wrap/friendly_wrap.js +75 -0
  157. package/dist/components/utilities/intersection_observer/intersection_observer.js +88 -0
  158. package/dist/components/utilities/intersperse/intersperse.js +86 -0
  159. package/dist/components/utilities/sprintf/sprintf.js +172 -0
  160. package/dist/components/utilities/truncate/constants.js +7 -0
  161. package/dist/components/utilities/truncate/truncate.js +111 -0
  162. package/dist/components/utilities/truncate_text/constants.js +7 -0
  163. package/dist/components/utilities/truncate_text/truncate_text.js +146 -0
  164. package/dist/config.js +86 -0
  165. package/dist/directives/collapse_toggle.js +1 -0
  166. package/dist/directives/hover_load/hover_load.js +45 -0
  167. package/dist/directives/modal.js +1 -0
  168. package/dist/directives/outside/get_event_like_time_stamp.js +33 -0
  169. package/dist/directives/outside/outside.js +106 -0
  170. package/dist/directives/resize_observer/resize_observer.js +51 -0
  171. package/dist/directives/safe_html/constants.js +6 -0
  172. package/dist/directives/safe_html/safe_html.js +39 -0
  173. package/dist/directives/safe_link/mock_data.js +10 -0
  174. package/dist/directives/safe_link/safe_link.js +65 -0
  175. package/dist/directives/tooltip.js +1 -0
  176. package/dist/index.css +7 -0
  177. package/dist/index.css.map +1 -0
  178. package/dist/index.js +105 -0
  179. package/dist/tokens/common_story_options.js +54 -0
  180. package/dist/tokens/css/tokens.css +1 -1
  181. package/dist/tokens/css/tokens.dark.css +1 -1
  182. package/dist/tokens/js/tokens.dark.js +1 -1
  183. package/dist/tokens/js/tokens.js +1 -1
  184. package/dist/tokens/scss/_tokens.dark.scss +1 -1
  185. package/dist/tokens/scss/_tokens.scss +1 -1
  186. package/dist/utils/breakpoints.js +20 -0
  187. package/dist/utils/charts/config.js +556 -0
  188. package/dist/utils/charts/constants.js +63 -0
  189. package/dist/utils/charts/mock_data.js +211 -0
  190. package/dist/utils/charts/story_config.js +42 -0
  191. package/dist/utils/charts/theme.js +192 -0
  192. package/dist/utils/charts/utils.js +54 -0
  193. package/dist/utils/constants.js +288 -0
  194. package/dist/utils/data_utils.js +21 -0
  195. package/dist/utils/datetime_utility.js +61 -0
  196. package/dist/utils/i18n.js +15 -0
  197. package/dist/utils/is_slot_empty.js +38 -0
  198. package/dist/utils/number_utils.js +124 -0
  199. package/dist/utils/stories_constants.js +29 -0
  200. package/dist/utils/stories_utils.js +13 -0
  201. package/dist/utils/story_decorators/container.js +16 -0
  202. package/dist/utils/string_utils.js +69 -0
  203. package/dist/utils/svgs/svg_paths.js +7 -0
  204. package/dist/utils/test_utils.js +33 -0
  205. package/dist/utils/use_fake_date.js +29 -0
  206. package/dist/utils/use_mock_intersection_observer.js +108 -0
  207. package/dist/utils/utils.js +197 -0
  208. package/dist/utils.js +5 -0
  209. package/package.json +1 -1
@@ -0,0 +1,211 @@
1
+ import { BLUE_500 } from '../../../dist/tokens/js/tokens';
2
+ import { hexToRgba } from '../utils';
3
+ import { colorFromDefaultPalette } from './theme';
4
+
5
+ const mockDefaultDataZoomConfig = {
6
+ dataZoom: [{
7
+ bottom: 22,
8
+ filterMode: 'none',
9
+ minSpan: 0.01,
10
+ type: 'slider'
11
+ }, {
12
+ type: 'inside',
13
+ filterMode: 'none',
14
+ minSpan: 0.01,
15
+ disabled: true
16
+ }],
17
+ grid: {
18
+ bottom: 81
19
+ },
20
+ xAxis: {
21
+ nameGap: 67
22
+ }
23
+ };
24
+ const mockDefaultChartOptions = {
25
+ grid: {
26
+ top: 16,
27
+ bottom: 44,
28
+ left: 64,
29
+ right: 32
30
+ },
31
+ xAxis: {
32
+ name: 'Value',
33
+ type: 'value',
34
+ nameLocation: 'center',
35
+ boundaryGap: false,
36
+ splitLine: {
37
+ show: false
38
+ },
39
+ axisPointer: {
40
+ show: true,
41
+ label: {},
42
+ lineStyle: {
43
+ type: 'solid'
44
+ }
45
+ }
46
+ },
47
+ yAxis: {
48
+ name: 'Value',
49
+ type: 'value',
50
+ nameLocation: 'center',
51
+ nameGap: 50,
52
+ axisLabel: {},
53
+ axisTick: {
54
+ show: false
55
+ }
56
+ },
57
+ legend: {
58
+ show: false
59
+ }
60
+ };
61
+
62
+ /**
63
+ * This is currently used in area.stories.js and line.stories.js
64
+ */
65
+ const mockAnnotationsSeries = {
66
+ series: [{
67
+ type: 'scatter',
68
+ name: 'annotations',
69
+ data: [],
70
+ markLine: {
71
+ lineStyle: {
72
+ color: BLUE_500
73
+ },
74
+ data: [{
75
+ xAxis: '2018-01-25T01:00:00.000Z'
76
+ }, {
77
+ xAxis: '2018-01-25T10:00:00.000Z'
78
+ }, {
79
+ xAxis: '2018-02-06T08:00:00.000Z'
80
+ }]
81
+ },
82
+ markPoint: {
83
+ symbol: 'path://m5 229 5 8h-10z',
84
+ symbolSize: '8',
85
+ symbolOffset: [0, ' 60%'],
86
+ itemStyle: {
87
+ color: BLUE_500
88
+ },
89
+ data: [{
90
+ name: 'annotations',
91
+ xAxis: '2018-01-25T01:00:00.000Z',
92
+ yAxis: 0,
93
+ tooltipData: {
94
+ content: 'Scranton strangler was caught.'
95
+ }
96
+ }, {
97
+ name: 'annotations',
98
+ xAxis: '2018-01-25T10:00:00.000Z',
99
+ yAxis: 0,
100
+ tooltipData: {
101
+ content: 'Tobys green car is missing.'
102
+ }
103
+ }, {
104
+ name: 'annotations',
105
+ xAxis: '2018-02-06T08:00:00.000Z',
106
+ yAxis: 0,
107
+ tooltipData: {
108
+ content: 'It was actually Toby!'
109
+ }
110
+ }]
111
+ }
112
+ }]
113
+ };
114
+
115
+ /**
116
+ * This is currently used in area.stories.js and line.stories.js
117
+ */
118
+ const mockAnnotationsConfigs = {
119
+ annotations: [{
120
+ min: '2018-01-25T01:00:00.000Z',
121
+ max: '2018-01-25T01:00:00.000Z',
122
+ tooltipData: {
123
+ content: 'Scranton strangler was caught.'
124
+ }
125
+ }, {
126
+ min: '2018-01-25T10:00:00.000Z',
127
+ max: '2018-01-25T10:00:00.000Z',
128
+ tooltipData: {
129
+ content: 'Tobys green car is missing.'
130
+ }
131
+ }, {
132
+ min: '2018-02-06T08:00:00.000Z',
133
+ max: '2018-02-06T08:00:00.000Z',
134
+ tooltipData: {
135
+ content: 'It was actually Toby!'
136
+ }
137
+ }]
138
+ };
139
+ const mockDefaultStackedBarData = [{
140
+ name: 'Fun 1',
141
+ data: [58, 49, 38, 23, 27, 68, 38, 35, 7, 64, 65, 31]
142
+ }, {
143
+ name: 'Fun 2',
144
+ data: [8, 6, 34, 19, 9, 7, 17, 25, 14, 7, 10, 32]
145
+ }, {
146
+ name: 'Fun 3',
147
+ data: [67, 60, 66, 32, 61, 54, 13, 50, 16, 11, 47, 28]
148
+ }, {
149
+ name: 'Fun 4',
150
+ data: [8, 9, 5, 40, 13, 19, 58, 21, 47, 59, 23, 46]
151
+ }];
152
+ const mockDefaultStackedLineData = [{
153
+ name: 'Stacked median line',
154
+ data: [67, 60, 66, 32, 61, 54, 13, 50, 16, 11, 47, 28]
155
+ }];
156
+ const mockDefaultLineData = [{
157
+ name: 'Median line',
158
+ data: [['Joe', 1120], ['Sarah', 732], ['Tom', 501], ['Mary', 634], ['Mike', 290], ['Ben', 130], ['Jane', 120]]
159
+ }];
160
+ const mockDefaultBarData = [{
161
+ name: 'Full',
162
+ data: [['Joe', 1220], ['Sarah', 932], ['Tom', 901], ['Mary', 934], ['Mike', 1290], ['Ben', 1330], ['Jane', 1320]]
163
+ }];
164
+ const mockRawBarData = [['Mon', 1220], ['Tue', 932], ['Wed', 901], ['Thu', 934], ['Fri', 1290], ['Sat', 1330], ['Sun', 1320]];
165
+ const color = colorFromDefaultPalette(0);
166
+ const mockDefaultLineChartConfig = {
167
+ name: 'Line chart',
168
+ data: [],
169
+ type: 'line',
170
+ yAxisIndex: 0,
171
+ lineStyle: {
172
+ color
173
+ },
174
+ itemStyle: {
175
+ color
176
+ }
177
+ };
178
+ const mockDefaultBarChartConfig = {
179
+ type: 'bar',
180
+ name: 'Bar chart',
181
+ data: [],
182
+ stack: null,
183
+ barMaxWidth: '50%',
184
+ yAxisIndex: 0,
185
+ itemStyle: {
186
+ color: hexToRgba(color, 0.2),
187
+ borderColor: color,
188
+ borderWidth: 1
189
+ },
190
+ emphasis: {
191
+ itemStyle: {
192
+ color: hexToRgba(color, 0.4)
193
+ }
194
+ }
195
+ };
196
+ const mockSecondaryData = [{
197
+ name: 'Secondary 1',
198
+ data: [13, 25, 38, 23, 27, 28, 29, 27, 1, 15, 65, 31]
199
+ }];
200
+ const mockSecondaryBarData = [{
201
+ name: 'Secondary',
202
+ type: 'bar',
203
+ data: [['Joe', 220], ['Sarah', 392], ['Tom', 291], ['Mary', 594], ['Mike', 320], ['Ben', 230], ['Jane', 120], ['Anne', 290]]
204
+ }];
205
+ const mockSecondaryTrendlineData = [{
206
+ type: 'line',
207
+ name: 'Median line',
208
+ data: [['Joe', 220], ['Sarah', 392], ['Tom', 291], ['Mary', 594], ['Mike', 320], ['Ben', 230], ['Jane', 120], ['Anne', 290]]
209
+ }];
210
+
211
+ export { mockAnnotationsConfigs, mockAnnotationsSeries, mockDefaultBarChartConfig, mockDefaultBarData, mockDefaultChartOptions, mockDefaultDataZoomConfig, mockDefaultLineChartConfig, mockDefaultLineData, mockDefaultStackedBarData, mockDefaultStackedLineData, mockRawBarData, mockSecondaryBarData, mockSecondaryData, mockSecondaryTrendlineData };
@@ -0,0 +1,42 @@
1
+ import times from 'lodash/times';
2
+ import { SERIES_NAME, SERIES_NAME_SHORT } from '../stories_constants';
3
+ import { marqueeSelectionSvgPath, redoSvgPath, clearAllSvgPath, downloadSvgPath } from '../svgs/svg_paths';
4
+ import { colorFromDefaultPalette } from './theme';
5
+
6
+ const toolbox = {
7
+ feature: {
8
+ dataZoom: {
9
+ icon: {
10
+ zoom: marqueeSelectionSvgPath,
11
+ back: redoSvgPath
12
+ }
13
+ },
14
+ restore: {
15
+ icon: clearAllSvgPath
16
+ },
17
+ saveAsImage: {
18
+ icon: downloadSvgPath
19
+ }
20
+ }
21
+ };
22
+
23
+ /**
24
+ * Generates series data for usage in chart examples
25
+ *
26
+ * @param {Number} amount number of generated series
27
+ * @param {String} nameType type of names - how long they should be
28
+ * @returns {Array} generated series data
29
+ */
30
+ const generateSeriesData = function () {
31
+ let amount = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;
32
+ let nameType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SERIES_NAME_SHORT;
33
+ const defaultData = [820, 932, 960, 1150, 1290, 1330, 1390];
34
+ const name = SERIES_NAME[nameType];
35
+ return times(amount, index => ({
36
+ color: colorFromDefaultPalette(index),
37
+ data: defaultData.map(value => value * index),
38
+ name: `${name}${index + 1}`
39
+ }));
40
+ };
41
+
42
+ export { generateSeriesData, toolbox };
@@ -0,0 +1,192 @@
1
+ import { GRAY_600, GRAY_200, GRAY_50, GRAY_300, GRAY_100, DATA_VIZ_BLUE_200, DATA_VIZ_BLUE_400, DATA_VIZ_BLUE_600, DATA_VIZ_BLUE_800, GRAY_900, GRAY_500, DATA_VIZ_BLUE_500, DATA_VIZ_BLUE_900, DATA_VIZ_ORANGE_500, DATA_VIZ_ORANGE_600, DATA_VIZ_AQUA_500, DATA_VIZ_GREEN_600, DATA_VIZ_MAGENTA_500, DATA_VIZ_BLUE_700, DATA_VIZ_ORANGE_800, DATA_VIZ_AQUA_700, DATA_VIZ_GREEN_800, DATA_VIZ_MAGENTA_700, DATA_VIZ_ORANGE_950, DATA_VIZ_AQUA_900, DATA_VIZ_GREEN_950, DATA_VIZ_MAGENTA_900, DATA_VIZ_ORANGE_700, DATA_VIZ_AQUA_600, DATA_VIZ_GREEN_700, DATA_VIZ_MAGENTA_600, DATA_VIZ_ORANGE_900, DATA_VIZ_AQUA_800, DATA_VIZ_GREEN_900, DATA_VIZ_MAGENTA_800, DATA_VIZ_BLUE_950, DATA_VIZ_AQUA_950, DATA_VIZ_GREEN_500, DATA_VIZ_MAGENTA_950, DATA_VIZ_ORANGE_400, DATA_VIZ_GREEN_400, DATA_VIZ_BLUE_300, DATA_VIZ_ORANGE_200, DATA_VIZ_AQUA_300, DATA_VIZ_GREEN_200, DATA_VIZ_MAGENTA_300, DATA_VIZ_BLUE_100, DATA_VIZ_ORANGE_50, DATA_VIZ_AQUA_100, DATA_VIZ_GREEN_50, DATA_VIZ_MAGENTA_100, DATA_VIZ_ORANGE_300, DATA_VIZ_AQUA_400, DATA_VIZ_GREEN_300, DATA_VIZ_MAGENTA_400, DATA_VIZ_ORANGE_100, DATA_VIZ_AQUA_200, DATA_VIZ_GREEN_100, DATA_VIZ_MAGENTA_200, DATA_VIZ_BLUE_50, DATA_VIZ_AQUA_50, DATA_VIZ_MAGENTA_50, RED_500, WHITE } from '../../../dist/tokens/js/tokens';
2
+ import { scrollHandleSvgPath } from '../svgs/svg_paths';
3
+ import { hexToRgba } from '../utils';
4
+
5
+ const GL_BORDER_RADIUS_BASE = '0.25rem';
6
+ const themeName = 'gitlab';
7
+ const heatmapHues = [GRAY_100, DATA_VIZ_BLUE_200, DATA_VIZ_BLUE_400, DATA_VIZ_BLUE_600, DATA_VIZ_BLUE_800];
8
+ const gaugeNeutralHues = [GRAY_900, GRAY_500];
9
+ const gaugeSafeHues = [DATA_VIZ_BLUE_500, DATA_VIZ_BLUE_900];
10
+ const gaugeWarningHue = DATA_VIZ_ORANGE_500;
11
+
12
+ /**
13
+ * The default palette is based on the Categorical data palette
14
+ * Categorical data (also known as qualitative or thematic) uses hue to
15
+ * differentiate qualitative data, and lightness to differentiate quantitive data.
16
+ * More info: https://design.gitlab.com/data-visualization/color#categorical-data
17
+ */
18
+ const colorPaletteDefault = [DATA_VIZ_BLUE_500, DATA_VIZ_ORANGE_600, DATA_VIZ_AQUA_500, DATA_VIZ_GREEN_600, DATA_VIZ_MAGENTA_500, DATA_VIZ_BLUE_700, DATA_VIZ_ORANGE_800, DATA_VIZ_AQUA_700, DATA_VIZ_GREEN_800, DATA_VIZ_MAGENTA_700, DATA_VIZ_BLUE_900, DATA_VIZ_ORANGE_950, DATA_VIZ_AQUA_900, DATA_VIZ_GREEN_950, DATA_VIZ_MAGENTA_900, DATA_VIZ_BLUE_600, DATA_VIZ_ORANGE_700, DATA_VIZ_AQUA_600, DATA_VIZ_GREEN_700, DATA_VIZ_MAGENTA_600, DATA_VIZ_BLUE_800, DATA_VIZ_ORANGE_900, DATA_VIZ_AQUA_800, DATA_VIZ_GREEN_900, DATA_VIZ_MAGENTA_800, DATA_VIZ_BLUE_950, DATA_VIZ_ORANGE_500, DATA_VIZ_AQUA_950, DATA_VIZ_GREEN_500, DATA_VIZ_MAGENTA_950];
19
+ const colorFromDefaultPalette = index => colorPaletteDefault[index % colorPaletteDefault.length];
20
+ const colorPaletteDark = [DATA_VIZ_BLUE_500, DATA_VIZ_ORANGE_400, DATA_VIZ_AQUA_500, DATA_VIZ_GREEN_400, DATA_VIZ_MAGENTA_500, DATA_VIZ_BLUE_300, DATA_VIZ_ORANGE_200, DATA_VIZ_AQUA_300, DATA_VIZ_GREEN_200, DATA_VIZ_MAGENTA_300, DATA_VIZ_BLUE_100, DATA_VIZ_ORANGE_50, DATA_VIZ_AQUA_100, DATA_VIZ_GREEN_50, DATA_VIZ_MAGENTA_100, DATA_VIZ_BLUE_400, DATA_VIZ_ORANGE_300, DATA_VIZ_AQUA_400, DATA_VIZ_GREEN_300, DATA_VIZ_MAGENTA_400, DATA_VIZ_BLUE_200, DATA_VIZ_ORANGE_100, DATA_VIZ_AQUA_200, DATA_VIZ_GREEN_100, DATA_VIZ_MAGENTA_200, DATA_VIZ_BLUE_50, DATA_VIZ_ORANGE_500, DATA_VIZ_AQUA_50, DATA_VIZ_GREEN_500, DATA_VIZ_MAGENTA_50];
21
+ const colorFromDarkPalette = index => colorPaletteDark[index % colorPaletteDark.length];
22
+ const axes = {
23
+ axisLabel: {
24
+ margin: 8,
25
+ show: true,
26
+ color: `var(--gray-600, ${GRAY_600})`,
27
+ hideOverlap: true
28
+ },
29
+ axisLine: {
30
+ show: false
31
+ },
32
+ axisPointer: {
33
+ lineStyle: {
34
+ type: 'solid',
35
+ color: GRAY_600
36
+ },
37
+ label: {
38
+ show: false
39
+ }
40
+ },
41
+ axisTick: {
42
+ show: true,
43
+ alignWithLabel: true,
44
+ lineStyle: {
45
+ color: GRAY_200
46
+ }
47
+ },
48
+ nameGap: 30,
49
+ nameTextStyle: {
50
+ fontWeight: 'bold'
51
+ },
52
+ splitLine: {
53
+ lineStyle: {
54
+ color: [GRAY_200]
55
+ }
56
+ },
57
+ splitArea: {
58
+ show: false,
59
+ areaStyle: {
60
+ color: [hexToRgba(GRAY_50, 0.3), hexToRgba(GRAY_300, 0.3)]
61
+ }
62
+ }
63
+ };
64
+ const isLineChartWithoutArea = options => Array.isArray(options === null || options === void 0 ? void 0 : options.series) && options.series.some(series => series.type === 'line' && !series.areaStyle);
65
+ const createTheme = function () {
66
+ let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
67
+ return {
68
+ color: colorPaletteDefault,
69
+ backgroundColor: 'transparent',
70
+ textStyle: {
71
+ color: `var(--gl-text-color, ${GRAY_900})`
72
+ },
73
+ markLine: {
74
+ silent: true,
75
+ symbol: 'none',
76
+ label: {
77
+ show: false
78
+ },
79
+ lineStyle: {
80
+ color: RED_500,
81
+ width: 1,
82
+ type: 'dashed'
83
+ }
84
+ },
85
+ markArea: {
86
+ silent: true,
87
+ itemStyle: {
88
+ color: hexToRgba(RED_500, 0.1)
89
+ }
90
+ },
91
+ dataZoom: {
92
+ borderColor: 'transparent',
93
+ filterMode: 'none',
94
+ brushSelect: false,
95
+ dataBackground: {
96
+ lineStyle: {
97
+ width: 2,
98
+ color: GRAY_200,
99
+ opacity: 1
100
+ },
101
+ // render unfilled zoom-graph if the series is a line chart without area styles
102
+ // more details: https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/2364#note_666637306
103
+ areaStyle: isLineChartWithoutArea(options) ? {} // Use empty object instead of null, see https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/2185#note_707711029 for more context
104
+ : {
105
+ color: GRAY_50,
106
+ opacity: 1
107
+ }
108
+ },
109
+ fillerColor: hexToRgba(GRAY_200, 0.23),
110
+ handleIcon: scrollHandleSvgPath,
111
+ handleStyle: {
112
+ borderColor: 'transparent',
113
+ color: GRAY_500
114
+ },
115
+ handleSize: '50%',
116
+ labelFormatter: () => null,
117
+ textStyle: {
118
+ color: GRAY_600
119
+ }
120
+ },
121
+ toolbox: {
122
+ top: '-5',
123
+ left: 'center',
124
+ itemSize: 14,
125
+ emphasis: {
126
+ iconStyle: {
127
+ borderWidth: 0,
128
+ color: GRAY_900,
129
+ textBackgroundColor: WHITE,
130
+ textBorderRadius: GL_BORDER_RADIUS_BASE,
131
+ textPadding: [8, 12]
132
+ }
133
+ },
134
+ iconStyle: {
135
+ color: GRAY_500,
136
+ borderWidth: 0
137
+ },
138
+ itemGap: 8,
139
+ feature: {
140
+ dataZoom: {
141
+ title: {
142
+ zoom: 'Click to zoom in on a portion of the graph',
143
+ back: 'Remove selection'
144
+ }
145
+ },
146
+ restore: {
147
+ title: 'Remove all selections and return chart to default state'
148
+ },
149
+ saveAsImage: {
150
+ title: 'Save chart as an image',
151
+ name: 'graph'
152
+ }
153
+ }
154
+ },
155
+ markPoint: {
156
+ label: {
157
+ normal: {
158
+ textStyle: {
159
+ color: GRAY_50
160
+ }
161
+ },
162
+ emphasis: {
163
+ textStyle: {
164
+ color: GRAY_50
165
+ }
166
+ }
167
+ }
168
+ },
169
+ line: {
170
+ itemStyle: {
171
+ normal: {
172
+ borderWidth: 1
173
+ }
174
+ },
175
+ lineStyle: {
176
+ normal: {
177
+ width: 2
178
+ }
179
+ },
180
+ symbolSize: '6',
181
+ symbol: 'circle',
182
+ showSymbol: false,
183
+ smooth: false
184
+ },
185
+ categoryAxis: axes,
186
+ valueAxis: axes,
187
+ logAxis: axes,
188
+ timeAxis: axes
189
+ };
190
+ };
191
+
192
+ export { colorFromDarkPalette, colorFromDefaultPalette, colorPaletteDark, colorPaletteDefault, createTheme, gaugeNeutralHues, gaugeSafeHues, gaugeWarningHue, heatmapHues, themeName };
@@ -0,0 +1,54 @@
1
+ import { ANNOTATIONS_SERIES_NAME, ANNOTATIONS_COMPONENT_TYPE } from './constants';
2
+
3
+ /**
4
+ * Check if passed series has annotations related data.
5
+ *
6
+ * This is currently used in time series charts (area & line).
7
+ *
8
+ * @param {Array} series Array of series
9
+ * @returns {Boolean}
10
+ */
11
+ const seriesHasAnnotations = function () {
12
+ let series = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
13
+ return (series || []).filter(seriesData => {
14
+ var _seriesData$ANNOTATIO, _seriesData$ANNOTATIO2;
15
+ return seriesData.name === ANNOTATIONS_SERIES_NAME && ((_seriesData$ANNOTATIO = seriesData[ANNOTATIONS_COMPONENT_TYPE]) === null || _seriesData$ANNOTATIO === void 0 ? void 0 : (_seriesData$ANNOTATIO2 = _seriesData$ANNOTATIO.data) === null || _seriesData$ANNOTATIO2 === void 0 ? void 0 : _seriesData$ANNOTATIO2.length);
16
+ }).length !== 0;
17
+ };
18
+
19
+ /**
20
+ * Check if a data point is from an annotation series.
21
+ *
22
+ * This is triggered when hovered over time series charts.
23
+ *
24
+ * This is currently used in
25
+ * @param {Object} params data point object
26
+ * @returns {boolean}
27
+ */
28
+ const isDataPointAnnotation = function () {
29
+ let params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
30
+ return params.name === ANNOTATIONS_SERIES_NAME && params.componentType === ANNOTATIONS_COMPONENT_TYPE;
31
+ };
32
+
33
+ /**
34
+ * Date formatter to make date strings more
35
+ * readable.
36
+ *
37
+ * This is currently used in area and line charts
38
+ * stories.
39
+ *
40
+ * @param {String} d date string
41
+ * @returns {String}
42
+ */
43
+ const timeSeriesDateFormatter = function () {
44
+ let d = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
45
+ if (!d) {
46
+ return '';
47
+ }
48
+ const date = new Date(d);
49
+ const month = (date.getMonth() + 1).toString().padStart(2, '0');
50
+ const day = date.getDate().toString().padStart(2, '0');
51
+ return `${date.getFullYear()}-${month}-${day}`;
52
+ };
53
+
54
+ export { isDataPointAnnotation, seriesHasAnnotations, timeSeriesDateFormatter };