|
110 | 110 | }
|
111 | 111 | });
|
112 | 112 |
|
| 113 | + const onHandleResize = () => { |
| 114 | + if (visible) { |
| 115 | + coords = computeTooltipPosition(targetElement, tooltipRef, position, coords); |
| 116 | + } |
| 117 | + }; |
| 118 | +
|
113 | 119 | $: isComponent = typeof content === 'object';
|
114 | 120 | $: tooltipRef && show ? setTimeout(() => (visible = true), animationDelay) : (visible = false);
|
115 | 121 | </script>
|
|
120 | 126 | class="tooltip animation-{animationEffect} {position} {theme}"
|
121 | 127 | class:show={visible}
|
122 | 128 | class:arrowless={!arrow}
|
123 |
| - style="bottom: auto; right: auto; left: {coords.left}px; min-width: {minWidth}px; max-width: {maxWidth}px; text-align: {align}; top: {coords.top}px;"> |
| 129 | + style="bottom: auto; right: auto; left: {coords.left}px; min-width: {minWidth}px; max-width: {maxWidth}px; text-align: {align}; top: {coords.top}px;" |
| 130 | + > |
124 | 131 | {#if !isComponent}
|
125 | 132 | {@html content}
|
126 | 133 | {/if}
|
127 | 134 | </div>
|
128 | 135 | {/if}
|
129 | 136 |
|
| 137 | +<svelte:window on:resize={onHandleResize} /> |
| 138 | + |
130 | 139 | <style>
|
131 | 140 | /*--------------------------*
|
132 | 141 | * Theme Variables
|
|
210 | 219 | .tooltip.bottom {
|
211 | 220 | bottom: 0;
|
212 | 221 | left: 50%;
|
213 |
| - transform: translate( |
214 |
| - calc(-50% + var(--tooltip-offset-x)), |
215 |
| - calc(100% + var(--tooltip-offset-y)) |
216 |
| - ); |
| 222 | + transform: translate(calc(-50% + var(--tooltip-offset-x)), calc(100% + var(--tooltip-offset-y))); |
217 | 223 | }
|
218 | 224 |
|
219 | 225 | .tooltip.bottom:after {
|
|
226 | 232 | .tooltip.top {
|
227 | 233 | left: 50%;
|
228 | 234 | top: 0;
|
229 |
| - transform: translate( |
230 |
| - calc(-50% + var(--tooltip-offset-x)), |
231 |
| - calc(-100% - var(--tooltip-offset-y)) |
232 |
| - ); |
| 235 | + transform: translate(calc(-50% + var(--tooltip-offset-x)), calc(-100% - var(--tooltip-offset-y))); |
233 | 236 | }
|
234 | 237 |
|
235 | 238 | .tooltip.top:after {
|
|
242 | 245 | .tooltip.left {
|
243 | 246 | left: 0;
|
244 | 247 | top: 50%;
|
245 |
| - transform: translate( |
246 |
| - calc(-100% - var(--tooltip-offset-x)), |
247 |
| - calc(-50% - var(--tooltip-offset-y)) |
248 |
| - ); |
| 248 | + transform: translate(calc(-100% - var(--tooltip-offset-x)), calc(-50% - var(--tooltip-offset-y))); |
249 | 249 | }
|
250 | 250 |
|
251 | 251 | .tooltip.left:after {
|
|
258 | 258 | .tooltip.right {
|
259 | 259 | right: 0;
|
260 | 260 | top: 50%;
|
261 |
| - transform: translate( |
262 |
| - calc(100% + var(--tooltip-offset-x)), |
263 |
| - calc(-50% - var(--tooltip-offset-y)) |
264 |
| - ); |
| 261 | + transform: translate(calc(100% + var(--tooltip-offset-x)), calc(-50% - var(--tooltip-offset-y))); |
265 | 262 | }
|
266 | 263 |
|
267 | 264 | .tooltip.right:after {
|
|
291 | 288 | .tooltip.top.animation-slide {
|
292 | 289 | margin-top: 10px;
|
293 | 290 | opacity: 0;
|
294 |
| - transition: opacity 0.25s ease-in-out, margin 0.25s ease-in-out; |
| 291 | + transition: |
| 292 | + opacity 0.25s ease-in-out, |
| 293 | + margin 0.25s ease-in-out; |
295 | 294 | }
|
296 | 295 |
|
297 | 296 | .tooltip.top.animation-slide.show {
|
|
302 | 301 | .tooltip.bottom.animation-slide {
|
303 | 302 | margin-bottom: 20px;
|
304 | 303 | opacity: 0;
|
305 |
| - transition: opacity 0.25s ease-in-out, margin 0.25s ease-in-out; |
| 304 | + transition: |
| 305 | + opacity 0.25s ease-in-out, |
| 306 | + margin 0.25s ease-in-out; |
306 | 307 | }
|
307 | 308 |
|
308 | 309 | .tooltip.bottom.animation-slide.show {
|
|
313 | 314 | .tooltip.right.animation-slide {
|
314 | 315 | margin-right: 20px;
|
315 | 316 | opacity: 0;
|
316 |
| - transition: opacity 0.25s ease-in-out, margin 0.25s ease-in-out; |
| 317 | + transition: |
| 318 | + opacity 0.25s ease-in-out, |
| 319 | + margin 0.25s ease-in-out; |
317 | 320 | }
|
318 | 321 |
|
319 | 322 | .tooltip.right.animation-slide.show {
|
|
324 | 327 | .tooltip.left.animation-slide {
|
325 | 328 | margin-left: 20px;
|
326 | 329 | opacity: 0;
|
327 |
| - transition: opacity 0.25s ease-in-out, margin 0.25s ease-in-out; |
| 330 | + transition: |
| 331 | + opacity 0.25s ease-in-out, |
| 332 | + margin 0.25s ease-in-out; |
328 | 333 | }
|
329 | 334 |
|
330 | 335 | .tooltip.left.animation-slide.show {
|
|
337 | 342 | .tooltip.left.animation-puff {
|
338 | 343 | filter: blur(2px);
|
339 | 344 | opacity: 0;
|
340 |
| - transform: translate( |
341 |
| - calc(-100% - var(--tooltip-offset-x)), |
342 |
| - calc(-50% - var(--tooltip-offset-y)) |
343 |
| - ) scale(2, 2); |
| 345 | + transform: translate(calc(-100% - var(--tooltip-offset-x)), calc(-50% - var(--tooltip-offset-y))) scale(2, 2); |
344 | 346 | transform-origin: 50% 50%;
|
345 |
| - transition: opacity 0.25s ease-in-out, filter 0.25s ease-in-out, transform 0.25s ease-in-out; |
| 347 | + transition: |
| 348 | + opacity 0.25s ease-in-out, |
| 349 | + filter 0.25s ease-in-out, |
| 350 | + transform 0.25s ease-in-out; |
346 | 351 | }
|
347 | 352 |
|
348 | 353 | .tooltip.left.animation-puff.show {
|
349 | 354 | filter: blur(0);
|
350 | 355 | opacity: 1;
|
351 |
| - transform: translate( |
352 |
| - calc(-100% - var(--tooltip-offset-x)), |
353 |
| - calc(-50% - var(--tooltip-offset-y)) |
354 |
| - ) scale(1, 1); |
| 356 | + transform: translate(calc(-100% - var(--tooltip-offset-x)), calc(-50% - var(--tooltip-offset-y))) scale(1, 1); |
355 | 357 | }
|
356 | 358 |
|
357 | 359 | .tooltip.right.animation-puff {
|
358 | 360 | filter: blur(2px);
|
359 | 361 | opacity: 0;
|
360 |
| - transform: translate( |
361 |
| - calc(100% + var(--tooltip-offset-x)), |
362 |
| - calc(-50% - var(--tooltip-offset-y)) |
363 |
| - ) scale(2, 2); |
| 362 | + transform: translate(calc(100% + var(--tooltip-offset-x)), calc(-50% - var(--tooltip-offset-y))) scale(2, 2); |
364 | 363 | transform-origin: 50% 50%;
|
365 |
| - transition: opacity 0.25s ease-in-out, filter 0.25s ease-in-out, transform 0.25s ease-in-out; |
| 364 | + transition: |
| 365 | + opacity 0.25s ease-in-out, |
| 366 | + filter 0.25s ease-in-out, |
| 367 | + transform 0.25s ease-in-out; |
366 | 368 | }
|
367 | 369 |
|
368 | 370 | .tooltip.right.animation-puff.show {
|
369 | 371 | filter: blur(0);
|
370 | 372 | opacity: 1;
|
371 |
| - transform: translate( |
372 |
| - calc(100% + var(--tooltip-offset-x)), |
373 |
| - calc(-50% - var(--tooltip-offset-y)) |
374 |
| - ) scale(1, 1); |
| 373 | + transform: translate(calc(100% + var(--tooltip-offset-x)), calc(-50% - var(--tooltip-offset-y))) scale(1, 1); |
375 | 374 | }
|
376 | 375 |
|
377 | 376 | .tooltip.top.animation-puff {
|
378 | 377 | filter: blur(2px);
|
379 | 378 | opacity: 0;
|
380 |
| - transform: translate( |
381 |
| - calc(-50% + var(--tooltip-offset-x)), |
382 |
| - calc(-100% - var(--tooltip-offset-y)) |
383 |
| - ) scale(2, 2); |
| 379 | + transform: translate(calc(-50% + var(--tooltip-offset-x)), calc(-100% - var(--tooltip-offset-y))) scale(2, 2); |
384 | 380 | transform-origin: 50% 50%;
|
385 |
| - transition: opacity 0.25s ease-in-out, filter 0.25s ease-in-out, transform 0.25s ease-in-out; |
| 381 | + transition: |
| 382 | + opacity 0.25s ease-in-out, |
| 383 | + filter 0.25s ease-in-out, |
| 384 | + transform 0.25s ease-in-out; |
386 | 385 | }
|
387 | 386 |
|
388 | 387 | .tooltip.top.animation-puff.show {
|
389 | 388 | filter: blur(0);
|
390 | 389 | opacity: 1;
|
391 |
| - transform: translate( |
392 |
| - calc(-50% + var(--tooltip-offset-x)), |
393 |
| - calc(-100% - var(--tooltip-offset-y)) |
394 |
| - ) scale(1, 1); |
| 390 | + transform: translate(calc(-50% + var(--tooltip-offset-x)), calc(-100% - var(--tooltip-offset-y))) scale(1, 1); |
395 | 391 | }
|
396 | 392 |
|
397 | 393 | .tooltip.bottom.animation-puff {
|
398 | 394 | filter: blur(2px);
|
399 | 395 | opacity: 0;
|
400 |
| - transform: translate( |
401 |
| - calc(-50% + var(--tooltip-offset-x)), |
402 |
| - calc(100% + var(--tooltip-offset-y)) |
403 |
| - ) scale(2, 2); |
| 396 | + transform: translate(calc(-50% + var(--tooltip-offset-x)), calc(100% + var(--tooltip-offset-y))) scale(2, 2); |
404 | 397 | transform-origin: 50% 50%;
|
405 |
| - transition: opacity 0.25s ease-in-out, filter 0.25s ease-in-out, transform 0.25s ease-in-out; |
| 398 | + transition: |
| 399 | + opacity 0.25s ease-in-out, |
| 400 | + filter 0.25s ease-in-out, |
| 401 | + transform 0.25s ease-in-out; |
406 | 402 | }
|
407 | 403 |
|
408 | 404 | .tooltip.bottom.animation-puff.show {
|
409 | 405 | filter: blur(0);
|
410 | 406 | opacity: 1;
|
411 |
| - transform: translate( |
412 |
| - calc(-50% + var(--tooltip-offset-x)), |
413 |
| - calc(100% + var(--tooltip-offset-y)) |
414 |
| - ) scale(1, 1); |
| 407 | + transform: translate(calc(-50% + var(--tooltip-offset-x)), calc(100% + var(--tooltip-offset-y))) scale(1, 1); |
415 | 408 | }
|
416 | 409 |
|
417 | 410 | /* Bounce */
|
418 | 411 |
|
419 | 412 | .tooltip.left.animation-bounce {
|
420 | 413 | opacity: 0;
|
421 |
| - transform: translate( |
422 |
| - calc(-100% - var(--tooltip-offset-x)), |
423 |
| - calc(-50% + var(--tooltip-offset-y)) |
424 |
| - ) scale(1.2, 1.2); |
| 414 | + transform: translate(calc(-100% - var(--tooltip-offset-x)), calc(-50% + var(--tooltip-offset-y))) scale(1.2, 1.2); |
425 | 415 | transform-origin: 50% 50%;
|
426 |
| - transition: opacity 0.25s ease-in-out, transform 0.25s cubic-bezier(0.5, -1, 0.5, 3); |
| 416 | + transition: |
| 417 | + opacity 0.25s ease-in-out, |
| 418 | + transform 0.25s cubic-bezier(0.5, -1, 0.5, 3); |
427 | 419 | }
|
428 | 420 |
|
429 | 421 | .tooltip.left.animation-bounce.show {
|
430 | 422 | opacity: 1;
|
431 |
| - transform: translate( |
432 |
| - calc(-100% - var(--tooltip-offset-x)), |
433 |
| - calc(-50% + var(--tooltip-offset-y)) |
434 |
| - ) scale(1, 1); |
| 423 | + transform: translate(calc(-100% - var(--tooltip-offset-x)), calc(-50% + var(--tooltip-offset-y))) scale(1, 1); |
435 | 424 | }
|
436 | 425 |
|
437 | 426 | .tooltip.right.animation-bounce {
|
438 | 427 | opacity: 0;
|
439 | 428 | transform: translate(calc(100% + var(--tooltip-offset-x)), calc(-50% + var(--tooltip-offset-y))) scale(1.2, 1.2);
|
440 | 429 | transform-origin: 50% 50%;
|
441 |
| - transition: opacity 0.25s ease-in-out, transform 0.25s cubic-bezier(0.5, -1, 0.5, 3); |
| 430 | + transition: |
| 431 | + opacity 0.25s ease-in-out, |
| 432 | + transform 0.25s cubic-bezier(0.5, -1, 0.5, 3); |
442 | 433 | }
|
443 | 434 |
|
444 | 435 | .tooltip.right.animation-bounce.show {
|
445 | 436 | opacity: 1;
|
446 |
| - transform: translate( |
447 |
| - calc(100% + var(--tooltip-offset-x)), |
448 |
| - calc(-50% + var(--tooltip-offset-y)) |
449 |
| - ) scale(1, 1); |
| 437 | + transform: translate(calc(100% + var(--tooltip-offset-x)), calc(-50% + var(--tooltip-offset-y))) scale(1, 1); |
450 | 438 | }
|
451 | 439 |
|
452 | 440 | .tooltip.top.animation-bounce {
|
453 | 441 | opacity: 0;
|
454 |
| - transform: translate( |
455 |
| - calc(-50% + var(--tooltip-offset-x)), |
456 |
| - calc(-100% - var(--tooltip-offset-y)) |
457 |
| - ) scale(1.2, 1.2); |
| 442 | + transform: translate(calc(-50% + var(--tooltip-offset-x)), calc(-100% - var(--tooltip-offset-y))) scale(1.2, 1.2); |
458 | 443 | transform-origin: 50% 50%;
|
459 |
| - transition: opacity 0.25s ease-in-out, transform 0.25s cubic-bezier(0.5, -1, 0.5, 3); |
| 444 | + transition: |
| 445 | + opacity 0.25s ease-in-out, |
| 446 | + transform 0.25s cubic-bezier(0.5, -1, 0.5, 3); |
460 | 447 | }
|
461 | 448 |
|
462 | 449 | .tooltip.top.animation-bounce.show {
|
463 | 450 | opacity: 1;
|
464 |
| - transform: translate( |
465 |
| - calc(-50% + var(--tooltip-offset-x)), |
466 |
| - calc(-100% - var(--tooltip-offset-y)) |
467 |
| - ) scale(1, 1); |
| 451 | + transform: translate(calc(-50% + var(--tooltip-offset-x)), calc(-100% - var(--tooltip-offset-y))) scale(1, 1); |
468 | 452 | }
|
469 | 453 |
|
470 | 454 | .tooltip.bottom.animation-bounce {
|
471 | 455 | opacity: 0;
|
472 |
| - transform: translate( |
473 |
| - calc(-50% + var(--tooltip-offset-x)), |
474 |
| - calc(100% + var(--tooltip-offset-y)) |
475 |
| - ) scale(1.2, 1.2); |
| 456 | + transform: translate(calc(-50% + var(--tooltip-offset-x)), calc(100% + var(--tooltip-offset-y))) scale(1.2, 1.2); |
476 | 457 | transform-origin: 50% 50%;
|
477 |
| - transition: opacity 0.25s ease-in-out, transform 0.25s cubic-bezier(0.5, -1, 0.5, 3); |
| 458 | + transition: |
| 459 | + opacity 0.25s ease-in-out, |
| 460 | + transform 0.25s cubic-bezier(0.5, -1, 0.5, 3); |
478 | 461 | }
|
479 | 462 |
|
480 | 463 | .tooltip.bottom.animation-bounce.show {
|
481 | 464 | opacity: 1;
|
482 |
| - transform: translate( |
483 |
| - calc(-50% + var(--tooltip-offset-x)), |
484 |
| - calc(100% + var(--tooltip-offset-y)) |
485 |
| - ) scale(1, 1); |
| 465 | + transform: translate(calc(-50% + var(--tooltip-offset-x)), calc(100% + var(--tooltip-offset-y))) scale(1, 1); |
486 | 466 | }
|
487 | 467 | </style>
|
0 commit comments