<!--
 * 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="tagDetail clearfix form-horizontal col-sm-12">
        <h1 class="row 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" data-id="description"></p>
        <div class="superType form-group" 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" 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" 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">
            <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>