//-- copyright // OpenProject is an open source project management software. // Copyright (C) 2012-2020 the OpenProject GmbH // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License version 3. // // OpenProject is a fork of ChiliProject, which is a fork of Redmine. The copyright follows: // Copyright (C) 2006-2017 Jean-Philippe Lang // Copyright (C) 2010-2013 the ChiliProject Team // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version 2 // of the License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // See docs/COPYRIGHT.rdoc for more details. //++ $form--field-types: (text-field, text-area, select, check-box, radio-button, range-field, search, file) %input-style border: $content-form-input-border border-radius: 2px font-size: 0.9rem &:hover, &:focus border: $content-form-input-hover-border vertical-align: middle margin-bottom: 0rem %label-style text-align: left font-weight: normal vertical-align: middle %input--sizing height: 40px line-height: 22px %required-star @include default-transition @include varprop(color, primary-color-dark) content: '*' padding: 0 0.325rem form display: inline // A general CSS class to be applied to forms using the above defined form style. // We can't define this on form itself as this would break a lot of existing forms. // // Using this form class allows to easily override defaults defined here with a more // specific definition. .form display: block position: relative .toolbar-items > & display: flex flex-wrap: wrap &.-inline display: inline &.-bordered padding: 30px 20px background-color: $content-form-bg-color border: $content-form-border &.-compressed padding: 10px 20px 0 20px &.-medium-compressed padding: 10px 20px 20px 20px &.danger-zone border: 1px solid $content-form-danger-zone-bg-color // For correct display in IE border-top: 0px .form--section padding-top: 0px margin-bottom: 0px & > * padding-left: 1rem .form--section-title background-color: $content-form-danger-zone-bg-color color: $content-form-danger-zone-font-color !important padding: 1rem !important margin: 0 0 1rem 0 input[type=text] margin-bottom: 0 em font-style: italic p.danger-zone--warning font-weight: bold color: $content-form-danger-zone-bg-color span.icon, span.icon-context display: inline-block vertical-align: middle // This is an approximation necessary for vertical alignment (especially FF under Windows) // This should be removable once the icon font is updated // see: https://community.openproject.org/work_packages/21589/activity margin-bottom: 0.0625em &:before padding-left: 0px color: $content-form-danger-zone-bg-color .danger-zone--verification display: flex input @extend %input--sizing flex-basis: 50% margin: 0 0.5rem 0 0 .button @extend %input--sizing &.-highlight background: $content-form-danger-zone-bg-color color: $content-form-danger-zone-font-color border-color: $content-form-danger-zone-bg-color &.icon:before, &.icon-context:before color: $content-form-danger-zone-font-color padding-left: 0px + .form--field-instructions max-width: 100% .form--field-instructions margin: 0 0 1rem 0 .errorSpan flex-basis: 50% margin-right: 0.5rem .form--close position: absolute top: 0.75rem right: 0.75rem width: 1rem z-index: 2 @media screen and (min-width: 70rem) .-columns-2 column-count: 2 hr width: 100% height: 1px background: #ccc border: 0 &.form--separator border-bottom: 1px solid $content-form-separator-color margin: 0 0 30px background: none &.-invisible border-bottom-width: 0px .form--space padding-top: 1rem &.-left-spacing padding-left: 1rem &.-big padding-top: 20px .form--row @include grid-block @include grid-visible-overflow // TODO: Customise with proper jQuery UI theme. .ui-datepicker-month, .ui-datepicker-year display: inline-block .checkbox-label position: relative display: inline-block vertical-align: top line-height: 18px user-select: none input[type=checkbox] border: 0 clip: rect(0 0 0 0) height: 18px margin: 0 -18px -18px 0 overflow: hidden padding: 0 position: absolute width: 18px opacity: 0.001 %form--fieldset-or-section padding: 1rem 0 0 margin-bottom: 1rem border: 0 // Flexbox needs that parents of children with overflow set to have a width: min-width: 0 word-break: break-word %form--fieldset-legend-or-section-title color: lighten($body-font-color, 10) font-size: 1rem font-weight: bold line-height: 1.8 text-transform: uppercase border-bottom: 1px solid $gray // HACK. TODO: Remove fieldset element rules in various places. .form--fieldset, fieldset.form--fieldset @extend %form--fieldset-or-section &.-collapsible.collapsed .-hide-when-collapsed display: none .form--fieldset-legend @extend %form--fieldset-legend-or-section-title width: 100% .form--fieldset.-collapsible > & @include without-link-styling cursor: pointer &:before @include icon-common font-size: 0.75rem .form--fieldset.-collapsible > & @include icon-mixin-arrow-up1 padding: 0.625rem 0.25rem 0 0.25rem .form--fieldset.-collapsible.-collapsed > &, .form--fieldset.-collapsible.collapsed > & @include icon-mixin-arrow-down1 padding: 0.625rem 0.25rem 0 0.25rem #sidebar .form--fieldset-legend @include varprop(color, main-menu-fieldset-header-color) .form--toolbar float: right text-align: right color: lighten($body-font-color, 10) font-size: 1rem font-style: italic line-height: 1.8 margin-top: -1.8rem fieldset > & margin-top: -2.8rem a:hover text-decoration: none .form--toolbar-item padding: 0 0.25rem background-color: inherit &.-in-header margin-left: 5px font-style: italic line-height: 44px .form--section @extend %form--fieldset-or-section // HACK. TODO: Remove H3 element rules in various places. // See: https://community.openproject.org/work_packages/18330 .form--section-title, #content h3.form--section-title @extend %form--fieldset-legend-or-section-title // properties to reset h3 margin: 0 padding: 0 .form--section > &, #content .form--section > & margin-bottom: 1rem .form--field @include grid-block($wrap: true) @include grid-visible-overflow align-items: center margin-bottom: 0.825rem line-height: 2 // Extend the overflow: visible from form-field // to the container because it's duplicated there. &.-visible-overflow .form--field-container overflow: visible &.-vertical, .form.-vertical & @include grid-orient(vertical) .grid-block > &:nth-last-of-type(n+2), .form--row > &:nth-last-of-type(n+2), .form--grouping-row > &:nth-last-of-type(n+2) padding-right: 1rem &.-trailing-label .form--label @include grid-order(2) @include grid-size(expand) // override max-width set by including grid-content max-width: 100% padding-left: 0.5rem margin-bottom: 0 .form--field-container @include grid-order(1) @include grid-size(shrink) // FIXME: this will break anything in regards to flex layouting within the container, // e.g. using form--field-inline-action inside -trailing-label .form--label + span.form--field-container display: block &.-break-words > .form--label @include text-shortener &.-required input.form--text-field:invalid // avoids the box-shadow from Firefox at required input fields box-shadow: none .form--label:after @extend %required-star &.-reduced-margin margin-bottom: 0.5rem &.-no-margin margin-bottom: 0 &.-indented @extend %form--field-after-container .form--label @include grid-content(2) @extend %label-style // override max-width set by including grid-content max-width: 100% min-width: 100px flex-grow: 1 overflow-x: hidden white-space: normal overflow-y: visible padding: 0 1rem 0 0 margin-bottom: 0 font-size: $form-label-fontsize line-height: $base-line-height color: $form-label-color .form.-wide-labels &, .form--field.-wide-label &, @include grid-size(4) .form--field.-vertical &, .form.-vertical & @include grid-size(shrink) max-width: none &.-error @extend .icon-error color: $content-form-error-color font-weight: bold &::before @include icon-common display: inline-block line-height: $base-line-height padding-right: 0.325rem &.-top align-self: flex-start line-height: 2.15rem .form--label.-error & color: $content-form-error-color .form--field-container @include grid-content(10) // override max-width set by including grid-content max-width: 100% overflow: hidden padding: 0 display: flex flex-grow: 2 align-items: stretch &.-wrap-around display: flex flex-wrap: wrap &.-vertical display: block .form--field.-visible-overflow & overflow: visible &:nth-of-type(n+2), .form--field.-no-label & @include grid-offset(2) .form--field.-full-width & @include grid-size(12) .form.-wide-labels &, .form--field.-wide-label & @include grid-size(8) .form.-wide-labels .form--field.-no-label &, .form--field.-wide-label.-no-label & @include grid-offset(4) .form--field.-vertical &, .form.-vertical & @include grid-size(shrink) max-width: none .destroy_locale display: flex .form--field-inline-action @include grid-content(shrink) padding: 0 0 0 0.2rem line-height: 2rem %form--field-after-container @include grid-content(10, 2) padding: 0 font-size: $form-label-fontsize line-height: 1.4 color: $form-label-color .form--field.-full-width & @include grid-size(12) @include grid-offset(0) .form.-wide-labels &, .form--field.-wide-label & @include grid-size(8) @include grid-offset(4) .form.-vertical & @include grid-size(shrink) @include grid-offset(0) max-width: none .form--field-instructions @extend %form--field-after-container font-style: italic max-width: 500px // improve readability &.-no-margin margin: 0 &.-no-italic font-style: normal .form--inline-instructions, font-style: italic display: inline .form--field-extra-actions @extend %form--field-after-container @include grid-visible-overflow &.add_locale.icon margin-top: 5px &:before padding-left: 0px %form--field-element-container display: block flex: 1 1 &:nth-last-of-type(n+2) padding-right: $block-padding @each $field-type in $form--field-types .form--#{$field-type}-container @extend %form--field-element-container &.-tiny max-width: 50px &.-xslim max-width: 110px &.-slim max-width: 200px &.-middle max-width: 350px &.-wide max-width: 500px &.-xwide max-width: 800px &.-xxwide max-width: 1100px .form--select-container &.-tiny, &.-xslim, &.-slim, &.-middle, &.-wide, &.-xwide, &.-xxwide // overriding hack on select2 by another hack (select2_customizing.css) // remove once the initial limit on the width is removed .select2-container max-width: initial &.-auto select width: auto .form--text-field @extend %input-style &.-number text-align: right .form--text-field, #{$text-input-selectors}, select line-height: 100% margin-bottom: 0rem font-size: 0.9rem &:hover, &:focus, &:active border-color: #999 .-hide-placeholder-on-focus &:focus::placeholder opacity: 0 .-border-on-hover-only &:not(.-error) // Reduce padding usually shown padding-left: 1px border-color: transparent // Don't show border on focus or active &:focus, &:active border-color: transparent // But as an indicator, do show one on hover &:hover border-color: #999 select &[disabled=disabled], &[disabled] background-color: $inplace-edit--bg-color--disabled cursor: not-allowed input[readonly].-clickable cursor: pointer background: white .form--select @extend %input-style line-height: normal padding: rem-concat-list($select-element-padding) &.parent-select height: 100% &[multiple] background-image: none padding-right: $form-padding // TODO: this has to be fixed upstream as select are fixed // in height in foundation for apps. height: auto min-width: 40px .form--select2 border: none padding-right: 0 &.select2-container // styles adapted to input fields to align them .select2-choice height: 2.15rem .form--inline-select display: inline-block width: initial .form--text-field, .form--select &.-tiny @include form--input-field-mixin--tiny &.-small @include form--input-field-mixin--small &.-large @include form--input-field-mixin--large &.-narrow @include form--input-field-mixin--narrow .form & margin-bottom: 0rem .form--select-autocompleter max-height: 400px overflow-y: auto .form--selected-value width: calc(100% - 42px) padding: 3px line-height: 2 .form--selected-value--container display: inline-block border: 1px solid transparent border-radius: 2px overflow: visible width: 100% position: relative &:last-of-type margin-bottom: 0.5rem &:hover, &:focus, &.-focus text-decoration: none color: $body-font-color border-color: $inplace-edit--border-color .form--selected-value--remover visibility: visible a.form--selected-value--remover text-decoration: none color: $body-font-color .form--selected-value--remover position: absolute height: 100% right: 0 text-align: center width: 32px background: #F8F8F8 border-left: 1px solid #ddd color: $body-font-color visibility: hidden line-height: 2rem .form--selected-value--list margin-left: 0rem margin-bottom: 0rem .form--text-area @extend %input-style .form & margin-bottom: 0rem .form--radio-button-container //prevent radio-buttons from being cut at the border padding: 0 1px .form--grouping @include grid-block($wrap: true) align-items: center .form--grouping-row @include grid-block(10) align-items: baseline .select2-container margin-bottom: 0 .form--field-instructions margin-left: 0px .form--grouping-row + .form--grouping-row @include grid-offset(2) .form--grouping-label @include grid-content(2) @include grid-visible-overflow @extend %label-style padding: 0 1rem 0.5rem 0 font-size: $form-label-fontsize line-height: $base-line-height color: $form-label-color margin-bottom: 0.8rem .form--matrix border: $content-form-input-border border-radius: 2px background: none margin: 0 font-size: 0.9rem line-height: 1.5 .form--matrix-header-row font-weight: bold border-bottom: $content-form-input-border background-color: $gray-light .form--matrix-header-cell padding: 0 1rem .form--matrix-row &:nth-child(odd) background-color: $gray-light &:nth-child(even) background-color: white .form--matrix-checkbox-cell min-width: 1rem max-width: 4rem text-align: center .form--column @include grid-block @include grid-orient(vertical) overflow-y: hidden padding-left: 0 !important &:nth-last-of-type(n+2) padding-right: $block-padding .form--field flex-basis: auto .inline-label margin: 0rem > .form-label.-transparent margin-bottom: 0 font-size: 1em background: none border: none line-height: 2 margin-right: 5px > .form-label line-height: 2rem &.-required, .form--field.-required > & &::after @extend %required-star &:hover::after @include varprop(color, primary-color) > a display: block min-width: 1.5rem text-align: center vertical-align: middle .icon display: inline-block line-height: normal vertical-align: middle &::before padding: 0 .form--label-with-check-box display: block clear: both line-height: $base-line-height padding: 0 2rem 0 0 > p display: inline &:not(.-no-ellipsis) @include text-shortener & > .form--check-box-container display: block float: left padding-right: 0.5rem input[type="checkbox"] vertical-align: middle &.-required:after @extend %required-star .form--field-affix flex: 0 0 auto display: flex font-size: 0.9rem background: $inlinelabel-background color: $inlinelabel-color border: $content-form-input-border // OR $inlinelabel-border border-radius: 2px padding: 0 $form-padding margin-bottom: 0rem align-items: center line-height: 1 &.icon, &.icon-context padding: 5px &:before padding: 0 %form--field-element-container + & margin-left: -1rem border-left: 0 &.-transparent @include form--field-affix-mixin--transparent .form--tooltip-container flex: 0 0 auto display: flex & > [data-tooltip], & > [class^="tooltip--"] padding-top: 0.6rem .form--field-inline-buttons-container .form--field-inline-button margin-right: 0 border-radius: 0px background: transparent height: 30px padding: 0 10px .form--list display: flex margin: 0 @include grid-layout(3) @include breakpoint(large) @include grid-layout(4) @include breakpoint(xlarge) @include grid-layout(6) li, div padding: 0 // Text in textareas should look the same as in paragraphs // Foundation applies following rule to paragraphs textarea text-rendering: optimizeLegibility // Overwriting Foundation color variables. // Unfortunatel I do not know how to get it DRY. input[type=range]::-moz-range-thumb @include varprop(background, primary-color) input[type=range]::-webkit-slider-thumb @include varprop(background, primary-color) input[type=range]::-ms-thumb @include varprop(background, primary-color) input[type=range]::-moz-range-thumb:hover @include varprop(background, primary-color-dark) input[type=range]::-webkit-slider-thumb:hover @include varprop(background, primary-color-dark) input[type=range]::-ms-thumb:hover @include varprop(background, primary-color-dark) // Special handling for the permissions_form of Admin/Roles --> permission report // Since FF ESR is not able to handle the overflow of fieldsets correctly, a workaround is needed. @supports(-moz-appearance: none) #permissions_form display: inline-block width: 100% overflow: auto