vue-select.scss 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341
  1. $options-padding-x: 20px;
  2. $options-padding-y: 7px;
  3. @import '~@resources/scss/base/bootstrap-extended/include';
  4. // Overrides user variable
  5. @import '~@resources/scss/base/components/include';
  6. @import 'vue-select/src/scss/global/_variables.scss';
  7. // Global Component Variables
  8. $vs-component-line-height: 1.8;
  9. $vs-component-placeholder-color: $body-color;
  10. // Active State
  11. $vs-state-active-bg: rgba($primary, 0.12);
  12. $vs-state-active-color: $primary !important;
  13. // Border
  14. $vs-border-width: $input-border-width;
  15. $vs-border-radius: $input-border-radius;
  16. $vs-border-color: $input-border-color;
  17. // Selected
  18. $vs-selected-bg: $primary;
  19. $vs-selected-border-width: 0;
  20. // Dropdown
  21. $vs-dropdown-box-shadow: 0px 4px 25px 0px rgba(0, 0, 0, 0.1);
  22. @import 'vue-select/src/scss/vue-select.scss';
  23. .vs__open-indicator {
  24. fill: none;
  25. margin-top: 0.15rem;
  26. }
  27. // Matches height of input element for consistency
  28. .vs__dropdown-toggle {
  29. padding: 0.59px 0 4px 0;
  30. transition: all 0.25s ease-in-out;
  31. .vs--single & {
  32. padding-left: 6px;
  33. }
  34. }
  35. .vs__dropdown-option--disabled {
  36. &.vs__dropdown-option--selected {
  37. background: $primary !important;
  38. }
  39. opacity: 0.5;
  40. }
  41. // Options list color
  42. .vs__dropdown-option {
  43. color: $body-color;
  44. }
  45. .vs__dropdown-option,
  46. .vs__no-options {
  47. // We have only update Y padding
  48. padding: $options-padding-y $options-padding-x;
  49. }
  50. /* rtl:begin:ignore */
  51. .vs__dropdown-option--selected {
  52. background-color: $primary;
  53. color: $white;
  54. position: relative;
  55. &::after {
  56. content: '';
  57. height: 1.1rem;
  58. width: 1.1rem;
  59. display: inline-block;
  60. position: absolute;
  61. // vertically center icon
  62. top: 50%;
  63. transform: translateY(-50%);
  64. right: $options-padding-x;
  65. [dir='rtl'] & {
  66. left: $options-padding-x;
  67. right: unset;
  68. }
  69. // Icon
  70. background-image: url(str-replace(str-replace($check, 'currentColor', $white), '#', '%23'));
  71. background-repeat: no-repeat;
  72. background-position: center;
  73. background-size: 1.1rem;
  74. }
  75. // Because, highlight get primary color and if item is selected we want to keep white color even if it's hovered/highlighted
  76. &.vs__dropdown-option--highlight {
  77. color: $white !important;
  78. background-color: $primary !important;
  79. }
  80. }
  81. /* rtl:end:ignore */
  82. // Update color of clear icon
  83. .vs__clear {
  84. svg {
  85. color: $body-color;
  86. }
  87. }
  88. // Selected Color. It don't have any variable to override. (text in tag)
  89. .vs__selected {
  90. color: $white;
  91. // Single select selected text
  92. .v-select.vs--single & {
  93. color: $body-color;
  94. margin-top: 5px;
  95. // Add transition when selected option is moved when focus
  96. transition: transform 0.2s ease;
  97. input {
  98. padding-left: 0;
  99. }
  100. }
  101. // Slide selected option to right on focus
  102. // * Just like on input focus we get placeholder moved
  103. .vs--single.vs--open & {
  104. transform: translateX(5px);
  105. }
  106. // Close icon in tag
  107. .vs__deselect {
  108. color: inherit;
  109. }
  110. }
  111. // Tag/Multi Select
  112. .v-select {
  113. &:not(.vs--single) {
  114. .vs__selected {
  115. border-radius: 3px;
  116. padding: 0 0.6em;
  117. font-size: 0.9rem;
  118. margin: 5px 2px 2px 5px;
  119. }
  120. .vs__deselect {
  121. svg {
  122. transform: scale(0.8);
  123. vertical-align: text-top;
  124. }
  125. }
  126. }
  127. }
  128. // Dropdown Position
  129. .vs__dropdown-menu {
  130. top: calc(100% + 1rem);
  131. border: none;
  132. border-radius: 6px;
  133. padding: 0;
  134. }
  135. // Input style when dropdown is open
  136. .vs--open .vs__dropdown-toggle {
  137. border-color: $input-focus-border-color;
  138. border-bottom-color: $input-focus-border-color;
  139. border-bottom-left-radius: $vs-border-radius;
  140. border-bottom-right-radius: $vs-border-radius;
  141. box-shadow: $input-focus-box-shadow;
  142. }
  143. // Tag styling
  144. // .v-select:not(.vs--single) {
  145. // .vs__selected-options {
  146. // .vs__selected {
  147. // background-color: $primary;
  148. // border: none;
  149. // color: #fff;
  150. // button {
  151. // svg {
  152. // fill: white;
  153. // }
  154. // }
  155. // }
  156. // }
  157. // }
  158. // ------------------------------------------------
  159. // Size: Large
  160. // ------------------------------------------------
  161. .select-size-lg {
  162. .vs__selected {
  163. font-size: 1rem !important;
  164. }
  165. &.vs--single.vs--open .vs__selected {
  166. margin-top: 6px;
  167. }
  168. .vs__dropdown-toggle,
  169. .vs__selected {
  170. font-size: 1.25rem;
  171. }
  172. .vs__dropdown-toggle {
  173. padding: 5px;
  174. input {
  175. margin-top: 0;
  176. }
  177. }
  178. .vs__deselect {
  179. svg {
  180. transform: scale(1) !important;
  181. vertical-align: middle !important;
  182. }
  183. }
  184. }
  185. // ------------------------------------------------
  186. // Size: Small
  187. // ------------------------------------------------
  188. .select-size-sm {
  189. // Remove toggle padding from medium size
  190. .vs__dropdown-toggle {
  191. padding-bottom: 0;
  192. padding: 1px;
  193. }
  194. &.vs--single .vs__dropdown-toggle {
  195. padding: 2px;
  196. }
  197. // set line-height and font size for sm
  198. .vs__dropdown-toggle,
  199. .vs__selected {
  200. // line-height: 1.8;
  201. font-size: 0.9rem;
  202. }
  203. // Set close and dropdown icon position in center
  204. .vs__actions {
  205. padding-top: 2px;
  206. padding-bottom: 2px;
  207. }
  208. .vs__deselect {
  209. svg {
  210. vertical-align: middle !important;
  211. }
  212. }
  213. // Remove mt from search
  214. .vs__search {
  215. margin-top: 0;
  216. }
  217. // Selected options size
  218. &.v-select .vs__selected {
  219. padding: 0 0.3rem;
  220. font-size: 0.75rem;
  221. }
  222. // Only set margin for multi/tag select
  223. &.v-select:not(.vs--single) .vs__selected {
  224. margin: 4px 5px;
  225. }
  226. // Selected options size for single selection
  227. &.v-select.vs--single .vs__selected {
  228. margin-top: 1px;
  229. }
  230. // Set margin-top for selected when input is selected
  231. &.vs--single.vs--open {
  232. .vs__selected {
  233. margin-top: 4px;
  234. }
  235. }
  236. }
  237. // ------------------------Dark Layout------------------//
  238. .dark-layout {
  239. //vue select
  240. .vs__dropdown-toggle {
  241. background: $theme-dark-input-bg;
  242. color: $theme-dark-body-color;
  243. border-color: $theme-dark-input-border-color;
  244. }
  245. .vs__selected-options {
  246. input {
  247. color: $theme-dark-body-color;
  248. &::placeholder {
  249. color: $theme-dark-input-placeholder-color;
  250. }
  251. }
  252. }
  253. .vs__actions {
  254. svg {
  255. fill: $theme-dark-input-border-color;
  256. }
  257. }
  258. .vs__dropdown-menu {
  259. background: $theme-dark-input-bg;
  260. li {
  261. color: $theme-dark-body-color;
  262. }
  263. }
  264. .v-select {
  265. &:not(.vs--single) {
  266. .vs__selected {
  267. background-color: rgba($primary, 0.12);
  268. color: $primary;
  269. }
  270. }
  271. // For single select
  272. &.vs--single {
  273. .vs__selected {
  274. color: $theme-dark-body-color !important;
  275. }
  276. }
  277. }
  278. // Disabled styles
  279. .vs--disabled {
  280. .vs__dropdown-toggle,
  281. .vs__clear,
  282. .vs__search,
  283. .vs__selected,
  284. .vs__open-indicator {
  285. background-color: $theme-dark-input-bg;
  286. opacity: 0.5;
  287. }
  288. }
  289. }