@gitlab/ui 52.10.0 → 52.12.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 (39) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +23 -5
  3. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js +291 -0
  4. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js +90 -0
  5. package/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js +107 -0
  6. package/dist/components/base/new_dropdowns/disclosure/mock_data.js +128 -0
  7. package/dist/components/base/new_dropdowns/disclosure/utils.js +15 -0
  8. package/dist/components/base/new_dropdowns/listbox/listbox.js +4 -4
  9. package/dist/components/base/new_dropdowns/listbox/listbox_group.js +1 -1
  10. package/dist/components/base/new_dropdowns/listbox/listbox_item.js +1 -1
  11. package/dist/components/regions/empty_state/empty_state.js +12 -1
  12. package/dist/index.css +2 -2
  13. package/dist/index.css.map +1 -1
  14. package/dist/index.js +3 -0
  15. package/package.json +3 -3
  16. package/src/components/base/new_dropdowns/base_dropdown/base_dropdown.spec.js +3 -3
  17. package/src/components/base/new_dropdowns/base_dropdown/base_dropdown.vue +21 -3
  18. package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown.md +114 -0
  19. package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown.scss +7 -0
  20. package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown.spec.js +210 -0
  21. package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown.stories.js +306 -0
  22. package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown.vue +342 -0
  23. package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.spec.js +82 -0
  24. package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.vue +77 -0
  25. package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.spec.js +94 -0
  26. package/src/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.vue +98 -0
  27. package/src/components/base/new_dropdowns/disclosure/mock_data.js +156 -0
  28. package/src/components/base/new_dropdowns/disclosure/utils.js +18 -0
  29. package/src/components/base/new_dropdowns/disclosure/utils.spec.js +73 -0
  30. package/src/components/base/new_dropdowns/dropdown.scss +6 -0
  31. package/src/components/base/new_dropdowns/listbox/listbox.scss +0 -6
  32. package/src/components/base/new_dropdowns/listbox/listbox.vue +4 -4
  33. package/src/components/base/new_dropdowns/listbox/listbox_group.vue +1 -1
  34. package/src/components/base/new_dropdowns/listbox/listbox_item.vue +1 -1
  35. package/src/components/regions/empty_state/empty_state.spec.js +35 -0
  36. package/src/components/regions/empty_state/empty_state.stories.js +5 -0
  37. package/src/components/regions/empty_state/empty_state.vue +15 -1
  38. package/src/index.js +3 -0
  39. package/src/scss/components.scss +2 -0
@@ -245,4 +245,39 @@ describe('empty state component', () => {
245
245
  expect(p.text()).not.toBe(props.description);
246
246
  });
247
247
  });
248
+
249
+ describe('with custom content class', () => {
250
+ const findContentContainer = () => component.find('[data-testid="gl-empty-state-content"]');
251
+ const customContentClass = 'gl-p-0';
252
+ const expectedDefaultContentClasses = ['gl-max-w-full', 'gl-m-auto', customContentClass];
253
+ const expectedCompactContentClasses = [
254
+ 'gl-flex-grow-1',
255
+ 'gl-flex-basis-0',
256
+ 'gl-px-4',
257
+ customContentClass,
258
+ ];
259
+
260
+ it.each`
261
+ contentClass | compact | expectedClasses
262
+ ${customContentClass} | ${false} | ${expectedDefaultContentClasses}
263
+ ${[customContentClass]} | ${false} | ${expectedDefaultContentClasses}
264
+ ${{ [customContentClass]: true }} | ${false} | ${expectedDefaultContentClasses}
265
+ ${customContentClass} | ${true} | ${expectedCompactContentClasses}
266
+ ${[customContentClass]} | ${true} | ${expectedCompactContentClasses}
267
+ ${{ [customContentClass]: true }} | ${true} | ${expectedCompactContentClasses}
268
+ `(
269
+ 'applies $contentClass class when compact is $compact',
270
+ ({ contentClass, compact, expectedClasses }) => {
271
+ component = shallowMount(EmptyState, {
272
+ propsData: {
273
+ ...props,
274
+ compact,
275
+ contentClass,
276
+ },
277
+ });
278
+
279
+ expect(findContentContainer().classes()).toEqual(expectedClasses);
280
+ }
281
+ );
282
+ });
248
283
  });
@@ -14,6 +14,7 @@ const template = `
14
14
  :compact="compact"
15
15
  :primary-button-link="primaryButtonLink"
16
16
  :secondary-button-link="secondaryButtonLink"
17
+ :contentClass="contentClass"
17
18
  />`;
18
19
 
19
20
  const Template = (args) => ({
@@ -34,6 +35,7 @@ const generateProps = ({
34
35
  primaryButtonLink = '#',
35
36
  secondaryButtonLink = '#',
36
37
  compact = false,
38
+ contentClass = [],
37
39
  } = {}) => ({
38
40
  title,
39
41
  svgPath,
@@ -44,6 +46,7 @@ const generateProps = ({
44
46
  primaryButtonLink,
45
47
  secondaryButtonLink,
46
48
  compact,
49
+ contentClass,
47
50
  });
48
51
 
49
52
  export const Default = Template.bind({});
@@ -82,6 +85,7 @@ export const CustomActions = (args) => ({
82
85
  :compact="compact"
83
86
  :primary-button-link="primaryButtonLink"
84
87
  :secondary-button-link="secondaryButtonLink"
88
+ :contentClass="contentClass"
85
89
  >
86
90
  <template #actions>
87
91
  <gl-button
@@ -125,6 +129,7 @@ export const SlottedDescription = (args) => ({
125
129
  :compact="compact"
126
130
  :primary-button-link="primaryButtonLink"
127
131
  :secondary-button-link="secondaryButtonLink"
132
+ :contentClass="contentClass"
128
133
  >
129
134
  <template #description>
130
135
  <p>A slotted description allows you to use more custom HTML such as <a href="#">links</a>.</p>
@@ -83,6 +83,14 @@ export default {
83
83
  required: false,
84
84
  default: true,
85
85
  },
86
+ /**
87
+ * CSS classes to add to the content container
88
+ */
89
+ contentClass: {
90
+ type: [Array, String, Object],
91
+ required: false,
92
+ default: () => [],
93
+ },
86
94
  },
87
95
  computed: {
88
96
  height() {
@@ -97,6 +105,12 @@ export default {
97
105
  shouldRenderSecondaryButton() {
98
106
  return Boolean(this.secondaryButtonLink && this.secondaryButtonText);
99
107
  },
108
+ contentClasses() {
109
+ return [
110
+ this.compact ? 'gl-flex-grow-1 gl-flex-basis-0 gl-px-4' : 'gl-max-w-full gl-m-auto',
111
+ this.contentClass,
112
+ ];
113
+ },
100
114
  },
101
115
  };
102
116
  </script>
@@ -123,7 +137,7 @@ export default {
123
137
  />
124
138
  </div>
125
139
  </div>
126
- <div :class="compact ? 'gl-flex-grow-1 gl-flex-basis-0 gl-px-4' : 'gl-max-w-full gl-m-auto'">
140
+ <div :class="contentClasses" data-testid="gl-empty-state-content">
127
141
  <div class="gl-mx-auto gl-my-0" :class="{ 'gl-p-5': !compact }">
128
142
  <!--
129
143
  @slot Use this slot to customize the empty state's title area.
package/src/index.js CHANGED
@@ -57,6 +57,9 @@ export {
57
57
  default as GlCollapsibleListbox,
58
58
  } from './components/base/new_dropdowns/listbox/listbox.vue';
59
59
  export { default as GlListboxItem } from './components/base/new_dropdowns/listbox/listbox_item.vue';
60
+ export { default as GlDisclosureDropdown } from './components/base/new_dropdowns/disclosure/disclosure_dropdown.vue';
61
+ export { default as GlDisclosureDropdownItem } from './components/base/new_dropdowns/disclosure/disclosure_dropdown_item.vue';
62
+ export { default as GlDisclosureDropdownGroup } from './components/base/new_dropdowns/disclosure/disclosure_dropdown_group.vue';
60
63
  // new components aiming to replace GlDropdown - end
61
64
  export { default as GlPath } from './components/base/path/path.vue';
62
65
  export { default as GlTable } from './components/base/table/table.vue';
@@ -3,6 +3,7 @@
3
3
  // @import '../components/base/dropdown/dropdown'
4
4
  //
5
5
  // ADD COMPONENT IMPORTS - needed for yarn generate:component. Do not remove
6
+ @import '../components/base/new_dropdowns/disclosure/disclosure_dropdown';
6
7
  @import '../components/base/keyset_pagination/keyset_pagination';
7
8
  @import '../components/charts/gauge/gauge';
8
9
  @import '../components/base/token_selector/token_selector';
@@ -75,4 +76,5 @@
75
76
  @import '../components/shared_components/charts/tooltip_default_format';
76
77
  @import '../components/utilities/truncate/truncate';
77
78
  @import '../components/base/new_dropdowns/base_dropdown/base_dropdown';
79
+ @import '../components/base/new_dropdowns/dropdown';
78
80
  @import '../components/base/new_dropdowns/listbox/listbox';