UNPKG

apphouse

Version:

Component library for React that uses observable state management and theme-able components.

107 lines (99 loc) 1.98 kB
import { makeAutoObservable } from 'mobx'; export interface PopupType { /** * Any other data that you might want to pass to the popup */ data: any; /** * The id of the Popup UI Element */ uiid: string; /** * The index of the popup in the stack */ index: number; /** * Whether the popup is active or not */ active: boolean; /** * The title of the popup */ title?: string; /** * Unique id of the popup */ id: string; /** * The popup component to render */ popup?: JSX.Element; /** * The function to call when the popup is closed * @optional */ onClose?: () => void; } /** * A Popup is a model for the popup component * This model allows you to show a popup * from anywhere in the app simply calling openPopup() from the * app in the store */ export class Popup { /** * Any other data that you might want to pass to the popup */ data: any; /** * The id of the Popup UI Element * it must be unique to the popup */ uiid: string; /** * The index of the popup in the stack */ index: number; /** * Whether the popup is active or not */ active: boolean; /** * The title of the popup */ title?: string; /** * Unique id of the popup */ id: string; /** * The popup component to render */ popup?: JSX.Element; /** * The function to call when the popup is closed * @optional */ onClose?: () => void; constructor(props: PopupType) { const { data, id, index, title, uiid, popup, onClose } = props; this.data = data || {}; this.id = id; this.uiid = uiid; this.index = index || 0; this.active = true; this.title = title; this.popup = popup; this.onClose = onClose; makeAutoObservable(this); } setActive = () => { this.active = true; }; setInactive = () => { this.active = false; }; setPopup = (popup: JSX.Element) => { this.popup = popup; }; }