shineout
Version:
Shein 前端组件库
110 lines (84 loc) • 3.63 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.default = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
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 = _interopRequireDefault(require("react"));
var _styles = require("../Scroll/styles");
var _shallowEqual = require("../utils/shallowEqual");
var _component = require("../component");
var _default = function _default(Table) {
var _temp;
return _temp =
/*#__PURE__*/
function (_Component) {
(0, _inheritsLoose2.default)(AutoFixed, _Component);
function AutoFixed(props) {
var _this;
_this = _Component.call(this, props) || this;
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "wrapper", void 0);
_this.state = {
fixed: null
};
_this.bindWrapper = _this.bindWrapper.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
_this.resetAutoFixedState = _this.resetAutoFixedState.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
return _this;
}
var _proto = AutoFixed.prototype;
_proto.componentDidUpdate = function componentDidUpdate(prevProps) {
var _this2 = this;
var diff = ['fixed', 'width', 'height', 'data'].find(function (k) {
return _this2.props[k] && prevProps[k] !== _this2.props[k];
});
var reset = !(0, _shallowEqual.compareColumns)(prevProps.columns, this.props.columns) || diff;
if (reset) {
// eslint-disable-next-line react/no-did-update-set-state
this.setState({
fixed: null
});
}
};
_proto.getFixed = function getFixed() {
if (this.state.fixed !== null) return this.state.fixed;
if (this.props.fixed === 'auto') return 'both';
return this.props.fixed;
};
_proto.bindWrapper = function bindWrapper(wrapper) {
this.wrapper = wrapper;
};
_proto.resetFixed = function resetFixed() {
if (!this.wrapper) return;
var verticalHandle = this.wrapper.querySelector("." + (0, _styles.scrollClass)('y') + "." + (0, _styles.scrollClass)('show'));
var horizontalHandle = this.wrapper.querySelector("." + (0, _styles.scrollClass)('x') + "." + (0, _styles.scrollClass)('show'));
if (verticalHandle && horizontalHandle) return;
var fixed;
if (horizontalHandle) fixed = 'x';else if (verticalHandle) fixed = 'y';
this.setState({
fixed: fixed
});
};
_proto.fixedAuto = function fixedAuto() {
if (this.props.fixed !== 'auto' || this.state.fixed !== null) return;
this.resetFixed();
};
_proto.resetAutoFixedState = function resetAutoFixedState() {
this.setState({
fixed: null
});
};
_proto.render = function render() {
var fixed = this.getFixed();
setTimeout(this.fixedAuto.bind(this));
return _react.default.createElement(Table, (0, _extends2.default)({}, this.props, {
fixed: fixed,
bindWrapper: this.bindWrapper,
resetFixAuto: this.resetAutoFixedState
}));
};
return AutoFixed;
}(_component.Component), _temp;
};
exports.default = _default;