Hooks change doesn’t work after upgrating to v8

Feature(s) impacted

The "Recherche fournisseur (3 lettres minimum) " field does not allow you to select field “Fournisseur” , it remains empty:

image

Observed behavior

{
name: ‘Créer un chantier manuellement’,
type: ‘single’,
fields: [{
field: ‘libellé du chantier’,
type: ‘String’,
isRequired: true
}, {
field: ‘type de vote’,
type: ‘Enum’,
enums: [
‘Hors AG’,
‘En AG sans délégation’,
‘En AG avec délégation’
],
isRequired: true
}, {
field: ‘numéro de résolution’,
type: ‘String’,
description: ‘Si vote en AG.’
}, {
field: ‘référent du chantier’,
type: ‘Enum’,
enums: ,
isRequired: true
}, {
field: ‘recherche fournisseur (3 lettres minimum)’,
type: ‘String’,
hook: ‘onFieldChanged’,
}, {
field: ‘fournisseur’,
type: ‘Enum’,
enums:
}

change: {
//onFieldChanged: ({ fields, record }) => {
onFieldChanged: ({ fields, changedField }) => {
if (fields.find(f => f.field === ‘recherche fournisseur (3 lettres minimum)’).value.length > 2) {
return axios.get(${API_URL}/forest_admin/sage_providers, {
headers: {
‘Authorization’: Bearer ${process.env.ACCESS_TOKEN},
‘X-CURRENT-USER-EMAIL’: process.env.SERVICE_EMAIL
},
params: {
place_id: ‘’,
provider_name: fields.find(f => f.field === ‘recherche fournisseur (3 lettres minimum)’).value,
siret: ‘’,
matricule: ‘’
}
}).then(res => {
if (res.data && res.data.length > 0) {
fields.find(f => f.field === ‘fournisseur’).enums = res.data.map(provider => ${provider.matricule} - ${provider.raison_sociale} - ${provider.site_ville})
}
return fields;
});
}
return fields;
}

Context

  • Project name: .Sergic
  • Team name: gestion
  • Environment name: Développement
  • Agent (forest package) name & version: 9
  • Database type: Postgres
  • Recent changes made on your end if any: upgrade to v9

Hello,
Can you use the code balise to format your example please. It will be more readable.

Have you already tried to return a simple array of enums like the below example:

onFieldChanged: async ({ fields, request }) => {
        const fournisseurs = fields.find( => f.field === ‘recherche fournisseur (3 lettres minimum)’);
        fournisseurs.enums = ['Jean', 'Martin'];
        return fields;
      },

Does it work?

Thank you for your feedback, but it doesn’t work yet.

Do you have any errors?

No , I don’t have errors, You have an availability this afternoon to share my screen.

I don’t have errors , but it doesn’t work yet.

The frontend console AND your agent does not have errors?
Can you share your code with a simple example like I did?

change: {
onFieldChanged: async ({ fields, request, changedField }) => {
const fournisseurs = fields.find(f => f.field === ‘recherche fournisseur (3 lettres minimum)’);
//if (fields.find(f => f.field === ‘recherche fournisseur (3 lettres minimum)’).value.length > 2) {
if (fournisseurs.value.length > 2) {
return axios.get(${API_URL}/forest_admin/sage_providers, {
headers: {
‘Authorization’: Bearer ${process.env.ACCESS_TOKEN},
‘X-CURRENT-USER-EMAIL’: process.env.SERVICE_EMAIL
},
params: {
place_id: ‘’,
//provider_name: fields.find(f => f.field === ‘recherche fournisseur (3 lettres minimum)’).value,
provider_name: fournisseurs.value,
siret: ‘’,
matricule: ‘’

          }
        }).then(res => {
          if (res.data && res.data.length > 0) {
            //fields.find(f => f.field === 'fournisseur').enums = res.data.map(provider => `${provider.matricule} - ${provider.raison_sociale} - ${provider.site_ville}`)
          }
          return fields;
        });
      }
      return fields;
    }

my console does not have errors

Can you add a console.log inside the onFieldChanged to check if the code is executed please?