gitea源码

ConfirmModal.ts 1.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import {svg} from '../../svg.ts';
  2. import {html, htmlRaw} from '../../utils/html.ts';
  3. import {createElementFromHTML} from '../../utils/dom.ts';
  4. import {fomanticQuery} from '../../modules/fomantic/base.ts';
  5. const {i18n} = window.config;
  6. type ConfirmModalOptions = {
  7. header?: string;
  8. content?: string;
  9. confirmButtonColor?: 'primary' | 'red' | 'green' | 'blue';
  10. };
  11. export function createConfirmModal({header = '', content = '', confirmButtonColor = 'primary'}:ConfirmModalOptions = {}): HTMLElement {
  12. const headerHtml = header ? html`<div class="header">${header}</div>` : '';
  13. return createElementFromHTML(html`
  14. <div class="ui g-modal-confirm modal">
  15. ${htmlRaw(headerHtml)}
  16. <div class="content">${content}</div>
  17. <div class="actions">
  18. <button class="ui cancel button">${htmlRaw(svg('octicon-x'))} ${i18n.modal_cancel}</button>
  19. <button class="ui ${confirmButtonColor} ok button">${htmlRaw(svg('octicon-check'))} ${i18n.modal_confirm}</button>
  20. </div>
  21. </div>
  22. `.trim());
  23. }
  24. export function confirmModal(modal: HTMLElement | ConfirmModalOptions): Promise<boolean> {
  25. if (!(modal instanceof HTMLElement)) modal = createConfirmModal(modal);
  26. return new Promise((resolve) => {
  27. const $modal = fomanticQuery(modal);
  28. $modal.modal({
  29. onApprove() {
  30. resolve(true);
  31. },
  32. onHidden() {
  33. $modal.remove();
  34. resolve(false);
  35. },
  36. }).modal('show');
  37. });
  38. }