{"version":3,"file":"C_fNdKKu.js","sources":["../../../../node_modules/quasar/src/composables/private.use-anchor/use-anchor.js","../../../../node_modules/quasar/src/composables/private.use-scroll-target/use-scroll-target.js","../../../../node_modules/quasar/src/utils/private.click-outside/click-outside.js","../../../../node_modules/quasar/src/utils/private.position-engine/position-engine.js","../../../../node_modules/quasar/src/components/menu/QMenu.js","../../../../node_modules/quasar/src/components/chip/QChip.js","../../../../node_modules/quasar/src/components/field/QField.js","../../../../node_modules/quasar/src/components/select/QSelect.js"],"sourcesContent":["import { ref, watch, onMounted, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport { clearSelection } from '../../utils/private.selection/selection.js'\nimport { addEvt, cleanEvt, prevent } from '../../utils/event/event.js'\nimport { isKeyCode } from '../../utils/private.keyboard/key-composition.js'\n\nexport const useAnchorStaticProps = {\n /* SSR does not know about Element */\n target: __QUASAR_SSR_SERVER__\n ? { default: true }\n : {\n type: [ Boolean, String, Element ],\n default: true\n },\n\n noParentEvent: Boolean\n}\n\nexport const useAnchorProps = {\n ...useAnchorStaticProps,\n contextMenu: Boolean\n}\n\nexport default function ({\n showing,\n avoidEmit, // required for QPopupProxy (true)\n configureAnchorEl // optional\n}) {\n const { props, proxy, emit } = getCurrentInstance()\n\n const anchorEl = ref(null)\n\n let touchTimer = null\n\n function canShow (evt) {\n // abort with no parent configured or on multi-touch\n return anchorEl.value === null\n ? false\n : (evt === void 0 || evt.touches === void 0 || evt.touches.length <= 1)\n }\n\n const anchorEvents = {}\n\n if (configureAnchorEl === void 0) {\n // default configureAnchorEl is designed for\n // QMenu & QPopupProxy (which is why it's handled here)\n\n Object.assign(anchorEvents, {\n hide (evt) {\n proxy.hide(evt)\n },\n\n toggle (evt) {\n proxy.toggle(evt)\n evt.qAnchorHandled = true\n },\n\n toggleKey (evt) {\n isKeyCode(evt, 13) === true && anchorEvents.toggle(evt)\n },\n\n contextClick (evt) {\n proxy.hide(evt)\n prevent(evt)\n nextTick(() => {\n proxy.show(evt)\n evt.qAnchorHandled = true\n })\n },\n\n prevent,\n\n mobileTouch (evt) {\n anchorEvents.mobileCleanup(evt)\n\n if (canShow(evt) !== true) {\n return\n }\n\n proxy.hide(evt)\n anchorEl.value.classList.add('non-selectable')\n\n const target = evt.target\n addEvt(anchorEvents, 'anchor', [\n [ target, 'touchmove', 'mobileCleanup', 'passive' ],\n [ target, 'touchend', 'mobileCleanup', 'passive' ],\n [ target, 'touchcancel', 'mobileCleanup', 'passive' ],\n [ anchorEl.value, 'contextmenu', 'prevent', 'notPassive' ]\n ])\n\n touchTimer = setTimeout(() => {\n touchTimer = null\n proxy.show(evt)\n evt.qAnchorHandled = true\n }, 300)\n },\n\n mobileCleanup (evt) {\n anchorEl.value.classList.remove('non-selectable')\n\n if (touchTimer !== null) {\n clearTimeout(touchTimer)\n touchTimer = null\n }\n\n if (showing.value === true && evt !== void 0) {\n clearSelection()\n }\n }\n })\n\n configureAnchorEl = function (context = props.contextMenu) {\n if (props.noParentEvent === true || anchorEl.value === null) return\n\n let evts\n\n if (context === true) {\n if (proxy.$q.platform.is.mobile === true) {\n evts = [\n [ anchorEl.value, 'touchstart', 'mobileTouch', 'passive' ]\n ]\n }\n else {\n evts = [\n [ anchorEl.value, 'mousedown', 'hide', 'passive' ],\n [ anchorEl.value, 'contextmenu', 'contextClick', 'notPassive' ]\n ]\n }\n }\n else {\n evts = [\n [ anchorEl.value, 'click', 'toggle', 'passive' ],\n [ anchorEl.value, 'keyup', 'toggleKey', 'passive' ]\n ]\n }\n\n addEvt(anchorEvents, 'anchor', evts)\n }\n }\n\n function unconfigureAnchorEl () {\n cleanEvt(anchorEvents, 'anchor')\n }\n\n function setAnchorEl (el) {\n anchorEl.value = el\n while (anchorEl.value.classList.contains('q-anchor--skip')) {\n anchorEl.value = anchorEl.value.parentNode\n }\n configureAnchorEl()\n }\n\n function pickAnchorEl () {\n if (props.target === false || props.target === '' || proxy.$el.parentNode === null) {\n anchorEl.value = null\n }\n else if (props.target === true) {\n setAnchorEl(proxy.$el.parentNode)\n }\n else {\n let el = props.target\n\n if (typeof props.target === 'string') {\n try {\n el = document.querySelector(props.target)\n }\n catch (err) {\n el = void 0\n }\n }\n\n if (el !== void 0 && el !== null) {\n anchorEl.value = el.$el || el\n configureAnchorEl()\n }\n else {\n anchorEl.value = null\n console.error(`Anchor: target \"${ props.target }\" not found`)\n }\n }\n }\n\n watch(() => props.contextMenu, val => {\n if (anchorEl.value !== null) {\n unconfigureAnchorEl()\n configureAnchorEl(val)\n }\n })\n\n watch(() => props.target, () => {\n if (anchorEl.value !== null) {\n unconfigureAnchorEl()\n }\n\n pickAnchorEl()\n })\n\n watch(() => props.noParentEvent, val => {\n if (anchorEl.value !== null) {\n if (val === true) {\n unconfigureAnchorEl()\n }\n else {\n configureAnchorEl()\n }\n }\n })\n\n onMounted(() => {\n pickAnchorEl()\n\n if (avoidEmit !== true && props.modelValue === true && anchorEl.value === null) {\n emit('update:modelValue', false)\n }\n })\n\n onBeforeUnmount(() => {\n touchTimer !== null && clearTimeout(touchTimer)\n unconfigureAnchorEl()\n })\n\n return {\n anchorEl,\n canShow,\n anchorEvents\n }\n}\n","import { ref, watch, onBeforeUnmount } from 'vue'\n\nimport { listenOpts } from '../../utils/event/event.js'\n\nexport default function (props, configureScrollTarget) {\n const localScrollTarget = ref(null)\n let scrollFn\n\n function changeScrollEvent (scrollTarget, fn) {\n const fnProp = `${ fn !== void 0 ? 'add' : 'remove' }EventListener`\n const fnHandler = fn !== void 0 ? fn : scrollFn\n\n if (scrollTarget !== window) {\n scrollTarget[ fnProp ]('scroll', fnHandler, listenOpts.passive)\n }\n\n window[ fnProp ]('scroll', fnHandler, listenOpts.passive)\n\n scrollFn = fn\n }\n\n function unconfigureScrollTarget () {\n if (localScrollTarget.value !== null) {\n changeScrollEvent(localScrollTarget.value)\n localScrollTarget.value = null\n }\n }\n\n const noParentEventWatcher = watch(() => props.noParentEvent, () => {\n if (localScrollTarget.value !== null) {\n unconfigureScrollTarget()\n configureScrollTarget()\n }\n })\n\n onBeforeUnmount(noParentEventWatcher)\n\n return {\n localScrollTarget,\n unconfigureScrollTarget,\n changeScrollEvent\n }\n}\n","import { listenOpts } from '../event/event.js'\nimport { portalProxyList } from '../private.portal/portal.js'\n\nlet timer = null\n\nconst\n { notPassiveCapture } = listenOpts,\n registeredList = []\n\nfunction globalHandler (evt) {\n if (timer !== null) {\n clearTimeout(timer)\n timer = null\n }\n\n const target = evt.target\n\n if (\n target === void 0\n || target.nodeType === 8\n || target.classList.contains('no-pointer-events') === true\n ) {\n return\n }\n\n // check last portal vm if it's\n // a QDialog and not in seamless mode\n let portalIndex = portalProxyList.length - 1\n\n while (portalIndex >= 0) {\n const proxy = portalProxyList[ portalIndex ].$\n\n // skip QTooltip portals\n if (proxy.type.name === 'QTooltip') {\n portalIndex--\n continue\n }\n\n if (proxy.type.name !== 'QDialog') {\n break\n }\n\n if (proxy.props.seamless !== true) {\n return\n }\n\n portalIndex--\n }\n\n for (let i = registeredList.length - 1; i >= 0; i--) {\n const state = registeredList[ i ]\n\n if (\n (\n state.anchorEl.value === null\n || state.anchorEl.value.contains(target) === false\n )\n && (\n target === document.body\n || (\n state.innerRef.value !== null\n && state.innerRef.value.contains(target) === false\n )\n )\n ) {\n // mark the event as being processed by clickOutside\n // used to prevent refocus after menu close\n evt.qClickOutside = true\n state.onClickOutside(evt)\n }\n else {\n return\n }\n }\n}\n\nexport function addClickOutside (clickOutsideProps) {\n registeredList.push(clickOutsideProps)\n\n if (registeredList.length === 1) {\n document.addEventListener('mousedown', globalHandler, notPassiveCapture)\n document.addEventListener('touchstart', globalHandler, notPassiveCapture)\n }\n}\n\nexport function removeClickOutside (clickOutsideProps) {\n const index = registeredList.findIndex(h => h === clickOutsideProps)\n\n if (index !== -1) {\n registeredList.splice(index, 1)\n\n if (registeredList.length === 0) {\n if (timer !== null) {\n clearTimeout(timer)\n timer = null\n }\n\n document.removeEventListener('mousedown', globalHandler, notPassiveCapture)\n document.removeEventListener('touchstart', globalHandler, notPassiveCapture)\n }\n }\n}\n","import { getScrollbarWidth } from '../scroll/scroll.js'\nimport { client } from '../../plugins/platform/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 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, bottom, height,\n left, right, width,\n middle: left + (right - left) / 2,\n center: top + (bottom - top) / 2\n }\n}\n\nfunction getAbsoluteAnchorProps (el, absoluteOffset, offset) {\n let { top, left } = el.getBoundingClientRect()\n\n top += absoluteOffset.top\n left += absoluteOffset.left\n\n if (offset !== void 0) {\n top += offset[ 1 ]\n left += offset[ 0 ]\n }\n\n return {\n top, bottom: top + 1, height: 1,\n left, right: left + 1, width: 1,\n middle: left,\n center: top\n }\n}\n\nfunction getTargetProps (width, height) {\n return {\n top: 0,\n center: height / 2,\n bottom: height,\n left: 0,\n middle: width / 2,\n right: width\n }\n}\n\nfunction getTopLeftProps (anchorProps, targetProps, anchorOrigin, selfOrigin) {\n return {\n top: anchorProps[ anchorOrigin.vertical ] - targetProps[ selfOrigin.vertical ],\n left: anchorProps[ anchorOrigin.horizontal ] - targetProps[ selfOrigin.horizontal ]\n }\n}\n\nexport function setPosition (cfg, retryNumber = 0) {\n if (\n cfg.targetEl === null\n || cfg.anchorEl === null\n || retryNumber > 5 // we should try only a few times\n ) {\n return\n }\n\n // some browsers report zero height or width because\n // we are trying too early to get these dimensions\n if (cfg.targetEl.offsetHeight === 0 || cfg.targetEl.offsetWidth === 0) {\n setTimeout(() => {\n setPosition(cfg, retryNumber + 1)\n }, 10)\n return\n }\n\n const {\n targetEl,\n offset,\n anchorEl,\n anchorOrigin,\n selfOrigin,\n absoluteOffset,\n fit,\n cover,\n maxHeight,\n maxWidth\n } = cfg\n\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 // 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 } = targetEl\n\n const anchorProps = absoluteOffset === void 0\n ? getAnchorProps(anchorEl, cover === true ? [ 0, 0 ] : offset)\n : getAbsoluteAnchorProps(anchorEl, absoluteOffset, offset)\n\n /**\n * We \"reset\" the critical CSS properties\n * so we can take an accurate measurement.\n *\n * Ensure that targetEl has a max-width & max-height\n * set in CSS and that the value does NOT exceeds 100vw/vh.\n * All users of the position-engine (currently QMenu & QTooltip)\n * have CSS for this.\n */\n Object.assign(targetEl.style, {\n top: 0,\n left: 0,\n minWidth: null,\n minHeight: null,\n maxWidth,\n maxHeight,\n visibility: 'visible'\n })\n\n const { offsetWidth: origElWidth, offsetHeight: origElHeight } = targetEl\n const { elWidth, elHeight } = fit === true || cover === true\n ? { elWidth: Math.max(anchorProps.width, origElWidth), elHeight: cover === true ? Math.max(anchorProps.height, origElHeight) : origElHeight }\n : { elWidth: origElWidth, elHeight: origElHeight }\n\n let elStyle = { maxWidth, maxHeight }\n\n if (fit === true || cover === true) {\n elStyle.minWidth = anchorProps.width + 'px'\n if (cover === true) {\n elStyle.minHeight = anchorProps.height + 'px'\n }\n }\n\n Object.assign(targetEl.style, elStyle)\n\n const targetProps = getTargetProps(elWidth, elHeight)\n let props = getTopLeftProps(anchorProps, targetProps, anchorOrigin, selfOrigin)\n\n if (absoluteOffset === void 0 || offset === void 0) {\n applyBoundaries(props, anchorProps, targetProps, anchorOrigin, selfOrigin)\n }\n else { // we have touch position or context menu with offset\n const { top, left } = props // cache initial values\n\n // apply initial boundaries\n applyBoundaries(props, anchorProps, targetProps, anchorOrigin, selfOrigin)\n\n let hasChanged = false\n\n // did it flip vertically?\n if (props.top !== top) {\n hasChanged = true\n const offsetY = 2 * offset[ 1 ]\n anchorProps.center = anchorProps.top -= offsetY\n anchorProps.bottom -= offsetY + 2\n }\n\n // did it flip horizontally?\n if (props.left !== left) {\n hasChanged = true\n const offsetX = 2 * offset[ 0 ]\n anchorProps.middle = anchorProps.left -= offsetX\n anchorProps.right -= offsetX + 2\n }\n\n if (hasChanged === true) {\n // re-calculate props with the new anchor\n props = getTopLeftProps(anchorProps, targetProps, anchorOrigin, selfOrigin)\n\n // and re-apply boundaries\n applyBoundaries(props, anchorProps, targetProps, anchorOrigin, selfOrigin)\n }\n }\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(targetEl.style, elStyle)\n\n // restore scroll position\n if (targetEl.scrollTop !== scrollTop) {\n targetEl.scrollTop = scrollTop\n }\n if (targetEl.scrollLeft !== scrollLeft) {\n targetEl.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","import { h, ref, computed, watch, Transition, onBeforeUnmount, getCurrentInstance } from 'vue'\n\nimport useAnchor, { useAnchorProps } from '../../composables/private.use-anchor/use-anchor.js'\nimport useScrollTarget from '../../composables/private.use-scroll-target/use-scroll-target.js'\nimport useModelToggle, { useModelToggleProps, useModelToggleEmits } from '../../composables/private.use-model-toggle/use-model-toggle.js'\nimport useDark, { useDarkProps } from '../../composables/private.use-dark/use-dark.js'\nimport usePortal from '../../composables/private.use-portal/use-portal.js'\nimport useTransition, { useTransitionProps } from '../../composables/private.use-transition/use-transition.js'\nimport useTick from '../../composables/use-tick/use-tick.js'\nimport useTimeout from '../../composables/use-timeout/use-timeout.js'\n\nimport { createComponent } from '../../utils/private.create/create.js'\nimport { closePortalMenus } from '../../utils/private.portal/portal.js'\nimport { getScrollTarget, scrollTargetProp } from '../../utils/scroll/scroll.js'\nimport { position, stopAndPrevent } from '../../utils/event/event.js'\nimport { hSlot } from '../../utils/private.render/render.js'\nimport { addEscapeKey, removeEscapeKey } from '../../utils/private.keyboard/escape-key.js'\nimport { addFocusout, removeFocusout } from '../../utils/private.focus/focusout.js'\nimport { childHasFocus } from '../../utils/dom/dom.js'\nimport { addClickOutside, removeClickOutside } from '../../utils/private.click-outside/click-outside.js'\nimport { addFocusFn } from '../../utils/private.focus/focus-manager.js'\n\nimport {\n validatePosition, validateOffset, setPosition, parsePosition\n} from '../../utils/private.position-engine/position-engine.js'\n\nexport default createComponent({\n name: 'QMenu',\n\n inheritAttrs: false,\n\n props: {\n ...useAnchorProps,\n ...useModelToggleProps,\n ...useDarkProps,\n ...useTransitionProps,\n\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: scrollTargetProp,\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 emits: [\n ...useModelToggleEmits,\n 'click', 'escapeKey'\n ],\n\n setup (props, { slots, emit, attrs }) {\n let refocusTarget = null, absoluteOffset, unwatchPosition, avoidAutoClose\n\n const vm = getCurrentInstance()\n const { proxy } = vm\n const { $q } = proxy\n\n const innerRef = ref(null)\n const showing = ref(false)\n\n const hideOnRouteChange = computed(() =>\n props.persistent !== true\n && props.noRouteDismiss !== true\n )\n\n const isDark = useDark(props, $q)\n const { registerTick, removeTick } = useTick()\n const { registerTimeout } = useTimeout()\n const { transitionProps, transitionStyle } = useTransition(props)\n const { localScrollTarget, changeScrollEvent, unconfigureScrollTarget } = useScrollTarget(props, configureScrollTarget)\n\n const { anchorEl, canShow } = useAnchor({ showing })\n\n const { hide } = useModelToggle({\n showing, canShow, handleShow, handleHide,\n hideOnRouteChange,\n processOnMount: true\n })\n\n const { showPortal, hidePortal, renderPortal } = usePortal(vm, innerRef, renderPortalContent, 'menu')\n\n const clickOutsideProps = {\n anchorEl,\n innerRef,\n onClickOutside (e) {\n if (props.persistent !== true && showing.value === true) {\n hide(e)\n\n if (\n // always prevent touch event\n e.type === 'touchstart'\n // prevent click if it's on a dialog backdrop\n || e.target.classList.contains('q-dialog__backdrop')\n ) {\n stopAndPrevent(e)\n }\n\n return true\n }\n }\n }\n\n const anchorOrigin = computed(() =>\n parsePosition(\n props.anchor || (\n props.cover === true ? 'center middle' : 'bottom start'\n ),\n $q.lang.rtl\n )\n )\n\n const selfOrigin = computed(() => (\n props.cover === true\n ? anchorOrigin.value\n : parsePosition(props.self || 'top start', $q.lang.rtl)\n ))\n\n const menuClass = computed(() =>\n (props.square === true ? ' q-menu--square' : '')\n + (isDark.value === true ? ' q-menu--dark q-dark' : '')\n )\n\n const onEvents = computed(() => (\n props.autoClose === true\n ? { onClick: onAutoClose }\n : {}\n ))\n\n const handlesFocus = computed(() =>\n showing.value === true && props.persistent !== true\n )\n\n watch(handlesFocus, val => {\n if (val === true) {\n addEscapeKey(onEscapeKey)\n addClickOutside(clickOutsideProps)\n }\n else {\n removeEscapeKey(onEscapeKey)\n removeClickOutside(clickOutsideProps)\n }\n })\n\n function focus () {\n addFocusFn(() => {\n let node = innerRef.value\n\n if (node && 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 function handleShow (evt) {\n refocusTarget = props.noRefocus === false\n ? document.activeElement\n : null\n\n addFocusout(onFocusout)\n\n showPortal()\n configureScrollTarget()\n\n absoluteOffset = void 0\n\n if (evt !== void 0 && (props.touchPosition || props.contextMenu)) {\n const pos = position(evt)\n\n if (pos.left !== void 0) {\n const { top, left } = anchorEl.value.getBoundingClientRect()\n absoluteOffset = { left: pos.left - left, top: pos.top - top }\n }\n }\n\n if (unwatchPosition === void 0) {\n unwatchPosition = watch(\n () => $q.screen.width + '|' + $q.screen.height + '|' + props.self + '|' + props.anchor + '|' + $q.lang.rtl,\n updatePosition\n )\n }\n\n if (props.noFocus !== true) {\n document.activeElement.blur()\n }\n\n // should removeTick() if this gets removed\n registerTick(() => {\n updatePosition()\n props.noFocus !== true && focus()\n })\n\n // should removeTimeout() if this gets removed\n registerTimeout(() => {\n // required in order to avoid the \"double-tap needed\" issue\n if ($q.platform.is.ios === true) {\n // if auto-close, then this click should\n // not close the menu\n avoidAutoClose = props.autoClose\n innerRef.value.click()\n }\n\n updatePosition()\n showPortal(true) // done showing portal\n emit('show', evt)\n }, props.transitionDuration)\n }\n\n function handleHide (evt) {\n removeTick()\n hidePortal()\n\n anchorCleanup(true)\n\n if (\n 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 ? refocusTarget.closest('[tabindex]:not([tabindex^=\"-\"])')\n : void 0\n ) || refocusTarget).focus()\n refocusTarget = null\n }\n\n // should removeTimeout() if this gets removed\n registerTimeout(() => {\n hidePortal(true) // done hiding, now destroy\n emit('hide', evt)\n }, props.transitionDuration)\n }\n\n function anchorCleanup (hiding) {\n absoluteOffset = void 0\n\n if (unwatchPosition !== void 0) {\n unwatchPosition()\n unwatchPosition = void 0\n }\n\n if (hiding === true || showing.value === true) {\n removeFocusout(onFocusout)\n unconfigureScrollTarget()\n removeClickOutside(clickOutsideProps)\n removeEscapeKey(onEscapeKey)\n }\n\n if (hiding !== true) {\n refocusTarget = null\n }\n }\n\n function configureScrollTarget () {\n if (anchorEl.value !== null || props.scrollTarget !== void 0) {\n localScrollTarget.value = getScrollTarget(anchorEl.value, props.scrollTarget)\n changeScrollEvent(localScrollTarget.value, updatePosition)\n }\n }\n\n function onAutoClose (e) {\n // if auto-close, then the ios double-tap fix which\n // issues a click should not close the menu\n if (avoidAutoClose !== true) {\n closePortalMenus(proxy, e)\n emit('click', e)\n }\n else {\n avoidAutoClose = false\n }\n }\n\n function onFocusout (evt) {\n // the focus is not in a vue child component\n if (\n handlesFocus.value === true\n && props.noFocus !== true\n && childHasFocus(innerRef.value, evt.target) !== true\n ) {\n focus()\n }\n }\n\n function onEscapeKey (evt) {\n emit('escapeKey')\n hide(evt)\n }\n\n function updatePosition () {\n setPosition({\n targetEl: innerRef.value,\n offset: props.offset,\n anchorEl: anchorEl.value,\n anchorOrigin: anchorOrigin.value,\n selfOrigin: selfOrigin.value,\n absoluteOffset,\n fit: props.fit,\n cover: props.cover,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth\n })\n }\n\n function renderPortalContent () {\n return h(\n Transition,\n transitionProps.value,\n () => (\n showing.value === true\n ? h('div', {\n role: 'menu',\n ...attrs,\n ref: innerRef,\n tabindex: -1,\n class: [\n 'q-menu q-position-engine scroll' + menuClass.value,\n attrs.class\n ],\n style: [\n attrs.style,\n transitionStyle.value\n ],\n ...onEvents.value\n }, hSlot(slots.default))\n : null\n )\n )\n }\n\n onBeforeUnmount(anchorCleanup)\n\n // expose public methods\n Object.assign(proxy, { focus, updatePosition })\n\n return renderPortal\n }\n})\n","import { h, computed, getCurrentInstance } from 'vue'\n\nimport QIcon from '../icon/QIcon.js'\n\nimport Ripple from '../../directives/ripple/Ripple.js'\n\nimport useDark, { useDarkProps } from '../../composables/private.use-dark/use-dark.js'\nimport useSize, { useSizeProps } from '../../composables/private.use-size/use-size.js'\n\nimport { createComponent } from '../../utils/private.create/create.js'\nimport { stopAndPrevent } from '../../utils/event/event.js'\nimport { hMergeSlotSafely, hDir } from '../../utils/private.render/render.js'\n\nexport const defaultSizes = {\n xs: 8,\n sm: 10,\n md: 14,\n lg: 20,\n xl: 24\n}\n\nexport default createComponent({\n name: 'QChip',\n\n props: {\n ...useDarkProps,\n ...useSizeProps,\n\n dense: Boolean,\n\n icon: String,\n iconRight: String,\n iconRemove: String,\n iconSelected: String,\n label: [ String, Number ],\n\n color: String,\n textColor: String,\n\n modelValue: {\n type: Boolean,\n default: true\n },\n selected: {\n type: Boolean,\n default: null\n },\n\n square: Boolean,\n outline: Boolean,\n clickable: Boolean,\n removable: Boolean,\n\n removeAriaLabel: String,\n\n tabindex: [ String, Number ],\n disable: Boolean,\n\n ripple: {\n type: [ Boolean, Object ],\n default: true\n }\n },\n\n emits: [ 'update:modelValue', 'update:selected', 'remove', 'click' ],\n\n setup (props, { slots, emit }) {\n const { proxy: { $q } } = getCurrentInstance()\n\n const isDark = useDark(props, $q)\n const sizeStyle = useSize(props, defaultSizes)\n\n const hasLeftIcon = computed(() => props.selected === true || props.icon !== void 0)\n\n const leftIcon = computed(() => (\n props.selected === true\n ? props.iconSelected || $q.iconSet.chip.selected\n : props.icon\n ))\n\n const removeIcon = computed(() => props.iconRemove || $q.iconSet.chip.remove)\n\n const isClickable = computed(() =>\n props.disable === false\n && (props.clickable === true || props.selected !== null)\n )\n\n const classes = computed(() => {\n const text = props.outline === true\n ? props.color || props.textColor\n : props.textColor\n\n return 'q-chip row inline no-wrap items-center'\n + (props.outline === false && props.color !== void 0 ? ` bg-${ props.color }` : '')\n + (text ? ` text-${ text } q-chip--colored` : '')\n + (props.disable === true ? ' disabled' : '')\n + (props.dense === true ? ' q-chip--dense' : '')\n + (props.outline === true ? ' q-chip--outline' : '')\n + (props.selected === true ? ' q-chip--selected' : '')\n + (isClickable.value === true ? ' q-chip--clickable cursor-pointer non-selectable q-hoverable' : '')\n + (props.square === true ? ' q-chip--square' : '')\n + (isDark.value === true ? ' q-chip--dark q-dark' : '')\n })\n\n const attributes = computed(() => {\n const chip = props.disable === true\n ? { tabindex: -1, 'aria-disabled': 'true' }\n : { tabindex: props.tabindex || 0 }\n\n const remove = {\n ...chip,\n role: 'button',\n 'aria-hidden': 'false',\n 'aria-label': props.removeAriaLabel || $q.lang.label.remove\n }\n\n return { chip, remove }\n })\n\n function onKeyup (e) {\n e.keyCode === 13 /* ENTER */ && onClick(e)\n }\n\n function onClick (e) {\n if (!props.disable) {\n emit('update:selected', !props.selected)\n emit('click', e)\n }\n }\n\n function onRemove (e) {\n if (e.keyCode === void 0 || e.keyCode === 13) {\n stopAndPrevent(e)\n if (props.disable === false) {\n emit('update:modelValue', false)\n emit('remove')\n }\n }\n }\n\n function getContent () {\n const child = []\n\n isClickable.value === true && child.push(\n h('div', { class: 'q-focus-helper' })\n )\n\n hasLeftIcon.value === true && child.push(\n h(QIcon, {\n class: 'q-chip__icon q-chip__icon--left',\n name: leftIcon.value\n })\n )\n\n const label = props.label !== void 0\n ? [ h('div', { class: 'ellipsis' }, [ props.label ]) ]\n : void 0\n\n child.push(\n h('div', {\n class: 'q-chip__content col row no-wrap items-center q-anchor--skip'\n }, hMergeSlotSafely(slots.default, label))\n )\n\n props.iconRight && child.push(\n h(QIcon, {\n class: 'q-chip__icon q-chip__icon--right',\n name: props.iconRight\n })\n )\n\n props.removable === true && child.push(\n h(QIcon, {\n class: 'q-chip__icon q-chip__icon--remove cursor-pointer',\n name: removeIcon.value,\n ...attributes.value.remove,\n onClick: onRemove,\n onKeyup: onRemove\n })\n )\n\n return child\n }\n\n return () => {\n if (props.modelValue === false) return\n\n const data = {\n class: classes.value,\n style: sizeStyle.value\n }\n\n isClickable.value === true && Object.assign(\n data,\n attributes.value.chip,\n { onClick, onKeyup }\n )\n\n return hDir(\n 'div',\n data,\n getContent(),\n 'ripple',\n props.ripple !== false && props.disable !== true,\n () => [ [ Ripple, props.ripple ] ]\n )\n }\n }\n})\n","import useField, { useFieldState, useFieldProps, useFieldEmits } from '../../composables/private.use-field/use-field.js'\n\nimport { createComponent } from '../../utils/private.create/create.js'\n\nexport default createComponent({\n name: 'QField',\n\n inheritAttrs: false,\n\n props: {\n ...useFieldProps,\n\n tag: {\n type: String,\n default: 'label'\n }\n },\n\n emits: useFieldEmits,\n\n setup () {\n return useField(\n useFieldState({ tagProp: true })\n )\n }\n})\n","import { h, ref, computed, watch, onBeforeUpdate, onUpdated, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\n\nimport QField from '../field/QField.js'\nimport QIcon from '../icon/QIcon.js'\nimport QChip from '../chip/QChip.js'\n\nimport QItem from '../item/QItem.js'\nimport QItemSection from '../item/QItemSection.js'\nimport QItemLabel from '../item/QItemLabel.js'\n\nimport QMenu from '../menu/QMenu.js'\nimport QDialog from '../dialog/QDialog.js'\n\nimport useField, { useFieldState, useFieldProps, useFieldEmits, fieldValueIsFilled } from '../../composables/private.use-field/use-field.js'\nimport { useVirtualScroll, useVirtualScrollProps } from '../virtual-scroll/use-virtual-scroll.js'\nimport { useFormProps, useFormInputNameAttr } from '../../composables/use-form/private.use-form.js'\nimport useKeyComposition from '../../composables/private.use-key-composition/use-key-composition.js'\n\nimport { createComponent } from '../../utils/private.create/create.js'\nimport { isDeepEqual } from '../../utils/is/is.js'\nimport { stop, prevent, stopAndPrevent } from '../../utils/event/event.js'\nimport { normalizeToInterval } from '../../utils/format/format.js'\nimport { shouldIgnoreKey, isKeyCode } from '../../utils/private.keyboard/key-composition.js'\nimport { hMergeSlot } from '../../utils/private.render/render.js'\n\nconst validateNewValueMode = v => [ 'add', 'add-unique', 'toggle' ].includes(v)\nconst reEscapeList = '.*+?^${}()|[]\\\\'\nconst fieldPropsList = Object.keys(useFieldProps)\n\nfunction getPropValueFn (userPropName, defaultPropName) {\n if (typeof userPropName === 'function') return userPropName\n\n const propName = userPropName !== void 0\n ? userPropName\n : defaultPropName\n\n return opt => ((opt !== null && typeof opt === 'object' && propName in opt) ? opt[ propName ] : opt)\n}\n\nexport default createComponent({\n name: 'QSelect',\n\n inheritAttrs: false,\n\n props: {\n ...useVirtualScrollProps,\n ...useFormProps,\n ...useFieldProps,\n\n // override of useFieldProps > modelValue\n modelValue: {\n required: true\n },\n\n multiple: Boolean,\n\n displayValue: [ String, Number ],\n displayValueHtml: Boolean,\n dropdownIcon: String,\n\n options: {\n type: Array,\n default: () => []\n },\n\n optionValue: [ Function, String ],\n optionLabel: [ Function, String ],\n optionDisable: [ Function, String ],\n\n hideSelected: Boolean,\n hideDropdownIcon: Boolean,\n fillInput: Boolean,\n\n maxValues: [ Number, String ],\n\n optionsDense: Boolean,\n optionsDark: {\n type: Boolean,\n default: null\n },\n optionsSelectedClass: String,\n optionsHtml: Boolean,\n\n optionsCover: Boolean,\n\n menuShrink: Boolean,\n menuAnchor: String,\n menuSelf: String,\n menuOffset: Array,\n\n popupContentClass: String,\n popupContentStyle: [ String, Array, Object ],\n popupNoRouteDismiss: Boolean,\n\n useInput: Boolean,\n useChips: Boolean,\n\n newValueMode: {\n type: String,\n validator: validateNewValueMode\n },\n\n mapOptions: Boolean,\n emitValue: Boolean,\n\n disableTabSelection: Boolean,\n\n inputDebounce: {\n type: [ Number, String ],\n default: 500\n },\n\n inputClass: [ Array, String, Object ],\n inputStyle: [ Array, String, Object ],\n\n tabindex: {\n type: [ String, Number ],\n default: 0\n },\n\n autocomplete: String,\n\n transitionShow: {},\n transitionHide: {},\n transitionDuration: {},\n\n behavior: {\n type: String,\n validator: v => [ 'default', 'menu', 'dialog' ].includes(v),\n default: 'default'\n },\n\n // override of useVirtualScrollProps > virtualScrollItemSize (no default)\n virtualScrollItemSize: useVirtualScrollProps.virtualScrollItemSize.type,\n\n onNewValue: Function,\n onFilter: Function\n },\n\n emits: [\n ...useFieldEmits,\n 'add', 'remove', 'inputValue',\n 'keyup', 'keypress', 'keydown',\n 'popupShow', 'popupHide',\n 'filterAbort'\n ],\n\n setup (props, { slots, emit }) {\n const { proxy } = getCurrentInstance()\n const { $q } = proxy\n\n const menu = ref(false)\n const dialog = ref(false)\n const optionIndex = ref(-1)\n const inputValue = ref('')\n const dialogFieldFocused = ref(false)\n const innerLoadingIndicator = ref(false)\n\n let filterTimer = null, inputValueTimer = null,\n innerValueCache,\n hasDialog, userInputValue, filterId = null, defaultInputValue,\n transitionShowComputed, searchBuffer, searchBufferExp\n\n const inputRef = ref(null)\n const targetRef = ref(null)\n const menuRef = ref(null)\n const dialogRef = ref(null)\n const menuContentRef = ref(null)\n\n const nameProp = useFormInputNameAttr(props)\n\n const onComposition = useKeyComposition(onInput)\n\n const virtualScrollLength = computed(() => props.options.length)\n const virtualScrollItemSizeComputed = computed(() => (\n props.virtualScrollItemSize === void 0\n ? (props.optionsDense === true ? 24 : 48)\n : props.virtualScrollItemSize\n ))\n\n const {\n virtualScrollSliceRange,\n virtualScrollSliceSizeComputed,\n localResetVirtualScroll,\n padVirtualScroll,\n onVirtualScrollEvt,\n scrollTo,\n setVirtualScrollSize\n } = useVirtualScroll({\n virtualScrollLength, getVirtualScrollTarget, getVirtualScrollEl,\n virtualScrollItemSizeComputed\n })\n\n const state = useFieldState()\n\n const innerValue = computed(() => {\n const\n mapNull = props.mapOptions === true && props.multiple !== true,\n val = props.modelValue !== void 0 && (props.modelValue !== null || mapNull === true)\n ? (props.multiple === true && Array.isArray(props.modelValue) ? props.modelValue : [ props.modelValue ])\n : []\n\n if (props.mapOptions === true) {\n const cache = props.mapOptions === true && innerValueCache !== void 0\n ? innerValueCache\n : []\n const values = val.map(v => getOption(v, cache))\n\n return props.modelValue === null && mapNull === true\n ? values.filter(v => v !== null)\n : values\n }\n\n return val\n })\n\n const innerFieldProps = computed(() => {\n const acc = {}\n fieldPropsList.forEach(key => {\n const val = props[ key ]\n if (val !== void 0) {\n acc[ key ] = val\n }\n })\n return acc\n })\n\n const isOptionsDark = computed(() => (\n props.optionsDark === null\n ? state.isDark.value\n : props.optionsDark\n ))\n\n const hasValue = computed(() => fieldValueIsFilled(innerValue.value))\n\n const computedInputClass = computed(() => {\n let cls = 'q-field__input q-placeholder col'\n\n if (props.hideSelected === true || innerValue.value.length === 0) {\n return [ cls, props.inputClass ]\n }\n\n cls += ' q-field__input--padding'\n\n return props.inputClass === void 0\n ? cls\n : [ cls, props.inputClass ]\n })\n\n const menuContentClass = computed(() =>\n (props.virtualScrollHorizontal === true ? 'q-virtual-scroll--horizontal' : '')\n + (props.popupContentClass ? ' ' + props.popupContentClass : '')\n )\n\n const noOptions = computed(() => virtualScrollLength.value === 0)\n\n const selectedString = computed(() =>\n innerValue.value\n .map(opt => getOptionLabel.value(opt))\n .join(', ')\n )\n\n const ariaCurrentValue = computed(() => (props.displayValue !== void 0\n ? props.displayValue\n : selectedString.value\n ))\n\n const needsHtmlFn = computed(() => (\n props.optionsHtml === true\n ? () => true\n : opt => opt !== void 0 && opt !== null && opt.html === true\n ))\n\n const valueAsHtml = computed(() => (\n props.displayValueHtml === true || (\n props.displayValue === void 0 && (\n props.optionsHtml === true\n || innerValue.value.some(needsHtmlFn.value)\n )\n )\n ))\n\n const tabindex = computed(() => (state.focused.value === true ? props.tabindex : -1))\n\n const comboboxAttrs = computed(() => {\n const attrs = {\n tabindex: props.tabindex,\n role: 'combobox',\n 'aria-label': props.label,\n 'aria-readonly': props.readonly === true ? 'true' : 'false',\n 'aria-autocomplete': props.useInput === true ? 'list' : 'none',\n 'aria-expanded': menu.value === true ? 'true' : 'false',\n 'aria-controls': `${ state.targetUid.value }_lb`\n }\n\n if (optionIndex.value >= 0) {\n attrs[ 'aria-activedescendant' ] = `${ state.targetUid.value }_${ optionIndex.value }`\n }\n\n return attrs\n })\n\n const listboxAttrs = computed(() => ({\n id: `${ state.targetUid.value }_lb`,\n role: 'listbox',\n 'aria-multiselectable': props.multiple === true ? 'true' : 'false'\n }))\n\n const selectedScope = computed(() => {\n return innerValue.value.map((opt, i) => ({\n index: i,\n opt,\n html: needsHtmlFn.value(opt),\n selected: true,\n removeAtIndex: removeAtIndexAndFocus,\n toggleOption,\n tabindex: tabindex.value\n }))\n })\n\n const optionScope = computed(() => {\n if (virtualScrollLength.value === 0) {\n return []\n }\n\n const { from, to } = virtualScrollSliceRange.value\n\n return props.options.slice(from, to).map((opt, i) => {\n const disable = isOptionDisabled.value(opt) === true\n const active = isOptionSelected(opt) === true\n const index = from + i\n\n const itemProps = {\n clickable: true,\n active,\n activeClass: computedOptionsSelectedClass.value,\n manualFocus: true,\n focused: false,\n disable,\n tabindex: -1,\n dense: props.optionsDense,\n dark: isOptionsDark.value,\n role: 'option',\n 'aria-selected': active === true ? 'true' : 'false',\n id: `${ state.targetUid.value }_${ index }`,\n onClick: () => { toggleOption(opt) }\n }\n\n if (disable !== true) {\n optionIndex.value === index && (itemProps.focused = true)\n\n if ($q.platform.is.desktop === true) {\n itemProps.onMousemove = () => { menu.value === true && setOptionIndex(index) }\n }\n }\n\n return {\n index,\n opt,\n html: needsHtmlFn.value(opt),\n label: getOptionLabel.value(opt),\n selected: itemProps.active,\n focused: itemProps.focused,\n toggleOption,\n setOptionIndex,\n itemProps\n }\n })\n })\n\n const dropdownArrowIcon = computed(() => (\n props.dropdownIcon !== void 0\n ? props.dropdownIcon\n : $q.iconSet.arrow.dropdown\n ))\n\n const squaredMenu = computed(() =>\n props.optionsCover === false\n && props.outlined !== true\n && props.standout !== true\n && props.borderless !== true\n && props.rounded !== true\n )\n\n const computedOptionsSelectedClass = computed(() => (\n props.optionsSelectedClass !== void 0\n ? props.optionsSelectedClass\n : (props.color !== void 0 ? `text-${ props.color }` : '')\n ))\n\n // returns method to get value of an option;\n // takes into account 'option-value' prop\n const getOptionValue = computed(() => getPropValueFn(props.optionValue, 'value'))\n\n // returns method to get label of an option;\n // takes into account 'option-label' prop\n const getOptionLabel = computed(() => getPropValueFn(props.optionLabel, 'label'))\n\n // returns method to tell if an option is disabled;\n // takes into account 'option-disable' prop\n const isOptionDisabled = computed(() => getPropValueFn(props.optionDisable, 'disable'))\n\n const innerOptionsValue = computed(() => innerValue.value.map(getOptionValue.value))\n\n const inputControlEvents = computed(() => {\n const evt = {\n onInput,\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n onChange: onComposition,\n onKeydown: onTargetKeydown,\n onKeyup: onTargetAutocomplete,\n onKeypress: onTargetKeypress,\n onFocus: selectInputText,\n onClick (e) { hasDialog === true && stop(e) }\n }\n\n evt.onCompositionstart = evt.onCompositionupdate = evt.onCompositionend = onComposition\n\n return evt\n })\n\n watch(innerValue, val => {\n innerValueCache = val\n\n if (\n props.useInput === true\n && props.fillInput === true\n && props.multiple !== true\n // Prevent re-entering in filter while filtering\n // Also prevent clearing inputValue while filtering\n && state.innerLoading.value !== true\n && ((dialog.value !== true && menu.value !== true) || hasValue.value !== true)\n ) {\n userInputValue !== true && resetInputValue()\n if (dialog.value === true || menu.value === true) {\n filter('')\n }\n }\n }, { immediate: true })\n\n watch(() => props.fillInput, resetInputValue)\n\n watch(menu, updateMenu)\n\n watch(virtualScrollLength, rerenderMenu)\n\n function getEmittingOptionValue (opt) {\n return props.emitValue === true\n ? getOptionValue.value(opt)\n : opt\n }\n\n function removeAtIndex (index) {\n if (index !== -1 && index < innerValue.value.length) {\n if (props.multiple === true) {\n const model = props.modelValue.slice()\n emit('remove', { index, value: model.splice(index, 1)[ 0 ] })\n emit('update:modelValue', model)\n }\n else {\n emit('update:modelValue', null)\n }\n }\n }\n\n function removeAtIndexAndFocus (index) {\n removeAtIndex(index)\n state.focus()\n }\n\n function add (opt, unique) {\n const val = getEmittingOptionValue(opt)\n\n if (props.multiple !== true) {\n props.fillInput === true && updateInputValue(\n getOptionLabel.value(opt),\n true,\n true\n )\n\n emit('update:modelValue', val)\n return\n }\n\n if (innerValue.value.length === 0) {\n emit('add', { index: 0, value: val })\n emit('update:modelValue', props.multiple === true ? [ val ] : val)\n return\n }\n\n if (unique === true && isOptionSelected(opt) === true) {\n return\n }\n\n if (props.maxValues !== void 0 && props.modelValue.length >= props.maxValues) {\n return\n }\n\n const model = props.modelValue.slice()\n\n emit('add', { index: model.length, value: val })\n model.push(val)\n emit('update:modelValue', model)\n }\n\n function toggleOption (opt, keepOpen) {\n if (state.editable.value !== true || opt === void 0 || isOptionDisabled.value(opt) === true) {\n return\n }\n\n const optValue = getOptionValue.value(opt)\n\n if (props.multiple !== true) {\n if (keepOpen !== true) {\n updateInputValue(\n props.fillInput === true ? getOptionLabel.value(opt) : '',\n true,\n true\n )\n\n hidePopup()\n }\n\n targetRef.value !== null && targetRef.value.focus()\n\n if (\n innerValue.value.length === 0\n || isDeepEqual(getOptionValue.value(innerValue.value[ 0 ]), optValue) !== true\n ) {\n emit('update:modelValue', props.emitValue === true ? optValue : opt)\n }\n return\n }\n\n (hasDialog !== true || dialogFieldFocused.value === true) && state.focus()\n\n selectInputText()\n\n if (innerValue.value.length === 0) {\n const val = props.emitValue === true ? optValue : opt\n emit('add', { index: 0, value: val })\n emit('update:modelValue', props.multiple === true ? [ val ] : val)\n return\n }\n\n const\n model = props.modelValue.slice(),\n index = innerOptionsValue.value.findIndex(v => isDeepEqual(v, optValue))\n\n if (index !== -1) {\n emit('remove', { index, value: model.splice(index, 1)[ 0 ] })\n }\n else {\n if (props.maxValues !== void 0 && model.length >= props.maxValues) {\n return\n }\n\n const val = props.emitValue === true ? optValue : opt\n\n emit('add', { index: model.length, value: val })\n model.push(val)\n }\n\n emit('update:modelValue', model)\n }\n\n function setOptionIndex (index) {\n if ($q.platform.is.desktop !== true) return\n\n const val = index !== -1 && index < virtualScrollLength.value\n ? index\n : -1\n\n if (optionIndex.value !== val) {\n optionIndex.value = val\n }\n }\n\n function moveOptionSelection (offset = 1, skipInputValue) {\n if (menu.value === true) {\n let index = optionIndex.value\n do {\n index = normalizeToInterval(\n index + offset,\n -1,\n virtualScrollLength.value - 1\n )\n }\n while (index !== -1 && index !== optionIndex.value && isOptionDisabled.value(props.options[ index ]) === true)\n\n if (optionIndex.value !== index) {\n setOptionIndex(index)\n scrollTo(index)\n\n if (skipInputValue !== true && props.useInput === true && props.fillInput === true) {\n setInputValue(\n index >= 0\n ? getOptionLabel.value(props.options[ index ])\n : defaultInputValue,\n true\n )\n }\n }\n }\n }\n\n function getOption (value, valueCache) {\n const fn = opt => isDeepEqual(getOptionValue.value(opt), value)\n return props.options.find(fn) || valueCache.find(fn) || value\n }\n\n function isOptionSelected (opt) {\n const val = getOptionValue.value(opt)\n return innerOptionsValue.value.find(v => isDeepEqual(v, val)) !== void 0\n }\n\n function selectInputText (e) {\n if (\n props.useInput === true\n && targetRef.value !== null\n && (e === void 0 || (targetRef.value === e.target && e.target.value === selectedString.value))\n ) {\n targetRef.value.select()\n }\n }\n\n function onTargetKeyup (e) {\n // if ESC and we have an opened menu\n // then stop propagation (might be caught by a QDialog\n // and so it will also close the QDialog, which is wrong)\n if (isKeyCode(e, 27) === true && menu.value === true) {\n stop(e)\n // on ESC we need to close the dialog also\n hidePopup()\n resetInputValue()\n }\n\n emit('keyup', e)\n }\n\n function onTargetAutocomplete (e) {\n const { value } = e.target\n\n if (e.keyCode !== void 0) {\n onTargetKeyup(e)\n return\n }\n\n e.target.value = ''\n\n if (filterTimer !== null) {\n clearTimeout(filterTimer)\n filterTimer = null\n }\n if (inputValueTimer !== null) {\n clearTimeout(inputValueTimer)\n inputValueTimer = null\n }\n\n resetInputValue()\n\n if (typeof value === 'string' && value.length !== 0) {\n const needle = value.toLocaleLowerCase()\n const findFn = extractFn => {\n const option = props.options.find(opt => extractFn.value(opt).toLocaleLowerCase() === needle)\n\n if (option === void 0) {\n return false\n }\n\n if (innerValue.value.indexOf(option) === -1) {\n toggleOption(option)\n }\n else {\n hidePopup()\n }\n\n return true\n }\n const fillFn = afterFilter => {\n if (findFn(getOptionValue) === true) {\n return\n }\n if (findFn(getOptionLabel) === true || afterFilter === true) {\n return\n }\n\n filter(value, true, () => fillFn(true))\n }\n\n fillFn()\n }\n else {\n state.clearValue(e)\n }\n }\n\n function onTargetKeypress (e) {\n emit('keypress', e)\n }\n\n function onTargetKeydown (e) {\n emit('keydown', e)\n\n if (shouldIgnoreKey(e) === true) {\n return\n }\n\n const newValueModeValid = inputValue.value.length !== 0\n && (props.newValueMode !== void 0 || props.onNewValue !== void 0)\n\n const tabShouldSelect = e.shiftKey !== true\n && props.disableTabSelection !== true\n && props.multiple !== true\n && (optionIndex.value !== -1 || newValueModeValid === true)\n\n // escape\n if (e.keyCode === 27) {\n prevent(e) // prevent clearing the inputValue\n return\n }\n\n // tab\n if (e.keyCode === 9 && tabShouldSelect === false) {\n closeMenu()\n return\n }\n\n if (\n e.target === void 0\n || e.target.id !== state.targetUid.value\n || state.editable.value !== true\n ) return\n\n // down\n if (\n e.keyCode === 40\n && state.innerLoading.value !== true\n && menu.value === false\n ) {\n stopAndPrevent(e)\n showPopup()\n return\n }\n\n // backspace\n if (\n e.keyCode === 8\n && (\n props.useChips === true\n || props.clearable === true\n )\n && props.hideSelected !== true\n && inputValue.value.length === 0\n ) {\n if (props.multiple === true && Array.isArray(props.modelValue) === true) {\n removeAtIndex(props.modelValue.length - 1)\n }\n else if (props.multiple !== true && props.modelValue !== null) {\n emit('update:modelValue', null)\n }\n return\n }\n\n // home, end - 36, 35\n if (\n (e.keyCode === 35 || e.keyCode === 36)\n && (typeof inputValue.value !== 'string' || inputValue.value.length === 0)\n ) {\n stopAndPrevent(e)\n optionIndex.value = -1\n moveOptionSelection(e.keyCode === 36 ? 1 : -1, props.multiple)\n }\n\n // pg up, pg down - 33, 34\n if (\n (e.keyCode === 33 || e.keyCode === 34)\n && virtualScrollSliceSizeComputed.value !== void 0\n ) {\n stopAndPrevent(e)\n optionIndex.value = Math.max(\n -1,\n Math.min(\n virtualScrollLength.value,\n optionIndex.value + (e.keyCode === 33 ? -1 : 1) * virtualScrollSliceSizeComputed.value.view\n )\n )\n moveOptionSelection(e.keyCode === 33 ? 1 : -1, props.multiple)\n }\n\n // up, down\n if (e.keyCode === 38 || e.keyCode === 40) {\n stopAndPrevent(e)\n moveOptionSelection(e.keyCode === 38 ? -1 : 1, props.multiple)\n }\n\n const optionsLength = virtualScrollLength.value\n\n // clear search buffer if expired\n if (searchBuffer === void 0 || searchBufferExp < Date.now()) {\n searchBuffer = ''\n }\n\n // keyboard search when not having use-input\n if (\n optionsLength > 0\n && props.useInput !== true\n && e.key !== void 0\n && e.key.length === 1 // printable char\n && e.altKey === false // not kbd shortcut\n && e.ctrlKey === false // not kbd shortcut\n && e.metaKey === false // not kbd shortcut, especially on macOS with Command key\n && (e.keyCode !== 32 || searchBuffer.length !== 0) // space in middle of search\n ) {\n menu.value !== true && showPopup(e)\n\n const\n char = e.key.toLocaleLowerCase(),\n keyRepeat = searchBuffer.length === 1 && searchBuffer[ 0 ] === char\n\n searchBufferExp = Date.now() + 1500\n if (keyRepeat === false) {\n stopAndPrevent(e)\n searchBuffer += char\n }\n\n const searchRe = new RegExp('^' + searchBuffer.split('').map(l => (reEscapeList.indexOf(l) !== -1 ? '\\\\' + l : l)).join('.*'), 'i')\n\n let index = optionIndex.value\n\n if (keyRepeat === true || index < 0 || searchRe.test(getOptionLabel.value(props.options[ index ])) !== true) {\n do {\n index = normalizeToInterval(index + 1, -1, optionsLength - 1)\n }\n while (index !== optionIndex.value && (\n isOptionDisabled.value(props.options[ index ]) === true\n || searchRe.test(getOptionLabel.value(props.options[ index ])) !== true\n ))\n }\n\n if (optionIndex.value !== index) {\n nextTick(() => {\n setOptionIndex(index)\n scrollTo(index)\n\n if (index >= 0 && props.useInput === true && props.fillInput === true) {\n setInputValue(getOptionLabel.value(props.options[ index ]), true)\n }\n })\n }\n\n return\n }\n\n // enter, space (when not using use-input and not in search), or tab (when not using multiple and option selected)\n // same target is checked above\n if (\n e.keyCode !== 13\n && (e.keyCode !== 32 || props.useInput === true || searchBuffer !== '')\n && (e.keyCode !== 9 || tabShouldSelect === false)\n ) return\n\n e.keyCode !== 9 && stopAndPrevent(e)\n\n if (optionIndex.value !== -1 && optionIndex.value < optionsLength) {\n toggleOption(props.options[ optionIndex.value ])\n return\n }\n\n if (newValueModeValid === true) {\n const done = (val, mode) => {\n if (mode) {\n if (validateNewValueMode(mode) !== true) {\n return\n }\n }\n else {\n mode = props.newValueMode\n }\n\n updateInputValue('', props.multiple !== true, true)\n\n if (val === void 0 || val === null) {\n return\n }\n\n const fn = mode === 'toggle' ? toggleOption : add\n fn(val, mode === 'add-unique')\n\n if (props.multiple !== true) {\n targetRef.value !== null && targetRef.value.focus()\n hidePopup()\n }\n }\n\n if (props.onNewValue !== void 0) {\n emit('newValue', inputValue.value, done)\n }\n else {\n done(inputValue.value)\n }\n\n if (props.multiple !== true) {\n return\n }\n }\n\n if (menu.value === true) {\n closeMenu()\n }\n else if (state.innerLoading.value !== true) {\n showPopup()\n }\n }\n\n function getVirtualScrollEl () {\n return hasDialog === true\n ? menuContentRef.value\n : (\n menuRef.value !== null && menuRef.value.contentEl !== null\n ? menuRef.value.contentEl\n : void 0\n )\n }\n\n function getVirtualScrollTarget () {\n return getVirtualScrollEl()\n }\n\n function getSelection () {\n if (props.hideSelected === true) {\n return []\n }\n\n if (slots[ 'selected-item' ] !== void 0) {\n return selectedScope.value.map(scope => slots[ 'selected-item' ](scope)).slice()\n }\n\n if (slots.selected !== void 0) {\n return [].concat(slots.selected())\n }\n\n if (props.useChips === true) {\n return selectedScope.value.map((scope, i) => h(QChip, {\n key: 'option-' + i,\n removable: state.editable.value === true && isOptionDisabled.value(scope.opt) !== true,\n dense: true,\n textColor: props.color,\n tabindex: tabindex.value,\n onRemove () { scope.removeAtIndex(i) }\n }, () => h('span', {\n class: 'ellipsis',\n [ scope.html === true ? 'innerHTML' : 'textContent' ]: getOptionLabel.value(scope.opt)\n })))\n }\n\n return [\n h('span', {\n [ valueAsHtml.value === true ? 'innerHTML' : 'textContent' ]: ariaCurrentValue.value\n })\n ]\n }\n\n function getAllOptions () {\n if (noOptions.value === true) {\n return slots[ 'no-option' ] !== void 0\n ? slots[ 'no-option' ]({ inputValue: inputValue.value })\n : void 0\n }\n\n const fn = slots.option !== void 0\n ? slots.option\n : scope => {\n return h(QItem, {\n key: scope.index,\n ...scope.itemProps\n }, () => {\n return h(\n QItemSection,\n () => h(\n QItemLabel,\n () => h('span', {\n [ scope.html === true ? 'innerHTML' : 'textContent' ]: scope.label\n })\n )\n )\n })\n }\n\n let options = padVirtualScroll('div', optionScope.value.map(fn))\n\n if (slots[ 'before-options' ] !== void 0) {\n options = slots[ 'before-options' ]().concat(options)\n }\n\n return hMergeSlot(slots[ 'after-options' ], options)\n }\n\n function getInput (fromDialog, isTarget) {\n const attrs = isTarget === true ? { ...comboboxAttrs.value, ...state.splitAttrs.attributes.value } : void 0\n\n const data = {\n ref: isTarget === true ? targetRef : void 0,\n key: 'i_t',\n class: computedInputClass.value,\n style: props.inputStyle,\n value: inputValue.value !== void 0 ? inputValue.value : '',\n // required for Android in order to show ENTER key when in form\n type: 'search',\n ...attrs,\n id: isTarget === true ? state.targetUid.value : void 0,\n maxlength: props.maxlength,\n autocomplete: props.autocomplete,\n 'data-autofocus': fromDialog === true || props.autofocus === true || void 0,\n disabled: props.disable === true,\n readonly: props.readonly === true,\n ...inputControlEvents.value\n }\n\n if (fromDialog !== true && hasDialog === true) {\n if (Array.isArray(data.class) === true) {\n data.class = [ ...data.class, 'no-pointer-events' ]\n }\n else {\n data.class += ' no-pointer-events'\n }\n }\n\n return h('input', data)\n }\n\n function onInput (e) {\n if (filterTimer !== null) {\n clearTimeout(filterTimer)\n filterTimer = null\n }\n if (inputValueTimer !== null) {\n clearTimeout(inputValueTimer)\n inputValueTimer = null\n }\n\n if (e && e.target && e.target.qComposing === true) {\n return\n }\n\n setInputValue(e.target.value || '')\n // mark it here as user input so that if updateInputValue is called\n // before filter is called the indicator is reset\n userInputValue = true\n defaultInputValue = inputValue.value\n\n if (\n state.focused.value !== true\n && (hasDialog !== true || dialogFieldFocused.value === true)\n ) {\n state.focus()\n }\n\n if (props.onFilter !== void 0) {\n filterTimer = setTimeout(() => {\n filterTimer = null\n filter(inputValue.value)\n }, props.inputDebounce)\n }\n }\n\n function setInputValue (val, emitImmediately) {\n if (inputValue.value !== val) {\n inputValue.value = val\n\n if (emitImmediately === true || props.inputDebounce === 0 || props.inputDebounce === '0') {\n emit('inputValue', val)\n }\n else {\n inputValueTimer = setTimeout(() => {\n inputValueTimer = null\n emit('inputValue', val)\n }, props.inputDebounce)\n }\n }\n }\n\n function updateInputValue (val, noFiltering, internal) {\n userInputValue = internal !== true\n\n if (props.useInput === true) {\n setInputValue(val, true)\n\n if (noFiltering === true || internal !== true) {\n defaultInputValue = val\n }\n\n noFiltering !== true && filter(val)\n }\n }\n\n function filter (val, keepClosed, afterUpdateFn) {\n if (props.onFilter === void 0 || (keepClosed !== true && state.focused.value !== true)) {\n return\n }\n\n if (state.innerLoading.value === true) {\n emit('filterAbort')\n }\n else {\n state.innerLoading.value = true\n innerLoadingIndicator.value = true\n }\n\n if (\n val !== ''\n && props.multiple !== true\n && innerValue.value.length !== 0\n && userInputValue !== true\n && val === getOptionLabel.value(innerValue.value[ 0 ])\n ) {\n val = ''\n }\n\n const localFilterId = setTimeout(() => {\n menu.value === true && (menu.value = false)\n }, 10)\n\n filterId !== null && clearTimeout(filterId)\n filterId = localFilterId\n\n emit(\n 'filter',\n val,\n (fn, afterFn) => {\n if ((keepClosed === true || state.focused.value === true) && filterId === localFilterId) {\n clearTimeout(filterId)\n\n typeof fn === 'function' && fn()\n\n // hide indicator to allow arrow to animate\n innerLoadingIndicator.value = false\n\n nextTick(() => {\n state.innerLoading.value = false\n\n if (state.editable.value === true) {\n if (keepClosed === true) {\n menu.value === true && hidePopup()\n }\n else if (menu.value === true) {\n updateMenu(true)\n }\n else {\n menu.value = true\n }\n }\n\n typeof afterFn === 'function' && nextTick(() => { afterFn(proxy) })\n typeof afterUpdateFn === 'function' && nextTick(() => { afterUpdateFn(proxy) })\n })\n }\n },\n () => {\n if (state.focused.value === true && filterId === localFilterId) {\n clearTimeout(filterId)\n state.innerLoading.value = false\n innerLoadingIndicator.value = false\n }\n menu.value === true && (menu.value = false)\n }\n )\n }\n\n function getMenu () {\n return h(QMenu, {\n ref: menuRef,\n class: menuContentClass.value,\n style: props.popupContentStyle,\n modelValue: menu.value,\n fit: props.menuShrink !== true,\n cover: props.optionsCover === true && noOptions.value !== true && props.useInput !== true,\n anchor: props.menuAnchor,\n self: props.menuSelf,\n offset: props.menuOffset,\n dark: isOptionsDark.value,\n noParentEvent: true,\n noRefocus: true,\n noFocus: true,\n noRouteDismiss: props.popupNoRouteDismiss,\n square: squaredMenu.value,\n transitionShow: props.transitionShow,\n transitionHide: props.transitionHide,\n transitionDuration: props.transitionDuration,\n separateClosePopup: true,\n ...listboxAttrs.value,\n onScrollPassive: onVirtualScrollEvt,\n onBeforeShow: onControlPopupShow,\n onBeforeHide: onMenuBeforeHide,\n onShow: onMenuShow\n }, getAllOptions)\n }\n\n function onMenuBeforeHide (e) {\n onControlPopupHide(e)\n closeMenu()\n }\n\n function onMenuShow () {\n setVirtualScrollSize()\n }\n\n function onDialogFieldFocus (e) {\n stop(e)\n targetRef.value !== null && targetRef.value.focus()\n dialogFieldFocused.value = true\n window.scrollTo(window.pageXOffset || window.scrollX || document.body.scrollLeft || 0, 0)\n }\n\n function onDialogFieldBlur (e) {\n stop(e)\n nextTick(() => {\n dialogFieldFocused.value = false\n })\n }\n\n function getDialog () {\n const content = [\n h(QField, {\n class: `col-auto ${ state.fieldClass.value }`,\n ...innerFieldProps.value,\n for: state.targetUid.value,\n dark: isOptionsDark.value,\n square: true,\n loading: innerLoadingIndicator.value,\n itemAligned: false,\n filled: true,\n stackLabel: inputValue.value.length !== 0,\n ...state.splitAttrs.listeners.value,\n onFocus: onDialogFieldFocus,\n onBlur: onDialogFieldBlur\n }, {\n ...slots,\n rawControl: () => state.getControl(true),\n before: void 0,\n after: void 0\n })\n ]\n\n menu.value === true && content.push(\n h('div', {\n ref: menuContentRef,\n class: menuContentClass.value + ' scroll',\n style: props.popupContentStyle,\n ...listboxAttrs.value,\n onClick: prevent,\n onScrollPassive: onVirtualScrollEvt\n }, getAllOptions())\n )\n\n return h(QDialog, {\n ref: dialogRef,\n modelValue: dialog.value,\n position: props.useInput === true ? 'top' : void 0,\n transitionShow: transitionShowComputed,\n transitionHide: props.transitionHide,\n transitionDuration: props.transitionDuration,\n noRouteDismiss: props.popupNoRouteDismiss,\n onBeforeShow: onControlPopupShow,\n onBeforeHide: onDialogBeforeHide,\n onHide: onDialogHide,\n onShow: onDialogShow\n }, () => h('div', {\n class: 'q-select__dialog'\n + (isOptionsDark.value === true ? ' q-select__dialog--dark q-dark' : '')\n + (dialogFieldFocused.value === true ? ' q-select__dialog--focused' : '')\n }, content))\n }\n\n function onDialogBeforeHide (e) {\n onControlPopupHide(e)\n\n if (dialogRef.value !== null) {\n dialogRef.value.__updateRefocusTarget(\n state.rootRef.value.querySelector('.q-field__native > [tabindex]:last-child')\n )\n }\n\n state.focused.value = false\n }\n\n function onDialogHide (e) {\n hidePopup()\n state.focused.value === false && emit('blur', e)\n resetInputValue()\n }\n\n function onDialogShow () {\n const el = document.activeElement\n if (\n (el === null || el.id !== state.targetUid.value)\n && targetRef.value !== null\n && targetRef.value !== el\n ) {\n targetRef.value.focus()\n }\n\n setVirtualScrollSize()\n }\n\n function closeMenu () {\n if (dialog.value === true) {\n return\n }\n\n optionIndex.value = -1\n\n if (menu.value === true) {\n menu.value = false\n }\n\n if (state.focused.value === false) {\n if (filterId !== null) {\n clearTimeout(filterId)\n filterId = null\n }\n\n if (state.innerLoading.value === true) {\n emit('filterAbort')\n state.innerLoading.value = false\n innerLoadingIndicator.value = false\n }\n }\n }\n\n function showPopup (e) {\n if (state.editable.value !== true) {\n return\n }\n\n if (hasDialog === true) {\n state.onControlFocusin(e)\n dialog.value = true\n nextTick(() => {\n state.focus()\n })\n }\n else {\n state.focus()\n }\n\n if (props.onFilter !== void 0) {\n filter(inputValue.value)\n }\n else if (noOptions.value !== true || slots[ 'no-option' ] !== void 0) {\n menu.value = true\n }\n }\n\n function hidePopup () {\n dialog.value = false\n closeMenu()\n }\n\n function resetInputValue () {\n props.useInput === true && updateInputValue(\n props.multiple !== true && props.fillInput === true && innerValue.value.length !== 0\n ? getOptionLabel.value(innerValue.value[ 0 ]) || ''\n : '',\n true,\n true\n )\n }\n\n function updateMenu (show) {\n let optionIndex = -1\n\n if (show === true) {\n if (innerValue.value.length !== 0) {\n const val = getOptionValue.value(innerValue.value[ 0 ])\n optionIndex = props.options.findIndex(v => isDeepEqual(getOptionValue.value(v), val))\n }\n\n localResetVirtualScroll(optionIndex)\n }\n\n setOptionIndex(optionIndex)\n }\n\n function rerenderMenu (newLength, oldLength) {\n if (menu.value === true && state.innerLoading.value === false) {\n localResetVirtualScroll(-1, true)\n\n nextTick(() => {\n if (menu.value === true && state.innerLoading.value === false) {\n if (newLength > oldLength) {\n localResetVirtualScroll()\n }\n else {\n updateMenu(true)\n }\n }\n })\n }\n }\n\n function updateMenuPosition () {\n if (dialog.value === false && menuRef.value !== null) {\n menuRef.value.updatePosition()\n }\n }\n\n function onControlPopupShow (e) {\n e !== void 0 && stop(e)\n emit('popupShow', e)\n state.hasPopupOpen = true\n state.onControlFocusin(e)\n }\n\n function onControlPopupHide (e) {\n e !== void 0 && stop(e)\n emit('popupHide', e)\n state.hasPopupOpen = false\n state.onControlFocusout(e)\n }\n\n function updatePreState () {\n hasDialog = $q.platform.is.mobile !== true && props.behavior !== 'dialog'\n ? false\n : props.behavior !== 'menu' && (\n props.useInput === true\n ? slots[ 'no-option' ] !== void 0 || props.onFilter !== void 0 || noOptions.value === false\n : true\n )\n\n transitionShowComputed = $q.platform.is.ios === true && hasDialog === true && props.useInput === true\n ? 'fade'\n : props.transitionShow\n }\n\n onBeforeUpdate(updatePreState)\n onUpdated(updateMenuPosition)\n\n updatePreState()\n\n onBeforeUnmount(() => {\n filterTimer !== null && clearTimeout(filterTimer)\n inputValueTimer !== null && clearTimeout(inputValueTimer)\n })\n\n // expose public methods\n Object.assign(proxy, {\n showPopup, hidePopup,\n removeAtIndex, add, toggleOption,\n getOptionIndex: () => optionIndex.value,\n setOptionIndex, moveOptionSelection,\n filter, updateMenuPosition, updateInputValue,\n isOptionSelected,\n getEmittingOptionValue,\n isOptionDisabled: (...args) => isOptionDisabled.value.apply(null, args) === true,\n getOptionValue: (...args) => getOptionValue.value.apply(null, args),\n getOptionLabel: (...args) => getOptionLabel.value.apply(null, args)\n })\n\n Object.assign(state, {\n innerValue,\n\n fieldClass: computed(() =>\n `q-select q-field--auto-height q-select--with${ props.useInput !== true ? 'out' : '' }-input`\n + ` q-select--with${ props.useChips !== true ? 'out' : '' }-chips`\n + ` q-select--${ props.multiple === true ? 'multiple' : 'single' }`\n ),\n\n inputRef,\n targetRef,\n hasValue,\n showPopup,\n\n floatingLabel: computed(() =>\n (props.hideSelected !== true && hasValue.value === true)\n || typeof inputValue.value === 'number'\n || inputValue.value.length !== 0\n || fieldValueIsFilled(props.displayValue)\n ),\n\n getControlChild: () => {\n if (\n state.editable.value !== false && (\n dialog.value === true // dialog always has menu displayed, so need to render it\n || noOptions.value !== true\n || slots[ 'no-option' ] !== void 0\n )\n ) {\n return hasDialog === true ? getDialog() : getMenu()\n }\n else if (state.hasPopupOpen === true) {\n // explicitly set it otherwise TAB will not blur component\n state.hasPopupOpen = false\n }\n },\n\n controlEvents: {\n onFocusin (e) { state.onControlFocusin(e) },\n onFocusout (e) {\n state.onControlFocusout(e, () => {\n resetInputValue()\n closeMenu()\n })\n },\n onClick (e) {\n // label from QField will propagate click on the input\n prevent(e)\n\n if (hasDialog !== true && menu.value === true) {\n closeMenu()\n targetRef.value !== null && targetRef.value.focus()\n return\n }\n\n showPopup(e)\n }\n },\n\n getControl: fromDialog => {\n const child = getSelection()\n const isTarget = fromDialog === true || dialog.value !== true || hasDialog !== true\n\n if (props.useInput === true) {\n child.push(getInput(fromDialog, isTarget))\n }\n // there can be only one (when dialog is opened the control in dialog should be target)\n else if (state.editable.value === true) {\n const attrs = isTarget === true ? comboboxAttrs.value : void 0\n\n child.push(\n h('input', {\n ref: isTarget === true ? targetRef : void 0,\n key: 'd_t',\n class: 'q-select__focus-target',\n id: isTarget === true ? state.targetUid.value : void 0,\n value: ariaCurrentValue.value,\n readonly: true,\n 'data-autofocus': fromDialog === true || props.autofocus === true || void 0,\n ...attrs,\n onKeydown: onTargetKeydown,\n onKeyup: onTargetKeyup,\n onKeypress: onTargetKeypress\n })\n )\n\n if (isTarget === true && typeof props.autocomplete === 'string' && props.autocomplete.length !== 0) {\n child.push(\n h('input', {\n class: 'q-select__autocomplete-input',\n autocomplete: props.autocomplete,\n tabindex: -1,\n onKeyup: onTargetAutocomplete\n })\n )\n }\n }\n\n if (nameProp.value !== void 0 && props.disable !== true && innerOptionsValue.value.length !== 0) {\n const opts = innerOptionsValue.value.map(value => h('option', { value, selected: true }))\n\n child.push(\n h('select', {\n class: 'hidden',\n name: nameProp.value,\n multiple: props.multiple\n }, opts)\n )\n }\n\n const attrs = props.useInput === true || isTarget !== true ? void 0 : state.splitAttrs.attributes.value\n\n return h('div', {\n class: 'q-field__native row items-center',\n ...attrs,\n ...state.splitAttrs.listeners.value\n }, child)\n },\n\n getInnerAppend: () => (\n props.loading !== true && innerLoadingIndicator.value !== true && props.hideDropdownIcon !== true\n ? [\n h(QIcon, {\n class: 'q-select__dropdown-icon' + (menu.value === true ? ' rotate-180' : ''),\n name: dropdownArrowIcon.value\n })\n ]\n : null\n )\n })\n\n return useField(state)\n }\n})\n"],"names":["useAnchorStaticProps","useAnchorProps","useAnchor","showing","avoidEmit","configureAnchorEl","props","proxy","emit","getCurrentInstance","anchorEl","ref","touchTimer","canShow","evt","anchorEvents","isKeyCode","prevent","nextTick","target","addEvt","clearSelection","context","evts","unconfigureAnchorEl","cleanEvt","setAnchorEl","el","pickAnchorEl","watch","val","onMounted","onBeforeUnmount","useScrollTarget","configureScrollTarget","localScrollTarget","scrollFn","changeScrollEvent","scrollTarget","fn","fnProp","fnHandler","listenOpts","unconfigureScrollTarget","noParentEventWatcher","notPassiveCapture","registeredList","globalHandler","portalIndex","portalProxyList","i","state","addClickOutside","clickOutsideProps","removeClickOutside","index","h","vpLeft","vpTop","validatePosition","pos","parts","validateOffset","horizontalPos","parsePosition","rtl","getAnchorProps","offset","top","left","right","bottom","width","height","getAbsoluteAnchorProps","absoluteOffset","getTargetProps","getTopLeftProps","anchorProps","targetProps","anchorOrigin","selfOrigin","setPosition","cfg","retryNumber","targetEl","fit","cover","maxHeight","maxWidth","client","scrollLeft","scrollTop","origElWidth","origElHeight","elWidth","elHeight","elStyle","applyBoundaries","hasChanged","offsetY","offsetX","currentHeight","currentWidth","margin","getScrollbarWidth","innerHeight","innerWidth","anchorY","anchorX","QMenu","createComponent","useModelToggleProps","useDarkProps","useTransitionProps","scrollTargetProp","useModelToggleEmits","slots","attrs","refocusTarget","unwatchPosition","avoidAutoClose","vm","$q","innerRef","hideOnRouteChange","computed","isDark","useDark","registerTick","removeTick","useTick","registerTimeout","useTimeout","transitionProps","transitionStyle","useTransition","hide","useModelToggle","handleShow","handleHide","showPortal","hidePortal","renderPortal","usePortal","renderPortalContent","e","stopAndPrevent","menuClass","onEvents","onAutoClose","handlesFocus","addEscapeKey","onEscapeKey","removeEscapeKey","focus","addFocusFn","node","addFocusout","onFocusout","position","updatePosition","anchorCleanup","hiding","removeFocusout","getScrollTarget","closePortalMenus","childHasFocus","Transition","hSlot","defaultSizes","QChip","useSizeProps","sizeStyle","useSize","hasLeftIcon","leftIcon","removeIcon","isClickable","classes","text","attributes","chip","remove","onKeyup","onClick","onRemove","getContent","child","QIcon","label","hMergeSlotSafely","data","hDir","Ripple","QField","useFieldProps","useFieldEmits","useField","useFieldState","validateNewValueMode","v","reEscapeList","fieldPropsList","getPropValueFn","userPropName","defaultPropName","propName","opt","__nuxt_component_2","useVirtualScrollProps","useFormProps","menu","dialog","optionIndex","inputValue","dialogFieldFocused","innerLoadingIndicator","filterTimer","inputValueTimer","innerValueCache","hasDialog","userInputValue","filterId","defaultInputValue","transitionShowComputed","searchBuffer","searchBufferExp","inputRef","targetRef","menuRef","dialogRef","menuContentRef","nameProp","useFormInputNameAttr","onComposition","useKeyComposition","onInput","virtualScrollLength","virtualScrollItemSizeComputed","virtualScrollSliceRange","virtualScrollSliceSizeComputed","localResetVirtualScroll","padVirtualScroll","onVirtualScrollEvt","scrollTo","setVirtualScrollSize","useVirtualScroll","getVirtualScrollTarget","getVirtualScrollEl","innerValue","mapNull","cache","values","getOption","innerFieldProps","acc","key","isOptionsDark","hasValue","fieldValueIsFilled","computedInputClass","cls","menuContentClass","noOptions","selectedString","getOptionLabel","ariaCurrentValue","needsHtmlFn","valueAsHtml","tabindex","comboboxAttrs","listboxAttrs","selectedScope","removeAtIndexAndFocus","toggleOption","optionScope","from","to","disable","isOptionDisabled","active","isOptionSelected","itemProps","computedOptionsSelectedClass","setOptionIndex","dropdownArrowIcon","squaredMenu","getOptionValue","innerOptionsValue","inputControlEvents","onTargetKeydown","onTargetAutocomplete","onTargetKeypress","selectInputText","stop","resetInputValue","filter","updateMenu","rerenderMenu","getEmittingOptionValue","removeAtIndex","model","add","unique","updateInputValue","keepOpen","optValue","hidePopup","isDeepEqual","moveOptionSelection","skipInputValue","normalizeToInterval","setInputValue","value","valueCache","onTargetKeyup","needle","findFn","extractFn","option","fillFn","afterFilter","shouldIgnoreKey","newValueModeValid","tabShouldSelect","closeMenu","showPopup","optionsLength","char","keyRepeat","searchRe","l","done","mode","getSelection","scope","getAllOptions","QItem","QItemSection","QItemLabel","options","hMergeSlot","getInput","fromDialog","isTarget","emitImmediately","noFiltering","internal","keepClosed","afterUpdateFn","localFilterId","afterFn","getMenu","onControlPopupShow","onMenuBeforeHide","onMenuShow","onControlPopupHide","onDialogFieldFocus","onDialogFieldBlur","getDialog","content","QDialog","onDialogBeforeHide","onDialogHide","onDialogShow","show","newLength","oldLength","updateMenuPosition","updatePreState","onBeforeUpdate","onUpdated","args","opts"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7]}