element-plus
Version:
A Component Library for Vue 3
1 lines • 5.2 kB
Source Map (JSON)
{"version":3,"file":"style.mjs","sources":["../../../../../packages/utils/dom/style.ts"],"sourcesContent":["import { isNumber, isObject, isString, isStringNumber } from '../types'\nimport { isClient } from '../browser'\nimport { camelize } from '../strings'\nimport { entriesOf, keysOf } from '../objects'\nimport { debugWarn } from '../error'\n\nimport type { CSSProperties } from 'vue'\n\nconst SCOPE = 'utils/dom/style'\n\nexport const classNameToArray = (cls = '') =>\n cls.split(' ').filter((item) => !!item.trim())\n\nexport const hasClass = (el: Element, cls: string): boolean => {\n if (!el || !cls) return false\n if (cls.includes(' ')) throw new Error('className should not contain space.')\n return el.classList.contains(cls)\n}\n\nexport const addClass = (el: Element, cls: string) => {\n if (!el || !cls.trim()) return\n el.classList.add(...classNameToArray(cls))\n}\n\nexport const removeClass = (el: Element, cls: string) => {\n if (!el || !cls.trim()) return\n el.classList.remove(...classNameToArray(cls))\n}\n\nexport const getStyle = (\n element: HTMLElement,\n styleName: keyof CSSProperties\n): string => {\n if (!isClient || !element || !styleName) return ''\n\n let key = camelize(styleName)\n if (key === 'float') key = 'cssFloat'\n try {\n const style = (element.style as any)[key]\n if (style) return style\n const computed: any = document.defaultView?.getComputedStyle(element, '')\n return computed ? computed[key] : ''\n } catch {\n return (element.style as any)[key]\n }\n}\n\nexport const setStyle = (\n element: HTMLElement,\n styleName: CSSProperties | keyof CSSProperties,\n value?: string | number\n) => {\n if (!element || !styleName) return\n\n if (isObject(styleName)) {\n entriesOf(styleName).forEach(([prop, value]) =>\n setStyle(element, prop, value)\n )\n } else {\n const key: any = camelize(styleName)\n element.style[key] = value as any\n }\n}\n\nexport const removeStyle = (\n element: HTMLElement,\n style: CSSProperties | keyof CSSProperties\n) => {\n if (!element || !style) return\n\n if (isObject(style)) {\n keysOf(style).forEach((prop) => removeStyle(element, prop))\n } else {\n setStyle(element, style, '')\n }\n}\n\nexport function addUnit(value?: string | number, defaultUnit = 'px') {\n if (!value && value !== 0) return ''\n if (isNumber(value) || isStringNumber(value)) {\n return `${value}${defaultUnit}`\n } else if (isString(value)) {\n return value\n }\n debugWarn(SCOPE, 'binding value must be a string or number')\n}\n"],"names":["value"],"mappings":"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"}