@uiw/react-drawer
Version:
Drawer component
87 lines (86 loc) • 4.41 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireWildcard(require("react"));
var _reactOverlay = _interopRequireDefault(require("@uiw/react-overlay"));
var _reactIcon = _interopRequireDefault(require("@uiw/react-icon"));
var _reactButton = _interopRequireDefault(require("@uiw/react-button"));
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["prefixCls", "className", "style", "placement", "size", "title", "footer", "icon", "isCloseButtonShown", "bodyProps", "timeout", "isOpen", "maskClosable"];
var _default = exports["default"] = function _default() {
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var _props$prefixCls = props.prefixCls,
prefixCls = _props$prefixCls === void 0 ? 'w-drawer' : _props$prefixCls,
className = props.className,
style = props.style,
_props$placement = props.placement,
placement = _props$placement === void 0 ? 'right' : _props$placement,
_props$size = props.size,
size = _props$size === void 0 ? 260 : _props$size,
title = props.title,
footer = props.footer,
icon = props.icon,
_props$isCloseButtonS = props.isCloseButtonShown,
isCloseButtonShown = _props$isCloseButtonS === void 0 ? true : _props$isCloseButtonS,
bodyProps = props.bodyProps,
_props$timeout = props.timeout,
timeout = _props$timeout === void 0 ? 300 : _props$timeout,
_props$isOpen = props.isOpen,
isOpen = _props$isOpen === void 0 ? false : _props$isOpen,
_props$maskClosable = props.maskClosable,
maskClosable = _props$maskClosable === void 0 ? true : _props$maskClosable,
overlayProps = (0, _objectWithoutProperties2["default"])(props, _excluded);
var cls = [className, prefixCls, placement].filter(Boolean).join(' ').trim();
var bodyCls = [bodyProps ? bodyProps.className : null, prefixCls ? "".concat(prefixCls, "-body-inner") : null].filter(Boolean).join(' ').trim();
var styl = (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, style), {}, (0, _defineProperty2["default"])({}, /^(top|bottom)$/.test(placement) ? 'height' : 'width', size));
var footerView = (0, _react.useMemo)(function () {
return footer ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
className: "".concat(prefixCls, "-footer"),
children: footer
}) : null;
}, [footer]);
var iconView = (0, _react.useMemo)(function () {
return icon ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactIcon["default"], {
type: icon
}) : null;
}, [icon]);
var titleView = (0, _react.useMemo)(function () {
return title ? /*#__PURE__*/(0, _jsxRuntime.jsx)("h4", {
children: title
}) : null;
}, [title]);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactOverlay["default"], (0, _objectSpread3["default"])((0, _objectSpread3["default"])({
className: cls,
timeout: timeout,
isOpen: isOpen,
maskClosable: maskClosable
}, overlayProps), {}, {
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
className: "".concat(prefixCls, "-wrapper"),
style: styl,
children: [(title || icon) && /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
className: "".concat(prefixCls, "-header"),
children: [iconView, titleView, title && isCloseButtonShown && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactButton["default"], {
basic: true,
onClick: props.onClose,
icon: "close",
type: "light"
})]
}), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
className: "".concat(prefixCls, "-body"),
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", (0, _objectSpread3["default"])((0, _objectSpread3["default"])({}, bodyProps), {}, {
className: bodyCls,
children: props.children
}))
}), footerView]
})
}));
};
module.exports = exports.default;