Skip to content

Commit e2baa1e

Browse files
committed
feat(button): add support for isSelected in low emphasis
1 parent 37eca5a commit e2baa1e

File tree

7 files changed

+35
-28
lines changed

7 files changed

+35
-28
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
### Added
11+
12+
- `Button`: add support of `isSelected` in `low` emphasis (in addition to `medium`).
13+
1014
### Changed
1115

1216
- `DatePicker`: update day buttons to use standard button styles

packages/lumx-core/src/scss/components/button/_index.scss

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
}
3131
}
3232

33-
&.#{$lumx-base-prefix}-button--emphasis-medium:not(.#{$lumx-base-prefix}-button--is-selected) {
33+
&.#{$lumx-base-prefix}-button--emphasis-medium {
3434
&.#{$lumx-base-prefix}-button--variant-button {
3535
@include lumx-button-size(lumx-base-const("emphasis", "MEDIUM"), "button", $key);
3636
}
@@ -40,16 +40,6 @@
4040
}
4141
}
4242

43-
&.#{$lumx-base-prefix}-button--emphasis-medium.#{$lumx-base-prefix}-button--is-selected {
44-
&.#{$lumx-base-prefix}-button--variant-button {
45-
@include lumx-button-size(lumx-base-const("emphasis", "SELECTED"), "button", $key);
46-
}
47-
48-
&.#{$lumx-base-prefix}-button--variant-icon {
49-
@include lumx-button-size(lumx-base-const("emphasis", "SELECTED"), "icon", $key);
50-
}
51-
}
52-
5343
&.#{$lumx-base-prefix}-button--emphasis-low {
5444
&.#{$lumx-base-prefix}-button--variant-button {
5545
@include lumx-button-size(lumx-base-const("emphasis", "LOW"), "button", $key);
@@ -107,16 +97,29 @@
10797

10898
@each $key, $color in $lumx-color-palette {
10999
.#{$lumx-base-prefix}-button--color-#{$key} {
110-
&:not(.#{$lumx-base-prefix}-button--is-selected).#{$lumx-base-prefix}-button--emphasis-medium {
100+
&.#{$lumx-base-prefix}-button--emphasis-medium {
111101
@include lumx-button-color(lumx-base-const("emphasis", "MEDIUM"), $key);
112102
}
113103

114-
&:not(.#{$lumx-base-prefix}-button--is-selected).#{$lumx-base-prefix}-button--emphasis-low {
104+
&.#{$lumx-base-prefix}-button--emphasis-low {
115105
@include lumx-button-color(lumx-base-const("emphasis", "LOW"), $key);
116106
}
107+
}
108+
}
117109

118-
&.#{$lumx-base-prefix}-button--is-selected {
119-
@include lumx-button-color(lumx-base-const("emphasis", "SELECTED"), $key);
110+
111+
/* Button selected
112+
========================================================================== */
113+
114+
.#{$lumx-base-prefix}-button.#{$lumx-base-prefix}-button--is-selected.#{$lumx-base-prefix}-button--emphasis-medium,
115+
.#{$lumx-base-prefix}-button.#{$lumx-base-prefix}-button--is-selected.#{$lumx-base-prefix}-button--emphasis-low, {
116+
@include lumx-button-size(lumx-base-const("emphasis", "SELECTED"));
117+
118+
@each $key, $color in $lumx-color-palette {
119+
&.#{$lumx-base-prefix}-button--color-#{$key} {
120+
&.#{$lumx-base-prefix}-button--is-selected {
121+
@include lumx-button-color(lumx-base-const("emphasis", "SELECTED"), $key);
122+
}
120123
}
121124
}
122125
}

packages/lumx-core/src/scss/components/button/_mixins.scss

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,13 @@
2828
}
2929
}
3030

31-
@mixin lumx-button-size($emphasis, $variant, $size) {
32-
@if $size == lumx-base-const("size", "M") {
33-
height: var(--lumx-button-height);
34-
} @else if $size == lumx-base-const("size", "S") {
35-
height: calc(var(--lumx-button-height) / 1.5);
31+
@mixin lumx-button-size($emphasis, $variant: null, $size: null) {
32+
@if $variant {
33+
@if $size == lumx-base-const("size", "M") {
34+
height: var(--lumx-button-height);
35+
} @else if $size == lumx-base-const("size", "S") {
36+
height: calc(var(--lumx-button-height) / 1.5);
37+
}
3638
}
3739

3840
@if $variant == "button" {

packages/lumx-core/src/scss/components/date-picker/_index.scss

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,5 @@
6565
&--is-today span {
6666
font-weight: var(--lumx-button-font-weight);
6767
}
68-
69-
&--is-selected {
70-
@include lumx-button-is-selected(lumx-base-const("theme", "LIGHT"));
71-
}
7268
}
7369
}

packages/lumx-react/src/components/button/Button.stories.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ const buttonEmphasis = [Emphasis.high, Emphasis.medium, Emphasis.low];
2222
// Combination of props that should be avoided
2323
const excludeCombination = ({ isSelected, emphasis, hasBackground }: any) => {
2424
// isSelected is only supported in medium emphasis
25-
if (isSelected && emphasis && emphasis !== 'medium') return true;
25+
if (isSelected && emphasis && emphasis !== Emphasis.medium && emphasis !== Emphasis.low) return true;
2626
// hasBackground is only supported in low emphasis
27-
if (hasBackground && emphasis && emphasis !== 'low') return true;
27+
if (hasBackground && emphasis && emphasis !== Emphasis.low) return true;
2828
return false;
2929
};
3030

packages/lumx-react/src/components/button/ButtonRoot.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export interface BaseButtonProps
3131
href?: string;
3232
/** Whether the component is disabled or not. */
3333
isDisabled?: boolean;
34-
/** Whether the component is selected or not. */
34+
/** Whether the component is selected or not (unsupported in `high` emphasis). */
3535
isSelected?: boolean;
3636
/** Native button name property. */
3737
name?: string;

packages/lumx-react/src/stories/utils/theming.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,9 @@ export function withTheming<P extends PropertyTree>({
133133
return (varName: string) =>
134134
// Has the given arg with value
135135
varName.match(new RegExp(`${argName}-${argValue}`)) ||
136-
(argName === 'emphasis' && argValue === 'medium' && varName.match(/emphasis-selected/)) ||
136+
(argName === 'emphasis' &&
137+
(argValue === 'medium' || argValue === 'low') &&
138+
varName.match(/emphasis-selected/)) ||
137139
// Or does not have the arg at all
138140
!varName.match(new RegExp(`${argName}-\\w+`));
139141
}

0 commit comments

Comments
 (0)