cascader.scss 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. @use 'sass:map';
  2. @use 'mixins/mixins' as *;
  3. @use 'mixins/var' as *;
  4. @use 'common/var' as *;
  5. @mixin cascader-tag-normal($background-color) {
  6. .#{$namespace}-tag {
  7. display: inline-flex;
  8. align-items: center;
  9. max-width: 100%;
  10. margin: 2px 0 2px 6px;
  11. text-overflow: ellipsis;
  12. background: $background-color;
  13. &.#{$namespace}-tag--dark,
  14. &.#{$namespace}-tag--plain {
  15. background-color: getCssVar('tag', 'bg-color');
  16. }
  17. &:not(.is-hit) {
  18. border-color: transparent;
  19. &.#{$namespace}-tag--dark,
  20. &.#{$namespace}-tag--plain {
  21. border-color: getCssVar('tag', 'border-color');
  22. }
  23. }
  24. > span {
  25. flex: 1;
  26. overflow: hidden;
  27. text-overflow: ellipsis;
  28. }
  29. .#{$namespace}-icon-close {
  30. flex: none;
  31. background-color: getCssVar('text-color', 'placeholder');
  32. color: getCssVar('color-white');
  33. &:hover {
  34. background-color: getCssVar('text-color', 'secondary');
  35. }
  36. }
  37. }
  38. }
  39. @include b(cascader) {
  40. @include set-component-css-var('cascader', $cascader);
  41. display: inline-block;
  42. vertical-align: middle;
  43. position: relative;
  44. font-size: getCssVar('font-size', 'base');
  45. line-height: map.get($input-height, 'default');
  46. outline: none;
  47. &:not(.is-disabled):hover {
  48. .#{$namespace}-input__wrapper {
  49. cursor: pointer;
  50. box-shadow: 0 0 0 1px getCssVar('input', 'hover-border-color') inset;
  51. }
  52. }
  53. .#{$namespace}-input {
  54. display: flex;
  55. cursor: pointer;
  56. .#{$namespace}-input__inner {
  57. text-overflow: ellipsis;
  58. cursor: pointer;
  59. }
  60. .#{$namespace}-input__suffix-inner {
  61. .#{$namespace}-icon {
  62. height: calc(100% - 2px);
  63. svg {
  64. vertical-align: middle;
  65. }
  66. }
  67. }
  68. .icon-arrow-down {
  69. transition: transform getCssVar('transition-duration');
  70. font-size: 14px;
  71. @include when(reverse) {
  72. transform: rotateZ(180deg);
  73. }
  74. }
  75. .icon-circle-close:hover {
  76. color: var(
  77. #{getCssVarName('input', 'clear-hover-color')},
  78. map.get($input, 'clear-hover-color')
  79. );
  80. }
  81. @include when(focus) {
  82. .#{$namespace}-input__wrapper {
  83. box-shadow: 0 0 0 1px
  84. var(
  85. #{getCssVarName('input', 'focus-border-color')},
  86. map.get($input, 'focus-border-color')
  87. )
  88. inset;
  89. }
  90. }
  91. }
  92. @each $size in (large, small) {
  93. @include m($size) {
  94. font-size: map.get($input-font-size, $size);
  95. line-height: map.get($input-height, $size);
  96. }
  97. }
  98. @include when(disabled) {
  99. .#{$namespace}-cascader__label {
  100. z-index: calc(getCssVar('index', 'normal') + 1);
  101. color: getCssVar('disabled-text-color');
  102. }
  103. }
  104. @include e(dropdown) {
  105. @include set-component-css-var('cascader', $cascader);
  106. }
  107. @include e(dropdown) {
  108. font-size: getCssVar('cascader-menu-font-size');
  109. border-radius: getCssVar('cascader-menu-radius');
  110. @include picker-popper(
  111. getCssVar('cascader-menu-fill'),
  112. getCssVar('cascader-menu-border'),
  113. getCssVar('cascader-menu-shadow')
  114. );
  115. &.#{$namespace}-popper {
  116. box-shadow: getCssVar('cascader-menu-shadow');
  117. }
  118. }
  119. @include e(tags) {
  120. position: absolute;
  121. left: 0;
  122. right: 30px;
  123. top: 50%;
  124. transform: translateY(-50%);
  125. display: flex;
  126. flex-wrap: wrap;
  127. line-height: normal;
  128. text-align: left;
  129. box-sizing: border-box;
  130. @include cascader-tag-normal(getCssVar('cascader-tag-background'));
  131. &.is-validate {
  132. right: 55px;
  133. }
  134. }
  135. @include e(collapse-tags) {
  136. white-space: normal;
  137. z-index: getCssVar('index-normal');
  138. @include cascader-tag-normal(getCssVar('fill-color'));
  139. }
  140. @include e(suggestion-panel) {
  141. border-radius: getCssVar('cascader-menu', 'radius');
  142. }
  143. @include e(suggestion-list) {
  144. max-height: 204px;
  145. margin: 0;
  146. padding: 6px 0;
  147. font-size: getCssVar('font-size', 'base');
  148. color: getCssVar('cascader-menu', 'text-color');
  149. text-align: center;
  150. }
  151. @include e(suggestion-item) {
  152. display: flex;
  153. justify-content: space-between;
  154. align-items: center;
  155. height: 34px;
  156. padding: 0 15px;
  157. text-align: left;
  158. outline: none;
  159. cursor: pointer;
  160. &:hover,
  161. &:focus {
  162. background: getCssVar('cascader-node', 'background-hover');
  163. }
  164. &.is-checked {
  165. color: getCssVar('cascader', 'menu-selected-text-color');
  166. font-weight: bold;
  167. }
  168. > span {
  169. margin-right: 10px;
  170. }
  171. }
  172. @include e(empty-text) {
  173. margin: 10px 0;
  174. color: getCssVar('cascader', 'color-empty');
  175. }
  176. @include e(search-input) {
  177. flex: 1;
  178. height: 24px;
  179. min-width: 60px;
  180. margin: 2px 0 2px map.get($input-padding-horizontal, 'default')-$border-width;
  181. padding: 0;
  182. color: getCssVar('cascader', 'menu-text-color');
  183. border: none;
  184. outline: none;
  185. box-sizing: border-box;
  186. background: transparent;
  187. &::placeholder {
  188. // two input overlap
  189. color: transparent;
  190. }
  191. }
  192. }