@exadel/esl
Version:
Exadel Smart Library (ESL) is the lightweight custom elements library that provide a set of super-flexible components
65 lines (49 loc) • 2.44 kB
Markdown
# ESL Carousel Wheel Attribute
<a name="intro"></a>
The `esl-carousel-wheel` is a custom attribute (mixin) for `ESLCarousel` that provides wheel based navigation for the carousel.
It is a carousel plugin, so it should be added directly to the `esl-carousel` element.
Using `esl-carousel-wheel` plugin you can handle wheel events to navigate the carousel in different ways.
## Configuration
As the `esl-carousel-wheel` is a plugin, it utilizes the ESLCarousel's plugin configuration system.
That means the only source of configuration is the `esl-carousel-wheel` attribute value.
It supports ESLMedia query syntax to provide different configurations for different media conditions (and it could be declared with a tuple syntax according to `media` attribute).
The configuration properties of the `esl-carousel-wheel` are the following:
### `type` (primary property, could be declared as the only value in the attribute)
Declares the type of navigation to execute on the wheel event. Could be one of the following:
- `slide` - moves the carousel by a slide, based on long(inert) wheel interaction (default)
- `group` - moves the carousel by a group, based on long(inert) wheel interaction
- `move` - moves the carousel by the wheel delta amount (note: produces free state navigation)
- `none` - disables wheel navigation
### `direction` (optional)
Restricts wheel direction.
Values:
- `auto` - depends on the carousel orientation (default)
- `x` - horizontal only
- `y` - vertical only
### `ignore` (optional)
The selector string to ignore elements for the wheel event. Default is `[contenteditable]`.
### `preventDefault` (optional)
Prevent default wheel event behavior when the event has been handled. Default is `true`.
## Usage Examples
```html
<!-- Basic wheel navigation by slide -->
<esl-carousel esl-carousel-wheel>
<!-- carousel content -->
</esl-carousel>
<!-- Navigate by group -->
<esl-carousel esl-carousel-wheel="group">
<!-- carousel content -->
</esl-carousel>
<!-- Move by wheel delta -->
<esl-carousel esl-carousel-wheel="move">
<!-- carousel content -->
</esl-carousel>
<!-- Restricts wheel navigation for desktop only -->
<esl-carousel esl-carousel-wheel="slide | @desktop => none">
<!-- carousel content -->
</esl-carousel>
<!-- Custom configuration -->
<esl-carousel esl-carousel-wheel="{type: 'slide', ignore: '[contenteditable], .no-wheel'}">
<!-- carousel content -->
</esl-carousel>
```