UNPKG

focus-components-v3

Version:

Focus web components to build applications (based on Material Design)

97 lines (73 loc) 7.56 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; var _react = require('react'); var _react2 = _interopRequireDefault(_react); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; } function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); } // component default props. var defaultProps = { affix: false, affixOffset: 0, menuList: [] }; // component props definition. var propTypes = { affix: _react.PropTypes.bool, affixOffset: _react.PropTypes.number, menuList: _react.PropTypes.array }; /** * Sticky menu component. */ var StickyMenu = function (_Component) { _inherits(StickyMenu, _Component); function StickyMenu() { _classCallCheck(this, StickyMenu); return _possibleConstructorReturn(this, _Component.apply(this, arguments)); } /** * Render the a block container and the cild content of the block. * @return {DOM} React DOM element */ StickyMenu.prototype.render = function render() { var _props = this.props, affix = _props.affix, affixOffset = _props.affixOffset, menuList = _props.menuList, otherProps = _objectWithoutProperties(_props, ['affix', 'affixOffset', 'menuList']); return _react2.default.createElement( 'nav', _extends({ 'data-affix': affix, 'data-focus': 'sticky-menu', 'data-offset': affixOffset }, otherProps), _react2.default.createElement( 'ul', null, menuList.map(function (menu) { var label = menu.label, nodeId = menu.nodeId, isActive = menu.isActive, onClick = menu.onClick; return _react2.default.createElement( 'li', { 'data-active': isActive, key: nodeId, onClick: onClick }, label ); }) ) ); }; return StickyMenu; }(_react.Component); //Static props. StickyMenu.displayName = 'StickyMenu'; StickyMenu.defaultProps = defaultProps; StickyMenu.propTypes = propTypes; exports.default = StickyMenu; module.exports = exports['default']; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImZyLUZSLmpzIl0sIm5hbWVzIjpbImRlZmF1bHRQcm9wcyIsImFmZml4IiwiYWZmaXhPZmZzZXQiLCJtZW51TGlzdCIsInByb3BUeXBlcyIsImJvb2wiLCJudW1iZXIiLCJhcnJheSIsIlN0aWNreU1lbnUiLCJyZW5kZXIiLCJwcm9wcyIsIm90aGVyUHJvcHMiLCJtYXAiLCJtZW51IiwibGFiZWwiLCJub2RlSWQiLCJpc0FjdGl2ZSIsIm9uQ2xpY2siLCJkaXNwbGF5TmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7OztBQUVBO0FBQ0EsSUFBTUEsZUFBZTtBQUNqQkMsV0FBTyxLQURVO0FBRWpCQyxpQkFBYSxDQUZJO0FBR2pCQyxjQUFVO0FBSE8sQ0FBckI7O0FBTUE7QUFDQSxJQUFNQyxZQUFZO0FBQ2RILFdBQU8saUJBQVVJLElBREg7QUFFZEgsaUJBQWEsaUJBQVVJLE1BRlQ7QUFHZEgsY0FBVSxpQkFBVUk7QUFITixDQUFsQjs7QUFNQTs7OztJQUdNQyxVO2NBQUFBLFU7O2FBQUFBLFU7OEJBQUFBLFU7Ozs7O0FBQ0Y7Ozs7QUFERUEsYyxXQUtGQyxNLHFCQUFTO0FBQUEscUJBQ2lELEtBQUtDLEtBRHREO0FBQUEsWUFDRVQsS0FERixVQUNFQSxLQURGO0FBQUEsWUFDU0MsV0FEVCxVQUNTQSxXQURUO0FBQUEsWUFDc0JDLFFBRHRCLFVBQ3NCQSxRQUR0QjtBQUFBLFlBQ21DUSxVQURuQzs7QUFFTCxlQUNJO0FBQUE7QUFBQSx1QkFBSyxjQUFZVixLQUFqQixFQUF3QixjQUFXLGFBQW5DLEVBQWlELGVBQWFDLFdBQTlELElBQStFUyxVQUEvRTtBQUNJO0FBQUE7QUFBQTtBQUNLUix5QkFBU1MsR0FBVCxDQUFhLFVBQUNDLElBQUQsRUFBVTtBQUFBLHdCQUNiQyxLQURhLEdBQ3VCRCxJQUR2QixDQUNiQyxLQURhO0FBQUEsd0JBQ05DLE1BRE0sR0FDdUJGLElBRHZCLENBQ05FLE1BRE07QUFBQSx3QkFDRUMsUUFERixHQUN1QkgsSUFEdkIsQ0FDRUcsUUFERjtBQUFBLHdCQUNZQyxPQURaLEdBQ3VCSixJQUR2QixDQUNZSSxPQURaOztBQUVwQiwyQkFDSTtBQUFBO0FBQUEsMEJBQUksZUFBYUQsUUFBakIsRUFBMkIsS0FBS0QsTUFBaEMsRUFBd0MsU0FBU0UsT0FBakQ7QUFBMkRIO0FBQTNELHFCQURKO0FBR0gsaUJBTEE7QUFETDtBQURKLFNBREo7QUFZSCxLOztXQW5CQ04sVTs7O0FBc0JOOzs7QUFDQUEsV0FBV1UsV0FBWCxHQUF5QixZQUF6QjtBQUNBVixXQUFXUixZQUFYLEdBQTBCQSxZQUExQjtBQUNBUSxXQUFXSixTQUFYLEdBQXVCQSxTQUF2Qjs7a0JBRWVJLFUiLCJmaWxlIjoiZnItRlIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtDb21wb25lbnQsIFByb3BUeXBlc30gZnJvbSAncmVhY3QnO1xyXG5cclxuLy8gY29tcG9uZW50IGRlZmF1bHQgcHJvcHMuXHJcbmNvbnN0IGRlZmF1bHRQcm9wcyA9IHtcclxuICAgIGFmZml4OiBmYWxzZSxcclxuICAgIGFmZml4T2Zmc2V0OiAwLFxyXG4gICAgbWVudUxpc3Q6IFtdXHJcbn07XHJcblxyXG4vLyBjb21wb25lbnQgcHJvcHMgZGVmaW5pdGlvbi5cclxuY29uc3QgcHJvcFR5cGVzID0ge1xyXG4gICAgYWZmaXg6IFByb3BUeXBlcy5ib29sLFxyXG4gICAgYWZmaXhPZmZzZXQ6IFByb3BUeXBlcy5udW1iZXIsXHJcbiAgICBtZW51TGlzdDogUHJvcFR5cGVzLmFycmF5XHJcbn07XHJcblxyXG4vKipcclxuKiBTdGlja3kgbWVudSBjb21wb25lbnQuXHJcbiovXHJcbmNsYXNzIFN0aWNreU1lbnUgZXh0ZW5kcyBDb21wb25lbnQge1xyXG4gICAgLyoqXHJcbiAgICAqIFJlbmRlciB0aGUgYSBibG9jayBjb250YWluZXIgYW5kIHRoZSBjaWxkIGNvbnRlbnQgb2YgdGhlIGJsb2NrLlxyXG4gICAgKiBAcmV0dXJuIHtET019IFJlYWN0IERPTSBlbGVtZW50XHJcbiAgICAqL1xyXG4gICAgcmVuZGVyKCkge1xyXG4gICAgICAgIGNvbnN0IHthZmZpeCwgYWZmaXhPZmZzZXQsIG1lbnVMaXN0LCAuLi5vdGhlclByb3BzfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPG5hdiBkYXRhLWFmZml4PXthZmZpeH0gZGF0YS1mb2N1cz0nc3RpY2t5LW1lbnUnIGRhdGEtb2Zmc2V0PXthZmZpeE9mZnNldH0gey4uLm90aGVyUHJvcHN9PlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51TGlzdC5tYXAoKG1lbnUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qge2xhYmVsLCBub2RlSWQsIGlzQWN0aXZlLCBvbkNsaWNrfSA9IG1lbnU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgZGF0YS1hY3RpdmU9e2lzQWN0aXZlfSBrZXk9e25vZGVJZH0gb25DbGljaz17b25DbGlja30+e2xhYmVsfTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L25hdj5cclxuICAgICAgICApO1xyXG4gICAgfVxyXG59XHJcblxyXG4vL1N0YXRpYyBwcm9wcy5cclxuU3RpY2t5TWVudS5kaXNwbGF5TmFtZSA9ICdTdGlja3lNZW51JztcclxuU3RpY2t5TWVudS5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XHJcblN0aWNreU1lbnUucHJvcFR5cGVzID0gcHJvcFR5cGVzO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU3RpY2t5TWVudTtcclxuIl19