A photo manager for VRChat.
1import { createEffect, createSignal, Setter } from "solid-js"; 2 3export class ConfirmationBoxManager{ 4 private _confirmationBoxCallback = () => {}; 5 private _setConfirmationBoxText: Setter<string> 6 7 constructor(){ 8 let [ confirmationBoxText, setConfirmationBoxText ] = createSignal(''); 9 this._setConfirmationBoxText = setConfirmationBoxText; 10 11 let confirmationBox: HTMLElement; 12 13 document.body.appendChild(<div class="confirmation-box" ref={( el ) => confirmationBox = el}> 14 <div class="confirmation-box-container"> 15 { confirmationBoxText() }<br /><br /> 16 17 <div class="button-danger" onClick={() => { this._confirmationBoxCallback(); setConfirmationBoxText('') }}>Confirm</div> 18 <div class="button" onClick={() => setConfirmationBoxText('') }>Deny</div> 19 </div> 20 </div> as HTMLElement); 21 22 createEffect(() => { 23 if(confirmationBoxText() !== ''){ 24 confirmationBox.style.display = 'block'; 25 26 setTimeout(() => { 27 confirmationBox.style.opacity = '1'; 28 }, 1); 29 } else{ 30 confirmationBox.style.opacity = '0'; 31 32 setTimeout(() => { 33 confirmationBox.style.display = 'none'; 34 }, 250); 35 } 36 }) 37 } 38 39 public SetConfirmationBox( text: string, cb: () => void ){ 40 this._setConfirmationBoxText(text); 41 this._confirmationBoxCallback = cb; 42 } 43}