diff --git a/src/component/axisPointer/axisTrigger.ts b/src/component/axisPointer/axisTrigger.ts index 082b61c0d9..1bf0f7f409 100644 --- a/src/component/axisPointer/axisTrigger.ts +++ b/src/component/axisPointer/axisTrigger.ts @@ -164,10 +164,13 @@ export default function axisTrigger( const coordSysContainsPoint = isIllegalPoint || coordSys.containPoint(point); each(coordSysAxesInfo.coordSysAxesInfo[coordSysKey], function (axisInfo, key) { + // Allow connected charts to bypass illegalPoint check and always show shared + // axisPointer regardless of series data. + const isAlwaysShowContent = axisInfo.axisPointerModel.get('alwaysShowContent'); const axis = axisInfo.axis; const inputAxisInfo = findInputAxisInfo(inputAxesInfo, axisInfo); // If no inputAxesInfo, no axis is restricted. - if (!shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) { + if (isAlwaysShowContent || !shouldHide && coordSysContainsPoint && (!inputAxesInfo || inputAxisInfo)) { let val = inputAxisInfo && inputAxisInfo.value; if (val == null && !isIllegalPoint) { val = axis.pointToData(point); diff --git a/src/util/types.ts b/src/util/types.ts index 2a37e39a0f..fb35031480 100644 --- a/src/util/types.ts +++ b/src/util/types.ts @@ -1662,6 +1662,8 @@ type LabelFormatterParams = { export interface CommonAxisPointerOption { show?: boolean | 'auto' + alwaysShowContent?: boolean + z?: number; zlevel?: number; diff --git a/test/axis-pointer-sync.html b/test/axis-pointer-sync.html new file mode 100644 index 0000000000..041f1ee8df --- /dev/null +++ b/test/axis-pointer-sync.html @@ -0,0 +1,172 @@ + + + + + + + + + + + + +
+
+
+ + + +