_BuildingDisciplinesTree.scss 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. @mixin buildingDisciplinesNode() {
  2. $base: "esri-building-disciplines-tree-node";
  3. $root: "#{$base}--root";
  4. $leaf: "#{$base}--leaf";
  5. $label: "#{$base}__label";
  6. $checkbox: "#{$base}__checkbox";
  7. $checkbox--checked: "#{$base}__checkbox--checked";
  8. $checkbox--indeterminate: "#{$base}__checkbox--indeterminate";
  9. $collapse-toggle: "#{$base}__collapse-toggle";
  10. $collapse-toggle--collapsed: "#{$base}__collapse-toggle--collapsed";
  11. $children: "#{$base}__children";
  12. $collapse-toggle-size: 18px;
  13. $collapse-toggle-icon-size: 10px;
  14. $checkbox-size: 14px;
  15. $checkbox-border-size: 1px;
  16. $checkbox-icon-size: 10px;
  17. $max-levels: 5;
  18. $indent-size: $side-spacing--three-quarters;
  19. @for $level from 1 through $max-levels {
  20. .#{$base}--level-#{$level} {
  21. $padding: $indent-size * ($level - 1);
  22. padding-left: $padding;
  23. &.#{$leaf} {
  24. padding-left: $padding + $collapse-toggle-size;
  25. }
  26. }
  27. }
  28. .#{$label} {
  29. display: flex;
  30. flex-direction: row;
  31. font-size: $font-size;
  32. font-weight: $font-weight--light;
  33. padding-top: $side-spacing--quarter;
  34. padding-bottom: $side-spacing--quarter;
  35. cursor: pointer;
  36. align-items: center;
  37. }
  38. .#{$collapse-toggle} {
  39. font-size: $collapse-toggle-icon-size;
  40. line-height: $collapse-toggle-icon-size;
  41. display: inline-block;
  42. width: $collapse-toggle-size;
  43. height: $collapse-toggle-size;
  44. margin: 0;
  45. padding: ($collapse-toggle-size - $collapse-toggle-icon-size) / 2;
  46. transition: transform 0.1s ease-in-out;
  47. border: none;
  48. background: none;
  49. flex-shrink: 0;
  50. appearance: none;
  51. &:not(.#{$collapse-toggle--collapsed}) {
  52. transform: rotate(90deg);
  53. }
  54. }
  55. .#{$checkbox} {
  56. font-size: $checkbox-icon-size;
  57. line-height: $checkbox-icon-size;
  58. display: inline-block;
  59. width: $checkbox-size;
  60. height: $checkbox-size;
  61. margin: 0;
  62. margin-right: $side-spacing--half;
  63. padding: ($checkbox-size - $checkbox-icon-size - $checkbox-border-size * 2) / 2;
  64. transition: all 0.1s ease-in-out;
  65. border: solid 1px $border-color;
  66. background: none;
  67. flex-shrink: 0;
  68. appearance: none;
  69. &:before {
  70. color: $interactive-font-color--inverse;
  71. }
  72. }
  73. .#{$checkbox--indeterminate} {
  74. &:before {
  75. color: $interactive-font-color;
  76. }
  77. }
  78. .#{$checkbox--checked} {
  79. background: $border-color--active;
  80. border-color: $border-color--active;
  81. &:before {
  82. color: $interactive-font-color--inverse;
  83. }
  84. }
  85. html[dir="rtl"] {
  86. .#{$checkbox} {
  87. margin-right: 0;
  88. margin-left: $side-spacing--half;
  89. }
  90. .#{$collapse-toggle} {
  91. transform: rotate(180deg);
  92. &:not(.#{$collapse-toggle--collapsed}) {
  93. transform: rotate(90deg);
  94. }
  95. }
  96. @for $level from 1 through $max-levels {
  97. .#{$base}--level-#{$level} {
  98. $padding: $indent-size * ($level - 1);
  99. padding-left: 0;
  100. padding-right: $padding;
  101. &.#{$leaf} {
  102. padding-left: 0;
  103. padding-right: $padding + $collapse-toggle-size;
  104. }
  105. }
  106. }
  107. }
  108. }
  109. /**
  110. * Adds all the styles for the "Categories & Disciplines" tree used in the building explorer.
  111. */
  112. @mixin buildingDisciplinesTree() {
  113. $base: "esri-building-disciplines-tree";
  114. @include buildingDisciplinesNode();
  115. }