feat(livewire): Remove .fl-no-cache elements before caching snapshot

This commit is contained in:
Younes ENNAJI
2023-12-16 17:54:05 +01:00
parent 153cb40ad0
commit a9e4c6aead
@@ -8,6 +8,7 @@
namespace Flasher\Prime\Response\Presenter;
use Flasher\Prime\Response\Response;
use Livewire\LivewireManager;
final class HtmlPresenter implements PresenterInterface
{
@@ -29,6 +30,7 @@ final class HtmlPresenter implements PresenterInterface
$rootScript = $response->getRootScript();
$placeHolder = self::FLASHER_FLASH_BAG_PLACE_HOLDER;
$livewireListener = $this->getLivewireListenerScript();
return <<<JAVASCRIPT
<script type="text/javascript" class="flasher-js">
@@ -84,6 +86,8 @@ final class HtmlPresenter implements PresenterInterface
document.addEventListener('flasher:render', function (event) {
render(event.detail);
});
{$livewireListener}
}
if (window.hasOwnProperty('flasher') || !rootScript || document.querySelector('script[src="' + rootScript + '"]')) {
@@ -100,6 +104,27 @@ final class HtmlPresenter implements PresenterInterface
}
})();
</script>
JAVASCRIPT;
}
/**
* Generate the script for Livewire event handling.
*
* @return string
*/
private function getLivewireListenerScript()
{
if (!class_exists(LivewireManager::class)) {
return '';
}
return <<<JAVASCRIPT
document.addEventListener('livewire:navigating', function () {
var elements = document.querySelectorAll('.fl-no-cache');
for (var i = 0; i < elements.length; i++) {
elements[i].remove();
}
});
JAVASCRIPT;
}
}