drawer.ts 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import type { DrawerApi } from './drawer-api';
  2. import type { Component, Ref } from 'vue';
  3. export interface DrawerProps {
  4. /**
  5. * 取消按钮文字
  6. */
  7. cancelText?: string;
  8. /**
  9. * 是否显示右上角的关闭按钮
  10. * @default true
  11. */
  12. closable?: boolean;
  13. /**
  14. * 点击弹窗遮罩是否关闭弹窗
  15. * @default true
  16. */
  17. closeOnClickModal?: boolean;
  18. /**
  19. * 按下 ESC 键是否关闭弹窗
  20. * @default true
  21. */
  22. closeOnPressEscape?: boolean;
  23. /**
  24. * 确定按钮 loading
  25. * @default false
  26. */
  27. confirmLoading?: boolean;
  28. /**
  29. * 确定按钮文字
  30. */
  31. confirmText?: string;
  32. /**
  33. * 弹窗描述
  34. */
  35. description?: string;
  36. /**
  37. * 是否显示底部
  38. * @default true
  39. */
  40. footer?: boolean;
  41. /**
  42. * 弹窗是否显示
  43. * @default false
  44. */
  45. loading?: boolean;
  46. /**
  47. * 是否显示遮罩
  48. * @default true
  49. */
  50. modal?: boolean;
  51. /**
  52. * 弹窗标题
  53. */
  54. title?: string;
  55. /**
  56. * 弹窗标题提示
  57. */
  58. titleTooltip?: string;
  59. }
  60. export interface DrawerState extends DrawerProps {
  61. /** 弹窗打开状态 */
  62. isOpen?: boolean;
  63. /**
  64. * 共享数据
  65. */
  66. sharedData?: Record<string, any>;
  67. }
  68. export type ExtendedDrawerApi = {
  69. useStore: <T = NoInfer<DrawerState>>(
  70. selector?: (state: NoInfer<DrawerState>) => T,
  71. ) => Readonly<Ref<T>>;
  72. } & DrawerApi;
  73. export interface DrawerApiOptions extends DrawerState {
  74. /**
  75. * 独立的弹窗组件
  76. */
  77. connectedComponent?: Component;
  78. /**
  79. * 关闭前的回调,返回 false 可以阻止关闭
  80. * @returns
  81. */
  82. onBeforeClose?: () => void;
  83. /**
  84. * 点击取消按钮的回调
  85. */
  86. onCancel?: () => void;
  87. /**
  88. * 点击确定按钮的回调
  89. */
  90. onConfirm?: () => void;
  91. /**
  92. * 弹窗状态变化回调
  93. * @param isOpen
  94. * @returns
  95. */
  96. onOpenChange?: (isOpen: boolean) => void;
  97. }