@alicloud/cloud-charts
Version:

47 lines (46 loc) • 1.74 kB
JavaScript
import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose";
import ListUnchecked from '@antv/g2/esm/interaction/action/component/list-unchecked';
// 图例反选 Action 默认行为
export var ListReverseChecked = /*#__PURE__*/function (_ListUnchecked) {
_inheritsLoose(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);