UNPKG

@antv/g2

Version:

the Grammar of Graphics in Javascript

118 lines 4.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var tslib_1 = require("tslib"); var list_state_1 = tslib_1.__importDefault(require("./list-state")); var util_1 = require("@antv/util"); var component_1 = require("@antv/component"); var dependents_1 = require("../../../dependents"); var STATUS_SHOW = 'showRadio'; var TIP_ID = 'legend-radio-tip'; var ListRadio = /** @class */ (function (_super) { tslib_1.__extends(ListRadio, _super); function ListRadio() { var _this = _super !== null && _super.apply(this, arguments) || this; _this.timeStamp = 0; return _this; } ListRadio.prototype.show = function () { var triggerInfo = this.getTriggerListInfo(); if (triggerInfo === null || triggerInfo === void 0 ? void 0 : triggerInfo.item) { var list = triggerInfo.list, item = triggerInfo.item; list.setItemState(item, STATUS_SHOW, true); } }; ListRadio.prototype.hide = function () { var triggerInfo = this.getTriggerListInfo(); if (triggerInfo === null || triggerInfo === void 0 ? void 0 : triggerInfo.item) { var list = triggerInfo.list, item = triggerInfo.item; list.setItemState(item, STATUS_SHOW, false); } }; ListRadio.prototype.destroy = function () { _super.prototype.destroy.call(this); this.tooltip && this.tooltip.destroy(); }; /** * 显示 Tooltip (展示在上方) * @returns */ ListRadio.prototype.showTip = function () { var context = this.context; var ev = context.event; var lastTimeStamp = this.timeStamp; var timeStamp = +new Date(); var target = this.context.event.target; if (timeStamp - lastTimeStamp > 16 && target.get('name') === 'legend-item-radio') { var preLoc = this.location; var curLoc = { x: ev.x, y: ev.y }; this.timeStamp = timeStamp; this.location = curLoc; if (!preLoc || !(0, util_1.isEqual)(preLoc, curLoc)) { this.showTooltip(curLoc); } } }; /** * 隐藏 Tooltip。 * @returns */ ListRadio.prototype.hideTip = function () { this.hideTooltip(); this.location = null; }; ListRadio.prototype.showTooltip = function (curLoc) { var context = this.context; var ev = context.event; var target = ev.target; if (target && target.get('tip')) { if (!this.tooltip) { this.renderTooltip(); // 延迟生成 } // 展示 tooltip var _a = context.view.getCanvas().get('el').getBoundingClientRect(), offsetX = _a.x, offsetY = _a.y; this.tooltip.update(tslib_1.__assign(tslib_1.__assign({ title: target.get('tip') }, curLoc), { x: curLoc.x + offsetX, y: curLoc.y + offsetY })); this.tooltip.show(); } }; ListRadio.prototype.hideTooltip = function () { this.tooltip && this.tooltip.hide(); }; ListRadio.prototype.renderTooltip = function () { var _a; var tooltipStyles = (_a = {}, _a[component_1.TOOLTIP_CSS_CONST.CONTAINER_CLASS] = { padding: '6px 8px', transform: 'translate(-50%, -80%)', background: 'rgba(0,0,0,0.75)', color: '#fff', 'border-radius': '2px', // 避免遮挡,如果还不够的话,再考虑开放用户配置 'z-index': 100, }, _a[component_1.TOOLTIP_CSS_CONST.TITLE_CLASS] = { 'font-size': '12px', 'line-height': '14px', 'margin-bottom': 0, 'word-break': 'break-all', }, _a); if (document.getElementById(TIP_ID)) { document.body.removeChild(document.getElementById(TIP_ID)); } var tooltip = new dependents_1.HtmlTooltip({ parent: document.body, // tooltip 限制的区域 region: null, visible: false, crosshairs: null, domStyles: tooltipStyles, containerId: TIP_ID, }); tooltip.init(); tooltip.setCapture(false); // 不允许捕获事件 this.tooltip = tooltip; }; return ListRadio; }(list_state_1.default)); exports.default = ListRadio; //# sourceMappingURL=list-radio.js.map