@uiw/react-layout
Version:
React components that handle the overall layout of the page.
62 lines (61 loc) • 2.66 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.LayoutContext = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireWildcard(require("react"));
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["prefixCls", "className", "hasSider", "children"];
var LayoutContext = exports.LayoutContext = /*#__PURE__*/_react["default"].createContext({
addSider: function addSider() {
return null;
},
removeSider: function removeSider() {
return null;
}
});
var Layout = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
var _props$prefixCls = props.prefixCls,
prefixCls = _props$prefixCls === void 0 ? 'w-layout' : _props$prefixCls,
className = props.className,
hasSider = props.hasSider,
children = props.children,
other = (0, _objectWithoutProperties2["default"])(props, _excluded);
var _useState = (0, _react.useState)([]),
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
siders = _useState2[0],
setSiders = _useState2[1];
var addSider = function addSider(id) {
setSiders(function (state) {
return [].concat((0, _toConsumableArray2["default"])(state), [id]);
});
};
var removeSider = function removeSider(id) {
setSiders(function (state) {
return (0, _toConsumableArray2["default"])(state.filter(function (currentId) {
return currentId !== id;
}));
});
};
var cls = [prefixCls, className, typeof hasSider === 'boolean' && hasSider || siders.length > 0 ? "".concat(prefixCls, "-has-sider") : null].filter(Boolean).join(' ').trim();
return /*#__PURE__*/(0, _jsxRuntime.jsx)(LayoutContext.Provider, {
value: {
addSider: addSider,
removeSider: removeSider
},
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("section", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
ref: ref,
className: cls
}, other), {}, {
children: children
}))
});
});
Layout.displayName = 'Layout';
var _default = exports["default"] = Layout;
;