Field New
Mixins
root-container
@mixin root-container() { ... }
@mixin root-container() { display: flex; flex-direction: column; margin-bottom: spacing.get('s2'); }
root-container-disabled
@mixin root-container-disabled() { ... }
@mixin root-container-disabled() { opacity: 0.5; @media (forced-colors: active) { opacity: 1; } }
Description
Root container when control is disabled
Parameters
None.
label
@mixin label() { ... }
@mixin label() { @include typography.style-as('form-label'); order: 1; color: settings.$label-text-color; }
label-disabled
@mixin label-disabled() { ... }
@mixin label-disabled() { pointer-events: none; }
Description
Disabled field label
Parameters
None.
label-hidden
@mixin label-hidden() { ... }
@mixin label-hidden() { @include a11y.visually-hidden; }
Description
Hidden label
Parameters
None.
label-required
@mixin label-required() { ... }
@mixin label-required() { color: color.get('text', 'error'); }
field
@mixin field() { ... }
@mixin field() { position: relative; /* margin: Box shadow is used to mimic input field border to prevent layout shift. Need that width at bottom to prevent box shadow overlapping the error/help msg */ margin: calc(settings.$control-border-width + spacing.get('s1')) settings.$control-border-width settings.$control-border-width-large; order: 3; color: var(--kib-field-control-text-color, #{settings.$control-text-color}); }
Description
Wrapper around control and icon
Parameters
None.
Requires
- [function]
get
- [variable]
control-border-width
- [variable]
control-border-width-large
- [variable]
control-text-color
control
@mixin control() { ... }
@mixin control() { @include typography.style-as(settings.$field-control-typography); position: relative; padding: settings.$control-padding; width: 100%; appearance: none; background-color: var( --kib-field-control-background-color, #{settings.$control-background-color} ); border: 0; border-radius: settings.$control-border-radius; box-shadow: 0 0 0 var(--kib-field-control-border-width, #{settings.$control-border-width}) var(--kib-field-control-border-color, #{settings.$control-border-color}), 0 0 0 var(--kib-field-control-outline-width, 0) var(--kib-field-control-outline-color, #{settings.$control-outline-color}), 0 0 0 var(--kib-field-control-autofill-inset, 0) settings.$control-background-color-autofill inset; outline: settings.$control-border-width solid transparent; // high contrast mode only color: settings.$control-text-color; transition: box-shadow settings.$control-transition-duration ease-out; overflow: hidden; text-overflow: ellipsis; @media screen and (prefers-reduced-motion: reduce) { transition: none; } }
Description
Field control
Parameters
None.
Requires
- [variable]
field-control-typography
- [variable]
control-padding
- [variable]
control-background-color
- [variable]
control-border-radius
- [variable]
control-border-width
- [variable]
control-border-color
- [variable]
control-outline-color
- [variable]
control-background-color-autofill
- [variable]
control-text-color
- [variable]
control-transition-duration
control-on-hover
@mixin control-on-hover() { ... }
@mixin control-on-hover() { --kib-field-control-border-width: #{settings.$control-border-width-large}; // high contrast mode only &:not(:focus) { outline-width: settings.$control-border-width-large; } }
Description
Control when hovered
Parameters
None.
Requires
- [variable]
control-border-width-large
Used by
- [mixin]
root-container
control-on-focus
@mixin control-on-focus() { ... }
@mixin control-on-focus() { --kib-field-control-border-color: #{settings.$control-border-color-focus}; --kib-field-control-border-width: #{settings.$control-border-width-large}; --kib-field-control-outline-width: #{settings.$control-outline-width}; // high contrast mode only outline-width: settings.$control-outline-width; }
Description
Control when focused
Parameters
None.
Requires
- [variable]
control-border-color-focus
- [variable]
control-border-width-large
- [variable]
control-outline-width
Used by
- [mixin]
root-container
control-on-invalid
@mixin control-on-invalid() { ... }
@mixin control-on-invalid() { --kib-field-control-border-color: #{settings.$control-border-color-error}; --kib-field-control-border-width: #{settings.$control-border-width-large}; @media (forced-colors: active) { outline-style: dashed; } }
Description
Invalid control
Parameters
None.
Requires
- [variable]
control-border-color-error
- [variable]
control-border-width-large
control-disabled
@mixin control-disabled() { ... }
@mixin control-disabled() { pointer-events: none; }
Description
Disabled control
Parameters
None.
control-read-only
@mixin control-read-only() { ... }
@mixin control-read-only() { --kib-field-control-text-color: #{settings.$control-read-only-text-color}; --kib-field-control-background-color: #{settings.$control-background-color-read-only}; }
Description
Read only control
Parameters
None.
Requires
- [variable]
control-read-only-text-color
- [variable]
control-background-color-read-only
control-placeholder
@mixin control-placeholder() { ... }
@mixin control-placeholder() { color: settings.$placeholder-text-color; }
control-autofill
@mixin control-autofill() { ... }
@mixin control-autofill() { --kib-field-control-autofill-inset: #{unit.rem(1000px)}; -webkit-text-fill-color: settings.$control-text-color; }
Description
Control's autofill state
Parameters
None.
Requires
- [function]
rem
- [variable]
control-text-color
clear-control-with-icon
@mixin clear-control-with-icon() { ... }
@mixin clear-control-with-icon() { --kib-field-clear-offset: calc(#{settings.$icon-size} + #{settings.$clear-icon-offset}); }
Description
Control styles when it contains an icon
Parameters
None.
Requires
- [variable]
icon-size
- [variable]
clear-icon-offset
help
@mixin help() { ... }
@mixin help() { @include typography.style-as('form-helper'); order: 2; color: settings.$help-text-color; }
help-bottom
@mixin help-bottom() { ... }
@mixin help-bottom() { order: 4; }
Description
Helper text when on bottom position
Parameters
None.
clear-icon
@mixin clear-icon() { ... }
@mixin clear-icon() { width: settings.$clear-icon-size; height: settings.$clear-icon-size; color: settings.$clear-icon-color; flex-shrink: 0; display: inline-block; vertical-align: middle; }
clear-control-hidden
@mixin clear-control-hidden() { ... }
@mixin clear-control-hidden() { display: none; }
Description
Hidden clear control
Parameters
None.
icon
@mixin icon() { ... }
@mixin icon() { display: block; position: absolute; width: settings.$icon-size; height: settings.$icon-size; top: 50%; right: settings.$control-padding; z-index: 1; transform: translateY(-50%); transition: color settings.$control-transition-duration ease-out; pointer-events: none; }
Description
Field icon
Parameters
None.
Requires
- [variable]
icon-size
- [variable]
control-padding
- [variable]
control-transition-duration
icon-on-focus
@mixin icon-on-focus() { ... }
@mixin icon-on-focus() { color: settings.$control-border-color-focus; }
Description
Field icon when control is focused
Parameters
None.
Requires
- [variable]
control-border-color-focus
icon-with-action
@mixin icon-with-action() { ... }
@mixin icon-with-action() { &::after { content: ''; border-left: 1px solid settings.$icon-with-action-color; right: spacing.get('s2'); position: absolute; width: settings.$icon-size; height: settings.$icon-size; pointer-events: none; } }
Description
Field icon with action behavior
Parameters
None.
Requires
- [function]
get
- [variable]
icon-with-action-color
- [variable]
icon-size
Used by
- [mixin]
action-wrapper
icon-with-action-on-focus
@mixin icon-with-action-on-focus() { ... }
@mixin icon-with-action-on-focus() { & svg { color: settings.$icon-with-action-focus-color; } &::after { border-color: settings.$icon-with-action-focus-color; } }
Description
Field icon with action behavior is focused
Parameters
None.
Requires
- [variable]
icon-with-action-focus-color
loading-spinner
@mixin loading-spinner() { ... }
@mixin loading-spinner() { width: settings.$icon-size; height: settings.$icon-size; vertical-align: inherit; }
action-wrapper
@mixin action-wrapper() { ... }
@mixin action-wrapper() { @include icon; @include icon-with-action; display: flex; justify-content: center; align-items: center; &::after { top: 50%; transform: translateY(-50%); } // should apply styles to the first button within // the action wrapper & button:first-child { @include action; } &:hover { &::after { border-color: color.get('field', '04'); } } }
Description
styles applied to action wrapper
Parameters
None.
Requires
- [mixin]
icon
- [mixin]
icon-with-action
- [mixin]
action
- [function]
get
action
@mixin action() { ... }
@mixin action() { @include kib-button-new.generate-styles('utility', 'secondary', 'medium', true); pointer-events: initial; box-shadow: none; border-radius: 0 border.get('br02') border.get('br02') 0; opacity: inherit; width: settings.$action-height; height: settings.$action-height; min-height: settings.$action-height; min-width: settings.$action-height; & svg { width: settings.$icon-size; height: settings.$icon-size; color: settings.$icon-with-action-color; @media (forced-colors: active) { color: inherit; } } &:focus { background-color: color.get('action', 'utility', 'alternate', '03'); } &:active { background-color: color.get('action', 'utility', 'alternate', '02'); } &::after { border: none; } &:disabled { opacity: 0.5; pointer-events: none; @media (forced-colors: active) { opacity: 1; } } &:hover { background-color: color.get('field', '08'); & svg { color: color.get('field', '04'); } &::after { border-color: color.get('field', '04'); } } }
Description
styles for the content within action
Parameters
None.
Requires
- [function]
get
- [variable]
action-height
- [variable]
icon-size
- [variable]
icon-with-action-color
error
@mixin error() { ... }
@mixin error() { order: 5; }
Description
Error wrapper
Parameters
None.
error-message
@mixin error-message() { ... }
@mixin error-message() { @include typography.style-as(settings.$error-message-token-size); display: flex; margin-top: spacing.get('s1'); color: settings.$control-error-text-color; }
Description
Error message
Parameters
None.
Requires
- [function]
get
- [variable]
error-message-token-size
- [variable]
control-error-text-color
error-icon
@mixin error-icon() { ... }
@mixin error-icon() { margin-right: spacing.get('s1'); width: settings.$error-icon-size; height: settings.$error-icon-size; color: currentColor; }
Variables
control-background-color
$control-background-color: color.get('field', 'primary') !default;
Description
Control background color
Type
Color
Used by
- [mixin]
control-custom
- [mixin]
control
- [mixin]
control-custom
control-background-color-read-only
$control-background-color-read-only: color.get('field', '02') !default;
control-background-color-autofill
$control-background-color-autofill: color.get('field', '03');
control-text-color
$control-text-color: color.get('text', 'primary') !default;
control-border-color
$control-border-color: color.get('field', '07') !default;
control-border-color-focus
$control-border-color-focus: color.get('field', '04') !default;
Description
Control border color on focus
Type
Color
Used by
- [mixin]
control-on-focus
- [mixin]
icon-on-focus
- [mixin]
root-container
- [mixin]
control-on-focus
control-border-color-error
$control-border-color-error: color.get('field', '06') !default;
control-border-radius
$control-border-radius: border.get('br02') !default;
Description
Control border radius
Type
Number
Used by
- [mixin]
control
- [mixin]
root-container
- [mixin]
status
- [mixin]
item
control-border-width
$control-border-width: unit.rem(1px) !default;
Description
Control border default width
Type
Number
Used by
- [mixin]
field
- [mixin]
control
- [mixin]
root-container
control-border-width-large
$control-border-width-large: unit.rem(2px) !default;
Description
Control border large width
Type
Number
Used by
- [mixin]
field
- [mixin]
control-on-hover
- [mixin]
control-on-focus
- [mixin]
control-on-invalid
- [mixin]
root-container
- [mixin]
control-on-focus
- [mixin]
control-on-hover
control-outline-color
$control-outline-color: color.get('field', '08') !default;
Description
Control outline color
Type
Color
Used by
- [mixin]
control
- [mixin]
root-container
- [mixin]
root-container
control-outline-width
$control-outline-width: unit.rem(6px) !default;
control-transition-duration
$control-transition-duration: 0.2s !default;
control-padding
$control-padding: spacing.get('s3') !default;
field-control-typography
$field-control-typography: 'form-text' !default;
label-text-color
$label-text-color: color.get('text', 'fields') !default;
Description
Label text color
Type
Color
help-text-color
$help-text-color: color.get('text', 'secondary') !default;
Description
Label text color
Type
Color
clear-control-size
$clear-control-size: unit.rem(14px) !default;
Description
Cleara control size
Type
Number
clear-control-background-color
$clear-control-background-color: color.get('text', 'tertiary') !default;
Description
Clear control background color
Type
Color
clear-control-hover-color
$clear-control-hover-color: color.get('action', 'utility', 'primary', '03') !default;
Description
Clear control hover color
Type
Color
clear-icon-size
$clear-icon-size: unit.rem(12px) !default;
icon-size
$icon-size: $input-field-line-height;
Description
icon size
Type
Number
action-height
$action-height: calc($input-field-line-height + spacing.get('s3') * 2) !default;
clear-icon-offset
$clear-icon-offset: calc(#{$control-padding} + #{spacing.get('s2')}) !default;
clear-icon-color
$clear-icon-color: color.get('field', 'primary') !default;
icon-with-action-color
$icon-with-action-color: color.get('text', 'primary') !default;
icon-with-action-focus-color
$icon-with-action-focus-color: color.get('field', '04') !default;
placeholder-text-color
$placeholder-text-color: color.get('text', 'tertiary') !default;
control-with-icon-padding
$control-with-icon-padding: calc(
#{$icon-size} + #{$clear-icon-offset} + #{spacing.get('s2')}
) !default;
Description
Control with icon padding
Type
Number
control-error-text-color
$control-error-text-color: color.get('text', 'error') !default;
control-read-only-text-color
$control-read-only-text-color: color.get('text', 'secondary') !default;
error-message-token-size
$error-message-token-size: 'form-error' !default;
Description
Form error token size
Type
String
action-right-spacing
$action-right-spacing: unit.rem(10px) !default;
Description
position the action button to the right length
Type
Number
icon-size
$icon-size: $input-field-line-height;
Description
icon size
Type
Number