Skip to main content

Documentation du Widget Select

Aperçu​

Le widget Select est un composant de liste déroulante qui permet aux utilisateurs de choisir une ou plusieurs options parmi une liste prédéfinie. Il prend en charge diverses sources de données et offre de nombreuses options de personnalisation pour différents cas d'usage.

Select Widget

Configuration de Base​

Paramètres Globaux​

Nom​

  • Champ: Name
  • Description: Nom d'affichage du widget
  • Type: Saisie de texte
  • Requis: Oui

Variable/Modèle​

  • Champ: Variable/Model
  • Description: Le nom de la variable qui stockera la ou les valeurs sĂ©lectionnĂ©es
  • Type: Saisie de texte
  • Requis: Oui
  • Note: Il s'agit de la variable de liaison de donnĂ©es pour le widget

Valeur par Défaut​

  • Champ: Default Value
  • Description: Valeur prĂ©sĂ©lectionnĂ©e lors du chargement du widget
  • Type: Saisie de texte
  • Prend en charge: Expressions dynamiques utilisant des variables

Options de Sélection​

Sélection Multiple​

  • Champ: Multi
  • Description: Activer la sĂ©lection de plusieurs options
  • Type: Interrupteur Ă  bascule
  • DĂ©faut: false
  • Effet: Lorsqu'il est activĂ©, les utilisateurs peuvent sĂ©lectionner plusieurs Ă©lĂ©ments et le rĂ©sultat sera stockĂ© sous forme de tableau

Effaçable​

  • Champ: Clearable
  • Description: Permettre aux utilisateurs d'effacer la ou les valeurs sĂ©lectionnĂ©es
  • Type: Interrupteur Ă  bascule
  • DĂ©faut: false
  • Effet: Ajoute un bouton d'effacement pour supprimer les sĂ©lections

Filtrable​

  • Champ: Filterable
  • Description: Activer la fonctionnalitĂ© de recherche/filtrage dans la liste dĂ©roulante
  • Type: Interrupteur Ă  bascule
  • DĂ©faut: false
  • Effet: Ajoute une saisie de recherche pour filtrer les options disponibles
Select Configuration

Configuration de la Source de Données​

Le widget Select prend en charge plusieurs types de sources de données :

Données Statiques​

  • Type de Source: Static
  • Configuration: Custom List
  • Description: Utiliser des donnĂ©es statiques prĂ©dĂ©finies Ă  partir de listes personnalisĂ©es
  • Configuration:
    1. Sélectionner "Static" comme option distante
    2. Choisir ou créer une liste personnalisée
    3. Les options seront chargées à partir de la liste sélectionnée
Select Static Data

Données de Collection​

  • Type de Source: Collection
  • Configuration: Database Collection
  • Description: Charger les options Ă  partir d'une collection de base de donnĂ©es
  • Configuration:
    1. Sélectionner "Collection" comme option distante
    2. Choisir la collection cible
    3. Configurer les mappings des champs de libellé et de valeur
    4. Définir des filtres de requête optionnels, le tri et les limites
Select Collection Data

Données de Rapport​

  • Type de Source: Report

  • Configuration: Report Query

  • Description: Charger les options Ă  partir des rĂ©sultats de rapport

  • Configuration:

    1. Sélectionner "Report" comme option distante
    2. Choisir le rapport cible
    3. Configurer les mappings des champs de libellé et de valeur
    4. Définir des filtres de requête optionnels, le tri et les limites
Select Report Data

Base de Données Externe (SQL)​

  • Type de Source: SQL

  • Configuration: External Database Connection

  • Description: Charger les options Ă  partir de requĂŞtes de bases de donnĂ©es externes

  • Configuration:

    1. Sélectionner "SQL" comme option distante
    2. Choisir la connexion à la base de données
    3. Configurer la requĂŞte SQL
    4. Définir les mappings des champs de libellé et de valeur
Select [EDS](/docs/fr/ressources/global/eds)

Mapping des Champs​

Pour les sources de données dynamiques (Collection, Rapport, SQL), configurez les mappings de champs :

Champ de Libellé​

  • Objectif: DĂ©finit le texte affichĂ© aux utilisateurs
  • Utilisation Statique: firstName
  • Utilisation Dynamique: $.firstName + ' - ' + $.lastName
  • Prend en charge: Expressions utilisant le prĂ©fixe $ pour les rĂ©fĂ©rences de champs

Champ de Valeur​

  • Objectif: DĂ©finit la valeur stockĂ©e lorsqu'une option est sĂ©lectionnĂ©e
  • Utilisation Statique: id
  • Utilisation Dynamique: $.id + '-' + $.type
  • Prend en charge: Expressions utilisant le prĂ©fixe $ pour les rĂ©fĂ©rences de champs
Select Field Mapping

Configuration des Requêtes​

Requête de Base​

  • Objectif: Filtrer et personnaliser la rĂ©cupĂ©ration des donnĂ©es
  • Langage: JavaScript avec support des variables
  • Variables: Utilisez {{variableName}} pour les variables d'interface
  • Exemple: {status: "active", category: "{{selectedCategory}}"}

Agrégation​

  • Objectif: Utiliser des pipelines d'agrĂ©gation pour un traitement de donnĂ©es complexe
  • DisponibilitĂ©: Sources Collection et Rapport
  • Bascule: Interrupteur "Is Aggregation"
  • Exemple:
Select Query

Tri​

  • Trier Par: Nom du champ par lequel trier
  • Direction:
    • 1 pour ascendant
    • -1 pour descendant
  • Tri par Objet: Tri avancĂ© utilisant des objets de tri

Limite​

  • Objectif: Restreindre le nombre d'options chargĂ©es
  • Type: Saisie numĂ©rique
  • DĂ©faut: Aucune limite
  • Cas d'usage: Optimisation des performances pour de grands ensembles de donnĂ©es

Règles de Validation​

Validation Obligatoire​

  • Configuration: Par Ă©cran
  • Options:
    • Bascule boolĂ©enne pour requis/non requis simple
    • Conditions avancĂ©es utilisant des expressions JavaScript
  • Message: Message de validation personnalisĂ©

Règles Personnalisées​

Ajoutez des règles de validation supplémentaires :

  • Longueur Min: Exigence de sĂ©lection minimale
  • Longueur Max: Limite de sĂ©lection maximale
  • Modèle: Validation par expression rĂ©gulière
  • PersonnalisĂ©e: Fonctions de validation JavaScript
Select Validation Rules

Configuration Basée sur l'Écran​

Configurez le comportement du widget par écran :

Disponibilité​

  • Objectif: ContrĂ´ler si le widget existe sur des Ă©crans spĂ©cifiques
  • Options: BoolĂ©en ou expression conditionnelle

Visibilité​

  • Objectif: ContrĂ´ler si le widget est visible sur des Ă©crans spĂ©cifiques
  • Options: BoolĂ©en ou expression conditionnelle
  • AvancĂ©: Conditions JavaScript utilisant {{variables}}

Statut Requis​

  • Objectif: ContrĂ´ler si le widget est requis sur des Ă©crans spĂ©cifiques
  • Options: BoolĂ©en ou expression conditionnelle

État Désactivé​

  • Objectif: ContrĂ´ler si le widget est dĂ©sactivĂ© sur des Ă©crans spĂ©cifiques
  • Options: BoolĂ©en ou expression conditionnelle
Select Validation Screen

Style et Mise en Page​

Texte de l'Espace Réservé​

  • Champ: Placeholder
  • Objectif: Texte d'aide affichĂ© lorsqu'aucune option n'est sĂ©lectionnĂ©e
  • Exemple: "Veuillez sĂ©lectionner une option"

Largeur​

  • Champ: Width
  • Objectif: ContrĂ´ler la largeur du widget
  • Format: Valeurs de largeur CSS (px, %, em, etc.)
  • Exemple: "300px", "100%"

Classes CSS​

  • Champ: Class
  • Objectif: Ajouter un style CSS personnalisĂ©
  • Types:
    • Classes Statiques: Noms de classes sĂ©parĂ©s par des espaces
    • Classes Dynamiques: Classes conditionnelles basĂ©es sur l'Ă©tat des donnĂ©es
Select Styling

Gestion des Événements​

Événement On Click​

  • Objectif: ExĂ©cuter des actions personnalisĂ©es lorsque la sĂ©lection change
  • Langage: JavaScript
  • Variables Disponibles:
    • SF_input.value: Valeur sĂ©lectionnĂ©e
    • SF_input.SF_data: Objet sĂ©lectionnĂ© complet
    • SF_input.SF_currentIndex: Index de la boucle (si dans une boucle)

Intégration des Actions​

  • Interface V2: Utiliser le gĂ©nĂ©rateur d'actions visuel
  • Ancienne Version: Appels directs de fonctions JavaScript
  • Paramètres: Accès aux donnĂ©es de sĂ©lection et au contexte
Select Event

Travailler avec les Actions et SF_input​

Attacher des Actions à l'Événement onChange​

L'événement onChange (ou onClick) du widget select vous permet d'exécuter du JavaScript personnalisé chaque fois que l'utilisateur modifie sa sélection. Ceci est essentiel pour :

  • Remplir automatiquement les champs de formulaire associĂ©s avec les donnĂ©es de l'option sĂ©lectionnĂ©e
  • DĂ©clencher des listes dĂ©roulantes en cascade ou des mises Ă  jour de champs dĂ©pendants
  • RĂ©cupĂ©rer des informations supplĂ©mentaires du backoffice en fonction de la sĂ©lection
  • ImplĂ©menter un comportement de formulaire dynamique et des calculs

Comment Attacher une Action​

  1. Naviguez vers la section Global dans la configuration du widget select
  2. Localisez le champ d'événement On Click ou On Change
  3. Écrivez du code JavaScript directement dans le champ d'action
  4. Le code s'exécute automatiquement lorsque l'utilisateur effectue une sélection

Accéder aux Valeurs avec SF_input​

Le widget select fournit un accès complet aux données via l'objet SF_input. L'avantage clé est que vous obtenez à la fois la valeur sélectionnée ET l'objet de données complet de votre source de données.

Structure de SF_input pour le Widget Select​

Pour le mode de sélection simple :

{
value: /* La valeur sélectionnée basée sur votre "Value Property" */,
SF_data: /* Objet JSON complet de l'élément sélectionné */,
SF_currentIndex: /* Index de la boucle si le widget est dans une boucle */
}

Pour le mode de sélection multiple (lorsque "Multi" est activé) :

{
value: [/* Tableau des valeurs sélectionnées */],
SF_data: [/* Tableau des objets sélectionnés complets */],
SF_currentIndex: /* Index de la boucle si le widget est dans une boucle */
}

Comprendre les Propriétés de SF_input​

PropriétéDescriptionExemple Sélection SimpleExemple Sélection Multiple
valueValeur(s) sélectionnée(s) de votre configuration "Value Property"'CUST001'['CUST001', 'CUST002']
SF_dataObjet(s) JSON complet(s) pour le(s) élément(s) sélectionné(s){id: 'CUST001', name: 'John', ...}[{id: 'CUST001', ...}, {...}]
SF_currentIndexIndex d'itération actuel si le widget est dans une boucle0, 1, 2, ...0, 1, 2, ...

Exemples Pratiques​

Exemple 1 : Accéder à la Valeur Sélectionnée​

// Obtenir la valeur sélectionnée (sélection simple)
console.log(SF_input.value);
// Sortie: 'CUST001'

// Pour la sélection multiple
console.log(SF_input.value);
// Sortie: ['CUST001', 'CUST002', 'CUST003']

// Stocker la valeur sélectionnée dans un autre champ
model.selected_customer_id = SF_input.value;

Exemple 2 : Accéder à l'Objet JSON Complet (SF_data)​

C'est la fonctionnalité la plus puissante - accéder à l'objet de données complet, pas seulement à la valeur :

// Accéder à l'objet de données complet pour l'élément sélectionné
console.log(SF_input.SF_data);
// Sortie: {
// id: 'CUST001',
// name: 'John Doe',
// email: 'john@example.com',
// phone: '+1234567890',
// address: {
// street: '123 Main St',
// city: 'New York',
// country: 'USA'
// },
// credit_limit: 5000,
// status: 'active'
// }

// Accéder à n'importe quelle propriété de l'objet sélectionné
model.customer_email = SF_input.SF_data.email;
model.customer_phone = SF_input.SF_data.phone;
model.customer_status = SF_input.SF_data.status;

// Accéder aux propriétés imbriquées
model.customer_city = SF_input.SF_data.address?.city;
model.customer_country = SF_input.SF_data.address?.country;

Bonnes Pratiques​

  1. Toujours Vérifier que SF_data Existe: Avant d'accéder aux propriétés de SF_data, vérifiez qu'il n'est pas null

    if (SF_input.SF_data) {
    // Votre code ici
    }
  2. Utiliser le Chaînage Optionnel: Pour les propriétés imbriquées, utilisez le chaînage optionnel pour éviter les erreurs

    const city = SF_input.SF_data?.address?.city || 'Inconnu';
  3. Gérer la Sélection Simple et Multiple: Si votre widget peut basculer entre les modes, gérez les deux cas

    const selectedData = Array.isArray(SF_input.SF_data) ? SF_input.SF_data : [SF_input.SF_data];
  4. Exploiter SF_data pour des Données Riches: Utilisez toujours SF_data lorsque vous avez besoin de plus que la simple valeur - il contient l'enregistrement complet

  5. Effacer les Données Précédentes: Lorsque la sélection change, effacez les champs dépendants pour éviter les données obsolètes

    model.related_field_1 = null;
    model.related_field_2 = null;
    // Puis remplir avec les nouvelles données
  6. Gestion des Erreurs: Enveloppez la récupération de données dans des blocs try-catch

    try {
    const data = await SF_executeAction('fetchData', { id: SF_input.value });
    // Traiter les données
    } catch (error) {
    console.error('Erreur lors de la récupération des données:', error);
    model.error_message = 'Échec du chargement des données';
    }
  7. Performance: Pour les opérations coûteuses, envisagez le debouncing ou l'affichage d'indicateurs de chargement

Bonnes Pratiques​

  1. Performance: Utilisez des limites pour les grands ensembles de données
  2. Expérience Utilisateur: Activez le filtrage pour les listes de plus de 10 éléments
  3. Validation: Fournissez des messages d'erreur clairs
  4. Accessibilité: Utilisez des libellés et des espaces réservés descriptifs
  5. Intégrité des Données: Validez les valeurs sélectionnées par rapport aux options disponibles
  6. Conception Responsive: Définissez des largeurs appropriées pour différentes tailles d'écran

Dépannage​

Problèmes Courants​

  1. Aucune Option Affichée

    • VĂ©rifiez la configuration de la source de donnĂ©es
    • VĂ©rifiez la syntaxe de la requĂŞte et les variables
    • Assurez-vous que les mappings de champs sont corrects
  2. Problèmes de Performance

    • Ajoutez des limites appropriĂ©es
    • Utilisez le filtrage au lieu de charger toutes les donnĂ©es
    • Envisagez la pagination pour les très grands ensembles de donnĂ©es
  3. Erreurs de Validation

    • VĂ©rifiez la configuration du champ requis
    • VĂ©rifiez les règles de validation personnalisĂ©es
    • Assurez-vous que les paramètres basĂ©s sur l'Ă©cran sont corrects
  4. La Sélection ne se Sauvegarde Pas

    • VĂ©rifiez la configuration de la variable/modèle
    • VĂ©rifiez la compatibilitĂ© des types de donnĂ©es
    • Assurez-vous que la gestion de la soumission du formulaire est correcte