<!--
 * 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>
    <div class="form-group hide">
        {{#if tagModel}}
        <h4>{{tagModel.typeName}}</h4> {{else}}
        <select class="form-control row-margin-bottom" data-id="addTagOptions" required>
        </select>
        {{/if}}
    </div>
    <div class="row modalHeight">
        <div class="col-sm-12">
            <div class="attrLoader" style="margin-left:45%;display:none">
                <i class="fa fa-refresh fa-spin-custom"></i>
            </div>
        </div>
        <div class="col-sm-12" style="display:none">
            <p>Tag Attributes(optional)</p>
            <p class="tagAttributeLabel">Add attribute values for this tag</p>
            <div data-id="tagAttribute"></div>
        </div>
    </div>
</div>
