UNPKG

@uiw/react-only-when

Version:

A declarative component for conditional rendering.

54 lines (53 loc) 2.14 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); var _exportNames = {}; exports.default = OnlyWhen; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _react = _interopRequireDefault(require("react")); var _If = require("./If"); Object.keys(_If).forEach(function (key) { if (key === "default" || key === "__esModule") return; if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; if (key in exports && exports[key] === _If[key]) return; Object.defineProperty(exports, key, { enumerable: true, get: function get() { return _If[key]; } }); }); var _jsxRuntime = require("react/jsx-runtime"); var _excluded = ["style"]; function OnlyWhen(props) { var children = props.children, when = props.when, hiddenMode = props.hiddenMode, className = props.className; var singleChild = _react.default.Children.only(children); var _singleChild$props = singleChild.props, style = _singleChild$props.style, restOfChildProps = (0, _objectWithoutProperties2.default)(_singleChild$props, _excluded); var extendedProps = (0, _objectSpread2.default)({}, restOfChildProps); var keepNode = hiddenMode && hiddenMode !== 'null'; if (keepNode) { if (hiddenMode === 'css') { extendedProps.className = "".concat(extendedProps.className || '', " ").concat(className || '').trim(); } else { extendedProps.style = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, style), hiddenMode === 'display' && { display: 'none' }), hiddenMode === 'visibility' && { visibility: 'hidden' }); } } var cloned = /*#__PURE__*/_react.default.cloneElement(singleChild, extendedProps); var toHide = /*#__PURE__*/(0, _jsxRuntime.jsx)(_If.If, { condition: keepNode, children: cloned }); return when ? singleChild : toHide; }