select-dropdown.scss 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. @use 'sass:map';
  2. @use 'mixins/mixins' as *;
  3. @use 'common/var' as *;
  4. $checked-icon: "data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E";
  5. @mixin checked-icon {
  6. content: '';
  7. position: absolute;
  8. top: 50%;
  9. right: 20px;
  10. border-top: none;
  11. border-right: none;
  12. background-repeat: no-repeat;
  13. background-position: center;
  14. background-color: map.get($select-option, 'selected-text-color');
  15. mask: url('#{$checked-icon}') no-repeat;
  16. mask-size: 100% 100%;
  17. -webkit-mask: url('#{$checked-icon}') no-repeat;
  18. -webkit-mask-size: 100% 100%;
  19. transform: translateY(-50%);
  20. width: 12px;
  21. height: 12px;
  22. }
  23. @include b(select-dropdown) {
  24. z-index: calc(#{getCssVar('index-top')} + 1);
  25. border-radius: getCssVar('border-radius-base');
  26. box-sizing: border-box;
  27. @include when(multiple) {
  28. & .#{$namespace}-select-dropdown__item.selected {
  29. color: map.get($select-option, 'selected-text-color');
  30. background-color: map.get($select-dropdown, 'bg-color');
  31. &.hover {
  32. background-color: map.get($select-option, 'hover-background');
  33. }
  34. &::after {
  35. @include checked-icon;
  36. }
  37. &.is-disabled {
  38. &::after {
  39. background-color: getCssVar('text-color-disabled');
  40. }
  41. }
  42. }
  43. }
  44. & .#{$namespace}-select-dropdown__option-item.is-selected {
  45. &::after {
  46. @include checked-icon;
  47. }
  48. }
  49. .#{$namespace}-scrollbar.is-empty .#{$namespace}-select-dropdown__list {
  50. padding: 0;
  51. }
  52. .#{$namespace}-select-dropdown__item.is-disabled {
  53. &:hover {
  54. background-color: unset;
  55. }
  56. &.selected {
  57. color: getCssVar('text-color-disabled');
  58. }
  59. }
  60. }
  61. @include b(select-dropdown__empty) {
  62. padding: map.get($select-dropdown, 'empty-padding');
  63. margin: 0;
  64. text-align: center;
  65. color: map.get($select-dropdown, 'empty-color');
  66. font-size: getCssVar('select-font-size');
  67. }
  68. @include b(select-dropdown__wrap) {
  69. max-height: map.get($select-dropdown, 'max-height');
  70. }
  71. @include b(select-dropdown__list) {
  72. list-style: none;
  73. padding: map.get($select-dropdown, 'padding');
  74. margin: 0;
  75. box-sizing: border-box;
  76. }