<!--
 * 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>
        <div class="long-description-container form-group clearfix">
            <span class="pull-left text-muted">Description:&nbsp;</span>
            <div class="isTextTypeBtn-wrapper pull-right">
                <span class="text-muted pull-left">Formatted</span>
                <label class="switch pull-left">
                    <input type="checkbox" class="switch-input" name="textType" value="text">
                    <span class="switch-slider"></span>
                </label>
                <span class="text-muted">Plain</span>
            </div>
            <div class="longdescription-wrapper form-control col-sm-12">
                <div class="long-description" name="longDescription" data-id="description" disabled></div>
            </div>
        </div>
        <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>