/**
 * 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.
 */

@import '../../modules/shared/mixins';

:host {
  display: block;
  padding: @filters-panel-padding;
  background-color: @filters-panel-background-color;

  .filter-input-container {
    display: flex;
    align-items: flex-start;
    justify-content: flex-start;

    .search-button {
      border: 1px solid @submit-color;
      height: auto;

      &:last-child {
        border-top-left-radius: 0;
        border-bottom-left-radius: 0;
      }
    }

    .filter-input {
      border: @input-border;

      &:not(:last-child) {
        border-right-width: 0;
      }

      &:first-child {
        border-top-left-radius: @button-border-radius;
        border-bottom-left-radius: @button-border-radius;
      }

      &:last-child {
        border-top-right-radius: @button-border-radius;
        border-bottom-right-radius: @button-border-radius;
      }
    }

    search-box.filter-input:not(:last-child) {
      border-right-width: @input-border-width;
      margin-right: -1 * (@input-border-width);
    }

    time-range-picker {
      /deep/ .dropdown-menu {
        left: @col-padding;
      }
    }
  }

  .filter-buttons {
    .default-flex;
  }

  /deep/ .dropdown-menu {
    .log-level-item {
      .log-colors;
    }
  }
}
