/** * This file defines common styles for form elements used throughout the CMS interface. * It is an addition to the base styles defined in framework/css/Form.css. * * @package framework * @subpackage admin */ /** ---------------------------------------------------- * Basic form fields * ---------------------------------------------------- */ form.nostyle { @include clear-form-field-styles(); } // need this for consistent
behaviour fieldset { width: 100%; } .field { // TODO convert to .form-group &.ui-tabs { border-bottom: 0; } &.noborder { padding-bottom: 0; border-bottom: none; box-shadow: none; } &.checkbox label.right { margin: $grid-y/2 0 0 0; display:inline; font-style: normal; color: $color-text; clear:none; } span.readonly { padding-top: $grid-y; display: block; } .fieldgroup .fieldgroup-field.last { /* This is used on page/settings/visibility */ padding-bottom: 8px; /* replicates li item spacing */ } // Additional help text to clarify the field intent, // displayed alongside the field (rather than in a tooltip) .description { font-style: italic; color: $text-muted; //8.5% is the minimum required to meet contrast standards while still retaining visual difference from normal text } &.checkbox .description, &.grid-field .description { margin-left: 0; } select:not([size]):not([multiple]) { height: 2.924rem; } input.text, input.creditcard, textarea, select, .TreeDropdownField { @extend .form-control; } input.creditcard { padding: 7px 10px; display: inline; width: auto; } input.phonenumber-field__country, input.phonenumber-field__area, input.phonenumber-field__number, input.phonenumber-field__extension { display: inline; padding: 7px 10px; width: auto; } // TODO remove ID style &#Action { box-shadow: none; } // When a field's description is toggleable, it's given an icon (right title) which is used as // a click target for toggling the visibility of the description. See LeftAndMain.FieldDescriptionToggle.js &.cms-description-toggle { > .middleColumn { // The field wrapper display: inline-block; vertical-align: middle; margin-left: 0; width: 36%; min-width: 300px; } .right { // The column the trigger is inside. display: inline-block; vertical-align: middle; height: 15px; margin: 0 0 0 7px; } .btn-icon-information { // The default icon. display: inline-block; width: 15px; height: 15px; } .description { padding: 12px 0; width: 36%; } // Overrides of the above default styles, for specific field types. &.textarea, &.htmleditor, &.optionset, &.listbox, &.upload { .right { vertical-align: top; margin-top: 4px; } } &.htmleditor { .middleColumn, .description { width: 95%; } } &.optionset { .right { margin-top: 8px; } li { width: 170px; } } &.listbox { select { margin-left: 0; } } &.upload { .description { margin-left: 184px; } } } } form.small .field, .field.small { label { &.left { width: $grid-x * 14; } } .middleColumn { margin-left: $grid-x * 15; } input.text, textarea, select, .TreeDropdownField { width: auto; } } /* Chosen override */ .chosen-container { width: 100%; max-width: $input-max-width !important; vertical-align: bottom; .chosen-results { padding-top: 4px; li { font-size: 11px; line-height: $grid-y * 2; padding: $grid-y / 2 $grid-x / 2; } } } .field { // TreeDropdowns .TreeDropdownField { max-width: $input-max-width; vertical-align: bottom; &.treedropdownfield-open-tree { border-bottom-left-radius: 0; border-bottom-right-radius: 0; border-color: #66afe9; } &.treedropdownfield-with-rise { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; .treedropdownfield-panel { border: 1px solid lighten($color-medium-separator, 20%); border-bottom: none; -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } } // Hide badges, as they cost too much horizontal space, // and mess up rendering for selected node title .badge { display: none; } } /* dropdowns */ .dropdown select { margin-top: $grid-y; } .chosen-container-active .chosen-single { border: 1px solid lighten($color-medium-separator, 10%); } .chosen-container-single .chosen-single { border: 1px solid $border-color-dark; height: 36px; line-height: 34px; // not relative, as then we'd had to redo most of chosen font-size: $font-size-root; background-image: linear-gradient(#efefef, #fff 10%, #fff 90%, #efefef); box-shadow: none; border-radius: $input-border-radius; color: $body-color; &:hover, &:focus, &:active { text-decoration: none; } div { width: 24px; b { background-position: 4px 6px; } } } .chosen-container-active { .chosen-single { border: 1px solid $input-border-focus; } &.chosen-with-drop .chosen-single { border-radius: $input-border-radius $input-border-radius 0 0; } } .chosen-drop { border-color: $input-border-focus; border-radius: 0 0 $input-border-radius $input-border-radius; } .chosen-choices { border-radius: 3px; .search-choice { line-height: 16px; .search-choice-close { top: 5px; } } .search-field input { height: 18px; } } /* Date Fields */ input.month, input.day, input.year { width: ($grid-x * 7); display: inline; } input.time { width: ($grid-x * 11); // smaller time field, since input is restricted } /* Hides borders in settings/access. Activated from JS */ &.remove-splitter { border-bottom: none; box-shadow: none; } } /** ---------------------------------------------------- * Buttons * ---------------------------------------------------- */ .ss-ui-button { margin-top: 0px; text-decoration: none; color: lighten($color-text-dark, 10%); border: 1px solid $color-button-generic-border; border-bottom: 1px solid darken($color-button-generic-border, 10%); cursor: pointer; background-color: $color-button-generic; white-space: nowrap; background-image: linear-gradient(lighten($color-button-generic, 10%), darken($color-button-generic, 5%)); &.ui-state-hover, &:hover { text-decoration: none; background-color: lighten($color-button-generic, 10%); background-image: linear-gradient(lighten($color-button-generic, 20%), $color-button-generic); box-shadow: 0 0 5px darken($color-button-generic, 20%); } &:active, &:focus, &.ui-state-active, &.ui-state-focus { border: 1px solid darken($color-button-generic, 20%); background-color: lighten($color-button-generic, 10%); background-image: linear-gradient(lighten($color-button-generic, 20%), $color-button-generic); box-shadow: 0 0 5px darken($color-button-generic, 20%) inset; } } .button-no-style { button { border-radius: 0; background: none; border: none; color: $color-text-blue-link; display: block; font-weight:normal; margin:0; outline:none; padding-left:10px; padding-right:10px; text-align: left; text-shadow: none; white-space:normal; &.ss-ui-action-destructive{ color: darken($color-error,25%); } span{ padding-left:0; padding-right:0; } &:hover, &:focus, &:active{ box-shadow: none; outline: none; background: none; border: none; } &.loading { background: transparent url("../../images/network-save.gif") no-repeat $grid-x center; .ui-button-text { padding-left: 16px /* icon */ + ($grid-x/2); } } } } .btn-toolbar, .cms-actions-row { > *:last-child { margin-right: 0; } } .south .btn-toolbar, .ui-tabs-panel .btn-toolbar, .ui-tabs-panel iframe .btn-toolbar { padding-top: 0; padding-bottom: 0; } input.loading, button.loading, input.ui-state-default.loading, .ui-widget-content input.ui-state-default.loading, .ui-widget-header input.ui-state-default.loading { .ui-icon { background: transparent url("../../images/network-save.gif") no-repeat 0 0; } color: lighten($color-text-dark, 20%); border-color: darken($color-button-disabled, 10%); cursor: default; } input.loading, button.loading { &.ss-ui-action-constructive .ui-icon { background: transparent url("../../images/network-save-constructive.gif") no-repeat 0 0; } } .btn-toolbar .ss-ui-action-constructive:first-child { margin-left: 5px; .toolbar--content & { margin-left: 15px; } } .ss-ui-button { &.ss-ui-action-minor { span { padding-left: 0; padding-right: 0; } } /* constructive */ &.ss-ui-action-constructive { text-shadow:none; font-weight: bold; color: $color-text-light; border-color: $color-button-constructive-border; border-bottom-color: darken($color-button-constructive-border, 10%); background-color: $color-button-constructive; background-image: linear-gradient(scale-color(lighten($color-button-constructive, 10%), $red:50%), $color-button-constructive); text-shadow: darken($color-button-constructive, 3%) 0 -1px -1px; &.ui-state-hover, &:hover { border-color: darken($color-button-constructive-border, 10%); background-color: $color-button-constructive; background-image: linear-gradient( scale-color(saturate(lighten($color-button-constructive, 10%), 10%), $red:60%), lighten($color-button-constructive, 5%) ); } &:active, &:focus, &.ui-state-active, &.ui-state-focus { background-color: darken($color-button-constructive, 2%); box-shadow: inset 0 1px 3px rgb(23, 24, 26), 0 1px 0 rgba(255, 255, 255, .6); } } /* destructive */ &.ss-ui-action-destructive { color: $color-button-destructive; background-color: $color-button-generic; } &.ss-ui-button-small { .ui-button-text { font-size: $font-size-sm; } } &.ui-state-highlight { background-color: $color-button-highlight; border: 1px solid $color-button-highlight-border; } &.ss-ui-action-minor { background: none; border: 0; color: lighten($color-text-dark, 10%); text-decoration: underline; box-shadow: none; &:hover { text-decoration: none; color: $color-text-dark; } &:focus, &:active { text-decoration: none; color: lighten($color-text-dark, 20%); } } &.ss-ui-button-loading { opacity: 0.8; } /* font-icon buttons */ &[class*="font-icon-"], &[class^="font-icon-"], &.ss-ui-button-constructive[class*="font-icon-"] { padding: $btn-padding-y $btn-padding-x; vertical-align: middle; box-shadow: none; border: 0; background: none; text-shadow: none; text-decoration: none; font-weight: normal; color: $color-text; &:disabled { cursor: not-allowed; opacity: .65; } &:hover { box-shadow: none; background: #dee3e8; color: darken($color-text, 10%); border: 0; } &:focus { box-shadow: none; background: #dee3e8; color: darken($color-text, 10%); border: 0; } &:before { font-size: 16px; margin-right: 5px; margin-top: 0; vertical-align: top; line-height: $line-height-base; } &.ui-state-focus { box-shadow: none; } &.active, &:active { box-shadow: 0 0 1px rgba(191, 194, 196, .9) inset; background: #dee3e8; color: darken($color-text, 10%); border: 0; } .ui-button-text { display: inline-block; padding: 0; } .ui-icon { display: none; } &.no-text, &.btn--no-text { &:hover, &:active, &:focus, &.active { box-shadow: none; color: darken($color-text, 10%); } &::before { margin: 0; } } } } .ss-ui-buttonset { margin: 0 $grid-x 0 0; padding: 0; .ui-button { margin-left: -1px; } } .ss-ui-loading-icon { background: url("../../images/network-save.gif") no-repeat; display: block; width: 16px; height: 16px; } /** ---------------------------------------------------- * Grouped form fields * ---------------------------------------------------- */ .fieldgroup { .fieldgroup-field { float: left; display: block; padding: $grid-y $grid-x 0 0; .field { border: none; padding-bottom: 0; } .fieldholder-small { padding: 0 0 $grid-y 0; } .fieldgroup input.text, .fieldgroup textarea, .fieldgroup select, .fieldgroup .TreeDropdownField { margin-left: 0; } // Style specific label with display block, otherwise // checkbox falls under the text .fieldholder-small-label { display: block; } label { padding: $grid-y $grid-x $grid-y 0; margin-left: 0; margin-right: 1em; width: auto; } .checkbox { display: inline; } .fieldgroup .fieldgroup-field { padding-top: 0; } } &.stacked { .fieldgroup-field { float: none; } } } .ss-toggle { margin: $grid-y 0; .ui-accordion-header { font-weight: bold; font-size: 12px; &.ui-state-default { background-image: linear-gradient(lighten($color-shadow-light, 15%), $color-shadow-light); text-shadow: 0 1px 0 rgba(255, 255, 255, .5); } .ui-accordion-header-icon { margin-top: -9px; } } .ui-accordion-content { padding: $grid-y 0 $grid-y*1.5; .field { box-shadow: none; padding-left: $grid-x*1.5; padding-right: $grid-x*1.5; &:last-child { margin-bottom: 0; } .middleColumn { margin-left: 0; } label { float: none; margin-left: 0; &.ss-ui-button { float: left; } } .description { margin-left: 0; } } } } /** ---------------------------------------------------- * HTML Text * ---------------------------------------------------- */ .htmleditor { textarea { visibility: hidden; // enabled by JS } .mceEditor { input, select { width: auto; } } } .action-hidden { display: none; } /*************************************************************** * On/Off Switch. * Example html set-up: *
*
* Draft * Live *
*
****************************************************************/ div.switch-states{ padding: 0 20px 0 0; margin-right: 5px; .switch{ @include box-shadow(inset 0 2px 6px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.1)); @include border-radius(3px); background:lighten(#2d3035,69%); display: block; height: 25px; margin-top:3px; width:100%; z-index:5; a { @include hide-text-overflow; color:lighten($color-text-dark,40%); color:rgba($color-text-dark,0.5); cursor: pointer; float:left; font-weight:bold; height: 100%; line-height: 25px; z-index:2; position:relative; min-width: 80px; /* Make text unselectable in browsers that support that */ -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; &:hover{ color:lighten($color-text-dark, 30%); color:rgba($color-text-dark,0.7); } span{ @include box-sizing('border-box'); @include hide-text-overflow; display:inline-block; padding:0 10px; text-shadow: 0 1px 0 rgba(255, 255, 255, .5); color:lighten($color-text-dark,40%); color:rgba($color-text-dark,0.5); width: 100%; text-align: center; } &.active { @include background-image(linear-gradient( #2b9c32, #64ab36 )); @include border-radius(3px); @include box-shadow(inset 0 2px 6px rgba(0, 0, 0, 0.3), 0 1px 0px rgba(255, 255, 255, 0.2)); text-shadow: 0 1px 0 rgba(255, 255, 255, .5); background-color: #2b9c32; span { color: #fff; text-shadow: 0 -1px 0 darken($color-menu-button, 10%); } } } } } // ------------------------------------------------------------------ // Search and Filters available in the top bar. // This is a toggleable element that displays a form for filtering content. // ----------------------------------------------------------------- */ .cms-content-filters { display: none; width: 100%; padding: $grid-gutter-width-half; border-bottom: 1px solid $color-light-separator; .chosen-results { max-height: 180px; } .importSpec { margin-bottom: 8px; padding-left: 16px; } } .ss-uploadfield .form__field-holder .ss-uploadfield-item { padding: 0; } .field.tabset { border-bottom: 0; margin-top: 0; margin-bottom: 0; padding-bottom: 0 } // Fix for multiple divider lines on the page/settings tab .parentTypeSelector .field.optionset { border-bottom: 0; } // TEMPORARY transitional fixes from JQuery-ui to bootstrap .btn .ui-button-text { padding-top: 0; padding-bottom: 0; padding-right: 0; } .ui-button-text-only .ui-button-text { padding: 0; } // Align buttons with input .urlsegment .update, .urlsegment .cancel { margin-top: 3px; } .ui-datepicker { box-shadow: 0 0 8px 0 $shadow-level-5; } .btn .ui-icon + .ui-button-text { padding-left: 18px; } .btn-toolbar .ss-ui-button { margin-left: 5px; } // Override Bootstrap hidden file upload until they have a good way of showing uploaded file names .file input.file { opacity: 1; }