* Fix all stylelint errors For any errors that fixing would require changing the output of the css disable stylelint for that line instead of modifying. * Update quality.py Make stylelint quality check pass when there are no errors * Delete empty selectors
404 lines
8.4 KiB
SCSS
404 lines
8.4 KiB
SCSS
// LMS -- modules -- student notes
|
|
// ====================
|
|
|
|
// in this document:
|
|
// --------------------
|
|
// +extends
|
|
// +notes
|
|
// +local variables/utilities
|
|
// +toggling notes
|
|
// +individual note (in context)
|
|
// +creating/editing notes
|
|
// +listing notes
|
|
// +necessary, but ugly overrides
|
|
|
|
// +extends:
|
|
// --------------------
|
|
%bubble {
|
|
@include transform(rotate(45deg));
|
|
@include left(12px);
|
|
|
|
position: absolute;
|
|
bottom: -($baseline/2);
|
|
display: block;
|
|
width: 16px;
|
|
height: 16px;
|
|
content: " ";
|
|
background: $white; // Set a default
|
|
border-bottom: 1px solid $gray-l2;
|
|
border-right: 1px solid $gray-l2;
|
|
}
|
|
|
|
// +notes:
|
|
// --------------------
|
|
// this Sass partial contains all of the styling needed for the in-line student notes UI.
|
|
|
|
// +local variables/utilities:
|
|
// --------------------
|
|
$notes-annotator-background-light: rgb(251, 251, 251); // taken from annotatorJS base colors
|
|
$notes-annotator-background-med: rgb(214, 214, 214); // taken from annotatorJS base colors
|
|
$notes-annotator-background-dark: rgba(122, 122, 122, 0.6); // taken from annotatorJS base colors
|
|
|
|
%notes-reset-background {
|
|
background-image: none !important;
|
|
background-repeat: none !important;
|
|
background-position: 0 0 !important;
|
|
}
|
|
|
|
%notes-reset-font {
|
|
font-family: $font-family-sans-serif !important;
|
|
font-style: normal !important;
|
|
font-weight: $font-regular !important;
|
|
}
|
|
|
|
%notes-reset-icon {
|
|
font-family: FontAwesome !important;
|
|
font-style: normal !important;
|
|
text-indent: 0 !important;
|
|
}
|
|
|
|
%notes-bubble {
|
|
border: ($baseline/20) solid $notes-annotator-background-dark !important;
|
|
border-radius: ($baseline/10);
|
|
box-shadow: 0 ($baseline/10) 0 ($baseline/20) $shadow-l2 !important;
|
|
background: $notes-annotator-background-light !important; // syncing to vendor triangle color
|
|
}
|
|
|
|
// +toggling notes
|
|
// --------------------
|
|
.edx-notes-visibility {
|
|
.edx-notes-visibility-error {
|
|
@extend %t-copy-sub2;
|
|
@extend %text-truncated;
|
|
|
|
position: relative;
|
|
bottom: -($baseline/20); // needed to sync up with current rogue/more complex calc utility alignment
|
|
max-width: ($baseline*15);
|
|
display: none;
|
|
vertical-align: bottom;
|
|
|
|
@include margin-right(-($baseline/4));
|
|
@include border-right(($baseline/4) solid $error-color);
|
|
|
|
padding: ($baseline/2) $baseline;
|
|
background: $black-t3;
|
|
text-align: center;
|
|
color: $white;
|
|
}
|
|
|
|
// STATE: has error
|
|
&.has-error {
|
|
.edx-notes-visibility-error {
|
|
display: inline-block;
|
|
}
|
|
|
|
.utility-control {
|
|
color: $error-color;
|
|
}
|
|
}
|
|
}
|
|
|
|
// CASE: annotator error in toggling notes (vendor customization)
|
|
.annotator-notice {
|
|
@extend %t-weight4;
|
|
@extend %t-copy-sub1;
|
|
|
|
padding: ($baseline/4) $baseline;
|
|
background: $black-t3;
|
|
}
|
|
|
|
// CASE: annotator error in toggling notes
|
|
// vendor customization
|
|
.annotator-notice {
|
|
@extend %t-weight4;
|
|
@extend %t-copy-sub1;
|
|
|
|
padding: ($baseline/2) $baseline;
|
|
background: $gray-d4;
|
|
}
|
|
|
|
// vendor customization
|
|
.annotator-notice-error {
|
|
border-color: $error-color;
|
|
}
|
|
|
|
.edx-notes-focus-grabber {
|
|
outline: none;
|
|
}
|
|
|
|
.edx-notes-wrapper {
|
|
// +individual note (in context)
|
|
// --------------------
|
|
.annotator-outer {
|
|
@extend %ui-depth4;
|
|
@extend %notes-reset-font;
|
|
}
|
|
|
|
// bubble
|
|
.annotator-widget.annotator-widget {
|
|
@extend %notes-bubble;
|
|
}
|
|
|
|
.annotator-listing {
|
|
padding: 0 !important;
|
|
margin: 0 !important;
|
|
|
|
.annotator-widget {
|
|
&::after {
|
|
@extend %bubble;
|
|
}
|
|
}
|
|
}
|
|
|
|
.annotator-editor {
|
|
.annotator-widget {
|
|
&::after {
|
|
@extend %bubble;
|
|
|
|
background: $gray-l5;
|
|
}
|
|
}
|
|
}
|
|
|
|
.annotator-item {
|
|
padding: ($baseline/2) !important;
|
|
margin-bottom: 0 !important;
|
|
}
|
|
|
|
// +creating/editing notes (overrides for vendor styling)
|
|
// --------------------
|
|
// adding
|
|
.annotator-adder {
|
|
@extend %notes-reset-background;
|
|
@extend %ui-depth4;
|
|
|
|
button {
|
|
@extend %notes-bubble;
|
|
|
|
position: relative;
|
|
display: block;
|
|
|
|
&::after {
|
|
@extend %notes-reset-icon;
|
|
@extend %shame-link-base;
|
|
|
|
@include font-size(30);
|
|
|
|
position: absolute;
|
|
top: 35%;
|
|
|
|
@include left(15%);
|
|
|
|
content: "\f14b";
|
|
}
|
|
|
|
// using annotatorJS triangle styling for adder
|
|
&::before {
|
|
@extend %bubble;
|
|
|
|
@include left(10px);
|
|
|
|
background: whitesmoke;
|
|
}
|
|
}
|
|
}
|
|
|
|
// editing
|
|
.annotator-editor {
|
|
.annotator-controls {
|
|
@include text-align(left);
|
|
@include clearfix();
|
|
|
|
@extend %ui-depth1;
|
|
|
|
position: relative;
|
|
padding: 8px;
|
|
border: none !important;
|
|
border-radius: 0 !important;
|
|
background: $gray-l5 !important;
|
|
font-family: $font-family-sans-serif !important;
|
|
|
|
// actions
|
|
.annotator-save,
|
|
.annotator-cancel {
|
|
@extend %notes-reset-background;
|
|
|
|
padding: ($baseline/4) ($baseline/2) !important;
|
|
border: none;
|
|
box-shadow: none;
|
|
font-family: $font-family-sans-serif !important;
|
|
font-size: 14px !important;
|
|
text-shadow: none !important;
|
|
|
|
// removing vendor icons
|
|
&::after {
|
|
display: none !important;
|
|
}
|
|
}
|
|
|
|
.annotator-save {
|
|
@include float(left);
|
|
}
|
|
|
|
.annotator-cancel {
|
|
background-color: $transparent !important;
|
|
}
|
|
}
|
|
|
|
.annotator-item {
|
|
textarea {
|
|
@extend %notes-reset-font;
|
|
@extend %t-demi-strong;
|
|
|
|
padding: ($baseline/5) !important;
|
|
font-size: 14px !important;
|
|
line-height: 22px !important;
|
|
color: $gray-d3 !important;
|
|
background: $notes-annotator-background-light !important; //matches annotator JS editing bubble triangle color
|
|
|
|
// STATE: hover/focus
|
|
&:hover,
|
|
&:focus {
|
|
background: $notes-annotator-background-light;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
// +listing notes (overrides for vendor styling)
|
|
// --------------------
|
|
// highlight
|
|
.annotator-hl {
|
|
background: $student-notes-highlight-color-focus;
|
|
|
|
// CASE: a highlight contains a link
|
|
a {
|
|
color: $link-color;
|
|
|
|
// STATE: hover/focus
|
|
&:hover,
|
|
&:focus {
|
|
text-decoration: underline;
|
|
}
|
|
|
|
// STATE: disabled
|
|
&:disabled,
|
|
&.is-disabled {
|
|
@extend %ui-disabled;
|
|
|
|
opacity: 0.5;
|
|
cursor: not-allowed;
|
|
}
|
|
}
|
|
}
|
|
|
|
// CASE: a link contains a highlight
|
|
a .annotator-hl {
|
|
color: $link-color;
|
|
|
|
// STATE: hover/focus
|
|
&:hover,
|
|
&:focus {
|
|
text-decoration: underline;
|
|
}
|
|
}
|
|
|
|
// content
|
|
.annotator-viewer {
|
|
.annotator-widget.annotator-listing {
|
|
outline: none;
|
|
}
|
|
|
|
// poorly scoped selector for content of a note's comment
|
|
div:first-of-type {
|
|
@extend %notes-reset-font;
|
|
|
|
padding: ($baseline/4) !important;
|
|
font-size: 14px !important;
|
|
line-height: 22px !important;
|
|
color: $gray-d2 !important;
|
|
}
|
|
|
|
// controls
|
|
.annotator-controls {
|
|
opacity: 1;
|
|
// RTL support
|
|
@include right(0);
|
|
|
|
top: 0;
|
|
|
|
@include float(right);
|
|
@include padding-left($baseline/4);
|
|
|
|
.annotator-edit,
|
|
.annotator-delete,
|
|
.annotator-close {
|
|
position: relative;
|
|
display: inline-block;
|
|
vertical-align: middle;
|
|
|
|
&::before {
|
|
@extend %notes-reset-icon;
|
|
@extend %shame-link-base;
|
|
@extend %t-icon4;
|
|
|
|
position: absolute;
|
|
}
|
|
}
|
|
|
|
.annotator-edit {
|
|
@include margin-right($baseline/2);
|
|
|
|
&::before {
|
|
top: 0;
|
|
|
|
@include left(0);
|
|
|
|
content: "\f040"; // .fa-pencil
|
|
}
|
|
}
|
|
|
|
.annotator-delete {
|
|
@include margin-right($baseline/3);
|
|
|
|
&::before {
|
|
top: -($baseline/20);
|
|
|
|
@include left(0);
|
|
|
|
content: "\f1f8"; // .fa-trash
|
|
}
|
|
}
|
|
|
|
.annotator-close {
|
|
&::before {
|
|
top: -($baseline/20);
|
|
|
|
@include left(0);
|
|
|
|
content: "\f00d"; // .fa-close
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// +necessary, but ugly overrides
|
|
// --------------------
|
|
.edx-notes-wrapper .annotator-wrapper.annotator-wrapper .annotator-outer.annotator-viewer .annotator-controls button {
|
|
@extend %notes-reset-background;
|
|
|
|
opacity: 1;
|
|
}
|
|
|
|
.edx-notes-wrapper .annotator-wrapper .annotator-editor.annotator-outer button.annotator-save {
|
|
@extend %btn-inherited-primary;
|
|
@extend %t-action2;
|
|
}
|
|
|
|
.edx-notes-wrapper .annotator-wrapper .annotator-editor.annotator-outer button.annotator-cancel {
|
|
@extend %shame-link-base;
|
|
@extend %t-action2;
|
|
@extend %t-regular;
|
|
}
|