design.scss 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. .workflow-designer {
  2. height: 100vh;
  3. display: flex;
  4. flex-direction: column;
  5. background: #f5f5f5;
  6. .toolbar {
  7. height: 50px;
  8. background: #fff;
  9. border-bottom: 1px solid #e8e8e8;
  10. display: flex;
  11. align-items: center;
  12. justify-content: space-between;
  13. padding: 0 16px;
  14. .toolbar-left, .toolbar-right {
  15. display: flex;
  16. align-items: center;
  17. }
  18. }
  19. .main-content {
  20. flex: 1;
  21. display: flex;
  22. overflow: hidden;
  23. }
  24. .node-panel {
  25. width: 220px;
  26. background: #fff;
  27. border-right: 1px solid #e8e8e8;
  28. overflow-y: auto;
  29. .panel-title {
  30. padding: 12px 16px;
  31. font-weight: 600;
  32. border-bottom: 1px solid #e8e8e8;
  33. }
  34. .node-category {
  35. .category-title {
  36. padding: 8px 16px;
  37. font-size: 12px;
  38. color: #999;
  39. background: #fafafa;
  40. }
  41. .node-list {
  42. padding: 8px;
  43. }
  44. .node-item {
  45. display: flex;
  46. align-items: center;
  47. padding: 8px 12px;
  48. margin-bottom: 8px;
  49. background: #fff;
  50. border: 1px solid #e8e8e8;
  51. border-radius: 4px;
  52. cursor: grab;
  53. transition: all 0.2s;
  54. &:hover {
  55. box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  56. }
  57. i {
  58. font-size: 18px;
  59. margin-right: 8px;
  60. }
  61. span {
  62. font-size: 13px;
  63. }
  64. }
  65. }
  66. }
  67. .canvas-container {
  68. flex: 1;
  69. position: relative;
  70. overflow: auto;
  71. .canvas-svg {
  72. min-width: 100%;
  73. min-height: 100%;
  74. cursor: grab;
  75. &.dragging-canvas {
  76. cursor: grabbing;
  77. }
  78. .node-group {
  79. cursor: move;
  80. rect {
  81. transition: stroke-width 0.2s;
  82. &.selected {
  83. stroke-width: 3;
  84. }
  85. }
  86. .node-content {
  87. display: flex;
  88. align-items: center;
  89. height: 100%;
  90. padding: 0 10px;
  91. overflow: hidden;
  92. i {
  93. font-size: 16px;
  94. margin-right: 6px;
  95. flex-shrink: 0;
  96. }
  97. .node-name {
  98. font-size: 12px;
  99. color: #333;
  100. white-space: nowrap;
  101. overflow: hidden;
  102. text-overflow: ellipsis;
  103. flex: 1;
  104. min-width: 0;
  105. }
  106. }
  107. .anchor {
  108. opacity: 0;
  109. cursor: crosshair;
  110. transition: opacity 0.2s;
  111. }
  112. &:hover .anchor {
  113. opacity: 1;
  114. }
  115. }
  116. .edge-group {
  117. cursor: pointer;
  118. path {
  119. transition: stroke-width 0.2s;
  120. &.selected {
  121. stroke-width: 3;
  122. }
  123. }
  124. }
  125. }
  126. }
  127. .property-panel {
  128. width: 280px;
  129. background: #fff;
  130. border-left: 1px solid #e8e8e8;
  131. overflow-y: auto;
  132. .panel-title {
  133. padding: 12px 16px;
  134. font-weight: 600;
  135. border-bottom: 1px solid #e8e8e8;
  136. display: flex;
  137. justify-content: space-between;
  138. align-items: center;
  139. .el-icon-close {
  140. cursor: pointer;
  141. color: #999;
  142. &:hover {
  143. color: #333;
  144. }
  145. }
  146. }
  147. .el-form {
  148. padding: 16px;
  149. }
  150. }
  151. }