UNPKG

@fto-consult/expo-ui

Version:

Bibliothèque de composants UI Expo,react-native

70 lines (65 loc) 2.59 kB
import {isFunction,defaultArray,isNonNullString} from "$cutils"; const isDialog = dialog => dialog && typeof dialog !='boolean' && dialog.getId && dialog.getId() ? true : false; const dialogs = { current : null, //la boîte de dialogue actuelle previous : null, //la boîte de dialogue précédente, all : [], //la liste des Dialogs overts, /*** retourne la dernière boîte de dialogue */ get current (){ dialogs.all = defaultArray(dialogs.all); if(dialogs.all.length > 0) return dialogs.all[dialogs.all.length-1] return null; }, /*** définit la boîte de dialogue active */ set current(dialog){ return setCurrentDialog.call(APP,dialog) }, /*** Démonte la boîte de dialogue passée en paramètre * @param dialog, si dialog est omi alors c'est la boîte de dialogue active qui est supprimée */ unmount :function(dialog){ return unmountDialog.call(APP,dialog); }, isDialog, isValid : isDialog, isCurrentActive :(dialog)=>{ return dialogs.current && dialogs.current.isVisible()? true : false; }, /**** si la boîte de dialogue passé en paramètre est active */ isActive : (dialog)=>{ return isDialog(dialogs.current) && isDialog(dialog) && dialog.getId() === dialogs.current.getId() && dialog.isVisible()? true : false; } }; export const setCurrentDialog = dialogs.mount = dialogs.setCurrent = (dialog)=>{ if(isDialog(dialog) && dialog.isVisible() && dialogs.current !== dialog){ let _d = []; dialogs.all = defaultArray(dialogs.all); for(let i in dialogs.all){ if(dialogs.all[i] && dialogs.all[i].getId() != dialog.getId() && dialogs.all[i].isVisible()){ _d.push(dialogs.all[i]); } } _d.push(dialog); dialogs.all = _d; return true; } return false; } export const unmountDialog = window.unmountDialog = (dialog) =>{ let _d = []; dialog = isDialog(dialog) && isFunction(dialog.isVisible) ? dialog : dialogs.current; let hasFound = false; if(dialog){ dialogs.all = defaultArray(dialogs.all); for(let i in dialogs.all){ if(dialogs.all[i] && dialogs.all[i].getId() == dialog.getId()){ hasFound = true; } else if(dialogs.all[i] && dialogs.all[i].isVisible()){ _d.push(dialogs.all[i]); } } } dialogs.all = _d; return hasFound; } export default dialogs;