flectra/addons/web/static/src/less/fields.less

339 lines
8.0 KiB
Plaintext

//
// This file regroups all the rules which apply to field widgets wherever they
// are in the DOM, in both community and enterprise versions.
//
// Invalid
.o_field_invalid {
&.o_input, .o_input, &.o_form_label {
color: @brand-danger!important;
border-color: @brand-danger!important; // enterprise o_required_modifier rule overrides this without !important
}
}
// Empty
.o_field_empty {
display: none!important;
}
// Numbers
.o_field_number {
white-space: nowrap;
}
//------------------------------------------------------------------------------
// Fields
//------------------------------------------------------------------------------
.o_field_widget {
// Default display and alignment of widget and internal <input/>
&, input.o_input {
display: inline-block;
text-align: inherit;
}
// Block fields
&.note-editor, &.oe_form_field_html, &.oe_form_field_html_text, &.oe_form_field_text, &.o_view_manager_content, &.o_field_domain, &.o_graph_linechart, &.o_graph_barchart {
display: block;
}
// Flex fields (inline)
&.o_field_many2one, &.o_field_radio, &.o_field_many2manytags, &.o_field_percent_pie, &.o_field_monetary, &.o_field_binary_file {
.o-inline-flex-display();
> span, > button {
.o-flex(0, 0, auto);
}
}
// Dropdowns input (many2one, ...)
.o_input_dropdown {
.o-flex(1, 1, auto);
position: relative;
width: 100%;
> input {
height: 100%;
padding-right: 15px;
cursor: pointer;
}
.o_dropdown_button {
.o-position-absolute(0, 0);
pointer-events: none;
&:after {
.o-caret-down;
}
}
}
// Text
&.o_field_text, &.oe_form_field_text .oe_form_text_content {
width: 100%;
white-space: pre-wrap;
}
// Monetary
&.o_field_monetary {
&.o_input {
.o-align-items(baseline);
> input {
width: 100px;
.o-flex(1, 0, auto);
}
}
}
// Many2many tags
&.o_field_many2manytags {
.o-flex-flow(row, wrap);
.o-align-items(baseline);
.o-tag-color(@size: 0) when (@size < @flectra-nb-ui-color) {
.o_tag_color_@{size} {
&, &::after {
background-color: ~"@{flectra-color-@{size}}";
}
}
.o-tag-color(@size + 1);
}
.o-tag-color();
> .o_field_widget {
.o-flex(1, 0, 100px);
position: initial;
max-width: 100%;
}
> .badge {
.o-flex(0, 0, auto);
border: 0;
font-size: 12px;
color: white;
cursor: pointer;
> .o_badge_text {
.o-text-overflow(inline-block);
max-width: 200px;
}
> .o_colorpicker > ul {
.o-kanban-colorpicker();
white-space: normal;
}
.o_delete {
cursor: pointer;
}
}
}
// Stars
&.o_priority {
display: inline-block;
padding: 0;
margin: 0;
vertical-align: baseline;
> .o_priority_star {
display: inline-block;
font-size: 1.35em;
&:hover, &:focus {
text-decoration: none;
outline: none;
}
+ .o_priority_star {
padding-left: 5px;
}
&.fa-star-o {
color: @flectra-main-color-muted;
}
&.fa-star {
color: gold;
}
}
}
// Favorite
&.o_favorite {
i.fa {
font-size: 16px;
}
i.fa-star-o {
color: @flectra-main-color-muted;
&:hover {
color: gold;
}
}
i.fa-star {
color: gold;
}
}
// Specific success color for toggle_button widget
.fa.o_toggle_button_success {
color: @brand-success;
}
// Handle widget
&.o_row_handle {
cursor: ns-resize;
}
// Radio buttons
&.o_field_radio {
@media (max-width: @screen-xs-max) {
display: inline-block;
}
.o_radio_input {
outline: none;
}
.o_radio_item {
.o-flex(0, 0, auto);
.o-flex-display();
.o-align-items(center);
> input {
.o-flex(0, 0, auto);
margin: 0 @flectra-form-spacing-unit 0 0;
}
> label {
margin: 0;
}
}
&.o_horizontal {
.o_radio_item {
margin-right: @flectra-form-spacing-unit * 2;
}
}
&.o_vertical {
.o-flex-flow(column, nowrap);
.o_radio_item {
margin-bottom: @flectra-form-spacing-unit;
}
}
}
// Percent pie
&.o_field_percent_pie {
.o-align-items(center);
> .o_pie {
position: relative;
margin-right: 10px;
border-radius: 100%;
overflow: hidden;
background-color: @flectra-brand-optional;
&:after { // Outside pie border to go over border-radius irregularities
content: " ";
.o-position-absolute(0, 0);
width: 100%;
height: 100%;
border-radius: 100%;
}
.o_mask {
.o-position-absolute(0, 0);
.o-transform-origin(0);
width: 50%;
height: 100%;
background-color: @flectra-view-background-color;
&.o_full {
background-color: inherit;
}
}
.o_pie_value {
.o-flex-display();
.o-justify-content(center);
.o-align-items(center);
border-radius: 100%;
font-weight: 700;
color: @flectra-brand-primary;
}
}
}
// Ace editor
&.o_ace_view_editor {
width: 100%;
.ace-view-editor {
height: 300px;
padding: 0 1em;
}
}
// Image
&.o_field_image {
position: relative;
.o_form_image_controls {
.o-position-absolute(0, 0);
width: 100%;
color: white;
background-color: @flectra-brand-optional;
opacity: 0;
transition: opacity ease 400ms;
> .fa {
margin: 5px;
cursor: pointer;
}
}
@media (max-width: @screen-xs-min) {
.o_form_image_controls{
position: initial;
opacity: 1;
> .fa{
width: 50%;
padding: 6px;
margin: 0px;
text-align: center;
&.o_select_file_button{
background: @flectra-brand-optional;
}
&.o_clear_file_button{
background: @brand-danger;
}
}
}
}
&:hover .o_form_image_controls {
opacity: 0.8;
}
&.o_field_invalid > img {
border: 1px solid @brand-danger;
}
}
// Input loading/file
.o_form_binary_progress, .o_hidden_input_file .o_input_file {
display: none;
}
// Domain
&.o_field_domain {
> .o_field_domain_panel {
margin-top: 8px;
}
&.o_inline_mode.o_edit_mode {
position: relative;
> .o_field_domain_panel {
.o-position-absolute(0, 0);
margin-top: 0;
}
}
}
}