@fto-consult/expo-ui 8.47.0 → 8.48.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/create-app/App.js +62 -10
- package/bin/create-app/babel.config.js +1 -0
- package/bin/create-app/src/auth/index.js +61 -2
- package/bin/create-app/src/database/tables/getTable.js +10 -0
- package/bin/create-app/src/database/tables/index.js +57 -0
- package/bin/create-app.js +2 -1
- package/bin/generate-tables.js +6 -0
- package/package.json +1 -1
- package/src/auth/Login.js +22 -16
- package/src/screens/Help/openLibraries.js +99 -107
package/bin/create-app/App.js
CHANGED
@@ -10,6 +10,8 @@ import TableDataListScreen from "$screens/TableData/TableDataListScreen";
|
|
10
10
|
import TableDataScreen from "$screens/TableData/TableDataScreen";
|
11
11
|
import Notifications from "$components/Notifications";
|
12
12
|
import auth from "$src/auth";
|
13
|
+
import tablesData, { getTable as getTableData } from "$database/tables";
|
14
|
+
import {defaultStr} from "$cutils";
|
13
15
|
|
14
16
|
export default function AppMainEntry(){
|
15
17
|
return <ExpoUIProvider
|
@@ -22,8 +24,8 @@ export default function AppMainEntry(){
|
|
22
24
|
screens,
|
23
25
|
/** {object}, les options du composant Stack.Navigator, voir https://reactnavigation.org/docs/native-stack-navigator */
|
24
26
|
screenOptions : {},
|
25
|
-
drawerItems,
|
26
|
-
drawerSections,
|
27
|
+
drawerItems, //application main drawer items,
|
28
|
+
drawerSections, //les différentes sections du drawer principal de l'application
|
27
29
|
/***** mutate drawerItems before rendering
|
28
30
|
@param {object : {[drawerSection1]:{ label:section1Label,items:<Array>},[drawerSection2]:{}, ...[drawerSectionN]:{}}} drawerItems
|
29
31
|
@return {object}
|
@@ -34,6 +36,8 @@ export default function AppMainEntry(){
|
|
34
36
|
screenOptions : {},//les options du composant Stack.Navigator de react-navigation, voir https://reactnavigation.org/docs/native-stack-navigator/
|
35
37
|
}}
|
36
38
|
auth = {auth}
|
39
|
+
tablesData={tablesData}
|
40
|
+
getTableData={getTableData}
|
37
41
|
components = {{
|
38
42
|
/*** utilisé pour le renu du contenu des écran de type liste sur les tables de données */
|
39
43
|
TableDataListScreen,
|
@@ -63,16 +67,64 @@ export default function AppMainEntry(){
|
|
63
67
|
MainProvider : function({children,isLoaded,isLoading,isInitialized,hasGedStarted,...props}){
|
64
68
|
return children;
|
65
69
|
},
|
66
|
-
/***
|
67
|
-
|
70
|
+
/***
|
71
|
+
le composant en charge du rendu du logo de l'application
|
72
|
+
logo | Logo : ReactNode | ReactComponent | object {
|
73
|
+
image{ReactComponent} :,
|
74
|
+
text {ReactComponent}
|
75
|
+
},
|
68
76
|
},*/
|
69
|
-
logo : Logo
|
70
|
-
/****
|
71
|
-
|
72
|
-
|
77
|
+
logo : Logo,
|
78
|
+
/****
|
79
|
+
custom form fields
|
80
|
+
les form fields personnalisés doivent être définis ici
|
81
|
+
de la forme : {
|
82
|
+
[typeCustomField1] : <ReactComponent>,
|
83
|
+
...
|
84
|
+
[typeCustomFieldn] : <ReactComponent>
|
85
|
+
}
|
86
|
+
par exemple, si l'on souhaite définir un form field de type test, la déclaration sera de la forme :
|
87
|
+
{
|
88
|
+
test : Test, //ou test est le fom field associé au type test, ie le composant qui sera rendu pour ce type de Champ,
|
89
|
+
}
|
90
|
+
*/
|
91
|
+
customFormFields : {},
|
92
|
+
/***
|
93
|
+
la fonction permettant de muter les props du composant TableLink, permetant de lier les tables entre elles
|
94
|
+
Le composant TableLink permet de lier les données d'une tableData, L'usage dudit composant est définit dans la documentation de l'application
|
95
|
+
*/
|
73
96
|
tableLinkPropsMutator : (props)=>{
|
74
|
-
return
|
75
|
-
|
97
|
+
return {
|
98
|
+
...props,
|
99
|
+
/***
|
100
|
+
la fonction fetchForeignData est appelée lorsqu'on clique sur un élément du composant TableLink, permetant de lier un objet de la table table Data
|
101
|
+
foreignKeyTable {string} represente la table lié à la donnée
|
102
|
+
foreignKeyColumn {string} represenet le nom de la colonne qu'on souhaite récupérer la données
|
103
|
+
id {any}, represente la valeur actuelle sur laquelle on a cliqué
|
104
|
+
*/
|
105
|
+
fetchForeignData : ({foreignKeyTable,foreignKeyColumn,tableName,table,id,...args})=>{
|
106
|
+
const tableName = defaultStr(foreignKeyTable,table,tableName);
|
107
|
+
const tableObj = getTableData(tableName); //table object represente l'objet table, lié à la liste des tables data déclaré dans l'application
|
108
|
+
if (!tableObj) {
|
109
|
+
return Promise.reject({
|
110
|
+
message: `Impossible de récupérer la données associée à la table ${tableName}. Rassurez vous qu'elle figure dans la liste des tables supportées par l'application`,
|
111
|
+
});
|
112
|
+
}
|
113
|
+
//Vous pouvez dès cet instant accédes aux props de l'objet tableObj, notemment queryPath, qui permet de récupérer les données liés à la table data
|
114
|
+
const fieldName = defaultStr(foreignKeyColumn);
|
115
|
+
/*
|
116
|
+
implémenter votre logique pour récupérer l'objet associé à la table tableName, dont la colonne est fieldName, et la valeur est id.
|
117
|
+
//ajouter l'instruction d'importation de la fonction fetch : import fetch from "$capi/fetch";
|
118
|
+
exemple : return fetch(`${table.queryPath}/${id}${fieldName ? `?fieldName=${fieldName}`:""}`).then((resp) => resp.data);
|
119
|
+
*/
|
120
|
+
return Promise.resolve(null);
|
121
|
+
},
|
122
|
+
};
|
123
|
+
},
|
124
|
+
/***
|
125
|
+
({object})=><{object}>, la fonction permettant de muter les props du composant Fab, affiché dans les écrans par défaut
|
126
|
+
*/
|
127
|
+
fabPropsMutator : (props)=>props,
|
76
128
|
}}
|
77
129
|
/*** //for application initialization
|
78
130
|
@param {
|
@@ -7,6 +7,7 @@ module.exports = function(api) {
|
|
7
7
|
$components : path.resolve($src,"components"),
|
8
8
|
$navigation : path.resolve($src,"navigation"),
|
9
9
|
$screens : path.resolve($src,"screens"),
|
10
|
+
$database: path.resolve($src, "database"), //le repertoire dédié au données d'accès à la base de données
|
10
11
|
//...your custom module resolver alias, @see : https://www.npmjs.com/package/babel-plugin-module-resolver
|
11
12
|
}
|
12
13
|
return require("@fto-consult/expo-ui/babel.config")(api,{
|
@@ -1,6 +1,5 @@
|
|
1
1
|
export default {
|
2
2
|
enabled : false,//la gestion de l'authentification est désactivée par défaut
|
3
|
-
loginPropsMutator : (props)=>props,//({object})=><{object}>, la fonction permettant de muter les props du composant Login,
|
4
3
|
profilePropsMutator : ({fields,...props})=>({fields,...props}),//la fonction permettant de muter les champs liés à l'écran de mise à jour d'un profil utilisateur
|
5
4
|
signIn : ({user})=>Promise.resolve({message:"Connecté avec success"}), //la fonction permettant de connecter un utilisateur
|
6
5
|
signOut : ({user})=>Promise.resolve({message:"Déconnecté avec success"}),//la fonction permettant de déconnecter un utilisateur
|
@@ -24,5 +23,65 @@ export default {
|
|
24
23
|
getUserPseudo: (user) => user.pseudo,
|
25
24
|
getUserFirstName : (user)=>user.firstName,
|
26
25
|
getUserLastName : (user)=>user.lastName,
|
27
|
-
getUserFullName : (user)=> user.fullName || `${user.firstName && user.firstName ||''}${user.lastName && ` ${user.lastName}` ||''}
|
26
|
+
getUserFullName : (user)=> user.fullName || `${user.firstName && user.firstName ||''}${user.lastName && ` ${user.lastName}` ||''}`,
|
27
|
+
|
28
|
+
/****
|
29
|
+
Le composant à définir pour override le composant Login par défaut de l'application. example : Login : (porps)=><React.Component {...props}/>
|
30
|
+
Pour override l'interface de connexion par défaut, vous dévez définir le contenu de cette propriété comme étant un composant React qui sera rendu
|
31
|
+
rendu en lieu et place du composant de connexion par défaut : Ce composant aura comme props :
|
32
|
+
{
|
33
|
+
withPortal : {boolean}, //si le contenu de l'écran doit être rendu dans un portal
|
34
|
+
onSuccess <function> : (data)=><any>, la fonction appelée en cas de success
|
35
|
+
appBarProps <object>, les props à passer au composant ApppBar de l'écran de connexion, lorsque withPortal est à true
|
36
|
+
auth <object>, //le composant auth récupérer à l'aide du hook useAuth de $cauth. définit les fonctions suivantes :
|
37
|
+
{
|
38
|
+
signIn : (data)=><Promise>, la fonction permettant de connecter l'utilisateur
|
39
|
+
signOut : ()=><Promise>, la fonction permettant de déconnecter l'utilisateur, /
|
40
|
+
...rest,
|
41
|
+
}
|
42
|
+
}
|
43
|
+
*/
|
44
|
+
Login : null,
|
45
|
+
/*
|
46
|
+
la fonction loginPropsMutator de muter les props du composant Login par défaut, prise en compte lorsque le composant de connexion n'est pas remplacer par celui définit dans la prop login,
|
47
|
+
@param {object} props : les props de la fonction login, les props ont des propriétés suivantes :
|
48
|
+
{
|
49
|
+
onSuccess : ({object})=><Any>, la fonction appelée en cas de success
|
50
|
+
setState : (newState)=>(...newState),//la fonction utilisée pour update le state du composant. elle doit remplacer le state du composant
|
51
|
+
state : <Object: data,...rest>, le state actuel à l'instant t du composant
|
52
|
+
nextButton : <Object :
|
53
|
+
{
|
54
|
+
ref : nextButtonRef, //la référence vers le bouton next (le boutn Suivant)
|
55
|
+
isDisabled : x=> typeof buttonRef?.current?.isDisabled ==="function" && buttonRef.current?.isDisabled(),
|
56
|
+
enable : x=>typeof buttonRef?.current?.enable =="function" && buttonRef.current.enable(),
|
57
|
+
disable : x=> typeof buttonRef?.current?.disable =="function" && buttonRef?.current.disable(),
|
58
|
+
}
|
59
|
+
>,
|
60
|
+
prevButton : <Object :
|
61
|
+
{
|
62
|
+
ref : prevButtonRef, //la référence react ver le buton previous (le bouton Précédent)
|
63
|
+
isDisabled : x=> typeof buttonRef?.current?.isDisabled ==="function" && buttonRef.current?.isDisabled(),
|
64
|
+
enable : x=>typeof buttonRef?.current?.enable =="function" && buttonRef.current.enable(),
|
65
|
+
disable : x=> typeof buttonRef?.current?.disable =="function" && buttonRef?.current.disable(),
|
66
|
+
}
|
67
|
+
>,
|
68
|
+
showError <function> : (message,title)=><void>, la fonction permettant de notifier l'utilisateur en cas d'erreur
|
69
|
+
getData <function> : ()=><Object>, la fonction permettant de récupérer les données en cours de modification du formulaire de connextion à l'instant t
|
70
|
+
focusField <function> : (fieldName)=><void>, la fonction permettant d'activer le focus sur le champ fieldName à l'instant t
|
71
|
+
formName <string>, //le nom du formulaire Form, passé à la formData
|
72
|
+
nextButtonRef <{current:<any>}>, la référence vers le bouton next
|
73
|
+
previousButtonRef <{current:<any>}, la référence vers le bouton previous
|
74
|
+
}
|
75
|
+
@return <{object}>, l'objet a retourné doit être de la forme :
|
76
|
+
{
|
77
|
+
headerTopContent : <ReactComponent | ReactNode, le contenu a afficher au headerTop de l'interface de connexion
|
78
|
+
header : <ReactComponent| ReactNode>, le contenu du qui sera rendu immédiatement après le composant Header, par défaut, le texte "Connectez vous svp est affiché". Ce contenu doit être rendu si l'on souhaite override le texte "Connectez vous SVP"
|
79
|
+
containerProps : <object>, les props du composant <Surface/>, le composant qui est le wrapper du composant FormData en charge de récupérer les données de l'interface de connexion
|
80
|
+
withHeaderAvatar : <boolean>, si l'avatar ou l'iconne de connexion sera afficher à l'interface de connexion par défaut
|
81
|
+
...loginProps {object}, les composant Supplémentaires à passer au composant FormData utilisé pour le rendu du formulaire de connexion
|
82
|
+
}
|
83
|
+
*/
|
84
|
+
loginPropsMutator : (props)=>{
|
85
|
+
return props;
|
86
|
+
},
|
28
87
|
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
/*****
|
2
|
+
le contenu de cette fonction peut être généré automatiquement via les commandes suivantes (étant dans le repertoire de l'application)
|
3
|
+
npm run generate-getTable | npx @fto-consult/expo-ui generate-getTable
|
4
|
+
Notons que le script generate-getTable est définit comme étant l'un des scripts du package.json de l'application
|
5
|
+
@param {string} tableName, le nom de la table data
|
6
|
+
@return {object | null}, table, l'objet table associé
|
7
|
+
*/
|
8
|
+
export default function(tableName){
|
9
|
+
return null;
|
10
|
+
}
|
@@ -0,0 +1,57 @@
|
|
1
|
+
/****
|
2
|
+
la liste des tables de donnéees à exporter, de la forme :
|
3
|
+
[tableName1] : {
|
4
|
+
fields : { //la liste des champs liés à la table de données
|
5
|
+
[field1] : {
|
6
|
+
label | text : <string | ReactComponent>, le texte ou libelé lié au champ
|
7
|
+
type : <string>, le type de field par exemple : text,password, email, switch, checkbox, tel, select, et bien d'autres
|
8
|
+
|
9
|
+
//cette fonction est appelée à chaque fois que les premiers règles de validations ont été conclus lors de la validation du champ. Elle doit retourner soit un boolean, une chaine de caractère, un objet ou une promesse
|
10
|
+
//si une chaine de caractère est retournée, alors la validation du champ considère qu'il s'agit d'une erreur et le message est affiché comme erreur de validation du champ
|
11
|
+
//si un objet est retourné et cet objet contient un champ message | msg de type string, alors le validateur considère qu'il s'agit d'une erreur et le champ en question est affiché comme message de l'erreur
|
12
|
+
//si une promese est retournée, alors la fonction attendra que la promesse soit résolue
|
13
|
+
1. si la promesse resoud une chaine de caractère ou un objet idem au cas précédent, ladite chaine est condisérée comme une erreur
|
14
|
+
2. si la promesse renvoie une erreur, alors le validateur considère comme un échec de validation et le message lié à l'erreur est affiché comme message d'erreur de validation
|
15
|
+
//si false est retournée, alors rien n'est fait et le status de ce champ reste toujours à invalide. il sera donc impossible d'enregistrer le formulaire form data
|
16
|
+
//si true est retourneé, alors la formField est valide
|
17
|
+
onValidatorValid : ({value,context,....rest}) => <boolean | object {} | string | Promise <boolean | object : {} | string>>,
|
18
|
+
|
19
|
+
//Cette fonction est appélée à chaque échec de validation du form field
|
20
|
+
onValidatorNoValid : ({value,context,...rest}) => <any>
|
21
|
+
}
|
22
|
+
},
|
23
|
+
tableName <string>, le nom de la table name
|
24
|
+
label | text <string>, le titre à donner à la table data
|
25
|
+
icon : <string | ReactComponent>, l'icon de la table data,
|
26
|
+
queryPath <string>, //le chemin lié à l'api REST utilisée pour effectuer un query sur les données liés à la table Data en question
|
27
|
+
perms <object>, //l'objet perms définissant les permissions pouvant être assignés à l'utilisateur pour la table de donénes
|
28
|
+
showInFab <boolean | function()=><boolean>, //si la table de données sera affiché dans le layout Fab, le composant Fab qui est rendu pour les écrans dont la propriété withFab est à true
|
29
|
+
showInDrawer <boolean | function()=><boolean>, //détermine si la table data sera affichée dans le drawer principal de l'application
|
30
|
+
datagrid <object>, //les props à passer au composant datagrid lié à la table de données
|
31
|
+
drawerSection <string>, //le nom de la section associé au drawer dans lequel figurera le table data
|
32
|
+
print <function ({data,...settings})>=> <Promise<{content:[],...rest}>, //la fonction utile pour l'impression de la tabel de données suivant les recommandation de la libraririe pdfmake
|
33
|
+
printOptions <object>, //les options à passer à la fonction print,
|
34
|
+
|
35
|
+
databaseStatistics <function ()=> <boolean> | boolean>, //si la table data figurera dans les Statistiques en BD, validable si le composant DatabaseStatistics est appélé dans l'application
|
36
|
+
|
37
|
+
showInFab <boolean | function()=><boolean>, //spécifie si un bouton lié à la table sera affiché dans le composant Fab
|
38
|
+
|
39
|
+
//le champ fabProps doit retourner les props à appliquer au composant fab lié à la table data,si elle définit une propriété nomée actions de types tableau, alors, ces actions seront utilisées commes actions personnalisées du fab
|
40
|
+
// il doit s'agit d'un objet de la forme : {
|
41
|
+
actions : <array<Item> | object <Item>>. Item doit être un objet avec les propriétés suivantes :
|
42
|
+
Item : {
|
43
|
+
text | label <string> : "le texte à afficher au bouton fab",
|
44
|
+
icon <string | ReactComponent>, l'icone du bouton de fab,
|
45
|
+
backgroundColor <string, //la couleur d'arrière plan du bouton
|
46
|
+
color <string>, //la couleur du bouton de fab
|
47
|
+
onPress <func ()=>void>, //la fonction appelée lorsqu'on clique sur le bouton
|
48
|
+
}
|
49
|
+
}
|
50
|
+
fabProps { boolean<false> | object|function({tableName})}, //si fabProps vaux false ou retourne false, alors le table data ne s'affichera pas dans le composant Fab
|
51
|
+
}
|
52
|
+
*/
|
53
|
+
export default {
|
54
|
+
|
55
|
+
}
|
56
|
+
|
57
|
+
export {default as getTable} from "./getTable";
|
package/bin/create-app.js
CHANGED
@@ -31,8 +31,8 @@ module.exports = function(appName,{projectRoot:root}){
|
|
31
31
|
name,
|
32
32
|
version : "1.0.0",
|
33
33
|
"description": "",
|
34
|
-
"main": "index.js",
|
35
34
|
"main": "App.js",
|
35
|
+
"tablesDataPath": "./src/database/tables",
|
36
36
|
"scripts" : {
|
37
37
|
start : "npx expo start -c",
|
38
38
|
"dev" : "npx expo start --no-dev --minify -c",
|
@@ -40,6 +40,7 @@ module.exports = function(appName,{projectRoot:root}){
|
|
40
40
|
"build-web" : "npx expo export:web",
|
41
41
|
"build-android" : "npx eas build --platform android --profile preview",
|
42
42
|
"build-ios" : "eas build --platform ios",
|
43
|
+
"generate-getTable" : "npx @fto-consult/expo-ui generate-getTable"
|
43
44
|
},
|
44
45
|
"dependencies" : {
|
45
46
|
[euModule] : packageObj.version,
|
package/bin/generate-tables.js
CHANGED
@@ -56,6 +56,12 @@ const generateTableOrStructDataStr = (tableDataPath)=>{
|
|
56
56
|
//on génère le fichier getTable des tables data de l'application
|
57
57
|
if(getTableJSContent){
|
58
58
|
return (`
|
59
|
+
/*****
|
60
|
+
le contenu de cette fonction peut être généré automatiquement via les commandes suivantes (étant dans le repertoire de l'application)
|
61
|
+
npm run generate-getTable | npx @fto-consult/expo-ui generate-getTable. Notons que le script generate-getTable est définit comme étant l'un des scripts du package.json de l'application
|
62
|
+
@param {string} tableName, le nom de la table data
|
63
|
+
@return {object | null}, table, l'objet table associé
|
64
|
+
*/
|
59
65
|
export default function(tableName){
|
60
66
|
\tif(!tableName || typeof tableName !=="string") return null;
|
61
67
|
\ttableName = tableName.toUpperCase().trim();
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@fto-consult/expo-ui",
|
3
|
-
"version": "8.
|
3
|
+
"version": "8.48.1",
|
4
4
|
"description": "Bibliothèque de composants UI Expo,react-native",
|
5
5
|
"react-native-paper-doc": "https://github.com/callstack/react-native-paper/tree/main/docs/docs/guides",
|
6
6
|
"scripts": {
|
package/src/auth/Login.js
CHANGED
@@ -27,7 +27,7 @@ const WIDTH = 400;
|
|
27
27
|
|
28
28
|
export default function LoginComponent(props){
|
29
29
|
let {formName,step,appBarProps,onSuccess,withPortal,testID} = props;
|
30
|
-
const {auth:{loginPropsMutator}} = useContext();
|
30
|
+
const {auth:{loginPropsMutator,Login}} = useContext();
|
31
31
|
const loginTitle = getTitle();
|
32
32
|
testID = defaultStr(testID,"RN_Auth.LoginComponent");
|
33
33
|
formName = React.useRef(uniqid(defaultStr(formName,"login-formname"))).current;
|
@@ -74,7 +74,6 @@ export default function LoginComponent(props){
|
|
74
74
|
}
|
75
75
|
}
|
76
76
|
|
77
|
-
|
78
77
|
if(withPortal){
|
79
78
|
appBarProps = defaultObj(appBarProps);
|
80
79
|
appBarProps.backAction = false;
|
@@ -86,6 +85,27 @@ export default function LoginComponent(props){
|
|
86
85
|
},1000)
|
87
86
|
}
|
88
87
|
},[withPortal]);
|
88
|
+
React.useEffect(()=>{
|
89
|
+
Preloader.closeAll();
|
90
|
+
/*** pour initializer les cordonnées du composant login */
|
91
|
+
if(typeof initialize =='function'){
|
92
|
+
initialize();
|
93
|
+
}
|
94
|
+
},[]);
|
95
|
+
const prevStep = React.usePrevious(state.step);
|
96
|
+
React.useEffect(()=>{
|
97
|
+
/*** lorsque le state du composant change */
|
98
|
+
if(typeof onStepChange =='function'){
|
99
|
+
return onStepChange({...state,previousStep:prevStep,focusField,nextButtonRef})
|
100
|
+
}
|
101
|
+
},[state.step]);
|
102
|
+
if(React.isComponent(Login)) return <Login
|
103
|
+
{...props}
|
104
|
+
withPortal = {withPortal}
|
105
|
+
appBarProps = {appBarProps}
|
106
|
+
onSuccess = {onSuccess}
|
107
|
+
auth = {auth}
|
108
|
+
/>
|
89
109
|
const getButtonAction = (buttonRef)=>{
|
90
110
|
return {
|
91
111
|
ref : buttonRef,
|
@@ -122,20 +142,6 @@ export default function LoginComponent(props){
|
|
122
142
|
const containerProps = defaultObj(customContainerProps);
|
123
143
|
const contentProps = defaultObj(customContentProps);
|
124
144
|
|
125
|
-
React.useEffect(()=>{
|
126
|
-
Preloader.closeAll();
|
127
|
-
/*** pour initializer les cordonnées du composant login */
|
128
|
-
if(typeof initialize =='function'){
|
129
|
-
initialize();
|
130
|
-
}
|
131
|
-
},[]);
|
132
|
-
const prevStep = React.usePrevious(state.step);
|
133
|
-
React.useEffect(()=>{
|
134
|
-
/*** lorsque le state du composant change */
|
135
|
-
if(typeof onStepChange =='function'){
|
136
|
-
return onStepChange({...state,previousStep:prevStep,focusField,nextButtonRef})
|
137
|
-
}
|
138
|
-
},[state.step]);
|
139
145
|
/****la fonction à utiliser pour vérifier si l'on peut envoyer les données pour connextion
|
140
146
|
* par défaut, on envoie les données lorssqu'on est à l'étappe 2
|
141
147
|
* **/
|
@@ -1,22 +1,21 @@
|
|
1
1
|
module.exports = {
|
2
2
|
"@fto-consult/expo-ui": {
|
3
|
-
"
|
4
|
-
"
|
5
|
-
"
|
3
|
+
"name": "@fto-consult/expo-ui",
|
4
|
+
"version": "8.48.0",
|
5
|
+
"repository": {
|
6
|
+
"type": "git",
|
7
|
+
"url": "git+https://github.com/borispipo/expo-ui.git"
|
8
|
+
},
|
9
|
+
"homepage": "https://github.com/borispipo/expo-ui#readme"
|
6
10
|
},
|
7
11
|
"@babel/plugin-proposal-export-namespace-from": {
|
8
12
|
"version": "7.18.9",
|
9
13
|
"url": "https://babel.dev/docs/en/next/babel-plugin-proposal-export-namespace-from",
|
10
14
|
"license": "MIT"
|
11
15
|
},
|
12
|
-
"@emotion/
|
13
|
-
"version": "11.11.
|
14
|
-
"url": "https://emotion
|
15
|
-
"license": "MIT"
|
16
|
-
},
|
17
|
-
"@expo/html-elements": {
|
18
|
-
"version": "0.9.1",
|
19
|
-
"url": "https://github.com/expo/expo/tree/main/packages/html-elements",
|
16
|
+
"@emotion/react": {
|
17
|
+
"version": "11.11.4",
|
18
|
+
"url": "https://github.com/emotion-js/emotion/tree/main/packages/react",
|
20
19
|
"license": "MIT"
|
21
20
|
},
|
22
21
|
"@expo/metro-config": {
|
@@ -24,49 +23,28 @@ module.exports = {
|
|
24
23
|
"url": "https://github.com/expo/expo.git",
|
25
24
|
"license": "MIT"
|
26
25
|
},
|
27
|
-
"@expo/vector-icons": {
|
28
|
-
"version": "14.0.0",
|
29
|
-
"url": "https://expo.github.io/vector-icons",
|
30
|
-
"license": "MIT"
|
31
|
-
},
|
32
26
|
"@expo/webpack-config": {
|
33
27
|
"version": "19.0.1",
|
34
28
|
"url": "https://github.com/expo/expo-webpack-integrations/tree/main/packages/webpack-config#readme",
|
35
29
|
"license": "MIT"
|
36
30
|
},
|
37
|
-
"@
|
38
|
-
"version": "
|
39
|
-
"url": "https://github.com/
|
40
|
-
"license": "MIT"
|
41
|
-
},
|
42
|
-
"@react-native-community/netinfo": {
|
43
|
-
"version": "11.1.0",
|
44
|
-
"url": "https://github.com/react-native-netinfo/react-native-netinfo#readme",
|
45
|
-
"license": "MIT"
|
46
|
-
},
|
47
|
-
"@react-native/assets-registry": {
|
48
|
-
"version": "0.74.0",
|
49
|
-
"url": "https://github.com/facebook/react-native/tree/HEAD/packages/assets#readme",
|
31
|
+
"@faker-js/faker": {
|
32
|
+
"version": "8.4.1",
|
33
|
+
"url": "https://github.com/faker-js/faker.git",
|
50
34
|
"license": "MIT"
|
51
35
|
},
|
52
|
-
"@
|
53
|
-
"version": "
|
54
|
-
"url": "https://
|
55
|
-
"license": "
|
56
|
-
},
|
57
|
-
"@react-navigation/native-stack": {
|
58
|
-
"version": "6.9.18",
|
59
|
-
"url": "https://github.com/software-mansion/react-native-screens#readme",
|
60
|
-
"license": "MIT"
|
36
|
+
"@fto-consult/common": {
|
37
|
+
"version": "4.36.0",
|
38
|
+
"url": "https://github.com/borispipo/common#readme",
|
39
|
+
"license": "ISC"
|
61
40
|
},
|
62
|
-
"@
|
63
|
-
"version": "
|
64
|
-
"url": "https://reactnavigation.org/docs/stack-navigator/",
|
41
|
+
"@fto-consult/node-utils": {
|
42
|
+
"version": "1.7.1",
|
65
43
|
"license": "MIT"
|
66
44
|
},
|
67
|
-
"
|
68
|
-
"version": "
|
69
|
-
"url": "https://
|
45
|
+
"apexcharts": {
|
46
|
+
"version": "3.47.0",
|
47
|
+
"url": "https://apexcharts.com",
|
70
48
|
"license": "MIT"
|
71
49
|
},
|
72
50
|
"babel-plugin-inline-dotenv": {
|
@@ -79,108 +57,122 @@ module.exports = {
|
|
79
57
|
"url": "https://github.com/tleunen/babel-plugin-module-resolver.git",
|
80
58
|
"license": "MIT"
|
81
59
|
},
|
82
|
-
"
|
83
|
-
"version": "
|
84
|
-
"url": "https://github.com/
|
60
|
+
"crypto-browserify": {
|
61
|
+
"version": "3.12.0",
|
62
|
+
"url": "https://github.com/crypto-browserify/crypto-browserify",
|
85
63
|
"license": "MIT"
|
86
64
|
},
|
87
|
-
"
|
88
|
-
"version": "
|
89
|
-
"url": "https://
|
65
|
+
"file-saver": {
|
66
|
+
"version": "2.0.5",
|
67
|
+
"url": "https://github.com/eligrey/FileSaver.js#readme",
|
90
68
|
"license": "MIT"
|
91
69
|
},
|
92
|
-
"
|
93
|
-
"version": "
|
94
|
-
"url": "https://
|
95
|
-
"license": "MIT"
|
70
|
+
"google-libphonenumber": {
|
71
|
+
"version": "3.2.34",
|
72
|
+
"url": "https://ruimarinho.github.io/google-libphonenumber/",
|
73
|
+
"license": "(MIT AND Apache-2.0)"
|
96
74
|
},
|
97
|
-
"
|
98
|
-
"version": "
|
99
|
-
"url": "https://
|
75
|
+
"html2canvas": {
|
76
|
+
"version": "1.4.1",
|
77
|
+
"url": "https://html2canvas.hertzen.com",
|
100
78
|
"license": "MIT"
|
101
79
|
},
|
102
|
-
"
|
103
|
-
"version": "
|
104
|
-
"url": "
|
80
|
+
"htmlparser2-without-node-native": {
|
81
|
+
"version": "3.9.2",
|
82
|
+
"url": "git://github.com/fb55/htmlparser2.git",
|
105
83
|
"license": "MIT"
|
106
84
|
},
|
107
|
-
"
|
108
|
-
"version": "
|
109
|
-
"url": "https://docs.expo.dev/versions/latest/sdk/linking",
|
85
|
+
"is-plain-obj": {
|
86
|
+
"version": "4.1.0",
|
110
87
|
"license": "MIT"
|
111
88
|
},
|
112
|
-
"
|
113
|
-
"version": "11.
|
114
|
-
"url": "https://
|
89
|
+
"jsbarcode": {
|
90
|
+
"version": "3.11.6",
|
91
|
+
"url": "https://github.com/lindell/JsBarcode#readme",
|
115
92
|
"license": "MIT"
|
116
93
|
},
|
117
|
-
"
|
118
|
-
"version": "
|
119
|
-
"url": "https://
|
94
|
+
"prop-types": {
|
95
|
+
"version": "15.8.1",
|
96
|
+
"url": "https://facebook.github.io/react/",
|
120
97
|
"license": "MIT"
|
121
98
|
},
|
122
|
-
"
|
123
|
-
"version": "
|
124
|
-
"url": "https://
|
99
|
+
"react-content-loader": {
|
100
|
+
"version": "6.2.1",
|
101
|
+
"url": "https://github.com/danilowoz/react-content-loader",
|
125
102
|
"license": "MIT"
|
126
103
|
},
|
127
|
-
"
|
128
|
-
"version": "2.
|
129
|
-
"url": "https://
|
104
|
+
"react-dom": {
|
105
|
+
"version": "18.2.0",
|
106
|
+
"url": "https://reactjs.org/",
|
130
107
|
"license": "MIT"
|
131
108
|
},
|
132
|
-
"
|
133
|
-
"version": "
|
134
|
-
"url": "https://
|
109
|
+
"react-native-big-list": {
|
110
|
+
"version": "1.6.1",
|
111
|
+
"url": "https://marcocesarato.github.io/react-native-big-list-docs/",
|
112
|
+
"license": "GPL-3.0-or-later"
|
113
|
+
},
|
114
|
+
"react-native-iphone-x-helper": {
|
115
|
+
"version": "1.3.1",
|
116
|
+
"url": "https://github.com/ptelad/react-native-iphone-x-helper#readme",
|
135
117
|
"license": "MIT"
|
136
118
|
},
|
137
|
-
"react": {
|
138
|
-
"version": "
|
139
|
-
"url": "https://reactjs.org/",
|
119
|
+
"react-native-mime-types": {
|
120
|
+
"version": "2.5.0",
|
140
121
|
"license": "MIT"
|
141
122
|
},
|
142
|
-
"react-native": {
|
143
|
-
"version": "
|
144
|
-
"url": "https://
|
123
|
+
"react-native-paper": {
|
124
|
+
"version": "5.12.3",
|
125
|
+
"url": "https://callstack.github.io/react-native-paper",
|
145
126
|
"license": "MIT"
|
146
127
|
},
|
147
|
-
"react-native-
|
148
|
-
"version": "
|
149
|
-
"url": "https://github.com/
|
128
|
+
"react-native-paper-dates": {
|
129
|
+
"version": "0.22.3",
|
130
|
+
"url": "https://github.com/web-ridge/react-native-paper-dates#readme",
|
150
131
|
"license": "MIT"
|
151
132
|
},
|
152
|
-
"react-native-
|
153
|
-
"version": "
|
133
|
+
"react-native-web": {
|
134
|
+
"version": "0.19.10",
|
135
|
+
"url": "git://github.com/necolas/react-native-web.git",
|
154
136
|
"license": "MIT"
|
155
137
|
},
|
156
|
-
"react-
|
157
|
-
"version": "
|
158
|
-
"url": "https://
|
138
|
+
"react-virtuoso": {
|
139
|
+
"version": "4.7.2",
|
140
|
+
"url": "https://virtuoso.dev/",
|
159
141
|
"license": "MIT"
|
160
142
|
},
|
161
|
-
"
|
162
|
-
"version": "4.
|
163
|
-
"url": "https://github.com/
|
143
|
+
"readable-stream": {
|
144
|
+
"version": "4.5.2",
|
145
|
+
"url": "https://github.com/nodejs/readable-stream",
|
164
146
|
"license": "MIT"
|
165
147
|
},
|
166
|
-
"
|
167
|
-
"version": "
|
168
|
-
"url": "
|
148
|
+
"sanitize-filename": {
|
149
|
+
"version": "1.6.3",
|
150
|
+
"url": "git@github.com:parshap/node-sanitize-filename.git",
|
151
|
+
"license": "WTFPL OR ISC"
|
152
|
+
},
|
153
|
+
"sharp-cli": {
|
154
|
+
"version": "2.1.1",
|
155
|
+
"url": "https://github.com/vseventer/sharp-cli",
|
169
156
|
"license": "MIT"
|
170
157
|
},
|
171
|
-
"
|
172
|
-
"version": "
|
173
|
-
"url": "https://github.com/
|
158
|
+
"stream-browserify": {
|
159
|
+
"version": "3.0.0",
|
160
|
+
"url": "https://github.com/browserify/stream-browserify",
|
174
161
|
"license": "MIT"
|
175
162
|
},
|
176
|
-
"
|
177
|
-
"version": "3.
|
178
|
-
"url": "https://github.
|
163
|
+
"tippy.js": {
|
164
|
+
"version": "6.3.7",
|
165
|
+
"url": "https://atomiks.github.io/tippyjs/",
|
179
166
|
"license": "MIT"
|
180
167
|
},
|
181
|
-
"
|
182
|
-
"version": "
|
183
|
-
"url": "https://github.com/
|
168
|
+
"vm": {
|
169
|
+
"version": "0.1.0",
|
170
|
+
"url": "https://github.com/DiegoRBaquero/node-vm#readme",
|
184
171
|
"license": "MIT"
|
172
|
+
},
|
173
|
+
"xlsx": {
|
174
|
+
"version": "0.18.5",
|
175
|
+
"url": "https://sheetjs.com/",
|
176
|
+
"license": "Apache-2.0"
|
185
177
|
}
|
186
178
|
};
|