drawer.ts 2.0 KB

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