From c42904ca3dd577e7e3a34d473b994fa5429c219e Mon Sep 17 00:00:00 2001 From: sallerli1 Date: Thu, 9 May 2024 15:57:03 +0800 Subject: [PATCH] fix(cdk:popper): arrow position is incorrect after shift --- packages/cdk/popper/src/convertOptions.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/cdk/popper/src/convertOptions.ts b/packages/cdk/popper/src/convertOptions.ts index afd0004ff..6a33c8dd9 100644 --- a/packages/cdk/popper/src/convertOptions.ts +++ b/packages/cdk/popper/src/convertOptions.ts @@ -31,17 +31,20 @@ export function convertOptions(baseOptions: BaseOptions, extraOptions: ExtraOpti const { placement, strategy, middlewares, offset, autoAdjust } = baseOptions const { arrowElement, updatePlacement: _updatePlacement } = extraOptions + const { width } = arrowElement?.getBoundingClientRect() ?? {} + const arrowSize = width ? width / 2 : 0 + return { placement: kebabCase(placement) as Placement, strategy, middleware: [ + autoAdjust && flip({ padding: 2 + arrowSize, crossAxis: false }), + autoAdjust && shift(), !!arrowElement && arrow(arrowElement), offsetMiddleware({ mainAxis: offset[1], crossAxis: offset[0], }), - autoAdjust && flip({ padding: 2, crossAxis: false }), - autoAdjust && shift(), referenceHidden(), updatePlacement(_updatePlacement), ...middlewares,