<!--
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 id="nifi-registry-administration-perspective">
    <mat-button-toggle-group name="nifi-registry-administration-perspective" fxLayout="row"
                             fxLayoutAlign="space-between center" class="tab-toggle-group">
        <mat-button-toggle
                [disabled]="!nfRegistryService.currentUser.resourcePermissions.buckets.canRead"
                [matTooltip]="'Manage NiFi Registry buckets.'"
                [checked]="nfRegistryService.adminPerspective === 'workflow'" value="workflow"
                class="uppercase"
                (change)="navigateToAdminPerspective($event)"
                i18n="Workflow administration tab|A description of the type of administration options available.@@nf-admin-workflow-tab-title">
            Buckets
        </mat-button-toggle>
        <mat-button-toggle
                [disabled]="nfRegistryService.currentUser.anonymous || !nfRegistryService.currentUser.resourcePermissions.tenants.canRead"
                [matTooltip]="getUserTooltip()"
                [checked]="nfRegistryService.adminPerspective === 'users'" value="users" class="uppercase"
                (change)="navigateToAdminPerspective($event)"
                i18n="Users administration tab|A description of the type of administration options available.@@nf-admin-users-tab-title">
            Users
        </mat-button-toggle>
    </mat-button-toggle-group>
</div>
<router-outlet></router-outlet>
