@use '../config' as *;

.dropdown-menu {
  --dropdown-item-gap: #{$dropdown-item-gap};
  --dropdown-item-icon-size: #{$icon-size};
  --dropdown-item-icon-color: var(--tertiary);
  --dropdown-header-padding-bottom: #{$dropdown-header-padding-bottom};
  --dropdown-menu-columns-gap: #{$dropdown-menu-columns-gap};
  --dropdown-arrow-offset: #{$dropdown-arrow-offset};
  --dropdown-arrow-inset: #{$dropdown-arrow-inset};
  --dropdown-dropend-offset: #{$dropdown-dropend-offset};
  --dropdown-menu-card-min-width: #{$dropdown-menu-card-min-width};
  user-select: none;
  background-clip: border-box;

  &.card {
    display: none;
    min-width: $dropdown-max-width;
    padding: 0;

    &.show {
      display: flex;
    }
  }

  @include media-print() {
    display: none;
  }
}

.dropdown-item {
  display: flex;
  gap: var(--dropdown-item-gap, #{$dropdown-item-gap});
  align-items: center;
  min-width: $dropdown-min-width;
  margin: 0;
  line-height: $line-height-base;
}

.dropdown-item-icon {
  width: var(--dropdown-item-icon-size) !important;
  height: var(--dropdown-item-icon-size) !important;
  color: var(--dropdown-item-icon-color);
  text-align: center;
}

.dropdown-item-indicator {
  display: inline-flex;
  align-items: center;
  height: var(--dropdown-item-icon-size);
  line-height: 1;
  vertical-align: bottom;
}

.dropdown-header {
  @include subheader();
  padding-bottom: var(--dropdown-header-padding-bottom);
  pointer-events: none;
}

.dropdown-menu-scrollable {
  height: auto;
  max-height: $dropdown-scrollable-height;
  overflow-x: hidden;
}

.dropdown-menu-column {
  min-width: $dropdown-min-width;

  .dropdown-item {
    min-width: 0;
  }
}

.dropdown-menu-columns {
  display: flex;
  flex: 0 var(--dropdown-menu-columns-gap);
}

.dropdown-menu-arrow {
  &::before {
    position: absolute;
    inset-inline-start: var(--dropdown-arrow-inset);
    top: calc(-1 * var(--dropdown-arrow-offset));
    z-index: -1;
    display: block;
    width: 14px;
    height: 14px;
    clip-path: inset(0 5px 5px 0);
    content: '';
    background: inherit;
    // The menu draws its edge with the 1px ring in --dropdown-box-shadow and has
    // no border, so `inherit` would give the arrow the text color.
    border: 1px solid var(--dropdown-border-color);

    /* rtl:ignore */
    transform: rotate(45deg);
    transform-origin: center;
  }

  &.dropdown-menu-end {
    &::before {
      inset-inline-start: auto;
      inset-inline-end: var(--dropdown-arrow-inset);
    }
  }
}

.dropend {
  > .dropdown-menu {
    margin-inline-start: calc(-1 * var(--dropdown-dropend-offset));
    margin-top: subtract(calc(-1 * $dropdown-padding-y), 1px);
  }

  .dropdown-toggle {
    &::after {
      margin-inline-start: auto;
    }
  }
}

.dropdown-menu-card {
  min-width: var(--dropdown-menu-card-min-width);
  padding: 0;

  > .card {
    margin: 0;
    border: 0;
    box-shadow: none;
  }
}
