dselect.scss 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. @import "../../node_modules/bootstrap/scss/functions";
  2. // @import "your-custom-variables";
  3. @import "../../node_modules/bootstrap/scss/variables";
  4. @import "../../node_modules/bootstrap/scss/mixins";
  5. $dselect-clear-icon-width: .625rem;
  6. .dselect-wrapper {
  7. // Toggler
  8. .form-select {
  9. padding-left: $form-select-padding-x;
  10. display: flex;
  11. align-items: center;
  12. flex-wrap: wrap;
  13. gap: .25rem;
  14. text-align: left;
  15. &.show { // ref: form-select:focus
  16. border-color: $form-select-focus-border-color;
  17. outline: 0;
  18. @if $enable-shadows {
  19. @include box-shadow($form-select-box-shadow, $form-select-focus-box-shadow);
  20. } @else {
  21. // Avoid using mixin so we can pass custom focus shadow properly
  22. box-shadow: $form-select-focus-box-shadow;
  23. }
  24. }
  25. &.dselect-clearable {
  26. padding-right: add($form-select-indicator-padding + ($form-select-padding-x / 2), $dselect-clear-icon-width);
  27. }
  28. &.form-select-sm {
  29. padding-left: $form-select-padding-x-sm;
  30. &.dselect-clearable {
  31. padding-right: add($form-select-indicator-padding + ($form-select-padding-x-sm / 2), $dselect-clear-icon-width);
  32. }
  33. }
  34. &.form-select-lg {
  35. padding-left: $form-select-padding-x-lg;
  36. &.dselect-clearable {
  37. padding-right: add($form-select-indicator-padding + ($form-select-padding-x-lg / 2), $dselect-clear-icon-width);
  38. }
  39. }
  40. }
  41. // Menu
  42. .dropdown-menu {
  43. padding: $form-select-padding-x / 2;
  44. width: 100%;
  45. > .flex-column {
  46. gap:$form-select-padding-x / 2;
  47. }
  48. }
  49. .form-select-sm + .dropdown-menu {
  50. padding: $form-select-padding-x-sm / 2;
  51. @include font-size($form-select-font-size-sm);
  52. }
  53. .form-select-lg + .dropdown-menu {
  54. padding: $form-select-padding-x-lg / 2;
  55. @include font-size($form-select-font-size-lg);
  56. }
  57. // Item
  58. .dropdown-item,
  59. .dropdown-header {
  60. padding-left: $form-select-padding-x / 2;
  61. padding-right: $form-select-padding-x / 2;
  62. }
  63. .form-select-sm + .dropdown-menu .dropdown-item,
  64. .form-select-sm + .dropdown-menu .dropdown-header {
  65. padding-left: $form-select-padding-x-sm / 2;
  66. padding-right: $form-select-padding-x-sm / 2;
  67. }
  68. .form-select-lg + .dropdown-menu .dropdown-item,
  69. .form-select-lg + .dropdown-menu .dropdown-header {
  70. padding-left: $form-select-padding-x-lg / 2;
  71. padding-right: $form-select-padding-x-lg / 2;
  72. }
  73. // Search input
  74. .form-control {
  75. border-radius: 0;
  76. box-shadow: none !important;
  77. border-color: $input-border-color !important;
  78. padding: $dropdown-item-padding-y subtract($form-select-padding-x / 2, $input-border-width);
  79. font-size: inherit;
  80. }
  81. .form-select-sm + .dropdown-menu .form-control {
  82. padding: subtract($dropdown-item-padding-y, 1px) subtract($form-select-padding-x-sm / 2, $input-border-width);
  83. }
  84. .form-select-lg + .dropdown-menu .form-control {
  85. padding: $dropdown-item-padding-y subtract($form-select-padding-x-lg / 2, $input-border-width);
  86. }
  87. // No results
  88. .dselect-no-results {
  89. padding: $dropdown-item-padding-y $form-select-padding-x / 2;
  90. }
  91. .form-select-sm + .dropdown-menu .dselect-no-results {
  92. padding: subtract($dropdown-item-padding-y, 1px) $form-select-padding-x-sm / 2;
  93. }
  94. .form-select-lg + .dropdown-menu .dselect-no-results {
  95. padding: $dropdown-item-padding-y $form-select-padding-x-lg / 2;
  96. }
  97. // Tag
  98. .dselect-tag {
  99. background-color: $secondary;
  100. color: $light;
  101. padding-left: add(.5rem, 14px);
  102. padding-right: .5rem;
  103. border-radius: $border-radius;
  104. height: calc(#{$form-select-line-height} * #{$font-size-base});
  105. line-height: calc((#{$form-select-line-height} * #{$font-size-base}) - 1px);
  106. position: relative;
  107. }
  108. .form-select-sm .dselect-tag {
  109. height: auto;
  110. line-height: inherit;
  111. }
  112. .form-select-lg .dselect-tag {
  113. height: calc(#{$form-select-line-height} * #{$font-size-lg});
  114. line-height: calc(#{$form-select-line-height} * #{$font-size-lg});
  115. }
  116. .dselect-tag-remove {
  117. position: absolute;
  118. left: .25rem;
  119. top: 50%;
  120. margin-top: -7px;
  121. color: rgba($light, .35);
  122. @include transition(color .15s ease-in-out);
  123. &:hover {
  124. color: $light;
  125. }
  126. }
  127. // Placeholder
  128. .dselect-placeholder {
  129. color: $input-placeholder-color;
  130. }
  131. // Optgroups
  132. .dropdown-header ~ .dropdown-item {
  133. padding-left: $form-select-padding-x;
  134. padding-right: $form-select-padding-x;
  135. }
  136. .form-select-sm + .dropdown-menu .dropdown-header {
  137. font-size: .85em;
  138. ~ .dropdown-item {
  139. padding-left: $form-select-padding-x-sm;
  140. padding-right: $form-select-padding-x-sm;
  141. }
  142. }
  143. .form-select-lg + .dropdown-menu .dropdown-header {
  144. font-size: .85em;
  145. ~ .dropdown-item {
  146. padding-left: $form-select-padding-x-lg;
  147. padding-right: $form-select-padding-x-lg;
  148. }
  149. }
  150. // Clear
  151. .dselect-clear {
  152. position: absolute;
  153. padding: 0;
  154. border: 0;
  155. box-shadow: none;
  156. top: 0;
  157. bottom: 0;
  158. right: $form-select-indicator-padding;
  159. display: flex;
  160. align-items: center;
  161. color: $text-muted;
  162. cursor: pointer;
  163. &:hover {
  164. color: inherit;
  165. }
  166. svg {
  167. width: $dselect-clear-icon-width;
  168. height: $dselect-clear-icon-width;
  169. }
  170. }
  171. [data-dselect-text=""] ~ .dselect-clear {
  172. display: none;
  173. }
  174. // Validation
  175. .was-validated .form-select:invalid + & .form-select,
  176. .form-select.is-invalid + & .form-select {
  177. border-color: $form-feedback-invalid-color;
  178. &.show,
  179. &:focus {
  180. box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($form-feedback-invalid-color, $input-btn-focus-color-opacity);
  181. }
  182. }
  183. .was-validated .form-select:valid + & .form-select,
  184. .form-select.is-valid + & .form-select {
  185. border-color: $form-feedback-valid-color;
  186. &.show,
  187. &:focus {
  188. box-shadow: 0 0 $input-btn-focus-blur $input-focus-width rgba($form-feedback-valid-color, $input-btn-focus-color-opacity);
  189. }
  190. }
  191. }