5cfe0402dd922cf87c6c7ba0bea50760473b204ecd11bafcd865daa5c057f30acdf84c97251e0a3e2d65b81a0b71fd1d0c89c977ba6bbd9b2cc7ad8c015fbd 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. @use 'sass:map';
  2. @use 'mixins/mixins' as *;
  3. @use 'mixins/var' as *;
  4. @use 'common/var' as *;
  5. $rate-height: () !default;
  6. $rate-height: map.merge(
  7. (
  8. 'large': 40px,
  9. 'default': 32px,
  10. 'small': 24px,
  11. ),
  12. $rate-height
  13. );
  14. $rate-size: () !default;
  15. $rate-size: map.merge(
  16. (
  17. 'small': 14px,
  18. ),
  19. $rate-size
  20. );
  21. @include b(rate) {
  22. @include set-component-css-var('rate', $rate);
  23. }
  24. @include b(rate) {
  25. display: inline-flex;
  26. align-items: center;
  27. height: map.get($rate-height, 'default');
  28. &:focus,
  29. &:active {
  30. outline: none;
  31. }
  32. &:focus-visible {
  33. @include e(item) {
  34. & .#{bem('rate', 'icon')} {
  35. @include when(focus-visible) {
  36. outline: 2px solid getCssVar('rate', 'outline-color');
  37. transition: outline-offset 0s, outline 0s;
  38. }
  39. }
  40. }
  41. }
  42. @include e(item) {
  43. cursor: pointer;
  44. display: inline-block;
  45. position: relative;
  46. font-size: 0;
  47. vertical-align: middle;
  48. color: getCssVar('rate-void-color');
  49. line-height: normal;
  50. }
  51. & .#{bem('rate', 'icon')} {
  52. position: relative;
  53. display: inline-block;
  54. font-size: getCssVar('rate-icon-size');
  55. margin-right: getCssVar('rate-icon-margin');
  56. transition: getCssVar('transition-duration');
  57. &.hover {
  58. transform: scale(1.15);
  59. }
  60. .path2 {
  61. position: absolute;
  62. left: 0;
  63. top: 0;
  64. }
  65. @include when(active) {
  66. color: getCssVar('rate', 'fill-color');
  67. }
  68. }
  69. @include e(decimal) {
  70. position: absolute;
  71. top: 0;
  72. left: 0;
  73. display: inline-block;
  74. overflow: hidden;
  75. color: getCssVar('rate', 'fill-color');
  76. @include m('box') {
  77. position: absolute;
  78. top: 0;
  79. left: 0;
  80. }
  81. }
  82. @include e(text) {
  83. font-size: getCssVar('rate-font-size');
  84. vertical-align: middle;
  85. color: getCssVar('rate', 'text-color');
  86. }
  87. @each $size in (large, small) {
  88. @include m($size) {
  89. height: map.get($rate-height, $size);
  90. & .#{bem('rate', 'icon')} {
  91. font-size: map.get($rate-size, $size);
  92. }
  93. }
  94. }
  95. @include when(disabled) {
  96. @include e(item) {
  97. cursor: auto;
  98. color: getCssVar('rate', 'disabled-void-color');
  99. }
  100. }
  101. }