UNPKG

vuestic-ui

Version:
1 lines 2.23 kB
{"version":3,"file":"useAnchorSelector.mjs","sources":["../../../../../../src/components/va-dropdown/hooks/useAnchorSelector.ts"],"sourcesContent":["import { computed, ref } from 'vue'\n\nimport { MaybeHTMLElementOrSelector, useDocument, useIsMounted } from '../../../composables'\nimport { unwrapEl } from '../../../utils/unwrapEl'\n\nexport const useAnchorSelector = (\n props: {\n anchor: MaybeHTMLElementOrSelector | undefined,\n anchorSelector: string | undefined,\n innerAnchorSelector: string | undefined,\n },\n) => {\n const anchorRef = ref<HTMLElement>()\n const document = useDocument()\n const isMounted = useIsMounted()\n\n const computedAnchorRef = computed<HTMLElement | undefined>({\n set (v: HTMLElement | undefined) {\n anchorRef.value = unwrapEl(v)\n },\n get () {\n // eslint-disable-next-line no-unused-expressions\n isMounted.value // querySelector can return undefined before component mounted\n\n if (typeof props.anchor === 'string') {\n return document.value?.querySelector<HTMLElement>(props.anchor) ?? anchorRef.value\n }\n if (typeof props.anchor === 'object') {\n return props.anchor\n }\n\n if (props.anchorSelector) {\n return document.value?.querySelector<HTMLElement>(props.anchorSelector) ?? anchorRef.value\n } else if (props.innerAnchorSelector && anchorRef.value) {\n return anchorRef.value?.querySelector<HTMLElement>(props.innerAnchorSelector) ?? anchorRef.value\n }\n return anchorRef.value\n },\n })\n\n return {\n anchorRef: computedAnchorRef,\n }\n}\n"],"names":[],"mappings":";;;;AAKa,MAAA,oBAAoB,CAC/B,UAKG;AACH,QAAM,YAAY;AAClB,QAAM,WAAW;AACjB,QAAM,YAAY;AAElB,QAAM,oBAAoB,SAAkC;AAAA,IAC1D,IAAK,GAA4B;AACrB,gBAAA,QAAQ,SAAS,CAAC;AAAA,IAC9B;AAAA,IACA,MAAO;;AAEK,gBAAA;AAEN,UAAA,OAAO,MAAM,WAAW,UAAU;AACpC,iBAAO,cAAS,UAAT,mBAAgB,cAA2B,MAAM,YAAW,UAAU;AAAA,MAC/E;AACI,UAAA,OAAO,MAAM,WAAW,UAAU;AACpC,eAAO,MAAM;AAAA,MACf;AAEA,UAAI,MAAM,gBAAgB;AACxB,iBAAO,cAAS,UAAT,mBAAgB,cAA2B,MAAM,oBAAmB,UAAU;AAAA,MAC5E,WAAA,MAAM,uBAAuB,UAAU,OAAO;AACvD,iBAAO,eAAU,UAAV,mBAAiB,cAA2B,MAAM,yBAAwB,UAAU;AAAA,MAC7F;AACA,aAAO,UAAU;AAAA,IACnB;AAAA,EAAA,CACD;AAEM,SAAA;AAAA,IACL,WAAW;AAAA,EAAA;AAEf;"}