Loading Indicator
The Hyvä theme comes with an animated full page loader that can be used with custom Alpine.js components.
At the time of writing, the loader is only used on the cart page.
To use it, two steps are required.
1. Render the required HTML in the component
First, the template Hyva_Theme::ui/loading.phtml
must be rendered within your component.
This is most easily done by adding a child block in layout XML:
<block name="my-component" template="My_Module::my-template.phtml">
<block name="loading" template="Hyva_Theme::ui/loading.phtml"/>
</block>
The child block must be rendered within the Alpine.js component:
2. Set the isLoading
property on your Alpine.js component
Next, the Alpine.js component needs a property isLoading
.
Whenever the property is set to true
, the loader will be visible.
Example
<script>
'use strict';
function initMyComponent() {
return {
isLoading: true,
extractSectionData(cartData) {
// Do something with the data
// When ready, hide the loader
this.isLoading = false;
}
}
}
</script>
<section x-data="initMyComponent()"
@private-content-loaded.window="extractSectionData($event.detail.data)"
>
<?= $block->getChildHtml('loading') ?>
<template x-if="!isLoading">
<div> ... render the component content ...</div>
</template>
</section>