UNPKG

choerodon-ui

Version:

An enterprise-class UI design language and React-based implementation

77 lines (64 loc) 2.17 kB
"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 _react = _interopRequireWildcard(require("react")); var _isNil = _interopRequireDefault(require("lodash/isNil")); var List = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) { var data = _ref.data, prefixCls = _ref.prefixCls, children = _ref.children, height = _ref.height, itemKey = _ref.itemKey; var containerRef = (0, _react.useRef)(null); var innerStyle = (0, _react.useMemo)(function () { var style = { display: 'flex', flexDirection: 'column' }; if (height) { style.height = height; style.overflow = 'hidden auto'; } return style; }, [height]); var getKey = (0, _react.useCallback)(function (item) { if (typeof itemKey === 'function') { return itemKey(item); } return (0, _isNil["default"])(itemKey) ? undefined : item[itemKey]; }, [itemKey]); var renderChild = (0, _react.useCallback)(function (child) { return /*#__PURE__*/(0, _react.cloneElement)(children(child), { key: getKey(child) }); }, [children, getKey]); var scrollTo = (0, _react.useCallback)(function (scroll) { var current = containerRef.current; if (current) { if (current.scrollTo) { current.scrollTo(0, scroll); } else { current.scrollTop = scroll; } } }, [containerRef]); (0, _react.useImperativeHandle)(ref, function () { return { scrollTo: scrollTo }; }, [scrollTo]); return /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-holder") }, /*#__PURE__*/_react["default"].createElement("div", { className: "".concat(prefixCls, "-holder-inner"), style: innerStyle, ref: containerRef }, data.map(renderChild))); }); var _default = /*#__PURE__*/(0, _react.memo)(List); exports["default"] = _default; //# sourceMappingURL=List.js.map