|
import gradio as gr |
|
from typing import List |
|
|
|
|
|
class ModalInterface(gr.Interface): |
|
modal_id_counter = 0 |
|
|
|
def __init__( |
|
self, |
|
html_content: str, |
|
open_button_text: str, |
|
open_button_classes: List[str] = [], |
|
open_button_extra_attrs: str = '' |
|
): |
|
self.html_content = html_content |
|
self.open_button_text = open_button_text |
|
self.open_button_classes = open_button_classes |
|
self.open_button_extra_attrs = open_button_extra_attrs |
|
self.modal_id = ModalInterface.modal_id_counter |
|
ModalInterface.modal_id_counter += 1 |
|
|
|
def __call__(self): |
|
return self.create_modal() |
|
|
|
def create_modal(self, visible=True): |
|
html_code = f""" |
|
<div id="cnet-modal-{self.modal_id}" class="cnet-modal"> |
|
<span class="cnet-modal-close">×</span> |
|
<div class="cnet-modal-content"> |
|
{self.html_content} |
|
</div> |
|
</div> |
|
<div id="cnet-modal-open-{self.modal_id}" |
|
class="cnet-modal-open {' '.join(self.open_button_classes)}" |
|
{self.open_button_extra_attrs} |
|
>{self.open_button_text}</div> |
|
""" |
|
return gr.HTML(value=html_code, visible=visible) |
|
|