shineout
Version:
Shein 前端组件库
168 lines (128 loc) • 5.39 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 _component = require("../component");
var _shallowEqual = _interopRequireDefault(require("../utils/shallowEqual"));
var _types = require("../Datum/types");
var _Checkbox = _interopRequireDefault(require("../Checkbox/Checkbox"));
var _is = require("../utils/is");
var TableCheckboxAll =
/*#__PURE__*/
function (_Component) {
(0, _inheritsLoose2.default)(TableCheckboxAll, _Component);
function TableCheckboxAll(props) {
var _this;
_this = _Component.call(this, props) || this;
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleUpdate", void 0);
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "lastValueLength", void 0);
_this.handleChange = _this.handleChange.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
_this.handleUpdate = _this.forceUpdate.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
return _this;
}
var _proto = TableCheckboxAll.prototype;
_proto.componentDidMount = function componentDidMount() {
_Component.prototype.componentDidMount.call(this);
this.props.datum.subscribe(_types.CHANGE_TOPIC, this.handleUpdate);
};
_proto.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {
var datum = nextProps.datum;
if (!(0, _shallowEqual.default)(this.props, nextProps)) return true;
if (this.lastValueLength !== (datum.getValue() || []).length) return true;
return false;
};
_proto.componentWillUnmount = function componentWillUnmount() {
_Component.prototype.componentWillUnmount.call(this);
this.props.datum.unsubscribe(_types.CHANGE_TOPIC, this.handleUpdate);
};
_proto.getFilterData = function getFilterData() {
var _this$props = this.props,
_this$props$col = _this$props.col,
col = _this$props$col === void 0 ? {} : _this$props$col,
data = _this$props.data;
var colTemp = col;
var filterAll = colTemp.filterAll;
if (data && filterAll && Array.isArray(data) && (0, _is.isFunc)(filterAll)) {
return filterAll(data);
}
return data;
};
_proto.getChecked = function getChecked() {
var datum = this.props.datum;
var filterData = this.getFilterData();
if (datum.length === 0 || !filterData) return false;
var checked;
for (var _iterator = filterData, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var d = _ref;
if (datum.disabled(d)) continue;
var p = this.check(d);
if (p === 'indeterminate') return p;
if (checked === undefined) {
checked = p;
} else if (checked !== p) {
return 'indeterminate';
}
}
return checked;
};
_proto.check = function check(d) {
var _this$props2 = this.props,
datum = _this$props2.datum,
treeColumnsName = _this$props2.treeColumnsName;
var p = datum.check(d);
var children = treeColumnsName && d[treeColumnsName];
var isArray = children && Array.isArray(children);
if (isArray) {
for (var _iterator2 = children, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) {
var _ref2;
if (_isArray2) {
if (_i2 >= _iterator2.length) break;
_ref2 = _iterator2[_i2++];
} else {
_i2 = _iterator2.next();
if (_i2.done) break;
_ref2 = _i2.value;
}
var c = _ref2;
if (this.check(c) !== p) return 'indeterminate';
}
}
return p;
};
_proto.handleChange = function handleChange(_, checked, index) {
var _this$props3 = this.props,
datum = _this$props3.datum,
treeColumnsName = _this$props3.treeColumnsName;
var filterData = this.getFilterData();
if (checked) {
datum.add(filterData, index, treeColumnsName);
} else {
datum.remove(filterData, index, treeColumnsName);
}
};
_proto.render = function render() {
var datum = this.props.datum;
this.lastValueLength = (datum.getValue() || []).length;
if (datum.limit === 1) return null;
return _react.default.createElement(_Checkbox.default, (0, _extends2.default)({}, this.props, {
checked: this.getChecked(),
onChange: this.handleChange
}));
};
return TableCheckboxAll;
}(_component.Component);
exports.default = TableCheckboxAll;