Listbox

Mixins

root-container

@mixin root-container() { ... }@mixin root-container() { 
  position: absolute;
  width: 100%;
  display: flex;
  flex-direction: column;
  background-color: settings.$background-color;
  box-shadow: 0 0 0 var(--kib-listbox-border-width, #{kib-field.$control-border-width-large})
      var(--kib-listbox-border-color, #{kib-field.$control-border-color-focus}),
    0 0 0 var(--kib-listbox-outline-width, 0)
      var(--kib-listbox-outline-color, #{kib-field.$control-outline-color});
  padding: 0;
  border-radius: kib-field.$control-border-radius;
  margin-top: #{spacing.get('s2')};
  overflow: hidden;
  z-index: 6;

  // TODO min-height:need later
  max-height: unit.rem(220px); // TODO need confirmation

  @media (forced-colors: active) {
    border: unit.rem(2px) transparent solid;
  }
 }
Description

Root container

Parameters

None.

Requires

hidden

@mixin hidden() { ... }@mixin hidden() { 
  display: none;
 }
Description

Closed listbox

Parameters

None.

options

@mixin options() { ... }@mixin options() { 
  flex: 1 1 auto;
  overflow-y: auto;
 }
Description

Option container

Parameters

None.

status

@mixin status() { ... }@mixin status() { 
  @include typography.style-as('form-dropdown-header');

  flex: 0 0 auto;
  padding: spacing.get('s2') spacing.get('s3');
  margin-bottom: unit.rem(1px);
  color: color.get('text', 'secondary');
  background-color: color.get('field', '02');
  border-top-left-radius: kib-field.$control-border-radius;
  border-top-right-radius: kib-field.$control-border-radius;

  @media (forced-colors: active) {
    border-bottom: unit.rem(1px) transparent solid;
  }
 }
Description

Status bar at the top of listbox

Parameters

None.

Requires

no-results

@mixin no-results() { ... }@mixin no-results() { 
  padding: spacing.get('s2') spacing.get('s3');
  color: color.get('text', 'secondary');
  font-style: italic;
  margin: auto;
 }
Description

No results message

Parameters

None.

Requires

item

@mixin item() { ... }@mixin item() { 
  @include typography.style-as(settings.$item-typography);

  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: spacing.get('s2');
  padding: spacing.get('s2', 's4', 's2', 's3'); // TODO need to adjust vertical spacing
  cursor: pointer;
  transition: background-color 200ms;

  @media screen and (prefers-reduced-motion: reduce) {
    transition: none;
  }

  &:last-child {
    border-bottom-left-radius: kib-field.$control-border-radius;
    border-bottom-right-radius: kib-field.$control-border-radius;
  }
 }
Description

Listbox item container

Parameters

None.

Requires

item-active

@mixin item-active() { ... }@mixin item-active() { 
  background-color: color.get('field', '03');

  @media (forced-colors: active) {
    outline: unit.rem(2px) solid Highlight;
    outline-offset: unit.rem(-2px);
  }
 }
Description

Highlighted/selected item

Parameters

None.

Requires
Used by

item-hover

@mixin item-hover() { ... }@mixin item-hover() { 
  @include item-active;
 }
Description

Hovered item

Parameters

None.

Requires

checkbox

@mixin checkbox() { ... }@mixin checkbox() { 
  @include kib-choices.choice-control-custom-base;
  @include kib-checkbox.checkbox-control-custom-base;

  order: 5;
 }
Description

Checkbox

Parameters

None.

checkbox-fill

@mixin checkbox-fill() { ... }@mixin checkbox-fill() { 
  @include kib-checkbox.checkbox-control-fill;
 }
Description

Checkbox fill

Parameters

None.

selected-checkbox

@mixin selected-checkbox() { ... }@mixin selected-checkbox() { 
  @media (forced-colors: active) {
    outline: unit.rem(1px) solid Highlight;
    outline-offset: unit.rem(-1px);
  }
 }
Description

Selected checkbox

Parameters

None.

Requires

selected-checkbox-fill

@mixin selected-checkbox-fill() { ... }@mixin selected-checkbox-fill() { 
  @include kib-checkbox.checkbox-control-fill-checked;
 }
Description

Selected checkbox fill

Parameters

None.

label

@mixin label() { ... }@mixin label() { 
  flex: 0 1 calc(100% - spacing.get('s2'));
  order: 2;
 }
Description

Item icon

Parameters

None.

Requires

icon

@mixin icon() { ... }@mixin icon() { 
  display: block;
  flex: 0 0 settings.$item-icon-size;
  width: settings.$item-icon-size;
  height: settings.$item-icon-size;
  z-index: 1;
  transition: color settings.$item-transition-duration ease-out;
  pointer-events: none;
 }
Description

Item icon

Parameters

None.

Requires

icon-align-start

@mixin icon-align-start() { ... }@mixin icon-align-start() { 
  order: 1;
 }
Description

Item icon

Parameters

None.

icon-align-end

@mixin icon-align-end() { ... }@mixin icon-align-end() { 
  order: 3;
 }
Description

Item icon

Parameters

None.

Variables

background-color

$background-color: color.get('field', 'primary') !default;
Description

background-color

item-transition-duration

$item-transition-duration: 0.2s !default;
Description

item transitions duration

Type

Number

Used by

item-typography

$item-typography: 'form-text' !default;
Description

item typography token name

Type

String

Used by

item-icon-size

$item-icon-size: $item-typography-line-height;
Description

item icon size

Type

Number

item-icon-padding

$item-icon-padding: spacing.get('s3') !default;
Description

item icon padding

Type

Number