From b411a2d58309acbccfb56b78b8f5e8ce61eadf0e Mon Sep 17 00:00:00 2001 From: Sascha Eggenberger Date: Wed, 22 Feb 2023 11:29:47 +0100 Subject: [PATCH 1/2] feat(label): Reduce label variants Reduce label variants down to a single variant. One size fits all. --- src/components/base/label/label.md | 1 - src/components/base/label/label.scss | 37 +++++++----------- src/components/base/label/label.spec.js | 3 +- src/components/base/label/label.stories.js | 9 +---- src/components/base/label/label.vue | 29 ++++++-------- src/utils/constants.js | 5 --- ...e-storyshots-base-label-default-1-snap.png | Bin 12555 -> 12343 bytes ...ge-storyshots-base-label-scoped-1-snap.png | Bin 13236 -> 12122 bytes ...ts-base-label-with-close-button-1-snap.png | Bin 12483 -> 12257 bytes ...shots-base-label-without-target-1-snap.png | Bin 12555 -> 12343 bytes 10 files changed, 28 insertions(+), 56 deletions(-) diff --git a/src/components/base/label/label.md b/src/components/base/label/label.md index 8cdbc792a8..77445218d7 100644 --- a/src/components/base/label/label.md +++ b/src/components/base/label/label.md @@ -9,7 +9,6 @@ They provide a quick way to recognize which categories the labeled object belong background-color="#D9C2EE" title="Label content" description="Some content" - size="sm" tooltipPlacement="top" target="http://some.url" /> diff --git a/src/components/base/label/label.scss b/src/components/base/label/label.scss index b6244dddc5..142f4f7aab 100644 --- a/src/components/base/label/label.scss +++ b/src/components/base/label/label.scss @@ -16,7 +16,7 @@ $label-close-button: '.gl-label-close.gl-button'; background-color: var(--label-background-color); } - &:focus-within { + &:has(*:first-child:focus) { @include gl-focus($color: var(--label-background-color, $white), $important: true); } @@ -30,7 +30,8 @@ $label-close-button: '.gl-label-close.gl-button'; @include gl-max-w-full; &:focus, - &:hover { + &:hover, + &:focus:active { @include gl-reset-color; @include gl-shadow-none; @include gl-outline-none; @@ -40,16 +41,18 @@ $label-close-button: '.gl-label-close.gl-button'; .gl-label-text, .gl-label-text-scoped { @include gl-display-block; - @include gl-px-3; - @include gl-py-2; + padding-block: $gl-spacing-scale-1; + padding-inline: calc(#{$gl-spacing-scale-3} - 2px); @include str-truncated($label-max-width); } > #{$label-close-button} { @include gl-border-0; @include gl-display-flex; - @include gl-ml-n2; - @include gl-mr-2; + width: px-to-rem(14px); + height: px-to-rem(14px); + margin-left: calc(#{-$gl-spacing-scale-1} - 1px); + margin-right: calc(#{$gl-spacing-scale-2} - 1px); @include gl-p-0; @include gl-rounded-full; @include gl-shadow-none; @@ -72,7 +75,7 @@ $label-close-button: '.gl-label-close.gl-button'; } .gl-icon { - @include gl-p-1; + vertical-align: -1px; } } } @@ -146,6 +149,8 @@ $label-close-button: '.gl-label-close.gl-button'; } #{$label-close-button} { + margin-left: calc(#{-$gl-spacing-scale-2} - 2px); + &:focus, &:hover { .gl-icon { @@ -155,27 +160,13 @@ $label-close-button: '.gl-label-close.gl-button'; } .gl-label-text { - @include gl-pr-2; background-color: var(--label-background-color); } .gl-label-text-scoped { @include gl-text-gray-950; - @include gl-pl-2; - @include gl-pr-3; - } -} - -.gl-label-sm { - .gl-label-text, - .gl-label-text-scoped { - @include gl-py-0; - @include gl-line-height-normal; - @include gl-font-sm; - } - - #{$label-close-button} { - @include gl-mr-1; + padding-inline-start: calc($gl-spacing-scale-3 - 4px); + padding-inline-end: $gl-spacing-scale-3; } } diff --git a/src/components/base/label/label.spec.js b/src/components/base/label/label.spec.js index 77d1c185d7..4b8dbd94bc 100644 --- a/src/components/base/label/label.spec.js +++ b/src/components/base/label/label.spec.js @@ -1,5 +1,4 @@ import { mount, shallowMount } from '@vue/test-utils'; -import CloseButton from '../../shared_components/close_button/close_button.vue'; import GlLink from '../link/link.vue'; import GlTooltip from '../tooltip/tooltip.vue'; import Label from './label.vue'; @@ -41,7 +40,7 @@ describe('Label component', () => { const findSubTitle = () => wrapper.find('.gl-label-text-scoped'); const findTooltip = () => wrapper.findComponent(GlTooltip); const findTooltipText = () => findTooltip().text(); - const findCloseButton = () => wrapper.findComponent(CloseButton); + const findCloseButton = () => wrapper.find('.gl-label-close'); describe('basic label', () => { it('renders the label title', () => { diff --git a/src/components/base/label/label.stories.js b/src/components/base/label/label.stories.js index 24fab5f379..ffa88163eb 100644 --- a/src/components/base/label/label.stories.js +++ b/src/components/base/label/label.stories.js @@ -1,4 +1,4 @@ -import { labelSizeOptions, tooltipPlacements } from '../../../utils/constants'; +import { tooltipPlacements } from '../../../utils/constants'; import GlLabel from './label.vue'; import readme from './label.md'; @@ -6,7 +6,6 @@ const template = `
({ const generateProps = ({ title = 'Label title', - size = labelSizeOptions.default, tooltipPlacement = tooltipPlacements.top, scoped = false, description = '', @@ -37,7 +35,6 @@ const generateProps = ({ backgroundColor, title, description, - size, tooltipPlacement, target, scoped, @@ -71,10 +68,6 @@ export default { backgroundColor: { control: 'color', }, - size: { - options: labelSizeOptions, - control: 'select', - }, tooltipPlacement: { options: tooltipPlacements, control: 'select', diff --git a/src/components/base/label/label.vue b/src/components/base/label/label.vue index 50e182018b..bf0b939bf1 100644 --- a/src/components/base/label/label.vue +++ b/src/components/base/label/label.vue @@ -2,16 +2,18 @@