OpenProject is the leading open source project management software.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openproject/app/assets/stylesheets/content/_forms.sass

429 lines
9.6 KiB

//-- copyright
// OpenProject is a project management system.
// Copyright (C) 2012-2015 the OpenProject Foundation (OPF)
//
// 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-2013 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 doc/COPYRIGHT.rdoc for more details.
//++
$form--field-types: (text-field, text-area, select, check-box, range-field, search, file)
@mixin input-style
border: $content-form-input-border
border-radius: 2px
font-weight: bold
font-size: 1rem
&:hover, &:focus
border: $content-form-input-hover-border
vertical-align: middle
@mixin label-style
text-align: left
font-weight: normal
vertical-align: middle
// 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
&.-inline
display: inline
&.-bordered
padding: 30px 20px
background-color: $content-form-bg-color
border: $content-form-border
.form--separator
border: 0
border-bottom: 1px solid $content-form-separator-color
margin: 0 0 30px
background: none
&.-invisible
border-bottom-width: 0px
.form--space
padding-top: 10px
fieldset
legend:after
@include icon-common
float: right
padding:
right: 5px
top: 4px
&.collapsible
> legend:after
content: "\e0d4"
&.collapsed
> legend:after
content: "\e0d2"
&.with-legend-control
legend
float: left
background-color: white
margin-top: -15px
div.legend-control
margin-top: -15px
padding-bottom: 5px
span
padding-left: 5px
background-color: white
.ui-widget
font-family: $body-font-family
font-size: 0.9rem
// 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
\:checked + .styled-checkbox:after
opacity: 1
\:focus + .styled-checkbox:before
.styled-checkbox
box-sizing: content-box
display: inline-block
vertical-align: top
width: 18px
height: 18px
padding: 0 5px
user-select: none
&:before
content: ''
position: absolute
width: 18px
height: 18px
background: #ffffff
border: 1px solid #cacaca
border-radius: 2px
cursor: pointer
box-shadow: inset 0 1px #fff
&:after
opacity: 0
content: ''
position: absolute
margin: 5px 2px
// Length of check tail
width: 11px
// Length of check foot
height: 3px
background: transparent
border: 3px solid #666666
border-top: none
border-right: none
@include transform(rotate(-50deg))
%form--fieldset-or-section
padding: 1rem
margin-bottom: 1rem
border: 1px solid $gray
%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
// HACK. TODO: Remove fieldset element rules in various places.
.form--fieldset,
fieldset.form--fieldset
@extend %form--fieldset-or-section
.form--fieldset-legend
@extend %form--fieldset-legend-or-section-title
.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
border: 0
.form--section > &,
#content .form--section > &
border-bottom: 1px solid $gray
margin-bottom: 1rem
.form--field
@include grid-block($wrap: true)
align-items: center
margin-bottom: 0.4rem
// cancel out foundations overflow-y: auto
overflow: visible
10 years ago
&.-vertical,
.form.-vertical &
@include grid-orient(vertical)
.grid-block:nth-last-of-type(n+2) > &
padding-right: 1rem
.form--label
@include grid-content(2)
@include label-style
padding: 0 1rem 0 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)
10 years ago
.form--field.-vertical &,
.form.-vertical &
@include grid-size(shrink)
max-width: none
.form--field.-required > &
&::after
@include default-transition
content: '*'
color: #008BD0
padding: 0 0.325rem
&:hover::after
color: smartscale(#008BD0, 30%)
.form--field-container
@include grid-content(10)
padding: 0
display: flex
// cancel out foundations overflow-y: auto
overflow-y: visible
&.-vertical
display: block
&: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)
10 years ago
.form--field.-vertical &,
.form.-vertical &
@include grid-size(shrink)
max-width: none
%form--field-after-container
@include grid-content(10, 2)
padding: 0
font-size: $form-label-fontsize
line-height: $base-line-height
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
.form--field-extra-actions
@extend %form--field-after-container
overflow-y: visible
%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
.form--text-field
@include input-style
.form--select
@include input-style
// TODO: remove padding property once upstream PR merged:
// https://github.com/zurb/foundation-apps/pull/416
padding-right: $form-padding + rem-calc(18px)
// TODO: remove on upgrade Foundation 1.0.3
// https://github.com/zurb/foundation-apps/commit/43da85985770e430ce45a8c10fdd6bed29cf5096
$arrow-color: rgb(red($select-arrow-color), green($select-arrow-color), blue($select-arrow-color))
border: $input-border
background: $select-background url(image-triangle($arrow-color)) right 10px center no-repeat
background-size: 8px 8px
// TODO: fix upstream in Foundation
&::-ms-expand
display: none
&[multiple]
background-image: none
padding-right: $form-padding
.form--text-field,
.form--select
&.-tiny
font-size: 0.7rem
&.-small
font-size: 0.8rem
&.-large
font-size: 1.3rem
&.-narrow
width: auto
max-width: 100%
.form &
margin-bottom: 0.5rem
.form--text-area
font-weight: bold
font-size: 1rem
border: $content-form-input-border
&:hover, &:focus
border: $content-form-input-hover-border
.form &
margin-bottom: 0.5rem
.form--grouping
@include grid-block($wrap: true)
align-items: center
.form--grouping-row
@include grid-block(10)
.form--grouping-row + .form--grouping-row
@include grid-offset(2)
.form--grouping-label
@include grid-content(2)
@include label-style
padding: 0 1rem 0 0
font-size: $form-label-fontsize
line-height: $base-line-height
color: $form-label-color
margin-bottom: 0.8rem
.form--table
border: $content-form-input-border
border-radius: 2px
background: none
margin: 0
font-size: 0.9rem
line-height: 1.5
.form--table-header-row
font-weight: bold
border-bottom: $content-form-input-border
background-color: $gray-light
.form--table-header-row-cell
padding: 0 1rem
.form--table-row
&:nth-child(odd)
background-color: $gray-light
&:nth-child(even)
background-color: white
.form--table-checkbox-cell
width: 1rem
text-align: center
.inline-label
> .form-label.-transparent
margin-bottom: 0
font-size: 1em
background: none
border: none
.form--label-with-check-box
display: block
clear: both
& > .form--check-box-container
display: block
float: left