-
-
Save judetucker/f12167df07b09b93590556c3b2d40537 to your computer and use it in GitHub Desktop.
| // | |
| // Variables | |
| // -------------------------------------------------- | |
| // Variables directly translating Bootstrap variables | |
| // ------------------------- | |
| $s2bs-border-radius-base: $border-radius !default; | |
| $s2bs-border-radius-large: $border-radius-lg !default; | |
| $s2bs-border-radius-small: $border-radius-sm !default; | |
| $s2bs-btn-default-bg: $btn-secondary-bg !default; | |
| $s2bs-btn-default-border: $btn-secondary-border !default; | |
| $s2bs-btn-default-color: $btn-secondary-color !default; | |
| $s2bs-caret-width-base: $caret-width !default; | |
| $s2bs-caret-width-large: $caret-width !default; | |
| $s2bs-cursor-disabled: $cursor-disabled !default; | |
| $s2bs-dropdown-header-color: $dropdown-header-color !default; | |
| $s2bs-dropdown-link-active-bg: $dropdown-link-active-bg !default; | |
| $s2bs-dropdown-link-active-color: $dropdown-link-active-color !default; | |
| $s2bs-dropdown-link-disabled-color: $dropdown-link-disabled-color !default; | |
| $s2bs-dropdown-link-hover-bg: $dropdown-link-hover-bg !default; | |
| $s2bs-dropdown-link-hover-color: $dropdown-link-hover-color !default; | |
| $s2bs-font-size-base: $font-size-base !default; | |
| $s2bs-font-size-large: $font-size-lg !default; | |
| $s2bs-font-size-small: $font-size-sm !default; | |
| $s2bs-padding-base-horizontal: $input-padding-x !default; | |
| $s2bs-padding-large-horizontal: $input-padding-x-lg !default; | |
| $s2bs-padding-small-horizontal: $input-padding-x-sm !default; | |
| $s2bs-padding-base-vertical: $input-padding-y !default; | |
| $s2bs-padding-large-vertical: $input-padding-y-lg !default; | |
| $s2bs-padding-small-vertical: $input-padding-y-sm !default; | |
| $s2bs-line-height-base: $input-line-height !default; | |
| $s2bs-line-height-large: $line-height-lg !default; | |
| $s2bs-line-height-small: $line-height-sm !default; | |
| $s2bs-input-bg: $input-bg !default; | |
| $s2bs-input-bg-disabled: $input-bg-disabled !default; | |
| $s2bs-input-color: $input-color !default; | |
| $s2bs-input-color-placeholder: $input-color-placeholder !default; | |
| $s2bs-input-border: $input-border-color !default; | |
| $s2bs-input-border-focus: $input-border-focus !default; | |
| $s2bs-input-border-radius: $border-radius !default; | |
| $s2bs-input-height-base: $input-height !default; | |
| $s2bs-input-height-large: $input-height-lg !default; | |
| $s2bs-input-height-small: $input-height-sm !default; | |
| $s2bs-screen-size-sm: 540px !default; | |
| // Theme-specific variables | |
| // ------------------------- | |
| $s2bs-dropdown-arrow-color: $s2bs-input-color-placeholder !default; | |
| $s2bs-dropdown-box-shadow: 0 6px 12px rgba(0,0,0,.175) !default; | |
| $s2bs-dropdown-box-shadow-above: 0px -6px 12px rgba(0,0,0,.175) !default; | |
| $s2bs-clear-selection-color: $s2bs-dropdown-arrow-color !default; | |
| $s2bs-clear-selection-hover-color: $s2bs-btn-default-color !default; | |
| $s2bs-remove-choice-color: $s2bs-input-color-placeholder !default; | |
| $s2bs-remove-choice-hover-color: $s2bs-btn-default-color !default; | |
| $s2bs-selection-choice-border-radius: $s2bs-border-radius-base !default; | |
| $s2bs-dropdown-header-padding-vertical: $s2bs-padding-base-vertical !default; | |
| $s2bs-dropdown-header-font-size: $s2bs-font-size-small !default; | |
| // Bootstrap defaults not available as pre-defined variables | |
| // These should not be overridden. | |
| // ------------------------- | |
| // @see https://github.com/twbs/bootstrap-sass/blob/master/assets/stylesheets/bootstrap/_forms.scss#L126 | |
| $s2bs-form-control-default-box-shadow: inset 0 1px 1px rgba(0,0,0,.075) !default; | |
| // @see https://github.com/twbs/bootstrap-sass/blob/master/assets/stylesheets/bootstrap/mixins/_forms.scss#L60 | |
| $s2bs-form-control-focus-box-shadow: $s2bs-form-control-default-box-shadow, 0 0 8px rgba($s2bs-input-border-focus, 0.6) !default; | |
| // @see https://github.com/twbs/bootstrap-sass/blob/master/assets/stylesheets/bootstrap/_forms.scss#L127 | |
| $s2bs-form-control-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s !default; | |
| // | |
| // Mixins | |
| // -------------------------------------------------- | |
| // @see https://github.com/twbs/bootstrap-sass/blob/master/assets/stylesheets/bootstrap/_forms.scss#L115 | |
| @mixin bootstrap-input-defaults { | |
| @include box-shadow($s2bs-form-control-default-box-shadow); | |
| background-color: $s2bs-input-bg; | |
| border: 1px solid $s2bs-input-border; | |
| border-radius: $s2bs-input-border-radius; | |
| color: $s2bs-input-color; | |
| font-size: $s2bs-font-size-base; | |
| } | |
| // @see http://getbootstrap.com/css/#forms-control-validation | |
| // @see https://github.com/twbs/bootstrap-sass/blob/master/assets/stylesheets/bootstrap/_forms.scss#L388 | |
| @mixin validation-state-focus($color) { | |
| $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($color, 20%); | |
| .select2-dropdown, | |
| .select2-selection { | |
| border-color: $color; | |
| } | |
| .select2-container--focus .select2-selection, | |
| .select2-container--open .select2-selection { | |
| @include box-shadow($shadow); | |
| border-color: darken($color, 10%); | |
| } | |
| &.select2-drop-active { | |
| border-color: darken($color, 10%); | |
| &.select2-drop.select2-drop-above { | |
| border-top-color: darken($color, 10%); | |
| } | |
| } | |
| } | |
| // dropdown arrow when dropdown is open | |
| @mixin dropdown-arrow { | |
| .select2-selection--single { | |
| /** | |
| * Make the dropdown arrow point up while the dropdown is visible. | |
| */ | |
| .select2-selection__arrow b { | |
| border-color: transparent transparent $s2bs-dropdown-arrow-color transparent; | |
| border-width: 0 $s2bs-caret-width-large $s2bs-caret-width-large $s2bs-caret-width-large; | |
| } | |
| } | |
| } | |
| .select2-container--bootstrap { | |
| display: block; | |
| /*------------------------------------*\ | |
| #COMMON STYLES | |
| \*------------------------------------*/ | |
| .select2-selection { | |
| @include bootstrap-input-defaults; | |
| outline: 0; | |
| &.form-control { | |
| border-radius: $s2bs-border-radius-base; | |
| } | |
| } | |
| /** | |
| * Search field in the Select2 dropdown. | |
| */ | |
| .select2-search--dropdown { | |
| .select2-search__field { | |
| @include bootstrap-input-defaults; | |
| } | |
| } | |
| /** | |
| * No outline for all search fields - in the dropdown | |
| * and inline in multi Select2s. | |
| */ | |
| .select2-search__field { | |
| outline: 0; | |
| &::-webkit-input-placeholder { | |
| color: $s2bs-input-color-placeholder; | |
| } | |
| /* Firefox 18- */ | |
| &:-moz-placeholder { | |
| color: $s2bs-input-color-placeholder; | |
| } | |
| /** | |
| * Firefox 19+ | |
| * | |
| * @see http://stackoverflow.com/questions/24236240/color-for-styled-placeholder-text-is-muted-in-firefox | |
| */ | |
| &::-moz-placeholder { | |
| color: $s2bs-input-color-placeholder; | |
| opacity: 1; | |
| } | |
| &:-ms-input-placeholder { | |
| color: $s2bs-input-color-placeholder; | |
| } | |
| } | |
| /** | |
| * Adjust Select2's choices hover and selected styles to match | |
| * Bootstrap 3's default dropdown styles. | |
| * | |
| * @see http://getbootstrap.com/components/#dropdowns | |
| */ | |
| .select2-results__option { | |
| padding: $s2bs-padding-base-vertical $s2bs-padding-base-horizontal; | |
| &[role=group] { | |
| padding: 0; | |
| } | |
| /** | |
| * Disabled results. | |
| * | |
| * @see https://select2.github.io/examples.html#disabled-results | |
| */ | |
| &[aria-disabled=true] { | |
| color: $s2bs-dropdown-link-disabled-color; | |
| cursor: $s2bs-cursor-disabled; | |
| } | |
| /** | |
| * Hover state. | |
| */ | |
| &[aria-selected=true] { | |
| background-color: $s2bs-dropdown-link-hover-bg; | |
| color: $s2bs-dropdown-link-hover-color; | |
| } | |
| /** | |
| * Selected state. | |
| */ | |
| &--highlighted[aria-selected] { | |
| background-color: $s2bs-dropdown-link-active-bg; | |
| color: $s2bs-dropdown-link-active-color; | |
| } | |
| .select2-results__option { | |
| padding: $s2bs-padding-base-vertical $s2bs-padding-base-horizontal; | |
| .select2-results__group { | |
| padding-left: 0; | |
| } | |
| .select2-results__option { | |
| margin-left: -$s2bs-padding-base-horizontal; | |
| padding-left: $s2bs-padding-base-horizontal*2; | |
| .select2-results__option { | |
| margin-left: -$s2bs-padding-base-horizontal*2; | |
| padding-left: $s2bs-padding-base-horizontal*3; | |
| .select2-results__option { | |
| margin-left: -$s2bs-padding-base-horizontal*3; | |
| padding-left: $s2bs-padding-base-horizontal*4; | |
| .select2-results__option { | |
| margin-left: -$s2bs-padding-base-horizontal*4; | |
| padding-left: $s2bs-padding-base-horizontal*5; | |
| .select2-results__option { | |
| margin-left: -$s2bs-padding-base-horizontal*5; | |
| padding-left: $s2bs-padding-base-horizontal*6; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| .select2-results__group { | |
| color: $s2bs-dropdown-header-color; | |
| display: block; | |
| padding: $s2bs-dropdown-header-padding-vertical $s2bs-padding-base-horizontal; | |
| font-size: $s2bs-dropdown-header-font-size; | |
| line-height: $s2bs-line-height-base; | |
| white-space: nowrap; | |
| } | |
| &.select2-container--focus, | |
| &.select2-container--open { | |
| .select2-selection { | |
| @include box-shadow($s2bs-form-control-focus-box-shadow); | |
| @include transition($s2bs-form-control-transition); | |
| border-color: $s2bs-input-border-focus; | |
| } | |
| } | |
| &.select2-container--open { | |
| /** | |
| * Make the dropdown arrow point up while the dropdown is visible. | |
| */ | |
| .select2-selection .select2-selection__arrow b { | |
| border-color: transparent transparent $s2bs-dropdown-arrow-color transparent; | |
| border-width: 0 $s2bs-caret-width-base $s2bs-caret-width-base $s2bs-caret-width-base; | |
| } | |
| /** | |
| * Handle border radii of the container when the dropdown is showing. | |
| */ | |
| &.select2-container--below { | |
| .select2-selection { | |
| @include border-bottom-radius(0); | |
| border-bottom-color: transparent; | |
| } | |
| } | |
| &.select2-container--above { | |
| .select2-selection { | |
| @include border-top-radius(0); | |
| border-top-color: transparent; | |
| } | |
| } | |
| } | |
| /** | |
| * Clear the selection. | |
| */ | |
| .select2-selection__clear { | |
| color: $s2bs-clear-selection-color; | |
| cursor: pointer; | |
| float: right; | |
| font-weight: bold; | |
| margin-right: 10px; | |
| &:hover { | |
| color: $s2bs-clear-selection-hover-color; | |
| } | |
| } | |
| /** | |
| * Address disabled Select2 styles. | |
| * | |
| * @see https://select2.github.io/examples.html#disabled | |
| * @see http://getbootstrap.com/css/#forms-control-disabled | |
| */ | |
| &.select2-container--disabled { | |
| .select2-selection { | |
| border-color: $s2bs-input-border; | |
| @include box-shadow(none); | |
| } | |
| .select2-selection, | |
| .select2-search__field { | |
| cursor: $s2bs-cursor-disabled; | |
| } | |
| .select2-selection, | |
| .select2-selection--multiple .select2-selection__choice { | |
| background-color: $s2bs-input-bg-disabled; | |
| } | |
| .select2-selection__clear, | |
| .select2-selection--multiple .select2-selection__choice__remove { | |
| display: none; | |
| } | |
| } | |
| /*------------------------------------*\ | |
| #DROPDOWN | |
| \*------------------------------------*/ | |
| /** | |
| * Dropdown border color and box-shadow. | |
| */ | |
| .select2-dropdown { | |
| @include box-shadow($s2bs-dropdown-box-shadow); | |
| border-color: $s2bs-input-border-focus; | |
| overflow-x: hidden; | |
| margin-top: -1px; | |
| &--above { | |
| @include box-shadow($s2bs-dropdown-box-shadow-above); | |
| margin-top: 1px; | |
| } | |
| } | |
| /** | |
| * Limit the dropdown height. | |
| */ | |
| .select2-results > .select2-results__options { | |
| max-height: 200px; | |
| overflow-y: auto; | |
| } | |
| /*------------------------------------*\ | |
| #SINGLE SELECT2 | |
| \*------------------------------------*/ | |
| .select2-selection--single { | |
| height: $s2bs-input-height-base; | |
| line-height: $s2bs-line-height-base; | |
| padding: $s2bs-padding-base-vertical ($s2bs-padding-base-horizontal + $s2bs-caret-width-base*3) $s2bs-padding-base-vertical $s2bs-padding-base-horizontal; | |
| /** | |
| * Adjust the single Select2's dropdown arrow button appearance. | |
| */ | |
| .select2-selection__arrow { | |
| position: absolute; | |
| bottom: 0; | |
| right: $s2bs-padding-base-horizontal; | |
| top: 0; | |
| width: $s2bs-caret-width-base; | |
| b { | |
| border-color: $s2bs-dropdown-arrow-color transparent transparent transparent; | |
| border-style: solid; | |
| border-width: $s2bs-caret-width-base $s2bs-caret-width-base 0 $s2bs-caret-width-base; | |
| height: 0; | |
| left: 0; | |
| margin-left: -$s2bs-caret-width-base; | |
| margin-top: -$s2bs-caret-width-base/2; | |
| position: absolute; | |
| top: 50%; | |
| width: 0; | |
| } | |
| } | |
| .select2-selection__rendered { | |
| color: $s2bs-input-color; | |
| padding: 0; | |
| } | |
| .select2-selection__placeholder { | |
| color: $s2bs-input-color-placeholder; | |
| } | |
| } | |
| /*------------------------------------*\ | |
| #MULTIPLE SELECT2 | |
| \*------------------------------------*/ | |
| .select2-selection--multiple { | |
| min-height: $s2bs-input-height-base; | |
| padding: 0; | |
| height: auto; | |
| .select2-selection__rendered { | |
| box-sizing: border-box; | |
| display: block; | |
| line-height: $s2bs-line-height-base; | |
| list-style: none; | |
| margin: 0; | |
| overflow: hidden; | |
| padding: 0; | |
| width: 100%; | |
| text-overflow: ellipsis; | |
| white-space: nowrap; | |
| } | |
| .select2-selection__placeholder { | |
| color: $s2bs-input-color-placeholder; | |
| float: left; | |
| margin-top: 5px; | |
| } | |
| /** | |
| * Make Multi Select2's choices match Bootstrap 3's default button styles. | |
| */ | |
| .select2-selection__choice { | |
| color: $s2bs-input-color; | |
| background: $s2bs-btn-default-bg; | |
| border: 1px solid $s2bs-btn-default-border; | |
| border-radius: $s2bs-selection-choice-border-radius; | |
| cursor: default; | |
| float: left; | |
| margin: -($s2bs-padding-base-vertical - 1) 0 0 $s2bs-padding-base-horizontal/2; | |
| padding: 0 $s2bs-padding-base-vertical; | |
| } | |
| /** | |
| * Minus 2px borders. | |
| */ | |
| .select2-search--inline { | |
| .select2-search__field { | |
| background: transparent; | |
| padding: 0 $s2bs-padding-base-horizontal; | |
| height: $s2bs-input-height-base; | |
| line-height: $s2bs-line-height-base; | |
| margin-top: 0; | |
| min-width: 5em; | |
| } | |
| } | |
| .select2-selection__choice__remove { | |
| color: $s2bs-remove-choice-color; | |
| cursor: pointer; | |
| display: inline-block; | |
| font-weight: bold; | |
| margin-right: $s2bs-padding-base-vertical / 2; | |
| &:hover { | |
| color: $s2bs-remove-choice-hover-color; | |
| } | |
| } | |
| /** | |
| * Clear the selection. | |
| */ | |
| .select2-selection__clear { | |
| margin-top: $s2bs-padding-base-vertical; | |
| } | |
| } | |
| /** | |
| * Address Bootstrap control sizing classes | |
| * | |
| * 1. Reset Bootstrap defaults. | |
| * 2. Adjust the dropdown arrow button icon position. | |
| * | |
| * @see http://getbootstrap.com/css/#forms-control-sizes | |
| */ | |
| /* 1 */ | |
| .select2-selection--single.input-sm, | |
| .input-group-sm & .select2-selection--single, | |
| .form-group-sm & .select2-selection--single { | |
| border-radius: $s2bs-border-radius-small; | |
| font-size: $s2bs-font-size-small; | |
| height: $s2bs-input-height-small; | |
| line-height: $s2bs-line-height-small; | |
| padding: $s2bs-padding-small-vertical $s2bs-padding-small-horizontal + $s2bs-caret-width-base*3 $s2bs-padding-small-vertical $s2bs-padding-small-horizontal; | |
| /* 2 */ | |
| .select2-selection__arrow b { | |
| margin-left: -$s2bs-padding-small-vertical; | |
| } | |
| } | |
| .select2-selection--multiple.input-sm, | |
| .input-group-sm & .select2-selection--multiple, | |
| .form-group-sm & .select2-selection--multiple { | |
| min-height: $s2bs-input-height-small; | |
| border-radius: $s2bs-border-radius-small; | |
| .select2-selection__choice { | |
| font-size: $s2bs-font-size-small; | |
| line-height: $s2bs-line-height-small; | |
| margin: ($s2bs-padding-small-vertical) 0 0 $s2bs-padding-small-horizontal/2; | |
| padding: 0 $s2bs-padding-small-vertical; | |
| } | |
| .select2-search--inline .select2-search__field { | |
| padding: 0 $s2bs-padding-small-horizontal; | |
| font-size: $s2bs-font-size-small; | |
| height: $s2bs-input-height-small - 2; | |
| line-height: $s2bs-line-height-small; | |
| } | |
| .select2-selection__clear { | |
| margin-top: $s2bs-padding-small-vertical; | |
| } | |
| } | |
| .select2-selection--single.input-lg, | |
| .input-group-lg & .select2-selection--single, | |
| .form-group-lg & .select2-selection--single { | |
| border-radius: $s2bs-border-radius-large; | |
| font-size: $s2bs-font-size-large; | |
| height: $s2bs-input-height-large; | |
| line-height: $s2bs-line-height-large; | |
| padding: $s2bs-padding-large-vertical $s2bs-padding-large-horizontal + $s2bs-caret-width-large*3 $s2bs-padding-large-vertical $s2bs-padding-large-horizontal; | |
| /* 1 */ | |
| .select2-selection__arrow { | |
| width: $s2bs-caret-width-large; | |
| b { | |
| border-width: $s2bs-caret-width-large $s2bs-caret-width-large 0 $s2bs-caret-width-large; | |
| margin-left: -$s2bs-caret-width-large; | |
| margin-left: -$s2bs-padding-large-vertical; | |
| margin-top: -$s2bs-caret-width-large/2; | |
| } | |
| } | |
| } | |
| .select2-selection--multiple.input-lg, | |
| .input-group-lg & .select2-selection--multiple, | |
| .form-group-lg & .select2-selection--multiple { | |
| min-height: $s2bs-input-height-large; | |
| border-radius: $s2bs-border-radius-large; | |
| .select2-selection__choice { | |
| font-size: $s2bs-font-size-large; | |
| line-height: $s2bs-line-height-large; | |
| border-radius: $s2bs-selection-choice-border-radius; | |
| margin: ($s2bs-padding-large-vertical - 1) 0 0 $s2bs-padding-large-horizontal/2; | |
| padding: 0 $s2bs-padding-large-vertical; | |
| } | |
| .select2-search--inline .select2-search__field { | |
| padding: 0 $s2bs-padding-large-horizontal; | |
| font-size: $s2bs-font-size-large; | |
| height: $s2bs-input-height-large - 2; | |
| line-height: $s2bs-line-height-large; | |
| } | |
| .select2-selection__clear { | |
| margin-top: $s2bs-padding-large-vertical; | |
| } | |
| } | |
| .select2-selection.input-lg.select2-container--open { | |
| @include dropdown-arrow; | |
| } | |
| .input-group-lg & .select2-selection { | |
| &.select2-container--open { | |
| @include dropdown-arrow; | |
| } | |
| } | |
| /*------------------------------------*\ | |
| #RTL SUPPORT | |
| \*------------------------------------*/ | |
| &[dir="rtl"] { | |
| /** | |
| * Single Select2 | |
| * | |
| * 1. Makes sure that .select2-selection__placeholder is positioned | |
| * correctly. | |
| */ | |
| .select2-selection--single { | |
| padding-left: $s2bs-padding-base-horizontal + $s2bs-caret-width-base*3; | |
| padding-right: $s2bs-padding-base-horizontal; | |
| .select2-selection__rendered { | |
| padding-right: 0; | |
| padding-left: 0; | |
| text-align: right; /* 1 */ | |
| } | |
| .select2-selection__clear { | |
| float: left; | |
| } | |
| .select2-selection__arrow { | |
| left: $s2bs-padding-base-horizontal; | |
| right: auto; | |
| b { | |
| margin-left: 0; | |
| } | |
| } | |
| } | |
| /** | |
| * Multiple Select2 | |
| */ | |
| .select2-selection--multiple { | |
| .select2-selection__choice, | |
| .select2-selection__placeholder, | |
| .select2-search--inline { | |
| float: right; | |
| } | |
| .select2-selection__choice { | |
| margin-left: 0; | |
| margin-right: $s2bs-padding-base-horizontal/2; | |
| } | |
| .select2-selection__choice__remove { | |
| margin-left: 2px; | |
| margin-right: auto; | |
| } | |
| } | |
| } | |
| } | |
| /*------------------------------------*\ | |
| #ADDITIONAL GOODIES | |
| \*------------------------------------*/ | |
| /** | |
| * Address Bootstrap's validation states | |
| * | |
| * If a Select2 widget parent has one of Bootstrap's validation state modifier | |
| * classes, adjust Select2's border colors and focus states accordingly. | |
| * You may apply said classes to the Select2 dropdown (body > .select2-container) | |
| * via JavaScript match Bootstraps' to make its styles match. | |
| * | |
| * @see http://getbootstrap.com/css/#forms-control-validation | |
| */ | |
| .has-warning { | |
| @include validation-state-focus($state-warning-text); | |
| } | |
| .has-error { | |
| @include validation-state-focus($state-danger-text); | |
| } | |
| .has-success { | |
| @include validation-state-focus($state-success-text); | |
| } | |
| /** | |
| * Select2 widgets in Bootstrap Input Groups | |
| * | |
| * @see http://getbootstrap.com/components/#input-groups | |
| * @see https://github.com/twbs/bootstrap/blob/master/less/input-groups.less | |
| */ | |
| /** | |
| * Reset rounded corners | |
| */ | |
| .input-group > .select2-hidden-accessible { | |
| &:first-child + .select2-container--bootstrap > .selection > .select2-selection, | |
| &:first-child + .select2-container--bootstrap > .selection > .select2-selection.form-control { | |
| @include border-right-radius(0); | |
| } | |
| &:not(:first-child) + .select2-container--bootstrap:not(:last-child) > .selection > .select2-selection, | |
| &:not(:first-child) + .select2-container--bootstrap:not(:last-child) > .selection > .select2-selection.form-control { | |
| border-radius: 0; | |
| } | |
| &:not(:first-child):not(:last-child) + .select2-container--bootstrap:last-child > .selection > .select2-selection, | |
| &:not(:first-child):not(:last-child) + .select2-container--bootstrap:last-child > .selection > .select2-selection.form-control { | |
| @include border-left-radius(0); | |
| } | |
| } | |
| .input-group > .select2-container--bootstrap { | |
| display: table; | |
| table-layout: fixed; | |
| position: relative; | |
| z-index: 2; | |
| width: 100%; | |
| margin-bottom: 0; | |
| > .selection > .select2-selection.form-control { | |
| float: none; | |
| } | |
| /** | |
| * Adjust z-index like Bootstrap does to show the focus-box-shadow | |
| * above appended buttons in .input-group and .form-group. | |
| */ | |
| &.select2-container--open, /* .form-group */ | |
| &.select2-container--focus /* .input-group */ { | |
| z-index: 3; | |
| } | |
| /** | |
| * Adjust alignment of Bootstrap buttons in Bootstrap Input Groups to address | |
| * Multi Select2's height which - depending on how many elements have been selected - | |
| * may grow taller than its initial size. | |
| * | |
| * @see http://getbootstrap.com/components/#input-groups | |
| */ | |
| &, | |
| .input-group-btn, | |
| .input-group-btn .btn { | |
| vertical-align: top; | |
| } | |
| } | |
| /** | |
| * Temporary fix for https://github.com/select2/select2-bootstrap-theme/issues/9 | |
| * | |
| * Provides `!important` for certain properties of the class applied to the | |
| * original `<select>` element to hide it. | |
| * | |
| * @see https://github.com/select2/select2/pull/3301 | |
| * @see https://github.com/fk/select2/commit/31830c7b32cb3d8e1b12d5b434dee40a6e753ada | |
| */ | |
| .form-control.select2-hidden-accessible { | |
| position: absolute !important; | |
| width: 1px !important; | |
| } | |
| /** | |
| * Display override for inline forms | |
| */ | |
| .form-inline .select2-container--bootstrap { | |
| @media (min-width: $s2bs-screen-size-sm) { | |
| display: inline-block; | |
| } | |
| } |
To anyone having issues with select 2 multiple, or anything using the input-group, i fixed this by adding the following css:
/* Fix for select2 in bootstrap v4*/
.input-group > .select2-container--bootstrap {
display:block;
}
I then define the width as 100% when initialising the select2:
$(".select_example").select2({
width: "100%"
});
This fixed the issue for me:
For anyone coming across this, I've modified this gist to enfore Bootstrap's $enable-rounded global variable. It now uses the Bootstrap border-radius mixin to honour whether select2 elements have a rounded border or not.
My gist is at:
https://gist.github.com/DaleMckeown/e40d62c798544b886ee1bdfd0694131b
Results:
@judetucker Thanks for this, but I can't get it to work properly. Can you show which imports you use at the top of the file?
@edwardmp you need to init select2 with option theme: 'bootstrap' like this:
$('select').select2({ theme: 'bootstrap' });



Hint - to bring it to work, just include this header: