Delightful React Animations Snippets. Super Light-Weight
npm install myt-react-snippets



npm i myt-react-snippets
`
or
`
yarn add myt-react-snippets
`
How to use
import to your project
`js
import { Animation, Transition, useScrollPosition, TransitionGroup } from 'myt-react-snippets'
`
Animation Usage
Animation is use when the className is animate by css property animation and keyframe.
It can even use animate.css for cool animations.

`css
/css/
.fade-in {
animation: fade-in 1s ease-in;
}
.fade-out {
animation: fade-out 1s ease-out;
}
@keyframes fade-out {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
@keyframes fade-in {
0% {
opacity: 0;
}
100%{
opacity: 1;
}
}
`
`js
const [showMessage, setShowMessage] = React.useState(false);
const [showButton, setShowButton] = React.useState(true);
const clickHandler = e => {
setShowMessage(!showMessage);
};
return (
<>
{showButton && (
)}
in={showMessage}
className="fade"
onEnter={() => setShowButton(false)}
onExited={() => setShowButton(true)}
>
Hello There
>
);
`
Transition Usage
Transition is use when the className is animated by css property transition.

`css
/css/
.fade-in {
opacity: 1;
transition: opacity 1s ease-in
}
.fade-out {
opacity: 0;
transition: opacity 1s ease-out;
}
`
`js
const [showMessage, setShowMessage] = React.useState(false);
const [showButton, setShowButton] = React.useState(true);
const clickHandler = e => {
setShowMessage(!showMessage);
};
return (
<>
{showButton && (
)}
in={showMessage}
className="fade"
onEnter={() => setShowButton(false)}
onExited={() => setShowButton(true)}
>
Hello There
>
);
`
TransitionGroup Usage
TransitionGroup is a managing container tool for Transition when items is mounting and unmounting dynamically.

`js
const [items, setItem] = React.useState([
{ id: ++unique, text: "list-1" },
{ id: ++unique, text: "list-2" },
{ id: ++unique, text: "list-3" }
]);
return (
<>
{items.map(item => (
type="button"
onClick={e =>
setItem(state => state.filter(it => it.id !== item.id))
}
>
×
{ ${item.text}}
))}
className="btn"
onClick={() =>
setItem(prev => [...prev, { id: ++unique, text: document.getElementById('todo').value ||
list-${unique} }])
}
>
Add List
>
);
`
Animation and Transition Property
Animation is use when the className is animate by css property animation and keyframe.
Transition is use when the className is animated by css property transition.
The datatypes with "*" means it is required.
|PROPERTY |DATATYPES |DEFAULT |DESCRIPTION|
|-------------|---------------|-------------|-------------|
| in | boolean* | | it indicates whether the children will enter or exit |
| children | element\|component * | | it is the element you want to animate. to make this work in components, it is required that the component has a property assignable to className for toggling animation and if stayMountedWhenExited is true it required assignable property style to use display |
| className | string | | it is the class name that will be assigned to the children component or element|
| timing | number\|millsecond| 1000 | it is the timing of the animation will be transitioned |
| suffix | {
enter: string,
exit: string
} | {
enter: '-in',
exit: '-out'
} | it is the suffix for className. basically if the className assigned is fade then when the component or element entering in. it will assign a className fade-in in the children, same way in exit. and for additional idea. suffix can be use when the enter and exit className are not uniformed ex. fade-in and slide-out. To make it happen just don't assign anything in className and assign the class names in suffix ex. { enter:"fade-in", exit:"slide-out" } |
| stayMountedWhenExited | boolean | false | it is determined whether the component or element will stay mounted or unmounted from DOM when animation is exited. if it is true it will use display block and none from entering and exiting of the element|
| allowRef | boolean | false | if true it will pass the animated/children node element on any event below, if the animated/children is component make sure it is React.forwardRef component. so it can get the node|
| onEnter | function | | it is invoke when the animation is started to enter |
| onEntering | function | | it is invoke when the animation is entering |
| onEntered | function | | it is invoke when the animation is fully entered |
| onExit | function | | it is invoke when the animation is started to exit |
| onExiting | function | | it is invoke when the animation is exiting |
| onExited | function | | it is invoke when the animation is fully exited |
| onMounted | function | | it is invoke when the component is mounted |
useScrollPosition Usage
It is use to determine the scroll position specially when spying elements.

`js
function Callback({ current, previous}, { isScrollDown, isScrollUp, isInitial, main, screen, defaultSpy}) {
// make your own algorithm using the provided
...
}
`
or use defaultSpy for "ready to use" algorithm
`js
function Callback(positions, {defaultSpy, ...provided} ) {
const initial = {
target: document.getElementById("target"), // or you can use hooks like React.useRef() to get the element
extra_top: 100, // the added extra_top to enter the target scrolltop early
onEntered: () => {
...Do something when entered the target scroll top
},
onExited: () => {
...Do something when exited the target scroll top
}
}
defaultSpy(initial, positions, provided)
}
`
`js
useScrollPossition(Callback, scrolled)
`
useScrollPossition Parameters
|PROPERTY |DATATYPES |DEFAULT |DESCRIPTION|
|-------------|---------------|-------------|-------------|
| Callback | function | | it is the current position of the scroll top |
| scrolled | element\|string| window | it is the element to be assigned onscroll, you can assign css styled selector ex. #section-scroll`|