@gitlab/ui 72.5.2 → 72.7.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 (49) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +2 -14
  3. package/dist/components/base/avatars_inline/avatars_inline.js +6 -12
  4. package/dist/components/regions/empty_state/empty_state.js +1 -1
  5. package/dist/index.css +1 -1
  6. package/dist/index.css.map +1 -1
  7. package/dist/tokens/css/tokens.css +1 -1
  8. package/dist/tokens/css/tokens.dark.css +1 -1
  9. package/dist/tokens/js/tokens.dark.js +1 -1
  10. package/dist/tokens/js/tokens.js +1 -1
  11. package/dist/tokens/scss/_tokens.dark.scss +1 -1
  12. package/dist/tokens/scss/_tokens.scss +1 -1
  13. package/dist/utility_classes.css +1 -1
  14. package/dist/utility_classes.css.map +1 -1
  15. package/dist/utils/constants.js +1 -1
  16. package/package.json +12 -10
  17. package/src/components/base/accordion/accordion_item.stories.js +1 -1
  18. package/src/components/base/alert/alert.stories.js +4 -12
  19. package/src/components/base/avatar/avatar.scss +2 -3
  20. package/src/components/base/avatars_inline/avatars_inline.md +1 -1
  21. package/src/components/base/avatars_inline/avatars_inline.scss +55 -19
  22. package/src/components/base/avatars_inline/avatars_inline.vue +10 -30
  23. package/src/components/base/badge/badge.stories.js +2 -6
  24. package/src/components/base/broadcast_message/broadcast_message.stories.js +1 -3
  25. package/src/components/base/icon/icon.stories.js +1 -1
  26. package/src/components/base/new_dropdowns/listbox/listbox.stories.js +1 -3
  27. package/src/components/base/popover/popover.stories.js +1 -3
  28. package/src/components/base/tabs/tabs/tabs.stories.js +1 -3
  29. package/src/components/base/token_selector/token_selector.stories.js +1 -1
  30. package/src/components/charts/area/area.stories.js +1 -3
  31. package/src/components/charts/chart/chart.stories.js +1 -3
  32. package/src/components/charts/line/line.stories.js +1 -3
  33. package/src/components/charts/sparkline/sparkline.stories.js +2 -2
  34. package/src/components/experimental/duo/user_feedback/user_feedback.stories.js +1 -1
  35. package/src/components/experimental/experiment_badge/experiment_badge.stories.js +1 -1
  36. package/src/components/regions/empty_state/empty_state.vue +0 -1
  37. package/src/components/utilities/animated_number/animated_number.stories.js +1 -0
  38. package/src/components/utilities/intersection_observer/intersection_observer.stories.js +1 -1
  39. package/src/components/utilities/sprintf/sprintf.stories.js +4 -4
  40. package/src/components/utilities/truncate/truncate.stories.js +1 -1
  41. package/src/components/utilities/truncate_text/truncate_text.stories.js +1 -1
  42. package/src/directives/hover_load/hover_load.stories.js +1 -1
  43. package/src/directives/outside/outside.stories.js +1 -3
  44. package/src/directives/resize_observer/resize_observer.stories.js +1 -1
  45. package/src/directives/safe_html/safe_html.stories.js +1 -1
  46. package/src/directives/safe_link/safe_link.stories.js +1 -1
  47. package/src/scss/utilities.scss +8 -0
  48. package/src/scss/utility-mixins/sizing.scss +4 -0
  49. package/src/utils/constants.js +1 -1
@@ -58,7 +58,7 @@ const labelColorOptions = {
58
58
  ...viewModeOptions
59
59
  };
60
60
  const avatarSizeOptions = [96, 64, 48, 32, 24, 16];
61
- const avatarsInlineSizeOptions = [32, 24];
61
+ const avatarsInlineSizeOptions = [32, 24, 16];
62
62
  const avatarShapeOptions = {
63
63
  circle: 'circle',
64
64
  rect: 'rect'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gitlab/ui",
3
- "version": "72.5.2",
3
+ "version": "72.7.0",
4
4
  "description": "GitLab UI Components",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -38,15 +38,15 @@
38
38
  "pretest:unit": "yarn build-tokens",
39
39
  "test": "run-s test:unit test:visual",
40
40
  "test:integration": "NODE_ENV=test start-server-and-test start http://${STORYBOOK_HOST:-localhost}:9001/iframe.html 'yarn cy:run && yarn cy:edge && yarn cy:a11y'",
41
- "test:unit": "NODE_ENV=test jest --testPathIgnorePatterns storyshots.spec.js",
41
+ "test:unit": "NODE_ENV=test jest",
42
42
  "test:unit:watch": "yarn test:unit --watch",
43
43
  "test:unit:debug": "NODE_ENV=test node --inspect node_modules/.bin/jest --testPathIgnorePatterns storyshot.spec.js --watch --runInBand",
44
- "test:unit-vue3": "VUE_VERSION=3 NODE_ENV=test jest --testPathIgnorePatterns storyshots.spec.js",
44
+ "test:unit-vue3": "VUE_VERSION=3 NODE_ENV=test jest",
45
45
  "test:unit-vue3:watch": "VUE_VERSION=3 yarn test:unit --watch",
46
46
  "test:unit-vue3:debug": "VUE_VERSION=3 NODE_ENV=test node --inspect node_modules/.bin/jest --testPathIgnorePatterns storyshot.spec.js --watch --runInBand",
47
- "test:visual": "./bin/run-visual-tests.sh 'jest ./tests/storyshots.spec.js'",
47
+ "test:visual": "./bin/run-visual-tests.sh 'test-storybook --browsers firefox --verbose --url http://localhost:9001'",
48
48
  "test:visual:minimal": "node ./bin/run_minimal_visual_tests.js",
49
- "test:visual:update": "./bin/run-visual-tests.sh 'JEST_IMAGE_SNAPSHOT_TRACK_OBSOLETE=1 jest ./tests/storyshots.spec.js --updateSnapshot'",
49
+ "test:visual:update": "./bin/run-visual-tests.sh 'test-storybook -u --browsers firefox --verbose --url http://localhost:9001'",
50
50
  "test:visual:internal": "NODE_ENV=test IS_VISUAL_TEST=true start-test http-get://${STORYBOOK_HOST:-localhost}:9001/iframe.html",
51
51
  "prettier": "prettier --check '**/*.{js,vue}'",
52
52
  "prettier:fix": "prettier --write '**/*.{js,vue}'",
@@ -88,7 +88,9 @@
88
88
  "devDependencies": {
89
89
  "@arkweid/lefthook": "0.7.7",
90
90
  "@babel/core": "^7.23.7",
91
- "@babel/preset-env": "^7.23.7",
91
+ "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
92
+ "@babel/plugin-proposal-optional-chaining": "^7.21.0",
93
+ "@babel/preset-env": "^7.23.8",
92
94
  "@babel/preset-react": "^7.23.3",
93
95
  "@cypress/grep": "^4.0.1",
94
96
  "@gitlab/eslint-plugin": "19.2.0",
@@ -101,15 +103,16 @@
101
103
  "@storybook/addon-a11y": "7.6.7",
102
104
  "@storybook/addon-docs": "7.6.7",
103
105
  "@storybook/addon-essentials": "7.6.7",
104
- "@storybook/addon-storyshots": "7.6.7",
105
- "@storybook/addon-storyshots-puppeteer": "7.6.7",
106
106
  "@storybook/addon-viewport": "7.6.7",
107
107
  "@storybook/builder-webpack5": "7.6.7",
108
+ "@storybook/test-runner": "0.16.0",
108
109
  "@storybook/theming": "7.6.7",
109
110
  "@storybook/vue": "7.6.7",
110
111
  "@storybook/vue-webpack5": "7.6.7",
111
112
  "@storybook/vue3": "7.6.7",
112
113
  "@storybook/vue3-webpack5": "7.6.7",
114
+ "@types/jest": "^29.5.11",
115
+ "@types/jest-image-snapshot": "^6.4.0",
113
116
  "@vue/compat": "^3.2.40",
114
117
  "@vue/compiler-sfc": "^3.2.40",
115
118
  "@vue/test-utils": "1.3.0",
@@ -120,7 +123,6 @@
120
123
  "axe-core": "^4.2.3",
121
124
  "babel-jest": "29.0.1",
122
125
  "babel-loader": "^8.0.5",
123
- "babel-plugin-require-context-hook": "^1.0.0",
124
126
  "bootstrap": "4.6.2",
125
127
  "cypress": "13.6.2",
126
128
  "cypress-axe": "^1.4.0",
@@ -137,6 +139,7 @@
137
139
  "jest": "^29.7.0",
138
140
  "jest-circus": "29.7.0",
139
141
  "jest-environment-jsdom": "29.7.0",
142
+ "jest-image-snapshot": "^6.4.0",
140
143
  "markdownlint-cli": "^0.29.0",
141
144
  "mockdate": "^2.0.5",
142
145
  "module-alias": "^2.2.2",
@@ -147,7 +150,6 @@
147
150
  "postcss-loader": "^7.0.2",
148
151
  "postcss-scss": "4.0.4",
149
152
  "prettier": "2.6.2",
150
- "puppeteer": "15.5.0",
151
153
  "react": "^18.2.0",
152
154
  "react-dom": "^18.2.0",
153
155
  "rollup": "^2.53.1",
@@ -40,8 +40,8 @@ export default {
40
40
  title: 'base/accordion/accordion-item',
41
41
  component: GlAccordionItem,
42
42
  bootstrapComponent: 'b-collapse',
43
+ tags: ['skip-visual-test'],
43
44
  parameters: {
44
- storyshots: { disable: true },
45
45
  docs: {
46
46
  description: {
47
47
  component: readme,
@@ -81,9 +81,7 @@ export const CustomActions = () => ({
81
81
  </template>
82
82
  </gl-alert>`,
83
83
  });
84
- CustomActions.parameters = {
85
- storyshots: { disable: true },
86
- };
84
+ CustomActions.tags = ['skip-visual-test'];
87
85
 
88
86
  export const TextLinks = () => ({
89
87
  components: { GlAlert },
@@ -92,9 +90,7 @@ export const TextLinks = () => ({
92
90
  Lorem ipsum dolor sit <a class="gl-link" href="#">text link</a> amet
93
91
  </gl-alert>`,
94
92
  });
95
- TextLinks.parameters = {
96
- storyshots: { disable: true },
97
- };
93
+ TextLinks.tags = ['skip-visual-test'];
98
94
 
99
95
  export const NoIcon = () => ({
100
96
  components: { GlAlert },
@@ -103,9 +99,7 @@ export const NoIcon = () => ({
103
99
  Lorem ipsum dolor sit amet
104
100
  </gl-alert>`,
105
101
  });
106
- NoIcon.parameters = {
107
- storyshots: { disable: true },
108
- };
102
+ NoIcon.tags = ['skip-visual-test'];
109
103
 
110
104
  export const Variants = () => ({
111
105
  components: { GlAlert },
@@ -126,9 +120,7 @@ export const Variants = () => ({
126
120
  </gl-alert>
127
121
  </div>`,
128
122
  });
129
- Variants.parameters = {
130
- storyshots: { disable: true },
131
- };
123
+ Variants.tags = ['skip-visual-test'];
132
124
 
133
125
  export const Sticky = () => ({
134
126
  components: { GlAlert },
@@ -3,13 +3,12 @@ $gl-avatar-identicon-bgs: $red-50, $purple-50, $theme-indigo-50, $blue-50, $gree
3
3
 
4
4
  @mixin gl-avatar {
5
5
  @include gl-display-inline-flex;
6
- @include gl-border-1;
7
- @include gl-border-solid;
8
- @include gl-border-gray-a-08;
9
6
  @include gl-overflow-hidden;
10
7
  @include gl-flex-shrink-0;
11
8
  @include gl-line-height-ratio-1000;
12
9
  @include gl-object-fit-contain;
10
+ outline: 1px solid var(--t-gray-a-08, #{$t-gray-a-08});
11
+ outline-offset: -1px;
13
12
  }
14
13
 
15
14
  @mixin gl-avatar-s16 {
@@ -35,4 +35,4 @@ when avatars are collapsed for screen reader users.
35
35
 
36
36
  ### Supported sizes
37
37
 
38
- `<avatars-inline>` only supports avatars with `24` or `32` size.
38
+ `<avatars-inline>` supports avatars with `16`, `24`, or `32` size.
@@ -1,28 +1,64 @@
1
1
  .gl-avatars-inline {
2
+ // Set a default and get the radius
3
+ --avatar-size: 24px;
4
+ --avatar-radius: calc(var(--avatar-size) * 0.5);
5
+ // Position the mask
6
+ --mask-offset: calc(var(--avatar-size) * -0.25);
7
+ // Mask size plus border cutout effect
8
+ --mask-cutout: calc(var(--avatar-radius) + 1.5px);
9
+
2
10
  @include gl-display-inline-flex;
11
+ }
12
+
13
+ .gl-avatars-inline-sm {
14
+ --avatar-size: 16px;
15
+ }
3
16
 
4
- &-child {
5
- @include gl-display-inline-flex;
17
+ .gl-avatars-inline-md {
18
+ --avatar-size: 24px;
19
+ }
20
+
21
+ .gl-avatars-inline-lg {
22
+ --avatar-size: 32px;
23
+ }
6
24
 
7
- &:not(:last-child) {
8
- @include gl-mr-3;
25
+ .gl-avatars-inline-child {
26
+ @include gl-display-inline-flex;
27
+
28
+ // Don't include the badge
29
+ &:not(:last-child) {
30
+ margin-right: var(--mask-offset);
31
+ mask: radial-gradient(circle at calc(var(--avatar-size) * 1.25) center, transparent var(--mask-cutout), white 0);
32
+
33
+ &:hover+.gl-avatars-inline-child>.gl-avatar-link,
34
+ &:hover+.gl-avatars-inline-child>.gl-avatars-inline-badge {
35
+ mask: radial-gradient(circle at var(--mask-offset) center, transparent var(--mask-cutout), white 0);
9
36
  }
10
37
  }
11
38
 
12
- &-badge {
13
- @include gl-bg-gray-100;
14
- @include gl-text-gray-900;
15
- @include gl-font-sm;
16
- @include gl-py-2;
17
- @include gl-px-3;
18
- @include gl-line-height-normal;
19
- @include gl-rounded-pill;
20
- @include gl-font-weight-bold;
21
-
22
- &.lg {
23
- @include gl-font-base;
24
- @include gl-p-3;
25
- @include gl-rounded-full;
26
- }
39
+ // Remove mask on hovered or focused avatar and bring it forward
40
+ &:not(:last-child):hover,
41
+ &:not(:last-child):focus-within {
42
+ @include gl-z-index-1;
43
+ mask: none;
44
+ }
45
+ }
46
+
47
+ .gl-avatars-inline-badge {
48
+ @include gl-display-inline-flex;
49
+ @include gl-align-items-center;
50
+ @include gl-justify-content-center;
51
+ @include gl-bg-gray-100;
52
+ @include gl-text-gray-900;
53
+ @include gl-font-sm;
54
+ @include gl-px-2;
55
+ @include gl-line-height-normal;
56
+ @include gl-rounded-pill;
57
+ height: var(--avatar-size);
58
+ min-width: var(--avatar-size);
59
+
60
+ &.lg {
61
+ @include gl-font-base;
62
+ @include gl-rounded-6;
27
63
  }
28
64
  }
@@ -56,7 +56,13 @@ export default {
56
56
  return this.collapsed ? this.avatars.slice(0, this.maxVisible) : this.avatars;
57
57
  },
58
58
  badgeSize() {
59
- return this.avatarSize === 24 ? 'md' : 'lg';
59
+ return (
60
+ {
61
+ 16: 'sm',
62
+ 24: 'md',
63
+ 32: 'lg',
64
+ }[this.avatarSize] || 'lg'
65
+ );
60
66
  },
61
67
  badgeLabel() {
62
68
  return `+${this.hiddenAvatars.length}`;
@@ -77,42 +83,16 @@ export default {
77
83
  : tooltipTitle;
78
84
  },
79
85
  },
80
- methods: {
81
- calcAvatarStyles(avatarIndex) {
82
- // According to pajamas, overlap is 25% of the avatar height
83
- const overlap = this.avatarSize * 0.25;
84
-
85
- const marginRight =
86
- avatarIndex === this.maxVisible ||
87
- avatarIndex === this.avatars.length - 1 ||
88
- !this.collapsed
89
- ? undefined
90
- : `-${overlap}px`;
91
-
92
- return {
93
- marginRight,
94
- };
95
- },
96
- },
97
86
  };
98
87
  </script>
99
88
  <template>
100
- <div class="gl-avatars-inline">
101
- <div
102
- v-for="(avatar, index) in visibleAvatars"
103
- :key="index"
104
- class="gl-avatars-inline-child"
105
- :style="calcAvatarStyles(index)"
106
- >
89
+ <div class="gl-avatars-inline" :class="`gl-avatars-inline-${badgeSize}`">
90
+ <div v-for="(avatar, index) in visibleAvatars" :key="index" class="gl-avatars-inline-child">
107
91
  <slot name="avatar" :avatar="avatar">
108
92
  <gl-avatar v-bind="avatar" :size="avatarSize" />
109
93
  </slot>
110
94
  </div>
111
- <div
112
- v-if="collapsed && collapsable"
113
- class="gl-avatars-inline-child"
114
- :style="calcAvatarStyles(visibleAvatars.length)"
115
- >
95
+ <div v-if="collapsed && collapsable" class="gl-avatars-inline-child">
116
96
  <gl-tooltip v-if="badgeTooltipProp" :target="() => $refs.badge">
117
97
  {{ badgeTooltipTitle }}
118
98
  </gl-tooltip>
@@ -44,9 +44,7 @@ const Template = (args, { argTypes }) => ({
44
44
 
45
45
  export const Default = Template.bind({});
46
46
  Default.args = generateProps();
47
- Default.parameters = {
48
- storyshots: { disable: true },
49
- };
47
+ Default.tags = ['skip-visual-test'];
50
48
 
51
49
  export const Variants = (args, { argTypes }) => ({
52
50
  components: { GlBadge },
@@ -95,9 +93,7 @@ Actionable.args = generateProps({
95
93
  href: '#foo',
96
94
  variant: badgeVariantOptions.warning,
97
95
  });
98
- Actionable.parameters = {
99
- storyshots: { disable: true },
100
- };
96
+ Actionable.tags = ['skip-visual-test'];
101
97
  Actionable.argTypes = disableControls(['content', 'variant']);
102
98
 
103
99
  export const Sizes = (args, { argTypes }) => ({
@@ -73,9 +73,7 @@ const StackedStory = (args, { argTypes }) => ({
73
73
  });
74
74
  export const Stacked = StackedStory.bind({});
75
75
  Stacked.args = generateProps();
76
- Stacked.parameters = {
77
- storyshots: { disable: true },
78
- };
76
+ Stacked.tags = ['skip-visual-test'];
79
77
 
80
78
  export const IncreasedSpacing = (args, { argTypes }) => ({
81
79
  components: {
@@ -32,13 +32,13 @@ Default.args = generateProps();
32
32
  export default {
33
33
  title: 'base/icon',
34
34
  component: GlIcon,
35
+ tags: ['skip-visual-test'],
35
36
  parameters: {
36
37
  docs: {
37
38
  description: {
38
39
  component: readme,
39
40
  },
40
41
  },
41
- storyshots: { disable: true },
42
42
  },
43
43
  argTypes: {
44
44
  ...disableControls(['useDeprecatedSizes']),
@@ -788,9 +788,7 @@ export const InfiniteScroll = (
788
788
  InfiniteScroll.argTypes = {
789
789
  ...disableControls(['infiniteScroll', 'infiniteScrollLoading', 'items']),
790
790
  };
791
- InfiniteScroll.parameters = {
792
- storyshots: { disable: true },
793
- };
791
+ InfiniteScroll.tags = ['skip-visual-test'];
794
792
  InfiniteScroll.args = generateProps();
795
793
  InfiniteScroll.decorators = [makeContainer({ height: LISTBOX_CONTAINER_HEIGHT })];
796
794
 
@@ -74,9 +74,7 @@ export const OnClick = (_args, { viewMode, argTypes }) => ({
74
74
  OnClick.args = generateProps({
75
75
  triggers: 'click',
76
76
  });
77
- OnClick.parameters = {
78
- storyshots: { disable: true },
79
- };
77
+ OnClick.tags = ['skip-visual-test'];
80
78
 
81
79
  export default {
82
80
  title: 'base/popover',
@@ -225,9 +225,7 @@ export const WithScrollAndGrowing = (_args, { argTypes }) => ({
225
225
  },
226
226
  template: '<scrollable-tabs-generator :count="count" />',
227
227
  });
228
- WithScrollAndGrowing.parameters = {
229
- storyshots: { disable: true },
230
- };
228
+ WithScrollAndGrowing.tags = ['skip-visual-test'];
231
229
 
232
230
  export default {
233
231
  title: 'base/tabs',
@@ -88,7 +88,7 @@ const Template = (args, { argTypes }) => ({
88
88
  });
89
89
 
90
90
  export const Default = Template.bind({});
91
- Default.parameters = { storyshots: { disable: true } };
91
+ Default.tags = ['skip-visual-test'];
92
92
  Default.args = generateProps();
93
93
 
94
94
  export default {
@@ -189,9 +189,7 @@ export const WithCustomTooltip = (_args, { argTypes }) => ({
189
189
  `),
190
190
  });
191
191
  WithCustomTooltip.args = generateProps();
192
- WithCustomTooltip.parameters = {
193
- storyshots: { disable: true },
194
- };
192
+ WithCustomTooltip.tags = ['skip-visual-test'];
195
193
 
196
194
  export default {
197
195
  title: 'charts/area-chart',
@@ -95,9 +95,7 @@ export const Connected = Template.bind(
95
95
  `,
96
96
  }
97
97
  );
98
- Connected.parameters = {
99
- storyshots: { disable: true },
100
- };
98
+ Connected.tags = ['skip-visual-test'];
101
99
 
102
100
  export default {
103
101
  title: 'charts/chart',
@@ -213,9 +213,7 @@ export const WithCustomTooltip = (_args, { argTypes }) => ({
213
213
  `),
214
214
  });
215
215
  WithCustomTooltip.args = generateProps();
216
- WithCustomTooltip.parameters = {
217
- storyshots: { disable: true },
218
- };
216
+ WithCustomTooltip.tags = ['skip-visual-test'];
219
217
 
220
218
  export default {
221
219
  title: 'charts/line-chart',
@@ -55,14 +55,14 @@ Default.args = generateProps();
55
55
 
56
56
  export const WithoutLastYValue = Template.bind({});
57
57
  WithoutLastYValue.args = generateProps({ showLastYValue: false });
58
- WithoutLastYValue.parameters = { storyshots: { disable: true } };
58
+ WithoutLastYValue.tags = ['skip-visual-test'];
59
59
 
60
60
  export const WithChartColorGradient = Template.bind({});
61
61
  WithChartColorGradient.args = generateProps({ gradient: customGradient });
62
62
 
63
63
  export const WithSmoothing = Template.bind({});
64
64
  WithSmoothing.args = generateProps({ smooth: 0.5 });
65
- WithSmoothing.parameters = { storyshots: { disable: true } };
65
+ WithSmoothing.tags = ['skip-visual-test'];
66
66
 
67
67
  export const AutoHeight = Template.bind({});
68
68
  Object.assign(AutoHeight, {
@@ -98,8 +98,8 @@ Slots.parameters = { controls: { disable: true } };
98
98
  export default {
99
99
  title: 'experimental/duo/duo-user-feedback',
100
100
  component: GlDuoUserFeedback,
101
+ tags: ['skip-visual-test'],
101
102
  parameters: {
102
- storyshots: { disable: true },
103
103
  docs: {
104
104
  description: {
105
105
  component: readme,
@@ -46,8 +46,8 @@ CustomPlacement.args = {
46
46
  export default {
47
47
  title: 'experimental/experiment_badge',
48
48
  component: GlExperimentBadge,
49
+ tags: ['skip-visual-test'],
49
50
  parameters: {
50
- storyshots: { disable: true },
51
51
  docs: {
52
52
  description: {
53
53
  component: readme,
@@ -131,7 +131,6 @@ export default {
131
131
  v-if="svgPath"
132
132
  :src="svgPath"
133
133
  alt=""
134
- role="img"
135
134
  :class="{ 'gl-dark-invert-keep-hue': invertInDarkMode }"
136
135
  class="gl-max-w-full"
137
136
  :height="height"
@@ -72,4 +72,5 @@ export default {
72
72
  },
73
73
  },
74
74
  argTypes: {},
75
+ tags: ['skip-visual-test'],
75
76
  };
@@ -151,8 +151,8 @@ export const InfiniteScrolling = () => ({
151
151
  export default {
152
152
  title: 'utilities/intersection-observer',
153
153
  component: GlIntersectionObserver,
154
+ tags: ['skip-visual-test'],
154
155
  parameters: {
155
- storyshots: { disable: true },
156
156
  docs: {
157
157
  description: {
158
158
  component: readme,
@@ -35,7 +35,7 @@ Object.assign(SentenceWithLink, {
35
35
  args: generateProps({
36
36
  message: 'Click %{linkStart}here%{linkEnd} to reticulate splines.',
37
37
  }),
38
- parameters: { storyshots: { disable: true } },
38
+ tags: ['skip-visual-test'],
39
39
  });
40
40
 
41
41
  export const SentenceWithLinkWithCustomPlaceholders = makeStory({
@@ -54,7 +54,7 @@ Object.assign(SentenceWithLinkWithCustomPlaceholders, {
54
54
  message: 'Click %{my_custom_start}here%{my_custom_end} to reticulate splines.',
55
55
  placeholders: { link: ['my_custom_start', 'my_custom_end'] },
56
56
  }),
57
- parameters: { storyshots: { disable: true } },
57
+ tags: ['skip-visual-test'],
58
58
  });
59
59
 
60
60
  export const BasicPlaceholder = makeStory({
@@ -71,7 +71,7 @@ export const BasicPlaceholder = makeStory({
71
71
  });
72
72
  Object.assign(BasicPlaceholder, {
73
73
  args: generateProps(),
74
- parameters: { storyshots: { disable: true } },
74
+ tags: ['skip-visual-test'],
75
75
  });
76
76
 
77
77
  export const BasicButtonPlaceholder = makeStory({
@@ -88,7 +88,7 @@ export const BasicButtonPlaceholder = makeStory({
88
88
  });
89
89
  Object.assign(BasicButtonPlaceholder, {
90
90
  args: generateProps(),
91
- parameters: { storyshots: { disable: true } },
91
+ tags: ['skip-visual-test'],
92
92
  });
93
93
 
94
94
  export default {
@@ -27,8 +27,8 @@ Default.args = generateProps();
27
27
  export default {
28
28
  title: 'utilities/truncate',
29
29
  component: GlTruncate,
30
+ tags: ['skip-visual-test'],
30
31
  parameters: {
31
- storyshots: { disable: true },
32
32
  docs: {
33
33
  description: {
34
34
  component: readme,
@@ -34,8 +34,8 @@ Default.args = generateProps();
34
34
  export default {
35
35
  title: 'utilities/truncate-text',
36
36
  component: GlTruncateText,
37
+ tags: ['skip-visual-test'],
37
38
  parameters: {
38
- storyshots: { disable: true },
39
39
  docs: {
40
40
  description: {
41
41
  component: readme,
@@ -40,8 +40,8 @@ Default.args = generateProps();
40
40
  export default {
41
41
  title: 'directives/hover-load-directive',
42
42
  component: GlHoverLoadDirective,
43
+ tags: ['skip-visual-test'],
43
44
  parameters: {
44
- storyshots: { disable: true },
45
45
  docs: {
46
46
  description: {
47
47
  component: readme,
@@ -20,9 +20,7 @@ export const Default = () => ({
20
20
  template: `<gl-button v-outside="onClick">Clicks outside me: {{ clicks }}</gl-button>`,
21
21
  });
22
22
 
23
- Default.parameters = {
24
- storyshots: { disable: true },
25
- };
23
+ Default.tags = ['skip-visual-test'];
26
24
 
27
25
  export default {
28
26
  title: 'directives/outside-directive',
@@ -61,8 +61,8 @@ const makeControl = () => ({
61
61
  export default {
62
62
  title: 'directives/resize-observer-directive',
63
63
  component: GlResizeObserver,
64
+ tags: ['skip-visual-test'],
64
65
  parameters: {
65
- storyshots: { disable: true },
66
66
  docs: {
67
67
  description: {
68
68
  component: readme,
@@ -49,8 +49,8 @@ Default.args = generateProps();
49
49
  export default {
50
50
  title: 'directives/safe-html-directive',
51
51
  component: GlSafeHtml,
52
+ tags: ['skip-visual-test'],
52
53
  parameters: {
53
- storyshots: { disable: true },
54
54
  docs: {
55
55
  description: {
56
56
  component: readme,
@@ -28,8 +28,8 @@ Default.args = generateProps();
28
28
  export default {
29
29
  title: 'directives/safe-link-directive',
30
30
  component: SafeLink,
31
+ tags: ['skip-visual-test'],
31
32
  parameters: {
32
- storyshots: { disable: true },
33
33
  docs: {
34
34
  description: {
35
35
  component: readme,
@@ -5577,6 +5577,14 @@ $gl-animate-skeleton-loader-max-width: 64 * $grid-size;
5577
5577
  max-width: 0 !important;
5578
5578
  }
5579
5579
 
5580
+ .gl-max-w-12 {
5581
+ max-width: $gl-spacing-scale-12;
5582
+ }
5583
+
5584
+ .gl-max-w-12\! {
5585
+ max-width: $gl-spacing-scale-12 !important;
5586
+ }
5587
+
5580
5588
  .gl-max-w-15 {
5581
5589
  max-width: $gl-spacing-scale-15;
5582
5590
  }
@@ -451,6 +451,10 @@
451
451
  max-width: 0;
452
452
  }
453
453
 
454
+ @mixin gl-max-w-12 {
455
+ max-width: $gl-spacing-scale-12;
456
+ }
457
+
454
458
  @mixin gl-max-w-15 {
455
459
  max-width: $gl-spacing-scale-15;
456
460
  }