From 12a4fefef616e6b31ef5bdc2ff1e996913d841e7 Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Tue, 2 Feb 2021 14:43:13 +0100 Subject: [PATCH] FIX: ensures rects is present before using it (#11930) I don't have a clear reproduction ATM, but I imagine that in fast tests element can get destroyed before we get to use it. --- .../select-kit/addon/components/select-kit.js | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/select-kit/addon/components/select-kit.js b/app/assets/javascripts/select-kit/addon/components/select-kit.js index 175a88e890..4a35205873 100644 --- a/app/assets/javascripts/select-kit/addon/components/select-kit.js +++ b/app/assets/javascripts/select-kit/addon/components/select-kit.js @@ -883,16 +883,20 @@ export default Component.extend( wrapper.style.height = `${height}px`; if (placementStrategy === "fixed") { const rects = this.element.getClientRects()[0]; - const bodyRects = body && body.getClientRects()[0]; - wrapper.style.position = "fixed"; - wrapper.style.left = `${rects.left}px`; - if (topPlacement && bodyRects) { - wrapper.style.top = `${rects.top - bodyRects.height}px`; - } else { - wrapper.style.top = `${rects.top}px`; - } - if (isDocumentRTL()) { - wrapper.style.right = "unset"; + + if (rects) { + const bodyRects = body && body.getClientRects()[0]; + + wrapper.style.position = "fixed"; + wrapper.style.left = `${rects.left}px`; + if (topPlacement && bodyRects) { + wrapper.style.top = `${rects.top - bodyRects.height}px`; + } else { + wrapper.style.top = `${rects.top}px`; + } + if (isDocumentRTL()) { + wrapper.style.right = "unset"; + } } } }