UNPKG

apeman-react-accordion

Version:
111 lines (85 loc) 5.97 kB
/** * Header for accordion. * @class ApAccordionHeader */ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _classnames = require('classnames'); var _classnames2 = _interopRequireDefault(_classnames); var _apemanReactTouchable = require('apeman-react-touchable'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** @lends ApAccordionHeader */ var ApAccordionHeader = _react2.default.createClass({ displayName: 'ApAccordionHeader', // -------------------- // Specs // -------------------- propTypes: { onToggle: _react.PropTypes.func, busyDuration: _react.PropTypes.number }, mixins: [], statics: {}, getInitialState: function getInitialState() { return { busy: false }; }, getDefaultProps: function getDefaultProps() { return { onToggle: null, busyDuration: 500 }; }, render: function render() { var s = this; var props = s.props; return _react2.default.createElement( _apemanReactTouchable.ApTouchable, { onTap: s.handleTap }, _react2.default.createElement( 'div', { className: 'ap-accordion-header' }, props.children ) ); }, // -------------------- // Lifecycle // -------------------- componentWillUnmount: function componentWillUnmount() { var s = this; if (s.state.busyTimer) { clearTimeout(s.state.busyTimer); } }, // ------------------ // Helper // ------------------ handleTap: function handleTap() { var s = this; var state = s.state; var props = s.props; if (state.busy) { return; // Prevent double tap. } s.setState({ busy: true, busyTimer: setTimeout(function () { s.setState({ busy: false, busyTimer: null }); }, props.busyDuration) }); if (props.onToggle) { props.onToggle(); } } }); exports.default = ApAccordionHeader; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwX2FjY29yZGlvbl9oZWFkZXIuanN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQUtBOzs7Ozs7QUFFQTs7OztBQUNBOzs7O0FBRUE7Ozs7QUFFQTtBQUNBLElBQU0sb0JBQW9CLGdCQUFNLFdBQU4sQ0FBa0I7QUFBQTs7O0FBRTFDO0FBQ0E7QUFDQTs7QUFFQSxhQUFXO0FBQ1QsY0FBVSxpQkFBTSxJQURQO0FBRVQsa0JBQWMsaUJBQU07QUFGWCxHQU4rQjs7QUFXMUMsVUFBUSxFQVhrQzs7QUFhMUMsV0FBUyxFQWJpQzs7QUFlMUMsaUJBZjBDLDZCQWV2QjtBQUNqQixXQUFPO0FBQ0wsWUFBTTtBQURELEtBQVA7QUFHRCxHQW5CeUM7QUFxQjFDLGlCQXJCMEMsNkJBcUJ2QjtBQUNqQixXQUFPO0FBQ0wsZ0JBQVUsSUFETDtBQUVMLG9CQUFjO0FBRlQsS0FBUDtBQUlELEdBMUJ5QztBQTRCMUMsUUE1QjBDLG9CQTRCaEM7QUFDUixRQUFNLElBQUksSUFBVjtBQURRLFFBRUYsS0FGRSxHQUVRLENBRlIsQ0FFRixLQUZFOztBQUdSLFdBQ0U7QUFBQTtBQUFBLFFBQWEsT0FBUSxFQUFFLFNBQXZCO0FBQ0U7QUFBQTtBQUFBLFVBQUssV0FBVSxxQkFBZjtBQUNJLGNBQU07QUFEVjtBQURGLEtBREY7QUFPRCxHQXRDeUM7OztBQXdDMUM7QUFDQTtBQUNBOztBQUVBLHNCQTVDMEMsa0NBNENsQjtBQUN0QixRQUFNLElBQUksSUFBVjs7QUFFQSxRQUFJLEVBQUUsS0FBRixDQUFRLFNBQVosRUFBdUI7QUFDckIsbUJBQWEsRUFBRSxLQUFGLENBQVEsU0FBckI7QUFDRDtBQUNGLEdBbER5Qzs7O0FBb0QxQztBQUNBO0FBQ0E7O0FBRUEsV0F4RDBDLHVCQXdEN0I7QUFDWCxRQUFNLElBQUksSUFBVjtBQURXLFFBRUwsS0FGSyxHQUVZLENBRlosQ0FFTCxLQUZLO0FBQUEsUUFFRSxLQUZGLEdBRVksQ0FGWixDQUVFLEtBRkY7O0FBR1gsUUFBSSxNQUFNLElBQVYsRUFBZ0I7QUFDZCxhQURjLENBQ1A7QUFDUjtBQUNELE1BQUUsUUFBRixDQUFXO0FBQ1QsWUFBTSxJQURHO0FBRVQsaUJBQVcsV0FBVyxZQUFNO0FBQzFCLFVBQUUsUUFBRixDQUFXO0FBQ1QsZ0JBQU0sS0FERztBQUVULHFCQUFXO0FBRkYsU0FBWDtBQUlELE9BTFUsRUFLUixNQUFNLFlBTEU7QUFGRixLQUFYOztBQVVBLFFBQUksTUFBTSxRQUFWLEVBQW9CO0FBQ2xCLFlBQU0sUUFBTjtBQUNEO0FBQ0Y7QUEzRXlDLENBQWxCLENBQTFCOztrQkE4RWUsaUIiLCJmaWxlIjoiYXBfYWNjb3JkaW9uX2hlYWRlci5qc3giLCJzb3VyY2VSb290IjoibGliIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBIZWFkZXIgZm9yIGFjY29yZGlvbi5cbiAqIEBjbGFzcyBBcEFjY29yZGlvbkhlYWRlclxuICovXG5cbid1c2Ugc3RyaWN0J1xuXG5pbXBvcnQgUmVhY3QsIHtQcm9wVHlwZXMgYXMgdHlwZXN9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcblxuaW1wb3J0IHtBcFRvdWNoYWJsZX0gZnJvbSAnYXBlbWFuLXJlYWN0LXRvdWNoYWJsZSdcblxuLyoqIEBsZW5kcyBBcEFjY29yZGlvbkhlYWRlciAqL1xuY29uc3QgQXBBY2NvcmRpb25IZWFkZXIgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gU3BlY3NcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBwcm9wVHlwZXM6IHtcbiAgICBvblRvZ2dsZTogdHlwZXMuZnVuYyxcbiAgICBidXN5RHVyYXRpb246IHR5cGVzLm51bWJlclxuICB9LFxuXG4gIG1peGluczogW10sXG5cbiAgc3RhdGljczoge30sXG5cbiAgZ2V0SW5pdGlhbFN0YXRlICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYnVzeTogZmFsc2VcbiAgICB9XG4gIH0sXG5cbiAgZ2V0RGVmYXVsdFByb3BzICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb25Ub2dnbGU6IG51bGwsXG4gICAgICBidXN5RHVyYXRpb246IDUwMFxuICAgIH1cbiAgfSxcblxuICByZW5kZXIgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgcHJvcHMgfSA9IHNcbiAgICByZXR1cm4gKFxuICAgICAgPEFwVG91Y2hhYmxlIG9uVGFwPXsgcy5oYW5kbGVUYXAgfT5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhcC1hY2NvcmRpb24taGVhZGVyXCI+XG4gICAgICAgICAgeyBwcm9wcy5jaGlsZHJlbiB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9BcFRvdWNoYWJsZT5cbiAgICApXG4gIH0sXG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gTGlmZWN5Y2xlXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgY29tcG9uZW50V2lsbFVubW91bnQgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG5cbiAgICBpZiAocy5zdGF0ZS5idXN5VGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dChzLnN0YXRlLmJ1c3lUaW1lcilcbiAgICB9XG4gIH0sXG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEhlbHBlclxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS1cblxuICBoYW5kbGVUYXAgKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzXG4gICAgbGV0IHsgc3RhdGUsIHByb3BzIH0gPSBzXG4gICAgaWYgKHN0YXRlLmJ1c3kpIHtcbiAgICAgIHJldHVybiAvLyBQcmV2ZW50IGRvdWJsZSB0YXAuXG4gICAgfVxuICAgIHMuc2V0U3RhdGUoe1xuICAgICAgYnVzeTogdHJ1ZSxcbiAgICAgIGJ1c3lUaW1lcjogc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHMuc2V0U3RhdGUoe1xuICAgICAgICAgIGJ1c3k6IGZhbHNlLFxuICAgICAgICAgIGJ1c3lUaW1lcjogbnVsbFxuICAgICAgICB9KVxuICAgICAgfSwgcHJvcHMuYnVzeUR1cmF0aW9uKVxuICAgIH0pXG5cbiAgICBpZiAocHJvcHMub25Ub2dnbGUpIHtcbiAgICAgIHByb3BzLm9uVG9nZ2xlKClcbiAgICB9XG4gIH1cbn0pXG5cbmV4cG9ydCBkZWZhdWx0IEFwQWNjb3JkaW9uSGVhZGVyXG4iXX0=