@import './variables';
@import './list-common';
@import './layout-common';
@import './vendor-prefixes';

/** The mixins below are shared between mat-menu and mat-select */

// menu width must be a multiple of 56px
$mat-menu-overlay-min-width: 112px !default;   // 56 * 2
$mat-menu-overlay-max-width: 280px !default;   // 56 * 5

$mat-menu-item-height: 48px !default;
$mat-menu-side-padding: 16px !default;
$mat-menu-icon-margin: 16px !default;


@mixin mat-menu-base() {
  min-width: $mat-menu-overlay-min-width;
  max-width: $mat-menu-overlay-max-width;
  overflow: auto;
  -webkit-overflow-scrolling: touch;   // for momentum scroll on mobile
}

@mixin mat-menu-item-base() {
  @include mat-truncate-line();

  // Needs to be a block for the ellipsis to work.
  display: block;
  line-height: $mat-menu-item-height;
  height: $mat-menu-item-height;
  padding: 0 $mat-menu-side-padding;

  text-align: left;
  text-decoration: none;   // necessary to reset anchor tags

  // Required for Edge not to show scrollbars when setting the width manually. See #12112.
  max-width: 100%;

  &[disabled] {
    cursor: default;
  }

  [dir='rtl'] & {
    text-align: right;
  }

  .mat-icon {
    margin-right: $mat-menu-icon-margin;
    vertical-align: middle;

    svg {
      vertical-align: top;
    }

    [dir='rtl'] & {
      margin-left: $mat-menu-icon-margin;
      margin-right: 0;
    }
  }
}

@mixin mat-menu-item-submenu-trigger($side-padding, $triangle-height: 10px) {
  // Increase the side padding to prevent the indicator from overlapping the text.
  padding-right: $side-padding * 2;

  // Renders a triangle to indicate that the menu item will open a sub-menu.
  &::after {
    $size: $triangle-height / 2;

    width: 0;
    height: 0;
    border-style: solid;
    border-width: $size 0 $size $size;
    border-color: transparent transparent transparent currentColor;
    content: '';
    display: inline-block;
    position: absolute;
    top: 50%;
    right: $side-padding;
    transform: translateY(-50%);
  }

  [dir='rtl'] & {
    padding-right: $side-padding;
    padding-left: $side-padding * 2;

    &::after {
      right: auto;
      left: $side-padding;
      transform: rotateY(180deg) translateY(-50%);
    }
  }
}

@mixin mat-menu-item-ripple() {
  @include mat-fill;

  // Prevent any pointer events on the ripple container for a menu item. The ripple container is
  // not the trigger element for the ripples and can be therefore disabled like that. Disabling
  // the pointer events ensures that there is no `click` event that can bubble up and cause
  // the menu panel to close.
  pointer-events: none;
}
