UNPKG

@fto-consult/expo-ui

Version:

Bibliothèque de composants UI Expo,react-native

74 lines (71 loc) 2.78 kB
import FormData from "./FormData"; import {defaultObj,isObj,isNonNullString} from "$cutils"; import PropTypes from "prop-types"; export default class FormDataListScreen extends FormData{ constructor(props){ super(props); Object.defineProperties(this,{ isAllowed : { value : true } }) } isFormList(){ return true; } isDocEditing(data){ if(super.isDocEditing(data)) return true; const {indexField,isDocUpdate,isDocEditing} = this.props; if(isObj(data) && typeof isDocUpdate !=='function' && typeof isDocEditing !='function'){ if(isNonNullString(indexField) && data[indexField]) return true; if(data.code) return true; } return false; } getAppBarActionsProps(props){ const {save2NewAction,save2closeAction,saveAction} = this.props; return super.getAppBarActionsProps({...props ,save2NewAction : typeof save2NewAction !=='undefined'? save2NewAction:true ,save2closeAction : typeof save2closeAction !=='undefined'? save2closeAction:true ,saveAction : typeof saveAction !=='undefined'? saveAction:true, }); } createNew (...p){ const {show} = this.props; if(typeof show =='function'){ return show({...this.props,index:undefined,data:{}}); } return super.createNew(...p) } doSave2New(args,...rest){ const {show} = this.props; if(typeof show =='function'){ return show({...args,index:undefined,data:{}}); } return super.doSave2Close(args,...rest); } doSave2Close(args){ return this.close(); } _render(content){ let {isAllowed} = this.props; if(typeof isAllowed ==='function'){ isAllowed = isAllowed({data:defaultObj(this.props.data,this.props.data),context:this}) } else isAllowed = true; if(isAllowed === false || !this.isAllowed){ Auth.showError(); return null; } return super._render(content); } } FormDataListScreen.propTypes = { ...FormData.propTypes, newAction : PropTypes.bool, saveAction : PropTypes.bool, save2NewAction : PropTypes.bool, save2closeAction : PropTypes.bool, isAllowed : PropTypes.func, ///la fonction permettant de vérifier si l'utilsateur a accès à la modification ou création de la ressource perm : PropTypes.string, //la fonction garantissant l'accès à la ressource par l'utilisateur saveDataMutator : PropTypes.func, //la fonction appélée pour effecteur une mutation sur les données qu'on veut enregistrer }