summaryrefslogtreecommitdiffstats
path: root/afm-client/bower_components/foundation-apps/scss/components/_forms.scss
blob: 7d0376b7ebfd708175a20e19a8510d1fbfd829e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
/*
  FORMS
  -----

  Our form styles include basic resets for text fields, select menus, and so on, along with some of our own custom components.

  Includes:
   - Text fields
   - Text areas
   - Select menus
   - Checkboxes and radio buttons
   - Range slider
   - Progress bars and meters
*/

/// @Foundation.settings
// Forms
// Basic form variables
$form-fontsize: 1rem !default;
$form-padding: 0.5rem !default;

// Text fields
$input-color: #000 !default;
$input-color-hover: $input-color !default;
$input-color-focus: $input-color !default;
$input-background: #fff !default;
$input-background-hover: $input-background !default;
$input-background-focus: $input-background !default;
$input-background-disabled: smartscale($input-background) !default;
$input-border: 1px solid #ccc !default;
$input-border-hover: 1px solid #bbb !default;
$input-border-focus: 1px solid #999 !default;
$input-cursor-disabled: not-allowed !default;

// Select menus
$select-color: #000 !default;
$select-background: #fafafa !default;
$select-background-hover: smartscale($select-background, 4%) !default;
$select-arrow: true !default;
$select-arrow-color: $select-color !default;

// Labels
$form-label-fontsize: 0.9rem !default;
$form-label-margin: 0.5rem !default;
$form-label-color: #333 !default;

// Inline labels
$inlinelabel-color: #333 !default;
$inlinelabel-background: #eee !default;
$inlinelabel-border: $input-border !default;

// Range slider
$slider-background: #ddd !default;
$slider-height: 1rem !default;
$slider-radius: 0px !default;
$slider-thumb-height: 1.5rem !default;
$slider-thumb-color: $primary-color !default;
$slider-thumb-radius: 0px !default;

// Progress and meter
$meter-height: 1.5rem !default;
$meter-background: #ccc !default;
$meter-fill: $primary-color !default;
$meter-fill-high: $success-color !default;
$meter-fill-medium: #e7cf00 !default;
$meter-fill-low: $alert-color !default;
$meter-radius: 0 !default;
///

// Disable OS-level styles
@mixin no-appearance {
  -webkit-appearance: none;
     -moz-appearance: none;
}

// Text fields
// - - - - - - - - - - - - - - - - - - - - - - - - -
#{$text-input-selectors} {
  $top-padding: get-side($form-padding, top);
  $bottom-padding: get-side($form-padding, bottom);
  $height: ($form-fontsize * 1.4) + $top-padding + $bottom-padding;

  @include no-appearance;
  display: block;
  width: 100%;
  height: $height;
  padding: $form-padding;
  margin: 0 0 $global-padding 0;
  border: $input-border;
  border-radius: 0;
  background: $input-background;
  color: $input-color;
  font-size: $form-fontsize;
  -webkit-font-smoothing: antialiased;
  vertical-align: middle;

  &:hover {
    border: $input-border-hover;
    background: $input-background-hover;
    color: $input-color-hover;
  }
  &:focus {
    outline: 0;
    border: $input-border-focus;
    background: $input-background-focus;
    color: $input-color-focus;
  }

  label > & {
    margin-top: $form-label-margin;
  }
}

// Override the content-box declaration set by Normalize
input[type="search"] {
  box-sizing: border-box;
}

// Disabled state
input {
  &.disabled,
  &[disabled],
  &[readonly],
  fieldset[disabled] & {
    cursor: $input-cursor-disabled;

    &, &:hover {
      background-color: $input-background-disabled;
    }
  }
}

// Labels
// - - - - - - - - - - - - - - - - - - - - - - - - -
label {
  display: block;
  font-size: $form-label-fontsize;
  margin-bottom: $form-label-margin;
  color: $form-label-color;

  > input, > textarea {
    margin-top: $form-label-margin;
  }
}

// Checkbox/radio buttons
// - - - - - - - - - - - - - - - - - - - - - - - - -
input[type="checkbox"], input[type="radio"] {
  width: 1rem;
  height: 1rem;

  // Input inside of a label
  label > & {
    margin-right: $form-padding * 0.5;
  }

  // Input next to a label
  & + label {
    display: inline-block;
    margin-left: $form-padding;
    margin-right: $form-padding * 2;
    margin-bottom: 0;
    vertical-align: baseline;
  }
}

// Inline labels
// Inline labels allow you to prefix or postfix special labels to inputs
// - - - - - - - - - - - - - - - - - - - - - - - - -
.inline-label {
  display: flex;
  flex-flow: row nowrap;
  align-items: stretch;
  margin-bottom: $global-padding;

  // Imitates the top margin on normal inputs
  label > & {
    margin-top: $form-label-margin;
  }

  // Inputs stretch all the way out
  > input, > select {
    flex: 1;
    margin: 0;
  }

  // Inline labels and buttons shrink
  > .form-label {
    flex: 0 0 auto;
    background: $inlinelabel-background;
    color: $inlinelabel-color;
    border: $inlinelabel-border;
    padding: 0 $form-padding;
    display: flex;
    align-items: center;

    &:first-child { border-right: 0; }
    &:last-child  { border-left: 0; }
  }
  // Buttons also shrink
  > a,
  > button,
  > input[type="button"],
  > input[type="submit"] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    padding-top: 0;
    padding-bottom: 0;
    margin: 0;
    border-radius: 0;
  }
}

// Text areas
// - - - - - - - - - - - - - - - - - - - - - - - - -
textarea {
  height: auto;
  width: 100%;
  min-height: 50px;
}

// Select menus
// - - - - - - - - - - - - - - - - - - - - - - - - -
select {
  $top-padding: get-side($form-padding, top);
  $bottom-padding: get-side($form-padding, bottom);
  $height: ($form-fontsize * 1.4) + $top-padding + $bottom-padding;
  $color: isitlight($select-background);

  @include no-appearance;
  display: block;
  width: 100%;
  height: $height;
  padding: $form-padding;
  margin: 0 0 $global-padding 0;
  font-size: $form-fontsize;
  color: $select-color;
  border-radius: 0;
  border: $input-border;

  @if $select-arrow {
    background: $select-background url(image-triangle($select-arrow-color)) right 10px center no-repeat;
    background-size: 8px 8px;
    padding-right: rem-calc(18px) + $form-padding;
  }
  @else {
    background-color: $select-background
  }

  &:hover {
    background-color: $select-background-hover;
  }

  &:focus {
    outline: 0;
  }

  // Remove the dropdown arrow added in IE10/11
  &::-ms-expand {
    display: none;
  }
}

// Range slider
// - - - - - - - - - - - - - - - - - - - - - - - - -
input[type="range"] {
  $margin: ($slider-thumb-height - $slider-height) / 2;

  @include no-appearance;
  display: block;
  width: 100%;
  height: auto;
  cursor: pointer;
  margin-top: $margin;
  margin-bottom: $margin;
  border: 0;
  line-height: 1;

  @if hasvalue($slider-radius) {
    border-radius: $slider-radius;
  }

  &:focus {
    outline: 0;
  }

  // Chrome/Safari
  &::-webkit-slider-runnable-track {
    height: $slider-height;
    background: $slider-background;
  }
  &::-webkit-slider-thumb {
    -webkit-appearance: none;
    background: $slider-thumb-color;
    width: $slider-thumb-height;
    height: $slider-thumb-height;
    margin-top: -$margin;
    @if hasvalue($slider-thumb-radius) {
      border-radius: $slider-thumb-radius;
    }
  }
  // Firefox
  &::-moz-range-track {
    -moz-appearance: none;
    height: $slider-height;
    background: #ccc;
  }
  &::-moz-range-thumb {
    -moz-appearance: none;
    background: $slider-thumb-color;
    width: $slider-thumb-height;
    height: $slider-thumb-height;
    margin-top: -$margin;
    @if hasvalue($slider-thumb-radius) {
      border-radius: $slider-thumb-radius;
    }
  }
  // Internet Explorer
  &::-ms-track {
    height: $slider-height;
    background: $slider-background;
    color: transparent;
    border: 0;
    overflow: visible;
    border-top: $margin solid $body-background;
    border-bottom: $margin solid $body-background;
  }
  &::-ms-thumb {
    background: $slider-thumb-color;
    width: $slider-thumb-height;
    height: $slider-thumb-height;
    border: 0;
    @if hasvalue($slider-thumb-radius) {
      border-radius: $slider-thumb-radius;
    }
  }
  &::-ms-fill-lower, &::-ms-fill-upper {
    background: $slider-background;
  }
}
output {
  line-height: $slider-thumb-height;
  vertical-align: middle;
  margin-left: 0.5em;
}

// Number inputs
// - - - - - - - - - - - - - - - - - - - - - - - - -
input[type="number"] {
  &::-webkit-inner-spin-button {

  }
  &::-webkit-outer-spin-button {
    -webkit-appearance: none;
    background: $primary-color;
  }
}

// Progress and meter
// - - - - - - - - - - - - - - - - - - - - - - - - -
progress, meter {
  @include no-appearance;
  display: block;
  width: 100%;
  height: $meter-height;
  margin-bottom: 1rem;

  @if hasvalue($meter-radius) {
    border-radius: $meter-radius;
  }

  // For Firefox
  background: $meter-background;
  border: 0;
}

progress {
  &::-webkit-progress-bar {
    background: $meter-background;
    @if hasvalue($meter-radius) {
      border-radius: $meter-radius;
    }
  }
  &::-webkit-progress-value {
    background: $meter-fill;
    @if hasvalue($meter-radius) {
      border-radius: $meter-radius;
    }
  }
  &::-moz-progress-bar {
    background: $meter-fill;
    @if hasvalue($meter-radius) {
      border-radius: $meter-radius;
    }
  }

  @each $name, $color in (high: $meter-fill-high, medium: $meter-fill-medium, low: $meter-fill-low) {
    &.#{$name} {
      &::-webkit-progress-value {
        background: $color;
      }
      &::-moz-progress-bar {
        background: $color;
      }
    }
  }
}
meter {
  // Chrome/Safari
  &::-webkit-meter-bar {
    background: $meter-background;
    @if hasvalue($meter-radius) {
      border-radius: $meter-radius;
    }
  }
  &::-webkit-meter-inner-element {
    @if hasvalue($meter-radius) {
      border-radius: $meter-radius;
    }
  }
  &::-webkit-meter-optimum-value {
    background: $meter-fill-high;
    @if hasvalue($meter-radius) {
      border-radius: $meter-radius;
    }
  }
  &::-webkit-meter-suboptimum-value {
    background: $meter-fill-medium;
    @if hasvalue($meter-radius) {
      border-radius: $meter-radius;
    }
  }
  &::-webkit-meter-even-less-good-value {
    background: $meter-fill-low;
    @if hasvalue($meter-radius) {
      border-radius: $meter-radius;
    }
  }

  // Firefox
  background: $meter-background;
  &::-moz-meter-bar {
    background: $primary-color;
    @if hasvalue($meter-radius) {
      border-radius: $meter-radius;
    }
  }
  &:-moz-meter-optimum::-moz-meter-bar {
    background: $meter-fill-high;
  }
  &:-moz-meter-sub-optimum::-moz-meter-bar {
    background: $meter-fill-medium;
  }
  &:-moz-meter-sub-sub-optimum::-moz-meter-bar {
    background: $meter-fill-low;
  }
}