drawer.ts 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. * @default true
  54. */
  55. showCancelButton?: boolean;
  56. /**
  57. * 是否显示确认按钮
  58. * @default true
  59. */
  60. showConfirmButton?: boolean;
  61. /**
  62. * 弹窗标题
  63. */
  64. title?: string;
  65. /**
  66. * 弹窗标题提示
  67. */
  68. titleTooltip?: string;
  69. }
  70. export interface DrawerState extends DrawerProps {
  71. /** 弹窗打开状态 */
  72. isOpen?: boolean;
  73. /**
  74. * 共享数据
  75. */
  76. sharedData?: Record<string, any>;
  77. }
  78. export type ExtendedDrawerApi = {
  79. useStore: <T = NoInfer<DrawerState>>(
  80. selector?: (state: NoInfer<DrawerState>) => T,
  81. ) => Readonly<Ref<T>>;
  82. } & DrawerApi;
  83. export interface DrawerApiOptions extends DrawerState {
  84. /**
  85. * 独立的弹窗组件
  86. */
  87. connectedComponent?: Component;
  88. /**
  89. * 关闭前的回调,返回 false 可以阻止关闭
  90. * @returns
  91. */
  92. onBeforeClose?: () => void;
  93. /**
  94. * 点击取消按钮的回调
  95. */
  96. onCancel?: () => void;
  97. /**
  98. * 点击确定按钮的回调
  99. */
  100. onConfirm?: () => void;
  101. /**
  102. * 弹窗状态变化回调
  103. * @param isOpen
  104. * @returns
  105. */
  106. onOpenChange?: (isOpen: boolean) => void;
  107. }