{"version":3,"file":"popup.vue2.mjs","sources":["../../../../../../packages/components/popconfirm/src/popup.vue"],"sourcesContent":["<script lang=\"ts\">\n  import type { StyleValue } from 'vue'\n  import { reactive, computed, defineComponent, onUnmounted, ref } from 'vue'\n  import { getNamespace } from '../../../utils/global-config'\n  import BnSpace from '../../space/src/space.vue'\n  import BnButton from '../../button/src/button.vue'\n  import { addUnit } from '../../../shared/utils'\n  import { BnIconPrompt } from '../../icon'\n  import { isFunction, isPromise } from '../../../utils/is'\n\n  export default defineComponent({\n    name: 'PopconfirmPopup',\n    components: {\n      BnSpace,\n      BnButton,\n      BnIconPrompt\n    },\n    props: {\n      width: {\n        type: [String, Number],\n        default: ''\n      },\n      content: {\n        type: Object,\n        default: () => ({})\n      },\n      okText: {\n        type: String,\n        default: 'String'\n      },\n      cancelText: {\n        type: String,\n        default: ''\n      },\n      popupClass: {\n        type: String,\n        default: undefined\n      },\n      onBeforeCancel: {\n        type: Function,\n        default: undefined\n      },\n      onBeforeOk: {\n        type: Function,\n        default: undefined\n      },\n      type: {\n        type: String,\n        default: undefined\n      }\n    },\n    emits: ['ok', 'cancel', 'close', 'destroy'],\n    setup(props, { emit }) {\n      const ns = getNamespace('popconfirm')\n      const visible = ref(true)\n\n      const popupCls = computed(() => [\n        ns,\n        props.popupClass && props.popupClass,\n        props.type && `is-${props.type}`\n      ])\n\n      const popupStyle = computed(() => {\n        const style: StyleValue = {}\n        style['--bn-trigger-arrow-background-color'] = '#fff'\n        style.width = addUnit(props.width)\n        return style\n      })\n\n      const loadingObj = reactive({\n        ok: false,\n        cancel: false\n      })\n\n      const changeVisible = (value: boolean) => {\n        visible.value = value\n      }\n\n      const handleOk = (e: Event) => {\n        const beforeOk = props.onBeforeOk\n        let ret = true\n        if (isFunction(beforeOk)) {\n          ret = beforeOk()\n          if (isPromise(ret)) {\n            loadingObj.ok = true\n            ret.then((valid) => {\n              loadingObj.ok = false\n              if (valid) {\n                emit('ok', e)\n              }\n            })\n            return\n          }\n        }\n        if (ret) {\n          emit('ok', e)\n        }\n      }\n\n      const handleCancel = (e: Event) => {\n        const beforeCancel = props.onBeforeCancel\n        let ret = true\n        if (isFunction(beforeCancel)) {\n          ret = beforeCancel()\n          if (isPromise(ret)) {\n            loadingObj.cancel = true\n            ret.then((valid) => {\n              loadingObj.cancel = false\n              if (valid) {\n                emit('cancel', e)\n              }\n            })\n            return\n          }\n        }\n        if (ret) {\n          emit('cancel', e)\n        }\n      }\n\n      const beforeLeave = () => {\n        emit('close')\n      }\n\n      const afterLeave = () => {\n        emit('destroy')\n      }\n\n      onUnmounted(() => {\n        visible.value = false\n      })\n\n      return {\n        ns,\n        visible,\n        popupCls,\n        popupStyle,\n        loadingObj,\n        changeVisible,\n        handleOk,\n        handleCancel,\n        beforeLeave,\n        afterLeave\n      }\n    }\n  })\n</script>\n\n<template>\n  <transition\n    name=\"bn-fade-in-standard\"\n    appear\n    @before-leave=\"beforeLeave\"\n    @after-leave=\"afterLeave\"\n  >\n    <div v-show=\"visible\" :class=\"popupCls\" :style=\"popupStyle\">\n      <div :class=\"[`${ns}__content`]\">\n        <slot name=\"content\">\n          <BnIconPrompt :class=\"[`${ns}__icon`]\" :size=\"16\" />\n          <div :class=\"[`${ns}__title`]\">{{ content?.value }}</div>\n        </slot>\n      </div>\n      <div :class=\"[`${ns}__footer`]\">\n        <BnSpace :size=\"12\">\n          <BnButton size=\"small\" :loading=\"loadingObj.cancel\" @click=\"handleCancel\">{{\n            cancelText\n          }}</BnButton>\n          <BnButton size=\"small\" type=\"primary\" :loading=\"loadingObj.ok\" @click=\"handleOk\">{{\n            okText\n          }}</BnButton>\n        </BnSpace>\n      </div>\n      <div class=\"arrow\"></div>\n    </div>\n  </transition>\n</template>\n"],"names":["BnSpace","BnButton"],"mappings":"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"}