style.css 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313
  1. /* Appbar & appnav */
  2. #appbar {justify-content: space-between;}
  3. #appbar > .title {flex: none; position: relative; padding: .2rem 1.5rem .2rem 2.5rem; min-width: 5rem; background-color: rgba(0,0,0,.1); line-height: 2rem}
  4. #appbar > .title > .avatar {position: absolute; top: .5rem; left: .5rem}
  5. #appbar > .title > .icon {position: absolute; top: .2rem; right: .5rem;}
  6. #appbar > .title > .avatar > .icon {line-height: 1.5rem}
  7. .control-group {display: flex; align-items: stretch;}
  8. .icon-large {font-size: 1.3rem;}
  9. .profile > .avatar, #searchbar > .avatar{width: 1.2rem; height: 1.2rem}
  10. /* App menu */
  11. #appMenu {min-width: 5rem; position: fixed; top: 2.4rem; left: 0}
  12. #appMenu > .item > .title {font-size: .8rem}
  13. /* User menu */
  14. #userMenu {min-width: 9rem; max-width: 50%; position: fixed; top: 2.4rem; left: 0}
  15. #userMenu .lang-menu {left: 1.2rem}
  16. #userMenu .signin-icon {position: relative}
  17. #userMenu .signin-icon:before {font-size: 1.05rem}
  18. #userMenu .signin-icon > .icon-check {position: absolute; top: .15rem; left: .15rem}
  19. /* Search Box */
  20. #searchBox {width: 100%; position: fixed; top: 0; left: 0}
  21. #searchBox .dropdown-search-menu {margin-top: 0; left: 1px; list-style:none;}
  22. #searchBox .dropdown-search-menu > li{float:left; width:50%; border-bottom:1px solid #ddd;}
  23. #searchBox .dropdown-search-menu > li > a {padding: 5px 8px; display:block}
  24. #searchBox .dropdown-search-menu.show-quick-go.with-active {padding-top: 30px;position: relative;}
  25. #searchBox .dropdown-search-menu.show-quick-go > li.active {position: absolute; top: 0; left: 20px; right: 0; width: 100%; background:#f1f1f1}
  26. /* Blocks */
  27. .blocks > .section > .content {overflow: auto; min-height: 1.5rem; max-height: 15rem; position: relative}
  28. .object-link {padding: .2rem .25rem; display: block; margin-top: .15rem; border: .05rem solid rgba(0,0,0,.1)!important}
  29. /* Menu */
  30. .with-heading-top.with-nav-top.with-menu-top {padding-top: 7.2rem;}
  31. .with-heading-top.with-nav-top.with-menu-top .menu.affix.dock-top {top: 4.8rem}
  32. .in-scroll.scroll-down.with-heading-top .menu.dock-top,
  33. .in-scroll.scroll-down .with-heading-top .menu.dock-top {transform: translate(0, -2.4rem);}
  34. #appnav {transform: none!important}
  35. #appnav > .divider {display: none;}
  36. .with-heading-top.with-nav-top > .nav.affix.dock-top{top: 2.2rem;}
  37. /* List */
  38. .headline > .pull-right.label + .pull-right.label,
  39. .list > .item > .title > .pull-right.label + .pull-right.label,
  40. .list > .item > .content > .title > .pull-right.label + .pull-right.label {margin-right: .2rem}
  41. /* Priority colors */
  42. .pri-0, .pri-1, .pri-2,
  43. .pri-3, .pri-4, .pri-5 {color: #fff}
  44. .pri-0.outline, .pri-1.outline, .pri-2.outline,
  45. .pri-3.outline, .pri-4.outline, .pri-5.outline {border-width: .1rem; font-weight: bold}
  46. .pri-0 {background: #DDD;}
  47. .pri-1 {background: #F44336;}
  48. .pri-2 {background: #EF6C00;}
  49. .pri-3 {background: #9C27B0;}
  50. .pri-4 {background: #03A9F4;}
  51. .pri-5 {background: #009688;}
  52. .pri-0.text-tint {color: #757575; background: none}
  53. .pri-1.text-tint {color: #F44336; background: none}
  54. .pri-2.text-tint {color: #EF6C00; background: none}
  55. .pri-3.text-tint {color: #9C27B0; background: none}
  56. .pri-4.text-tint {color: #03A9F4; background: none}
  57. .pri-5.text-tint {color: #009688; background: none}
  58. .pri-0.outline {border-color: #757575;}
  59. .pri-1.outline {border-color: #F44336;}
  60. .pri-2.outline {border-color: #EF6C00;}
  61. .pri-3.outline {border-color: #9C27B0;}
  62. .pri-4.outline {border-color: #03A9F4;}
  63. .pri-5.outline {border-color: #009688;}
  64. /* Status colors */
  65. .status-signed,
  66. .status-pass,
  67. .status-replied,
  68. .status-done {background: #4CAF50; color: #fff}
  69. .status-transfered,
  70. .status-potential {background: #F44336; color: #fff}
  71. .status-draft,
  72. .status-intension,
  73. .status-developing,
  74. .status-viewed,
  75. .status-doubted,
  76. .status-doing {background: #EF6C00; color: #fff}
  77. .status-wait,
  78. .status-normal {background: #03A9F4; color: #fff}
  79. .status-payed {background: #795548; color: #fff}
  80. .status-canceled,
  81. .status-offline,
  82. .status-reject,
  83. .status-finish,
  84. .status-closed {background: #666; color: #fff}
  85. .status-signed-pale,
  86. .status-pass-pale,
  87. .status-replied-pale,
  88. .status-done-pale {background: #E8F5E9; color: #4CAF50}
  89. .status-transfered-pale,
  90. .status-potential-pale {background: #FFEBEE; color: #F44336}
  91. .status-draft-pale,
  92. .status-intension-pale,
  93. .status-viewed-pale,
  94. .status-doubted-pale,
  95. .status-developing-pale,
  96. .status-doing-pale {background: #FFF8E1; color: #EF6C00}
  97. .status-wait-pale,
  98. .status-normal-pale {background: #E1F5FE; color: #03A9F4}
  99. .status-payed-pale {background: #EFEBE9; color: #795548}
  100. .status-canceled-pale,
  101. .status-offline-pale,
  102. .status-reject-pale,
  103. .status-finish-pale,
  104. .status-closed-pale {background: #ddd; color: #444}
  105. .bug-resolved{color:#229f24;}
  106. td[class$="-done"],td[class$="-pass"],td[class$="-resolved"],td[class$="-normal"],td[class$="-active"]{color:#229f24;}
  107. td[class$="-wait"] {color:#808080;}
  108. td[class$="-pause"],
  109. td[class$="-suspended"] {color:#E48600;}
  110. td[class$="-delay"] {color:#e84e0f;}
  111. td[class$="-closed"],
  112. td[class$="-cancel"] {color:#888;}
  113. td[class$="-doing"],
  114. td[class$="-changed"],
  115. td[class$="-investigate"] {color:#d2322d;}
  116. td[class$="-delayed"] {background:#e84e0f!important; color:white;}
  117. td[class$="-blocked"] {background:yellow!important;}
  118. td[class$="-fail"] {color:#d2322d}
  119. td[class$="-draft"] {color:#8957a1}
  120. td.bug-active{color: #8957a1}
  121. td.story-active, .testcase-normal, .story-active {color: #333}
  122. /* Level colors */
  123. .level-, .level-0, .level-A,
  124. .level-B, .level-C, .level-D, .level-E {color: #fff}
  125. .level-,
  126. .level-0 {background: #DDD;}
  127. .heading.level-,
  128. .heading.level-0 {background: #444;}
  129. .level-A {background: #F44336;}
  130. .level-B {background: #EF6C00;}
  131. .level-C {background: #9C27B0;}
  132. .level-D {background: #03A9F4;}
  133. .level-E {background: #009688;}
  134. .text-level-, .text-level-0 {color: #666}
  135. .text-level-A {color: #F44336;}
  136. .text-level-B {color: #EF6C00;}
  137. .text-level-C {color: #9C27B0;}
  138. .text-level-D {color: #03A9F4;}
  139. .text-level-E {color: #009688;}
  140. /* Sort panel */
  141. .sort-panel {max-height: 100%; overflow-y: scroll; top: auto}
  142. .sort-panel > a {display: block; padding: .5rem; opacity: .8}
  143. .sort-panel > a > .icon-sort-indicator {display: inline-block; min-width: 1rem; text-align: center; margin-right: .5rem}
  144. .sort-trigger.SortUp > .icon-sort:before,
  145. .sort-panel > a.SortUp > .icon-sort-indicator:before {content: '\e72f';}
  146. .sort-trigger.SortDown > .icon-sort:before,
  147. .sort-panel > a.SortDown > .icon-sort-indicator:before {content: '\e730';}
  148. .sort-panel > a.SortUp, .sort-panel > a.SortDown {opacity: 1; background-color: rgba(0,0,0,.1)}
  149. .sort-panel > a:before {position: absolute; display: block; top: .5rem; right: .5rem; font-size: .6rem; line-height: 1rem; opacity: .8}
  150. .sort-trigger.SortUp > span:after,
  151. .sort-panel > a.SortUp:before {content: 'ASC'}
  152. .sort-trigger.SortDown > span:after,
  153. .sort-panel > a.SortDown:before {content: 'DESC'}
  154. html[lang='zh-cn'] .sort-trigger.SortUp > span:after,
  155. html[lang='zh-cn'] .sort-panel > a.SortUp:before {content: '升序排列'}
  156. html[lang='zh-cn'] .sort-trigger.SortDown > span:after,
  157. html[lang='zh-cn'] .sort-panel > a.SortDown:before {content: '降序排列'}
  158. html[lang='zh-tw'] .sort-trigger.SortUp > span:after,
  159. html[lang='zh-tw'] .sort-panel > a.SortUp:before {content: '升序排列'}
  160. html[lang='zh-tw'] .sort-trigger.SortDown > span:after,
  161. html[lang='zh-tw'] .sort-panel > a.SortDown:before {content: '降序排列'}
  162. .sort-trigger.SortUp > span:after,
  163. .sort-trigger.SortDown > span:after {font-size: .6rem; display: inline-block; margin: 0 .25rem; opacity: .8}
  164. /* Disable context menu */
  165. .no-contextmenu {-webkit-touch-callout: none; -webkit-user-select: none; touch-callout: none;}
  166. /* List with actions */
  167. #actionsPanel {top: auto;}
  168. #actionsPanel > a {padding-left: 1.5rem;}
  169. #actionsPanel > a.selected {padding-left: .5rem; border-bottom: ..5rem solid rgba(0,0,0,.1)}
  170. /* List with pager */
  171. .list-with-pager > .list + .list {border-top: none}
  172. .pager-more.loading .text-link {color: transparent;}
  173. nav.pager{padding: 0 10px;}
  174. ul.pager{padding: 0;}
  175. .pager .caption {opacity: .5;}
  176. .pager > li > a{position: relative; float: left; padding: 8px 10px; margin-left: -1px; line-height: 1.42857143; text-decoration: none; background-color: #fff; border: 1px solid #ddd;}
  177. .pager > li:first-child > a{margin-left: 0; border-top-left-radius: 2px; border-bottom-left-radius: 2px;}
  178. .pager-justify {display: table; width: 100%;}
  179. .pager-justify > li {display: table-cell;text-align: center; vertical-align: middle;}
  180. .pager-justify .previous { text-align: left;}
  181. .pager-justify .next { text-align: right; }
  182. .pager-justify > li > a { display: inline-block; float: none;}
  183. /* Place holder */
  184. .affix-nav-holder {height: 2rem}
  185. /* History */
  186. .list-history > .item.single-line {padding: .3rem .5rem}
  187. .list-history .comment,
  188. .list-history .history {background-color: rgba(0,0,0,.05); font-size: .6rem; padding: .25rem .4rem; margin-top: .25rem}
  189. .list-history .comment > *:not(.hidden):last-child,
  190. .list-history .history > *:not(.hidden):last-child {margin-bottom: 0}
  191. .list-history .history blockquote {margin-top: 0; margin-bottom: .1rem; margin-left: .6rem}
  192. .list-history .history del {color: #ea644a}
  193. .list-history .history ins {color: #38b03f}
  194. .list-history .files {margin-left: 2.5rem; margin-right: .5rem}
  195. .list-history .files > .heading > .title {padding: .3rem .5rem 0 .5rem}
  196. /* Modal */
  197. .modal.enter-from-bottom,
  198. .modal.scale-from-bottom {margin-top: 2.4rem}
  199. .enter-from-bottom.affix {top: auto; -webkit-transform: translate(0,105%); transform: translate(0,105%); transition: .3s cubic-bezier(.175,.885,.32,1);}
  200. .enter-from-bottom.affix.in {-webkit-transform: translate(0,0); transform: translate(0,0);}
  201. .modal > .section {margin-bottom: 0}
  202. .modal-backdrop + .display-layer > .modal.enter-from-bottom,
  203. .modal-backdrop + .display-layer > .modal.scale-from-bottom {margin-top: 4rem}
  204. .modal-backdrop + .display-layer + .modal-backdrop + .display-layer > .modal.enter-from-bottom,
  205. .modal-backdrop + .display-layer + .modal-backdrop + .display-layer > .modal.scale-from-bottom {margin-top: 5.6rem}
  206. /* Text styles */
  207. .break-word {word-wrap:break-word; word-break:break-all;}
  208. /* Form */
  209. form > .heading {margin: -.5rem -.5rem .5rem -.5rem;}
  210. .control.required > label:after {content: '*'; color: red}
  211. /* Progress bar */
  212. .progress {position: relative; box-shadow: inset 0 -.15rem 0 rgba(0,0,0,.05)}
  213. .progress > .bar {position: absolute; top: 0; bottom: 0; left: 0; background-color: rgba(255, 150, 100, .15); border-bottom: .15rem solid rgba(255, 150, 100, .8)}
  214. .progress > .bar.complete {right: 0; background-color: rgba(0, 255, 0, .15); border-color: rgba(150, 255, 100, .8);}
  215. .footer-actions{bottom: 48px!important;}
  216. .table-detail tr > td:first-child {border-color: #ddd!important; background-color: #f1f1f1!important; text-align: center;}
  217. .w-20px {width: 1rem;}
  218. .w-40px {width: 2rem;}
  219. .w-50px {width: 2.5rem;}
  220. .w-60px {width: 3rem;}
  221. .w-70px {width: 3.5rem;}
  222. .w-80px {width: 4rem;}
  223. .w-90px {width: 4.5rem;}
  224. .w-100px {width: 5rem;}
  225. .w-110px {width: 5.5rem;}
  226. .w-120px {width: 6rem;}
  227. #moreApp{min-width: 4rem;}
  228. #moreAppnav {max-width: 4rem;}
  229. #moreMenu {max-width: 4rem;}
  230. /* Page */
  231. #page.list-with-pager {margin-bottom: 2.4rem;}
  232. #page.list-with-actions {margin-bottom: 2.4rem;}
  233. .heading > .title > .prefix{display: inline-block; margin-right: 5px; color: #666;}
  234. .heading > .title > .prefix > strong{font-weight: normal; border: 1px solid #aaa; padding: 0px 4px; background: #fff; text-align: center; min-width: 20px; color: #666;}
  235. #searchResult.with-closed{padding-bottom:2.4rem;}
  236. .display.modal.in.searching #searchResult,
  237. .display.modal.in.searching #defaultMenu {display: block;}
  238. .display.modal.in.searching #defaultMenu .heading,
  239. .display.modal.in.searching #defaultMenu #closedCollapse,
  240. .display.modal.in.searching .list > .item {display: none}
  241. .display.modal.in.searching .list > .item.show-search {display: block}
  242. .article{
  243. padding: 10px;
  244. font-size: 14px;
  245. word-break: break-all;
  246. }
  247. .blocks > .section > .content{min-height:0px !important;}