tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 9 kB
Source Map (JSON)
{"version":3,"file":"dom.mjs","sources":["../../src/shared/dom.ts"],"sourcesContent":["import { isFunction, isString } from 'lodash-es';\nimport { AttachNode } from '../common';\nimport { isBrowser } from './util';\n\nconst trim = (str: string): string => (str || '').replace(/^[\\s\\uFEFF]+|[\\s\\uFEFF]+$/g, '');\n\nexport const getAttach = (node: any, triggerNode?: any): HTMLElement | Element => {\n const attachNode = isFunction(node) ? node(triggerNode) : node;\n if (!attachNode) {\n return document.body;\n }\n if (isString(attachNode)) {\n return document.querySelector(attachNode);\n }\n if (attachNode instanceof HTMLElement) {\n return attachNode;\n }\n return document.body;\n};\n\nexport const getSSRAttach = () => {\n if (process.env.NODE_ENV === 'test-snap') return 'body';\n};\n\nexport function stopPropagation(event: Event) {\n event.stopPropagation();\n}\n\nexport function preventDefault(event: Event, isStopPropagation?: boolean) {\n if (typeof event.cancelable !== 'boolean' || event.cancelable) {\n // The event can be canceled, so we do so.\n event.preventDefault();\n }\n\n if (isStopPropagation) {\n stopPropagation(event);\n }\n}\n\nexport function hasClass(el: Element, cls: string): any {\n if (!el || !cls) return false;\n if (cls.indexOf(' ') !== -1) throw new Error('className should not contain space.');\n if (el.classList) {\n return el.classList.contains(cls);\n }\n return ` ${el.className} `.indexOf(` ${cls} `) > -1;\n}\n\nexport function addClass(el: Element, cls: string): any {\n if (!el) return;\n let curClass = el.className;\n const classes = (cls || '').split(' ');\n\n for (let i = 0, j = classes.length; i < j; i++) {\n const clsName = classes[i];\n if (!clsName) continue;\n\n if (el.classList) {\n el.classList.add(clsName);\n } else if (!hasClass(el, clsName)) {\n curClass += ` ${clsName}`;\n }\n }\n if (!el.classList) {\n el.className = curClass;\n }\n}\n\nexport function removeClass(el: Element, cls: string): any {\n if (!el || !cls) return;\n const classes = cls.split(' ');\n let curClass = ` ${el.className} `;\n\n for (let i = 0, j = classes.length; i < j; i++) {\n const clsName = classes[i];\n if (!clsName) continue;\n\n if (el.classList) {\n el.classList.remove(clsName);\n } else if (hasClass(el, clsName)) {\n curClass = curClass.replace(` ${clsName} `, ' ');\n }\n }\n if (!el.classList) {\n el.className = trim(curClass);\n }\n}\n\n/**\n * 检查元素是否在父元素视图\n * http://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport\n * @param elm 元素\n * @param parent\n * @returns boolean\n */\nexport function elementInViewport(elm: HTMLElement, parent?: HTMLElement): boolean {\n const rect = elm.getBoundingClientRect();\n if (parent) {\n const parentRect = parent.getBoundingClientRect();\n return (\n rect.top >= parentRect.top &&\n rect.left >= parentRect.left &&\n rect.bottom <= parentRect.bottom &&\n rect.right <= parentRect.right\n );\n }\n return rect.top >= 0 && rect.left >= 0 && rect.bottom + 80 <= window.innerHeight && rect.right <= window.innerWidth;\n}\n\n/**\n * 获取当前视图滑动的距离\n * @returns { scrollTop: number, scrollLeft: number }\n */\nexport function getWindowScroll(): { scrollTop: number; scrollLeft: number } {\n const { body } = document;\n const docElm = document.documentElement;\n const scrollTop = window.pageYOffset || docElm.scrollTop || body.scrollTop;\n const scrollLeft = window.pageXOffset || docElm.scrollLeft || body.scrollLeft;\n\n return { scrollTop, scrollLeft };\n}\n\n/**\n * 获取当前视图的大小\n * @returns { width: number, height: number }\n */\nexport function getWindowSize(): { width: number; height: number } {\n if (window.innerWidth !== undefined) {\n return { width: window.innerWidth, height: window.innerHeight };\n }\n const doc = document.documentElement;\n return { width: doc.clientWidth, height: doc.clientHeight };\n}\n"],"names":["trim","str","replace","getAttach","node","triggerNode","attachNode","isFunction","document","body","isString","querySelector","HTMLElement","getSSRAttach","process","env","NODE_ENV","stopPropagation","event","preventDefault","isStopPropagation","cancelable","hasClass","el","cls","indexOf","Error","classList","contains","concat","className","addClass","curClass","classes","split","i","j","length","clsName","add","removeClass","remove","elementInViewport","elm","parent","rect","getBoundingClientRect","parentRect","top","left","bottom","right","window","innerHeight","innerWidth","getWindowScroll","_document","docElm","documentElement","scrollTop","pageYOffset","scrollLeft","pageXOffset","getWindowSize","width","height","doc","clientWidth","clientHeight"],"mappings":"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"}