Skip to content

Commit a66664d

Browse files
committed
refactor(theme): use only a min-block-size for .dropdown-item
The largest item in a menu item is the badge, so extend line-height to that and adjust padding instead. There's no longer a requirement for a fixed height, rather a min height so that items w/o text content get the proper height
1 parent 50bb327 commit a66664d

3 files changed

Lines changed: 16 additions & 13 deletions

File tree

projects/element-theme/src/styles/bootstrap/_badges.scss

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@
2020
padding-inline: variables.$badge-padding-x;
2121
margin-block: 0;
2222
margin-inline: map.get(spacers.$spacers, 4);
23-
line-height: 1.25rem;
23+
line-height: variables.$badge-line-height;
2424
flex-shrink: 0;
2525
font-size: typography.$si-font-size-body;
2626
font-weight: typography.$si-font-weight-body;
2727
max-inline-size: 24.5ch;
2828
// Make min-inline-size equal the badge height to create a circular badge when there's only one character.
29-
min-inline-size: calc(1.25rem + 2 * #{variables.$badge-padding-y}); // 1.75rem = same as height
29+
min-inline-size: variables.$badge-height;
3030
text-overflow: ellipsis;
3131
overflow: hidden;
3232
text-align: center;

projects/element-theme/src/styles/bootstrap/_dropdowns.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@
8181
display: flex;
8282
flex-wrap: nowrap;
8383
align-items: center;
84-
block-size: calc(1lh + 2 * bootstrap-variables.$dropdown-item-padding-y);
84+
min-block-size: calc(1lh + 2 * bootstrap-variables.$dropdown-item-padding-y);
8585
inline-size: 100%;
8686
padding-block: bootstrap-variables.$dropdown-item-padding-y;
8787
padding-inline: bootstrap-variables.$dropdown-item-padding-x;

projects/element-theme/src/styles/bootstrap/_variables.scss

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,16 @@ $nav-tabs-link-hover-border-color: transparent transparent $nav-tabs-border-colo
437437
$nav-tabs-link-active-color: semantic-tokens.$element-action-secondary-text-hover !default;
438438
$nav-tabs-link-active-bg: transparent !default;
439439

440+
// Badges
441+
$badge-font-size: typography.$si-font-size-body;
442+
$badge-line-height: 1.25rem;
443+
$badge-font-weight: typography.$si-font-weight-body;
444+
$badge-color: semantic-tokens.$element-text-inverse !default;
445+
$badge-padding-y: map.get(spacers.$spacers, 1);
446+
$badge-padding-x: map.get(spacers.$spacers, 4);
447+
$badge-border-radius: 0.75rem;
448+
$badge-height: calc($badge-line-height + 2 * $badge-padding-y);
449+
440450
// Dropdowns
441451
//
442452
// Dropdown menu container and contents.
@@ -445,7 +455,8 @@ $dropdown-padding-x: 0 !default;
445455
$dropdown-padding-y: map.get(spacers.$spacers, 4) !default;
446456
$dropdown-spacer: 0.125rem !default;
447457
$dropdown-font-size: $font-size-base !default;
448-
$dropdown-line-height: $line-height-base;
458+
// this is to have room for icon and badges
459+
$dropdown-line-height: $badge-height;
449460
$dropdown-color: $body-color !default;
450461
$dropdown-bg: semantic-tokens.$element-base-1 !default;
451462
$dropdown-border-radius: semantic-tokens.$element-radius-2 !default;
@@ -454,7 +465,7 @@ $dropdown-divider-margin-y: 4px !default;
454465
$dropdown-box-shadow: elevation.$element-elevation-2 !default;
455466
$dropdown-link-color: semantic-tokens.$element-text-primary !default;
456467
$dropdown-link-disabled-color: semantic-tokens.$element-text-disabled !default;
457-
$dropdown-item-padding-y: map.get(spacers.$spacers, 4);
468+
$dropdown-item-padding-y: map.get(spacers.$spacers, 2);
458469
$dropdown-item-padding-x: map.get(spacers.$spacers, 5);
459470
$dropdown-header-color: semantic-tokens.$element-text-primary !default;
460471

@@ -520,14 +531,6 @@ $popover-arrow-color: $popover-bg !default;
520531

521532
$popover-arrow-outer-color: $popover-border-color !default;
522533

523-
// Badges
524-
$badge-font-size: typography.$si-font-size-body;
525-
$badge-font-weight: typography.$si-font-weight-body;
526-
$badge-color: semantic-tokens.$element-text-inverse !default;
527-
$badge-padding-y: map.get(spacers.$spacers, 1);
528-
$badge-padding-x: map.get(spacers.$spacers, 4);
529-
$badge-border-radius: 0.75rem;
530-
531534
// Modals
532535

533536
// Padding applied to the modal body

0 commit comments

Comments
 (0)