react-hide-at
Version:
React stateless functional component for altering the visual experience of responsive and lean webpages.
85 lines (65 loc) • 2.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
var _reactWithBreakpoints = require('react-with-breakpoints');
var _reactWithBreakpoints2 = _interopRequireDefault(_reactWithBreakpoints);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function HideAt(props) {
var breakpoint = props.breakpoint;
var currentBreakpoint = props.currentBreakpoint;
var shouldRender = void 0;
if (breakpoint.includes('small') && currentBreakpoint === 'small') {
shouldRender = false;
} else {
shouldRender = true;
}
if (breakpoint.includes('medium')) {
if (breakpoint.includes('AndBelow') && currentBreakpoint !== 'large') {
shouldRender = false;
} else if (breakpoint.includes('AndAbove') && currentBreakpoint !== 'small') {
shouldRender = false;
} else if (breakpoint === 'medium' && currentBreakpoint === 'medium') {
shouldRender = false;
}
}
if (breakpoint.includes('large')) {
if (breakpoint.includes('AndBelow')) {
shouldRender = false;
} else if (currentBreakpoint !== 'large') {
shouldRender = true;
} else {
shouldRender = false;
}
}
if (shouldRender) {
return _react2.default.createElement(
'div',
null,
props.children
);
// TODO: solve unnecessary else after return
// eslint-disable-next-line
} else {
return null;
}
}
HideAt.propTypes = {
breakpoint: _propTypes2.default.oneOf(['small', 'medium', 'mediumAndBelow', 'mediumAndAbove', 'largeAndBelow', 'large']).isRequired,
// eslint-disable-next-line
breakpoints: _propTypes2.default.object,
currentBreakpoint: _propTypes2.default.string,
children: _propTypes2.default.node
};
HideAt.displayName = 'HideAt';
HideAt.defaultProps = {
breakpoint: '',
currentBreakpoint: '',
children: null
};
var HideAtWithBreakpoint = (0, _reactWithBreakpoints2.default)(HideAt);
exports.default = HideAtWithBreakpoint;