<!--
 * 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="page-title clearfix">
    <div class="fontLoader">
        <i class="fa fa-refresh fa-spin-custom"></i>
    </div>
    <div class="back-button" title="Back to search page">
        <i class="fa fa-angle-left" data-id="backButton"></i>
    </div>
    <div class="tagDetail clearfix form-horizontal col-sm-12">
        <h1 class="title"><span data-id="title"></span></h1>
        <button type="button" data-id="editButton" class="btn btn-sm btn-action pull-right"><i class="fa fa-pencil"></i></button>
        <p class="form-group col-sm-12" data-id="description"></p>
        <div class="superType form-group col-sm-12" style="display:none">
            <label class="control-label-sm-pr pull-left">Direct super-classifications:</label>
            <div data-id="superType" class="btn-inline">
            </div>
        </div>
        <div class="subType form-group col-sm-12" style="display:none">
            <label class="control-label-sm-pr pull-left">Direct sub-classifications:</label>
            <div data-id="subType" class="btn-inline">
            </div>
        </div>
        <div class="entityType form-group cursor-default col-sm-12" style="display:none">
            <label class="control-label-sm-pr pull-left">Entity-types:</label>
            <div data-id="entityType" class="btn-inline">
            </div>
        </div>
        <div class="attributes form-group col-sm-12">
            <label class="pull-left control-label-sm-pr">Attributes:</label>
            <div class="btn-inline">
                <div data-id="showAttribute" class="pull-left">
                </div>
                <button type="button" data-id="addAttribute" class="btn btn-action btn-sm pull-left"><i class="fa fa-plus"></i></button>
            </div>
        </div>
    </div>
</div>