生态产品多个设计器现已发布候选版本

查看生态总览
Skip to content

Cascader ​

Data entry component. This page is the API reference, generated from the source code. Usage guidance and live examples are on the Chinese page.

Anatomy ​

Parts in bold are required.

data-scope="cascader": root · hidden-input · label · control · trigger · value-text · tag-list · indicator · clear-trigger · positioner · content · input · search-list · search-item · column · group · group-label · item · item-text · item-description · item-suffix · item-indicator · empty · loading · branch-loading · branch-error · branch-retry-trigger · footer

API reference ​

Descriptions of individual props, events and slots are written in Chinese and appear on the Chinese page.

Artifacts ​

LayerValue
Custom element<xh-cascader>
Vue componentsXhCascaderClearTrigger XhCascaderColumn XhCascaderContent XhCascaderControl XhCascaderFooter XhCascaderGroup XhCascaderGroupLabel XhCascaderIndicator XhCascaderInput XhCascaderItem XhCascaderItemDeleteTrigger XhCascaderItemDescription XhCascaderItemIndicator XhCascaderItemSuffix XhCascaderItemText XhCascaderLabel XhCascaderLoading XhCascaderOverflowTag XhCascaderPositioner XhCascaderRoot XhCascaderSearchList XhCascaderTag XhCascaderTagLabel XhCascaderTagList XhCascaderTrigger XhCascaderValueText
ComposableuseCascader
State machinecascaderMachine
Skin@xihan-ui/styles/cascader.css

Props ​

PropTypeRequired
labelledboolean
ariaLabelstring
collectionCascaderNode[]
loadChildren(request: CascaderLoadChildrenRequest) => Promise<CascaderNode[] | undefined | void> | CascaderNode[] | undefined | void
valueCascaderValue
defaultValueCascaderValue
namestring
formstring
openboolean
defaultOpenboolean
expandTriggerCascaderExpandTrigger
changeOnSelectboolean
multipleboolean
maxTagCountnumber
searchableboolean
filterCascaderFilter
cascadeboolean
checkedStrategyCascadeStrategy
disabledboolean
readOnlyboolean
invalidboolean
requiredboolean
loadingboolean
translationsPartial<CascaderTranslations>
variantControlVariant
toneTone
sizeSize
placeholderstring
separatorstring
placementPlacement
offsetnumber
loopboolean
dirDirection
onValueChange(details: CascaderValueChangeDetails) => void
onClear() => void
onOpenChange(details: CascaderOpenChangeDetails) => void
onBranchLoadStart(details: CascaderBranchLoadStartDetails) => void
onBranchLoad(details: CascaderBranchLoadDetails) => void
onBranchLoadError(details: CascaderBranchLoadErrorDetails) => void

CascaderNode ​

Elements of collection.

FieldTypeRequired
valuestringYes
labelstring
disabledboolean
toneTone
descriptionstring
childrenCascaderNode[]
hasChildrenboolean

Events ​

Custom elements put the payload in detail; Vue emits an event of the same name.

EventPayload
value-changeCascaderValueChangeDetails
clear``
open-changeCascaderOpenChangeDetails
branch-load-startCascaderBranchLoadStartDetails
branch-loadCascaderBranchLoadDetails
branch-load-errorCascaderBranchLoadErrorDetails

Slots ​

Only slots with a payload are listed.

Vue componentSlotPayload
XhCascaderRootdefaultCascaderRootSlotProps
XhCascaderRootlabel—
XhCascaderSearchListitemCascaderSearchListItemSlotProps

React adapter props ​

Only the props each component declares itself: DOM attributes inherited from ComponentPropsWithRef are left out, and root props already listed in the Props table are not repeated. The Vue counterpart is the slot table above.

React componentPropTypeRequired
XhCascaderColumnlevelnumber | stringYes
XhCascaderContentemptyReactNode
XhCascaderGroupvaluestringYes
XhCascaderItemvaluestringYes
XhCascaderPositionercontainer() => Element | null
XhCascaderRootlabelReactNode
XhCascaderRootclearableboolean
XhCascaderRootchildrenSlotChildren<CascaderRootSlotProps>
XhCascaderSearchListrenderItem(result: CascaderSearchResult) => ReactNode
XhCascaderTagvaluestringYes

State ​

Public state is written to data-state.

PartValues
root'open' | 'closed'
control'open' | 'closed'
trigger'open' | 'closed'
indicator'open' | 'closed'
positioner'open' | 'closed'
content'open' | 'closed'
search-item'checked' | 'indeterminate' | 'unchecked'
column'open' | 'closed'
item'indeterminate' | 'checked' | 'unchecked'
item-text'indeterminate' | 'checked' | 'unchecked'
item-description'indeterminate' | 'checked' | 'unchecked'
item-suffix'indeterminate' | 'checked' | 'unchecked'
item-indicator'indeterminate' | 'checked' | 'unchecked'
footer'open' | 'closed'

The following names are internal to the state machine.

States: open · closed

Events: FORM.RESET · OPEN · TOGGLE · CLOSE · CONTROLLED.OPEN · CONTROLLED.CLOSE · ITEM.FOCUS · ITEM.EXPAND · ITEM.LOST · ITEM.SELECT · VALUE.SET · VALUE.CLEAR · PATH.SET · INPUT.CHANGE · SEARCH.HIGHLIGHT · PRESS.START · PRESS.END · TAG_LIST.TRACKED · BRANCH.RETRY

Guards: isOpenControlled · isMultiple · staysOpenOnSelect · canPress

connect API ​

getXxxProps() returns the host attributes of the matching part.

MemberType
openboolean
collectionreadonly CascaderNode[]
columnsreadonly CascaderColumn[]
levelsreadonly CascaderLevel[]
valuestring[][]
valuePathstring[] | null
valueTextstring | null
displayTextstring
activePathstring[]
focusedPathstring[] | null
multipleboolean
disabledboolean
readOnlyboolean
invalidboolean
requiredboolean
canClearboolean
tagsCascaderTagMeta[]
overflowCountnumber
overflowTextstring
isSelected(value: string) => boolean
isIndeterminate(value: string) => boolean
isActive(value: string) => boolean
isVisible(value: string) => boolean
branchLoadState(value: string) => CascaderBranchLoadSnapshot | null
columnLoadState(level: number) => CascaderBranchLoadSnapshot | null
searchingboolean
inputValuestring
searchResultsreadonly CascaderSearchResult[]
searchHighlightIndexnumber
translationsCascaderTranslations
setInputValue(next: string) => void
setOpen(next: boolean) => void
setValue(next: string[][]) => void
setActivePath(next: string[]) => void
select(path: string[]) => void
clear() => void
retryBranch(value: string) => void
deselect(path: readonly string[]) => void
getRootProps() => T['element']
getHiddenInputProps(props?: { path: readonly string[] }) => T['input']
getLabelProps() => T['element']
getControlProps() => T['element']
getTriggerProps() => T['button']
getValueTextProps() => T['element']
getTagListProps() => T['element']
getTagProps(props: CascaderTagProps) => T['element']
getTagLabelProps() => T['element']
getOverflowTagProps() => T['element']
getItemDeleteTriggerProps(props: CascaderTagProps) => T['button']
getIndicatorProps() => T['element']
getClearTriggerProps() => T['button']
getPositionerProps() => T['element']
getContentProps() => T['element']
getInputProps() => T['input']
getSearchListProps() => T['element']
getSearchItemProps(props: CascaderSearchItemProps) => T['element']
getEmptyProps() => T['element']
getLoadingProps() => T['element']
getFooterProps() => T['element']
getGroupProps(props: CascaderGroupProps) => T['element']
getGroupLabelProps(props: CascaderGroupProps) => T['element']
getColumnProps(props: CascaderColumnProps) => T['element']
getBranchLoadingProps(props: CascaderColumnProps) => T['element']
getBranchErrorProps(props: CascaderColumnProps) => T['element']
getBranchRetryTriggerProps(props: CascaderColumnProps) => T['button']
getItemProps(props: CascaderItemProps) => T['element']
getItemTextProps(props: CascaderItemProps) => T['element']
getItemDescriptionProps(props: CascaderItemProps) => T['element']
getItemSuffixProps(props: CascaderItemProps) => T['element']
getItemIndicatorProps(props: CascaderItemProps) => T['element']

Accessibility ​

Keyboard ​

Specification: W3C APG. Each row is a stable behavior id that the conformance tests cover; the conditions and effects are described on the Chinese page.

KeysBehavior
Enter / Spacecascader.kbd.open
ArrowDowncascader.kbd.open-next
ArrowUpcascader.kbd.open-prev
Deletecascader.kbd.clear
Backspacecascader.kbd.backspace
ArrowDowncascader.kbd.next
ArrowUpcascader.kbd.prev
Homecascader.kbd.first
Endcascader.kbd.last
ArrowRightcascader.kbd.into
ArrowLeftcascader.kbd.back
Enter / Spacecascader.kbd.select
Enter / Spacecascader.kbd.retry
Enter / Spacecascader.kbd.press
Escapecascader.kbd.escape
Tab / Shift+Tabcascader.kbd.tab
printable characterscascader.kbd.search.type
ArrowDowncascader.kbd.search.next
ArrowUpcascader.kbd.search.prev
Homecascader.kbd.search.first
Endcascader.kbd.search.last
Entercascader.kbd.search.select
Entercascader.kbd.search.press
Escapecascader.kbd.search.clear
ArrowDown / ArrowUpcascader.kbd.search.into-columns
ArrowLeft / ArrowRightcascader.kbd.search.caret
Tab / Shift+Tabcascader.kbd.search.tab
any key during IME compositioncascader.kbd.search.compose

ARIA ​

These attributes are produced by connect.

PartAttributeValue
hidden-inputaria-hidden'true'
triggeraria-controlsid of the content part
triggeraria-expanded'true' | 'false'
triggeraria-haspopup'listbox'
triggeraria-invalid'true' | 'false'
triggeraria-labelprops.ariaLabel
triggeraria-labelledbyid of the label part id of the value-text part | id of the trigger part id of the value-text part | id of the value-text part
triggeraria-readonly'true' | 'false'
triggeraria-required'true' | 'false'
triggerrole'combobox'
indicatoraria-hidden'true'
clear-triggeraria-labeltranslations.clearTrigger
contentaria-busy'true' | undefined
contentaria-hidden!open || undefined
inputaria-activedescendantid of the search-item part | undefined
inputaria-autocomplete'list'
inputaria-controlsid of the search-list part
inputaria-labeltranslations.searchInput
search-listaria-labeltranslations.searchList
search-listaria-multiselectable'true' | 'false'
search-listrole'listbox'
search-itemaria-checked'true' | 'mixed' | 'false' | undefined
search-itemaria-disabled'true' | 'false'
search-itemaria-selected'true' | 'false'
search-itemrole'option'
columnaria-busy'true' | undefined
columnaria-disabled'true' | 'false' | undefined
columnaria-labeltranslations.column | undefined
columnaria-labelledbyundefined | id of the label part id of the value-text part | id of the trigger part id of the value-text part | id of the value-text part | id of the item part
columnaria-multiselectable'true' | 'false' | undefined
columnaria-orientation'vertical' | undefined
columnrole'listbox' | undefined
grouparia-labelledbyid of the group-label part
grouprole'group'
itemaria-checked'true' | 'mixed' | 'false' | undefined
itemaria-disabled'true' | 'false'
itemaria-haspopup'listbox' | undefined
itemaria-selected'true' | 'false'
itemrole'option'
item-indicatoraria-hidden'true'
emptyrole'status'
loadingrole'status'
branch-loadingrole'status'
branch-errorrole'alert'
branch-retry-triggeraria-labeltranslations.retry

Style reference ​

Skin ​

@xihan-ui/styles/cascader.css is written against [data-scope="cascader"][data-part="root"] part selectors; the published build uses the mount class .xh-scope-cascader in place of data-scope (same specificity) and sits in the xihan.components and xihan.motion layers. Put overrides in xihan.overrides; the part selectors work as usual.

Data attributes ​

Produced by connect; valueless attributes are omitted while their condition does not hold.

PartAttributeValue
rootdata-disabled'' (present only while the condition holds)
rootdata-invalid'' (present only while the condition holds)
rootdata-loading'' (present only while the condition holds)
rootdata-readonly'' (present only while the condition holds)
rootdata-required'' (present only while the condition holds)
rootdata-sizeprops.size
rootdata-state'open' | 'closed'
rootdata-toneprops.tone
rootdata-variantprops.variant
labeldata-disabled'' (present only while the condition holds)
labeldata-required'' (present only while the condition holds)
controldata-disabled'' (present only while the condition holds)
controldata-invalid'' (present only while the condition holds)
controldata-readonly'' (present only while the condition holds)
controldata-state'open' | 'closed'
controldata-variantprops.variant
controldata-xh-action-owner''
controldata-xh-field-chrome''
controldata-xh-field-sizeprops.size
triggerdata-disabled'' (present only while the condition holds)
triggerdata-invalid'' (present only while the condition holds)
triggerdata-placeholder'' (present only while the condition holds)
triggerdata-readonly'' (present only while the condition holds)
triggerdata-state'open' | 'closed'
value-textdata-disabled'' (present only while the condition holds)
value-textdata-placeholder'' (present only while the condition holds)
tag-listdata-disabled'' (present only while the condition holds)
tag-listdata-instant'' (present only while the condition holds)
tag-listdata-xh-tag-list''
indicatordata-clearable'' (present only while the condition holds)
indicatordata-disabled'' (present only while the condition holds)
indicatordata-state'open' | 'closed'
clear-triggerdata-pressed'' (present only while the condition holds)
clear-triggerdata-xh-action-control''
clear-triggerdata-xh-action-display'has-value'
clear-triggerdata-xh-action-has-value'' (present only while the condition holds)
clear-triggerdata-xh-action-profile'field-inset'
clear-triggerdata-xh-action-sizeprops.size
clear-triggerdata-xh-action-variant'ghost'
positionerdata-hidden'' (present only while the condition holds)
positionerdata-placementactual placement computed by the positioning engine
positionerdata-positioned'' (present only while the condition holds)
positionerdata-sizeprops.size
positionerdata-state'open' | 'closed'
positionerdata-toneprops.tone
positionerdata-variantprops.variant
contentdata-empty'' (present only while the condition holds)
contentdata-instant'' (present only while the condition holds)
contentdata-placementactual placement computed by the positioning engine
contentdata-searching'' (present only while the condition holds)
contentdata-state'open' | 'closed'
inputdata-xh-field-input''
search-listdata-empty'' (present only while the condition holds)
search-itemdata-disabled'' (present only while the condition holds)
search-itemdata-highlighted'' (present only while the condition holds)
search-itemdata-pressed'' (present only while the condition holds)
search-itemdata-state'checked' | 'indeterminate' | 'unchecked'
search-itemdata-toneundefined | metaOf(v)?.tone
search-itemdata-xh-collection-context'overlay'
search-itemdata-xh-collection-item''
search-itemdata-xh-collection-sizeprops.size
columndata-levelString(column.level)
columndata-state'open' | 'closed'
groupdata-disabled'' (present only while the condition holds)
group-labeldata-disabled'' (present only while the condition holds)
itemdata-branch'' (present only while the condition holds)
itemdata-disabled'' (present only while the condition holds)
itemdata-error'' (present only while the condition holds)
itemdata-highlighted'' (present only while the condition holds)
itemdata-in-path'' (present only while the condition holds)
itemdata-instant'' (present only while the condition holds)
itemdata-levelString(meta.level) | undefined
itemdata-load-statebranchLoadState(item.value)?.status
itemdata-loading'' (present only while the condition holds)
itemdata-pressed'' (present only while the condition holds)
itemdata-state'indeterminate' | 'checked' | 'unchecked'
itemdata-toneundefined | metaOf(v)?.tone
itemdata-xh-collection-context'overlay'
itemdata-xh-collection-item''
itemdata-xh-collection-sizeprops.size
item-textdata-disabled'' (present only while the condition holds)
item-textdata-highlighted'' (present only while the condition holds)
item-textdata-in-path'' (present only while the condition holds)
item-textdata-state'indeterminate' | 'checked' | 'unchecked'
item-textdata-xh-collection-slot'text'
item-descriptiondata-disabled'' (present only while the condition holds)
item-descriptiondata-highlighted'' (present only while the condition holds)
item-descriptiondata-in-path'' (present only while the condition holds)
item-descriptiondata-state'indeterminate' | 'checked' | 'unchecked'
item-descriptiondata-xh-collection-slot'description'
item-suffixdata-disabled'' (present only while the condition holds)
item-suffixdata-highlighted'' (present only while the condition holds)
item-suffixdata-in-path'' (present only while the condition holds)
item-suffixdata-state'indeterminate' | 'checked' | 'unchecked'
item-suffixdata-xh-collection-slot'suffix'
item-indicatordata-disabled'' (present only while the condition holds)
item-indicatordata-highlighted'' (present only while the condition holds)
item-indicatordata-in-path'' (present only while the condition holds)
item-indicatordata-state'indeterminate' | 'checked' | 'unchecked'
item-indicatordata-xh-collection-slot'indicator'
loadingdata-loading'' (present only while the condition holds)
loadingdata-xh-loading-ring''
branch-loadingdata-levelString(column.level)
branch-errordata-levelString(column.level)
branch-retry-triggerdata-disabled'' (present only while the condition holds)
branch-retry-triggerdata-levelString(column.level)
branch-retry-triggerdata-xh-action-control''
branch-retry-triggerdata-xh-action-display'always'
branch-retry-triggerdata-xh-action-profile'text'
branch-retry-triggerdata-xh-action-sizeprops.size
branch-retry-triggerdata-xh-action-variant'ghost'
footerdata-state'open' | 'closed'
overflow-tagdata-countString(overflowCount)
tagdata-valuecascaderPathKey(path)

CSS variables ​

The public override slots, generated from what the standalone skin actually consumes.

VariablePartCSS propertyStateDefault from
--xh-cascader-action-bgclear-trigger--xh-ink-surface
background-color
default
xh-ink-surface
--xh-_action-variant-bg-rest
--xh-cascader-action-bg-activeclear-triggerbackground-colordisabled
is(:active, [data-pressed])
loading
not([data-disabled])
not([data-loading])
pressed
--xh-_action-variant-bg-pressed
--xh-cascader-action-bg-hoverclear-triggerbackground-colordisabled
hover
loading
not([data-disabled])
not([data-loading])
--xh-_action-variant-bg-hover
--xh-cascader-action-fgclear-triggercolordefault--xh-fg-field-clear
--xh-cascader-action-fg-hoverclear-triggercolordisabled
hover
loading
not([data-disabled])
not([data-loading])
--xh-fg-default
--xh-cascader-action-font-sizeclear-triggerfont-sizedefault--xh-text-secondary-size
--xh-cascader-action-radiusclear-triggerborder-radiusdefault--xh-shape-circle
--xh-cascader-action-sizeclear-triggerblock-size
inline-size
min-inline-size
default
xh-action-profile=field-inset
--xh-_action-profile-visual-size
--xh-cascader-branch-arrow-fgitembackground-colorbranch--xh-fg-muted
--xh-cascader-branch-arrow-sizeitemblock-size
inline-size
branch--xh-control-indicator-size
--xh-cascader-branch-status-fgbranch-error
branch-loading
colordefault--xh-material-frosted-fg-muted
--xh-cascader-branch-status-font-sizebranch-error
branch-loading
font-sizedefault--xh-_cascader-font-size
--xh-cascader-branch-status-pxbranch-error
branch-loading
padding-inlinedefault--xh-_cascader-row-px
--xh-cascader-branch-status-pybranch-error
branch-loading
padding-blockdefault--xh-space-3
--xh-cascader-column-dividercolumnborder-inline-startdefault--xh-material-solid-border
--xh-cascader-column-gapcolumngapdefault--xh-list-option-gap
--xh-cascader-column-hcolumn
search-list
block-sizedefault--xh-viewport-h-sm
--xh-cascader-column-min-wcolumnmin-inline-sizedefault--xh-overlay-cascade-min-w
--xh-cascader-column-pxcolumnpadding-inlinedefault--xh-space-1
--xh-cascader-column-pycolumnpadding-blockdefault--xh-space-1
--xh-cascader-content-bgcontentbackgrounddefault--xh-bg-surface
--xh-cascader-content-bordercontentborderdefault--xh-border-default
--xh-cascader-content-fgcontentcolordefault--xh-fg-default
--xh-cascader-content-max-wcontentmax-inline-sizedefault--xh-_cascader-available-w
--xh-cascader-content-min-wcontentmin-inline-sizedefault--xh-overlay-cascade-min-w
--xh-cascader-content-radiuscontentborder-radiusdefault--xh-shape-overlay
--xh-cascader-content-shadowcontentbox-shadowdefault--xh-elevation-floating
--xh-cascader-control-bgcontrolbackground-colorxh-field-chrome--xh-_field-variant-bg-rest
--xh-cascader-control-bg-disabledcontrolbackground-colordisabled
xh-field-chrome
--xh-_field-variant-bg-disabled
--xh-cascader-control-bg-hovercontrolbackground-colordisabled
hover
invalid
loading
not(:focus-within)
not([data-disabled])
not([data-invalid])
not([data-loading])
not([data-readonly])
readonly
xh-field-chrome
--xh-_field-variant-bg-hover
--xh-cascader-control-bg-readonlycontrolbackground-colorreadonly
xh-field-chrome
--xh-_field-variant-bg-read-only
--xh-cascader-control-bordercontrolborderxh-field-chrome--xh-_field-variant-border-rest
--xh-cascader-control-border-focuscontrolborder-color
box-shadow
disabled
focus-within
not([data-disabled])
xh-field-chrome
--xh-_field-variant-border-focus
--xh-cascader-control-border-hovercontrolborder-colordisabled
hover
invalid
loading
not(:focus-within)
not([data-disabled])
not([data-invalid])
not([data-loading])
not([data-readonly])
readonly
xh-field-chrome
--xh-_field-variant-border-hover
--xh-cascader-control-border-invalidcontrolborder-colorinvalid
xh-field-chrome
--xh-_field-variant-border-invalid
--xh-cascader-control-fgcontrolcolorxh-field-chrome--xh-fg-default
--xh-cascader-control-gapcontrolgapxh-field-chrome--xh-_cascader-gap
--xh-cascader-control-hcontrolblock-size
min-block-size
has([data-xh-field-input][data-xh-field-layout='multi-tag'])
has([data-xh-field-input][data-xh-field-layout='single-line'])
has([data-xh-field-input][data-xh-field-layout='textarea'])
xh-field-chrome
xh-field-input
xh-field-layout=multi-tag
xh-field-layout=single-line
xh-field-layout=textarea
--xh-_cascader-h
--xh-cascader-control-min-wcontrol
root
min-inline-sizedefault
xh-field-chrome
--xh-control-min-w
--xh-cascader-control-pxcontrolpadding-inlinexh-field-chrome--xh-_cascader-px
--xh-cascader-control-radiuscontrolborder-radiusxh-field-chrome--xh-shape-control
--xh-cascader-control-shadowcontrolbox-shadowxh-field-chromenone
--xh-cascader-control-wrootinline-size
min-inline-size
default--xh-control-w
--xh-cascader-empty-fgemptycolordefault--xh-fg-subtle
--xh-cascader-empty-min-hemptymin-block-sizedefault--xh-viewport-h-sm
--xh-cascader-empty-pemptypaddingdefault--xh-space-3
--xh-cascader-footer-borderfooterborder-block-startdefault--xh-material-solid-border
--xh-cascader-footer-fgfootercolordefault--xh-fg-muted
--xh-cascader-footer-font-sizefooterfont-sizedefault--xh-_cascader-font-size
--xh-cascader-footer-gapfootergapdefault--xh-space-2
--xh-cascader-footer-pxfooterpadding-inlinedefault--xh-_cascader-row-px
--xh-cascader-footer-pyfooterpadding-blockdefault--xh-space-2
--xh-cascader-gaplabel
root
gap
margin-block-end
default--xh-space-1
--xh-cascader-group-gapgroupgapdefault--xh-list-option-gap
--xh-cascader-group-label-fggroup-labelcolordefault--xh-fg-subtle
--xh-cascader-group-label-font-sizegroup-labelfont-sizedefault--xh-text-caption-size
--xh-cascader-group-label-font-weightgroup-labelfont-weightdefault--xh-font-weight-regular
--xh-cascader-group-label-pxgroup-labelpadding-inlinedefault--xh-_cascader-row-px
--xh-cascader-group-label-pygroup-labelpadding-blockdefault--xh-space-1
--xh-cascader-group-spacinggroupmargin-block-startdefault--xh-space-1_5
--xh-cascader-icon-sizecontrol
item
positioner
root
--xh-icon-sizedefault
is([data-part='root'], [data-part='positioner'])
size=lg
size=sm
xh-field-chrome
--xh-_collection-glyph-size
--xh-_field-size-glyph-size
--xh-glyph-size-lg
--xh-glyph-size-md
--xh-glyph-size-sm
--xh-cascader-indicator-fgindicatorcolordefault--xh-fg-muted
--xh-cascader-input-autofill-bginputbox-shadow-webkit-autofill
autofill
--xh-bg-surface
--xh-cascader-input-autofill-fginput-webkit-text-fill-color-webkit-autofill
autofill
--xh-fg-default
--xh-cascader-input-font-sizeinputfont-sizedefault--xh-_cascader-font-size
--xh-cascader-input-hinputblock-sizedefault--xh-_cascader-h
--xh-cascader-input-pxinputmargin-inline-end
padding-inline
default--xh-_cascader-px
--xh-cascader-item-active-font-weightitemfont-weightin-path--xh-font-weight-regular
--xh-cascader-item-bg-activeitembackground-colorin-path--xh-bg-subtle
--xh-cascader-item-bg-hoveritem
search-item
background-colordisabled
error
highlighted
hover
in-path
is(:focus-visible, [data-highlighted])
is(:hover, [data-highlighted], [data-in-path])
is([aria-selected='true'], [data-selected])
not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error])
not([data-disabled])
selected
xh-collection-context=overlay
--xh-bg-subtle
--xh-cascader-item-bg-presseditem
search-item
background-colordisabled
error
is(:active, [data-pressed])
is([aria-selected='true'], [data-selected])
not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error])
not([data-disabled])
pressed
selected
xh-collection-context=overlay
--xh-bg-subtle-hover
--xh-cascader-item-check-fgitemcolordisabled
error
highlighted
hover
in-path
is(:active, [data-pressed])
is(:focus-visible, [data-highlighted])
is([aria-selected='true'], [data-selected])
not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error])
pressed
selected
state=checked
xh-collection-context=overlay
xh-collection-slot=indicator
--xh-cascader-item-indicator-fg
--xh-cascader-item-fgitem
search-item
colordefault
disabled
error
highlighted
hover
in-path
is(:active, [data-pressed])
is(:focus-visible, [data-highlighted])
is([aria-selected='true'], [data-selected])
not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error])
pressed
selected
xh-collection-context=overlay
--xh-material-frosted-fg
--xh-cascader-item-fg-selecteditem
search-item
colordisabled
error
highlighted
hover
is(:active, [data-pressed])
is(:focus-visible, [data-highlighted])
is([aria-selected='true'], [data-selected])
not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error])
pressed
selected
xh-collection-context=overlay
--xh-cascader-item-fg
--xh-cascader-item-font-sizeempty
item
search-item
font-sizedefault--xh-_cascader-font-size
--xh-cascader-item-font-weight-selecteditem
search-item
font-weightdisabled
error
highlighted
hover
is(:active, [data-pressed])
is(:focus-visible, [data-highlighted])
is([aria-selected='true'], [data-selected])
not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error])
pressed
selected
xh-collection-context=overlay
--xh-font-weight-medium
--xh-cascader-item-gapitem
search-item
margin-inline-end
margin-inline-start
padding-inline-end
branch
default
xh-collection-slot=indicator
xh-collection-slot=prefix
xh-collection-slot=shortcut
xh-collection-slot=suffix
--xh-_cascader-gap
--xh-cascader-item-hitem
search-item
min-block-sizedefault--xh-_cascader-row-h
--xh-cascader-item-indicator-fgitem
search-item
background-color
color
default
disabled
error
highlighted
hover
in-path
is(:active, [data-pressed])
is(:focus-visible, [data-highlighted])
is([aria-selected='true'], [data-selected])
not([aria-disabled='true'], [data-disabled], [aria-busy='true'], [data-error])
pressed
selected
state=checked
xh-collection-context=overlay
xh-collection-slot=indicator
--xh-_cascader-accent
--xh-cascader-item-indicator-sizeitem-indicator
search-item
--xh-icon-size
block-size
inline-size
padding-inline-end
default--xh-control-indicator-size
--xh-cascader-item-leadingitem
search-item
line-heightdefault--xh-leading-normal
--xh-cascader-item-max-witemmax-inline-sizedefault--xh-overlay-max-w
--xh-cascader-item-pxitem
search-item
inset-inline-end
padding-inline
padding-inline-end
default--xh-_cascader-row-px
--xh-cascader-item-pyitem
search-item
padding-blockdefault--xh-_cascader-row-py
--xh-cascader-item-radiusitem
search-item
border-radiusdefault--xh-shape-inset
--xh-cascader-label-fglabelcolordefault--xh-fg-muted
--xh-cascader-label-fg-disabledlabelcolordisabled--xh-fg-muted
--xh-cascader-label-font-sizelabelfont-sizedefault--xh-text-label-size
--xh-cascader-label-font-weightlabelfont-weightdefault--xh-text-label-weight
--xh-cascader-label-gaplabelmargin-block-enddefault--xh-space-2
--xh-cascader-layerpositionerz-indexdefault--xh-_layer
--xh-cascader-loading-fgloadingcolordefault--xh-fg-subtle
--xh-cascader-loading-font-sizeloadingfont-sizedefault--xh-_cascader-font-size
--xh-cascader-loading-min-hloadingmin-block-sizedefault--xh-viewport-h-sm
--xh-cascader-loading-ploadingpaddingdefault--xh-space-3
--xh-cascader-loading-ring-fgloadingborder
border-color
@media (prefers-reduced-motion: reduce)
@media print
motion=reduce
where([data-motion='reduce'])
xh-loading-ring
xh-loading-ring=overlay
--xh-fg-brand
--xh-cascader-placeholder-fginput
value-text
colorplaceholder
xh-field-input
--xh-fg-subtle
--xh-cascader-search-dividerinputborder-block-enddefault--xh-material-solid-border
--xh-cascader-search-list-gapsearch-listgapdefault--xh-list-option-gap
--xh-cascader-search-psearch-listpaddingdefault--xh-space-1
--xh-cascader-tag-list-gaptag-listgapxh-tag-list--xh-space-1
--xh-cascader-trigger-fgtriggercolordefault--xh-fg-default
--xh-cascader-trigger-font-sizetriggerfont-sizedefault--xh-_cascader-font-size
--xh-cascader-trigger-gaptriggergapdefault--xh-_cascader-gap

Released under The MIT License