{"version":3,"file":"SopDialog.mjs","sources":["../../../src/components/SopDialog/SopDialog.tsx"],"sourcesContent":["import { defineComponent, ref, computed, Slots } from 'vue';\nimport { ElDialog, ElButton } from 'element-plus';\nimport { useLocale } from '../../composables/useLocale';\n\nexport interface OnOKEvent {\n  close: () => void\n  setLoading: (status: boolean) => void\n}\nexport interface DialogOrDrawerHeaderSlots {\n  close: () => void\n  titleId: string\n  titleClass: string\n}\n\nexport default defineComponent({\n  name: 'SopDialog',\n  components: { ElDialog, ElButton },\n  props: {\n    visible: {\n      type: Boolean,\n      required: true\n    },\n    width: {\n      type: String,\n      default: '45%'\n    },\n    isShowFooter: {\n      type: Boolean,\n      default: true,\n    },\n    isShowDefaultFooter: {\n      type: Boolean,\n      default: false,\n    },\n    isShowConfirmBtn: {\n      type: Boolean,\n      default: true\n    },\n    isShowCancelBtn: {\n      type: Boolean,\n      default: true\n    },\n    confirmBtnText: {\n      type: String\n    },\n    cancelBtnText: {\n      type: String\n    }\n  },\n  emits: ['update:visible', 'on-ok', 'on-close'],\n  setup(props, { attrs, emit, slots }) {\n    const { t } = useLocale();\n\n    const confirmBtnText = ref(props.confirmBtnText || t('sop.common.confirm'));\n    const cancelBtnText = ref(props.cancelBtnText || t('sop.common.cancel'));\n    const loading = ref(false);\n    const isShowDefaultFooter = computed(() => (props.isShowCancelBtn || props.isShowConfirmBtn) && props.isShowDefaultFooter);\n\n    function beforeClose() {\n      emit('on-close');\n      emit('update:visible', !props.visible);\n    }\n\n    function setLoading(status: boolean) {\n      loading.value = status;\n    }\n\n    const okEvents: OnOKEvent = {\n      close: beforeClose,\n      setLoading\n    };\n\n    function renderFooter(slots: Slots) {\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      const slot: Record<string, any> = {\n        header: (val: DialogOrDrawerHeaderSlots) => slots.header?.(val),\n        default: () => slots.default?.()\n      };\n      if (props.isShowFooter) {\n        slot['footer'] = () => (\n          isShowDefaultFooter.value ?\n            <>\n              {\n                props.isShowCancelBtn &&\n                <ElButton onClick={beforeClose}>{cancelBtnText.value}</ElButton>\n              }\n              {\n                props.isShowConfirmBtn &&\n                <ElButton\n                  loading={loading.value}\n                  type=\"primary\"\n                  onClick={() => {\n                    emit('on-ok', okEvents);\n                  }}\n                >\n                  {confirmBtnText.value}\n                </ElButton>\n              }\n            </> :\n            slots.footer?.()\n        );\n      }\n      return slot;\n    }\n\n    return () => (\n      <ElDialog\n        {...attrs}\n        modelValue={props.visible}\n        before-close={beforeClose}\n        destroy-on-close\n        width={props.width}\n      >\n        {renderFooter(slots)}\n      </ElDialog>\n    );\n  },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","components","ElDialog","ElButton","props","visible","type","Boolean","required","width","String","default","isShowFooter","isShowDefaultFooter","isShowConfirmBtn","isShowCancelBtn","confirmBtnText","cancelBtnText","emits","setup","attrs","emit","slots","t","useLocale","ref","loading","computed","beforeClose","setLoading","status","value","okEvents","close","renderFooter","slot","header","val","_createVNode","_Fragment","onClick","footer","_slot","_mergeProps"],"mappings":"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"}