// Single / multiple select with search and sorting, tags components // based on https://github.com/Choices-js/Choices // Reboot plugin's styles // stylelint-disable selector-class-pattern .choices { margin-bottom: 0; } .choices[data-type*="select-one"] { &::after { display: none; } .form-select { padding-right: 3.25rem; } .choices__button { right: 0; left: auto; margin: { right: 2rem; left: 0; } background-size: 9px; box-shadow: none !important; opacity: .4; transition: opacity .15s ease-in-out; &:hover { opacity: .8; } } } .filter-select:has(.choices__item:not(.choices__placeholder)) { --#{$prefix}form-control-border-color: #{$input-focus-border-color}; } .choices[data-type*="select-multiple"] .form-select, .choices[data-type*="text"] .form-select { padding: $input-btn-padding-y $input-btn-padding-y ($input-btn-padding-y - .25rem) $input-btn-padding-y; background-image: none; &.form-select-lg { padding: $input-btn-padding-y-lg $input-btn-padding-y-lg ($input-btn-padding-y-lg - .25rem) $input-btn-padding-y-lg; } &.form-select-sm { padding: $input-btn-padding-y-sm $input-btn-padding-y-sm ($input-btn-padding-y-sm - .25rem) $input-btn-padding-y-sm; } } .choices__placeholder { color: $input-placeholder-color; opacity: 1; } .is-focused .form-select { border-color: var(--#{$prefix}form-control-focus-border-color); } .is-disabled .form-select { color: $input-disabled-color; background-color: $input-disabled-bg; border-color: $input-disabled-border-color; border-style: dashed; } .choices__list--dropdown, .choices__list[aria-expanded] { z-index: 10; padding: $dropdown-padding-y $dropdown-padding-x; margin: $dropdown-spacer * 1.25 0 !important; font-size: $dropdown-font-size; background-color: $dropdown-bg; border: $dropdown-border-width solid $dropdown-border-color !important; @include border-radius($dropdown-border-radius !important); @include box-shadow($dropdown-box-shadow !important); .choices__placeholder { display: none !important; } .choices__list { max-height: 240px; } } .choices__list--single { display: flex; padding: 0; .choices__item { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } } .choices__list--dropdown .choices__item, .choices__list[aria-expanded] .choices__item { display: flex; align-items: center; padding: $dropdown-item-padding-y $dropdown-item-padding-x !important; color: $dropdown-link-color; @include border-radius($dropdown-item-border-radius !important); &.is-highlighted { color: $dropdown-link-active-color; background-color: $dropdown-link-active-bg; } } .choices .choices__input { padding: { top: .25rem; right: 0; bottom: .25rem; left: .375rem; } margin: 0; margin-bottom: .25rem; color: $input-color; background-color: transparent !important; &::placeholder { color: $input-placeholder-color; opacity: 1; } } .choices:not([data-type*="select-multiple"]):not([data-type*="text"]) .choices__input { padding-left: 1.75rem !important; margin: { top: -.375rem !important; bottom: $dropdown-spacer * 1.25 !important; } background: escape-svg(url("data:image/svg+xml,")) no-repeat .125rem .75rem; border-color: var(--#{$prefix}border-color) !important; } .choices__list--dropdown .choices__item--selectable, .choices__list[aria-expanded] .choices__item--selectable { &::after { flex-shrink: 0; width: $dropdown-font-size * 1.5; height: $dropdown-font-size * 1.5; margin: { top: .1875rem; right: -.25rem; left: auto; } content: ""; background-color: currentcolor; opacity: 0; -webkit-mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; // stylelint-disable-line property-no-vendor-prefix mask: escape-svg(url("data:image/svg+xml,")) no-repeat 50% 50%; -webkit-mask-size: cover; // stylelint-disable-line property-no-vendor-prefix mask-size: cover; } &.is-highlighted::after { opacity: .85; } } .choices__heading { padding: 1rem $dropdown-item-padding-x .75rem; margin-bottom: $dropdown-spacer * 1.25; font: { size: $font-size-sm; weight: $headings-font-weight; } color: var(--#{$prefix}heading-color); border-color: var(--#{$prefix}border-color); } .choices.is-disabled .choices__list--multiple .choices__item, .choices__list--multiple .choices__item { background-color: var(--#{$prefix}emphasis-color); border-color: var(--#{$prefix}emphasis-color); margin: { right: .25rem; bottom: .25rem; } .choices__button { padding: { right: .375rem; left: 1rem; } margin: { right: -.25rem; left: .5rem; } border: { right: 0; left: 1px solid rgba($white, .3); } } &.is-highlighted { background-color: var(--#{$prefix}secondary-color); border-color: var(--#{$prefix}secondary-color); } } .choices.is-disabled .choices__list--multiple .choices__item { opacity: .45; } // Validation .was-validated .choices:has(.form-select:invalid), .choices:has(.is-invalid) { .form-select { border-color: var(--#{$prefix}form-invalid-border-color); } ~ .invalid-feedback, ~ .invalid-tooltip { display: block; } } .was-validated .choices:has(.form-select:valid), .choices:has(.is-valid) { ~ .valid-feedback, ~ .valid-tooltip { display: block; } } // Dark mode @if $enable-dark-mode { @include color-mode(dark) { .choices[data-type*="select-one"] .choices__button { background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg=="); } .choices.is-disabled .choices__list--multiple .choices__item, .choices__list--multiple .choices__item { color: $dark; .choices__button { background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg=="); border-color: $gray-300; } } .filter-select:has(.choices__item:not(.choices__placeholder)) { --#{$prefix}form-control-border-color: #{$input-focus-border-color-dark}; } .choices:has([data-bs-theme="light"]) { .form-select { --#{$prefix}form-control-bg: #{$input-bg}; --#{$prefix}form-control-border-color: #{$input-border-color}; --#{$prefix}form-control-focus-bg: #{$input-focus-bg}; --#{$prefix}form-control-focus-border-color: #{$input-focus-border-color}; --#{$prefix}form-select-bg-img: #{escape-svg($form-select-indicator)}; } .choices__button { background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg=="); } .choices.is-disabled .choices__list--multiple .choices__item, .choices__list--multiple .choices__item { color: $white; .choices__button { background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg=="); border-color: rgba($white, .3); } } .filter-select:has(.choices__item:not(.choices__placeholder)) { --#{$prefix}form-control-border-color: #{$input-focus-border-color}; } } } } // stylelint-enable selector-class-pattern