_dropdown.scss 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255
  1. // The dropdown menu
  2. .dropdown {
  3. [class*='btn-outline-'].dropdown-toggle.dropdown-toggle-split {
  4. border-left: 0 !important;
  5. }
  6. // If don't won't dropdown/up arrow
  7. &.no-arrow {
  8. .dropdown-toggle {
  9. &:after {
  10. display: none;
  11. }
  12. i,
  13. svg {
  14. margin-right: 0;
  15. }
  16. }
  17. }
  18. }
  19. // dropdown menu
  20. .dropdown-menu {
  21. // border: 1px solid rgba($black, 0.05); // border opacity has been reduced to make it look same as vue's dropdown border [component page, list view page]
  22. border-radius: $dropdown-border-radius;
  23. transform: scale(1, 0);
  24. box-shadow: $dropdown-box-shadow; // this according to vue version
  25. .dropdown-item {
  26. width: auto;
  27. cursor: pointer;
  28. }
  29. // Dropdown Header
  30. .dropdown-header {
  31. font-weight: 500;
  32. line-height: 1;
  33. }
  34. }
  35. .show {
  36. > .dropdown-menu {
  37. transform: scale(1, 1);
  38. opacity: 1;
  39. display: block;
  40. }
  41. .dropdown-toggle {
  42. &:focus {
  43. box-shadow: none;
  44. }
  45. }
  46. // For DD box shadow on show
  47. .btn {
  48. &.dropdown-toggle {
  49. &:focus {
  50. box-shadow: none;
  51. }
  52. }
  53. }
  54. }
  55. .dropdown-toggle {
  56. // changed icon caret
  57. &::after {
  58. border: none !important;
  59. content: ' ';
  60. background-image: url(str-replace(str-replace($chevron-down, 'currentColor', $white), '#', '%23'));
  61. background-repeat: no-repeat;
  62. background-position: center;
  63. background-size: 16px;
  64. color: $body-color;
  65. width: 14px;
  66. height: 11px;
  67. position: relative;
  68. top: 1px;
  69. right: 0px;
  70. left: 0.714rem;
  71. padding: 0;
  72. margin: 0;
  73. vertical-align: 0;
  74. }
  75. // arrow size according to toggle sizes
  76. &.btn-lg {
  77. &::after {
  78. background-size: 18px;
  79. }
  80. }
  81. &.btn-sm {
  82. &::after {
  83. background-size: 14px;
  84. }
  85. }
  86. &.dropdown-toggle-split {
  87. &:after {
  88. left: 0;
  89. }
  90. }
  91. // hide default arrow to show custom icon DD
  92. &.nav-hide-arrow {
  93. &::after {
  94. display: none;
  95. }
  96. }
  97. // Prevent the focus on the dropdown toggle when closing dropdowns
  98. &:focus {
  99. outline: 0;
  100. }
  101. }
  102. // DropUp
  103. .dropup {
  104. position: relative;
  105. .dropdown-toggle {
  106. // changed icon dropup caret
  107. &::after {
  108. background-image: url(str-replace(str-replace($chevron-up, 'currentColor', $white), '#', '%23'));
  109. background-repeat: no-repeat;
  110. background-position: center;
  111. background-size: 16px;
  112. width: 14px;
  113. height: 11px;
  114. content: '';
  115. vertical-align: 0.05rem;
  116. }
  117. }
  118. .dropdown-menu {
  119. min-width: 8rem;
  120. }
  121. }
  122. // DropLeft
  123. .dropleft {
  124. .dropdown-toggle {
  125. // changed icon dropup caret
  126. &::before {
  127. border: none !important;
  128. background-image: url(str-replace(str-replace($chevron-left, 'currentColor', $white), '#', '%23'));
  129. background-repeat: no-repeat;
  130. background-position: center;
  131. background-size: 16px;
  132. width: 14px;
  133. height: 11px;
  134. content: '';
  135. position: relative;
  136. left: 0;
  137. }
  138. }
  139. .dropdown-menu {
  140. min-width: 8rem;
  141. }
  142. }
  143. // DropRight
  144. .dropright {
  145. .dropdown-toggle {
  146. // changed icon dropup caret
  147. &::after {
  148. border: none !important;
  149. background-image: url(str-replace(str-replace($chevron-right, 'currentColor', $white), '#', '%23'));
  150. background-repeat: no-repeat;
  151. background-position: center;
  152. background-size: 16px;
  153. width: 14px;
  154. height: 11px;
  155. content: '';
  156. }
  157. }
  158. .dropdown-menu {
  159. min-width: 8rem;
  160. }
  161. }
  162. // Dropdown ::before position
  163. .dropdown-menu {
  164. // Dropdown margin according to dropdown position
  165. &[x-placement='bottom-start'],
  166. &[x-placement='bottom-end'] {
  167. margin-top: $dropdown_spacing;
  168. }
  169. &[x-placement='top-start'],
  170. &[x-placement='top-end'] {
  171. margin-bottom: $dropdown_spacing;
  172. }
  173. &[x-placement='right-start'] {
  174. margin-left: $dropdown_spacing;
  175. }
  176. &[x-placement='left-start'] {
  177. margin-right: $dropdown_spacing;
  178. }
  179. }
  180. // Dropdown icon
  181. .dropdown,
  182. .dropup {
  183. &.dropdown-icon-wrapper {
  184. .dropdown-toggle {
  185. &:after {
  186. display: none;
  187. }
  188. }
  189. .dropdown-menu {
  190. min-width: auto;
  191. .dropdown-item {
  192. padding: 0.5rem 1.1rem;
  193. cursor: pointer;
  194. i,
  195. svg {
  196. height: 1.3rem;
  197. width: 1.3rem;
  198. font-size: 1.3rem;
  199. }
  200. }
  201. }
  202. }
  203. }
  204. // Dropdown menu animation for Horizontal menu
  205. .horizontal-menu-wrapper .dropdown-menu,
  206. .header-navbar .dropdown-menu {
  207. animation-duration: 0.3s;
  208. animation-fill-mode: both;
  209. animation-name: slideIn;
  210. }
  211. // Hidden dropdown toggle arrow
  212. .dropdown-toggle.hide-arrow,
  213. .dropdown-toggle-hide-arrow > .dropdown-toggle {
  214. &::before,
  215. &::after {
  216. display: none;
  217. }
  218. }
  219. @keyframes slideIn {
  220. 0% {
  221. transform: translateY(1rem);
  222. opacity: 0;
  223. }
  224. 100% {
  225. transform: translateY(0rem);
  226. opacity: 1;
  227. }
  228. 0% {
  229. transform: translateY(1rem);
  230. opacity: 0;
  231. }
  232. }