use-tip.ts 965 B

123456789101112131415161718192021222324252627282930313233343536
  1. import { ComponentPublicInstance, VNode, createApp } from 'vue';
  2. import ModalCpt from './modal/index.vue';
  3. const app = createApp(ModalCpt);
  4. const container = document.createElement('div');
  5. // @ts-ignore
  6. const instance: ComponentPublicInstance<InstanceType<typeof ModalCpt>> =
  7. app.mount(container);
  8. document.body.appendChild(container);
  9. export function useTip(data: {
  10. title?: string;
  11. width?: string;
  12. content: string | VNode;
  13. hiddenCancel?: boolean;
  14. hiddenClose?: boolean;
  15. }) {
  16. instance.show = true;
  17. instance.title = data.title || '提示';
  18. instance.width = data.width || '320px';
  19. instance.content = data.content;
  20. instance.hiddenCancel = !!data.hiddenCancel;
  21. instance.hiddenClose = !!data.hiddenClose;
  22. return new Promise((resolve, reject) => {
  23. instance.handleOk = () => {
  24. instance.show = false;
  25. resolve('ok');
  26. };
  27. instance.handleCancel = () => {
  28. instance.show = false;
  29. reject('cancel');
  30. };
  31. });
  32. }