{"version":3,"sources":["webpack:///./node_modules/quasar/src/utils/scroll.js","webpack:///./node_modules/quasar/src/utils/private/position-engine.js","webpack:///./node_modules/quasar/src/mixins/transition.js","webpack:///./node_modules/quasar/src/mixins/history.js","webpack:///./node_modules/quasar/src/mixins/prevent-scroll.js","webpack:///./node_modules/quasar/src/utils/private/escape-key.js","webpack:///./node_modules/quasar/src/components/dialog/QDialog.js","webpack:///./node_modules/quasar/src/utils/private/vm.js","webpack:///./node_modules/quasar/src/components/menu/ClickOutside.js","webpack:///./node_modules/quasar/src/components/menu/QMenu.js","webpack:///./node_modules/quasar/src/components/popup-proxy/QPopupProxy.js","webpack:///./node_modules/quasar/src/mixins/portal.js","webpack:///./node_modules/quasar/src/mixins/anchor.js","webpack:///./node_modules/quasar/src/utils/private/selection.js","webpack:///./node_modules/quasar/src/mixins/attrs.js","webpack:///./node_modules/quasar/src/utils/private/focus-manager.js"],"names":["scrollTargets","document","body","scrollingElement","documentElement","getScrollTarget","el","targetEl","target","Object","closest","window","includes","getVerticalScrollPosition","scrollTarget","pageYOffset","scrollY","scrollTop","getScrollPosition","getHorizontalScrollPosition","pageXOffset","scrollX","scrollLeft","size","getScrollbarWidth","inner","createElement","outer","width","height","position","top","left","visibility","overflow","appendChild","w1","offsetWidth","style","w2","clientWidth","remove","hasScrollbar","onY","nodeType","Node","ELEMENT_NODE","scrollHeight","clientHeight","classList","contains","getComputedStyle","scrollWidth","vpLeft","vpTop","validatePosition","pos","parts","split","length","console","error","validateOffset","val","horizontalPos","parsePosition","rtl","vertical","horizontal","getAnchorProps","offset","right","bottom","getBoundingClientRect","middle","center","getTargetProps","offsetHeight","setPosition","cfg","is","ios","visualViewport","offsetLeft","offsetTop","setProperty","anchorProps","absoluteOffset","anchorEl","cover","anchorTop","anchorLeft","elStyle","maxHeight","maxWidth","fit","minWidth","minHeight","assign","targetProps","props","anchorOrigin","selfOrigin","applyBoundaries","currentHeight","currentWidth","margin","innerHeight","innerWidth","Math","max","min","anchorY","anchorX","forEach","transitionShow","type","String","default","transitionHide","computed","show","this","defaultTransitionShow","hide","defaultTransitionHide","appear","enterClass","enterActiveClass","enterToClass","leaveClass","leaveActiveClass","leaveToClass","methods","__historyEntry","condition","hideOnRouteChange","handler","add","showing","__removeHistory","scrollPositionX","scrollPositionY","maxScrollTop","bodyLeft","bodyTop","closeTimer","registered","vpPendingUpdate","onWheel","e","shouldPreventScroll","path","shift","shiftKey","deltaX","abs","deltaY","delta","index","onAppleScroll","onAppleResize","evt","requestAnimationFrame","ceil","apply","action","hasViewport","overflowY","qScrollPrevented","scrollTo","addEventListener","passiveCapture","desktop","mac","notPassive","removeEventListener","preventScroll","state","clearTimeout","nativeMobile","setTimeout","preventedScroll","handlers","escDown","__installed","keyCode","fn","comp","$q","platform","__install","push","findIndex","h","splice","maximizedModals","positionClass","standard","defaultTransitions","backdropAttrs","tabindex","extend","name","mixins","persistent","Boolean","autoClose","allowFocusOutside","noEscDismiss","noBackdropDismiss","noRouteDismiss","noRefocus","noFocus","noShake","seamless","maximized","fullWidth","fullHeight","square","validator","animating","watch","__updateMaximized","v","__preventScroll","__preventFocusout","on","qListeners","input","click","__onAutoClose","role","useBackdrop","qAttrs","selector","node","__getInnerNode","activeElement","querySelector","focus","focusTarget","$emit","shakeTimeout","__portal","$refs","__addHistory","__refocusTarget","mobile","$el","dispatchEvent","bubbles","register","escEvt","shake","__showPortal","blur","__registerTick","__removeTick","__registerTimeout","Infinity","scrollIntoView","__cleanup","__hidePortal","indexOf","hiding","pop","active","isMaximized","__onFocusChange","relatedTarget","__portalIsAccessible","staticClass","class","contentClass","contentStyle","attrs","cache","focusin","__onBackdropClick","transitionProps","ref","classes","onEvents","slot","__useTick","__useTimeout","__processModelChange","value","getVmOfNode","parentNode","__vue__","isVmChildOf","childVm","parentVm","vm","$parent","timer","notPassiveCapture","hasModalsAbove","nextElementSibling","execHandlers","list","i","globalHandler","ie","hasAttribute","arg","vnode","vmEl","componentInstance","context","ctx","trigger","toggleEl","qClickOutside","__qclickoutside","__qclickoutside_old","timerFocusin","oldValue","indexClick","indexFocus","directives","ClickOutside","separateClosePopup","anchor","self","Array","touchPosition","lang","isDark","__configureScrollTarget","contextMenu","unwatch","$watch","screen","updatePosition","__avoidAutoClose","__anchorCleanup","__unconfigureScrollTarget","__scrollTarget","__changeScrollEvent","targetClassList","menuClass","__onClickOutside","breakpoint","Number","parseInt","__onHide","popup","__updateType","parsedBreakpoint","toggle","def","componentOptions","Ctor","sealedOptions","data","component","QDialog","QMenu","noParentEvent","closePortalMenus","$options","__renderPortal","isOnGlobalDialog","Portal","inheritAttrs","isReady","focusObj","__portalIsActive","fullscreen","isCapable","append","newParent","activeEl","parentElement","__onGlobalDialog","unwatchFullscreen","isActive","$destroy","parent","render","components","$mount","$forceUpdate","created","__unconfigureAnchorEl","__configureAnchorEl","__pickAnchorEl","touches","$nextTick","touchTimer","__mobilePrevent","__mobileCleanup","__showCondition","evts","parentEl","__setAnchorEl","fnProp","fnHandler","__scrollFn","passive","noParentEventWatcher","clearSelection","getSelection","selection","empty","removeAllRanges","addRange","createRange","ariaHidden","iconAsButton","queue","waitFlags","clearFlag","flag","filter","entry","addFocusWaitFlag","removeFocusWaitFlag","addFocusFn","removeFocusFn"],"mappings":"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","file":"js/chunk-f33ccd42.88094295.js","sourcesContent":["import { isSSR } from '../plugins/Platform.js'\nimport { css, getElement } from './dom.js'\n\nconst scrollTargets = isSSR === true\n ? []\n : [ null, document, document.body, document.scrollingElement, document.documentElement ]\n\nlet rtlHasScrollBugStatus\nexport function rtlHasScrollBug () {\n if (isSSR === true) {\n return false\n }\n\n if (rtlHasScrollBugStatus === void 0) {\n const scroller = document.createElement('div')\n const spacer = document.createElement('div')\n\n Object.assign(scroller.style, {\n direction: 'rtl',\n width: '1px',\n height: '1px',\n overflow: 'auto'\n })\n\n Object.assign(spacer.style, {\n width: '1000px',\n height: '1px'\n })\n\n scroller.appendChild(spacer)\n document.body.appendChild(scroller)\n scroller.scrollLeft = -1000\n\n rtlHasScrollBugStatus = scroller.scrollLeft >= 0\n\n scroller.remove()\n }\n\n return rtlHasScrollBugStatus\n}\n\nexport function getScrollTarget (el, targetEl) {\n let target = getElement(targetEl)\n\n if (target === null) {\n if (el !== Object(el) || typeof el.closest !== 'function') {\n return window\n }\n\n target = el.closest('.scroll,.scroll-y,.overflow-auto')\n }\n\n return scrollTargets.includes(target)\n ? window\n : target\n}\n\nexport function getScrollHeight (el) {\n return (el === window ? document.body : el).scrollHeight\n}\n\nexport function getScrollWidth (el) {\n return (el === window ? document.body : el).scrollWidth\n}\n\nexport function getVerticalScrollPosition (scrollTarget) {\n return scrollTarget === window\n ? window.pageYOffset || window.scrollY || document.body.scrollTop || 0\n : scrollTarget.scrollTop\n}\n\nexport const getScrollPosition = getVerticalScrollPosition\n\nexport function getHorizontalScrollPosition (scrollTarget) {\n return scrollTarget === window\n ? window.pageXOffset || window.scrollX || document.body.scrollLeft || 0\n : scrollTarget.scrollLeft\n}\n\nexport function animVerticalScrollTo (el, to, duration = 0 /* , prevTime */) {\n const prevTime = arguments[ 3 ] === void 0 ? performance.now() : arguments[ 3 ]\n const pos = getVerticalScrollPosition(el)\n\n if (duration <= 0) {\n if (pos !== to) {\n setScroll(el, to)\n }\n return\n }\n\n requestAnimationFrame(nowTime => {\n const frameTime = nowTime - prevTime\n const newPos = pos + (to - pos) / Math.max(frameTime, duration) * frameTime\n setScroll(el, newPos)\n if (newPos !== to) {\n animVerticalScrollTo(el, to, duration - frameTime, nowTime)\n }\n })\n}\n\nexport const animScrollTo = animVerticalScrollTo\n\nexport function animHorizontalScrollTo (el, to, duration = 0 /* , prevTime */) {\n const prevTime = arguments[ 3 ] === void 0 ? performance.now() : arguments[ 3 ]\n const pos = getHorizontalScrollPosition(el)\n\n if (duration <= 0) {\n if (pos !== to) {\n setHorizontalScroll(el, to)\n }\n return\n }\n\n requestAnimationFrame(nowTime => {\n const frameTime = nowTime - prevTime\n const newPos = pos + (to - pos) / Math.max(frameTime, duration) * frameTime\n setHorizontalScroll(el, newPos)\n if (newPos !== to) {\n animHorizontalScrollTo(el, to, duration - frameTime, nowTime)\n }\n })\n}\n\nfunction setScroll (scrollTarget, offset) {\n if (scrollTarget === window) {\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, offset)\n return\n }\n scrollTarget.scrollTop = offset\n}\n\nfunction setHorizontalScroll (scrollTarget, offset) {\n if (scrollTarget === window) {\n window.scrollTo(offset, window.pageYOffset || window.scrollY || document.body.scrollTop || 0)\n return\n }\n scrollTarget.scrollLeft = offset\n}\n\nexport function setVerticalScrollPosition (scrollTarget, offset, duration) {\n if (duration) {\n animVerticalScrollTo(scrollTarget, offset, duration)\n return\n }\n setScroll(scrollTarget, offset)\n}\n\nexport const setScrollPosition = setVerticalScrollPosition\n\nexport function setHorizontalScrollPosition (scrollTarget, offset, duration) {\n if (duration) {\n animHorizontalScrollTo(scrollTarget, offset, duration)\n return\n }\n setHorizontalScroll(scrollTarget, offset)\n}\n\nlet size\nexport function getScrollbarWidth () {\n if (size !== void 0) {\n return size\n }\n\n const\n inner = document.createElement('p'),\n outer = document.createElement('div')\n\n css(inner, {\n width: '100%',\n height: '200px'\n })\n css(outer, {\n position: 'absolute',\n top: '0px',\n left: '0px',\n visibility: 'hidden',\n width: '200px',\n height: '150px',\n overflow: 'hidden'\n })\n\n outer.appendChild(inner)\n\n document.body.appendChild(outer)\n\n const w1 = inner.offsetWidth\n outer.style.overflow = 'scroll'\n let w2 = inner.offsetWidth\n\n if (w1 === w2) {\n w2 = outer.clientWidth\n }\n\n outer.remove()\n size = w1 - w2\n\n return size\n}\n\nexport function hasScrollbar (el, onY = true) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) {\n return false\n }\n\n return onY\n ? (\n el.scrollHeight > el.clientHeight && (\n el.classList.contains('scroll') ||\n el.classList.contains('overflow-auto') ||\n [ 'auto', 'scroll' ].includes(window.getComputedStyle(el)['overflow-y'])\n )\n )\n : (\n el.scrollWidth > el.clientWidth && (\n el.classList.contains('scroll') ||\n el.classList.contains('overflow-auto') ||\n [ 'auto', 'scroll' ].includes(window.getComputedStyle(el)['overflow-x'])\n )\n )\n}\n\nexport default {\n getScrollTarget,\n\n getScrollHeight,\n getScrollWidth,\n\n getScrollPosition,\n getVerticalScrollPosition,\n getHorizontalScrollPosition,\n rtlHasScrollBug,\n\n animScrollTo,\n animVerticalScrollTo,\n animHorizontalScrollTo,\n\n setScrollPosition,\n setVerticalScrollPosition,\n setHorizontalScrollPosition,\n\n getScrollbarWidth,\n hasScrollbar\n}\n","import { getScrollbarWidth } from '../scroll.js'\nimport { client } from '../../plugins/Platform.js'\n\nlet vpLeft, vpTop\n\nexport function validatePosition (pos) {\n const parts = pos.split(' ')\n if (parts.length !== 2) {\n return false\n }\n if ([ 'top', 'center', 'bottom' ].includes(parts[0]) !== true) {\n console.error('Anchor/Self position must start with one of top/center/bottom')\n return false\n }\n if ([ 'left', 'middle', 'right', 'start', 'end' ].includes(parts[1]) !== true) {\n console.error('Anchor/Self position must end with one of left/middle/right/start/end')\n return false\n }\n return true\n}\n\nexport function validateOffset (val) {\n if (!val) { return true }\n if (val.length !== 2) { return false }\n if (typeof val[0] !== 'number' || typeof val[1] !== 'number') {\n return false\n }\n return true\n}\n\nconst horizontalPos = {\n 'start#ltr': 'left',\n 'start#rtl': 'right',\n 'end#ltr': 'right',\n 'end#rtl': 'left'\n}\n\n;[ 'left', 'middle', 'right' ].forEach(pos => {\n horizontalPos[`${pos}#ltr`] = pos\n horizontalPos[`${pos}#rtl`] = pos\n})\n\nexport function parsePosition (pos, rtl) {\n const parts = pos.split(' ')\n return {\n vertical: parts[0],\n horizontal: horizontalPos[`${parts[1]}#${rtl === true ? 'rtl' : 'ltr'}`]\n }\n}\n\nexport function validateCover (val) {\n if (val === true || val === false) { return true }\n return validatePosition(val)\n}\n\nexport function getAnchorProps (el, offset) {\n let { top, left, right, bottom, width, height } = el.getBoundingClientRect()\n\n if (offset !== void 0) {\n top -= offset[1]\n left -= offset[0]\n bottom += offset[1]\n right += offset[0]\n\n width += offset[0]\n height += offset[1]\n }\n\n return {\n top,\n left,\n right,\n bottom,\n width,\n height,\n middle: left + (right - left) / 2,\n center: top + (bottom - top) / 2\n }\n}\n\nexport function getTargetProps (el) {\n return {\n top: 0,\n center: el.offsetHeight / 2,\n bottom: el.offsetHeight,\n left: 0,\n middle: el.offsetWidth / 2,\n right: el.offsetWidth\n }\n}\n\n// cfg: { el, anchorEl, anchorOrigin, selfOrigin, offset, absoluteOffset, cover, fit, maxHeight, maxWidth }\nexport function setPosition (cfg) {\n if (client.is.ios === true && window.visualViewport !== void 0) {\n // uses the q-position-engine CSS class\n\n const el = document.body.style\n const { offsetLeft: left, offsetTop: top } = window.visualViewport\n\n if (left !== vpLeft) {\n el.setProperty('--q-pe-left', left + 'px')\n vpLeft = left\n }\n if (top !== vpTop) {\n el.setProperty('--q-pe-top', top + 'px')\n vpTop = top\n }\n }\n\n let anchorProps\n\n // scroll position might change\n // if max-height/-width changes, so we\n // need to restore it after we calculate\n // the new positioning\n const { scrollLeft, scrollTop } = cfg.el\n\n if (cfg.absoluteOffset === void 0) {\n anchorProps = getAnchorProps(cfg.anchorEl, cfg.cover === true ? [0, 0] : cfg.offset)\n }\n else {\n const\n { top: anchorTop, left: anchorLeft } = cfg.anchorEl.getBoundingClientRect(),\n top = anchorTop + cfg.absoluteOffset.top,\n left = anchorLeft + cfg.absoluteOffset.left\n\n anchorProps = { top, left, width: 1, height: 1, right: left + 1, center: top, middle: left, bottom: top + 1 }\n }\n\n let elStyle = {\n maxHeight: cfg.maxHeight,\n maxWidth: cfg.maxWidth,\n visibility: 'visible'\n }\n\n if (cfg.fit === true || cfg.cover === true) {\n elStyle.minWidth = anchorProps.width + 'px'\n if (cfg.cover === true) {\n elStyle.minHeight = anchorProps.height + 'px'\n }\n }\n\n Object.assign(cfg.el.style, elStyle)\n\n const\n targetProps = getTargetProps(cfg.el),\n props = {\n top: anchorProps[cfg.anchorOrigin.vertical] - targetProps[cfg.selfOrigin.vertical],\n left: anchorProps[cfg.anchorOrigin.horizontal] - targetProps[cfg.selfOrigin.horizontal]\n }\n\n applyBoundaries(props, anchorProps, targetProps, cfg.anchorOrigin, cfg.selfOrigin)\n\n elStyle = {\n top: props.top + 'px',\n left: props.left + 'px'\n }\n\n if (props.maxHeight !== void 0) {\n elStyle.maxHeight = props.maxHeight + 'px'\n\n if (anchorProps.height > props.maxHeight) {\n elStyle.minHeight = elStyle.maxHeight\n }\n }\n if (props.maxWidth !== void 0) {\n elStyle.maxWidth = props.maxWidth + 'px'\n\n if (anchorProps.width > props.maxWidth) {\n elStyle.minWidth = elStyle.maxWidth\n }\n }\n\n Object.assign(cfg.el.style, elStyle)\n\n // restore scroll position\n if (cfg.el.scrollTop !== scrollTop) {\n cfg.el.scrollTop = scrollTop\n }\n if (cfg.el.scrollLeft !== scrollLeft) {\n cfg.el.scrollLeft = scrollLeft\n }\n}\n\nfunction applyBoundaries (props, anchorProps, targetProps, anchorOrigin, selfOrigin) {\n const\n currentHeight = targetProps.bottom,\n currentWidth = targetProps.right,\n margin = getScrollbarWidth(),\n innerHeight = window.innerHeight - margin,\n innerWidth = document.body.clientWidth\n\n if (props.top < 0 || props.top + currentHeight > innerHeight) {\n if (selfOrigin.vertical === 'center') {\n props.top = anchorProps[anchorOrigin.vertical] > innerHeight / 2\n ? Math.max(0, innerHeight - currentHeight)\n : 0\n props.maxHeight = Math.min(currentHeight, innerHeight)\n }\n else if (anchorProps[anchorOrigin.vertical] > innerHeight / 2) {\n const anchorY = Math.min(\n innerHeight,\n anchorOrigin.vertical === 'center'\n ? anchorProps.center\n : (anchorOrigin.vertical === selfOrigin.vertical ? anchorProps.bottom : anchorProps.top)\n )\n props.maxHeight = Math.min(currentHeight, anchorY)\n props.top = Math.max(0, anchorY - currentHeight)\n }\n else {\n props.top = Math.max(0, anchorOrigin.vertical === 'center'\n ? anchorProps.center\n : (anchorOrigin.vertical === selfOrigin.vertical ? anchorProps.top : anchorProps.bottom)\n )\n props.maxHeight = Math.min(currentHeight, innerHeight - props.top)\n }\n }\n\n if (props.left < 0 || props.left + currentWidth > innerWidth) {\n props.maxWidth = Math.min(currentWidth, innerWidth)\n if (selfOrigin.horizontal === 'middle') {\n props.left = anchorProps[anchorOrigin.horizontal] > innerWidth / 2\n ? Math.max(0, innerWidth - currentWidth)\n : 0\n }\n else if (anchorProps[anchorOrigin.horizontal] > innerWidth / 2) {\n const anchorX = Math.min(\n innerWidth,\n anchorOrigin.horizontal === 'middle'\n ? anchorProps.middle\n : (anchorOrigin.horizontal === selfOrigin.horizontal ? anchorProps.right : anchorProps.left)\n )\n props.maxWidth = Math.min(currentWidth, anchorX)\n props.left = Math.max(0, anchorX - props.maxWidth)\n }\n else {\n props.left = Math.max(0, anchorOrigin.horizontal === 'middle'\n ? anchorProps.middle\n : (anchorOrigin.horizontal === selfOrigin.horizontal ? anchorProps.left : anchorProps.right)\n )\n props.maxWidth = Math.min(currentWidth, innerWidth - props.left)\n }\n }\n}\n","export default {\n props: {\n transitionShow: {\n type: String,\n default: 'fade'\n },\n\n transitionHide: {\n type: String,\n default: 'fade'\n }\n },\n\n computed: {\n transitionProps () {\n const show = `q-transition--${this.transitionShow || this.defaultTransitionShow}`\n const hide = `q-transition--${this.transitionHide || this.defaultTransitionHide}`\n\n return {\n appear: true,\n\n enterClass: `${show}-enter`,\n enterActiveClass: `${show}-enter-active`,\n enterToClass: `${show}-enter-to`,\n\n leaveClass: `${hide}-leave`,\n leaveActiveClass: `${hide}-leave-active`,\n leaveToClass: `${hide}-leave-to`\n }\n }\n }\n}\n","import History from '../history.js'\n\nexport default {\n methods: {\n __addHistory () {\n this.__historyEntry = {\n condition: () => { return this.hideOnRouteChange === true },\n handler: this.hide\n }\n History.add(this.__historyEntry)\n },\n\n __removeHistory () {\n if (this.__historyEntry !== void 0) {\n History.remove(this.__historyEntry)\n this.__historyEntry = void 0\n }\n }\n },\n\n beforeDestroy () {\n this.showing === true && this.__removeHistory()\n }\n}\n","import { getEventPath, listenOpts, stopAndPrevent } from '../utils/event.js'\nimport { hasScrollbar, getScrollPosition, getHorizontalScrollPosition } from '../utils/scroll.js'\nimport { client } from '../plugins/Platform.js'\n\nlet\n registered = 0,\n scrollPositionX,\n scrollPositionY,\n maxScrollTop,\n vpPendingUpdate = false,\n bodyLeft,\n bodyTop,\n closeTimer\n\nfunction onWheel (e) {\n if (shouldPreventScroll(e)) {\n stopAndPrevent(e)\n }\n}\n\nfunction shouldPreventScroll (e) {\n if (e.target === document.body || e.target.classList.contains('q-layout__backdrop')) {\n return true\n }\n\n const\n path = getEventPath(e),\n shift = e.shiftKey && !e.deltaX,\n scrollY = !shift && Math.abs(e.deltaX) <= Math.abs(e.deltaY),\n delta = shift || scrollY ? e.deltaY : e.deltaX\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (hasScrollbar(el, scrollY)) {\n return scrollY\n ? (\n delta < 0 && el.scrollTop === 0\n ? true\n : delta > 0 && el.scrollTop + el.clientHeight === el.scrollHeight\n )\n : (\n delta < 0 && el.scrollLeft === 0\n ? true\n : delta > 0 && el.scrollLeft + el.clientWidth === el.scrollWidth\n )\n }\n }\n\n return true\n}\n\nfunction onAppleScroll (e) {\n if (e.target === document) {\n // required, otherwise iOS blocks further scrolling\n // until the mobile scrollbar dissappears\n document.scrollingElement.scrollTop = document.scrollingElement.scrollTop // eslint-disable-line\n }\n}\n\nfunction onAppleResize (evt) {\n if (vpPendingUpdate === true) {\n return\n }\n\n vpPendingUpdate = true\n\n requestAnimationFrame(() => {\n vpPendingUpdate = false\n\n const\n { height } = evt.target,\n { clientHeight, scrollTop } = document.scrollingElement\n\n if (maxScrollTop === void 0 || height !== window.innerHeight) {\n maxScrollTop = clientHeight - height\n document.scrollingElement.scrollTop = scrollTop\n }\n\n if (scrollTop > maxScrollTop) {\n document.scrollingElement.scrollTop -= Math.ceil((scrollTop - maxScrollTop) / 8)\n }\n })\n}\n\nfunction apply (action) {\n const\n body = document.body,\n hasViewport = window.visualViewport !== void 0\n\n if (action === 'add') {\n const overflowY = window.getComputedStyle(body).overflowY\n\n scrollPositionX = getHorizontalScrollPosition(window)\n scrollPositionY = getScrollPosition(window)\n bodyLeft = body.style.left\n bodyTop = body.style.top\n\n body.style.left = `-${scrollPositionX}px`\n body.style.top = `-${scrollPositionY}px`\n if (overflowY !== 'hidden' && (overflowY === 'scroll' || body.scrollHeight > window.innerHeight)) {\n body.classList.add('q-body--force-scrollbar')\n }\n\n body.classList.add('q-body--prevent-scroll')\n document.qScrollPrevented = true\n if (client.is.ios === true) {\n if (hasViewport === true) {\n window.scrollTo(0, 0)\n window.visualViewport.addEventListener('resize', onAppleResize, listenOpts.passiveCapture)\n window.visualViewport.addEventListener('scroll', onAppleResize, listenOpts.passiveCapture)\n window.scrollTo(0, 0)\n }\n else {\n window.addEventListener('scroll', onAppleScroll, listenOpts.passiveCapture)\n }\n }\n }\n\n if (client.is.desktop === true && client.is.mac === true) {\n // ref. https://developers.google.com/web/updates/2017/01/scrolling-intervention\n window[`${action}EventListener`]('wheel', onWheel, listenOpts.notPassive)\n }\n\n if (action === 'remove') {\n if (client.is.ios === true) {\n if (hasViewport === true) {\n window.visualViewport.removeEventListener('resize', onAppleResize, listenOpts.passiveCapture)\n window.visualViewport.removeEventListener('scroll', onAppleResize, listenOpts.passiveCapture)\n }\n else {\n window.removeEventListener('scroll', onAppleScroll, listenOpts.passiveCapture)\n }\n }\n\n body.classList.remove('q-body--prevent-scroll')\n body.classList.remove('q-body--force-scrollbar')\n document.qScrollPrevented = false\n\n body.style.left = bodyLeft\n body.style.top = bodyTop\n\n window.scrollTo(scrollPositionX, scrollPositionY)\n maxScrollTop = void 0\n }\n}\n\nexport function preventScroll (state) {\n let action = 'add'\n\n if (state === true) {\n registered++\n\n if (closeTimer !== void 0) {\n clearTimeout(closeTimer)\n closeTimer = void 0\n return\n }\n\n if (registered > 1) {\n return\n }\n }\n else {\n if (registered === 0) {\n return\n }\n\n registered--\n\n if (registered > 0) {\n return\n }\n\n action = 'remove'\n\n if (client.is.ios === true && client.is.nativeMobile === true) {\n clearTimeout(closeTimer)\n\n closeTimer = setTimeout(() => {\n apply(action)\n closeTimer = void 0\n }, 100)\n return\n }\n }\n\n apply(action)\n}\n\nexport default {\n methods: {\n __preventScroll (state) {\n if (\n state !== this.preventedScroll &&\n (this.preventedScroll !== void 0 || state === true)\n ) {\n this.preventedScroll = state\n preventScroll(state)\n }\n }\n }\n}\n","import { isKeyCode } from './key-composition.js'\n\nconst handlers = []\nlet escDown = false\n\nexport default {\n __install () {\n this.__installed = true\n window.addEventListener('keydown', evt => {\n escDown = evt.keyCode === 27\n })\n window.addEventListener('blur', () => {\n escDown === true && (escDown = false)\n })\n window.addEventListener('keyup', evt => {\n if (escDown === true) {\n escDown = false\n\n if (handlers.length !== 0 && isKeyCode(evt, 27) === true) {\n handlers[handlers.length - 1].fn(evt)\n }\n }\n })\n },\n\n register (comp, fn) {\n if (comp.$q.platform.is.desktop === true) {\n this.__installed !== true && this.__install()\n handlers.push({ comp, fn })\n }\n },\n\n pop (comp) {\n if (comp.$q.platform.is.desktop === true) {\n const index = handlers.findIndex(h => h.comp === comp)\n if (index > -1) {\n handlers.splice(index, 1)\n }\n }\n }\n}\n","import Vue from 'vue'\n\nimport HistoryMixin from '../../mixins/history.js'\nimport TimeoutMixin from '../../mixins/timeout.js'\nimport ModelToggleMixin from '../../mixins/model-toggle.js'\nimport PortalMixin from '../../mixins/portal.js'\nimport PreventScrollMixin from '../../mixins/prevent-scroll.js'\nimport AttrsMixin, { ariaHidden } from '../../mixins/attrs.js'\nimport TransitionMixin from '../../mixins/transition.js'\n\nimport { childHasFocus } from '../../utils/dom.js'\nimport EscapeKey from '../../utils/private/escape-key.js'\nimport { slot } from '../../utils/private/slot.js'\nimport { create, stop } from '../../utils/event.js'\nimport cache from '../../utils/private/cache.js'\nimport { addFocusFn } from '../../utils/private/focus-manager.js'\nimport { client } from '../../plugins/Platform.js'\n\nlet maximizedModals = 0\n\nconst positionClass = {\n standard: 'fixed-full flex-center',\n top: 'fixed-top justify-center',\n bottom: 'fixed-bottom justify-center',\n right: 'fixed-right items-center',\n left: 'fixed-left items-center'\n}\n\nconst defaultTransitions = {\n standard: ['scale', 'scale'],\n top: ['slide-down', 'slide-up'],\n bottom: ['slide-up', 'slide-down'],\n right: ['slide-left', 'slide-right'],\n left: ['slide-right', 'slide-left']\n}\n\nconst backdropAttrs = {\n ...ariaHidden,\n tabindex: -1\n}\n\nexport default Vue.extend({\n name: 'QDialog',\n\n mixins: [\n AttrsMixin,\n TransitionMixin,\n HistoryMixin,\n TimeoutMixin,\n ModelToggleMixin,\n PortalMixin,\n PreventScrollMixin\n ],\n\n props: {\n persistent: Boolean,\n autoClose: Boolean,\n allowFocusOutside: Boolean,\n\n noEscDismiss: Boolean,\n noBackdropDismiss: Boolean,\n noRouteDismiss: Boolean,\n noRefocus: Boolean,\n noFocus: Boolean,\n noShake: Boolean,\n\n seamless: Boolean,\n\n maximized: Boolean,\n fullWidth: Boolean,\n fullHeight: Boolean,\n\n square: Boolean,\n\n position: {\n type: String,\n default: 'standard',\n validator: val => val === 'standard' ||\n ['top', 'bottom', 'left', 'right'].includes(val)\n },\n\n transitionShow: String,\n transitionHide: String\n },\n\n data () {\n return {\n animating: false\n }\n },\n\n watch: {\n maximized (state) {\n this.showing === true && this.__updateMaximized(state)\n },\n\n useBackdrop (v) {\n this.__preventScroll(v)\n this.__preventFocusout(v)\n }\n },\n\n computed: {\n classes () {\n return `q-dialog__inner--${this.maximized === true ? 'maximized' : 'minimized'} ` +\n `q-dialog__inner--${this.position} ${positionClass[this.position]}` +\n (this.animating === true ? ' q-dialog__inner--animating' : '') +\n (this.fullWidth === true ? ' q-dialog__inner--fullwidth' : '') +\n (this.fullHeight === true ? ' q-dialog__inner--fullheight' : '') +\n (this.square === true ? ' q-dialog__inner--square' : '')\n },\n\n defaultTransitionShow () {\n return defaultTransitions[this.position][0]\n },\n\n defaultTransitionHide () {\n return defaultTransitions[this.position][1]\n },\n\n useBackdrop () {\n return this.showing === true && this.seamless !== true\n },\n\n hideOnRouteChange () {\n return this.persistent !== true &&\n this.noRouteDismiss !== true &&\n this.seamless !== true\n },\n\n onEvents () {\n const on = {\n ...this.qListeners,\n // stop propagating these events from children\n input: stop,\n 'popup-show': stop,\n 'popup-hide': stop\n }\n\n if (this.autoClose === true) {\n on.click = this.__onAutoClose\n }\n\n return on\n },\n\n attrs () {\n return {\n role: 'dialog',\n 'aria-modal': this.useBackdrop === true ? 'true' : 'false',\n ...this.qAttrs\n }\n }\n },\n\n methods: {\n focus (selector) {\n addFocusFn(() => {\n let node = this.__getInnerNode()\n\n if (node === void 0 || node.contains(document.activeElement) === true) {\n return\n }\n\n node = (selector !== '' ? node.querySelector(selector) : null) ||\n node.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]') ||\n node.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]') ||\n node.querySelector('[autofocus], [data-autofocus]') ||\n node\n node.focus({ preventScroll: true })\n })\n },\n\n shake (focusTarget) {\n if (focusTarget && typeof focusTarget.focus === 'function') {\n focusTarget.focus({ preventScroll: true })\n }\n else {\n this.focus()\n }\n\n this.$emit('shake')\n\n const node = this.__getInnerNode()\n\n if (node !== void 0) {\n node.classList.remove('q-animate--scale')\n node.classList.add('q-animate--scale')\n clearTimeout(this.shakeTimeout)\n this.shakeTimeout = setTimeout(() => {\n node.classList.remove('q-animate--scale')\n }, 170)\n }\n },\n\n __getInnerNode () {\n return this.__portal !== void 0 && this.__portal.$refs !== void 0\n ? this.__portal.$refs.inner\n : void 0\n },\n\n __show (evt) {\n this.__addHistory()\n\n // IE can have null document.activeElement\n this.__refocusTarget = client.is.mobile !== true && this.noRefocus === false && document.activeElement !== null\n ? document.activeElement\n : void 0\n\n this.$el.dispatchEvent(create('popup-show', { bubbles: true }))\n this.__updateMaximized(this.maximized)\n\n EscapeKey.register(this, escEvt => {\n if (this.seamless !== true) {\n if (this.persistent === true || this.noEscDismiss === true) {\n this.maximized !== true && this.noShake !== true && this.shake()\n }\n else {\n this.$emit('escape-key')\n this.hide(escEvt)\n }\n }\n })\n\n this.__showPortal()\n this.animating = true\n\n if (this.noFocus !== true) {\n // IE can have null document.activeElement\n document.activeElement !== null && document.activeElement.blur()\n this.__registerTick(this.focus)\n }\n else {\n this.__removeTick()\n }\n\n // should __removeTimeout() if this gets removed\n this.__registerTimeout(() => {\n if (this.$q.platform.is.ios === true) {\n if (this.seamless !== true && document.activeElement) {\n const\n { top, bottom } = document.activeElement.getBoundingClientRect(),\n { innerHeight } = window,\n height = window.visualViewport !== void 0\n ? window.visualViewport.height\n : innerHeight\n\n if (top > 0 && bottom > height / 2) {\n document.scrollingElement.scrollTop = Math.min(\n document.scrollingElement.scrollHeight - height,\n bottom >= innerHeight\n ? Infinity\n : Math.ceil(document.scrollingElement.scrollTop + bottom - height / 2)\n )\n }\n\n document.activeElement.scrollIntoView()\n }\n\n // required in order to avoid the \"double-tap needed\" issue\n this.__portal.$el.click()\n }\n\n this.animating = false\n this.__showPortal(true) // done showing\n this.$emit('show', evt)\n }, 300)\n },\n\n __hide (evt) {\n this.__removeTick()\n this.__removeHistory()\n this.__cleanup(true)\n this.__hidePortal()\n this.animating = true\n\n // check null for IE\n if (this.__refocusTarget !== void 0 && this.__refocusTarget !== null) {\n ((evt && evt.type.indexOf('key') === 0\n ? this.__refocusTarget.closest('[tabindex]:not([tabindex^=\"-\"])')\n : void 0\n ) || this.__refocusTarget).focus()\n this.__refocusTarget = void 0\n }\n\n this.$el.dispatchEvent(create('popup-hide', { bubbles: true }))\n\n // should __removeTimeout() if this gets removed\n this.__registerTimeout(() => {\n this.__hidePortal(true) // done hiding, now destroy\n this.animating = false\n this.$emit('hide', evt)\n }, 300)\n },\n\n __cleanup (hiding) {\n clearTimeout(this.shakeTimeout)\n\n if (hiding === true || this.showing === true) {\n EscapeKey.pop(this)\n this.__updateMaximized(false)\n\n if (this.seamless !== true) {\n this.__preventScroll(false)\n this.__preventFocusout(false)\n }\n }\n },\n\n __updateMaximized (active) {\n if (active === true) {\n if (this.isMaximized !== true) {\n maximizedModals < 1 && document.body.classList.add('q-body--dialog')\n maximizedModals++\n\n this.isMaximized = true\n }\n }\n else if (this.isMaximized === true) {\n if (maximizedModals < 2) {\n document.body.classList.remove('q-body--dialog')\n }\n\n maximizedModals--\n this.isMaximized = false\n }\n },\n\n __preventFocusout (state) {\n if (this.$q.platform.is.desktop === true) {\n const action = `${state === true ? 'add' : 'remove'}EventListener`\n document.body[action]('focusin', this.__onFocusChange)\n }\n },\n\n __onAutoClose (e) {\n this.hide(e)\n this.qListeners.click !== void 0 && this.$emit('click', e)\n },\n\n __onBackdropClick (e) {\n if (this.persistent !== true && this.noBackdropDismiss !== true) {\n this.hide(e)\n }\n else if (this.noShake !== true) {\n this.shake(e.relatedTarget)\n }\n },\n\n __onFocusChange (e) {\n // the focus is not in a vue child component\n if (\n this.allowFocusOutside !== true &&\n this.__portalIsAccessible === true &&\n childHasFocus(this.__portal.$el, e.target) !== true\n ) {\n this.focus('[tabindex]:not([tabindex=\"-1\"])')\n }\n },\n\n __renderPortal (h) {\n return h('div', {\n staticClass: `q-dialog fullscreen no-pointer-events q-dialog--${this.useBackdrop === true ? 'modal' : 'seamless'}`,\n class: this.contentClass,\n style: this.contentStyle,\n attrs: this.attrs\n }, [\n h('transition', {\n props: { name: 'q-transition--fade' }\n }, this.useBackdrop === true ? [\n h('div', {\n staticClass: 'q-dialog__backdrop fixed-full',\n attrs: backdropAttrs,\n on: cache(this, 'bkdrop', {\n focusin: this.__onBackdropClick\n })\n })\n ] : null),\n\n h('transition', {\n props: { ...this.transitionProps }\n }, [\n this.showing === true ? h('div', {\n ref: 'inner',\n staticClass: 'q-dialog__inner flex no-pointer-events',\n class: this.classes,\n attrs: { tabindex: -1 },\n on: this.onEvents\n }, slot(this, 'default')) : null\n ])\n ])\n }\n },\n\n created () {\n this.__useTick('__registerTick', '__removeTick')\n this.__useTimeout('__registerTimeout')\n },\n\n mounted () {\n this.__processModelChange(this.value)\n },\n\n beforeDestroy () {\n this.__cleanup()\n this.__refocusTarget = void 0\n }\n})\n","export function getVmOfNode (el) {\n for (let node = el; node !== null; node = node.parentNode) {\n // node.__vue__ can be null if the instance was destroyed\n if (node.__vue__ !== void 0) {\n return node.__vue__\n }\n }\n}\n\nexport function isVmChildOf (childVm, parentVm) {\n // node.__vue__ can be null if the instance was destroyed\n if (childVm === null || parentVm === null) {\n return null\n }\n\n for (let vm = childVm; vm !== void 0; vm = vm.$parent) {\n if (vm === parentVm) {\n return true\n }\n }\n return false\n}\n","import { client } from '../../plugins/Platform.js'\nimport { listenOpts } from '../../utils/event.js'\nimport { getVmOfNode, isVmChildOf } from '../../utils/private/vm.js'\n\nlet timer\n\nconst\n { notPassiveCapture, passiveCapture } = listenOpts,\n handlers = {\n click: [],\n focus: []\n }\n\nfunction hasModalsAbove (node) {\n while ((node = node.nextElementSibling) !== null) {\n if (node.classList.contains('q-dialog--modal')) {\n return true\n }\n }\n\n return false\n}\n\nfunction execHandlers (list, evt) {\n for (let i = list.length - 1; i >= 0; i--) {\n if (list[i](evt) === void 0) {\n return\n }\n }\n}\n\nfunction globalHandler (evt) {\n clearTimeout(timer)\n\n // prevent autofocus on body resulting from blur\n if (\n evt.type === 'focusin' && (\n (client.is.ie === true && evt.target === document.body) ||\n evt.target.hasAttribute('tabindex') === true\n )\n ) {\n timer = setTimeout(() => {\n execHandlers(handlers.focus, evt)\n }, client.is.ie === true ? 500 : 200)\n }\n else {\n execHandlers(handlers.click, evt)\n }\n}\n\nexport default {\n name: 'click-outside',\n\n bind (el, { value, arg }, vnode) {\n const vmEl = vnode.componentInstance || vnode.context\n\n const ctx = {\n trigger: value,\n toggleEl: arg,\n\n handler (evt) {\n const target = evt.target\n\n if (\n evt.qClickOutside !== true &&\n document.body.contains(target) === true &&\n target.nodeType !== 8 &&\n // directives that prevent click by using pointer-events none generate click on html element\n target !== document.documentElement &&\n target.classList.contains('no-pointer-events') === false &&\n hasModalsAbove(el) !== true &&\n (\n ctx.toggleEl === void 0 ||\n ctx.toggleEl.contains(target) === false\n ) &&\n (\n target === document.body ||\n isVmChildOf(getVmOfNode(target), vmEl) === false\n )\n ) {\n // mark the event as being processed by clickOutside\n // used to prevent refocus after menu close\n evt.qClickOutside = true\n\n return ctx.trigger(evt)\n }\n }\n }\n\n if (el.__qclickoutside) {\n el.__qclickoutside_old = el.__qclickoutside\n }\n\n el.__qclickoutside = ctx\n\n if (handlers.click.length === 0) {\n document.addEventListener('mousedown', globalHandler, notPassiveCapture)\n document.addEventListener('touchstart', globalHandler, notPassiveCapture)\n document.addEventListener('focusin', globalHandler, passiveCapture)\n }\n\n handlers.click.push(ctx.handler)\n\n ctx.timerFocusin = setTimeout(() => {\n handlers.focus.push(ctx.handler)\n }, 500)\n },\n\n update (el, { value, oldValue, arg }) {\n const ctx = el.__qclickoutside\n\n if (value !== oldValue) {\n ctx.trigger = value\n }\n if (arg !== ctx.arg) {\n ctx.toggleEl = arg\n }\n },\n\n unbind (el) {\n const ctx = el.__qclickoutside_old || el.__qclickoutside\n if (ctx !== void 0) {\n clearTimeout(ctx.timerFocusin)\n\n const\n indexClick = handlers.click.findIndex(h => h === ctx.handler),\n indexFocus = handlers.focus.findIndex(h => h === ctx.handler)\n\n indexClick > -1 && handlers.click.splice(indexClick, 1)\n indexFocus > -1 && handlers.focus.splice(indexFocus, 1)\n\n if (handlers.click.length === 0) {\n clearTimeout(timer)\n document.removeEventListener('mousedown', globalHandler, notPassiveCapture)\n document.removeEventListener('touchstart', globalHandler, notPassiveCapture)\n document.removeEventListener('focusin', globalHandler, passiveCapture)\n }\n\n delete el[el.__qclickoutside_old ? '__qclickoutside_old' : '__qclickoutside']\n }\n }\n}\n","import Vue from 'vue'\n\nimport AnchorMixin from '../../mixins/anchor.js'\nimport TimeoutMixin from '../../mixins/timeout.js'\nimport ModelToggleMixin from '../../mixins/model-toggle.js'\nimport DarkMixin from '../../mixins/dark.js'\nimport PortalMixin, { closePortalMenus } from '../../mixins/portal.js'\nimport TransitionMixin from '../../mixins/transition.js'\nimport AttrsMixin from '../../mixins/attrs.js'\nimport { client } from '../../plugins/Platform.js'\n\nimport ClickOutside from './ClickOutside.js'\nimport { getScrollTarget } from '../../utils/scroll.js'\nimport { create, stop, position, stopAndPreventClick } from '../../utils/event.js'\nimport EscapeKey from '../../utils/private/escape-key.js'\n\nimport { slot } from '../../utils/private/slot.js'\nimport { addFocusFn } from '../../utils/private/focus-manager.js'\n\nimport {\n validatePosition, validateOffset, setPosition, parsePosition\n} from '../../utils/private/position-engine.js'\n\nexport default Vue.extend({\n name: 'QMenu',\n\n mixins: [\n AttrsMixin,\n DarkMixin,\n AnchorMixin,\n TimeoutMixin,\n ModelToggleMixin,\n PortalMixin,\n TransitionMixin\n ],\n\n directives: {\n ClickOutside\n },\n\n props: {\n persistent: Boolean,\n autoClose: Boolean,\n separateClosePopup: Boolean,\n\n noRouteDismiss: Boolean,\n noRefocus: Boolean,\n noFocus: Boolean,\n\n fit: Boolean,\n cover: Boolean,\n\n square: Boolean,\n\n anchor: {\n type: String,\n validator: validatePosition\n },\n self: {\n type: String,\n validator: validatePosition\n },\n offset: {\n type: Array,\n validator: validateOffset\n },\n\n scrollTarget: {\n default: void 0\n },\n\n touchPosition: Boolean,\n\n maxHeight: {\n type: String,\n default: null\n },\n maxWidth: {\n type: String,\n default: null\n }\n },\n\n computed: {\n anchorOrigin () {\n return parsePosition(\n this.anchor || (\n this.cover === true ? 'center middle' : 'bottom start'\n ),\n this.$q.lang.rtl\n )\n },\n\n selfOrigin () {\n return this.cover === true\n ? this.anchorOrigin\n : parsePosition(this.self || 'top start', this.$q.lang.rtl)\n },\n\n menuClass () {\n return (this.square === true ? ' q-menu--square' : '') +\n (this.isDark === true ? ' q-menu--dark q-dark' : '')\n },\n\n hideOnRouteChange () {\n return this.persistent !== true &&\n this.noRouteDismiss !== true\n },\n\n onEvents () {\n const on = {\n ...this.qListeners,\n // stop propagating these events from children\n input: stop,\n 'popup-show': stop,\n 'popup-hide': stop\n }\n\n if (this.autoClose === true) {\n on.click = this.__onAutoClose\n }\n\n return on\n },\n\n attrs () {\n return {\n tabindex: -1,\n role: 'menu',\n ...this.qAttrs\n }\n }\n },\n\n methods: {\n focus () {\n addFocusFn(() => {\n let node = this.__portal !== void 0 && this.__portal.$refs !== void 0\n ? this.__portal.$refs.inner\n : void 0\n\n if (node !== void 0 && node.contains(document.activeElement) !== true) {\n node = node.querySelector('[autofocus][tabindex], [data-autofocus][tabindex]') ||\n node.querySelector('[autofocus] [tabindex], [data-autofocus] [tabindex]') ||\n node.querySelector('[autofocus], [data-autofocus]') ||\n node\n node.focus({ preventScroll: true })\n }\n })\n },\n\n __show (evt) {\n // IE can have null document.activeElement\n this.__refocusTarget = client.is.mobile !== true && this.noRefocus === false && document.activeElement !== null\n ? document.activeElement\n : void 0\n\n EscapeKey.register(this, escEvt => {\n if (this.persistent !== true) {\n this.$emit('escape-key')\n this.hide(escEvt)\n }\n })\n\n this.__showPortal()\n this.__configureScrollTarget()\n\n this.absoluteOffset = void 0\n\n if (evt !== void 0 && (this.touchPosition || this.contextMenu)) {\n const pos = position(evt)\n\n if (pos.left !== void 0) {\n const { top, left } = this.anchorEl.getBoundingClientRect()\n this.absoluteOffset = { left: pos.left - left, top: pos.top - top }\n }\n }\n\n if (this.unwatch === void 0) {\n this.unwatch = this.$watch(\n () => this.$q.screen.width + '|' + this.$q.screen.height + '|' + this.self + '|' + this.anchor + '|' + this.$q.lang.rtl,\n this.updatePosition\n )\n }\n\n this.$el.dispatchEvent(create('popup-show', { bubbles: true }))\n\n // IE can have null document.activeElement\n if (this.noFocus !== true && document.activeElement !== null) {\n document.activeElement.blur()\n }\n\n this.__registerTick(() => {\n this.updatePosition()\n this.noFocus !== true && this.focus()\n })\n\n this.__registerTimeout(() => {\n // required in order to avoid the \"double-tap needed\" issue\n if (this.$q.platform.is.ios === true) {\n // if auto-close, then this click should\n // not close the menu\n this.__avoidAutoClose = this.autoClose\n this.__portal.$el.click()\n }\n\n this.updatePosition()\n this.__showPortal(true) // done showing\n this.$emit('show', evt)\n }, 300)\n },\n\n __hide (evt) {\n this.__removeTick()\n this.__anchorCleanup(true)\n this.__hidePortal()\n\n // check null for IE\n if (\n this.__refocusTarget !== void 0 &&\n this.__refocusTarget !== null &&\n (\n // menu was hidden from code or ESC plugin\n evt === void 0 ||\n // menu was not closed from a mouse or touch clickOutside\n evt.qClickOutside !== true\n )\n ) {\n ((evt && evt.type.indexOf('key') === 0\n ? this.__refocusTarget.closest('[tabindex]:not([tabindex^=\"-\"])')\n : void 0\n ) || this.__refocusTarget).focus()\n this.__refocusTarget = void 0\n }\n\n this.$el.dispatchEvent(create('popup-hide', { bubbles: true }))\n\n // should __removeTimeout() if this gets removed\n this.__registerTimeout(() => {\n this.__hidePortal(true) // done hiding, now destroy\n this.$emit('hide', evt)\n }, 300)\n },\n\n __anchorCleanup (hiding) {\n this.absoluteOffset = void 0\n\n if (this.unwatch !== void 0) {\n this.unwatch()\n this.unwatch = void 0\n }\n\n if (hiding === true || this.showing === true) {\n EscapeKey.pop(this)\n this.__unconfigureScrollTarget()\n }\n },\n\n __unconfigureScrollTarget () {\n if (this.__scrollTarget !== void 0) {\n this.__changeScrollEvent(this.__scrollTarget)\n this.__scrollTarget = void 0\n }\n },\n\n __configureScrollTarget () {\n if (this.anchorEl !== void 0 || this.scrollTarget !== void 0) {\n this.__scrollTarget = getScrollTarget(this.anchorEl, this.scrollTarget)\n this.__changeScrollEvent(this.__scrollTarget, this.updatePosition)\n }\n },\n\n __onAutoClose (e) {\n // if auto-close, then the ios double-tap fix which\n // issues a click should not close the menu\n if (this.__avoidAutoClose !== true) {\n closePortalMenus(this, e)\n this.qListeners.click !== void 0 && this.$emit('click', e)\n }\n else {\n this.__avoidAutoClose = false\n }\n },\n\n updatePosition () {\n if (this.anchorEl === void 0 || this.__portal === void 0) {\n return\n }\n\n const el = this.__portal.$el\n\n if (el.nodeType === 8) { // IE replaces the comment with delay\n setTimeout(this.updatePosition, 25)\n return\n }\n\n setPosition({\n el,\n offset: this.offset,\n anchorEl: this.anchorEl,\n anchorOrigin: this.anchorOrigin,\n selfOrigin: this.selfOrigin,\n absoluteOffset: this.absoluteOffset,\n fit: this.fit,\n cover: this.cover,\n maxHeight: this.maxHeight,\n maxWidth: this.maxWidth\n })\n },\n\n __onClickOutside (e) {\n if (this.persistent !== true && this.showing === true) {\n const targetClassList = e.target.classList\n\n closePortalMenus(this, e)\n if (\n // always prevent touch event\n e.type === 'touchstart' ||\n // prevent click if it's on a dialog backdrop\n targetClassList.contains('q-dialog__backdrop')\n ) {\n stopAndPreventClick(e)\n }\n return true\n }\n },\n\n __renderPortal (h) {\n return h('transition', {\n props: { ...this.transitionProps }\n }, [\n this.showing === true ? h('div', {\n ref: 'inner',\n staticClass: 'q-menu q-position-engine scroll' + this.menuClass,\n class: this.contentClass,\n style: this.contentStyle,\n attrs: this.attrs,\n on: this.onEvents,\n directives: [{\n name: 'click-outside',\n value: this.__onClickOutside,\n arg: this.anchorEl\n }]\n }, slot(this, 'default')) : null\n ])\n }\n },\n\n created () {\n this.__useTick('__registerTick', '__removeTick')\n this.__useTimeout('__registerTimeout')\n },\n\n mounted () {\n this.__processModelChange(this.value)\n },\n\n beforeDestroy () {\n this.__refocusTarget = void 0\n\n // When the menu is destroyed while open we can only emit the event on anchorEl\n if (this.showing === true && this.anchorEl !== void 0) {\n this.anchorEl.dispatchEvent(\n create('popup-hide', { bubbles: true })\n )\n }\n }\n})\n","import Vue from 'vue'\n\nimport QDialog from '../dialog/QDialog.js'\nimport QMenu from '../menu/QMenu.js'\n\nimport AnchorMixin from '../../mixins/anchor.js'\nimport { slot } from '../../utils/private/slot.js'\nimport AttrsMixin from '../../mixins/attrs.js'\nimport ListenersMixin from '../../mixins/listeners.js'\n\nexport default Vue.extend({\n name: 'QPopupProxy',\n\n mixins: [ AttrsMixin, ListenersMixin, AnchorMixin ],\n\n props: {\n breakpoint: {\n type: [String, Number],\n default: 450\n }\n },\n\n data () {\n const breakpoint = parseInt(this.breakpoint, 10)\n return {\n type: this.$q.screen.width < breakpoint || this.$q.screen.height < breakpoint\n ? 'dialog'\n : 'menu'\n }\n },\n\n computed: {\n parsedBreakpoint () {\n return parseInt(this.breakpoint, 10)\n },\n\n onEvents () {\n return {\n ...this.qListeners,\n hide: this.__onHide\n }\n }\n },\n\n watch: {\n '$q.screen.width' (width) {\n if (this.$refs.popup.showing !== true) {\n this.__updateType(width, this.$q.screen.height, this.parsedBreakpoint)\n }\n },\n\n '$q.screen.height' (height) {\n if (this.$refs.popup.showing !== true) {\n this.__updateType(this.$q.screen.width, height, this.parsedBreakpoint)\n }\n },\n\n breakpoint (breakpoint) {\n if (this.$refs.popup.showing !== true) {\n this.__updateType(this.$q.screen.width, this.$q.screen.height, parseInt(breakpoint, 10))\n }\n }\n },\n\n methods: {\n toggle (evt) {\n this.$refs.popup.toggle(evt)\n },\n\n show (evt) {\n this.$refs.popup.show(evt)\n },\n\n hide (evt) {\n this.$refs.popup.hide(evt)\n },\n\n __onHide (evt) {\n this.__updateType(this.$q.screen.width, this.$q.screen.height, this.parsedBreakpoint)\n this.$emit('hide', evt)\n },\n\n __updateType (width, height, breakpoint) {\n const type = width < breakpoint || height < breakpoint\n ? 'dialog'\n : 'menu'\n\n if (this.type !== type) {\n this.type = type\n }\n }\n },\n\n render (h) {\n const def = slot(this, 'default')\n\n const props = (\n this.type === 'menu' &&\n def !== void 0 &&\n def[0] !== void 0 &&\n def[0].componentOptions !== void 0 &&\n def[0].componentOptions.Ctor !== void 0 &&\n def[0].componentOptions.Ctor.sealedOptions !== void 0 &&\n ['QDate', 'QTime', 'QCarousel', 'QColor'].includes(\n def[0].componentOptions.Ctor.sealedOptions.name\n )\n ) ? { cover: true, maxHeight: '99vh' } : {}\n\n const data = {\n ref: 'popup',\n props: { ...props, ...this.qAttrs },\n on: this.onEvents\n }\n\n let component\n\n if (this.type === 'dialog') {\n component = QDialog\n }\n else {\n component = QMenu\n data.props.target = this.target\n data.props.contextMenu = this.contextMenu\n data.props.noParentEvent = true\n data.props.separateClosePopup = true\n }\n\n return h(component, data, def)\n }\n})\n","import Vue from 'vue'\n\nimport { isSSR } from '../plugins/Platform.js'\nimport { getBodyFullscreenElement } from '../utils/dom.js'\nimport { addFocusWaitFlag, removeFocusWaitFlag } from '../utils/private/focus-manager.js'\nimport debounce from '../utils/debounce.js'\n\nexport function closePortalMenus (vm, evt) {\n do {\n if (vm.$options.name === 'QMenu') {\n vm.hide(evt)\n\n // is this a point of separation?\n if (vm.separateClosePopup === true) {\n return vm.$parent\n }\n }\n else if (vm.__renderPortal !== void 0) {\n // treat it as point of separation if parent is QPopupProxy\n // (so mobile matches desktop behavior)\n // and hide it too\n if (vm.$parent !== void 0 && vm.$parent.$options.name === 'QPopupProxy') {\n vm.hide(evt)\n return vm.$parent\n }\n else {\n return vm\n }\n }\n vm = vm.$parent\n } while (\n vm !== void 0 && (\n vm.$el.contains === void 0 || // IE polyfill does not work on comments\n vm.$el.contains(evt.target) !== true\n )\n )\n}\n\nexport function closePortals (vm, evt, depth) {\n while (depth !== 0 && vm !== void 0) {\n if (vm.__renderPortal !== void 0) {\n depth--\n\n if (vm.$options.name === 'QMenu') {\n vm = closePortalMenus(vm, evt)\n continue\n }\n\n vm.hide(evt)\n }\n\n vm = vm.$parent\n }\n}\n\nfunction isOnGlobalDialog (vm) {\n while (vm !== void 0) {\n if (vm.$options.name === 'QGlobalDialog') {\n return true\n }\n if (vm.$options.name === 'QDialog') {\n return false\n }\n\n vm = vm.$parent\n }\n return false\n}\n\nconst Portal = {\n inheritAttrs: false,\n\n props: {\n contentClass: [ Array, String, Object ],\n contentStyle: [ Array, String, Object ]\n },\n\n methods: {\n __showPortal (isReady) {\n if (isReady === true) {\n removeFocusWaitFlag(this.focusObj)\n this.__portalIsAccessible = true\n return\n }\n\n this.__portalIsAccessible = false\n\n if (this.__portalIsActive === true) { return }\n this.__portalIsActive = true\n\n if (this.focusObj === void 0) {\n this.focusObj = {}\n }\n\n addFocusWaitFlag(this.focusObj)\n\n if (this.$q.fullscreen !== void 0 && this.$q.fullscreen.isCapable === true) {\n const append = () => {\n if (this.__portal === void 0) {\n return\n }\n\n const newParent = getBodyFullscreenElement(this.$q.fullscreen.activeEl)\n\n if (\n this.__portal.$el.parentElement !== newParent &&\n newParent.contains(this.$el) === (this.__onGlobalDialog === false)\n ) {\n newParent.appendChild(this.__portal.$el)\n }\n }\n\n this.unwatchFullscreen = this.$watch('$q.fullscreen.activeEl', debounce(append, 50))\n\n if (this.__onGlobalDialog === false || this.$q.fullscreen.isActive === true) {\n append()\n }\n }\n else if (this.__portal !== void 0 && this.__onGlobalDialog === false) {\n document.body.appendChild(this.__portal.$el)\n }\n },\n\n __hidePortal (isReady) {\n this.__portalIsAccessible = false\n\n if (isReady !== true) { return }\n\n this.__portalIsActive = false\n removeFocusWaitFlag(this.focusObj)\n\n if (this.__portal !== void 0) {\n if (this.unwatchFullscreen !== void 0) {\n this.unwatchFullscreen()\n this.unwatchFullscreen = void 0\n }\n\n if (this.__onGlobalDialog === false) {\n this.__portal.$destroy()\n this.__portal.$el.remove()\n }\n\n this.__portal = void 0\n }\n },\n\n __preparePortal () {\n if (this.__portal === void 0) {\n this.__portal = this.__onGlobalDialog === true\n ? {\n $el: this.$el,\n $refs: this.$refs\n }\n : new Vue({\n name: 'QPortal',\n parent: this,\n\n inheritAttrs: false,\n\n render: h => this.__renderPortal(h),\n\n components: this.$options.components,\n directives: this.$options.directives\n }).$mount()\n }\n }\n },\n\n render (h) {\n if (this.__onGlobalDialog === true) {\n return this.__renderPortal(h)\n }\n\n if (this.__portal !== void 0) {\n this.__portal.$forceUpdate()\n }\n },\n\n beforeDestroy () {\n this.__hidePortal(true)\n }\n}\n\nif (isSSR === false) {\n Portal.created = function () {\n this.__onGlobalDialog = isOnGlobalDialog(this.$parent)\n }\n}\n\nexport default Portal\n","import { clearSelection } from '../utils/private/selection.js'\nimport { addEvt, cleanEvt, prevent, listenOpts } from '../utils/event.js'\nimport { getElement } from '../utils/dom.js'\nimport { isKeyCode } from '../utils/private/key-composition.js'\n\nexport default {\n props: {\n target: {\n default: true\n },\n noParentEvent: Boolean,\n contextMenu: Boolean\n },\n\n watch: {\n contextMenu (val) {\n if (this.anchorEl !== void 0) {\n this.__unconfigureAnchorEl()\n this.__configureAnchorEl(val)\n }\n },\n\n target () {\n if (this.anchorEl !== void 0) {\n this.__unconfigureAnchorEl()\n }\n\n this.__pickAnchorEl()\n },\n\n noParentEvent (val) {\n if (this.anchorEl !== void 0) {\n if (val === true) {\n this.__unconfigureAnchorEl()\n }\n else {\n this.__configureAnchorEl()\n }\n }\n }\n },\n\n methods: {\n __showCondition (evt) {\n // abort with no parent configured or on multi-touch\n if (this.anchorEl === void 0) {\n return false\n }\n if (evt === void 0) {\n return true\n }\n return evt.touches === void 0 || evt.touches.length <= 1\n },\n\n __contextClick (evt) {\n this.hide(evt)\n this.$nextTick(() => {\n this.show(evt)\n })\n prevent(evt)\n },\n\n __toggleKey (evt) {\n isKeyCode(evt, 13) === true && this.toggle(evt)\n },\n\n __mobileCleanup (evt) {\n this.anchorEl.classList.remove('non-selectable')\n clearTimeout(this.touchTimer)\n\n if (this.showing === true && evt !== void 0) {\n clearSelection()\n }\n },\n\n __mobilePrevent: prevent,\n\n __mobileTouch (evt) {\n this.__mobileCleanup(evt)\n\n if (this.__showCondition(evt) !== true) {\n return\n }\n\n this.hide(evt)\n this.anchorEl.classList.add('non-selectable')\n\n const target = evt.target\n addEvt(this, 'anchor', [\n [ target, 'touchmove', '__mobileCleanup', 'passive' ],\n [ target, 'touchend', '__mobileCleanup', 'passive' ],\n [ target, 'touchcancel', '__mobileCleanup', 'passive' ],\n [ this.anchorEl, 'contextmenu', '__mobilePrevent', 'notPassive' ]\n ])\n\n this.touchTimer = setTimeout(() => {\n this.show(evt)\n }, 300)\n },\n\n __unconfigureAnchorEl () {\n cleanEvt(this, 'anchor')\n },\n\n __configureAnchorEl (context = this.contextMenu) {\n if (this.noParentEvent === true || this.anchorEl === void 0) { return }\n\n let evts\n\n if (context === true) {\n if (this.$q.platform.is.mobile === true) {\n evts = [\n [ this.anchorEl, 'touchstart', '__mobileTouch', 'passive' ]\n ]\n }\n else {\n evts = [\n [ this.anchorEl, 'click', 'hide', 'passive' ],\n [ this.anchorEl, 'contextmenu', '__contextClick', 'notPassive' ]\n ]\n }\n }\n else {\n evts = [\n [ this.anchorEl, 'click', 'toggle', 'passive' ],\n [ this.anchorEl, 'keyup', '__toggleKey', 'passive' ]\n ]\n }\n\n addEvt(this, 'anchor', evts)\n },\n\n __setAnchorEl (el) {\n this.anchorEl = el\n while (this.anchorEl.classList.contains('q-anchor--skip')) {\n this.anchorEl = this.anchorEl.parentNode\n }\n this.__configureAnchorEl()\n },\n\n __pickAnchorEl () {\n if (this.target === false || this.target === '' || this.parentEl === null) {\n this.anchorEl = void 0\n }\n else if (this.target === true) {\n this.__setAnchorEl(this.parentEl)\n }\n else {\n this.anchorEl = getElement(this.target) || void 0\n\n if (this.anchorEl !== void 0) {\n this.__configureAnchorEl()\n }\n else {\n console.error(`Anchor: target \"${this.target}\" not found`, this)\n }\n }\n },\n\n __changeScrollEvent (scrollTarget, fn) {\n const fnProp = `${fn !== void 0 ? 'add' : 'remove'}EventListener`\n const fnHandler = fn !== void 0 ? fn : this.__scrollFn\n\n if (scrollTarget !== window) {\n scrollTarget[fnProp]('scroll', fnHandler, listenOpts.passive)\n }\n\n window[fnProp]('scroll', fnHandler, listenOpts.passive)\n\n this.__scrollFn = fn\n }\n },\n\n created () {\n if (\n typeof this.__configureScrollTarget === 'function' &&\n typeof this.__unconfigureScrollTarget === 'function'\n ) {\n this.noParentEventWatcher = this.$watch('noParentEvent', () => {\n if (this.__scrollTarget !== void 0) {\n this.__unconfigureScrollTarget()\n this.__configureScrollTarget()\n }\n })\n }\n },\n\n mounted () {\n this.parentEl = this.$el.parentNode\n this.__pickAnchorEl()\n\n if (this.value === true && this.anchorEl === void 0) {\n this.$emit('input', false)\n }\n },\n\n beforeDestroy () {\n clearTimeout(this.touchTimer)\n this.noParentEventWatcher !== void 0 && this.noParentEventWatcher()\n this.__anchorCleanup !== void 0 && this.__anchorCleanup()\n this.__unconfigureAnchorEl()\n }\n}\n","import Platform from '../../plugins/Platform.js'\n\nexport function clearSelection () {\n if (window.getSelection !== void 0) {\n const selection = window.getSelection()\n if (selection.empty !== void 0) {\n selection.empty()\n }\n else if (selection.removeAllRanges !== void 0) {\n selection.removeAllRanges()\n Platform.is.mobile !== true && selection.addRange(document.createRange())\n }\n }\n else if (document.selection !== void 0) {\n document.selection.empty()\n }\n}\n","import { getPropCacheMixin } from '../utils/private/cache.js'\n\nexport const ariaHidden = { 'aria-hidden': 'true' }\n\nexport const iconAsButton = { tabindex: 0, type: 'button', 'aria-hidden': false, role: null }\n\nexport default getPropCacheMixin('$attrs', 'qAttrs')\n","let queue = []\nlet waitFlags = []\n\nfunction clearFlag (flag) {\n waitFlags = waitFlags.filter(entry => entry !== flag)\n}\n\nexport function addFocusWaitFlag (flag) {\n clearFlag(flag)\n waitFlags.push(flag)\n}\n\nexport function removeFocusWaitFlag (flag) {\n clearFlag(flag)\n\n if (waitFlags.length === 0 && queue.length > 0) {\n // only call last focus handler (can't focus multiple things at once)\n queue[ queue.length - 1 ]()\n queue = []\n }\n}\n\nexport function addFocusFn (fn) {\n if (waitFlags.length === 0) {\n fn()\n }\n else {\n queue.push(fn)\n }\n}\n\nexport function removeFocusFn (fn) {\n queue = queue.filter(entry => entry !== fn)\n}\n"],"sourceRoot":""}