mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-28 23:33:42 -05:00
2304536844
* Tidy up review panel components * Add ReviewPanel providers * [web] new design for review panel track change (#19544) * [web] new design for review panel track change * fixed mini view * mini icon style change * fix icon size * format date * useRangesUserContext hook * remove useRangesUserContext hook * using full class names * fix action icons hover * change wording for tooltips * added ReviewPanelChangeUser component * Update header in new review panel * Extract ReviewPanelTrackChangesMenuButton as a separate component * Remove wrapper div * Replace h2 with div for review panel label * Rename ReviewPanelTools to ReviewPanelHeader * Rename trackChangesExpanded -> trackChangesMenuExpanded * Dont break memoisation of ReviewPanelTrackChangesMenuButton * Fix the width of the track changes arrow icon * Update how prop types are declared * Remove new empty state from old review panel * Add empty state to new review panel * Add project members and owner to ChangesUsers context (#19624) --------- Co-authored-by: Alf Eaton <alf.eaton@overleaf.com> * Redesign comment entry in review panel (#19678) * Redesign comment entry in review panel * ReviewPanelCommentOptions component * remove unused prop * Tidying * Add conditional import * Optional changeManager * Add more split test compatibility * More split test compatibility * Fixes * Improve overview scrolling * Fix overview scrolling * Fix & simplify track changes toggle * Fix overview scrolling * Fix current file container * ExpandableContent component for messages in review panel (#19738) * ExpandableContent component for messages in review panel * remove isExpanded dependancy * Delete comment option for new review panel (#19772) * Delete comment option for new review panel * dont show thread warning if there are no replies * fix hasReplies issue * Implement initial collapsing overview files * Fix positioning of overview panel * Small styling changes * Add count of unresolved comments and tracked chanegs * More style adjustments * Move review-panel-overview styles into css file * Remove unused var --------- Co-authored-by: Domagoj Kriskovic <dom.kriskovic@overleaf.com> Co-authored-by: David Powell <david.powell@overleaf.com> Co-authored-by: David <33458145+davidmcpowell@users.noreply.github.com> GitOrigin-RevId: e67463443d541f88445a86eed5e2b6ec6040f9c7
755 lines
14 KiB
Text
755 lines
14 KiB
Text
@import './editor/file-tree.less';
|
|
@import './editor/history.less';
|
|
@import './editor/history-react.less';
|
|
@import './editor/toolbar.less';
|
|
@import './editor/left-menu.less';
|
|
@import './editor/pdf.less';
|
|
@import './editor/error-boundary.less';
|
|
@import './editor/share.less';
|
|
@import './editor/chat.less';
|
|
@import './editor/file-view.less';
|
|
@import './editor/search.less';
|
|
@import './editor/publish-template.less';
|
|
@import './editor/online-users.less';
|
|
@import './editor/math-preview.less';
|
|
@import './editor/hotkeys.less';
|
|
@import './editor/review-panel.less';
|
|
@import './editor/review-panel-new.less';
|
|
@import './editor/publish-modal.less';
|
|
@import './editor/outline.less';
|
|
@import './editor/logs.less';
|
|
@import './editor/dictionary.less';
|
|
@import './editor/compile-button.less';
|
|
@import './editor/figure-modal.less';
|
|
@import './editor/table-generator-column-width-modal.less';
|
|
@import './editor/ide-react.less';
|
|
|
|
@ui-layout-toggler-def-height: 50px;
|
|
@ui-resizer-size: 7px;
|
|
|
|
@keyframes blink {
|
|
0% {
|
|
opacity: 0.2;
|
|
}
|
|
20% {
|
|
opacity: 1;
|
|
}
|
|
100% {
|
|
opacity: 0.2;
|
|
}
|
|
}
|
|
|
|
.editor-menu-icon {
|
|
&.fa {
|
|
width: 1em;
|
|
background: @editor-header-logo-background;
|
|
|
|
&::before {
|
|
// Disable the font-awesome icon when in Overleaf by replacing it with a
|
|
// non-breakable space instead (otherwise the browser would render a
|
|
// zero-width element).
|
|
content: '\00a0';
|
|
}
|
|
}
|
|
}
|
|
|
|
.full-size {
|
|
position: absolute;
|
|
top: 0;
|
|
bottom: 0;
|
|
left: 0;
|
|
right: 0;
|
|
}
|
|
|
|
.global-alerts {
|
|
height: 0;
|
|
margin-top: 2px;
|
|
text-align: center;
|
|
|
|
.alert {
|
|
display: inline-block;
|
|
text-align: left;
|
|
min-width: 400px;
|
|
padding: @global-alerts-padding;
|
|
font-size: 14px;
|
|
margin-bottom: (@line-height-computed / 4);
|
|
position: relative;
|
|
z-index: 20;
|
|
}
|
|
}
|
|
|
|
#try-reconnect-now-button {
|
|
margin-left: 20px;
|
|
}
|
|
|
|
#synctex-more-info-button {
|
|
margin-left: 20px;
|
|
}
|
|
|
|
#ide-body {
|
|
background-color: @pdf-bg;
|
|
.full-size;
|
|
top: @ide-body-top-offset;
|
|
}
|
|
|
|
#editor {
|
|
.full-size;
|
|
}
|
|
|
|
.pdf-empty,
|
|
.no-history-available,
|
|
.no-file-selection,
|
|
.multi-selection-ongoing {
|
|
&::before {
|
|
.full-size;
|
|
left: 20px;
|
|
content: '';
|
|
background: url(../../../public/img/ol-brand/overleaf-o-grey.svg) center /
|
|
200px no-repeat;
|
|
opacity: 0.2;
|
|
pointer-events: none;
|
|
}
|
|
}
|
|
|
|
.no-history-available,
|
|
.no-file-selection-message,
|
|
.multi-selection-message {
|
|
width: 50%;
|
|
margin: 0 auto;
|
|
text-align: center;
|
|
padding: @line-height-computed 0;
|
|
}
|
|
|
|
.faster-compiles-feedback {
|
|
position: absolute;
|
|
bottom: 0;
|
|
right: 0.5rem; // scrollbar
|
|
margin: 1rem;
|
|
|
|
padding: 10px;
|
|
|
|
.btn {
|
|
margin: 0 0 0 10px;
|
|
}
|
|
.faster-compiles-feedback-options {
|
|
display: inline;
|
|
white-space: nowrap;
|
|
}
|
|
.faster-compiles-feedback-option {
|
|
background: #1d4c82;
|
|
}
|
|
.faster-compiles-feedback-dismiss {
|
|
border: 0;
|
|
margin: 0 0 0 5px;
|
|
color: #1d4c82;
|
|
right: 0;
|
|
top: 0;
|
|
float: right;
|
|
}
|
|
}
|
|
|
|
.toolbar-editor {
|
|
height: @editor-toolbar-height;
|
|
background-color: @editor-toolbar-bg;
|
|
padding: 0 5px;
|
|
overflow: hidden;
|
|
position: relative;
|
|
z-index: 10; // Prevent track changes showing over toolbar
|
|
}
|
|
|
|
.loading-screen {
|
|
display: flex;
|
|
flex-direction: column;
|
|
justify-content: center;
|
|
align-items: center;
|
|
width: 100%;
|
|
height: 100%;
|
|
background-color: #fff;
|
|
}
|
|
.loading-screen-brand-container {
|
|
width: 15%;
|
|
min-width: 200px;
|
|
text-align: center;
|
|
}
|
|
.loading-screen-brand {
|
|
position: relative;
|
|
width: 100%;
|
|
padding-top: @editor-loading-logo-padding-top;
|
|
height: 0;
|
|
background: @editor-loading-logo-background-url no-repeat bottom / 100%;
|
|
|
|
&::after {
|
|
content: '';
|
|
position: absolute;
|
|
height: inherit;
|
|
right: 0;
|
|
bottom: 0;
|
|
left: 0;
|
|
background: @editor-loading-logo-foreground-url no-repeat bottom / 100%;
|
|
transition: height 0.5s;
|
|
}
|
|
}
|
|
.loading-screen-label {
|
|
margin: 0;
|
|
padding-top: 1em;
|
|
font-size: 2em;
|
|
color: @gray-dark;
|
|
}
|
|
.loading-screen-ellip {
|
|
animation: blink 1.4s both infinite;
|
|
&:nth-child(2) {
|
|
animation-delay: 0.2s;
|
|
}
|
|
&:nth-child(3) {
|
|
animation-delay: 0.4s;
|
|
}
|
|
}
|
|
|
|
.loading-screen-error {
|
|
margin: 0;
|
|
padding-top: 1em;
|
|
color: @state-danger-text;
|
|
}
|
|
|
|
.loading-panel {
|
|
.full-size;
|
|
padding-top: 10rem;
|
|
font-family: @font-family-serif;
|
|
text-align: center;
|
|
background-color: #fafafa;
|
|
}
|
|
|
|
.loading-panel-file-view {
|
|
background-color: @gray-lightest;
|
|
}
|
|
|
|
.error-panel {
|
|
.full-size;
|
|
padding: @line-height-computed;
|
|
background-color: #fafafa;
|
|
.alert {
|
|
max-width: 400px;
|
|
margin: auto;
|
|
}
|
|
}
|
|
|
|
.project-name {
|
|
.name {
|
|
display: inline-block;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
vertical-align: top;
|
|
padding: 6px;
|
|
color: @project-name-color;
|
|
font-weight: 700;
|
|
white-space: nowrap;
|
|
}
|
|
input {
|
|
height: 30px;
|
|
margin-top: 4px;
|
|
text-align: center;
|
|
padding: 6px;
|
|
font-weight: 700;
|
|
max-width: 500px;
|
|
}
|
|
a.rename {
|
|
visibility: hidden;
|
|
display: inline-block;
|
|
color: @project-rename-link-color;
|
|
padding: 5px;
|
|
border-radius: @border-radius-small;
|
|
cursor: pointer;
|
|
&:hover {
|
|
text-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
|
|
color: @project-rename-link-color-hover;
|
|
text-decoration: none;
|
|
}
|
|
}
|
|
&:hover {
|
|
a.rename {
|
|
visibility: visible;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**************************************
|
|
CodeMirror
|
|
***************************************/
|
|
.cm-editor-wrapper {
|
|
position: relative;
|
|
height: 100%;
|
|
}
|
|
|
|
.cm-editor-body {
|
|
height: 100%;
|
|
}
|
|
|
|
// CM (for some reason) has height set to 300px in it's stylesheet
|
|
.CodeMirror {
|
|
height: 100%;
|
|
}
|
|
|
|
.ui-layout-resizer {
|
|
width: @ui-resizer-size !important;
|
|
background-color: @editor-resizer-bg-color;
|
|
/* Over-ride z-index set on element by JQuery Layout */
|
|
z-index: 0 !important;
|
|
&.ui-layout-resizer-closed {
|
|
&::before,
|
|
&::after {
|
|
content: none;
|
|
}
|
|
}
|
|
|
|
&::before,
|
|
&::after {
|
|
content: '\2847';
|
|
display: block;
|
|
position: absolute;
|
|
text-align: center;
|
|
left: -2px;
|
|
-webkit-font-smoothing: antialiased;
|
|
width: 100%;
|
|
font-size: 24px;
|
|
top: 25%;
|
|
color: @ol-blue-gray-2;
|
|
}
|
|
&::after {
|
|
top: 75%;
|
|
}
|
|
}
|
|
|
|
.ui-layout-toggler {
|
|
display: none !important;
|
|
}
|
|
|
|
.custom-toggler {
|
|
position: absolute;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: @ui-resizer-size !important;
|
|
height: 50px;
|
|
margin-top: -25px;
|
|
top: 50%;
|
|
background-color: @editor-toggler-bg-color;
|
|
|
|
&:hover,
|
|
&:focus {
|
|
outline: none;
|
|
text-decoration: none;
|
|
}
|
|
// Increase hit area
|
|
&::before {
|
|
content: '';
|
|
display: block;
|
|
position: absolute;
|
|
top: 0;
|
|
right: -3px;
|
|
bottom: 0;
|
|
left: -3px;
|
|
}
|
|
|
|
&::after {
|
|
font-family: FontAwesome;
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
font-size: 65%;
|
|
font-weight: bold;
|
|
color: #fff;
|
|
user-select: none;
|
|
pointer-events: none;
|
|
}
|
|
|
|
&:hover {
|
|
background-color: @editor-toggler-hover-bg-color;
|
|
}
|
|
}
|
|
.custom-toggler-east::after {
|
|
content: '\f105';
|
|
}
|
|
.custom-toggler-west::after {
|
|
content: '\f104';
|
|
}
|
|
|
|
.custom-toggler-closed.custom-toggler-east::after {
|
|
content: '\f104';
|
|
}
|
|
.custom-toggler-closed.custom-toggler-west::after {
|
|
content: '\f105';
|
|
}
|
|
|
|
.ui-layout-resizer-dragging {
|
|
background-color: @editor-resizer-bg-color-dragging;
|
|
z-index: 1000 !important;
|
|
}
|
|
|
|
.context-menu {
|
|
position: fixed;
|
|
z-index: 100;
|
|
}
|
|
|
|
.editor-dark {
|
|
color: @gray-lighter;
|
|
background-color: @editor-dark-background-color;
|
|
|
|
.ui-layout-resizer {
|
|
background-color: darken(@editor-dark-background-color, 10%);
|
|
border: none;
|
|
}
|
|
|
|
.btn-default {
|
|
color: white;
|
|
background-color: @gray;
|
|
border-color: darken(@gray-dark, 10%);
|
|
&:hover {
|
|
background-color: darken(@gray, 5%);
|
|
border-color: darken(@gray-dark, 20%);
|
|
}
|
|
}
|
|
}
|
|
|
|
.modal-alert {
|
|
margin-top: 10px;
|
|
margin-bottom: 0px;
|
|
}
|
|
|
|
// vertically centre the "connection down" modal so it does not hide
|
|
// the reconnecting indicator
|
|
|
|
.modal.lock-editor-modal {
|
|
display: flex !important;
|
|
background-color: rgba(0, 0, 0, 0.3);
|
|
overflow-y: hidden;
|
|
pointer-events: none;
|
|
.modal-dialog {
|
|
top: @line-height-computed;
|
|
}
|
|
}
|
|
|
|
.out-of-sync-modal {
|
|
.text-preview {
|
|
margin-top: @line-height-computed / 2;
|
|
.scroll-container {
|
|
max-height: 360px;
|
|
width: 100%;
|
|
background-color: white;
|
|
font-size: 0.8em;
|
|
line-height: 1.1em;
|
|
overflow: auto;
|
|
border: 1px solid @gray-lighter;
|
|
padding-left: 12px;
|
|
padding-right: 12px;
|
|
padding-top: 8px;
|
|
padding-bottom: 8px;
|
|
text-align: left;
|
|
white-space: pre;
|
|
font-family: monospace;
|
|
}
|
|
}
|
|
}
|
|
|
|
.sl_references_search_hint {
|
|
position: relative;
|
|
top: 100%;
|
|
}
|
|
|
|
.sl_references_search_hint {
|
|
position: relative;
|
|
left: -1px;
|
|
text-align: center;
|
|
padding: 2px;
|
|
background: rgb(202, 214, 250);
|
|
border: 1px solid lightgray;
|
|
box-shadow: 3px 3px 5px rgba(0, 0, 0, 0.2);
|
|
|
|
span {
|
|
color: black;
|
|
}
|
|
}
|
|
|
|
.bibtex-hint-banner {
|
|
position: absolute;
|
|
top: 8px;
|
|
right: 8px;
|
|
left: 8px;
|
|
z-index: 1000;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
padding: 5px 10px;
|
|
}
|
|
|
|
.bibtex-hint-banner {
|
|
align-items: flex-start;
|
|
|
|
.bibtex-hint-close {
|
|
color: inherit;
|
|
margin-left: 10px;
|
|
font-size: 24px;
|
|
padding: 0;
|
|
line-height: 1;
|
|
border-radius: 0;
|
|
|
|
&,
|
|
&:hover,
|
|
&:focus,
|
|
&:active {
|
|
background-color: transparent;
|
|
}
|
|
}
|
|
}
|
|
|
|
// -- References Search Modal --
|
|
.references-search-modal-backdrop {
|
|
// don't grey out the editor when the
|
|
// modal is active
|
|
background-color: transparent;
|
|
}
|
|
.references-search-modal {
|
|
// upgrade prompt
|
|
.references-search-upgrade-prompt {
|
|
padding: 24px;
|
|
padding-bottom: 48px;
|
|
.upgrade-prompt {
|
|
text-align: center;
|
|
width: 400px;
|
|
padding-top: 14px;
|
|
padding-bottom: 14px;
|
|
padding-left: 38px;
|
|
padding-right: 38px;
|
|
margin: auto;
|
|
background: white;
|
|
opacity: 0.95;
|
|
border-radius: 8px;
|
|
.message {
|
|
margin-top: 15px;
|
|
&.call-to-action {
|
|
font-weight: bold;
|
|
}
|
|
ul.list-unstyled {
|
|
text-align: left;
|
|
}
|
|
}
|
|
a.btn {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
}
|
|
.search-form {
|
|
// position the spinner inside the input element
|
|
i.fa-spinner {
|
|
margin-top: -30px;
|
|
}
|
|
}
|
|
.alert-danger {
|
|
margin-top: 12px;
|
|
margin-bottom: 0px;
|
|
}
|
|
// search result items list
|
|
.search-results {
|
|
font-size: 12px;
|
|
.no-results-message,
|
|
.too-many-results-message {
|
|
font-size: 16px;
|
|
}
|
|
.search-results-scroll-container {
|
|
max-height: calc(100vh - 225px);
|
|
overflow-y: auto;
|
|
}
|
|
.search-result-hit {
|
|
&:hover {
|
|
cursor: pointer;
|
|
}
|
|
border-bottom: 1px solid #ddd;
|
|
padding: 8px;
|
|
&:last-child {
|
|
border-bottom: 1px solid transparent;
|
|
}
|
|
border-left: 4px solid transparent;
|
|
&.selected-search-result-hit {
|
|
color: @brand-success;
|
|
}
|
|
.hit-title {
|
|
font-size: 1.3em;
|
|
font-style: italic;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.referencesImportModal {
|
|
.referencesImportPreviewScroller {
|
|
font-family: monospace;
|
|
font-size: 0.8em;
|
|
max-height: 360px;
|
|
overflow: scroll;
|
|
white-space: pre;
|
|
padding: 8px 12px;
|
|
margin-bottom: 15px;
|
|
border: 1px solid @gray-lighter;
|
|
background-color: @gray-lightest;
|
|
}
|
|
}
|
|
|
|
.teaser-title,
|
|
.dropbox-teaser-title {
|
|
margin-top: 0;
|
|
text-align: center;
|
|
}
|
|
|
|
.teaser-refresh-label {
|
|
text-align: center;
|
|
}
|
|
|
|
.teaser-img,
|
|
.dropbox-teaser-img {
|
|
.img-responsive;
|
|
margin-bottom: 5px;
|
|
}
|
|
|
|
.teaser-video-container,
|
|
.dropbox-teaser-video-container {
|
|
margin-top: -@modal-inner-padding;
|
|
margin-left: -@modal-inner-padding;
|
|
margin-right: -@modal-inner-padding;
|
|
margin-bottom: 5px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.teaser-video,
|
|
.dropbox-teaser-video {
|
|
width: 100%;
|
|
height: auto;
|
|
border-bottom: 1px solid @modal-header-border-color;
|
|
}
|
|
|
|
.spell-check-menu {
|
|
> .dropdown-menu > li > a {
|
|
padding: 2px 15px;
|
|
}
|
|
}
|
|
|
|
.spell-check-menu-from-bottom {
|
|
> .dropdown-menu {
|
|
top: auto;
|
|
bottom: 100%;
|
|
}
|
|
}
|
|
|
|
// The source editor container is managed by jQuery's UI layout library, which adds an `overflow: hidden`
|
|
// rule to it. This is problematic because we need overflowing content to be visible (the review panel
|
|
// previews are shown on hover, visually outside the source editor container). As the `overflow: hidden`
|
|
// rule is added automatically (inline and not configurable), the only workaround is to use `!important`.
|
|
.editor-container {
|
|
overflow: visible !important;
|
|
container-type: inline-size;
|
|
}
|
|
|
|
.pdf-preview-messages {
|
|
position: absolute;
|
|
right: @margin-sm;
|
|
left: @margin-sm;
|
|
top: @margin-xl;
|
|
z-index: @zindex-popover;
|
|
}
|
|
|
|
.compile-time-warning {
|
|
padding: @padding-sm;
|
|
background-color: @ol-green;
|
|
max-width: 420px;
|
|
box-shadow: 5px 5px 6px rgba(0, 0, 0, 0.3);
|
|
|
|
.warning-content {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
flex-wrap: wrap;
|
|
gap: @alert-padding;
|
|
}
|
|
|
|
.warning-text {
|
|
display: inline-block;
|
|
font-size: @font-size-small;
|
|
}
|
|
.upgrade-prompt {
|
|
display: inline-flex;
|
|
margin-left: auto;
|
|
}
|
|
|
|
button.btn {
|
|
background-color: @ol-darker-green;
|
|
|
|
&.close {
|
|
background-color: @ol-green;
|
|
}
|
|
}
|
|
}
|
|
|
|
.cm6-switch-away-survey {
|
|
padding: @padding-sm;
|
|
box-shadow: 5px 5px 6px rgba(0, 0, 0, 0.3);
|
|
background-color: @ol-blue;
|
|
width: 530px;
|
|
position: absolute;
|
|
right: @margin-sm;
|
|
bottom: @margin-xl;
|
|
z-index: @zindex-popover;
|
|
|
|
.btn.close {
|
|
background-color: transparent;
|
|
color: #fff;
|
|
opacity: 1;
|
|
}
|
|
|
|
.warning-content {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
margin-right: 32px;
|
|
}
|
|
|
|
.warning-text {
|
|
padding-right: @alert-padding;
|
|
display: inline-block;
|
|
font-size: @font-size-small;
|
|
}
|
|
}
|
|
|
|
.legacy-editor-warning {
|
|
width: 500px;
|
|
|
|
&.alert.alert-info {
|
|
padding: @padding-sm;
|
|
}
|
|
|
|
.btn.close {
|
|
background-color: transparent;
|
|
color: @white;
|
|
opacity: 1;
|
|
}
|
|
|
|
.warning-content {
|
|
padding-right: @alert-padding;
|
|
font-size: @font-size-small;
|
|
margin-right: 32px;
|
|
|
|
.warning-link {
|
|
font-weight: 700;
|
|
text-decoration: none;
|
|
|
|
&:hover {
|
|
text-decoration: underline;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
grammarly-extension[data-grammarly-shadow-root='true'] {
|
|
z-index: 1;
|
|
}
|
|
|
|
.editor-notification {
|
|
margin: 48px 64px;
|
|
width: 80%;
|
|
max-width: 560px;
|
|
}
|