0c420f5135
- As in the annotation layer, use percent instead of pixels as unit; - handle the rotation of the editor layer in allowing editing when rotation angle is not zero; - the different editors are rotated counterclockwise in order to be usable when the main page is itself rotated; - add support for saving/printing rotated editors.
274 lines
7.8 KiB
CSS
274 lines
7.8 KiB
CSS
/* Copyright 2014 Mozilla Foundation
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
:root {
|
|
--annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>");
|
|
}
|
|
|
|
@media (forced-colors: active) {
|
|
.annotationLayer .textWidgetAnnotation input:required,
|
|
.annotationLayer .textWidgetAnnotation textarea:required,
|
|
.annotationLayer .choiceWidgetAnnotation select:required,
|
|
.annotationLayer .buttonWidgetAnnotation.checkBox input:required,
|
|
.annotationLayer .buttonWidgetAnnotation.radioButton input:required {
|
|
outline: 1.5px solid selectedItem;
|
|
}
|
|
}
|
|
|
|
.annotationLayer {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
pointer-events: none;
|
|
transform-origin: 0 0;
|
|
}
|
|
|
|
.annotationLayer section {
|
|
position: absolute;
|
|
text-align: initial;
|
|
pointer-events: auto;
|
|
box-sizing: border-box;
|
|
transform-origin: 0 0;
|
|
}
|
|
|
|
.annotationLayer .linkAnnotation > a,
|
|
.annotationLayer .buttonWidgetAnnotation.pushButton > a {
|
|
position: absolute;
|
|
font-size: 1em;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
.annotationLayer .buttonWidgetAnnotation.pushButton > canvas {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
.annotationLayer .linkAnnotation > a:hover,
|
|
.annotationLayer .buttonWidgetAnnotation.pushButton > a:hover {
|
|
opacity: 0.2;
|
|
background: rgba(255, 255, 0, 1);
|
|
box-shadow: 0 2px 10px rgba(255, 255, 0, 1);
|
|
}
|
|
|
|
.annotationLayer .textAnnotation img {
|
|
position: absolute;
|
|
cursor: pointer;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
.annotationLayer .textWidgetAnnotation input,
|
|
.annotationLayer .textWidgetAnnotation textarea,
|
|
.annotationLayer .choiceWidgetAnnotation select,
|
|
.annotationLayer .buttonWidgetAnnotation.checkBox input,
|
|
.annotationLayer .buttonWidgetAnnotation.radioButton input {
|
|
background-image: var(--annotation-unfocused-field-background);
|
|
border: 1px solid transparent;
|
|
box-sizing: border-box;
|
|
font: calc(9px * var(--scale-factor)) sans-serif;
|
|
height: 100%;
|
|
margin: 0;
|
|
vertical-align: top;
|
|
width: 100%;
|
|
}
|
|
|
|
.annotationLayer .textWidgetAnnotation input:required,
|
|
.annotationLayer .textWidgetAnnotation textarea:required,
|
|
.annotationLayer .choiceWidgetAnnotation select:required,
|
|
.annotationLayer .buttonWidgetAnnotation.checkBox input:required,
|
|
.annotationLayer .buttonWidgetAnnotation.radioButton input:required {
|
|
outline: 1.5px solid red;
|
|
}
|
|
|
|
.annotationLayer .choiceWidgetAnnotation select option {
|
|
padding: 0;
|
|
}
|
|
|
|
.annotationLayer .buttonWidgetAnnotation.radioButton input {
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.annotationLayer .textWidgetAnnotation textarea {
|
|
resize: none;
|
|
}
|
|
|
|
.annotationLayer .textWidgetAnnotation input[disabled],
|
|
.annotationLayer .textWidgetAnnotation textarea[disabled],
|
|
.annotationLayer .choiceWidgetAnnotation select[disabled],
|
|
.annotationLayer .buttonWidgetAnnotation.checkBox input[disabled],
|
|
.annotationLayer .buttonWidgetAnnotation.radioButton input[disabled] {
|
|
background: none;
|
|
border: 1px solid transparent;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.annotationLayer .textWidgetAnnotation input:hover,
|
|
.annotationLayer .textWidgetAnnotation textarea:hover,
|
|
.annotationLayer .choiceWidgetAnnotation select:hover,
|
|
.annotationLayer .buttonWidgetAnnotation.checkBox input:hover,
|
|
.annotationLayer .buttonWidgetAnnotation.radioButton input:hover {
|
|
border: 1px solid rgba(0, 0, 0, 1);
|
|
}
|
|
|
|
.annotationLayer .textWidgetAnnotation input:focus,
|
|
.annotationLayer .textWidgetAnnotation textarea:focus,
|
|
.annotationLayer .choiceWidgetAnnotation select:focus {
|
|
background: none;
|
|
border: 1px solid transparent;
|
|
}
|
|
|
|
.annotationLayer .textWidgetAnnotation input :focus,
|
|
.annotationLayer .textWidgetAnnotation textarea :focus,
|
|
.annotationLayer .choiceWidgetAnnotation select :focus,
|
|
.annotationLayer .buttonWidgetAnnotation.checkBox :focus,
|
|
.annotationLayer .buttonWidgetAnnotation.radioButton :focus {
|
|
background-image: none;
|
|
background-color: transparent;
|
|
outline: auto;
|
|
}
|
|
|
|
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,
|
|
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,
|
|
.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before {
|
|
background-color: CanvasText;
|
|
content: "";
|
|
display: block;
|
|
position: absolute;
|
|
}
|
|
|
|
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,
|
|
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after {
|
|
height: 80%;
|
|
left: 45%;
|
|
width: 1px;
|
|
}
|
|
|
|
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before {
|
|
transform: rotate(45deg);
|
|
}
|
|
|
|
.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after {
|
|
transform: rotate(-45deg);
|
|
}
|
|
|
|
.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before {
|
|
border-radius: 50%;
|
|
height: 50%;
|
|
left: 30%;
|
|
top: 20%;
|
|
width: 50%;
|
|
}
|
|
|
|
.annotationLayer .textWidgetAnnotation input.comb {
|
|
font-family: monospace;
|
|
padding-left: 2px;
|
|
padding-right: 0;
|
|
}
|
|
|
|
.annotationLayer .textWidgetAnnotation input.comb:focus {
|
|
/*
|
|
* Letter spacing is placed on the right side of each character. Hence, the
|
|
* letter spacing of the last character may be placed outside the visible
|
|
* area, causing horizontal scrolling. We avoid this by extending the width
|
|
* when the element has focus and revert this when it loses focus.
|
|
*/
|
|
width: 103%;
|
|
}
|
|
|
|
.annotationLayer .buttonWidgetAnnotation.checkBox input,
|
|
.annotationLayer .buttonWidgetAnnotation.radioButton input {
|
|
appearance: none;
|
|
}
|
|
|
|
.annotationLayer .popupTriggerArea {
|
|
height: 100%;
|
|
width: 100%;
|
|
}
|
|
|
|
.annotationLayer .popupWrapper {
|
|
position: absolute;
|
|
font-size: calc(9px * var(--scale-factor));
|
|
width: 100%;
|
|
min-width: calc(180px * var(--scale-factor));
|
|
pointer-events: none;
|
|
}
|
|
|
|
.annotationLayer .popup {
|
|
position: absolute;
|
|
z-index: 200;
|
|
max-width: calc(180px * var(--scale-factor));
|
|
background-color: rgba(255, 255, 153, 1);
|
|
box-shadow: 0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor))
|
|
rgba(136, 136, 136, 1);
|
|
border-radius: calc(2px * var(--scale-factor));
|
|
padding: calc(6px * var(--scale-factor));
|
|
margin-left: calc(5px * var(--scale-factor));
|
|
cursor: pointer;
|
|
font: message-box;
|
|
white-space: normal;
|
|
word-wrap: break-word;
|
|
pointer-events: auto;
|
|
}
|
|
|
|
.annotationLayer .popup > * {
|
|
font-size: calc(9px * var(--scale-factor));
|
|
}
|
|
|
|
.annotationLayer .popup h1 {
|
|
display: inline-block;
|
|
}
|
|
|
|
.annotationLayer .popupDate {
|
|
display: inline-block;
|
|
margin-left: calc(5px * var(--scale-factor));
|
|
}
|
|
|
|
.annotationLayer .popupContent {
|
|
border-top: 1px solid rgba(51, 51, 51, 1);
|
|
margin-top: calc(2px * var(--scale-factor));
|
|
padding-top: calc(2px * var(--scale-factor));
|
|
}
|
|
|
|
.annotationLayer .richText > * {
|
|
white-space: pre-wrap;
|
|
font-size: calc(9px * var(--scale-factor));
|
|
}
|
|
|
|
.annotationLayer .highlightAnnotation,
|
|
.annotationLayer .underlineAnnotation,
|
|
.annotationLayer .squigglyAnnotation,
|
|
.annotationLayer .strikeoutAnnotation,
|
|
.annotationLayer .freeTextAnnotation,
|
|
.annotationLayer .lineAnnotation svg line,
|
|
.annotationLayer .squareAnnotation svg rect,
|
|
.annotationLayer .circleAnnotation svg ellipse,
|
|
.annotationLayer .polylineAnnotation svg polyline,
|
|
.annotationLayer .polygonAnnotation svg polygon,
|
|
.annotationLayer .caretAnnotation,
|
|
.annotationLayer .inkAnnotation svg polyline,
|
|
.annotationLayer .stampAnnotation,
|
|
.annotationLayer .fileAttachmentAnnotation {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.annotationLayer section svg {
|
|
position: absolute;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|