shineout
Version:
Shein 前端组件库
92 lines (71 loc) • 2.72 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _lazyload = require("../utils/lazyload");
var iframeStyle = {
position: 'absolute',
left: 0,
width: 0,
height: '100%',
border: 0
};
var Expand =
/*#__PURE__*/
function (_PureComponent) {
(0, _inheritsLoose2.default)(Expand, _PureComponent);
function Expand(props) {
var _this;
_this = _PureComponent.call(this, props) || this;
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "element", void 0);
_this.bindElement = _this.bindElement.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
_this.bindIframe = _this.bindIframe.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
_this.setHeight = _this.setHeight.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
return _this;
}
var _proto = Expand.prototype;
_proto.componentDidMount = function componentDidMount() {
this.setHeight();
};
_proto.componentWillUnmount = function componentWillUnmount() {
this.props.setExpandHeight(0);
};
_proto.setHeight = function setHeight() {
if (this.element) {
this.props.setExpandHeight(this.element.clientHeight);
}
};
_proto.bindElement = function bindElement(el) {
this.element = el;
};
_proto.bindIframe = function bindIframe(el) {
if (el && el.contentWindow) {
el.contentWindow.onresize = (0, _lazyload.throttleWrapper)(this.setHeight);
}
};
_proto.render = function render() {
var _this$props = this.props,
colSpan = _this$props.colSpan,
children = _this$props.children;
return _react.default.createElement("tr", {
ref: this.bindElement
}, _react.default.createElement("td", {
style: {
padding: 0
},
colSpan: colSpan
}, _react.default.createElement("iframe", {
title: "scroll",
ref: this.bindIframe,
style: iframeStyle
}), children));
};
return Expand;
}(_react.PureComponent);
var _default = Expand;
exports.default = _default;