3.0.0 • Published 6 years ago

react-baron v3.0.0

Weekly downloads
372
License
ISC
Repository
github
Last release
6 years ago

React-baron

  1. Native scroll mechanic
  2. No extra css (css-modules) by default
  3. Flexible configuration:
    1. vertical, horizontal and bidirectional scroll;
    2. nested scrollers;
    3. flexbox;
    4. different width/height modes.
  4. Full css customization: no inline styles, change css and/or classNames as you want
  5. Auto show/hide/resize/update
  6. Isomorphic (server side rendering support out of the box)
  7. Wide range of browsers support (ie10+, Safari5+, Android4+, Opera11+)
  8. 100% code coverage
  9. 5.9 kB (gzip)

Baron demo

How to use

npm i react-baron --save

Default way

import Baron from 'react-baron'
// or Baron = require('react-baron')

...
<Baron>
  ...Scrollable content here...
</Baron>

Note: you need configured loaders: babel-loader and css-modules in your application.

If you have any problems this way, follow manual way:

Manual way

  1. Import from custom path:
import Baron from 'react-baron/dist/es5'
// or Baron = require('react-baron/dist/es5')

...
<Baron>
  ...Scrollable content here...
</Baron>
  1. Add css from react-baron/src/styles.css (via postcss-global-import or something else):
.clipper {
  position: relative;
  overflow: hidden;
  height: 100%;
}
.scroller {
  overflow: auto;
  height: 100%;
}
.scroller::-webkit-scrollbar {
  width: 0;
  height: 0;
}

.track {
  display: none;
  position: absolute;
  top: 2px;
  right: 2px;
  bottom: 2px;
  width: 0;
}
.track._h {
  top: auto;
  width: auto;
  height: 0;
  left: 2px;
}
.baron > .track {
  display: block;
}
.bar {
  position: absolute;
  right: 0;
  width: 6px;
  border-radius: 3px;
  background: #ccc;
}
.bar._h {
  bottom: 0;
  right: auto;
  width: auto;
  height: 6px;
}

Note: you can change any classNames: just pass them as props to Baron (see below).

API

All props are optional. You can see default props next to =:

props.params = {defaultParams} // Object that will be passed to baron as `params` (see baron API https://github.com/Diokuz/baron)
props.clipperCls = "clipper"   // className for clipper/root dom node
props.scrollerCls = "scroller" // className for scroller dom node
props.trackCls = "track"       // className for track dom node
props.barCls = "bar"           // className for bar dom node

// Note, that defaultParams is not actually a default prop, it is a defaults for `props.params` object.
defaultParams = {
  barOnCls: 'baron',
  direction: 'v'
}

Plus, from within your component you have the following methods:

// Define ref
<Baron ref={(r) => this.baronRef = r}>

// Then you have some ReactBaron methods

// Scroll as far as possible
this.baronRef.scrollToLast()

// Get DOM-node scroller
this.baronRef.getScroller();

// Get DOM-node clipper
this.baronRef.getClipper();

// onScroll handler
onScroll: PropTypes.func;

Browsers support

8+ ✔3.6+ ✔10+ ✔11.5+ ✔5.1+ ✔4+ ✔

Alternatives

react-custom-scrollbars

3.0.0

6 years ago

2.0.0

6 years ago

1.0.0

7 years ago

0.8.0

7 years ago

0.7.0

8 years ago

0.6.4

8 years ago

0.6.3

8 years ago

0.6.2

8 years ago

0.6.1

8 years ago

0.6.0

8 years ago

0.5.6

8 years ago

0.5.5

8 years ago

0.5.4

8 years ago

0.5.3

8 years ago

0.5.2

8 years ago

0.5.1

8 years ago

0.5.0

8 years ago

0.4.0

8 years ago

0.3.0

8 years ago

0.2.6

8 years ago

0.2.5

8 years ago

0.2.4

8 years ago

0.2.3

8 years ago

0.2.2

8 years ago

0.2.0

8 years ago

0.1.0

8 years ago