|
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