Package Exports
- @proyecto26/animatable-component
- @proyecto26/animatable-component/loader
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@proyecto26/animatable-component) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Animatable Component
Web Component built with Stencil.js
to use Web Animations API in a declarative way.
<animatable-component
autoPlay
easing='ease-in-out'
duration={800}
delay={300}
keyFrames={[
{
opacity: '0',
transform: 'rotate(0deg)'
},
{
opacity: '1',
transform: 'rotate(360deg)'
}
]}
onFinish={() => alert('Eureka!')}
>
<h1>Hello World</h1>
</animatable-component>
To animate things you can use the createAnimatableComponent
utility:
const SendMessageButton = (props) =>(
<ion-fab-button {...props}>
<ion-icon name='send' />
</ion-fab-button>
)
const AnimatableSendMessageButton = createAnimatableComponent(SendMessageButton)
const keyFramesSendMessage: Keyframe[] = [
{
opacity: '0',
transform: 'rotate(0deg)'
},
{
opacity: '1',
transform: 'rotate(360deg)'
}
]
const optionsSendMessage: KeyframeAnimationOptions = {
duration: 500,
easing: 'ease-in-out'
}
...
render() {
return (
<AnimatableSendMessageButton
keyFrames={keyFramesSendMessage}
options={optionsSendMessage}
onClick={() => alert('Eureka!')}
/>
)
}
...
Properties
Property | Attribute | Description | Type | Default |
---|---|---|---|---|
animateId |
animate-id |
A DOMString with which to reference the animation. | string |
undefined |
autoPlay |
auto-play |
Start the animation when the component is mounted. | boolean |
true |
composite |
composite |
Determines how values are combined between this animation and other, separate animations that do not specify their own specific composite operation. Defaults to replace . |
"accumulate" | "add" | "replace" |
undefined |
currentTime |
current-time |
Sets the current time value of the animation in milliseconds, whether running or paused. | number |
undefined |
delay |
delay |
The number of milliseconds to delay the start of the animation. Defaults to 0. | number |
undefined |
direction |
direction |
Direction of the animation. | "alternate" | "alternate-reverse" | "normal" | "reverse" |
undefined |
duration |
duration |
The number of milliseconds each iteration of the animation takes to complete. Defaults to 0. | number |
undefined |
easing |
easing |
The rate of the animation's change over time. | string |
undefined |
endDelay |
end-delay |
The number of milliseconds to delay after the end of an animation. | number |
undefined |
fill |
fill |
Dictates whether the animation's effects should be reflected by the element(s) prior to playing ("backwards"), retained after the animation has completed playing ("forwards"), or both. Defaults to "none". | "auto" | "backwards" | "both" | "forwards" | "none" |
undefined |
iterationComposite |
iteration-composite |
Determines how values build from iteration to iteration in this animation. | "accumulate" | "replace" |
undefined |
iterationStart |
iteration-start |
Describes at what point in the iteration the animation should start. | number |
undefined |
iterations |
iterations |
The number of times the animation should repeat. Defaults to 1 , and can also take a value of Infinity to make it repeat for as long as the element exists. |
number |
undefined |
keyFrames |
-- | Keyframes of the animation. | Keyframe[] |
undefined |
options |
-- | Default options of the animation. | KeyframeAnimationOptions |
undefined |
playbackRate |
playback-rate |
Sets the playback rate of the animation. | number |
undefined |
startTime |
start-time |
Sets the scheduled time when an animation's playback should begin. | number |
undefined |
Events
Event | Description | Type |
---|---|---|
cancel |
This event is sent when the animation is cancelled. | CustomEvent<HTMLElement> |
finish |
This event is sent when the animation finishes playing. | CustomEvent<HTMLElement> |
Methods
cancel() => Promise<void>
Clears all KeyframeEffects
caused by this animation and aborts its playback.
Returns
Type: Promise<void>
finish() => Promise<void>
Sets the current playback time to the end of the animation corresponding to the current playback direction.
Returns
Type: Promise<void>
getCurrentTime() => Promise<number>
Returns the current time value of the animation in milliseconds, whether running or paused.
Returns
Type: Promise<number>
getPending() => Promise<boolean>
Indicates whether the animation is currently waiting for an asynchronous operation such as initiating playback or pausing a running animation.
Returns
Type: Promise<boolean>
getPlayState() => Promise<AnimationPlayState>
Returns an enumerated value describing the playback state of an animation.
Returns
Type: Promise<AnimationPlayState>
getPlaybackRate() => Promise<number>
Returns the playback rate of the animation.
Returns
Type: Promise<number>
getStartTime() => Promise<number>
Returns the scheduled time when an animation's playback should begin.
Returns
Type: Promise<number>
pause() => Promise<void>
Suspends playback of the animation.
Returns
Type: Promise<void>
play() => Promise<void>
Starts or resumes playing of an animation.
Returns
Type: Promise<void>
reverse() => Promise<void>
Reverses the playback direction, meaning the animation ends at its beginning.
Returns
Type: Promise<void>
Using this component
Script tag
- Put a script tag similar to this
<script src='https://unpkg.com/animatable-component@0.0.1/dist/animatable-component.js'></script>
in the head of your index.html - Then you can use the element anywhere in your template, JSX, html etc
Node Modules
- Run
npm install @proyecto26/animatable-component --save
- Put a script tag similar to this
<script src='node_modules/@proyecto26/animatable-component/dist/animatable-component.js'></script>
in the head of your index.html - Then you can use the element anywhere in your template, JSX, html etc
In a stencil-starter app
- Run
npm install @proyecto26/animatable-component --save
- Add an import to the npm packages
import @proyecto26/animatable-component;
- Then you can use the element anywhere in your template, JSX, html etc
Supporting 🍻
I believe in Unicorns 🦄 Support me, if you do too.
Security contact information 🚨
To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure.
Happy coding 💯
Made with ❤️