Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@skava/ui / dist / components / molecules / Toggle / Toggle.js
Size: Mime:
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});

const tslib_1 = require("tslib");

const react_1 = tslib_1.__importDefault(require("react"));

const mobx_react_1 = require("xmobx/mobx-react");

const exotic_1 = require("exotic");

const state_1 = require("../../../state");

const renderProps_1 = require("./renderProps");

let Toggle = class Toggle extends react_1.default.Component {
  constructor() {
    super(...arguments);
    this.state = state_1.commonState(this.props);

    this.handleToggle = event => {
      const {
        label,
        value,
        onToggle
      } = this.props;
      this.state.handleToggleSelected();

      if (exotic_1.isFunction(onToggle)) {
        const args = {
          isSelected: this.state.isSelected,
          label,
          value
        };
        onToggle(args);
      }
    };
  }

  componentWillUpdate(nextProps) {
    const {
      isSelected
    } = nextProps;
    const {
      isSelected: oldIsSelected
    } = this.props;

    if (exotic_1.isSafe(isSelected) && exotic_1.isSafe(oldIsSelected) && oldIsSelected !== isSelected) {
      isSelected === true ? this.state.select(isSelected) : this.state.unselect(isSelected);
    }
  }

  render() {
    const _a = this.props,
          {
      renderWrapper
    } = _a,
          remainingProps = tslib_1.__rest(_a, ["renderWrapper"]);

    const children = renderProps_1.defaultRenderBox(remainingProps, this.state);
    const view = renderWrapper(Object.assign({
      children
    }, remainingProps, {
      onToggle: this.handleToggle
    }), this.state);
    return view;
  }

};
Toggle.defaultProps = {
  className: '',
  borderColor: '#000000',
  bgColor: '#000000',
  tickColor: '#ffffff',
  // handler
  onToggle: exotic_1.NO_OP,
  // renderProps
  renderAfterLabel: renderProps_1.defaultRenderAfterLabel,
  renderLabel: renderProps_1.defaultRenderLabel,
  renderBeforeLabel: renderProps_1.defaultRenderBeforeLabel,
  renderIcon: renderProps_1.defaultRenderIcon,
  renderWrapper: renderProps_1.defaultRenderWrapper
};
Toggle = tslib_1.__decorate([mobx_react_1.observer], Toggle);
exports.Toggle = Toggle;
exports.default = Toggle; //# sourceMappingURL=Toggle.js.map