Files
livewire-material/tests/Feature/Components/RichTooltipTest.php
T
Andreas Reinhold / reiniandClaude Opus 5 648ad8efaf
tests / lint (push) Successful in 1m3s
tests / feature (8.4) (push) Failing after 1m5s
tests / feature (8.5) (push) Failing after 1m4s
tests / browser (chrome, chromium) (push) Failing after 1m5s
tests / browser (firefox, firefox) (push) Failing after 1m1s
tests / browser (safari, webkit) (push) Failing after 1m1s
Add the snackbar, badges, rich tooltips, alerts, stats and empty states
<x-toast> hosts the snackbar queue for the Toasts concern and
window.materialToast(), one at a time, paused on hover and focus, with
an optional action; it listens from the moment its script loads, so a
toast dispatched before Alpine starts is shown rather than lost.
<x-badge> is M3's dot and count, plus a tonal or outlined status label;
<x-rich-tooltip> is transient or persistent; <x-alert>, <x-stat> and
<x-empty-state> are built from M3's parts.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V9NnLxnPp8vaaurb3Z1MFy
2026-09-13 06:59:40 +02:00

31 lines
1.2 KiB
PHP

<?php
it('wraps its trigger with a surface bubble anchored to it', function () {
$html = (string) $this->blade(<<<'BLADE'
<x-rich-tooltip title="Expiry" text="Recipients lose access after this time.">
<button>?</button>
</x-rich-tooltip>
BLADE);
preg_match('/anchor-name: (--material-rich-tooltip-[a-z0-9]+)/', $html, $anchor);
expect($anchor)->not->toBeEmpty()
->and($html)
->toContain('<button>?</button>')
->toContain('x-data="materialRichTooltip(false)"')
->toContain('popover="manual"')
->toContain('role="tooltip"')
->toContain("position-anchor: {$anchor[1]}")
->toContain('rounded-corner-md bg-surface-container')
->toContain('type-title-sm text-on-surface-variant">Expiry')
->toContain('Recipients lose access after this time.');
});
it('opens on press and stays when persistent', function () {
expect((string) $this->blade('<x-rich-tooltip text="Details" persistent><button>i</button><x-slot:actions><button>More</button></x-slot:actions></x-rich-tooltip>'))
->toContain('x-data="materialRichTooltip(true)"')
->toContain('popover="auto"')
->toContain('role="dialog"')
->toContain('<button>More</button>');
});