Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 9 additions & 15 deletions src/components/NcButton/NcButton.vue
Original file line number Diff line number Diff line change
Expand Up @@ -791,7 +791,7 @@ export default {
--button-size: var(--default-clickable-area);
--button-inner-size: calc(var(--button-size) - 4px); // without the outer border
--button-radius: var(--border-radius-element, calc(var(--button-size) / 2));
--button-padding-default: min(calc(var(--default-grid-baseline) + var(--button-radius)), calc(var(--default-grid-baseline) * 4));
--button-padding-default: clamp(var(--default-grid-baseline), var(--button-radius), calc(var(--default-grid-baseline) * 4));
--button-padding: var(--default-grid-baseline) var(--button-padding-default);

// General styles
Expand All @@ -808,8 +808,8 @@ export default {
overflow: hidden;
padding-block: 1px 0; // center the content as border is 1px top and 2px bottom
padding-inline: var(--button-padding);
min-height: var(--button-inner-size);
min-width: var(--button-inner-size);
min-height: var(--button-size);
min-width: var(--button-size);
// display setup
display: flex;
align-items: center;
Expand Down Expand Up @@ -881,10 +881,11 @@ export default {
}

&--reverse#{&}--icon-and-text {
padding-inline: var(--button-padding) var(--default-grid-baseline);
--button-padding: var(--button-padding-default) var(--default-grid-baseline);
}

&__icon {
--default-clickable-area: var(--button-inner-size); // ensure icons align with current button size
height: var(--button-inner-size);
width: var(--button-inner-size);
min-height: var(--button-inner-size);
Expand All @@ -893,6 +894,7 @@ export default {
justify-content: center;
align-items: center;
}

// For small buttons we need to adjust the icon size
&--size-small &__icon {
:deep(> *) {
Expand Down Expand Up @@ -923,21 +925,13 @@ export default {

// Text-only button
&--text-only {
padding: 0 var(--button-padding);
--button-padding: var(--button-padding-default);

& .button-vue__text {
margin-left: 4px;
margin-right: 4px;
margin-inline: 4px;
}
}

// Icon and text button
&--icon-and-text {
// icon and text means the icon adds "visual" padding thus we need to adjust the text padding
--button-padding: min(calc(var(--default-grid-baseline) + var(--button-radius)), calc(var(--default-grid-baseline) * 4));
// Adjust padding as the icon already got some padding we need to reduce the padding on the icon side and only add larger padding to the text side
padding-inline: var(--default-grid-baseline) var(--button-padding);
}

// Wide button spans the whole width of the container
&--wide {
width: 100%;
Expand Down
2 changes: 2 additions & 0 deletions stylelint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,9 @@ module.exports = {
'bottom',
// Position properties with directional suffixes
/-top$/,
/-top-/,
/-bottom$/,
/-bottom-/,
// Size properties
'width',
'max-width',
Expand Down
Loading