Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F120833463
forms.less
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Authored By
Unknown
Size
19 KB
Referenced Files
None
Subscribers
None
forms.less
View Options
/**
* Roundcube webmail styles for the Elastic skin
*
* Copyright (c) 2017, The Roundcube Dev Team
*
* The contents are subject to the Creative Commons Attribution-ShareAlike
* License. It is allowed to copy, distribute, transmit and to adapt the work
* by keeping credits to the original authors in the README.md file.
* See http://creativecommons.org/licenses/by-sa/3.0/ for details.
*/
/*** Common form elements ***/
#
uploadform
{
display
:
none
;
}
form
.
smart-upload
,
input
.
smart-upload
{
visibility
:
hidden
;
width
:
1
px
;
height
:
1
px
;
opacity
:
0
;
}
.
propform
{
//
TODO
:
do
we
need
this
?
&:
not
(
.
popupmenu
)
{
width
:
100
%
;
}
//
This
is
the
way
we
can
have
multiple
checkboxes
in
a
single
form
field
.
form-check
td
:
not
(
.
title
)
>
label
{
display
:
block
;
margin
:
0
;
line-height
:
2
rem
;
label
{
margin-right
:
.5
rem
;
}
}
td
.
datetime
{
display
:
flex
;
input
:
first
-
child
{
margin-right
:
.5
rem
;
}
input
:
last-child
{
width
:
75
%
;
}
}
td
.
rowbuttons
{
width
:
1
%
;
white-space
:
nowrap
;
span
{
display
:
none
;
}
a
{
padding
:
0
;
line-height
:
2.3
rem
;
height
:
2.3
rem
;
font-size
:
1
rem
;
&:before
{
&:extend(.font-icon-class)
;
content
:
@
fa-var-plus
;
margin
:
0
;
}
&
.
delete
:
before
{
content
:
@
fa-var-trash-o
;
}
&
.
advanced
:
before
{
content
:
@
fa-var-cog
;
}
&
:
not
(
:
last-child
)
{
margin-right
:
.25
rem
;
}
}
}
td
.
rowactions
{
width
:
1
%
;
.form-control
{
width
:
auto
;
}
}
td
.
rowtargets
{
.input-group
{
margin-bottom
:
.25
rem
;
*:first-child.input-group-addon
{
text-align
:
left
;
min-width
:
7.5
em
;
}
}
&
>
.
advanced
{
margin-top
:
.25
rem
;
}
}
td
>
.
flexbox
{
display
:
flex
;
&
>
.multi-input
{
width
:
100
%
;
margin-left
:
.25
rem
;
}
}
.
rulerow
{
margin-bottom
:
.5
rem
;
}
&
.
groupped
{
&.readonly
{
legend
{
margin
:
0
;
}
.
row
.
input-group
{
margin-bottom
:
0
!important
;
}
label
{
min-width
:
7
rem
;
//
Overwrite
Bootstrap
.input-group-addon
style
to
make
the
label
transparent
background-color
:
transparent
;
border
:
0
;
border-radius
:
0
;
}
}
.
row
.
input-group
{
margin-bottom
:
.5
rem
;
flex-wrap
:
nowrap
;
&
>
*:first-child
{
.overflow-ellipsis
;
min-width
:
8
rem
;
height
:
auto
;
padding-right
:
.375
rem
;
padding-left
:
.375
rem
;
@media
screen
and
(
max-width
:
@
screen
-
width
-
xs
)
{
min-width
:
6
rem
;
width
:
6
rem
;
flex-grow
:
unset
;
}
}
&
>
*
:
nth-child
(
2
)
{
flex-grow
:
30
;
}
&
:
last-child
{
margin-bottom
:
1
rem
;
}
select
{
text-align
:
left
;
height
:
auto
;
}
.
content
{
padding
:
0
;
display
:
flex
;
flex-wrap
:
wrap
;
input
{
border-radius
:
0
;
border-color
:
transparent
;
}
.
ff_street
{
width
:
100
%
;
}
.
ff_locality
{
width
:
75
%
;
}
.
ff_zipcode
{
width
:
25
%
;
}
.
ff_country
,
.
ff_region
{
width
:
50
%
;
}
}
}
.
form-control-plaintext
{
flex-grow
:
1
;
}
}
.
addfield
{
margin
:
0
;
select
{
width
:
8
rem
;
margin-top
:
.5
rem
;
}
}
.
form-text
{
font-size
:
90
%
;
color
:
@
color
-
form-hint
;
}
//
Some
dialogs
may
use
simple
one-row
forms
like
this
&
.
row
.
form-group
{
margin-left
:
0
;
margin-right
:
0
;
label,
div
{
padding-left
:
0
;
padding-right
:
0
;
}
}
}
@
media
screen
and
(
max-width
:
576px
)
{
.
propform
{
table.compact-table
{
overflow-x
:
initial
;
tbody
{
display
:
block
;
}
.
rowactions
>
select
,
.
flexbox
>
select
{
width
:
100
%
;
}
tr
{
display
:
flex
;
flex-direction
:
column
;
td
{
width
:
100
%
;
padding-right
:
0
;
padding-left
:
0
;
&.rowbuttons
{
text-align
:
right
;
a
{
margin-right
:
.5
rem
;
&
>
span
{
display
:
inline
;
}
}
}
}
}
}
}
}
.
propform
,
.
formcontent
{
legend
{
font-weight
:
bold
;
font-size
:
1.2
em
;
}
}
//
Forms
fixes
for
IE
and
Edge
html
.
ms
.
propform
{
.
row
:
not
(
.
form
-check
)
>
td
{
display
:
flex
;
}
@
media
screen
and
(
min-width
:
576px
)
{
.
row
.
form-check
>
td
{
display
:
flex
;
}
}
@
media
screen
and
(
max-width
:
575px
)
{
.
row
{
display
:
block
;
}
}
}
.
formcontainer
{
display
:
flex
;
flex-direction
:
column
;
justify-content
:
flex-start
;
overflow-y
:
hidden
!important
;
height
:
100
%
;
.formcontent
{
overflow-x
:
hidden
;
overflow-y
:
auto
;
}
.
formbuttons
{
padding
:
0.5
rem
1
rem
;
button
{
margin-right
:
.5
rem
;
}
}
}
html
.
layout-small
,
html
.
layout-phone
{
.formcontainer
{
.formbuttons
{
display
:
none
;
}
}
}
.
formcontent
{
padding
:
1
rem
;
.row
{
margin-right
:
0
;
//
without
these
the
form
is
too
wide
causing
horizontal
scrollbar
appearence
margin-left
:
0
;
//
Note
:
We
never
use
odd
numbers
here
.
col
,
.
col-2
,
.
col-4
,
.
col-6
,
.
col-8
,
.
col-10
,
.
col-12
,
.
col-sm
,
.
col-sm-2
,
.
col-sm-4
,
.
col-sm-6
,
.
col-sm-8
,
.
col-sm-10
,
.
col-sm-12
{
//
overwrite
Bootstrap
's redundant padding
padding: 0;
}
.form-control-plaintext,
label.col-form-label {
padding: .375rem .375rem .375rem 0;
}
}
.row.form-check {
padding-right: 0; // without these e.g. inputs in compose screen are not aligned properly
display: flex; // https://github.com/twbs/bootstrap/issues/22348
flex-wrap: nowrap;
// fixed checkbox vertical alignment
td:not(.col-form-label) {
padding: 0;
}
// alignment fixes needed because we do not stick precissely to Bootstrap'
s
form
structure
@
media
screen
and
(
max-width
:
576
px
)
{
.
col-6
{
max-width
:
100
%
;
flex
:
auto
;
}
&
>
*
:
last-child
{
width
:
1
%
;
min-width
:
2.2
em
;
//
for
icon-checkbox
padding-right
:
15
px
;
}
&
.
with-link
>
*
:
last-child
{
min-width
:
8
rem
;
}
}
.
form-check-input
{
margin
:
0
;
//
fixes
checkbox
alignment
with
other
inputs
in
a
form
margin-top
:
.5
rem
;
margin-bottom
:
.5
rem
;
}
}
.
nav-tabs
{
margin-bottom
:
1
rem
;
&:empty
{
display
:
none
;
}
}
.
hint
{
margin-bottom
:
1
em
;
font-style
:
italic
;
}
}
@
media
screen
and
(
max-width
:
@
screen-width-mini
)
{
.
formcontent
{
.col-form-label
{
flex
:
auto
;
max-width
:
100
%
;
}
.
col-6
,
.
col-8
,
.
col-10
{
flex
:
auto
;
max-width
:
100
%
;
}
}
}
/* Some common icons for "iconized inputs" */
.
input-group-addon
.
icon
{
text-decoration
:
none
;
&
:
before
{
&:extend(.font-icon-class)
;
margin
:
0
!important
;
line-height
:
1
;
}
&
.
user
:
before
{
content
:
@
fa-var-user
;
}
&
.
pass
:
before
{
content
:
@
fa-var-lock
;
}
&
.
host
:
before
{
content
:
@
fa-var-home
;
}
&
.
cancel
:
before
{
content
:
@
fa-var-close
;
}
&
.
delete
:
before
{
content
:
@
fa-var-trash-o
;
}
&
.
edit
:
before
{
content
:
@
fa-var-pencil
;
}
&
.
add
:
before
{
content
:
@
fa-var-plus
;
}
&
.
search
:
before
{
content
:
@
fa-var-search
;
}
&
.
filter
:
before
{
content
:
@
fa-var-filter
;
}
&
.
key
:
before
{
content
:
@
fa-var-key
;
}
.
inner
{
display
:
none
;
}
}
td
.
editfield
{
width
:
99
%
;
/* TODO */
}
ul
.
proplist
{
padding-left
:
15
px
;
margin-bottom
:
0
;
li
{
list-style-type
:
none
;
line-height
:
2.4
rem
;
margin-bottom
:
.25
rem
;
display
:
flex
;
input[type=radio]
{
vertical-align
:
middle
;
margin-right
:
.5
em
;
&
+
.input-group
{
flex-grow
:
1
;
}
}
label
{
margin
:
0
;
}
.
icon-checkbox
{
height
:
2.4
rem
!important
;
margin-left
:
-1.2
em
;
&
+
label
{
height
:
1.8
rem
;
margin-right
:
.5
rem
;
padding
:
0
;
}
}
select
{
width
:
auto
;
display
:
inline
;
}
}
}
.
checklist
{
.form-check-input
+
label
{
margin-right
:
.25
rem
;
line-height
:
1
;
}
}
/*** Forms in popups ***/
.
popup
form
.
propform
{
padding
:
.5
rem
;
overflow-x
:
hidden
;
}
.
popupmenu
.
form
{
&.nolist
{
padding
:
0
.5
rem
;
}
ul
{
list-style-type
:
none
;
padding
:
0
;
margin
:
0
;
}
li
:
not
(
.
separator
)
{
padding
:
0
1
rem
;
label
{
margin
:
0
;
height
:
@
listing-line-height
;
input
{
margin-right
:
.5
rem
;
}
}
}
input
{
vertical-align
:
middle
;
height
:
@
listing-line-height
!important
;
}
select
{
margin
:
.5
rem
0
;
}
.
buttons
{
text-align
:
center
;
padding
:
.5
rem
;
}
}
html
.
touch
.
popupmenu
.
form
{
li
{
input.icon-checkbox
+
label
:
before
{
line-height
:
1.4
;
}
}
}
/*** Smart list (multiple input) field ***/
.
multi-input
{
&
>
.content
{
max-height
:
11.65
em
;
overflow
:
hidden
;
overflow-y
:
auto
;
border-radius
:
.25
rem
;
border
:
1
px
solid
@
color
-
input-border
;
&.focused
{
border
:
1
px
solid
@
color
-
input-border-focus
;
}
//
TODO
:
style
button
focus
}
.
input-group
{
margin
:
0
!important
;
}
a
.
input-group-addon
{
padding
:
.375
rem
.5
rem
;
&.
reset
:
before
{
&:
extend
(
.
font
-icon-class
);
content
:
@
fa-var-trash-o
;
margin
:
0
;
}
}
.
input-group-addon
,
.
form-control
{
height
:
2.25
rem
;
//
to
be
the
same
height
as
select.form-control
element
}
input
.
form-control
{
padding-left
:
.5
rem
;
}
input
,
input
:
focus
,
.
input-group-addon
{
border-radius
:
0
;
border
:
0
;
border-bottom
:
1
px
solid
@
color
-
input-border
;
}
.
input-group
:
last-child
*
{
border
:
0
;
}
&
+
.
btn
{
margin-top
:
.5
rem
;
}
&
.
is-invalid
{
&
>
.content
{
border
:
1
px
solid
@
color
-
input-border-invalid
;
}
&
>
.
invalid-feedback
{
display
:
inline-block
;
}
}
}
/*** Files upload widget with list of files, upload form and drop area ***/
.
file-upload
{
padding
:
1
rem
1
rem
12
rem
;
margin
:
0
1
rem
.25
rem
1
rem
;
border-radius
:
.5
rem
;
border
:
.2
rem
dashed
@
color
-
table
-
border
;
//
TODO
background
image
.upload-form
{
text-align
:
center
;
padding-bottom
:
1
em
;
}
.
hint
{
margin-bottom
:
.5
rem
;
color
:
@
color
-
form-hint
;
}
.
attachmentslist
{
li
{
position
:
relative
;
display
:
flex
;
padding-right
:
1.8
em
;
a.filename
{
flex-grow
:
1
;
}
a
.
delete
,
a
.
cancelupload
{
position
:
absolute
;
right
:
0
;
&:before
{
margin
:
0
;
}
}
.
inner
{
display
:
none
;
}
}
}
&
.
droptarget
{
&.active
{
border-color
:
darken
(
@
color
-toolbar-button-background-hover
,
20
%
);
}
&
.
hover
{
border-color
:
darken
(
@
color
-toolbar-button-background-hover
,
20
%
);
background-color
:
@
color
-
toolbar-button-background-hover
;
}
}
}
/*** Smart recipient input field ***/
@
recipient-input-margin-fix
:
.
375rem
;
.
recipient-input
{
display
:
flex
;
flex-wrap
:
wrap
;
padding
:
0
.75
rem
@
recipient-input-margin-fix
.75
rem
;
&.focus
{
border-color
:
@
color
-
input-border-focus
;
}
.
recipient
{
flex
:
1
;
display
:
flex
;
position
:
relative
;
max-width
:
50
%
;
border
:
1
px
solid
@
color
-
recipient-input-border
;
background-color
:
@
color
-
recipient-input-background
;
border-radius
:
.25
em
;
padding
:
0
.25
em
;
margin-top
:
@
recipient-input-margin-fix
;
margin-right
:
.2
em
;
white-space
:
nowrap
;
@media
screen
and
(
max-width
:
450
px
)
{
width
:
100
%
;
max-width
:
100
%
;
}
}
.
name
{
.overflow-ellipsis
;
flex-grow
:
1
;
display
:
inline-block
;
line-height
:
1.1
;
padding
:
.25
rem
;
vertical-align
:
middle
;
}
.
email
{
text-indent
:
-5000
rem
;
display
:
inline-block
;
width
:
0
;
}
.
quotes
{
position
:
absolute
;
width
:
0
;
opacity
:
0
;
}
a
.
button
.
icon
{
font-size
:
.8
em
;
cursor
:
pointer
;
line-height
:
1.5
;
&:before
{
float
:
none
;
display
:
inline-block
;
width
:
1
em
;
margin
:
0
;
}
}
input
{
flex-grow
:
1
;
min-width
:
25
%
;
background
:
transparent
!important
;
border
:
0
!important
;
margin-top
:
@
recipient-input-margin-fix
;
outline
:
0
;
}
}
/*** Skin selection widget ***/
.
skinselection
{
white-space
:
nowrap
;
display
:
table-row
;
&
>
span
{
display
:
table-cell
;
vertical-align
:
middle
;
padding
:
.1
em
.5
em
;
white-space
:
normal
;
&:last-child
{
padding-right
:
0
;
}
}
.
skinitem
input
{
width
:
auto
;
}
.
skinname
{
font-weight
:
bold
;
}
.
skinlicense
,
.
skinlicense
a
{
font-style
:
italic
;
text-decoration
:
none
;
}
.
skinlicense
a
:
hover
{
text-decoration
:
underline
;
}
.
skinthumbnail
{
width
:
64
px
;
height
:
64
px
;
border
:
1
px
solid
@
color
-
input-border
;
background
:
#fff
;
border-radius
:
4
px
;
}
}
/*** Image upload widget ***/
.
image-upload
{
position
:
relative
;
overflow
:
hidden
;
cursor
:
pointer
;
background-color
:
@
color
-
image-upload-background
;
a.button
{
display
:
none
;
position
:
absolute
;
left
:
0
;
top
:
0
;
background-color
:
rgba
(
255
,
255
,
255
,
.85
);
border-radius
:
5
px
;
width
:
2.5
em
;
padding
:
.5
em
;
margin
:
.5
em
;
line-height
:
1
;
}
&
.
changed
a
.
button
{
display
:
inline
;
}
}
/*** Pretty icon checkbox ***/
input
.
icon-checkbox
{
opacity
:
0
;
margin-left
:
-1.5
em
;
&
+
label
{
margin
:
0
;
display
:
inline
;
font-size
:
1.2
rem
;
&:before
{
&:extend(.font-icon-class)
;
content
:
@
fa-var-toggle-off
;
margin
:
0
;
color
:
@
color
-
checkbox
;
height
:
2
rem
;
}
//
A
link
after
checkbox
in
a
form
,
used
in
e
.
g
.
newmail_notifier
plugin
&
+
a
{
display
:
inline-block
;
line-height
:
2
rem
;
padding-left
:
.5
rem
;
white-space
:
nowrap
;
}
}
&
:
disabled
+
label
{
opacity
:
0.4
;
pointer-events
:
none
;
}
&
:
checked
+
label
:
before
{
content
:
@
fa-var-toggle-on
;
color
:
@
color
-
checkbox-checked
;
}
&
:
focus
+
label
:
before
{
color
:
@
color
-
checkbox-focus
;
}
&
:
checked
:
focus
+
label
:
before
{
color
:
@
color
-
checkbox-checked-focus
;
}
&
.
form-check-input
+
label
{
font-size
:
1.25
rem
;
padding-top
:
.25
rem
;
}
}
html
.
touch
input
.
icon-checkbox
+
label
{
font-size
:
1.5
rem
;
}
/*** HTML editor widget (and TinyMCE editor) ***/
.
mce-tinymce
{
&.mce-container.mce-panel
{
border-radius
:
.25
rem
;
border-color
:
@
color
-
input-border
;
overflow
:
hidden
;
}
.
mce-btn
,
.
mce-panel
{
background-color
:
@
color
-
input-addon-background
;
}
}
.
html-editor
{
position
:
relative
;
display
:
flex
;
margin-bottom
:
.25
rem
;
&
>
.nav
{
border-color
:
transparent
;
z-index
:
1
;
position
:
absolute
;
top
:
1
px
;
right
:
1
rem
;
a.active
{
border-color
:
@
color
-
input-border
!important
;
&.mode-html
{
background-color
:
@
color
-
input-addon-background
;
border-bottom-color
:
@
color
-
input-addon-background
!important
;
}
&
.
mode-plain
{
border-bottom-color
:
#fff
!important
;
}
}
a
:
hover
{
border-bottom-color
:
transparent
;
}
}
&
>
.
googie_edit_layer
,
&
>
.
mce-tinymce
,
&
>
textarea
{
margin-top
:
2.55
rem
;
font-family
:
monospace
;
width
:
100
%
!important
;
}
}
/*** GoogieSpell widget ***/
.
googie_window
{
width
:
16
rem
;
}
.
googie_edit_layer
{
font-family
:
monospace
;
//
from
Bootstrap's
textarea
padding
:
.5
rem
.75
rem
;
border
:
1
px
solid
@
color
-
input-border
;
border-radius
:
.3
rem
;
line-height
:
1.25
;
}
.
googie_link
{
color
:
@
color
-
spellcheck-link
;
text-decoration
:
underline
;
cursor
:
pointer
;
}
.
googie_list
{
td
{
min-width
:
8
rem
;
width
:
auto
;
&.googie_list_onhover
{
color
:
@
color
-
toolbarmenu-hover
;
background-color
:
@
color
-
toolbarmenu-hover-background
;
}
.
googie_list_revert
:
before
{
&:extend(.font-icon-class)
;
content
:
@
fa-var-plus-square
;
}
.
googie_add_to_dict
:
before
{
&:extend(.font-icon-class)
;
content
:
@
fa-var-plus-square
;
}
}
input
{
display
:
inline-block
;
margin
:
.5
rem
.5
rem
.5
rem
0
!important
;
padding
:
.5
rem
.75
rem
!important
;
}
}
/* Remove outline on selects in Firefox */
@
-moz-document
url-prefix
()
{
select
:
-moz-focusring
{
color
:
transparent
!important
;
text-shadow
:
0
0
0
@
color
-
font
!important
;
}
}
/* Bootstrap style overrides */
.
form-control
,
.
form-control
:
focus
{
color
:
@
color
-
font
;
}
.
invalid-feedback
{
color
:
@
color
-
error
;
}
.
form-control
.
is-invalid
{
border-color
:
@
color
-
input-border-invalid
;
}
.
form-group
{
margin-bottom
:
.5
rem
;
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Fri, Apr 24, 12:48 PM (1 w, 5 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
18871515
Default Alt Text
forms.less (19 KB)
Attached To
Mode
R113 roundcubemail
Attached
Detach File
Event Timeline