@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,224 @@
1
+ import range from 'lodash/range';
2
+ import { uid } from '../../../utils/utils';
3
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
4
+
5
+ const DEFAULT_LINE_MAX_WIDTH = 235;
6
+ const DEFAULT_LINE_WIDTH_PERCENTAGES = [65, 100, 85];
7
+ const DEFAULT_LINE_HEIGHT = 10;
8
+ const DEFAULT_LINE_SPACING = 4;
9
+ const DEFAULT_SVG_WIDTH = 400;
10
+ const DEFAULT_SVG_HEIGHT = 130;
11
+ var script = {
12
+ name: 'GlSkeletonLoader',
13
+ functional: true,
14
+ props: {
15
+ /**
16
+ * It will be set in the viewbox attr in the <svg />.
17
+ * Defaults to 400 when skeleton is passed via the slot. Defaults to 235 when default skeleton is used
18
+ */
19
+ width: {
20
+ type: Number,
21
+ default: null,
22
+ required: false
23
+ },
24
+ /**
25
+ * It will be set in the viewbox attr in the <svg />. Defaults to 130 when skeleton is passed via the slot.
26
+ * Defaults to the combined height of the lines when default skeleton is used
27
+ */
28
+ height: {
29
+ type: Number,
30
+ default: null,
31
+ required: false
32
+ },
33
+ /**
34
+ * Aspect ratio option of <svg/>
35
+ */
36
+ preserveAspectRatio: {
37
+ type: String,
38
+ default: 'xMidYMid meet',
39
+ required: false
40
+ },
41
+ /**
42
+ * Required if you're using <base url="/" /> in your <head />. Defaults to an empty string.
43
+ * This prop is common used as: <gl-skeleton-loader :base-url="$route.fullPath" /> which will fill the SVG attribute with the relative path.
44
+ */
45
+ baseUrl: {
46
+ type: String,
47
+ default: '',
48
+ required: false
49
+ },
50
+ /**
51
+ * Defaults to unique id
52
+ */
53
+ uniqueKey: {
54
+ type: String,
55
+ default: () => uid(),
56
+ required: false
57
+ },
58
+ /**
59
+ * Number of lines to show when using the default skeleton
60
+ */
61
+ lines: {
62
+ type: Number,
63
+ default: 3,
64
+ required: false
65
+ },
66
+ /**
67
+ * If the default skeleton lines should all be the same width
68
+ */
69
+ equalWidthLines: {
70
+ type: Boolean,
71
+ default: false,
72
+ required: false
73
+ }
74
+ },
75
+ render(createElement, _ref) {
76
+ let {
77
+ props,
78
+ slots
79
+ } = _ref;
80
+ const slotIsSet = () => slots().default;
81
+ const propValueOrDefault = (name, defaultValue) => props[name] !== null ? props[name] : defaultValue;
82
+ const width = () => {
83
+ if (slotIsSet()) {
84
+ return propValueOrDefault('width', DEFAULT_SVG_WIDTH);
85
+ }
86
+ return propValueOrDefault('width', DEFAULT_LINE_MAX_WIDTH);
87
+ };
88
+ const height = () => {
89
+ if (slotIsSet()) {
90
+ return propValueOrDefault('height', DEFAULT_SVG_HEIGHT);
91
+ }
92
+ return propValueOrDefault('height', props.lines * DEFAULT_LINE_HEIGHT + (props.lines - 1) * DEFAULT_LINE_SPACING);
93
+ };
94
+ const lineWidth = index => {
95
+ if (props.equalWidthLines) {
96
+ return '100%';
97
+ }
98
+ return `${DEFAULT_LINE_WIDTH_PERCENTAGES[index % DEFAULT_LINE_WIDTH_PERCENTAGES.length]}%`;
99
+ };
100
+ const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
101
+ const svg = createElement('svg', {
102
+ class: {
103
+ 'gl-skeleton-loader': true,
104
+ 'gl-w-full gl-h-full': !slotIsSet()
105
+ },
106
+ attrs: {
107
+ viewBox: `0 0 ${width()} ${height()}`,
108
+ version: '1.1',
109
+ preserveAspectRatio: props.preserveAspectRatio
110
+ }
111
+ }, [createElement('title', {}, ['Loading']), createElement('rect', {
112
+ attrs: {
113
+ 'clip-path': `url(${props.baseUrl}#${props.uniqueKey}-idClip)`,
114
+ x: 0,
115
+ y: 0,
116
+ width: width(),
117
+ height: height(),
118
+ ...(reducedMotion ? {
119
+ class: 'gl-fill-gray-100'
120
+ } : {
121
+ fill: `url(${props.baseUrl}#${props.uniqueKey}-idGradient)`
122
+ })
123
+ }
124
+ }), createElement('defs', {}, [createElement('clipPath', {
125
+ attrs: {
126
+ id: `${props.uniqueKey}-idClip`
127
+ }
128
+ }, slotIsSet() ? slots().default : range(props.lines).map(index => createElement('rect', {
129
+ key: index,
130
+ attrs: {
131
+ y: index * DEFAULT_LINE_HEIGHT + index * DEFAULT_LINE_SPACING,
132
+ width: lineWidth(index),
133
+ height: DEFAULT_LINE_HEIGHT,
134
+ rx: 4
135
+ }
136
+ }))), !reducedMotion && createElement('linearGradient', {
137
+ attrs: {
138
+ id: `${props.uniqueKey}-idGradient`
139
+ }
140
+ }, [createElement('stop', {
141
+ class: 'primary-stop',
142
+ attrs: {
143
+ offset: '0%'
144
+ }
145
+ }, [createElement('animate', {
146
+ attrs: {
147
+ attributeName: 'offset',
148
+ values: '-2; 1',
149
+ dur: '1s',
150
+ repeatCount: 'indefinite'
151
+ }
152
+ })]), createElement('stop', {
153
+ class: 'secondary-stop',
154
+ attrs: {
155
+ offset: '50%'
156
+ }
157
+ }, [createElement('animate', {
158
+ attrs: {
159
+ attributeName: 'offset',
160
+ values: '-1.5; 1.5',
161
+ dur: '1s',
162
+ repeatCount: 'indefinite'
163
+ }
164
+ })]), createElement('stop', {
165
+ class: 'primary-stop',
166
+ attrs: {
167
+ offset: '100%'
168
+ }
169
+ }, [createElement('animate', {
170
+ attrs: {
171
+ attributeName: 'offset',
172
+ values: '-1; 2',
173
+ dur: '1s',
174
+ repeatCount: 'indefinite'
175
+ }
176
+ })])])])]);
177
+ if (slotIsSet()) {
178
+ return svg;
179
+ }
180
+ return createElement('div', {
181
+ class: 'gl-skeleton-loader-default-container gl-max-w-full',
182
+ style: {
183
+ width: props.width !== null ? `${props.width}px` : null,
184
+ height: props.height !== null ? `${props.height}px` : null
185
+ }
186
+ }, [svg]);
187
+ }
188
+ };
189
+
190
+ /* script */
191
+ const __vue_script__ = script;
192
+
193
+ /* template */
194
+
195
+ /* style */
196
+ const __vue_inject_styles__ = undefined;
197
+ /* scoped */
198
+ const __vue_scope_id__ = undefined;
199
+ /* module identifier */
200
+ const __vue_module_identifier__ = undefined;
201
+ /* functional template */
202
+ const __vue_is_functional_template__ = undefined;
203
+ /* style inject */
204
+
205
+ /* style inject SSR */
206
+
207
+ /* style inject shadow dom */
208
+
209
+
210
+
211
+ const __vue_component__ = __vue_normalize__(
212
+ {},
213
+ __vue_inject_styles__,
214
+ __vue_script__,
215
+ __vue_scope_id__,
216
+ __vue_is_functional_template__,
217
+ __vue_module_identifier__,
218
+ false,
219
+ undefined,
220
+ undefined,
221
+ undefined
222
+ );
223
+
224
+ export default __vue_component__;
@@ -0,0 +1,171 @@
1
+ import { GlTooltipDirective } from '../../../directives/tooltip';
2
+ import GlButton from '../button/button';
3
+ import GlButtonGroup from '../button_group/button_group';
4
+ import GlCollapsibleListbox from '../new_dropdowns/listbox/listbox';
5
+ import { isOption } from '../new_dropdowns/listbox/utils';
6
+ import GlDropdown from '../dropdown/dropdown';
7
+ import { translate } from '../../../utils/i18n';
8
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
9
+
10
+ var script = {
11
+ name: 'GlSorting',
12
+ components: {
13
+ GlButton,
14
+ GlButtonGroup,
15
+ GlCollapsibleListbox,
16
+ GlDropdown
17
+ },
18
+ directives: {
19
+ GlTooltip: GlTooltipDirective
20
+ },
21
+ props: {
22
+ /**
23
+ * Text to place in the toggle button.
24
+ */
25
+ text: {
26
+ type: String,
27
+ required: false,
28
+ default: ''
29
+ },
30
+ /**
31
+ * Sort options to display in the dropdown
32
+ */
33
+ sortOptions: {
34
+ type: Array,
35
+ required: false,
36
+ default: null,
37
+ // eslint-disable-next-line unicorn/no-array-callback-reference
38
+ validator: sortOptions => sortOptions.every(isOption)
39
+ },
40
+ /**
41
+ * The value of the item currently selected in the dropdown.
42
+ * Only to be used with the `sortOptions` prop.
43
+ */
44
+ sortBy: {
45
+ type: [String, Number],
46
+ required: false,
47
+ default: null
48
+ },
49
+ /**
50
+ * Determines the current sort order icon displayed.
51
+ */
52
+ isAscending: {
53
+ type: Boolean,
54
+ required: false,
55
+ default: false
56
+ },
57
+ /**
58
+ * The text for the tooltip and aria-label of the sort direction toggle
59
+ * button instead of the defaults for ascending/descending.
60
+ */
61
+ sortDirectionToolTip: {
62
+ type: String,
63
+ required: false,
64
+ default: null
65
+ },
66
+ /**
67
+ * Additional class(es) to apply to the root element of the GlDropdown.
68
+ */
69
+ dropdownClass: {
70
+ type: String,
71
+ required: false,
72
+ default: ''
73
+ },
74
+ /**
75
+ * Additional class(es) to apply to the dropdown toggle.
76
+ */
77
+ dropdownToggleClass: {
78
+ type: String,
79
+ required: false,
80
+ default: ''
81
+ },
82
+ /**
83
+ * Additional class(es) to apply to the sort direction toggle button.
84
+ */
85
+ sortDirectionToggleClass: {
86
+ type: String,
87
+ required: false,
88
+ default: ''
89
+ }
90
+ },
91
+ computed: {
92
+ localSortDirection() {
93
+ return this.isAscending ? 'sort-lowest' : 'sort-highest';
94
+ },
95
+ sortDirectionText() {
96
+ if (this.sortDirectionToolTip) return this.sortDirectionToolTip;
97
+ return this.isAscending ? translate('GlSorting.sortAscending', 'Sort direction: ascending') : translate('GlSorting.sortDescending', 'Sort direction: descending');
98
+ },
99
+ useListbox() {
100
+ return Boolean(this.sortOptions);
101
+ },
102
+ listboxToggleClass() {
103
+ return [this.dropdownToggleClass, 'gl-rounded-top-right-none!', 'gl-rounded-bottom-right-none!', 'gl-focus-z-index-1'];
104
+ }
105
+ },
106
+ methods: {
107
+ toggleSortDirection() {
108
+ const newDirection = !this.isAscending;
109
+
110
+ /**
111
+ * Emitted when the sort direction button is clicked.
112
+ *
113
+ * The event's payload will be true if the direction has been changed to
114
+ * ascending, or false if descending.
115
+ *
116
+ * @property {boolean} isAscending
117
+ */
118
+ this.$emit('sortDirectionChange', newDirection);
119
+ },
120
+ onSortByChanged(event) {
121
+ /**
122
+ * Emitted when the sort field is changed.
123
+ *
124
+ * The event's payload is the value of the selected sort field.
125
+ *
126
+ * Only emitted when using the `sortOptions` prop.
127
+ *
128
+ * @property {string|number} value
129
+ */
130
+ this.$emit('sortByChange', event);
131
+ }
132
+ }
133
+ };
134
+
135
+ /* script */
136
+ const __vue_script__ = script;
137
+
138
+ /* template */
139
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-button-group',{staticClass:"gl-sorting"},[(_vm.useListbox)?_c('gl-collapsible-listbox',{class:_vm.dropdownClass,attrs:{"toggle-text":_vm.text,"items":_vm.sortOptions,"selected":_vm.sortBy,"toggle-class":_vm.listboxToggleClass,"placement":"right"},on:{"select":_vm.onSortByChanged}}):_c('gl-dropdown',_vm._b({class:_vm.dropdownClass,attrs:{"text":_vm.text,"category":"secondary","toggle-class":_vm.dropdownToggleClass,"right":""}},'gl-dropdown',_vm.$props,false),[_vm._t("default")],2),_vm._v(" "),_c('gl-button',{directives:[{name:"gl-tooltip",rawName:"v-gl-tooltip"}],class:['sorting-direction-button', _vm.sortDirectionToggleClass],attrs:{"title":_vm.sortDirectionText,"icon":_vm.localSortDirection,"aria-label":_vm.sortDirectionText},on:{"click":_vm.toggleSortDirection}})],1)};
140
+ var __vue_staticRenderFns__ = [];
141
+
142
+ /* style */
143
+ const __vue_inject_styles__ = undefined;
144
+ /* scoped */
145
+ const __vue_scope_id__ = undefined;
146
+ /* module identifier */
147
+ const __vue_module_identifier__ = undefined;
148
+ /* functional template */
149
+ const __vue_is_functional_template__ = false;
150
+ /* style inject */
151
+
152
+ /* style inject SSR */
153
+
154
+ /* style inject shadow dom */
155
+
156
+
157
+
158
+ const __vue_component__ = __vue_normalize__(
159
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
160
+ __vue_inject_styles__,
161
+ __vue_script__,
162
+ __vue_scope_id__,
163
+ __vue_is_functional_template__,
164
+ __vue_module_identifier__,
165
+ false,
166
+ undefined,
167
+ undefined,
168
+ undefined
169
+ );
170
+
171
+ export default __vue_component__;
@@ -0,0 +1,109 @@
1
+ import GlDropdownItem from '../dropdown/dropdown_item';
2
+ import GlIcon from '../icon/icon';
3
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
4
+
5
+ /**
6
+ * Sorting Item
7
+ *
8
+ * NOTE: This component is deprecated. Instead, use the `sortOptions` prop of
9
+ * `GlSorting`.
10
+ *
11
+ * This is written as a functional component because it is a simple wrapper over
12
+ * the GlDropdownItem component and does not use internal state. Functional
13
+ * components are cheaper to render and often used as wrappers like this. We're
14
+ * not using the <template functional> syntax here because it does not support
15
+ * custom child components wihtout extra work inside GitLab or extra work
16
+ * required by the user.
17
+ */
18
+
19
+ var script = {
20
+ name: 'GlSortingItem',
21
+ functional: true,
22
+ props: {
23
+ /**
24
+ * Adds a check mark next to the item to indicate it is active.
25
+ */
26
+ active: {
27
+ type: Boolean,
28
+ default: false,
29
+ required: false
30
+ },
31
+ /**
32
+ * If given, makes the item a link pointing to the given value. Otherwise,
33
+ * the item is a button.
34
+ */
35
+ href: {
36
+ type: String,
37
+ default: null,
38
+ required: false
39
+ }
40
+ },
41
+ /**
42
+ * The content of the item.
43
+ * @slot default
44
+ */
45
+ render(createElement, _ref) {
46
+ let {
47
+ scopedSlots,
48
+ data,
49
+ props = {}
50
+ } = _ref;
51
+ const classNames = `gl-sorting-item js-active-icon gl-flex-shrink-0 gl-mr-2 ${props.active ? '' : 'inactive gl-visibility-hidden'}`;
52
+ const icon = createElement(GlIcon, {
53
+ class: classNames,
54
+ attrs: {
55
+ name: 'mobile-issue-close',
56
+ size: 16,
57
+ ariaLabel: 'Selected'
58
+ }
59
+ });
60
+ return createElement(GlDropdownItem, {
61
+ ...data,
62
+ attrs: {
63
+ ...props
64
+ },
65
+ scopedSlots: {
66
+ default: () => {
67
+ var _scopedSlots$default;
68
+ return [icon, (_scopedSlots$default = scopedSlots.default) === null || _scopedSlots$default === void 0 ? void 0 : _scopedSlots$default.call(scopedSlots)];
69
+ }
70
+ }
71
+ });
72
+ }
73
+ };
74
+
75
+ /* script */
76
+ const __vue_script__ = script;
77
+
78
+ /* template */
79
+
80
+ /* style */
81
+ const __vue_inject_styles__ = undefined;
82
+ /* scoped */
83
+ const __vue_scope_id__ = undefined;
84
+ /* module identifier */
85
+ const __vue_module_identifier__ = undefined;
86
+ /* functional template */
87
+ const __vue_is_functional_template__ = undefined;
88
+ /* style inject */
89
+
90
+ /* style inject SSR */
91
+
92
+ /* style inject shadow dom */
93
+
94
+
95
+
96
+ const __vue_component__ = __vue_normalize__(
97
+ {},
98
+ __vue_inject_styles__,
99
+ __vue_script__,
100
+ __vue_scope_id__,
101
+ __vue_is_functional_template__,
102
+ __vue_module_identifier__,
103
+ false,
104
+ undefined,
105
+ undefined,
106
+ undefined
107
+ );
108
+
109
+ export default __vue_component__;
@@ -0,0 +1,5 @@
1
+ const tableFullSlots = ['bottom-row', 'empty', 'emptyfiltered', 'table-busy', 'thead-top', 'top-row'];
2
+ const tableFullProps = ['api-url', 'busy', 'current-page', 'empty-filtered-html', 'empty-filtered-text', 'empty-html', 'empty-text', 'filter', 'filter-debounce', 'filter-function', 'filter-ignored-fields', 'filter-included-fields', 'label-sort-asc', 'label-sort-clear', 'label-sort-desc', 'no-footer-sorting', 'no-local-sorting', 'no-provider-filtering', 'no-provider-paging', 'no-provider-sorting', 'no-select-on-click', 'no-sort-reset', 'per-page', 'select-mode', 'selectable', 'selected-variant', 'show-empty', 'sort-by', 'sort-compare', 'sort-compare-locale', 'sort-compare-options', 'sort-desc', 'sort-direction', 'sort-icon-left', 'sort-null-last'];
3
+ const glTableLiteWarning = 'This GlTable could be a GlTableLite component, please consider using GlTableLite instead of GlTable to reduce the page bundlesize more about this here: https://gitlab-org.gitlab.io/gitlab-ui/?path=/docs/base-table-table-lite--default';
4
+
5
+ export { glTableLiteWarning, tableFullProps, tableFullSlots };
@@ -0,0 +1,89 @@
1
+ import { BTable } from 'bootstrap-vue/esm/index.js';
2
+ import { isDev, logWarning } from '../../../utils/utils';
3
+ import { tableFullProps, tableFullSlots, glTableLiteWarning } from './constants';
4
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
5
+
6
+ //
7
+ const shouldUseFullTable = _ref => {
8
+ let {
9
+ $attrs,
10
+ $scopedSlots
11
+ } = _ref;
12
+ return tableFullProps.some(prop => $attrs[prop] !== undefined) || tableFullSlots.some(slot => $scopedSlots[slot] !== undefined);
13
+ };
14
+ const {
15
+ tableClass
16
+ } = BTable.options.props;
17
+ var script = {
18
+ name: 'GlTable',
19
+ components: {
20
+ BTable
21
+ },
22
+ inheritAttrs: false,
23
+ props: {
24
+ tableClass,
25
+ fields: {
26
+ type: Array,
27
+ required: false,
28
+ default: null
29
+ },
30
+ stickyHeader: {
31
+ type: Boolean,
32
+ default: false,
33
+ required: false
34
+ }
35
+ },
36
+ computed: {
37
+ stickyHeaderClass() {
38
+ return this.stickyHeader ? 'gl-table--sticky-header' : null;
39
+ },
40
+ localTableClass() {
41
+ return ['gl-table', this.tableClass, this.stickyHeaderClass];
42
+ }
43
+ },
44
+ mounted() {
45
+ // logWarning will call isDev before logging any message
46
+ // this additional call to isDev is being made to exit the condition early when run in production
47
+ if (isDev() && !shouldUseFullTable(this)) {
48
+ logWarning(glTableLiteWarning, this.$el);
49
+ }
50
+ }
51
+ };
52
+
53
+ /* script */
54
+ const __vue_script__ = script;
55
+
56
+ /* template */
57
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-table',_vm._g(_vm._b({attrs:{"table-class":_vm.localTableClass,"fields":_vm.fields},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$scopedSlots)),function(slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)},'b-table',_vm.$attrs,false),_vm.$listeners))};
58
+ var __vue_staticRenderFns__ = [];
59
+
60
+ /* style */
61
+ const __vue_inject_styles__ = undefined;
62
+ /* scoped */
63
+ const __vue_scope_id__ = undefined;
64
+ /* module identifier */
65
+ const __vue_module_identifier__ = undefined;
66
+ /* functional template */
67
+ const __vue_is_functional_template__ = false;
68
+ /* style inject */
69
+
70
+ /* style inject SSR */
71
+
72
+ /* style inject shadow dom */
73
+
74
+
75
+
76
+ const __vue_component__ = __vue_normalize__(
77
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
78
+ __vue_inject_styles__,
79
+ __vue_script__,
80
+ __vue_scope_id__,
81
+ __vue_is_functional_template__,
82
+ __vue_module_identifier__,
83
+ false,
84
+ undefined,
85
+ undefined,
86
+ undefined
87
+ );
88
+
89
+ export default __vue_component__;
@@ -0,0 +1,72 @@
1
+ import { BTableLite } from 'bootstrap-vue/esm/index.js';
2
+ import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
3
+
4
+ const {
5
+ tableClass
6
+ } = BTableLite.options.props;
7
+ var script = {
8
+ name: 'GlTableLite',
9
+ components: {
10
+ BTableLite
11
+ },
12
+ inheritAttrs: false,
13
+ props: {
14
+ tableClass,
15
+ fields: {
16
+ type: Array,
17
+ required: false,
18
+ default: null
19
+ },
20
+ stickyHeader: {
21
+ type: Boolean,
22
+ default: false,
23
+ required: false
24
+ }
25
+ },
26
+ computed: {
27
+ stickyHeaderClass() {
28
+ return this.stickyHeader ? 'gl-table--sticky-header' : null;
29
+ },
30
+ localTableClass() {
31
+ return ['gl-table', this.tableClass, this.stickyHeaderClass];
32
+ }
33
+ }
34
+ };
35
+
36
+ /* script */
37
+ const __vue_script__ = script;
38
+
39
+ /* template */
40
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-table-lite',_vm._g(_vm._b({attrs:{"table-class":_vm.localTableClass,"fields":_vm.fields},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$scopedSlots)),function(slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)},'b-table-lite',_vm.$attrs,false),_vm.$listeners))};
41
+ var __vue_staticRenderFns__ = [];
42
+
43
+ /* style */
44
+ const __vue_inject_styles__ = undefined;
45
+ /* scoped */
46
+ const __vue_scope_id__ = undefined;
47
+ /* module identifier */
48
+ const __vue_module_identifier__ = undefined;
49
+ /* functional template */
50
+ const __vue_is_functional_template__ = false;
51
+ /* style inject */
52
+
53
+ /* style inject SSR */
54
+
55
+ /* style inject shadow dom */
56
+
57
+
58
+
59
+ const __vue_component__ = __vue_normalize__(
60
+ { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },
61
+ __vue_inject_styles__,
62
+ __vue_script__,
63
+ __vue_scope_id__,
64
+ __vue_is_functional_template__,
65
+ __vue_module_identifier__,
66
+ false,
67
+ undefined,
68
+ undefined,
69
+ undefined
70
+ );
71
+
72
+ export default __vue_component__;
@@ -0,0 +1,3 @@
1
+ const DEFAULT_TAB_TITLE_LINK_CLASS = 'gl-tab-nav-item';
2
+
3
+ export { DEFAULT_TAB_TITLE_LINK_CLASS };