<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<div class="breadcrumbs">
  <h4>
    <a *ngIf="addRootFirst" routerLink="/">{{'common.title' | translate}}</a>
    <ng-container *ngIf="crumbs && crumbs.length">
      <span *ngIf="crumbs.length" class="breadcrumb-separator">/</span>
      <ng-container *ngFor="let crumb of crumbs; index as i">
        <a *ngIf="i < crumbs.length-1" [routerLink]="crumb.path" routerLinkActive="active">{{crumb.text | translate}}</a>
        <span *ngIf="i === crumbs.length-1" class="breadcrumb-current">{{crumb.text | translate}}</span>
        <span *ngIf="i < crumbs.length-1" class="breadcrumb-separator">/</span>
      </ng-container>
    </ng-container>
  </h4>
</div>
