Skip to content

Commit 0b730ea

Browse files
authored
fix(tooltip): restore negative and informative semantic variants (#3641)
* fix(tooltip): restore negative and informative semantic variants * fix(tooltip): remove positive semantic variant test * fix(tooltip): deduplicate high contrast color vars
1 parent 60a156d commit 0b730ea

File tree

6 files changed

+62
-34
lines changed

6 files changed

+62
-34
lines changed

.changeset/stale-pans-carry.md

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
"@spectrum-css/tooltip": minor
3+
---
4+
5+
#### S2: restore negative and informative semantic variants
6+
7+
This restores the negative and informative tooltip semantic variant styles, story controls and test cases. Icons have been removed for all variants as they are not present in the specifications provided by design.
8+
9+
##### Restored mods
10+
11+
`--mod-tooltip-background-color-informative`
12+
`--mod-tooltip-background-color-negative"`

components/tooltip/dist/metadata.json

+10-2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
".spectrum-Tooltip--end-top.is-open:dir(rtl)",
3636
".spectrum-Tooltip--end.is-open",
3737
".spectrum-Tooltip--end.is-open:dir(rtl)",
38+
".spectrum-Tooltip--info",
39+
".spectrum-Tooltip--info .spectrum-Tooltip-tip",
3840
".spectrum-Tooltip--left",
3941
".spectrum-Tooltip--left .spectrum-Tooltip-tip",
4042
".spectrum-Tooltip--left .spectrum-Tooltip-tip:dir(rtl)",
@@ -47,6 +49,8 @@
4749
".spectrum-Tooltip--left-top .spectrum-Tooltip-tip:dir(rtl)",
4850
".spectrum-Tooltip--left-top.is-open",
4951
".spectrum-Tooltip--left.is-open",
52+
".spectrum-Tooltip--negative",
53+
".spectrum-Tooltip--negative .spectrum-Tooltip-tip",
5054
".spectrum-Tooltip--right",
5155
".spectrum-Tooltip--right .spectrum-Tooltip-tip",
5256
".spectrum-Tooltip--right .spectrum-Tooltip-tip:dir(rtl)",
@@ -302,6 +306,8 @@
302306
"--mod-overlay-animation-duration-opened",
303307
"--mod-tooltip-animation-distance",
304308
"--mod-tooltip-background-color-default",
309+
"--mod-tooltip-background-color-informative",
310+
"--mod-tooltip-background-color-negative",
305311
"--mod-tooltip-border-radius",
306312
"--mod-tooltip-cjk-line-height",
307313
"--mod-tooltip-content-color",
@@ -324,8 +330,9 @@
324330
"component": [
325331
"--spectrum-tooltip-animation-distance",
326332
"--spectrum-tooltip-animation-duration",
327-
"--spectrum-tooltip-backgound-color-default-neutral",
328333
"--spectrum-tooltip-background-color-default",
334+
"--spectrum-tooltip-background-color-informative",
335+
"--spectrum-tooltip-background-color-negative",
329336
"--spectrum-tooltip-border-radius",
330337
"--spectrum-tooltip-cjk-line-height",
331338
"--spectrum-tooltip-content-color",
@@ -358,8 +365,9 @@
358365
"--spectrum-corner-radius-400",
359366
"--spectrum-font-size-75",
360367
"--spectrum-gray-25",
368+
"--spectrum-informative-background-color-default",
369+
"--spectrum-negative-background-color-default",
361370
"--spectrum-neutral-background-color-default",
362-
"--spectrum-neutral-subdued-background-color-default",
363371
"--spectrum-regular-font-weight",
364372
"--spectrum-spacing-75"
365373
],

components/tooltip/index.css

+23-3
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
@import "@spectrum-css/commons/overlay.css";
1515

1616
.spectrum-Tooltip {
17-
--spectrum-tooltip-backgound-color-default-neutral: var(--spectrum-neutral-subdued-background-color-default);
18-
1917
--spectrum-tooltip-animation-duration: var(--spectrum-animation-duration-100);
2018
--spectrum-tooltip-animation-distance: var(--spectrum-spacing-75);
2119

@@ -43,6 +41,10 @@
4341
--spectrum-tooltip-content-color: var(--spectrum-gray-25);
4442
--spectrum-tooltip-background-color-default: var(--spectrum-neutral-background-color-default);
4543

44+
/* colors */
45+
--spectrum-tooltip-background-color-informative: var(--spectrum-informative-background-color-default);
46+
--spectrum-tooltip-background-color-negative: var(--spectrum-negative-background-color-default);
47+
4648
/* tip */
4749
--spectrum-tooltip-tip-block-size: var(--spectrum-tooltip-tip-height);
4850

@@ -57,6 +59,7 @@
5759

5860
--highcontrast-tooltip-border-width: 0px;
5961
}
62+
6063
.spectrum-Tooltip {
6164
@extend %spectrum-overlay;
6265

@@ -102,6 +105,15 @@
102105
}
103106
}
104107

108+
/****** Variants ******/
109+
.spectrum-Tooltip--info {
110+
background-color: var(--highcontrast-tooltip-background-color-default, var(--mod-tooltip-background-color-informative, var(--spectrum-tooltip-background-color-informative)));
111+
}
112+
113+
.spectrum-Tooltip--negative {
114+
background-color: var(--highcontrast-tooltip-background-color-default, var(--mod-tooltip-background-color-negative, var(--spectrum-tooltip-background-color-negative)));
115+
}
116+
105117
.spectrum-Tooltip.is-open {
106118
@extend %spectrum-overlay--open;
107119
}
@@ -125,6 +137,14 @@
125137

126138
border-radius: 0 0 0 var(--mod-tooltip-tip-corner-radius, var(--spectrum-tooltip-tip-corner-radius));
127139

140+
.spectrum-Tooltip--info & {
141+
background-color: var(--highcontrast-tooltip-background-color-default, var(--mod-tooltip-background-color-informative, var(--spectrum-tooltip-background-color-informative)));
142+
}
143+
144+
.spectrum-Tooltip--negative & {
145+
background-color: var(--highcontrast-tooltip-background-color-default, var(--mod-tooltip-background-color-negative, var(--spectrum-tooltip-background-color-negative)));
146+
}
147+
128148
/*** Tip Placement ***/
129149
/* tip is horizontal at bottom pointing down ▽ */
130150
.spectrum-Tooltip--top &,
@@ -576,7 +596,7 @@
576596
@media (forced-colors: active) {
577597
.spectrum-Tooltip {
578598
--highcontrast-tooltip-border-width: 1px;
579-
599+
580600
border: var(--highcontrast-tooltip-border-width) solid CanvasText;
581601
}
582602

components/tooltip/stories/template.js

+3-22
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { Template as Icon } from "@spectrum-css/icon/stories/template.js";
21
import { Container } from "@spectrum-css/preview/decorators";
32
import { html } from "lit";
43
import { classMap } from "lit/directives/class-map.js";
@@ -18,18 +17,7 @@ export const Template = ({
1817
showOnHover = false,
1918
customStyles = {},
2019
customClasses = [],
21-
} = {}, context = {}) => {
22-
let variantIcon;
23-
if (variant === "info") {
24-
variantIcon = "Info";
25-
}
26-
else if (variant === "positive") {
27-
variantIcon = "CheckmarkCircle";
28-
}
29-
else if (variant === "negative") {
30-
variantIcon = "Alert";
31-
}
32-
20+
} = {}) => {
3321
if (showOnHover) {
3422
document.addEventListener("DOMContentLoaded", () => {
3523
[...document.querySelectorAll(`.${rootClass}`)].forEach(tooltip => {
@@ -42,21 +30,15 @@ export const Template = ({
4230
<span
4331
class=${classMap({
4432
[rootClass]: true,
33+
[`${rootClass}--${variant}`]:
34+
typeof variant !== "undefined" && variant !== "neutral",
4535
[`${rootClass}--${placement}`]: typeof placement !== "undefined",
4636
"is-open": isOpen,
4737
"is-focused": isFocused,
4838
...customClasses.reduce((a, c) => ({ ...a, [c]: true }), {}),
4939
})}
5040
style=${styleMap(customStyles)}
5141
>
52-
${when(variantIcon, () =>
53-
Icon({
54-
iconName: variantIcon,
55-
setName: "workflow",
56-
size: "m",
57-
customClasses: [`${rootClass}-typeIcon`],
58-
}, context)
59-
)}
6042
${when(label, () => html`
6143
<span class=${classMap({
6244
[`${rootClass}-label`]: true
@@ -145,7 +127,6 @@ export const SemanticVariantGroup = (args, context) => {
145127
const variants = [
146128
"neutral",
147129
"info",
148-
"positive",
149130
"negative",
150131
];
151132

components/tooltip/stories/tooltip.stories.js

+13-6
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,16 @@ export default {
2121
},
2222
control: "text",
2323
},
24+
variant: {
25+
name: "Variant",
26+
type: { name: "string" },
27+
table: {
28+
type: { summary: "string" },
29+
category: "Component",
30+
},
31+
options: ["neutral", "info", "negative"],
32+
control: "inline-radio",
33+
},
2434
placement: {
2535
name: "Placement",
2636
description: "The placement of the tooltip relative to the source. Note that placements that start with left/right do not change with text direction, but start/end placements do.",
@@ -76,6 +86,7 @@ export default {
7686
isOpen: true,
7787
isFocused: false,
7888
showOnHover: false,
89+
variant: "neutral",
7990
label: "Lorem ipsum dolor sit amet, consectetur adipiscing elit",
8091
},
8192
parameters: {
@@ -123,14 +134,10 @@ ShowOnHover.parameters = {
123134

124135
/**
125136
* By default, tooltips are the neutral variant. This is the most common variant because most tooltips are used to only
126-
* disclose additional information, without conveying a semantic meaning. The neutral variant never includes an icon.
137+
* disclose additional information, without conveying a semantic meaning.
127138
*
128-
* Tooltips also come in other semantic variants: informative (blue), positive (green), and negative (red). These use
139+
* Tooltips also come in other semantic variants: informative (blue) and negative (red). These use
129140
* [semantic colors](https://spectrum.adobe.com/page/color-system/#Color-semantics) to communicate the meaning.
130-
*
131-
* These semantic variants include an icon to supplement the messaging. These icons are predefined and can not be
132-
* customized. Unless it's being used to provide context about the exact same icon, a semantic tooltip should always
133-
* show an icon. Doing this is essential for helping users with color vision deficiency to discern the message tone.
134141
*/
135142
export const SemanticVariants = SemanticVariantGroup.bind({});
136143
SemanticVariants.tags = ["!dev"];

components/tooltip/stories/tooltip.test.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { Template } from "./template.js";
55
export const PlacementVariants = Variants({
66
Template,
77
testData: [
8-
...["neutral", "info", "positive", "negative"].map(variant => ({
8+
...["neutral", "info", "negative"].map(variant => ({
99
testHeading: capitalize(variant),
1010
variant,
1111
})),

0 commit comments

Comments
 (0)