review-panel.less 24 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363
  1. @rp-base-font-size: 12px;
  2. @rp-small-font-size: 10px;
  3. @rp-icon-large-size: 18px;
  4. @rp-bg-blue: #dadfed;
  5. @rp-bg-dim-blue: #fafafa;
  6. @rp-highlight-blue: #8a96b5;
  7. @rp-border-grey: #d9d9d9;
  8. @rp-green: #2c8e30;
  9. @rp-green-on-dark: rgba(37, 107, 41, 0.5);
  10. @rp-red: #c5060b;
  11. @rp-yellow: #f3b111;
  12. @rp-yellow-on-dark: rgba(194, 93, 11, 0.5);
  13. @rp-grey: #aaaaaa;
  14. @rp-type-blue: #6b7797;
  15. @rp-type-darkgrey: #3f3f3f;
  16. @rp-entry-ribbon-width: 4px;
  17. @rp-entry-arrow-width: 6px;
  18. @rp-semibold-weight: 600;
  19. @review-panel-width: 230px;
  20. @review-off-width: 22px;
  21. @rp-toolbar-height: 32px;
  22. @rp-entry-animation-speed: 0.3s;
  23. .rp-button() {
  24. display: block; // IE doesn't do flex with inline items.
  25. background-color: @rp-highlight-blue;
  26. color: #fff;
  27. text-align: center;
  28. line-height: 1.3;
  29. user-select: none;
  30. border: 0;
  31. &:hover,
  32. &:focus {
  33. outline: 0;
  34. background-color: darken(@rp-highlight-blue, 5%);
  35. text-decoration: none;
  36. color: #fff;
  37. }
  38. &[disabled] {
  39. background-color: tint(@rp-highlight-blue, 50%);
  40. &:hover,
  41. &:focus {
  42. background-color: tint(@rp-highlight-blue, 50%);
  43. }
  44. }
  45. }
  46. .rp-collapse-arrow() {
  47. display: inline-flex;
  48. transform: rotateZ(0deg);
  49. transition: transform 0.15s ease;
  50. &-on {
  51. transform: rotateZ(-90deg);
  52. }
  53. }
  54. #review-panel {
  55. display: block;
  56. .rp-size-expanded & {
  57. display: flex;
  58. flex-direction: column;
  59. width: @review-panel-width;
  60. overflow: visible;
  61. border-left-width: 1px;
  62. }
  63. .rp-size-mini & {
  64. width: @review-off-width;
  65. z-index: 6;
  66. border-left-width: 1px;
  67. }
  68. position: absolute;
  69. top: 32px;
  70. bottom: 0px;
  71. right: 0px;
  72. background-color: @rp-bg-blue;
  73. border-left: solid 0px @rp-border-grey;
  74. font-size: @rp-base-font-size;
  75. color: @rp-type-blue;
  76. z-index: 6;
  77. .has-source-toolbar & {
  78. top: 0;
  79. }
  80. }
  81. .loading-panel {
  82. .rp-size-expanded & {
  83. right: @review-panel-width;
  84. }
  85. }
  86. .review-panel-toolbar {
  87. display: none;
  88. .rp-size-expanded & {
  89. display: flex;
  90. align-items: center;
  91. justify-content: space-between;
  92. padding: 0 5px;
  93. }
  94. .rp-unsupported & {
  95. display: none;
  96. }
  97. position: relative;
  98. border-bottom: 1px solid @rp-border-grey;
  99. background-color: @rp-bg-dim-blue;
  100. text-align: center;
  101. z-index: 3;
  102. flex-basis: 32px;
  103. flex-shrink: 0;
  104. }
  105. .review-panel-toolbar-label {
  106. cursor: pointer;
  107. text-align: right;
  108. flex-grow: 1;
  109. }
  110. .review-panel-toolbar-icon-on {
  111. margin-right: 5px;
  112. color: @ol-green;
  113. }
  114. .review-panel-toolbar-label-disabled {
  115. cursor: auto;
  116. margin-right: 5px;
  117. }
  118. .review-panel-toolbar-spinner {
  119. margin-left: 5px;
  120. }
  121. .rp-tc-state {
  122. position: absolute;
  123. top: 100%;
  124. left: 0;
  125. right: 0;
  126. overflow: hidden;
  127. list-style: none;
  128. padding: 0 5px;
  129. margin: 0;
  130. border-bottom: 1px solid @rp-border-grey;
  131. background-color: @rp-bg-dim-blue;
  132. text-align: left;
  133. }
  134. .rp-tc-state-collapse {
  135. .rp-collapse-arrow;
  136. margin-left: 5px;
  137. }
  138. .rp-tc-state-item {
  139. display: flex;
  140. align-items: center;
  141. padding: 3px 0;
  142. &:last-of-type {
  143. padding-bottom: 5px;
  144. }
  145. }
  146. .rp-tc-state-separator {
  147. border-bottom: 1px solid @rp-border-grey;
  148. }
  149. .rp-tc-state-item-everyone {
  150. border-bottom: 1px solid @rp-border-grey;
  151. }
  152. .rp-tc-state-item-name {
  153. flex-grow: 1;
  154. overflow: hidden;
  155. text-overflow: ellipsis;
  156. white-space: nowrap;
  157. font-weight: @rp-semibold-weight;
  158. }
  159. .rp-tc-state-item-name-disabled {
  160. opacity: 0.35;
  161. }
  162. .rp-entry-list {
  163. display: none;
  164. width: 100%;
  165. .rp-size-expanded &,
  166. .rp-size-mini & {
  167. display: block;
  168. }
  169. .rp-unsupported & {
  170. display: none;
  171. }
  172. .rp-state-current-file & {
  173. position: absolute;
  174. top: 0;
  175. bottom: 0;
  176. padding-bottom: 52px;
  177. overflow-y: hidden;
  178. }
  179. .rp-state-current-file.rp-size-mini .rp-collapsed-displaying-entry & {
  180. overflow-y: visible;
  181. }
  182. .rp-state-overview & {
  183. flex-grow: 2;
  184. overflow-y: auto;
  185. }
  186. }
  187. .rp-entry-list-inner {
  188. position: relative;
  189. }
  190. .rp-entry-indicator {
  191. display: none;
  192. z-index: 2; // above .review-panel-toggler
  193. .rp-size-mini & {
  194. display: block;
  195. }
  196. .rp-floating-entry & {
  197. display: block;
  198. position: static;
  199. width: @review-off-width - 4px;
  200. }
  201. .rp-size-mini &-add-comment {
  202. display: none;
  203. }
  204. position: absolute;
  205. left: 2px;
  206. right: 2px;
  207. text-align: center;
  208. background-color: @rp-highlight-blue;
  209. border-radius: 3px;
  210. color: #fff;
  211. cursor: pointer;
  212. transition: top @rp-entry-animation-speed, left 0.1s, right 0.1s;
  213. .no-animate & {
  214. transition: left 0.1s, right 0.1s;
  215. }
  216. &-focused {
  217. left: 0px;
  218. right: 4px;
  219. z-index: 1;
  220. }
  221. }
  222. .rp-entry-wrapper {
  223. &:hover .rp-entry-insert,
  224. &:hover .rp-entry-delete,
  225. &:hover .rp-entry-aggregate,
  226. &:hover .rp-entry-comment {
  227. display: block;
  228. }
  229. &.rp-entry-hidden {
  230. display: none;
  231. }
  232. }
  233. .rp-entry {
  234. .rp-state-current-file & {
  235. position: absolute;
  236. width: @review-panel-width;
  237. }
  238. .rp-state-current-file-mini &,
  239. .rp-floating-entry & {
  240. left: @review-off-width + @rp-entry-arrow-width;
  241. box-shadow: 0 0 10px 5px rgba(0, 0, 0, 0.2);
  242. z-index: 1;
  243. &::before {
  244. content: '';
  245. position: absolute;
  246. top: -(@review-off-width + @rp-entry-arrow-width);
  247. right: -(@review-off-width + @rp-entry-arrow-width);
  248. bottom: -(@review-off-width + @rp-entry-arrow-width);
  249. left: -(2 * @rp-entry-arrow-width + 2);
  250. z-index: -1;
  251. }
  252. &::after {
  253. .triangle(
  254. left,
  255. @rp-entry-arrow-width,
  256. @rp-entry-arrow-width * 1.5,
  257. inherit
  258. );
  259. top: (@review-off-width / 2) - @rp-entry-arrow-width;
  260. left: -(@rp-entry-ribbon-width + @rp-entry-arrow-width);
  261. content: '';
  262. }
  263. }
  264. .rp-state-current-file-mini & {
  265. display: none;
  266. }
  267. .rp-floating-entry & {
  268. position: absolute;
  269. width: @review-panel-width;
  270. left: @review-off-width + @rp-entry-arrow-width;
  271. top: 0;
  272. }
  273. .rp-state-current-file-mini.rp-layout-left & {
  274. left: auto;
  275. right: @review-off-width + @rp-entry-arrow-width;
  276. border-left-width: 0;
  277. border-right-width: @rp-entry-ribbon-width;
  278. border-right-style: solid;
  279. &::before {
  280. left: -(@review-off-width + @rp-entry-arrow-width);
  281. right: -(2 * @rp-entry-arrow-width + 2);
  282. }
  283. &::after {
  284. .triangle(
  285. right,
  286. @rp-entry-arrow-width,
  287. @rp-entry-arrow-width * 1.5,
  288. inherit
  289. );
  290. right: -(@rp-entry-ribbon-width + @rp-entry-arrow-width);
  291. left: auto;
  292. }
  293. }
  294. .rp-state-current-file-expanded & {
  295. visibility: hidden;
  296. left: 5px;
  297. right: 5px;
  298. width: auto;
  299. &-focused {
  300. left: -2px;
  301. right: 12px;
  302. z-index: 1;
  303. }
  304. &-add-comment {
  305. right: auto;
  306. &.rp-entry-adding-comment {
  307. right: 5px;
  308. }
  309. }
  310. &-bulk-actions {
  311. right: auto;
  312. }
  313. }
  314. .rp-state-overview & {
  315. border-radius: 0;
  316. border-bottom: solid 1px @rp-border-grey;
  317. cursor: pointer;
  318. }
  319. .resolved-comments-dropdown & {
  320. position: static;
  321. margin-bottom: 5px;
  322. }
  323. border-left: solid @rp-entry-ribbon-width transparent;
  324. border-radius: 3px;
  325. background-color: #fff;
  326. transition: top @rp-entry-animation-speed, left 0.1s, right 0.1s;
  327. .no-animate & {
  328. transition: left 0.1s, right 0.1s;
  329. }
  330. &-insert,
  331. &-aggregate {
  332. border-color: @rp-green;
  333. }
  334. &-delete {
  335. border-color: @rp-red;
  336. }
  337. &-comment {
  338. border-color: @rp-yellow;
  339. }
  340. &-comment-resolving {
  341. top: 4px;
  342. left: 6px;
  343. opacity: 0;
  344. z-index: 3;
  345. transform: scale(0.1);
  346. transform-origin: 0 0;
  347. transition: top 0.35s ease-out, left 0.35s ease-out,
  348. transform 0.35s ease-out, opacity 0.35s ease-out 0.2s;
  349. }
  350. &-comment-resolved {
  351. border-color: @rp-grey;
  352. background-color: #efefef;
  353. }
  354. &-add-comment {
  355. background-color: transparent;
  356. right: auto;
  357. border-left-width: 0;
  358. &.rp-entry-adding-comment {
  359. background-color: #fff;
  360. right: 5px;
  361. border-left-width: 3px;
  362. border-left-color: @rp-yellow;
  363. }
  364. }
  365. &-bulk-actions {
  366. background-color: transparent;
  367. right: auto;
  368. border-left-width: 0;
  369. }
  370. }
  371. .rp-entry-body {
  372. display: flex;
  373. align-items: center;
  374. padding: 4px 5px;
  375. }
  376. .rp-entry-action-icon {
  377. font-size: @rp-icon-large-size;
  378. padding: 0 3px;
  379. line-height: 0;
  380. .rp-state-overview & {
  381. display: none;
  382. }
  383. }
  384. .rp-entry-details {
  385. line-height: 1.4;
  386. margin-left: 5px;
  387. // We need to set any low-enough flex base size (0px), making it growable (1) and non-shrinkable (0).
  388. // This is needed to ensure that IE makes the element fill the available space.
  389. flex: 1 0 1px;
  390. overflow-x: auto;
  391. .rp-state-overview & {
  392. margin-left: 0;
  393. }
  394. }
  395. .rp-entry-metadata {
  396. font-size: @rp-small-font-size;
  397. }
  398. .rp-entry-user {
  399. font-weight: @rp-semibold-weight;
  400. font-style: normal;
  401. }
  402. .rp-comment-actions {
  403. a {
  404. color: @rp-type-blue;
  405. }
  406. }
  407. .rp-content-highlight {
  408. color: @rp-type-darkgrey;
  409. font-weight: @rp-semibold-weight;
  410. text-decoration: none;
  411. del& {
  412. text-decoration: line-through;
  413. }
  414. }
  415. .rp-entry-actions {
  416. display: flex;
  417. .rp-state-overview .rp-entry-list & {
  418. display: none;
  419. }
  420. }
  421. .rp-entry-button {
  422. .rp-button();
  423. flex: 1 1 50%;
  424. border-right: solid 1px #fff;
  425. padding: 2px 0;
  426. &:last-child {
  427. border-bottom-right-radius: 3px;
  428. border-right-width: 0;
  429. }
  430. .rp-state-current-file-mini.rp-layout-left & {
  431. &:first-child {
  432. border-bottom-left-radius: 3px;
  433. }
  434. &:last-child {
  435. border-bottom-right-radius: 0;
  436. }
  437. }
  438. }
  439. .rp-comment {
  440. margin: 2px 5px;
  441. padding-bottom: 3px;
  442. line-height: 1.4;
  443. border-bottom: solid 1px @rp-border-grey;
  444. &:last-child {
  445. margin-bottom: 2px;
  446. border-bottom-width: 0;
  447. }
  448. .rp-state-overview .rp-entry-list & {
  449. margin: 4px 5px;
  450. &:first-child {
  451. margin-top: 0;
  452. padding-top: 4px;
  453. }
  454. }
  455. }
  456. .rp-comment-content {
  457. margin: 0;
  458. color: @rp-type-darkgrey;
  459. overflow-x: auto; // Long words, like links can overflow without this.
  460. white-space: pre-wrap;
  461. }
  462. .rp-comment-resolver {
  463. color: @rp-type-blue;
  464. }
  465. .rp-comment-resolver-content {
  466. font-style: italic;
  467. margin: 0;
  468. }
  469. .rp-comment-reply {
  470. padding: 0 5px;
  471. }
  472. .rp-add-comment-btn,
  473. .rp-bulk-actions-btn {
  474. .rp-button();
  475. display: inline-block;
  476. padding: 5px 10px;
  477. border-radius: 3px;
  478. .rp-in-editor-widgets & {
  479. display: block;
  480. white-space: nowrap;
  481. border-radius: 0;
  482. &:last-child {
  483. border-bottom-left-radius: 3px;
  484. }
  485. }
  486. }
  487. .rp-bulk-actions-btn {
  488. border-radius: 0;
  489. &:first-child {
  490. border-top-left-radius: 3px;
  491. border-bottom-left-radius: 3px;
  492. }
  493. &:last-child {
  494. border-top-right-radius: 3px;
  495. border-bottom-right-radius: 3px;
  496. margin-left: 1px;
  497. }
  498. }
  499. .rp-new-comment {
  500. padding: 5px;
  501. }
  502. .rp-comment-input {
  503. width: 100%;
  504. font-size: @rp-base-font-size;
  505. padding: 2px 5px;
  506. border-radius: 3px;
  507. border: solid 1px @rp-border-grey;
  508. resize: vertical;
  509. color: @rp-type-darkgrey;
  510. background-color: #fff;
  511. margin-top: 3px;
  512. overflow-x: hidden;
  513. min-height: 3em;
  514. max-height: 400px;
  515. }
  516. .rp-icon-delete {
  517. display: inline-block;
  518. line-height: 1;
  519. font-style: normal;
  520. font-size: 0.8em;
  521. text-decoration: line-through;
  522. font-weight: @rp-semibold-weight;
  523. &::before {
  524. content: 'Ab';
  525. }
  526. }
  527. .rp-resolved-comment {
  528. border-left: solid @rp-entry-ribbon-width @rp-yellow;
  529. border-radius: 3px;
  530. background-color: #fff;
  531. margin-bottom: 5px;
  532. }
  533. .rp-resolved-comment-context {
  534. background-color: lighten(@rp-yellow, 35%);
  535. padding: 4px 5px;
  536. }
  537. .rp-resolved-comment-context-file {
  538. font-weight: @rp-semibold-weight;
  539. }
  540. .rp-resolved-comment-context-quote {
  541. color: #000;
  542. font-family: @font-family-monospace;
  543. margin: 0;
  544. }
  545. .rp-entry-callout {
  546. transition: top @rp-entry-animation-speed, height @rp-entry-animation-speed;
  547. .rp-state-current-file & {
  548. position: absolute;
  549. border-top: 1px solid grey;
  550. border-right: 1px dashed grey;
  551. &::after {
  552. content: '';
  553. position: absolute;
  554. top: -1px;
  555. left: 3px;
  556. bottom: 0;
  557. border-bottom: 1px solid grey;
  558. }
  559. }
  560. .rp-state-current-file-expanded & {
  561. width: 3px;
  562. &::after {
  563. width: 3px;
  564. }
  565. }
  566. .rp-state-current-file-mini & {
  567. width: 1px;
  568. &::after {
  569. width: 1px;
  570. }
  571. }
  572. .rp-state-overview & {
  573. display: none;
  574. }
  575. .rp-state-current-file &-inverted {
  576. border-top: none;
  577. border-bottom: 1px solid grey;
  578. &::after {
  579. top: 0px;
  580. bottom: -1px;
  581. border-top: 1px solid grey;
  582. border-bottom: none;
  583. }
  584. }
  585. .rp-state-current-file &-insert {
  586. border-color: @rp-green;
  587. &::after {
  588. border-color: @rp-green;
  589. }
  590. }
  591. .rp-state-current-file &-delete {
  592. border-color: @rp-red;
  593. &::after {
  594. border-color: @rp-red;
  595. }
  596. }
  597. .rp-state-current-file &-comment {
  598. border-color: @rp-yellow;
  599. &::after {
  600. border-color: @rp-yellow;
  601. }
  602. }
  603. .rp-size-mini &-add-comment {
  604. display: none;
  605. }
  606. }
  607. .rp-overview-file-header {
  608. padding: 2px 5px;
  609. border-top: solid 1px @rp-border-grey;
  610. border-bottom: solid 1px @rp-border-grey;
  611. background-color: @rp-bg-dim-blue;
  612. margin-top: 10px;
  613. font-weight: @rp-semibold-weight;
  614. text-align: center;
  615. cursor: pointer;
  616. }
  617. .rp-overview-file-num-entries {
  618. font-weight: normal;
  619. font-size: 0.9em;
  620. }
  621. .rp-overview-file-header-collapse {
  622. .rp-collapse-arrow;
  623. float: left;
  624. }
  625. .rp-overview-file-entries {
  626. overflow: hidden;
  627. }
  628. .rp-comment-wrapper {
  629. transition: 0.35s opacity ease-out 0.2s;
  630. &-resolving {
  631. opacity: 0;
  632. }
  633. }
  634. .rp-loading,
  635. .rp-empty {
  636. text-align: center;
  637. padding: 5px;
  638. }
  639. .rp-nav {
  640. display: none;
  641. flex-shrink: 0;
  642. .rp-size-expanded & {
  643. display: flex;
  644. }
  645. .rp-unsupported & {
  646. display: none;
  647. }
  648. .rp-state-current-file & {
  649. position: absolute;
  650. bottom: 0;
  651. }
  652. width: 100%;
  653. font-size: @rp-icon-large-size;
  654. text-align: center;
  655. background-color: @rp-bg-dim-blue;
  656. border-top: solid 1px @rp-border-grey;
  657. z-index: 2;
  658. }
  659. .rp-nav-item {
  660. display: block;
  661. color: lighten(@rp-type-blue, 25%);
  662. flex: 0 0 50%;
  663. border-top: solid 3px transparent;
  664. padding-bottom: 2px;
  665. &:hover,
  666. &:focus {
  667. text-decoration: none;
  668. color: @rp-type-blue;
  669. }
  670. &-active {
  671. color: @rp-type-blue;
  672. border-top: solid 3px @rp-highlight-blue;
  673. }
  674. }
  675. .rp-nav-label {
  676. display: block;
  677. font-size: @rp-base-font-size;
  678. }
  679. #editor {
  680. .rp-size-mini & {
  681. right: @review-off-width;
  682. .ace-editor-body {
  683. overflow: visible;
  684. .ace_scrollbar-v {
  685. right: -@review-off-width;
  686. }
  687. }
  688. }
  689. .rp-size-expanded & {
  690. right: @review-panel-width;
  691. left: 0px;
  692. width: auto;
  693. }
  694. .rp-state-current-file-expanded & {
  695. .ace-editor-body {
  696. overflow: visible;
  697. .ace_scrollbar-v {
  698. right: -@review-panel-width;
  699. }
  700. }
  701. }
  702. }
  703. #editor.review-panel-react {
  704. right: 0;
  705. }
  706. .rp-unsupported-msg-wrapper {
  707. display: none;
  708. .rp-size-expanded.rp-unsupported & {
  709. display: block;
  710. }
  711. height: 100%;
  712. .rp-unsupported-msg {
  713. display: flex;
  714. width: @review-panel-width - 70px;
  715. height: 100%;
  716. flex-direction: column;
  717. justify-content: center;
  718. align-items: center;
  719. margin: 0 auto;
  720. text-align: center;
  721. .rp-unsupported-msg-title {
  722. font-size: 1.3em;
  723. margin-top: 13px;
  724. }
  725. }
  726. }
  727. .ace-editor-wrapper {
  728. .track-changes-marker-callout {
  729. border-radius: 0;
  730. position: absolute;
  731. .rp-state-overview &,
  732. .rp-loading-threads & {
  733. display: none;
  734. }
  735. }
  736. .track-changes-added-marker-callout {
  737. border-bottom: 1px dashed @rp-green;
  738. z-index: 1;
  739. }
  740. .track-changes-comment-marker-callout {
  741. border-bottom: 1px dashed @rp-yellow;
  742. }
  743. .track-changes-deleted-marker-callout {
  744. border-bottom: 1px dashed @rp-red;
  745. }
  746. .track-changes-marker {
  747. border-radius: 0;
  748. position: absolute;
  749. .rp-loading-threads & {
  750. display: none;
  751. }
  752. z-index: 6; // Appear above text selection
  753. }
  754. .track-changes-comment-marker {
  755. background-color: @rp-yellow;
  756. opacity: 0.3;
  757. }
  758. .track-changes-added-marker {
  759. background-color: @rp-green;
  760. opacity: 0.3;
  761. }
  762. .track-changes-deleted-marker {
  763. border-left: 2px dotted @rp-red;
  764. margin-left: -1px;
  765. }
  766. .ace_dark {
  767. .track-changes-comment-marker {
  768. background-color: @rp-yellow-on-dark;
  769. }
  770. .track-changes-added-marker {
  771. background-color: @rp-green-on-dark;
  772. }
  773. }
  774. }
  775. .cm-editor-wrapper {
  776. @rp-yellow-for-cm: fade(
  777. @rp-yellow,
  778. 40%
  779. ); // Get the RGBA colour with transparency
  780. @rp-green-for-cm: fade(
  781. @rp-green,
  782. 40%
  783. ); // Get the RGBA colour with transparency
  784. .track-changes-marker {
  785. border-radius: 0;
  786. }
  787. .track-changes-added-marker {
  788. // Uses rgba so not to affect the opacity of the text - doesn't layer like ace
  789. background-color: @rp-green-for-cm;
  790. color: black;
  791. }
  792. .track-changes-deleted-marker {
  793. border-left: 2px dotted #c5060b;
  794. // Commented out styles for callout to be reimplemented later
  795. // border-bottom: 1px dashed #c5060b;
  796. // width: 100%;
  797. }
  798. .track-changes-comment-marker {
  799. // Uses rgba so not to affect the opacity of the text - doesn't layer like ace
  800. background-color: @rp-yellow-for-cm;
  801. color: black;
  802. }
  803. .track-changes-added-marker.track-changes-comment-marker {
  804. background-color: mix(@rp-yellow-for-cm, @rp-green-for-cm);
  805. }
  806. }
  807. .review-icon {
  808. display: inline-block;
  809. background: url('../../../../public/img/ol-icons/review-icon-dark-theme.svg')
  810. top/30px no-repeat;
  811. width: 30px;
  812. &::before {
  813. content: '\00a0'; // Non-breakable space. A non-breakable character here makes this icon work like font-awesome.
  814. }
  815. }
  816. button when (@is-overleaf-light = true) {
  817. .review-icon {
  818. background: url('../../../../public/img/ol-icons/review-icon-light-theme.svg')
  819. top/30px no-repeat;
  820. }
  821. &.active,
  822. &:active {
  823. .review-icon {
  824. background: url('../../../../public/img/ol-icons/review-icon-dark-theme.svg')
  825. top/30px no-repeat;
  826. }
  827. }
  828. }
  829. .resolved-comments-toggle {
  830. font-size: 14px;
  831. color: lighten(@rp-type-blue, 25%);
  832. border: solid 1px @rp-border-grey;
  833. border-radius: 3px;
  834. padding: 0 4px;
  835. display: block;
  836. height: 22px;
  837. width: 22px;
  838. line-height: 1.4;
  839. &:hover,
  840. &:focus {
  841. text-decoration: none;
  842. color: @rp-type-blue;
  843. }
  844. }
  845. .resolved-comments-backdrop {
  846. display: none;
  847. position: fixed;
  848. top: 0;
  849. right: 0;
  850. bottom: 0;
  851. left: 0;
  852. &-visible {
  853. display: block;
  854. }
  855. }
  856. .resolved-comments-dropdown {
  857. display: none;
  858. position: absolute;
  859. width: 300px;
  860. left: -150px;
  861. max-height: ~'calc(100vh - 100px)';
  862. margin-top: @rp-entry-arrow-width * 1.5;
  863. margin-left: 1em;
  864. background-color: @rp-bg-blue;
  865. text-align: left;
  866. align-items: stretch;
  867. justify-content: center;
  868. border-radius: 3px;
  869. box-shadow: 0 0 20px 10px rgba(0, 0, 0, 0.3);
  870. z-index: 1;
  871. &::before {
  872. content: '';
  873. .triangle(
  874. top,
  875. @rp-entry-arrow-width * 3,
  876. @rp-entry-arrow-width * 1.5,
  877. @rp-bg-blue
  878. );
  879. top: -@rp-entry-ribbon-width * 2;
  880. left: 50%;
  881. margin-left: -@rp-entry-arrow-width * 0.75;
  882. }
  883. &-open {
  884. display: flex;
  885. }
  886. }
  887. .resolved-comments-scroller {
  888. flex: 0 0 auto; // Can't use 100% in the flex-basis key here, IE won't account for padding.
  889. width: 100%; // We need to set the width explicitly, as flex-basis won't work.
  890. max-height: ~'calc(100vh - 100px)'; // We also need to explicitly set the max-height, IE won't compute the flex-determined height.
  891. padding: 5px;
  892. overflow-y: auto;
  893. }
  894. .rp-collapse-toggle {
  895. color: @rp-type-blue;
  896. font-weight: @rp-semibold-weight;
  897. &:hover,
  898. &:focus {
  899. color: darken(@rp-type-blue, 5%);
  900. text-decoration: none;
  901. }
  902. }
  903. .rp-in-editor-widgets {
  904. position: absolute;
  905. top: 0;
  906. right: 0;
  907. font-size: 11px;
  908. z-index: 2;
  909. .rp-offset-widgets & {
  910. top: 32px;
  911. }
  912. .rp-size-mini & {
  913. right: @review-off-width;
  914. }
  915. .rp-size-expanded &,
  916. .rp-unsupported & {
  917. display: none;
  918. }
  919. .has-source-toolbar & {
  920. top: 32px;
  921. }
  922. }
  923. .rp-track-changes-indicator {
  924. display: block;
  925. padding: 5px 10px;
  926. background-color: rgba(240, 240, 240, 0.9);
  927. color: @rp-type-blue;
  928. text-align: center;
  929. border-bottom-left-radius: 3px;
  930. white-space: nowrap;
  931. &.rp-track-changes-indicator-on-dark {
  932. background-color: rgba(88, 88, 88, 0.8);
  933. color: #fff;
  934. &:hover,
  935. &:focus {
  936. background-color: rgba(88, 88, 88, 1);
  937. color: #fff;
  938. }
  939. }
  940. &:hover,
  941. &:focus {
  942. outline: 0;
  943. text-decoration: none;
  944. background-color: rgba(240, 240, 240, 1);
  945. color: @rp-type-blue;
  946. }
  947. }
  948. .review-panel-toggler {
  949. display: none;
  950. position: absolute;
  951. top: 0;
  952. bottom: 0;
  953. width: 10px;
  954. opacity: 0.5;
  955. color: @rp-highlight-blue;
  956. z-index: 1;
  957. background-color: transparent;
  958. transition: background 0.1s;
  959. .rp-size-mini &,
  960. .rp-size-expanded & {
  961. display: block;
  962. }
  963. .rp-unsupported & {
  964. display: none;
  965. }
  966. .rp-size-expanded & {
  967. &::after {
  968. content: '\f105';
  969. }
  970. }
  971. &:hover,
  972. &:focus {
  973. color: @rp-highlight-blue;
  974. background-color: #fff;
  975. }
  976. &::after {
  977. content: '\f104';
  978. font-family: FontAwesome;
  979. line-height: 1;
  980. -webkit-font-smoothing: antialiased;
  981. -moz-osx-font-smoothing: grayscale;
  982. font-size: 16px;
  983. display: block;
  984. position: absolute;
  985. top: 50%;
  986. width: 100%;
  987. text-align: center;
  988. margin-top: -0.5em;
  989. }
  990. }
  991. // Helper class for elements which aren't treated as flex-items by IE10, e.g:
  992. // * inline items;
  993. // * unknown elements (elements which aren't standard DOM elements, such as custom element directives)
  994. .rp-flex-block {
  995. display: block;
  996. }
  997. // CM6-specific review panel rules
  998. .ol-cm-review-panel {
  999. position: relative;
  1000. z-index: 6;
  1001. flex-shrink: 0;
  1002. background-color: @rp-bg-blue;
  1003. border-left: solid 0 @rp-border-grey;
  1004. font-family: @font-family-base;
  1005. line-height: @line-height-base;
  1006. font-size: @rp-base-font-size;
  1007. color: @rp-type-blue;
  1008. box-sizing: content-box;
  1009. .rp-size-expanded & {
  1010. display: flex;
  1011. flex-direction: column;
  1012. width: @review-panel-width;
  1013. overflow: visible;
  1014. border-left-width: 1px;
  1015. }
  1016. .rp-size-mini & {
  1017. width: @review-off-width;
  1018. z-index: 6;
  1019. border-left-width: 1px;
  1020. }
  1021. .review-panel-toggler {
  1022. flex-direction: column;
  1023. padding: 0;
  1024. border: 0;
  1025. .rp-size-mini &,
  1026. .rp-size-expanded & {
  1027. display: flex;
  1028. }
  1029. &:after {
  1030. position: sticky;
  1031. top: 50%;
  1032. bottom: 50%;
  1033. }
  1034. }
  1035. .review-panel-toolbar-collapse-button {
  1036. border: none;
  1037. background: none;
  1038. padding: 0;
  1039. }
  1040. &.rp-current-file-container {
  1041. display: none;
  1042. .rp-size-mini &,
  1043. .rp-size-expanded & {
  1044. display: block;
  1045. }
  1046. .review-panel-toolbar {
  1047. position: sticky;
  1048. top: 0;
  1049. }
  1050. .rp-nav {
  1051. position: sticky;
  1052. bottom: 0;
  1053. }
  1054. }
  1055. .rp-entry-list-react {
  1056. position: relative;
  1057. overflow: hidden;
  1058. }
  1059. .rp-state-current-file & {
  1060. .review-panel-tools {
  1061. display: flex;
  1062. flex-direction: column;
  1063. justify-content: space-between;
  1064. position: absolute;
  1065. top: 0;
  1066. bottom: 0;
  1067. left: 0;
  1068. right: 0;
  1069. }
  1070. }
  1071. .rp-state-overview & {
  1072. position: sticky;
  1073. top: 0;
  1074. display: flex;
  1075. flex-direction: column;
  1076. height: 100%;
  1077. }
  1078. .rp-overview-file {
  1079. .rp-overview-file-entries {
  1080. transition: height ease-in-out 0.15s;
  1081. }
  1082. }
  1083. .rp-nav-item {
  1084. border-right: 0;
  1085. border-bottom: 0;
  1086. border-left: 0;
  1087. background: none;
  1088. }
  1089. .rp-tc-state {
  1090. height: 0;
  1091. transition: height 150ms;
  1092. }
  1093. }
  1094. .rp-floating-entry {
  1095. position: absolute;
  1096. font-size: @rp-base-font-size;
  1097. color: @rp-type-blue;
  1098. }
  1099. .ol-cm-review-panel,
  1100. .rp-floating-entry {
  1101. .rp-entry-metadata {
  1102. button {
  1103. padding: 0;
  1104. border: 0;
  1105. background-color: transparent;
  1106. color: @ol-blue;
  1107. &:hover,
  1108. &:focus {
  1109. text-decoration: underline;
  1110. }
  1111. }
  1112. }
  1113. }
  1114. .react-rp-in-editor-widgets {
  1115. position: sticky;
  1116. font-family: @font-family-sans-serif;
  1117. .rp-in-editor-widgets-inner {
  1118. position: absolute;
  1119. top: 0;
  1120. right: 0;
  1121. display: flex;
  1122. flex-direction: column;
  1123. }
  1124. .rp-track-changes-indicator {
  1125. border: 0;
  1126. }
  1127. .has-source-toolbar & {
  1128. top: 0;
  1129. }
  1130. }