{"version":3,"file":"useAction.mjs","sources":["../../../../components/dialog/hooks/useAction.tsx"],"sourcesContent":["import { getCurrentInstance } from 'vue';\nimport { omit, isString, isObject } from 'lodash-es';\n\nimport { useTNodeJSX } from '@tdesign/shared-hooks';\nimport TButton, { ButtonProps } from '../../button';\nimport { PopconfirmConfig, DialogConfig, DrawerConfig } from '../../config-provider';\nimport type { ClassName } from '../../common';\nimport type { TdDialogProps } from '../type';\nimport { getPropertyValFromObj } from '@tdesign/common-js/utils/general';\n\nexport interface MixinsConfirmBtn {\n  theme?: MixinsThemeType;\n  className?: ClassName;\n  confirmBtn: TdDialogProps['confirmBtn'];\n  globalConfirm: PopconfirmConfig['confirm'] | DrawerConfig['confirm'] | DialogConfig['confirm'];\n  globalConfirmBtnTheme?: PopconfirmConfig['confirmBtnTheme'] | DialogConfig['confirmBtnTheme'];\n  size?: ButtonProps['size'];\n  confirmLoading?: boolean;\n}\n\nexport interface MixinsCancelBtn {\n  className?: ClassName;\n  cancelBtn: TdDialogProps['cancelBtn'];\n  globalCancel: PopconfirmConfig['cancel'] | DrawerConfig['cancel'] | DialogConfig['cancel'];\n  size?: ButtonProps['size'];\n}\n\nexport type MixinsThemeType = keyof (PopconfirmConfig['confirmBtnTheme'] & DialogConfig['confirmBtnTheme']);\n\nexport interface BtnAction {\n  confirmBtnAction: (e: MouseEvent) => void;\n  cancelBtnAction: (e: MouseEvent) => void;\n}\n\nexport function useAction(action: BtnAction) {\n  const instance = getCurrentInstance();\n  const renderTNodeJSX = useTNodeJSX();\n  // 全局配置属性综合\n  const getDefaultConfirmBtnProps = (options: MixinsConfirmBtn): ButtonProps => {\n    const { globalConfirm, theme, globalConfirmBtnTheme } = options;\n    const defaultTheme = getPropertyValFromObj(omit(globalConfirmBtnTheme, ['info']), theme) || 'primary';\n    let props: ButtonProps = {\n      // @ts-ignore\n      // TODO: fix type of globalConfirmBtnTheme\n      theme: defaultTheme,\n      size: options.size,\n      onClick: (e) => {\n        action.confirmBtnAction(e);\n      },\n    };\n    if (isString(globalConfirm)) {\n      props.content = globalConfirm;\n    } else if (isObject(globalConfirm)) {\n      props = { ...props, ...globalConfirm };\n    }\n    return props;\n  };\n  // 全局配置属性综合\n  const getDefaultCancelBtnProps = (options: MixinsCancelBtn): ButtonProps => {\n    const { globalCancel } = options;\n    let props: ButtonProps = {\n      theme: 'default',\n      size: options.size,\n      onClick: (e) => {\n        action.cancelBtnAction(e);\n      },\n    };\n    if (isString(globalCancel)) {\n      props.content = globalCancel;\n    } else if (isObject(globalCancel)) {\n      props = { ...props, ...globalCancel };\n    }\n    return props;\n  };\n  const getButtonByProps = (\n    button: string | ButtonProps,\n    params: {\n      defaultButtonProps: ButtonProps;\n      className?: ClassName;\n      confirmLoading?: boolean;\n    },\n  ) => {\n    const { defaultButtonProps, className, confirmLoading } = params;\n    let newOptions = defaultButtonProps;\n    if (isString(button)) {\n      newOptions.content = button;\n    } else if (isObject(button)) {\n      newOptions = { ...newOptions, ...button };\n    }\n    if (confirmLoading !== undefined) {\n      newOptions.loading = confirmLoading;\n    }\n    return <TButton class={className} {...newOptions} />;\n  };\n  const getConfirmBtn = (options: MixinsConfirmBtn) => {\n    const { confirmBtn, className, confirmLoading } = options;\n    if (confirmBtn === null) return null;\n    if (confirmBtn && instance.slots.confirmBtn) {\n      console.warn('Both $props.confirmBtn and $scopedSlots.confirmBtn exist, $props.confirmBtn is preferred.');\n    }\n    const defaultButtonProps = getDefaultConfirmBtnProps(options);\n    // 属性和插槽都不存在，就返回全局默认配置\n    if (!confirmBtn && !instance.slots.confirmBtn) {\n      return <TButton class={className} loading={confirmLoading} {...defaultButtonProps} />;\n    }\n    // 如果属性存在，优先返回属性配置\n    if (confirmBtn && ['string', 'object'].includes(typeof confirmBtn)) {\n      return getButtonByProps(confirmBtn as string | ButtonProps, {\n        defaultButtonProps,\n        className,\n        confirmLoading,\n      });\n    }\n    // 渲染插槽 或 function 类型的 confirmBtn，属性优先级更高\n    return renderTNodeJSX('confirmBtn');\n  };\n  const getCancelBtn = (options: MixinsCancelBtn) => {\n    const { cancelBtn, className } = options;\n    if (cancelBtn === null) return null;\n    if (cancelBtn && instance.slots.cancelBtn) {\n      console.warn('Both $props.cancelBtn and $scopedSlots.cancelBtn exist, $props.cancelBtn is preferred.');\n    }\n    const defaultButtonProps: ButtonProps = getDefaultCancelBtnProps(options);\n    // 属性和插槽都不存在，就返回全局默认配置\n    if (!cancelBtn && !instance.slots.cancelBtn) {\n      return <TButton class={className} {...defaultButtonProps} />;\n    }\n    // 如果属性存在，优先返回属性配置\n    if (cancelBtn && ['string', 'object'].includes(typeof cancelBtn)) {\n      return getButtonByProps(cancelBtn as string | ButtonProps, { defaultButtonProps, className });\n    }\n    // 渲染插槽 或 function 类型的 confirmBtn，属性优先级更高\n    return renderTNodeJSX('cancelBtn');\n  };\n  return { getConfirmBtn, getCancelBtn };\n}\n"],"names":["useAction","action","instance","getCurrentInstance","renderTNodeJSX","useTNodeJSX","getDefaultConfirmBtnProps","options","globalConfirm","theme","globalConfirmBtnTheme","defaultTheme","getPropertyValFromObj","omit","props","size","onClick","e","confirmBtnAction","isString","content","isObject","_objectSpread","getDefaultCancelBtnProps","globalCancel","cancelBtnAction","getButtonByProps","button","params","defaultButtonProps","className","confirmLoading","newOptions","loading","_createVNode","TButton","_mergeProps","getConfirmBtn","confirmBtn","slots","console","warn","includes","_typeof","getCancelBtn","cancelBtn"],"mappings":"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"}