tree.scss 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354
  1. @import './variables.scss';
  2. $module: #{$prefix}-tree;
  3. .#{$module} {
  4. &-search-wrapper {
  5. padding: $spacing-tree_search_wrapper-paddingY $spacing-tree_search_wrapper-paddingX;
  6. }
  7. }
  8. .#{$module}-wrapper {
  9. display: flex;
  10. flex-direction: column;
  11. }
  12. .#{$module}-option-list {
  13. overflow-x: hidden;
  14. overflow-y: auto;
  15. box-sizing: border-box;
  16. flex: 1;
  17. padding: $spacing-tree_optionList-paddingY $spacing-tree_optionList-paddingX;
  18. ul,
  19. li {
  20. list-style-type: none;
  21. padding: 0;
  22. margin: 0;
  23. }
  24. li.#{$module}-option {
  25. box-sizing: border-box;
  26. padding-top: $spacing-tree_option-paddingTop;
  27. padding-bottom: $spacing-tree_option-paddingBottom;
  28. }
  29. li > .#{$module}-option-label {
  30. list-style-type: none;
  31. padding: 0;
  32. }
  33. .#{$module}-option-expand-icon,
  34. .#{$module}-option-empty-icon {
  35. box-sizing: border-box;
  36. width: $width-tree_emptyIcon;
  37. color: $color-tree_option-icon-default;
  38. margin-right: $spacing-tree_icon-marginRight;
  39. display: flex;
  40. flex-shrink: 0;
  41. }
  42. .#{$module}-option {
  43. display: flex;
  44. align-items: center;
  45. cursor: pointer;
  46. transition: background-color $transition_duration-tree_option-bg $transition_function-tree_option-bg $transition_delay-tree_option-bg;
  47. transform:scale($transform_scale-tree-option);
  48. @include font-size-regular;
  49. word-break: break-word;
  50. color: $color-tree_option-text-default;
  51. position: relative;
  52. &-label {
  53. display: flex;
  54. align-items: center;
  55. & > .#{$prefix}-icon {
  56. margin-right: $spacing-tree_label_withIcon-marginRight;
  57. }
  58. .#{$prefix}-checkbox {
  59. margin-right: $spacing-tree_label_withIcon-marginRight;
  60. }
  61. }
  62. &-label-text {
  63. display: block;
  64. flex: 1;
  65. }
  66. &-ellipsis {
  67. .#{$module}-option-label-text {
  68. white-space: nowrap;
  69. overflow: hidden;
  70. text-overflow: ellipsis;
  71. }
  72. }
  73. &-label-text,
  74. .#{$prefix}-checkbox-addon {
  75. border-radius: $radius-tree_checkbox_addon;
  76. &:hover {
  77. background-color: $color-tree_option-bg-hover;
  78. }
  79. &:active {
  80. background-color: $color-tree_option_selected-bg-default;
  81. }
  82. }
  83. &-item-icon {
  84. color: $color-tree_option-icon-default;
  85. }
  86. &-active {
  87. .#{$module}-option-label-text {
  88. background-color: $color-tree_option-bg-active;
  89. }
  90. &:hover,
  91. &:active {
  92. background-color: transparent;
  93. }
  94. }
  95. &-selected {
  96. .#{$module}-option-label {
  97. background-color: $color-tree_option-bg-active;
  98. &:hover,
  99. &:active {
  100. background-color: $color-tree_option-bg-active;
  101. }
  102. }
  103. }
  104. &-collapsed {
  105. .#{$module}-option-expand-icon {
  106. transform: rotate(270deg);
  107. }
  108. }
  109. &-highlight,
  110. &-filtered {
  111. &,
  112. .#{$prefix}-checkbox-addon {
  113. font-weight: $font-tree_option_hightlight-fontWeight;
  114. color: $color-tree_option_hightlight-text;
  115. }
  116. }
  117. &-hidden {
  118. display: none;
  119. }
  120. &-disabled {
  121. .#{$module}-option-label {
  122. color: $color-tree_option_disabled-text-default;
  123. }
  124. }
  125. &-fullLabel-draggable,
  126. &-draggable {
  127. -moz-user-select: none;
  128. -khtml-user-select: none;
  129. -webkit-user-select: none;
  130. user-select: none;
  131. /* Required to make elements draggable in old WebKit */
  132. -khtml-user-drag: element;
  133. -webkit-user-drag: element;
  134. }
  135. &-draggable {
  136. box-sizing: border-box;
  137. border-left: $width-tree_option_draggable-border solid transparent;
  138. margin-top: -$width-tree_option_draggable-border;
  139. .#{$module}-option-label {
  140. border-top: $width-tree_option_draggable-border transparent solid;
  141. border-bottom: $width-tree_option_draggable-border transparent solid;
  142. }
  143. .#{$module}-option-drag-over-gap-top {
  144. border-top: $width-tree_option_draggable-border $color-tree_option_draggable_insert-border-default solid;
  145. }
  146. .#{$module}-option-drag-over-gap-bottom {
  147. border-bottom: $width-tree_option_draggable-border $color-tree_option_draggable_insert-border-default solid;
  148. }
  149. }
  150. &-fullLabel-draggable {
  151. &.#{$module}-option-fullLabel-drag-over-gap-top {
  152. border-top: $width-tree_option_draggable-border $color-tree_option_draggable_insert-border-default solid;
  153. }
  154. &.#{$module}-option-fullLabel-drag-over-gap-bottom {
  155. border-bottom: $width-tree_option_draggable-border $color-tree_option_draggable_insert-border-default solid;
  156. }
  157. }
  158. &-drag-over.#{$module}-option-draggable,
  159. &-drag-over.#{$module}-option-fullLabel-draggable {
  160. .#{$module}-option-label {
  161. border-top: 0;
  162. border-bottom: 0;
  163. }
  164. border: $width-tree_option_draggable-border solid $color-tree_option_draggable_insert-border-default;
  165. // selected solid background will overlap with drag over border-bottom
  166. // add an extra border to complement
  167. & + .#{$module}-option-selected {
  168. &::after {
  169. content: '';
  170. position: absolute;
  171. top: 0;
  172. left: -$width-tree_option_draggable-border;
  173. bottom: 0;
  174. right: -1px;
  175. border-top: $width-tree_option_draggable-border solid $color-tree_option_draggable_insert-border-default;
  176. }
  177. }
  178. }
  179. }
  180. //overwrite draggable option structure
  181. li.#{$module}-option-draggable.#{$module}-option {
  182. padding-top: 0px;
  183. padding-bottom: 0px;
  184. .#{$module}-option-label {
  185. padding: $spacing-tree_option_draggable-paddingY $spacing-tree_option_draggable-paddingX;
  186. }
  187. .#{$module}-option-selected {
  188. background-color: transparent;
  189. &:hover,
  190. &:active {
  191. background-color: transparent;
  192. }
  193. }
  194. }
  195. @for $i from 1 through 20 {
  196. .#{$module}-option-level-#{$i} {
  197. padding-left: $spacing-tree_option_level-paddingLeft * ($i - 1) + $spacing-tree_option_level1-paddingLeft;
  198. }
  199. }
  200. .#{$module}-option-empty {
  201. &:hover,
  202. &:active {
  203. background-color: transparent;
  204. }
  205. }
  206. .#{$module}-option-label-empty {
  207. padding-left: 0;
  208. justify-content: center;
  209. color: $color-tree_option_disabled-text-default;
  210. user-select: none;
  211. cursor: not-allowed;
  212. }
  213. }
  214. .#{$module}-option-list-block {
  215. .#{$module}-option {
  216. &:hover {
  217. background-color: $color-tree_option-bg-hover;
  218. }
  219. &:active {
  220. background-color: $color-tree_option_selected-bg-default;
  221. }
  222. &-label {
  223. flex: 1;
  224. }
  225. &-active {
  226. background-color: $color-tree_option-bg-active;
  227. &:hover,
  228. &:active {
  229. background-color: $color-tree_option-bg-active;
  230. }
  231. .#{$module}-option-label-text {
  232. background-color: transparent;
  233. }
  234. }
  235. &-expand-icon {
  236. flex-shrink: 0;
  237. box-sizing: content-box;
  238. &:hover {
  239. color: $color-tree_option-icon-hover;
  240. }
  241. &:active {
  242. color: $color-tree_option-icon-active;
  243. }
  244. }
  245. &-spin-icon {
  246. display: flex;
  247. & svg {
  248. width: $width-tree_spinIcon;
  249. height: $width-tree_spinIcon;
  250. }
  251. color: $color-tree_option_loading-icon-default;
  252. }
  253. &-selected {
  254. background-color: $color-tree_option-bg-active;
  255. .#{$module}-option-label {
  256. background-color: transparent;
  257. &:hover,
  258. &:active {
  259. background-color: transparent;
  260. }
  261. }
  262. .#{$prefix}-checkbox-addon {
  263. background-color: transparent;
  264. }
  265. &:hover,
  266. &:active {
  267. background-color: $color-tree_option-bg-active;
  268. }
  269. }
  270. &-label-text,
  271. .#{$prefix}-checkbox-addon {
  272. padding: 0;
  273. border-radius: $radius-tree_checkbox_addon;
  274. &:hover {
  275. background-color: transparent;
  276. }
  277. &:active {
  278. background-color: transparent;
  279. }
  280. }
  281. &-label-text {
  282. width: 0;
  283. }
  284. }
  285. .#{$module}-option-empty {
  286. &:hover,
  287. &:active {
  288. background-color: transparent;
  289. }
  290. }
  291. }
  292. @import './rtl.scss';