All Projects → derrickpelletier → React Loading Overlay

derrickpelletier / React Loading Overlay

Licence: mit
Loading overlays with fade, spinner, message support.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to React Loading Overlay

busy-load
A flexible loading-mask jQuery-plugin
Stars: ✭ 76 (-65.14%)
Mutual labels:  loader, overlay, spinner
Vue Loading Overlay
Vue.js component for full screen loading indicator 🌀
Stars: ✭ 784 (+259.63%)
Mutual labels:  loader, spinner, overlay
Whirl
CSS loading animations with minimal effort!
Stars: ✭ 774 (+255.05%)
Mutual labels:  loader, spinner
Aframe Preloader Component
A preloading bar that automatically displays while scene assets load.
Stars: ✭ 27 (-87.61%)
Mutual labels:  loader, spinner
React Native Loading Spinner Overlay
💈 React Native loading spinner overlay
Stars: ✭ 1,369 (+527.98%)
Mutual labels:  spinner, overlay
Yaspin
A lightweight terminal spinner for Python with safe pipes and redirects 🎁
Stars: ✭ 413 (+89.45%)
Mutual labels:  loader, spinner
Spinkit Objc
UIKit port of SpinKit
Stars: ✭ 743 (+240.83%)
Mutual labels:  loader, spinner
Csspin
CSS Spinners and Loaders - Modular, Customizable and Single HTML Element Code for Pure CSS Loader and Spinner
Stars: ✭ 1,019 (+367.43%)
Mutual labels:  loader, spinner
react-awesome-loaders
🚀 High quality, super responsive and completely customisable Loading Animations to insert into your website with single line of code.
Stars: ✭ 146 (-33.03%)
Mutual labels:  loader, spinner
Vue Loaders
Vue + loaders.css
Stars: ✭ 127 (-41.74%)
Mutual labels:  loader, spinner
Swiftloader
A simple and beautiful activity indicator written in Swift
Stars: ✭ 116 (-46.79%)
Mutual labels:  loader, spinner
Jtmaterialspinner
An iOS material design spinner view
Stars: ✭ 127 (-41.74%)
Mutual labels:  loader, spinner
React Loader Spinner
Collection set of react-spinner for async operation
Stars: ✭ 378 (+73.39%)
Mutual labels:  loader, spinner
Ngx Ui Loader
Multiple Loaders / spinners and Progress bar for Angular 5, 6, 7 and 8+
Stars: ✭ 368 (+68.81%)
Mutual labels:  loader, spinner
Ng Http Loader
🍡 Smart angular HTTP interceptor - Intercepts automagically HTTP requests and shows a spinkit spinner / loader / progress bar
Stars: ✭ 327 (+50%)
Mutual labels:  loader, spinner
Css Spinner
small, elegant pure css spinner for ajax or loading animation
Stars: ✭ 1,013 (+364.68%)
Mutual labels:  loader, spinner
Vue Full Loading
Full overlay loading with spinner for Vue
Stars: ✭ 148 (-32.11%)
Mutual labels:  spinner, overlay
material-circular-loader
Material Circular Loader in SCSS like a boss. Demo: http://codepen.io/YuRen/details/KdKKax
Stars: ✭ 13 (-94.04%)
Mutual labels:  loader, spinner
Materialactivityindicator
Material Activity Indicator
Stars: ✭ 109 (-50%)
Mutual labels:  loader, spinner
Ng Block Ui
Block UI Loader/Spinner for Angular
Stars: ✭ 135 (-38.07%)
Mutual labels:  loader, spinner

React-Loading-Overlay

npm version minified + gzipped downloads

A customizable, simple loading overlay with spinner and transitions.



Changes in version 1.x

v1.x is a rewrite focused on flexibility. Customization is no longer driven by convenience props, but instead by a more comprehensive styles interface. The intention is to provide an interface that is a bit more tailored to composition and creating your own loader rather than just dropping an instance in place.


Quick start 🏃‍♀️

Wrap your components in it and toggle the active prop as necessary.

import LoadingOverlay from 'react-loading-overlay';

<LoadingOverlay
  active={isActive}
  spinner
  text='Loading your content...'
  >
  <p>Some content or children or something.</p>
</LoadingOverlay>

Props 🛠

  • active (boolean)
    • default: true - whether the loader is visible.
  • fadeSpeed (milliseconds)
    • default: 500 - the transition speed for fading out the overlay.
  • onClick (function)
    • default: undefined - click handler for the overlay when active.
  • className (string)
    • default: undefined - the className for the wrapping <div /> that is present whether active or not.
  • classNamePrefix (string)
    • default: _loading_overlay_ - the prefix for all classNames on the generated elements. see Styling for more info.
  • spinner (boolean OR node)
    • default: false - renders the default spinner when true (and when the loader is active). Otherwise you can provide any valid react node to use your own spinner.
  • text (node)
    • default: undefined - the text or react node to render in the loader overlay when active.
  • styles (object)
    • default: undefined - see Styling for more info.

Custom Spinner ♻️

Adding a custom spinner is super easy, here's an example:

Acquire the spinner you want to use. Doesn't matter where you get it, as long as you're rendering a valid React node. It can be a custom svg in your codebase if you want. For this example let's use react-spinners.

npm install react-spinners

Then simply provide it to the spinner prop for your loader.

import LoadingOverlay from 'react-loading-overlay'
import BounceLoader from 'react-spinners/BounceLoader'

export default function MyLoader({ active, children }) {
  return (
    <LoadingOverlay
      active={active}
      spinner={<BounceLoader />}
    >
      {children}
    </LoadingOverlay>
  )
}

Custom styling 💅

Previous versions were difficult to customize because of limited configuration props. This iteration uses a form of styling heavily inspired by Style configuration was inspired by react-select. Internally using emotion to style elements and providing a styles interface to either extend the base styling or completely overwrite it. Additionally, a classNamePrefix prop is available to customize the classNames used on each element, allowing you to define your own styles with your own regular css setup.

Keep reading for details on each option.

Styles with emotion 👩‍🎤

The styles prop accepts an object where each key represents one of the following elements:

  • wrapper - main wrapping element, always present.
  • overlay - the overlay positioned over top of the children.
  • content - element inside the overlay containing the spinner and text.
  • spinner - default spinner element.

Each value must be an object or a function (where the first parameter is the base default styles) that returns an object. In either case, the resulting object will be applied as the final set of styles via emotion.css. See examples below.

  • Custom overlay background (extending base styles)

    export default function MyLoader({ active, children }) {
      return (
        <LoadingOverlay
          active={active}
          styles={{
            overlay: (base) => ({
              ...base,
              background: 'rgba(255, 0, 0, 0.5)'
            })
          }}
        >
          {children}
        </LoadingOverlay>
      )
    }
    
  • Custom spinner size + color (extending base styles)

    export default function MyLoader({ active, children }) {
      return (
        <LoadingOverlay
          active={active}
          styles={{
            spinner: (base) => ({
              ...base,
              width: '100px',
              '& svg circle': {
                stroke: 'rgba(255, 0, 0, 0.5)'
              }
            })
          }}
        >
          {children}
        </LoadingOverlay>
      )
    }
    
  • Custom wrapper (non-extended)

    export default function MyLoader({ active, children }) {
      return (
        <LoadingOverlay
          active={active}
          styles={{
            wrapper: {
              width: '400px',
              height: '400px',
              overflow: active ? 'hidden' : 'scroll'
            }
          }}
        >
          {children}
        </LoadingOverlay>
      )
    }
    

Styles with css

Every element has a classname you can target via your own css configuration.

  • _loading_overlay_wrapper
  • _loading_overlay_overlay
  • _loading_overlay_content
  • _loading_overlay_spinner

You can also specify your own classNamePrefix if you wish. For example, if using: classNamePrefix="MyLoader_":

  • MyLoader_wrapper
  • MyLoader_overlay
  • MyLoader_content
  • MyLoader_spinner

The base styles will still be applied, but you could negate all of these using the styles prop:

  • Remove all default styles

    export default function MyLoader({ active, children }) {
      return (
        <LoadingOverlay
          active={active}
          styles={{
            wrapper: {},
            overlay: {},
            content: {},
            spinner: {}
          }}
          classNamePrefix='MyLoader_'
        >
          {children}
        </LoadingOverlay>
      )
    }
    

Styles with styled-components 💅

You can style the loader using styled-component as you might expect.

Simply include the nested elements in your style definition:

  • styled-components example

    import styled from 'styled-components'
    
    const StyledLoader = styled(LoadingOverlay)`
      width: 250px;
      height: 400px;
      overflow: scroll;
      .MyLoader_overlay {
        background: rgba(255, 0, 0, 0.5);
      }
      &.MyLoader_wrapper--active {
        overflow: hidden;
      }
    `
    
    export default function MyLoader({ active, children }) {
      return (
        <StyledLoader
          active={active}
          classNamePrefix='MyLoader_'
        >
          {children}
        </StyledLoader>
      )
    }
    
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].