214 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			SCSS
		
	
	
	
			
		
		
	
	
			214 lines
		
	
	
		
			4.9 KiB
		
	
	
	
		
			SCSS
		
	
	
	
/**
 | 
						|
 * Dropdown ([role="list"])
 | 
						|
 */
 | 
						|
 | 
						|
// Menu
 | 
						|
details[role="list"],
 | 
						|
li[role="list"] {
 | 
						|
  position: relative;
 | 
						|
}
 | 
						|
 | 
						|
details[role="list"] summary + ul,
 | 
						|
li[role="list"] > ul {
 | 
						|
  display: flex;
 | 
						|
  z-index: 99;
 | 
						|
  position: absolute;
 | 
						|
  top: auto;
 | 
						|
  right: 0;
 | 
						|
  left: 0;
 | 
						|
  flex-direction: column;
 | 
						|
  margin: 0;
 | 
						|
  padding: 0;
 | 
						|
  border: var(--border-width) solid var(--dropdown-border-color);
 | 
						|
  border-radius: var(--border-radius);
 | 
						|
  border-top-right-radius: 0;
 | 
						|
  border-top-left-radius: 0;
 | 
						|
  background-color: var(--dropdown-background-color);
 | 
						|
  box-shadow: var(--card-box-shadow);
 | 
						|
  color: var(--dropdown-color);
 | 
						|
  white-space: nowrap;
 | 
						|
 | 
						|
  li {
 | 
						|
    width: 100%;
 | 
						|
    margin-bottom: 0;
 | 
						|
    padding: calc(var(--form-element-spacing-vertical) * 0.5)
 | 
						|
      var(--form-element-spacing-horizontal);
 | 
						|
    list-style: none;
 | 
						|
 | 
						|
    &:first-of-type {
 | 
						|
      margin-top: calc(var(--form-element-spacing-vertical) * 0.5);
 | 
						|
    }
 | 
						|
 | 
						|
    &:last-of-type {
 | 
						|
      margin-bottom: calc(var(--form-element-spacing-vertical) * 0.5);
 | 
						|
    }
 | 
						|
 | 
						|
    a {
 | 
						|
      display: block;
 | 
						|
      margin: calc(var(--form-element-spacing-vertical) * -0.5)
 | 
						|
        calc(var(--form-element-spacing-horizontal) * -1);
 | 
						|
      padding: calc(var(--form-element-spacing-vertical) * 0.5)
 | 
						|
        var(--form-element-spacing-horizontal);
 | 
						|
      overflow: hidden;
 | 
						|
      color: var(--dropdown-color);
 | 
						|
      text-decoration: none;
 | 
						|
      text-overflow: ellipsis;
 | 
						|
 | 
						|
      &:hover {
 | 
						|
        background-color: var(--dropdown-hover-background-color);
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Marker
 | 
						|
details[role="list"] summary,
 | 
						|
li[role="list"] > a {
 | 
						|
  &::after {
 | 
						|
    display: block;
 | 
						|
    width: 1rem;
 | 
						|
    height: calc(1rem * var(--line-height, 1.5));
 | 
						|
    margin-inline-start: 0.5rem;
 | 
						|
    float: right;
 | 
						|
    transform: rotate(0deg);
 | 
						|
    background-position: right center;
 | 
						|
    background-size: 1rem auto;
 | 
						|
    background-repeat: no-repeat;
 | 
						|
    content: "";
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Global dropdown only
 | 
						|
details[role="list"] {
 | 
						|
  padding: 0;
 | 
						|
  border-bottom: none;
 | 
						|
 | 
						|
  // Style <summary> as <select>
 | 
						|
  summary {
 | 
						|
    margin-bottom: 0;
 | 
						|
 | 
						|
    &:not([role]) {
 | 
						|
      height: calc(
 | 
						|
        1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 +
 | 
						|
          var(--border-width) * 2
 | 
						|
      );
 | 
						|
      padding: var(--form-element-spacing-vertical)
 | 
						|
        var(--form-element-spacing-horizontal);
 | 
						|
      border: var(--border-width) solid var(--form-element-border-color);
 | 
						|
      border-radius: var(--border-radius);
 | 
						|
      background-color: var(--form-element-background-color);
 | 
						|
      color: var(--form-element-placeholder-color);
 | 
						|
      line-height: inherit;
 | 
						|
      cursor: pointer;
 | 
						|
 | 
						|
      @if $enable-transitions {
 | 
						|
        transition: background-color var(--transition),
 | 
						|
          border-color var(--transition), color var(--transition),
 | 
						|
          box-shadow var(--transition);
 | 
						|
      }
 | 
						|
 | 
						|
      &:active,
 | 
						|
      &:focus {
 | 
						|
        border-color: var(--form-element-active-border-color);
 | 
						|
        background-color: var(--form-element-active-background-color);
 | 
						|
      }
 | 
						|
 | 
						|
      &:focus {
 | 
						|
        box-shadow: 0 0 0 var(--outline-width) var(--form-element-focus-color);
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  // Close for details[role="list"]
 | 
						|
  &[open] summary {
 | 
						|
    border-bottom-right-radius: 0;
 | 
						|
    border-bottom-left-radius: 0;
 | 
						|
 | 
						|
    &::before {
 | 
						|
      display: block;
 | 
						|
      z-index: 1;
 | 
						|
      position: fixed;
 | 
						|
      top: 0;
 | 
						|
      right: 0;
 | 
						|
      bottom: 0;
 | 
						|
      left: 0;
 | 
						|
      background: none;
 | 
						|
      content: "";
 | 
						|
      cursor: default;
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// All Dropdowns inside <nav>
 | 
						|
nav details[role="list"] summary,
 | 
						|
nav li[role="list"] a {
 | 
						|
  display: flex;
 | 
						|
  direction: ltr;
 | 
						|
}
 | 
						|
 | 
						|
nav details[role="list"] summary + ul,
 | 
						|
nav li[role="list"] > ul {
 | 
						|
  min-width: fit-content;
 | 
						|
  border-radius: var(--border-radius);
 | 
						|
 | 
						|
  li a {
 | 
						|
    border-radius: 0;
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Dropdowns inside <nav> as nested <details>
 | 
						|
nav details[role="list"] {
 | 
						|
  summary,
 | 
						|
  summary:not([role]) {
 | 
						|
    height: auto;
 | 
						|
    padding: var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);
 | 
						|
  }
 | 
						|
 | 
						|
  &[open] summary {
 | 
						|
    border-radius: var(--border-radius);
 | 
						|
  }
 | 
						|
 | 
						|
  summary + ul {
 | 
						|
    margin-top: var(--outline-width);
 | 
						|
    margin-inline-start: 0;
 | 
						|
  }
 | 
						|
 | 
						|
  summary[role="link"] {
 | 
						|
    margin-bottom: calc(var(--nav-link-spacing-vertical) * -1);
 | 
						|
    line-height: var(--line-height);
 | 
						|
 | 
						|
    + ul {
 | 
						|
      margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
 | 
						|
      margin-inline-start: calc(var(--nav-link-spacing-horizontal) * -1);
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
// Dropdowns inside a <nav> without using <details>
 | 
						|
li[role="list"] {
 | 
						|
  // Open on hover (for mobile)
 | 
						|
  // or on active/focus (for keyboard navigation)
 | 
						|
  &:hover > ul,
 | 
						|
  a:active ~ ul,
 | 
						|
  a:focus ~ ul {
 | 
						|
    display: flex;
 | 
						|
  }
 | 
						|
 | 
						|
  > ul {
 | 
						|
    display: none;
 | 
						|
    margin-top: calc(var(--nav-link-spacing-vertical) + var(--outline-width));
 | 
						|
    margin-inline-start: calc(
 | 
						|
      var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal)
 | 
						|
    );
 | 
						|
  }
 | 
						|
 | 
						|
  > a::after {
 | 
						|
    background-image: var(--icon-chevron);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
label > details[role="list"] {
 | 
						|
  margin-top: calc(var(--spacing) * .25);
 | 
						|
  margin-bottom: var(--spacing);
 | 
						|
}
 |