Comment ajouter un fil d'Ariane ?

En regardant de plus près, un composant fil d’Ariane a été ajouté à Discourse plus tôt cette année : FEATURE: Introduce DBreadcrumbs components (#27049) · discourse/discourse@1239178 · GitHub. Il n’est actuellement rendu que sur certaines pages d’administration.

J’avais donc créé un composant de test pour rendre les fils d’Ariane : Manuel Kostka / Discourse / Components / Breadcrumbs · GitLab. Le modèle actuel est :

  <template>
    {{#if this.currentPage}}
      {{bodyClass "has-breadcrumbs"}}
      <ul class="breadcrumbs {{concat '--' settings.plugin_outlet}}">
        <li class="breadcrumbs__item --home">
          {{#if this.homePage}}
            {{i18n "js.home"}}
          {{else}}
            <a href="/">{{i18n "js.home"}}</a>
          {{/if}}
        </li>
        {{#if this.parentCategory}}
          <li class="breadcrumbs__item --parent">
            <a href="/c/{{this.parentCategoryLink}}">
              {{this.parentCategoryName}}</a>
          </li>
        {{/if}}
        {{#unless this.homePage}}
          <li class="breadcrumbs__item --current">
            {{this.currentPage}}
          </li>
        {{/unless}}
      </ul>
    {{/if}}
  </template>

J’ai maintenant créé une branche qui utilise le nouveau composant dbreadcrumbs : Files · dbreadcrumbs · Manuel Kostka / Discourse / Components / Breadcrumbs · GitLab. Cela rendrait le modèle plus concis et, je suppose, offrirait une meilleure cohérence et accessibilité :

  <template>
    {{#if this.currentPage}}
      {{bodyClass "has-breadcrumbs"}}
      <DBreadcrumbsContainer class="{{concat '--' settings.plugin_outlet}}" />
      <DBreadcrumbsItem @path="/" @label={{i18n "js.home"}} />
      {{#if this.parentCategory}}
        <DBreadcrumbsItem
          @path="/c/{{this.parentCategoryLink}}"
          @label={{this.parentCategoryName}}
        />
      {{/if}}
      {{#unless this.homePage}}
        <DBreadcrumbsItem @path="" @label={{this.currentPage}} />
      {{/unless}}
    {{/if}}
  </template>

Cependant, en utilisant DBreadcrumbsItem, l’ordre de la catégorie parente et de la sous-catégorie est mélangé sur le composant rendu. La catégorie actuelle est insérée en premier :

Je me demande si c’est à cause de ce comportement, indiqué dans le message de commit ?

  • DBreadcrumbsItem - Le composant qui enregistre un LinkTo
    pour le fil d’Ariane. Le fil d’Ariane s’affichera
    en fonction de l’ordre dans lequel ces éléments sont rendus sur la page.