123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- // stylelint-disable selector-attribute-name-disallowed-list
- $separator: 1px solid theme('colors.white-15');
- $radius: theme('borderRadius.sm');
- .w-dropdown-button {
- // Cosmetic details based on live tooltip placement,
- // implemented CSS-only by using Tippy.js `data-placement` and `:has`.
- --primary-button-radius-top: #{$radius};
- --primary-button-radius-bottom: #{$radius};
- --toggle-button-radius-top: #{$radius};
- --toggle-button-radius-bottom: #{$radius};
- --first-item-border-top: 0;
- --last-item-border-top: 0;
- // Set each separately so a button that’s both first and last is correct.
- --first-item-start-start-radius: 0;
- --first-item-start-end-radius: 0;
- --last-item-end-start-radius: 0;
- --last-item-end-end-radius: 0;
- display: flex;
- // Make sure the tooltip within will match this element’s width.
- position: relative;
- [data-tippy-root] {
- // Make sure the tooltip within will match this element’s width.
- width: 100%;
- }
- &:has(:not([hidden]) > [data-placement^='bottom']) {
- --primary-button-radius-top: #{$radius};
- --primary-button-radius-bottom: 0;
- --toggle-button-radius-top: #{$radius};
- --toggle-button-radius-bottom: 0;
- --last-item-end-start-radius: #{$radius};
- --last-item-end-end-radius: #{$radius};
- --first-item-border-top: #{$separator};
- }
- &:has(:not([hidden]) > [data-placement^='top']) {
- --primary-button-radius-top: 0;
- --primary-button-radius-bottom: #{$radius};
- --toggle-button-radius-top: 0;
- --toggle-button-radius-bottom: #{$radius};
- --first-item-start-start-radius: #{$radius};
- --first-item-start-end-radius: #{$radius};
- --last-item-border-bottom: #{$separator};
- }
- }
- // Primary button next to the dropdown toggle.
- .w-dropdown-button > :is(a, button) {
- border-start-start-radius: var(--primary-button-radius-top);
- border-start-end-radius: 0;
- border-end-start-radius: var(--primary-button-radius-bottom);
- border-end-end-radius: 0;
- min-height: $text-input-height;
- }
- .w-dropdown-button .button.w-dropdown__toggle {
- width: theme('spacing.8');
- height: $text-input-height;
- padding: 0 theme('spacing.2');
- background-color: theme('colors.surface-button-default');
- color: theme('colors.text-button');
- border-inline-start: $separator;
- border-start-start-radius: 0;
- border-start-end-radius: var(--toggle-button-radius-top);
- border-end-start-radius: 0;
- border-end-end-radius: var(--toggle-button-radius-bottom);
- &:is(:hover, :focus-visible) {
- background-color: theme('colors.surface-button-hover');
- }
- }
- .w-dropdown-button .w-dropdown__content {
- padding: 0;
- }
- // Use a generic selector to support all types of links / buttons.
- .w-dropdown-button .w-dropdown__content :is(a, button) {
- @include show-focus-outline-inside();
- height: auto;
- min-height: $text-input-height;
- margin: 0;
- white-space: normal;
- border-radius: 0;
- &:nth-child(n + 2) {
- border-top: $separator;
- }
- &:first-child {
- border-top: var(--first-item-border-top);
- border-start-start-radius: var(--first-item-start-start-radius);
- border-start-end-radius: var(--first-item-start-end-radius);
- }
- &:last-child {
- border-bottom: var(--last-item-border-bottom);
- border-end-start-radius: var(--last-item-end-start-radius);
- border-end-end-radius: var(--last-item-end-end-radius);
- }
- }
- .w-dropdown-button > .warning {
- + .w-dropdown .button {
- background-color: theme('colors.warning.100');
- border-color: $separator;
- }
- + .w-dropdown .w-dropdown__toggle {
- border-inline-end-color: theme('colors.warning.100');
- border-top-color: theme('colors.warning.100');
- border-bottom-color: theme('colors.warning.100');
- }
- }
|