@aurodesignsystem-dev/auro-slideshow
v0.0.0-pr68.0
Published
auro-slideshow HTML custom element
Readme
Slideshow
<auro-slideshow> is an HTML custom element for the purpose of displaying a sequence of slides, which can automatically advance through the content or be manually controlled by the user.
The <auro-slideshow> element is a wrapper element. All slides are slotted content and must be direct children of the element. Slides must have assigned width and height properties to display properly.
<auro-slideshow> is a fully customizable element and does not come with any features turned on by default. The features of <auro-slideshow> are turned on by including the proper attributes on the element.
Note: If all the slides can fit on the screen at once, the slideshow will not activate.
Properties usage
autoplay and autoScroll are mutually exclusive properties and should not be used together on the same component instance.
Both navigation and pagination can be used together, but at least one must be used to give users a clear way to control the slides manually.
Mobile behavior
On mobile devices, autoScroll and navigation controls are automatically disabled. Users can navigate the slideshow by swiping left or right.
Use Cases
The <auro-slideshow> element should be used in situations where:
- A series of images or content needs to be displayed in a space-saving way
- Autoplaying or autoscrolling functionality is needed
- A current slide indicator is required
Install
$ npm i @aurodesignsystem/auro-slideshowDefine Dependency in Project
Defining the dependency within each project that is using the <auro-slideshow> component.
import "@aurodesignsystem/auro-slideshow";Use CDN
In cases where the project is not able to process JS assets, there are pre-processed assets available for use. Legacy browsers such as IE11 are no longer supported.
<script type="module" src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-slideshow@latest/+esm"></script>Basic Example
<auro-slideshow>
<div style="height: 480px">
<img style="object-fit: cover;" src="https://picsum.photos/1000/480?random=1" alt="Random image 1">
</div>
<div style="height: 480px">
<img style="object-fit: cover;" src="https://picsum.photos/1000/480?random=2" alt="Random image 2">
</div>
<div style="height: 480px">
<img style="object-fit: cover;" src="https://picsum.photos/1000/480?random=3" alt="Random image 3">
</div>
<div style="height: 480px">
<img style="object-fit: cover;" src="https://picsum.photos/1000/480?random=4" alt="Random image 4">
</div>
<div style="height: 480px">
<img style="object-fit: cover;" src="https://picsum.photos/1000/480?random=5" alt="Random image 5">
</div>
</auro-slideshow>Custom Component Registration for Version Management
There are two key parts to every Auro component: the class and the custom element definition. The class defines the component’s behavior, while the custom element registers it under a specific name so it can be used in HTML.
When you install the component as described on the Install page, the class is imported automatically, and the component is registered globally for you.
However, if you need to load multiple versions of the same component on a single page (for example, when two projects depend on different versions), you can manually register the class under a custom element name to avoid conflicts.
You can do this by importing only the component class and using the register(name) method with a unique name:
// Import the class only
import { AuroSlideshow } from '@aurodesignsystem/auro-slideshow/class';
// Register with a custom name if desired
AuroSlideshow.register('custom-slideshow');This will create a new custom element <custom-slideshow> that behaves exactly like <auro-slideshow>, allowing both to coexist on the same page without interfering with each other.
<custom-slideshow navigation>
<div style="width: 400px; border: 2px solid #000; display: flex; justify-content: center;">
<p>Slide 1</p>
</div>
<div style="width: 400px; border: 2px solid #000; display: flex; justify-content: center;">
<p>Slide 2</p>
</div>
<div style="width: 400px; border: 2px solid #000; display: flex; justify-content: center;">
<p>Slide 3</p>
</div>
</custom-slideshow>