UNPKG

zp-bee

Version:

zp-bee,是一款基于 Dumi,由 React + TypeScript 开发的组件库 🎉。

135 lines (120 loc) 5.59 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = _interopRequireWildcard(require("react")); var _beeRect = require("../bee-rect"); var BeeLayout = function BeeLayout(_ref) { var children = _ref.children, btnChildren = _ref.btnChildren, _ref$hiddenHeight = _ref.hiddenHeight, hiddenHeight = _ref$hiddenHeight === void 0 ? 26 : _ref$hiddenHeight, _ref$showHidden = _ref.showHidden, showHidden = _ref$showHidden === void 0 ? false : _ref$showHidden, _ref$showTime = _ref.showTime, showTime = _ref$showTime === void 0 ? true : _ref$showTime, _ref$fixCount = _ref.fixCount, fixCount = _ref$fixCount === void 0 ? 1 : _ref$fixCount; var _useState = (0, _react.useState)(showHidden), _useState2 = (0, _slicedToArray2.default)(_useState, 2), expanded = _useState2[0], setExpanded = _useState2[1]; var contentWrapper = (0, _react.useRef)(); var contentRect = (0, _beeRect.useRect)(contentWrapper); var childrenArray = (0, _react.useMemo)(function () { return _react.default.Children.toArray(children); }, [children]); var renderedItemsCount = (0, _react.useRef)(childrenArray.length); var _useState3 = (0, _react.useState)({}), _useState4 = (0, _slicedToArray2.default)(_useState3, 2), forceUpdate = _useState4[1]; var minWidth = (0, _react.useMemo)(function () { var timeWidth = showTime ? 320 : 0; return fixCount * 230 + timeWidth; }, [showTime, fixCount]); (0, _react.useEffect)(function () { if (contentRect) { var width = contentRect.width, height = contentRect.height; if (width && height) { var renderCount = renderedItemsCount.current; if (height > hiddenHeight + 16) { renderCount = childrenArray.length; } else { var timeWidth = showTime ? 320 : 0; renderCount = Math.floor((width - timeWidth) / 230); if (renderCount < fixCount) renderCount = fixCount; } if (renderCount !== renderedItemsCount.current) { renderedItemsCount.current = renderCount; forceUpdate({}); } } } }, [contentRect, hiddenHeight, childrenArray.length, showTime, fixCount]); var onExpand = (0, _react.useCallback)(function () { setExpanded(function (c) { return !c; }); }, []); return /*#__PURE__*/_react.default.createElement("div", { className: "bee-layout-container" }, /*#__PURE__*/_react.default.createElement("div", { ref: contentWrapper, className: "bee-content-wrap", style: expanded ? {} : { height: "".concat(hiddenHeight, "px"), minWidth: "".concat(minWidth, "px") } }, childrenArray.slice(0, renderedItemsCount.current), /*#__PURE__*/_react.default.createElement("div", { className: "bee-btn-wrap", style: expanded ? {} : { display: 'none' } }, !showHidden && /*#__PURE__*/_react.default.createElement("div", { className: "bee-toggle-expand", onClick: onExpand }, /*#__PURE__*/_react.default.createElement("a", { className: "bee-toggle-label" }, "\u70B9\u51FB\u6536\u8D77"), /*#__PURE__*/_react.default.createElement("svg", { viewBox: "0 0 1024 1024", width: "1em", height: "1em" }, /*#__PURE__*/_react.default.createElement("path", { d: "M512 483.84a28.16 28.16 0 0 0-20.48 8.32l-226.56 228.48a28.16 28.16 0 0 0 0 39.68 27.52 27.52 0 0 0 40.32 0L512 552.32l208 206.72a28.16 28.16 0 0 0 39.68 0 28.8 28.8 0 0 0 8.32-20.48 26.88 26.88 0 0 0-8.32-19.84L532.48 491.52A27.52 27.52 0 0 0 512 483.84z", fill: "#44507E" }), /*#__PURE__*/_react.default.createElement("path", { d: "M491.52 264.32L264.32 492.8a28.8 28.8 0 0 0 40.32 40.32L512 324.48l207.36 206.72a28.8 28.8 0 0 0 40.32 0A28.16 28.16 0 0 0 768 512a27.52 27.52 0 0 0-8.32-19.84L531.84 264.32a28.8 28.8 0 0 0-40.32 0z", fill: "#44507E" }))), /*#__PURE__*/_react.default.createElement("div", { className: "bee-btn-action" }, btnChildren))), /*#__PURE__*/_react.default.createElement("div", { className: "bee-btn-wrap", style: expanded ? { display: 'none' } : {} }, /*#__PURE__*/_react.default.createElement("div", { className: "bee-toggle-expand", onClick: onExpand }, /*#__PURE__*/_react.default.createElement("a", { className: "bee-toggle-label" }, "\u66F4\u591A\u9009\u9879"), /*#__PURE__*/_react.default.createElement("svg", { viewBox: "0 0 1024 1024", width: "1em", height: "1em" }, /*#__PURE__*/_react.default.createElement("path", { d: "M512 540.16a25.6 25.6 0 0 0 19.84-8.32l228.48-227.2a28.8 28.8 0 0 0-40.32-40.32L512 471.68 304.64 264.32a28.8 28.8 0 0 0-40.32 0 27.52 27.52 0 0 0-8.32 19.84 28.16 28.16 0 0 0 8.32 20.48l227.2 227.2a25.6 25.6 0 0 0 20.48 8.32z", fill: "#44507E" }), /*#__PURE__*/_react.default.createElement("path", { d: "M531.2 759.68l228.48-227.84a28.16 28.16 0 0 0 0-39.68 27.52 27.52 0 0 0-40.32 0L512 699.52 304.64 492.16a27.52 27.52 0 0 0-40.32 0 27.52 27.52 0 0 0 0 39.68l227.2 227.84a28.16 28.16 0 0 0 39.68 0z", fill: "#44507E" }))), /*#__PURE__*/_react.default.createElement("div", { className: "bee-btn-action" }, btnChildren))); }; var _default = BeeLayout; exports.default = _default;