// Recadrage des surfaces modales héritées de la V5, en un seul endroit. // // Inventaire des sources chargées par `index.html` : quatre feuilles de la // référence figée partagent exactement la même forme, un cadre plein écran, un // voile cliquable et un panneau ancré en bas. Aucune n'a de composant commun à // remplacer : elles recopient chacune cette forme. On les enveloppe donc toutes // ici, par le même hôte de présentation officiel, plutôt que de corriger une // feuille dans un écran et une autre dans un autre. // // La référence n'est pas modifiée : on réassigne le symbole global après son // chargement, comme la coque le fait déjà pour `TabBar` et pour `Dashboard`. // Sous le seuil de bureau, l'hôte rend l'arbre de la feuille tel quel. // // Appeler la fonction de la feuille pour obtenir son arbre est le mécanisme déjà // employé par `document-import.jsx` : ses états appartiennent alors au composant // enveloppant, ce qui reste stable tant que l'appel est inconditionnel. function vascoFramedSurface(name, legacy, options) { const framed = function VascoFramedLegacySurface(props) { return ; }; // Le nom reste lisible dans l'arbre React et dans les traces d'erreur. Object.defineProperty(framed, 'name', { value: name, configurable: true }); return framed; } // File de validation des documents : elle porte un document entier, donc la // mesure large du contrat plutôt que celle d'un formulaire. const VascoLegacyCrValidation = CRValidationSheet; CRValidationSheet = vascoFramedSurface( 'VascoFramedCrValidation', VascoLegacyCrValidation, { width: 'wide', label: 'Documents à valider' }, ); window.CRValidationSheet = CRValidationSheet; const VascoLegacyCcam = CCAMBottomSheet; CCAMBottomSheet = vascoFramedSurface( 'VascoFramedCcam', VascoLegacyCcam, { width: 'wide', label: 'Recherche CCAM' }, ); window.CCAMBottomSheet = CCAMBottomSheet; const VascoLegacyRdvDetail = RdvDetailSheet; RdvDetailSheet = vascoFramedSurface( 'VascoFramedRdvDetail', VascoLegacyRdvDetail, { label: 'Rendez-vous' }, ); window.RdvDetailSheet = RdvDetailSheet; const VascoLegacyNewRdv = NewRdvSheet; NewRdvSheet = vascoFramedSurface( 'VascoFramedNewRdv', VascoLegacyNewRdv, { width: 'wide', label: 'Nouveau rendez-vous' }, ); window.NewRdvSheet = NewRdvSheet; // Coordonnées et dossier : la feuille d'édition et la confirmation d'appel ont // la même forme, à ceci près que leur racine est un fragment et que leur panneau // est en retrait des bords plutôt que collé. const VascoLegacyPatientEdit = EditPatientSheet; EditPatientSheet = vascoFramedSurface( 'VascoFramedPatientEdit', VascoLegacyPatientEdit, { label: 'Modifier le dossier' }, ); window.EditPatientSheet = EditPatientSheet; const VascoLegacyCall = CallHost; CallHost = vascoFramedSurface( 'VascoFramedCall', VascoLegacyCall, { label: 'Appeler' }, ); window.CallHost = CallHost; // L'assistant de création est un parcours en trois étapes, pas une feuille : // comme la dictée, il prend toute la fenêtre au bureau. const VascoLegacyNewPatient = NewPatientWizard; NewPatientWizard = vascoFramedSurface( 'VascoFramedNewPatient', VascoLegacyNewPatient, { variant: 'takeover' }, ); window.NewPatientWizard = NewPatientWizard; // La dictée n'est pas une feuille : c'est un parcours qui prend tout l'écran. // Au bureau il doit prendre toute la fenêtre, navigation comprise, au lieu de // s'enfermer dans la colonne de contenu. const VascoLegacyDictationFlow = DictationFlow; DictationFlow = vascoFramedSurface( 'VascoFramedDictationFlow', VascoLegacyDictationFlow, { variant: 'takeover' }, ); window.DictationFlow = DictationFlow;