VInput.sass 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. @use 'sass:math'
  2. @use 'sass:selector'
  3. @use '../../styles/tools'
  4. @use './variables' as *
  5. @include tools.layer('components')
  6. .v-input
  7. display: grid
  8. flex: $input-flex
  9. font-size: $input-font-size
  10. font-weight: $input-font-weight
  11. line-height: $input-line-height
  12. &--disabled
  13. pointer-events: none
  14. @at-root
  15. @include tools.density('v-input', $input-density) using ($modifier)
  16. --v-input-control-height: #{$input-control-height + $modifier}
  17. --v-input-padding-top: #{16px + $modifier * .5}
  18. .v-input--vertical
  19. grid-template-areas: "append" "control" "prepend"
  20. grid-template-rows: max-content auto max-content
  21. grid-template-columns: min-content
  22. .v-input__prepend
  23. margin-block-start: $input-affix-margin-inside
  24. .v-input__append
  25. margin-block-end: $input-affix-margin-inside
  26. .v-input--horizontal
  27. grid-template-areas: "prepend control append" "a messages b"
  28. grid-template-columns: max-content minmax(0, 1fr) max-content
  29. grid-template-rows: auto auto
  30. .v-input__prepend
  31. margin-inline-end: $input-affix-margin-inside
  32. .v-input__append
  33. margin-inline-start: $input-affix-margin-inside
  34. .v-input__details
  35. align-items: flex-end
  36. display: flex
  37. font-size: $input-details-font-size
  38. font-weight: $input-details-font-weight
  39. grid-area: messages
  40. letter-spacing: $input-details-letter-spacing
  41. line-height: $input-details-line-height
  42. min-height: $input-details-min-height
  43. padding-top: $input-details-padding-above
  44. overflow: hidden
  45. justify-content: space-between
  46. .v-input__details,
  47. .v-input__prepend,
  48. .v-input__append
  49. > .v-icon
  50. opacity: var(--v-medium-emphasis-opacity)
  51. .v-input--disabled &,
  52. .v-input--error &
  53. > .v-icon,
  54. .v-messages
  55. opacity: 1
  56. .v-input--disabled &
  57. opacity: var(--v-disabled-opacity)
  58. .v-input--error:not(.v-input--disabled) &
  59. > .v-icon,
  60. .v-messages
  61. color: rgb(var(--v-theme-error))
  62. .v-input__prepend,
  63. .v-input__append
  64. display: flex
  65. align-items: flex-start
  66. padding-top: var(--v-input-padding-top)
  67. .v-input--center-affix &
  68. align-items: center
  69. padding-top: 0
  70. .v-input__prepend
  71. grid-area: prepend
  72. .v-input__append
  73. grid-area: append
  74. .v-input__control
  75. display: flex
  76. grid-area: control
  77. .v-input
  78. &--hide-spin-buttons
  79. input::-webkit-outer-spin-button,
  80. input::-webkit-inner-spin-button
  81. -webkit-appearance: none
  82. margin: 0
  83. input[type=number]
  84. -moz-appearance: textfield
  85. &--plain-underlined
  86. .v-input__prepend,
  87. .v-input__append
  88. $this: &
  89. align-items: flex-start
  90. @at-root
  91. @include tools.density('v-input', $input-density) using ($modifier)
  92. @at-root #{selector.append(&, $this)}
  93. padding-top: calc(var(--v-input-padding-top) + #{math.max(0px, 4px + $modifier * .25)})