@alicloud/cloud-charts
Version:

51 lines (50 loc) • 1.69 kB
JavaScript
import _inheritsLoose from "@babel/runtime/helpers/inheritsLoose";
import ListUnchecked from '@antv/g2/esm/interaction/action/component/list-unchecked';
// 图例正选 Action
export var ListChecked = /*#__PURE__*/function (_ListUnchecked) {
_inheritsLoose(ListChecked, _ListUnchecked);
function ListChecked() {
return _ListUnchecked.apply(this, arguments) || this;
}
var _proto = ListChecked.prototype;
_proto.toggle = function toggle() {
var _this = this;
// 获取原始事件
var originEvent = this.context.event.event;
var _ref = this.getTriggerListInfo() || {},
item = _ref.item,
list = _ref.list;
if (!item || !!item.dodge) {
return;
}
// 是否按Control
var hasControl = originEvent.ctrlKey || originEvent.metaKey;
// 当前选中状态 false-选中,true-未选
var currentEnable = this.hasState(list, item);
var listItems = list.getItems();
// 是否点击唯一选中的一个
var checkedNums = 0;
var isSameItem = false;
listItems.forEach(function (listItem) {
if (!_this.hasState(list, listItem)) {
checkedNums += 1;
isSameItem = listItem === item;
}
});
var isOneChecked = checkedNums === 1 && isSameItem;
if (!hasControl) {
// 非Control时采用默认单选模式
listItems.forEach(function (listItem) {
if (listItem !== item) {
_this.setItemState(list, listItem, !isOneChecked);
} else {
_this.setItemState(list, listItem, false);
}
});
} else {
// Control时反选
this.setItemState(list, item, !currentEnable);
}
};
return ListChecked;
}(ListUnchecked);