1703 lines
39 KiB
SCSS
1703 lines
39 KiB
SCSS
/* course.less */
|
|
|
|
/* COURSE CONTENT */
|
|
|
|
.block_tree .tree_item.branch {
|
|
margin-left: 8px;
|
|
}
|
|
|
|
.section {
|
|
.side {
|
|
&.left {
|
|
float: left;
|
|
}
|
|
|
|
&.right {
|
|
float: right;
|
|
clear: right;
|
|
}
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
.spinner {
|
|
height: 16px;
|
|
width: 16px;
|
|
}
|
|
|
|
.activity {
|
|
.spinner {
|
|
left: 100%;
|
|
position: absolute;
|
|
}
|
|
|
|
/* The command block for each activity */
|
|
.actions {
|
|
position: absolute;
|
|
right: 0;
|
|
top: 0;
|
|
display: flex;
|
|
}
|
|
|
|
.contentwithoutlink,
|
|
.activityinstance {
|
|
min-width: 40%;
|
|
|
|
> a {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.dimmed {
|
|
.activityicon {
|
|
opacity: .5;
|
|
}
|
|
}
|
|
}
|
|
|
|
.stealth {
|
|
color: $text-muted;
|
|
}
|
|
a.stealth,
|
|
a.stealth:hover {
|
|
color: lighten($link-color, 25%) !important; /* stylelint-disable-line declaration-no-important */
|
|
}
|
|
|
|
&.indented {
|
|
.activity-item {
|
|
margin-left: map-get($spacers, 3);
|
|
}
|
|
}
|
|
}
|
|
|
|
.label {
|
|
.contentwithoutlink,
|
|
.activityinstance {
|
|
padding-right: 32px;
|
|
display: block;
|
|
height: inherit;
|
|
}
|
|
@include media-breakpoint-up(sm) {
|
|
.mod-indent-outer {
|
|
padding-left: 24px;
|
|
display: block;
|
|
}
|
|
}
|
|
}
|
|
|
|
.filler {
|
|
// This must be sized like an icon to fill the space.
|
|
width: 16px;
|
|
height: 16px;
|
|
padding: 0;
|
|
margin: 0 ($spacer * 0.5);
|
|
display: inline-block;
|
|
}
|
|
|
|
.activity.editor_displayed {
|
|
a.editing_title,
|
|
.moodle-actionmenu {
|
|
display: none;
|
|
}
|
|
|
|
div.activityinstance {
|
|
padding-right: initial;
|
|
|
|
input {
|
|
margin-bottom: initial;
|
|
padding-top: initial;
|
|
padding-bottom: initial;
|
|
vertical-align: text-bottom;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.section .activity .activityinstance {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.editing {
|
|
.section {
|
|
.activity {
|
|
.contentwithoutlink,
|
|
.activityinstance {
|
|
padding-right: 200px;
|
|
}
|
|
.mod-indent-outer {
|
|
/**
|
|
* Add appropriate padding such that nothing overlaps the
|
|
* absolute positioned move icon.
|
|
*/
|
|
padding-left: 2rem;
|
|
}
|
|
}
|
|
}
|
|
// Remove old spinners if the reactive state is ready.
|
|
.course-content .stateready .section .spinner {
|
|
display: none;
|
|
}
|
|
// New editing in progress spinners.
|
|
.editinprogress {
|
|
position: relative;
|
|
|
|
& > * {
|
|
opacity: .4;
|
|
}
|
|
|
|
.corelightbox,
|
|
.lightbox {
|
|
display: none;
|
|
}
|
|
|
|
&:after {
|
|
@extend .fa-solid;
|
|
position: absolute;
|
|
font-size: 20px;
|
|
color: $gray-600;
|
|
content: fa-content($fa-var-spinner);
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
width: 30px;
|
|
height: 30px;
|
|
left: calc(50% - 15px);
|
|
top: calc(50% - 15px);
|
|
animation: editinprogress-rotation 2s infinite linear;
|
|
}
|
|
|
|
// Prevent inner editingprogress.
|
|
.editinprogress {
|
|
&:after {
|
|
display: none;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@keyframes editinprogress-rotation {
|
|
0% {
|
|
opacity: 0;
|
|
transform: rotate(0deg);
|
|
}
|
|
50% {
|
|
opacity: 1;
|
|
}
|
|
100% {
|
|
opacity: 0;
|
|
transform: rotate(359deg);
|
|
}
|
|
}
|
|
|
|
.editing_show + .editing_assign,
|
|
.editing_hide + .editing_assign {
|
|
// if roles icon missing, add space
|
|
margin-left: 20px;
|
|
}
|
|
|
|
.section .activity .commands {
|
|
white-space: nowrap;
|
|
display: inline-block;
|
|
}
|
|
|
|
.section .activity.modtype_label.label {
|
|
font-weight: normal;
|
|
|
|
// Remove min-height for labels so top and bottom paddings can be displayed more consistently.
|
|
.contentwithoutlink {
|
|
min-height: 0;
|
|
}
|
|
|
|
// When activity information is shown remove the bottom margin for the last p/i elements.
|
|
&.hasinfo {
|
|
p:last-child,
|
|
i:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
// The activity-wrapper class ensures these styles are not used when the new activity styles
|
|
// from MDL-71691 are not affected. As soons as MDL-72656 is integrated and these styles
|
|
// are removed the core_courseformat/local/content/cm template no longer needs this class.
|
|
.section li.activity:not(.activity-wrapper) {
|
|
padding: 0.2em;
|
|
clear: both;
|
|
|
|
&.hasinfo {
|
|
border-bottom: $border-width solid $table-border-color;
|
|
padding-top: map-get($spacers, 3);
|
|
padding-bottom: map-get($spacers, 3);
|
|
|
|
&:last-child {
|
|
border-bottom: 0;
|
|
padding-bottom: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Compensate for the border widths when dropzones are displayed.
|
|
.course-content .section.dropready {
|
|
|
|
&.main.drop-down {
|
|
border-bottom: 1px solid $dropzone-border;
|
|
}
|
|
|
|
.course-section-header.dropready.drop-zone {
|
|
margin-top: -2px;
|
|
}
|
|
|
|
li.activity.dropready.drop-down {
|
|
border-bottom: 1px solid $dropzone-border;
|
|
margin-bottom: -1px;
|
|
}
|
|
|
|
li.activity.dropready.drop-up {
|
|
border-top: 1px solid $dropzone-border;
|
|
margin-top: -1px;
|
|
}
|
|
}
|
|
|
|
.section .activity .activityinstance .groupinglabel {
|
|
padding-left: 30px;
|
|
}
|
|
|
|
.section.main:not(.course-section) .activity .availabilityinfo,
|
|
.section.main:not(.course-section) .activity .contentafterlink {
|
|
margin-top: 0.5em;
|
|
margin-left: 30px;
|
|
}
|
|
|
|
.section .activity .contentafterlink p {
|
|
margin: .5em 0;
|
|
}
|
|
|
|
.editing .section.main:not(.course-section) {
|
|
.activity:hover,
|
|
.activity.action-menu-shown,
|
|
.sectionname:hover {
|
|
background-color: $table-accent-bg;
|
|
}
|
|
}
|
|
|
|
.course-content .current {
|
|
position: relative;
|
|
}
|
|
|
|
.course-content .current::before {
|
|
border-left: $primary 3px solid;
|
|
bottom: 0;
|
|
content: "";
|
|
left: -8px;
|
|
position: absolute;
|
|
top: 0;
|
|
}
|
|
|
|
.course-content .single-section .section-navigation {
|
|
display: block;
|
|
padding: 0.5em;
|
|
margin-bottom: -0.5em;
|
|
}
|
|
|
|
.course-content .single-section .section-navigation .title {
|
|
font-weight: bold;
|
|
font-size: 108%;
|
|
clear: both;
|
|
}
|
|
|
|
.course-content .single-section .section-navigation .mdl-left {
|
|
font-weight: normal;
|
|
float: left;
|
|
margin-right: 1em;
|
|
}
|
|
|
|
.course-content .single-section .section-navigation .mdl-left .larrow {
|
|
margin-right: 0.1em;
|
|
}
|
|
|
|
.course-content .single-section .section-navigation .mdl-right {
|
|
font-weight: normal;
|
|
float: right;
|
|
margin-left: 1em;
|
|
}
|
|
|
|
.course-content .single-section .section-navigation .mdl-right .rarrow {
|
|
margin-left: 0.1em;
|
|
}
|
|
|
|
.course-content .single-section .section-navigation .mdl-bottom {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.course-content ul li.section.main:not(.course-section) {
|
|
border-bottom: $border-width solid $table-border-color;
|
|
margin-top: 0;
|
|
|
|
&:last-child {
|
|
border-bottom: 0;
|
|
}
|
|
}
|
|
|
|
.course-content ul li.section.hidden:not(.course-section) {
|
|
.sectionname > span,
|
|
.content > div.summary,
|
|
.activity .activityinstance {
|
|
color: $text-muted;
|
|
}
|
|
}
|
|
|
|
.course-content ul.topics,
|
|
.course-content ul.weeks {
|
|
padding: 0;
|
|
margin: 0;
|
|
list-style: none;
|
|
|
|
li.section {
|
|
.content {
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
@include media-breakpoint-up(sm) {
|
|
.summary,
|
|
.content > .availabilityinfo {
|
|
margin-left: 25px;
|
|
}
|
|
}
|
|
|
|
.left,
|
|
.right {
|
|
padding: 0 6px 0;
|
|
text-align: right;
|
|
width: auto;
|
|
}
|
|
}
|
|
}
|
|
|
|
.course-content .single-section ul.topics li.section,
|
|
.course-content .single-section ul.weeks li.section {
|
|
padding-top: 0;
|
|
}
|
|
|
|
@include media-breakpoint-down(sm) {
|
|
body:not(.editing) {
|
|
.course-content ul.topics,
|
|
.course-content ul.weeks {
|
|
li.section {
|
|
.left,
|
|
.right {
|
|
display: none;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.course-content {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.course-content .hidden {
|
|
display: none;
|
|
}
|
|
|
|
.course-content li {
|
|
&.section:not(.course-section) {
|
|
@include media-breakpoint-down(sm) {
|
|
ul {
|
|
padding-left: 0;
|
|
}
|
|
}
|
|
ul {
|
|
list-style: disc;
|
|
|
|
ul {
|
|
list-style: circle;
|
|
|
|
ul {
|
|
list-style: square;
|
|
}
|
|
}
|
|
}
|
|
|
|
li {
|
|
&.activity {
|
|
ul {
|
|
list-style: disc;
|
|
|
|
ul {
|
|
list-style: circle;
|
|
|
|
ul {
|
|
list-style: square;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.right {
|
|
> .icon:first-child {
|
|
/* Remove the spacer icon. */
|
|
display: none;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.path-course-view.editing #region-main > .card-block {
|
|
padding-bottom: 13rem;
|
|
}
|
|
|
|
.path-course-view .completionprogress {
|
|
margin-left: 25px;
|
|
}
|
|
|
|
.path-course-view .completionprogress {
|
|
display: block;
|
|
float: right;
|
|
height: 20px;
|
|
position: relative;
|
|
}
|
|
|
|
#page-site-index .subscribelink {
|
|
text-align: right;
|
|
}
|
|
|
|
#site-news-forum h2,
|
|
#frontpage-course-list h2,
|
|
#frontpage-category-names h2,
|
|
#frontpage-category-combo h2 {
|
|
margin-bottom: 9px;
|
|
}
|
|
|
|
.path-course-view a.reduce-sections {
|
|
padding-left: 0.2em;
|
|
}
|
|
|
|
.path-course-view .subscribelink {
|
|
text-align: right;
|
|
}
|
|
|
|
.path-course-view .unread {
|
|
margin-left: 30px;
|
|
}
|
|
|
|
.path-course-view .block.drag .header {
|
|
cursor: move;
|
|
}
|
|
|
|
.path-course-view .completionprogress {
|
|
text-align: right;
|
|
}
|
|
|
|
.path-course-view .single-section .completionprogress {
|
|
margin-right: 5px;
|
|
}
|
|
|
|
.path-course-view li.activity span.autocompletion img {
|
|
vertical-align: text-bottom;
|
|
margin-left: 0;
|
|
}
|
|
|
|
.path-course-view {
|
|
&.editing {
|
|
li.activity span.autocompletion img {
|
|
/* Use the same spacing as the filler. */
|
|
margin-right: $spacer * 0.5;
|
|
margin-left: $spacer * 0.5;
|
|
}
|
|
}
|
|
}
|
|
|
|
li.section.hidden span.commands a.editing_hide,
|
|
li.section.hidden span.commands a.editing_show {
|
|
cursor: default;
|
|
}
|
|
|
|
.single-section-page .header-action {
|
|
display: inline-block;
|
|
}
|
|
|
|
input.titleeditor {
|
|
width: 330px;
|
|
vertical-align: text-bottom;
|
|
}
|
|
|
|
span.editinstructions {
|
|
position: absolute;
|
|
top: 0;
|
|
margin-top: -22px;
|
|
margin-left: 30px;
|
|
font-size: $font-size-sm;
|
|
padding: .1em .4em;
|
|
text-decoration: none;
|
|
z-index: 9999;
|
|
border: $alert-border-width solid transparent;
|
|
width: fit-content;
|
|
|
|
@include alert-variant(
|
|
theme-color-level('info', $alert-bg-level),
|
|
theme-color-level('info', $alert-border-level),
|
|
theme-color-level('info', $alert-color-level)
|
|
);
|
|
}
|
|
|
|
/* COURSES LISTINGS AND COURSE SUMMARY */
|
|
#page-course-pending .singlebutton,
|
|
#page-course-index .singlebutton,
|
|
#page-course-index-category .singlebutton,
|
|
#page-course-editsection .singlebutton {
|
|
text-align: center;
|
|
}
|
|
|
|
#page-admin-course-manage #movecourses td img {
|
|
margin: 0 .22em;
|
|
vertical-align: text-bottom;
|
|
}
|
|
|
|
#page-course-pending .pendingcourserequests {
|
|
margin-bottom: 1em;
|
|
}
|
|
|
|
#page-course-pending .pendingcourserequests .singlebutton {
|
|
display: inline;
|
|
}
|
|
|
|
#page-course-pending .pendingcourserequests .cell {
|
|
padding: 0 5px;
|
|
}
|
|
|
|
#page-course-pending .pendingcourserequests .cell.c6 {
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.coursebox {
|
|
display: flex;
|
|
flex-direction: column;
|
|
.info {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
}
|
|
|
|
#frontpage-available-course-list,
|
|
#frontpage-course-list,
|
|
.course-search-result {
|
|
margin-top: $spacer * 0.5;
|
|
.coursebox {
|
|
padding: $spacer * 0.5;
|
|
border: $border-width solid $border-color;
|
|
margin-bottom: $spacer * 0.5;
|
|
|
|
@include border-radius();
|
|
}
|
|
}
|
|
|
|
.subcategories,
|
|
#frontpage-category-names,
|
|
#frontpage-category-combo {
|
|
.coursebox > .info > .coursename a {
|
|
display: block;
|
|
background-image: url([[pix:moodle|i/course]]);
|
|
background-repeat: no-repeat;
|
|
padding-left: 21px;
|
|
background-position: left 0.2em;
|
|
}
|
|
}
|
|
|
|
.coursebox > .info > .coursename {
|
|
font-size: $font-size-base;
|
|
font-weight: normal;
|
|
margin: 5px;
|
|
padding: 0;
|
|
}
|
|
|
|
.coursebox .content .teachers li {
|
|
list-style-type: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
|
|
.coursebox .customfieldname,
|
|
.coursebox .customfieldseparator {
|
|
font-weight: $font-weight-bold;
|
|
}
|
|
|
|
.coursebox .content .coursefile {
|
|
max-width: 100px;
|
|
}
|
|
|
|
.coursebox .content .courseimage img {
|
|
max-width: 100px;
|
|
max-height: 100px;
|
|
}
|
|
|
|
.coursebox .content .coursecat,
|
|
.coursebox .content .summary,
|
|
.coursebox .content .courseimage,
|
|
.coursebox .content .coursefile,
|
|
.coursebox .content .teachers,
|
|
.coursebox.remotecoursebox .remotecourseinfo,
|
|
.coursebox .content .customfields-container {
|
|
margin: 15px 5px 5px;
|
|
padding: 0;
|
|
}
|
|
|
|
.category-browse {
|
|
.coursebox .content .coursecat,
|
|
.coursebox .content .summary,
|
|
.coursebox .content .courseimage,
|
|
.coursebox .content .coursefile,
|
|
.coursebox .content .teachers,
|
|
.coursebox.remotecoursebox .remotecourseinfo,
|
|
.coursebox .content .customfields-container {
|
|
margin-top: 0;
|
|
}
|
|
}
|
|
|
|
.coursebox.collapsed > .content {
|
|
display: none;
|
|
}
|
|
|
|
.courses > .paging.paging-morelink {
|
|
text-align: center;
|
|
padding: $spacer;
|
|
}
|
|
|
|
.course_category_tree .category .numberofcourse {
|
|
font-size: $font-size-sm;
|
|
}
|
|
|
|
.course_category_tree .category > .info > .categoryname {
|
|
margin: 5px;
|
|
font-size: $font-size-base;
|
|
font-weight: normal;
|
|
padding: 2px 18px;
|
|
}
|
|
|
|
.course_category_tree .category.with_children > .info > .categoryname {
|
|
background-image: url([[pix:moodle|t/expanded]]);
|
|
background-repeat: no-repeat;
|
|
background-position: center left;
|
|
}
|
|
|
|
.course_category_tree .category.with_children.collapsed > .info > .categoryname {
|
|
background-image: url([[pix:moodle|t/collapsed]]);
|
|
}
|
|
/* rtl:raw:
|
|
.course_category_tree .category.with_children.collapsed > .info > .categoryname {
|
|
background-image:url([[pix:moodle|t/collapsed_rtl]]);
|
|
}
|
|
*/
|
|
.course_category_tree .category.collapsed > .content {
|
|
display: none;
|
|
}
|
|
|
|
.course_category_tree .category > .content {
|
|
padding-left: 16px;
|
|
}
|
|
|
|
#page-course-index-category .categorypicker {
|
|
margin: 10px 0 20px;
|
|
}
|
|
|
|
/**
|
|
* Course management page
|
|
* Palette
|
|
*
|
|
* Background (reg) #F5F5F5
|
|
* Background (light #fafafa
|
|
* Background (highlight) #ddffaa
|
|
* Borders #e1e1e8
|
|
*/
|
|
#course-category-listings {
|
|
margin-bottom: 0;
|
|
|
|
/** Two column layout */
|
|
&.columns-2 {
|
|
> #course-listing > div {
|
|
position: relative;
|
|
left: -1px;
|
|
}
|
|
}
|
|
/** Three column layout */
|
|
&.columns-3 > #course-listing > div {
|
|
height: 100%;
|
|
}
|
|
|
|
> div > div {
|
|
min-height: 300px;
|
|
|
|
> ul.ml > li:first-child > div {
|
|
border-top: 0;
|
|
}
|
|
}
|
|
|
|
h3 {
|
|
margin: 0;
|
|
padding: 0.4rem 0.6rem 0.3rem;
|
|
}
|
|
|
|
h4 {
|
|
margin: 1rem 0 0;
|
|
padding: 0.6rem 1rem 0.5rem;
|
|
}
|
|
|
|
.moodle-actionmenu {
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.listing-actions {
|
|
text-align: center;
|
|
|
|
> .moodle-actionmenu {
|
|
display: inline-block;
|
|
}
|
|
}
|
|
|
|
ul.ml {
|
|
list-style: none;
|
|
margin: 1rem 0;
|
|
|
|
ul.ml {
|
|
margin: 0;
|
|
}
|
|
}
|
|
|
|
.listitem {
|
|
|
|
&[data-selected='1'] {
|
|
border-left: calc(#{$list-group-border-width} + 5px) solid map-get($theme-colors, 'primary');
|
|
padding-left: calc(#{$list-group-item-padding-x} - 5px);
|
|
}
|
|
&:hover {
|
|
z-index: 2;
|
|
}
|
|
}
|
|
|
|
.item-actions {
|
|
margin-right: 1em;
|
|
display: inline-block;
|
|
|
|
&.show .menu {
|
|
|
|
img {
|
|
width: 12px;
|
|
max-width: none;
|
|
}
|
|
}
|
|
|
|
.menu-action-text {
|
|
vertical-align: inherit;
|
|
}
|
|
}
|
|
|
|
.listitem {
|
|
> div {
|
|
> .float-left {
|
|
float: left;
|
|
}
|
|
|
|
> .float-right {
|
|
float: right;
|
|
text-align: right;
|
|
}
|
|
|
|
.item-actions {
|
|
.action-show {
|
|
display: none;
|
|
}
|
|
|
|
.action-hide {
|
|
display: inline;
|
|
}
|
|
}
|
|
|
|
.without-actions {
|
|
color: $course-cat-without-actions-color;
|
|
}
|
|
|
|
.idnumber {
|
|
margin-right: 2em;
|
|
}
|
|
}
|
|
// The category or course is hidden.
|
|
&[data-visible="0"] {
|
|
color: $text-muted;
|
|
|
|
> div {
|
|
> a {
|
|
color: $text-muted;
|
|
}
|
|
|
|
.item-actions {
|
|
.action-show {
|
|
display: inline;
|
|
}
|
|
|
|
.action-hide {
|
|
display: none;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
&.highlight {
|
|
background-color: $body-bg;
|
|
|
|
> div,
|
|
> div:hover,
|
|
&[data-selected='1'] > div {
|
|
background-color: $table-hover-bg;
|
|
}
|
|
}
|
|
}
|
|
|
|
#course-listing {
|
|
.listitem {
|
|
.categoryname {
|
|
display: inline-block;
|
|
margin-left: 1em;
|
|
color: $course-listing-color;
|
|
}
|
|
|
|
.coursename {
|
|
display: inline-block;
|
|
flex-basis: 10rem;
|
|
}
|
|
}
|
|
|
|
> .firstpage .listitem:first-child > div .item-actions .action-moveup,
|
|
> .lastpage .listitem:last-child > div .item-actions .action-movedown {
|
|
display: none;
|
|
}
|
|
|
|
.bulk-action-checkbox {
|
|
margin: -2px 6px 0 0;
|
|
}
|
|
}
|
|
|
|
#category-listing {
|
|
.listitem.collapsed > ul.ml {
|
|
display: none;
|
|
}
|
|
|
|
.listitem {
|
|
&:first-child > div .item-actions .action-moveup,
|
|
&:last-child > div .item-actions .action-movedown {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
.course-count {
|
|
color: $course-listing-color;
|
|
margin-right: 2rem;
|
|
min-width: 3.5em;
|
|
display: inline-block;
|
|
}
|
|
|
|
.bulk-action-checkbox {
|
|
margin-right: -3px;
|
|
}
|
|
|
|
.category-listing > ul > .listitem:first-child {
|
|
position: relative;
|
|
}
|
|
|
|
.category-bulk-actions {
|
|
margin: 0 0.5em 0.5em;
|
|
position: relative;
|
|
}
|
|
}
|
|
|
|
.detail-pair {
|
|
|
|
> * {
|
|
display: inline-block;
|
|
}
|
|
|
|
.pair-key {
|
|
font-weight: bold;
|
|
vertical-align: top;
|
|
|
|
span {
|
|
margin-right: 1rem;
|
|
display: block;
|
|
}
|
|
}
|
|
|
|
.pair-value select {
|
|
max-width: 100%;
|
|
}
|
|
}
|
|
|
|
.bulk-actions .detail-pair {
|
|
> * {
|
|
display: block;
|
|
width: 100%;
|
|
}
|
|
}
|
|
|
|
.listing-pagination {
|
|
text-align: center;
|
|
|
|
.yui3-button {
|
|
@include button-variant($info, $info);
|
|
border: 0;
|
|
margin: 0.4rem 0.2rem 0.45rem;
|
|
font-size: 10.4px;
|
|
|
|
&.active-page {
|
|
@include button-variant($primary, $primary);
|
|
}
|
|
}
|
|
}
|
|
|
|
.listing-pagination-totals {
|
|
text-align: center;
|
|
|
|
&.dimmed {
|
|
color: $text-muted;
|
|
margin: 0.4rem 1rem 0.45rem;
|
|
}
|
|
}
|
|
|
|
.select-a-category .notifymessage,
|
|
.select-a-category .alert {
|
|
margin: 1em;
|
|
}
|
|
}
|
|
|
|
#course-category-listings #course-listing .listitem .drag-handle {
|
|
display: none;
|
|
}
|
|
|
|
.jsenabled #course-category-listings #course-listing .listitem .drag-handle {
|
|
display: inline-block;
|
|
margin: 0 6px 0 0;
|
|
cursor: pointer;
|
|
}
|
|
|
|
/** Management header styling **/
|
|
.course-being-dragged-proxy {
|
|
border: 0;
|
|
color: $link-color;
|
|
vertical-align: middle;
|
|
padding: 0 0 0 4em;
|
|
}
|
|
|
|
.course-being-dragged {
|
|
opacity: 0.5;
|
|
}
|
|
|
|
/**
|
|
* Display sizes:
|
|
* Large displays 1200 +
|
|
* Default displays 980 1199
|
|
* Tablets 768 979
|
|
* Small tablets and large phones 481 767
|
|
* Phones 0 480
|
|
*/
|
|
|
|
@media (min-width: 1200px) and (max-width: 1600px) {
|
|
#course-category-listings.columns-3 {
|
|
background-color: $body-bg;
|
|
border: 0;
|
|
|
|
#category-listing,
|
|
#course-listing {
|
|
width: 50%;
|
|
}
|
|
|
|
#category-listing > div,
|
|
#course-listing > div,
|
|
#course-detail > div {
|
|
background-color: $body-bg;
|
|
}
|
|
|
|
#course-detail {
|
|
width: 100%;
|
|
margin-top: 1em;
|
|
}
|
|
}
|
|
}
|
|
|
|
@media (max-width: 1199px) {
|
|
#course-category-listings.columns-2,
|
|
#course-category-listings.columns-3 {
|
|
border: 0;
|
|
|
|
#category-listing,
|
|
#course-listing,
|
|
#course-detail {
|
|
width: 100%;
|
|
margin: 0 0 1em;
|
|
}
|
|
}
|
|
}
|
|
|
|
.page-settings-menu .menubar > a > .icon {
|
|
width: auto;
|
|
height: 32px;
|
|
font-size: 32px;
|
|
}
|
|
|
|
.activity-navigation {
|
|
.row {
|
|
align-items: center;
|
|
}
|
|
#prev-activity-link,
|
|
#next-activity-link {
|
|
white-space: pre-wrap;
|
|
}
|
|
}
|
|
|
|
.automatic-completion-conditions {
|
|
.badge {
|
|
font-size: 100%;
|
|
}
|
|
}
|
|
|
|
// These are the new styles for the renewed course UI in isssue MDL-71691
|
|
// once the old course renderers are removed in MDL-72656, all css related
|
|
// to activities and sections above this commend needs to be reviewed an
|
|
// possibly removed.
|
|
|
|
/* Variables definition*/
|
|
|
|
$activity-border-radius: 1rem !default;
|
|
$activity-border-width: 2px !default;
|
|
$activity-hover-border-color: $primary !default;
|
|
$divider-color: $gray-300 !default;
|
|
$divider-width: 2px !default;
|
|
$divider-hover-color: $primary !default;
|
|
|
|
/* Functions/Mixins definition */
|
|
|
|
// Activity completion button custom styling mixin.
|
|
@mixin completion-button() {
|
|
&.btn {
|
|
@include button-variant($white, $gray-400, $gray-600);
|
|
min-height: map-get($iconsizes, 5);
|
|
font-weight: bold;
|
|
@include border-radius();
|
|
.icon {
|
|
font-size: inherit;
|
|
}
|
|
}
|
|
@each $color, $value in $theme-colors {
|
|
&.btn-#{$color} {
|
|
$bg-color: theme-color-level($color, $alert-bg-level);
|
|
@include button-variant($bg-color, $bg-color, $value);
|
|
color: theme-color-level($color, $alert-color-level);
|
|
&:hover {
|
|
color: color-yiq($value);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Section Expand all/Collapse all */
|
|
|
|
.section-collapsemenu {
|
|
.collapseall {
|
|
display: block;
|
|
}
|
|
|
|
.expandall {
|
|
display: none;
|
|
}
|
|
|
|
&.collapsed {
|
|
.collapseall {
|
|
display: none;
|
|
}
|
|
|
|
.expandall {
|
|
display: block;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Course section */
|
|
|
|
.course-section {
|
|
list-style: none;
|
|
margin-top: map-get($spacers, 3);
|
|
// Custom styles for course sections while editing.
|
|
.editing & {
|
|
margin-top: map-get($spacers, 2);
|
|
}
|
|
|
|
.section-item {
|
|
padding: map-get($spacers, 3);
|
|
border: $border-width solid $border-color;
|
|
@include border-radius($activity-border-radius);
|
|
}
|
|
|
|
&.hidden {
|
|
.section-item {
|
|
background-color: $gray-100;
|
|
}
|
|
}
|
|
|
|
.sectionname > a {
|
|
color: $gray-900;
|
|
&:hover {
|
|
text-decoration: none;
|
|
}
|
|
}
|
|
|
|
.sectionbadges .badge {
|
|
margin-left: map-get($spacers, 2);
|
|
font-weight: normal;
|
|
.icon {
|
|
font-size: 12px;
|
|
width: 12px;
|
|
height: 12px;
|
|
}
|
|
}
|
|
|
|
.course-section-header.draggable {
|
|
cursor: move;
|
|
}
|
|
|
|
.section_action_menu {
|
|
.dropdown-toggle::after {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
.summarytext {
|
|
// Add rounded borders to images.
|
|
img {
|
|
@include border-radius($activity-border-radius);
|
|
}
|
|
}
|
|
|
|
// Availability styles for both section and activities.
|
|
.availabilityinfo {
|
|
margin-top: map-get($spacers, 2);
|
|
padding: map-get($spacers, 1) map-get($spacers, 3);
|
|
background-color: $gray-200;
|
|
@include font-size($small-font-size);
|
|
@include border-radius($activity-border-radius);
|
|
.editavailability {
|
|
a {
|
|
@include border-radius();
|
|
font-weight: bold;
|
|
&:hover {
|
|
background-color: $gray-400;
|
|
}
|
|
.icon {
|
|
font-size: inherit;
|
|
margin-right: map-get($spacers, 1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Override '.btn.btn-icon' styles from buttons.scss to make action menu buttons smaller.
|
|
.action-menu .btn.btn-icon {
|
|
height: map-get($iconsizes, 5);
|
|
width: map-get($iconsizes, 5);
|
|
@include border-radius();
|
|
}
|
|
|
|
.section-summary-activities {
|
|
.icon {
|
|
width: inherit;
|
|
color: $primary;
|
|
}
|
|
}
|
|
|
|
.section-summary-activities + .section {
|
|
border-top: $border-width solid $border-color;
|
|
margin-top: map-get($spacers, 3) !important; // stylelint-disable-line declaration-no-important
|
|
padding-top: map-get($spacers, 3) !important; // stylelint-disable-line declaration-no-important
|
|
}
|
|
|
|
.section_goto .icon {
|
|
font-size: $font-size-lg;
|
|
color: $primary;
|
|
}
|
|
|
|
// Add new z-index context for dnd overlay higher divider buttons and quick edit links.
|
|
.overlay-preview {
|
|
z-index: 5;
|
|
}
|
|
}
|
|
|
|
// Course 'add section' button.
|
|
.btn.add-section {
|
|
@include border-radius($activity-border-radius);
|
|
border: $divider-width dashed $border-color;
|
|
color: $primary;
|
|
font-size: $font-size-sm;
|
|
font-weight: bold;
|
|
&:hover,
|
|
&:focus {
|
|
background-color: $primary-light-background;
|
|
border: $divider-width solid $primary;
|
|
color: $primary;
|
|
}
|
|
}
|
|
|
|
/* Single section page specific styles */
|
|
|
|
.single-section {
|
|
// Revert main section's styles.
|
|
> ul > .course-section {
|
|
&.hidden .section-item {
|
|
background-color: inherit;
|
|
}
|
|
.section-item {
|
|
padding: 0;
|
|
border: none;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Re-style ordered list in course content */
|
|
.course-content .activity-altcontent {
|
|
ul {
|
|
list-style: disc;
|
|
ul {
|
|
list-style: circle;
|
|
ul {
|
|
list-style: square;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Activity cards */
|
|
|
|
.activity {
|
|
list-style: none;
|
|
position: relative;
|
|
padding-top: map-get($spacers, 1);
|
|
margin-top: map-get($spacers, 1);
|
|
border-top: $border-width solid $border-color;
|
|
// Custom styles for activity while editing.
|
|
.editing & {
|
|
// Remove activity top border and spacing, while editing a separator is displayed.
|
|
padding-top: 0;
|
|
margin-top: 0;
|
|
border-top: none;
|
|
}
|
|
}
|
|
|
|
.activity-item {
|
|
position: relative;
|
|
padding: .75rem;
|
|
background-color: $white;
|
|
&.activityinline {
|
|
padding: .75rem 0;
|
|
}
|
|
&.hiddenactivity {
|
|
background-color: $gray-100;
|
|
.activityiconcontainer,
|
|
.badge {
|
|
mix-blend-mode: multiply;
|
|
}
|
|
}
|
|
// Custom styles for activity cards while editing.
|
|
.editing & {
|
|
cursor: move;
|
|
border: $activity-border-width solid transparent;
|
|
@include border-radius($activity-border-radius);
|
|
.a {
|
|
cursor: pointer;
|
|
}
|
|
&:hover,
|
|
&.selected {
|
|
border: $activity-border-width solid $activity-hover-border-color;
|
|
box-shadow: $box-shadow-sm;
|
|
.activityiconcontainer,
|
|
.badge {
|
|
mix-blend-mode: multiply;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Activity card grid layout.
|
|
.activity-grid {
|
|
display: grid;
|
|
align-items: center;
|
|
grid-template-columns: min-content 1fr min-content min-content min-content;
|
|
grid-template-rows: 1fr repeat(5, min-content);
|
|
grid-template-areas:
|
|
"icon name groupmode completion actions"
|
|
"icon visibility groupmode completion actions"
|
|
"icon dates groupmode completion actions"
|
|
"icon altcontent altcontent altcontent altcontent"
|
|
"icon afterlink afterlink afterlink afterlink"
|
|
"icon availability availability availability availability";
|
|
@include media-breakpoint-down(xs) {
|
|
grid-template-columns: min-content 1fr min-content min-content min-content;
|
|
grid-template-rows: 1fr repeat(4, min-content);
|
|
grid-template-areas:
|
|
"icon name actions"
|
|
"icon visibility actions"
|
|
"dates dates dates"
|
|
"groupmode groupmode groupmode"
|
|
"completion completion completion"
|
|
"altcontent altcontent altcontent"
|
|
"afterlink afterlink afterlink"
|
|
"availability availability availability";
|
|
}
|
|
}
|
|
// Activity card specific grid layout for activities without name.
|
|
.activity-grid.noname-grid {
|
|
grid-template-columns: min-content 1fr min-content min-content;
|
|
grid-template-areas:
|
|
"visibility groupmode completion actions"
|
|
"altcontent altcontent altcontent altcontent"
|
|
"afterlink afterlink afterlink afterlink"
|
|
"availability availability availability availability";
|
|
@include media-breakpoint-down(xs) {
|
|
grid-template-columns: 1fr min-content;
|
|
grid-template-areas:
|
|
"visibility actions"
|
|
"altcontent altcontent"
|
|
"groupmode groupmode"
|
|
"afterlink afterlink"
|
|
"completion completion"
|
|
"availability availability";
|
|
}
|
|
}
|
|
|
|
.activity-actions {
|
|
grid-area: actions;
|
|
.actions {
|
|
position: relative;
|
|
}
|
|
}
|
|
|
|
.activity-icon {
|
|
grid-area: icon;
|
|
}
|
|
|
|
.activity-dates {
|
|
grid-area: dates;
|
|
@include font-size($small-font-size);
|
|
color: $gray-700;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
column-gap: 0.75rem;
|
|
@include media-breakpoint-down(xs) {
|
|
margin-top: map-get($spacers, 2);
|
|
}
|
|
}
|
|
.activity-name-area {
|
|
grid-area: name;
|
|
// Prevent bootstrap strech-link from covering the inplace editable button using z-index.
|
|
.activityname {
|
|
.afterlink {
|
|
margin-left: map-get($spacers, 2);
|
|
}
|
|
.inplaceeditable .quickeditlink {
|
|
position: relative;
|
|
z-index: 2;
|
|
margin-left: map-get($spacers, 2);
|
|
}
|
|
}
|
|
.activitybadge {
|
|
&.badge-none {
|
|
font-weight: normal;
|
|
@include font-size($small-font-size);
|
|
padding: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
.activity-completion {
|
|
grid-area: completion;
|
|
justify-self: end;
|
|
// Re-style completion buttons (mark as done & dropdown).
|
|
button,
|
|
a[role="button"] {
|
|
@include completion-button();
|
|
}
|
|
@include media-breakpoint-down(xs) {
|
|
width: 100%;
|
|
margin-top: map-get($spacers, 2);
|
|
button {
|
|
width: 100%;
|
|
}
|
|
}
|
|
.completion-dialog {
|
|
color: $gray-700;
|
|
font-size: $font-size-sm;
|
|
min-width: 12rem;
|
|
.icon {
|
|
font-size: $font-size-sm;
|
|
width: $font-size-sm;
|
|
height: $font-size-sm;
|
|
margin-right: map-get($spacers, 1);
|
|
}
|
|
.editcompletion a {
|
|
@include border-radius();
|
|
color: $gray-700;
|
|
font-weight: bold;
|
|
text-decoration: none;
|
|
&:hover {
|
|
background-color: $gray-200;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
.activity-groupmode-info {
|
|
grid-area: groupmode;
|
|
justify-self: end;
|
|
.groupmode-information {
|
|
height: map-get($iconsizes, 5);
|
|
width: map-get($iconsizes, 5);
|
|
@include border-radius();
|
|
}
|
|
.groupmode-icon-info {
|
|
display: none;
|
|
}
|
|
@include media-breakpoint-down(xs) {
|
|
width: 100%;
|
|
margin-top: map-get($spacers, 2);
|
|
padding-top: map-get($spacers, 2);
|
|
border-top: $border-width solid $border-color;
|
|
.groupmode-information {
|
|
width: auto;
|
|
font-size: inherit;
|
|
padding: 0 map-get($spacers, 2);
|
|
}
|
|
.groupmode-icon-info {
|
|
display: inline;
|
|
}
|
|
// Disable v-parent-focus behaviour on small devices to always show the groupmode button.
|
|
.v-parent-focus {
|
|
opacity: 1;
|
|
visibility: visible;
|
|
}
|
|
}
|
|
}
|
|
|
|
.activity-badges {
|
|
grid-area: visibility;
|
|
.badge {
|
|
font-weight: normal;
|
|
.icon {
|
|
font-size: 12px;
|
|
width: 12px;
|
|
height: 12px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.activity-altcontent {
|
|
grid-area: altcontent;
|
|
margin-top: map-get($spacers, 1);
|
|
&.activity-description {
|
|
margin-top: map-get($spacers, 2);
|
|
padding-top: map-get($spacers, 2);
|
|
border-top: $border-width solid $border-color;
|
|
@include font-size($small-font-size);
|
|
}
|
|
// Add rounded borders to images.
|
|
img {
|
|
@include border-radius($activity-border-radius);
|
|
}
|
|
}
|
|
|
|
.activity-availability {
|
|
grid-area: availability;
|
|
}
|
|
|
|
.activity-afterlink {
|
|
grid-area: afterlink;
|
|
margin-top: map-get($spacers, 2);
|
|
padding-top: map-get($spacers, 2);
|
|
border-top: $border-width solid $border-color;
|
|
}
|
|
|
|
.no-overflow {
|
|
width: 100%;
|
|
}
|
|
}
|
|
|
|
.section .draggable .activity-item .dragicon {
|
|
display: none;
|
|
}
|
|
|
|
/* Dividers */
|
|
|
|
.divider {
|
|
position: relative;
|
|
hr {
|
|
width: 100%;
|
|
margin: map-get($spacers, 2) map-get($spacers, 1);
|
|
border-top: $divider-width dashed $divider-color;
|
|
}
|
|
.divider-content {
|
|
opacity: 0;
|
|
visibility: hidden;
|
|
transition: visibility 0.1s;
|
|
position: absolute;
|
|
background: linear-gradient(transparent 40%, $white 40%, $white 60%, transparent 60%);
|
|
.section.hidden & {
|
|
background: linear-gradient(transparent 40%, $gray-100 40%, $gray-100 60%, transparent 60%);
|
|
}
|
|
}
|
|
&.always-visible {
|
|
.divider-content {
|
|
opacity: 1;
|
|
visibility: visible;
|
|
}
|
|
}
|
|
&.always-hidden {
|
|
hr {
|
|
opacity: 0;
|
|
visibility: hidden;
|
|
}
|
|
}
|
|
&:hover,
|
|
&:focus,
|
|
&:focus-within {
|
|
.divider-content {
|
|
opacity: 1;
|
|
visibility: visible;
|
|
}
|
|
hr {
|
|
opacity: 1;
|
|
visibility: visible;
|
|
}
|
|
}
|
|
// Style the hr divider when the "Add content" button is hovered.
|
|
&:has(.btn.add-content:hover) {
|
|
hr {
|
|
border-color: $divider-hover-color;
|
|
}
|
|
}
|
|
}
|
|
|
|
// These styles will make the activity and section dividers buttons visible (but still without opacity) so
|
|
// buttons can be keyboard focusable.
|
|
.activity:focus-within + .activity .divider .divider-content,
|
|
.course-section-header:focus-within + .content .section .activity:first-child .divider .divider-content,
|
|
.content .section .activity:focus-within .divider .divider-content,
|
|
.course-content:focus-within .changenumsections .divider .divider-content {
|
|
visibility: visible;
|
|
}
|
|
|
|
// Hide last section "Add section". It will rely on the course format general "Add section" button.
|
|
.course-content ul.topics > li:last-child .changenumsections {
|
|
display: none;
|
|
}
|
|
|
|
// Custom buttons for dividers.
|
|
.btn.add-content {
|
|
position: relative;
|
|
z-index: 1;
|
|
@include border-radius($rounded-pill);
|
|
font-size: $font-size-sm;
|
|
font-weight: bold;
|
|
color: theme-color-level("primary", $alert-color-level);
|
|
background-color: theme-color-level("primary", $alert-bg-level);
|
|
&:hover,
|
|
&:focus {
|
|
color: color-yiq($primary);
|
|
background-color: $primary;
|
|
}
|
|
.icon {
|
|
width: 14px;
|
|
height: 14px;
|
|
font-size: 14px;
|
|
}
|
|
}
|
|
|
|
/* Bulk editing */
|
|
|
|
.bulkenabled {
|
|
.bulk-hidden {
|
|
display: none !important; // stylelint-disable-line declaration-no-important
|
|
}
|
|
.section {
|
|
margin-left: map-get($spacers, 3);
|
|
&:not(:first-child) {
|
|
margin-top: map-get($spacers, 4);
|
|
}
|
|
}
|
|
.activity {
|
|
margin-top: map-get($spacers, 2);
|
|
margin-left: 2rem;
|
|
padding-top: map-get($spacers, 2);
|
|
border-top: $divider-width dashed $divider-color;
|
|
&:first-child {
|
|
margin-top: map-get($spacers, 4);
|
|
}
|
|
}
|
|
.activity-item {
|
|
.bulkselect {
|
|
position: absolute;
|
|
left: -2rem;
|
|
}
|
|
}
|
|
.course-section-header .bulkselect {
|
|
left: -2.75rem;
|
|
position: relative;
|
|
width: 0;
|
|
}
|
|
@include media-breakpoint-down(sm) {
|
|
.course-content {
|
|
margin-left: 2rem;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Custom styles for bulk actions sticky footer in small devices.
|
|
.sticky-footer-content.bulkactions {
|
|
@include media-breakpoint-down(sm) {
|
|
position: relative;
|
|
.form-check,
|
|
.bulkaction-name,
|
|
.bulkcount {
|
|
display: none;
|
|
}
|
|
.actions button {
|
|
padding: 0 map-get($spacers, 2);
|
|
}
|
|
.bulkcancel {
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* Activity completion */
|
|
|
|
.defaultactivitycompletion-item {
|
|
a {
|
|
color: $black;
|
|
text-decoration: none;
|
|
}
|
|
.activityicon {
|
|
width: 32px;
|
|
height: 32px;
|
|
}
|
|
}
|
|
|
|
/* Home page course specific styles */
|
|
|
|
.sitetopic {
|
|
// Hide the first activity top border.
|
|
.activity:first-of-type hr {
|
|
display: none;
|
|
}
|
|
.section-item {
|
|
margin-bottom: map-get($spacers, 4);
|
|
@include border-radius();
|
|
}
|
|
}
|