UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 1.78 kB
{"version":3,"file":"getScrollParent.mjs","sources":["../../../src/guide/utils/getScrollParent.ts"],"sourcesContent":["import { elementInViewport } from '../../utils/dom';\n\nexport function getScrollParent(element: HTMLElement) {\n let style = window.getComputedStyle(element);\n const excludeStaticParent = style.position === 'absolute';\n const overflowRegex = /(auto|scroll)/;\n\n if (style.position === 'fixed') return document.body;\n\n for (let parent = element; parent.parentElement; ) {\n parent = parent.parentElement;\n style = window.getComputedStyle(parent);\n if (excludeStaticParent && style.position === 'static') {\n continue;\n }\n if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) return parent;\n }\n\n return document.body;\n}\n\nexport function scrollToParentVisibleArea(element: HTMLElement) {\n const parent = getScrollParent(element);\n if (parent === document.body) return;\n // !todo 逻辑待验证\n if (elementInViewport(element, parent)) return;\n parent.scrollTop = element.offsetTop - parent.offsetTop;\n}\n"],"names":["style"],"mappings":";;;;;;;;;;;;;;;;;;AAEO,SAAA,eAAA,CAAA,OAAA,EAAA;AACD,EAAA,IAAA,KAAA,GAAA,MAAA,CAAA,gBAAA,CAAA,OAAA,CAAA,CAAA;AACE,EAAA,IAAA,mBAAA,GAAA,KAAA,CAAA,QAAA,KAAA,UAAA,CAAA;;;;;AAOIA,IAAAA,KAAAA,GAAAA,MAAAA,CAAAA,gBAAAA,CAAAA,MAAAA,CAAAA,CAAAA;AACJ,IAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,QAAA,KAAA,QAAA,EAAA;AACF,MAAA,SAAA;AACF,KAAA;AACA,IAAA,IAAA,aAAA,CAAA,IAAA,CAAA,KAAA,CAAA,QAAA,GAAA,KAAA,CAAA,SAAA,GAAA,KAAA,CAAA,SAAA,CAAA,EAAA,OAAA,MAAA,CAAA;AACF,GAAA;;AAGF,CAAA;AAEO,SAAA,yBAAA,CAAA,OAAA,EAAA;AACC,EAAA,IAAA,MAAA,GAAA,eAAA,CAAA,OAAA,CAAA,CAAA;AACN,EAAA,IAAA,MAAA,KAAA,QAAA,CAAA,IAAA,EAAA,OAAA;AAEI,EAAA,IAAA,iBAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,OAAA;;AAEN;;;;"}