VSliderTrack.sass 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. @use 'sass:map'
  2. @use 'sass:selector'
  3. @use '../../styles/settings'
  4. @use '../../styles/tools'
  5. @use './variables' as *
  6. @include tools.layer('components')
  7. // Theme
  8. .v-slider-track__background
  9. background-color: rgb(var(--v-theme-surface-variant))
  10. @media (forced-colors: active)
  11. background-color: highlight
  12. .v-slider-track__fill
  13. background-color: rgb(var(--v-theme-surface-variant))
  14. @media (forced-colors: active)
  15. background-color: highlight
  16. .v-slider-track__tick
  17. background-color: rgb(var(--v-theme-surface-variant))
  18. &--filled
  19. background-color: $slider-tick-background
  20. // Elements
  21. .v-slider-track
  22. border-radius: $slider-track-border-radius
  23. @media (forced-colors: active)
  24. border: thin solid buttontext
  25. .v-slider-track
  26. &__background, &__fill
  27. position: absolute
  28. transition: $slider-transition
  29. border-radius: inherit
  30. .v-slider--pressed &
  31. transition: none
  32. .v-input--error:not(.v-input--disabled) &
  33. background-color: currentColor
  34. .v-slider-track__ticks
  35. height: 100%
  36. width: 100%
  37. position: relative
  38. .v-slider-track__tick
  39. position: absolute
  40. opacity: 0
  41. transition: 0.2s opacity settings.$standard-easing
  42. border-radius: $slider-tick-border-radius
  43. width: var(--v-slider-tick-size)
  44. height: var(--v-slider-tick-size)
  45. transform: translate(calc(var(--v-slider-tick-size) / -2), calc(var(--v-slider-tick-size) / -2))
  46. &--first .v-slider-track__tick-label
  47. @include tools.ltr()
  48. transform: none
  49. @include tools.rtl()
  50. transform: translateX(100%)
  51. &--last .v-slider-track__tick-label
  52. @include tools.ltr()
  53. transform: translateX(-100%)
  54. @include tools.rtl()
  55. transform: none
  56. .v-slider-track__tick-label
  57. position: absolute
  58. user-select: none
  59. white-space: nowrap
  60. // Horizontal
  61. .v-slider.v-input--horizontal
  62. .v-slider-track
  63. display: flex
  64. align-items: center
  65. width: 100%
  66. height: $slider-track-active-size
  67. touch-action: pan-y
  68. &__background
  69. height: var(--v-slider-track-size)
  70. &__fill
  71. height: inherit
  72. .v-slider-track__tick
  73. margin-top: calc(#{$slider-track-active-size} / 2)
  74. @include tools.rtl()
  75. transform: translate(calc(var(--v-slider-tick-size) / 2), calc(var(--v-slider-tick-size) / -2))
  76. .v-slider-track__tick-label
  77. margin-top: calc(var(--v-slider-track-size) / 2 + #{$slider-tick-label-margin-top})
  78. @include tools.ltr()
  79. transform: translateX(-50%)
  80. @include tools.rtl()
  81. transform: translateX(50%)
  82. &--first
  83. margin-inline-start: calc(var(--v-slider-tick-size) + 1px)
  84. .v-slider-track__tick-label
  85. @include tools.ltr()
  86. transform: translateX(0%)
  87. @include tools.rtl()
  88. transform: translateX(0%)
  89. &--last
  90. margin-inline-start: calc(100% - var(--v-slider-tick-size) - 1px)
  91. .v-slider-track__tick-label
  92. @include tools.ltr()
  93. transform: translateX(-100%)
  94. @include tools.rtl()
  95. transform: translateX(100%)
  96. // Vertical
  97. .v-slider.v-input--vertical
  98. .v-slider-track
  99. height: 100%
  100. display: flex
  101. justify-content: center
  102. width: $slider-track-active-size
  103. touch-action: pan-x
  104. &__background
  105. width: var(--v-slider-track-size)
  106. &__fill
  107. width: inherit
  108. .v-slider-track__ticks
  109. height: 100%
  110. .v-slider-track__tick
  111. margin-inline-start: calc(#{$slider-track-active-size} / 2)
  112. transform: translate(calc(var(--v-slider-tick-size) / -2), calc(var(--v-slider-tick-size) / 2))
  113. @include tools.rtl()
  114. transform: translate(calc(var(--v-slider-tick-size) / 2), calc(var(--v-slider-tick-size) / 2))
  115. &--first
  116. bottom: calc(0% + var(--v-slider-tick-size) + 1px)
  117. &--last
  118. bottom: calc(100% - var(--v-slider-tick-size) - 1px)
  119. .v-slider-track__tick-label
  120. margin-inline-start: calc(var(--v-slider-track-size) / 2 + #{$slider-tick-label-margin-start})
  121. transform: translateY(-50%)
  122. // Modifiers
  123. .v-slider-track__ticks--always-show, .v-slider--focused
  124. .v-slider-track__tick
  125. opacity: 1
  126. .v-slider-track__background--opacity
  127. opacity: 0.38