@c8y/style
Version:
Styles for Cumulocity IoT applications
205 lines (191 loc) • 4.26 kB
text/less
/**
* c8y schema form - Component styles
*
* Note: Uses @size-* tokens for spacing where applicable.
*
* Intentionally hardcoded values:
* - Component-specific dimensions: Fixed sizes for component layout
* - Off-grid spacing: Component-specific positioning
* - Border widths (1px, 2px, 3px): Standard borders
* - Font-sizes: Typography
* - Percentages: Layout
*/
c8y-schema-form.widget {
padding-top: @size-16;
// Inline list-group base styles (mixin doesn't exist)
position: relative;
margin-bottom: @size-16;
padding-left: 0;
box-shadow: inset 0 1px 0 @component-border-color;
bootstrap-decorator,
sf-decorator {
display: block;
margin-bottom: 0;
.form-group,
.legend,
.help-block {
padding-right: @size-16;
padding-left: @size-16;
}
.form-group {
margin-bottom: -1px;
padding: 3px @size-16 @size-20;
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
color: @text-color;
}
}
}
bootstrap-decorator + ng-form {
// Inline list-group-item base styles (mixin doesn't exist)
position: relative;
display: block;
margin-bottom: 0;
padding: @size-base @component-padding;
min-height: calc(@size-base * 5);
width: 100%;
border: 0;
box-shadow: inset 0 -1px 0 @component-border-color;
> .form-group {
margin-bottom: 0;
padding: 3px @size-16 @size-20;
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
color: @text-color;
}
}
}
bootstrap-decorator {
.legend {
margin-top: @size-20;
margin-bottom: @size-8;
}
}
sf-decorator {
.legend {
margin-top: 0;
margin-bottom: 7px;
padding-top: 8px;
background-color: @component-background-default;
color: @form-label-color;
&.form-block {
&::after {
display: none;
}
}
}
}
&.form-read-only {
sf-decorator,
bootstrap-decorator {
min-height: 0;
height: auto;
}
.form-group {
display: flex;
align-items: center;
flex-flow: row wrap;
padding: 3px @size-16;
label {
flex: 1 0 30%;
margin: 0 @size-8 0 0;
line-height: 1.3;
align-self: flex-start;
}
label + div,
.form-control,
.text-pre-wrap {
flex: 1 1 60%;
padding: 0 ;
height: auto;
background-color: transparent;
text-overflow: ellipsis;
.dashboard & {
color: inherit;
}
}
.help-block {
margin: 0;
width: 100%;
}
&.datepicker {
padding: 0;
.form-control {
cursor: not-allowed;
pointer-events: none;
}
[uib-datepicker-popup-wrap] {
display: none;
}
}
&.timepicker {
padding: 0;
.form-group.uib-time {
padding: 0;
.form-control {
width: @size-20;
cursor: not-allowed;
pointer-events: none;
}
}
}
}
.schema-form-checkbox {
padding: 0 0 @size-16 16px ;
}
.schema-form-textarea {
padding: @size-16;
}
.c8y-schema-form-empty {
display: none;
}
}
bootstrap-decorator > fieldset > sf-decorator:last-child {
padding-bottom: 0;
border-bottom: 0;
& .schema-form-checkbox {
padding: 0 0 @size-16 16px ;
}
}
}
c8y-schema-form.generic-ui {
.form-group {
margin-bottom: 0;
.help-block {
margin: 0;
}
}
.c8y-checkbox {
display: flex;
input + span {
margin-right: @size-base;
}
}
// Removed unused label utility - verified 0 usages: .no-label
}
.schema-form-grid {
display: grid;
margin: 0 -1rem;
> div,
> div > ng-form {
display: contents;
}
bootstrap-decorator {
padding: 0 1rem;
}
bootstrap-decorator:first-child:last-child {
display: contents;
padding: 0;
> fieldset {
display: contents;
}
sf-decorator {
padding: 0 1rem;
}
}
}
.schema-form-checkbox {
padding-bottom: @size-base;
}