1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- @use 'sass:map';
- @use 'sass:math';
- $select-size: $text-input-height;
- $chevron-width: 0.375rem;
- $chevron-height: 0.375rem;
- $chevron-top-offset: math.div($select-size - $chevron-height, 2);
- $chevron-inline-end-offset: math.div($select-size - $chevron-width, 2);
- @mixin select-arrow() {
- background-image: linear-gradient(
- 45deg,
- transparent 50%,
- theme('colors.text-label') 33%,
- theme('colors.text-label') 66%,
- transparent 66%
- ),
- linear-gradient(
- -45deg,
- transparent 50%,
- theme('colors.text-label') 33%,
- theme('colors.text-label') 66%,
- transparent 66%
- );
- background-position:
- calc(100% - $chevron-top-offset - $chevron-width) $chevron-top-offset,
- calc(100% - $chevron-inline-end-offset) $chevron-top-offset;
- background-size:
- $chevron-width $chevron-width,
- $chevron-width $chevron-width;
- background-repeat: no-repeat;
- }
- select {
- @include input-base();
- @include select-arrow();
- @apply w-body-text-large;
- // Firefox workaround – Set a large line height (but smaller than min height) so the field’s text has enough top padding.
- line-height: 2.2;
- min-height: $select-size;
- padding: 0 theme('spacing.5');
- padding-inline-end: $select-size;
- // Prevent the element from overflowing the container.
- max-width: 100%;
- @media (forced-colors: active) {
- appearance: auto;
- }
- }
- select[multiple] {
- background-image: none;
- min-height: theme('spacing.40');
- padding: 0;
- option {
- padding: 0 theme('spacing.5');
- }
- }
|