@alicloud/cloud-charts
Version:

51 lines (50 loc) • 2.01 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.ListReverseChecked = void 0;
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _listUnchecked = _interopRequireDefault(require("@antv/g2/esm/interaction/action/component/list-unchecked"));
// 图例反选 Action 默认行为
var ListReverseChecked = exports.ListReverseChecked = /*#__PURE__*/function (_ListUnchecked) {
(0, _inheritsLoose2["default"])(ListReverseChecked, _ListUnchecked);
function ListReverseChecked() {
return _ListUnchecked.apply(this, arguments) || this;
}
var _proto = ListReverseChecked.prototype;
_proto.toggle = function toggle() {
var _this = this;
// 获取原始事件
var originEvent = this.context.event.event;
var _ref = this.getTriggerListInfo() || {},
item = _ref.item,
list = _ref.list;
// 用于显示分组的items不触发交互
if (!item || !!item.dodge) {
return;
}
// 是否按Control
var hasControl = originEvent.ctrlKey || originEvent.metaKey;
// 当前选中状态 false-选中,true-未选
var currentEnable = this.hasState(list, item);
if (hasControl) {
// Control进入单选默认
var listItems = list.getItems();
var isOneChecked = listItems.reduce(function (pre, cur) {
return pre + (_this.hasState(list, cur) ? 0 : 1);
}, 0) === 1;
listItems.forEach(function (listItem) {
var enable = _this.hasState(list, listItem);
var otherEnable = !currentEnable && isOneChecked ? !enable : true;
if (listItem !== item) {
_this.setItemState(list, listItem, otherEnable);
} else {
_this.setItemState(list, listItem, false);
}
});
} else {
// 非Control时保持默认反选
this.setItemState(list, item, !currentEnable);
}
};
return ListReverseChecked;
}(_listUnchecked["default"]);