Skip to content

Commit f51a513

Browse files
authored
[mercury][dialog] Use mixins for the header close button (reusulting in having focus style now), move padding-block from the header to the header caption, to avoid excesive height. (#624)
* `[mercury][dialog]` Updates on header styles - Include mixins for the header button (a mixin for tertiary button, and a mixin for icon-only) - Set a min-block-size on the header and remove the header padding (to prevent excesive height due to header padding + close button padding). - Set padding-block on the header caption (to prevent text overlap with header block borders on excesive large heading captions). * `[mercury][general]` Update focus outline color * `[mercury][dialog]` Update dialog bundles tests
1 parent 0f09853 commit f51a513

File tree

6 files changed

+55
-29
lines changed

6 files changed

+55
-29
lines changed

packages/mercury/src/components/dialog/_dialog-styles.scss

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@use "../../base/button/button-styles" as *;
2+
@use "../../icons/button" as *;
13
@use "../../base/common" as *;
24
@use "../../base/icons" as *;
35
@use "../../base/typography" as *;
@@ -42,26 +44,35 @@
4244
}
4345

4446
&__header {
47+
/* In the following min-block-size calculation,
48+
var(--font-size-subtitle-xs) and var(--font-size-subtitle-xs)
49+
represent the ::part(caption) font size and line-height, respectively. */
50+
min-block-size: calc(
51+
var(--mer-spacing--md) * 2 + var(--font-size-subtitle-xs) *
52+
var(--line-height-tight)
53+
);
4554
gap: var(--mer-spacing--sm);
46-
padding-block: var(--mer-spacing--md);
4755
padding-inline: var(--mer-spacing--sm);
4856
border-block-end: var(--mer-border__width--sm) solid
4957
var(--dialog-border-color);
5058
}
5159

5260
&__caption {
5361
@include subtitle-semi-bold-xs();
62+
padding: var(--mer-spacing--md) 0;
5463
word-break: break-word;
5564
}
5665

5766
&__close {
58-
@include icon-size--md();
59-
--icon-path: var(--icon__system_close_primary--enabled);
67+
--icon-path: var(--icon__system_close_neutral--enabled);
68+
&--before {
69+
@include icon-size--md();
70+
}
6071
&--hover {
61-
--icon-path: var(--icon__system_close_primary--hover);
72+
--icon-path: var(--icon__system_close_neutral--hover);
6273
}
6374
&--active {
64-
--icon-path: var(--icon__system_close_primary--active);
75+
--icon-path: var(--icon__system_close_neutral--active);
6576
}
6677
}
6778

@@ -162,13 +173,18 @@
162173

163174
#{$close-selector} {
164175
@extend %dialog__close;
176+
&::before {
177+
@extend %dialog__close--before;
178+
}
165179
&:hover {
166180
@extend %dialog__close--hover;
167181
}
168182
&:active {
169183
@extend %dialog__close--active;
170184
}
171185
}
186+
@include button-tertiary($selector: $close-selector, $add--disabled: true);
187+
@include button-icon-only($selector: $close-selector);
172188

173189
#{$content-selector} {
174190
@extend %dialog__content;

packages/mercury/src/tests/bundles/expected-bundle-content/all.json

Lines changed: 15 additions & 14 deletions
Large diffs are not rendered by default.

packages/mercury/src/tests/bundles/expected-bundle-content/base/base-globant.json

Lines changed: 2 additions & 2 deletions
Large diffs are not rendered by default.

packages/mercury/src/tests/bundles/expected-bundle-content/base/base.json

Lines changed: 2 additions & 2 deletions
Large diffs are not rendered by default.

packages/mercury/src/tests/bundles/expected-bundle-content/components/dialog.json

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,19 @@
88
".dialog::part(caption) { font-family: var(--font-family-header); }",
99
".dialog::part(caption) { font-size: var(--font-size-subtitle-xs); line-height: var(--line-height-tight); }",
1010
".dialog::part(caption) { font-weight: var(--font-weight-semi-bold); }",
11-
".dialog::part(caption) { word-break: break-word; }",
12-
".dialog::part(close-button) { content: \"\"; display: block; inline-size: var(--mer-icon__box--md); block-size: var(--mer-icon__box--md); background: no-repeat center/var(--mer-icon__size--md) var(--icon-path); --icon-path: var(--icon__system_close_primary--enabled); }",
13-
".dialog::part(close-button):active { --icon-path: var(--icon__system_close_primary--active); }",
14-
".dialog::part(close-button):hover { --icon-path: var(--icon__system_close_primary--hover); }",
11+
".dialog::part(caption) { padding: var(--mer-spacing--md) 0; word-break: break-word; }",
12+
".dialog::part(close-button) { --button-background-color: transparent; --control__border-color: transparent; --button-color: var(--mer-text__primary); }",
13+
".dialog::part(close-button) { --icon-path: var(--icon__system_close_neutral--enabled); }",
14+
".dialog::part(close-button) { display: inline-grid; grid-auto-flow: column; grid-auto-columns: max-content; justify-content: center; border-width: var(--control__border-width); border-style: var(--control__border-style); border-color: var(--control__border-color); border-radius: var(--control__border-radius); padding-block: var(--control__padding-block); padding-inline: var(--control__padding-inline); box-sizing: border-box; background-color: var(--button-background-color); color: var(--button-color); }",
15+
".dialog::part(close-button) { font-size: var(--font-size-body-m); line-height: var(--line-height-tight); font-weight: var(--font-weight-regular); }",
16+
".dialog::part(close-button) { padding: calc((var(--control__block-size) - 2*var(--control__border-width) - var(--mer-icon__box--md))/2); border-width: var(--control__border-width); border-style: var(--control__border-style); border-color: var(--control__border-color); border-radius: var(--control__border-radius); }",
17+
".dialog::part(close-button)::before { content: \"\"; display: block; inline-size: var(--mer-icon__box--md); block-size: var(--mer-icon__box--md); background: no-repeat center/var(--mer-icon__size--md) var(--icon-path); }",
18+
".dialog::part(close-button):active { --button-color: var(--mer-text__primary--active); }",
19+
".dialog::part(close-button):active { --icon-path: var(--icon__system_close_neutral--active); }",
20+
".dialog::part(close-button):disabled { --button-color: var(--mer-text__on-disabled); }",
21+
".dialog::part(close-button):focus-visible { outline: var(--focus__outline-width) var(--focus__outline-style) var(--focus__outline-color); outline-offset: var(--focus__outline-offset); }",
22+
".dialog::part(close-button):hover { --button-color: var(--mer-text__primary--hover); }",
23+
".dialog::part(close-button):hover { --icon-path: var(--icon__system_close_neutral--hover); }",
1524
".dialog::part(content) { overflow: auto; }",
1625
".dialog::part(dialog) { --dialog-border-radius: var(--mer-border__width--lg); --spacing-body-block-start: var(--mer-spacing--md); --spacing-body-block-end: var(--mer-spacing--md); --spacing-body-inline-start: var(--mer-spacing--sm); --spacing-body-inline-end: var(--mer-spacing--sm); border-radius: var(--dialog-border-radius); border: var(--mer-border__width--sm) solid var(--dialog-border-color); background-color: var(--dialog-background-color); box-shadow: var(--mer-box-shadow--01); }",
1726
".dialog::part(edge) { border-color: rgba(0, 0, 0, 0); transition: var(--mer-timing--fast) border-color; }",
@@ -22,6 +31,6 @@
2231
".dialog::part(edge-inline-start) { border-inline-start-width: var(--mer-border__width--lg); border-inline-start-style: solid; }",
2332
".dialog::part(footer) { border-block-start: var(--mer-border__width--sm) solid var(--mer-border-color__on-elevation--01); }",
2433
".dialog::part(footer) { padding-block: var(--mer-spacing--xs); padding-inline: var(--mer-spacing--sm); }",
25-
".dialog::part(header) { gap: var(--mer-spacing--sm); padding-block: var(--mer-spacing--md); padding-inline: var(--mer-spacing--sm); border-block-end: var(--mer-border__width--sm) solid var(--dialog-border-color); }",
34+
".dialog::part(header) { min-block-size: calc(var(--mer-spacing--md)*2 + var(--font-size-subtitle-xs)*var(--line-height-tight)); gap: var(--mer-spacing--sm); padding-inline: var(--mer-spacing--sm); border-block-end: var(--mer-border__width--sm) solid var(--dialog-border-color); }",
2635
"@keyframes spin { \n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}"
2736
]

packages/mercury/src/tokens/semantic/_general.scss

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@
8181
// ----------------------
8282
--focus__outline-width: var(--mer-border__width--sm);
8383
--focus__outline-style: solid;
84-
--focus__outline-color: var(--mer-border-color__primary);
84+
--focus__outline-color: var(--mer-border-color__primary--focused);
8585
--focus__outline-offset: calc(var(--mer-system__border-width) * -1);
8686
--borders-un-border-color__focused: var(--focus__outline-color);
8787
}

0 commit comments

Comments
 (0)