UNPKG

passbolt-styleguide

Version:

Passbolt styleguide contains common styling assets used by the different sites, plugin, etc.

162 lines (153 loc) 12.2 kB
import React from "react"; import {Switch, withRouter} from "react-router-dom"; import {CSSTransition, TransitionGroup} from "react-transition-group"; import PropTypes from "prop-types"; class AnimatedSwitch extends React.Component { constructor(props) { super(props); this._previousLocationPathname = ""; this._previousTransition = ""; } getTransition(currentLocationPath) { let transition = null; // Resource view transition if (currentLocationPath.indexOf("/webAccessibleResources/quickaccess/resources/view") !== -1 && this._previousLocationPathname === "/webAccessibleResources/quickaccess.html") { transition = "slideLeft"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess.html" && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/view") !== -1) { transition = "slideRight"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess/resources/create" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/resources/generate-password") { // Resource create transition transition = "slideRight"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess/resources/create") { transition = "slideLeft"; } else if (currentLocationPath.indexOf("/webAccessibleResources/quickaccess/resources/view") !== -1 && this._previousLocationPathname === "/webAccessibleResources/quickaccess/resources/create") { transition = "slideLeft"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess/resources/generate-password" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/resources/create") { transition = "slideLeft"; } else if (this._previousLocationPathname === "/webAccessibleResources/quickaccess/resources/create") { // Whatever current location is, if the previous location was the resource create page then slide right transition = "slideRight"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess/resources/group" && this._previousLocationPathname === "/webAccessibleResources/quickaccess.html") { // Filter by group transitions transition = "slideLeft"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess.html" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/resources/group") { transition = "slideRight"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess.html" && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/group/") !== -1) { transition = "slideRight"; } else if (currentLocationPath.indexOf("/webAccessibleResources/quickaccess/resources/group/") !== -1 && this._previousLocationPathname === "/webAccessibleResources/quickaccess/resources/group") { transition = "slideLeft"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess/resources/group" && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/group/") !== -1) { transition = "slideRight"; } else if (currentLocationPath.indexOf("/webAccessibleResources/quickaccess/resources/view") !== -1 && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/group") !== -1) { transition = "slideLeft"; } else if (currentLocationPath.indexOf("/webAccessibleResources/quickaccess/resources/group/") !== -1 && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/view") !== -1) { transition = "slideRight"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess/resources/tag" && this._previousLocationPathname === "/webAccessibleResources/quickaccess.html") { // Filter by tag transitions transition = "slideLeft"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess.html" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/resources/tag") { transition = "slideRight"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess.html" && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/tag/") !== -1) { transition = "slideRight"; } else if (currentLocationPath.indexOf("/webAccessibleResources/quickaccess/resources/tag/") !== -1 && this._previousLocationPathname === "/webAccessibleResources/quickaccess/resources/tag") { transition = "slideLeft"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess/resources/tag" && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/tag/") !== -1) { transition = "slideRight"; } else if (currentLocationPath.indexOf("/webAccessibleResources/quickaccess/resources/view") !== -1 && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/tag") !== -1) { transition = "slideLeft"; } else if (currentLocationPath.indexOf("/webAccessibleResources/quickaccess/resources/tag/") !== -1 && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/view") !== -1) { transition = "slideRight"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess/more-filters" && this._previousLocationPathname === "/webAccessibleResources/quickaccess.html") { // More filters transitions transition = "slideLeft"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess.html" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/more-filters") { transition = "slideRight"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess/resources/favorite" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/more-filters") { // Filter by favorite transitions transition = "slideLeft"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess/more-filters" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/resources/favorite") { transition = "slideRight"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess.html" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/resources/favorite") { transition = "slideRight"; } else if (currentLocationPath.indexOf("/webAccessibleResources/quickaccess/resources/view") !== -1 && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/favorite") !== -1) { transition = "slideLeft"; } else if (currentLocationPath.indexOf("/webAccessibleResources/quickaccess/resources/favorite") !== -1 && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/view") !== -1) { transition = "slideRight"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess/resources/owned-by-me" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/more-filters") { // Filter by items I own transitions transition = "slideLeft"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess/more-filters" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/resources/owned-by-me") { transition = "slideRight"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess.html" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/resources/owned-by-me") { transition = "slideRight"; } else if (currentLocationPath.indexOf("/webAccessibleResources/quickaccess/resources/view") !== -1 && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/owned-by-me") !== -1) { transition = "slideLeft"; } else if (currentLocationPath.indexOf("/webAccessibleResources/quickaccess/resources/owned-by-me") !== -1 && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/view") !== -1) { transition = "slideRight"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess/resources/recently-modified" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/more-filters") { // Filter by modified transitions transition = "slideLeft"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess/more-filters" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/resources/recently-modified") { transition = "slideRight"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess.html" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/resources/recently-modified") { transition = "slideRight"; } else if (currentLocationPath.indexOf("/webAccessibleResources/quickaccess/resources/view") !== -1 && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/recently-modified") !== -1) { transition = "slideLeft"; } else if (currentLocationPath.indexOf("/webAccessibleResources/quickaccess/resources/recently-modified") !== -1 && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/view") !== -1) { transition = "slideRight"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess/resources/shared-with-me" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/more-filters") { // Filter by modified transitions transition = "slideLeft"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess/more-filters" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/resources/shared-with-me") { transition = "slideRight"; } else if (currentLocationPath === "/webAccessibleResources/quickaccess.html" && this._previousLocationPathname === "/webAccessibleResources/quickaccess/resources/shared-with-me") { transition = "slideRight"; } else if (currentLocationPath.indexOf("/webAccessibleResources/quickaccess/resources/view") !== -1 && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/shared-with-me") !== -1) { transition = "slideLeft"; } else if (currentLocationPath.indexOf("/webAccessibleResources/quickaccess/resources/shared-with-me") !== -1 && this._previousLocationPathname.indexOf("/webAccessibleResources/quickaccess/resources/view") !== -1) { transition = "slideRight"; } else { /* * The page has changed but no transition has been defined for it. * Use the default noTransition transition */ if (currentLocationPath !== this._previousLocationPathname) { transition = "slideNoTransition"; } else { /* * The transition is recalculated because of a status change. * Return the previous transition. The transition won't be played twice, and it will allow to complete it properly. */ transition = this._previousTransition; } } this._previousTransition = transition; return transition; } render() { const {children} = this.props; const currentLocationPathname = this.props.location.pathname; const transition = this.getTransition(currentLocationPathname, this._previousLocationPathname); // If no transition, the previous component should be hidden immediately. const transitionTimeout = transition !== "slideNoTransition" ? 210 : 0; this._previousLocationPathname = currentLocationPathname; return ( <TransitionGroup enter={true} exit={true}> <CSSTransition classNames={transition} key={currentLocationPathname} timeout={transitionTimeout}> <Switch location={this.props.location}>{children}</Switch> </CSSTransition> </TransitionGroup> ); } } AnimatedSwitch.propTypes = { children: PropTypes.oneOfType([ PropTypes.arrayOf(PropTypes.node), PropTypes.node ]), // Match, location and history props are injected by the withRouter decoration call. match: PropTypes.object, location: PropTypes.object, history: PropTypes.object, }; export default withRouter(AnimatedSwitch);