{"version":3,"file":"popover.vue.cjs","sources":["../../../components/popover/popover.vue"],"sourcesContent":["<!-- eslint-disable vuejs-accessibility/mouse-events-have-key-events -->\n<template>\n  <div>\n    <Teleport\n      v-if=\"modal && isOpen\"\n      to=\"body\"\n    >\n      <div\n        class=\"d-modal--transparent\"\n        :aria-hidden=\"modal && isOpen ? 'false' : 'true'\"\n        @click.prevent.stop\n      />\n    </Teleport>\n    <component\n      :is=\"elementType\"\n      ref=\"popover\"\n      :class=\"['d-popover', { 'd-popover__anchor--opened': isOpen }]\"\n      data-qa=\"dt-popover-container\"\n    >\n      <!-- eslint-disable-next-line vuejs-accessibility/no-static-element-interactions -->\n      <div\n        :id=\"!ariaLabelledby && labelledBy\"\n        ref=\"anchor\"\n        :data-qa=\"$attrs['data-qa'] ? `${$attrs['data-qa']}-anchor` : 'dt-popover-anchor'\"\n        :tabindex=\"openOnContext ? 0 : undefined\"\n        @click.capture=\"defaultToggleOpen\"\n        @contextmenu=\"onContext\"\n        @keydown.up.prevent=\"onArrowKeyPress\"\n        @keydown.down.prevent=\"onArrowKeyPress\"\n        @keydown.escape.capture=\"closePopover\"\n        @keydown.enter=\"$emit('keydown', $event)\"\n        @keydown.space=\"$emit('keydown', $event)\"\n        @mouseenter=\"onMouseEnter\"\n        @mouseleave=\"onMouseLeave\"\n      >\n        <!-- @slot Anchor element that activates the popover. Usually a button. -->\n        <slot\n          name=\"anchor\"\n          :attrs=\"{\n            'aria-expanded': isOpen.toString(),\n            'aria-controls': id,\n            'aria-haspopup': role,\n          }\"\n        />\n      </div>\n      <dt-lazy-show\n        :id=\"id\"\n        ref=\"content\"\n        :role=\"role\"\n        :data-qa=\"$attrs['data-qa'] ? `${$attrs['data-qa']}__dialog` : 'dt-popover'\"\n        :aria-hidden=\"`${!isOpen}`\"\n        :aria-labelledby=\"labelledBy\"\n        :aria-label=\"ariaLabel\"\n        :aria-modal=\"`${!modal}`\"\n        :transition=\"transition\"\n        :show=\"isOpen\"\n        :appear=\"toAppear\"\n        :class=\"['d-popover__dialog', { 'd-popover__dialog--modal': modal }, dialogClass]\"\n        :style=\"{\n          'max-height': calculatedMaxHeight,\n          'max-width': maxWidth,\n        }\"\n        :css=\"$attrs.css\"\n        :tabindex=\"contentTabindex\"\n        v-on=\"popoverListeners\"\n        @mouseenter=\"onMouseEnterAnchor\"\n        @mouseleave=\"onMouseLeaveAnchor\"\n      >\n        <popover-header-footer\n          v-if=\"hasSlotContent($slots.headerContent) || showCloseButton\"\n          ref=\"popover__header\"\n          :class=\"POPOVER_HEADER_FOOTER_PADDING_CLASSES[padding]\"\n          :content-class=\"headerClass\"\n          type=\"header\"\n          :show-close-button=\"showCloseButton\"\n          :close-button-props=\"closeButtonProps\"\n          @close=\"closePopover\"\n        >\n          <template #content>\n            <!-- @slot Slot for popover header content -->\n            <slot\n              name=\"headerContent\"\n              :close=\"closePopover\"\n            />\n          </template>\n        </popover-header-footer>\n        <div\n          ref=\"popover__content\"\n          :data-qa=\"$attrs['data-qa'] ? `${$attrs['data-qa']}-content` : 'dt-popover-content'\"\n          :class=\"[\n            'd-popover__content',\n            POPOVER_PADDING_CLASSES[padding],\n            contentClass,\n          ]\"\n        >\n          <!-- @slot Slot for the content that is displayed in the popover when it is open. -->\n          <slot\n            name=\"content\"\n            :close=\"closePopover\"\n          />\n        </div>\n        <popover-header-footer\n          v-if=\"hasSlotContent($slots.footerContent)\"\n          ref=\"popover__footer\"\n          type=\"footer\"\n          :class=\"POPOVER_HEADER_FOOTER_PADDING_CLASSES[padding]\"\n          :content-class=\"footerClass\"\n        >\n          <template #content>\n            <!-- @slot Slot for the footer content. -->\n            <slot\n              name=\"footerContent\"\n              :close=\"closePopover\"\n            />\n          </template>\n        </popover-header-footer>\n        <sr-only-close-button\n          v-if=\"showVisuallyHiddenClose\"\n          :visually-hidden-close-label=\"visuallyHiddenCloseLabel\"\n          @close=\"closePopover\"\n        />\n      </dt-lazy-show>\n    </component>\n  </div>\n</template>\n\n<script>\n/* eslint-disable max-lines */\nimport {\n  POPOVER_APPEND_TO_VALUES,\n  POPOVER_CONTENT_WIDTHS,\n  POPOVER_HEADER_FOOTER_PADDING_CLASSES,\n  POPOVER_INITIAL_FOCUS_STRINGS,\n  POPOVER_PADDING_CLASSES,\n  POPOVER_ROLES,\n  POPOVER_STICKY_VALUES,\n} from './popover_constants';\nimport { getUniqueString, hasSlotContent, isOutOfViewPort, warnIfUnmounted, disableRootScrolling, enableRootScrolling, returnFirstEl } from '@/common/utils';\nimport { DtLazyShow } from '@/components/lazy_show';\nimport ModalMixin from '@/common/mixins/modal';\nimport { createTippyPopover, getPopperOptions } from './tippy_utils';\nimport PopoverHeaderFooter from './popover_header_footer.vue';\nimport SrOnlyCloseButtonMixin from '@/common/mixins/sr_only_close_button';\nimport SrOnlyCloseButton from '@/common/sr_only_close_button.vue';\n\n/**\n * A Popover displays a content overlay when its anchor element is activated.\n * @see https://dialtone.dialpad.com/components/popover.html\n */\nexport default {\n  compatConfig: { MODE: 3 },\n  name: 'DtPopover',\n\n  /********************\n   * CHILD COMPONENTS *\n   ********************/\n  components: {\n    SrOnlyCloseButton,\n    DtLazyShow,\n    PopoverHeaderFooter,\n  },\n\n  mixins: [ModalMixin, SrOnlyCloseButtonMixin],\n\n  props: {\n    /**\n     * Controls whether the popover is shown. Leaving this null will have the popover trigger on click by default.\n     * If you set this value, the default trigger behavior will be disabled, and you can control it as you need.\n     * Supports v-model\n     * @values null, true, false\n     */\n    open: {\n      type: Boolean,\n      default: null,\n    },\n\n    /**\n     * Opens the popover on right click (context menu). If you set this value to `true`,\n     * the default trigger behavior will be disabled.\n     * @values true, false\n     */\n    openOnContext: {\n      type: Boolean,\n      default: false,\n    },\n\n    /**\n     * Element type (tag name) of the root element of the component.\n     */\n    elementType: {\n      type: String,\n      default: 'div',\n    },\n\n    /**\n     * Named transition when the content display is toggled.\n     * @see DtLazyShow\n     */\n    transition: {\n      type: String,\n      default: 'fade',\n    },\n\n    /**\n     * ARIA role for the content of the popover. Defaults to \"dialog\".\n     * <a class=\"d-link\" href=\"https://www.w3.org/TR/wai-aria/#aria-haspopup\" target=\"_blank\">aria-haspopup</a>\n     */\n    role: {\n      type: String,\n      default: 'dialog',\n      validator: (role) => {\n        return POPOVER_ROLES.includes(role);\n      },\n    },\n\n    /**\n     * ID of the element that serves as the label for the popover content.\n     * Defaults to the \"anchor\" element; this exists to provide a different\n     * ID of the label element if, for example, the anchor slot contains\n     * other items that do not serve as a label. You should provide this\n     * or ariaLabel, but not both.\n     */\n    ariaLabelledby: {\n      type: String,\n      default: null,\n    },\n\n    /**\n     * Descriptive label for the popover content. You should provide this\n     * or ariaLabelledby, but not both.\n     */\n    ariaLabel: {\n      type: String,\n      default: null,\n    },\n\n    /**\n     * A set of props to be passed into the popover's header close button.\n     * Requires an 'ariaLabel' property, when the header popover is visible\n     */\n    closeButtonProps: {\n      type: Object,\n      default: () => ({}),\n    },\n\n    /**\n     * Padding size class for the popover content.\n     * @values none, small, medium, large\n     */\n    padding: {\n      type: String,\n      default: 'large',\n      validator: (padding) => {\n        return Object.keys(POPOVER_PADDING_CLASSES).some((item) => item === padding);\n      },\n    },\n\n    /**\n     * Additional class name for the content wrapper element.\n     */\n    contentClass: {\n      type: [String, Array, Object],\n      default: '',\n    },\n\n    /**\n     * Width configuration for the popover content. When its value is 'anchor',\n     * the popover content will have the same width as the anchor.\n     * @values null, anchor\n     */\n    contentWidth: {\n      type: String,\n      default: '',\n      validator: contentWidth => POPOVER_CONTENT_WIDTHS.includes(contentWidth),\n    },\n\n    /**\n     * Whether to apply transition on initial render in the content lazy show component.\n     */\n    contentAppear: {\n      type: Boolean,\n      default: null,\n    },\n\n    /**\n     * Tabindex value for the content. Passing null, no tabindex attribute will be set.\n     */\n    contentTabindex: {\n      type: Number || null,\n      default: -1,\n    },\n\n    /**\n     * External anchor id to use in those cases the anchor can't be provided via the slot.\n     * For instance, using the combobox's input as the anchor for the popover.\n     */\n    externalAnchor: {\n      type: String,\n      default: '',\n    },\n\n    /**\n     * The id of the tooltip\n     */\n    id: {\n      type: String,\n      default () { return getUniqueString(); },\n    },\n\n    /**\n     *  Displaces the content box from its anchor element\n     *  by the specified number of pixels.\n     *  <a\n     *    class=\"d-link\"\n     *    href=\"https://atomiks.github.io/tippyjs/v6/all-props/#offset\"\n     *    target=\"_blank\"\n     *  >\n     *    Tippy.js docs\n     *  </a>\n     */\n    offset: {\n      type: Array,\n      default: () => [0, 4],\n    },\n\n    /**\n     * Determines if the popover hides upon clicking the\n     * anchor or outside the content box.\n     * @values true, false\n     */\n    hideOnClick: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * Determines modal state. If enabled popover has a modal overlay\n     * preventing interaction with elements below it, but it is invisible.\n     * @values true, false\n     */\n    modal: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * If the popover does not fit in the direction described by \"placement\",\n     * it will attempt to change its direction to the \"fallbackPlacements\".\n     * <a\n     *   class=\"d-link\"\n     *   href=\"https://popper.js.org/docs/v2/modifiers/flip/#fallbackplacements\"\n     *   target=\"_blank\"\n     * >\n     *   Popper.js docs\n     * </a>\n     * */\n    fallbackPlacements: {\n      type: Array,\n      default: () => {\n        return ['auto'];\n      },\n    },\n\n    /**\n     * The direction the popover displays relative to the anchor.\n     * <a\n     *   class=\"d-link\"\n     *   href=\"https://atomiks.github.io/tippyjs/v6/all-props/#placement\"\n     *   target=\"_blank\"\n     * >\n     *   Tippy.js docs\n     * </a>\n     * @values top, top-start, top-end,\n     * right, right-start, right-end,\n     * left, left-start, left-end,\n     * bottom, bottom-start, bottom-end,\n     * auto, auto-start, auto-end\n     */\n    placement: {\n      type: String,\n      default: 'bottom-end',\n    },\n\n    /**\n     * If set to false the dialog will display over top of the anchor when there is insufficient space.\n     * If set to true it will never move from its position relative to the anchor and will clip instead.\n     * <a\n     *   class=\"d-link\"\n     *   href=\"https://popper.js.org/docs/v2/modifiers/prevent-overflow/#tether\"\n     *   target=\"_blank\"\n     * >\n     *   Popper.js docs\n     * </a>\n     * @values true, false\n     */\n    tether: {\n      type: Boolean,\n      default: true,\n    },\n\n    /**\n     * If the popover sticks to the anchor. This is usually not needed, but can be needed\n     * if the reference element's position is animating, or to automatically update the popover\n     * position in those cases the DOM layout changes the reference element's position.\n     * `true` enables it, `reference` only checks the \"reference\" rect for changes and `popper` only\n     * checks the \"popper\" rect for changes.\n     * <a\n     *   class=\"d-link\"\n     *   href=\"https://atomiks.github.io/tippyjs/v6/all-props/#sticky\"\n     *   target=\"_blank\"\n     * >\n     *   Tippy.js docs\n     * </a>\n     * @values true, false, reference, popper\n     */\n    sticky: {\n      type: [Boolean, String],\n      default: false,\n      validator: (sticky) => {\n        return POPOVER_STICKY_VALUES.includes(sticky);\n      },\n    },\n\n    /**\n     * Determines maximum height for the popover before overflow.\n     * Possible units rem|px|em\n     */\n    maxHeight: {\n      type: String,\n      default: '',\n    },\n\n    /**\n     * Determines maximum width for the popover before overflow.\n     * Possible units rem|px|%|em\n     */\n    maxWidth: {\n      type: String,\n      default: '',\n    },\n\n    /**\n     * Determines visibility for close button\n     * @values true, false\n     */\n    showCloseButton: {\n      type: Boolean,\n      default: false,\n    },\n\n    /**\n     * Additional class name for the header content wrapper element.\n     */\n    headerClass: {\n      type: [String, Array, Object],\n      default: '',\n    },\n\n    /**\n     * Additional class name for the footer content wrapper element.\n     */\n    footerClass: {\n      type: [String, Array, Object],\n      default: '',\n    },\n\n    /**\n     * Additional class name for the dialog element.\n     */\n    dialogClass: {\n      type: [String, Array, Object],\n      default: '',\n    },\n\n    /**\n     * The element that is focused when the popover is opened. This can be an\n     * HTMLElement within the popover, a string starting with '#' which will\n     * find the element by ID. 'first' which will automatically focus\n     * the first element, or 'dialog' which will focus the dialog window itself.\n     * If the dialog is modal this prop cannot be 'none'.\n     * @values none, dialog, first\n     */\n    initialFocusElement: {\n      type: [String, HTMLElement],\n      default: 'first',\n      validator: initialFocusElement => {\n        return POPOVER_INITIAL_FOCUS_STRINGS.includes(initialFocusElement) ||\n          (initialFocusElement instanceof HTMLElement) ||\n          initialFocusElement.startsWith('#');\n      },\n    },\n\n    /**\n     * If the popover should open pressing up or down arrow key on the anchor element.\n     * This can be set when not passing open prop.\n     * @values true, false\n     */\n    openWithArrowKeys: {\n      type: Boolean,\n      default: false,\n    },\n\n    /**\n     * Sets the element to which the popover is going to append to.\n     * 'body' will append to the nearest body (supports shadow DOM).\n     * 'root' will try append to the iFrame's parent body if it is contained in an iFrame\n     * and has permissions to access it, else, it'd default to 'parent'.\n     * @values 'body', 'parent', 'root', HTMLElement\n     */\n    appendTo: {\n      type: [HTMLElement, String],\n      default: 'body',\n      validator: appendTo => {\n        return POPOVER_APPEND_TO_VALUES.includes(appendTo) ||\n            (appendTo instanceof HTMLElement);\n      },\n    },\n  },\n\n  emits: [\n    /**\n     * Native keydown event\n     *\n     * @event keydown\n     * @type {KeyboardEvent}\n     */\n    'keydown',\n\n    /**\n     * Event fired to sync the open prop with the parent component\n     * @event update:open\n     */\n    'update:open',\n\n    /**\n     * Emitted when popover is shown or hidden\n     *\n     * @event opened\n     * @type {Boolean | Array}\n     */\n    'opened',\n\n    /**\n     * Emitted when the mouse enters the popover\n     *\n     * @event mouseenter-popover\n     */\n    'mouseenter-popover',\n\n    /**\n     * Emitted when the mouse leaves the popover\n     *\n     * @event mouseleave-popover\n     */\n    'mouseleave-popover',\n\n    /**\n     * Emitted when the mouse enters the popover anchor\n     *\n     * @event mouseenter-popover-anchor\n     */\n    'mouseenter-popover-anchor',\n\n    /**\n     * Emitted when the mouse leaves the popover anchor\n     *\n     * @event mouseleave-popover-anchor\n     */\n    'mouseleave-popover-anchor',\n  ],\n\n  data () {\n    return {\n      POPOVER_PADDING_CLASSES,\n      POPOVER_HEADER_FOOTER_PADDING_CLASSES,\n      intersectionObserver: null,\n      isOutsideViewport: false,\n      isOpen: false,\n      toAppear: false,\n      anchorEl: null,\n      popoverContentEl: null,\n      hasSlotContent,\n    };\n  },\n\n  computed: {\n    popoverListeners () {\n      return {\n        keydown: event => {\n          this.onKeydown(event);\n        },\n\n        'after-leave': event => {\n          this.onLeaveTransitionComplete();\n        },\n\n        'after-enter': event => {\n          this.onEnterTransitionComplete();\n        },\n      };\n    },\n\n    calculatedMaxHeight () {\n      if (this.isOutsideViewport && this.modal) {\n        return `calc(100vh - var(--dt-space-300))`;\n      }\n      return this.maxHeight;\n    },\n\n    labelledBy () {\n      // aria-labelledby should be set only if aria-labelledby is passed as a prop, or if\n      // there is no aria-label and the labelledby should point to the anchor.\n      return this.ariaLabelledby || (!this.ariaLabel && getUniqueString('DtPopover__anchor'));\n    },\n  },\n\n  watch: {\n    $props: {\n      immediate: true,\n      deep: true,\n      handler () {\n        this.validateProps();\n      },\n    },\n\n    modal (modal) {\n      this.tip?.setProps({\n        zIndex: modal ? 650 : this.calculateAnchorZindex(),\n      });\n    },\n\n    offset (offset) {\n      this.tip?.setProps({\n        offset,\n      });\n    },\n\n    sticky (sticky) {\n      this.tip?.setProps({\n        sticky,\n      });\n    },\n\n    fallbackPlacements () {\n      this.tip?.setProps({\n        popperOptions: this.popperOptions(),\n      });\n    },\n\n    tether () {\n      this.tip?.setProps({\n        popperOptions: this.popperOptions(),\n      });\n    },\n\n    placement (placement) {\n      this.tip?.setProps({\n        placement,\n      });\n    },\n\n    open: {\n      handler: function (open) {\n        if (open !== null) {\n          this.isOpen = open;\n        }\n        if (open === true) {\n          this.toAppear = true;\n        }\n      },\n\n      immediate: true,\n    },\n\n    contentAppear: {\n      handler: function (contentAppear) {\n        if (contentAppear !== null) {\n          this.toAppear = contentAppear;\n        }\n      },\n    },\n\n    isOpen (isOpen, isPrev) {\n      if (isOpen) {\n        this.initTippyInstance();\n        this.tip.show();\n      } else if (!isOpen && isPrev !== isOpen) {\n        this.removeEventListeners();\n        this.tip.hide();\n      }\n    },\n  },\n\n  mounted () {\n    warnIfUnmounted(returnFirstEl(this.$el), this.$options.name);\n\n    const externalAnchorEl = this.externalAnchor\n      ? this.$refs.anchor.getRootNode().querySelector(`#${this.externalAnchor}`)\n      : null;\n    this.anchorEl = externalAnchorEl ?? this.$refs.anchor.children[0];\n    this.popoverContentEl = returnFirstEl(this.$refs.content?.$el);\n\n    if (this.isOpen) {\n      this.initTippyInstance();\n      this.tip.show();\n    }\n\n    // rootMargin here must be greater than the margin of the height we are setting in calculatedMaxHeight which\n    // currently is var(--dt-space-300) (4px). If not the intersectionObserver will continually trigger in an infinite\n    // loop.\n    // threshold 1.0 makes this trigger every time the dialog \"touches\" the edge of the viewport.\n    this.intersectionObserver = new IntersectionObserver(this.hasIntersectedViewport);\n    this.intersectionObserver.observe(this.popoverContentEl);\n  },\n\n  beforeUnmount () {\n    this.tip?.destroy();\n    this.intersectionObserver?.disconnect();\n    this.removeReferences();\n    this.removeEventListeners();\n  },\n\n  /******************\n   *     METHODS    *\n   ******************/\n  methods: {\n\n    hasIntersectedViewport (entries) {\n      const dialog = entries?.[0]?.target;\n      if (!dialog) return;\n      const isOut = isOutOfViewPort(dialog);\n      this.isOutsideViewport = isOut.bottom || isOut.top;\n    },\n\n    popperOptions () {\n      return getPopperOptions({\n        fallbackPlacements: this.fallbackPlacements,\n        tether: this.tether,\n        hasHideModifierEnabled: true,\n      });\n    },\n\n    validateProps () {\n      if (this.modal && this.initialFocusElement === 'none') {\n        console.error('If the popover is modal you must set the ' +\n        'initialFocusElement prop. Possible values: \"dialog\", \"first\", HTMLElement');\n      }\n    },\n\n    calculateAnchorZindex () {\n      // if a modal is currently active render at modal-element z-index, otherwise at popover z-index\n      if (returnFirstEl(this.$el).getRootNode()\n        .querySelector('.d-modal[aria-hidden=\"false\"], .d-modal--transparent[aria-hidden=\"false\"]') ||\n        // Special case because we don't have any dialtone drawer component yet. Render at 650 when\n        // anchor of popover is within a drawer.\n        this.anchorEl?.closest('.d-zi-drawer')) {\n        return 650;\n      } else {\n        return 300;\n      }\n    },\n\n    defaultToggleOpen (e) {\n      if (this.openOnContext) { return; }\n\n      // Only use default toggle behaviour if the user has not set the open prop.\n      // Check that the anchor element specifically was clicked.\n      if (this.open === null || this.open === undefined) {\n        if ((!this.anchorEl?.contains(e.target) && !this.anchorEl?.isEqualNode(e.target)) || this.anchorEl?.disabled) {\n          return;\n        }\n\n        this.toggleOpen();\n      }\n    },\n\n    async onContext (event) {\n      if (!this.openOnContext) { return; }\n\n      event.preventDefault();\n\n      this.isOpen = true;\n      await this.$nextTick();\n      this.tip.setProps({\n        placement: 'right-start',\n        getReferenceClientRect: () => ({\n          width: 0,\n          height: 0,\n          top: event.clientY,\n          bottom: event.clientY,\n          left: event.clientX,\n          right: event.clientX,\n        }),\n      });\n    },\n\n    toggleOpen () {\n      this.isOpen = !this.isOpen;\n    },\n\n    onArrowKeyPress (e) {\n      if (this.open !== null) { return; }\n      if (this.openWithArrowKeys && this.anchorEl?.contains(e.target)) {\n        if (!this.isOpen) {\n          this.isOpen = true;\n        }\n      }\n\n      this.$emit('keydown', e);\n    },\n\n    addEventListeners () {\n      window.addEventListener('dt-popover-close', this.closePopover);\n      // align popover content width when contentWidth is 'anchor'\n      if (this.contentWidth === 'anchor') {\n        window.addEventListener('resize', this.onResize);\n      }\n    },\n\n    removeEventListeners () {\n      window.removeEventListener('dt-popover-close', this.closePopover);\n      if (this.contentWidth === 'anchor') {\n        window.removeEventListener('resize', this.onResize);\n      }\n    },\n\n    closePopover () {\n      this.isOpen = false;\n    },\n\n    /*\n    * Prevents scrolling outside of the currently opened modal popover by:\n    *   - when anchor is not within another popover: setting the body to overflow: hidden\n    *   - when anchor is within another popover: set the popover dialog container to it's non-modal z-index\n    *     since it is no longer the active modal. This puts it underneath the overlay and prevents scrolling.\n    **/\n    preventScrolling () {\n      if (this.modal) {\n        const element = this.anchorEl?.closest('body, .tippy-box');\n        if (!element) return;\n        if (element.tagName?.toLowerCase() === 'body') {\n          disableRootScrolling(this.anchorEl.getRootNode().host);\n          this.tip.setProps({ offset: this.offset });\n        } else {\n          element.classList.add('d-zi-popover');\n        }\n      }\n    },\n\n    /*\n    * Resets the prevent scrolling properties set in preventScrolling() back to normal.\n    **/\n    enableScrolling () {\n      const element = this.anchorEl?.closest('body, .tippy-box');\n      if (!element) return;\n      if (element.tagName?.toLowerCase() === 'body') {\n        enableRootScrolling(this.anchorEl.getRootNode().host);\n        this.tip.setProps({ offset: this.offset });\n      } else {\n        element.classList.remove('d-zi-popover');\n      }\n    },\n\n    removeReferences () {\n      this.anchorEl = null;\n      this.popoverContentEl = null;\n      this.tip = null;\n    },\n\n    async onShow () {\n      if (this.contentWidth === 'anchor') {\n        await this.setPopoverContentAnchorWidth();\n      }\n\n      if (this.contentWidth === null) {\n        this.popoverContentEl.style.width = 'auto';\n      }\n\n      this.addEventListeners();\n    },\n\n    async onLeaveTransitionComplete () {\n      if (this.modal) {\n        await this.focusFirstElement(this.$refs.anchor);\n        // await next tick in case the user wants to change focus themselves.\n        await this.$nextTick();\n        this.enableScrolling();\n      }\n      this.tip?.unmount();\n      this.$emit('opened', false);\n      if (this.open !== null) {\n        this.$emit('update:open', false);\n      }\n    },\n\n    async onEnterTransitionComplete () {\n      this.focusInitialElement();\n      // await next tick in case the user wants to change focus themselves.\n      await this.$nextTick();\n      this.preventScrolling();\n      this.$emit('opened', true, this.$refs.popover__content);\n      if (this.open !== null) {\n        this.$emit('update:open', true);\n      }\n    },\n\n    focusInitialElement () {\n      if (this.initialFocusElement === 'dialog') {\n        returnFirstEl(this.$refs.content?.$el)?.focus();\n      }\n      // find by ID\n      if (this.initialFocusElement.startsWith('#')) {\n        this.focusInitialElementById();\n      }\n      if (this.initialFocusElement === 'first') {\n        this.focusFirstElementIfNeeded(this.$refs.popover__content);\n      }\n      if (this.initialFocusElement instanceof HTMLElement) {\n        this.initialFocusElement.focus();\n      }\n    },\n\n    focusInitialElementById () {\n      const result = returnFirstEl(this.$refs.content?.$el)?.querySelector(this.initialFocusElement);\n      if (result) {\n        result.focus();\n      } else {\n        console.warn('Could not find the element specified in dt-popover prop \"initialFocusElement\". ' +\n          'Defaulting to focusing the dialog.');\n      }\n      result ? result.focus() : returnFirstEl(this.$refs.content?.$el).focus();\n    },\n\n    onResize () {\n      this.closePopover();\n    },\n\n    onClickOutside () {\n      if (!this.hideOnClick) return;\n      // If a popover is opened inside of this one, do not hide on click out\n      const innerModals = this.popoverContentEl?.querySelector('.d-popover__anchor--opened');\n      if (!innerModals) {\n        this.closePopover();\n      }\n    },\n\n    onKeydown (e) {\n      if (e.key === 'Tab') {\n        if (this.modal) {\n          this.focusTrappedTabPress(e, this.popoverContentEl);\n        }\n      }\n      if (e.key === 'Escape') {\n        this.closePopover();\n      }\n\n      this.$emit('keydown', e);\n    },\n\n    async setPopoverContentAnchorWidth () {\n      await this.$nextTick();\n      this.popoverContentEl.style.width = `${this.anchorEl?.clientWidth}px`;\n    },\n\n    focusFirstElementIfNeeded (domEl) {\n      const focusableElements = this._getFocusableElements(domEl, true);\n      if (focusableElements.length !== 0) {\n        this.focusFirstElement(domEl);\n      } else if (this.showCloseButton) {\n        this.$refs.popover__header?.focusCloseButton();\n      } else {\n        // if there are no focusable elements at all focus the dialog itself\n        returnFirstEl(this.$refs.content?.$el).focus();\n      }\n    },\n\n    /**\n     * Return's the anchor ClientRect object relative to the window.\n     * Refer to: https://atomiks.github.io/tippyjs/v6/all-props/#getreferenceclientrect for more information\n     * @param error\n     */\n    getReferenceClientRect (error) {\n      const anchorReferenceRect = this.anchorEl?.getBoundingClientRect();\n\n      if (this.appendTo !== 'root' || error) return anchorReferenceRect;\n\n      const anchorOwnerDocument = this.anchorEl?.ownerDocument;\n      const anchorParentWindow = anchorOwnerDocument?.defaultView || anchorOwnerDocument?.parentWindow;\n      const anchorIframe = anchorParentWindow?.frameElement;\n\n      if (!anchorIframe) return anchorReferenceRect;\n\n      const iframeReferenceRect = anchorIframe.getBoundingClientRect();\n\n      return {\n        width: anchorReferenceRect?.width,\n        height: anchorReferenceRect?.height,\n        top: iframeReferenceRect?.top + anchorReferenceRect?.top,\n        left: iframeReferenceRect?.left + anchorReferenceRect?.left,\n        right: iframeReferenceRect?.right + anchorReferenceRect?.right,\n        bottom: iframeReferenceRect?.bottom + anchorReferenceRect?.bottom,\n      };\n    },\n\n    initTippyInstance () {\n      let internalAppendTo = null;\n      let iFrameError = false;\n\n      switch (this.appendTo) {\n        case 'body':\n          internalAppendTo = this.anchorEl?.getRootNode()?.querySelector('body');\n          break;\n\n        case 'root':\n          // Try to attach the popover to root document, fallback to parent is fail\n          try {\n            internalAppendTo = window.parent.document.body;\n          } catch (err) {\n            console.error('Could not attach the popover to iframe parent window: ', err);\n            internalAppendTo = 'parent';\n            iFrameError = true;\n          }\n          break;\n\n        default:\n          internalAppendTo = this.appendTo;\n          break;\n      }\n\n      this.tip = createTippyPopover(this.anchorEl, {\n        popperOptions: this.popperOptions(),\n        contentElement: this.popoverContentEl,\n        placement: this.placement,\n        offset: this.offset,\n        sticky: this.sticky,\n        appendTo: internalAppendTo,\n        interactive: true,\n        trigger: 'manual',\n        getReferenceClientRect: () => this.getReferenceClientRect(iFrameError),\n        // We have to manage hideOnClick functionality manually to handle\n        // popover within popover situations.\n        hideOnClick: false,\n        zIndex: this.modal ? 650 : this.calculateAnchorZindex(),\n        onClickOutside: this.onClickOutside,\n        onShow: this.onShow,\n      });\n    },\n\n    onMouseEnter () {\n      this.$emit('mouseenter-popover');\n    },\n\n    onMouseLeave () {\n      this.$emit('mouseleave-popover');\n    },\n\n    onMouseEnterAnchor () {\n      this.$emit('mouseenter-popover-anchor');\n    },\n\n    onMouseLeaveAnchor () {\n      this.$emit('mouseleave-popover-anchor');\n    },\n  },\n};\n</script>\n"],"names":["SrOnlyCloseButton","DtLazyShow","PopoverHeaderFooter","ModalMixin","SrOnlyCloseButtonMixin","POPOVER_ROLES","POPOVER_PADDING_CLASSES","POPOVER_CONTENT_WIDTHS","getUniqueString","POPOVER_STICKY_VALUES","POPOVER_INITIAL_FOCUS_STRINGS","POPOVER_APPEND_TO_VALUES","POPOVER_HEADER_FOOTER_PADDING_CLASSES","hasSlotContent","modal","warnIfUnmounted","returnFirstEl","isOutOfViewPort","getPopperOptions","disableRootScrolling","enableRootScrolling","createTippyPopover","_createElementBlock","_createBlock","_Teleport","_createElementVNode","_withModifiers","_createCommentVNode","_resolveDynamicComponent","_normalizeClass","_withCtx","_withKeys","_renderSlot","_createVNode","_mergeProps","_toHandlers"],"mappings":"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"}