@krumio/trailhand-ui 1.11.2 → 1.11.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LitElement, TemplateResult } from 'lit';
|
|
1
|
+
import { LitElement, TemplateResult, PropertyValues } from 'lit';
|
|
2
2
|
import '../icon/icon';
|
|
3
3
|
export type PopoverPlacement = 'top' | 'bottom' | 'left' | 'right';
|
|
4
4
|
export interface PopoverProps {
|
|
@@ -28,6 +28,8 @@ export declare class Popover extends LitElement {
|
|
|
28
28
|
subtitle: string;
|
|
29
29
|
escapeBoundary: boolean;
|
|
30
30
|
private _hasHeadingSlot;
|
|
31
|
+
private _clampOffsetX;
|
|
32
|
+
private _clampOffsetY;
|
|
31
33
|
private _boundHandleClickOutside;
|
|
32
34
|
static styles: import("lit").CSSResult;
|
|
33
35
|
constructor();
|
|
@@ -37,6 +39,8 @@ export declare class Popover extends LitElement {
|
|
|
37
39
|
private _handleTriggerClick;
|
|
38
40
|
private _open;
|
|
39
41
|
private _computeFixedPosition;
|
|
42
|
+
updated(changed: PropertyValues<this>): void;
|
|
43
|
+
private _clampToViewport;
|
|
40
44
|
private _close;
|
|
41
45
|
private _handleHeadingSlotChange;
|
|
42
46
|
private _renderHeader;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../../src/components/popover/popover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,cAAc,EAAW,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"popover.d.ts","sourceRoot":"","sources":["../../../src/components/popover/popover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAa,cAAc,EAAW,cAAc,EAAE,MAAM,KAAK,CAAC;AAGrF,OAAO,cAAc,CAAC;AAEtB,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;GAIG;AACH,qBAAa,OAAQ,SAAQ,UAAU;IAErC,IAAI,UAAS;IAEb;;OAEG;IAEH,QAAQ,UAAS;IAEjB;;OAEG;IAEH,SAAS,EAAE,gBAAgB,CAAY;IAGvC,KAAK,SAAM;IAGX,QAAQ,SAAM;IAKd,cAAc,UAAS;IAEd,OAAO,CAAC,eAAe,CAAS;IAIhC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAK;IAEnC,OAAO,CAAC,wBAAwB,CAAqB;IAErD,OAAgB,MAAM,0BAuHpB;;IAOO,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAKrC,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,qBAAqB;IA0CpB,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI;IAkBrD,OAAO,CAAC,gBAAgB;IAwCxB,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,wBAAwB;IAKhC,OAAO,CAAC,aAAa;IAkBZ,MAAM,IAAI,cAAc;CAuClC"}
|
|
@@ -31,6 +31,10 @@ export class Popover extends LitElement {
|
|
|
31
31
|
// so it escapes a clipping ancestor (overflow: hidden/auto) instead of being cut off by it.
|
|
32
32
|
this.escapeBoundary = false;
|
|
33
33
|
this._hasHeadingSlot = false;
|
|
34
|
+
// These offsets are computed in `_clampToViewport()` and applied via CSS custom properties to
|
|
35
|
+
// the placement transforms, so the popover can be re-centered against the viewport instead of just the trigger.
|
|
36
|
+
this._clampOffsetX = 0;
|
|
37
|
+
this._clampOffsetY = 0;
|
|
34
38
|
this._boundHandleClickOutside = this._handleClickOutside.bind(this);
|
|
35
39
|
}
|
|
36
40
|
connectedCallback() {
|
|
@@ -72,7 +76,7 @@ export class Popover extends LitElement {
|
|
|
72
76
|
position: 'fixed',
|
|
73
77
|
left: `${rect.left + rect.width / 2}px`,
|
|
74
78
|
bottom: `${window.innerHeight - rect.top + gap}px`,
|
|
75
|
-
transform:
|
|
79
|
+
transform: `translateX(-50%) translateX(${this._clampOffsetX}px)`,
|
|
76
80
|
};
|
|
77
81
|
break;
|
|
78
82
|
case 'left':
|
|
@@ -80,7 +84,7 @@ export class Popover extends LitElement {
|
|
|
80
84
|
position: 'fixed',
|
|
81
85
|
top: `${rect.top + rect.height / 2}px`,
|
|
82
86
|
right: `${window.innerWidth - rect.left + gap}px`,
|
|
83
|
-
transform:
|
|
87
|
+
transform: `translateY(-50%) translateY(${this._clampOffsetY}px)`,
|
|
84
88
|
};
|
|
85
89
|
break;
|
|
86
90
|
case 'right':
|
|
@@ -88,7 +92,7 @@ export class Popover extends LitElement {
|
|
|
88
92
|
position: 'fixed',
|
|
89
93
|
top: `${rect.top + rect.height / 2}px`,
|
|
90
94
|
left: `${rect.right + gap}px`,
|
|
91
|
-
transform:
|
|
95
|
+
transform: `translateY(-50%) translateY(${this._clampOffsetY}px)`,
|
|
92
96
|
};
|
|
93
97
|
break;
|
|
94
98
|
default:
|
|
@@ -96,11 +100,63 @@ export class Popover extends LitElement {
|
|
|
96
100
|
position: 'fixed',
|
|
97
101
|
left: `${rect.left + rect.width / 2}px`,
|
|
98
102
|
top: `${rect.bottom + gap}px`,
|
|
99
|
-
transform:
|
|
103
|
+
transform: `translateX(-50%) translateX(${this._clampOffsetX}px)`,
|
|
100
104
|
};
|
|
101
105
|
}
|
|
102
106
|
return style;
|
|
103
107
|
}
|
|
108
|
+
updated(changed) {
|
|
109
|
+
super.updated(changed);
|
|
110
|
+
if (this.open) {
|
|
111
|
+
// Content isn't visible (opacity/visibility) while closed, but it's still laid
|
|
112
|
+
// out in the DOM, so its rect is measurable as soon as it's open. Runs in every
|
|
113
|
+
// positioning mode, not just escape-boundary.
|
|
114
|
+
this._clampToViewport();
|
|
115
|
+
}
|
|
116
|
+
else if (changed.has('open')) {
|
|
117
|
+
// Reset so a stale offset from this position doesn't leak into the next open,
|
|
118
|
+
// e.g. after the trigger (or the viewport) has moved.
|
|
119
|
+
this._clampOffsetX = 0;
|
|
120
|
+
this._clampOffsetY = 0;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Re-centers the popover's placement against the viewport instead of just the
|
|
124
|
+
// trigger, so a trigger near a screen edge doesn't push the popover off it.
|
|
125
|
+
_clampToViewport() {
|
|
126
|
+
const content = this.shadowRoot?.querySelector('.popover-content');
|
|
127
|
+
if (!content) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const margin = 8;
|
|
131
|
+
const hostRect = this.getBoundingClientRect();
|
|
132
|
+
const contentRect = content.getBoundingClientRect();
|
|
133
|
+
if (this.placement === 'left' || this.placement === 'right') {
|
|
134
|
+
const naturalTop = hostRect.top + hostRect.height / 2 - contentRect.height / 2;
|
|
135
|
+
let offsetY = 0;
|
|
136
|
+
if (naturalTop < margin) {
|
|
137
|
+
offsetY = margin - naturalTop;
|
|
138
|
+
}
|
|
139
|
+
else if (naturalTop + contentRect.height > window.innerHeight - margin) {
|
|
140
|
+
offsetY = (window.innerHeight - margin) - (naturalTop + contentRect.height);
|
|
141
|
+
}
|
|
142
|
+
if (offsetY !== this._clampOffsetY) {
|
|
143
|
+
this._clampOffsetY = offsetY;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
const naturalLeft = hostRect.left + hostRect.width / 2 - contentRect.width / 2;
|
|
148
|
+
let offsetX = 0;
|
|
149
|
+
if (naturalLeft < margin) {
|
|
150
|
+
offsetX = margin - naturalLeft;
|
|
151
|
+
}
|
|
152
|
+
else if (naturalLeft + contentRect.width > window.innerWidth - margin) {
|
|
153
|
+
offsetX = (window.innerWidth - margin) - (naturalLeft + contentRect.width);
|
|
154
|
+
}
|
|
155
|
+
if (offsetX !== this._clampOffsetX) {
|
|
156
|
+
this._clampOffsetX = offsetX;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
104
160
|
_close() {
|
|
105
161
|
this.open = false;
|
|
106
162
|
this.dispatchEvent(new CustomEvent('popover-close', { bubbles: true, composed: true }));
|
|
@@ -127,13 +183,19 @@ export class Popover extends LitElement {
|
|
|
127
183
|
`;
|
|
128
184
|
}
|
|
129
185
|
render() {
|
|
186
|
+
// The viewport clamp offsets are applied via CSS custom properties so the
|
|
187
|
+
// placement transforms can consume them.
|
|
130
188
|
// Computed fresh on every render rather than cached in state: caching it
|
|
131
189
|
// meant a stale value could briefly apply whenever open/escapeBoundary/
|
|
132
190
|
// placement changed together, since state set during `updated()` only
|
|
133
191
|
// takes effect on the render after next.
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
:
|
|
192
|
+
const contentStyle = {
|
|
193
|
+
'--th-popover-clamp-x': `${this._clampOffsetX}px`,
|
|
194
|
+
'--th-popover-clamp-y': `${this._clampOffsetY}px`,
|
|
195
|
+
};
|
|
196
|
+
if (this.open && this.escapeBoundary) {
|
|
197
|
+
Object.assign(contentStyle, this._computeFixedPosition());
|
|
198
|
+
}
|
|
137
199
|
return html `
|
|
138
200
|
<div
|
|
139
201
|
class="trigger-wrapper"
|
|
@@ -146,7 +208,7 @@ export class Popover extends LitElement {
|
|
|
146
208
|
|
|
147
209
|
<div
|
|
148
210
|
class="popover-content ${this.open ? 'popover-content--open' : ''}"
|
|
149
|
-
style=${
|
|
211
|
+
style=${styleMap(contentStyle)}
|
|
150
212
|
role="dialog"
|
|
151
213
|
aria-hidden=${!this.open}
|
|
152
214
|
>
|
|
@@ -230,45 +292,45 @@ Popover.styles = css `
|
|
|
230
292
|
:host(:not([placement])) .popover-content {
|
|
231
293
|
top: calc(100% + 8px);
|
|
232
294
|
left: 50%;
|
|
233
|
-
transform: translateX(-50%) translateY(-6px);
|
|
295
|
+
transform: translateX(-50%) translateX(var(--th-popover-clamp-x, 0px)) translateY(-6px);
|
|
234
296
|
}
|
|
235
297
|
|
|
236
298
|
:host([placement='bottom']) .popover-content--open,
|
|
237
299
|
:host(:not([placement])) .popover-content--open {
|
|
238
|
-
transform: translateX(-50%) translateY(0);
|
|
300
|
+
transform: translateX(-50%) translateX(var(--th-popover-clamp-x, 0px)) translateY(0);
|
|
239
301
|
}
|
|
240
302
|
|
|
241
303
|
/* Placement: top */
|
|
242
304
|
:host([placement='top']) .popover-content {
|
|
243
305
|
bottom: calc(100% + 8px);
|
|
244
306
|
left: 50%;
|
|
245
|
-
transform: translateX(-50%) translateY(6px);
|
|
307
|
+
transform: translateX(-50%) translateX(var(--th-popover-clamp-x, 0px)) translateY(6px);
|
|
246
308
|
}
|
|
247
309
|
|
|
248
310
|
:host([placement='top']) .popover-content--open {
|
|
249
|
-
transform: translateX(-50%) translateY(0);
|
|
311
|
+
transform: translateX(-50%) translateX(var(--th-popover-clamp-x, 0px)) translateY(0);
|
|
250
312
|
}
|
|
251
313
|
|
|
252
314
|
/* Placement: right */
|
|
253
315
|
:host([placement='right']) .popover-content {
|
|
254
316
|
left: calc(100% + 8px);
|
|
255
317
|
top: 50%;
|
|
256
|
-
transform: translateY(-50%) translateX(-6px);
|
|
318
|
+
transform: translateY(-50%) translateY(var(--th-popover-clamp-y, 0px)) translateX(-6px);
|
|
257
319
|
}
|
|
258
320
|
|
|
259
321
|
:host([placement='right']) .popover-content--open {
|
|
260
|
-
transform: translateY(-50%) translateX(0);
|
|
322
|
+
transform: translateY(-50%) translateY(var(--th-popover-clamp-y, 0px)) translateX(0);
|
|
261
323
|
}
|
|
262
324
|
|
|
263
325
|
/* Placement: left */
|
|
264
326
|
:host([placement='left']) .popover-content {
|
|
265
327
|
right: calc(100% + 8px);
|
|
266
328
|
top: 50%;
|
|
267
|
-
transform: translateY(-50%) translateX(6px);
|
|
329
|
+
transform: translateY(-50%) translateY(var(--th-popover-clamp-y, 0px)) translateX(6px);
|
|
268
330
|
}
|
|
269
331
|
|
|
270
332
|
:host([placement='left']) .popover-content--open {
|
|
271
|
-
transform: translateY(-50%) translateX(0);
|
|
333
|
+
transform: translateY(-50%) translateY(var(--th-popover-clamp-y, 0px)) translateX(0);
|
|
272
334
|
}
|
|
273
335
|
|
|
274
336
|
/* Dark mode */
|
|
@@ -299,5 +361,11 @@ __decorate([
|
|
|
299
361
|
__decorate([
|
|
300
362
|
state()
|
|
301
363
|
], Popover.prototype, "_hasHeadingSlot", void 0);
|
|
364
|
+
__decorate([
|
|
365
|
+
state()
|
|
366
|
+
], Popover.prototype, "_clampOffsetX", void 0);
|
|
367
|
+
__decorate([
|
|
368
|
+
state()
|
|
369
|
+
], Popover.prototype, "_clampOffsetY", void 0);
|
|
302
370
|
customElements.define('trailhand-popover', Popover);
|
|
303
371
|
//# sourceMappingURL=popover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"popover.js","sourceRoot":"","sources":["../../../src/components/popover/popover.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAkB,OAAO,
|
|
1
|
+
{"version":3,"file":"popover.js","sourceRoot":"","sources":["../../../src/components/popover/popover.ts"],"names":[],"mappings":"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"}
|