{"version":3,"file":"index2.mjs","sources":["../../../../../src/components/ivue-popover/index.vue"],"sourcesContent":["<template>\r\n  <div\r\n    :class=\"wrapperClasses\"\r\n    @mouseenter=\"() => handleMouseenter()\"\r\n    @mouseleave=\"handleMouseleave\"\r\n    v-click-outside:[capture]=\"handleClickOutside\"\r\n  >\r\n    <!-- 描述 -->\r\n    <div\r\n      :class=\"`${prefixCls}-rel`\"\r\n      ref=\"reference\"\r\n      @click=\"handleRelClick\"\r\n      @mousedown=\"handleFocus(false)\"\r\n      @mouseup=\"handleBlur(false)\"\r\n    >\r\n      <slot></slot>\r\n    </div>\r\n    <!-- 为封装到组件中来构建 UI -->\r\n    <teleport to=\"body\" :disabled=\"!transfer\">\r\n      <transition name=\"fade\">\r\n        <div\r\n          :class=\"popperClasses\"\r\n          :style=\"popperStyles\"\r\n          @click=\"handleTransferClick\"\r\n          @mouseenter=\"handleMouseenter('popper')\"\r\n          @mouseleave=\"handleMouseleave\"\r\n          ref=\"popper\"\r\n          v-show=\"visible\"\r\n        >\r\n          <div :class=\"`${prefixCls}-content`\">\r\n            <!-- arrow -->\r\n            <div :class=\"`${prefixCls}-arrow`\" ref=\"arrow\"></div>\r\n            <!-- 对话框 -->\r\n            <div :class=\"`${prefixCls}-inner`\" v-if=\"confirm\">\r\n              <!-- body -->\r\n              <div :class=\"`${prefixCls}-body`\">\r\n                <!-- icon -->\r\n                <ivue-icon :class=\"`${prefixCls}-body--icon`\">help</ivue-icon>\r\n                <!-- title -->\r\n                <div :class=\"`${prefixCls}-body--message`\">\r\n                  <slot name=\"title\">{{ title }}</slot>\r\n                </div>\r\n              </div>\r\n              <!-- 底部 -->\r\n              <div :class=\"`${prefixCls}-footer`\">\r\n                <ivue-button\r\n                  :class=\"`${prefixCls}-footer--button`\"\r\n                  outline\r\n                  color=\"#dcdfe6\"\r\n                  @click=\"handleCancel\"\r\n                  >{{ cancelText }}</ivue-button\r\n                >\r\n                <!-- 确认 -->\r\n                <ivue-button\r\n                  :class=\"`${prefixCls}-footer--button`\"\r\n                  depressed\r\n                  status=\"primary\"\r\n                  @click=\"handleConfirm\"\r\n                  >{{ confirmText }}</ivue-button\r\n                >\r\n              </div>\r\n            </div>\r\n            <!-- 不是对话框 -->\r\n            <div :class=\"`${prefixCls}-inner`\" v-if=\"!confirm\">\r\n              <!-- title -->\r\n              <div :class=\"`${prefixCls}-title`\" v-if=\"showTitle\">\r\n                <slot name=\"title\">{{ title }}</slot>\r\n              </div>\r\n              <!-- body -->\r\n              <div :class=\"`${prefixCls}-body`\">\r\n                <div :class=\"bodyContentClasses\">\r\n                  <slot name=\"content\">{{ content }}</slot>\r\n                </div>\r\n              </div>\r\n            </div>\r\n          </div>\r\n        </div>\r\n      </transition>\r\n    </teleport>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport {\r\n  defineComponent,\r\n  computed,\r\n  reactive,\r\n  ref,\r\n  getCurrentInstance,\r\n  onMounted,\r\n  nextTick,\r\n  provide,\r\n} from 'vue';\r\nimport { useEventListener } from '@vueuse/core';\r\n\r\n// utils\r\nimport { oneOf } from '../../utils/assist';\r\nimport Popper from '../../utils/mixins/popper';\r\nimport { transferIndex, transferIncrease } from '../../utils/transfer-queue';\r\n\r\n// 注册外部点击事件插件\r\nimport { ClickOutside } from '../../utils/directives';\r\n\r\n// components\r\nimport IvueIcon from '../ivue-icon';\r\nimport IvueButton from '../ivue-button';\r\n\r\n// ts\r\nimport {\r\n  PopoverContextKey,\r\n  Props,\r\n  Data,\r\n  _ComponentInternalInstance,\r\n} from './types/popover';\r\n\r\nconst prefixCls = 'ivue-popover';\r\n\r\nexport default defineComponent({\r\n  name: prefixCls,\r\n  mixins: [Popper],\r\n  emits: ['on-cancel', 'on-confirm'],\r\n  // 注册局部指令\r\n  directives: { ClickOutside },\r\n  props: {\r\n    /**\r\n     * 显示的标题\r\n     *\r\n     * @type {String, Number}\r\n     */\r\n    title: {\r\n      type: [String, Number],\r\n    },\r\n    /**\r\n     * 提示框的内容\r\n     *\r\n     * @type {String, Number}\r\n     */\r\n    content: {\r\n      type: [String, Number],\r\n      default: '',\r\n    },\r\n    /**\r\n     * 触发方式，\r\n     * 可选值为hover（悬停）click（点击）focus（聚焦）,\r\n     * 在 confirm 模式下，只有 click 有效\r\n     *\r\n     * @type {String}\r\n     */\r\n    trigger: {\r\n      validator(value: string) {\r\n        return oneOf(value, ['click', 'focus', 'hover']);\r\n      },\r\n      default: 'click',\r\n    },\r\n    /**\r\n     * 是否将弹层放置于 body 内，在 Tabs、\r\n     * 带有 fixed 的 Table 列内使用时，\r\n     * 建议添加此属性，它将不受父级样式影响，\r\n     * 从而达到更好的效果\r\n     *\r\n     * @type {Boolean}\r\n     */\r\n    transfer: {\r\n      type: Boolean,\r\n      default() {\r\n        const global = getCurrentInstance().appContext.config.globalProperties;\r\n\r\n        return !global.$IVUE || global.$IVUE.transfer === ''\r\n          ? false\r\n          : global.$IVUE.transfer;\r\n      },\r\n    },\r\n    /**\r\n     * 开启 transfer 时，给浮层添加额外的 class 名称\r\n     *\r\n     * @type {String}\r\n     */\r\n    transferClassName: {\r\n      type: String,\r\n    },\r\n    /**\r\n     * 主题，可选值为 dark 或 light\r\n     *\r\n     * @type {String}\r\n     */\r\n    theme: {\r\n      type: String,\r\n      validator(value: string) {\r\n        return oneOf(value, ['dark', 'light']);\r\n      },\r\n      default: 'light',\r\n    },\r\n    /**\r\n     * 宽度，最小宽度为 150px，在 confirm 模式下，默认最大宽度为 300px\r\n     *\r\n     * @type {String | Number}\r\n     */\r\n    width: {\r\n      type: [String, Number],\r\n    },\r\n    /**\r\n     * 开启后，超出指定宽度文本将自动换行，并两端对齐\r\n     *\r\n     * @type {Boolean}\r\n     */\r\n    wordWrap: {\r\n      type: Boolean,\r\n      default: true,\r\n    },\r\n    /**\r\n     * 是否开启对话框模式\r\n     *\r\n     * @type {Boolean}\r\n     */\r\n    confirm: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    /**\r\n     * 是否禁用\r\n     *\r\n     * @type {Boolean}\r\n     */\r\n    disabled: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    /**\r\n     * 延迟显示，单位毫秒\r\n     *\r\n     * @type {Number}\r\n     */\r\n    delay: {\r\n      type: Number,\r\n      default: 100,\r\n    },\r\n    /**\r\n     * 弹窗的展开方向\r\n     *\r\n     * @type {String}\r\n     */\r\n    placement: {\r\n      type: String,\r\n      validator(value: string) {\r\n        return oneOf(value, [\r\n          'top',\r\n          'top-start',\r\n          'top-end',\r\n          'bottom',\r\n          'bottom-start',\r\n          'bottom-end',\r\n          'left',\r\n          'left-start',\r\n          'left-end',\r\n          'right',\r\n          'right-start',\r\n          'right-end',\r\n        ]);\r\n      },\r\n      default: 'bottom',\r\n    },\r\n    /**\r\n     * 是否开启外部点击的 capture 模式，可通过全局配置\r\n     *\r\n     * @type {Boolean}\r\n     */\r\n    capture: {\r\n      type: Boolean,\r\n      default() {\r\n        const global = getCurrentInstance().appContext.config.globalProperties;\r\n        return !global.$IVUE ? true : global.$IVUE.capture;\r\n      },\r\n    },\r\n    /**\r\n     * 关闭按钮文案\r\n     *\r\n     * @type {String}\r\n     */\r\n    cancelText: {\r\n      type: String,\r\n      default: '取消',\r\n    },\r\n    /**\r\n     * 确定按钮文案\r\n     *\r\n     * @type {String}\r\n     */\r\n    confirmText: {\r\n      type: String,\r\n      default: '确认',\r\n    },\r\n  },\r\n  setup(props: Props, { emit, slots }) {\r\n    // vm\r\n    const { proxy } = getCurrentInstance() as _ComponentInternalInstance;\r\n\r\n    // dom\r\n    const popper = ref<HTMLDivElement>(null);\r\n    const reference = ref<HTMLDivElement>(null);\r\n\r\n    // data\r\n\r\n    // 显示隐藏\r\n    const visible = ref<boolean>(props.modelValue);\r\n\r\n    const data = reactive<Data>({\r\n      /**\r\n       * 延迟\r\n       *\r\n       * @type {Function}\r\n       */\r\n      timeout: null,\r\n      /**\r\n       * 当前元素index\r\n       *\r\n       * @type {Number}\r\n       */\r\n      zIndex: 0,\r\n      /**\r\n       * transfer 模式下，点击 slot 也会触发关闭\r\n       *\r\n       * @type {Boolean}\r\n       */\r\n      disableCloseUnderTransfer: false,\r\n      /**\r\n       * 是否有input\r\n       *\r\n       * @type {Boolean}\r\n       */\r\n      isInput: false,\r\n      /**\r\n       * 当前点击target获取焦点\r\n       *\r\n       * @type {Event}\r\n       */\r\n      currentTargetFocus: false,\r\n      /**\r\n       * 关闭延迟\r\n       *\r\n       * @type {Number}\r\n       */\r\n      closeDelay: 0,\r\n    });\r\n\r\n    // computed\r\n\r\n    // 外部样式\r\n    const wrapperClasses = computed(() => {\r\n      return [\r\n        prefixCls,\r\n        {\r\n          [`${prefixCls}-confirm`]: props.confirm,\r\n        },\r\n      ];\r\n    });\r\n\r\n    // 悬浮框样式\r\n    const popperClasses = computed(() => {\r\n      return [\r\n        `${prefixCls}-popper`,\r\n        {\r\n          // 主题\r\n          [`${prefixCls}-${props.theme}`]: true,\r\n          // 是否将弹层放置于 body 内\r\n          [`${prefixCls}-transfer`]: props.transfer,\r\n          // 开启 transfer 时，给浮层添加额外的 class 名称\r\n          [props.transferClassName]: props.transferClassName,\r\n        },\r\n      ];\r\n    });\r\n\r\n    // 悬浮框样式\r\n    const popperStyles = computed(() => {\r\n      const styles: {\r\n        width?: string | number;\r\n        zIndex?: number;\r\n      } = {};\r\n\r\n      // 设置宽度\r\n      if (props.width) {\r\n        styles.width = `${props.width}px`;\r\n      }\r\n\r\n      // 是否将弹层放置于 body 内\r\n      if (props.transfer) {\r\n        styles['z-index'] = 1060 + data.zIndex;\r\n      }\r\n\r\n      return styles;\r\n    });\r\n\r\n    // body\r\n    const bodyContentClasses = computed(() => {\r\n      return [\r\n        `${prefixCls}-body--content`,\r\n        {\r\n          [`${prefixCls}-body--word-wrap`]: props.wordWrap,\r\n        },\r\n      ];\r\n    });\r\n\r\n    // 显示标题\r\n    const showTitle = computed(() => {\r\n      // 不是对话框模式\r\n      if (!props.confirm) {\r\n        return slots.title !== undefined || props.title;\r\n      }\r\n\r\n      return false;\r\n    });\r\n\r\n    // methods\r\n\r\n    // 获取index\r\n    const handleGetIndex = () => {\r\n      transferIncrease();\r\n\r\n      return transferIndex;\r\n    };\r\n\r\n    // 增加zIndex\r\n    const handleIndexIncrease = () => {\r\n      data.zIndex = handleGetIndex();\r\n    };\r\n\r\n    // 鼠标进入\r\n    const handleMouseenter = (status?: string) => {\r\n      // 是否禁用\r\n      if (props.disabled) {\r\n        return;\r\n      }\r\n\r\n      // 进入到弹框 && 获取焦点\r\n      if (status === 'popper' && data.currentTargetFocus) {\r\n        // 清除延迟\r\n        clearTimeout(data.timeout);\r\n      }\r\n\r\n      // 不是 hover || 开启了对话框\r\n      if (props.trigger !== 'hover' || props.confirm) {\r\n        return false;\r\n      }\r\n\r\n      // 清除延迟\r\n      if (data.timeout) {\r\n        clearTimeout(data.timeout);\r\n      }\r\n\r\n      // 延迟时间\r\n      data.timeout = setTimeout(() => {\r\n        visible.value = true;\r\n      }, props.delay);\r\n    };\r\n\r\n    // 鼠标离开\r\n    const handleMouseleave = () => {\r\n      // 获取焦点 鼠标移出元素 关闭弹框\r\n      if (data.currentTargetFocus) {\r\n        clearTimeout(data.timeout);\r\n\r\n        data.timeout = setTimeout(() => {\r\n          visible.value = false;\r\n        }, 100);\r\n      }\r\n\r\n      // 不是 hover || 开启了对话框\r\n      if (props.trigger !== 'hover' || props.confirm) {\r\n        return false;\r\n      }\r\n\r\n      // 清除延迟\r\n      if (data.timeout) {\r\n        clearTimeout(data.timeout);\r\n\r\n        data.timeout = setTimeout(() => {\r\n          visible.value = false;\r\n        }, 100);\r\n      }\r\n    };\r\n\r\n    // 描述点击\r\n    const handleRelClick = () => {\r\n      // 是否禁用\r\n      if (props.disabled) {\r\n        return;\r\n      }\r\n\r\n      // 开启了对话框\r\n      if (props.confirm) {\r\n        visible.value = !visible.value;\r\n\r\n        return;\r\n      }\r\n\r\n      // 不是点击事件\r\n      if (props.trigger !== 'click') {\r\n        return false;\r\n      }\r\n\r\n      visible.value = !visible.value;\r\n    };\r\n\r\n    // 点击外部\r\n    const handleClickOutside = () => {\r\n      setTimeout(() => {\r\n        // 点击的是内容\r\n        if (data.disableCloseUnderTransfer) {\r\n          data.disableCloseUnderTransfer = false;\r\n\r\n          return false;\r\n        }\r\n\r\n        // 开启了对话框\r\n        if (props.confirm) {\r\n          visible.value = false;\r\n\r\n          return;\r\n        }\r\n\r\n        // 不是点击事件\r\n        if (props.trigger !== 'click') {\r\n          return false;\r\n        }\r\n\r\n        visible.value = false;\r\n      }, data.closeDelay);\r\n    };\r\n\r\n    // transfer时点击\r\n    const handleTransferClick = () => {\r\n      if (props.transfer) {\r\n        data.disableCloseUnderTransfer = true;\r\n      }\r\n    };\r\n\r\n    // 获取焦点\r\n    const handleFocus = (fromInput = true) => {\r\n      // 是否禁用\r\n      if (props.disabled) {\r\n        return;\r\n      }\r\n\r\n      // 触发方式 不是 focus || 开启对话框 || 没有input\r\n      if (\r\n        props.trigger !== 'focus' ||\r\n        props.confirm ||\r\n        (data.isInput && !fromInput)\r\n      ) {\r\n        return false;\r\n      }\r\n\r\n      // 没有输入框\r\n      if (!data.isInput) {\r\n        // 当前获取焦点\r\n        data.currentTargetFocus = true;\r\n      }\r\n\r\n      // 显示\r\n      visible.value = true;\r\n    };\r\n\r\n    // 失去焦点\r\n    const handleBlur = (fromInput = true) => {\r\n      // 触发方式 不是 focus || 开启对话框 || 没有input\r\n      if (\r\n        props.trigger !== 'focus' ||\r\n        props.confirm ||\r\n        (data.isInput && !fromInput)\r\n      ) {\r\n        return false;\r\n      }\r\n\r\n      // 没有输入框\r\n      if (!data.isInput) {\r\n        data.currentTargetFocus = false;\r\n      }\r\n\r\n      // 显示\r\n      visible.value = false;\r\n    };\r\n\r\n    // 获取是否有input\r\n    const getInputChildren = () => {\r\n      const input = reference.value.querySelectorAll('input');\r\n      const textarea = reference.value.querySelectorAll('textarea');\r\n\r\n      let children = null;\r\n\r\n      // input\r\n      if (input.length) {\r\n        children = input[0];\r\n      }\r\n      // textarea\r\n      else if (textarea.length) {\r\n        children = textarea[0];\r\n      }\r\n\r\n      return children;\r\n    };\r\n\r\n    // 取消\r\n    const handleCancel = () => {\r\n      visible.value = false;\r\n\r\n      emit('on-cancel');\r\n    };\r\n\r\n    // 确认\r\n    const handleConfirm = () => {\r\n      visible.value = false;\r\n\r\n      emit('on-confirm');\r\n    };\r\n\r\n    // onMounted\r\n    onMounted(() => {\r\n      data.zIndex = handleGetIndex();\r\n\r\n      // if trigger and children is input or textarea,\r\n      // listen focus & blur event\r\n      if (props.trigger === 'focus') {\r\n        nextTick(() => {\r\n          const children = getInputChildren();\r\n\r\n          // 有input\r\n          if (children) {\r\n            data.isInput = true;\r\n\r\n            useEventListener(children, 'focus', handleFocus, false);\r\n            useEventListener(children, 'blur', handleBlur, false);\r\n          }\r\n        });\r\n      }\r\n\r\n      if (visible.value) {\r\n        proxy.updatePopper();\r\n      }\r\n    });\r\n\r\n    // provide\r\n    provide(\r\n      PopoverContextKey,\r\n      reactive({\r\n        data,\r\n        visible,\r\n        handleCancel,\r\n      })\r\n    );\r\n\r\n    return {\r\n      prefixCls,\r\n      // dom\r\n      reference,\r\n      popper,\r\n\r\n      // data\r\n      data,\r\n      visible,\r\n\r\n      // computed\r\n      wrapperClasses,\r\n      popperClasses,\r\n      popperStyles,\r\n      bodyContentClasses,\r\n      showTitle,\r\n\r\n      // methods\r\n      handleIndexIncrease,\r\n      handleMouseenter,\r\n      handleMouseleave,\r\n      handleRelClick,\r\n      handleClickOutside,\r\n      handleTransferClick,\r\n      handleFocus,\r\n      handleBlur,\r\n      handleConfirm,\r\n      handleCancel,\r\n    };\r\n  },\r\n  components: {\r\n    IvueIcon,\r\n    IvueButton,\r\n  },\r\n});\r\n</script>\r\n"],"names":["_withDirectives","_openBlock","_createElementBlock","_normalizeClass","_createCommentVNode","_createElementVNode","_renderSlot","_createBlock","_Teleport","_Transition","_withCtx","_normalizeStyle","_createVNode"],"mappings":"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"}