Logiciels d’entreprise · Nouvelle ressource

Système de design Infor.

Composez un formulaire de maintenance d’entreprise avec les véritables états de saisie IDS, des alias de thème et un identifiant de ressource exact. Examinez les tokens du thème public actuel, un package Web Components épinglé et un flux de brouillon local avec validation et réinitialisation.

Guide OpenDesign7 chapitres53 entrées de référenceGuide de l’application d’origine
01

Système de design Infor Aperçu de l’interface

Valider un résumé et un contact, préparer une demande locale et l’effacer sans rien envoyer.

Brouillon de demande de maintenanceOuvrir l’exemple complet
Interprétation indépendante de HTML/CSS à partir de valeurs de jetons IDS vérifiées pour le mode de base/clair et d’une police de secours système. Il ne s’agit pas de l’environnement d’exécution IDS natif. · Référence de mise en œuvre
02

Système de design Infor Référence de conception

La feuille de styles du thème issue du tableau public des jetons Infor, consultée lors de cette analyse de réparation, ainsi que ids-enterprise-wc 1.17.1 publié et les exemples officiels de champs de saisie et de boutons. L’URL actuelle du tableau des jetons renvoie à un instantané actualisé en direct, et non à une garantie liée à une version du package.

Rôles du thème

Source
Nom / règleValeur / configurationUtilisation
--ids-color-action-defaultvar(--ids-color-blue-60)Alias sémantique du thème public de base/clair.
--ids-color-action-strongervar(--ids-color-blue-70)Alias sémantique du thème public de base/clair.
--ids-color-background-defaultvar(--ids-color-white-100)Alias sémantique du thème public de base/clair.
--ids-color-foreground-default-defaultvar(--ids-color-neutral-100)Alias sémantique du thème public de base/clair.
--ids-color-foreground-default-secondaryvar(--ids-color-neutral-80)Alias sémantique du thème public de base/clair.
--ids-color-border-defaultvar(--ids-color-neutral-60)Alias sémantique du thème public de base/clair.
--ids-color-border-weakvar(--ids-color-neutral-40)Alias sémantique du thème public de base/clair.

Valeurs primitives résolues

Source
Nom / règleValeur / configurationUtilisation
--ids-color-blue-60#0072ed Primitive du thème public ; ne pas supposer que la valeur est identique en mode sombre ou contraste.
--ids-color-blue-70#0066d4 Primitive du thème public ; ne pas supposer que la valeur est identique en mode sombre ou contraste.
--ids-color-neutral-100#161618 Primitive du thème public ; ne pas supposer que la valeur est identique en mode sombre ou contraste.
--ids-color-neutral-80#3b3b3f Primitive du thème public ; ne pas supposer que la valeur est identique en mode sombre ou contraste.
--ids-color-neutral-60#6f6f76 Primitive du thème public ; ne pas supposer que la valeur est identique en mode sombre ou contraste.
--ids-color-neutral-10#f5f5f5 Primitive du thème public ; ne pas supposer que la valeur est identique en mode sombre ou contraste.
--ids-color-red-60#da1217 Primitive du thème public ; ne pas supposer que la valeur est identique en mode sombre ou contraste.

Alias d’espacement

Source
Nom / règleValeur / configurationUtilisation
--ids-space-2xsvar(--ids-space-04)Utiliser l’alias pour l’espacement personnalisé de l’application.
--ids-space-xsvar(--ids-space-08)Utiliser l’alias pour l’espacement personnalisé de l’application.
--ids-space-smvar(--ids-space-16)Utiliser l’alias pour l’espacement personnalisé de l’application.
--ids-space-mdvar(--ids-space-24)Utiliser l’alias pour l’espacement personnalisé de l’application.
--ids-space-lgvar(--ids-space-32)Utiliser l’alias pour l’espacement personnalisé de l’application.
--ids-space-xlvar(--ids-space-40)Utiliser l’alias pour l’espacement personnalisé de l’application.
--ids-space-2xlvar(--ids-space-48)Utiliser l’alias pour l’espacement personnalisé de l’application.

Valeurs d’espacement

Source
Nom / règleValeur / configurationUtilisation
--ids-space-044pxValeur concrète de l’échelle, issue de la feuille de styles des jetons.
--ids-space-088pxValeur concrète de l’échelle, issue de la feuille de styles des jetons.
--ids-space-1616pxValeur concrète de l’échelle, issue de la feuille de styles des jetons.
--ids-space-2424pxValeur concrète de l’échelle, issue de la feuille de styles des jetons.
--ids-space-3232pxValeur concrète de l’échelle, issue de la feuille de styles des jetons.
--ids-space-4040pxValeur concrète de l’échelle, issue de la feuille de styles des jetons.
--ids-space-4848pxValeur concrète de l’échelle, issue de la feuille de styles des jetons.

Typographie

Source
Nom / règleValeur / configurationUtilisation
--ids-font-family-sanssource sans proRéférence typographique ; les fichiers de polices doivent être chargés séparément.
--ids-font-family-monosource code proRéférence typographique ; les fichiers de polices doivent être chargés séparément.
--ids-font-size-defaultvar(--ids-font-size-sm)Référence typographique ; les fichiers de polices doivent être chargés séparément.
--ids-font-size-smvar(--ids-font-size-40)Référence typographique ; les fichiers de polices doivent être chargés séparément.
--ids-font-size-3014pxRéférence typographique ; les fichiers de polices doivent être chargés séparément.
--ids-font-size-4016pxRéférence typographique ; les fichiers de polices doivent être chargés séparément.
--ids-font-size-5020pxRéférence typographique ; les fichiers de polices doivent être chargés séparément.
--ids-font-size-6024pxRéférence typographique ; les fichiers de polices doivent être chargés séparément.

Alias de rayon

Source
Nom / règleValeur / configurationUtilisation
--ids-border-radius-xsvar(--ids-border-radius-04)L’alias renvoie à une primitive ; ne pas supposer que tous les contrôles utilisent le rayon le plus grand.
--ids-border-radius-smvar(--ids-border-radius-08)L’alias renvoie à une primitive ; ne pas supposer que tous les contrôles utilisent le rayon le plus grand.
--ids-border-radius-mdvar(--ids-border-radius-16)L’alias renvoie à une primitive ; ne pas supposer que tous les contrôles utilisent le rayon le plus grand.
--ids-border-radius-lgvar(--ids-border-radius-24)L’alias renvoie à une primitive ; ne pas supposer que tous les contrôles utilisent le rayon le plus grand.
--ids-border-radius-circlevar(--ids-border-radius-99)L’alias renvoie à une primitive ; ne pas supposer que tous les contrôles utilisent le rayon le plus grand.

Anatomie des champs de saisie et des boutons

Source
Nom / règleValeur / configurationUtilisation
labelVisible input labelÀ utiliser pour identifier le champ, et non comme simple texte indicatif.
validaterequired / email requiredRègles de validation documentées.
readonlytrueConserver un identifiant d’équipement lisible et non modifiable.
disabledtrueÉtat de champ distinct pour signaler l’indisponibilité.
clearabletrueCommande d’effacement au niveau du champ.
dirty-trackertrueSuivi facultatif des valeurs modifiées.
text-alignstart | center | endAlignement logique du texte ou des valeurs numériques.

Hiérarchie des actions

Source
Nom / règleValeur / configurationUtilisation
appearanceprimaryPréparer le brouillon local.
appearancesecondaryEffacer le brouillon comme action secondaire.
appearancetertiaryOption de moindre importance.
appearanceprimary-destructive / tertiary-destructiveÀ réserver aux véritables actions destructrices, et non à une simple annulation.
disabledBoolean attributeÉtat d’indisponibilité du composant natif.
03

Système de design Infor Guide complet

Un guide pratique pour choisir, appliquer et évaluer ce système dans une interface réelle.

DESIGN-infor.md

Des conseils complets, un point de départ pour la mise en œuvre et des liens vers les sources.

Télécharger le guide

Système de design Infor Un formulaire d’entreprise avec une identité de dossier stable

Séparer l’identifiant de l’équipement de la demande modifiable

Infor présente SoHo comme son langage de conception et positionne IDS autour des rôles en entreprise et de la productivité. Cet exemple applique cette approche à une demande de maintenance : l’identifiant de l’équipement reste fixe, tandis que le résumé de l’intervention, le contact et le degré d’urgence constituent les informations modifiables.

Extrait de ce guide OpenDesign

L’identifiant 02006 est volontairement une chaîne de caractères. Le convertir en nombre supprimerait le zéro initial et modifierait son identité. L’exemple IDS natif utilise un champ de saisie en lecture seule afin que le contexte du dossier reste visible sans que le champ puisse sembler manquant ou indisponible.

Consultez la spécification associée

Système de design Infor Les alias de thème sont résolus par l’intermédiaire de primitives

Utiliser chaque alias selon sa fonction

Le thème public capturé définit action-default à partir de blue-60, foreground par défaut à partir de neutral-100 et foreground secondaire à partir de neutral-80. Cette structure à deux niveaux permet à un formulaire personnalisé de rester cohérent avec son thème sans dupliquer des couleurs littérales dans toute l’application.

La page publique des jetons propose les modes de base, sombre et contraste. Les valeurs de ce guide proviennent d’un instantané de la feuille de styles du mode de base/clair. L’aperçu ne prétend pas qu’une valeur hexadécimale de bleu soit universelle dans les trois modes ; un composant de production doit utiliser son alias sémantique et laisser le thème sélectionné le résoudre.

Consultez la spécification associée

Système de design Infor Une échelle concrète, sans système de densité inventé

L’espacement, la typographie et les rayons ont des ensembles d’alias distincts

Les alias d’espacement comprennent xs, associé à la primitive de 8 pixels, sm à celle de 16 pixels, md à celle de 24 pixels et lg à celle de 32 pixels. Le composant natif CSS fourni utilise md pour la marge intérieure principale et sm entre les champs. L’intention est ainsi visible dans le code source, tandis que les valeurs concrètes figurent dans le tableau de référence.

La police par défaut est Source Sans Pro, et Source Code Pro est utilisée pour les caractères à chasse fixe. L’alias font-size-default renvoie à l’entrée de l’échelle de 16 pixels. Charger la bibliothèque ne dispense pas de fournir les fichiers de polices décrits dans le fichier README du package. L’aperçu hors ligne utilise plutôt une police de secours standard.

Les noms des rayons sont distincts de ceux des espacements : radius-sm correspond à 8 pixels, tandis que space-sm correspond à 16 pixels. Réutiliser une valeur mémorisée simplement parce que les deux noms se terminent par sm donne un résultat incorrect.

Consultez la spécification associée

Système de design Infor Des états de saisie aux significations distinctes

La lecture seule, la désactivation et les modifications ne sont pas interchangeables

Les exemples officiels exposent les options readonly, disabled, dirty-tracker, clearable, uppercase, lowercase ainsi que l’alignement logique du texte. L’exemple de demande n’a besoin que de readonly pour l’identité de l’équipement et de clearable pour le résumé de l’intervention. Il n’active pas la mise en majuscules automatique pour une adresse e-mail et ne transforme pas silencieusement une description en texte libre.

L’exemple de champ natif déclare validate="email required" pour le champ du contact. La déclaration de type publiée fournit value, focus() et checkValidation(). Comme checkValidation renvoie void, le code ne le confond pas avec un résultat booléen de validité du formulaire ; il vérifie séparément les conditions requises pour préparer le dossier local.

  • La lecture seule maintient l’identifiant fixe de l’équipement visible et lisible.
  • Désactivé signifie que le champ ne peut pas être utilisé pour le moment.
  • Le suivi des modifications indique qu’une valeur diffère de sa valeur initiale ; ce n’est ni un état de réussite ni un état de validation.

Consultez la spécification associée

Système de design Infor Le suivi des modifications et la validation répondent à des contrats différents

Suivre les modifications sans les considérer comme des données valides

La galerie officielle de champs IDS montre dirty-tracker="true" sur un champ doté d’une valeur initiale. Le suivi des modifications concerne les changements apportés à un champ ; il est distinct de l’attribut validate, dont les règles email et required définissent les saisies acceptables. Un champ de contact modifié peut toujours contenir une adresse invalide.

La déclaration Input publiée expose checkValidation(): void. Appelez cette méthode pour déclencher le comportement de validation du composant, et non comme condition booléenne autorisant une action sur un ordre de travail. L’exemple natif vérifie également les valeurs obligatoires de l’application avant de produire un brouillon. Son résumé effaçable et son champ d’équipement en lecture seule illustrent deux autres fonctionnalités indépendantes des champs de saisie.

Le suivi des modifications est une fonctionnalité documentée, mais elle n’est pas activée dans cet aperçu. La démo efface le résumé préparé après une modification et replace le focus sur le champ du résumé de l’intervention ; elle ne signale pas qu’une demande de maintenance a été enregistrée.

Consultez la spécification associée

Système de design Infor Utilisez un espace de travail en deux parties sans masquer le formulaire

Le formulaire d’abord, le contexte ensuite

L’aperçu associe un formulaire à une fiche de contexte compacte sur l’équipement et à un schéma original simple de la machine. L’ordre de lecture principal reste le même : titre, champs, actions, résultat. Sur les écrans étroits, le contexte passe sous le formulaire au lieu de comprimer les champs dans des colonnes illisibles.

Les exemples de la bibliothèque utilisent ids-layout-grid avec des attributs de colonnes propres à chaque point de rupture. Cet exemple conserve volontairement une mise en page adaptative plus simple ; sa largeur maximale et son point de rupture sont définis par l’application. Les espacements basés sur des jetons et les libellés natifs des contrôles sont les éléments présentés ici.

Consultez la spécification associée

Système de design Infor Épinglez le package natif et initialisez-le avant de lire les valeurs

Le package publié est le point d’entrée fiable

Le package vérifié indique la version 1.17.1, un point d’entrée ES module nommé enterprise-wc.js et le dépôt source actuel hébergé par Infor. L’ancien emplacement GitHub ne constitue donc pas une instruction d’installation fiable. Le code importe le package publié, insère la composition et attend la définition des éléments personnalisés avant de connecter les comportements.

Les exemples officiels en ligne contiennent des URL de segments propres à leur compilation. Copier le nom d’un segment au hasard dans une application la lierait à un artefact de déploiement ; le point d’entrée du package permet au bundler de résoudre ces dépendances. Ce guide vérifie les déclarations de méthodes publiques et distingue clairement l’exemple de navigateur d’une compilation native.

  1. Installez le package épinglé dans le modèle Vite sans framework et incluez la police indiquée, conformément à la politique de gestion des ressources de votre application.
  2. Utilisez le point d’entrée fourni et CSS, attendez les éléments personnalisés, puis associez les actions principale et de réinitialisation.
  3. Testez un résumé vide, une adresse e-mail mal formée, un brouillon local valide et une modification ultérieure ; vérifiez que l’instantané affiché n’est jamais obsolète.

Consultez la spécification associée

Système de design Infor Exemples de composants du système de design

Exemple interactif autonome complet

Enregistrez le document complet sous le nom index.html et ouvrez-le dans un navigateur. Interprétation indépendante de HTML/CSS, fondée sur des valeurs de jetons vérifiées d’IDS core/light et sur une police système de secours. Il ne s’agit pas de l’environnement d’exécution natif d’IDS.

html
<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Maintenance request — IDS interpretation</title><style>*{box-sizing:border-box}body{margin:0;color:#161618;background:#f5f5f5;font:16px/1.45 Arial,sans-serif}main{max-width:1120px;padding:32px;margin:auto}header{display:flex;justify-content:space-between;border-bottom:1px solid #bbbbbf;padding-bottom:16px;gap:16px}header b{font-size:14px}header span{font-size:13px;color:#3b3b3f}h1{font-size:32px;line-height:1.2;font-weight:500;margin:24px 0 8px}h2{font-size:20px;font-weight:500;margin:0 0 16px}.intro{color:#3b3b3f;margin:0 0 24px}.grid{display:grid;grid-template-columns:1.4fr 1fr;gap:24px}.form,.context{background:white;border:1px solid #e0e0e1;border-radius:8px;padding:24px}label,.label{display:block;font-size:14px;margin-bottom:8px}input{width:100%;font:inherit;border:1px solid #6f6f76;border-radius:4px;padding:10px 12px;color:#161618}input[readonly]{background:#f5f5f5}input:focus,button:focus-visible{outline:3px solid #8abff7;outline-offset:2px}.field{margin-bottom:16px}.hint{font-size:12px;color:#3b3b3f;margin:4px 0 0}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:24px}button{font:inherit;border-radius:4px;padding:10px 16px;cursor:pointer;border:1px solid #6f6f76;background:white;color:#161618}.primary{background:#0072ed;color:white;border-color:#0072ed}.primary:hover{background:#0066d4}fieldset{padding:0;border:0;margin:24px 0 0}legend{font-size:14px;margin-bottom:8px}.radios{display:flex;gap:16px;flex-wrap:wrap}.radios label{display:flex;gap:8px;align-items:center;margin:0}.radios input{width:auto;accent-color:#0072ed}.equipment{height:190px;background:#e6f1fd;display:grid;place-content:center;margin-bottom:24px;border-radius:4px}.machine{border:3px solid #0054b1;width:165px;height:100px;position:relative;background:white}.machine:before{content:'';position:absolute;left:14px;top:16px;width:55px;height:55px;border:8px double #0054b1;border-radius:50%}.machine:after{content:'02006';position:absolute;right:10px;top:27px;color:#0054b1;font:16px monospace}.context dl{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0;font-size:14px}.context dt{color:#3b3b3f}.context dd{margin:0;text-align:right}.notice{font-size:13px;background:#f5f5f5;padding:16px;margin-top:24px}.error{color:#a30d11;font-size:14px;min-height:20px}.result{background:#e6f1fd;padding:16px;border-left:3px solid #0072ed;margin-top:20px;white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px}.result[hidden]{display:none}.foot{font-size:12px;color:#3b3b3f;margin-top:24px}@media(max-width:650px){main{padding:20px}.grid{grid-template-columns:1fr}.form,.context{padding:20px}header{flex-direction:column;gap:4px}h1{font-size:28px}.equipment{height:140px}}</style><main><header><b>ASSET SERVICE / LOCAL NOTEBOOK</b><span>Independent Infor IDS interpretation</span></header><h1>Prepare the work. Keep the context.</h1><p class="intro">Build a local maintenance draft for a fixed equipment record.</p><div class="grid"><form id="form" class="form" novalidate><div class="field"><label for="asset">Asset identifier</label><input id="asset" value="02006" readonly><p class="hint">Read-only record identity; leading zero preserved.</p></div><div class="field"><label for="summary">Work summary</label><input id="summary" required placeholder="For example, inspect the drive belt" aria-describedby="error"></div><div class="field"><label for="contact">Contact email</label><input id="contact" type="email" required placeholder="[email protected]" aria-describedby="error"></div><fieldset><legend>Planning urgency</legend><div class="radios"><label><input type="radio" name="urgency" value="Routine" checked>Routine</label><label><input type="radio" name="urgency" value="Soon">Soon</label></div></fieldset><div class="actions"><button class="primary" type="submit">Prepare local draft</button><button id="clear" type="button">Clear draft</button></div><p id="error" class="error" role="alert"></p><div id="result" class="result" role="status" hidden></div></form><aside class="context"><div class="equipment" role="img" aria-label="Original schematic of fictional equipment 02006"><div class="machine"></div></div><h2>Equipment context</h2><dl><dt>Record</dt><dd>02006</dd><dt>Area</dt><dd>Sample workshop</dd><dt>Type</dt><dd>Drive assembly</dd><dt>Connection</dt><dd>Offline sample</dd></dl><p class="notice">Preparing a draft changes only this page. It does not create a work order or send a message.</p></aside></div><p class="foot">Core/light IDS token values with native HTML controls and a system-font fallback. Original illustration and application layout; no native IDS runtime.</p></main><script>const form=document.querySelector('#form'),summary=document.querySelector('#summary'),contact=document.querySelector('#contact'),error=document.querySelector('#error'),result=document.querySelector('#result');function clearResult(){result.hidden=true;result.textContent='';error.textContent='';summary.removeAttribute('aria-invalid');contact.removeAttribute('aria-invalid')}form.addEventListener('input',clearResult);form.onsubmit=e=>{e.preventDefault();clearResult();if(!summary.value.trim()){error.textContent='Enter a work summary.';summary.setAttribute('aria-invalid','true');summary.focus();return}if(!contact.value.trim()||!contact.validity.valid){error.textContent='Enter a valid contact email.';contact.setAttribute('aria-invalid','true');contact.focus();return}result.hidden=false;result.textContent='LOCAL DRAFT / NOT SENT\n\nAsset: 02006\nSummary: '+summary.value.trim()+'\nContact: '+contact.value.trim()+'\nUrgency: '+form.elements.urgency.value};document.querySelector('#clear').onclick=()=>{form.reset();clearResult();summary.focus()};</script></html>

Référence du code

  • La ressource 02006 reste une chaîne de caractères. L’exemple IDS natif, et non ce formulaire HTML, met en œuvre l’enregistrement des éléments personnalisés et checkValidation() ; aucun des deux ne crée d’ordre de maintenance.

Identifiant en lecture seule, résumé obligatoire et validation du contact

La validation des champs IDS est déclenchée explicitement ; les vérifications de l’application empêchent la création d’un brouillon local vide. Le texte saisi par l’utilisateur est affiché avec textContent.

javascript
// Vite vanilla project: npm install [email protected]
// src/main.js. Add Source Sans Pro through your approved font-hosting setup.
import 'ids-enterprise-wc';
import './style.css';
document.querySelector('#app').innerHTML=`<ids-container><main>
<h1>Maintenance request</h1><p>Local draft only; no work order is sent.</p>
<ids-input id="asset" label="Asset identifier" value="02006" readonly="true"></ids-input>
<ids-input id="summary" label="Work summary" validate="required" clearable="true"></ids-input>
<ids-input id="contact" label="Contact email" validate="email required"></ids-input>
<ids-button id="prepare" appearance="primary"><span>Prepare local draft</span></ids-button>
<ids-button id="reset" appearance="secondary"><span>Clear draft</span></ids-button>
<p id="message" role="status"></p><pre id="draft"></pre>
</main></ids-container>`;
await Promise.all(['ids-input','ids-button','ids-container'].map(n=>customElements.whenDefined(n)));
const summary=document.querySelector('#summary'),contact=document.querySelector('#contact');
const message=document.querySelector('#message'),draft=document.querySelector('#draft');
document.querySelector('#prepare').addEventListener('click',()=>{
 summary.checkValidation();contact.checkValidation();
 const title=summary.value.trim(),email=contact.value.trim();
 if(!title){message.textContent='Enter a work summary.';summary.focus();return;}
 if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)){message.textContent='Enter a complete contact email.';contact.focus();return;}
 draft.textContent=JSON.stringify({asset:'02006',summary:title,contact:email},null,2);
 message.textContent='Draft prepared in this page only. No request sent.';
});
function clearResult(){draft.textContent='';message.textContent='';}
summary.addEventListener('input',clearResult);contact.addEventListener('input',clearResult);
document.querySelector('#reset').addEventListener('click',()=>{summary.value='';contact.value='';clearResult();summary.focus();});

/* src/style.css — application layout using the loaded IDS token roles */
main{max-width:44rem;margin:auto;padding:var(--ids-space-md);color:var(--ids-color-foreground-default-default)}
ids-input{display:block;margin-bottom:var(--ids-space-sm)}
ids-button{margin-inline-end:var(--ids-space-xs)}
pre{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--ids-color-accent-neutral-weakest);padding:var(--ids-space-sm)}

Référence du code

  • checkValidation() ne renvoie aucune valeur ; sa valeur de retour n’est pas considérée comme un booléen.
  • La ressource 02006 est du texte : le zéro initial est conservé.
  • La préparation de l’aperçu ne modifie que l’état local de la page.

L’apparence des actions est explicite

Les variantes principale et secondaire des composants donnent à la procédure une action principale claire.

html
<ids-button appearance="primary"><span>Prepare local draft</span></ids-button>
<ids-button appearance="secondary"><span>Clear draft</span></ids-button>

Référence du code

  • Un composant indisponible utilise disabled, et ne se contente pas d’un style estompé.
04

Système de design Infor Configuration de l’agent IA

Point de départ de l’implémentation

Code complet et feuille de style pour un modèle Vite sans framework avec #app. La version du package et les méthodes ont été vérifiées dans le package publié ; aucune compilation n’a été effectuée ici. Fournissez Source Sans Pro depuis une source de polices approuvée. L’aperçu intégré est une implémentation indépendante en HTML natif.

javascript / css
// Vite vanilla project: npm install [email protected]
// src/main.js. Add Source Sans Pro through your approved font-hosting setup.
import 'ids-enterprise-wc';
import './style.css';
document.querySelector('#app').innerHTML=`<ids-container><main>
<h1>Maintenance request</h1><p>Local draft only; no work order is sent.</p>
<ids-input id="asset" label="Asset identifier" value="02006" readonly="true"></ids-input>
<ids-input id="summary" label="Work summary" validate="required" clearable="true"></ids-input>
<ids-input id="contact" label="Contact email" validate="email required"></ids-input>
<ids-button id="prepare" appearance="primary"><span>Prepare local draft</span></ids-button>
<ids-button id="reset" appearance="secondary"><span>Clear draft</span></ids-button>
<p id="message" role="status"></p><pre id="draft"></pre>
</main></ids-container>`;
await Promise.all(['ids-input','ids-button','ids-container'].map(n=>customElements.whenDefined(n)));
const summary=document.querySelector('#summary'),contact=document.querySelector('#contact');
const message=document.querySelector('#message'),draft=document.querySelector('#draft');
document.querySelector('#prepare').addEventListener('click',()=>{
 summary.checkValidation();contact.checkValidation();
 const title=summary.value.trim(),email=contact.value.trim();
 if(!title){message.textContent='Enter a work summary.';summary.focus();return;}
 if(!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)){message.textContent='Enter a complete contact email.';contact.focus();return;}
 draft.textContent=JSON.stringify({asset:'02006',summary:title,contact:email},null,2);
 message.textContent='Draft prepared in this page only. No request sent.';
});
function clearResult(){draft.textContent='';message.textContent='';}
summary.addEventListener('input',clearResult);contact.addEventListener('input',clearResult);
document.querySelector('#reset').addEventListener('click',()=>{summary.value='';contact.value='';clearResult();summary.focus();});

/* src/style.css — application layout using the loaded IDS token roles */
main{max-width:44rem;margin:auto;padding:var(--ids-space-md);color:var(--ids-color-foreground-default-default)}
ids-input{display:block;margin-bottom:var(--ids-space-sm)}
ids-button{margin-inline-end:var(--ids-space-xs)}
pre{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--ids-color-accent-neutral-weakest);padding:var(--ids-space-sm)}

Un prompt pour votre projet

Prompt pour l’agent IA
Créez un brouillon de maintenance Infor IDS à l’aide des alias vérifiés du thème clair et de la structure documentée des champs et boutons. Conservez l’identifiant de ressource sous forme de chaîne en lecture seule. Validez les champs modifiables, effacez le résultat obsolète après toute modification et distinguez un brouillon local d’un ordre de travail soumis. Ne considérez pas que checkValidation() renvoie un booléen.
05

Système de design Infor Sources et périmètre

Guide indépendant sur OpenDesign. L’équipement et la procédure sont fictifs ; aucune donnée n’est soumise. Le code natif fait référence au package 1.17.1 vérifié, tandis que les valeurs des jetons sont identifiées séparément comme un instantané du thème core/light en ligne.