Move gr-overlay to dialog element for delete-project plugin

Change-Id: I2936af2ae7f663291e91d867898597946ee619fe
(cherry picked from commit 415f4d95237ee8c776f22199635139595b7a129f)
diff --git a/web/gr-delete-repo.ts b/web/gr-delete-repo.ts
index 55995fd..0bad785 100644
--- a/web/gr-delete-repo.ts
+++ b/web/gr-delete-repo.ts
@@ -20,15 +20,9 @@
   ConfigInfo,
   RepoName,
 } from '@gerritcodereview/typescript-api/rest-api';
-import {css, html, LitElement} from 'lit';
+import {css, CSSResult, html, LitElement} from 'lit';
 import {customElement, property, query, state} from 'lit/decorators.js';
 
-// TODO: This should be defined and exposed by @gerritcodereview/typescript-api
-type GrOverlay = Element & {
-  open(): void;
-  close(): void;
-};
-
 declare global {
   interface HTMLElementTagNameMap {
     'gr-delete-repo': GrDeleteRepo;
@@ -40,8 +34,8 @@
 
 @customElement('gr-delete-repo')
 export class GrDeleteRepo extends LitElement {
-  @query('#deleteRepoOverlay')
-  deleteRepoOverlay?: GrOverlay;
+  @query('#deleteRepoModal')
+  deleteRepoModal?: HTMLDialogElement;
 
   @query('#preserveGitRepoCheckBox')
   preserveGitRepoCheckBox?: HTMLInputElement;
@@ -64,20 +58,26 @@
   @state()
   private error?: string;
 
-  static override styles = css`
-    :host {
-      display: block;
-      margin-bottom: var(--spacing-xxl);
-    }
-    /* TODO: Find a way to use shared styles in lit elements in plugins. */
-    h3 {
-      font: inherit;
-      margin: 0;
-    }
-    .error {
-      color: red;
-    }
-  `;
+  static override get styles() {
+    return [
+      window.Gerrit.styles.font as CSSResult,
+      window.Gerrit.styles.modal as CSSResult,
+      css`
+        :host {
+          display: block;
+          margin-bottom: var(--spacing-xxl);
+        }
+        /* TODO: Find a way to use shared styles in lit elements in plugins. */
+        h3 {
+          font: inherit;
+          margin: 0;
+        }
+        .error {
+          color: red;
+        }
+      `,
+    ];
+  }
 
   get action(): ActionInfo | undefined {
     return this.config.actions?.[this.actionId];
@@ -101,18 +101,18 @@
         ?disabled="${!this.action.enabled}"
         @click="${() => {
           this.error = undefined;
-          this.deleteRepoOverlay?.open();
+          this.deleteRepoModal?.showModal();
         }}"
       >
         ${this.action.label}
       </gr-button>
       ${this.renderError()}
-      <gr-overlay id="deleteRepoOverlay" with-backdrop>
+      <dialog id="deleteRepoModal">
         <gr-dialog
           id="deleteRepoDialog"
           confirm-label="Delete"
           @confirm="${this.deleteRepo}"
-          @cancel="${() => this.deleteRepoOverlay?.close()}"
+          @cancel="${() => this.deleteRepoModal?.close()}"
         >
           <div class="header" slot="header">
             Are you really sure you want to delete the repo: "${this.repoName}"?
@@ -136,19 +136,19 @@
             </div>
           </div>
         </gr-dialog>
-      </gr-overlay>
+      </dialog>
     `;
   }
 
   private deleteRepo() {
     if (!this.action) {
       this.error = 'delete action undefined';
-      this.deleteRepoOverlay?.close();
+      this.deleteRepoModal?.close();
       return;
     }
     if (!this.action.method) {
       this.error = 'delete action does not have a HTTP method set';
-      this.deleteRepoOverlay?.close();
+      this.deleteRepoModal?.close();
       return;
     }
     this.error = undefined;
@@ -165,12 +165,12 @@
       .send(this.action.method, endpoint, json)
       .then(_ => {
         this.plugin.restApi().invalidateReposCache();
-        this.deleteRepoOverlay?.close();
+        this.deleteRepoModal?.close();
         window.location.href = `${this.getBaseUrl()}/admin/repos`;
       })
       .catch(e => {
         this.error = e;
-        this.deleteRepoOverlay?.close();
+        this.deleteRepoModal?.close();
       });
   }