Widgets
Les widgets sont les blocs de contenu composables par les editeurs via le BlockGrid d'une page. Specs fonctionnelles detaillees : doc/Widgets-Modules-Packages.md.
Anatomie standard
Pour Widget<Nom> :
| Element | Emplacement | Obligatoire |
|---|---|---|
| ViewComponent | App.Core/ViewComponents/Widget<Nom>ViewComponent.cs | oui |
| Vue Razor | App.Core/Views/Components/Widget<Nom>/Default.cshtml | oui |
| View model | App.Model/ViewModel/Component/ | oui |
| Document type | src/Umbraco/uSync/v9/ContentTypes/widget<nom>.config (+ settings/item si besoin) | oui |
| SCSS | Design/default/css/component/widget<nom>/ + bundle CSS dans Program.cs | si style |
| TypeScript | TypeScript/ts/component/widget<nom>/ + bundle JS dans Program.cs | si interactif |
Le ViewComponent implemente InvokeAsync(...), recupere le skin via IDomainService.GetSkinName(), et retourne View("Default", model). Les bundles CSS/JS sont declares dans src/Umbraco/Program.cs (WebOptimizer), pas dans un fichier de config frontend.
Inventaire (ViewComponents reels)
Widgets (App.Core/ViewComponents/Widget*ViewComponent.cs) :
| Widget | Role |
|---|---|
| WidgetAccordion | Sections accordeon depliables |
| WidgetButton / WidgetButtonGroup | Boutons / groupes de boutons (CTA) |
| WidgetCard | Cartes / teasers |
| WidgetChezzenHomeSlider | Slider d'accueil specifique Chezzen (avec items) |
| WidgetChezzenLocationCard | Carte de magasin / point de vente Chezzen |
| WidgetChezzenLocationDetail | Detail d'un magasin / point de vente Chezzen |
| WidgetChezzenTestimonials | Temoignages clients Chezzen |
| WidgetCode | Injection HTML/JS custom |
| WidgetContact | Affichage d'infos de contact (Affiliate) |
| WidgetContactForm | Formulaire de contact custom |
| WidgetDocument | Liste / telechargement de documents |
| WidgetGallery | Galerie images/video |
| WidgetHero | Banniere pleine largeur |
| WidgetImage | Image(s) |
| WidgetJobup | Offres d'emploi (integration jobup) - specifique Chezzen |
| WidgetLatestFromFeed | Liste dynamique des derniers articles |
| WidgetLogo | Logo / image avec lien |
| WidgetMap | Google Maps |
| WidgetNavigation | Menu de navigation |
| WidgetNewsletter | Inscription newsletter |
| WidgetOpeningHours | Horaires d'ouverture |
| WidgetSeparator | Separateur visuel |
| WidgetSlider | Carrousel |
| WidgetSocialNetworks | Liens / feeds reseaux sociaux |
| WidgetTab | Contenu en onglets |
| WidgetText | Texte riche (WYSIWYG) |
| WidgetUmbracoForms | Integration d'un Umbraco Form |
| WidgetVideo | Embed video (iframe / fichier) |
Les widgets prefixes Chezzen (HomeSlider, LocationCard, LocationDetail, Testimonials) et Jobup sont des specificites de ce projet, absentes du starter kit generique.
ViewComponents non-widget (composants de layout)
App.Core/ViewComponents/ contient aussi des composants structurels : Header, Footer, Menu, LanguageSwitch, Announcement, CookieConsentManager, DebugBanner, GoogleAnalytics, GoogleTagManager, HeadTitle, HeadMetaTags, HeadJavascript, HeadCustomJavascript.
Ajouter un widget
Voir la procedure dans ../architecture/patterns.md.

