Spaces:
Paused
Paused
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) | |