MDL-59775 forms: add option to display any form vertical

This commit is contained in:
Marina Glancy 2017-08-10 12:34:53 +08:00
parent 032674eebc
commit 3dee4faec4
4 changed files with 81 additions and 6 deletions

View file

@ -1411,6 +1411,16 @@ abstract class moodleform {
return $data; return $data;
} }
/**
* Set display mode for the form when labels take full width of the form and above the elements even on big screens
*
* Useful for forms displayed inside modals or in narrow containers
*/
public function set_display_vertical() {
$oldclass = $this->_form->getAttribute('class');
$this->_form->updateAttributes(array('class' => $oldclass . ' full-width-labels'));
}
} }
/** /**

View file

@ -334,6 +334,24 @@ textarea[data-auto-rows] {
overflow-x: hidden; overflow-x: hidden;
} }
/** Display elements under labels in vertical forms regardless of the screen size. */
.mform.full-width-labels {
& > .row {
margin-left: 0;
margin-right: 0;
& > .col-md-3,
& > .col-md-9 {
float: none;
width: inherit;
padding-right: 0;
padding-left: 0;
}
&.femptylabel > .col-md-3 {
display: none;
}
}
}
/** Allow wrapping an mform in a div with the form-inline class to have an inline, responsive form. */ /** Allow wrapping an mform in a div with the form-inline class to have an inline, responsive form. */
.form-inline { .form-inline {
@include media-breakpoint-up(md) { @include media-breakpoint-up(md) {

View file

@ -279,7 +279,7 @@ fieldset.coursesearchbox label {
font-weight: bold; font-weight: bold;
} }
.makeFormsVertical() { .makeFormsVertical() {
#region-main .mform:not(.unresponsive) { &:not(.unresponsive) {
.fitem { .fitem {
.fitemtitle { .fitemtitle {
display: block; display: block;
@ -315,7 +315,6 @@ fieldset.coursesearchbox label {
display: inline-block; display: inline-block;
margin-top: 4px; margin-top: 4px;
padding-top: 5px; padding-top: 5px;
width: auto;
} }
} }
.fitem_fcheckbox { .fitem_fcheckbox {
@ -331,11 +330,18 @@ fieldset.coursesearchbox label {
} }
} }
/**
* Forms marked as vertical always display this way;
*/
.mform.full-width-labels {
.makeFormsVertical;
}
/** /**
* Make forms vertical when the screen is less than 1200px; * Make forms vertical when the screen is less than 1200px;
*/ */
@media (max-width: 1199px) { @media (max-width: 1199px) {
body { body #region-main .mform {
.makeFormsVertical; .makeFormsVertical;
} }
} }
@ -354,7 +360,7 @@ fieldset.coursesearchbox label {
@maxWidthForVerticalForms: 1474px; @maxWidthForVerticalForms: 1474px;
@media (max-width: @maxWidthForVerticalForms) { @media (max-width: @maxWidthForVerticalForms) {
.used-region-side-pre.used-region-side-post { .used-region-side-pre.used-region-side-post #region-main .mform {
.makeFormsVertical; .makeFormsVertical;
} }
} }

View file

@ -16745,6 +16745,49 @@ fieldset.coursesearchbox label {
#region-main .mform:not(.unresponsive) .fitem .fitemtitle label { #region-main .mform:not(.unresponsive) .fitem .fitemtitle label {
font-weight: bold; font-weight: bold;
} }
/**
* Forms marked as vertical always display this way;
*/
.mform.full-width-labels:not(.unresponsive) .fitem .fitemtitle {
display: block;
margin-top: 4px;
margin-bottom: 4px;
text-align: left;
width: 100%;
}
.mform.full-width-labels:not(.unresponsive) .fitem .felement {
margin-left: 0;
width: 100%;
float: left;
padding-left: 0;
padding-right: 0;
}
.mform.full-width-labels:not(.unresponsive) .fitem .fstatic:empty {
display: none;
}
.mform.full-width-labels:not(.unresponsive) .fitem .fcheckbox > span,
.mform.full-width-labels:not(.unresponsive) .fitem .fradio > span,
.mform.full-width-labels:not(.unresponsive) .fitem .fgroup > span {
margin-top: 4px;
}
.mform.full-width-labels:not(.unresponsive) .femptylabel .fitemtitle {
display: inline-block;
width: auto;
margin-right: 8px;
}
.mform.full-width-labels:not(.unresponsive) .femptylabel .felement {
display: inline-block;
margin-top: 4px;
padding-top: 5px;
}
.mform.full-width-labels:not(.unresponsive) .fitem_fcheckbox .fitemtitle,
.mform.full-width-labels:not(.unresponsive) .fitem_fcheckbox .felement {
display: inline-block;
width: auto;
}
.mform.full-width-labels:not(.unresponsive) .fitem_fcheckbox .felement {
padding: 6px;
}
/** /**
* Make forms vertical when the screen is less than 1200px; * Make forms vertical when the screen is less than 1200px;
*/ */
@ -16780,7 +16823,6 @@ fieldset.coursesearchbox label {
display: inline-block; display: inline-block;
margin-top: 4px; margin-top: 4px;
padding-top: 5px; padding-top: 5px;
width: auto;
} }
body #region-main .mform:not(.unresponsive) .fitem_fcheckbox .fitemtitle, body #region-main .mform:not(.unresponsive) .fitem_fcheckbox .fitemtitle,
body #region-main .mform:not(.unresponsive) .fitem_fcheckbox .felement { body #region-main .mform:not(.unresponsive) .fitem_fcheckbox .felement {
@ -16833,7 +16875,6 @@ fieldset.coursesearchbox label {
display: inline-block; display: inline-block;
margin-top: 4px; margin-top: 4px;
padding-top: 5px; padding-top: 5px;
width: auto;
} }
.used-region-side-pre.used-region-side-post #region-main .mform:not(.unresponsive) .fitem_fcheckbox .fitemtitle, .used-region-side-pre.used-region-side-post #region-main .mform:not(.unresponsive) .fitem_fcheckbox .fitemtitle,
.used-region-side-pre.used-region-side-post #region-main .mform:not(.unresponsive) .fitem_fcheckbox .felement { .used-region-side-pre.used-region-side-post #region-main .mform:not(.unresponsive) .fitem_fcheckbox .felement {