tree.scss 9.2 KB

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