@alicloud/cloud-charts
Version:

55 lines (54 loc) • 1.95 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.ListChecked = void 0;
var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
var _listUnchecked = _interopRequireDefault(require("@antv/g2/esm/interaction/action/component/list-unchecked"));
// 图例正选 Action
var ListChecked = exports.ListChecked = /*#__PURE__*/function (_ListUnchecked) {
(0, _inheritsLoose2["default"])(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["default"]);