Skip to content

Commit da8616a

Browse files
feat(popover) - update popover component for SHINE (#2030)
* Remove arrow from popovers * add new tag * add changeset * remove arrow references * remove unused imports * update migration guide * changes based on comments
1 parent 2a4a741 commit da8616a

File tree

15 files changed

+25
-395
lines changed

15 files changed

+25
-395
lines changed

.changeset/thin-days-leave.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
"@stackoverflow/stacks": minor
3+
---
4+
5+
Update popover component to match SHINE styles
6+
7+
BREAKING CHANGES:
8+
- `s-popover--arrow` css class has been removed

MIGRATION_GUIDE.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@
1616
- `.blr-sm` removed
1717
- `.blr-lg` removed
1818

19+
### Components
20+
21+
#### Popover
22+
- The new popovers no longer include an arrow element. The `s-popover--arrow` css class has been removed, and any markup using it (e.g. `<div class="s-popover--arrow"></div>`) should be deleted from the codebases as part of the migration.
23+
1924
# Migrating from Stacks Svelte v0 to v1
2025

2126
Coming soon…

packages/stacks-classic/lib/components/popover/popover.less

Lines changed: 0 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,6 @@
55
--_po-d: none;
66
--_po-wmn: 12rem;
77
--_po-w: 100%;
8-
// arrow
9-
--_po-arrow-fc: var(--white);
10-
--_po-arrow-b: unset;
11-
--_po-arrow-l: unset;
12-
--_po-arrow-r: unset;
13-
--_po-arrow-t: unset;
14-
--_po-arrow-ps: calc(var(--su6) * -1); // ps suffix used for placement, not positioning value
15-
--_po-arrow-after-b: unset;
16-
--_po-arrow-after-l: unset;
17-
--_po-arrow-after-r: unset;
18-
--_po-arrow-after-t: unset;
19-
--_po-arrow-after-bs: unset;
208
// content
219
// --_po-topbar-height assumes the topbar height based on topbar styles
2210
--_po-topbar-height: var(--theme-topbar-height, calc(var(--su-static48) + var(--su-static8)));
@@ -27,7 +15,6 @@
2715
--_po-bg: var(--black-200);
2816
--_po-bc: var(--bc-light);
2917
--_po-bs: var(--bs-lg);
30-
--_po-arrow-fc: var(--black-200);
3118
});
3219

3320
// MODIFIERS
@@ -41,91 +28,6 @@
4128
}
4229

4330
// CHILD ELEMENTS
44-
// Arrow
45-
&[data-popper-placement^="top"] > &--arrow,
46-
& &--arrow__bc,
47-
& &--arrow__bl,
48-
& &--arrow__br {
49-
--_po-arrow-b: var(--_po-arrow-ps);
50-
--_po-arrow-after-b: var(--su-static1);
51-
--_po-arrow-after-bs: 2px 2px 5px 0 hsla(0, 0%, 0%, 0.07), 2px 2px 2px -1px hsla(0, 0%, 0%, 0.1);
52-
.highcontrast-mode({ --_po-arrow-after-bs: 1px 1px 0 0 var(--bc-medium); });
53-
}
54-
&[data-popper-placement^="bottom"] > &--arrow,
55-
& &--arrow__tc,
56-
& &--arrow__tl,
57-
& &--arrow__tr {
58-
--_po-arrow-t: var(--_po-arrow-ps);
59-
--_po-arrow-after-t: var(--su-static1);
60-
--_po-arrow-after-bs: -1px -1px 1px 0 hsla(0, 0%, 0%, 0.12);
61-
.highcontrast-mode({ --_po-arrow-after-bs: -1px -1px 0 0 var(--bc-medium); });
62-
}
63-
&[data-popper-placement^="left"] > &--arrow,
64-
& &--arrow__rc,
65-
& &--arrow__rt,
66-
& &--arrow__rb {
67-
--_po-arrow-r: var(--_po-arrow-ps);
68-
--_po-arrow-after-r: var(--su-static1);
69-
--_po-arrow-after-bs: 2px -2px 5px 0 hsla(0, 0%, 0%, 0.07), 2px -2px 2px -1px hsla(0, 0%, 0%, 0.1);
70-
.highcontrast-mode({ --_po-arrow-after-bs: 1px -1px 0 0 var(--bc-medium); });
71-
}
72-
&[data-popper-placement^="right"] > &--arrow,
73-
& &--arrow__lc,
74-
& &--arrow__lt,
75-
& &--arrow__lb {
76-
--_po-arrow-l: var(--_po-arrow-ps);
77-
--_po-arrow-after-l: var(--su-static1);
78-
--_po-arrow-after-bs: -2px 2px 5px 0 hsla(0, 0%, 0%, 0.07), -2px 2px 2px -1px hsla(0, 0%, 0%, 0.1);
79-
.highcontrast-mode({ --_po-arrow-after-bs: -1px 1px 0 0 var(--bc-medium); });
80-
}
81-
& &--arrow__tc,
82-
& &--arrow__bc {
83-
--_po-arrow-l: calc(50% - var(--su6));
84-
}
85-
& &--arrow__lc,
86-
& &--arrow__rc {
87-
--_po-arrow-t: calc(50% - var(--su6));
88-
}
89-
& &--arrow__tr,
90-
.s-popover--arrow__br {
91-
--_po-arrow-r: var(--su12);
92-
}
93-
& &--arrow__rb,
94-
& &--arrow__lb {
95-
--_po-arrow-b: var(--su12);
96-
}
97-
& &--arrow {
98-
&,
99-
&:before,
100-
&:after {
101-
display: block;
102-
height: var(--su12);
103-
position: absolute;
104-
width: var(--su12);
105-
z-index: -1;
106-
}
107-
&:before, // This renders our border
108-
&:after {
109-
content: '';
110-
transform: rotate(45deg);
111-
}
112-
&:after { // This renders our foreground color
113-
bottom: var(--_po-arrow-after-b);
114-
box-shadow: var(--_po-arrow-after-bs);
115-
left: var(--_po-arrow-after-l);
116-
right: var(--_po-arrow-after-r);
117-
top: var(--_po-arrow-after-t);
118-
119-
background: currentColor;
120-
border-radius: calc(var(--su-static1) * 1.5);
121-
}
122-
123-
bottom: var(--_po-arrow-b);
124-
color: var(--_po-arrow-fc);
125-
left: var(--_po-arrow-l);
126-
right: var(--_po-arrow-r);
127-
top: var(--_po-arrow-t);
128-
}
12931
// Close btn
13032
& &--close {
13133
float: right; // Use floats for title wrapping

packages/stacks-classic/lib/components/popover/popover.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -231,12 +231,6 @@ export abstract class BasePopoverController extends Stacks.StacksController {
231231
offset: [0, 10], // The entire popover should be 10px away from the element
232232
},
233233
},
234-
{
235-
name: "arrow",
236-
options: {
237-
element: ".s-popover--arrow",
238-
},
239-
},
240234
],
241235
});
242236
}

packages/stacks-classic/lib/components/popover/tooltip.test.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ describe("tooltip", () => {
8080
role="tooltip"
8181
data-testid="tooltip"
8282
>
83-
<div class="s-popover--arrow"></div>
8483
<div class="s-popover--content">
8584
<a href="#" data-testid="link">View more</a>
8685
</div>
@@ -113,7 +112,6 @@ describe("tooltip", () => {
113112
role="tooltip"
114113
data-testid="tooltip"
115114
>
116-
<div class="s-popover--arrow"></div>
117115
<div class="s-popover--content">
118116
<a href="#">View more</a>
119117
</div>

packages/stacks-classic/lib/components/popover/tooltip.ts

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -137,22 +137,10 @@ export class TooltipController extends BasePopoverController {
137137
}
138138
}
139139

140-
const arrow = popover.querySelector(".s-popover--arrow");
141-
142140
// clear and set the content of the popover
143141
popover.innerHTML = "";
144142
popover.appendChild(content);
145143

146-
// create the arrow if necessary
147-
if (arrow) {
148-
popover.appendChild(arrow);
149-
} else {
150-
popover.insertAdjacentHTML(
151-
"beforeend",
152-
`<div class="s-popover--arrow"></div>`
153-
);
154-
}
155-
156144
this.scheduleUpdate();
157145

158146
return popover;

packages/stacks-docs/_data/popovers.json

Lines changed: 0 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -20,77 +20,10 @@
2020
"applies": "Child of <code class=\"stacks-code\">.s-popover</code>",
2121
"description": "Used to dismiss a popover"
2222
},
23-
{
24-
"class": ".s-popover--arrow",
25-
"applies": "Child of <code class=\"stacks-code\">.s-popover</code>",
26-
"description": "When combined with JavaScript data attributes, this arrow element will be positioned automatically"
27-
},
2823
{
2924
"class": ".s-popover--content",
3025
"applies": "Child of <code class=\"stacks-code\">.s-popover</code>",
3126
"description": "Wrapper around the popover content to apply appropriate overflow styles"
3227
}
33-
],
34-
"manual": [
35-
{
36-
"class": ".s-popover--arrow__tc",
37-
"applies": "Child of <code class=\"stacks-code\">.s-popover</code>",
38-
"description": "Popover arrow appears top center"
39-
},
40-
{
41-
"class": ".s-popover--arrow__tl",
42-
"applies": "Child of <code class=\"stacks-code\">.s-popover</code>",
43-
"description": "Popover arrow appears top left"
44-
},
45-
{
46-
"class": ".s-popover--arrow__tr",
47-
"applies": "Child of <code class=\"stacks-code\">.s-popover</code>",
48-
"description": "Popover arrow appears top right"
49-
},
50-
{
51-
"class": ".s-popover--arrow__bc",
52-
"applies": "Child of <code class=\"stacks-code\">.s-popover</code>",
53-
"description": "Popover arrow appears bottom center"
54-
},
55-
{
56-
"class": ".s-popover--arrow__bl",
57-
"applies": "Child of <code class=\"stacks-code\">.s-popover</code>",
58-
"description": "Popover arrow appears bottom left"
59-
},
60-
{
61-
"class": ".s-popover--arrow__br",
62-
"applies": "Child of <code class=\"stacks-code\">.s-popover</code>",
63-
"description": "Popover arrow appears bottom right"
64-
},
65-
{
66-
"class": ".s-popover--arrow__rc",
67-
"applies": "Child of <code class=\"stacks-code\">.s-popover</code>",
68-
"description": "Popover arrow appears right center"
69-
},
70-
{
71-
"class": ".s-popover--arrow__rt",
72-
"applies": "Child of <code class=\"stacks-code\">.s-popover</code>",
73-
"description": "Popover arrow appears right top"
74-
},
75-
{
76-
"class": ".s-popover--arrow__rb",
77-
"applies": "Child of <code class=\"stacks-code\">.s-popover</code>",
78-
"description": "Popover arrow appears right bottom"
79-
},
80-
{
81-
"class": ".s-popover--arrow__lc",
82-
"applies": "Child of <code class=\"stacks-code\">.s-popover</code>",
83-
"description": "Popover arrow appears left center"
84-
},
85-
{
86-
"class": ".s-popover--arrow__lt",
87-
"applies": "Child of <code class=\"stacks-code\">.s-popover</code>",
88-
"description": "Popover arrow appears left top"
89-
},
90-
{
91-
"class": ".s-popover--arrow__lb",
92-
"applies": "Child of <code class=\"stacks-code\">.s-popover</code>",
93-
"description": "Popover arrow appears left bottom"
94-
}
9528
]
9629
}

packages/stacks-docs/_data/site-navigation.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,8 @@
286286
},
287287
{
288288
"title": "Popovers",
289-
"url": "/product/components/popovers/"
289+
"url": "/product/components/popovers/",
290+
"new": true
290291
},
291292
{
292293
"title": "Post summary",

packages/stacks-docs/_includes/header.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@
7575
<div class="s-popover w-auto wmn-initial wmx-initial"
7676
id="theming-popover"
7777
role="menu">
78-
<div class="s-popover--arrow"></div>
7978
<div class="s-popover--content">
8079
<div class="d-flex fd-column g12">
8180
<div class="d-flex ai-center jc-space-between g8">

packages/stacks-docs/_includes/layouts/home.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,6 @@
167167
<div class="s-popover w-auto wmn-initial wmx-initial"
168168
id="theming-popover"
169169
role="menu">
170-
<div class="s-popover--arrow"></div>
171170
<div class="d-flex fd-column g12">
172171
<div class="d-flex ai-center jc-space-between g8">
173172
<label class="s-label fs-body1 fw-normal" for="toggle-theme-dark">Dark mode</label>

0 commit comments

Comments
 (0)