UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 2.82 kB
{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-lockscreen/index.ts"],"sourcesContent":["import { watch, isRef, onUnmounted } from 'vue'\n\nimport getScrollBarWidth from '@element-plus/utils/scrollbar-width'\nimport { throwError } from '@element-plus/utils/error'\nimport {\n addClass,\n removeClass,\n hasClass,\n getStyle,\n} from '@element-plus/utils/dom'\n\nimport type { Ref } from 'vue'\n\n/**\n * Hook that monitoring the ref value to lock or unlock the screen.\n * When the trigger became true, it assumes modal is now opened and vice versa.\n * @param trigger {Ref<boolean>}\n */\nexport default (trigger: Ref<boolean>) => {\n if (!isRef(trigger)) {\n throwError(\n '[useLockScreen]',\n 'You need to pass a ref param to this function'\n )\n }\n let scrollBarWidth = 0\n let withoutHiddenClass = false\n let bodyPaddingRight = '0'\n let computedBodyPaddingRight = 0\n\n onUnmounted(() => {\n cleanup()\n })\n\n const cleanup = () => {\n removeClass(document.body, 'el-popup-parent--hidden')\n if (withoutHiddenClass) {\n document.body.style.paddingRight = bodyPaddingRight\n }\n }\n watch(trigger, (val) => {\n if (val) {\n withoutHiddenClass = !hasClass(document.body, 'el-popup-parent--hidden')\n if (withoutHiddenClass) {\n bodyPaddingRight = document.body.style.paddingRight\n computedBodyPaddingRight = parseInt(\n getStyle(document.body, 'paddingRight'),\n 10\n )\n }\n scrollBarWidth = getScrollBarWidth()\n const bodyHasOverflow =\n document.documentElement.clientHeight < document.body.scrollHeight\n const bodyOverflowY = getStyle(document.body, 'overflowY')\n if (\n scrollBarWidth > 0 &&\n (bodyHasOverflow || bodyOverflowY === 'scroll') &&\n withoutHiddenClass\n ) {\n document.body.style.paddingRight = `${\n computedBodyPaddingRight + scrollBarWidth\n }px`\n }\n addClass(document.body, 'el-popup-parent--hidden')\n } else {\n cleanup()\n }\n })\n}\n"],"names":["getScrollBarWidth"],"mappings":";;;;;AAkBA,oBAAe,CAAC,YAA0B;AACxC,MAAI,CAAC,MAAM,UAAU;AACnB,eACE,mBACA;AAAA;AAGJ,MAAI,iBAAiB;AACrB,MAAI,qBAAqB;AACzB,MAAI,mBAAmB;AACvB,MAAI,2BAA2B;AAE/B,cAAY,MAAM;AAChB;AAAA;AAGF,QAAM,UAAU,MAAM;AACpB,gBAAY,SAAS,MAAM;AAC3B,QAAI,oBAAoB;AACtB,eAAS,KAAK,MAAM,eAAe;AAAA;AAAA;AAGvC,QAAM,SAAS,CAAC,QAAQ;AACtB,QAAI,KAAK;AACP,2BAAqB,CAAC,SAAS,SAAS,MAAM;AAC9C,UAAI,oBAAoB;AACtB,2BAAmB,SAAS,KAAK,MAAM;AACvC,mCAA2B,SACzB,SAAS,SAAS,MAAM,iBACxB;AAAA;AAGJ,uBAAiBA;AACjB,YAAM,kBACJ,SAAS,gBAAgB,eAAe,SAAS,KAAK;AACxD,YAAM,gBAAgB,SAAS,SAAS,MAAM;AAC9C,UACE,iBAAiB,yBACG,kBAAkB,aACtC,oBACA;AACA,iBAAS,KAAK,MAAM,eAAe,GACjC,2BAA2B;AAAA;AAG/B,eAAS,SAAS,MAAM;AAAA,WACnB;AACL;AAAA;AAAA;AAAA;;;;"}