<!--
 * 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">
        <select class="form-control row-margin-bottom" data-id="addTagOptions" required>
        </select>
    </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>
