@gechiui/compose
Version:
GeChiUI higher-order components (HOCs).
45 lines (37 loc) • 1.3 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _element = require("@gechiui/element");
var _createHigherOrderComponent = _interopRequireDefault(require("../../utils/create-higher-order-component"));
/**
* Internal dependencies
*/
/**
* Higher-order component creator, creating a new component which renders if
* the given condition is satisfied or with the given optional prop name.
*
* @example
* ```ts
* type Props = { foo: string };
* const Component = ( props: Props ) => <div>{ props.foo }</div>;
* const ConditionalComponent = ifCondition( ( props: Props ) => props.foo.length !== 0 )( Component );
* <ConditionalComponent foo="" />; // => null
* <ConditionalComponent foo="bar" />; // => <div>bar</div>;
* ```
*
* @param predicate Function to test condition.
*
* @return Higher-order component.
*/
const ifCondition = predicate => (0, _createHigherOrderComponent.default)(WrappedComponent => props => {
if (!predicate(props)) {
return null;
}
return (0, _element.createElement)(WrappedComponent, props);
}, 'ifCondition');
var _default = ifCondition;
exports.default = _default;
//# sourceMappingURL=index.js.map