@@ -3,6 +3,7 @@ import { css, html, LitElement } from 'lit';
3
3
import { customElement , property , query } from 'lit/decorators.js' ;
4
4
import { parseDuration , waitForEvent } from '../../dom' ;
5
5
import { GlElement , observe } from '../element' ;
6
+ import { scrollableBase } from '../styles/lit/base.css' ;
6
7
import '@shoelace-style/shoelace/dist/components/popup/popup.js' ;
7
8
8
9
// Adapted from shoelace tooltip
@@ -63,102 +64,105 @@ export class GlPopover extends GlElement {
63
64
delegatesFocus : true ,
64
65
} ;
65
66
66
- static override styles = css `
67
- :host {
68
- --hide-delay: 0ms;
69
- --show-delay: 500ms;
67
+ static override styles = [
68
+ scrollableBase ,
69
+ css `
70
+ :host {
71
+ --hide-delay: 0ms;
72
+ --show-delay: 500ms;
70
73
71
- display: contents;
72
- }
74
+ display: contents;
75
+ }
73
76
74
- .popover {
75
- --arrow-size: var(--sl-tooltip-arrow-size);
76
- --arrow-color: var(--sl-tooltip-background-color);
77
- }
77
+ .popover {
78
+ --arrow-size: var(--sl-tooltip-arrow-size);
79
+ --arrow-color: var(--sl-tooltip-background-color);
80
+ }
78
81
79
- .popover::part(popup) {
80
- z-index: var(--sl-z-index-tooltip);
81
- }
82
+ .popover::part(popup) {
83
+ z-index: var(--sl-z-index-tooltip);
84
+ }
82
85
83
- .popover::part(arrow) {
84
- border: 1px solid var(--gl-tooltip-border-color);
85
- z-index: 1;
86
- }
86
+ .popover::part(arrow) {
87
+ border: 1px solid var(--gl-tooltip-border-color);
88
+ z-index: 1;
89
+ }
87
90
88
- .popover[placement^='top']::part(popup) {
89
- transform-origin: bottom;
90
- }
91
+ .popover[placement^='top']::part(popup) {
92
+ transform-origin: bottom;
93
+ }
91
94
92
- .popover[placement^='bottom']::part(popup) {
93
- transform-origin: top;
94
- }
95
+ .popover[placement^='bottom']::part(popup) {
96
+ transform-origin: top;
97
+ }
95
98
96
- .popover[placement^='left']::part(popup) {
97
- transform-origin: right;
98
- }
99
+ .popover[placement^='left']::part(popup) {
100
+ transform-origin: right;
101
+ }
99
102
100
- .popover[placement^='right']::part(popup) {
101
- transform-origin: left;
102
- }
103
+ .popover[placement^='right']::part(popup) {
104
+ transform-origin: left;
105
+ }
103
106
104
- .popover[data-current-placement^='top']::part(arrow) {
105
- border-top-width: 0;
106
- border-left-width: 0;
107
- clip-path: polygon(0 50%, 100% 0, 100% 100%, 0 100%);
108
- }
107
+ .popover[data-current-placement^='top']::part(arrow) {
108
+ border-top-width: 0;
109
+ border-left-width: 0;
110
+ clip-path: polygon(0 50%, 100% 0, 100% 100%, 0 100%);
111
+ }
109
112
110
- .popover[data-current-placement^='bottom']::part(arrow) {
111
- border-bottom-width: 0;
112
- border-right-width: 0;
113
- clip-path: polygon(0 0, 100% 0, 100% 50%, 0 100%);
114
- }
113
+ .popover[data-current-placement^='bottom']::part(arrow) {
114
+ border-bottom-width: 0;
115
+ border-right-width: 0;
116
+ clip-path: polygon(0 0, 100% 0, 100% 50%, 0 100%);
117
+ }
115
118
116
- .popover[data-current-placement^='left']::part(arrow) {
117
- border-bottom-width: 0;
118
- border-left-width: 0;
119
- clip-path: polygon(0 0, 100% 0, 100% 100%, 70% 100%, 0 30%);
120
- }
119
+ .popover[data-current-placement^='left']::part(arrow) {
120
+ border-bottom-width: 0;
121
+ border-left-width: 0;
122
+ clip-path: polygon(0 0, 100% 0, 100% 100%, 70% 100%, 0 30%);
123
+ }
121
124
122
- .popover[data-current-placement^='right']::part(arrow) {
123
- border-top-width: 0;
124
- border-right-width: 0;
125
- clip-path: polygon(0 0, 0 100%, 100% 100%, 100% 70%, 30% 0);
126
- }
125
+ .popover[data-current-placement^='right']::part(arrow) {
126
+ border-top-width: 0;
127
+ border-right-width: 0;
128
+ clip-path: polygon(0 0, 0 100%, 100% 100%, 100% 70%, 30% 0);
129
+ }
127
130
128
- .popover__body {
129
- display: block;
130
- width: fit-content;
131
- border: 1px solid var(--gl-tooltip-border-color);
132
- border-radius: var(--sl-tooltip-border-radius);
133
- box-shadow: 0 2px 8px var(--gl-tooltip-shadow);
134
- background-color: var(--sl-tooltip-background-color);
135
- font-family: var(--sl-tooltip-font-family);
136
- font-size: var(--sl-tooltip-font-size);
137
- font-weight: var(--sl-tooltip-font-weight);
138
- line-height: var(--sl-tooltip-line-height);
139
- text-align: start;
140
- white-space: normal;
141
- color: var(--sl-tooltip-color);
142
- padding: var(--sl-tooltip-padding);
143
- user-select: none;
144
- -webkit-user-select: none;
145
- max-width: min(var(--auto-size-available-width), var(--max-width, 70vw));
146
- /* max-height: var(--auto-size-available-height);
131
+ .popover__body {
132
+ display: block;
133
+ width: fit-content;
134
+ border: 1px solid var(--gl-tooltip-border-color);
135
+ border-radius: var(--sl-tooltip-border-radius);
136
+ box-shadow: 0 2px 8px var(--gl-tooltip-shadow);
137
+ background-color: var(--sl-tooltip-background-color);
138
+ font-family: var(--sl-tooltip-font-family);
139
+ font-size: var(--sl-tooltip-font-size);
140
+ font-weight: var(--sl-tooltip-font-weight);
141
+ line-height: var(--sl-tooltip-line-height);
142
+ text-align: start;
143
+ white-space: normal;
144
+ color: var(--sl-tooltip-color);
145
+ padding: var(--sl-tooltip-padding);
146
+ user-select: none;
147
+ -webkit-user-select: none;
148
+ max-width: min(var(--auto-size-available-width), var(--max-width, 70vw));
149
+ /* max-height: var(--auto-size-available-height);
147
150
overflow: auto; */
148
- pointer-events: all;
149
- }
151
+ pointer-events: all;
152
+ }
150
153
151
- .popover[data-current-placement^='top'] .popover__body,
152
- .popover[data-current-placement^='bottom'] .popover__body {
153
- width: max-content;
154
- }
154
+ .popover[data-current-placement^='top'] .popover__body,
155
+ .popover[data-current-placement^='bottom'] .popover__body {
156
+ width: max-content;
157
+ }
155
158
156
- /* .popover::part(hover-bridge) {
159
+ /* .popover::part(hover-bridge) {
157
160
background: tomato;
158
161
opacity: 1;
159
162
z-index: 10000000000;
160
163
} */
161
- ` ;
164
+ ` ,
165
+ ] ;
162
166
163
167
private closeWatcher ! : CloseWatcher | null ;
164
168
private hoverTimeout ! : ReturnType < typeof setTimeout > ;
@@ -265,7 +269,7 @@ export class GlPopover extends GlElement {
265
269
< div
266
270
part ="body "
267
271
id ="popover "
268
- class ="popover__body "
272
+ class ="popover__body scrollable "
269
273
role ="tooltip "
270
274
aria-live =${ this . open ? 'polite' : 'off' }
271
275
>
0 commit comments