413aa24cf1d5c8772af38956c4dc5ca364fe47a1ddf1034c0331241efa869d84ba2f610f38aab9a49b724f69bbfd3a6da75a9dc0d48648ca4e8154375927e4 5.7 KB

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