1.0.15 • Published 4 years ago

@feizheng/react-visible v1.0.15

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

react-visible

React component for visible element.

version license size download

installation

npm install -S @feizheng/react-visible

update

npm update @feizheng/react-visible

properties

NameTypeRequiredDefaultDescription
classNamestringfalse-The extended className for component.
valueboolfalse-Abstract visible value.
destroyableboolfalsefalseIf element destroyed when visible to false.
rootableboolfalsefalseIf attach the visible element to document root or a container.
onChangefuncfalsenoopThe handler when visible changed, default is noop function, present or dismiss action will trigger.
onPresentfuncfalsenoopThe handler when present.
onDismissfuncfalsenoopThe handler when dismiss.

usage

  1. import css

    @import "~@feizheng/react-visible/dist/style.scss";
    
    // customize your styles:
    $react-visible-options: ()
  2. import js

    import ReactVisible, { Controller } from '@feizheng/react-visible';
    import ReactDOM from 'react-dom';
    import React from 'react';
    import './assets/style.scss';
    
    class Backdrop extends ReactVisible {
      get visibleElementView() {
        const {
          className,
          destroyable,
          rootable,
          value,
          onPresent,
          onDismiss,
          ...props
        } = this.props;
        const { hidden } = this.state;
    
        return (
          <div
            data-position="absolute"
            data-component={'backdrop'}
            hidden={hidden}
            data-visible={this.state.value}
            hidden={hidden}
            className={`webkit-sassui-backdrop ${className}`}
            onAnimationEnd={this.handleAnimationEnd}
            {...props}
          />
        );
      }
    }
    
    class App extends React.Component {
      state = {
        value: false
      };
    
      componentDidMount() {
        console.log(Controller.createInstance);
        Controller.createInstance(Backdrop, { destroyable: true }, true);
      }
    
      render() {
        return (
          <div className="app-container">
            <button
              className="button"
              onClick={(e) => {
                this.el.present();
              }}>
              Button Open
            </button>
    
            <button
              className="button"
              onClick={(e) => {
                this.el.dismiss();
              }}>
              Button Close
            </button>
            <Backdrop ref={(el) => (this.el = el)} />
    
            <Backdrop
              value={this.state.value}
              destroyable
              onChange={(e) => {
                console.log('e.target.value:', e.target.value);
                this.setState({ value: e.target.value });
              }}
            />
    
            <button
              className="button"
              onClick={(e) => {
                this.setState({ value: !this.state.value });
              }}>
              Toggle
            </button>
    
            <button
              className="button"
              onClick={(e) => {
                Backdrop.toggle((e) => {
                  console.log('after present/dismiss!', e);
                });
              }}>
              Singleton backdrop Toggle
            </button>
          </div>
        );
      }
    }
    
    ReactDOM.render(<App />, document.getElementById('app'));

documentation

license

Code released under the MIT license.